ROSE  0.11.96.11
Cxx_Grammar.h
1 // MACHINE GENERATED HEADER FILE --- DO NOT MODIFY!
2 
3 
5 // (in many this is an object oriented IR based upon Sage II's implementation (Gannon et. al.).
6 
7 
8 #ifndef Cxx_Grammar_H
9 #define Cxx_Grammar_H
10 
11 
13 
17 enum Cxx_GrammarVariants
18  {
19 
20  NameTag = 263,
21  SymbolTableTag = 545,
22  PragmaTag = 475,
23  ModifierNodesTag = 257,
24  ConstVolatileModifierTag = 79,
25  StorageModifierTag = 535,
26  AccessModifierTag = 1,
27  FunctionModifierTag = 165,
28  UPC_AccessModifierTag = 629,
29  LinkageModifierTag = 232,
30  SpecialFunctionModifierTag = 528,
31  TypeModifierTag = 603,
32  ElaboratedTypeModifierTag = 113,
33  BaseClassModifierTag = 30,
34  DeclarationModifierTag = 89,
35  StructureModifierTag = 539,
36  OPENCL_ACCESS_MODE = 459,
37  ModifierTag = 256,
38  _File_InfoTag = 680,
39  SourceFileTag = 518,
40  UnknownFileTag = 635,
41  FileTag = 144,
42  FileListTag = 145,
43  DirectoryTag = 105,
44  DirectoryListTag = 106,
45  ProjectTag = 480,
46  OptionsTag = 461,
47  Unparse_InfoTag = 637,
48  IncludeFileTag = 199,
49  FuncDecl_attrTag = 160,
50  ClassDecl_attrTag = 54,
51  T_TYPEDEF_SEQ = 626,
52  T_FUNCTION_PARAMETER_TYPE_LIST = 168,
53  TemplateParameterTag = 569,
54  TemplateArgumentTag = 546,
55  TemplateParameterListTag = 571,
56  TemplateArgumentListTag = 547,
57  BitAttributeTag = 36,
58  AttributeTag = 23,
59  ExpBaseClassTag = 29,
60  NonrealBaseClassTag = 284,
61  BaseClassTag = 28,
62  UndirectedGraphEdgeTag = 633,
63  DirectedGraphEdgeTag = 103,
64  GraphNodeTag = 180,
65  GraphEdgeTag = 178,
66  StringKeyedBidirectionalGraphTag = 537,
67  IntKeyedBidirectionalGraphTag = 204,
68  BidirectionalGraphTag = 32,
69  IncidenceDirectedGraphTag = 196,
70  IncidenceUndirectedGraphTag = 197,
71  GraphTag = 177,
72  GraphNodeListTag = 181,
73  GraphEdgeListTag = 179,
74  QualifiedNameTag = 482,
75  TEMP_Name_Group = 264,
76  TEMP_DimensionObject = 101,
77  TEMP_DataStatementGroup = 84,
78  TEMP_DataStatementObject = 85,
79  TEMP_DataStatementValue = 86,
80  TEMP_FormatItem = 154,
81  TEMP_FormatItemList = 155,
82  TYPE_TABLE = 174,
83  HeaderFileReportTag = 210,
84  SupportTag = 542,
85  T_UNKNOWN = 616,
86  T_CHAR = 583,
87  T_SIGNED_CHAR = 610,
88  T_UNSIGNED_CHAR = 618,
89  T_SHORT = 608,
90  T_SIGNED_SHORT = 614,
91  T_UNSIGNED_SHORT = 622,
92  T_INT = 599,
93  T_SIGNED_INT = 611,
94  T_UNSIGNED_INT = 619,
95  T_LONG = 600,
96  T_SIGNED_LONG = 612,
97  T_UNSIGNED_LONG = 620,
98  T_VOID = 623,
99  T_GLOBAL_VOID = 596,
100  T_WCHAR = 624,
101  T_FLOAT = 593,
102  T_DOUBLE = 590,
103  T_LONG_LONG = 602,
104  T_SIGNED_LONG_LONG = 613,
105  T_UNSIGNED_LONG_LONG = 621,
106  T_LONG_DOUBLE = 601,
107  T_FLOAT80 = 595,
108  T_FLOAT128 = 594,
109  T_STRING = 615,
110  T_BOOL = 582,
111  T_FIXED = 592,
112  T_MATRIX = 604,
113  T_TUPLE = 605,
114  T_NULLPTR = 606,
115  T_COMPLEX = 586,
116  T_IMAGINARY = 598,
117  T_DEFAULT = 587,
118  T_MEMBER_POINTER = 472,
119  T_REFERENCE = 489,
120  T_RVALUE_REFERENCE = 496,
121  T_DECLTYPE = 92,
122  T_TYPEOF_TYPE = 607,
123  T_CAFTEAM = 681,
124  T_UNSIGNED_128BIT_INTEGER = 617,
125  T_SIGNED_128BIT_INTEGER = 609,
126  T_LABEL = 589,
127  T_TEMPLATE = 573,
128  T_ENUM = 132,
129  T_TYPEDEF = 628,
130  T_NONREAL = 283,
131  T_AUTO = 25,
132  T_MODIFIER = 258,
133  T_PARTIAL_FUNCTION_MODIFIER = 464,
134  T_ARRAY = 11,
135  T_ELLIPSE = 591,
136  T_CRAY_POINTER = 685,
137  T_PARTIAL_FUNCTION = 465,
138  T_MEMBERFUNCTION = 248,
139  T_FUNCTION = 171,
140  T_POINTER = 473,
141  T_CLASS = 59,
142  T_NAME = 265,
143  T_QUALIFIED_NAME = 483,
144  T_CHAR16 = 584,
145  T_CHAR32 = 585,
146  TypeTag = 581,
147  FOR_STMT = 153,
148  FOR_INIT_STMT = 152,
149  RANGE_BASED_FOR_STMT = 485,
150  CATCH_STATEMENT_SEQ = 49,
151  FUNCTION_PARAMETER_LIST = 166,
152  CTOR_INITIALIZER_LIST = 83,
153  BASIC_BLOCK_STMT = 31,
154  GLOBAL_STMT = 175,
155  IF_STMT = 188,
156  WHILE_STMT = 676,
157  DO_WHILE_STMT = 109,
158  SWITCH_STMT = 543,
159  CATCH_STMT = 48,
160  FUNCTION_PARAMETER_SCOPE = 164,
161  DECLARATION_SCOPE = 90,
162  VAR_DEFN_STMT = 666,
163  STMT_DECL_STMT = 531,
164  ENUM_DECL_STMT = 129,
165  ASM_STMT = 15,
166  FUNC_TBL_STMT = 173,
167  EXPR_STMT = 141,
168  LABEL_STMT = 221,
169  CASE_STMT = 46,
170  TRY_STMT = 579,
171  DEFAULT_STMT = 93,
172  BREAK_STMT = 43,
173  CONTINUE_STMT = 82,
174  RETURN_STMT = 492,
175  GOTO_STMT = 176,
176  SPAWN_STMT = 520,
177  TEMPLATE_TYPEDEF_DECL_STMT = 557,
178  TEMPLATE_INST_TYPEDEF_DECL_STMT = 568,
179  TYPEDEF_STMT = 625,
180  NULL_STMT = 287,
181  VARIANT_STMT = 669,
182  PRAGMA_DECL = 476,
183  TEMPLATE_CLASS_DECL_STMT = 549,
184  TEMPLATE_MEMBER_FUNCTION_DECL_STMT = 554,
185  TEMPLATE_FUNCTION_DECL_STMT = 551,
186  TEMPLATE_VARIABLE_DECL_STMT = 559,
187  TEMPLATE_DECL_STMT = 548,
188  VAR_DECL_STMT = 665,
189  TEMPLATE_INST_DECL_STMT = 563,
190  TEMPLATE_INST_DEFN_STMT = 564,
191  TEMPLATE_INST_FUNCTION_DECL_STMT = 566,
192  TEMPLATE_INST_MEMBER_FUNCTION_DECL_STMT = 567,
193  NONREAL_DECL = 280,
194  WITH_STATEMENT = 673,
195  PASS_STATEMENT = 466,
196  ASSERT_STMT = 16,
197  EXEC_STMT = 137,
198  PROGRAM_HEADER_STMT = 479,
199  PROCEDURE_HEADER_STMT = 478,
200  ENTRY_STMT = 128,
201  FORTRAN_NONBLOCKED_DO = 159,
202  INTERFACE_STATEMENT = 211,
203  PARAMETER_STATEMENT = 463,
204  COMMON_BLOCK = 66,
205  MODULE_STATEMENT = 259,
206  USE_STATEMENT = 653,
207  PROCESS_CONTROL_STATEMENT = 527,
208  PRINT_STATEMENT = 477,
209  READ_STATEMENT = 486,
210  WRITE_STATEMENT = 677,
211  OPEN_STATEMENT = 460,
212  CLOSE_STATEMENT = 63,
213  INQUIRE_STATEMENT = 203,
214  FLUSH_STATEMENT = 150,
215  BACKSPACE_STATEMENT = 27,
216  REWIND_STATEMENT = 493,
217  ENDFILE_STATEMENT = 126,
218  WAIT_STATEMENT = 671,
219  WITHTEAM_STMT = 682,
220  FORMAT_STATEMENT = 156,
221  FORTRAN_DO = 157,
222  FOR_ALL_STMT = 151,
223  IO_STATEMENT = 185,
224  SYNC_ALL_STATEMENT = 521,
225  SYNC_IMAGES_STATEMENT = 522,
226  SYNC_MEMORY_STATEMENT = 523,
227  SYNC_TEAM_STATEMENT = 524,
228  LOCK_STATEMENT = 525,
229  UNLOCK_STATEMENT = 526,
230  IMAGE_CONTROL_STATEMENT = 191,
231  UPC_NOTIFY_STMT = 650,
232  UPC_WAIT_STMT = 652,
233  UPC_BARRIER_STMT = 643,
234  UPC_FENCE_STMT = 646,
235  UPC_FORALL_STMT = 647,
236  UPIR_SPMD_STMT = 306,
237  OMP_LOOP_STMT = 314,
238  OMP_SCAN_STMT = 315,
239  OMP_TASKLOOP_STMT = 316,
240  OMP_TASKGROUP_STMT = 311,
241  OMP_DEPOBJ_STMT = 312,
242  OMP_TEAMS_STMT = 307,
243  OMP_CANCELLATION_POINT_STMT = 308,
244  OMP_DECLARE_MAPPER_STMT = 309,
245  OMP_CANCEL_STMT = 310,
246  OMP_DISTRIBUTE_STMT = 313,
247  OMP_METADIRECTIVE_STMT = 303,
248  OMP_SINGLE_STMT = 321,
249  OMP_TASK_STMT = 322,
250  OMP_TARGET_ENTER_DATA_STMT = 317,
251  OMP_TARGET_EXIT_DATA_STMT = 318,
252  UPIR_WORKSHARING_STMT = 299,
253  OMP_FOR_SIMD_STMT = 300,
254  OMP_DO_STMT = 295,
255  OMP_SECTIONS_STMT = 320,
256  OMP_ATOMIC_STMT = 289,
257  UPIR_TASK_STMT = 326,
258  OMP_TARGET_DATA_STMT = 327,
259  OMP_TARGET_PARALLEL_FOR_STMT = 328,
260  OMP_TARGET_PARALLEL_STMT = 331,
261  OMP_DISTRIBUTE_SIMD_STMT = 341,
262  OMP_DISTRIBUTE_PARALLEL_FOR_STMT = 342,
263  OMP_DISTRIBUTE_PARALLEL_FOR_SIMD_STMT = 343,
264  OMP_TASKLOOP_SIMD_STMT = 344,
265  OMP_TARGET_UPDATE_STMT = 329,
266  OMP_TARGET_PARALLEL_FOR_SIMD_STMT = 332,
267  OMP_TARGET_PARALLEL_LOOP_STMT = 333,
268  OMP_TARGET_SIMD_STMT = 334,
269  OMP_TARGET_TEAMS_STMT = 335,
270  OMP_TARGET_TEAMS_DISTRIBUTE_STMT = 336,
271  OMP_TARGET_TEAMS_DISTRIBUTE_SIMD_STMT = 337,
272  OMP_TARGET_TEAMS_LOOP_STMT = 338,
273  OMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_STMT = 339,
274  OMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_STMT = 340,
275  OMP_MASTER_TASKLOOP_SIMD_STMT = 345,
276  OMP_PARALLEL_MASTER_TASKLOOP_STMT = 346,
277  OMP_PARALLEL_MASTER_TASKLOOP_SIMD_STMT = 347,
278  OMP_TEAMS_DISTRIBUTE_STMT = 348,
279  OMP_TEAMS_DISTRIBUTE_SIMD_STMT = 349,
280  OMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_STMT = 350,
281  OMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_STMT = 351,
282  OMP_TEAMS_LOOP_STMT = 352,
283  OMP_PARALLEL_MASTER_STMT = 354,
284  OMP_MASTER_TASKLOOP_STMT = 355,
285  OMP_PARALLEL_LOOP_STMT = 353,
286  OMP_UNROLL_STMT = 356,
287  OMP_TILE_STMT = 357,
288  UPIR_SIMD_STMT = 358,
289  OMP_CRITICAL_STMT = 291,
290  OMP_ORDERED_STMT = 304,
291  UPIR_LOOP_STMT = 360,
292  UPIR_LOOP_PARALLEL_STMT = 361,
293  UPIR_SYNC_STMT = 362,
294  UPIR_FIELDBODY_STMT = 292,
295  OMP_MASTER_STMT = 301,
296  OMP_SECTION_STMT = 319,
297  OMP_WORKSHARE_STMT = 325,
298  OMP_FLUSH_STMT = 296,
299  OMP_ALLOCATE_STMT = 297,
300  OMP_ORDERED_DEPEND_STMT = 305,
301  UPIR_BODY_STMT = 293,
302  UPIR_FIELD_STMT = 294,
303  TEMP_Block_Data_Statement = 41,
304  TEMP_Implicit_Statement = 193,
305  TEMP_Statement_Function_Statement = 533,
306  TEMP_Where_Statement = 675,
307  TEMP_Nullify_Statement = 288,
308  TEMP_Equivalence_Statement = 135,
309  TEMP_Derived_Type_Statement = 97,
310  TEMP_Attribute_Specification_Statement = 24,
311  TEMP_Allocate_Statement = 7,
312  TEMP_Deallocate_Statement = 88,
313  TEMP_Contains_Statement = 81,
314  TEMP_Sequence_Statement = 499,
315  TEMP_Else_Where_Statement = 122,
316  TEMP_Arithmetic_If_Statement = 10,
317  TEMP_Assign_Statement = 19,
318  TEMP_Computed_Goto_Statement = 75,
319  TEMP_Assigned_Goto_Statement = 20,
320  TEMP_Namelist_Statement = 266,
321  TEMP_Import_Statement = 195,
322  TEMP_Associate_Statement = 21,
323  TEMP_Fortran_Include_Line = 158,
324  NAMESPACE_DECLARATION_STMT = 268,
325  NAMESPACE_ALIAS_DECLARATION_STMT = 267,
326  NAMESPACE_DEFINITION_STMT = 269,
327  USING_DECLARATION_STMT = 656,
328  USING_DIRECTIVE_STMT = 657,
329  TEMPLATE_INST_DIRECTIVE_STMT = 565,
330  STATIC_ASSERTION_DECLARATION = 530,
331  TEMPLATE_CLASS_DEF_STMT = 561,
332  TEMPLATE_FUNCTION_DEF_STMT = 562,
333  CLASS_DECL_STMT = 55,
334  CLASS_DEFN_STMT = 56,
335  FUNC_DEFN_STMT = 163,
336  SCOPE_STMT = 498,
337  MFUNC_DECL_STMT = 245,
338  FUNC_DECL_STMT = 162,
339  INCLUDE_DIRECTIVE_STMT = 198,
340  DEFINE_DIRECTIVE_STMT = 95,
341  UNDEF_DIRECTIVE_STMT = 632,
342  IFDEF_DIRECTIVE_STMT = 189,
343  IFNDEF_DIRECTIVE_STMT = 190,
344  IF_DIRECTIVE_STMT = 187,
345  DEAD_IF_DIRECTIVE_STMT = 87,
346  ELSE_DIRECTIVE_STMT = 121,
347  ELSEIF_DIRECTIVE_STMT = 123,
348  ENDIF_DIRECTIVE_STMT = 127,
349  LINE_DIRECTIVE_STMT = 230,
350  WARNING_DIRECTIVE_STMT = 672,
351  ERROR_DIRECTIVE_STMT = 136,
352  EMPTY_DIRECTIVE_STMT = 125,
353  INCLUDE_NEXT_DIRECTIVE_STMT = 200,
354  IDENT_DIRECTIVE_STMT = 186,
355  LINEMARKER_DIRECTIVE_STMT = 231,
356  CPP_DIRECTIVE_STMT = 45,
357  C_LINKAGE_START_STMT = 62,
358  C_LINKAGE_END_STMT = 61,
359  C_LINKAGE_DECLARATION_STMT = 60,
360  OMP_DECLARE_SIMD_STMT = 298,
361  OMP_BARRIER_STMT = 290,
362  OMP_TASKYIELD_STMT = 302,
363  OMP_REQUIRES_STMT = 330,
364  OMP_TASKWAIT_STMT = 323,
365  OMP_THREADPRIVATE_STMT = 324,
366  MS_ATTRIBUTE_DECL_STMT = 250,
367  EMPTY_DECLARATION_STMT = 124,
368  DECL_STMT = 91,
369  UpirBaseStatementTag = 359,
370  StatementTag = 529,
371  VAR_REF = 664,
372  NONREAL_REF = 281,
373  COMPOUND_LITERAL = 74,
374  LABEL_REF = 220,
375  CLASSNAME_REF = 57,
376  FUNCTION_REF = 169,
377  MEMBER_FUNCTION_REF = 246,
378  TEMPLATE_FUNCTION_REF = 552,
379  TEMPLATE_MEMBER_FUNCTION_REF = 555,
380  SIZEOF_OP = 516,
381  ALIGNOF_OP = 517,
382  NOEXCEPT_OP = 276,
383  TYPE_EXPRESSION = 588,
384  LAMBDA_EXP = 225,
385  UPC_LOCAL_SIZEOF_EXPR = 648,
386  UPC_BLOCK_SIZEOF_EXPR = 644,
387  UPC_ELEM_SIZEOF_EXPR = 645,
388  VA_START_OP = 663,
389  VA_START_ONE_OPERAND_OP = 662,
390  VA_OP = 661,
391  VA_END_OP = 660,
392  VA_COPY_OP = 659,
393  TYPEID_OP = 597,
394  EXPR_CONDITIONAL = 77,
395  NEW_OP = 274,
396  DELETE_OP = 96,
397  THIS_NODE = 574,
398  SUPER_NODE = 576,
399  CLASS_NODE = 686,
400  TYPE_REF = 488,
401  AGGREGATE_INIT = 5,
402  COMPOUND_INIT = 73,
403  CONSTRUCTOR_INIT = 80,
404  ASSIGN_INIT = 17,
405  BRACED_INIT = 44,
406  EXPRESSION_ROOT = 143,
407  UNARY_MINUS_OP = 253,
408  UNARY_ADD_OP = 630,
409  NOT_OP = 278,
410  DEREF_OP = 471,
411  ADDRESS_OP = 4,
412  MINUSMINUS_OP = 252,
413  PLUSPLUS_OP = 468,
414  BIT_COMPLEMENT_OP = 37,
415  REAL_PART_OP = 487,
416  IMAG_PART_OP = 192,
417  CONJUGATE_OP = 78,
418  CAST_OP = 47,
419  THROW_OP = 577,
420  POINTST_OP = 12,
421  RECORD_REF = 110,
422  DOTSTAR_OP = 111,
423  ARROWSTAR_OP = 13,
424  EQ_OP = 134,
425  LT_OP = 229,
426  GT_OP = 183,
427  NE_OP = 277,
428  LE_OP = 228,
429  GE_OP = 182,
430  ADD_OP = 3,
431  SUBT_OP = 541,
432  MULT_OP = 262,
433  DIV_OP = 108,
434  INTEGER_DIV_OP = 206,
435  MOD_OP = 255,
436  AND_OP = 9,
437  OR_OP = 462,
438  BITXOR_OP = 40,
439  BITAND_OP = 35,
440  BITOR_OP = 39,
441  BITEQV_OP = 38,
442  COMMA_OP = 65,
443  LSHIFT_OP = 241,
444  RSHIFT_OP = 495,
445  ARRAY_OP = 469,
446  SCOPE_OP = 497,
447  ASSIGN_OP = 18,
448  PLUS_ASSIGN_OP = 467,
449  MINUS_ASSIGN_OP = 251,
450  AND_ASSIGN_OP = 8,
451  IOR_ASSIGN_OP = 216,
452  MULT_ASSIGN_OP = 261,
453  DIV_ASSIGN_OP = 107,
454  MOD_ASSIGN_OP = 254,
455  XOR_ASSIGN_OP = 678,
456  LSHIFT_ASSIGN_OP = 240,
457  RSHIFT_ASSIGN_OP = 494,
458  IDIV_ASSIGN_OP = 207,
459  EXP_ASSIGN_OP = 139,
460  CONCATENATION_OP = 76,
461  NARY_COMPARISON_OP = 273,
462  NARY_BOOLEAN_OP = 272,
463  BOOL_VAL = 42,
464  STRING_VAL = 538,
465  SHORT_VAL = 501,
466  CHAR_VAL = 50,
467  UNSIGNED_CHAR_VAL = 638,
468  WCHAR_VAL = 674,
469  CHAR16_VAL = 51,
470  CHAR32_VAL = 52,
471  UNSIGNED_SHORT_VAL = 642,
472  INT_VAL = 205,
473  ENUM_VAL = 133,
474  UNSIGNED_INT_VAL = 639,
475  LONG_INT_VAL = 238,
476  LONG_LONG_INT_VAL = 239,
477  UNSIGNED_LONG_LONG_INT_VAL = 640,
478  UNSIGNED_LONG_INT_VAL = 641,
479  FLOAT_VAL = 146,
480  DOUBLE_VAL = 112,
481  LONG_DOUBLE_VAL = 237,
482  FLOAT_80_VAL = 148,
483  FLOAT_128_VAL = 147,
484  NULLPTR_VAL = 286,
485  VOID_VAL = 670,
486  FUNCTION_PARAMETER_REF_EXP = 167,
487  TEMPLATE_PARAMETER_VAL = 570,
488  UPC_THREADS = 651,
489  UPC_MYTHREAD = 649,
490  COMPLEX_VAL = 69,
491  NULL_EXPR = 285,
492  VARIANT_EXPR = 668,
493  STMT_EXPR = 532,
494  ASM_OP = 14,
495  EXEC_CONF = 218,
496  KERN_CALL = 219,
497  LAMBDA_REF_EXP = 226,
498  TUPLE_EXP = 580,
499  LIST_EXP = 234,
500  DICT_EXP = 100,
501  KEY_DATUM_PAIR = 217,
502  COMPREHENSION = 70,
503  LIST_COMPREHENSION = 233,
504  SET_COMPREHENSION = 500,
505  DICTIONARY_COMPREHENSION = 99,
506  MEMBERSHIP_OP = 249,
507  NON_MEMBERSHIP_OP = 279,
508  IS_OP = 214,
509  IS_NOT_OP = 215,
510  STR_CONV = 536,
511  YIELD_EXP = 679,
512  FOLD_EXPR = 149,
513  CHOOSE_EXPR = 53,
514  AWAIT_EXPR = 26,
515  SPACESHIP_OP = 519,
516  SUBSCRIPT_EXPR = 540,
517  TEMP_ColonShapeExp = 64,
518  TEMP_AsteriskShapeExp = 22,
519  IO_ITEM_EXPR = 184,
520  IMPLIED_DO = 194,
521  EXPONENTIATION_OP = 138,
522  TEMP_UnknownArrayOrFunctionReference = 634,
523  ACTUAL_ARGUMENT_EXPRESSION = 2,
524  USER_DEFINED_BINARY_OP = 654,
525  POINTER_ASSIGN_OP = 470,
526  COARRAY_REF_EXPR = 683,
527  DESIGNATED_INITIALIZER = 98,
528  MATRIX_EXP = 243,
529  RANGE_EXP = 484,
530  MAGIC_COLON_EXP = 242,
531  ELEMENT_MULT_OP = 118,
532  POWER_OP = 474,
533  ELEMENT_POWER_OP = 119,
534  ELEMENT_DIVIDE_OP = 116,
535  LEFT_DIVIDE_OP = 227,
536  ELEMENT_LEFT_DIVIDE_OP = 117,
537  ELEMENT_ADD_OP = 115,
538  ELEMENT_SUBTRACT_OP = 120,
539  MATRIX_TRANSPOSE_OP = 244,
540  ELEMENT_WISE_OP = 114,
541  EXPR_INIT = 202,
542  SIMD_LOAD = 508,
543  SIMD_BROADCAST = 509,
544  SIMD_STORE = 510,
545  SIMD_PARTIAL_STORE = 511,
546  SIMD_SCALAR_STORE = 512,
547  SIMD_GATHER = 513,
548  SIMD_EXPLICIT_GATHER = 514,
549  SIMD_SCATTER = 515,
550  SIMD_ADD_OP = 503,
551  SIMD_SUB_OP = 504,
552  SIMD_MUL_OP = 505,
553  SIMD_DIV_OP = 506,
554  SIMD_FMA_OP = 507,
555  SIMD_BINARY_OP = 502,
556  USER_DEFINED_UNARY_OP = 655,
557  PSEUDO_DESTRUCTOR_REF = 481,
558  UNARY_EXPRESSION = 631,
559  COMPOUND_ASSIGN_OP = 72,
560  BINARY_EXPRESSION = 34,
561  NARY_EXPRESSION = 271,
562  ValueExpTag = 658,
563  EXPR_LIST = 140,
564  FUNC_CALL = 161,
565  CALL_EXPRESSION = 684,
566  TYPE_TRAIT_BUILTIN_OPERATOR = 575,
567  ExpressionTag = 142,
568  TEMPLATE_VARIABLE_NAME = 560,
569  VARIABLE_NAME = 667,
570  FUNCTYPE_NAME = 172,
571  TEMPLATE_CLASS_NAME = 550,
572  CLASS_NAME = 58,
573  TEMPLATE_NAME = 572,
574  ENUM_NAME = 131,
575  FIELD_NAME = 130,
576  TEMPLATE_TYPEDEF_NAME = 558,
577  TYPEDEF_NAME = 627,
578  TEMPLATE_FUNC_NAME = 553,
579  TEMPLATE_MEMBER_FUNC_NAME = 556,
580  LABEL_NAME = 222,
581  DEFAULT_NAME = 94,
582  NAMESPACE_NAME = 270,
583  INTRINSIC_SYMBOL = 213,
584  MODULE_SYMBOL = 260,
585  INTERFACE_SYMBOL = 212,
586  COMMON_SYMBOL = 68,
587  RENAME_SYMBOL = 491,
588  MEMBER_FUNC_NAME = 247,
589  FUNCTION_NAME = 170,
590  ALIAS_SYMBOL = 6,
591  NONREAL_SYMBOL = 282,
592  SymbolTag = 544,
593  TEMP_CommonBlockObject = 67,
594  InitializedNameTag = 201,
595  LambdaCaptureTag = 223,
596  LambdaCaptureListTag = 224,
597  OmpOrderedClauseTag = 424,
598  OmpNowaitClauseTag = 385,
599  OmpNogroupClauseTag = 412,
600  OmpReadClauseTag = 386,
601  OmpThreadsClauseTag = 370,
602  OmpSimdClauseTag = 371,
603  OmpReverseOffloadClauseTag = 396,
604  OmpExtImplementationDefinedRequirementClauseTag = 401,
605  OmpUnifiedAddressClauseTag = 397,
606  OmpUnifiedSharedMemoryClauseTag = 398,
607  OmpDynamicAllocatorsClauseTag = 399,
608  OmpAtomicDefaultMemOrderClauseTag = 400,
609  OmpWriteClauseTag = 387,
610  OmpUpdateClauseTag = 388,
611  OmpDepobjUpdateClauseTag = 389,
612  OmpDestroyClauseTag = 390,
613  OmpCaptureClauseTag = 391,
614  OmpSeqCstClauseTag = 392,
615  OmpAcqRelClauseTag = 393,
616  OmpReleaseClauseTag = 394,
617  OmpAcquireClauseTag = 395,
618  OmpRelaxedClauseTag = 402,
619  OmpParallelClauseTag = 403,
620  OmpSectionsClauseTag = 404,
621  OmpForClauseTag = 405,
622  OmpTaskgroupClauseTag = 406,
623  OmpBeginClauseTag = 372,
624  OmpEndClauseTag = 377,
625  OmpUntiedClauseTag = 432,
626  OmpMergeableClauseTag = 433,
627  OmpDefaultClauseTag = 376,
628  OmpAtomicClauseTag = 442,
629  OmpProcBindClauseTag = 441,
630  OmpOrderClauseTag = 414,
631  OmpBindClauseTag = 416,
632  OmpInbranchClauseTag = 443,
633  OmpNotinbranchClauseTag = 444,
634  OmpCollapseClauseTag = 373,
635  OmpIfClauseTag = 380,
636  OmpFinalClauseTag = 381,
637  OmpPriorityClauseTag = 382,
638  UpirNumUnitsFieldTag = 407,
639  OmpNumTeamsClauseTag = 408,
640  OmpGrainsizeClauseTag = 409,
641  OmpDetachClauseTag = 410,
642  OmpNumTasksClauseTag = 411,
643  OmpHintClauseTag = 413,
644  OmpThreadLimitClauseTag = 423,
645  OmpNontemporalClauseTag = 417,
646  OmpInclusiveClauseTag = 418,
647  OmpExclusiveClauseTag = 419,
648  OmpIsDevicePtrClauseTag = 420,
649  OmpUseDevicePtrClauseTag = 421,
650  OmpUseDeviceAddrClauseTag = 422,
651  OmpIfDeviceTag = 383,
652  OmpSafelenTag = 436,
653  OmpSimdlenTag = 437,
654  OmpPartialTag = 449,
655  OmpFullTag = 448,
656  OmpSizesTag = 450,
657  UpirBranchFieldTag = 451,
658  UpirNestedLevelFieldTag = 452,
659  UpirNestedParentFieldTag = 453,
660  UpirNestedChildFieldTag = 454,
661  UpirSyncFieldTag = 455,
662  UpirDataFieldTag = 456,
663  UpirTargetFieldTag = 458,
664  UpirDataItemFieldTag = 457,
665  OmpExpressionClauseTag = 378,
666  OmpCopyprivateClauseTag = 375,
667  OmpPrivateClauseTag = 425,
668  OmpFirstprivateClauseTag = 379,
669  OmpSharedClauseTag = 431,
670  OmpCopyinClauseTag = 374,
671  OmpLastprivateClauseTag = 384,
672  OmpReductionClauseTag = 426,
673  OmpInReductionClauseTag = 427,
674  OmpTaskReductionClauseTag = 428,
675  OmpAllocateClauseTag = 364,
676  OmpDependClauseTag = 445,
677  OmpToClauseTag = 368,
678  OmpUsesAllocatorsClauseTag = 366,
679  OmpFromClauseTag = 369,
680  OmpAffinityClauseTag = 446,
681  OmpMapClauseTag = 435,
682  OmpLinearClauseTag = 438,
683  OmpUniformClauseTag = 439,
684  OmpAlignedClauseTag = 440,
685  OmpVariablesClauseTag = 434,
686  OmpScheduleClauseTag = 430,
687  OmpWhenClauseTag = 447,
688  OmpDistScheduleClauseTag = 415,
689  OmpDefaultmapClauseTag = 429,
690  OmpAllocatorClauseTag = 365,
691  OmpUsesAllocatorsDefinationTag = 367,
692  OmpClauseTag = 363,
693  TEMP_Rename_Pair = 490,
694  TEMP_Interface_Body = 208,
695  TEMP_Header_File_Body = 209,
696  LocatedNodeSupportTag = 236,
697  TOKEN = 578,
698  LocatedNodeTag = 235,
699  NodeTag = 275,
700  Cxx_Grammar_UNKNOWN_GRAMMAR = 688,
701  Cxx_Grammar_LAST_TAG
702  };
703 enum VariantT
704 {
705 V_SgName = 263,
706 V_SgSymbolTable = 545,
707 V_SgPragma = 475,
708 V_SgModifierNodes = 257,
709 V_SgConstVolatileModifier = 79,
710 V_SgStorageModifier = 535,
711 V_SgAccessModifier = 1,
712 V_SgFunctionModifier = 165,
713 V_SgUPC_AccessModifier = 629,
714 V_SgLinkageModifier = 232,
715 V_SgSpecialFunctionModifier = 528,
716 V_SgTypeModifier = 603,
717 V_SgElaboratedTypeModifier = 113,
718 V_SgBaseClassModifier = 30,
719 V_SgDeclarationModifier = 89,
720 V_SgStructureModifier = 539,
721 V_SgOpenclAccessModeModifier = 459,
722 V_SgModifier = 256,
723 V_Sg_File_Info = 680,
724 V_SgSourceFile = 518,
725 V_SgUnknownFile = 635,
726 V_SgFile = 144,
727 V_SgFileList = 145,
728 V_SgDirectory = 105,
729 V_SgDirectoryList = 106,
730 V_SgProject = 480,
731 V_SgOptions = 461,
732 V_SgUnparse_Info = 637,
733 V_SgIncludeFile = 199,
734 V_SgFuncDecl_attr = 160,
735 V_SgClassDecl_attr = 54,
736 V_SgTypedefSeq = 626,
737 V_SgFunctionParameterTypeList = 168,
738 V_SgTemplateParameter = 569,
739 V_SgTemplateArgument = 546,
740 V_SgTemplateParameterList = 571,
741 V_SgTemplateArgumentList = 547,
742 V_SgBitAttribute = 36,
743 V_SgAttribute = 23,
744 V_SgExpBaseClass = 29,
745 V_SgNonrealBaseClass = 284,
746 V_SgBaseClass = 28,
747 V_SgUndirectedGraphEdge = 633,
748 V_SgDirectedGraphEdge = 103,
749 V_SgGraphNode = 180,
750 V_SgGraphEdge = 178,
751 V_SgStringKeyedBidirectionalGraph = 537,
752 V_SgIntKeyedBidirectionalGraph = 204,
753 V_SgBidirectionalGraph = 32,
754 V_SgIncidenceDirectedGraph = 196,
755 V_SgIncidenceUndirectedGraph = 197,
756 V_SgGraph = 177,
757 V_SgGraphNodeList = 181,
758 V_SgGraphEdgeList = 179,
759 V_SgQualifiedName = 482,
760 V_SgNameGroup = 264,
761 V_SgDimensionObject = 101,
762 V_SgDataStatementGroup = 84,
763 V_SgDataStatementObject = 85,
764 V_SgDataStatementValue = 86,
765 V_SgFormatItem = 154,
766 V_SgFormatItemList = 155,
767 V_SgTypeTable = 174,
768 V_SgHeaderFileReport = 210,
769 V_SgSupport = 542,
770 V_SgTypeUnknown = 616,
771 V_SgTypeChar = 583,
772 V_SgTypeSignedChar = 610,
773 V_SgTypeUnsignedChar = 618,
774 V_SgTypeShort = 608,
775 V_SgTypeSignedShort = 614,
776 V_SgTypeUnsignedShort = 622,
777 V_SgTypeInt = 599,
778 V_SgTypeSignedInt = 611,
779 V_SgTypeUnsignedInt = 619,
780 V_SgTypeLong = 600,
781 V_SgTypeSignedLong = 612,
782 V_SgTypeUnsignedLong = 620,
783 V_SgTypeVoid = 623,
784 V_SgTypeGlobalVoid = 596,
785 V_SgTypeWchar = 624,
786 V_SgTypeFloat = 593,
787 V_SgTypeDouble = 590,
788 V_SgTypeLongLong = 602,
789 V_SgTypeSignedLongLong = 613,
790 V_SgTypeUnsignedLongLong = 621,
791 V_SgTypeLongDouble = 601,
792 V_SgTypeFloat80 = 595,
793 V_SgTypeFloat128 = 594,
794 V_SgTypeString = 615,
795 V_SgTypeBool = 582,
796 V_SgTypeFixed = 592,
797 V_SgTypeMatrix = 604,
798 V_SgTypeTuple = 605,
799 V_SgTypeNullptr = 606,
800 V_SgTypeComplex = 586,
801 V_SgTypeImaginary = 598,
802 V_SgTypeDefault = 587,
803 V_SgPointerMemberType = 472,
804 V_SgReferenceType = 489,
805 V_SgRvalueReferenceType = 496,
806 V_SgDeclType = 92,
807 V_SgTypeOfType = 607,
808 V_SgTypeCAFTeam = 681,
809 V_SgTypeUnsigned128bitInteger = 617,
810 V_SgTypeSigned128bitInteger = 609,
811 V_SgTypeLabel = 589,
812 V_SgTemplateType = 573,
813 V_SgEnumType = 132,
814 V_SgTypedefType = 628,
815 V_SgNonrealType = 283,
816 V_SgAutoType = 25,
817 V_SgModifierType = 258,
818 V_SgPartialFunctionModifierType = 464,
819 V_SgArrayType = 11,
820 V_SgTypeEllipse = 591,
821 V_SgTypeCrayPointer = 685,
822 V_SgPartialFunctionType = 465,
823 V_SgMemberFunctionType = 248,
824 V_SgFunctionType = 171,
825 V_SgPointerType = 473,
826 V_SgClassType = 59,
827 V_SgNamedType = 265,
828 V_SgQualifiedNameType = 483,
829 V_SgTypeChar16 = 584,
830 V_SgTypeChar32 = 585,
831 V_SgType = 581,
832 V_SgForStatement = 153,
833 V_SgForInitStatement = 152,
834 V_SgRangeBasedForStatement = 485,
835 V_SgCatchStatementSeq = 49,
836 V_SgFunctionParameterList = 166,
837 V_SgCtorInitializerList = 83,
838 V_SgBasicBlock = 31,
839 V_SgGlobal = 175,
840 V_SgIfStmt = 188,
841 V_SgWhileStmt = 676,
842 V_SgDoWhileStmt = 109,
843 V_SgSwitchStatement = 543,
844 V_SgCatchOptionStmt = 48,
845 V_SgFunctionParameterScope = 164,
846 V_SgDeclarationScope = 90,
847 V_SgVariableDefinition = 666,
848 V_SgStmtDeclarationStatement = 531,
849 V_SgEnumDeclaration = 129,
850 V_SgAsmStmt = 15,
851 V_SgFunctionTypeTable = 173,
852 V_SgExprStatement = 141,
853 V_SgLabelStatement = 221,
854 V_SgCaseOptionStmt = 46,
855 V_SgTryStmt = 579,
856 V_SgDefaultOptionStmt = 93,
857 V_SgBreakStmt = 43,
858 V_SgContinueStmt = 82,
859 V_SgReturnStmt = 492,
860 V_SgGotoStatement = 176,
861 V_SgSpawnStmt = 520,
862 V_SgTemplateTypedefDeclaration = 557,
863 V_SgTemplateInstantiationTypedefDeclaration = 568,
864 V_SgTypedefDeclaration = 625,
865 V_SgNullStatement = 287,
866 V_SgVariantStatement = 669,
867 V_SgPragmaDeclaration = 476,
868 V_SgTemplateClassDeclaration = 549,
869 V_SgTemplateMemberFunctionDeclaration = 554,
870 V_SgTemplateFunctionDeclaration = 551,
871 V_SgTemplateVariableDeclaration = 559,
872 V_SgTemplateDeclaration = 548,
873 V_SgVariableDeclaration = 665,
874 V_SgTemplateInstantiationDecl = 563,
875 V_SgTemplateInstantiationDefn = 564,
876 V_SgTemplateInstantiationFunctionDecl = 566,
877 V_SgTemplateInstantiationMemberFunctionDecl = 567,
878 V_SgNonrealDecl = 280,
879 V_SgWithStatement = 673,
880 V_SgPassStatement = 466,
881 V_SgAssertStmt = 16,
882 V_SgExecStatement = 137,
883 V_SgProgramHeaderStatement = 479,
884 V_SgProcedureHeaderStatement = 478,
885 V_SgEntryStatement = 128,
886 V_SgFortranNonblockedDo = 159,
887 V_SgInterfaceStatement = 211,
888 V_SgParameterStatement = 463,
889 V_SgCommonBlock = 66,
890 V_SgModuleStatement = 259,
891 V_SgUseStatement = 653,
892 V_SgProcessControlStatement = 527,
893 V_SgPrintStatement = 477,
894 V_SgReadStatement = 486,
895 V_SgWriteStatement = 677,
896 V_SgOpenStatement = 460,
897 V_SgCloseStatement = 63,
898 V_SgInquireStatement = 203,
899 V_SgFlushStatement = 150,
900 V_SgBackspaceStatement = 27,
901 V_SgRewindStatement = 493,
902 V_SgEndfileStatement = 126,
903 V_SgWaitStatement = 671,
904 V_SgCAFWithTeamStatement = 682,
905 V_SgFormatStatement = 156,
906 V_SgFortranDo = 157,
907 V_SgForAllStatement = 151,
908 V_SgIOStatement = 185,
909 V_SgSyncAllStatement = 521,
910 V_SgSyncImagesStatement = 522,
911 V_SgSyncMemoryStatement = 523,
912 V_SgSyncTeamStatement = 524,
913 V_SgLockStatement = 525,
914 V_SgUnlockStatement = 526,
915 V_SgImageControlStatement = 191,
916 V_SgUpcNotifyStatement = 650,
917 V_SgUpcWaitStatement = 652,
918 V_SgUpcBarrierStatement = 643,
919 V_SgUpcFenceStatement = 646,
920 V_SgUpcForAllStatement = 647,
921 V_SgUpirSpmdStatement = 306,
922 V_SgOmpLoopStatement = 314,
923 V_SgOmpScanStatement = 315,
924 V_SgOmpTaskloopStatement = 316,
925 V_SgOmpTaskgroupStatement = 311,
926 V_SgOmpDepobjStatement = 312,
927 V_SgOmpTeamsStatement = 307,
928 V_SgOmpCancellationPointStatement = 308,
929 V_SgOmpDeclareMapperStatement = 309,
930 V_SgOmpCancelStatement = 310,
931 V_SgOmpDistributeStatement = 313,
932 V_SgOmpMetadirectiveStatement = 303,
933 V_SgOmpSingleStatement = 321,
934 V_SgOmpTaskStatement = 322,
935 V_SgOmpTargetEnterDataStatement = 317,
936 V_SgOmpTargetExitDataStatement = 318,
937 V_SgUpirWorksharingStatement = 299,
938 V_SgOmpForSimdStatement = 300,
939 V_SgOmpDoStatement = 295,
940 V_SgOmpSectionsStatement = 320,
941 V_SgOmpAtomicStatement = 289,
942 V_SgUpirTaskStatement = 326,
943 V_SgOmpTargetDataStatement = 327,
944 V_SgOmpTargetParallelForStatement = 328,
945 V_SgOmpTargetParallelStatement = 331,
946 V_SgOmpDistributeSimdStatement = 341,
947 V_SgOmpDistributeParallelForStatement = 342,
948 V_SgOmpDistributeParallelForSimdStatement = 343,
949 V_SgOmpTaskloopSimdStatement = 344,
950 V_SgOmpTargetUpdateStatement = 329,
951 V_SgOmpTargetParallelForSimdStatement = 332,
952 V_SgOmpTargetParallelLoopStatement = 333,
953 V_SgOmpTargetSimdStatement = 334,
954 V_SgOmpTargetTeamsStatement = 335,
955 V_SgOmpTargetTeamsDistributeStatement = 336,
956 V_SgOmpTargetTeamsDistributeSimdStatement = 337,
957 V_SgOmpTargetTeamsLoopStatement = 338,
958 V_SgOmpTargetTeamsDistributeParallelForStatement = 339,
959 V_SgOmpTargetTeamsDistributeParallelForSimdStatement = 340,
960 V_SgOmpMasterTaskloopSimdStatement = 345,
961 V_SgOmpParallelMasterTaskloopStatement = 346,
962 V_SgOmpParallelMasterTaskloopSimdStatement = 347,
963 V_SgOmpTeamsDistributeStatement = 348,
964 V_SgOmpTeamsDistributeSimdStatement = 349,
965 V_SgOmpTeamsDistributeParallelForStatement = 350,
966 V_SgOmpTeamsDistributeParallelForSimdStatement = 351,
967 V_SgOmpTeamsLoopStatement = 352,
968 V_SgOmpParallelMasterStatement = 354,
969 V_SgOmpMasterTaskloopStatement = 355,
970 V_SgOmpParallelLoopStatement = 353,
971 V_SgOmpUnrollStatement = 356,
972 V_SgOmpTileStatement = 357,
973 V_SgUpirSimdStatement = 358,
974 V_SgOmpCriticalStatement = 291,
975 V_SgOmpOrderedStatement = 304,
976 V_SgUpirLoopStatement = 360,
977 V_SgUpirLoopParallelStatement = 361,
978 V_SgUpirSyncStatement = 362,
979 V_SgUpirFieldBodyStatement = 292,
980 V_SgOmpMasterStatement = 301,
981 V_SgOmpSectionStatement = 319,
982 V_SgOmpWorkshareStatement = 325,
983 V_SgOmpFlushStatement = 296,
984 V_SgOmpAllocateStatement = 297,
985 V_SgOmpOrderedDependStatement = 305,
986 V_SgUpirBodyStatement = 293,
987 V_SgUpirFieldStatement = 294,
988 V_SgBlockDataStatement = 41,
989 V_SgImplicitStatement = 193,
990 V_SgStatementFunctionStatement = 533,
991 V_SgWhereStatement = 675,
992 V_SgNullifyStatement = 288,
993 V_SgEquivalenceStatement = 135,
994 V_SgDerivedTypeStatement = 97,
995 V_SgAttributeSpecificationStatement = 24,
996 V_SgAllocateStatement = 7,
997 V_SgDeallocateStatement = 88,
998 V_SgContainsStatement = 81,
999 V_SgSequenceStatement = 499,
1000 V_SgElseWhereStatement = 122,
1001 V_SgArithmeticIfStatement = 10,
1002 V_SgAssignStatement = 19,
1003 V_SgComputedGotoStatement = 75,
1004 V_SgAssignedGotoStatement = 20,
1005 V_SgNamelistStatement = 266,
1006 V_SgImportStatement = 195,
1007 V_SgAssociateStatement = 21,
1008 V_SgFortranIncludeLine = 158,
1009 V_SgNamespaceDeclarationStatement = 268,
1010 V_SgNamespaceAliasDeclarationStatement = 267,
1011 V_SgNamespaceDefinitionStatement = 269,
1012 V_SgUsingDeclarationStatement = 656,
1013 V_SgUsingDirectiveStatement = 657,
1014 V_SgTemplateInstantiationDirectiveStatement = 565,
1015 V_SgStaticAssertionDeclaration = 530,
1016 V_SgTemplateClassDefinition = 561,
1017 V_SgTemplateFunctionDefinition = 562,
1018 V_SgClassDeclaration = 55,
1019 V_SgClassDefinition = 56,
1020 V_SgFunctionDefinition = 163,
1021 V_SgScopeStatement = 498,
1022 V_SgMemberFunctionDeclaration = 245,
1023 V_SgFunctionDeclaration = 162,
1024 V_SgIncludeDirectiveStatement = 198,
1025 V_SgDefineDirectiveStatement = 95,
1026 V_SgUndefDirectiveStatement = 632,
1027 V_SgIfdefDirectiveStatement = 189,
1028 V_SgIfndefDirectiveStatement = 190,
1029 V_SgIfDirectiveStatement = 187,
1030 V_SgDeadIfDirectiveStatement = 87,
1031 V_SgElseDirectiveStatement = 121,
1032 V_SgElseifDirectiveStatement = 123,
1033 V_SgEndifDirectiveStatement = 127,
1034 V_SgLineDirectiveStatement = 230,
1035 V_SgWarningDirectiveStatement = 672,
1036 V_SgErrorDirectiveStatement = 136,
1037 V_SgEmptyDirectiveStatement = 125,
1038 V_SgIncludeNextDirectiveStatement = 200,
1039 V_SgIdentDirectiveStatement = 186,
1040 V_SgLinemarkerDirectiveStatement = 231,
1041 V_SgC_PreprocessorDirectiveStatement = 45,
1042 V_SgClinkageStartStatement = 62,
1043 V_SgClinkageEndStatement = 61,
1044 V_SgClinkageDeclarationStatement = 60,
1045 V_SgOmpDeclareSimdStatement = 298,
1046 V_SgOmpBarrierStatement = 290,
1047 V_SgOmpTaskyieldStatement = 302,
1048 V_SgOmpRequiresStatement = 330,
1049 V_SgOmpTaskwaitStatement = 323,
1050 V_SgOmpThreadprivateStatement = 324,
1051 V_SgMicrosoftAttributeDeclaration = 250,
1052 V_SgEmptyDeclaration = 124,
1053 V_SgDeclarationStatement = 91,
1054 V_SgUpirBaseStatement = 359,
1055 V_SgStatement = 529,
1056 V_SgVarRefExp = 664,
1057 V_SgNonrealRefExp = 281,
1058 V_SgCompoundLiteralExp = 74,
1059 V_SgLabelRefExp = 220,
1060 V_SgClassNameRefExp = 57,
1061 V_SgFunctionRefExp = 169,
1062 V_SgMemberFunctionRefExp = 246,
1063 V_SgTemplateFunctionRefExp = 552,
1064 V_SgTemplateMemberFunctionRefExp = 555,
1065 V_SgSizeOfOp = 516,
1066 V_SgAlignOfOp = 517,
1067 V_SgNoexceptOp = 276,
1068 V_SgTypeExpression = 588,
1069 V_SgLambdaExp = 225,
1070 V_SgUpcLocalsizeofExpression = 648,
1071 V_SgUpcBlocksizeofExpression = 644,
1072 V_SgUpcElemsizeofExpression = 645,
1073 V_SgVarArgStartOp = 663,
1074 V_SgVarArgStartOneOperandOp = 662,
1075 V_SgVarArgOp = 661,
1076 V_SgVarArgEndOp = 660,
1077 V_SgVarArgCopyOp = 659,
1078 V_SgTypeIdOp = 597,
1079 V_SgConditionalExp = 77,
1080 V_SgNewExp = 274,
1081 V_SgDeleteExp = 96,
1082 V_SgThisExp = 574,
1083 V_SgSuperExp = 576,
1084 V_SgClassExp = 686,
1085 V_SgRefExp = 488,
1086 V_SgAggregateInitializer = 5,
1087 V_SgCompoundInitializer = 73,
1088 V_SgConstructorInitializer = 80,
1089 V_SgAssignInitializer = 17,
1090 V_SgBracedInitializer = 44,
1091 V_SgExpressionRoot = 143,
1092 V_SgMinusOp = 253,
1093 V_SgUnaryAddOp = 630,
1094 V_SgNotOp = 278,
1095 V_SgPointerDerefExp = 471,
1096 V_SgAddressOfOp = 4,
1097 V_SgMinusMinusOp = 252,
1098 V_SgPlusPlusOp = 468,
1099 V_SgBitComplementOp = 37,
1100 V_SgRealPartOp = 487,
1101 V_SgImagPartOp = 192,
1102 V_SgConjugateOp = 78,
1103 V_SgCastExp = 47,
1104 V_SgThrowOp = 577,
1105 V_SgArrowExp = 12,
1106 V_SgDotExp = 110,
1107 V_SgDotStarOp = 111,
1108 V_SgArrowStarOp = 13,
1109 V_SgEqualityOp = 134,
1110 V_SgLessThanOp = 229,
1111 V_SgGreaterThanOp = 183,
1112 V_SgNotEqualOp = 277,
1113 V_SgLessOrEqualOp = 228,
1114 V_SgGreaterOrEqualOp = 182,
1115 V_SgAddOp = 3,
1116 V_SgSubtractOp = 541,
1117 V_SgMultiplyOp = 262,
1118 V_SgDivideOp = 108,
1119 V_SgIntegerDivideOp = 206,
1120 V_SgModOp = 255,
1121 V_SgAndOp = 9,
1122 V_SgOrOp = 462,
1123 V_SgBitXorOp = 40,
1124 V_SgBitAndOp = 35,
1125 V_SgBitOrOp = 39,
1126 V_SgBitEqvOp = 38,
1127 V_SgCommaOpExp = 65,
1128 V_SgLshiftOp = 241,
1129 V_SgRshiftOp = 495,
1130 V_SgPntrArrRefExp = 469,
1131 V_SgScopeOp = 497,
1132 V_SgAssignOp = 18,
1133 V_SgPlusAssignOp = 467,
1134 V_SgMinusAssignOp = 251,
1135 V_SgAndAssignOp = 8,
1136 V_SgIorAssignOp = 216,
1137 V_SgMultAssignOp = 261,
1138 V_SgDivAssignOp = 107,
1139 V_SgModAssignOp = 254,
1140 V_SgXorAssignOp = 678,
1141 V_SgLshiftAssignOp = 240,
1142 V_SgRshiftAssignOp = 494,
1143 V_SgIntegerDivideAssignOp = 207,
1144 V_SgExponentiationAssignOp = 139,
1145 V_SgConcatenationOp = 76,
1146 V_SgNaryComparisonOp = 273,
1147 V_SgNaryBooleanOp = 272,
1148 V_SgBoolValExp = 42,
1149 V_SgStringVal = 538,
1150 V_SgShortVal = 501,
1151 V_SgCharVal = 50,
1152 V_SgUnsignedCharVal = 638,
1153 V_SgWcharVal = 674,
1154 V_SgChar16Val = 51,
1155 V_SgChar32Val = 52,
1156 V_SgUnsignedShortVal = 642,
1157 V_SgIntVal = 205,
1158 V_SgEnumVal = 133,
1159 V_SgUnsignedIntVal = 639,
1160 V_SgLongIntVal = 238,
1161 V_SgLongLongIntVal = 239,
1162 V_SgUnsignedLongLongIntVal = 640,
1163 V_SgUnsignedLongVal = 641,
1164 V_SgFloatVal = 146,
1165 V_SgDoubleVal = 112,
1166 V_SgLongDoubleVal = 237,
1167 V_SgFloat80Val = 148,
1168 V_SgFloat128Val = 147,
1169 V_SgNullptrValExp = 286,
1170 V_SgVoidVal = 670,
1171 V_SgFunctionParameterRefExp = 167,
1172 V_SgTemplateParameterVal = 570,
1173 V_SgUpcThreads = 651,
1174 V_SgUpcMythread = 649,
1175 V_SgComplexVal = 69,
1176 V_SgNullExpression = 285,
1177 V_SgVariantExpression = 668,
1178 V_SgStatementExpression = 532,
1179 V_SgAsmOp = 14,
1180 V_SgCudaKernelExecConfig = 218,
1181 V_SgCudaKernelCallExp = 219,
1182 V_SgLambdaRefExp = 226,
1183 V_SgTupleExp = 580,
1184 V_SgListExp = 234,
1185 V_SgDictionaryExp = 100,
1186 V_SgKeyDatumPair = 217,
1187 V_SgComprehension = 70,
1188 V_SgListComprehension = 233,
1189 V_SgSetComprehension = 500,
1190 V_SgDictionaryComprehension = 99,
1191 V_SgMembershipOp = 249,
1192 V_SgNonMembershipOp = 279,
1193 V_SgIsOp = 214,
1194 V_SgIsNotOp = 215,
1195 V_SgStringConversion = 536,
1196 V_SgYieldExpression = 679,
1197 V_SgFoldExpression = 149,
1198 V_SgChooseExpression = 53,
1199 V_SgAwaitExpression = 26,
1200 V_SgSpaceshipOp = 519,
1201 V_SgSubscriptExpression = 540,
1202 V_SgColonShapeExp = 64,
1203 V_SgAsteriskShapeExp = 22,
1204 V_SgIOItemExpression = 184,
1205 V_SgImpliedDo = 194,
1206 V_SgExponentiationOp = 138,
1207 V_SgUnknownArrayOrFunctionReference = 634,
1208 V_SgActualArgumentExpression = 2,
1209 V_SgUserDefinedBinaryOp = 654,
1210 V_SgPointerAssignOp = 470,
1211 V_SgCAFCoExpression = 683,
1212 V_SgDesignatedInitializer = 98,
1213 V_SgMatrixExp = 243,
1214 V_SgRangeExp = 484,
1215 V_SgMagicColonExp = 242,
1216 V_SgElementwiseMultiplyOp = 118,
1217 V_SgPowerOp = 474,
1218 V_SgElementwisePowerOp = 119,
1219 V_SgElementwiseDivideOp = 116,
1220 V_SgLeftDivideOp = 227,
1221 V_SgElementwiseLeftDivideOp = 117,
1222 V_SgElementwiseAddOp = 115,
1223 V_SgElementwiseSubtractOp = 120,
1224 V_SgMatrixTransposeOp = 244,
1225 V_SgElementwiseOp = 114,
1226 V_SgInitializer = 202,
1227 V_SgSIMDLoad = 508,
1228 V_SgSIMDBroadcast = 509,
1229 V_SgSIMDStore = 510,
1230 V_SgSIMDPartialStore = 511,
1231 V_SgSIMDScalarStore = 512,
1232 V_SgSIMDGather = 513,
1233 V_SgSIMDExplicitGather = 514,
1234 V_SgSIMDScatter = 515,
1235 V_SgSIMDAddOp = 503,
1236 V_SgSIMDSubOp = 504,
1237 V_SgSIMDMulOp = 505,
1238 V_SgSIMDDivOp = 506,
1239 V_SgSIMDFmaOp = 507,
1240 V_SgSIMDBinaryOp = 502,
1241 V_SgUserDefinedUnaryOp = 655,
1242 V_SgPseudoDestructorRefExp = 481,
1243 V_SgUnaryOp = 631,
1244 V_SgCompoundAssignOp = 72,
1245 V_SgBinaryOp = 34,
1246 V_SgNaryOp = 271,
1247 V_SgValueExp = 658,
1248 V_SgExprListExp = 140,
1249 V_SgFunctionCallExp = 161,
1250 V_SgCallExpression = 684,
1251 V_SgTypeTraitBuiltinOperator = 575,
1252 V_SgExpression = 142,
1253 V_SgTemplateVariableSymbol = 560,
1254 V_SgVariableSymbol = 667,
1255 V_SgFunctionTypeSymbol = 172,
1256 V_SgTemplateClassSymbol = 550,
1257 V_SgClassSymbol = 58,
1258 V_SgTemplateSymbol = 572,
1259 V_SgEnumSymbol = 131,
1260 V_SgEnumFieldSymbol = 130,
1261 V_SgTemplateTypedefSymbol = 558,
1262 V_SgTypedefSymbol = 627,
1263 V_SgTemplateFunctionSymbol = 553,
1264 V_SgTemplateMemberFunctionSymbol = 556,
1265 V_SgLabelSymbol = 222,
1266 V_SgDefaultSymbol = 94,
1267 V_SgNamespaceSymbol = 270,
1268 V_SgIntrinsicSymbol = 213,
1269 V_SgModuleSymbol = 260,
1270 V_SgInterfaceSymbol = 212,
1271 V_SgCommonSymbol = 68,
1272 V_SgRenameSymbol = 491,
1273 V_SgMemberFunctionSymbol = 247,
1274 V_SgFunctionSymbol = 170,
1275 V_SgAliasSymbol = 6,
1276 V_SgNonrealSymbol = 282,
1277 V_SgSymbol = 544,
1278 V_SgCommonBlockObject = 67,
1279 V_SgInitializedName = 201,
1280 V_SgLambdaCapture = 223,
1281 V_SgLambdaCaptureList = 224,
1282 V_SgOmpOrderedClause = 424,
1283 V_SgOmpNowaitClause = 385,
1284 V_SgOmpNogroupClause = 412,
1285 V_SgOmpReadClause = 386,
1286 V_SgOmpThreadsClause = 370,
1287 V_SgOmpSimdClause = 371,
1288 V_SgOmpReverseOffloadClause = 396,
1289 V_SgOmpExtImplementationDefinedRequirementClause = 401,
1290 V_SgOmpUnifiedAddressClause = 397,
1291 V_SgOmpUnifiedSharedMemoryClause = 398,
1292 V_SgOmpDynamicAllocatorsClause = 399,
1293 V_SgOmpAtomicDefaultMemOrderClause = 400,
1294 V_SgOmpWriteClause = 387,
1295 V_SgOmpUpdateClause = 388,
1296 V_SgOmpDepobjUpdateClause = 389,
1297 V_SgOmpDestroyClause = 390,
1298 V_SgOmpCaptureClause = 391,
1299 V_SgOmpSeqCstClause = 392,
1300 V_SgOmpAcqRelClause = 393,
1301 V_SgOmpReleaseClause = 394,
1302 V_SgOmpAcquireClause = 395,
1303 V_SgOmpRelaxedClause = 402,
1304 V_SgOmpParallelClause = 403,
1305 V_SgOmpSectionsClause = 404,
1306 V_SgOmpForClause = 405,
1307 V_SgOmpTaskgroupClause = 406,
1308 V_SgOmpBeginClause = 372,
1309 V_SgOmpEndClause = 377,
1310 V_SgOmpUntiedClause = 432,
1311 V_SgOmpMergeableClause = 433,
1312 V_SgOmpDefaultClause = 376,
1313 V_SgOmpAtomicClause = 442,
1314 V_SgOmpProcBindClause = 441,
1315 V_SgOmpOrderClause = 414,
1316 V_SgOmpBindClause = 416,
1317 V_SgOmpInbranchClause = 443,
1318 V_SgOmpNotinbranchClause = 444,
1319 V_SgOmpCollapseClause = 373,
1320 V_SgOmpIfClause = 380,
1321 V_SgOmpFinalClause = 381,
1322 V_SgOmpPriorityClause = 382,
1323 V_SgUpirNumUnitsField = 407,
1324 V_SgOmpNumTeamsClause = 408,
1325 V_SgOmpGrainsizeClause = 409,
1326 V_SgOmpDetachClause = 410,
1327 V_SgOmpNumTasksClause = 411,
1328 V_SgOmpHintClause = 413,
1329 V_SgOmpThreadLimitClause = 423,
1330 V_SgOmpNontemporalClause = 417,
1331 V_SgOmpInclusiveClause = 418,
1332 V_SgOmpExclusiveClause = 419,
1333 V_SgOmpIsDevicePtrClause = 420,
1334 V_SgOmpUseDevicePtrClause = 421,
1335 V_SgOmpUseDeviceAddrClause = 422,
1336 V_SgOmpDeviceClause = 383,
1337 V_SgOmpSafelenClause = 436,
1338 V_SgOmpSimdlenClause = 437,
1339 V_SgOmpPartialClause = 449,
1340 V_SgOmpFullClause = 448,
1341 V_SgOmpSizesClause = 450,
1342 V_SgUpirBranchField = 451,
1343 V_SgUpirNestedLevelField = 452,
1344 V_SgUpirNestedParentField = 453,
1345 V_SgUpirNestedChildField = 454,
1346 V_SgUpirSyncField = 455,
1347 V_SgUpirDataField = 456,
1348 V_SgUpirTargetField = 458,
1349 V_SgUpirDataItemField = 457,
1350 V_SgOmpExpressionClause = 378,
1351 V_SgOmpCopyprivateClause = 375,
1352 V_SgOmpPrivateClause = 425,
1353 V_SgOmpFirstprivateClause = 379,
1354 V_SgOmpSharedClause = 431,
1355 V_SgOmpCopyinClause = 374,
1356 V_SgOmpLastprivateClause = 384,
1357 V_SgOmpReductionClause = 426,
1358 V_SgOmpInReductionClause = 427,
1359 V_SgOmpTaskReductionClause = 428,
1360 V_SgOmpAllocateClause = 364,
1361 V_SgOmpDependClause = 445,
1362 V_SgOmpToClause = 368,
1363 V_SgOmpUsesAllocatorsClause = 366,
1364 V_SgOmpFromClause = 369,
1365 V_SgOmpAffinityClause = 446,
1366 V_SgOmpMapClause = 435,
1367 V_SgOmpLinearClause = 438,
1368 V_SgOmpUniformClause = 439,
1369 V_SgOmpAlignedClause = 440,
1370 V_SgOmpVariablesClause = 434,
1371 V_SgOmpScheduleClause = 430,
1372 V_SgOmpWhenClause = 447,
1373 V_SgOmpDistScheduleClause = 415,
1374 V_SgOmpDefaultmapClause = 429,
1375 V_SgOmpAllocatorClause = 365,
1376 V_SgOmpUsesAllocatorsDefination = 367,
1377 V_SgOmpClause = 363,
1378 V_SgRenamePair = 490,
1379 V_SgInterfaceBody = 208,
1380 V_SgHeaderFileBody = 209,
1381 V_SgLocatedNodeSupport = 236,
1382 V_SgToken = 578,
1383 V_SgLocatedNode = 235,
1384 V_SgNode = 275, V_SgNumVariants = 688};
1385 
1386 typedef struct
1387  {
1388  VariantT variant;
1389  std::string name;
1390  } TerminalNamesType;
1391 
1392 extern TerminalNamesType Cxx_GrammarTerminalNames[689];
1393 
1394 
1395 
1396 
1397 
1399 
1400 class SgName;
1401 class SgSymbolTable;
1402 class SgPragma;
1403 class SgModifierNodes;
1405 class SgStorageModifier;
1406 class SgAccessModifier;
1407 class SgFunctionModifier;
1408 class SgUPC_AccessModifier;
1409 class SgLinkageModifier;
1411 class SgTypeModifier;
1413 class SgBaseClassModifier;
1414 class SgDeclarationModifier;
1415 class SgStructureModifier;
1417 class SgModifier;
1418 class Sg_File_Info;
1419 class SgSourceFile;
1420 class SgUnknownFile;
1421 class SgFile;
1422 class SgFileList;
1423 class SgDirectory;
1424 class SgDirectoryList;
1425 class SgProject;
1426 class SgOptions;
1427 class SgUnparse_Info;
1428 class SgIncludeFile;
1429 class SgFuncDecl_attr;
1430 class SgClassDecl_attr;
1431 class SgTypedefSeq;
1433 class SgTemplateParameter;
1434 class SgTemplateArgument;
1437 class SgBitAttribute;
1438 class SgAttribute;
1439 class SgExpBaseClass;
1440 class SgNonrealBaseClass;
1441 class SgBaseClass;
1442 class SgUndirectedGraphEdge;
1443 class SgDirectedGraphEdge;
1444 class SgGraphNode;
1445 class SgGraphEdge;
1448 class SgBidirectionalGraph;
1451 class SgGraph;
1452 class SgGraphNodeList;
1453 class SgGraphEdgeList;
1454 class SgQualifiedName;
1455 class SgNameGroup;
1456 class SgDimensionObject;
1457 class SgDataStatementGroup;
1458 class SgDataStatementObject;
1459 class SgDataStatementValue;
1460 class SgFormatItem;
1461 class SgFormatItemList;
1462 class SgTypeTable;
1463 class SgHeaderFileReport;
1464 class SgSupport;
1465 class SgTypeUnknown;
1466 class SgTypeChar;
1467 class SgTypeSignedChar;
1468 class SgTypeUnsignedChar;
1469 class SgTypeShort;
1470 class SgTypeSignedShort;
1471 class SgTypeUnsignedShort;
1472 class SgTypeInt;
1473 class SgTypeSignedInt;
1474 class SgTypeUnsignedInt;
1475 class SgTypeLong;
1476 class SgTypeSignedLong;
1477 class SgTypeUnsignedLong;
1478 class SgTypeVoid;
1479 class SgTypeGlobalVoid;
1480 class SgTypeWchar;
1481 class SgTypeFloat;
1482 class SgTypeDouble;
1483 class SgTypeLongLong;
1484 class SgTypeSignedLongLong;
1486 class SgTypeLongDouble;
1487 class SgTypeFloat80;
1488 class SgTypeFloat128;
1489 class SgTypeString;
1490 class SgTypeBool;
1491 class SgTypeFixed;
1492 class SgTypeMatrix;
1493 class SgTypeTuple;
1494 class SgTypeNullptr;
1495 class SgTypeComplex;
1496 class SgTypeImaginary;
1497 class SgTypeDefault;
1498 class SgPointerMemberType;
1499 class SgReferenceType;
1500 class SgRvalueReferenceType;
1501 class SgDeclType;
1502 class SgTypeOfType;
1503 class SgTypeCAFTeam;
1506 class SgTypeLabel;
1507 class SgTemplateType;
1508 class SgEnumType;
1509 class SgTypedefType;
1510 class SgNonrealType;
1511 class SgAutoType;
1512 class SgModifierType;
1514 class SgArrayType;
1515 class SgTypeEllipse;
1516 class SgTypeCrayPointer;
1517 class SgPartialFunctionType;
1518 class SgMemberFunctionType;
1519 class SgFunctionType;
1520 class SgPointerType;
1521 class SgClassType;
1522 class SgNamedType;
1523 class SgQualifiedNameType;
1524 class SgTypeChar16;
1525 class SgTypeChar32;
1526 class SgType;
1527 class SgForStatement;
1528 class SgForInitStatement;
1530 class SgCatchStatementSeq;
1532 class SgCtorInitializerList;
1533 class SgBasicBlock;
1534 class SgGlobal;
1535 class SgIfStmt;
1536 class SgWhileStmt;
1537 class SgDoWhileStmt;
1538 class SgSwitchStatement;
1539 class SgCatchOptionStmt;
1541 class SgDeclarationScope;
1542 class SgVariableDefinition;
1544 class SgEnumDeclaration;
1545 class SgAsmStmt;
1546 class SgFunctionTypeTable;
1547 class SgExprStatement;
1548 class SgLabelStatement;
1549 class SgCaseOptionStmt;
1550 class SgTryStmt;
1551 class SgDefaultOptionStmt;
1552 class SgBreakStmt;
1553 class SgContinueStmt;
1554 class SgReturnStmt;
1555 class SgGotoStatement;
1556 class SgSpawnStmt;
1559 class SgTypedefDeclaration;
1560 class SgNullStatement;
1561 class SgVariantStatement;
1562 class SgPragmaDeclaration;
1567 class SgTemplateDeclaration;
1568 class SgVariableDeclaration;
1573 class SgNonrealDecl;
1574 class SgWithStatement;
1575 class SgPassStatement;
1576 class SgAssertStmt;
1577 class SgExecStatement;
1580 class SgEntryStatement;
1581 class SgFortranNonblockedDo;
1582 class SgInterfaceStatement;
1583 class SgParameterStatement;
1584 class SgCommonBlock;
1585 class SgModuleStatement;
1586 class SgUseStatement;
1588 class SgPrintStatement;
1589 class SgReadStatement;
1590 class SgWriteStatement;
1591 class SgOpenStatement;
1592 class SgCloseStatement;
1593 class SgInquireStatement;
1594 class SgFlushStatement;
1595 class SgBackspaceStatement;
1596 class SgRewindStatement;
1597 class SgEndfileStatement;
1598 class SgWaitStatement;
1600 class SgFormatStatement;
1601 class SgFortranDo;
1602 class SgForAllStatement;
1603 class SgIOStatement;
1604 class SgSyncAllStatement;
1605 class SgSyncImagesStatement;
1606 class SgSyncMemoryStatement;
1607 class SgSyncTeamStatement;
1608 class SgLockStatement;
1609 class SgUnlockStatement;
1611 class SgUpcNotifyStatement;
1612 class SgUpcWaitStatement;
1613 class SgUpcBarrierStatement;
1614 class SgUpcFenceStatement;
1615 class SgUpcForAllStatement;
1616 class SgUpirSpmdStatement;
1617 class SgOmpLoopStatement;
1618 class SgOmpScanStatement;
1621 class SgOmpDepobjStatement;
1622 class SgOmpTeamsStatement;
1625 class SgOmpCancelStatement;
1628 class SgOmpSingleStatement;
1629 class SgOmpTaskStatement;
1633 class SgOmpForSimdStatement;
1634 class SgOmpDoStatement;
1636 class SgOmpAtomicStatement;
1637 class SgUpirTaskStatement;
1666 class SgOmpUnrollStatement;
1667 class SgOmpTileStatement;
1668 class SgUpirSimdStatement;
1670 class SgOmpOrderedStatement;
1671 class SgUpirLoopStatement;
1673 class SgUpirSyncStatement;
1675 class SgOmpMasterStatement;
1676 class SgOmpSectionStatement;
1678 class SgOmpFlushStatement;
1681 class SgUpirBodyStatement;
1682 class SgUpirFieldStatement;
1683 class SgBlockDataStatement;
1684 class SgImplicitStatement;
1686 class SgWhereStatement;
1687 class SgNullifyStatement;
1691 class SgAllocateStatement;
1692 class SgDeallocateStatement;
1693 class SgContainsStatement;
1694 class SgSequenceStatement;
1695 class SgElseWhereStatement;
1697 class SgAssignStatement;
1700 class SgNamelistStatement;
1701 class SgImportStatement;
1702 class SgAssociateStatement;
1703 class SgFortranIncludeLine;
1713 class SgClassDeclaration;
1714 class SgClassDefinition;
1715 class SgFunctionDefinition;
1716 class SgScopeStatement;
1718 class SgFunctionDeclaration;
1741 class SgOmpBarrierStatement;
1747 class SgEmptyDeclaration;
1749 class SgUpirBaseStatement;
1750 class SgStatement;
1751 class SgVarRefExp;
1752 class SgNonrealRefExp;
1753 class SgCompoundLiteralExp;
1754 class SgLabelRefExp;
1755 class SgClassNameRefExp;
1756 class SgFunctionRefExp;
1760 class SgSizeOfOp;
1761 class SgAlignOfOp;
1762 class SgNoexceptOp;
1763 class SgTypeExpression;
1764 class SgLambdaExp;
1768 class SgVarArgStartOp;
1770 class SgVarArgOp;
1771 class SgVarArgEndOp;
1772 class SgVarArgCopyOp;
1773 class SgTypeIdOp;
1774 class SgConditionalExp;
1775 class SgNewExp;
1776 class SgDeleteExp;
1777 class SgThisExp;
1778 class SgSuperExp;
1779 class SgClassExp;
1780 class SgRefExp;
1782 class SgCompoundInitializer;
1784 class SgAssignInitializer;
1785 class SgBracedInitializer;
1786 class SgExpressionRoot;
1787 class SgMinusOp;
1788 class SgUnaryAddOp;
1789 class SgNotOp;
1790 class SgPointerDerefExp;
1791 class SgAddressOfOp;
1792 class SgMinusMinusOp;
1793 class SgPlusPlusOp;
1794 class SgBitComplementOp;
1795 class SgRealPartOp;
1796 class SgImagPartOp;
1797 class SgConjugateOp;
1798 class SgCastExp;
1799 class SgThrowOp;
1800 class SgArrowExp;
1801 class SgDotExp;
1802 class SgDotStarOp;
1803 class SgArrowStarOp;
1804 class SgEqualityOp;
1805 class SgLessThanOp;
1806 class SgGreaterThanOp;
1807 class SgNotEqualOp;
1808 class SgLessOrEqualOp;
1809 class SgGreaterOrEqualOp;
1810 class SgAddOp;
1811 class SgSubtractOp;
1812 class SgMultiplyOp;
1813 class SgDivideOp;
1814 class SgIntegerDivideOp;
1815 class SgModOp;
1816 class SgAndOp;
1817 class SgOrOp;
1818 class SgBitXorOp;
1819 class SgBitAndOp;
1820 class SgBitOrOp;
1821 class SgBitEqvOp;
1822 class SgCommaOpExp;
1823 class SgLshiftOp;
1824 class SgRshiftOp;
1825 class SgPntrArrRefExp;
1826 class SgScopeOp;
1827 class SgAssignOp;
1828 class SgPlusAssignOp;
1829 class SgMinusAssignOp;
1830 class SgAndAssignOp;
1831 class SgIorAssignOp;
1832 class SgMultAssignOp;
1833 class SgDivAssignOp;
1834 class SgModAssignOp;
1835 class SgXorAssignOp;
1836 class SgLshiftAssignOp;
1837 class SgRshiftAssignOp;
1840 class SgConcatenationOp;
1841 class SgNaryComparisonOp;
1842 class SgNaryBooleanOp;
1843 class SgBoolValExp;
1844 class SgStringVal;
1845 class SgShortVal;
1846 class SgCharVal;
1847 class SgUnsignedCharVal;
1848 class SgWcharVal;
1849 class SgChar16Val;
1850 class SgChar32Val;
1851 class SgUnsignedShortVal;
1852 class SgIntVal;
1853 class SgEnumVal;
1854 class SgUnsignedIntVal;
1855 class SgLongIntVal;
1856 class SgLongLongIntVal;
1858 class SgUnsignedLongVal;
1859 class SgFloatVal;
1860 class SgDoubleVal;
1861 class SgLongDoubleVal;
1862 class SgFloat80Val;
1863 class SgFloat128Val;
1864 class SgNullptrValExp;
1865 class SgVoidVal;
1868 class SgUpcThreads;
1869 class SgUpcMythread;
1870 class SgComplexVal;
1871 class SgNullExpression;
1872 class SgVariantExpression;
1873 class SgStatementExpression;
1874 class SgAsmOp;
1876 class SgCudaKernelCallExp;
1877 class SgLambdaRefExp;
1878 class SgTupleExp;
1879 class SgListExp;
1880 class SgDictionaryExp;
1881 class SgKeyDatumPair;
1882 class SgComprehension;
1883 class SgListComprehension;
1884 class SgSetComprehension;
1886 class SgMembershipOp;
1887 class SgNonMembershipOp;
1888 class SgIsOp;
1889 class SgIsNotOp;
1890 class SgStringConversion;
1891 class SgYieldExpression;
1892 class SgFoldExpression;
1893 class SgChooseExpression;
1894 class SgAwaitExpression;
1895 class SgSpaceshipOp;
1896 class SgSubscriptExpression;
1897 class SgColonShapeExp;
1898 class SgAsteriskShapeExp;
1899 class SgIOItemExpression;
1900 class SgImpliedDo;
1901 class SgExponentiationOp;
1904 class SgUserDefinedBinaryOp;
1905 class SgPointerAssignOp;
1906 class SgCAFCoExpression;
1908 class SgMatrixExp;
1909 class SgRangeExp;
1910 class SgMagicColonExp;
1912 class SgPowerOp;
1913 class SgElementwisePowerOp;
1914 class SgElementwiseDivideOp;
1915 class SgLeftDivideOp;
1917 class SgElementwiseAddOp;
1919 class SgMatrixTransposeOp;
1920 class SgElementwiseOp;
1921 class SgInitializer;
1922 class SgSIMDLoad;
1923 class SgSIMDBroadcast;
1924 class SgSIMDStore;
1925 class SgSIMDPartialStore;
1926 class SgSIMDScalarStore;
1927 class SgSIMDGather;
1928 class SgSIMDExplicitGather;
1929 class SgSIMDScatter;
1930 class SgSIMDAddOp;
1931 class SgSIMDSubOp;
1932 class SgSIMDMulOp;
1933 class SgSIMDDivOp;
1934 class SgSIMDFmaOp;
1935 class SgSIMDBinaryOp;
1936 class SgUserDefinedUnaryOp;
1938 class SgUnaryOp;
1939 class SgCompoundAssignOp;
1940 class SgBinaryOp;
1941 class SgNaryOp;
1942 class SgValueExp;
1943 class SgExprListExp;
1944 class SgFunctionCallExp;
1945 class SgCallExpression;
1947 class SgExpression;
1949 class SgVariableSymbol;
1950 class SgFunctionTypeSymbol;
1951 class SgTemplateClassSymbol;
1952 class SgClassSymbol;
1953 class SgTemplateSymbol;
1954 class SgEnumSymbol;
1955 class SgEnumFieldSymbol;
1957 class SgTypedefSymbol;
1960 class SgLabelSymbol;
1961 class SgDefaultSymbol;
1962 class SgNamespaceSymbol;
1963 class SgIntrinsicSymbol;
1964 class SgModuleSymbol;
1965 class SgInterfaceSymbol;
1966 class SgCommonSymbol;
1967 class SgRenameSymbol;
1969 class SgFunctionSymbol;
1970 class SgAliasSymbol;
1971 class SgNonrealSymbol;
1972 class SgSymbol;
1973 class SgCommonBlockObject;
1974 class SgInitializedName;
1975 class SgLambdaCapture;
1976 class SgLambdaCaptureList;
1977 class SgOmpOrderedClause;
1978 class SgOmpNowaitClause;
1979 class SgOmpNogroupClause;
1980 class SgOmpReadClause;
1981 class SgOmpThreadsClause;
1982 class SgOmpSimdClause;
1989 class SgOmpWriteClause;
1990 class SgOmpUpdateClause;
1992 class SgOmpDestroyClause;
1993 class SgOmpCaptureClause;
1994 class SgOmpSeqCstClause;
1995 class SgOmpAcqRelClause;
1996 class SgOmpReleaseClause;
1997 class SgOmpAcquireClause;
1998 class SgOmpRelaxedClause;
1999 class SgOmpParallelClause;
2000 class SgOmpSectionsClause;
2001 class SgOmpForClause;
2002 class SgOmpTaskgroupClause;
2003 class SgOmpBeginClause;
2004 class SgOmpEndClause;
2005 class SgOmpUntiedClause;
2006 class SgOmpMergeableClause;
2007 class SgOmpDefaultClause;
2008 class SgOmpAtomicClause;
2009 class SgOmpProcBindClause;
2010 class SgOmpOrderClause;
2011 class SgOmpBindClause;
2012 class SgOmpInbranchClause;
2014 class SgOmpCollapseClause;
2015 class SgOmpIfClause;
2016 class SgOmpFinalClause;
2017 class SgOmpPriorityClause;
2018 class SgUpirNumUnitsField;
2019 class SgOmpNumTeamsClause;
2020 class SgOmpGrainsizeClause;
2021 class SgOmpDetachClause;
2022 class SgOmpNumTasksClause;
2023 class SgOmpHintClause;
2026 class SgOmpInclusiveClause;
2027 class SgOmpExclusiveClause;
2031 class SgOmpDeviceClause;
2032 class SgOmpSafelenClause;
2033 class SgOmpSimdlenClause;
2034 class SgOmpPartialClause;
2035 class SgOmpFullClause;
2036 class SgOmpSizesClause;
2037 class SgUpirBranchField;
2041 class SgUpirSyncField;
2042 class SgUpirDataField;
2043 class SgUpirTargetField;
2044 class SgUpirDataItemField;
2045 class SgOmpExpressionClause;
2047 class SgOmpPrivateClause;
2049 class SgOmpSharedClause;
2050 class SgOmpCopyinClause;
2052 class SgOmpReductionClause;
2055 class SgOmpAllocateClause;
2056 class SgOmpDependClause;
2057 class SgOmpToClause;
2059 class SgOmpFromClause;
2060 class SgOmpAffinityClause;
2061 class SgOmpMapClause;
2062 class SgOmpLinearClause;
2063 class SgOmpUniformClause;
2064 class SgOmpAlignedClause;
2065 class SgOmpVariablesClause;
2066 class SgOmpScheduleClause;
2067 class SgOmpWhenClause;
2069 class SgOmpDefaultmapClause;
2070 class SgOmpAllocatorClause;
2072 class SgOmpClause;
2073 class SgRenamePair;
2074 class SgInterfaceBody;
2075 class SgHeaderFileBody;
2076 class SgLocatedNodeSupport;
2077 class SgToken;
2078 class SgLocatedNode;
2079 class SgNode;
2080 
2081 
2082 // Forward declaration of "<classname> is<classname> (SgNode* n)" friend functions.
2083 
2084 // GNU g++ 4.1.0 requires these be declared outside of the class (because the friend declaration in the class is not enough).
2085 
2086 
2087 
2088 
2089 #include "rosedll.h"
2090 
2091 
2092 extern const uint8_t rose_ClassHierarchyCastTable[687][86] ;
2093 
2094 ROSE_DLL_API SgName* isSgName(SgNode* node);
2095 ROSE_DLL_API const SgName* isSgName(const SgNode* node);
2096 #define IS_SgName_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgName::static_variant >> 3] & (1 << (SgName::static_variant & 7)))) ? ((SgName*) (node)) : NULL) : NULL)
2097 ROSE_DLL_API SgSymbolTable* isSgSymbolTable(SgNode* node);
2098 ROSE_DLL_API const SgSymbolTable* isSgSymbolTable(const SgNode* node);
2099 #define IS_SgSymbolTable_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgSymbolTable::static_variant >> 3] & (1 << (SgSymbolTable::static_variant & 7)))) ? ((SgSymbolTable*) (node)) : NULL) : NULL)
2100 ROSE_DLL_API SgPragma* isSgPragma(SgNode* node);
2101 ROSE_DLL_API const SgPragma* isSgPragma(const SgNode* node);
2102 #define IS_SgPragma_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgPragma::static_variant >> 3] & (1 << (SgPragma::static_variant & 7)))) ? ((SgPragma*) (node)) : NULL) : NULL)
2103 ROSE_DLL_API SgModifierNodes* isSgModifierNodes(SgNode* node);
2104 ROSE_DLL_API const SgModifierNodes* isSgModifierNodes(const SgNode* node);
2105 #define IS_SgModifierNodes_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgModifierNodes::static_variant >> 3] & (1 << (SgModifierNodes::static_variant & 7)))) ? ((SgModifierNodes*) (node)) : NULL) : NULL)
2106 ROSE_DLL_API SgConstVolatileModifier* isSgConstVolatileModifier(SgNode* node);
2107 ROSE_DLL_API const SgConstVolatileModifier* isSgConstVolatileModifier(const SgNode* node);
2108 #define IS_SgConstVolatileModifier_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgConstVolatileModifier::static_variant >> 3] & (1 << (SgConstVolatileModifier::static_variant & 7)))) ? ((SgConstVolatileModifier*) (node)) : NULL) : NULL)
2109 ROSE_DLL_API SgStorageModifier* isSgStorageModifier(SgNode* node);
2110 ROSE_DLL_API const SgStorageModifier* isSgStorageModifier(const SgNode* node);
2111 #define IS_SgStorageModifier_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgStorageModifier::static_variant >> 3] & (1 << (SgStorageModifier::static_variant & 7)))) ? ((SgStorageModifier*) (node)) : NULL) : NULL)
2112 ROSE_DLL_API SgAccessModifier* isSgAccessModifier(SgNode* node);
2113 ROSE_DLL_API const SgAccessModifier* isSgAccessModifier(const SgNode* node);
2114 #define IS_SgAccessModifier_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgAccessModifier::static_variant >> 3] & (1 << (SgAccessModifier::static_variant & 7)))) ? ((SgAccessModifier*) (node)) : NULL) : NULL)
2115 ROSE_DLL_API SgFunctionModifier* isSgFunctionModifier(SgNode* node);
2116 ROSE_DLL_API const SgFunctionModifier* isSgFunctionModifier(const SgNode* node);
2117 #define IS_SgFunctionModifier_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgFunctionModifier::static_variant >> 3] & (1 << (SgFunctionModifier::static_variant & 7)))) ? ((SgFunctionModifier*) (node)) : NULL) : NULL)
2118 ROSE_DLL_API SgUPC_AccessModifier* isSgUPC_AccessModifier(SgNode* node);
2119 ROSE_DLL_API const SgUPC_AccessModifier* isSgUPC_AccessModifier(const SgNode* node);
2120 #define IS_SgUPC_AccessModifier_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgUPC_AccessModifier::static_variant >> 3] & (1 << (SgUPC_AccessModifier::static_variant & 7)))) ? ((SgUPC_AccessModifier*) (node)) : NULL) : NULL)
2121 ROSE_DLL_API SgLinkageModifier* isSgLinkageModifier(SgNode* node);
2122 ROSE_DLL_API const SgLinkageModifier* isSgLinkageModifier(const SgNode* node);
2123 #define IS_SgLinkageModifier_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgLinkageModifier::static_variant >> 3] & (1 << (SgLinkageModifier::static_variant & 7)))) ? ((SgLinkageModifier*) (node)) : NULL) : NULL)
2124 ROSE_DLL_API SgSpecialFunctionModifier* isSgSpecialFunctionModifier(SgNode* node);
2125 ROSE_DLL_API const SgSpecialFunctionModifier* isSgSpecialFunctionModifier(const SgNode* node);
2126 #define IS_SgSpecialFunctionModifier_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgSpecialFunctionModifier::static_variant >> 3] & (1 << (SgSpecialFunctionModifier::static_variant & 7)))) ? ((SgSpecialFunctionModifier*) (node)) : NULL) : NULL)
2127 ROSE_DLL_API SgTypeModifier* isSgTypeModifier(SgNode* node);
2128 ROSE_DLL_API const SgTypeModifier* isSgTypeModifier(const SgNode* node);
2129 #define IS_SgTypeModifier_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTypeModifier::static_variant >> 3] & (1 << (SgTypeModifier::static_variant & 7)))) ? ((SgTypeModifier*) (node)) : NULL) : NULL)
2130 ROSE_DLL_API SgElaboratedTypeModifier* isSgElaboratedTypeModifier(SgNode* node);
2131 ROSE_DLL_API const SgElaboratedTypeModifier* isSgElaboratedTypeModifier(const SgNode* node);
2132 #define IS_SgElaboratedTypeModifier_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgElaboratedTypeModifier::static_variant >> 3] & (1 << (SgElaboratedTypeModifier::static_variant & 7)))) ? ((SgElaboratedTypeModifier*) (node)) : NULL) : NULL)
2133 ROSE_DLL_API SgBaseClassModifier* isSgBaseClassModifier(SgNode* node);
2134 ROSE_DLL_API const SgBaseClassModifier* isSgBaseClassModifier(const SgNode* node);
2135 #define IS_SgBaseClassModifier_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgBaseClassModifier::static_variant >> 3] & (1 << (SgBaseClassModifier::static_variant & 7)))) ? ((SgBaseClassModifier*) (node)) : NULL) : NULL)
2136 ROSE_DLL_API SgDeclarationModifier* isSgDeclarationModifier(SgNode* node);
2137 ROSE_DLL_API const SgDeclarationModifier* isSgDeclarationModifier(const SgNode* node);
2138 #define IS_SgDeclarationModifier_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgDeclarationModifier::static_variant >> 3] & (1 << (SgDeclarationModifier::static_variant & 7)))) ? ((SgDeclarationModifier*) (node)) : NULL) : NULL)
2139 ROSE_DLL_API SgStructureModifier* isSgStructureModifier(SgNode* node);
2140 ROSE_DLL_API const SgStructureModifier* isSgStructureModifier(const SgNode* node);
2141 #define IS_SgStructureModifier_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgStructureModifier::static_variant >> 3] & (1 << (SgStructureModifier::static_variant & 7)))) ? ((SgStructureModifier*) (node)) : NULL) : NULL)
2142 ROSE_DLL_API SgOpenclAccessModeModifier* isSgOpenclAccessModeModifier(SgNode* node);
2143 ROSE_DLL_API const SgOpenclAccessModeModifier* isSgOpenclAccessModeModifier(const SgNode* node);
2144 #define IS_SgOpenclAccessModeModifier_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOpenclAccessModeModifier::static_variant >> 3] & (1 << (SgOpenclAccessModeModifier::static_variant & 7)))) ? ((SgOpenclAccessModeModifier*) (node)) : NULL) : NULL)
2145 ROSE_DLL_API SgModifier* isSgModifier(SgNode* node);
2146 ROSE_DLL_API const SgModifier* isSgModifier(const SgNode* node);
2147 #define IS_SgModifier_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgModifier::static_variant >> 3] & (1 << (SgModifier::static_variant & 7)))) ? ((SgModifier*) (node)) : NULL) : NULL)
2148 ROSE_DLL_API Sg_File_Info* isSg_File_Info(SgNode* node);
2149 ROSE_DLL_API const Sg_File_Info* isSg_File_Info(const SgNode* node);
2150 #define IS_Sg_File_Info_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][Sg_File_Info::static_variant >> 3] & (1 << (Sg_File_Info::static_variant & 7)))) ? ((Sg_File_Info*) (node)) : NULL) : NULL)
2151 ROSE_DLL_API SgSourceFile* isSgSourceFile(SgNode* node);
2152 ROSE_DLL_API const SgSourceFile* isSgSourceFile(const SgNode* node);
2153 #define IS_SgSourceFile_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgSourceFile::static_variant >> 3] & (1 << (SgSourceFile::static_variant & 7)))) ? ((SgSourceFile*) (node)) : NULL) : NULL)
2154 ROSE_DLL_API SgUnknownFile* isSgUnknownFile(SgNode* node);
2155 ROSE_DLL_API const SgUnknownFile* isSgUnknownFile(const SgNode* node);
2156 #define IS_SgUnknownFile_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgUnknownFile::static_variant >> 3] & (1 << (SgUnknownFile::static_variant & 7)))) ? ((SgUnknownFile*) (node)) : NULL) : NULL)
2157 ROSE_DLL_API SgFile* isSgFile(SgNode* node);
2158 ROSE_DLL_API const SgFile* isSgFile(const SgNode* node);
2159 #define IS_SgFile_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgFile::static_variant >> 3] & (1 << (SgFile::static_variant & 7)))) ? ((SgFile*) (node)) : NULL) : NULL)
2160 ROSE_DLL_API SgFileList* isSgFileList(SgNode* node);
2161 ROSE_DLL_API const SgFileList* isSgFileList(const SgNode* node);
2162 #define IS_SgFileList_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgFileList::static_variant >> 3] & (1 << (SgFileList::static_variant & 7)))) ? ((SgFileList*) (node)) : NULL) : NULL)
2163 ROSE_DLL_API SgDirectory* isSgDirectory(SgNode* node);
2164 ROSE_DLL_API const SgDirectory* isSgDirectory(const SgNode* node);
2165 #define IS_SgDirectory_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgDirectory::static_variant >> 3] & (1 << (SgDirectory::static_variant & 7)))) ? ((SgDirectory*) (node)) : NULL) : NULL)
2166 ROSE_DLL_API SgDirectoryList* isSgDirectoryList(SgNode* node);
2167 ROSE_DLL_API const SgDirectoryList* isSgDirectoryList(const SgNode* node);
2168 #define IS_SgDirectoryList_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgDirectoryList::static_variant >> 3] & (1 << (SgDirectoryList::static_variant & 7)))) ? ((SgDirectoryList*) (node)) : NULL) : NULL)
2169 ROSE_DLL_API SgProject* isSgProject(SgNode* node);
2170 ROSE_DLL_API const SgProject* isSgProject(const SgNode* node);
2171 #define IS_SgProject_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgProject::static_variant >> 3] & (1 << (SgProject::static_variant & 7)))) ? ((SgProject*) (node)) : NULL) : NULL)
2172 ROSE_DLL_API SgOptions* isSgOptions(SgNode* node);
2173 ROSE_DLL_API const SgOptions* isSgOptions(const SgNode* node);
2174 #define IS_SgOptions_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOptions::static_variant >> 3] & (1 << (SgOptions::static_variant & 7)))) ? ((SgOptions*) (node)) : NULL) : NULL)
2175 ROSE_DLL_API SgUnparse_Info* isSgUnparse_Info(SgNode* node);
2176 ROSE_DLL_API const SgUnparse_Info* isSgUnparse_Info(const SgNode* node);
2177 #define IS_SgUnparse_Info_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgUnparse_Info::static_variant >> 3] & (1 << (SgUnparse_Info::static_variant & 7)))) ? ((SgUnparse_Info*) (node)) : NULL) : NULL)
2178 ROSE_DLL_API SgIncludeFile* isSgIncludeFile(SgNode* node);
2179 ROSE_DLL_API const SgIncludeFile* isSgIncludeFile(const SgNode* node);
2180 #define IS_SgIncludeFile_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgIncludeFile::static_variant >> 3] & (1 << (SgIncludeFile::static_variant & 7)))) ? ((SgIncludeFile*) (node)) : NULL) : NULL)
2181 ROSE_DLL_API SgFuncDecl_attr* isSgFuncDecl_attr(SgNode* node);
2182 ROSE_DLL_API const SgFuncDecl_attr* isSgFuncDecl_attr(const SgNode* node);
2183 #define IS_SgFuncDecl_attr_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgFuncDecl_attr::static_variant >> 3] & (1 << (SgFuncDecl_attr::static_variant & 7)))) ? ((SgFuncDecl_attr*) (node)) : NULL) : NULL)
2184 ROSE_DLL_API SgClassDecl_attr* isSgClassDecl_attr(SgNode* node);
2185 ROSE_DLL_API const SgClassDecl_attr* isSgClassDecl_attr(const SgNode* node);
2186 #define IS_SgClassDecl_attr_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgClassDecl_attr::static_variant >> 3] & (1 << (SgClassDecl_attr::static_variant & 7)))) ? ((SgClassDecl_attr*) (node)) : NULL) : NULL)
2187 ROSE_DLL_API SgTypedefSeq* isSgTypedefSeq(SgNode* node);
2188 ROSE_DLL_API const SgTypedefSeq* isSgTypedefSeq(const SgNode* node);
2189 #define IS_SgTypedefSeq_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTypedefSeq::static_variant >> 3] & (1 << (SgTypedefSeq::static_variant & 7)))) ? ((SgTypedefSeq*) (node)) : NULL) : NULL)
2190 ROSE_DLL_API SgFunctionParameterTypeList* isSgFunctionParameterTypeList(SgNode* node);
2191 ROSE_DLL_API const SgFunctionParameterTypeList* isSgFunctionParameterTypeList(const SgNode* node);
2192 #define IS_SgFunctionParameterTypeList_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgFunctionParameterTypeList::static_variant >> 3] & (1 << (SgFunctionParameterTypeList::static_variant & 7)))) ? ((SgFunctionParameterTypeList*) (node)) : NULL) : NULL)
2193 ROSE_DLL_API SgTemplateParameter* isSgTemplateParameter(SgNode* node);
2194 ROSE_DLL_API const SgTemplateParameter* isSgTemplateParameter(const SgNode* node);
2195 #define IS_SgTemplateParameter_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTemplateParameter::static_variant >> 3] & (1 << (SgTemplateParameter::static_variant & 7)))) ? ((SgTemplateParameter*) (node)) : NULL) : NULL)
2196 ROSE_DLL_API SgTemplateArgument* isSgTemplateArgument(SgNode* node);
2197 ROSE_DLL_API const SgTemplateArgument* isSgTemplateArgument(const SgNode* node);
2198 #define IS_SgTemplateArgument_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTemplateArgument::static_variant >> 3] & (1 << (SgTemplateArgument::static_variant & 7)))) ? ((SgTemplateArgument*) (node)) : NULL) : NULL)
2199 ROSE_DLL_API SgTemplateParameterList* isSgTemplateParameterList(SgNode* node);
2200 ROSE_DLL_API const SgTemplateParameterList* isSgTemplateParameterList(const SgNode* node);
2201 #define IS_SgTemplateParameterList_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTemplateParameterList::static_variant >> 3] & (1 << (SgTemplateParameterList::static_variant & 7)))) ? ((SgTemplateParameterList*) (node)) : NULL) : NULL)
2202 ROSE_DLL_API SgTemplateArgumentList* isSgTemplateArgumentList(SgNode* node);
2203 ROSE_DLL_API const SgTemplateArgumentList* isSgTemplateArgumentList(const SgNode* node);
2204 #define IS_SgTemplateArgumentList_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTemplateArgumentList::static_variant >> 3] & (1 << (SgTemplateArgumentList::static_variant & 7)))) ? ((SgTemplateArgumentList*) (node)) : NULL) : NULL)
2205 ROSE_DLL_API SgBitAttribute* isSgBitAttribute(SgNode* node);
2206 ROSE_DLL_API const SgBitAttribute* isSgBitAttribute(const SgNode* node);
2207 #define IS_SgBitAttribute_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgBitAttribute::static_variant >> 3] & (1 << (SgBitAttribute::static_variant & 7)))) ? ((SgBitAttribute*) (node)) : NULL) : NULL)
2208 ROSE_DLL_API SgAttribute* isSgAttribute(SgNode* node);
2209 ROSE_DLL_API const SgAttribute* isSgAttribute(const SgNode* node);
2210 #define IS_SgAttribute_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgAttribute::static_variant >> 3] & (1 << (SgAttribute::static_variant & 7)))) ? ((SgAttribute*) (node)) : NULL) : NULL)
2211 ROSE_DLL_API SgExpBaseClass* isSgExpBaseClass(SgNode* node);
2212 ROSE_DLL_API const SgExpBaseClass* isSgExpBaseClass(const SgNode* node);
2213 #define IS_SgExpBaseClass_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgExpBaseClass::static_variant >> 3] & (1 << (SgExpBaseClass::static_variant & 7)))) ? ((SgExpBaseClass*) (node)) : NULL) : NULL)
2214 ROSE_DLL_API SgNonrealBaseClass* isSgNonrealBaseClass(SgNode* node);
2215 ROSE_DLL_API const SgNonrealBaseClass* isSgNonrealBaseClass(const SgNode* node);
2216 #define IS_SgNonrealBaseClass_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgNonrealBaseClass::static_variant >> 3] & (1 << (SgNonrealBaseClass::static_variant & 7)))) ? ((SgNonrealBaseClass*) (node)) : NULL) : NULL)
2217 ROSE_DLL_API SgBaseClass* isSgBaseClass(SgNode* node);
2218 ROSE_DLL_API const SgBaseClass* isSgBaseClass(const SgNode* node);
2219 #define IS_SgBaseClass_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgBaseClass::static_variant >> 3] & (1 << (SgBaseClass::static_variant & 7)))) ? ((SgBaseClass*) (node)) : NULL) : NULL)
2220 ROSE_DLL_API SgUndirectedGraphEdge* isSgUndirectedGraphEdge(SgNode* node);
2221 ROSE_DLL_API const SgUndirectedGraphEdge* isSgUndirectedGraphEdge(const SgNode* node);
2222 #define IS_SgUndirectedGraphEdge_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgUndirectedGraphEdge::static_variant >> 3] & (1 << (SgUndirectedGraphEdge::static_variant & 7)))) ? ((SgUndirectedGraphEdge*) (node)) : NULL) : NULL)
2223 ROSE_DLL_API SgDirectedGraphEdge* isSgDirectedGraphEdge(SgNode* node);
2224 ROSE_DLL_API const SgDirectedGraphEdge* isSgDirectedGraphEdge(const SgNode* node);
2225 #define IS_SgDirectedGraphEdge_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgDirectedGraphEdge::static_variant >> 3] & (1 << (SgDirectedGraphEdge::static_variant & 7)))) ? ((SgDirectedGraphEdge*) (node)) : NULL) : NULL)
2226 ROSE_DLL_API SgGraphNode* isSgGraphNode(SgNode* node);
2227 ROSE_DLL_API const SgGraphNode* isSgGraphNode(const SgNode* node);
2228 #define IS_SgGraphNode_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgGraphNode::static_variant >> 3] & (1 << (SgGraphNode::static_variant & 7)))) ? ((SgGraphNode*) (node)) : NULL) : NULL)
2229 ROSE_DLL_API SgGraphEdge* isSgGraphEdge(SgNode* node);
2230 ROSE_DLL_API const SgGraphEdge* isSgGraphEdge(const SgNode* node);
2231 #define IS_SgGraphEdge_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgGraphEdge::static_variant >> 3] & (1 << (SgGraphEdge::static_variant & 7)))) ? ((SgGraphEdge*) (node)) : NULL) : NULL)
2232 ROSE_DLL_API SgStringKeyedBidirectionalGraph* isSgStringKeyedBidirectionalGraph(SgNode* node);
2233 ROSE_DLL_API const SgStringKeyedBidirectionalGraph* isSgStringKeyedBidirectionalGraph(const SgNode* node);
2234 #define IS_SgStringKeyedBidirectionalGraph_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgStringKeyedBidirectionalGraph::static_variant >> 3] & (1 << (SgStringKeyedBidirectionalGraph::static_variant & 7)))) ? ((SgStringKeyedBidirectionalGraph*) (node)) : NULL) : NULL)
2235 ROSE_DLL_API SgIntKeyedBidirectionalGraph* isSgIntKeyedBidirectionalGraph(SgNode* node);
2236 ROSE_DLL_API const SgIntKeyedBidirectionalGraph* isSgIntKeyedBidirectionalGraph(const SgNode* node);
2237 #define IS_SgIntKeyedBidirectionalGraph_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgIntKeyedBidirectionalGraph::static_variant >> 3] & (1 << (SgIntKeyedBidirectionalGraph::static_variant & 7)))) ? ((SgIntKeyedBidirectionalGraph*) (node)) : NULL) : NULL)
2238 ROSE_DLL_API SgBidirectionalGraph* isSgBidirectionalGraph(SgNode* node);
2239 ROSE_DLL_API const SgBidirectionalGraph* isSgBidirectionalGraph(const SgNode* node);
2240 #define IS_SgBidirectionalGraph_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgBidirectionalGraph::static_variant >> 3] & (1 << (SgBidirectionalGraph::static_variant & 7)))) ? ((SgBidirectionalGraph*) (node)) : NULL) : NULL)
2241 ROSE_DLL_API SgIncidenceDirectedGraph* isSgIncidenceDirectedGraph(SgNode* node);
2242 ROSE_DLL_API const SgIncidenceDirectedGraph* isSgIncidenceDirectedGraph(const SgNode* node);
2243 #define IS_SgIncidenceDirectedGraph_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgIncidenceDirectedGraph::static_variant >> 3] & (1 << (SgIncidenceDirectedGraph::static_variant & 7)))) ? ((SgIncidenceDirectedGraph*) (node)) : NULL) : NULL)
2244 ROSE_DLL_API SgIncidenceUndirectedGraph* isSgIncidenceUndirectedGraph(SgNode* node);
2245 ROSE_DLL_API const SgIncidenceUndirectedGraph* isSgIncidenceUndirectedGraph(const SgNode* node);
2246 #define IS_SgIncidenceUndirectedGraph_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgIncidenceUndirectedGraph::static_variant >> 3] & (1 << (SgIncidenceUndirectedGraph::static_variant & 7)))) ? ((SgIncidenceUndirectedGraph*) (node)) : NULL) : NULL)
2247 ROSE_DLL_API SgGraph* isSgGraph(SgNode* node);
2248 ROSE_DLL_API const SgGraph* isSgGraph(const SgNode* node);
2249 #define IS_SgGraph_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgGraph::static_variant >> 3] & (1 << (SgGraph::static_variant & 7)))) ? ((SgGraph*) (node)) : NULL) : NULL)
2250 ROSE_DLL_API SgGraphNodeList* isSgGraphNodeList(SgNode* node);
2251 ROSE_DLL_API const SgGraphNodeList* isSgGraphNodeList(const SgNode* node);
2252 #define IS_SgGraphNodeList_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgGraphNodeList::static_variant >> 3] & (1 << (SgGraphNodeList::static_variant & 7)))) ? ((SgGraphNodeList*) (node)) : NULL) : NULL)
2253 ROSE_DLL_API SgGraphEdgeList* isSgGraphEdgeList(SgNode* node);
2254 ROSE_DLL_API const SgGraphEdgeList* isSgGraphEdgeList(const SgNode* node);
2255 #define IS_SgGraphEdgeList_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgGraphEdgeList::static_variant >> 3] & (1 << (SgGraphEdgeList::static_variant & 7)))) ? ((SgGraphEdgeList*) (node)) : NULL) : NULL)
2256 ROSE_DLL_API SgQualifiedName* isSgQualifiedName(SgNode* node);
2257 ROSE_DLL_API const SgQualifiedName* isSgQualifiedName(const SgNode* node);
2258 #define IS_SgQualifiedName_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgQualifiedName::static_variant >> 3] & (1 << (SgQualifiedName::static_variant & 7)))) ? ((SgQualifiedName*) (node)) : NULL) : NULL)
2259 ROSE_DLL_API SgNameGroup* isSgNameGroup(SgNode* node);
2260 ROSE_DLL_API const SgNameGroup* isSgNameGroup(const SgNode* node);
2261 #define IS_SgNameGroup_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgNameGroup::static_variant >> 3] & (1 << (SgNameGroup::static_variant & 7)))) ? ((SgNameGroup*) (node)) : NULL) : NULL)
2262 ROSE_DLL_API SgDimensionObject* isSgDimensionObject(SgNode* node);
2263 ROSE_DLL_API const SgDimensionObject* isSgDimensionObject(const SgNode* node);
2264 #define IS_SgDimensionObject_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgDimensionObject::static_variant >> 3] & (1 << (SgDimensionObject::static_variant & 7)))) ? ((SgDimensionObject*) (node)) : NULL) : NULL)
2265 ROSE_DLL_API SgDataStatementGroup* isSgDataStatementGroup(SgNode* node);
2266 ROSE_DLL_API const SgDataStatementGroup* isSgDataStatementGroup(const SgNode* node);
2267 #define IS_SgDataStatementGroup_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgDataStatementGroup::static_variant >> 3] & (1 << (SgDataStatementGroup::static_variant & 7)))) ? ((SgDataStatementGroup*) (node)) : NULL) : NULL)
2268 ROSE_DLL_API SgDataStatementObject* isSgDataStatementObject(SgNode* node);
2269 ROSE_DLL_API const SgDataStatementObject* isSgDataStatementObject(const SgNode* node);
2270 #define IS_SgDataStatementObject_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgDataStatementObject::static_variant >> 3] & (1 << (SgDataStatementObject::static_variant & 7)))) ? ((SgDataStatementObject*) (node)) : NULL) : NULL)
2271 ROSE_DLL_API SgDataStatementValue* isSgDataStatementValue(SgNode* node);
2272 ROSE_DLL_API const SgDataStatementValue* isSgDataStatementValue(const SgNode* node);
2273 #define IS_SgDataStatementValue_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgDataStatementValue::static_variant >> 3] & (1 << (SgDataStatementValue::static_variant & 7)))) ? ((SgDataStatementValue*) (node)) : NULL) : NULL)
2274 ROSE_DLL_API SgFormatItem* isSgFormatItem(SgNode* node);
2275 ROSE_DLL_API const SgFormatItem* isSgFormatItem(const SgNode* node);
2276 #define IS_SgFormatItem_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgFormatItem::static_variant >> 3] & (1 << (SgFormatItem::static_variant & 7)))) ? ((SgFormatItem*) (node)) : NULL) : NULL)
2277 ROSE_DLL_API SgFormatItemList* isSgFormatItemList(SgNode* node);
2278 ROSE_DLL_API const SgFormatItemList* isSgFormatItemList(const SgNode* node);
2279 #define IS_SgFormatItemList_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgFormatItemList::static_variant >> 3] & (1 << (SgFormatItemList::static_variant & 7)))) ? ((SgFormatItemList*) (node)) : NULL) : NULL)
2280 ROSE_DLL_API SgTypeTable* isSgTypeTable(SgNode* node);
2281 ROSE_DLL_API const SgTypeTable* isSgTypeTable(const SgNode* node);
2282 #define IS_SgTypeTable_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTypeTable::static_variant >> 3] & (1 << (SgTypeTable::static_variant & 7)))) ? ((SgTypeTable*) (node)) : NULL) : NULL)
2283 ROSE_DLL_API SgHeaderFileReport* isSgHeaderFileReport(SgNode* node);
2284 ROSE_DLL_API const SgHeaderFileReport* isSgHeaderFileReport(const SgNode* node);
2285 #define IS_SgHeaderFileReport_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgHeaderFileReport::static_variant >> 3] & (1 << (SgHeaderFileReport::static_variant & 7)))) ? ((SgHeaderFileReport*) (node)) : NULL) : NULL)
2286 ROSE_DLL_API SgSupport* isSgSupport(SgNode* node);
2287 ROSE_DLL_API const SgSupport* isSgSupport(const SgNode* node);
2288 #define IS_SgSupport_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgSupport::static_variant >> 3] & (1 << (SgSupport::static_variant & 7)))) ? ((SgSupport*) (node)) : NULL) : NULL)
2289 ROSE_DLL_API SgTypeUnknown* isSgTypeUnknown(SgNode* node);
2290 ROSE_DLL_API const SgTypeUnknown* isSgTypeUnknown(const SgNode* node);
2291 #define IS_SgTypeUnknown_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTypeUnknown::static_variant >> 3] & (1 << (SgTypeUnknown::static_variant & 7)))) ? ((SgTypeUnknown*) (node)) : NULL) : NULL)
2292 ROSE_DLL_API SgTypeChar* isSgTypeChar(SgNode* node);
2293 ROSE_DLL_API const SgTypeChar* isSgTypeChar(const SgNode* node);
2294 #define IS_SgTypeChar_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTypeChar::static_variant >> 3] & (1 << (SgTypeChar::static_variant & 7)))) ? ((SgTypeChar*) (node)) : NULL) : NULL)
2295 ROSE_DLL_API SgTypeSignedChar* isSgTypeSignedChar(SgNode* node);
2296 ROSE_DLL_API const SgTypeSignedChar* isSgTypeSignedChar(const SgNode* node);
2297 #define IS_SgTypeSignedChar_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTypeSignedChar::static_variant >> 3] & (1 << (SgTypeSignedChar::static_variant & 7)))) ? ((SgTypeSignedChar*) (node)) : NULL) : NULL)
2298 ROSE_DLL_API SgTypeUnsignedChar* isSgTypeUnsignedChar(SgNode* node);
2299 ROSE_DLL_API const SgTypeUnsignedChar* isSgTypeUnsignedChar(const SgNode* node);
2300 #define IS_SgTypeUnsignedChar_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTypeUnsignedChar::static_variant >> 3] & (1 << (SgTypeUnsignedChar::static_variant & 7)))) ? ((SgTypeUnsignedChar*) (node)) : NULL) : NULL)
2301 ROSE_DLL_API SgTypeShort* isSgTypeShort(SgNode* node);
2302 ROSE_DLL_API const SgTypeShort* isSgTypeShort(const SgNode* node);
2303 #define IS_SgTypeShort_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTypeShort::static_variant >> 3] & (1 << (SgTypeShort::static_variant & 7)))) ? ((SgTypeShort*) (node)) : NULL) : NULL)
2304 ROSE_DLL_API SgTypeSignedShort* isSgTypeSignedShort(SgNode* node);
2305 ROSE_DLL_API const SgTypeSignedShort* isSgTypeSignedShort(const SgNode* node);
2306 #define IS_SgTypeSignedShort_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTypeSignedShort::static_variant >> 3] & (1 << (SgTypeSignedShort::static_variant & 7)))) ? ((SgTypeSignedShort*) (node)) : NULL) : NULL)
2307 ROSE_DLL_API SgTypeUnsignedShort* isSgTypeUnsignedShort(SgNode* node);
2308 ROSE_DLL_API const SgTypeUnsignedShort* isSgTypeUnsignedShort(const SgNode* node);
2309 #define IS_SgTypeUnsignedShort_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTypeUnsignedShort::static_variant >> 3] & (1 << (SgTypeUnsignedShort::static_variant & 7)))) ? ((SgTypeUnsignedShort*) (node)) : NULL) : NULL)
2310 ROSE_DLL_API SgTypeInt* isSgTypeInt(SgNode* node);
2311 ROSE_DLL_API const SgTypeInt* isSgTypeInt(const SgNode* node);
2312 #define IS_SgTypeInt_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTypeInt::static_variant >> 3] & (1 << (SgTypeInt::static_variant & 7)))) ? ((SgTypeInt*) (node)) : NULL) : NULL)
2313 ROSE_DLL_API SgTypeSignedInt* isSgTypeSignedInt(SgNode* node);
2314 ROSE_DLL_API const SgTypeSignedInt* isSgTypeSignedInt(const SgNode* node);
2315 #define IS_SgTypeSignedInt_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTypeSignedInt::static_variant >> 3] & (1 << (SgTypeSignedInt::static_variant & 7)))) ? ((SgTypeSignedInt*) (node)) : NULL) : NULL)
2316 ROSE_DLL_API SgTypeUnsignedInt* isSgTypeUnsignedInt(SgNode* node);
2317 ROSE_DLL_API const SgTypeUnsignedInt* isSgTypeUnsignedInt(const SgNode* node);
2318 #define IS_SgTypeUnsignedInt_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTypeUnsignedInt::static_variant >> 3] & (1 << (SgTypeUnsignedInt::static_variant & 7)))) ? ((SgTypeUnsignedInt*) (node)) : NULL) : NULL)
2319 ROSE_DLL_API SgTypeLong* isSgTypeLong(SgNode* node);
2320 ROSE_DLL_API const SgTypeLong* isSgTypeLong(const SgNode* node);
2321 #define IS_SgTypeLong_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTypeLong::static_variant >> 3] & (1 << (SgTypeLong::static_variant & 7)))) ? ((SgTypeLong*) (node)) : NULL) : NULL)
2322 ROSE_DLL_API SgTypeSignedLong* isSgTypeSignedLong(SgNode* node);
2323 ROSE_DLL_API const SgTypeSignedLong* isSgTypeSignedLong(const SgNode* node);
2324 #define IS_SgTypeSignedLong_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTypeSignedLong::static_variant >> 3] & (1 << (SgTypeSignedLong::static_variant & 7)))) ? ((SgTypeSignedLong*) (node)) : NULL) : NULL)
2325 ROSE_DLL_API SgTypeUnsignedLong* isSgTypeUnsignedLong(SgNode* node);
2326 ROSE_DLL_API const SgTypeUnsignedLong* isSgTypeUnsignedLong(const SgNode* node);
2327 #define IS_SgTypeUnsignedLong_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTypeUnsignedLong::static_variant >> 3] & (1 << (SgTypeUnsignedLong::static_variant & 7)))) ? ((SgTypeUnsignedLong*) (node)) : NULL) : NULL)
2328 ROSE_DLL_API SgTypeVoid* isSgTypeVoid(SgNode* node);
2329 ROSE_DLL_API const SgTypeVoid* isSgTypeVoid(const SgNode* node);
2330 #define IS_SgTypeVoid_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTypeVoid::static_variant >> 3] & (1 << (SgTypeVoid::static_variant & 7)))) ? ((SgTypeVoid*) (node)) : NULL) : NULL)
2331 ROSE_DLL_API SgTypeGlobalVoid* isSgTypeGlobalVoid(SgNode* node);
2332 ROSE_DLL_API const SgTypeGlobalVoid* isSgTypeGlobalVoid(const SgNode* node);
2333 #define IS_SgTypeGlobalVoid_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTypeGlobalVoid::static_variant >> 3] & (1 << (SgTypeGlobalVoid::static_variant & 7)))) ? ((SgTypeGlobalVoid*) (node)) : NULL) : NULL)
2334 ROSE_DLL_API SgTypeWchar* isSgTypeWchar(SgNode* node);
2335 ROSE_DLL_API const SgTypeWchar* isSgTypeWchar(const SgNode* node);
2336 #define IS_SgTypeWchar_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTypeWchar::static_variant >> 3] & (1 << (SgTypeWchar::static_variant & 7)))) ? ((SgTypeWchar*) (node)) : NULL) : NULL)
2337 ROSE_DLL_API SgTypeFloat* isSgTypeFloat(SgNode* node);
2338 ROSE_DLL_API const SgTypeFloat* isSgTypeFloat(const SgNode* node);
2339 #define IS_SgTypeFloat_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTypeFloat::static_variant >> 3] & (1 << (SgTypeFloat::static_variant & 7)))) ? ((SgTypeFloat*) (node)) : NULL) : NULL)
2340 ROSE_DLL_API SgTypeDouble* isSgTypeDouble(SgNode* node);
2341 ROSE_DLL_API const SgTypeDouble* isSgTypeDouble(const SgNode* node);
2342 #define IS_SgTypeDouble_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTypeDouble::static_variant >> 3] & (1 << (SgTypeDouble::static_variant & 7)))) ? ((SgTypeDouble*) (node)) : NULL) : NULL)
2343 ROSE_DLL_API SgTypeLongLong* isSgTypeLongLong(SgNode* node);
2344 ROSE_DLL_API const SgTypeLongLong* isSgTypeLongLong(const SgNode* node);
2345 #define IS_SgTypeLongLong_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTypeLongLong::static_variant >> 3] & (1 << (SgTypeLongLong::static_variant & 7)))) ? ((SgTypeLongLong*) (node)) : NULL) : NULL)
2346 ROSE_DLL_API SgTypeSignedLongLong* isSgTypeSignedLongLong(SgNode* node);
2347 ROSE_DLL_API const SgTypeSignedLongLong* isSgTypeSignedLongLong(const SgNode* node);
2348 #define IS_SgTypeSignedLongLong_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTypeSignedLongLong::static_variant >> 3] & (1 << (SgTypeSignedLongLong::static_variant & 7)))) ? ((SgTypeSignedLongLong*) (node)) : NULL) : NULL)
2349 ROSE_DLL_API SgTypeUnsignedLongLong* isSgTypeUnsignedLongLong(SgNode* node);
2350 ROSE_DLL_API const SgTypeUnsignedLongLong* isSgTypeUnsignedLongLong(const SgNode* node);
2351 #define IS_SgTypeUnsignedLongLong_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTypeUnsignedLongLong::static_variant >> 3] & (1 << (SgTypeUnsignedLongLong::static_variant & 7)))) ? ((SgTypeUnsignedLongLong*) (node)) : NULL) : NULL)
2352 ROSE_DLL_API SgTypeLongDouble* isSgTypeLongDouble(SgNode* node);
2353 ROSE_DLL_API const SgTypeLongDouble* isSgTypeLongDouble(const SgNode* node);
2354 #define IS_SgTypeLongDouble_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTypeLongDouble::static_variant >> 3] & (1 << (SgTypeLongDouble::static_variant & 7)))) ? ((SgTypeLongDouble*) (node)) : NULL) : NULL)
2355 ROSE_DLL_API SgTypeFloat80* isSgTypeFloat80(SgNode* node);
2356 ROSE_DLL_API const SgTypeFloat80* isSgTypeFloat80(const SgNode* node);
2357 #define IS_SgTypeFloat80_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTypeFloat80::static_variant >> 3] & (1 << (SgTypeFloat80::static_variant & 7)))) ? ((SgTypeFloat80*) (node)) : NULL) : NULL)
2358 ROSE_DLL_API SgTypeFloat128* isSgTypeFloat128(SgNode* node);
2359 ROSE_DLL_API const SgTypeFloat128* isSgTypeFloat128(const SgNode* node);
2360 #define IS_SgTypeFloat128_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTypeFloat128::static_variant >> 3] & (1 << (SgTypeFloat128::static_variant & 7)))) ? ((SgTypeFloat128*) (node)) : NULL) : NULL)
2361 ROSE_DLL_API SgTypeString* isSgTypeString(SgNode* node);
2362 ROSE_DLL_API const SgTypeString* isSgTypeString(const SgNode* node);
2363 #define IS_SgTypeString_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTypeString::static_variant >> 3] & (1 << (SgTypeString::static_variant & 7)))) ? ((SgTypeString*) (node)) : NULL) : NULL)
2364 ROSE_DLL_API SgTypeBool* isSgTypeBool(SgNode* node);
2365 ROSE_DLL_API const SgTypeBool* isSgTypeBool(const SgNode* node);
2366 #define IS_SgTypeBool_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTypeBool::static_variant >> 3] & (1 << (SgTypeBool::static_variant & 7)))) ? ((SgTypeBool*) (node)) : NULL) : NULL)
2367 ROSE_DLL_API SgTypeFixed* isSgTypeFixed(SgNode* node);
2368 ROSE_DLL_API const SgTypeFixed* isSgTypeFixed(const SgNode* node);
2369 #define IS_SgTypeFixed_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTypeFixed::static_variant >> 3] & (1 << (SgTypeFixed::static_variant & 7)))) ? ((SgTypeFixed*) (node)) : NULL) : NULL)
2370 ROSE_DLL_API SgTypeMatrix* isSgTypeMatrix(SgNode* node);
2371 ROSE_DLL_API const SgTypeMatrix* isSgTypeMatrix(const SgNode* node);
2372 #define IS_SgTypeMatrix_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTypeMatrix::static_variant >> 3] & (1 << (SgTypeMatrix::static_variant & 7)))) ? ((SgTypeMatrix*) (node)) : NULL) : NULL)
2373 ROSE_DLL_API SgTypeTuple* isSgTypeTuple(SgNode* node);
2374 ROSE_DLL_API const SgTypeTuple* isSgTypeTuple(const SgNode* node);
2375 #define IS_SgTypeTuple_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTypeTuple::static_variant >> 3] & (1 << (SgTypeTuple::static_variant & 7)))) ? ((SgTypeTuple*) (node)) : NULL) : NULL)
2376 ROSE_DLL_API SgTypeNullptr* isSgTypeNullptr(SgNode* node);
2377 ROSE_DLL_API const SgTypeNullptr* isSgTypeNullptr(const SgNode* node);
2378 #define IS_SgTypeNullptr_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTypeNullptr::static_variant >> 3] & (1 << (SgTypeNullptr::static_variant & 7)))) ? ((SgTypeNullptr*) (node)) : NULL) : NULL)
2379 ROSE_DLL_API SgTypeComplex* isSgTypeComplex(SgNode* node);
2380 ROSE_DLL_API const SgTypeComplex* isSgTypeComplex(const SgNode* node);
2381 #define IS_SgTypeComplex_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTypeComplex::static_variant >> 3] & (1 << (SgTypeComplex::static_variant & 7)))) ? ((SgTypeComplex*) (node)) : NULL) : NULL)
2382 ROSE_DLL_API SgTypeImaginary* isSgTypeImaginary(SgNode* node);
2383 ROSE_DLL_API const SgTypeImaginary* isSgTypeImaginary(const SgNode* node);
2384 #define IS_SgTypeImaginary_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTypeImaginary::static_variant >> 3] & (1 << (SgTypeImaginary::static_variant & 7)))) ? ((SgTypeImaginary*) (node)) : NULL) : NULL)
2385 ROSE_DLL_API SgTypeDefault* isSgTypeDefault(SgNode* node);
2386 ROSE_DLL_API const SgTypeDefault* isSgTypeDefault(const SgNode* node);
2387 #define IS_SgTypeDefault_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTypeDefault::static_variant >> 3] & (1 << (SgTypeDefault::static_variant & 7)))) ? ((SgTypeDefault*) (node)) : NULL) : NULL)
2388 ROSE_DLL_API SgPointerMemberType* isSgPointerMemberType(SgNode* node);
2389 ROSE_DLL_API const SgPointerMemberType* isSgPointerMemberType(const SgNode* node);
2390 #define IS_SgPointerMemberType_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgPointerMemberType::static_variant >> 3] & (1 << (SgPointerMemberType::static_variant & 7)))) ? ((SgPointerMemberType*) (node)) : NULL) : NULL)
2391 ROSE_DLL_API SgReferenceType* isSgReferenceType(SgNode* node);
2392 ROSE_DLL_API const SgReferenceType* isSgReferenceType(const SgNode* node);
2393 #define IS_SgReferenceType_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgReferenceType::static_variant >> 3] & (1 << (SgReferenceType::static_variant & 7)))) ? ((SgReferenceType*) (node)) : NULL) : NULL)
2394 ROSE_DLL_API SgRvalueReferenceType* isSgRvalueReferenceType(SgNode* node);
2395 ROSE_DLL_API const SgRvalueReferenceType* isSgRvalueReferenceType(const SgNode* node);
2396 #define IS_SgRvalueReferenceType_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgRvalueReferenceType::static_variant >> 3] & (1 << (SgRvalueReferenceType::static_variant & 7)))) ? ((SgRvalueReferenceType*) (node)) : NULL) : NULL)
2397 ROSE_DLL_API SgDeclType* isSgDeclType(SgNode* node);
2398 ROSE_DLL_API const SgDeclType* isSgDeclType(const SgNode* node);
2399 #define IS_SgDeclType_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgDeclType::static_variant >> 3] & (1 << (SgDeclType::static_variant & 7)))) ? ((SgDeclType*) (node)) : NULL) : NULL)
2400 ROSE_DLL_API SgTypeOfType* isSgTypeOfType(SgNode* node);
2401 ROSE_DLL_API const SgTypeOfType* isSgTypeOfType(const SgNode* node);
2402 #define IS_SgTypeOfType_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTypeOfType::static_variant >> 3] & (1 << (SgTypeOfType::static_variant & 7)))) ? ((SgTypeOfType*) (node)) : NULL) : NULL)
2403 ROSE_DLL_API SgTypeCAFTeam* isSgTypeCAFTeam(SgNode* node);
2404 ROSE_DLL_API const SgTypeCAFTeam* isSgTypeCAFTeam(const SgNode* node);
2405 #define IS_SgTypeCAFTeam_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTypeCAFTeam::static_variant >> 3] & (1 << (SgTypeCAFTeam::static_variant & 7)))) ? ((SgTypeCAFTeam*) (node)) : NULL) : NULL)
2406 ROSE_DLL_API SgTypeUnsigned128bitInteger* isSgTypeUnsigned128bitInteger(SgNode* node);
2407 ROSE_DLL_API const SgTypeUnsigned128bitInteger* isSgTypeUnsigned128bitInteger(const SgNode* node);
2408 #define IS_SgTypeUnsigned128bitInteger_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTypeUnsigned128bitInteger::static_variant >> 3] & (1 << (SgTypeUnsigned128bitInteger::static_variant & 7)))) ? ((SgTypeUnsigned128bitInteger*) (node)) : NULL) : NULL)
2409 ROSE_DLL_API SgTypeSigned128bitInteger* isSgTypeSigned128bitInteger(SgNode* node);
2410 ROSE_DLL_API const SgTypeSigned128bitInteger* isSgTypeSigned128bitInteger(const SgNode* node);
2411 #define IS_SgTypeSigned128bitInteger_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTypeSigned128bitInteger::static_variant >> 3] & (1 << (SgTypeSigned128bitInteger::static_variant & 7)))) ? ((SgTypeSigned128bitInteger*) (node)) : NULL) : NULL)
2412 ROSE_DLL_API SgTypeLabel* isSgTypeLabel(SgNode* node);
2413 ROSE_DLL_API const SgTypeLabel* isSgTypeLabel(const SgNode* node);
2414 #define IS_SgTypeLabel_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTypeLabel::static_variant >> 3] & (1 << (SgTypeLabel::static_variant & 7)))) ? ((SgTypeLabel*) (node)) : NULL) : NULL)
2415 ROSE_DLL_API SgTemplateType* isSgTemplateType(SgNode* node);
2416 ROSE_DLL_API const SgTemplateType* isSgTemplateType(const SgNode* node);
2417 #define IS_SgTemplateType_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTemplateType::static_variant >> 3] & (1 << (SgTemplateType::static_variant & 7)))) ? ((SgTemplateType*) (node)) : NULL) : NULL)
2418 ROSE_DLL_API SgEnumType* isSgEnumType(SgNode* node);
2419 ROSE_DLL_API const SgEnumType* isSgEnumType(const SgNode* node);
2420 #define IS_SgEnumType_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgEnumType::static_variant >> 3] & (1 << (SgEnumType::static_variant & 7)))) ? ((SgEnumType*) (node)) : NULL) : NULL)
2421 ROSE_DLL_API SgTypedefType* isSgTypedefType(SgNode* node);
2422 ROSE_DLL_API const SgTypedefType* isSgTypedefType(const SgNode* node);
2423 #define IS_SgTypedefType_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTypedefType::static_variant >> 3] & (1 << (SgTypedefType::static_variant & 7)))) ? ((SgTypedefType*) (node)) : NULL) : NULL)
2424 ROSE_DLL_API SgNonrealType* isSgNonrealType(SgNode* node);
2425 ROSE_DLL_API const SgNonrealType* isSgNonrealType(const SgNode* node);
2426 #define IS_SgNonrealType_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgNonrealType::static_variant >> 3] & (1 << (SgNonrealType::static_variant & 7)))) ? ((SgNonrealType*) (node)) : NULL) : NULL)
2427 ROSE_DLL_API SgAutoType* isSgAutoType(SgNode* node);
2428 ROSE_DLL_API const SgAutoType* isSgAutoType(const SgNode* node);
2429 #define IS_SgAutoType_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgAutoType::static_variant >> 3] & (1 << (SgAutoType::static_variant & 7)))) ? ((SgAutoType*) (node)) : NULL) : NULL)
2430 ROSE_DLL_API SgModifierType* isSgModifierType(SgNode* node);
2431 ROSE_DLL_API const SgModifierType* isSgModifierType(const SgNode* node);
2432 #define IS_SgModifierType_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgModifierType::static_variant >> 3] & (1 << (SgModifierType::static_variant & 7)))) ? ((SgModifierType*) (node)) : NULL) : NULL)
2433 ROSE_DLL_API SgPartialFunctionModifierType* isSgPartialFunctionModifierType(SgNode* node);
2434 ROSE_DLL_API const SgPartialFunctionModifierType* isSgPartialFunctionModifierType(const SgNode* node);
2435 #define IS_SgPartialFunctionModifierType_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgPartialFunctionModifierType::static_variant >> 3] & (1 << (SgPartialFunctionModifierType::static_variant & 7)))) ? ((SgPartialFunctionModifierType*) (node)) : NULL) : NULL)
2436 ROSE_DLL_API SgArrayType* isSgArrayType(SgNode* node);
2437 ROSE_DLL_API const SgArrayType* isSgArrayType(const SgNode* node);
2438 #define IS_SgArrayType_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgArrayType::static_variant >> 3] & (1 << (SgArrayType::static_variant & 7)))) ? ((SgArrayType*) (node)) : NULL) : NULL)
2439 ROSE_DLL_API SgTypeEllipse* isSgTypeEllipse(SgNode* node);
2440 ROSE_DLL_API const SgTypeEllipse* isSgTypeEllipse(const SgNode* node);
2441 #define IS_SgTypeEllipse_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTypeEllipse::static_variant >> 3] & (1 << (SgTypeEllipse::static_variant & 7)))) ? ((SgTypeEllipse*) (node)) : NULL) : NULL)
2442 ROSE_DLL_API SgTypeCrayPointer* isSgTypeCrayPointer(SgNode* node);
2443 ROSE_DLL_API const SgTypeCrayPointer* isSgTypeCrayPointer(const SgNode* node);
2444 #define IS_SgTypeCrayPointer_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTypeCrayPointer::static_variant >> 3] & (1 << (SgTypeCrayPointer::static_variant & 7)))) ? ((SgTypeCrayPointer*) (node)) : NULL) : NULL)
2445 ROSE_DLL_API SgPartialFunctionType* isSgPartialFunctionType(SgNode* node);
2446 ROSE_DLL_API const SgPartialFunctionType* isSgPartialFunctionType(const SgNode* node);
2447 #define IS_SgPartialFunctionType_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgPartialFunctionType::static_variant >> 3] & (1 << (SgPartialFunctionType::static_variant & 7)))) ? ((SgPartialFunctionType*) (node)) : NULL) : NULL)
2448 ROSE_DLL_API SgMemberFunctionType* isSgMemberFunctionType(SgNode* node);
2449 ROSE_DLL_API const SgMemberFunctionType* isSgMemberFunctionType(const SgNode* node);
2450 #define IS_SgMemberFunctionType_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgMemberFunctionType::static_variant >> 3] & (1 << (SgMemberFunctionType::static_variant & 7)))) ? ((SgMemberFunctionType*) (node)) : NULL) : NULL)
2451 ROSE_DLL_API SgFunctionType* isSgFunctionType(SgNode* node);
2452 ROSE_DLL_API const SgFunctionType* isSgFunctionType(const SgNode* node);
2453 #define IS_SgFunctionType_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgFunctionType::static_variant >> 3] & (1 << (SgFunctionType::static_variant & 7)))) ? ((SgFunctionType*) (node)) : NULL) : NULL)
2454 ROSE_DLL_API SgPointerType* isSgPointerType(SgNode* node);
2455 ROSE_DLL_API const SgPointerType* isSgPointerType(const SgNode* node);
2456 #define IS_SgPointerType_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgPointerType::static_variant >> 3] & (1 << (SgPointerType::static_variant & 7)))) ? ((SgPointerType*) (node)) : NULL) : NULL)
2457 ROSE_DLL_API SgClassType* isSgClassType(SgNode* node);
2458 ROSE_DLL_API const SgClassType* isSgClassType(const SgNode* node);
2459 #define IS_SgClassType_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgClassType::static_variant >> 3] & (1 << (SgClassType::static_variant & 7)))) ? ((SgClassType*) (node)) : NULL) : NULL)
2460 ROSE_DLL_API SgNamedType* isSgNamedType(SgNode* node);
2461 ROSE_DLL_API const SgNamedType* isSgNamedType(const SgNode* node);
2462 #define IS_SgNamedType_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgNamedType::static_variant >> 3] & (1 << (SgNamedType::static_variant & 7)))) ? ((SgNamedType*) (node)) : NULL) : NULL)
2463 ROSE_DLL_API SgQualifiedNameType* isSgQualifiedNameType(SgNode* node);
2464 ROSE_DLL_API const SgQualifiedNameType* isSgQualifiedNameType(const SgNode* node);
2465 #define IS_SgQualifiedNameType_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgQualifiedNameType::static_variant >> 3] & (1 << (SgQualifiedNameType::static_variant & 7)))) ? ((SgQualifiedNameType*) (node)) : NULL) : NULL)
2466 ROSE_DLL_API SgTypeChar16* isSgTypeChar16(SgNode* node);
2467 ROSE_DLL_API const SgTypeChar16* isSgTypeChar16(const SgNode* node);
2468 #define IS_SgTypeChar16_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTypeChar16::static_variant >> 3] & (1 << (SgTypeChar16::static_variant & 7)))) ? ((SgTypeChar16*) (node)) : NULL) : NULL)
2469 ROSE_DLL_API SgTypeChar32* isSgTypeChar32(SgNode* node);
2470 ROSE_DLL_API const SgTypeChar32* isSgTypeChar32(const SgNode* node);
2471 #define IS_SgTypeChar32_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTypeChar32::static_variant >> 3] & (1 << (SgTypeChar32::static_variant & 7)))) ? ((SgTypeChar32*) (node)) : NULL) : NULL)
2472 ROSE_DLL_API SgType* isSgType(SgNode* node);
2473 ROSE_DLL_API const SgType* isSgType(const SgNode* node);
2474 #define IS_SgType_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgType::static_variant >> 3] & (1 << (SgType::static_variant & 7)))) ? ((SgType*) (node)) : NULL) : NULL)
2475 ROSE_DLL_API SgForStatement* isSgForStatement(SgNode* node);
2476 ROSE_DLL_API const SgForStatement* isSgForStatement(const SgNode* node);
2477 #define IS_SgForStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgForStatement::static_variant >> 3] & (1 << (SgForStatement::static_variant & 7)))) ? ((SgForStatement*) (node)) : NULL) : NULL)
2478 ROSE_DLL_API SgForInitStatement* isSgForInitStatement(SgNode* node);
2479 ROSE_DLL_API const SgForInitStatement* isSgForInitStatement(const SgNode* node);
2480 #define IS_SgForInitStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgForInitStatement::static_variant >> 3] & (1 << (SgForInitStatement::static_variant & 7)))) ? ((SgForInitStatement*) (node)) : NULL) : NULL)
2481 ROSE_DLL_API SgRangeBasedForStatement* isSgRangeBasedForStatement(SgNode* node);
2482 ROSE_DLL_API const SgRangeBasedForStatement* isSgRangeBasedForStatement(const SgNode* node);
2483 #define IS_SgRangeBasedForStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgRangeBasedForStatement::static_variant >> 3] & (1 << (SgRangeBasedForStatement::static_variant & 7)))) ? ((SgRangeBasedForStatement*) (node)) : NULL) : NULL)
2484 ROSE_DLL_API SgCatchStatementSeq* isSgCatchStatementSeq(SgNode* node);
2485 ROSE_DLL_API const SgCatchStatementSeq* isSgCatchStatementSeq(const SgNode* node);
2486 #define IS_SgCatchStatementSeq_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgCatchStatementSeq::static_variant >> 3] & (1 << (SgCatchStatementSeq::static_variant & 7)))) ? ((SgCatchStatementSeq*) (node)) : NULL) : NULL)
2487 ROSE_DLL_API SgFunctionParameterList* isSgFunctionParameterList(SgNode* node);
2488 ROSE_DLL_API const SgFunctionParameterList* isSgFunctionParameterList(const SgNode* node);
2489 #define IS_SgFunctionParameterList_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgFunctionParameterList::static_variant >> 3] & (1 << (SgFunctionParameterList::static_variant & 7)))) ? ((SgFunctionParameterList*) (node)) : NULL) : NULL)
2490 ROSE_DLL_API SgCtorInitializerList* isSgCtorInitializerList(SgNode* node);
2491 ROSE_DLL_API const SgCtorInitializerList* isSgCtorInitializerList(const SgNode* node);
2492 #define IS_SgCtorInitializerList_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgCtorInitializerList::static_variant >> 3] & (1 << (SgCtorInitializerList::static_variant & 7)))) ? ((SgCtorInitializerList*) (node)) : NULL) : NULL)
2493 ROSE_DLL_API SgBasicBlock* isSgBasicBlock(SgNode* node);
2494 ROSE_DLL_API const SgBasicBlock* isSgBasicBlock(const SgNode* node);
2495 #define IS_SgBasicBlock_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgBasicBlock::static_variant >> 3] & (1 << (SgBasicBlock::static_variant & 7)))) ? ((SgBasicBlock*) (node)) : NULL) : NULL)
2496 ROSE_DLL_API SgGlobal* isSgGlobal(SgNode* node);
2497 ROSE_DLL_API const SgGlobal* isSgGlobal(const SgNode* node);
2498 #define IS_SgGlobal_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgGlobal::static_variant >> 3] & (1 << (SgGlobal::static_variant & 7)))) ? ((SgGlobal*) (node)) : NULL) : NULL)
2499 ROSE_DLL_API SgIfStmt* isSgIfStmt(SgNode* node);
2500 ROSE_DLL_API const SgIfStmt* isSgIfStmt(const SgNode* node);
2501 #define IS_SgIfStmt_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgIfStmt::static_variant >> 3] & (1 << (SgIfStmt::static_variant & 7)))) ? ((SgIfStmt*) (node)) : NULL) : NULL)
2502 ROSE_DLL_API SgWhileStmt* isSgWhileStmt(SgNode* node);
2503 ROSE_DLL_API const SgWhileStmt* isSgWhileStmt(const SgNode* node);
2504 #define IS_SgWhileStmt_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgWhileStmt::static_variant >> 3] & (1 << (SgWhileStmt::static_variant & 7)))) ? ((SgWhileStmt*) (node)) : NULL) : NULL)
2505 ROSE_DLL_API SgDoWhileStmt* isSgDoWhileStmt(SgNode* node);
2506 ROSE_DLL_API const SgDoWhileStmt* isSgDoWhileStmt(const SgNode* node);
2507 #define IS_SgDoWhileStmt_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgDoWhileStmt::static_variant >> 3] & (1 << (SgDoWhileStmt::static_variant & 7)))) ? ((SgDoWhileStmt*) (node)) : NULL) : NULL)
2508 ROSE_DLL_API SgSwitchStatement* isSgSwitchStatement(SgNode* node);
2509 ROSE_DLL_API const SgSwitchStatement* isSgSwitchStatement(const SgNode* node);
2510 #define IS_SgSwitchStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgSwitchStatement::static_variant >> 3] & (1 << (SgSwitchStatement::static_variant & 7)))) ? ((SgSwitchStatement*) (node)) : NULL) : NULL)
2511 ROSE_DLL_API SgCatchOptionStmt* isSgCatchOptionStmt(SgNode* node);
2512 ROSE_DLL_API const SgCatchOptionStmt* isSgCatchOptionStmt(const SgNode* node);
2513 #define IS_SgCatchOptionStmt_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgCatchOptionStmt::static_variant >> 3] & (1 << (SgCatchOptionStmt::static_variant & 7)))) ? ((SgCatchOptionStmt*) (node)) : NULL) : NULL)
2514 ROSE_DLL_API SgFunctionParameterScope* isSgFunctionParameterScope(SgNode* node);
2515 ROSE_DLL_API const SgFunctionParameterScope* isSgFunctionParameterScope(const SgNode* node);
2516 #define IS_SgFunctionParameterScope_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgFunctionParameterScope::static_variant >> 3] & (1 << (SgFunctionParameterScope::static_variant & 7)))) ? ((SgFunctionParameterScope*) (node)) : NULL) : NULL)
2517 ROSE_DLL_API SgDeclarationScope* isSgDeclarationScope(SgNode* node);
2518 ROSE_DLL_API const SgDeclarationScope* isSgDeclarationScope(const SgNode* node);
2519 #define IS_SgDeclarationScope_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgDeclarationScope::static_variant >> 3] & (1 << (SgDeclarationScope::static_variant & 7)))) ? ((SgDeclarationScope*) (node)) : NULL) : NULL)
2520 ROSE_DLL_API SgVariableDefinition* isSgVariableDefinition(SgNode* node);
2521 ROSE_DLL_API const SgVariableDefinition* isSgVariableDefinition(const SgNode* node);
2522 #define IS_SgVariableDefinition_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgVariableDefinition::static_variant >> 3] & (1 << (SgVariableDefinition::static_variant & 7)))) ? ((SgVariableDefinition*) (node)) : NULL) : NULL)
2523 ROSE_DLL_API SgStmtDeclarationStatement* isSgStmtDeclarationStatement(SgNode* node);
2524 ROSE_DLL_API const SgStmtDeclarationStatement* isSgStmtDeclarationStatement(const SgNode* node);
2525 #define IS_SgStmtDeclarationStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgStmtDeclarationStatement::static_variant >> 3] & (1 << (SgStmtDeclarationStatement::static_variant & 7)))) ? ((SgStmtDeclarationStatement*) (node)) : NULL) : NULL)
2526 ROSE_DLL_API SgEnumDeclaration* isSgEnumDeclaration(SgNode* node);
2527 ROSE_DLL_API const SgEnumDeclaration* isSgEnumDeclaration(const SgNode* node);
2528 #define IS_SgEnumDeclaration_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgEnumDeclaration::static_variant >> 3] & (1 << (SgEnumDeclaration::static_variant & 7)))) ? ((SgEnumDeclaration*) (node)) : NULL) : NULL)
2529 ROSE_DLL_API SgAsmStmt* isSgAsmStmt(SgNode* node);
2530 ROSE_DLL_API const SgAsmStmt* isSgAsmStmt(const SgNode* node);
2531 #define IS_SgAsmStmt_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgAsmStmt::static_variant >> 3] & (1 << (SgAsmStmt::static_variant & 7)))) ? ((SgAsmStmt*) (node)) : NULL) : NULL)
2532 ROSE_DLL_API SgFunctionTypeTable* isSgFunctionTypeTable(SgNode* node);
2533 ROSE_DLL_API const SgFunctionTypeTable* isSgFunctionTypeTable(const SgNode* node);
2534 #define IS_SgFunctionTypeTable_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgFunctionTypeTable::static_variant >> 3] & (1 << (SgFunctionTypeTable::static_variant & 7)))) ? ((SgFunctionTypeTable*) (node)) : NULL) : NULL)
2535 ROSE_DLL_API SgExprStatement* isSgExprStatement(SgNode* node);
2536 ROSE_DLL_API const SgExprStatement* isSgExprStatement(const SgNode* node);
2537 #define IS_SgExprStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgExprStatement::static_variant >> 3] & (1 << (SgExprStatement::static_variant & 7)))) ? ((SgExprStatement*) (node)) : NULL) : NULL)
2538 ROSE_DLL_API SgLabelStatement* isSgLabelStatement(SgNode* node);
2539 ROSE_DLL_API const SgLabelStatement* isSgLabelStatement(const SgNode* node);
2540 #define IS_SgLabelStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgLabelStatement::static_variant >> 3] & (1 << (SgLabelStatement::static_variant & 7)))) ? ((SgLabelStatement*) (node)) : NULL) : NULL)
2541 ROSE_DLL_API SgCaseOptionStmt* isSgCaseOptionStmt(SgNode* node);
2542 ROSE_DLL_API const SgCaseOptionStmt* isSgCaseOptionStmt(const SgNode* node);
2543 #define IS_SgCaseOptionStmt_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgCaseOptionStmt::static_variant >> 3] & (1 << (SgCaseOptionStmt::static_variant & 7)))) ? ((SgCaseOptionStmt*) (node)) : NULL) : NULL)
2544 ROSE_DLL_API SgTryStmt* isSgTryStmt(SgNode* node);
2545 ROSE_DLL_API const SgTryStmt* isSgTryStmt(const SgNode* node);
2546 #define IS_SgTryStmt_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTryStmt::static_variant >> 3] & (1 << (SgTryStmt::static_variant & 7)))) ? ((SgTryStmt*) (node)) : NULL) : NULL)
2547 ROSE_DLL_API SgDefaultOptionStmt* isSgDefaultOptionStmt(SgNode* node);
2548 ROSE_DLL_API const SgDefaultOptionStmt* isSgDefaultOptionStmt(const SgNode* node);
2549 #define IS_SgDefaultOptionStmt_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgDefaultOptionStmt::static_variant >> 3] & (1 << (SgDefaultOptionStmt::static_variant & 7)))) ? ((SgDefaultOptionStmt*) (node)) : NULL) : NULL)
2550 ROSE_DLL_API SgBreakStmt* isSgBreakStmt(SgNode* node);
2551 ROSE_DLL_API const SgBreakStmt* isSgBreakStmt(const SgNode* node);
2552 #define IS_SgBreakStmt_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgBreakStmt::static_variant >> 3] & (1 << (SgBreakStmt::static_variant & 7)))) ? ((SgBreakStmt*) (node)) : NULL) : NULL)
2553 ROSE_DLL_API SgContinueStmt* isSgContinueStmt(SgNode* node);
2554 ROSE_DLL_API const SgContinueStmt* isSgContinueStmt(const SgNode* node);
2555 #define IS_SgContinueStmt_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgContinueStmt::static_variant >> 3] & (1 << (SgContinueStmt::static_variant & 7)))) ? ((SgContinueStmt*) (node)) : NULL) : NULL)
2556 ROSE_DLL_API SgReturnStmt* isSgReturnStmt(SgNode* node);
2557 ROSE_DLL_API const SgReturnStmt* isSgReturnStmt(const SgNode* node);
2558 #define IS_SgReturnStmt_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgReturnStmt::static_variant >> 3] & (1 << (SgReturnStmt::static_variant & 7)))) ? ((SgReturnStmt*) (node)) : NULL) : NULL)
2559 ROSE_DLL_API SgGotoStatement* isSgGotoStatement(SgNode* node);
2560 ROSE_DLL_API const SgGotoStatement* isSgGotoStatement(const SgNode* node);
2561 #define IS_SgGotoStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgGotoStatement::static_variant >> 3] & (1 << (SgGotoStatement::static_variant & 7)))) ? ((SgGotoStatement*) (node)) : NULL) : NULL)
2562 ROSE_DLL_API SgSpawnStmt* isSgSpawnStmt(SgNode* node);
2563 ROSE_DLL_API const SgSpawnStmt* isSgSpawnStmt(const SgNode* node);
2564 #define IS_SgSpawnStmt_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgSpawnStmt::static_variant >> 3] & (1 << (SgSpawnStmt::static_variant & 7)))) ? ((SgSpawnStmt*) (node)) : NULL) : NULL)
2565 ROSE_DLL_API SgTemplateTypedefDeclaration* isSgTemplateTypedefDeclaration(SgNode* node);
2566 ROSE_DLL_API const SgTemplateTypedefDeclaration* isSgTemplateTypedefDeclaration(const SgNode* node);
2567 #define IS_SgTemplateTypedefDeclaration_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTemplateTypedefDeclaration::static_variant >> 3] & (1 << (SgTemplateTypedefDeclaration::static_variant & 7)))) ? ((SgTemplateTypedefDeclaration*) (node)) : NULL) : NULL)
2568 ROSE_DLL_API SgTemplateInstantiationTypedefDeclaration* isSgTemplateInstantiationTypedefDeclaration(SgNode* node);
2569 ROSE_DLL_API const SgTemplateInstantiationTypedefDeclaration* isSgTemplateInstantiationTypedefDeclaration(const SgNode* node);
2570 #define IS_SgTemplateInstantiationTypedefDeclaration_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTemplateInstantiationTypedefDeclaration::static_variant >> 3] & (1 << (SgTemplateInstantiationTypedefDeclaration::static_variant & 7)))) ? ((SgTemplateInstantiationTypedefDeclaration*) (node)) : NULL) : NULL)
2571 ROSE_DLL_API SgTypedefDeclaration* isSgTypedefDeclaration(SgNode* node);
2572 ROSE_DLL_API const SgTypedefDeclaration* isSgTypedefDeclaration(const SgNode* node);
2573 #define IS_SgTypedefDeclaration_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTypedefDeclaration::static_variant >> 3] & (1 << (SgTypedefDeclaration::static_variant & 7)))) ? ((SgTypedefDeclaration*) (node)) : NULL) : NULL)
2574 ROSE_DLL_API SgNullStatement* isSgNullStatement(SgNode* node);
2575 ROSE_DLL_API const SgNullStatement* isSgNullStatement(const SgNode* node);
2576 #define IS_SgNullStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgNullStatement::static_variant >> 3] & (1 << (SgNullStatement::static_variant & 7)))) ? ((SgNullStatement*) (node)) : NULL) : NULL)
2577 ROSE_DLL_API SgVariantStatement* isSgVariantStatement(SgNode* node);
2578 ROSE_DLL_API const SgVariantStatement* isSgVariantStatement(const SgNode* node);
2579 #define IS_SgVariantStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgVariantStatement::static_variant >> 3] & (1 << (SgVariantStatement::static_variant & 7)))) ? ((SgVariantStatement*) (node)) : NULL) : NULL)
2580 ROSE_DLL_API SgPragmaDeclaration* isSgPragmaDeclaration(SgNode* node);
2581 ROSE_DLL_API const SgPragmaDeclaration* isSgPragmaDeclaration(const SgNode* node);
2582 #define IS_SgPragmaDeclaration_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgPragmaDeclaration::static_variant >> 3] & (1 << (SgPragmaDeclaration::static_variant & 7)))) ? ((SgPragmaDeclaration*) (node)) : NULL) : NULL)
2583 ROSE_DLL_API SgTemplateClassDeclaration* isSgTemplateClassDeclaration(SgNode* node);
2584 ROSE_DLL_API const SgTemplateClassDeclaration* isSgTemplateClassDeclaration(const SgNode* node);
2585 #define IS_SgTemplateClassDeclaration_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTemplateClassDeclaration::static_variant >> 3] & (1 << (SgTemplateClassDeclaration::static_variant & 7)))) ? ((SgTemplateClassDeclaration*) (node)) : NULL) : NULL)
2586 ROSE_DLL_API SgTemplateMemberFunctionDeclaration* isSgTemplateMemberFunctionDeclaration(SgNode* node);
2587 ROSE_DLL_API const SgTemplateMemberFunctionDeclaration* isSgTemplateMemberFunctionDeclaration(const SgNode* node);
2588 #define IS_SgTemplateMemberFunctionDeclaration_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTemplateMemberFunctionDeclaration::static_variant >> 3] & (1 << (SgTemplateMemberFunctionDeclaration::static_variant & 7)))) ? ((SgTemplateMemberFunctionDeclaration*) (node)) : NULL) : NULL)
2589 ROSE_DLL_API SgTemplateFunctionDeclaration* isSgTemplateFunctionDeclaration(SgNode* node);
2590 ROSE_DLL_API const SgTemplateFunctionDeclaration* isSgTemplateFunctionDeclaration(const SgNode* node);
2591 #define IS_SgTemplateFunctionDeclaration_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTemplateFunctionDeclaration::static_variant >> 3] & (1 << (SgTemplateFunctionDeclaration::static_variant & 7)))) ? ((SgTemplateFunctionDeclaration*) (node)) : NULL) : NULL)
2592 ROSE_DLL_API SgTemplateVariableDeclaration* isSgTemplateVariableDeclaration(SgNode* node);
2593 ROSE_DLL_API const SgTemplateVariableDeclaration* isSgTemplateVariableDeclaration(const SgNode* node);
2594 #define IS_SgTemplateVariableDeclaration_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTemplateVariableDeclaration::static_variant >> 3] & (1 << (SgTemplateVariableDeclaration::static_variant & 7)))) ? ((SgTemplateVariableDeclaration*) (node)) : NULL) : NULL)
2595 ROSE_DLL_API SgTemplateDeclaration* isSgTemplateDeclaration(SgNode* node);
2596 ROSE_DLL_API const SgTemplateDeclaration* isSgTemplateDeclaration(const SgNode* node);
2597 #define IS_SgTemplateDeclaration_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTemplateDeclaration::static_variant >> 3] & (1 << (SgTemplateDeclaration::static_variant & 7)))) ? ((SgTemplateDeclaration*) (node)) : NULL) : NULL)
2598 ROSE_DLL_API SgVariableDeclaration* isSgVariableDeclaration(SgNode* node);
2599 ROSE_DLL_API const SgVariableDeclaration* isSgVariableDeclaration(const SgNode* node);
2600 #define IS_SgVariableDeclaration_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgVariableDeclaration::static_variant >> 3] & (1 << (SgVariableDeclaration::static_variant & 7)))) ? ((SgVariableDeclaration*) (node)) : NULL) : NULL)
2601 ROSE_DLL_API SgTemplateInstantiationDecl* isSgTemplateInstantiationDecl(SgNode* node);
2602 ROSE_DLL_API const SgTemplateInstantiationDecl* isSgTemplateInstantiationDecl(const SgNode* node);
2603 #define IS_SgTemplateInstantiationDecl_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTemplateInstantiationDecl::static_variant >> 3] & (1 << (SgTemplateInstantiationDecl::static_variant & 7)))) ? ((SgTemplateInstantiationDecl*) (node)) : NULL) : NULL)
2604 ROSE_DLL_API SgTemplateInstantiationDefn* isSgTemplateInstantiationDefn(SgNode* node);
2605 ROSE_DLL_API const SgTemplateInstantiationDefn* isSgTemplateInstantiationDefn(const SgNode* node);
2606 #define IS_SgTemplateInstantiationDefn_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTemplateInstantiationDefn::static_variant >> 3] & (1 << (SgTemplateInstantiationDefn::static_variant & 7)))) ? ((SgTemplateInstantiationDefn*) (node)) : NULL) : NULL)
2607 ROSE_DLL_API SgTemplateInstantiationFunctionDecl* isSgTemplateInstantiationFunctionDecl(SgNode* node);
2608 ROSE_DLL_API const SgTemplateInstantiationFunctionDecl* isSgTemplateInstantiationFunctionDecl(const SgNode* node);
2609 #define IS_SgTemplateInstantiationFunctionDecl_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTemplateInstantiationFunctionDecl::static_variant >> 3] & (1 << (SgTemplateInstantiationFunctionDecl::static_variant & 7)))) ? ((SgTemplateInstantiationFunctionDecl*) (node)) : NULL) : NULL)
2610 ROSE_DLL_API SgTemplateInstantiationMemberFunctionDecl* isSgTemplateInstantiationMemberFunctionDecl(SgNode* node);
2611 ROSE_DLL_API const SgTemplateInstantiationMemberFunctionDecl* isSgTemplateInstantiationMemberFunctionDecl(const SgNode* node);
2612 #define IS_SgTemplateInstantiationMemberFunctionDecl_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTemplateInstantiationMemberFunctionDecl::static_variant >> 3] & (1 << (SgTemplateInstantiationMemberFunctionDecl::static_variant & 7)))) ? ((SgTemplateInstantiationMemberFunctionDecl*) (node)) : NULL) : NULL)
2613 ROSE_DLL_API SgNonrealDecl* isSgNonrealDecl(SgNode* node);
2614 ROSE_DLL_API const SgNonrealDecl* isSgNonrealDecl(const SgNode* node);
2615 #define IS_SgNonrealDecl_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgNonrealDecl::static_variant >> 3] & (1 << (SgNonrealDecl::static_variant & 7)))) ? ((SgNonrealDecl*) (node)) : NULL) : NULL)
2616 ROSE_DLL_API SgWithStatement* isSgWithStatement(SgNode* node);
2617 ROSE_DLL_API const SgWithStatement* isSgWithStatement(const SgNode* node);
2618 #define IS_SgWithStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgWithStatement::static_variant >> 3] & (1 << (SgWithStatement::static_variant & 7)))) ? ((SgWithStatement*) (node)) : NULL) : NULL)
2619 ROSE_DLL_API SgPassStatement* isSgPassStatement(SgNode* node);
2620 ROSE_DLL_API const SgPassStatement* isSgPassStatement(const SgNode* node);
2621 #define IS_SgPassStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgPassStatement::static_variant >> 3] & (1 << (SgPassStatement::static_variant & 7)))) ? ((SgPassStatement*) (node)) : NULL) : NULL)
2622 ROSE_DLL_API SgAssertStmt* isSgAssertStmt(SgNode* node);
2623 ROSE_DLL_API const SgAssertStmt* isSgAssertStmt(const SgNode* node);
2624 #define IS_SgAssertStmt_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgAssertStmt::static_variant >> 3] & (1 << (SgAssertStmt::static_variant & 7)))) ? ((SgAssertStmt*) (node)) : NULL) : NULL)
2625 ROSE_DLL_API SgExecStatement* isSgExecStatement(SgNode* node);
2626 ROSE_DLL_API const SgExecStatement* isSgExecStatement(const SgNode* node);
2627 #define IS_SgExecStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgExecStatement::static_variant >> 3] & (1 << (SgExecStatement::static_variant & 7)))) ? ((SgExecStatement*) (node)) : NULL) : NULL)
2628 ROSE_DLL_API SgProgramHeaderStatement* isSgProgramHeaderStatement(SgNode* node);
2629 ROSE_DLL_API const SgProgramHeaderStatement* isSgProgramHeaderStatement(const SgNode* node);
2630 #define IS_SgProgramHeaderStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgProgramHeaderStatement::static_variant >> 3] & (1 << (SgProgramHeaderStatement::static_variant & 7)))) ? ((SgProgramHeaderStatement*) (node)) : NULL) : NULL)
2631 ROSE_DLL_API SgProcedureHeaderStatement* isSgProcedureHeaderStatement(SgNode* node);
2632 ROSE_DLL_API const SgProcedureHeaderStatement* isSgProcedureHeaderStatement(const SgNode* node);
2633 #define IS_SgProcedureHeaderStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgProcedureHeaderStatement::static_variant >> 3] & (1 << (SgProcedureHeaderStatement::static_variant & 7)))) ? ((SgProcedureHeaderStatement*) (node)) : NULL) : NULL)
2634 ROSE_DLL_API SgEntryStatement* isSgEntryStatement(SgNode* node);
2635 ROSE_DLL_API const SgEntryStatement* isSgEntryStatement(const SgNode* node);
2636 #define IS_SgEntryStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgEntryStatement::static_variant >> 3] & (1 << (SgEntryStatement::static_variant & 7)))) ? ((SgEntryStatement*) (node)) : NULL) : NULL)
2637 ROSE_DLL_API SgFortranNonblockedDo* isSgFortranNonblockedDo(SgNode* node);
2638 ROSE_DLL_API const SgFortranNonblockedDo* isSgFortranNonblockedDo(const SgNode* node);
2639 #define IS_SgFortranNonblockedDo_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgFortranNonblockedDo::static_variant >> 3] & (1 << (SgFortranNonblockedDo::static_variant & 7)))) ? ((SgFortranNonblockedDo*) (node)) : NULL) : NULL)
2640 ROSE_DLL_API SgInterfaceStatement* isSgInterfaceStatement(SgNode* node);
2641 ROSE_DLL_API const SgInterfaceStatement* isSgInterfaceStatement(const SgNode* node);
2642 #define IS_SgInterfaceStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgInterfaceStatement::static_variant >> 3] & (1 << (SgInterfaceStatement::static_variant & 7)))) ? ((SgInterfaceStatement*) (node)) : NULL) : NULL)
2643 ROSE_DLL_API SgParameterStatement* isSgParameterStatement(SgNode* node);
2644 ROSE_DLL_API const SgParameterStatement* isSgParameterStatement(const SgNode* node);
2645 #define IS_SgParameterStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgParameterStatement::static_variant >> 3] & (1 << (SgParameterStatement::static_variant & 7)))) ? ((SgParameterStatement*) (node)) : NULL) : NULL)
2646 ROSE_DLL_API SgCommonBlock* isSgCommonBlock(SgNode* node);
2647 ROSE_DLL_API const SgCommonBlock* isSgCommonBlock(const SgNode* node);
2648 #define IS_SgCommonBlock_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgCommonBlock::static_variant >> 3] & (1 << (SgCommonBlock::static_variant & 7)))) ? ((SgCommonBlock*) (node)) : NULL) : NULL)
2649 ROSE_DLL_API SgModuleStatement* isSgModuleStatement(SgNode* node);
2650 ROSE_DLL_API const SgModuleStatement* isSgModuleStatement(const SgNode* node);
2651 #define IS_SgModuleStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgModuleStatement::static_variant >> 3] & (1 << (SgModuleStatement::static_variant & 7)))) ? ((SgModuleStatement*) (node)) : NULL) : NULL)
2652 ROSE_DLL_API SgUseStatement* isSgUseStatement(SgNode* node);
2653 ROSE_DLL_API const SgUseStatement* isSgUseStatement(const SgNode* node);
2654 #define IS_SgUseStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgUseStatement::static_variant >> 3] & (1 << (SgUseStatement::static_variant & 7)))) ? ((SgUseStatement*) (node)) : NULL) : NULL)
2655 ROSE_DLL_API SgProcessControlStatement* isSgProcessControlStatement(SgNode* node);
2656 ROSE_DLL_API const SgProcessControlStatement* isSgProcessControlStatement(const SgNode* node);
2657 #define IS_SgProcessControlStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgProcessControlStatement::static_variant >> 3] & (1 << (SgProcessControlStatement::static_variant & 7)))) ? ((SgProcessControlStatement*) (node)) : NULL) : NULL)
2658 ROSE_DLL_API SgPrintStatement* isSgPrintStatement(SgNode* node);
2659 ROSE_DLL_API const SgPrintStatement* isSgPrintStatement(const SgNode* node);
2660 #define IS_SgPrintStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgPrintStatement::static_variant >> 3] & (1 << (SgPrintStatement::static_variant & 7)))) ? ((SgPrintStatement*) (node)) : NULL) : NULL)
2661 ROSE_DLL_API SgReadStatement* isSgReadStatement(SgNode* node);
2662 ROSE_DLL_API const SgReadStatement* isSgReadStatement(const SgNode* node);
2663 #define IS_SgReadStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgReadStatement::static_variant >> 3] & (1 << (SgReadStatement::static_variant & 7)))) ? ((SgReadStatement*) (node)) : NULL) : NULL)
2664 ROSE_DLL_API SgWriteStatement* isSgWriteStatement(SgNode* node);
2665 ROSE_DLL_API const SgWriteStatement* isSgWriteStatement(const SgNode* node);
2666 #define IS_SgWriteStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgWriteStatement::static_variant >> 3] & (1 << (SgWriteStatement::static_variant & 7)))) ? ((SgWriteStatement*) (node)) : NULL) : NULL)
2667 ROSE_DLL_API SgOpenStatement* isSgOpenStatement(SgNode* node);
2668 ROSE_DLL_API const SgOpenStatement* isSgOpenStatement(const SgNode* node);
2669 #define IS_SgOpenStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOpenStatement::static_variant >> 3] & (1 << (SgOpenStatement::static_variant & 7)))) ? ((SgOpenStatement*) (node)) : NULL) : NULL)
2670 ROSE_DLL_API SgCloseStatement* isSgCloseStatement(SgNode* node);
2671 ROSE_DLL_API const SgCloseStatement* isSgCloseStatement(const SgNode* node);
2672 #define IS_SgCloseStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgCloseStatement::static_variant >> 3] & (1 << (SgCloseStatement::static_variant & 7)))) ? ((SgCloseStatement*) (node)) : NULL) : NULL)
2673 ROSE_DLL_API SgInquireStatement* isSgInquireStatement(SgNode* node);
2674 ROSE_DLL_API const SgInquireStatement* isSgInquireStatement(const SgNode* node);
2675 #define IS_SgInquireStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgInquireStatement::static_variant >> 3] & (1 << (SgInquireStatement::static_variant & 7)))) ? ((SgInquireStatement*) (node)) : NULL) : NULL)
2676 ROSE_DLL_API SgFlushStatement* isSgFlushStatement(SgNode* node);
2677 ROSE_DLL_API const SgFlushStatement* isSgFlushStatement(const SgNode* node);
2678 #define IS_SgFlushStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgFlushStatement::static_variant >> 3] & (1 << (SgFlushStatement::static_variant & 7)))) ? ((SgFlushStatement*) (node)) : NULL) : NULL)
2679 ROSE_DLL_API SgBackspaceStatement* isSgBackspaceStatement(SgNode* node);
2680 ROSE_DLL_API const SgBackspaceStatement* isSgBackspaceStatement(const SgNode* node);
2681 #define IS_SgBackspaceStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgBackspaceStatement::static_variant >> 3] & (1 << (SgBackspaceStatement::static_variant & 7)))) ? ((SgBackspaceStatement*) (node)) : NULL) : NULL)
2682 ROSE_DLL_API SgRewindStatement* isSgRewindStatement(SgNode* node);
2683 ROSE_DLL_API const SgRewindStatement* isSgRewindStatement(const SgNode* node);
2684 #define IS_SgRewindStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgRewindStatement::static_variant >> 3] & (1 << (SgRewindStatement::static_variant & 7)))) ? ((SgRewindStatement*) (node)) : NULL) : NULL)
2685 ROSE_DLL_API SgEndfileStatement* isSgEndfileStatement(SgNode* node);
2686 ROSE_DLL_API const SgEndfileStatement* isSgEndfileStatement(const SgNode* node);
2687 #define IS_SgEndfileStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgEndfileStatement::static_variant >> 3] & (1 << (SgEndfileStatement::static_variant & 7)))) ? ((SgEndfileStatement*) (node)) : NULL) : NULL)
2688 ROSE_DLL_API SgWaitStatement* isSgWaitStatement(SgNode* node);
2689 ROSE_DLL_API const SgWaitStatement* isSgWaitStatement(const SgNode* node);
2690 #define IS_SgWaitStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgWaitStatement::static_variant >> 3] & (1 << (SgWaitStatement::static_variant & 7)))) ? ((SgWaitStatement*) (node)) : NULL) : NULL)
2691 ROSE_DLL_API SgCAFWithTeamStatement* isSgCAFWithTeamStatement(SgNode* node);
2692 ROSE_DLL_API const SgCAFWithTeamStatement* isSgCAFWithTeamStatement(const SgNode* node);
2693 #define IS_SgCAFWithTeamStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgCAFWithTeamStatement::static_variant >> 3] & (1 << (SgCAFWithTeamStatement::static_variant & 7)))) ? ((SgCAFWithTeamStatement*) (node)) : NULL) : NULL)
2694 ROSE_DLL_API SgFormatStatement* isSgFormatStatement(SgNode* node);
2695 ROSE_DLL_API const SgFormatStatement* isSgFormatStatement(const SgNode* node);
2696 #define IS_SgFormatStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgFormatStatement::static_variant >> 3] & (1 << (SgFormatStatement::static_variant & 7)))) ? ((SgFormatStatement*) (node)) : NULL) : NULL)
2697 ROSE_DLL_API SgFortranDo* isSgFortranDo(SgNode* node);
2698 ROSE_DLL_API const SgFortranDo* isSgFortranDo(const SgNode* node);
2699 #define IS_SgFortranDo_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgFortranDo::static_variant >> 3] & (1 << (SgFortranDo::static_variant & 7)))) ? ((SgFortranDo*) (node)) : NULL) : NULL)
2700 ROSE_DLL_API SgForAllStatement* isSgForAllStatement(SgNode* node);
2701 ROSE_DLL_API const SgForAllStatement* isSgForAllStatement(const SgNode* node);
2702 #define IS_SgForAllStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgForAllStatement::static_variant >> 3] & (1 << (SgForAllStatement::static_variant & 7)))) ? ((SgForAllStatement*) (node)) : NULL) : NULL)
2703 ROSE_DLL_API SgIOStatement* isSgIOStatement(SgNode* node);
2704 ROSE_DLL_API const SgIOStatement* isSgIOStatement(const SgNode* node);
2705 #define IS_SgIOStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgIOStatement::static_variant >> 3] & (1 << (SgIOStatement::static_variant & 7)))) ? ((SgIOStatement*) (node)) : NULL) : NULL)
2706 ROSE_DLL_API SgSyncAllStatement* isSgSyncAllStatement(SgNode* node);
2707 ROSE_DLL_API const SgSyncAllStatement* isSgSyncAllStatement(const SgNode* node);
2708 #define IS_SgSyncAllStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgSyncAllStatement::static_variant >> 3] & (1 << (SgSyncAllStatement::static_variant & 7)))) ? ((SgSyncAllStatement*) (node)) : NULL) : NULL)
2709 ROSE_DLL_API SgSyncImagesStatement* isSgSyncImagesStatement(SgNode* node);
2710 ROSE_DLL_API const SgSyncImagesStatement* isSgSyncImagesStatement(const SgNode* node);
2711 #define IS_SgSyncImagesStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgSyncImagesStatement::static_variant >> 3] & (1 << (SgSyncImagesStatement::static_variant & 7)))) ? ((SgSyncImagesStatement*) (node)) : NULL) : NULL)
2712 ROSE_DLL_API SgSyncMemoryStatement* isSgSyncMemoryStatement(SgNode* node);
2713 ROSE_DLL_API const SgSyncMemoryStatement* isSgSyncMemoryStatement(const SgNode* node);
2714 #define IS_SgSyncMemoryStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgSyncMemoryStatement::static_variant >> 3] & (1 << (SgSyncMemoryStatement::static_variant & 7)))) ? ((SgSyncMemoryStatement*) (node)) : NULL) : NULL)
2715 ROSE_DLL_API SgSyncTeamStatement* isSgSyncTeamStatement(SgNode* node);
2716 ROSE_DLL_API const SgSyncTeamStatement* isSgSyncTeamStatement(const SgNode* node);
2717 #define IS_SgSyncTeamStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgSyncTeamStatement::static_variant >> 3] & (1 << (SgSyncTeamStatement::static_variant & 7)))) ? ((SgSyncTeamStatement*) (node)) : NULL) : NULL)
2718 ROSE_DLL_API SgLockStatement* isSgLockStatement(SgNode* node);
2719 ROSE_DLL_API const SgLockStatement* isSgLockStatement(const SgNode* node);
2720 #define IS_SgLockStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgLockStatement::static_variant >> 3] & (1 << (SgLockStatement::static_variant & 7)))) ? ((SgLockStatement*) (node)) : NULL) : NULL)
2721 ROSE_DLL_API SgUnlockStatement* isSgUnlockStatement(SgNode* node);
2722 ROSE_DLL_API const SgUnlockStatement* isSgUnlockStatement(const SgNode* node);
2723 #define IS_SgUnlockStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgUnlockStatement::static_variant >> 3] & (1 << (SgUnlockStatement::static_variant & 7)))) ? ((SgUnlockStatement*) (node)) : NULL) : NULL)
2724 ROSE_DLL_API SgImageControlStatement* isSgImageControlStatement(SgNode* node);
2725 ROSE_DLL_API const SgImageControlStatement* isSgImageControlStatement(const SgNode* node);
2726 #define IS_SgImageControlStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgImageControlStatement::static_variant >> 3] & (1 << (SgImageControlStatement::static_variant & 7)))) ? ((SgImageControlStatement*) (node)) : NULL) : NULL)
2727 ROSE_DLL_API SgUpcNotifyStatement* isSgUpcNotifyStatement(SgNode* node);
2728 ROSE_DLL_API const SgUpcNotifyStatement* isSgUpcNotifyStatement(const SgNode* node);
2729 #define IS_SgUpcNotifyStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgUpcNotifyStatement::static_variant >> 3] & (1 << (SgUpcNotifyStatement::static_variant & 7)))) ? ((SgUpcNotifyStatement*) (node)) : NULL) : NULL)
2730 ROSE_DLL_API SgUpcWaitStatement* isSgUpcWaitStatement(SgNode* node);
2731 ROSE_DLL_API const SgUpcWaitStatement* isSgUpcWaitStatement(const SgNode* node);
2732 #define IS_SgUpcWaitStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgUpcWaitStatement::static_variant >> 3] & (1 << (SgUpcWaitStatement::static_variant & 7)))) ? ((SgUpcWaitStatement*) (node)) : NULL) : NULL)
2733 ROSE_DLL_API SgUpcBarrierStatement* isSgUpcBarrierStatement(SgNode* node);
2734 ROSE_DLL_API const SgUpcBarrierStatement* isSgUpcBarrierStatement(const SgNode* node);
2735 #define IS_SgUpcBarrierStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgUpcBarrierStatement::static_variant >> 3] & (1 << (SgUpcBarrierStatement::static_variant & 7)))) ? ((SgUpcBarrierStatement*) (node)) : NULL) : NULL)
2736 ROSE_DLL_API SgUpcFenceStatement* isSgUpcFenceStatement(SgNode* node);
2737 ROSE_DLL_API const SgUpcFenceStatement* isSgUpcFenceStatement(const SgNode* node);
2738 #define IS_SgUpcFenceStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgUpcFenceStatement::static_variant >> 3] & (1 << (SgUpcFenceStatement::static_variant & 7)))) ? ((SgUpcFenceStatement*) (node)) : NULL) : NULL)
2739 ROSE_DLL_API SgUpcForAllStatement* isSgUpcForAllStatement(SgNode* node);
2740 ROSE_DLL_API const SgUpcForAllStatement* isSgUpcForAllStatement(const SgNode* node);
2741 #define IS_SgUpcForAllStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgUpcForAllStatement::static_variant >> 3] & (1 << (SgUpcForAllStatement::static_variant & 7)))) ? ((SgUpcForAllStatement*) (node)) : NULL) : NULL)
2742 ROSE_DLL_API SgUpirSpmdStatement* isSgUpirSpmdStatement(SgNode* node);
2743 ROSE_DLL_API const SgUpirSpmdStatement* isSgUpirSpmdStatement(const SgNode* node);
2744 #define IS_SgUpirSpmdStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgUpirSpmdStatement::static_variant >> 3] & (1 << (SgUpirSpmdStatement::static_variant & 7)))) ? ((SgUpirSpmdStatement*) (node)) : NULL) : NULL)
2745 ROSE_DLL_API SgOmpLoopStatement* isSgOmpLoopStatement(SgNode* node);
2746 ROSE_DLL_API const SgOmpLoopStatement* isSgOmpLoopStatement(const SgNode* node);
2747 #define IS_SgOmpLoopStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpLoopStatement::static_variant >> 3] & (1 << (SgOmpLoopStatement::static_variant & 7)))) ? ((SgOmpLoopStatement*) (node)) : NULL) : NULL)
2748 ROSE_DLL_API SgOmpScanStatement* isSgOmpScanStatement(SgNode* node);
2749 ROSE_DLL_API const SgOmpScanStatement* isSgOmpScanStatement(const SgNode* node);
2750 #define IS_SgOmpScanStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpScanStatement::static_variant >> 3] & (1 << (SgOmpScanStatement::static_variant & 7)))) ? ((SgOmpScanStatement*) (node)) : NULL) : NULL)
2751 ROSE_DLL_API SgOmpTaskloopStatement* isSgOmpTaskloopStatement(SgNode* node);
2752 ROSE_DLL_API const SgOmpTaskloopStatement* isSgOmpTaskloopStatement(const SgNode* node);
2753 #define IS_SgOmpTaskloopStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpTaskloopStatement::static_variant >> 3] & (1 << (SgOmpTaskloopStatement::static_variant & 7)))) ? ((SgOmpTaskloopStatement*) (node)) : NULL) : NULL)
2754 ROSE_DLL_API SgOmpTaskgroupStatement* isSgOmpTaskgroupStatement(SgNode* node);
2755 ROSE_DLL_API const SgOmpTaskgroupStatement* isSgOmpTaskgroupStatement(const SgNode* node);
2756 #define IS_SgOmpTaskgroupStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpTaskgroupStatement::static_variant >> 3] & (1 << (SgOmpTaskgroupStatement::static_variant & 7)))) ? ((SgOmpTaskgroupStatement*) (node)) : NULL) : NULL)
2757 ROSE_DLL_API SgOmpDepobjStatement* isSgOmpDepobjStatement(SgNode* node);
2758 ROSE_DLL_API const SgOmpDepobjStatement* isSgOmpDepobjStatement(const SgNode* node);
2759 #define IS_SgOmpDepobjStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpDepobjStatement::static_variant >> 3] & (1 << (SgOmpDepobjStatement::static_variant & 7)))) ? ((SgOmpDepobjStatement*) (node)) : NULL) : NULL)
2760 ROSE_DLL_API SgOmpTeamsStatement* isSgOmpTeamsStatement(SgNode* node);
2761 ROSE_DLL_API const SgOmpTeamsStatement* isSgOmpTeamsStatement(const SgNode* node);
2762 #define IS_SgOmpTeamsStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpTeamsStatement::static_variant >> 3] & (1 << (SgOmpTeamsStatement::static_variant & 7)))) ? ((SgOmpTeamsStatement*) (node)) : NULL) : NULL)
2763 ROSE_DLL_API SgOmpCancellationPointStatement* isSgOmpCancellationPointStatement(SgNode* node);
2764 ROSE_DLL_API const SgOmpCancellationPointStatement* isSgOmpCancellationPointStatement(const SgNode* node);
2765 #define IS_SgOmpCancellationPointStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpCancellationPointStatement::static_variant >> 3] & (1 << (SgOmpCancellationPointStatement::static_variant & 7)))) ? ((SgOmpCancellationPointStatement*) (node)) : NULL) : NULL)
2766 ROSE_DLL_API SgOmpDeclareMapperStatement* isSgOmpDeclareMapperStatement(SgNode* node);
2767 ROSE_DLL_API const SgOmpDeclareMapperStatement* isSgOmpDeclareMapperStatement(const SgNode* node);
2768 #define IS_SgOmpDeclareMapperStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpDeclareMapperStatement::static_variant >> 3] & (1 << (SgOmpDeclareMapperStatement::static_variant & 7)))) ? ((SgOmpDeclareMapperStatement*) (node)) : NULL) : NULL)
2769 ROSE_DLL_API SgOmpCancelStatement* isSgOmpCancelStatement(SgNode* node);
2770 ROSE_DLL_API const SgOmpCancelStatement* isSgOmpCancelStatement(const SgNode* node);
2771 #define IS_SgOmpCancelStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpCancelStatement::static_variant >> 3] & (1 << (SgOmpCancelStatement::static_variant & 7)))) ? ((SgOmpCancelStatement*) (node)) : NULL) : NULL)
2772 ROSE_DLL_API SgOmpDistributeStatement* isSgOmpDistributeStatement(SgNode* node);
2773 ROSE_DLL_API const SgOmpDistributeStatement* isSgOmpDistributeStatement(const SgNode* node);
2774 #define IS_SgOmpDistributeStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpDistributeStatement::static_variant >> 3] & (1 << (SgOmpDistributeStatement::static_variant & 7)))) ? ((SgOmpDistributeStatement*) (node)) : NULL) : NULL)
2775 ROSE_DLL_API SgOmpMetadirectiveStatement* isSgOmpMetadirectiveStatement(SgNode* node);
2776 ROSE_DLL_API const SgOmpMetadirectiveStatement* isSgOmpMetadirectiveStatement(const SgNode* node);
2777 #define IS_SgOmpMetadirectiveStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpMetadirectiveStatement::static_variant >> 3] & (1 << (SgOmpMetadirectiveStatement::static_variant & 7)))) ? ((SgOmpMetadirectiveStatement*) (node)) : NULL) : NULL)
2778 ROSE_DLL_API SgOmpSingleStatement* isSgOmpSingleStatement(SgNode* node);
2779 ROSE_DLL_API const SgOmpSingleStatement* isSgOmpSingleStatement(const SgNode* node);
2780 #define IS_SgOmpSingleStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpSingleStatement::static_variant >> 3] & (1 << (SgOmpSingleStatement::static_variant & 7)))) ? ((SgOmpSingleStatement*) (node)) : NULL) : NULL)
2781 ROSE_DLL_API SgOmpTaskStatement* isSgOmpTaskStatement(SgNode* node);
2782 ROSE_DLL_API const SgOmpTaskStatement* isSgOmpTaskStatement(const SgNode* node);
2783 #define IS_SgOmpTaskStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpTaskStatement::static_variant >> 3] & (1 << (SgOmpTaskStatement::static_variant & 7)))) ? ((SgOmpTaskStatement*) (node)) : NULL) : NULL)
2784 ROSE_DLL_API SgOmpTargetEnterDataStatement* isSgOmpTargetEnterDataStatement(SgNode* node);
2785 ROSE_DLL_API const SgOmpTargetEnterDataStatement* isSgOmpTargetEnterDataStatement(const SgNode* node);
2786 #define IS_SgOmpTargetEnterDataStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpTargetEnterDataStatement::static_variant >> 3] & (1 << (SgOmpTargetEnterDataStatement::static_variant & 7)))) ? ((SgOmpTargetEnterDataStatement*) (node)) : NULL) : NULL)
2787 ROSE_DLL_API SgOmpTargetExitDataStatement* isSgOmpTargetExitDataStatement(SgNode* node);
2788 ROSE_DLL_API const SgOmpTargetExitDataStatement* isSgOmpTargetExitDataStatement(const SgNode* node);
2789 #define IS_SgOmpTargetExitDataStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpTargetExitDataStatement::static_variant >> 3] & (1 << (SgOmpTargetExitDataStatement::static_variant & 7)))) ? ((SgOmpTargetExitDataStatement*) (node)) : NULL) : NULL)
2790 ROSE_DLL_API SgUpirWorksharingStatement* isSgUpirWorksharingStatement(SgNode* node);
2791 ROSE_DLL_API const SgUpirWorksharingStatement* isSgUpirWorksharingStatement(const SgNode* node);
2792 #define IS_SgUpirWorksharingStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgUpirWorksharingStatement::static_variant >> 3] & (1 << (SgUpirWorksharingStatement::static_variant & 7)))) ? ((SgUpirWorksharingStatement*) (node)) : NULL) : NULL)
2793 ROSE_DLL_API SgOmpForSimdStatement* isSgOmpForSimdStatement(SgNode* node);
2794 ROSE_DLL_API const SgOmpForSimdStatement* isSgOmpForSimdStatement(const SgNode* node);
2795 #define IS_SgOmpForSimdStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpForSimdStatement::static_variant >> 3] & (1 << (SgOmpForSimdStatement::static_variant & 7)))) ? ((SgOmpForSimdStatement*) (node)) : NULL) : NULL)
2796 ROSE_DLL_API SgOmpDoStatement* isSgOmpDoStatement(SgNode* node);
2797 ROSE_DLL_API const SgOmpDoStatement* isSgOmpDoStatement(const SgNode* node);
2798 #define IS_SgOmpDoStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpDoStatement::static_variant >> 3] & (1 << (SgOmpDoStatement::static_variant & 7)))) ? ((SgOmpDoStatement*) (node)) : NULL) : NULL)
2799 ROSE_DLL_API SgOmpSectionsStatement* isSgOmpSectionsStatement(SgNode* node);
2800 ROSE_DLL_API const SgOmpSectionsStatement* isSgOmpSectionsStatement(const SgNode* node);
2801 #define IS_SgOmpSectionsStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpSectionsStatement::static_variant >> 3] & (1 << (SgOmpSectionsStatement::static_variant & 7)))) ? ((SgOmpSectionsStatement*) (node)) : NULL) : NULL)
2802 ROSE_DLL_API SgOmpAtomicStatement* isSgOmpAtomicStatement(SgNode* node);
2803 ROSE_DLL_API const SgOmpAtomicStatement* isSgOmpAtomicStatement(const SgNode* node);
2804 #define IS_SgOmpAtomicStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpAtomicStatement::static_variant >> 3] & (1 << (SgOmpAtomicStatement::static_variant & 7)))) ? ((SgOmpAtomicStatement*) (node)) : NULL) : NULL)
2805 ROSE_DLL_API SgUpirTaskStatement* isSgUpirTaskStatement(SgNode* node);
2806 ROSE_DLL_API const SgUpirTaskStatement* isSgUpirTaskStatement(const SgNode* node);
2807 #define IS_SgUpirTaskStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgUpirTaskStatement::static_variant >> 3] & (1 << (SgUpirTaskStatement::static_variant & 7)))) ? ((SgUpirTaskStatement*) (node)) : NULL) : NULL)
2808 ROSE_DLL_API SgOmpTargetDataStatement* isSgOmpTargetDataStatement(SgNode* node);
2809 ROSE_DLL_API const SgOmpTargetDataStatement* isSgOmpTargetDataStatement(const SgNode* node);
2810 #define IS_SgOmpTargetDataStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpTargetDataStatement::static_variant >> 3] & (1 << (SgOmpTargetDataStatement::static_variant & 7)))) ? ((SgOmpTargetDataStatement*) (node)) : NULL) : NULL)
2811 ROSE_DLL_API SgOmpTargetParallelForStatement* isSgOmpTargetParallelForStatement(SgNode* node);
2812 ROSE_DLL_API const SgOmpTargetParallelForStatement* isSgOmpTargetParallelForStatement(const SgNode* node);
2813 #define IS_SgOmpTargetParallelForStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpTargetParallelForStatement::static_variant >> 3] & (1 << (SgOmpTargetParallelForStatement::static_variant & 7)))) ? ((SgOmpTargetParallelForStatement*) (node)) : NULL) : NULL)
2814 ROSE_DLL_API SgOmpTargetParallelStatement* isSgOmpTargetParallelStatement(SgNode* node);
2815 ROSE_DLL_API const SgOmpTargetParallelStatement* isSgOmpTargetParallelStatement(const SgNode* node);
2816 #define IS_SgOmpTargetParallelStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpTargetParallelStatement::static_variant >> 3] & (1 << (SgOmpTargetParallelStatement::static_variant & 7)))) ? ((SgOmpTargetParallelStatement*) (node)) : NULL) : NULL)
2817 ROSE_DLL_API SgOmpDistributeSimdStatement* isSgOmpDistributeSimdStatement(SgNode* node);
2818 ROSE_DLL_API const SgOmpDistributeSimdStatement* isSgOmpDistributeSimdStatement(const SgNode* node);
2819 #define IS_SgOmpDistributeSimdStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpDistributeSimdStatement::static_variant >> 3] & (1 << (SgOmpDistributeSimdStatement::static_variant & 7)))) ? ((SgOmpDistributeSimdStatement*) (node)) : NULL) : NULL)
2820 ROSE_DLL_API SgOmpDistributeParallelForStatement* isSgOmpDistributeParallelForStatement(SgNode* node);
2821 ROSE_DLL_API const SgOmpDistributeParallelForStatement* isSgOmpDistributeParallelForStatement(const SgNode* node);
2822 #define IS_SgOmpDistributeParallelForStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpDistributeParallelForStatement::static_variant >> 3] & (1 << (SgOmpDistributeParallelForStatement::static_variant & 7)))) ? ((SgOmpDistributeParallelForStatement*) (node)) : NULL) : NULL)
2823 ROSE_DLL_API SgOmpDistributeParallelForSimdStatement* isSgOmpDistributeParallelForSimdStatement(SgNode* node);
2824 ROSE_DLL_API const SgOmpDistributeParallelForSimdStatement* isSgOmpDistributeParallelForSimdStatement(const SgNode* node);
2825 #define IS_SgOmpDistributeParallelForSimdStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpDistributeParallelForSimdStatement::static_variant >> 3] & (1 << (SgOmpDistributeParallelForSimdStatement::static_variant & 7)))) ? ((SgOmpDistributeParallelForSimdStatement*) (node)) : NULL) : NULL)
2826 ROSE_DLL_API SgOmpTaskloopSimdStatement* isSgOmpTaskloopSimdStatement(SgNode* node);
2827 ROSE_DLL_API const SgOmpTaskloopSimdStatement* isSgOmpTaskloopSimdStatement(const SgNode* node);
2828 #define IS_SgOmpTaskloopSimdStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpTaskloopSimdStatement::static_variant >> 3] & (1 << (SgOmpTaskloopSimdStatement::static_variant & 7)))) ? ((SgOmpTaskloopSimdStatement*) (node)) : NULL) : NULL)
2829 ROSE_DLL_API SgOmpTargetUpdateStatement* isSgOmpTargetUpdateStatement(SgNode* node);
2830 ROSE_DLL_API const SgOmpTargetUpdateStatement* isSgOmpTargetUpdateStatement(const SgNode* node);
2831 #define IS_SgOmpTargetUpdateStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpTargetUpdateStatement::static_variant >> 3] & (1 << (SgOmpTargetUpdateStatement::static_variant & 7)))) ? ((SgOmpTargetUpdateStatement*) (node)) : NULL) : NULL)
2832 ROSE_DLL_API SgOmpTargetParallelForSimdStatement* isSgOmpTargetParallelForSimdStatement(SgNode* node);
2833 ROSE_DLL_API const SgOmpTargetParallelForSimdStatement* isSgOmpTargetParallelForSimdStatement(const SgNode* node);
2834 #define IS_SgOmpTargetParallelForSimdStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpTargetParallelForSimdStatement::static_variant >> 3] & (1 << (SgOmpTargetParallelForSimdStatement::static_variant & 7)))) ? ((SgOmpTargetParallelForSimdStatement*) (node)) : NULL) : NULL)
2835 ROSE_DLL_API SgOmpTargetParallelLoopStatement* isSgOmpTargetParallelLoopStatement(SgNode* node);
2836 ROSE_DLL_API const SgOmpTargetParallelLoopStatement* isSgOmpTargetParallelLoopStatement(const SgNode* node);
2837 #define IS_SgOmpTargetParallelLoopStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpTargetParallelLoopStatement::static_variant >> 3] & (1 << (SgOmpTargetParallelLoopStatement::static_variant & 7)))) ? ((SgOmpTargetParallelLoopStatement*) (node)) : NULL) : NULL)
2838 ROSE_DLL_API SgOmpTargetSimdStatement* isSgOmpTargetSimdStatement(SgNode* node);
2839 ROSE_DLL_API const SgOmpTargetSimdStatement* isSgOmpTargetSimdStatement(const SgNode* node);
2840 #define IS_SgOmpTargetSimdStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpTargetSimdStatement::static_variant >> 3] & (1 << (SgOmpTargetSimdStatement::static_variant & 7)))) ? ((SgOmpTargetSimdStatement*) (node)) : NULL) : NULL)
2841 ROSE_DLL_API SgOmpTargetTeamsStatement* isSgOmpTargetTeamsStatement(SgNode* node);
2842 ROSE_DLL_API const SgOmpTargetTeamsStatement* isSgOmpTargetTeamsStatement(const SgNode* node);
2843 #define IS_SgOmpTargetTeamsStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpTargetTeamsStatement::static_variant >> 3] & (1 << (SgOmpTargetTeamsStatement::static_variant & 7)))) ? ((SgOmpTargetTeamsStatement*) (node)) : NULL) : NULL)
2844 ROSE_DLL_API SgOmpTargetTeamsDistributeStatement* isSgOmpTargetTeamsDistributeStatement(SgNode* node);
2845 ROSE_DLL_API const SgOmpTargetTeamsDistributeStatement* isSgOmpTargetTeamsDistributeStatement(const SgNode* node);
2846 #define IS_SgOmpTargetTeamsDistributeStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpTargetTeamsDistributeStatement::static_variant >> 3] & (1 << (SgOmpTargetTeamsDistributeStatement::static_variant & 7)))) ? ((SgOmpTargetTeamsDistributeStatement*) (node)) : NULL) : NULL)
2847 ROSE_DLL_API SgOmpTargetTeamsDistributeSimdStatement* isSgOmpTargetTeamsDistributeSimdStatement(SgNode* node);
2848 ROSE_DLL_API const SgOmpTargetTeamsDistributeSimdStatement* isSgOmpTargetTeamsDistributeSimdStatement(const SgNode* node);
2849 #define IS_SgOmpTargetTeamsDistributeSimdStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpTargetTeamsDistributeSimdStatement::static_variant >> 3] & (1 << (SgOmpTargetTeamsDistributeSimdStatement::static_variant & 7)))) ? ((SgOmpTargetTeamsDistributeSimdStatement*) (node)) : NULL) : NULL)
2850 ROSE_DLL_API SgOmpTargetTeamsLoopStatement* isSgOmpTargetTeamsLoopStatement(SgNode* node);
2851 ROSE_DLL_API const SgOmpTargetTeamsLoopStatement* isSgOmpTargetTeamsLoopStatement(const SgNode* node);
2852 #define IS_SgOmpTargetTeamsLoopStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpTargetTeamsLoopStatement::static_variant >> 3] & (1 << (SgOmpTargetTeamsLoopStatement::static_variant & 7)))) ? ((SgOmpTargetTeamsLoopStatement*) (node)) : NULL) : NULL)
2853 ROSE_DLL_API SgOmpTargetTeamsDistributeParallelForStatement* isSgOmpTargetTeamsDistributeParallelForStatement(SgNode* node);
2854 ROSE_DLL_API const SgOmpTargetTeamsDistributeParallelForStatement* isSgOmpTargetTeamsDistributeParallelForStatement(const SgNode* node);
2855 #define IS_SgOmpTargetTeamsDistributeParallelForStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpTargetTeamsDistributeParallelForStatement::static_variant >> 3] & (1 << (SgOmpTargetTeamsDistributeParallelForStatement::static_variant & 7)))) ? ((SgOmpTargetTeamsDistributeParallelForStatement*) (node)) : NULL) : NULL)
2856 ROSE_DLL_API SgOmpTargetTeamsDistributeParallelForSimdStatement* isSgOmpTargetTeamsDistributeParallelForSimdStatement(SgNode* node);
2857 ROSE_DLL_API const SgOmpTargetTeamsDistributeParallelForSimdStatement* isSgOmpTargetTeamsDistributeParallelForSimdStatement(const SgNode* node);
2858 #define IS_SgOmpTargetTeamsDistributeParallelForSimdStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpTargetTeamsDistributeParallelForSimdStatement::static_variant >> 3] & (1 << (SgOmpTargetTeamsDistributeParallelForSimdStatement::static_variant & 7)))) ? ((SgOmpTargetTeamsDistributeParallelForSimdStatement*) (node)) : NULL) : NULL)
2859 ROSE_DLL_API SgOmpMasterTaskloopSimdStatement* isSgOmpMasterTaskloopSimdStatement(SgNode* node);
2860 ROSE_DLL_API const SgOmpMasterTaskloopSimdStatement* isSgOmpMasterTaskloopSimdStatement(const SgNode* node);
2861 #define IS_SgOmpMasterTaskloopSimdStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpMasterTaskloopSimdStatement::static_variant >> 3] & (1 << (SgOmpMasterTaskloopSimdStatement::static_variant & 7)))) ? ((SgOmpMasterTaskloopSimdStatement*) (node)) : NULL) : NULL)
2862 ROSE_DLL_API SgOmpParallelMasterTaskloopStatement* isSgOmpParallelMasterTaskloopStatement(SgNode* node);
2863 ROSE_DLL_API const SgOmpParallelMasterTaskloopStatement* isSgOmpParallelMasterTaskloopStatement(const SgNode* node);
2864 #define IS_SgOmpParallelMasterTaskloopStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpParallelMasterTaskloopStatement::static_variant >> 3] & (1 << (SgOmpParallelMasterTaskloopStatement::static_variant & 7)))) ? ((SgOmpParallelMasterTaskloopStatement*) (node)) : NULL) : NULL)
2865 ROSE_DLL_API SgOmpParallelMasterTaskloopSimdStatement* isSgOmpParallelMasterTaskloopSimdStatement(SgNode* node);
2866 ROSE_DLL_API const SgOmpParallelMasterTaskloopSimdStatement* isSgOmpParallelMasterTaskloopSimdStatement(const SgNode* node);
2867 #define IS_SgOmpParallelMasterTaskloopSimdStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpParallelMasterTaskloopSimdStatement::static_variant >> 3] & (1 << (SgOmpParallelMasterTaskloopSimdStatement::static_variant & 7)))) ? ((SgOmpParallelMasterTaskloopSimdStatement*) (node)) : NULL) : NULL)
2868 ROSE_DLL_API SgOmpTeamsDistributeStatement* isSgOmpTeamsDistributeStatement(SgNode* node);
2869 ROSE_DLL_API const SgOmpTeamsDistributeStatement* isSgOmpTeamsDistributeStatement(const SgNode* node);
2870 #define IS_SgOmpTeamsDistributeStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpTeamsDistributeStatement::static_variant >> 3] & (1 << (SgOmpTeamsDistributeStatement::static_variant & 7)))) ? ((SgOmpTeamsDistributeStatement*) (node)) : NULL) : NULL)
2871 ROSE_DLL_API SgOmpTeamsDistributeSimdStatement* isSgOmpTeamsDistributeSimdStatement(SgNode* node);
2872 ROSE_DLL_API const SgOmpTeamsDistributeSimdStatement* isSgOmpTeamsDistributeSimdStatement(const SgNode* node);
2873 #define IS_SgOmpTeamsDistributeSimdStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpTeamsDistributeSimdStatement::static_variant >> 3] & (1 << (SgOmpTeamsDistributeSimdStatement::static_variant & 7)))) ? ((SgOmpTeamsDistributeSimdStatement*) (node)) : NULL) : NULL)
2874 ROSE_DLL_API SgOmpTeamsDistributeParallelForStatement* isSgOmpTeamsDistributeParallelForStatement(SgNode* node);
2875 ROSE_DLL_API const SgOmpTeamsDistributeParallelForStatement* isSgOmpTeamsDistributeParallelForStatement(const SgNode* node);
2876 #define IS_SgOmpTeamsDistributeParallelForStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpTeamsDistributeParallelForStatement::static_variant >> 3] & (1 << (SgOmpTeamsDistributeParallelForStatement::static_variant & 7)))) ? ((SgOmpTeamsDistributeParallelForStatement*) (node)) : NULL) : NULL)
2877 ROSE_DLL_API SgOmpTeamsDistributeParallelForSimdStatement* isSgOmpTeamsDistributeParallelForSimdStatement(SgNode* node);
2878 ROSE_DLL_API const SgOmpTeamsDistributeParallelForSimdStatement* isSgOmpTeamsDistributeParallelForSimdStatement(const SgNode* node);
2879 #define IS_SgOmpTeamsDistributeParallelForSimdStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpTeamsDistributeParallelForSimdStatement::static_variant >> 3] & (1 << (SgOmpTeamsDistributeParallelForSimdStatement::static_variant & 7)))) ? ((SgOmpTeamsDistributeParallelForSimdStatement*) (node)) : NULL) : NULL)
2880 ROSE_DLL_API SgOmpTeamsLoopStatement* isSgOmpTeamsLoopStatement(SgNode* node);
2881 ROSE_DLL_API const SgOmpTeamsLoopStatement* isSgOmpTeamsLoopStatement(const SgNode* node);
2882 #define IS_SgOmpTeamsLoopStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpTeamsLoopStatement::static_variant >> 3] & (1 << (SgOmpTeamsLoopStatement::static_variant & 7)))) ? ((SgOmpTeamsLoopStatement*) (node)) : NULL) : NULL)
2883 ROSE_DLL_API SgOmpParallelMasterStatement* isSgOmpParallelMasterStatement(SgNode* node);
2884 ROSE_DLL_API const SgOmpParallelMasterStatement* isSgOmpParallelMasterStatement(const SgNode* node);
2885 #define IS_SgOmpParallelMasterStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpParallelMasterStatement::static_variant >> 3] & (1 << (SgOmpParallelMasterStatement::static_variant & 7)))) ? ((SgOmpParallelMasterStatement*) (node)) : NULL) : NULL)
2886 ROSE_DLL_API SgOmpMasterTaskloopStatement* isSgOmpMasterTaskloopStatement(SgNode* node);
2887 ROSE_DLL_API const SgOmpMasterTaskloopStatement* isSgOmpMasterTaskloopStatement(const SgNode* node);
2888 #define IS_SgOmpMasterTaskloopStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpMasterTaskloopStatement::static_variant >> 3] & (1 << (SgOmpMasterTaskloopStatement::static_variant & 7)))) ? ((SgOmpMasterTaskloopStatement*) (node)) : NULL) : NULL)
2889 ROSE_DLL_API SgOmpParallelLoopStatement* isSgOmpParallelLoopStatement(SgNode* node);
2890 ROSE_DLL_API const SgOmpParallelLoopStatement* isSgOmpParallelLoopStatement(const SgNode* node);
2891 #define IS_SgOmpParallelLoopStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpParallelLoopStatement::static_variant >> 3] & (1 << (SgOmpParallelLoopStatement::static_variant & 7)))) ? ((SgOmpParallelLoopStatement*) (node)) : NULL) : NULL)
2892 ROSE_DLL_API SgOmpUnrollStatement* isSgOmpUnrollStatement(SgNode* node);
2893 ROSE_DLL_API const SgOmpUnrollStatement* isSgOmpUnrollStatement(const SgNode* node);
2894 #define IS_SgOmpUnrollStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpUnrollStatement::static_variant >> 3] & (1 << (SgOmpUnrollStatement::static_variant & 7)))) ? ((SgOmpUnrollStatement*) (node)) : NULL) : NULL)
2895 ROSE_DLL_API SgOmpTileStatement* isSgOmpTileStatement(SgNode* node);
2896 ROSE_DLL_API const SgOmpTileStatement* isSgOmpTileStatement(const SgNode* node);
2897 #define IS_SgOmpTileStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpTileStatement::static_variant >> 3] & (1 << (SgOmpTileStatement::static_variant & 7)))) ? ((SgOmpTileStatement*) (node)) : NULL) : NULL)
2898 ROSE_DLL_API SgUpirSimdStatement* isSgUpirSimdStatement(SgNode* node);
2899 ROSE_DLL_API const SgUpirSimdStatement* isSgUpirSimdStatement(const SgNode* node);
2900 #define IS_SgUpirSimdStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgUpirSimdStatement::static_variant >> 3] & (1 << (SgUpirSimdStatement::static_variant & 7)))) ? ((SgUpirSimdStatement*) (node)) : NULL) : NULL)
2901 ROSE_DLL_API SgOmpCriticalStatement* isSgOmpCriticalStatement(SgNode* node);
2902 ROSE_DLL_API const SgOmpCriticalStatement* isSgOmpCriticalStatement(const SgNode* node);
2903 #define IS_SgOmpCriticalStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpCriticalStatement::static_variant >> 3] & (1 << (SgOmpCriticalStatement::static_variant & 7)))) ? ((SgOmpCriticalStatement*) (node)) : NULL) : NULL)
2904 ROSE_DLL_API SgOmpOrderedStatement* isSgOmpOrderedStatement(SgNode* node);
2905 ROSE_DLL_API const SgOmpOrderedStatement* isSgOmpOrderedStatement(const SgNode* node);
2906 #define IS_SgOmpOrderedStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpOrderedStatement::static_variant >> 3] & (1 << (SgOmpOrderedStatement::static_variant & 7)))) ? ((SgOmpOrderedStatement*) (node)) : NULL) : NULL)
2907 ROSE_DLL_API SgUpirLoopStatement* isSgUpirLoopStatement(SgNode* node);
2908 ROSE_DLL_API const SgUpirLoopStatement* isSgUpirLoopStatement(const SgNode* node);
2909 #define IS_SgUpirLoopStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgUpirLoopStatement::static_variant >> 3] & (1 << (SgUpirLoopStatement::static_variant & 7)))) ? ((SgUpirLoopStatement*) (node)) : NULL) : NULL)
2910 ROSE_DLL_API SgUpirLoopParallelStatement* isSgUpirLoopParallelStatement(SgNode* node);
2911 ROSE_DLL_API const SgUpirLoopParallelStatement* isSgUpirLoopParallelStatement(const SgNode* node);
2912 #define IS_SgUpirLoopParallelStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgUpirLoopParallelStatement::static_variant >> 3] & (1 << (SgUpirLoopParallelStatement::static_variant & 7)))) ? ((SgUpirLoopParallelStatement*) (node)) : NULL) : NULL)
2913 ROSE_DLL_API SgUpirSyncStatement* isSgUpirSyncStatement(SgNode* node);
2914 ROSE_DLL_API const SgUpirSyncStatement* isSgUpirSyncStatement(const SgNode* node);
2915 #define IS_SgUpirSyncStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgUpirSyncStatement::static_variant >> 3] & (1 << (SgUpirSyncStatement::static_variant & 7)))) ? ((SgUpirSyncStatement*) (node)) : NULL) : NULL)
2916 ROSE_DLL_API SgUpirFieldBodyStatement* isSgUpirFieldBodyStatement(SgNode* node);
2917 ROSE_DLL_API const SgUpirFieldBodyStatement* isSgUpirFieldBodyStatement(const SgNode* node);
2918 #define IS_SgUpirFieldBodyStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgUpirFieldBodyStatement::static_variant >> 3] & (1 << (SgUpirFieldBodyStatement::static_variant & 7)))) ? ((SgUpirFieldBodyStatement*) (node)) : NULL) : NULL)
2919 ROSE_DLL_API SgOmpMasterStatement* isSgOmpMasterStatement(SgNode* node);
2920 ROSE_DLL_API const SgOmpMasterStatement* isSgOmpMasterStatement(const SgNode* node);
2921 #define IS_SgOmpMasterStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpMasterStatement::static_variant >> 3] & (1 << (SgOmpMasterStatement::static_variant & 7)))) ? ((SgOmpMasterStatement*) (node)) : NULL) : NULL)
2922 ROSE_DLL_API SgOmpSectionStatement* isSgOmpSectionStatement(SgNode* node);
2923 ROSE_DLL_API const SgOmpSectionStatement* isSgOmpSectionStatement(const SgNode* node);
2924 #define IS_SgOmpSectionStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpSectionStatement::static_variant >> 3] & (1 << (SgOmpSectionStatement::static_variant & 7)))) ? ((SgOmpSectionStatement*) (node)) : NULL) : NULL)
2925 ROSE_DLL_API SgOmpWorkshareStatement* isSgOmpWorkshareStatement(SgNode* node);
2926 ROSE_DLL_API const SgOmpWorkshareStatement* isSgOmpWorkshareStatement(const SgNode* node);
2927 #define IS_SgOmpWorkshareStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpWorkshareStatement::static_variant >> 3] & (1 << (SgOmpWorkshareStatement::static_variant & 7)))) ? ((SgOmpWorkshareStatement*) (node)) : NULL) : NULL)
2928 ROSE_DLL_API SgOmpFlushStatement* isSgOmpFlushStatement(SgNode* node);
2929 ROSE_DLL_API const SgOmpFlushStatement* isSgOmpFlushStatement(const SgNode* node);
2930 #define IS_SgOmpFlushStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpFlushStatement::static_variant >> 3] & (1 << (SgOmpFlushStatement::static_variant & 7)))) ? ((SgOmpFlushStatement*) (node)) : NULL) : NULL)
2931 ROSE_DLL_API SgOmpAllocateStatement* isSgOmpAllocateStatement(SgNode* node);
2932 ROSE_DLL_API const SgOmpAllocateStatement* isSgOmpAllocateStatement(const SgNode* node);
2933 #define IS_SgOmpAllocateStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpAllocateStatement::static_variant >> 3] & (1 << (SgOmpAllocateStatement::static_variant & 7)))) ? ((SgOmpAllocateStatement*) (node)) : NULL) : NULL)
2934 ROSE_DLL_API SgOmpOrderedDependStatement* isSgOmpOrderedDependStatement(SgNode* node);
2935 ROSE_DLL_API const SgOmpOrderedDependStatement* isSgOmpOrderedDependStatement(const SgNode* node);
2936 #define IS_SgOmpOrderedDependStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpOrderedDependStatement::static_variant >> 3] & (1 << (SgOmpOrderedDependStatement::static_variant & 7)))) ? ((SgOmpOrderedDependStatement*) (node)) : NULL) : NULL)
2937 ROSE_DLL_API SgUpirBodyStatement* isSgUpirBodyStatement(SgNode* node);
2938 ROSE_DLL_API const SgUpirBodyStatement* isSgUpirBodyStatement(const SgNode* node);
2939 #define IS_SgUpirBodyStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgUpirBodyStatement::static_variant >> 3] & (1 << (SgUpirBodyStatement::static_variant & 7)))) ? ((SgUpirBodyStatement*) (node)) : NULL) : NULL)
2940 ROSE_DLL_API SgUpirFieldStatement* isSgUpirFieldStatement(SgNode* node);
2941 ROSE_DLL_API const SgUpirFieldStatement* isSgUpirFieldStatement(const SgNode* node);
2942 #define IS_SgUpirFieldStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgUpirFieldStatement::static_variant >> 3] & (1 << (SgUpirFieldStatement::static_variant & 7)))) ? ((SgUpirFieldStatement*) (node)) : NULL) : NULL)
2943 ROSE_DLL_API SgBlockDataStatement* isSgBlockDataStatement(SgNode* node);
2944 ROSE_DLL_API const SgBlockDataStatement* isSgBlockDataStatement(const SgNode* node);
2945 #define IS_SgBlockDataStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgBlockDataStatement::static_variant >> 3] & (1 << (SgBlockDataStatement::static_variant & 7)))) ? ((SgBlockDataStatement*) (node)) : NULL) : NULL)
2946 ROSE_DLL_API SgImplicitStatement* isSgImplicitStatement(SgNode* node);
2947 ROSE_DLL_API const SgImplicitStatement* isSgImplicitStatement(const SgNode* node);
2948 #define IS_SgImplicitStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgImplicitStatement::static_variant >> 3] & (1 << (SgImplicitStatement::static_variant & 7)))) ? ((SgImplicitStatement*) (node)) : NULL) : NULL)
2949 ROSE_DLL_API SgStatementFunctionStatement* isSgStatementFunctionStatement(SgNode* node);
2950 ROSE_DLL_API const SgStatementFunctionStatement* isSgStatementFunctionStatement(const SgNode* node);
2951 #define IS_SgStatementFunctionStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgStatementFunctionStatement::static_variant >> 3] & (1 << (SgStatementFunctionStatement::static_variant & 7)))) ? ((SgStatementFunctionStatement*) (node)) : NULL) : NULL)
2952 ROSE_DLL_API SgWhereStatement* isSgWhereStatement(SgNode* node);
2953 ROSE_DLL_API const SgWhereStatement* isSgWhereStatement(const SgNode* node);
2954 #define IS_SgWhereStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgWhereStatement::static_variant >> 3] & (1 << (SgWhereStatement::static_variant & 7)))) ? ((SgWhereStatement*) (node)) : NULL) : NULL)
2955 ROSE_DLL_API SgNullifyStatement* isSgNullifyStatement(SgNode* node);
2956 ROSE_DLL_API const SgNullifyStatement* isSgNullifyStatement(const SgNode* node);
2957 #define IS_SgNullifyStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgNullifyStatement::static_variant >> 3] & (1 << (SgNullifyStatement::static_variant & 7)))) ? ((SgNullifyStatement*) (node)) : NULL) : NULL)
2958 ROSE_DLL_API SgEquivalenceStatement* isSgEquivalenceStatement(SgNode* node);
2959 ROSE_DLL_API const SgEquivalenceStatement* isSgEquivalenceStatement(const SgNode* node);
2960 #define IS_SgEquivalenceStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgEquivalenceStatement::static_variant >> 3] & (1 << (SgEquivalenceStatement::static_variant & 7)))) ? ((SgEquivalenceStatement*) (node)) : NULL) : NULL)
2961 ROSE_DLL_API SgDerivedTypeStatement* isSgDerivedTypeStatement(SgNode* node);
2962 ROSE_DLL_API const SgDerivedTypeStatement* isSgDerivedTypeStatement(const SgNode* node);
2963 #define IS_SgDerivedTypeStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgDerivedTypeStatement::static_variant >> 3] & (1 << (SgDerivedTypeStatement::static_variant & 7)))) ? ((SgDerivedTypeStatement*) (node)) : NULL) : NULL)
2964 ROSE_DLL_API SgAttributeSpecificationStatement* isSgAttributeSpecificationStatement(SgNode* node);
2965 ROSE_DLL_API const SgAttributeSpecificationStatement* isSgAttributeSpecificationStatement(const SgNode* node);
2966 #define IS_SgAttributeSpecificationStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgAttributeSpecificationStatement::static_variant >> 3] & (1 << (SgAttributeSpecificationStatement::static_variant & 7)))) ? ((SgAttributeSpecificationStatement*) (node)) : NULL) : NULL)
2967 ROSE_DLL_API SgAllocateStatement* isSgAllocateStatement(SgNode* node);
2968 ROSE_DLL_API const SgAllocateStatement* isSgAllocateStatement(const SgNode* node);
2969 #define IS_SgAllocateStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgAllocateStatement::static_variant >> 3] & (1 << (SgAllocateStatement::static_variant & 7)))) ? ((SgAllocateStatement*) (node)) : NULL) : NULL)
2970 ROSE_DLL_API SgDeallocateStatement* isSgDeallocateStatement(SgNode* node);
2971 ROSE_DLL_API const SgDeallocateStatement* isSgDeallocateStatement(const SgNode* node);
2972 #define IS_SgDeallocateStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgDeallocateStatement::static_variant >> 3] & (1 << (SgDeallocateStatement::static_variant & 7)))) ? ((SgDeallocateStatement*) (node)) : NULL) : NULL)
2973 ROSE_DLL_API SgContainsStatement* isSgContainsStatement(SgNode* node);
2974 ROSE_DLL_API const SgContainsStatement* isSgContainsStatement(const SgNode* node);
2975 #define IS_SgContainsStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgContainsStatement::static_variant >> 3] & (1 << (SgContainsStatement::static_variant & 7)))) ? ((SgContainsStatement*) (node)) : NULL) : NULL)
2976 ROSE_DLL_API SgSequenceStatement* isSgSequenceStatement(SgNode* node);
2977 ROSE_DLL_API const SgSequenceStatement* isSgSequenceStatement(const SgNode* node);
2978 #define IS_SgSequenceStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgSequenceStatement::static_variant >> 3] & (1 << (SgSequenceStatement::static_variant & 7)))) ? ((SgSequenceStatement*) (node)) : NULL) : NULL)
2979 ROSE_DLL_API SgElseWhereStatement* isSgElseWhereStatement(SgNode* node);
2980 ROSE_DLL_API const SgElseWhereStatement* isSgElseWhereStatement(const SgNode* node);
2981 #define IS_SgElseWhereStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgElseWhereStatement::static_variant >> 3] & (1 << (SgElseWhereStatement::static_variant & 7)))) ? ((SgElseWhereStatement*) (node)) : NULL) : NULL)
2982 ROSE_DLL_API SgArithmeticIfStatement* isSgArithmeticIfStatement(SgNode* node);
2983 ROSE_DLL_API const SgArithmeticIfStatement* isSgArithmeticIfStatement(const SgNode* node);
2984 #define IS_SgArithmeticIfStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgArithmeticIfStatement::static_variant >> 3] & (1 << (SgArithmeticIfStatement::static_variant & 7)))) ? ((SgArithmeticIfStatement*) (node)) : NULL) : NULL)
2985 ROSE_DLL_API SgAssignStatement* isSgAssignStatement(SgNode* node);
2986 ROSE_DLL_API const SgAssignStatement* isSgAssignStatement(const SgNode* node);
2987 #define IS_SgAssignStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgAssignStatement::static_variant >> 3] & (1 << (SgAssignStatement::static_variant & 7)))) ? ((SgAssignStatement*) (node)) : NULL) : NULL)
2988 ROSE_DLL_API SgComputedGotoStatement* isSgComputedGotoStatement(SgNode* node);
2989 ROSE_DLL_API const SgComputedGotoStatement* isSgComputedGotoStatement(const SgNode* node);
2990 #define IS_SgComputedGotoStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgComputedGotoStatement::static_variant >> 3] & (1 << (SgComputedGotoStatement::static_variant & 7)))) ? ((SgComputedGotoStatement*) (node)) : NULL) : NULL)
2991 ROSE_DLL_API SgAssignedGotoStatement* isSgAssignedGotoStatement(SgNode* node);
2992 ROSE_DLL_API const SgAssignedGotoStatement* isSgAssignedGotoStatement(const SgNode* node);
2993 #define IS_SgAssignedGotoStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgAssignedGotoStatement::static_variant >> 3] & (1 << (SgAssignedGotoStatement::static_variant & 7)))) ? ((SgAssignedGotoStatement*) (node)) : NULL) : NULL)
2994 ROSE_DLL_API SgNamelistStatement* isSgNamelistStatement(SgNode* node);
2995 ROSE_DLL_API const SgNamelistStatement* isSgNamelistStatement(const SgNode* node);
2996 #define IS_SgNamelistStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgNamelistStatement::static_variant >> 3] & (1 << (SgNamelistStatement::static_variant & 7)))) ? ((SgNamelistStatement*) (node)) : NULL) : NULL)
2997 ROSE_DLL_API SgImportStatement* isSgImportStatement(SgNode* node);
2998 ROSE_DLL_API const SgImportStatement* isSgImportStatement(const SgNode* node);
2999 #define IS_SgImportStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgImportStatement::static_variant >> 3] & (1 << (SgImportStatement::static_variant & 7)))) ? ((SgImportStatement*) (node)) : NULL) : NULL)
3000 ROSE_DLL_API SgAssociateStatement* isSgAssociateStatement(SgNode* node);
3001 ROSE_DLL_API const SgAssociateStatement* isSgAssociateStatement(const SgNode* node);
3002 #define IS_SgAssociateStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgAssociateStatement::static_variant >> 3] & (1 << (SgAssociateStatement::static_variant & 7)))) ? ((SgAssociateStatement*) (node)) : NULL) : NULL)
3003 ROSE_DLL_API SgFortranIncludeLine* isSgFortranIncludeLine(SgNode* node);
3004 ROSE_DLL_API const SgFortranIncludeLine* isSgFortranIncludeLine(const SgNode* node);
3005 #define IS_SgFortranIncludeLine_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgFortranIncludeLine::static_variant >> 3] & (1 << (SgFortranIncludeLine::static_variant & 7)))) ? ((SgFortranIncludeLine*) (node)) : NULL) : NULL)
3006 ROSE_DLL_API SgNamespaceDeclarationStatement* isSgNamespaceDeclarationStatement(SgNode* node);
3007 ROSE_DLL_API const SgNamespaceDeclarationStatement* isSgNamespaceDeclarationStatement(const SgNode* node);
3008 #define IS_SgNamespaceDeclarationStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgNamespaceDeclarationStatement::static_variant >> 3] & (1 << (SgNamespaceDeclarationStatement::static_variant & 7)))) ? ((SgNamespaceDeclarationStatement*) (node)) : NULL) : NULL)
3009 ROSE_DLL_API SgNamespaceAliasDeclarationStatement* isSgNamespaceAliasDeclarationStatement(SgNode* node);
3010 ROSE_DLL_API const SgNamespaceAliasDeclarationStatement* isSgNamespaceAliasDeclarationStatement(const SgNode* node);
3011 #define IS_SgNamespaceAliasDeclarationStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgNamespaceAliasDeclarationStatement::static_variant >> 3] & (1 << (SgNamespaceAliasDeclarationStatement::static_variant & 7)))) ? ((SgNamespaceAliasDeclarationStatement*) (node)) : NULL) : NULL)
3012 ROSE_DLL_API SgNamespaceDefinitionStatement* isSgNamespaceDefinitionStatement(SgNode* node);
3013 ROSE_DLL_API const SgNamespaceDefinitionStatement* isSgNamespaceDefinitionStatement(const SgNode* node);
3014 #define IS_SgNamespaceDefinitionStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgNamespaceDefinitionStatement::static_variant >> 3] & (1 << (SgNamespaceDefinitionStatement::static_variant & 7)))) ? ((SgNamespaceDefinitionStatement*) (node)) : NULL) : NULL)
3015 ROSE_DLL_API SgUsingDeclarationStatement* isSgUsingDeclarationStatement(SgNode* node);
3016 ROSE_DLL_API const SgUsingDeclarationStatement* isSgUsingDeclarationStatement(const SgNode* node);
3017 #define IS_SgUsingDeclarationStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgUsingDeclarationStatement::static_variant >> 3] & (1 << (SgUsingDeclarationStatement::static_variant & 7)))) ? ((SgUsingDeclarationStatement*) (node)) : NULL) : NULL)
3018 ROSE_DLL_API SgUsingDirectiveStatement* isSgUsingDirectiveStatement(SgNode* node);
3019 ROSE_DLL_API const SgUsingDirectiveStatement* isSgUsingDirectiveStatement(const SgNode* node);
3020 #define IS_SgUsingDirectiveStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgUsingDirectiveStatement::static_variant >> 3] & (1 << (SgUsingDirectiveStatement::static_variant & 7)))) ? ((SgUsingDirectiveStatement*) (node)) : NULL) : NULL)
3021 ROSE_DLL_API SgTemplateInstantiationDirectiveStatement* isSgTemplateInstantiationDirectiveStatement(SgNode* node);
3022 ROSE_DLL_API const SgTemplateInstantiationDirectiveStatement* isSgTemplateInstantiationDirectiveStatement(const SgNode* node);
3023 #define IS_SgTemplateInstantiationDirectiveStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTemplateInstantiationDirectiveStatement::static_variant >> 3] & (1 << (SgTemplateInstantiationDirectiveStatement::static_variant & 7)))) ? ((SgTemplateInstantiationDirectiveStatement*) (node)) : NULL) : NULL)
3024 ROSE_DLL_API SgStaticAssertionDeclaration* isSgStaticAssertionDeclaration(SgNode* node);
3025 ROSE_DLL_API const SgStaticAssertionDeclaration* isSgStaticAssertionDeclaration(const SgNode* node);
3026 #define IS_SgStaticAssertionDeclaration_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgStaticAssertionDeclaration::static_variant >> 3] & (1 << (SgStaticAssertionDeclaration::static_variant & 7)))) ? ((SgStaticAssertionDeclaration*) (node)) : NULL) : NULL)
3027 ROSE_DLL_API SgTemplateClassDefinition* isSgTemplateClassDefinition(SgNode* node);
3028 ROSE_DLL_API const SgTemplateClassDefinition* isSgTemplateClassDefinition(const SgNode* node);
3029 #define IS_SgTemplateClassDefinition_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTemplateClassDefinition::static_variant >> 3] & (1 << (SgTemplateClassDefinition::static_variant & 7)))) ? ((SgTemplateClassDefinition*) (node)) : NULL) : NULL)
3030 ROSE_DLL_API SgTemplateFunctionDefinition* isSgTemplateFunctionDefinition(SgNode* node);
3031 ROSE_DLL_API const SgTemplateFunctionDefinition* isSgTemplateFunctionDefinition(const SgNode* node);
3032 #define IS_SgTemplateFunctionDefinition_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTemplateFunctionDefinition::static_variant >> 3] & (1 << (SgTemplateFunctionDefinition::static_variant & 7)))) ? ((SgTemplateFunctionDefinition*) (node)) : NULL) : NULL)
3033 ROSE_DLL_API SgClassDeclaration* isSgClassDeclaration(SgNode* node);
3034 ROSE_DLL_API const SgClassDeclaration* isSgClassDeclaration(const SgNode* node);
3035 #define IS_SgClassDeclaration_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgClassDeclaration::static_variant >> 3] & (1 << (SgClassDeclaration::static_variant & 7)))) ? ((SgClassDeclaration*) (node)) : NULL) : NULL)
3036 ROSE_DLL_API SgClassDefinition* isSgClassDefinition(SgNode* node);
3037 ROSE_DLL_API const SgClassDefinition* isSgClassDefinition(const SgNode* node);
3038 #define IS_SgClassDefinition_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgClassDefinition::static_variant >> 3] & (1 << (SgClassDefinition::static_variant & 7)))) ? ((SgClassDefinition*) (node)) : NULL) : NULL)
3039 ROSE_DLL_API SgFunctionDefinition* isSgFunctionDefinition(SgNode* node);
3040 ROSE_DLL_API const SgFunctionDefinition* isSgFunctionDefinition(const SgNode* node);
3041 #define IS_SgFunctionDefinition_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgFunctionDefinition::static_variant >> 3] & (1 << (SgFunctionDefinition::static_variant & 7)))) ? ((SgFunctionDefinition*) (node)) : NULL) : NULL)
3042 ROSE_DLL_API SgScopeStatement* isSgScopeStatement(SgNode* node);
3043 ROSE_DLL_API const SgScopeStatement* isSgScopeStatement(const SgNode* node);
3044 #define IS_SgScopeStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgScopeStatement::static_variant >> 3] & (1 << (SgScopeStatement::static_variant & 7)))) ? ((SgScopeStatement*) (node)) : NULL) : NULL)
3045 ROSE_DLL_API SgMemberFunctionDeclaration* isSgMemberFunctionDeclaration(SgNode* node);
3046 ROSE_DLL_API const SgMemberFunctionDeclaration* isSgMemberFunctionDeclaration(const SgNode* node);
3047 #define IS_SgMemberFunctionDeclaration_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgMemberFunctionDeclaration::static_variant >> 3] & (1 << (SgMemberFunctionDeclaration::static_variant & 7)))) ? ((SgMemberFunctionDeclaration*) (node)) : NULL) : NULL)
3048 ROSE_DLL_API SgFunctionDeclaration* isSgFunctionDeclaration(SgNode* node);
3049 ROSE_DLL_API const SgFunctionDeclaration* isSgFunctionDeclaration(const SgNode* node);
3050 #define IS_SgFunctionDeclaration_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgFunctionDeclaration::static_variant >> 3] & (1 << (SgFunctionDeclaration::static_variant & 7)))) ? ((SgFunctionDeclaration*) (node)) : NULL) : NULL)
3051 ROSE_DLL_API SgIncludeDirectiveStatement* isSgIncludeDirectiveStatement(SgNode* node);
3052 ROSE_DLL_API const SgIncludeDirectiveStatement* isSgIncludeDirectiveStatement(const SgNode* node);
3053 #define IS_SgIncludeDirectiveStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgIncludeDirectiveStatement::static_variant >> 3] & (1 << (SgIncludeDirectiveStatement::static_variant & 7)))) ? ((SgIncludeDirectiveStatement*) (node)) : NULL) : NULL)
3054 ROSE_DLL_API SgDefineDirectiveStatement* isSgDefineDirectiveStatement(SgNode* node);
3055 ROSE_DLL_API const SgDefineDirectiveStatement* isSgDefineDirectiveStatement(const SgNode* node);
3056 #define IS_SgDefineDirectiveStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgDefineDirectiveStatement::static_variant >> 3] & (1 << (SgDefineDirectiveStatement::static_variant & 7)))) ? ((SgDefineDirectiveStatement*) (node)) : NULL) : NULL)
3057 ROSE_DLL_API SgUndefDirectiveStatement* isSgUndefDirectiveStatement(SgNode* node);
3058 ROSE_DLL_API const SgUndefDirectiveStatement* isSgUndefDirectiveStatement(const SgNode* node);
3059 #define IS_SgUndefDirectiveStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgUndefDirectiveStatement::static_variant >> 3] & (1 << (SgUndefDirectiveStatement::static_variant & 7)))) ? ((SgUndefDirectiveStatement*) (node)) : NULL) : NULL)
3060 ROSE_DLL_API SgIfdefDirectiveStatement* isSgIfdefDirectiveStatement(SgNode* node);
3061 ROSE_DLL_API const SgIfdefDirectiveStatement* isSgIfdefDirectiveStatement(const SgNode* node);
3062 #define IS_SgIfdefDirectiveStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgIfdefDirectiveStatement::static_variant >> 3] & (1 << (SgIfdefDirectiveStatement::static_variant & 7)))) ? ((SgIfdefDirectiveStatement*) (node)) : NULL) : NULL)
3063 ROSE_DLL_API SgIfndefDirectiveStatement* isSgIfndefDirectiveStatement(SgNode* node);
3064 ROSE_DLL_API const SgIfndefDirectiveStatement* isSgIfndefDirectiveStatement(const SgNode* node);
3065 #define IS_SgIfndefDirectiveStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgIfndefDirectiveStatement::static_variant >> 3] & (1 << (SgIfndefDirectiveStatement::static_variant & 7)))) ? ((SgIfndefDirectiveStatement*) (node)) : NULL) : NULL)
3066 ROSE_DLL_API SgIfDirectiveStatement* isSgIfDirectiveStatement(SgNode* node);
3067 ROSE_DLL_API const SgIfDirectiveStatement* isSgIfDirectiveStatement(const SgNode* node);
3068 #define IS_SgIfDirectiveStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgIfDirectiveStatement::static_variant >> 3] & (1 << (SgIfDirectiveStatement::static_variant & 7)))) ? ((SgIfDirectiveStatement*) (node)) : NULL) : NULL)
3069 ROSE_DLL_API SgDeadIfDirectiveStatement* isSgDeadIfDirectiveStatement(SgNode* node);
3070 ROSE_DLL_API const SgDeadIfDirectiveStatement* isSgDeadIfDirectiveStatement(const SgNode* node);
3071 #define IS_SgDeadIfDirectiveStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgDeadIfDirectiveStatement::static_variant >> 3] & (1 << (SgDeadIfDirectiveStatement::static_variant & 7)))) ? ((SgDeadIfDirectiveStatement*) (node)) : NULL) : NULL)
3072 ROSE_DLL_API SgElseDirectiveStatement* isSgElseDirectiveStatement(SgNode* node);
3073 ROSE_DLL_API const SgElseDirectiveStatement* isSgElseDirectiveStatement(const SgNode* node);
3074 #define IS_SgElseDirectiveStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgElseDirectiveStatement::static_variant >> 3] & (1 << (SgElseDirectiveStatement::static_variant & 7)))) ? ((SgElseDirectiveStatement*) (node)) : NULL) : NULL)
3075 ROSE_DLL_API SgElseifDirectiveStatement* isSgElseifDirectiveStatement(SgNode* node);
3076 ROSE_DLL_API const SgElseifDirectiveStatement* isSgElseifDirectiveStatement(const SgNode* node);
3077 #define IS_SgElseifDirectiveStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgElseifDirectiveStatement::static_variant >> 3] & (1 << (SgElseifDirectiveStatement::static_variant & 7)))) ? ((SgElseifDirectiveStatement*) (node)) : NULL) : NULL)
3078 ROSE_DLL_API SgEndifDirectiveStatement* isSgEndifDirectiveStatement(SgNode* node);
3079 ROSE_DLL_API const SgEndifDirectiveStatement* isSgEndifDirectiveStatement(const SgNode* node);
3080 #define IS_SgEndifDirectiveStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgEndifDirectiveStatement::static_variant >> 3] & (1 << (SgEndifDirectiveStatement::static_variant & 7)))) ? ((SgEndifDirectiveStatement*) (node)) : NULL) : NULL)
3081 ROSE_DLL_API SgLineDirectiveStatement* isSgLineDirectiveStatement(SgNode* node);
3082 ROSE_DLL_API const SgLineDirectiveStatement* isSgLineDirectiveStatement(const SgNode* node);
3083 #define IS_SgLineDirectiveStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgLineDirectiveStatement::static_variant >> 3] & (1 << (SgLineDirectiveStatement::static_variant & 7)))) ? ((SgLineDirectiveStatement*) (node)) : NULL) : NULL)
3084 ROSE_DLL_API SgWarningDirectiveStatement* isSgWarningDirectiveStatement(SgNode* node);
3085 ROSE_DLL_API const SgWarningDirectiveStatement* isSgWarningDirectiveStatement(const SgNode* node);
3086 #define IS_SgWarningDirectiveStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgWarningDirectiveStatement::static_variant >> 3] & (1 << (SgWarningDirectiveStatement::static_variant & 7)))) ? ((SgWarningDirectiveStatement*) (node)) : NULL) : NULL)
3087 ROSE_DLL_API SgErrorDirectiveStatement* isSgErrorDirectiveStatement(SgNode* node);
3088 ROSE_DLL_API const SgErrorDirectiveStatement* isSgErrorDirectiveStatement(const SgNode* node);
3089 #define IS_SgErrorDirectiveStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgErrorDirectiveStatement::static_variant >> 3] & (1 << (SgErrorDirectiveStatement::static_variant & 7)))) ? ((SgErrorDirectiveStatement*) (node)) : NULL) : NULL)
3090 ROSE_DLL_API SgEmptyDirectiveStatement* isSgEmptyDirectiveStatement(SgNode* node);
3091 ROSE_DLL_API const SgEmptyDirectiveStatement* isSgEmptyDirectiveStatement(const SgNode* node);
3092 #define IS_SgEmptyDirectiveStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgEmptyDirectiveStatement::static_variant >> 3] & (1 << (SgEmptyDirectiveStatement::static_variant & 7)))) ? ((SgEmptyDirectiveStatement*) (node)) : NULL) : NULL)
3093 ROSE_DLL_API SgIncludeNextDirectiveStatement* isSgIncludeNextDirectiveStatement(SgNode* node);
3094 ROSE_DLL_API const SgIncludeNextDirectiveStatement* isSgIncludeNextDirectiveStatement(const SgNode* node);
3095 #define IS_SgIncludeNextDirectiveStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgIncludeNextDirectiveStatement::static_variant >> 3] & (1 << (SgIncludeNextDirectiveStatement::static_variant & 7)))) ? ((SgIncludeNextDirectiveStatement*) (node)) : NULL) : NULL)
3096 ROSE_DLL_API SgIdentDirectiveStatement* isSgIdentDirectiveStatement(SgNode* node);
3097 ROSE_DLL_API const SgIdentDirectiveStatement* isSgIdentDirectiveStatement(const SgNode* node);
3098 #define IS_SgIdentDirectiveStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgIdentDirectiveStatement::static_variant >> 3] & (1 << (SgIdentDirectiveStatement::static_variant & 7)))) ? ((SgIdentDirectiveStatement*) (node)) : NULL) : NULL)
3099 ROSE_DLL_API SgLinemarkerDirectiveStatement* isSgLinemarkerDirectiveStatement(SgNode* node);
3100 ROSE_DLL_API const SgLinemarkerDirectiveStatement* isSgLinemarkerDirectiveStatement(const SgNode* node);
3101 #define IS_SgLinemarkerDirectiveStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgLinemarkerDirectiveStatement::static_variant >> 3] & (1 << (SgLinemarkerDirectiveStatement::static_variant & 7)))) ? ((SgLinemarkerDirectiveStatement*) (node)) : NULL) : NULL)
3102 ROSE_DLL_API SgC_PreprocessorDirectiveStatement* isSgC_PreprocessorDirectiveStatement(SgNode* node);
3103 ROSE_DLL_API const SgC_PreprocessorDirectiveStatement* isSgC_PreprocessorDirectiveStatement(const SgNode* node);
3104 #define IS_SgC_PreprocessorDirectiveStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgC_PreprocessorDirectiveStatement::static_variant >> 3] & (1 << (SgC_PreprocessorDirectiveStatement::static_variant & 7)))) ? ((SgC_PreprocessorDirectiveStatement*) (node)) : NULL) : NULL)
3105 ROSE_DLL_API SgClinkageStartStatement* isSgClinkageStartStatement(SgNode* node);
3106 ROSE_DLL_API const SgClinkageStartStatement* isSgClinkageStartStatement(const SgNode* node);
3107 #define IS_SgClinkageStartStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgClinkageStartStatement::static_variant >> 3] & (1 << (SgClinkageStartStatement::static_variant & 7)))) ? ((SgClinkageStartStatement*) (node)) : NULL) : NULL)
3108 ROSE_DLL_API SgClinkageEndStatement* isSgClinkageEndStatement(SgNode* node);
3109 ROSE_DLL_API const SgClinkageEndStatement* isSgClinkageEndStatement(const SgNode* node);
3110 #define IS_SgClinkageEndStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgClinkageEndStatement::static_variant >> 3] & (1 << (SgClinkageEndStatement::static_variant & 7)))) ? ((SgClinkageEndStatement*) (node)) : NULL) : NULL)
3111 ROSE_DLL_API SgClinkageDeclarationStatement* isSgClinkageDeclarationStatement(SgNode* node);
3112 ROSE_DLL_API const SgClinkageDeclarationStatement* isSgClinkageDeclarationStatement(const SgNode* node);
3113 #define IS_SgClinkageDeclarationStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgClinkageDeclarationStatement::static_variant >> 3] & (1 << (SgClinkageDeclarationStatement::static_variant & 7)))) ? ((SgClinkageDeclarationStatement*) (node)) : NULL) : NULL)
3114 ROSE_DLL_API SgOmpDeclareSimdStatement* isSgOmpDeclareSimdStatement(SgNode* node);
3115 ROSE_DLL_API const SgOmpDeclareSimdStatement* isSgOmpDeclareSimdStatement(const SgNode* node);
3116 #define IS_SgOmpDeclareSimdStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpDeclareSimdStatement::static_variant >> 3] & (1 << (SgOmpDeclareSimdStatement::static_variant & 7)))) ? ((SgOmpDeclareSimdStatement*) (node)) : NULL) : NULL)
3117 ROSE_DLL_API SgOmpBarrierStatement* isSgOmpBarrierStatement(SgNode* node);
3118 ROSE_DLL_API const SgOmpBarrierStatement* isSgOmpBarrierStatement(const SgNode* node);
3119 #define IS_SgOmpBarrierStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpBarrierStatement::static_variant >> 3] & (1 << (SgOmpBarrierStatement::static_variant & 7)))) ? ((SgOmpBarrierStatement*) (node)) : NULL) : NULL)
3120 ROSE_DLL_API SgOmpTaskyieldStatement* isSgOmpTaskyieldStatement(SgNode* node);
3121 ROSE_DLL_API const SgOmpTaskyieldStatement* isSgOmpTaskyieldStatement(const SgNode* node);
3122 #define IS_SgOmpTaskyieldStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpTaskyieldStatement::static_variant >> 3] & (1 << (SgOmpTaskyieldStatement::static_variant & 7)))) ? ((SgOmpTaskyieldStatement*) (node)) : NULL) : NULL)
3123 ROSE_DLL_API SgOmpRequiresStatement* isSgOmpRequiresStatement(SgNode* node);
3124 ROSE_DLL_API const SgOmpRequiresStatement* isSgOmpRequiresStatement(const SgNode* node);
3125 #define IS_SgOmpRequiresStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpRequiresStatement::static_variant >> 3] & (1 << (SgOmpRequiresStatement::static_variant & 7)))) ? ((SgOmpRequiresStatement*) (node)) : NULL) : NULL)
3126 ROSE_DLL_API SgOmpTaskwaitStatement* isSgOmpTaskwaitStatement(SgNode* node);
3127 ROSE_DLL_API const SgOmpTaskwaitStatement* isSgOmpTaskwaitStatement(const SgNode* node);
3128 #define IS_SgOmpTaskwaitStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpTaskwaitStatement::static_variant >> 3] & (1 << (SgOmpTaskwaitStatement::static_variant & 7)))) ? ((SgOmpTaskwaitStatement*) (node)) : NULL) : NULL)
3129 ROSE_DLL_API SgOmpThreadprivateStatement* isSgOmpThreadprivateStatement(SgNode* node);
3130 ROSE_DLL_API const SgOmpThreadprivateStatement* isSgOmpThreadprivateStatement(const SgNode* node);
3131 #define IS_SgOmpThreadprivateStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpThreadprivateStatement::static_variant >> 3] & (1 << (SgOmpThreadprivateStatement::static_variant & 7)))) ? ((SgOmpThreadprivateStatement*) (node)) : NULL) : NULL)
3132 ROSE_DLL_API SgMicrosoftAttributeDeclaration* isSgMicrosoftAttributeDeclaration(SgNode* node);
3133 ROSE_DLL_API const SgMicrosoftAttributeDeclaration* isSgMicrosoftAttributeDeclaration(const SgNode* node);
3134 #define IS_SgMicrosoftAttributeDeclaration_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgMicrosoftAttributeDeclaration::static_variant >> 3] & (1 << (SgMicrosoftAttributeDeclaration::static_variant & 7)))) ? ((SgMicrosoftAttributeDeclaration*) (node)) : NULL) : NULL)
3135 ROSE_DLL_API SgEmptyDeclaration* isSgEmptyDeclaration(SgNode* node);
3136 ROSE_DLL_API const SgEmptyDeclaration* isSgEmptyDeclaration(const SgNode* node);
3137 #define IS_SgEmptyDeclaration_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgEmptyDeclaration::static_variant >> 3] & (1 << (SgEmptyDeclaration::static_variant & 7)))) ? ((SgEmptyDeclaration*) (node)) : NULL) : NULL)
3138 ROSE_DLL_API SgDeclarationStatement* isSgDeclarationStatement(SgNode* node);
3139 ROSE_DLL_API const SgDeclarationStatement* isSgDeclarationStatement(const SgNode* node);
3140 #define IS_SgDeclarationStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgDeclarationStatement::static_variant >> 3] & (1 << (SgDeclarationStatement::static_variant & 7)))) ? ((SgDeclarationStatement*) (node)) : NULL) : NULL)
3141 ROSE_DLL_API SgUpirBaseStatement* isSgUpirBaseStatement(SgNode* node);
3142 ROSE_DLL_API const SgUpirBaseStatement* isSgUpirBaseStatement(const SgNode* node);
3143 #define IS_SgUpirBaseStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgUpirBaseStatement::static_variant >> 3] & (1 << (SgUpirBaseStatement::static_variant & 7)))) ? ((SgUpirBaseStatement*) (node)) : NULL) : NULL)
3144 ROSE_DLL_API SgStatement* isSgStatement(SgNode* node);
3145 ROSE_DLL_API const SgStatement* isSgStatement(const SgNode* node);
3146 #define IS_SgStatement_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgStatement::static_variant >> 3] & (1 << (SgStatement::static_variant & 7)))) ? ((SgStatement*) (node)) : NULL) : NULL)
3147 ROSE_DLL_API SgVarRefExp* isSgVarRefExp(SgNode* node);
3148 ROSE_DLL_API const SgVarRefExp* isSgVarRefExp(const SgNode* node);
3149 #define IS_SgVarRefExp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgVarRefExp::static_variant >> 3] & (1 << (SgVarRefExp::static_variant & 7)))) ? ((SgVarRefExp*) (node)) : NULL) : NULL)
3150 ROSE_DLL_API SgNonrealRefExp* isSgNonrealRefExp(SgNode* node);
3151 ROSE_DLL_API const SgNonrealRefExp* isSgNonrealRefExp(const SgNode* node);
3152 #define IS_SgNonrealRefExp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgNonrealRefExp::static_variant >> 3] & (1 << (SgNonrealRefExp::static_variant & 7)))) ? ((SgNonrealRefExp*) (node)) : NULL) : NULL)
3153 ROSE_DLL_API SgCompoundLiteralExp* isSgCompoundLiteralExp(SgNode* node);
3154 ROSE_DLL_API const SgCompoundLiteralExp* isSgCompoundLiteralExp(const SgNode* node);
3155 #define IS_SgCompoundLiteralExp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgCompoundLiteralExp::static_variant >> 3] & (1 << (SgCompoundLiteralExp::static_variant & 7)))) ? ((SgCompoundLiteralExp*) (node)) : NULL) : NULL)
3156 ROSE_DLL_API SgLabelRefExp* isSgLabelRefExp(SgNode* node);
3157 ROSE_DLL_API const SgLabelRefExp* isSgLabelRefExp(const SgNode* node);
3158 #define IS_SgLabelRefExp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgLabelRefExp::static_variant >> 3] & (1 << (SgLabelRefExp::static_variant & 7)))) ? ((SgLabelRefExp*) (node)) : NULL) : NULL)
3159 ROSE_DLL_API SgClassNameRefExp* isSgClassNameRefExp(SgNode* node);
3160 ROSE_DLL_API const SgClassNameRefExp* isSgClassNameRefExp(const SgNode* node);
3161 #define IS_SgClassNameRefExp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgClassNameRefExp::static_variant >> 3] & (1 << (SgClassNameRefExp::static_variant & 7)))) ? ((SgClassNameRefExp*) (node)) : NULL) : NULL)
3162 ROSE_DLL_API SgFunctionRefExp* isSgFunctionRefExp(SgNode* node);
3163 ROSE_DLL_API const SgFunctionRefExp* isSgFunctionRefExp(const SgNode* node);
3164 #define IS_SgFunctionRefExp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgFunctionRefExp::static_variant >> 3] & (1 << (SgFunctionRefExp::static_variant & 7)))) ? ((SgFunctionRefExp*) (node)) : NULL) : NULL)
3165 ROSE_DLL_API SgMemberFunctionRefExp* isSgMemberFunctionRefExp(SgNode* node);
3166 ROSE_DLL_API const SgMemberFunctionRefExp* isSgMemberFunctionRefExp(const SgNode* node);
3167 #define IS_SgMemberFunctionRefExp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgMemberFunctionRefExp::static_variant >> 3] & (1 << (SgMemberFunctionRefExp::static_variant & 7)))) ? ((SgMemberFunctionRefExp*) (node)) : NULL) : NULL)
3168 ROSE_DLL_API SgTemplateFunctionRefExp* isSgTemplateFunctionRefExp(SgNode* node);
3169 ROSE_DLL_API const SgTemplateFunctionRefExp* isSgTemplateFunctionRefExp(const SgNode* node);
3170 #define IS_SgTemplateFunctionRefExp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTemplateFunctionRefExp::static_variant >> 3] & (1 << (SgTemplateFunctionRefExp::static_variant & 7)))) ? ((SgTemplateFunctionRefExp*) (node)) : NULL) : NULL)
3171 ROSE_DLL_API SgTemplateMemberFunctionRefExp* isSgTemplateMemberFunctionRefExp(SgNode* node);
3172 ROSE_DLL_API const SgTemplateMemberFunctionRefExp* isSgTemplateMemberFunctionRefExp(const SgNode* node);
3173 #define IS_SgTemplateMemberFunctionRefExp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTemplateMemberFunctionRefExp::static_variant >> 3] & (1 << (SgTemplateMemberFunctionRefExp::static_variant & 7)))) ? ((SgTemplateMemberFunctionRefExp*) (node)) : NULL) : NULL)
3174 ROSE_DLL_API SgSizeOfOp* isSgSizeOfOp(SgNode* node);
3175 ROSE_DLL_API const SgSizeOfOp* isSgSizeOfOp(const SgNode* node);
3176 #define IS_SgSizeOfOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgSizeOfOp::static_variant >> 3] & (1 << (SgSizeOfOp::static_variant & 7)))) ? ((SgSizeOfOp*) (node)) : NULL) : NULL)
3177 ROSE_DLL_API SgAlignOfOp* isSgAlignOfOp(SgNode* node);
3178 ROSE_DLL_API const SgAlignOfOp* isSgAlignOfOp(const SgNode* node);
3179 #define IS_SgAlignOfOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgAlignOfOp::static_variant >> 3] & (1 << (SgAlignOfOp::static_variant & 7)))) ? ((SgAlignOfOp*) (node)) : NULL) : NULL)
3180 ROSE_DLL_API SgNoexceptOp* isSgNoexceptOp(SgNode* node);
3181 ROSE_DLL_API const SgNoexceptOp* isSgNoexceptOp(const SgNode* node);
3182 #define IS_SgNoexceptOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgNoexceptOp::static_variant >> 3] & (1 << (SgNoexceptOp::static_variant & 7)))) ? ((SgNoexceptOp*) (node)) : NULL) : NULL)
3183 ROSE_DLL_API SgTypeExpression* isSgTypeExpression(SgNode* node);
3184 ROSE_DLL_API const SgTypeExpression* isSgTypeExpression(const SgNode* node);
3185 #define IS_SgTypeExpression_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTypeExpression::static_variant >> 3] & (1 << (SgTypeExpression::static_variant & 7)))) ? ((SgTypeExpression*) (node)) : NULL) : NULL)
3186 ROSE_DLL_API SgLambdaExp* isSgLambdaExp(SgNode* node);
3187 ROSE_DLL_API const SgLambdaExp* isSgLambdaExp(const SgNode* node);
3188 #define IS_SgLambdaExp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgLambdaExp::static_variant >> 3] & (1 << (SgLambdaExp::static_variant & 7)))) ? ((SgLambdaExp*) (node)) : NULL) : NULL)
3189 ROSE_DLL_API SgUpcLocalsizeofExpression* isSgUpcLocalsizeofExpression(SgNode* node);
3190 ROSE_DLL_API const SgUpcLocalsizeofExpression* isSgUpcLocalsizeofExpression(const SgNode* node);
3191 #define IS_SgUpcLocalsizeofExpression_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgUpcLocalsizeofExpression::static_variant >> 3] & (1 << (SgUpcLocalsizeofExpression::static_variant & 7)))) ? ((SgUpcLocalsizeofExpression*) (node)) : NULL) : NULL)
3192 ROSE_DLL_API SgUpcBlocksizeofExpression* isSgUpcBlocksizeofExpression(SgNode* node);
3193 ROSE_DLL_API const SgUpcBlocksizeofExpression* isSgUpcBlocksizeofExpression(const SgNode* node);
3194 #define IS_SgUpcBlocksizeofExpression_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgUpcBlocksizeofExpression::static_variant >> 3] & (1 << (SgUpcBlocksizeofExpression::static_variant & 7)))) ? ((SgUpcBlocksizeofExpression*) (node)) : NULL) : NULL)
3195 ROSE_DLL_API SgUpcElemsizeofExpression* isSgUpcElemsizeofExpression(SgNode* node);
3196 ROSE_DLL_API const SgUpcElemsizeofExpression* isSgUpcElemsizeofExpression(const SgNode* node);
3197 #define IS_SgUpcElemsizeofExpression_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgUpcElemsizeofExpression::static_variant >> 3] & (1 << (SgUpcElemsizeofExpression::static_variant & 7)))) ? ((SgUpcElemsizeofExpression*) (node)) : NULL) : NULL)
3198 ROSE_DLL_API SgVarArgStartOp* isSgVarArgStartOp(SgNode* node);
3199 ROSE_DLL_API const SgVarArgStartOp* isSgVarArgStartOp(const SgNode* node);
3200 #define IS_SgVarArgStartOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgVarArgStartOp::static_variant >> 3] & (1 << (SgVarArgStartOp::static_variant & 7)))) ? ((SgVarArgStartOp*) (node)) : NULL) : NULL)
3201 ROSE_DLL_API SgVarArgStartOneOperandOp* isSgVarArgStartOneOperandOp(SgNode* node);
3202 ROSE_DLL_API const SgVarArgStartOneOperandOp* isSgVarArgStartOneOperandOp(const SgNode* node);
3203 #define IS_SgVarArgStartOneOperandOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgVarArgStartOneOperandOp::static_variant >> 3] & (1 << (SgVarArgStartOneOperandOp::static_variant & 7)))) ? ((SgVarArgStartOneOperandOp*) (node)) : NULL) : NULL)
3204 ROSE_DLL_API SgVarArgOp* isSgVarArgOp(SgNode* node);
3205 ROSE_DLL_API const SgVarArgOp* isSgVarArgOp(const SgNode* node);
3206 #define IS_SgVarArgOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgVarArgOp::static_variant >> 3] & (1 << (SgVarArgOp::static_variant & 7)))) ? ((SgVarArgOp*) (node)) : NULL) : NULL)
3207 ROSE_DLL_API SgVarArgEndOp* isSgVarArgEndOp(SgNode* node);
3208 ROSE_DLL_API const SgVarArgEndOp* isSgVarArgEndOp(const SgNode* node);
3209 #define IS_SgVarArgEndOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgVarArgEndOp::static_variant >> 3] & (1 << (SgVarArgEndOp::static_variant & 7)))) ? ((SgVarArgEndOp*) (node)) : NULL) : NULL)
3210 ROSE_DLL_API SgVarArgCopyOp* isSgVarArgCopyOp(SgNode* node);
3211 ROSE_DLL_API const SgVarArgCopyOp* isSgVarArgCopyOp(const SgNode* node);
3212 #define IS_SgVarArgCopyOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgVarArgCopyOp::static_variant >> 3] & (1 << (SgVarArgCopyOp::static_variant & 7)))) ? ((SgVarArgCopyOp*) (node)) : NULL) : NULL)
3213 ROSE_DLL_API SgTypeIdOp* isSgTypeIdOp(SgNode* node);
3214 ROSE_DLL_API const SgTypeIdOp* isSgTypeIdOp(const SgNode* node);
3215 #define IS_SgTypeIdOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTypeIdOp::static_variant >> 3] & (1 << (SgTypeIdOp::static_variant & 7)))) ? ((SgTypeIdOp*) (node)) : NULL) : NULL)
3216 ROSE_DLL_API SgConditionalExp* isSgConditionalExp(SgNode* node);
3217 ROSE_DLL_API const SgConditionalExp* isSgConditionalExp(const SgNode* node);
3218 #define IS_SgConditionalExp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgConditionalExp::static_variant >> 3] & (1 << (SgConditionalExp::static_variant & 7)))) ? ((SgConditionalExp*) (node)) : NULL) : NULL)
3219 ROSE_DLL_API SgNewExp* isSgNewExp(SgNode* node);
3220 ROSE_DLL_API const SgNewExp* isSgNewExp(const SgNode* node);
3221 #define IS_SgNewExp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgNewExp::static_variant >> 3] & (1 << (SgNewExp::static_variant & 7)))) ? ((SgNewExp*) (node)) : NULL) : NULL)
3222 ROSE_DLL_API SgDeleteExp* isSgDeleteExp(SgNode* node);
3223 ROSE_DLL_API const SgDeleteExp* isSgDeleteExp(const SgNode* node);
3224 #define IS_SgDeleteExp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgDeleteExp::static_variant >> 3] & (1 << (SgDeleteExp::static_variant & 7)))) ? ((SgDeleteExp*) (node)) : NULL) : NULL)
3225 ROSE_DLL_API SgThisExp* isSgThisExp(SgNode* node);
3226 ROSE_DLL_API const SgThisExp* isSgThisExp(const SgNode* node);
3227 #define IS_SgThisExp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgThisExp::static_variant >> 3] & (1 << (SgThisExp::static_variant & 7)))) ? ((SgThisExp*) (node)) : NULL) : NULL)
3228 ROSE_DLL_API SgSuperExp* isSgSuperExp(SgNode* node);
3229 ROSE_DLL_API const SgSuperExp* isSgSuperExp(const SgNode* node);
3230 #define IS_SgSuperExp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgSuperExp::static_variant >> 3] & (1 << (SgSuperExp::static_variant & 7)))) ? ((SgSuperExp*) (node)) : NULL) : NULL)
3231 ROSE_DLL_API SgClassExp* isSgClassExp(SgNode* node);
3232 ROSE_DLL_API const SgClassExp* isSgClassExp(const SgNode* node);
3233 #define IS_SgClassExp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgClassExp::static_variant >> 3] & (1 << (SgClassExp::static_variant & 7)))) ? ((SgClassExp*) (node)) : NULL) : NULL)
3234 ROSE_DLL_API SgRefExp* isSgRefExp(SgNode* node);
3235 ROSE_DLL_API const SgRefExp* isSgRefExp(const SgNode* node);
3236 #define IS_SgRefExp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgRefExp::static_variant >> 3] & (1 << (SgRefExp::static_variant & 7)))) ? ((SgRefExp*) (node)) : NULL) : NULL)
3237 ROSE_DLL_API SgAggregateInitializer* isSgAggregateInitializer(SgNode* node);
3238 ROSE_DLL_API const SgAggregateInitializer* isSgAggregateInitializer(const SgNode* node);
3239 #define IS_SgAggregateInitializer_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgAggregateInitializer::static_variant >> 3] & (1 << (SgAggregateInitializer::static_variant & 7)))) ? ((SgAggregateInitializer*) (node)) : NULL) : NULL)
3240 ROSE_DLL_API SgCompoundInitializer* isSgCompoundInitializer(SgNode* node);
3241 ROSE_DLL_API const SgCompoundInitializer* isSgCompoundInitializer(const SgNode* node);
3242 #define IS_SgCompoundInitializer_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgCompoundInitializer::static_variant >> 3] & (1 << (SgCompoundInitializer::static_variant & 7)))) ? ((SgCompoundInitializer*) (node)) : NULL) : NULL)
3243 ROSE_DLL_API SgConstructorInitializer* isSgConstructorInitializer(SgNode* node);
3244 ROSE_DLL_API const SgConstructorInitializer* isSgConstructorInitializer(const SgNode* node);
3245 #define IS_SgConstructorInitializer_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgConstructorInitializer::static_variant >> 3] & (1 << (SgConstructorInitializer::static_variant & 7)))) ? ((SgConstructorInitializer*) (node)) : NULL) : NULL)
3246 ROSE_DLL_API SgAssignInitializer* isSgAssignInitializer(SgNode* node);
3247 ROSE_DLL_API const SgAssignInitializer* isSgAssignInitializer(const SgNode* node);
3248 #define IS_SgAssignInitializer_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgAssignInitializer::static_variant >> 3] & (1 << (SgAssignInitializer::static_variant & 7)))) ? ((SgAssignInitializer*) (node)) : NULL) : NULL)
3249 ROSE_DLL_API SgBracedInitializer* isSgBracedInitializer(SgNode* node);
3250 ROSE_DLL_API const SgBracedInitializer* isSgBracedInitializer(const SgNode* node);
3251 #define IS_SgBracedInitializer_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgBracedInitializer::static_variant >> 3] & (1 << (SgBracedInitializer::static_variant & 7)))) ? ((SgBracedInitializer*) (node)) : NULL) : NULL)
3252 ROSE_DLL_API SgExpressionRoot* isSgExpressionRoot(SgNode* node);
3253 ROSE_DLL_API const SgExpressionRoot* isSgExpressionRoot(const SgNode* node);
3254 #define IS_SgExpressionRoot_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgExpressionRoot::static_variant >> 3] & (1 << (SgExpressionRoot::static_variant & 7)))) ? ((SgExpressionRoot*) (node)) : NULL) : NULL)
3255 ROSE_DLL_API SgMinusOp* isSgMinusOp(SgNode* node);
3256 ROSE_DLL_API const SgMinusOp* isSgMinusOp(const SgNode* node);
3257 #define IS_SgMinusOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgMinusOp::static_variant >> 3] & (1 << (SgMinusOp::static_variant & 7)))) ? ((SgMinusOp*) (node)) : NULL) : NULL)
3258 ROSE_DLL_API SgUnaryAddOp* isSgUnaryAddOp(SgNode* node);
3259 ROSE_DLL_API const SgUnaryAddOp* isSgUnaryAddOp(const SgNode* node);
3260 #define IS_SgUnaryAddOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgUnaryAddOp::static_variant >> 3] & (1 << (SgUnaryAddOp::static_variant & 7)))) ? ((SgUnaryAddOp*) (node)) : NULL) : NULL)
3261 ROSE_DLL_API SgNotOp* isSgNotOp(SgNode* node);
3262 ROSE_DLL_API const SgNotOp* isSgNotOp(const SgNode* node);
3263 #define IS_SgNotOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgNotOp::static_variant >> 3] & (1 << (SgNotOp::static_variant & 7)))) ? ((SgNotOp*) (node)) : NULL) : NULL)
3264 ROSE_DLL_API SgPointerDerefExp* isSgPointerDerefExp(SgNode* node);
3265 ROSE_DLL_API const SgPointerDerefExp* isSgPointerDerefExp(const SgNode* node);
3266 #define IS_SgPointerDerefExp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgPointerDerefExp::static_variant >> 3] & (1 << (SgPointerDerefExp::static_variant & 7)))) ? ((SgPointerDerefExp*) (node)) : NULL) : NULL)
3267 ROSE_DLL_API SgAddressOfOp* isSgAddressOfOp(SgNode* node);
3268 ROSE_DLL_API const SgAddressOfOp* isSgAddressOfOp(const SgNode* node);
3269 #define IS_SgAddressOfOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgAddressOfOp::static_variant >> 3] & (1 << (SgAddressOfOp::static_variant & 7)))) ? ((SgAddressOfOp*) (node)) : NULL) : NULL)
3270 ROSE_DLL_API SgMinusMinusOp* isSgMinusMinusOp(SgNode* node);
3271 ROSE_DLL_API const SgMinusMinusOp* isSgMinusMinusOp(const SgNode* node);
3272 #define IS_SgMinusMinusOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgMinusMinusOp::static_variant >> 3] & (1 << (SgMinusMinusOp::static_variant & 7)))) ? ((SgMinusMinusOp*) (node)) : NULL) : NULL)
3273 ROSE_DLL_API SgPlusPlusOp* isSgPlusPlusOp(SgNode* node);
3274 ROSE_DLL_API const SgPlusPlusOp* isSgPlusPlusOp(const SgNode* node);
3275 #define IS_SgPlusPlusOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgPlusPlusOp::static_variant >> 3] & (1 << (SgPlusPlusOp::static_variant & 7)))) ? ((SgPlusPlusOp*) (node)) : NULL) : NULL)
3276 ROSE_DLL_API SgBitComplementOp* isSgBitComplementOp(SgNode* node);
3277 ROSE_DLL_API const SgBitComplementOp* isSgBitComplementOp(const SgNode* node);
3278 #define IS_SgBitComplementOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgBitComplementOp::static_variant >> 3] & (1 << (SgBitComplementOp::static_variant & 7)))) ? ((SgBitComplementOp*) (node)) : NULL) : NULL)
3279 ROSE_DLL_API SgRealPartOp* isSgRealPartOp(SgNode* node);
3280 ROSE_DLL_API const SgRealPartOp* isSgRealPartOp(const SgNode* node);
3281 #define IS_SgRealPartOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgRealPartOp::static_variant >> 3] & (1 << (SgRealPartOp::static_variant & 7)))) ? ((SgRealPartOp*) (node)) : NULL) : NULL)
3282 ROSE_DLL_API SgImagPartOp* isSgImagPartOp(SgNode* node);
3283 ROSE_DLL_API const SgImagPartOp* isSgImagPartOp(const SgNode* node);
3284 #define IS_SgImagPartOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgImagPartOp::static_variant >> 3] & (1 << (SgImagPartOp::static_variant & 7)))) ? ((SgImagPartOp*) (node)) : NULL) : NULL)
3285 ROSE_DLL_API SgConjugateOp* isSgConjugateOp(SgNode* node);
3286 ROSE_DLL_API const SgConjugateOp* isSgConjugateOp(const SgNode* node);
3287 #define IS_SgConjugateOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgConjugateOp::static_variant >> 3] & (1 << (SgConjugateOp::static_variant & 7)))) ? ((SgConjugateOp*) (node)) : NULL) : NULL)
3288 ROSE_DLL_API SgCastExp* isSgCastExp(SgNode* node);
3289 ROSE_DLL_API const SgCastExp* isSgCastExp(const SgNode* node);
3290 #define IS_SgCastExp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgCastExp::static_variant >> 3] & (1 << (SgCastExp::static_variant & 7)))) ? ((SgCastExp*) (node)) : NULL) : NULL)
3291 ROSE_DLL_API SgThrowOp* isSgThrowOp(SgNode* node);
3292 ROSE_DLL_API const SgThrowOp* isSgThrowOp(const SgNode* node);
3293 #define IS_SgThrowOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgThrowOp::static_variant >> 3] & (1 << (SgThrowOp::static_variant & 7)))) ? ((SgThrowOp*) (node)) : NULL) : NULL)
3294 ROSE_DLL_API SgArrowExp* isSgArrowExp(SgNode* node);
3295 ROSE_DLL_API const SgArrowExp* isSgArrowExp(const SgNode* node);
3296 #define IS_SgArrowExp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgArrowExp::static_variant >> 3] & (1 << (SgArrowExp::static_variant & 7)))) ? ((SgArrowExp*) (node)) : NULL) : NULL)
3297 ROSE_DLL_API SgDotExp* isSgDotExp(SgNode* node);
3298 ROSE_DLL_API const SgDotExp* isSgDotExp(const SgNode* node);
3299 #define IS_SgDotExp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgDotExp::static_variant >> 3] & (1 << (SgDotExp::static_variant & 7)))) ? ((SgDotExp*) (node)) : NULL) : NULL)
3300 ROSE_DLL_API SgDotStarOp* isSgDotStarOp(SgNode* node);
3301 ROSE_DLL_API const SgDotStarOp* isSgDotStarOp(const SgNode* node);
3302 #define IS_SgDotStarOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgDotStarOp::static_variant >> 3] & (1 << (SgDotStarOp::static_variant & 7)))) ? ((SgDotStarOp*) (node)) : NULL) : NULL)
3303 ROSE_DLL_API SgArrowStarOp* isSgArrowStarOp(SgNode* node);
3304 ROSE_DLL_API const SgArrowStarOp* isSgArrowStarOp(const SgNode* node);
3305 #define IS_SgArrowStarOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgArrowStarOp::static_variant >> 3] & (1 << (SgArrowStarOp::static_variant & 7)))) ? ((SgArrowStarOp*) (node)) : NULL) : NULL)
3306 ROSE_DLL_API SgEqualityOp* isSgEqualityOp(SgNode* node);
3307 ROSE_DLL_API const SgEqualityOp* isSgEqualityOp(const SgNode* node);
3308 #define IS_SgEqualityOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgEqualityOp::static_variant >> 3] & (1 << (SgEqualityOp::static_variant & 7)))) ? ((SgEqualityOp*) (node)) : NULL) : NULL)
3309 ROSE_DLL_API SgLessThanOp* isSgLessThanOp(SgNode* node);
3310 ROSE_DLL_API const SgLessThanOp* isSgLessThanOp(const SgNode* node);
3311 #define IS_SgLessThanOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgLessThanOp::static_variant >> 3] & (1 << (SgLessThanOp::static_variant & 7)))) ? ((SgLessThanOp*) (node)) : NULL) : NULL)
3312 ROSE_DLL_API SgGreaterThanOp* isSgGreaterThanOp(SgNode* node);
3313 ROSE_DLL_API const SgGreaterThanOp* isSgGreaterThanOp(const SgNode* node);
3314 #define IS_SgGreaterThanOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgGreaterThanOp::static_variant >> 3] & (1 << (SgGreaterThanOp::static_variant & 7)))) ? ((SgGreaterThanOp*) (node)) : NULL) : NULL)
3315 ROSE_DLL_API SgNotEqualOp* isSgNotEqualOp(SgNode* node);
3316 ROSE_DLL_API const SgNotEqualOp* isSgNotEqualOp(const SgNode* node);
3317 #define IS_SgNotEqualOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgNotEqualOp::static_variant >> 3] & (1 << (SgNotEqualOp::static_variant & 7)))) ? ((SgNotEqualOp*) (node)) : NULL) : NULL)
3318 ROSE_DLL_API SgLessOrEqualOp* isSgLessOrEqualOp(SgNode* node);
3319 ROSE_DLL_API const SgLessOrEqualOp* isSgLessOrEqualOp(const SgNode* node);
3320 #define IS_SgLessOrEqualOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgLessOrEqualOp::static_variant >> 3] & (1 << (SgLessOrEqualOp::static_variant & 7)))) ? ((SgLessOrEqualOp*) (node)) : NULL) : NULL)
3321 ROSE_DLL_API SgGreaterOrEqualOp* isSgGreaterOrEqualOp(SgNode* node);
3322 ROSE_DLL_API const SgGreaterOrEqualOp* isSgGreaterOrEqualOp(const SgNode* node);
3323 #define IS_SgGreaterOrEqualOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgGreaterOrEqualOp::static_variant >> 3] & (1 << (SgGreaterOrEqualOp::static_variant & 7)))) ? ((SgGreaterOrEqualOp*) (node)) : NULL) : NULL)
3324 ROSE_DLL_API SgAddOp* isSgAddOp(SgNode* node);
3325 ROSE_DLL_API const SgAddOp* isSgAddOp(const SgNode* node);
3326 #define IS_SgAddOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgAddOp::static_variant >> 3] & (1 << (SgAddOp::static_variant & 7)))) ? ((SgAddOp*) (node)) : NULL) : NULL)
3327 ROSE_DLL_API SgSubtractOp* isSgSubtractOp(SgNode* node);
3328 ROSE_DLL_API const SgSubtractOp* isSgSubtractOp(const SgNode* node);
3329 #define IS_SgSubtractOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgSubtractOp::static_variant >> 3] & (1 << (SgSubtractOp::static_variant & 7)))) ? ((SgSubtractOp*) (node)) : NULL) : NULL)
3330 ROSE_DLL_API SgMultiplyOp* isSgMultiplyOp(SgNode* node);
3331 ROSE_DLL_API const SgMultiplyOp* isSgMultiplyOp(const SgNode* node);
3332 #define IS_SgMultiplyOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgMultiplyOp::static_variant >> 3] & (1 << (SgMultiplyOp::static_variant & 7)))) ? ((SgMultiplyOp*) (node)) : NULL) : NULL)
3333 ROSE_DLL_API SgDivideOp* isSgDivideOp(SgNode* node);
3334 ROSE_DLL_API const SgDivideOp* isSgDivideOp(const SgNode* node);
3335 #define IS_SgDivideOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgDivideOp::static_variant >> 3] & (1 << (SgDivideOp::static_variant & 7)))) ? ((SgDivideOp*) (node)) : NULL) : NULL)
3336 ROSE_DLL_API SgIntegerDivideOp* isSgIntegerDivideOp(SgNode* node);
3337 ROSE_DLL_API const SgIntegerDivideOp* isSgIntegerDivideOp(const SgNode* node);
3338 #define IS_SgIntegerDivideOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgIntegerDivideOp::static_variant >> 3] & (1 << (SgIntegerDivideOp::static_variant & 7)))) ? ((SgIntegerDivideOp*) (node)) : NULL) : NULL)
3339 ROSE_DLL_API SgModOp* isSgModOp(SgNode* node);
3340 ROSE_DLL_API const SgModOp* isSgModOp(const SgNode* node);
3341 #define IS_SgModOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgModOp::static_variant >> 3] & (1 << (SgModOp::static_variant & 7)))) ? ((SgModOp*) (node)) : NULL) : NULL)
3342 ROSE_DLL_API SgAndOp* isSgAndOp(SgNode* node);
3343 ROSE_DLL_API const SgAndOp* isSgAndOp(const SgNode* node);
3344 #define IS_SgAndOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgAndOp::static_variant >> 3] & (1 << (SgAndOp::static_variant & 7)))) ? ((SgAndOp*) (node)) : NULL) : NULL)
3345 ROSE_DLL_API SgOrOp* isSgOrOp(SgNode* node);
3346 ROSE_DLL_API const SgOrOp* isSgOrOp(const SgNode* node);
3347 #define IS_SgOrOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOrOp::static_variant >> 3] & (1 << (SgOrOp::static_variant & 7)))) ? ((SgOrOp*) (node)) : NULL) : NULL)
3348 ROSE_DLL_API SgBitXorOp* isSgBitXorOp(SgNode* node);
3349 ROSE_DLL_API const SgBitXorOp* isSgBitXorOp(const SgNode* node);
3350 #define IS_SgBitXorOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgBitXorOp::static_variant >> 3] & (1 << (SgBitXorOp::static_variant & 7)))) ? ((SgBitXorOp*) (node)) : NULL) : NULL)
3351 ROSE_DLL_API SgBitAndOp* isSgBitAndOp(SgNode* node);
3352 ROSE_DLL_API const SgBitAndOp* isSgBitAndOp(const SgNode* node);
3353 #define IS_SgBitAndOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgBitAndOp::static_variant >> 3] & (1 << (SgBitAndOp::static_variant & 7)))) ? ((SgBitAndOp*) (node)) : NULL) : NULL)
3354 ROSE_DLL_API SgBitOrOp* isSgBitOrOp(SgNode* node);
3355 ROSE_DLL_API const SgBitOrOp* isSgBitOrOp(const SgNode* node);
3356 #define IS_SgBitOrOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgBitOrOp::static_variant >> 3] & (1 << (SgBitOrOp::static_variant & 7)))) ? ((SgBitOrOp*) (node)) : NULL) : NULL)
3357 ROSE_DLL_API SgBitEqvOp* isSgBitEqvOp(SgNode* node);
3358 ROSE_DLL_API const SgBitEqvOp* isSgBitEqvOp(const SgNode* node);
3359 #define IS_SgBitEqvOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgBitEqvOp::static_variant >> 3] & (1 << (SgBitEqvOp::static_variant & 7)))) ? ((SgBitEqvOp*) (node)) : NULL) : NULL)
3360 ROSE_DLL_API SgCommaOpExp* isSgCommaOpExp(SgNode* node);
3361 ROSE_DLL_API const SgCommaOpExp* isSgCommaOpExp(const SgNode* node);
3362 #define IS_SgCommaOpExp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgCommaOpExp::static_variant >> 3] & (1 << (SgCommaOpExp::static_variant & 7)))) ? ((SgCommaOpExp*) (node)) : NULL) : NULL)
3363 ROSE_DLL_API SgLshiftOp* isSgLshiftOp(SgNode* node);
3364 ROSE_DLL_API const SgLshiftOp* isSgLshiftOp(const SgNode* node);
3365 #define IS_SgLshiftOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgLshiftOp::static_variant >> 3] & (1 << (SgLshiftOp::static_variant & 7)))) ? ((SgLshiftOp*) (node)) : NULL) : NULL)
3366 ROSE_DLL_API SgRshiftOp* isSgRshiftOp(SgNode* node);
3367 ROSE_DLL_API const SgRshiftOp* isSgRshiftOp(const SgNode* node);
3368 #define IS_SgRshiftOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgRshiftOp::static_variant >> 3] & (1 << (SgRshiftOp::static_variant & 7)))) ? ((SgRshiftOp*) (node)) : NULL) : NULL)
3369 ROSE_DLL_API SgPntrArrRefExp* isSgPntrArrRefExp(SgNode* node);
3370 ROSE_DLL_API const SgPntrArrRefExp* isSgPntrArrRefExp(const SgNode* node);
3371 #define IS_SgPntrArrRefExp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgPntrArrRefExp::static_variant >> 3] & (1 << (SgPntrArrRefExp::static_variant & 7)))) ? ((SgPntrArrRefExp*) (node)) : NULL) : NULL)
3372 ROSE_DLL_API SgScopeOp* isSgScopeOp(SgNode* node);
3373 ROSE_DLL_API const SgScopeOp* isSgScopeOp(const SgNode* node);
3374 #define IS_SgScopeOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgScopeOp::static_variant >> 3] & (1 << (SgScopeOp::static_variant & 7)))) ? ((SgScopeOp*) (node)) : NULL) : NULL)
3375 ROSE_DLL_API SgAssignOp* isSgAssignOp(SgNode* node);
3376 ROSE_DLL_API const SgAssignOp* isSgAssignOp(const SgNode* node);
3377 #define IS_SgAssignOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgAssignOp::static_variant >> 3] & (1 << (SgAssignOp::static_variant & 7)))) ? ((SgAssignOp*) (node)) : NULL) : NULL)
3378 ROSE_DLL_API SgPlusAssignOp* isSgPlusAssignOp(SgNode* node);
3379 ROSE_DLL_API const SgPlusAssignOp* isSgPlusAssignOp(const SgNode* node);
3380 #define IS_SgPlusAssignOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgPlusAssignOp::static_variant >> 3] & (1 << (SgPlusAssignOp::static_variant & 7)))) ? ((SgPlusAssignOp*) (node)) : NULL) : NULL)
3381 ROSE_DLL_API SgMinusAssignOp* isSgMinusAssignOp(SgNode* node);
3382 ROSE_DLL_API const SgMinusAssignOp* isSgMinusAssignOp(const SgNode* node);
3383 #define IS_SgMinusAssignOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgMinusAssignOp::static_variant >> 3] & (1 << (SgMinusAssignOp::static_variant & 7)))) ? ((SgMinusAssignOp*) (node)) : NULL) : NULL)
3384 ROSE_DLL_API SgAndAssignOp* isSgAndAssignOp(SgNode* node);
3385 ROSE_DLL_API const SgAndAssignOp* isSgAndAssignOp(const SgNode* node);
3386 #define IS_SgAndAssignOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgAndAssignOp::static_variant >> 3] & (1 << (SgAndAssignOp::static_variant & 7)))) ? ((SgAndAssignOp*) (node)) : NULL) : NULL)
3387 ROSE_DLL_API SgIorAssignOp* isSgIorAssignOp(SgNode* node);
3388 ROSE_DLL_API const SgIorAssignOp* isSgIorAssignOp(const SgNode* node);
3389 #define IS_SgIorAssignOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgIorAssignOp::static_variant >> 3] & (1 << (SgIorAssignOp::static_variant & 7)))) ? ((SgIorAssignOp*) (node)) : NULL) : NULL)
3390 ROSE_DLL_API SgMultAssignOp* isSgMultAssignOp(SgNode* node);
3391 ROSE_DLL_API const SgMultAssignOp* isSgMultAssignOp(const SgNode* node);
3392 #define IS_SgMultAssignOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgMultAssignOp::static_variant >> 3] & (1 << (SgMultAssignOp::static_variant & 7)))) ? ((SgMultAssignOp*) (node)) : NULL) : NULL)
3393 ROSE_DLL_API SgDivAssignOp* isSgDivAssignOp(SgNode* node);
3394 ROSE_DLL_API const SgDivAssignOp* isSgDivAssignOp(const SgNode* node);
3395 #define IS_SgDivAssignOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgDivAssignOp::static_variant >> 3] & (1 << (SgDivAssignOp::static_variant & 7)))) ? ((SgDivAssignOp*) (node)) : NULL) : NULL)
3396 ROSE_DLL_API SgModAssignOp* isSgModAssignOp(SgNode* node);
3397 ROSE_DLL_API const SgModAssignOp* isSgModAssignOp(const SgNode* node);
3398 #define IS_SgModAssignOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgModAssignOp::static_variant >> 3] & (1 << (SgModAssignOp::static_variant & 7)))) ? ((SgModAssignOp*) (node)) : NULL) : NULL)
3399 ROSE_DLL_API SgXorAssignOp* isSgXorAssignOp(SgNode* node);
3400 ROSE_DLL_API const SgXorAssignOp* isSgXorAssignOp(const SgNode* node);
3401 #define IS_SgXorAssignOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgXorAssignOp::static_variant >> 3] & (1 << (SgXorAssignOp::static_variant & 7)))) ? ((SgXorAssignOp*) (node)) : NULL) : NULL)
3402 ROSE_DLL_API SgLshiftAssignOp* isSgLshiftAssignOp(SgNode* node);
3403 ROSE_DLL_API const SgLshiftAssignOp* isSgLshiftAssignOp(const SgNode* node);
3404 #define IS_SgLshiftAssignOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgLshiftAssignOp::static_variant >> 3] & (1 << (SgLshiftAssignOp::static_variant & 7)))) ? ((SgLshiftAssignOp*) (node)) : NULL) : NULL)
3405 ROSE_DLL_API SgRshiftAssignOp* isSgRshiftAssignOp(SgNode* node);
3406 ROSE_DLL_API const SgRshiftAssignOp* isSgRshiftAssignOp(const SgNode* node);
3407 #define IS_SgRshiftAssignOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgRshiftAssignOp::static_variant >> 3] & (1 << (SgRshiftAssignOp::static_variant & 7)))) ? ((SgRshiftAssignOp*) (node)) : NULL) : NULL)
3408 ROSE_DLL_API SgIntegerDivideAssignOp* isSgIntegerDivideAssignOp(SgNode* node);
3409 ROSE_DLL_API const SgIntegerDivideAssignOp* isSgIntegerDivideAssignOp(const SgNode* node);
3410 #define IS_SgIntegerDivideAssignOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgIntegerDivideAssignOp::static_variant >> 3] & (1 << (SgIntegerDivideAssignOp::static_variant & 7)))) ? ((SgIntegerDivideAssignOp*) (node)) : NULL) : NULL)
3411 ROSE_DLL_API SgExponentiationAssignOp* isSgExponentiationAssignOp(SgNode* node);
3412 ROSE_DLL_API const SgExponentiationAssignOp* isSgExponentiationAssignOp(const SgNode* node);
3413 #define IS_SgExponentiationAssignOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgExponentiationAssignOp::static_variant >> 3] & (1 << (SgExponentiationAssignOp::static_variant & 7)))) ? ((SgExponentiationAssignOp*) (node)) : NULL) : NULL)
3414 ROSE_DLL_API SgConcatenationOp* isSgConcatenationOp(SgNode* node);
3415 ROSE_DLL_API const SgConcatenationOp* isSgConcatenationOp(const SgNode* node);
3416 #define IS_SgConcatenationOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgConcatenationOp::static_variant >> 3] & (1 << (SgConcatenationOp::static_variant & 7)))) ? ((SgConcatenationOp*) (node)) : NULL) : NULL)
3417 ROSE_DLL_API SgNaryComparisonOp* isSgNaryComparisonOp(SgNode* node);
3418 ROSE_DLL_API const SgNaryComparisonOp* isSgNaryComparisonOp(const SgNode* node);
3419 #define IS_SgNaryComparisonOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgNaryComparisonOp::static_variant >> 3] & (1 << (SgNaryComparisonOp::static_variant & 7)))) ? ((SgNaryComparisonOp*) (node)) : NULL) : NULL)
3420 ROSE_DLL_API SgNaryBooleanOp* isSgNaryBooleanOp(SgNode* node);
3421 ROSE_DLL_API const SgNaryBooleanOp* isSgNaryBooleanOp(const SgNode* node);
3422 #define IS_SgNaryBooleanOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgNaryBooleanOp::static_variant >> 3] & (1 << (SgNaryBooleanOp::static_variant & 7)))) ? ((SgNaryBooleanOp*) (node)) : NULL) : NULL)
3423 ROSE_DLL_API SgBoolValExp* isSgBoolValExp(SgNode* node);
3424 ROSE_DLL_API const SgBoolValExp* isSgBoolValExp(const SgNode* node);
3425 #define IS_SgBoolValExp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgBoolValExp::static_variant >> 3] & (1 << (SgBoolValExp::static_variant & 7)))) ? ((SgBoolValExp*) (node)) : NULL) : NULL)
3426 ROSE_DLL_API SgStringVal* isSgStringVal(SgNode* node);
3427 ROSE_DLL_API const SgStringVal* isSgStringVal(const SgNode* node);
3428 #define IS_SgStringVal_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgStringVal::static_variant >> 3] & (1 << (SgStringVal::static_variant & 7)))) ? ((SgStringVal*) (node)) : NULL) : NULL)
3429 ROSE_DLL_API SgShortVal* isSgShortVal(SgNode* node);
3430 ROSE_DLL_API const SgShortVal* isSgShortVal(const SgNode* node);
3431 #define IS_SgShortVal_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgShortVal::static_variant >> 3] & (1 << (SgShortVal::static_variant & 7)))) ? ((SgShortVal*) (node)) : NULL) : NULL)
3432 ROSE_DLL_API SgCharVal* isSgCharVal(SgNode* node);
3433 ROSE_DLL_API const SgCharVal* isSgCharVal(const SgNode* node);
3434 #define IS_SgCharVal_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgCharVal::static_variant >> 3] & (1 << (SgCharVal::static_variant & 7)))) ? ((SgCharVal*) (node)) : NULL) : NULL)
3435 ROSE_DLL_API SgUnsignedCharVal* isSgUnsignedCharVal(SgNode* node);
3436 ROSE_DLL_API const SgUnsignedCharVal* isSgUnsignedCharVal(const SgNode* node);
3437 #define IS_SgUnsignedCharVal_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgUnsignedCharVal::static_variant >> 3] & (1 << (SgUnsignedCharVal::static_variant & 7)))) ? ((SgUnsignedCharVal*) (node)) : NULL) : NULL)
3438 ROSE_DLL_API SgWcharVal* isSgWcharVal(SgNode* node);
3439 ROSE_DLL_API const SgWcharVal* isSgWcharVal(const SgNode* node);
3440 #define IS_SgWcharVal_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgWcharVal::static_variant >> 3] & (1 << (SgWcharVal::static_variant & 7)))) ? ((SgWcharVal*) (node)) : NULL) : NULL)
3441 ROSE_DLL_API SgChar16Val* isSgChar16Val(SgNode* node);
3442 ROSE_DLL_API const SgChar16Val* isSgChar16Val(const SgNode* node);
3443 #define IS_SgChar16Val_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgChar16Val::static_variant >> 3] & (1 << (SgChar16Val::static_variant & 7)))) ? ((SgChar16Val*) (node)) : NULL) : NULL)
3444 ROSE_DLL_API SgChar32Val* isSgChar32Val(SgNode* node);
3445 ROSE_DLL_API const SgChar32Val* isSgChar32Val(const SgNode* node);
3446 #define IS_SgChar32Val_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgChar32Val::static_variant >> 3] & (1 << (SgChar32Val::static_variant & 7)))) ? ((SgChar32Val*) (node)) : NULL) : NULL)
3447 ROSE_DLL_API SgUnsignedShortVal* isSgUnsignedShortVal(SgNode* node);
3448 ROSE_DLL_API const SgUnsignedShortVal* isSgUnsignedShortVal(const SgNode* node);
3449 #define IS_SgUnsignedShortVal_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgUnsignedShortVal::static_variant >> 3] & (1 << (SgUnsignedShortVal::static_variant & 7)))) ? ((SgUnsignedShortVal*) (node)) : NULL) : NULL)
3450 ROSE_DLL_API SgIntVal* isSgIntVal(SgNode* node);
3451 ROSE_DLL_API const SgIntVal* isSgIntVal(const SgNode* node);
3452 #define IS_SgIntVal_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgIntVal::static_variant >> 3] & (1 << (SgIntVal::static_variant & 7)))) ? ((SgIntVal*) (node)) : NULL) : NULL)
3453 ROSE_DLL_API SgEnumVal* isSgEnumVal(SgNode* node);
3454 ROSE_DLL_API const SgEnumVal* isSgEnumVal(const SgNode* node);
3455 #define IS_SgEnumVal_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgEnumVal::static_variant >> 3] & (1 << (SgEnumVal::static_variant & 7)))) ? ((SgEnumVal*) (node)) : NULL) : NULL)
3456 ROSE_DLL_API SgUnsignedIntVal* isSgUnsignedIntVal(SgNode* node);
3457 ROSE_DLL_API const SgUnsignedIntVal* isSgUnsignedIntVal(const SgNode* node);
3458 #define IS_SgUnsignedIntVal_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgUnsignedIntVal::static_variant >> 3] & (1 << (SgUnsignedIntVal::static_variant & 7)))) ? ((SgUnsignedIntVal*) (node)) : NULL) : NULL)
3459 ROSE_DLL_API SgLongIntVal* isSgLongIntVal(SgNode* node);
3460 ROSE_DLL_API const SgLongIntVal* isSgLongIntVal(const SgNode* node);
3461 #define IS_SgLongIntVal_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgLongIntVal::static_variant >> 3] & (1 << (SgLongIntVal::static_variant & 7)))) ? ((SgLongIntVal*) (node)) : NULL) : NULL)
3462 ROSE_DLL_API SgLongLongIntVal* isSgLongLongIntVal(SgNode* node);
3463 ROSE_DLL_API const SgLongLongIntVal* isSgLongLongIntVal(const SgNode* node);
3464 #define IS_SgLongLongIntVal_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgLongLongIntVal::static_variant >> 3] & (1 << (SgLongLongIntVal::static_variant & 7)))) ? ((SgLongLongIntVal*) (node)) : NULL) : NULL)
3465 ROSE_DLL_API SgUnsignedLongLongIntVal* isSgUnsignedLongLongIntVal(SgNode* node);
3466 ROSE_DLL_API const SgUnsignedLongLongIntVal* isSgUnsignedLongLongIntVal(const SgNode* node);
3467 #define IS_SgUnsignedLongLongIntVal_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgUnsignedLongLongIntVal::static_variant >> 3] & (1 << (SgUnsignedLongLongIntVal::static_variant & 7)))) ? ((SgUnsignedLongLongIntVal*) (node)) : NULL) : NULL)
3468 ROSE_DLL_API SgUnsignedLongVal* isSgUnsignedLongVal(SgNode* node);
3469 ROSE_DLL_API const SgUnsignedLongVal* isSgUnsignedLongVal(const SgNode* node);
3470 #define IS_SgUnsignedLongVal_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgUnsignedLongVal::static_variant >> 3] & (1 << (SgUnsignedLongVal::static_variant & 7)))) ? ((SgUnsignedLongVal*) (node)) : NULL) : NULL)
3471 ROSE_DLL_API SgFloatVal* isSgFloatVal(SgNode* node);
3472 ROSE_DLL_API const SgFloatVal* isSgFloatVal(const SgNode* node);
3473 #define IS_SgFloatVal_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgFloatVal::static_variant >> 3] & (1 << (SgFloatVal::static_variant & 7)))) ? ((SgFloatVal*) (node)) : NULL) : NULL)
3474 ROSE_DLL_API SgDoubleVal* isSgDoubleVal(SgNode* node);
3475 ROSE_DLL_API const SgDoubleVal* isSgDoubleVal(const SgNode* node);
3476 #define IS_SgDoubleVal_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgDoubleVal::static_variant >> 3] & (1 << (SgDoubleVal::static_variant & 7)))) ? ((SgDoubleVal*) (node)) : NULL) : NULL)
3477 ROSE_DLL_API SgLongDoubleVal* isSgLongDoubleVal(SgNode* node);
3478 ROSE_DLL_API const SgLongDoubleVal* isSgLongDoubleVal(const SgNode* node);
3479 #define IS_SgLongDoubleVal_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgLongDoubleVal::static_variant >> 3] & (1 << (SgLongDoubleVal::static_variant & 7)))) ? ((SgLongDoubleVal*) (node)) : NULL) : NULL)
3480 ROSE_DLL_API SgFloat80Val* isSgFloat80Val(SgNode* node);
3481 ROSE_DLL_API const SgFloat80Val* isSgFloat80Val(const SgNode* node);
3482 #define IS_SgFloat80Val_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgFloat80Val::static_variant >> 3] & (1 << (SgFloat80Val::static_variant & 7)))) ? ((SgFloat80Val*) (node)) : NULL) : NULL)
3483 ROSE_DLL_API SgFloat128Val* isSgFloat128Val(SgNode* node);
3484 ROSE_DLL_API const SgFloat128Val* isSgFloat128Val(const SgNode* node);
3485 #define IS_SgFloat128Val_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgFloat128Val::static_variant >> 3] & (1 << (SgFloat128Val::static_variant & 7)))) ? ((SgFloat128Val*) (node)) : NULL) : NULL)
3486 ROSE_DLL_API SgNullptrValExp* isSgNullptrValExp(SgNode* node);
3487 ROSE_DLL_API const SgNullptrValExp* isSgNullptrValExp(const SgNode* node);
3488 #define IS_SgNullptrValExp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgNullptrValExp::static_variant >> 3] & (1 << (SgNullptrValExp::static_variant & 7)))) ? ((SgNullptrValExp*) (node)) : NULL) : NULL)
3489 ROSE_DLL_API SgVoidVal* isSgVoidVal(SgNode* node);
3490 ROSE_DLL_API const SgVoidVal* isSgVoidVal(const SgNode* node);
3491 #define IS_SgVoidVal_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgVoidVal::static_variant >> 3] & (1 << (SgVoidVal::static_variant & 7)))) ? ((SgVoidVal*) (node)) : NULL) : NULL)
3492 ROSE_DLL_API SgFunctionParameterRefExp* isSgFunctionParameterRefExp(SgNode* node);
3493 ROSE_DLL_API const SgFunctionParameterRefExp* isSgFunctionParameterRefExp(const SgNode* node);
3494 #define IS_SgFunctionParameterRefExp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgFunctionParameterRefExp::static_variant >> 3] & (1 << (SgFunctionParameterRefExp::static_variant & 7)))) ? ((SgFunctionParameterRefExp*) (node)) : NULL) : NULL)
3495 ROSE_DLL_API SgTemplateParameterVal* isSgTemplateParameterVal(SgNode* node);
3496 ROSE_DLL_API const SgTemplateParameterVal* isSgTemplateParameterVal(const SgNode* node);
3497 #define IS_SgTemplateParameterVal_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTemplateParameterVal::static_variant >> 3] & (1 << (SgTemplateParameterVal::static_variant & 7)))) ? ((SgTemplateParameterVal*) (node)) : NULL) : NULL)
3498 ROSE_DLL_API SgUpcThreads* isSgUpcThreads(SgNode* node);
3499 ROSE_DLL_API const SgUpcThreads* isSgUpcThreads(const SgNode* node);
3500 #define IS_SgUpcThreads_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgUpcThreads::static_variant >> 3] & (1 << (SgUpcThreads::static_variant & 7)))) ? ((SgUpcThreads*) (node)) : NULL) : NULL)
3501 ROSE_DLL_API SgUpcMythread* isSgUpcMythread(SgNode* node);
3502 ROSE_DLL_API const SgUpcMythread* isSgUpcMythread(const SgNode* node);
3503 #define IS_SgUpcMythread_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgUpcMythread::static_variant >> 3] & (1 << (SgUpcMythread::static_variant & 7)))) ? ((SgUpcMythread*) (node)) : NULL) : NULL)
3504 ROSE_DLL_API SgComplexVal* isSgComplexVal(SgNode* node);
3505 ROSE_DLL_API const SgComplexVal* isSgComplexVal(const SgNode* node);
3506 #define IS_SgComplexVal_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgComplexVal::static_variant >> 3] & (1 << (SgComplexVal::static_variant & 7)))) ? ((SgComplexVal*) (node)) : NULL) : NULL)
3507 ROSE_DLL_API SgNullExpression* isSgNullExpression(SgNode* node);
3508 ROSE_DLL_API const SgNullExpression* isSgNullExpression(const SgNode* node);
3509 #define IS_SgNullExpression_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgNullExpression::static_variant >> 3] & (1 << (SgNullExpression::static_variant & 7)))) ? ((SgNullExpression*) (node)) : NULL) : NULL)
3510 ROSE_DLL_API SgVariantExpression* isSgVariantExpression(SgNode* node);
3511 ROSE_DLL_API const SgVariantExpression* isSgVariantExpression(const SgNode* node);
3512 #define IS_SgVariantExpression_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgVariantExpression::static_variant >> 3] & (1 << (SgVariantExpression::static_variant & 7)))) ? ((SgVariantExpression*) (node)) : NULL) : NULL)
3513 ROSE_DLL_API SgStatementExpression* isSgStatementExpression(SgNode* node);
3514 ROSE_DLL_API const SgStatementExpression* isSgStatementExpression(const SgNode* node);
3515 #define IS_SgStatementExpression_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgStatementExpression::static_variant >> 3] & (1 << (SgStatementExpression::static_variant & 7)))) ? ((SgStatementExpression*) (node)) : NULL) : NULL)
3516 ROSE_DLL_API SgAsmOp* isSgAsmOp(SgNode* node);
3517 ROSE_DLL_API const SgAsmOp* isSgAsmOp(const SgNode* node);
3518 #define IS_SgAsmOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgAsmOp::static_variant >> 3] & (1 << (SgAsmOp::static_variant & 7)))) ? ((SgAsmOp*) (node)) : NULL) : NULL)
3519 ROSE_DLL_API SgCudaKernelExecConfig* isSgCudaKernelExecConfig(SgNode* node);
3520 ROSE_DLL_API const SgCudaKernelExecConfig* isSgCudaKernelExecConfig(const SgNode* node);
3521 #define IS_SgCudaKernelExecConfig_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgCudaKernelExecConfig::static_variant >> 3] & (1 << (SgCudaKernelExecConfig::static_variant & 7)))) ? ((SgCudaKernelExecConfig*) (node)) : NULL) : NULL)
3522 ROSE_DLL_API SgCudaKernelCallExp* isSgCudaKernelCallExp(SgNode* node);
3523 ROSE_DLL_API const SgCudaKernelCallExp* isSgCudaKernelCallExp(const SgNode* node);
3524 #define IS_SgCudaKernelCallExp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgCudaKernelCallExp::static_variant >> 3] & (1 << (SgCudaKernelCallExp::static_variant & 7)))) ? ((SgCudaKernelCallExp*) (node)) : NULL) : NULL)
3525 ROSE_DLL_API SgLambdaRefExp* isSgLambdaRefExp(SgNode* node);
3526 ROSE_DLL_API const SgLambdaRefExp* isSgLambdaRefExp(const SgNode* node);
3527 #define IS_SgLambdaRefExp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgLambdaRefExp::static_variant >> 3] & (1 << (SgLambdaRefExp::static_variant & 7)))) ? ((SgLambdaRefExp*) (node)) : NULL) : NULL)
3528 ROSE_DLL_API SgTupleExp* isSgTupleExp(SgNode* node);
3529 ROSE_DLL_API const SgTupleExp* isSgTupleExp(const SgNode* node);
3530 #define IS_SgTupleExp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTupleExp::static_variant >> 3] & (1 << (SgTupleExp::static_variant & 7)))) ? ((SgTupleExp*) (node)) : NULL) : NULL)
3531 ROSE_DLL_API SgListExp* isSgListExp(SgNode* node);
3532 ROSE_DLL_API const SgListExp* isSgListExp(const SgNode* node);
3533 #define IS_SgListExp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgListExp::static_variant >> 3] & (1 << (SgListExp::static_variant & 7)))) ? ((SgListExp*) (node)) : NULL) : NULL)
3534 ROSE_DLL_API SgDictionaryExp* isSgDictionaryExp(SgNode* node);
3535 ROSE_DLL_API const SgDictionaryExp* isSgDictionaryExp(const SgNode* node);
3536 #define IS_SgDictionaryExp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgDictionaryExp::static_variant >> 3] & (1 << (SgDictionaryExp::static_variant & 7)))) ? ((SgDictionaryExp*) (node)) : NULL) : NULL)
3537 ROSE_DLL_API SgKeyDatumPair* isSgKeyDatumPair(SgNode* node);
3538 ROSE_DLL_API const SgKeyDatumPair* isSgKeyDatumPair(const SgNode* node);
3539 #define IS_SgKeyDatumPair_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgKeyDatumPair::static_variant >> 3] & (1 << (SgKeyDatumPair::static_variant & 7)))) ? ((SgKeyDatumPair*) (node)) : NULL) : NULL)
3540 ROSE_DLL_API SgComprehension* isSgComprehension(SgNode* node);
3541 ROSE_DLL_API const SgComprehension* isSgComprehension(const SgNode* node);
3542 #define IS_SgComprehension_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgComprehension::static_variant >> 3] & (1 << (SgComprehension::static_variant & 7)))) ? ((SgComprehension*) (node)) : NULL) : NULL)
3543 ROSE_DLL_API SgListComprehension* isSgListComprehension(SgNode* node);
3544 ROSE_DLL_API const SgListComprehension* isSgListComprehension(const SgNode* node);
3545 #define IS_SgListComprehension_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgListComprehension::static_variant >> 3] & (1 << (SgListComprehension::static_variant & 7)))) ? ((SgListComprehension*) (node)) : NULL) : NULL)
3546 ROSE_DLL_API SgSetComprehension* isSgSetComprehension(SgNode* node);
3547 ROSE_DLL_API const SgSetComprehension* isSgSetComprehension(const SgNode* node);
3548 #define IS_SgSetComprehension_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgSetComprehension::static_variant >> 3] & (1 << (SgSetComprehension::static_variant & 7)))) ? ((SgSetComprehension*) (node)) : NULL) : NULL)
3549 ROSE_DLL_API SgDictionaryComprehension* isSgDictionaryComprehension(SgNode* node);
3550 ROSE_DLL_API const SgDictionaryComprehension* isSgDictionaryComprehension(const SgNode* node);
3551 #define IS_SgDictionaryComprehension_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgDictionaryComprehension::static_variant >> 3] & (1 << (SgDictionaryComprehension::static_variant & 7)))) ? ((SgDictionaryComprehension*) (node)) : NULL) : NULL)
3552 ROSE_DLL_API SgMembershipOp* isSgMembershipOp(SgNode* node);
3553 ROSE_DLL_API const SgMembershipOp* isSgMembershipOp(const SgNode* node);
3554 #define IS_SgMembershipOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgMembershipOp::static_variant >> 3] & (1 << (SgMembershipOp::static_variant & 7)))) ? ((SgMembershipOp*) (node)) : NULL) : NULL)
3555 ROSE_DLL_API SgNonMembershipOp* isSgNonMembershipOp(SgNode* node);
3556 ROSE_DLL_API const SgNonMembershipOp* isSgNonMembershipOp(const SgNode* node);
3557 #define IS_SgNonMembershipOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgNonMembershipOp::static_variant >> 3] & (1 << (SgNonMembershipOp::static_variant & 7)))) ? ((SgNonMembershipOp*) (node)) : NULL) : NULL)
3558 ROSE_DLL_API SgIsOp* isSgIsOp(SgNode* node);
3559 ROSE_DLL_API const SgIsOp* isSgIsOp(const SgNode* node);
3560 #define IS_SgIsOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgIsOp::static_variant >> 3] & (1 << (SgIsOp::static_variant & 7)))) ? ((SgIsOp*) (node)) : NULL) : NULL)
3561 ROSE_DLL_API SgIsNotOp* isSgIsNotOp(SgNode* node);
3562 ROSE_DLL_API const SgIsNotOp* isSgIsNotOp(const SgNode* node);
3563 #define IS_SgIsNotOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgIsNotOp::static_variant >> 3] & (1 << (SgIsNotOp::static_variant & 7)))) ? ((SgIsNotOp*) (node)) : NULL) : NULL)
3564 ROSE_DLL_API SgStringConversion* isSgStringConversion(SgNode* node);
3565 ROSE_DLL_API const SgStringConversion* isSgStringConversion(const SgNode* node);
3566 #define IS_SgStringConversion_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgStringConversion::static_variant >> 3] & (1 << (SgStringConversion::static_variant & 7)))) ? ((SgStringConversion*) (node)) : NULL) : NULL)
3567 ROSE_DLL_API SgYieldExpression* isSgYieldExpression(SgNode* node);
3568 ROSE_DLL_API const SgYieldExpression* isSgYieldExpression(const SgNode* node);
3569 #define IS_SgYieldExpression_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgYieldExpression::static_variant >> 3] & (1 << (SgYieldExpression::static_variant & 7)))) ? ((SgYieldExpression*) (node)) : NULL) : NULL)
3570 ROSE_DLL_API SgFoldExpression* isSgFoldExpression(SgNode* node);
3571 ROSE_DLL_API const SgFoldExpression* isSgFoldExpression(const SgNode* node);
3572 #define IS_SgFoldExpression_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgFoldExpression::static_variant >> 3] & (1 << (SgFoldExpression::static_variant & 7)))) ? ((SgFoldExpression*) (node)) : NULL) : NULL)
3573 ROSE_DLL_API SgChooseExpression* isSgChooseExpression(SgNode* node);
3574 ROSE_DLL_API const SgChooseExpression* isSgChooseExpression(const SgNode* node);
3575 #define IS_SgChooseExpression_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgChooseExpression::static_variant >> 3] & (1 << (SgChooseExpression::static_variant & 7)))) ? ((SgChooseExpression*) (node)) : NULL) : NULL)
3576 ROSE_DLL_API SgAwaitExpression* isSgAwaitExpression(SgNode* node);
3577 ROSE_DLL_API const SgAwaitExpression* isSgAwaitExpression(const SgNode* node);
3578 #define IS_SgAwaitExpression_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgAwaitExpression::static_variant >> 3] & (1 << (SgAwaitExpression::static_variant & 7)))) ? ((SgAwaitExpression*) (node)) : NULL) : NULL)
3579 ROSE_DLL_API SgSpaceshipOp* isSgSpaceshipOp(SgNode* node);
3580 ROSE_DLL_API const SgSpaceshipOp* isSgSpaceshipOp(const SgNode* node);
3581 #define IS_SgSpaceshipOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgSpaceshipOp::static_variant >> 3] & (1 << (SgSpaceshipOp::static_variant & 7)))) ? ((SgSpaceshipOp*) (node)) : NULL) : NULL)
3582 ROSE_DLL_API SgSubscriptExpression* isSgSubscriptExpression(SgNode* node);
3583 ROSE_DLL_API const SgSubscriptExpression* isSgSubscriptExpression(const SgNode* node);
3584 #define IS_SgSubscriptExpression_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgSubscriptExpression::static_variant >> 3] & (1 << (SgSubscriptExpression::static_variant & 7)))) ? ((SgSubscriptExpression*) (node)) : NULL) : NULL)
3585 ROSE_DLL_API SgColonShapeExp* isSgColonShapeExp(SgNode* node);
3586 ROSE_DLL_API const SgColonShapeExp* isSgColonShapeExp(const SgNode* node);
3587 #define IS_SgColonShapeExp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgColonShapeExp::static_variant >> 3] & (1 << (SgColonShapeExp::static_variant & 7)))) ? ((SgColonShapeExp*) (node)) : NULL) : NULL)
3588 ROSE_DLL_API SgAsteriskShapeExp* isSgAsteriskShapeExp(SgNode* node);
3589 ROSE_DLL_API const SgAsteriskShapeExp* isSgAsteriskShapeExp(const SgNode* node);
3590 #define IS_SgAsteriskShapeExp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgAsteriskShapeExp::static_variant >> 3] & (1 << (SgAsteriskShapeExp::static_variant & 7)))) ? ((SgAsteriskShapeExp*) (node)) : NULL) : NULL)
3591 ROSE_DLL_API SgIOItemExpression* isSgIOItemExpression(SgNode* node);
3592 ROSE_DLL_API const SgIOItemExpression* isSgIOItemExpression(const SgNode* node);
3593 #define IS_SgIOItemExpression_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgIOItemExpression::static_variant >> 3] & (1 << (SgIOItemExpression::static_variant & 7)))) ? ((SgIOItemExpression*) (node)) : NULL) : NULL)
3594 ROSE_DLL_API SgImpliedDo* isSgImpliedDo(SgNode* node);
3595 ROSE_DLL_API const SgImpliedDo* isSgImpliedDo(const SgNode* node);
3596 #define IS_SgImpliedDo_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgImpliedDo::static_variant >> 3] & (1 << (SgImpliedDo::static_variant & 7)))) ? ((SgImpliedDo*) (node)) : NULL) : NULL)
3597 ROSE_DLL_API SgExponentiationOp* isSgExponentiationOp(SgNode* node);
3598 ROSE_DLL_API const SgExponentiationOp* isSgExponentiationOp(const SgNode* node);
3599 #define IS_SgExponentiationOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgExponentiationOp::static_variant >> 3] & (1 << (SgExponentiationOp::static_variant & 7)))) ? ((SgExponentiationOp*) (node)) : NULL) : NULL)
3600 ROSE_DLL_API SgUnknownArrayOrFunctionReference* isSgUnknownArrayOrFunctionReference(SgNode* node);
3601 ROSE_DLL_API const SgUnknownArrayOrFunctionReference* isSgUnknownArrayOrFunctionReference(const SgNode* node);
3602 #define IS_SgUnknownArrayOrFunctionReference_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgUnknownArrayOrFunctionReference::static_variant >> 3] & (1 << (SgUnknownArrayOrFunctionReference::static_variant & 7)))) ? ((SgUnknownArrayOrFunctionReference*) (node)) : NULL) : NULL)
3603 ROSE_DLL_API SgActualArgumentExpression* isSgActualArgumentExpression(SgNode* node);
3604 ROSE_DLL_API const SgActualArgumentExpression* isSgActualArgumentExpression(const SgNode* node);
3605 #define IS_SgActualArgumentExpression_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgActualArgumentExpression::static_variant >> 3] & (1 << (SgActualArgumentExpression::static_variant & 7)))) ? ((SgActualArgumentExpression*) (node)) : NULL) : NULL)
3606 ROSE_DLL_API SgUserDefinedBinaryOp* isSgUserDefinedBinaryOp(SgNode* node);
3607 ROSE_DLL_API const SgUserDefinedBinaryOp* isSgUserDefinedBinaryOp(const SgNode* node);
3608 #define IS_SgUserDefinedBinaryOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgUserDefinedBinaryOp::static_variant >> 3] & (1 << (SgUserDefinedBinaryOp::static_variant & 7)))) ? ((SgUserDefinedBinaryOp*) (node)) : NULL) : NULL)
3609 ROSE_DLL_API SgPointerAssignOp* isSgPointerAssignOp(SgNode* node);
3610 ROSE_DLL_API const SgPointerAssignOp* isSgPointerAssignOp(const SgNode* node);
3611 #define IS_SgPointerAssignOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgPointerAssignOp::static_variant >> 3] & (1 << (SgPointerAssignOp::static_variant & 7)))) ? ((SgPointerAssignOp*) (node)) : NULL) : NULL)
3612 ROSE_DLL_API SgCAFCoExpression* isSgCAFCoExpression(SgNode* node);
3613 ROSE_DLL_API const SgCAFCoExpression* isSgCAFCoExpression(const SgNode* node);
3614 #define IS_SgCAFCoExpression_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgCAFCoExpression::static_variant >> 3] & (1 << (SgCAFCoExpression::static_variant & 7)))) ? ((SgCAFCoExpression*) (node)) : NULL) : NULL)
3615 ROSE_DLL_API SgDesignatedInitializer* isSgDesignatedInitializer(SgNode* node);
3616 ROSE_DLL_API const SgDesignatedInitializer* isSgDesignatedInitializer(const SgNode* node);
3617 #define IS_SgDesignatedInitializer_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgDesignatedInitializer::static_variant >> 3] & (1 << (SgDesignatedInitializer::static_variant & 7)))) ? ((SgDesignatedInitializer*) (node)) : NULL) : NULL)
3618 ROSE_DLL_API SgMatrixExp* isSgMatrixExp(SgNode* node);
3619 ROSE_DLL_API const SgMatrixExp* isSgMatrixExp(const SgNode* node);
3620 #define IS_SgMatrixExp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgMatrixExp::static_variant >> 3] & (1 << (SgMatrixExp::static_variant & 7)))) ? ((SgMatrixExp*) (node)) : NULL) : NULL)
3621 ROSE_DLL_API SgRangeExp* isSgRangeExp(SgNode* node);
3622 ROSE_DLL_API const SgRangeExp* isSgRangeExp(const SgNode* node);
3623 #define IS_SgRangeExp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgRangeExp::static_variant >> 3] & (1 << (SgRangeExp::static_variant & 7)))) ? ((SgRangeExp*) (node)) : NULL) : NULL)
3624 ROSE_DLL_API SgMagicColonExp* isSgMagicColonExp(SgNode* node);
3625 ROSE_DLL_API const SgMagicColonExp* isSgMagicColonExp(const SgNode* node);
3626 #define IS_SgMagicColonExp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgMagicColonExp::static_variant >> 3] & (1 << (SgMagicColonExp::static_variant & 7)))) ? ((SgMagicColonExp*) (node)) : NULL) : NULL)
3627 ROSE_DLL_API SgElementwiseMultiplyOp* isSgElementwiseMultiplyOp(SgNode* node);
3628 ROSE_DLL_API const SgElementwiseMultiplyOp* isSgElementwiseMultiplyOp(const SgNode* node);
3629 #define IS_SgElementwiseMultiplyOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgElementwiseMultiplyOp::static_variant >> 3] & (1 << (SgElementwiseMultiplyOp::static_variant & 7)))) ? ((SgElementwiseMultiplyOp*) (node)) : NULL) : NULL)
3630 ROSE_DLL_API SgPowerOp* isSgPowerOp(SgNode* node);
3631 ROSE_DLL_API const SgPowerOp* isSgPowerOp(const SgNode* node);
3632 #define IS_SgPowerOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgPowerOp::static_variant >> 3] & (1 << (SgPowerOp::static_variant & 7)))) ? ((SgPowerOp*) (node)) : NULL) : NULL)
3633 ROSE_DLL_API SgElementwisePowerOp* isSgElementwisePowerOp(SgNode* node);
3634 ROSE_DLL_API const SgElementwisePowerOp* isSgElementwisePowerOp(const SgNode* node);
3635 #define IS_SgElementwisePowerOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgElementwisePowerOp::static_variant >> 3] & (1 << (SgElementwisePowerOp::static_variant & 7)))) ? ((SgElementwisePowerOp*) (node)) : NULL) : NULL)
3636 ROSE_DLL_API SgElementwiseDivideOp* isSgElementwiseDivideOp(SgNode* node);
3637 ROSE_DLL_API const SgElementwiseDivideOp* isSgElementwiseDivideOp(const SgNode* node);
3638 #define IS_SgElementwiseDivideOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgElementwiseDivideOp::static_variant >> 3] & (1 << (SgElementwiseDivideOp::static_variant & 7)))) ? ((SgElementwiseDivideOp*) (node)) : NULL) : NULL)
3639 ROSE_DLL_API SgLeftDivideOp* isSgLeftDivideOp(SgNode* node);
3640 ROSE_DLL_API const SgLeftDivideOp* isSgLeftDivideOp(const SgNode* node);
3641 #define IS_SgLeftDivideOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgLeftDivideOp::static_variant >> 3] & (1 << (SgLeftDivideOp::static_variant & 7)))) ? ((SgLeftDivideOp*) (node)) : NULL) : NULL)
3642 ROSE_DLL_API SgElementwiseLeftDivideOp* isSgElementwiseLeftDivideOp(SgNode* node);
3643 ROSE_DLL_API const SgElementwiseLeftDivideOp* isSgElementwiseLeftDivideOp(const SgNode* node);
3644 #define IS_SgElementwiseLeftDivideOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgElementwiseLeftDivideOp::static_variant >> 3] & (1 << (SgElementwiseLeftDivideOp::static_variant & 7)))) ? ((SgElementwiseLeftDivideOp*) (node)) : NULL) : NULL)
3645 ROSE_DLL_API SgElementwiseAddOp* isSgElementwiseAddOp(SgNode* node);
3646 ROSE_DLL_API const SgElementwiseAddOp* isSgElementwiseAddOp(const SgNode* node);
3647 #define IS_SgElementwiseAddOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgElementwiseAddOp::static_variant >> 3] & (1 << (SgElementwiseAddOp::static_variant & 7)))) ? ((SgElementwiseAddOp*) (node)) : NULL) : NULL)
3648 ROSE_DLL_API SgElementwiseSubtractOp* isSgElementwiseSubtractOp(SgNode* node);
3649 ROSE_DLL_API const SgElementwiseSubtractOp* isSgElementwiseSubtractOp(const SgNode* node);
3650 #define IS_SgElementwiseSubtractOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgElementwiseSubtractOp::static_variant >> 3] & (1 << (SgElementwiseSubtractOp::static_variant & 7)))) ? ((SgElementwiseSubtractOp*) (node)) : NULL) : NULL)
3651 ROSE_DLL_API SgMatrixTransposeOp* isSgMatrixTransposeOp(SgNode* node);
3652 ROSE_DLL_API const SgMatrixTransposeOp* isSgMatrixTransposeOp(const SgNode* node);
3653 #define IS_SgMatrixTransposeOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgMatrixTransposeOp::static_variant >> 3] & (1 << (SgMatrixTransposeOp::static_variant & 7)))) ? ((SgMatrixTransposeOp*) (node)) : NULL) : NULL)
3654 ROSE_DLL_API SgElementwiseOp* isSgElementwiseOp(SgNode* node);
3655 ROSE_DLL_API const SgElementwiseOp* isSgElementwiseOp(const SgNode* node);
3656 #define IS_SgElementwiseOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgElementwiseOp::static_variant >> 3] & (1 << (SgElementwiseOp::static_variant & 7)))) ? ((SgElementwiseOp*) (node)) : NULL) : NULL)
3657 ROSE_DLL_API SgInitializer* isSgInitializer(SgNode* node);
3658 ROSE_DLL_API const SgInitializer* isSgInitializer(const SgNode* node);
3659 #define IS_SgInitializer_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgInitializer::static_variant >> 3] & (1 << (SgInitializer::static_variant & 7)))) ? ((SgInitializer*) (node)) : NULL) : NULL)
3660 ROSE_DLL_API SgSIMDLoad* isSgSIMDLoad(SgNode* node);
3661 ROSE_DLL_API const SgSIMDLoad* isSgSIMDLoad(const SgNode* node);
3662 #define IS_SgSIMDLoad_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgSIMDLoad::static_variant >> 3] & (1 << (SgSIMDLoad::static_variant & 7)))) ? ((SgSIMDLoad*) (node)) : NULL) : NULL)
3663 ROSE_DLL_API SgSIMDBroadcast* isSgSIMDBroadcast(SgNode* node);
3664 ROSE_DLL_API const SgSIMDBroadcast* isSgSIMDBroadcast(const SgNode* node);
3665 #define IS_SgSIMDBroadcast_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgSIMDBroadcast::static_variant >> 3] & (1 << (SgSIMDBroadcast::static_variant & 7)))) ? ((SgSIMDBroadcast*) (node)) : NULL) : NULL)
3666 ROSE_DLL_API SgSIMDStore* isSgSIMDStore(SgNode* node);
3667 ROSE_DLL_API const SgSIMDStore* isSgSIMDStore(const SgNode* node);
3668 #define IS_SgSIMDStore_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgSIMDStore::static_variant >> 3] & (1 << (SgSIMDStore::static_variant & 7)))) ? ((SgSIMDStore*) (node)) : NULL) : NULL)
3669 ROSE_DLL_API SgSIMDPartialStore* isSgSIMDPartialStore(SgNode* node);
3670 ROSE_DLL_API const SgSIMDPartialStore* isSgSIMDPartialStore(const SgNode* node);
3671 #define IS_SgSIMDPartialStore_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgSIMDPartialStore::static_variant >> 3] & (1 << (SgSIMDPartialStore::static_variant & 7)))) ? ((SgSIMDPartialStore*) (node)) : NULL) : NULL)
3672 ROSE_DLL_API SgSIMDScalarStore* isSgSIMDScalarStore(SgNode* node);
3673 ROSE_DLL_API const SgSIMDScalarStore* isSgSIMDScalarStore(const SgNode* node);
3674 #define IS_SgSIMDScalarStore_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgSIMDScalarStore::static_variant >> 3] & (1 << (SgSIMDScalarStore::static_variant & 7)))) ? ((SgSIMDScalarStore*) (node)) : NULL) : NULL)
3675 ROSE_DLL_API SgSIMDGather* isSgSIMDGather(SgNode* node);
3676 ROSE_DLL_API const SgSIMDGather* isSgSIMDGather(const SgNode* node);
3677 #define IS_SgSIMDGather_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgSIMDGather::static_variant >> 3] & (1 << (SgSIMDGather::static_variant & 7)))) ? ((SgSIMDGather*) (node)) : NULL) : NULL)
3678 ROSE_DLL_API SgSIMDExplicitGather* isSgSIMDExplicitGather(SgNode* node);
3679 ROSE_DLL_API const SgSIMDExplicitGather* isSgSIMDExplicitGather(const SgNode* node);
3680 #define IS_SgSIMDExplicitGather_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgSIMDExplicitGather::static_variant >> 3] & (1 << (SgSIMDExplicitGather::static_variant & 7)))) ? ((SgSIMDExplicitGather*) (node)) : NULL) : NULL)
3681 ROSE_DLL_API SgSIMDScatter* isSgSIMDScatter(SgNode* node);
3682 ROSE_DLL_API const SgSIMDScatter* isSgSIMDScatter(const SgNode* node);
3683 #define IS_SgSIMDScatter_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgSIMDScatter::static_variant >> 3] & (1 << (SgSIMDScatter::static_variant & 7)))) ? ((SgSIMDScatter*) (node)) : NULL) : NULL)
3684 ROSE_DLL_API SgSIMDAddOp* isSgSIMDAddOp(SgNode* node);
3685 ROSE_DLL_API const SgSIMDAddOp* isSgSIMDAddOp(const SgNode* node);
3686 #define IS_SgSIMDAddOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgSIMDAddOp::static_variant >> 3] & (1 << (SgSIMDAddOp::static_variant & 7)))) ? ((SgSIMDAddOp*) (node)) : NULL) : NULL)
3687 ROSE_DLL_API SgSIMDSubOp* isSgSIMDSubOp(SgNode* node);
3688 ROSE_DLL_API const SgSIMDSubOp* isSgSIMDSubOp(const SgNode* node);
3689 #define IS_SgSIMDSubOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgSIMDSubOp::static_variant >> 3] & (1 << (SgSIMDSubOp::static_variant & 7)))) ? ((SgSIMDSubOp*) (node)) : NULL) : NULL)
3690 ROSE_DLL_API SgSIMDMulOp* isSgSIMDMulOp(SgNode* node);
3691 ROSE_DLL_API const SgSIMDMulOp* isSgSIMDMulOp(const SgNode* node);
3692 #define IS_SgSIMDMulOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgSIMDMulOp::static_variant >> 3] & (1 << (SgSIMDMulOp::static_variant & 7)))) ? ((SgSIMDMulOp*) (node)) : NULL) : NULL)
3693 ROSE_DLL_API SgSIMDDivOp* isSgSIMDDivOp(SgNode* node);
3694 ROSE_DLL_API const SgSIMDDivOp* isSgSIMDDivOp(const SgNode* node);
3695 #define IS_SgSIMDDivOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgSIMDDivOp::static_variant >> 3] & (1 << (SgSIMDDivOp::static_variant & 7)))) ? ((SgSIMDDivOp*) (node)) : NULL) : NULL)
3696 ROSE_DLL_API SgSIMDFmaOp* isSgSIMDFmaOp(SgNode* node);
3697 ROSE_DLL_API const SgSIMDFmaOp* isSgSIMDFmaOp(const SgNode* node);
3698 #define IS_SgSIMDFmaOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgSIMDFmaOp::static_variant >> 3] & (1 << (SgSIMDFmaOp::static_variant & 7)))) ? ((SgSIMDFmaOp*) (node)) : NULL) : NULL)
3699 ROSE_DLL_API SgSIMDBinaryOp* isSgSIMDBinaryOp(SgNode* node);
3700 ROSE_DLL_API const SgSIMDBinaryOp* isSgSIMDBinaryOp(const SgNode* node);
3701 #define IS_SgSIMDBinaryOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgSIMDBinaryOp::static_variant >> 3] & (1 << (SgSIMDBinaryOp::static_variant & 7)))) ? ((SgSIMDBinaryOp*) (node)) : NULL) : NULL)
3702 ROSE_DLL_API SgUserDefinedUnaryOp* isSgUserDefinedUnaryOp(SgNode* node);
3703 ROSE_DLL_API const SgUserDefinedUnaryOp* isSgUserDefinedUnaryOp(const SgNode* node);
3704 #define IS_SgUserDefinedUnaryOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgUserDefinedUnaryOp::static_variant >> 3] & (1 << (SgUserDefinedUnaryOp::static_variant & 7)))) ? ((SgUserDefinedUnaryOp*) (node)) : NULL) : NULL)
3705 ROSE_DLL_API SgPseudoDestructorRefExp* isSgPseudoDestructorRefExp(SgNode* node);
3706 ROSE_DLL_API const SgPseudoDestructorRefExp* isSgPseudoDestructorRefExp(const SgNode* node);
3707 #define IS_SgPseudoDestructorRefExp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgPseudoDestructorRefExp::static_variant >> 3] & (1 << (SgPseudoDestructorRefExp::static_variant & 7)))) ? ((SgPseudoDestructorRefExp*) (node)) : NULL) : NULL)
3708 ROSE_DLL_API SgUnaryOp* isSgUnaryOp(SgNode* node);
3709 ROSE_DLL_API const SgUnaryOp* isSgUnaryOp(const SgNode* node);
3710 #define IS_SgUnaryOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgUnaryOp::static_variant >> 3] & (1 << (SgUnaryOp::static_variant & 7)))) ? ((SgUnaryOp*) (node)) : NULL) : NULL)
3711 ROSE_DLL_API SgCompoundAssignOp* isSgCompoundAssignOp(SgNode* node);
3712 ROSE_DLL_API const SgCompoundAssignOp* isSgCompoundAssignOp(const SgNode* node);
3713 #define IS_SgCompoundAssignOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgCompoundAssignOp::static_variant >> 3] & (1 << (SgCompoundAssignOp::static_variant & 7)))) ? ((SgCompoundAssignOp*) (node)) : NULL) : NULL)
3714 ROSE_DLL_API SgBinaryOp* isSgBinaryOp(SgNode* node);
3715 ROSE_DLL_API const SgBinaryOp* isSgBinaryOp(const SgNode* node);
3716 #define IS_SgBinaryOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgBinaryOp::static_variant >> 3] & (1 << (SgBinaryOp::static_variant & 7)))) ? ((SgBinaryOp*) (node)) : NULL) : NULL)
3717 ROSE_DLL_API SgNaryOp* isSgNaryOp(SgNode* node);
3718 ROSE_DLL_API const SgNaryOp* isSgNaryOp(const SgNode* node);
3719 #define IS_SgNaryOp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgNaryOp::static_variant >> 3] & (1 << (SgNaryOp::static_variant & 7)))) ? ((SgNaryOp*) (node)) : NULL) : NULL)
3720 ROSE_DLL_API SgValueExp* isSgValueExp(SgNode* node);
3721 ROSE_DLL_API const SgValueExp* isSgValueExp(const SgNode* node);
3722 #define IS_SgValueExp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgValueExp::static_variant >> 3] & (1 << (SgValueExp::static_variant & 7)))) ? ((SgValueExp*) (node)) : NULL) : NULL)
3723 ROSE_DLL_API SgExprListExp* isSgExprListExp(SgNode* node);
3724 ROSE_DLL_API const SgExprListExp* isSgExprListExp(const SgNode* node);
3725 #define IS_SgExprListExp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgExprListExp::static_variant >> 3] & (1 << (SgExprListExp::static_variant & 7)))) ? ((SgExprListExp*) (node)) : NULL) : NULL)
3726 ROSE_DLL_API SgFunctionCallExp* isSgFunctionCallExp(SgNode* node);
3727 ROSE_DLL_API const SgFunctionCallExp* isSgFunctionCallExp(const SgNode* node);
3728 #define IS_SgFunctionCallExp_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgFunctionCallExp::static_variant >> 3] & (1 << (SgFunctionCallExp::static_variant & 7)))) ? ((SgFunctionCallExp*) (node)) : NULL) : NULL)
3729 ROSE_DLL_API SgCallExpression* isSgCallExpression(SgNode* node);
3730 ROSE_DLL_API const SgCallExpression* isSgCallExpression(const SgNode* node);
3731 #define IS_SgCallExpression_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgCallExpression::static_variant >> 3] & (1 << (SgCallExpression::static_variant & 7)))) ? ((SgCallExpression*) (node)) : NULL) : NULL)
3732 ROSE_DLL_API SgTypeTraitBuiltinOperator* isSgTypeTraitBuiltinOperator(SgNode* node);
3733 ROSE_DLL_API const SgTypeTraitBuiltinOperator* isSgTypeTraitBuiltinOperator(const SgNode* node);
3734 #define IS_SgTypeTraitBuiltinOperator_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTypeTraitBuiltinOperator::static_variant >> 3] & (1 << (SgTypeTraitBuiltinOperator::static_variant & 7)))) ? ((SgTypeTraitBuiltinOperator*) (node)) : NULL) : NULL)
3735 ROSE_DLL_API SgExpression* isSgExpression(SgNode* node);
3736 ROSE_DLL_API const SgExpression* isSgExpression(const SgNode* node);
3737 #define IS_SgExpression_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgExpression::static_variant >> 3] & (1 << (SgExpression::static_variant & 7)))) ? ((SgExpression*) (node)) : NULL) : NULL)
3738 ROSE_DLL_API SgTemplateVariableSymbol* isSgTemplateVariableSymbol(SgNode* node);
3739 ROSE_DLL_API const SgTemplateVariableSymbol* isSgTemplateVariableSymbol(const SgNode* node);
3740 #define IS_SgTemplateVariableSymbol_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTemplateVariableSymbol::static_variant >> 3] & (1 << (SgTemplateVariableSymbol::static_variant & 7)))) ? ((SgTemplateVariableSymbol*) (node)) : NULL) : NULL)
3741 ROSE_DLL_API SgVariableSymbol* isSgVariableSymbol(SgNode* node);
3742 ROSE_DLL_API const SgVariableSymbol* isSgVariableSymbol(const SgNode* node);
3743 #define IS_SgVariableSymbol_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgVariableSymbol::static_variant >> 3] & (1 << (SgVariableSymbol::static_variant & 7)))) ? ((SgVariableSymbol*) (node)) : NULL) : NULL)
3744 ROSE_DLL_API SgFunctionTypeSymbol* isSgFunctionTypeSymbol(SgNode* node);
3745 ROSE_DLL_API const SgFunctionTypeSymbol* isSgFunctionTypeSymbol(const SgNode* node);
3746 #define IS_SgFunctionTypeSymbol_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgFunctionTypeSymbol::static_variant >> 3] & (1 << (SgFunctionTypeSymbol::static_variant & 7)))) ? ((SgFunctionTypeSymbol*) (node)) : NULL) : NULL)
3747 ROSE_DLL_API SgTemplateClassSymbol* isSgTemplateClassSymbol(SgNode* node);
3748 ROSE_DLL_API const SgTemplateClassSymbol* isSgTemplateClassSymbol(const SgNode* node);
3749 #define IS_SgTemplateClassSymbol_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTemplateClassSymbol::static_variant >> 3] & (1 << (SgTemplateClassSymbol::static_variant & 7)))) ? ((SgTemplateClassSymbol*) (node)) : NULL) : NULL)
3750 ROSE_DLL_API SgClassSymbol* isSgClassSymbol(SgNode* node);
3751 ROSE_DLL_API const SgClassSymbol* isSgClassSymbol(const SgNode* node);
3752 #define IS_SgClassSymbol_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgClassSymbol::static_variant >> 3] & (1 << (SgClassSymbol::static_variant & 7)))) ? ((SgClassSymbol*) (node)) : NULL) : NULL)
3753 ROSE_DLL_API SgTemplateSymbol* isSgTemplateSymbol(SgNode* node);
3754 ROSE_DLL_API const SgTemplateSymbol* isSgTemplateSymbol(const SgNode* node);
3755 #define IS_SgTemplateSymbol_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTemplateSymbol::static_variant >> 3] & (1 << (SgTemplateSymbol::static_variant & 7)))) ? ((SgTemplateSymbol*) (node)) : NULL) : NULL)
3756 ROSE_DLL_API SgEnumSymbol* isSgEnumSymbol(SgNode* node);
3757 ROSE_DLL_API const SgEnumSymbol* isSgEnumSymbol(const SgNode* node);
3758 #define IS_SgEnumSymbol_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgEnumSymbol::static_variant >> 3] & (1 << (SgEnumSymbol::static_variant & 7)))) ? ((SgEnumSymbol*) (node)) : NULL) : NULL)
3759 ROSE_DLL_API SgEnumFieldSymbol* isSgEnumFieldSymbol(SgNode* node);
3760 ROSE_DLL_API const SgEnumFieldSymbol* isSgEnumFieldSymbol(const SgNode* node);
3761 #define IS_SgEnumFieldSymbol_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgEnumFieldSymbol::static_variant >> 3] & (1 << (SgEnumFieldSymbol::static_variant & 7)))) ? ((SgEnumFieldSymbol*) (node)) : NULL) : NULL)
3762 ROSE_DLL_API SgTemplateTypedefSymbol* isSgTemplateTypedefSymbol(SgNode* node);
3763 ROSE_DLL_API const SgTemplateTypedefSymbol* isSgTemplateTypedefSymbol(const SgNode* node);
3764 #define IS_SgTemplateTypedefSymbol_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTemplateTypedefSymbol::static_variant >> 3] & (1 << (SgTemplateTypedefSymbol::static_variant & 7)))) ? ((SgTemplateTypedefSymbol*) (node)) : NULL) : NULL)
3765 ROSE_DLL_API SgTypedefSymbol* isSgTypedefSymbol(SgNode* node);
3766 ROSE_DLL_API const SgTypedefSymbol* isSgTypedefSymbol(const SgNode* node);
3767 #define IS_SgTypedefSymbol_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTypedefSymbol::static_variant >> 3] & (1 << (SgTypedefSymbol::static_variant & 7)))) ? ((SgTypedefSymbol*) (node)) : NULL) : NULL)
3768 ROSE_DLL_API SgTemplateFunctionSymbol* isSgTemplateFunctionSymbol(SgNode* node);
3769 ROSE_DLL_API const SgTemplateFunctionSymbol* isSgTemplateFunctionSymbol(const SgNode* node);
3770 #define IS_SgTemplateFunctionSymbol_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTemplateFunctionSymbol::static_variant >> 3] & (1 << (SgTemplateFunctionSymbol::static_variant & 7)))) ? ((SgTemplateFunctionSymbol*) (node)) : NULL) : NULL)
3771 ROSE_DLL_API SgTemplateMemberFunctionSymbol* isSgTemplateMemberFunctionSymbol(SgNode* node);
3772 ROSE_DLL_API const SgTemplateMemberFunctionSymbol* isSgTemplateMemberFunctionSymbol(const SgNode* node);
3773 #define IS_SgTemplateMemberFunctionSymbol_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgTemplateMemberFunctionSymbol::static_variant >> 3] & (1 << (SgTemplateMemberFunctionSymbol::static_variant & 7)))) ? ((SgTemplateMemberFunctionSymbol*) (node)) : NULL) : NULL)
3774 ROSE_DLL_API SgLabelSymbol* isSgLabelSymbol(SgNode* node);
3775 ROSE_DLL_API const SgLabelSymbol* isSgLabelSymbol(const SgNode* node);
3776 #define IS_SgLabelSymbol_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgLabelSymbol::static_variant >> 3] & (1 << (SgLabelSymbol::static_variant & 7)))) ? ((SgLabelSymbol*) (node)) : NULL) : NULL)
3777 ROSE_DLL_API SgDefaultSymbol* isSgDefaultSymbol(SgNode* node);
3778 ROSE_DLL_API const SgDefaultSymbol* isSgDefaultSymbol(const SgNode* node);
3779 #define IS_SgDefaultSymbol_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgDefaultSymbol::static_variant >> 3] & (1 << (SgDefaultSymbol::static_variant & 7)))) ? ((SgDefaultSymbol*) (node)) : NULL) : NULL)
3780 ROSE_DLL_API SgNamespaceSymbol* isSgNamespaceSymbol(SgNode* node);
3781 ROSE_DLL_API const SgNamespaceSymbol* isSgNamespaceSymbol(const SgNode* node);
3782 #define IS_SgNamespaceSymbol_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgNamespaceSymbol::static_variant >> 3] & (1 << (SgNamespaceSymbol::static_variant & 7)))) ? ((SgNamespaceSymbol*) (node)) : NULL) : NULL)
3783 ROSE_DLL_API SgIntrinsicSymbol* isSgIntrinsicSymbol(SgNode* node);
3784 ROSE_DLL_API const SgIntrinsicSymbol* isSgIntrinsicSymbol(const SgNode* node);
3785 #define IS_SgIntrinsicSymbol_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgIntrinsicSymbol::static_variant >> 3] & (1 << (SgIntrinsicSymbol::static_variant & 7)))) ? ((SgIntrinsicSymbol*) (node)) : NULL) : NULL)
3786 ROSE_DLL_API SgModuleSymbol* isSgModuleSymbol(SgNode* node);
3787 ROSE_DLL_API const SgModuleSymbol* isSgModuleSymbol(const SgNode* node);
3788 #define IS_SgModuleSymbol_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgModuleSymbol::static_variant >> 3] & (1 << (SgModuleSymbol::static_variant & 7)))) ? ((SgModuleSymbol*) (node)) : NULL) : NULL)
3789 ROSE_DLL_API SgInterfaceSymbol* isSgInterfaceSymbol(SgNode* node);
3790 ROSE_DLL_API const SgInterfaceSymbol* isSgInterfaceSymbol(const SgNode* node);
3791 #define IS_SgInterfaceSymbol_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgInterfaceSymbol::static_variant >> 3] & (1 << (SgInterfaceSymbol::static_variant & 7)))) ? ((SgInterfaceSymbol*) (node)) : NULL) : NULL)
3792 ROSE_DLL_API SgCommonSymbol* isSgCommonSymbol(SgNode* node);
3793 ROSE_DLL_API const SgCommonSymbol* isSgCommonSymbol(const SgNode* node);
3794 #define IS_SgCommonSymbol_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgCommonSymbol::static_variant >> 3] & (1 << (SgCommonSymbol::static_variant & 7)))) ? ((SgCommonSymbol*) (node)) : NULL) : NULL)
3795 ROSE_DLL_API SgRenameSymbol* isSgRenameSymbol(SgNode* node);
3796 ROSE_DLL_API const SgRenameSymbol* isSgRenameSymbol(const SgNode* node);
3797 #define IS_SgRenameSymbol_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgRenameSymbol::static_variant >> 3] & (1 << (SgRenameSymbol::static_variant & 7)))) ? ((SgRenameSymbol*) (node)) : NULL) : NULL)
3798 ROSE_DLL_API SgMemberFunctionSymbol* isSgMemberFunctionSymbol(SgNode* node);
3799 ROSE_DLL_API const SgMemberFunctionSymbol* isSgMemberFunctionSymbol(const SgNode* node);
3800 #define IS_SgMemberFunctionSymbol_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgMemberFunctionSymbol::static_variant >> 3] & (1 << (SgMemberFunctionSymbol::static_variant & 7)))) ? ((SgMemberFunctionSymbol*) (node)) : NULL) : NULL)
3801 ROSE_DLL_API SgFunctionSymbol* isSgFunctionSymbol(SgNode* node);
3802 ROSE_DLL_API const SgFunctionSymbol* isSgFunctionSymbol(const SgNode* node);
3803 #define IS_SgFunctionSymbol_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgFunctionSymbol::static_variant >> 3] & (1 << (SgFunctionSymbol::static_variant & 7)))) ? ((SgFunctionSymbol*) (node)) : NULL) : NULL)
3804 ROSE_DLL_API SgAliasSymbol* isSgAliasSymbol(SgNode* node);
3805 ROSE_DLL_API const SgAliasSymbol* isSgAliasSymbol(const SgNode* node);
3806 #define IS_SgAliasSymbol_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgAliasSymbol::static_variant >> 3] & (1 << (SgAliasSymbol::static_variant & 7)))) ? ((SgAliasSymbol*) (node)) : NULL) : NULL)
3807 ROSE_DLL_API SgNonrealSymbol* isSgNonrealSymbol(SgNode* node);
3808 ROSE_DLL_API const SgNonrealSymbol* isSgNonrealSymbol(const SgNode* node);
3809 #define IS_SgNonrealSymbol_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgNonrealSymbol::static_variant >> 3] & (1 << (SgNonrealSymbol::static_variant & 7)))) ? ((SgNonrealSymbol*) (node)) : NULL) : NULL)
3810 ROSE_DLL_API SgSymbol* isSgSymbol(SgNode* node);
3811 ROSE_DLL_API const SgSymbol* isSgSymbol(const SgNode* node);
3812 #define IS_SgSymbol_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgSymbol::static_variant >> 3] & (1 << (SgSymbol::static_variant & 7)))) ? ((SgSymbol*) (node)) : NULL) : NULL)
3813 ROSE_DLL_API SgCommonBlockObject* isSgCommonBlockObject(SgNode* node);
3814 ROSE_DLL_API const SgCommonBlockObject* isSgCommonBlockObject(const SgNode* node);
3815 #define IS_SgCommonBlockObject_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgCommonBlockObject::static_variant >> 3] & (1 << (SgCommonBlockObject::static_variant & 7)))) ? ((SgCommonBlockObject*) (node)) : NULL) : NULL)
3816 ROSE_DLL_API SgInitializedName* isSgInitializedName(SgNode* node);
3817 ROSE_DLL_API const SgInitializedName* isSgInitializedName(const SgNode* node);
3818 #define IS_SgInitializedName_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgInitializedName::static_variant >> 3] & (1 << (SgInitializedName::static_variant & 7)))) ? ((SgInitializedName*) (node)) : NULL) : NULL)
3819 ROSE_DLL_API SgLambdaCapture* isSgLambdaCapture(SgNode* node);
3820 ROSE_DLL_API const SgLambdaCapture* isSgLambdaCapture(const SgNode* node);
3821 #define IS_SgLambdaCapture_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgLambdaCapture::static_variant >> 3] & (1 << (SgLambdaCapture::static_variant & 7)))) ? ((SgLambdaCapture*) (node)) : NULL) : NULL)
3822 ROSE_DLL_API SgLambdaCaptureList* isSgLambdaCaptureList(SgNode* node);
3823 ROSE_DLL_API const SgLambdaCaptureList* isSgLambdaCaptureList(const SgNode* node);
3824 #define IS_SgLambdaCaptureList_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgLambdaCaptureList::static_variant >> 3] & (1 << (SgLambdaCaptureList::static_variant & 7)))) ? ((SgLambdaCaptureList*) (node)) : NULL) : NULL)
3825 ROSE_DLL_API SgOmpOrderedClause* isSgOmpOrderedClause(SgNode* node);
3826 ROSE_DLL_API const SgOmpOrderedClause* isSgOmpOrderedClause(const SgNode* node);
3827 #define IS_SgOmpOrderedClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpOrderedClause::static_variant >> 3] & (1 << (SgOmpOrderedClause::static_variant & 7)))) ? ((SgOmpOrderedClause*) (node)) : NULL) : NULL)
3828 ROSE_DLL_API SgOmpNowaitClause* isSgOmpNowaitClause(SgNode* node);
3829 ROSE_DLL_API const SgOmpNowaitClause* isSgOmpNowaitClause(const SgNode* node);
3830 #define IS_SgOmpNowaitClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpNowaitClause::static_variant >> 3] & (1 << (SgOmpNowaitClause::static_variant & 7)))) ? ((SgOmpNowaitClause*) (node)) : NULL) : NULL)
3831 ROSE_DLL_API SgOmpNogroupClause* isSgOmpNogroupClause(SgNode* node);
3832 ROSE_DLL_API const SgOmpNogroupClause* isSgOmpNogroupClause(const SgNode* node);
3833 #define IS_SgOmpNogroupClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpNogroupClause::static_variant >> 3] & (1 << (SgOmpNogroupClause::static_variant & 7)))) ? ((SgOmpNogroupClause*) (node)) : NULL) : NULL)
3834 ROSE_DLL_API SgOmpReadClause* isSgOmpReadClause(SgNode* node);
3835 ROSE_DLL_API const SgOmpReadClause* isSgOmpReadClause(const SgNode* node);
3836 #define IS_SgOmpReadClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpReadClause::static_variant >> 3] & (1 << (SgOmpReadClause::static_variant & 7)))) ? ((SgOmpReadClause*) (node)) : NULL) : NULL)
3837 ROSE_DLL_API SgOmpThreadsClause* isSgOmpThreadsClause(SgNode* node);
3838 ROSE_DLL_API const SgOmpThreadsClause* isSgOmpThreadsClause(const SgNode* node);
3839 #define IS_SgOmpThreadsClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpThreadsClause::static_variant >> 3] & (1 << (SgOmpThreadsClause::static_variant & 7)))) ? ((SgOmpThreadsClause*) (node)) : NULL) : NULL)
3840 ROSE_DLL_API SgOmpSimdClause* isSgOmpSimdClause(SgNode* node);
3841 ROSE_DLL_API const SgOmpSimdClause* isSgOmpSimdClause(const SgNode* node);
3842 #define IS_SgOmpSimdClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpSimdClause::static_variant >> 3] & (1 << (SgOmpSimdClause::static_variant & 7)))) ? ((SgOmpSimdClause*) (node)) : NULL) : NULL)
3843 ROSE_DLL_API SgOmpReverseOffloadClause* isSgOmpReverseOffloadClause(SgNode* node);
3844 ROSE_DLL_API const SgOmpReverseOffloadClause* isSgOmpReverseOffloadClause(const SgNode* node);
3845 #define IS_SgOmpReverseOffloadClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpReverseOffloadClause::static_variant >> 3] & (1 << (SgOmpReverseOffloadClause::static_variant & 7)))) ? ((SgOmpReverseOffloadClause*) (node)) : NULL) : NULL)
3846 ROSE_DLL_API SgOmpExtImplementationDefinedRequirementClause* isSgOmpExtImplementationDefinedRequirementClause(SgNode* node);
3847 ROSE_DLL_API const SgOmpExtImplementationDefinedRequirementClause* isSgOmpExtImplementationDefinedRequirementClause(const SgNode* node);
3848 #define IS_SgOmpExtImplementationDefinedRequirementClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpExtImplementationDefinedRequirementClause::static_variant >> 3] & (1 << (SgOmpExtImplementationDefinedRequirementClause::static_variant & 7)))) ? ((SgOmpExtImplementationDefinedRequirementClause*) (node)) : NULL) : NULL)
3849 ROSE_DLL_API SgOmpUnifiedAddressClause* isSgOmpUnifiedAddressClause(SgNode* node);
3850 ROSE_DLL_API const SgOmpUnifiedAddressClause* isSgOmpUnifiedAddressClause(const SgNode* node);
3851 #define IS_SgOmpUnifiedAddressClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpUnifiedAddressClause::static_variant >> 3] & (1 << (SgOmpUnifiedAddressClause::static_variant & 7)))) ? ((SgOmpUnifiedAddressClause*) (node)) : NULL) : NULL)
3852 ROSE_DLL_API SgOmpUnifiedSharedMemoryClause* isSgOmpUnifiedSharedMemoryClause(SgNode* node);
3853 ROSE_DLL_API const SgOmpUnifiedSharedMemoryClause* isSgOmpUnifiedSharedMemoryClause(const SgNode* node);
3854 #define IS_SgOmpUnifiedSharedMemoryClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpUnifiedSharedMemoryClause::static_variant >> 3] & (1 << (SgOmpUnifiedSharedMemoryClause::static_variant & 7)))) ? ((SgOmpUnifiedSharedMemoryClause*) (node)) : NULL) : NULL)
3855 ROSE_DLL_API SgOmpDynamicAllocatorsClause* isSgOmpDynamicAllocatorsClause(SgNode* node);
3856 ROSE_DLL_API const SgOmpDynamicAllocatorsClause* isSgOmpDynamicAllocatorsClause(const SgNode* node);
3857 #define IS_SgOmpDynamicAllocatorsClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpDynamicAllocatorsClause::static_variant >> 3] & (1 << (SgOmpDynamicAllocatorsClause::static_variant & 7)))) ? ((SgOmpDynamicAllocatorsClause*) (node)) : NULL) : NULL)
3858 ROSE_DLL_API SgOmpAtomicDefaultMemOrderClause* isSgOmpAtomicDefaultMemOrderClause(SgNode* node);
3859 ROSE_DLL_API const SgOmpAtomicDefaultMemOrderClause* isSgOmpAtomicDefaultMemOrderClause(const SgNode* node);
3860 #define IS_SgOmpAtomicDefaultMemOrderClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpAtomicDefaultMemOrderClause::static_variant >> 3] & (1 << (SgOmpAtomicDefaultMemOrderClause::static_variant & 7)))) ? ((SgOmpAtomicDefaultMemOrderClause*) (node)) : NULL) : NULL)
3861 ROSE_DLL_API SgOmpWriteClause* isSgOmpWriteClause(SgNode* node);
3862 ROSE_DLL_API const SgOmpWriteClause* isSgOmpWriteClause(const SgNode* node);
3863 #define IS_SgOmpWriteClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpWriteClause::static_variant >> 3] & (1 << (SgOmpWriteClause::static_variant & 7)))) ? ((SgOmpWriteClause*) (node)) : NULL) : NULL)
3864 ROSE_DLL_API SgOmpUpdateClause* isSgOmpUpdateClause(SgNode* node);
3865 ROSE_DLL_API const SgOmpUpdateClause* isSgOmpUpdateClause(const SgNode* node);
3866 #define IS_SgOmpUpdateClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpUpdateClause::static_variant >> 3] & (1 << (SgOmpUpdateClause::static_variant & 7)))) ? ((SgOmpUpdateClause*) (node)) : NULL) : NULL)
3867 ROSE_DLL_API SgOmpDepobjUpdateClause* isSgOmpDepobjUpdateClause(SgNode* node);
3868 ROSE_DLL_API const SgOmpDepobjUpdateClause* isSgOmpDepobjUpdateClause(const SgNode* node);
3869 #define IS_SgOmpDepobjUpdateClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpDepobjUpdateClause::static_variant >> 3] & (1 << (SgOmpDepobjUpdateClause::static_variant & 7)))) ? ((SgOmpDepobjUpdateClause*) (node)) : NULL) : NULL)
3870 ROSE_DLL_API SgOmpDestroyClause* isSgOmpDestroyClause(SgNode* node);
3871 ROSE_DLL_API const SgOmpDestroyClause* isSgOmpDestroyClause(const SgNode* node);
3872 #define IS_SgOmpDestroyClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpDestroyClause::static_variant >> 3] & (1 << (SgOmpDestroyClause::static_variant & 7)))) ? ((SgOmpDestroyClause*) (node)) : NULL) : NULL)
3873 ROSE_DLL_API SgOmpCaptureClause* isSgOmpCaptureClause(SgNode* node);
3874 ROSE_DLL_API const SgOmpCaptureClause* isSgOmpCaptureClause(const SgNode* node);
3875 #define IS_SgOmpCaptureClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpCaptureClause::static_variant >> 3] & (1 << (SgOmpCaptureClause::static_variant & 7)))) ? ((SgOmpCaptureClause*) (node)) : NULL) : NULL)
3876 ROSE_DLL_API SgOmpSeqCstClause* isSgOmpSeqCstClause(SgNode* node);
3877 ROSE_DLL_API const SgOmpSeqCstClause* isSgOmpSeqCstClause(const SgNode* node);
3878 #define IS_SgOmpSeqCstClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpSeqCstClause::static_variant >> 3] & (1 << (SgOmpSeqCstClause::static_variant & 7)))) ? ((SgOmpSeqCstClause*) (node)) : NULL) : NULL)
3879 ROSE_DLL_API SgOmpAcqRelClause* isSgOmpAcqRelClause(SgNode* node);
3880 ROSE_DLL_API const SgOmpAcqRelClause* isSgOmpAcqRelClause(const SgNode* node);
3881 #define IS_SgOmpAcqRelClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpAcqRelClause::static_variant >> 3] & (1 << (SgOmpAcqRelClause::static_variant & 7)))) ? ((SgOmpAcqRelClause*) (node)) : NULL) : NULL)
3882 ROSE_DLL_API SgOmpReleaseClause* isSgOmpReleaseClause(SgNode* node);
3883 ROSE_DLL_API const SgOmpReleaseClause* isSgOmpReleaseClause(const SgNode* node);
3884 #define IS_SgOmpReleaseClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpReleaseClause::static_variant >> 3] & (1 << (SgOmpReleaseClause::static_variant & 7)))) ? ((SgOmpReleaseClause*) (node)) : NULL) : NULL)
3885 ROSE_DLL_API SgOmpAcquireClause* isSgOmpAcquireClause(SgNode* node);
3886 ROSE_DLL_API const SgOmpAcquireClause* isSgOmpAcquireClause(const SgNode* node);
3887 #define IS_SgOmpAcquireClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpAcquireClause::static_variant >> 3] & (1 << (SgOmpAcquireClause::static_variant & 7)))) ? ((SgOmpAcquireClause*) (node)) : NULL) : NULL)
3888 ROSE_DLL_API SgOmpRelaxedClause* isSgOmpRelaxedClause(SgNode* node);
3889 ROSE_DLL_API const SgOmpRelaxedClause* isSgOmpRelaxedClause(const SgNode* node);
3890 #define IS_SgOmpRelaxedClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpRelaxedClause::static_variant >> 3] & (1 << (SgOmpRelaxedClause::static_variant & 7)))) ? ((SgOmpRelaxedClause*) (node)) : NULL) : NULL)
3891 ROSE_DLL_API SgOmpParallelClause* isSgOmpParallelClause(SgNode* node);
3892 ROSE_DLL_API const SgOmpParallelClause* isSgOmpParallelClause(const SgNode* node);
3893 #define IS_SgOmpParallelClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpParallelClause::static_variant >> 3] & (1 << (SgOmpParallelClause::static_variant & 7)))) ? ((SgOmpParallelClause*) (node)) : NULL) : NULL)
3894 ROSE_DLL_API SgOmpSectionsClause* isSgOmpSectionsClause(SgNode* node);
3895 ROSE_DLL_API const SgOmpSectionsClause* isSgOmpSectionsClause(const SgNode* node);
3896 #define IS_SgOmpSectionsClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpSectionsClause::static_variant >> 3] & (1 << (SgOmpSectionsClause::static_variant & 7)))) ? ((SgOmpSectionsClause*) (node)) : NULL) : NULL)
3897 ROSE_DLL_API SgOmpForClause* isSgOmpForClause(SgNode* node);
3898 ROSE_DLL_API const SgOmpForClause* isSgOmpForClause(const SgNode* node);
3899 #define IS_SgOmpForClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpForClause::static_variant >> 3] & (1 << (SgOmpForClause::static_variant & 7)))) ? ((SgOmpForClause*) (node)) : NULL) : NULL)
3900 ROSE_DLL_API SgOmpTaskgroupClause* isSgOmpTaskgroupClause(SgNode* node);
3901 ROSE_DLL_API const SgOmpTaskgroupClause* isSgOmpTaskgroupClause(const SgNode* node);
3902 #define IS_SgOmpTaskgroupClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpTaskgroupClause::static_variant >> 3] & (1 << (SgOmpTaskgroupClause::static_variant & 7)))) ? ((SgOmpTaskgroupClause*) (node)) : NULL) : NULL)
3903 ROSE_DLL_API SgOmpBeginClause* isSgOmpBeginClause(SgNode* node);
3904 ROSE_DLL_API const SgOmpBeginClause* isSgOmpBeginClause(const SgNode* node);
3905 #define IS_SgOmpBeginClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpBeginClause::static_variant >> 3] & (1 << (SgOmpBeginClause::static_variant & 7)))) ? ((SgOmpBeginClause*) (node)) : NULL) : NULL)
3906 ROSE_DLL_API SgOmpEndClause* isSgOmpEndClause(SgNode* node);
3907 ROSE_DLL_API const SgOmpEndClause* isSgOmpEndClause(const SgNode* node);
3908 #define IS_SgOmpEndClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpEndClause::static_variant >> 3] & (1 << (SgOmpEndClause::static_variant & 7)))) ? ((SgOmpEndClause*) (node)) : NULL) : NULL)
3909 ROSE_DLL_API SgOmpUntiedClause* isSgOmpUntiedClause(SgNode* node);
3910 ROSE_DLL_API const SgOmpUntiedClause* isSgOmpUntiedClause(const SgNode* node);
3911 #define IS_SgOmpUntiedClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpUntiedClause::static_variant >> 3] & (1 << (SgOmpUntiedClause::static_variant & 7)))) ? ((SgOmpUntiedClause*) (node)) : NULL) : NULL)
3912 ROSE_DLL_API SgOmpMergeableClause* isSgOmpMergeableClause(SgNode* node);
3913 ROSE_DLL_API const SgOmpMergeableClause* isSgOmpMergeableClause(const SgNode* node);
3914 #define IS_SgOmpMergeableClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpMergeableClause::static_variant >> 3] & (1 << (SgOmpMergeableClause::static_variant & 7)))) ? ((SgOmpMergeableClause*) (node)) : NULL) : NULL)
3915 ROSE_DLL_API SgOmpDefaultClause* isSgOmpDefaultClause(SgNode* node);
3916 ROSE_DLL_API const SgOmpDefaultClause* isSgOmpDefaultClause(const SgNode* node);
3917 #define IS_SgOmpDefaultClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpDefaultClause::static_variant >> 3] & (1 << (SgOmpDefaultClause::static_variant & 7)))) ? ((SgOmpDefaultClause*) (node)) : NULL) : NULL)
3918 ROSE_DLL_API SgOmpAtomicClause* isSgOmpAtomicClause(SgNode* node);
3919 ROSE_DLL_API const SgOmpAtomicClause* isSgOmpAtomicClause(const SgNode* node);
3920 #define IS_SgOmpAtomicClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpAtomicClause::static_variant >> 3] & (1 << (SgOmpAtomicClause::static_variant & 7)))) ? ((SgOmpAtomicClause*) (node)) : NULL) : NULL)
3921 ROSE_DLL_API SgOmpProcBindClause* isSgOmpProcBindClause(SgNode* node);
3922 ROSE_DLL_API const SgOmpProcBindClause* isSgOmpProcBindClause(const SgNode* node);
3923 #define IS_SgOmpProcBindClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpProcBindClause::static_variant >> 3] & (1 << (SgOmpProcBindClause::static_variant & 7)))) ? ((SgOmpProcBindClause*) (node)) : NULL) : NULL)
3924 ROSE_DLL_API SgOmpOrderClause* isSgOmpOrderClause(SgNode* node);
3925 ROSE_DLL_API const SgOmpOrderClause* isSgOmpOrderClause(const SgNode* node);
3926 #define IS_SgOmpOrderClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpOrderClause::static_variant >> 3] & (1 << (SgOmpOrderClause::static_variant & 7)))) ? ((SgOmpOrderClause*) (node)) : NULL) : NULL)
3927 ROSE_DLL_API SgOmpBindClause* isSgOmpBindClause(SgNode* node);
3928 ROSE_DLL_API const SgOmpBindClause* isSgOmpBindClause(const SgNode* node);
3929 #define IS_SgOmpBindClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpBindClause::static_variant >> 3] & (1 << (SgOmpBindClause::static_variant & 7)))) ? ((SgOmpBindClause*) (node)) : NULL) : NULL)
3930 ROSE_DLL_API SgOmpInbranchClause* isSgOmpInbranchClause(SgNode* node);
3931 ROSE_DLL_API const SgOmpInbranchClause* isSgOmpInbranchClause(const SgNode* node);
3932 #define IS_SgOmpInbranchClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpInbranchClause::static_variant >> 3] & (1 << (SgOmpInbranchClause::static_variant & 7)))) ? ((SgOmpInbranchClause*) (node)) : NULL) : NULL)
3933 ROSE_DLL_API SgOmpNotinbranchClause* isSgOmpNotinbranchClause(SgNode* node);
3934 ROSE_DLL_API const SgOmpNotinbranchClause* isSgOmpNotinbranchClause(const SgNode* node);
3935 #define IS_SgOmpNotinbranchClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpNotinbranchClause::static_variant >> 3] & (1 << (SgOmpNotinbranchClause::static_variant & 7)))) ? ((SgOmpNotinbranchClause*) (node)) : NULL) : NULL)
3936 ROSE_DLL_API SgOmpCollapseClause* isSgOmpCollapseClause(SgNode* node);
3937 ROSE_DLL_API const SgOmpCollapseClause* isSgOmpCollapseClause(const SgNode* node);
3938 #define IS_SgOmpCollapseClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpCollapseClause::static_variant >> 3] & (1 << (SgOmpCollapseClause::static_variant & 7)))) ? ((SgOmpCollapseClause*) (node)) : NULL) : NULL)
3939 ROSE_DLL_API SgOmpIfClause* isSgOmpIfClause(SgNode* node);
3940 ROSE_DLL_API const SgOmpIfClause* isSgOmpIfClause(const SgNode* node);
3941 #define IS_SgOmpIfClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpIfClause::static_variant >> 3] & (1 << (SgOmpIfClause::static_variant & 7)))) ? ((SgOmpIfClause*) (node)) : NULL) : NULL)
3942 ROSE_DLL_API SgOmpFinalClause* isSgOmpFinalClause(SgNode* node);
3943 ROSE_DLL_API const SgOmpFinalClause* isSgOmpFinalClause(const SgNode* node);
3944 #define IS_SgOmpFinalClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpFinalClause::static_variant >> 3] & (1 << (SgOmpFinalClause::static_variant & 7)))) ? ((SgOmpFinalClause*) (node)) : NULL) : NULL)
3945 ROSE_DLL_API SgOmpPriorityClause* isSgOmpPriorityClause(SgNode* node);
3946 ROSE_DLL_API const SgOmpPriorityClause* isSgOmpPriorityClause(const SgNode* node);
3947 #define IS_SgOmpPriorityClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpPriorityClause::static_variant >> 3] & (1 << (SgOmpPriorityClause::static_variant & 7)))) ? ((SgOmpPriorityClause*) (node)) : NULL) : NULL)
3948 ROSE_DLL_API SgUpirNumUnitsField* isSgUpirNumUnitsField(SgNode* node);
3949 ROSE_DLL_API const SgUpirNumUnitsField* isSgUpirNumUnitsField(const SgNode* node);
3950 #define IS_SgUpirNumUnitsField_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgUpirNumUnitsField::static_variant >> 3] & (1 << (SgUpirNumUnitsField::static_variant & 7)))) ? ((SgUpirNumUnitsField*) (node)) : NULL) : NULL)
3951 ROSE_DLL_API SgOmpNumTeamsClause* isSgOmpNumTeamsClause(SgNode* node);
3952 ROSE_DLL_API const SgOmpNumTeamsClause* isSgOmpNumTeamsClause(const SgNode* node);
3953 #define IS_SgOmpNumTeamsClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpNumTeamsClause::static_variant >> 3] & (1 << (SgOmpNumTeamsClause::static_variant & 7)))) ? ((SgOmpNumTeamsClause*) (node)) : NULL) : NULL)
3954 ROSE_DLL_API SgOmpGrainsizeClause* isSgOmpGrainsizeClause(SgNode* node);
3955 ROSE_DLL_API const SgOmpGrainsizeClause* isSgOmpGrainsizeClause(const SgNode* node);
3956 #define IS_SgOmpGrainsizeClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpGrainsizeClause::static_variant >> 3] & (1 << (SgOmpGrainsizeClause::static_variant & 7)))) ? ((SgOmpGrainsizeClause*) (node)) : NULL) : NULL)
3957 ROSE_DLL_API SgOmpDetachClause* isSgOmpDetachClause(SgNode* node);
3958 ROSE_DLL_API const SgOmpDetachClause* isSgOmpDetachClause(const SgNode* node);
3959 #define IS_SgOmpDetachClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpDetachClause::static_variant >> 3] & (1 << (SgOmpDetachClause::static_variant & 7)))) ? ((SgOmpDetachClause*) (node)) : NULL) : NULL)
3960 ROSE_DLL_API SgOmpNumTasksClause* isSgOmpNumTasksClause(SgNode* node);
3961 ROSE_DLL_API const SgOmpNumTasksClause* isSgOmpNumTasksClause(const SgNode* node);
3962 #define IS_SgOmpNumTasksClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpNumTasksClause::static_variant >> 3] & (1 << (SgOmpNumTasksClause::static_variant & 7)))) ? ((SgOmpNumTasksClause*) (node)) : NULL) : NULL)
3963 ROSE_DLL_API SgOmpHintClause* isSgOmpHintClause(SgNode* node);
3964 ROSE_DLL_API const SgOmpHintClause* isSgOmpHintClause(const SgNode* node);
3965 #define IS_SgOmpHintClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpHintClause::static_variant >> 3] & (1 << (SgOmpHintClause::static_variant & 7)))) ? ((SgOmpHintClause*) (node)) : NULL) : NULL)
3966 ROSE_DLL_API SgOmpThreadLimitClause* isSgOmpThreadLimitClause(SgNode* node);
3967 ROSE_DLL_API const SgOmpThreadLimitClause* isSgOmpThreadLimitClause(const SgNode* node);
3968 #define IS_SgOmpThreadLimitClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpThreadLimitClause::static_variant >> 3] & (1 << (SgOmpThreadLimitClause::static_variant & 7)))) ? ((SgOmpThreadLimitClause*) (node)) : NULL) : NULL)
3969 ROSE_DLL_API SgOmpNontemporalClause* isSgOmpNontemporalClause(SgNode* node);
3970 ROSE_DLL_API const SgOmpNontemporalClause* isSgOmpNontemporalClause(const SgNode* node);
3971 #define IS_SgOmpNontemporalClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpNontemporalClause::static_variant >> 3] & (1 << (SgOmpNontemporalClause::static_variant & 7)))) ? ((SgOmpNontemporalClause*) (node)) : NULL) : NULL)
3972 ROSE_DLL_API SgOmpInclusiveClause* isSgOmpInclusiveClause(SgNode* node);
3973 ROSE_DLL_API const SgOmpInclusiveClause* isSgOmpInclusiveClause(const SgNode* node);
3974 #define IS_SgOmpInclusiveClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpInclusiveClause::static_variant >> 3] & (1 << (SgOmpInclusiveClause::static_variant & 7)))) ? ((SgOmpInclusiveClause*) (node)) : NULL) : NULL)
3975 ROSE_DLL_API SgOmpExclusiveClause* isSgOmpExclusiveClause(SgNode* node);
3976 ROSE_DLL_API const SgOmpExclusiveClause* isSgOmpExclusiveClause(const SgNode* node);
3977 #define IS_SgOmpExclusiveClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpExclusiveClause::static_variant >> 3] & (1 << (SgOmpExclusiveClause::static_variant & 7)))) ? ((SgOmpExclusiveClause*) (node)) : NULL) : NULL)
3978 ROSE_DLL_API SgOmpIsDevicePtrClause* isSgOmpIsDevicePtrClause(SgNode* node);
3979 ROSE_DLL_API const SgOmpIsDevicePtrClause* isSgOmpIsDevicePtrClause(const SgNode* node);
3980 #define IS_SgOmpIsDevicePtrClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpIsDevicePtrClause::static_variant >> 3] & (1 << (SgOmpIsDevicePtrClause::static_variant & 7)))) ? ((SgOmpIsDevicePtrClause*) (node)) : NULL) : NULL)
3981 ROSE_DLL_API SgOmpUseDevicePtrClause* isSgOmpUseDevicePtrClause(SgNode* node);
3982 ROSE_DLL_API const SgOmpUseDevicePtrClause* isSgOmpUseDevicePtrClause(const SgNode* node);
3983 #define IS_SgOmpUseDevicePtrClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpUseDevicePtrClause::static_variant >> 3] & (1 << (SgOmpUseDevicePtrClause::static_variant & 7)))) ? ((SgOmpUseDevicePtrClause*) (node)) : NULL) : NULL)
3984 ROSE_DLL_API SgOmpUseDeviceAddrClause* isSgOmpUseDeviceAddrClause(SgNode* node);
3985 ROSE_DLL_API const SgOmpUseDeviceAddrClause* isSgOmpUseDeviceAddrClause(const SgNode* node);
3986 #define IS_SgOmpUseDeviceAddrClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpUseDeviceAddrClause::static_variant >> 3] & (1 << (SgOmpUseDeviceAddrClause::static_variant & 7)))) ? ((SgOmpUseDeviceAddrClause*) (node)) : NULL) : NULL)
3987 ROSE_DLL_API SgOmpDeviceClause* isSgOmpDeviceClause(SgNode* node);
3988 ROSE_DLL_API const SgOmpDeviceClause* isSgOmpDeviceClause(const SgNode* node);
3989 #define IS_SgOmpDeviceClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpDeviceClause::static_variant >> 3] & (1 << (SgOmpDeviceClause::static_variant & 7)))) ? ((SgOmpDeviceClause*) (node)) : NULL) : NULL)
3990 ROSE_DLL_API SgOmpSafelenClause* isSgOmpSafelenClause(SgNode* node);
3991 ROSE_DLL_API const SgOmpSafelenClause* isSgOmpSafelenClause(const SgNode* node);
3992 #define IS_SgOmpSafelenClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpSafelenClause::static_variant >> 3] & (1 << (SgOmpSafelenClause::static_variant & 7)))) ? ((SgOmpSafelenClause*) (node)) : NULL) : NULL)
3993 ROSE_DLL_API SgOmpSimdlenClause* isSgOmpSimdlenClause(SgNode* node);
3994 ROSE_DLL_API const SgOmpSimdlenClause* isSgOmpSimdlenClause(const SgNode* node);
3995 #define IS_SgOmpSimdlenClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpSimdlenClause::static_variant >> 3] & (1 << (SgOmpSimdlenClause::static_variant & 7)))) ? ((SgOmpSimdlenClause*) (node)) : NULL) : NULL)
3996 ROSE_DLL_API SgOmpPartialClause* isSgOmpPartialClause(SgNode* node);
3997 ROSE_DLL_API const SgOmpPartialClause* isSgOmpPartialClause(const SgNode* node);
3998 #define IS_SgOmpPartialClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpPartialClause::static_variant >> 3] & (1 << (SgOmpPartialClause::static_variant & 7)))) ? ((SgOmpPartialClause*) (node)) : NULL) : NULL)
3999 ROSE_DLL_API SgOmpFullClause* isSgOmpFullClause(SgNode* node);
4000 ROSE_DLL_API const SgOmpFullClause* isSgOmpFullClause(const SgNode* node);
4001 #define IS_SgOmpFullClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpFullClause::static_variant >> 3] & (1 << (SgOmpFullClause::static_variant & 7)))) ? ((SgOmpFullClause*) (node)) : NULL) : NULL)
4002 ROSE_DLL_API SgOmpSizesClause* isSgOmpSizesClause(SgNode* node);
4003 ROSE_DLL_API const SgOmpSizesClause* isSgOmpSizesClause(const SgNode* node);
4004 #define IS_SgOmpSizesClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpSizesClause::static_variant >> 3] & (1 << (SgOmpSizesClause::static_variant & 7)))) ? ((SgOmpSizesClause*) (node)) : NULL) : NULL)
4005 ROSE_DLL_API SgUpirBranchField* isSgUpirBranchField(SgNode* node);
4006 ROSE_DLL_API const SgUpirBranchField* isSgUpirBranchField(const SgNode* node);
4007 #define IS_SgUpirBranchField_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgUpirBranchField::static_variant >> 3] & (1 << (SgUpirBranchField::static_variant & 7)))) ? ((SgUpirBranchField*) (node)) : NULL) : NULL)
4008 ROSE_DLL_API SgUpirNestedLevelField* isSgUpirNestedLevelField(SgNode* node);
4009 ROSE_DLL_API const SgUpirNestedLevelField* isSgUpirNestedLevelField(const SgNode* node);
4010 #define IS_SgUpirNestedLevelField_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgUpirNestedLevelField::static_variant >> 3] & (1 << (SgUpirNestedLevelField::static_variant & 7)))) ? ((SgUpirNestedLevelField*) (node)) : NULL) : NULL)
4011 ROSE_DLL_API SgUpirNestedParentField* isSgUpirNestedParentField(SgNode* node);
4012 ROSE_DLL_API const SgUpirNestedParentField* isSgUpirNestedParentField(const SgNode* node);
4013 #define IS_SgUpirNestedParentField_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgUpirNestedParentField::static_variant >> 3] & (1 << (SgUpirNestedParentField::static_variant & 7)))) ? ((SgUpirNestedParentField*) (node)) : NULL) : NULL)
4014 ROSE_DLL_API SgUpirNestedChildField* isSgUpirNestedChildField(SgNode* node);
4015 ROSE_DLL_API const SgUpirNestedChildField* isSgUpirNestedChildField(const SgNode* node);
4016 #define IS_SgUpirNestedChildField_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgUpirNestedChildField::static_variant >> 3] & (1 << (SgUpirNestedChildField::static_variant & 7)))) ? ((SgUpirNestedChildField*) (node)) : NULL) : NULL)
4017 ROSE_DLL_API SgUpirSyncField* isSgUpirSyncField(SgNode* node);
4018 ROSE_DLL_API const SgUpirSyncField* isSgUpirSyncField(const SgNode* node);
4019 #define IS_SgUpirSyncField_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgUpirSyncField::static_variant >> 3] & (1 << (SgUpirSyncField::static_variant & 7)))) ? ((SgUpirSyncField*) (node)) : NULL) : NULL)
4020 ROSE_DLL_API SgUpirDataField* isSgUpirDataField(SgNode* node);
4021 ROSE_DLL_API const SgUpirDataField* isSgUpirDataField(const SgNode* node);
4022 #define IS_SgUpirDataField_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgUpirDataField::static_variant >> 3] & (1 << (SgUpirDataField::static_variant & 7)))) ? ((SgUpirDataField*) (node)) : NULL) : NULL)
4023 ROSE_DLL_API SgUpirTargetField* isSgUpirTargetField(SgNode* node);
4024 ROSE_DLL_API const SgUpirTargetField* isSgUpirTargetField(const SgNode* node);
4025 #define IS_SgUpirTargetField_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgUpirTargetField::static_variant >> 3] & (1 << (SgUpirTargetField::static_variant & 7)))) ? ((SgUpirTargetField*) (node)) : NULL) : NULL)
4026 ROSE_DLL_API SgUpirDataItemField* isSgUpirDataItemField(SgNode* node);
4027 ROSE_DLL_API const SgUpirDataItemField* isSgUpirDataItemField(const SgNode* node);
4028 #define IS_SgUpirDataItemField_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgUpirDataItemField::static_variant >> 3] & (1 << (SgUpirDataItemField::static_variant & 7)))) ? ((SgUpirDataItemField*) (node)) : NULL) : NULL)
4029 ROSE_DLL_API SgOmpExpressionClause* isSgOmpExpressionClause(SgNode* node);
4030 ROSE_DLL_API const SgOmpExpressionClause* isSgOmpExpressionClause(const SgNode* node);
4031 #define IS_SgOmpExpressionClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpExpressionClause::static_variant >> 3] & (1 << (SgOmpExpressionClause::static_variant & 7)))) ? ((SgOmpExpressionClause*) (node)) : NULL) : NULL)
4032 ROSE_DLL_API SgOmpCopyprivateClause* isSgOmpCopyprivateClause(SgNode* node);
4033 ROSE_DLL_API const SgOmpCopyprivateClause* isSgOmpCopyprivateClause(const SgNode* node);
4034 #define IS_SgOmpCopyprivateClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpCopyprivateClause::static_variant >> 3] & (1 << (SgOmpCopyprivateClause::static_variant & 7)))) ? ((SgOmpCopyprivateClause*) (node)) : NULL) : NULL)
4035 ROSE_DLL_API SgOmpPrivateClause* isSgOmpPrivateClause(SgNode* node);
4036 ROSE_DLL_API const SgOmpPrivateClause* isSgOmpPrivateClause(const SgNode* node);
4037 #define IS_SgOmpPrivateClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpPrivateClause::static_variant >> 3] & (1 << (SgOmpPrivateClause::static_variant & 7)))) ? ((SgOmpPrivateClause*) (node)) : NULL) : NULL)
4038 ROSE_DLL_API SgOmpFirstprivateClause* isSgOmpFirstprivateClause(SgNode* node);
4039 ROSE_DLL_API const SgOmpFirstprivateClause* isSgOmpFirstprivateClause(const SgNode* node);
4040 #define IS_SgOmpFirstprivateClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpFirstprivateClause::static_variant >> 3] & (1 << (SgOmpFirstprivateClause::static_variant & 7)))) ? ((SgOmpFirstprivateClause*) (node)) : NULL) : NULL)
4041 ROSE_DLL_API SgOmpSharedClause* isSgOmpSharedClause(SgNode* node);
4042 ROSE_DLL_API const SgOmpSharedClause* isSgOmpSharedClause(const SgNode* node);
4043 #define IS_SgOmpSharedClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpSharedClause::static_variant >> 3] & (1 << (SgOmpSharedClause::static_variant & 7)))) ? ((SgOmpSharedClause*) (node)) : NULL) : NULL)
4044 ROSE_DLL_API SgOmpCopyinClause* isSgOmpCopyinClause(SgNode* node);
4045 ROSE_DLL_API const SgOmpCopyinClause* isSgOmpCopyinClause(const SgNode* node);
4046 #define IS_SgOmpCopyinClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpCopyinClause::static_variant >> 3] & (1 << (SgOmpCopyinClause::static_variant & 7)))) ? ((SgOmpCopyinClause*) (node)) : NULL) : NULL)
4047 ROSE_DLL_API SgOmpLastprivateClause* isSgOmpLastprivateClause(SgNode* node);
4048 ROSE_DLL_API const SgOmpLastprivateClause* isSgOmpLastprivateClause(const SgNode* node);
4049 #define IS_SgOmpLastprivateClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpLastprivateClause::static_variant >> 3] & (1 << (SgOmpLastprivateClause::static_variant & 7)))) ? ((SgOmpLastprivateClause*) (node)) : NULL) : NULL)
4050 ROSE_DLL_API SgOmpReductionClause* isSgOmpReductionClause(SgNode* node);
4051 ROSE_DLL_API const SgOmpReductionClause* isSgOmpReductionClause(const SgNode* node);
4052 #define IS_SgOmpReductionClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpReductionClause::static_variant >> 3] & (1 << (SgOmpReductionClause::static_variant & 7)))) ? ((SgOmpReductionClause*) (node)) : NULL) : NULL)
4053 ROSE_DLL_API SgOmpInReductionClause* isSgOmpInReductionClause(SgNode* node);
4054 ROSE_DLL_API const SgOmpInReductionClause* isSgOmpInReductionClause(const SgNode* node);
4055 #define IS_SgOmpInReductionClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpInReductionClause::static_variant >> 3] & (1 << (SgOmpInReductionClause::static_variant & 7)))) ? ((SgOmpInReductionClause*) (node)) : NULL) : NULL)
4056 ROSE_DLL_API SgOmpTaskReductionClause* isSgOmpTaskReductionClause(SgNode* node);
4057 ROSE_DLL_API const SgOmpTaskReductionClause* isSgOmpTaskReductionClause(const SgNode* node);
4058 #define IS_SgOmpTaskReductionClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpTaskReductionClause::static_variant >> 3] & (1 << (SgOmpTaskReductionClause::static_variant & 7)))) ? ((SgOmpTaskReductionClause*) (node)) : NULL) : NULL)
4059 ROSE_DLL_API SgOmpAllocateClause* isSgOmpAllocateClause(SgNode* node);
4060 ROSE_DLL_API const SgOmpAllocateClause* isSgOmpAllocateClause(const SgNode* node);
4061 #define IS_SgOmpAllocateClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpAllocateClause::static_variant >> 3] & (1 << (SgOmpAllocateClause::static_variant & 7)))) ? ((SgOmpAllocateClause*) (node)) : NULL) : NULL)
4062 ROSE_DLL_API SgOmpDependClause* isSgOmpDependClause(SgNode* node);
4063 ROSE_DLL_API const SgOmpDependClause* isSgOmpDependClause(const SgNode* node);
4064 #define IS_SgOmpDependClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpDependClause::static_variant >> 3] & (1 << (SgOmpDependClause::static_variant & 7)))) ? ((SgOmpDependClause*) (node)) : NULL) : NULL)
4065 ROSE_DLL_API SgOmpToClause* isSgOmpToClause(SgNode* node);
4066 ROSE_DLL_API const SgOmpToClause* isSgOmpToClause(const SgNode* node);
4067 #define IS_SgOmpToClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpToClause::static_variant >> 3] & (1 << (SgOmpToClause::static_variant & 7)))) ? ((SgOmpToClause*) (node)) : NULL) : NULL)
4068 ROSE_DLL_API SgOmpUsesAllocatorsClause* isSgOmpUsesAllocatorsClause(SgNode* node);
4069 ROSE_DLL_API const SgOmpUsesAllocatorsClause* isSgOmpUsesAllocatorsClause(const SgNode* node);
4070 #define IS_SgOmpUsesAllocatorsClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpUsesAllocatorsClause::static_variant >> 3] & (1 << (SgOmpUsesAllocatorsClause::static_variant & 7)))) ? ((SgOmpUsesAllocatorsClause*) (node)) : NULL) : NULL)
4071 ROSE_DLL_API SgOmpFromClause* isSgOmpFromClause(SgNode* node);
4072 ROSE_DLL_API const SgOmpFromClause* isSgOmpFromClause(const SgNode* node);
4073 #define IS_SgOmpFromClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpFromClause::static_variant >> 3] & (1 << (SgOmpFromClause::static_variant & 7)))) ? ((SgOmpFromClause*) (node)) : NULL) : NULL)
4074 ROSE_DLL_API SgOmpAffinityClause* isSgOmpAffinityClause(SgNode* node);
4075 ROSE_DLL_API const SgOmpAffinityClause* isSgOmpAffinityClause(const SgNode* node);
4076 #define IS_SgOmpAffinityClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpAffinityClause::static_variant >> 3] & (1 << (SgOmpAffinityClause::static_variant & 7)))) ? ((SgOmpAffinityClause*) (node)) : NULL) : NULL)
4077 ROSE_DLL_API SgOmpMapClause* isSgOmpMapClause(SgNode* node);
4078 ROSE_DLL_API const SgOmpMapClause* isSgOmpMapClause(const SgNode* node);
4079 #define IS_SgOmpMapClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpMapClause::static_variant >> 3] & (1 << (SgOmpMapClause::static_variant & 7)))) ? ((SgOmpMapClause*) (node)) : NULL) : NULL)
4080 ROSE_DLL_API SgOmpLinearClause* isSgOmpLinearClause(SgNode* node);
4081 ROSE_DLL_API const SgOmpLinearClause* isSgOmpLinearClause(const SgNode* node);
4082 #define IS_SgOmpLinearClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpLinearClause::static_variant >> 3] & (1 << (SgOmpLinearClause::static_variant & 7)))) ? ((SgOmpLinearClause*) (node)) : NULL) : NULL)
4083 ROSE_DLL_API SgOmpUniformClause* isSgOmpUniformClause(SgNode* node);
4084 ROSE_DLL_API const SgOmpUniformClause* isSgOmpUniformClause(const SgNode* node);
4085 #define IS_SgOmpUniformClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpUniformClause::static_variant >> 3] & (1 << (SgOmpUniformClause::static_variant & 7)))) ? ((SgOmpUniformClause*) (node)) : NULL) : NULL)
4086 ROSE_DLL_API SgOmpAlignedClause* isSgOmpAlignedClause(SgNode* node);
4087 ROSE_DLL_API const SgOmpAlignedClause* isSgOmpAlignedClause(const SgNode* node);
4088 #define IS_SgOmpAlignedClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpAlignedClause::static_variant >> 3] & (1 << (SgOmpAlignedClause::static_variant & 7)))) ? ((SgOmpAlignedClause*) (node)) : NULL) : NULL)
4089 ROSE_DLL_API SgOmpVariablesClause* isSgOmpVariablesClause(SgNode* node);
4090 ROSE_DLL_API const SgOmpVariablesClause* isSgOmpVariablesClause(const SgNode* node);
4091 #define IS_SgOmpVariablesClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpVariablesClause::static_variant >> 3] & (1 << (SgOmpVariablesClause::static_variant & 7)))) ? ((SgOmpVariablesClause*) (node)) : NULL) : NULL)
4092 ROSE_DLL_API SgOmpScheduleClause* isSgOmpScheduleClause(SgNode* node);
4093 ROSE_DLL_API const SgOmpScheduleClause* isSgOmpScheduleClause(const SgNode* node);
4094 #define IS_SgOmpScheduleClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpScheduleClause::static_variant >> 3] & (1 << (SgOmpScheduleClause::static_variant & 7)))) ? ((SgOmpScheduleClause*) (node)) : NULL) : NULL)
4095 ROSE_DLL_API SgOmpWhenClause* isSgOmpWhenClause(SgNode* node);
4096 ROSE_DLL_API const SgOmpWhenClause* isSgOmpWhenClause(const SgNode* node);
4097 #define IS_SgOmpWhenClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpWhenClause::static_variant >> 3] & (1 << (SgOmpWhenClause::static_variant & 7)))) ? ((SgOmpWhenClause*) (node)) : NULL) : NULL)
4098 ROSE_DLL_API SgOmpDistScheduleClause* isSgOmpDistScheduleClause(SgNode* node);
4099 ROSE_DLL_API const SgOmpDistScheduleClause* isSgOmpDistScheduleClause(const SgNode* node);
4100 #define IS_SgOmpDistScheduleClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpDistScheduleClause::static_variant >> 3] & (1 << (SgOmpDistScheduleClause::static_variant & 7)))) ? ((SgOmpDistScheduleClause*) (node)) : NULL) : NULL)
4101 ROSE_DLL_API SgOmpDefaultmapClause* isSgOmpDefaultmapClause(SgNode* node);
4102 ROSE_DLL_API const SgOmpDefaultmapClause* isSgOmpDefaultmapClause(const SgNode* node);
4103 #define IS_SgOmpDefaultmapClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpDefaultmapClause::static_variant >> 3] & (1 << (SgOmpDefaultmapClause::static_variant & 7)))) ? ((SgOmpDefaultmapClause*) (node)) : NULL) : NULL)
4104 ROSE_DLL_API SgOmpAllocatorClause* isSgOmpAllocatorClause(SgNode* node);
4105 ROSE_DLL_API const SgOmpAllocatorClause* isSgOmpAllocatorClause(const SgNode* node);
4106 #define IS_SgOmpAllocatorClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpAllocatorClause::static_variant >> 3] & (1 << (SgOmpAllocatorClause::static_variant & 7)))) ? ((SgOmpAllocatorClause*) (node)) : NULL) : NULL)
4107 ROSE_DLL_API SgOmpUsesAllocatorsDefination* isSgOmpUsesAllocatorsDefination(SgNode* node);
4108 ROSE_DLL_API const SgOmpUsesAllocatorsDefination* isSgOmpUsesAllocatorsDefination(const SgNode* node);
4109 #define IS_SgOmpUsesAllocatorsDefination_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpUsesAllocatorsDefination::static_variant >> 3] & (1 << (SgOmpUsesAllocatorsDefination::static_variant & 7)))) ? ((SgOmpUsesAllocatorsDefination*) (node)) : NULL) : NULL)
4110 ROSE_DLL_API SgOmpClause* isSgOmpClause(SgNode* node);
4111 ROSE_DLL_API const SgOmpClause* isSgOmpClause(const SgNode* node);
4112 #define IS_SgOmpClause_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgOmpClause::static_variant >> 3] & (1 << (SgOmpClause::static_variant & 7)))) ? ((SgOmpClause*) (node)) : NULL) : NULL)
4113 ROSE_DLL_API SgRenamePair* isSgRenamePair(SgNode* node);
4114 ROSE_DLL_API const SgRenamePair* isSgRenamePair(const SgNode* node);
4115 #define IS_SgRenamePair_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgRenamePair::static_variant >> 3] & (1 << (SgRenamePair::static_variant & 7)))) ? ((SgRenamePair*) (node)) : NULL) : NULL)
4116 ROSE_DLL_API SgInterfaceBody* isSgInterfaceBody(SgNode* node);
4117 ROSE_DLL_API const SgInterfaceBody* isSgInterfaceBody(const SgNode* node);
4118 #define IS_SgInterfaceBody_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgInterfaceBody::static_variant >> 3] & (1 << (SgInterfaceBody::static_variant & 7)))) ? ((SgInterfaceBody*) (node)) : NULL) : NULL)
4119 ROSE_DLL_API SgHeaderFileBody* isSgHeaderFileBody(SgNode* node);
4120 ROSE_DLL_API const SgHeaderFileBody* isSgHeaderFileBody(const SgNode* node);
4121 #define IS_SgHeaderFileBody_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgHeaderFileBody::static_variant >> 3] & (1 << (SgHeaderFileBody::static_variant & 7)))) ? ((SgHeaderFileBody*) (node)) : NULL) : NULL)
4122 ROSE_DLL_API SgLocatedNodeSupport* isSgLocatedNodeSupport(SgNode* node);
4123 ROSE_DLL_API const SgLocatedNodeSupport* isSgLocatedNodeSupport(const SgNode* node);
4124 #define IS_SgLocatedNodeSupport_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgLocatedNodeSupport::static_variant >> 3] & (1 << (SgLocatedNodeSupport::static_variant & 7)))) ? ((SgLocatedNodeSupport*) (node)) : NULL) : NULL)
4125 ROSE_DLL_API SgToken* isSgToken(SgNode* node);
4126 ROSE_DLL_API const SgToken* isSgToken(const SgNode* node);
4127 #define IS_SgToken_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgToken::static_variant >> 3] & (1 << (SgToken::static_variant & 7)))) ? ((SgToken*) (node)) : NULL) : NULL)
4128 ROSE_DLL_API SgLocatedNode* isSgLocatedNode(SgNode* node);
4129 ROSE_DLL_API const SgLocatedNode* isSgLocatedNode(const SgNode* node);
4130 #define IS_SgLocatedNode_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgLocatedNode::static_variant >> 3] & (1 << (SgLocatedNode::static_variant & 7)))) ? ((SgLocatedNode*) (node)) : NULL) : NULL)
4131 ROSE_DLL_API SgNode* isSgNode(SgNode* node);
4132 ROSE_DLL_API const SgNode* isSgNode(const SgNode* node);
4133 #define IS_SgNode_FAST_MACRO(node) ( (node) ? (( (rose_ClassHierarchyCastTable[(node)->variantT()][SgNode::static_variant >> 3] & (1 << (SgNode::static_variant & 7)))) ? ((SgNode*) (node)) : NULL) : NULL)// JH (01/18/2006) Forward declarations for the StorageClasses, needed by the ast file i/o
4134 
4135  class SgNameStorageClass;
4136  class SgSymbolTableStorageClass;
4137  class SgPragmaStorageClass;
4138  class SgModifierNodesStorageClass;
4139  class SgConstVolatileModifierStorageClass;
4140  class SgStorageModifierStorageClass;
4141  class SgAccessModifierStorageClass;
4142  class SgFunctionModifierStorageClass;
4143  class SgUPC_AccessModifierStorageClass;
4144  class SgLinkageModifierStorageClass;
4145  class SgSpecialFunctionModifierStorageClass;
4146  class SgTypeModifierStorageClass;
4147  class SgElaboratedTypeModifierStorageClass;
4148  class SgBaseClassModifierStorageClass;
4149  class SgDeclarationModifierStorageClass;
4150  class SgStructureModifierStorageClass;
4151  class SgOpenclAccessModeModifierStorageClass;
4152  class SgModifierStorageClass;
4153  class Sg_File_InfoStorageClass;
4154  class SgSourceFileStorageClass;
4155  class SgUnknownFileStorageClass;
4156  class SgFileStorageClass;
4157  class SgFileListStorageClass;
4158  class SgDirectoryStorageClass;
4159  class SgDirectoryListStorageClass;
4160  class SgProjectStorageClass;
4161  class SgOptionsStorageClass;
4162  class SgUnparse_InfoStorageClass;
4163  class SgIncludeFileStorageClass;
4164  class SgFuncDecl_attrStorageClass;
4165  class SgClassDecl_attrStorageClass;
4166  class SgTypedefSeqStorageClass;
4167  class SgFunctionParameterTypeListStorageClass;
4168  class SgTemplateParameterStorageClass;
4169  class SgTemplateArgumentStorageClass;
4170  class SgTemplateParameterListStorageClass;
4171  class SgTemplateArgumentListStorageClass;
4172  class SgBitAttributeStorageClass;
4173  class SgAttributeStorageClass;
4174  class SgExpBaseClassStorageClass;
4175  class SgNonrealBaseClassStorageClass;
4176  class SgBaseClassStorageClass;
4177  class SgUndirectedGraphEdgeStorageClass;
4178  class SgDirectedGraphEdgeStorageClass;
4179  class SgGraphNodeStorageClass;
4180  class SgGraphEdgeStorageClass;
4181  class SgStringKeyedBidirectionalGraphStorageClass;
4182  class SgIntKeyedBidirectionalGraphStorageClass;
4183  class SgBidirectionalGraphStorageClass;
4184  class SgIncidenceDirectedGraphStorageClass;
4185  class SgIncidenceUndirectedGraphStorageClass;
4186  class SgGraphStorageClass;
4187  class SgGraphNodeListStorageClass;
4188  class SgGraphEdgeListStorageClass;
4189  class SgQualifiedNameStorageClass;
4190  class SgNameGroupStorageClass;
4191  class SgDimensionObjectStorageClass;
4192  class SgDataStatementGroupStorageClass;
4193  class SgDataStatementObjectStorageClass;
4194  class SgDataStatementValueStorageClass;
4195  class SgFormatItemStorageClass;
4196  class SgFormatItemListStorageClass;
4197  class SgTypeTableStorageClass;
4198  class SgHeaderFileReportStorageClass;
4199  class SgSupportStorageClass;
4200  class SgTypeUnknownStorageClass;
4201  class SgTypeCharStorageClass;
4202  class SgTypeSignedCharStorageClass;
4203  class SgTypeUnsignedCharStorageClass;
4204  class SgTypeShortStorageClass;
4205  class SgTypeSignedShortStorageClass;
4206  class SgTypeUnsignedShortStorageClass;
4207  class SgTypeIntStorageClass;
4208  class SgTypeSignedIntStorageClass;
4209  class SgTypeUnsignedIntStorageClass;
4210  class SgTypeLongStorageClass;
4211  class SgTypeSignedLongStorageClass;
4212  class SgTypeUnsignedLongStorageClass;
4213  class SgTypeVoidStorageClass;
4214  class SgTypeGlobalVoidStorageClass;
4215  class SgTypeWcharStorageClass;
4216  class SgTypeFloatStorageClass;
4217  class SgTypeDoubleStorageClass;
4218  class SgTypeLongLongStorageClass;
4219  class SgTypeSignedLongLongStorageClass;
4220  class SgTypeUnsignedLongLongStorageClass;
4221  class SgTypeLongDoubleStorageClass;
4222  class SgTypeFloat80StorageClass;
4223  class SgTypeFloat128StorageClass;
4224  class SgTypeStringStorageClass;
4225  class SgTypeBoolStorageClass;
4226  class SgTypeFixedStorageClass;
4227  class SgTypeMatrixStorageClass;
4228  class SgTypeTupleStorageClass;
4229  class SgTypeNullptrStorageClass;
4230  class SgTypeComplexStorageClass;
4231  class SgTypeImaginaryStorageClass;
4232  class SgTypeDefaultStorageClass;
4233  class SgPointerMemberTypeStorageClass;
4234  class SgReferenceTypeStorageClass;
4235  class SgRvalueReferenceTypeStorageClass;
4236  class SgDeclTypeStorageClass;
4237  class SgTypeOfTypeStorageClass;
4238  class SgTypeCAFTeamStorageClass;
4239  class SgTypeUnsigned128bitIntegerStorageClass;
4240  class SgTypeSigned128bitIntegerStorageClass;
4241  class SgTypeLabelStorageClass;
4242  class SgTemplateTypeStorageClass;
4243  class SgEnumTypeStorageClass;
4244  class SgTypedefTypeStorageClass;
4245  class SgNonrealTypeStorageClass;
4246  class SgAutoTypeStorageClass;
4247  class SgModifierTypeStorageClass;
4248  class SgPartialFunctionModifierTypeStorageClass;
4249  class SgArrayTypeStorageClass;
4250  class SgTypeEllipseStorageClass;
4251  class SgTypeCrayPointerStorageClass;
4252  class SgPartialFunctionTypeStorageClass;
4253  class SgMemberFunctionTypeStorageClass;
4254  class SgFunctionTypeStorageClass;
4255  class SgPointerTypeStorageClass;
4256  class SgClassTypeStorageClass;
4257  class SgNamedTypeStorageClass;
4258  class SgQualifiedNameTypeStorageClass;
4259  class SgTypeChar16StorageClass;
4260  class SgTypeChar32StorageClass;
4261  class SgTypeStorageClass;
4262  class SgForStatementStorageClass;
4263  class SgForInitStatementStorageClass;
4264  class SgRangeBasedForStatementStorageClass;
4265  class SgCatchStatementSeqStorageClass;
4266  class SgFunctionParameterListStorageClass;
4267  class SgCtorInitializerListStorageClass;
4268  class SgBasicBlockStorageClass;
4269  class SgGlobalStorageClass;
4270  class SgIfStmtStorageClass;
4271  class SgWhileStmtStorageClass;
4272  class SgDoWhileStmtStorageClass;
4273  class SgSwitchStatementStorageClass;
4274  class SgCatchOptionStmtStorageClass;
4275  class SgFunctionParameterScopeStorageClass;
4276  class SgDeclarationScopeStorageClass;
4277  class SgVariableDefinitionStorageClass;
4278  class SgStmtDeclarationStatementStorageClass;
4279  class SgEnumDeclarationStorageClass;
4280  class SgAsmStmtStorageClass;
4281  class SgFunctionTypeTableStorageClass;
4282  class SgExprStatementStorageClass;
4283  class SgLabelStatementStorageClass;
4284  class SgCaseOptionStmtStorageClass;
4285  class SgTryStmtStorageClass;
4286  class SgDefaultOptionStmtStorageClass;
4287  class SgBreakStmtStorageClass;
4288  class SgContinueStmtStorageClass;
4289  class SgReturnStmtStorageClass;
4290  class SgGotoStatementStorageClass;
4291  class SgSpawnStmtStorageClass;
4292  class SgTemplateTypedefDeclarationStorageClass;
4293  class SgTemplateInstantiationTypedefDeclarationStorageClass;
4294  class SgTypedefDeclarationStorageClass;
4295  class SgNullStatementStorageClass;
4296  class SgVariantStatementStorageClass;
4297  class SgPragmaDeclarationStorageClass;
4298  class SgTemplateClassDeclarationStorageClass;
4299  class SgTemplateMemberFunctionDeclarationStorageClass;
4300  class SgTemplateFunctionDeclarationStorageClass;
4301  class SgTemplateVariableDeclarationStorageClass;
4302  class SgTemplateDeclarationStorageClass;
4303  class SgVariableDeclarationStorageClass;
4304  class SgTemplateInstantiationDeclStorageClass;
4305  class SgTemplateInstantiationDefnStorageClass;
4306  class SgTemplateInstantiationFunctionDeclStorageClass;
4307  class SgTemplateInstantiationMemberFunctionDeclStorageClass;
4308  class SgNonrealDeclStorageClass;
4309  class SgWithStatementStorageClass;
4310  class SgPassStatementStorageClass;
4311  class SgAssertStmtStorageClass;
4312  class SgExecStatementStorageClass;
4313  class SgProgramHeaderStatementStorageClass;
4314  class SgProcedureHeaderStatementStorageClass;
4315  class SgEntryStatementStorageClass;
4316  class SgFortranNonblockedDoStorageClass;
4317  class SgInterfaceStatementStorageClass;
4318  class SgParameterStatementStorageClass;
4319  class SgCommonBlockStorageClass;
4320  class SgModuleStatementStorageClass;
4321  class SgUseStatementStorageClass;
4322  class SgProcessControlStatementStorageClass;
4323  class SgPrintStatementStorageClass;
4324  class SgReadStatementStorageClass;
4325  class SgWriteStatementStorageClass;
4326  class SgOpenStatementStorageClass;
4327  class SgCloseStatementStorageClass;
4328  class SgInquireStatementStorageClass;
4329  class SgFlushStatementStorageClass;
4330  class SgBackspaceStatementStorageClass;
4331  class SgRewindStatementStorageClass;
4332  class SgEndfileStatementStorageClass;
4333  class SgWaitStatementStorageClass;
4334  class SgCAFWithTeamStatementStorageClass;
4335  class SgFormatStatementStorageClass;
4336  class SgFortranDoStorageClass;
4337  class SgForAllStatementStorageClass;
4338  class SgIOStatementStorageClass;
4339  class SgSyncAllStatementStorageClass;
4340  class SgSyncImagesStatementStorageClass;
4341  class SgSyncMemoryStatementStorageClass;
4342  class SgSyncTeamStatementStorageClass;
4343  class SgLockStatementStorageClass;
4344  class SgUnlockStatementStorageClass;
4345  class SgImageControlStatementStorageClass;
4346  class SgUpcNotifyStatementStorageClass;
4347  class SgUpcWaitStatementStorageClass;
4348  class SgUpcBarrierStatementStorageClass;
4349  class SgUpcFenceStatementStorageClass;
4350  class SgUpcForAllStatementStorageClass;
4351  class SgUpirSpmdStatementStorageClass;
4352  class SgOmpLoopStatementStorageClass;
4353  class SgOmpScanStatementStorageClass;
4354  class SgOmpTaskloopStatementStorageClass;
4355  class SgOmpTaskgroupStatementStorageClass;
4356  class SgOmpDepobjStatementStorageClass;
4357  class SgOmpTeamsStatementStorageClass;
4358  class SgOmpCancellationPointStatementStorageClass;
4359  class SgOmpDeclareMapperStatementStorageClass;
4360  class SgOmpCancelStatementStorageClass;
4361  class SgOmpDistributeStatementStorageClass;
4362  class SgOmpMetadirectiveStatementStorageClass;
4363  class SgOmpSingleStatementStorageClass;
4364  class SgOmpTaskStatementStorageClass;
4365  class SgOmpTargetEnterDataStatementStorageClass;
4366  class SgOmpTargetExitDataStatementStorageClass;
4367  class SgUpirWorksharingStatementStorageClass;
4368  class SgOmpForSimdStatementStorageClass;
4369  class SgOmpDoStatementStorageClass;
4370  class SgOmpSectionsStatementStorageClass;
4371  class SgOmpAtomicStatementStorageClass;
4372  class SgUpirTaskStatementStorageClass;
4373  class SgOmpTargetDataStatementStorageClass;
4374  class SgOmpTargetParallelForStatementStorageClass;
4375  class SgOmpTargetParallelStatementStorageClass;
4376  class SgOmpDistributeSimdStatementStorageClass;
4377  class SgOmpDistributeParallelForStatementStorageClass;
4378  class SgOmpDistributeParallelForSimdStatementStorageClass;
4379  class SgOmpTaskloopSimdStatementStorageClass;
4380  class SgOmpTargetUpdateStatementStorageClass;
4381  class SgOmpTargetParallelForSimdStatementStorageClass;
4382  class SgOmpTargetParallelLoopStatementStorageClass;
4383  class SgOmpTargetSimdStatementStorageClass;
4384  class SgOmpTargetTeamsStatementStorageClass;
4385  class SgOmpTargetTeamsDistributeStatementStorageClass;
4386  class SgOmpTargetTeamsDistributeSimdStatementStorageClass;
4387  class SgOmpTargetTeamsLoopStatementStorageClass;
4388  class SgOmpTargetTeamsDistributeParallelForStatementStorageClass;
4389  class SgOmpTargetTeamsDistributeParallelForSimdStatementStorageClass;
4390  class SgOmpMasterTaskloopSimdStatementStorageClass;
4391  class SgOmpParallelMasterTaskloopStatementStorageClass;
4392  class SgOmpParallelMasterTaskloopSimdStatementStorageClass;
4393  class SgOmpTeamsDistributeStatementStorageClass;
4394  class SgOmpTeamsDistributeSimdStatementStorageClass;
4395  class SgOmpTeamsDistributeParallelForStatementStorageClass;
4396  class SgOmpTeamsDistributeParallelForSimdStatementStorageClass;
4397  class SgOmpTeamsLoopStatementStorageClass;
4398  class SgOmpParallelMasterStatementStorageClass;
4399  class SgOmpMasterTaskloopStatementStorageClass;
4400  class SgOmpParallelLoopStatementStorageClass;
4401  class SgOmpUnrollStatementStorageClass;
4402  class SgOmpTileStatementStorageClass;
4403  class SgUpirSimdStatementStorageClass;
4404  class SgOmpCriticalStatementStorageClass;
4405  class SgOmpOrderedStatementStorageClass;
4406  class SgUpirLoopStatementStorageClass;
4407  class SgUpirLoopParallelStatementStorageClass;
4408  class SgUpirSyncStatementStorageClass;
4409  class SgUpirFieldBodyStatementStorageClass;
4410  class SgOmpMasterStatementStorageClass;
4411  class SgOmpSectionStatementStorageClass;
4412  class SgOmpWorkshareStatementStorageClass;
4413  class SgOmpFlushStatementStorageClass;
4414  class SgOmpAllocateStatementStorageClass;
4415  class SgOmpOrderedDependStatementStorageClass;
4416  class SgUpirBodyStatementStorageClass;
4417  class SgUpirFieldStatementStorageClass;
4418  class SgBlockDataStatementStorageClass;
4419  class SgImplicitStatementStorageClass;
4420  class SgStatementFunctionStatementStorageClass;
4421  class SgWhereStatementStorageClass;
4422  class SgNullifyStatementStorageClass;
4423  class SgEquivalenceStatementStorageClass;
4424  class SgDerivedTypeStatementStorageClass;
4425  class SgAttributeSpecificationStatementStorageClass;
4426  class SgAllocateStatementStorageClass;
4427  class SgDeallocateStatementStorageClass;
4428  class SgContainsStatementStorageClass;
4429  class SgSequenceStatementStorageClass;
4430  class SgElseWhereStatementStorageClass;
4431  class SgArithmeticIfStatementStorageClass;
4432  class SgAssignStatementStorageClass;
4433  class SgComputedGotoStatementStorageClass;
4434  class SgAssignedGotoStatementStorageClass;
4435  class SgNamelistStatementStorageClass;
4436  class SgImportStatementStorageClass;
4437  class SgAssociateStatementStorageClass;
4438  class SgFortranIncludeLineStorageClass;
4439  class SgNamespaceDeclarationStatementStorageClass;
4440  class SgNamespaceAliasDeclarationStatementStorageClass;
4441  class SgNamespaceDefinitionStatementStorageClass;
4442  class SgUsingDeclarationStatementStorageClass;
4443  class SgUsingDirectiveStatementStorageClass;
4444  class SgTemplateInstantiationDirectiveStatementStorageClass;
4445  class SgStaticAssertionDeclarationStorageClass;
4446  class SgTemplateClassDefinitionStorageClass;
4447  class SgTemplateFunctionDefinitionStorageClass;
4448  class SgClassDeclarationStorageClass;
4449  class SgClassDefinitionStorageClass;
4450  class SgFunctionDefinitionStorageClass;
4451  class SgScopeStatementStorageClass;
4452  class SgMemberFunctionDeclarationStorageClass;
4453  class SgFunctionDeclarationStorageClass;
4454  class SgIncludeDirectiveStatementStorageClass;
4455  class SgDefineDirectiveStatementStorageClass;
4456  class SgUndefDirectiveStatementStorageClass;
4457  class SgIfdefDirectiveStatementStorageClass;
4458  class SgIfndefDirectiveStatementStorageClass;
4459  class SgIfDirectiveStatementStorageClass;
4460  class SgDeadIfDirectiveStatementStorageClass;
4461  class SgElseDirectiveStatementStorageClass;
4462  class SgElseifDirectiveStatementStorageClass;
4463  class SgEndifDirectiveStatementStorageClass;
4464  class SgLineDirectiveStatementStorageClass;
4465  class SgWarningDirectiveStatementStorageClass;
4466  class SgErrorDirectiveStatementStorageClass;
4467  class SgEmptyDirectiveStatementStorageClass;
4468  class SgIncludeNextDirectiveStatementStorageClass;
4469  class SgIdentDirectiveStatementStorageClass;
4470  class SgLinemarkerDirectiveStatementStorageClass;
4471  class SgC_PreprocessorDirectiveStatementStorageClass;
4472  class SgClinkageStartStatementStorageClass;
4473  class SgClinkageEndStatementStorageClass;
4474  class SgClinkageDeclarationStatementStorageClass;
4475  class SgOmpDeclareSimdStatementStorageClass;
4476  class SgOmpBarrierStatementStorageClass;
4477  class SgOmpTaskyieldStatementStorageClass;
4478  class SgOmpRequiresStatementStorageClass;
4479  class SgOmpTaskwaitStatementStorageClass;
4480  class SgOmpThreadprivateStatementStorageClass;
4481  class SgMicrosoftAttributeDeclarationStorageClass;
4482  class SgEmptyDeclarationStorageClass;
4483  class SgDeclarationStatementStorageClass;
4484  class SgUpirBaseStatementStorageClass;
4485  class SgStatementStorageClass;
4486  class SgVarRefExpStorageClass;
4487  class SgNonrealRefExpStorageClass;
4488  class SgCompoundLiteralExpStorageClass;
4489  class SgLabelRefExpStorageClass;
4490  class SgClassNameRefExpStorageClass;
4491  class SgFunctionRefExpStorageClass;
4492  class SgMemberFunctionRefExpStorageClass;
4493  class SgTemplateFunctionRefExpStorageClass;
4494  class SgTemplateMemberFunctionRefExpStorageClass;
4495  class SgSizeOfOpStorageClass;
4496  class SgAlignOfOpStorageClass;
4497  class SgNoexceptOpStorageClass;
4498  class SgTypeExpressionStorageClass;
4499  class SgLambdaExpStorageClass;
4500  class SgUpcLocalsizeofExpressionStorageClass;
4501  class SgUpcBlocksizeofExpressionStorageClass;
4502  class SgUpcElemsizeofExpressionStorageClass;
4503  class SgVarArgStartOpStorageClass;
4504  class SgVarArgStartOneOperandOpStorageClass;
4505  class SgVarArgOpStorageClass;
4506  class SgVarArgEndOpStorageClass;
4507  class SgVarArgCopyOpStorageClass;
4508  class SgTypeIdOpStorageClass;
4509  class SgConditionalExpStorageClass;
4510  class SgNewExpStorageClass;
4511  class SgDeleteExpStorageClass;
4512  class SgThisExpStorageClass;
4513  class SgSuperExpStorageClass;
4514  class SgClassExpStorageClass;
4515  class SgRefExpStorageClass;
4516  class SgAggregateInitializerStorageClass;
4517  class SgCompoundInitializerStorageClass;
4518  class SgConstructorInitializerStorageClass;
4519  class SgAssignInitializerStorageClass;
4520  class SgBracedInitializerStorageClass;
4521  class SgExpressionRootStorageClass;
4522  class SgMinusOpStorageClass;
4523  class SgUnaryAddOpStorageClass;
4524  class SgNotOpStorageClass;
4525  class SgPointerDerefExpStorageClass;
4526  class SgAddressOfOpStorageClass;
4527  class SgMinusMinusOpStorageClass;
4528  class SgPlusPlusOpStorageClass;
4529  class SgBitComplementOpStorageClass;
4530  class SgRealPartOpStorageClass;
4531  class SgImagPartOpStorageClass;
4532  class SgConjugateOpStorageClass;
4533  class SgCastExpStorageClass;
4534  class SgThrowOpStorageClass;
4535  class SgArrowExpStorageClass;
4536  class SgDotExpStorageClass;
4537  class SgDotStarOpStorageClass;
4538  class SgArrowStarOpStorageClass;
4539  class SgEqualityOpStorageClass;
4540  class SgLessThanOpStorageClass;
4541  class SgGreaterThanOpStorageClass;
4542  class SgNotEqualOpStorageClass;
4543  class SgLessOrEqualOpStorageClass;
4544  class SgGreaterOrEqualOpStorageClass;
4545  class SgAddOpStorageClass;
4546  class SgSubtractOpStorageClass;
4547  class SgMultiplyOpStorageClass;
4548  class SgDivideOpStorageClass;
4549  class SgIntegerDivideOpStorageClass;
4550  class SgModOpStorageClass;
4551  class SgAndOpStorageClass;
4552  class SgOrOpStorageClass;
4553  class SgBitXorOpStorageClass;
4554  class SgBitAndOpStorageClass;
4555  class SgBitOrOpStorageClass;
4556  class SgBitEqvOpStorageClass;
4557  class SgCommaOpExpStorageClass;
4558  class SgLshiftOpStorageClass;
4559  class SgRshiftOpStorageClass;
4560  class SgPntrArrRefExpStorageClass;
4561  class SgScopeOpStorageClass;
4562  class SgAssignOpStorageClass;
4563  class SgPlusAssignOpStorageClass;
4564  class SgMinusAssignOpStorageClass;
4565  class SgAndAssignOpStorageClass;
4566  class SgIorAssignOpStorageClass;
4567  class SgMultAssignOpStorageClass;
4568  class SgDivAssignOpStorageClass;
4569  class SgModAssignOpStorageClass;
4570  class SgXorAssignOpStorageClass;
4571  class SgLshiftAssignOpStorageClass;
4572  class SgRshiftAssignOpStorageClass;
4573  class SgIntegerDivideAssignOpStorageClass;
4574  class SgExponentiationAssignOpStorageClass;
4575  class SgConcatenationOpStorageClass;
4576  class SgNaryComparisonOpStorageClass;
4577  class SgNaryBooleanOpStorageClass;
4578  class SgBoolValExpStorageClass;
4579  class SgStringValStorageClass;
4580  class SgShortValStorageClass;
4581  class SgCharValStorageClass;
4582  class SgUnsignedCharValStorageClass;
4583  class SgWcharValStorageClass;
4584  class SgChar16ValStorageClass;
4585  class SgChar32ValStorageClass;
4586  class SgUnsignedShortValStorageClass;
4587  class SgIntValStorageClass;
4588  class SgEnumValStorageClass;
4589  class SgUnsignedIntValStorageClass;
4590  class SgLongIntValStorageClass;
4591  class SgLongLongIntValStorageClass;
4592  class SgUnsignedLongLongIntValStorageClass;
4593  class SgUnsignedLongValStorageClass;
4594  class SgFloatValStorageClass;
4595  class SgDoubleValStorageClass;
4596  class SgLongDoubleValStorageClass;
4597  class SgFloat80ValStorageClass;
4598  class SgFloat128ValStorageClass;
4599  class SgNullptrValExpStorageClass;
4600  class SgVoidValStorageClass;
4601  class SgFunctionParameterRefExpStorageClass;
4602  class SgTemplateParameterValStorageClass;
4603  class SgUpcThreadsStorageClass;
4604  class SgUpcMythreadStorageClass;
4605  class SgComplexValStorageClass;
4606  class SgNullExpressionStorageClass;
4607  class SgVariantExpressionStorageClass;
4608  class SgStatementExpressionStorageClass;
4609  class SgAsmOpStorageClass;
4610  class SgCudaKernelExecConfigStorageClass;
4611  class SgCudaKernelCallExpStorageClass;
4612  class SgLambdaRefExpStorageClass;
4613  class SgTupleExpStorageClass;
4614  class SgListExpStorageClass;
4615  class SgDictionaryExpStorageClass;
4616  class SgKeyDatumPairStorageClass;
4617  class SgComprehensionStorageClass;
4618  class SgListComprehensionStorageClass;
4619  class SgSetComprehensionStorageClass;
4620  class SgDictionaryComprehensionStorageClass;
4621  class SgMembershipOpStorageClass;
4622  class SgNonMembershipOpStorageClass;
4623  class SgIsOpStorageClass;
4624  class SgIsNotOpStorageClass;
4625  class SgStringConversionStorageClass;
4626  class SgYieldExpressionStorageClass;
4627  class SgFoldExpressionStorageClass;
4628  class SgChooseExpressionStorageClass;
4629  class SgAwaitExpressionStorageClass;
4630  class SgSpaceshipOpStorageClass;
4631  class SgSubscriptExpressionStorageClass;
4632  class SgColonShapeExpStorageClass;
4633  class SgAsteriskShapeExpStorageClass;
4634  class SgIOItemExpressionStorageClass;
4635  class SgImpliedDoStorageClass;
4636  class SgExponentiationOpStorageClass;
4637  class SgUnknownArrayOrFunctionReferenceStorageClass;
4638  class SgActualArgumentExpressionStorageClass;
4639  class SgUserDefinedBinaryOpStorageClass;
4640  class SgPointerAssignOpStorageClass;
4641  class SgCAFCoExpressionStorageClass;
4642  class SgDesignatedInitializerStorageClass;
4643  class SgMatrixExpStorageClass;
4644  class SgRangeExpStorageClass;
4645  class SgMagicColonExpStorageClass;
4646  class SgElementwiseMultiplyOpStorageClass;
4647  class SgPowerOpStorageClass;
4648  class SgElementwisePowerOpStorageClass;
4649  class SgElementwiseDivideOpStorageClass;
4650  class SgLeftDivideOpStorageClass;
4651  class SgElementwiseLeftDivideOpStorageClass;
4652  class SgElementwiseAddOpStorageClass;
4653  class SgElementwiseSubtractOpStorageClass;
4654  class SgMatrixTransposeOpStorageClass;
4655  class SgElementwiseOpStorageClass;
4656  class SgInitializerStorageClass;
4657  class SgSIMDLoadStorageClass;
4658  class SgSIMDBroadcastStorageClass;
4659  class SgSIMDStoreStorageClass;
4660  class SgSIMDPartialStoreStorageClass;
4661  class SgSIMDScalarStoreStorageClass;
4662  class SgSIMDGatherStorageClass;
4663  class SgSIMDExplicitGatherStorageClass;
4664  class SgSIMDScatterStorageClass;
4665  class SgSIMDAddOpStorageClass;
4666  class SgSIMDSubOpStorageClass;
4667  class SgSIMDMulOpStorageClass;
4668  class SgSIMDDivOpStorageClass;
4669  class SgSIMDFmaOpStorageClass;
4670  class SgSIMDBinaryOpStorageClass;
4671  class SgUserDefinedUnaryOpStorageClass;
4672  class SgPseudoDestructorRefExpStorageClass;
4673  class SgUnaryOpStorageClass;
4674  class SgCompoundAssignOpStorageClass;
4675  class SgBinaryOpStorageClass;
4676  class SgNaryOpStorageClass;
4677  class SgValueExpStorageClass;
4678  class SgExprListExpStorageClass;
4679  class SgFunctionCallExpStorageClass;
4680  class SgCallExpressionStorageClass;
4681  class SgTypeTraitBuiltinOperatorStorageClass;
4682  class SgExpressionStorageClass;
4683  class SgTemplateVariableSymbolStorageClass;
4684  class SgVariableSymbolStorageClass;
4685  class SgFunctionTypeSymbolStorageClass;
4686  class SgTemplateClassSymbolStorageClass;
4687  class SgClassSymbolStorageClass;
4688  class SgTemplateSymbolStorageClass;
4689  class SgEnumSymbolStorageClass;
4690  class SgEnumFieldSymbolStorageClass;
4691  class SgTemplateTypedefSymbolStorageClass;
4692  class SgTypedefSymbolStorageClass;
4693  class SgTemplateFunctionSymbolStorageClass;
4694  class SgTemplateMemberFunctionSymbolStorageClass;
4695  class SgLabelSymbolStorageClass;
4696  class SgDefaultSymbolStorageClass;
4697  class SgNamespaceSymbolStorageClass;
4698  class SgIntrinsicSymbolStorageClass;
4699  class SgModuleSymbolStorageClass;
4700  class SgInterfaceSymbolStorageClass;
4701  class SgCommonSymbolStorageClass;
4702  class SgRenameSymbolStorageClass;
4703  class SgMemberFunctionSymbolStorageClass;
4704  class SgFunctionSymbolStorageClass;
4705  class SgAliasSymbolStorageClass;
4706  class SgNonrealSymbolStorageClass;
4707  class SgSymbolStorageClass;
4708  class SgCommonBlockObjectStorageClass;
4709  class SgInitializedNameStorageClass;
4710  class SgLambdaCaptureStorageClass;
4711  class SgLambdaCaptureListStorageClass;
4712  class SgOmpOrderedClauseStorageClass;
4713  class SgOmpNowaitClauseStorageClass;
4714  class SgOmpNogroupClauseStorageClass;
4715  class SgOmpReadClauseStorageClass;
4716  class SgOmpThreadsClauseStorageClass;
4717  class SgOmpSimdClauseStorageClass;
4718  class SgOmpReverseOffloadClauseStorageClass;
4719  class SgOmpExtImplementationDefinedRequirementClauseStorageClass;
4720  class SgOmpUnifiedAddressClauseStorageClass;
4721  class SgOmpUnifiedSharedMemoryClauseStorageClass;
4722  class SgOmpDynamicAllocatorsClauseStorageClass;
4723  class SgOmpAtomicDefaultMemOrderClauseStorageClass;
4724  class SgOmpWriteClauseStorageClass;
4725  class SgOmpUpdateClauseStorageClass;
4726  class SgOmpDepobjUpdateClauseStorageClass;
4727  class SgOmpDestroyClauseStorageClass;
4728  class SgOmpCaptureClauseStorageClass;
4729  class SgOmpSeqCstClauseStorageClass;
4730  class SgOmpAcqRelClauseStorageClass;
4731  class SgOmpReleaseClauseStorageClass;
4732  class SgOmpAcquireClauseStorageClass;
4733  class SgOmpRelaxedClauseStorageClass;
4734  class SgOmpParallelClauseStorageClass;
4735  class SgOmpSectionsClauseStorageClass;
4736  class SgOmpForClauseStorageClass;
4737  class SgOmpTaskgroupClauseStorageClass;
4738  class SgOmpBeginClauseStorageClass;
4739  class SgOmpEndClauseStorageClass;
4740  class SgOmpUntiedClauseStorageClass;
4741  class SgOmpMergeableClauseStorageClass;
4742  class SgOmpDefaultClauseStorageClass;
4743  class SgOmpAtomicClauseStorageClass;
4744  class SgOmpProcBindClauseStorageClass;
4745  class SgOmpOrderClauseStorageClass;
4746  class SgOmpBindClauseStorageClass;
4747  class SgOmpInbranchClauseStorageClass;
4748  class SgOmpNotinbranchClauseStorageClass;
4749  class SgOmpCollapseClauseStorageClass;
4750  class SgOmpIfClauseStorageClass;
4751  class SgOmpFinalClauseStorageClass;
4752  class SgOmpPriorityClauseStorageClass;
4753  class SgUpirNumUnitsFieldStorageClass;
4754  class SgOmpNumTeamsClauseStorageClass;
4755  class SgOmpGrainsizeClauseStorageClass;
4756  class SgOmpDetachClauseStorageClass;
4757  class SgOmpNumTasksClauseStorageClass;
4758  class SgOmpHintClauseStorageClass;
4759  class SgOmpThreadLimitClauseStorageClass;
4760  class SgOmpNontemporalClauseStorageClass;
4761  class SgOmpInclusiveClauseStorageClass;
4762  class SgOmpExclusiveClauseStorageClass;
4763  class SgOmpIsDevicePtrClauseStorageClass;
4764  class SgOmpUseDevicePtrClauseStorageClass;
4765  class SgOmpUseDeviceAddrClauseStorageClass;
4766  class SgOmpDeviceClauseStorageClass;
4767  class SgOmpSafelenClauseStorageClass;
4768  class SgOmpSimdlenClauseStorageClass;
4769  class SgOmpPartialClauseStorageClass;
4770  class SgOmpFullClauseStorageClass;
4771  class SgOmpSizesClauseStorageClass;
4772  class SgUpirBranchFieldStorageClass;
4773  class SgUpirNestedLevelFieldStorageClass;
4774  class SgUpirNestedParentFieldStorageClass;
4775  class SgUpirNestedChildFieldStorageClass;
4776  class SgUpirSyncFieldStorageClass;
4777  class SgUpirDataFieldStorageClass;
4778  class SgUpirTargetFieldStorageClass;
4779  class SgUpirDataItemFieldStorageClass;
4780  class SgOmpExpressionClauseStorageClass;
4781  class SgOmpCopyprivateClauseStorageClass;
4782  class SgOmpPrivateClauseStorageClass;
4783  class SgOmpFirstprivateClauseStorageClass;
4784  class SgOmpSharedClauseStorageClass;
4785  class SgOmpCopyinClauseStorageClass;
4786  class SgOmpLastprivateClauseStorageClass;
4787  class SgOmpReductionClauseStorageClass;
4788  class SgOmpInReductionClauseStorageClass;
4789  class SgOmpTaskReductionClauseStorageClass;
4790  class SgOmpAllocateClauseStorageClass;
4791  class SgOmpDependClauseStorageClass;
4792  class SgOmpToClauseStorageClass;
4793  class SgOmpUsesAllocatorsClauseStorageClass;
4794  class SgOmpFromClauseStorageClass;
4795  class SgOmpAffinityClauseStorageClass;
4796  class SgOmpMapClauseStorageClass;
4797  class SgOmpLinearClauseStorageClass;
4798  class SgOmpUniformClauseStorageClass;
4799  class SgOmpAlignedClauseStorageClass;
4800  class SgOmpVariablesClauseStorageClass;
4801  class SgOmpScheduleClauseStorageClass;
4802  class SgOmpWhenClauseStorageClass;
4803  class SgOmpDistScheduleClauseStorageClass;
4804  class SgOmpDefaultmapClauseStorageClass;
4805  class SgOmpAllocatorClauseStorageClass;
4806  class SgOmpUsesAllocatorsDefinationStorageClass;
4807  class SgOmpClauseStorageClass;
4808  class SgRenamePairStorageClass;
4809  class SgInterfaceBodyStorageClass;
4810  class SgHeaderFileBodyStorageClass;
4811  class SgLocatedNodeSupportStorageClass;
4812  class SgTokenStorageClass;
4813  class SgLocatedNodeStorageClass;
4814  class SgNodeStorageClass;
4815 
4816  template <class A>
4818  class AstSpecificDataManagingClass;
4819 
4820 // ***** end of storage classes declarations **********
4821 
4822 
4823 
4824 ROSE_DLL_API std::ostream& operator<<(std::ostream&, const SgName&);
4825 
4826 std::ostream& operator<<(std::ostream&, const std::vector<bool>&);
4827 
4828 std::ostream& operator<<(std::ostream&, const std::set<int>&);
4829 
4830 std::ostream& operator<<(std::ostream&, const std::map<SgNode*,int>&);
4831 
4832 std::ostream& operator<<(std::ostream&, const std::map<SgNode*,std::string>&);
4833 
4834 std::ostream& operator<<(std::ostream&, const Rose_STL_Container<SgDataStatementObject*>&);
4835 
4836 std::ostream& operator<<(std::ostream&, const Rose_STL_Container<SgDataStatementValue*>&);
4837 
4838 std::ostream& operator<<(std::ostream&, const Rose_STL_Container<SgCommonBlockObject*>&);
4839 
4840 std::ostream& operator<<(std::ostream&, const Rose_STL_Container<SgDimensionObject*>&);
4841 
4842 std::ostream& operator<<(std::ostream&, const Rose_STL_Container<SgLabelSymbol*>&);
4843 
4844 std::ostream& operator<<(std::ostream&, const Rose_STL_Container<SgFormatItem*>&);
4845 
4846 typedef enum
4847 {preorder = 1, postorder = 2, preandpostorder = preorder | postorder} t_traverseOrder;
4848 
4849 
4850 #if ROSE_USING_SMALL_GENERATED_HEADER_FILES
4851 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgNode.h"
4852 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgSupport.h"
4853 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgModifier.h"
4854 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgModifierNodes.h"
4855 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgConstVolatileModifier.h"
4856 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgStorageModifier.h"
4857 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgAccessModifier.h"
4858 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgFunctionModifier.h"
4859 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgUPC_AccessModifier.h"
4860 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgSpecialFunctionModifier.h"
4861 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgElaboratedTypeModifier.h"
4862 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgLinkageModifier.h"
4863 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgBaseClassModifier.h"
4864 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgStructureModifier.h"
4865 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTypeModifier.h"
4866 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgDeclarationModifier.h"
4867 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOpenclAccessModeModifier.h"
4868 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgName.h"
4869 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgSymbolTable.h"
4870 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgAttribute.h"
4871 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgPragma.h"
4872 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgBitAttribute.h"
4873 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgFuncDecl_attr.h"
4874 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgClassDecl_attr.h"
4875 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/Sg_File_Info.h"
4876 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgFile.h"
4877 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgSourceFile.h"
4878 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgUnknownFile.h"
4879 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgProject.h"
4880 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOptions.h"
4881 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgUnparse_Info.h"
4882 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgBaseClass.h"
4883 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgExpBaseClass.h"
4884 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgNonrealBaseClass.h"
4885 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTypedefSeq.h"
4886 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTemplateParameter.h"
4887 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTemplateArgument.h"
4888 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgDirectory.h"
4889 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgFileList.h"
4890 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgDirectoryList.h"
4891 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgFunctionParameterTypeList.h"
4892 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgQualifiedName.h"
4893 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTemplateArgumentList.h"
4894 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTemplateParameterList.h"
4895 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgGraph.h"
4896 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgIncidenceDirectedGraph.h"
4897 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgBidirectionalGraph.h"
4898 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgStringKeyedBidirectionalGraph.h"
4899 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgIntKeyedBidirectionalGraph.h"
4900 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgIncidenceUndirectedGraph.h"
4901 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgGraphNode.h"
4902 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgGraphEdge.h"
4903 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgDirectedGraphEdge.h"
4904 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgUndirectedGraphEdge.h"
4905 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgGraphNodeList.h"
4906 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgGraphEdgeList.h"
4907 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTypeTable.h"
4908 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgNameGroup.h"
4909 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgDimensionObject.h"
4910 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgFormatItem.h"
4911 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgFormatItemList.h"
4912 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgDataStatementGroup.h"
4913 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgDataStatementObject.h"
4914 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgIncludeFile.h"
4915 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgDataStatementValue.h"
4916 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgHeaderFileReport.h"
4917 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgType.h"
4918 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTypeUnknown.h"
4919 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTypeChar.h"
4920 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTypeSignedChar.h"
4921 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTypeUnsignedChar.h"
4922 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTypeShort.h"
4923 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTypeSignedShort.h"
4924 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTypeUnsignedShort.h"
4925 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTypeInt.h"
4926 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTypeSignedInt.h"
4927 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTypeUnsignedInt.h"
4928 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTypeLong.h"
4929 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTypeSignedLong.h"
4930 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTypeUnsignedLong.h"
4931 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTypeVoid.h"
4932 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTypeGlobalVoid.h"
4933 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTypeWchar.h"
4934 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTypeFloat.h"
4935 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTypeDouble.h"
4936 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTypeLongLong.h"
4937 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTypeSignedLongLong.h"
4938 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTypeUnsignedLongLong.h"
4939 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTypeSigned128bitInteger.h"
4940 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTypeUnsigned128bitInteger.h"
4941 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTypeFloat80.h"
4942 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTypeLongDouble.h"
4943 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTypeString.h"
4944 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTypeBool.h"
4945 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgPointerType.h"
4946 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgPointerMemberType.h"
4947 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgReferenceType.h"
4948 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgNamedType.h"
4949 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgClassType.h"
4950 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgEnumType.h"
4951 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTypedefType.h"
4952 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgNonrealType.h"
4953 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgModifierType.h"
4954 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgFunctionType.h"
4955 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgMemberFunctionType.h"
4956 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgPartialFunctionType.h"
4957 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgPartialFunctionModifierType.h"
4958 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgArrayType.h"
4959 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTypeEllipse.h"
4960 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTemplateType.h"
4961 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgQualifiedNameType.h"
4962 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTypeComplex.h"
4963 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTypeImaginary.h"
4964 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTypeDefault.h"
4965 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTypeCAFTeam.h"
4966 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTypeCrayPointer.h"
4967 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTypeLabel.h"
4968 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgRvalueReferenceType.h"
4969 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTypeNullptr.h"
4970 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgDeclType.h"
4971 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTypeOfType.h"
4972 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTypeMatrix.h"
4973 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTypeTuple.h"
4974 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTypeChar16.h"
4975 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTypeChar32.h"
4976 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTypeFloat128.h"
4977 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTypeFixed.h"
4978 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgAutoType.h"
4979 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgLocatedNode.h"
4980 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgToken.h"
4981 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgLocatedNodeSupport.h"
4982 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgCommonBlockObject.h"
4983 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgInitializedName.h"
4984 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgInterfaceBody.h"
4985 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgHeaderFileBody.h"
4986 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgRenamePair.h"
4987 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpClause.h"
4988 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpNowaitClause.h"
4989 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpReadClause.h"
4990 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpThreadsClause.h"
4991 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpSimdClause.h"
4992 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpWriteClause.h"
4993 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpUpdateClause.h"
4994 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpDepobjUpdateClause.h"
4995 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpDestroyClause.h"
4996 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpCaptureClause.h"
4997 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpBeginClause.h"
4998 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpEndClause.h"
4999 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpUntiedClause.h"
5000 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpSeqCstClause.h"
5001 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpAcqRelClause.h"
5002 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpReleaseClause.h"
5003 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpAcquireClause.h"
5004 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpRelaxedClause.h"
5005 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpReverseOffloadClause.h"
5006 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpUnifiedAddressClause.h"
5007 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpUnifiedSharedMemoryClause.h"
5008 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpDynamicAllocatorsClause.h"
5009 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpParallelClause.h"
5010 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpSectionsClause.h"
5011 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpForClause.h"
5012 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpTaskgroupClause.h"
5013 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpNogroupClause.h"
5014 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpDefaultClause.h"
5015 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpAllocatorClause.h"
5016 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpAtomicClause.h"
5017 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpProcBindClause.h"
5018 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpBindClause.h"
5019 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpOrderClause.h"
5020 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpDistScheduleClause.h"
5021 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpExpressionClause.h"
5022 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpOrderedClause.h"
5023 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpCollapseClause.h"
5024 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpIfClause.h"
5025 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgUpirNumUnitsField.h"
5026 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpNumTeamsClause.h"
5027 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpThreadLimitClause.h"
5028 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpDeviceClause.h"
5029 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpHintClause.h"
5030 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpGrainsizeClause.h"
5031 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpNumTasksClause.h"
5032 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpDetachClause.h"
5033 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpSafelenClause.h"
5034 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpSimdlenClause.h"
5035 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpFinalClause.h"
5036 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpPriorityClause.h"
5037 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpPartialClause.h"
5038 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpSizesClause.h"
5039 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpInbranchClause.h"
5040 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpNotinbranchClause.h"
5041 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpDefaultmapClause.h"
5042 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpAtomicDefaultMemOrderClause.h"
5043 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpExtImplementationDefinedRequirementClause.h"
5044 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpUsesAllocatorsDefination.h"
5045 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpVariablesClause.h"
5046 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpCopyprivateClause.h"
5047 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpPrivateClause.h"
5048 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpFirstprivateClause.h"
5049 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpNontemporalClause.h"
5050 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpInclusiveClause.h"
5051 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpExclusiveClause.h"
5052 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpIsDevicePtrClause.h"
5053 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpUseDevicePtrClause.h"
5054 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpUseDeviceAddrClause.h"
5055 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpSharedClause.h"
5056 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpCopyinClause.h"
5057 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpLastprivateClause.h"
5058 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpReductionClause.h"
5059 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpInReductionClause.h"
5060 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpTaskReductionClause.h"
5061 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpMapClause.h"
5062 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpAllocateClause.h"
5063 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpUniformClause.h"
5064 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpAlignedClause.h"
5065 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpLinearClause.h"
5066 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpDependClause.h"
5067 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpAffinityClause.h"
5068 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpToClause.h"
5069 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpFromClause.h"
5070 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpScheduleClause.h"
5071 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpMergeableClause.h"
5072 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpWhenClause.h"
5073 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpUsesAllocatorsClause.h"
5074 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpFullClause.h"
5075 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgUpirBranchField.h"
5076 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgUpirNestedLevelField.h"
5077 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgUpirNestedParentField.h"
5078 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgUpirNestedChildField.h"
5079 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgUpirSyncField.h"
5080 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgUpirDataField.h"
5081 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgUpirTargetField.h"
5082 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgUpirDataItemField.h"
5083 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgLambdaCapture.h"
5084 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgLambdaCaptureList.h"
5085 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgStatement.h"
5086 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgScopeStatement.h"
5087 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgGlobal.h"
5088 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgBasicBlock.h"
5089 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgIfStmt.h"
5090 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgForStatement.h"
5091 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgFunctionDefinition.h"
5092 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTemplateFunctionDefinition.h"
5093 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgClassDefinition.h"
5094 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTemplateInstantiationDefn.h"
5095 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTemplateClassDefinition.h"
5096 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgWhileStmt.h"
5097 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgDoWhileStmt.h"
5098 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgSwitchStatement.h"
5099 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgCatchOptionStmt.h"
5100 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgNamespaceDefinitionStatement.h"
5101 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgBlockDataStatement.h"
5102 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgAssociateStatement.h"
5103 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgFortranDo.h"
5104 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgFortranNonblockedDo.h"
5105 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgForAllStatement.h"
5106 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgUpcForAllStatement.h"
5107 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgCAFWithTeamStatement.h"
5108 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgFunctionParameterScope.h"
5109 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgDeclarationScope.h"
5110 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgRangeBasedForStatement.h"
5111 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgFunctionTypeTable.h"
5112 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgDeclarationStatement.h"
5113 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgFunctionParameterList.h"
5114 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgVariableDeclaration.h"
5115 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTemplateVariableDeclaration.h"
5116 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgVariableDefinition.h"
5117 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgClinkageDeclarationStatement.h"
5118 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgClinkageStartStatement.h"
5119 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgClinkageEndStatement.h"
5120 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgEnumDeclaration.h"
5121 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgAsmStmt.h"
5122 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgAttributeSpecificationStatement.h"
5123 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgFormatStatement.h"
5124 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTemplateDeclaration.h"
5125 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTemplateInstantiationDirectiveStatement.h"
5126 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgUseStatement.h"
5127 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgParameterStatement.h"
5128 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgNamespaceDeclarationStatement.h"
5129 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgEquivalenceStatement.h"
5130 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgInterfaceStatement.h"
5131 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgNamespaceAliasDeclarationStatement.h"
5132 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgCommonBlock.h"
5133 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTypedefDeclaration.h"
5134 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTemplateTypedefDeclaration.h"
5135 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTemplateInstantiationTypedefDeclaration.h"
5136 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgStatementFunctionStatement.h"
5137 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgCtorInitializerList.h"
5138 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgPragmaDeclaration.h"
5139 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgUsingDirectiveStatement.h"
5140 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgClassDeclaration.h"
5141 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTemplateClassDeclaration.h"
5142 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTemplateInstantiationDecl.h"
5143 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgDerivedTypeStatement.h"
5144 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgModuleStatement.h"
5145 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgImplicitStatement.h"
5146 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgUsingDeclarationStatement.h"
5147 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgNamelistStatement.h"
5148 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgImportStatement.h"
5149 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgFunctionDeclaration.h"
5150 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTemplateFunctionDeclaration.h"
5151 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgMemberFunctionDeclaration.h"
5152 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTemplateMemberFunctionDeclaration.h"
5153 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTemplateInstantiationMemberFunctionDecl.h"
5154 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTemplateInstantiationFunctionDecl.h"
5155 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgProgramHeaderStatement.h"
5156 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgProcedureHeaderStatement.h"
5157 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgEntryStatement.h"
5158 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgContainsStatement.h"
5159 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgC_PreprocessorDirectiveStatement.h"
5160 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgIncludeDirectiveStatement.h"
5161 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgDefineDirectiveStatement.h"
5162 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgUndefDirectiveStatement.h"
5163 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgIfdefDirectiveStatement.h"
5164 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgIfndefDirectiveStatement.h"
5165 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgIfDirectiveStatement.h"
5166 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgDeadIfDirectiveStatement.h"
5167 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgElseDirectiveStatement.h"
5168 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgElseifDirectiveStatement.h"
5169 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgEndifDirectiveStatement.h"
5170 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgLineDirectiveStatement.h"
5171 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgWarningDirectiveStatement.h"
5172 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgErrorDirectiveStatement.h"
5173 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgEmptyDirectiveStatement.h"
5174 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgIncludeNextDirectiveStatement.h"
5175 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgIdentDirectiveStatement.h"
5176 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgLinemarkerDirectiveStatement.h"
5177 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpThreadprivateStatement.h"
5178 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpRequiresStatement.h"
5179 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgFortranIncludeLine.h"
5180 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpTaskwaitStatement.h"
5181 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgStmtDeclarationStatement.h"
5182 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgStaticAssertionDeclaration.h"
5183 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpDeclareSimdStatement.h"
5184 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgMicrosoftAttributeDeclaration.h"
5185 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgNonrealDecl.h"
5186 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgEmptyDeclaration.h"
5187 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgExprStatement.h"
5188 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgLabelStatement.h"
5189 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgCaseOptionStmt.h"
5190 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTryStmt.h"
5191 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgDefaultOptionStmt.h"
5192 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgBreakStmt.h"
5193 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgContinueStmt.h"
5194 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgReturnStmt.h"
5195 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgGotoStatement.h"
5196 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgSpawnStmt.h"
5197 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgNullStatement.h"
5198 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgVariantStatement.h"
5199 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgForInitStatement.h"
5200 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgCatchStatementSeq.h"
5201 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgProcessControlStatement.h"
5202 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgIOStatement.h"
5203 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgPrintStatement.h"
5204 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgReadStatement.h"
5205 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgWriteStatement.h"
5206 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOpenStatement.h"
5207 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgCloseStatement.h"
5208 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgInquireStatement.h"
5209 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgFlushStatement.h"
5210 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgBackspaceStatement.h"
5211 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgRewindStatement.h"
5212 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgEndfileStatement.h"
5213 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgWaitStatement.h"
5214 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgWhereStatement.h"
5215 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgElseWhereStatement.h"
5216 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgNullifyStatement.h"
5217 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgArithmeticIfStatement.h"
5218 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgAssignStatement.h"
5219 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgComputedGotoStatement.h"
5220 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgAssignedGotoStatement.h"
5221 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgAllocateStatement.h"
5222 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgDeallocateStatement.h"
5223 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgUpcNotifyStatement.h"
5224 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgUpcWaitStatement.h"
5225 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgUpcBarrierStatement.h"
5226 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgUpcFenceStatement.h"
5227 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgUpirBaseStatement.h"
5228 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpTaskyieldStatement.h"
5229 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpBarrierStatement.h"
5230 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgUpirBodyStatement.h"
5231 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpMasterStatement.h"
5232 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpSectionStatement.h"
5233 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpWorkshareStatement.h"
5234 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgUpirFieldBodyStatement.h"
5235 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgUpirSpmdStatement.h"
5236 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpTeamsStatement.h"
5237 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpSingleStatement.h"
5238 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpAtomicStatement.h"
5239 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpScanStatement.h"
5240 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpMetadirectiveStatement.h"
5241 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpLoopStatement.h"
5242 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpOrderedStatement.h"
5243 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpTaskgroupStatement.h"
5244 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpTaskloopStatement.h"
5245 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpDepobjStatement.h"
5246 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpTargetEnterDataStatement.h"
5247 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpTargetExitDataStatement.h"
5248 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpParallelMasterStatement.h"
5249 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpMasterTaskloopStatement.h"
5250 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpTaskStatement.h"
5251 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpDoStatement.h"
5252 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpSectionsStatement.h"
5253 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgUpirTaskStatement.h"
5254 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpTargetDataStatement.h"
5255 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpTargetParallelForStatement.h"
5256 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpParallelLoopStatement.h"
5257 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpTargetParallelStatement.h"
5258 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpTargetParallelForSimdStatement.h"
5259 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpTargetParallelLoopStatement.h"
5260 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpTargetSimdStatement.h"
5261 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpTargetTeamsStatement.h"
5262 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpTargetTeamsDistributeStatement.h"
5263 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpTargetTeamsDistributeSimdStatement.h"
5264 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpTargetTeamsLoopStatement.h"
5265 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpTargetTeamsDistributeParallelForStatement.h"
5266 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpTargetTeamsDistributeParallelForSimdStatement.h"
5267 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpDistributeSimdStatement.h"
5268 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpDistributeParallelForStatement.h"
5269 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpDistributeParallelForSimdStatement.h"
5270 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpTaskloopSimdStatement.h"
5271 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpMasterTaskloopSimdStatement.h"
5272 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpParallelMasterTaskloopStatement.h"
5273 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpParallelMasterTaskloopSimdStatement.h"
5274 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpTeamsDistributeStatement.h"
5275 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpTeamsDistributeSimdStatement.h"
5276 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpTeamsDistributeParallelForStatement.h"
5277 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpTeamsDistributeParallelForSimdStatement.h"
5278 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpTeamsLoopStatement.h"
5279 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpForSimdStatement.h"
5280 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpCriticalStatement.h"
5281 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpDistributeStatement.h"
5282 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpUnrollStatement.h"
5283 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpTileStatement.h"
5284 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgUpirLoopStatement.h"
5285 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgUpirFieldStatement.h"
5286 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpCancelStatement.h"
5287 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpCancellationPointStatement.h"
5288 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpTargetUpdateStatement.h"
5289 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpFlushStatement.h"
5290 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpAllocateStatement.h"
5291 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpOrderedDependStatement.h"
5292 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgUpirSyncStatement.h"
5293 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgUpirLoopParallelStatement.h"
5294 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgUpirWorksharingStatement.h"
5295 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgUpirSimdStatement.h"
5296 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOmpDeclareMapperStatement.h"
5297 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgSequenceStatement.h"
5298 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgWithStatement.h"
5299 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgPassStatement.h"
5300 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgAssertStmt.h"
5301 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgExecStatement.h"
5302 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgImageControlStatement.h"
5303 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgSyncAllStatement.h"
5304 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgSyncImagesStatement.h"
5305 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgSyncMemoryStatement.h"
5306 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgSyncTeamStatement.h"
5307 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgLockStatement.h"
5308 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgUnlockStatement.h"
5309 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgExpression.h"
5310 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgUnaryOp.h"
5311 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgExpressionRoot.h"
5312 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgMinusOp.h"
5313 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgUnaryAddOp.h"
5314 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgNotOp.h"
5315 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgPointerDerefExp.h"
5316 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgAddressOfOp.h"
5317 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgMinusMinusOp.h"
5318 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgPlusPlusOp.h"
5319 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgBitComplementOp.h"
5320 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgCastExp.h"
5321 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgThrowOp.h"
5322 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgRealPartOp.h"
5323 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgImagPartOp.h"
5324 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgConjugateOp.h"
5325 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgUserDefinedUnaryOp.h"
5326 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgMatrixTransposeOp.h"
5327 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgBinaryOp.h"
5328 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgArrowExp.h"
5329 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgDotExp.h"
5330 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgDotStarOp.h"
5331 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgArrowStarOp.h"
5332 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgEqualityOp.h"
5333 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgLessThanOp.h"
5334 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgGreaterThanOp.h"
5335 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgNotEqualOp.h"
5336 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgLessOrEqualOp.h"
5337 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgGreaterOrEqualOp.h"
5338 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgAddOp.h"
5339 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgSubtractOp.h"
5340 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgMultiplyOp.h"
5341 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgDivideOp.h"
5342 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgIntegerDivideOp.h"
5343 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgModOp.h"
5344 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgAndOp.h"
5345 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgOrOp.h"
5346 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgBitXorOp.h"
5347 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgBitAndOp.h"
5348 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgBitOrOp.h"
5349 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgBitEqvOp.h"
5350 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgCommaOpExp.h"
5351 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgLshiftOp.h"
5352 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgRshiftOp.h"
5353 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgPntrArrRefExp.h"
5354 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgScopeOp.h"
5355 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgAssignOp.h"
5356 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgExponentiationOp.h"
5357 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgConcatenationOp.h"
5358 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgPointerAssignOp.h"
5359 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgUserDefinedBinaryOp.h"
5360 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgCompoundAssignOp.h"
5361 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgPlusAssignOp.h"
5362 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgMinusAssignOp.h"
5363 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgAndAssignOp.h"
5364 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgIorAssignOp.h"
5365 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgMultAssignOp.h"
5366 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgDivAssignOp.h"
5367 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgModAssignOp.h"
5368 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgXorAssignOp.h"
5369 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgLshiftAssignOp.h"
5370 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgRshiftAssignOp.h"
5371 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgIntegerDivideAssignOp.h"
5372 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgExponentiationAssignOp.h"
5373 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgMembershipOp.h"
5374 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgSpaceshipOp.h"
5375 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgNonMembershipOp.h"
5376 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgIsOp.h"
5377 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgIsNotOp.h"
5378 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgElementwiseOp.h"
5379 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgElementwiseMultiplyOp.h"
5380 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgElementwisePowerOp.h"
5381 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgElementwiseLeftDivideOp.h"
5382 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgElementwiseDivideOp.h"
5383 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgElementwiseAddOp.h"
5384 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgElementwiseSubtractOp.h"
5385 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgPowerOp.h"
5386 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgLeftDivideOp.h"
5387 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgSIMDBinaryOp.h"
5388 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgSIMDAddOp.h"
5389 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgSIMDSubOp.h"
5390 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgSIMDMulOp.h"
5391 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgSIMDDivOp.h"
5392 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgSIMDFmaOp.h"
5393 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgSIMDLoad.h"
5394 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgSIMDBroadcast.h"
5395 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgSIMDStore.h"
5396 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgSIMDPartialStore.h"
5397 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgSIMDScalarStore.h"
5398 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgSIMDGather.h"
5399 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgSIMDExplicitGather.h"
5400 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgSIMDScatter.h"
5401 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgExprListExp.h"
5402 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgListExp.h"
5403 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTupleExp.h"
5404 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgMatrixExp.h"
5405 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgVarRefExp.h"
5406 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgClassNameRefExp.h"
5407 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgFunctionRefExp.h"
5408 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgMemberFunctionRefExp.h"
5409 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgValueExp.h"
5410 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgBoolValExp.h"
5411 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgStringVal.h"
5412 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgShortVal.h"
5413 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgCharVal.h"
5414 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgUnsignedCharVal.h"
5415 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgWcharVal.h"
5416 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgUnsignedShortVal.h"
5417 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgIntVal.h"
5418 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgEnumVal.h"
5419 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgUnsignedIntVal.h"
5420 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgLongIntVal.h"
5421 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgLongLongIntVal.h"
5422 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgUnsignedLongLongIntVal.h"
5423 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgUnsignedLongVal.h"
5424 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgFloatVal.h"
5425 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgDoubleVal.h"
5426 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgLongDoubleVal.h"
5427 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgComplexVal.h"
5428 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgUpcThreads.h"
5429 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgUpcMythread.h"
5430 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTemplateParameterVal.h"
5431 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgNullptrValExp.h"
5432 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgChar16Val.h"
5433 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgChar32Val.h"
5434 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgFloat80Val.h"
5435 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgFloat128Val.h"
5436 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgVoidVal.h"
5437 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgCallExpression.h"
5438 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgFunctionCallExp.h"
5439 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgCudaKernelCallExp.h"
5440 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgSizeOfOp.h"
5441 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgUpcLocalsizeofExpression.h"
5442 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgUpcBlocksizeofExpression.h"
5443 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgUpcElemsizeofExpression.h"
5444 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgSuperExp.h"
5445 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTypeIdOp.h"
5446 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgConditionalExp.h"
5447 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgNewExp.h"
5448 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgDeleteExp.h"
5449 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgThisExp.h"
5450 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgRefExp.h"
5451 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgInitializer.h"
5452 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgAggregateInitializer.h"
5453 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgCompoundInitializer.h"
5454 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgConstructorInitializer.h"
5455 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgAssignInitializer.h"
5456 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgDesignatedInitializer.h"
5457 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgBracedInitializer.h"
5458 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgVarArgStartOp.h"
5459 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgVarArgOp.h"
5460 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgVarArgEndOp.h"
5461 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgVarArgCopyOp.h"
5462 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgVarArgStartOneOperandOp.h"
5463 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgNullExpression.h"
5464 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgVariantExpression.h"
5465 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgSubscriptExpression.h"
5466 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgColonShapeExp.h"
5467 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgAsteriskShapeExp.h"
5468 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgImpliedDo.h"
5469 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgIOItemExpression.h"
5470 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgStatementExpression.h"
5471 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgAsmOp.h"
5472 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgLabelRefExp.h"
5473 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgActualArgumentExpression.h"
5474 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgUnknownArrayOrFunctionReference.h"
5475 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgPseudoDestructorRefExp.h"
5476 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgCAFCoExpression.h"
5477 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgCudaKernelExecConfig.h"
5478 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgLambdaRefExp.h"
5479 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgDictionaryExp.h"
5480 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgKeyDatumPair.h"
5481 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgComprehension.h"
5482 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgListComprehension.h"
5483 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgSetComprehension.h"
5484 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgDictionaryComprehension.h"
5485 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgNaryOp.h"
5486 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgNaryBooleanOp.h"
5487 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgNaryComparisonOp.h"
5488 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgStringConversion.h"
5489 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgYieldExpression.h"
5490 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTemplateFunctionRefExp.h"
5491 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTemplateMemberFunctionRefExp.h"
5492 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgAlignOfOp.h"
5493 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgRangeExp.h"
5494 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgMagicColonExp.h"
5495 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTypeTraitBuiltinOperator.h"
5496 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgCompoundLiteralExp.h"
5497 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTypeExpression.h"
5498 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgClassExp.h"
5499 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgFunctionParameterRefExp.h"
5500 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgLambdaExp.h"
5501 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgNoexceptOp.h"
5502 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgNonrealRefExp.h"
5503 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgFoldExpression.h"
5504 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgAwaitExpression.h"
5505 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgChooseExpression.h"
5506 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgSymbol.h"
5507 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgVariableSymbol.h"
5508 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTemplateVariableSymbol.h"
5509 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgNonrealSymbol.h"
5510 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgFunctionSymbol.h"
5511 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgMemberFunctionSymbol.h"
5512 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTemplateMemberFunctionSymbol.h"
5513 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTemplateFunctionSymbol.h"
5514 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgRenameSymbol.h"
5515 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgFunctionTypeSymbol.h"
5516 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgClassSymbol.h"
5517 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTemplateClassSymbol.h"
5518 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTemplateSymbol.h"
5519 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgEnumSymbol.h"
5520 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgEnumFieldSymbol.h"
5521 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTypedefSymbol.h"
5522 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgTemplateTypedefSymbol.h"
5523 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgLabelSymbol.h"
5524 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgDefaultSymbol.h"
5525 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgNamespaceSymbol.h"
5526 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgIntrinsicSymbol.h"
5527 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgModuleSymbol.h"
5528 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgInterfaceSymbol.h"
5529 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgCommonSymbol.h"
5530 #include "GENERATED_CODE_DIRECTORY_Cxx_Grammar/SgAliasSymbol.h"
5531 #else // else for ifdef ROSE_USING_SMALL_GENERATED_HEADER_FILES
5532 
5533 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
5534 
5535 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
5536 // This code is automatically generated for each
5537 // terminal and non-terminal within the defined
5538 // grammar. There is a simple way to change the
5539 // code to fix bugs etc. See the ROSE README file
5540 // for directions.
5541 
5542 // tps: (02/22/2010): Adding DLL export requirements
5543 #include "rosedll.h"
5544 
5545 // predeclarations for SgNode
5546 
5547 /* #line 5548 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
5548 /* #line 2 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
5549 
5550 
5551 #include <semaphore.h>
5552 
5553 // tps (01/27/10): Added essential files..
5554 //#include "sage3basic.h"
5555 #include <rosePublicConfig.h>
5556 #include "setup.h"
5557 #include "rangemap.h"
5558 #include "Map.h"
5559 
5560 #include <boost/serialization/access.hpp>
5561 #include <boost/serialization/base_object.hpp>
5562 #include <boost/serialization/map.hpp>
5563 #include <boost/serialization/set.hpp>
5564 #include <boost/serialization/vector.hpp>
5565 #include <boost/serialization/version.hpp>
5566 #include <boost/unordered_map.hpp>
5567 #include <boost/unordered_set.hpp>
5568 #include <Sawyer/CommandLine.h>
5569 #include <Sawyer/Interval.h>
5570 #include <Sawyer/IntervalSet.h>
5571 
5572 #include "Cxx_Grammar.h"
5573 
5574 #include "processSupport.h"
5575 #define __builtin_constant_p(exp) (0)
5576 
5577 
5578 class PreprocessingInfo;
5579 class AstRegExAttribute;
5580 class AstAttribute;
5581 class AstAttributeMechanism;
5582 
5583 // DQ (8/21/2008): these are from the GenericExec.h (from before we used Robb's work in the new IR nodes).
5584 #define NELMTS(X) (sizeof(X)/sizeof((X)[0])) /* number of elements in a static-sized array */
5585 #define DUMP_FIELD_WIDTH 64 /* min columns to use for member names in dump() functions */
5586 #include <semaphore.h>
5587 #ifndef _MSC_VER
5588 // mutex does not work on Windows
5589 // Pei-Hung (07/28/2016) 'sem_init' has been explicitly marked deprecated in OSX El Capitan
5590 #if defined(__APPLE__) && defined(__MACH__)
5591 // mutex does not work on Mac
5592 #else
5593 class mutex
5594  {
5595  // This class was added by Valentin David (summer of 2007) as part of support for Stratego using a Java interface.
5596 
5597  private:
5598  sem_t mut;
5599 
5600  public:
5601  mutex()
5602  {
5603  sem_init(&mut, 1, 1);
5604  }
5605 
5606  void lock()
5607  {
5608  sem_wait(&mut);
5609  }
5610 
5611  void unlock ()
5612  {
5613  sem_post(&mut);
5614  }
5615  };
5616 #endif
5617 #endif
5618 
5628 // endif for ifndef ROSE_USE_SWIG_SUPPORT
5629 // #endif
5630 
5631 // #include "virtualCFG.h"
5632 
5633 // Turn on internal debugging by default during development
5634 #define SAGE_INTERNAL_DEBUG
5635 
5636 #define ROSE_INTEGER_TYPE_MAX_BIT_LENGTH 32
5637 
5638 // DQ (8/18/2008): Added support for new IR graph nodes
5639 // This is the use of this macro in ROSE, there is another macro with the same name in ROSETTA!
5640 // #define OLD_GRAPH_NODES 0
5641 
5642 
5644 extern int SAGE_DEBUG;
5645 
5646 // Introduce a way to change from std::list to std::vector easily as a test to improve performance of traversals.
5647 // This is now moved to ROSE/util/commandLineProcessing/setup.h so that all of ROSE will see it.
5648 // define Rose_STL_Container std::list
5649 // define Rose_STL_Container std::vector
5650 
5651 class SgInitializedName;
5652 // DQ (6/1/2004): Change this to be a list of pointers to SgInitializedName (to fix Beata's Bug beata.C)
5653 typedef Rose_STL_Container<SgInitializedName*> SgInitializedNamePtrList;
5654 typedef SgInitializedNamePtrList* SgInitializedNamePtrListPtr;
5655 
5657 
5658 // DQ (1/28/2016): Different ways of documenting typedefs (none appear to be working with Doxygen).
5662 typedef Rose_STL_Container<SgDeclarationStatement*> SgDeclarationStatementPtrList;
5663 
5667 typedef SgDeclarationStatementPtrList* SgDeclarationStatementPtrListPtr;
5668 
5669 class SgStatement;
5670 typedef Rose_STL_Container<SgStatement*> SgStatementPtrList;
5671 typedef SgStatementPtrList* SgStatementPtrListPtr;
5672 
5673 class SgBaseClass;
5674 // DQ (6/21/2005): Change from list of SgBaseClass to list of SgBaseClass*
5675 typedef Rose_STL_Container<SgBaseClass*> SgBaseClassPtrList;
5676 typedef SgBaseClassPtrList* SgBaseClassPtrListPtr;
5677 
5678 class SgNode;
5679 typedef Rose_STL_Container<SgNode*> SgNodePtrList;
5680 typedef SgNodePtrList* SgNodePtrListPtr;
5681 
5682 class SgType;
5683 typedef Rose_STL_Container<SgType*> SgTypePtrList;
5684 typedef SgTypePtrList* SgTypePtrListPtr;
5685 
5686 class SgExpression;
5687 typedef Rose_STL_Container<SgExpression*> SgExpressionPtrList;
5688 typedef SgExpressionPtrList* SgExpressionPtrListPtr;
5689 
5690 class SgKeyDatumPair;
5691 typedef Rose_STL_Container<SgKeyDatumPair*> SgKeyDatumPairPtrList;
5692 
5693 class SgComprehension;
5694 typedef Rose_STL_Container<SgComprehension*> SgComprehensionPtrList;
5695 
5696 typedef Rose_STL_Container<VariantT> VariantTList;
5697 
5698 // Liao 9/27/2010: new typedef for SgVarRefExp list
5699 class SgVarRefExp;
5700 typedef Rose_STL_Container<SgVarRefExp*> SgVarRefExpPtrList;
5701 typedef SgVarRefExpPtrList* SgVarRefExpPtrListPtr;
5702 
5703 class SgAttribute;
5704 typedef Rose_STL_Container<SgAttribute*> SgAttributePtrList;
5705 typedef SgAttributePtrList* SgAttributePtrListPtr;
5706 
5707 // DQ (6/14/2008): I think this should be unsigned char
5708 // typedef Rose_STL_Container<char*> SgCharPtrList;
5709 // typedef SgCharPtrList* SgCharPtrListPtr;
5710 typedef Rose_STL_Container<unsigned char> SgCharList;
5711 typedef SgCharList* SgCharListPtr;
5712 
5713 typedef SgExpression* SgExpressionPtr;
5714 typedef SgStatement* SgStatementPtr;
5716 
5717 // DQ (4/7/2001) Add SgFile list support for multi-file support within SgProject
5718 class SgFile;
5719 typedef std::vector<SgFile*> SgFilePtrList;
5720 typedef SgFilePtrList* SgFilePtrListPtr;
5721 
5722 // DQ (2/27/2019): Modified to add the line number so that we could support adding comments
5723 // and CPP directives to shared IR nodes to support multi-file compilation.
5724 // DQ (5/22/2006): Added this support so that we could have general way of interpreting STL
5725 // containers so that we could simplify that code used to generated code for the destructors.
5726 // JJW (6/21/2008): Changed to a unordered vector for performance
5727 typedef int SgFileId;
5728 typedef std::vector<SgFileId> SgFileIdList;
5729 // typedef struct { int file_id; int line_number; } SgFileIdLineNumber;
5730 // typedef std::vector<SgFileIdLineNumber> SgFileIdList;
5731 typedef int SgFileLineNumber;
5732 typedef std::vector<SgFileLineNumber> SgFileLineNumberList;
5733 
5734 // DQ (5/22/2006): Added this support so that we could have general way of interpreting STL
5735 // containers so that we could simplify that code used to generated code for the destructors.
5736 typedef Rose_STL_Container<std::string> SgStringList;
5737 typedef SgStringList* SgStringListPtr;
5738 
5739 // DQ (3/10/2007): Added STL set of SgNode* so that we could support existence tests in the
5740 // symbol table without a linear search of the symbol table (where we don't use the name).
5741 // This test helps detect where symbols may have been inserted into the symbol table using
5742 // two different names, or there names changed without properly unloading and reloading the
5743 // associated symbol.
5744 typedef std::set<SgNode*> SgNodeSet;
5745 typedef SgNodeSet* SgNodeSetPtr;
5746 
5747 class ROSEAttributesList;
5749 
5752 
5753 // I don't think these are needed
5754 // typedef vector<ROSEAttributesListContainer*> ROSEAttributesListContainerList;
5755 // typedef ROSEAttributesListContainerList* ROSEAttributesListContainerListPtr;
5756 
5757 // MK: The data member p_nodes of the SgModifierNodes class is now an
5758 // STL vector, therefore we define the following data types
5759 typedef std::vector<SgModifierType*> SgModifierTypePtrVector;
5760 // DQ (12/19/2005): This is not used anywhere!
5761 // typedef SgModifierTypePtrVector SgModifierTypePtrVectorPtr;
5762 
5763 // DQ (12/6/2003): added bit vector typedef to support addition of more flags
5764 // that can be held in a long integer for the Unparse_Info object.
5765 typedef std::vector<bool> SgBitVector;
5766 
5767 // DQ (3/12/2004): Added for template support
5768 class SgTemplateParameter;
5769 typedef Rose_STL_Container<SgTemplateParameter*> SgTemplateParameterPtrList;
5770 typedef SgTemplateParameterPtrList* SgTemplateParameterPtrListPtr;
5771 
5772 // DQ (3/12/2004): Added for template support
5773 class SgTemplateArgument;
5774 typedef Rose_STL_Container<SgTemplateArgument*> SgTemplateArgumentPtrList;
5775 typedef SgTemplateArgumentPtrList* SgTemplateArgumentPtrListPtr;
5776 
5777 // DQ (9/6/2004): Added for qualified name support (e.g. A::B::C::dataMember)
5778 // This form of qualified name support was later removed!
5779 // class SgSymbol;
5780 // typedef list<SgSymbol*> SgSymbolPtrList;
5781 // typedef SgSymbolPtrList* SgSymbolPtrListPtr;
5782 
5783 // DQ (5/6/2005): Added support for SgDirectory IR node!
5784 class SgDirectory;
5785 typedef std::vector<SgDirectory*> SgDirectoryPtrList;
5786 typedef SgDirectoryPtrList* SgDirectoryPtrListPtr;
5787 
5788 // DQ (12/21/2005): Added to support explicit name qualifiers (this provides only global qualifier info so far)
5789 class SgQualifiedName;
5790 typedef Rose_STL_Container<SgQualifiedName*> SgQualifiedNamePtrList;
5791 typedef SgQualifiedNamePtrList* SgQualifiedNamePtrListPtr;
5792 
5793 // DQ (10/4/2006): Add support for storing unique numbers with SgBasicBlock IR nodes.
5794 // This mechanism premits unique numbers to be computed and cached and the cache to
5795 // be easily invalidated.
5796 // Name this as a list since the ROSETTA code generation will use this information.
5797 class SgBasicBlock;
5798 typedef SgBasicBlock* SgBasicBlockPtr;
5799 // typedef std::map<SgBasicBlock*,int> SgBasicBlockPtrList;
5800 typedef std::vector<SgBasicBlockPtr> SgBasicBlockPtrList;
5801 typedef SgBasicBlockPtrList* SgBasicBlockPtrListPtr;
5802 
5803 // DQ (11/19/2007): Added support for Fortran namelist statement.
5804 typedef Rose_STL_Container<SgNameGroup*> SgNameGroupPtrList;
5805 typedef SgNameGroupPtrList* SgNameGroupPtrListPtr;
5806 
5807 // DQ (11/20/2007): Added support for Fortran data statement.
5808 typedef Rose_STL_Container<SgDataStatementGroup*> SgDataStatementGroupPtrList;
5809 typedef SgDataStatementGroupPtrList* SgDataStatementGroupPtrListPtr;
5810 
5811 // DQ (11/20/2007): Added support for Fortran data statement.
5812 typedef Rose_STL_Container<SgDataStatementObject*> SgDataStatementObjectPtrList;
5813 typedef SgDataStatementObjectPtrList* SgDataStatementObjectPtrListPtr;
5814 
5815 // DQ (11/20/2007): Added support for Fortran data statement.
5816 typedef Rose_STL_Container<SgDataStatementValue*> SgDataStatementValuePtrList;
5817 typedef SgDataStatementValuePtrList* SgDataStatementValuePtrListPtr;
5818 
5819 // DQ (11/21/2007): Added support for common block statements (which can have multiple common blocks)
5820 typedef Rose_STL_Container<SgCommonBlockObject*> SgCommonBlockObjectPtrList;
5821 typedef SgCommonBlockObjectPtrList* SgCommonBlockObjectPtrListPtr;
5822 
5823 // DQ (11/21/2007): Added support for dimension statements (which can have multiple entries)
5824 typedef Rose_STL_Container<SgDimensionObject*> SgDimensionObjectPtrList;
5825 typedef SgDimensionObjectPtrList* SgDimensionObjectPtrListPtr;
5826 
5827 // DQ (11/21/2007): Added support for dimension statements (which can have multiple entries)
5828 typedef Rose_STL_Container<SgLabelSymbol*> SgLabelSymbolPtrList;
5829 typedef SgLabelSymbolPtrList* SgLabelSymbolPtrListPtr;
5830 
5831 // DQ (11/21/2007): Added support for format statements (which can have multiple entries)
5832 typedef Rose_STL_Container<SgFormatItem*> SgFormatItemPtrList;
5833 typedef SgFormatItemPtrList* SgFormatItemPtrListPtr;
5834 
5835 typedef Rose_STL_Container<rose_addr_t> SgAddressList;
5836 typedef SgAddressList* SgAddressListPtr;
5837 
5838 typedef Rose_STL_Container<unsigned> SgUnsignedList;
5839 typedef SgUnsignedList* SgUnsignedListPtr;
5840 
5841 // DQ (8/7/2008): Added list of size_t types for binary format support.
5842 typedef Rose_STL_Container<size_t> SgSizeTList;
5843 typedef SgSizeTList* SgSizeTListPtr;
5844 
5845 typedef Rose_STL_Container<unsigned char> SgUnsignedCharList;
5846 typedef SgUnsignedCharList* SgUnsignedCharListPtr;
5847 
5848 // DQ (10/1/2008): Added support for lists of SgModuleStatement where they are
5849 // not a part of the current translation unit. A place for the information in
5850 // the *.mod files to be put. This is just the type declaration for the list.
5851 typedef Rose_STL_Container<SgModuleStatement*> SgModuleStatementPtrList;
5852 typedef SgModuleStatementPtrList* SgModuleStatementPtrListPtr;
5853 
5854 // DQ (10/4/2008): Support for list of names or rename entries for the SgUseStatement (Fortran 90 support)
5855 typedef Rose_STL_Container<SgRenamePair*> SgRenamePairPtrList;
5856 typedef SgRenamePairPtrList* SgRenamePairPtrListPtr;
5857 
5858 // DQ (10/6/2008): Added improved support for F90 interfaces using interface bodies.
5859 typedef Rose_STL_Container<SgInterfaceBody*> SgInterfaceBodyPtrList;
5860 typedef SgInterfaceBodyPtrList* SgInterfaceBodyPtrListPtr;
5861 
5862 // DQ (11/28/2008): Added support for list of integers (used for flag list in SgLinemarkerDirectiveStatement).
5863 // typedef std::vector<int> SgIntegerList;
5864 // Liao, 5/30/2009 types for OpenMP support
5865 typedef Rose_STL_Container<SgOmpClause*> SgOmpClausePtrList;
5866 typedef SgOmpClausePtrList* SgOmpClausePtrListPtr;
5867 
5868 typedef Rose_STL_Container<SgOmpSectionStatement*> SgOmpSectionStatementPtrList;
5869 typedef SgOmpSectionStatementPtrList* SgOmpSectionStatementPtrListPtr;
5870 
5871 // DQ (3/6/2014): Added support for Untyped IR nodes.
5872 
5873 // Rasmussen (08/25/2022): Removed all untyped Sage nodes. Ultimately it proved easier to
5874 // construct regular IR nodes from the Jovial parser. Using the untyped system just led to an
5875 // unnecessary step and wasted effort.
5876 
5877 // DQ (9/3/2014): Added support for C++11 Lambda expressions.
5878 typedef Rose_STL_Container<SgLambdaCapture*> SgLambdaCapturePtrList;
5879 typedef SgLambdaCapturePtrList* SgLambdaCapturePtrListPtr;
5880 
5881 // DQ (9/15/2018) Add SgSourceFile list support for header file reporting (for unparse headers option).
5882 class SgSourceFile;
5883 typedef Rose_STL_Container<SgSourceFile*> SgSourceFilePtrList;
5884 typedef SgSourceFilePtrList* SgSourceFilePtrListPtr;
5885 
5886 // DQ (9/18/2018) Add SgIncludeFile list support for header file reporting (for unparse headers option).
5887 class SgIncludeFile;
5888 typedef Rose_STL_Container<SgIncludeFile*> SgIncludeFilePtrList;
5889 typedef SgIncludeFilePtrList* SgIncludeFilePtrListPtr;
5890 
5891 // DQ (10/28/2013): Forward declaration for new token unparsing support.
5892 class TokenStreamSequenceToNodeMapping;
5893 class FrontierNode;
5894 class PreviousAndNextNodeData;
5895 
5896 // DQ (11/30/2015): Added support for mapping of the AST to macro expansions.
5897 class MacroExpansion;
5898 
5899 // DQ (11/20/2010): Added type for SgToken list
5900 // Build a type for the SgToken list.
5901 typedef Rose_STL_Container<SgToken*> SgTokenPtrList;
5902 typedef SgTokenPtrList* SgTokenPtrListPtr;
5903 
5904 
5905 // DQ (11/4/2009): Trying to use the boost hash_map support
5906 namespace rose_hash
5907  {
5908  // The condition here is not needed for GCC 4.2, but is needed (and does not completely work) for earlier versions
5909  using boost::unordered_map;
5910  using boost::unordered_multimap;
5911  using boost::unordered_set;
5912  using boost::hash;
5913 
5914  // DQ (4/23/2009): These should be put into this namespace so that we don't contaminate the global scope.
5915  // DQ (8/19/2008): This is already defined in src/frontend/SageIII/astMerge/buildMangledNameMap.h
5917  {
5918  bool operator()(const std::string & s1, const std::string & s2) const
5919  {
5920  return s1 == s2;
5921  }
5922  };
5923 
5927  {
5928  // tps (11/17/2009) : Changed this so that it works under Windows.
5929  // CH (4/9/2010): Use boost::hash instead
5930  size_t operator()(const int n) const
5931  {
5932  return n;
5933  }
5934  };
5935 
5937  {
5938  // tps (11/17/2009) : Changed this so that it works under Windows.
5939  // CH (4/9/2010): Use boost::hash instead
5940  size_t operator()(const std::pair<int,int> & p) const
5941  {
5942  // DQ (4/30/2009): This subject should be reviewed!
5943  // Since this is a hash function, it might not a problem if we have
5944  // overflow (also the values should not be so large as to be a problem).
5945  return p.first+p.second;
5946  }
5947  };
5948 
5949  // DQ (4/30/2009): This might already exist for std::pair<>
5951  {
5952  bool operator()(const std::pair<int,int> & p1, const std::pair<int,int> & p2) const
5953  {
5954  return (p1.first == p2.first) && (p1.second == p2.second);
5955  }
5956  };
5957 
5959  {
5960  bool operator()(const SgGraphNode* p1, const SgGraphNode* p2) const
5961  {
5962  return p1 == p2;
5963  }
5964  };
5965 
5967  {
5968  bool operator()(const SgGraphNode* p1, const SgGraphNode* p2) const
5969  {
5970  return p1 == p2;
5971  }
5972  };
5973 
5975  {
5976  // tps (11/17/2009) : Changed this so that it works under Windows.
5977  // CH (4/9/2010): Use boost::hash instead
5978  size_t operator()(const SgGraphNode* ptr) const
5979  {
5980  return (size_t) ptr;
5981  }
5982  };
5983  }
5984 
5985 
5989 // DQ (8/19/2008): Note that "rose_hash" is a namespace defined above.
5990 // class rose_hash_multimap : public rose_hash::unordered_multimap<SgName, SgSymbol*, hash_Name, eqstr>
5991 // tps (11/18/2009) : This cannot be correct since the constructor takes a string not an int.
5992 // CH (4/9/2010): Use boost::unordered instead
5993 typedef rose_hash::unordered_multimap<std::string, SgGraphNode*> rose_graph_string_node_hash_multimap_base_type;
5994 
5995 class rose_graph_string_node_hash_multimap : public rose_graph_string_node_hash_multimap_base_type
5996  {
5997  // Need to document why we are using hash_multimap type here. Why a hash (obvious), then why a multimap?
5998  // I think a multimap is used to support having no names on the nodes if they are unlabeled. If the
5999  // nodes are labled then operations on the labled edges are possible using the multimap. But is there
6000  // a performance trade-off for these choices?
6001 
6002  protected:
6003 
6004  // DQ (4/25/2009): We need to change this name since I think we just want the
6005  // associated IR node in the AST, and not any concept of parent in the graph.
6006  SgNode* parent;
6007 
6008  public:
6010  : rose_graph_string_node_hash_multimap_base_type(), parent(NULL)
6011  {}
6012  // tps (11/18/2009) : This cannot be correct since the constructor takes a string not an int.
6013 #if 0
6015  : rose_graph_string_node_hash_multimap_base_type(sz), parent(NULL)
6016  {}
6017 #endif
6019  : rose_graph_string_node_hash_multimap_base_type(rhs),parent(rhs.parent)
6020  {}
6021  // See note (above) about name change to the associated data member for these access functions.
6022  void set_parent(SgNode * new_parent)
6023  {
6024  parent = new_parent;
6025  }
6026  SgNode * get_parent()
6027  {
6028  return parent;
6029  }
6030 
6031  void delete_elements()
6032  {
6033  }
6034 
6036  {
6037  delete_elements();
6038 
6039  parent = NULL;
6040  }
6041 
6042 
6043  friend class AST_FILE_IO;
6044  friend class SgSymbolTableStorageClass;
6046  };
6047 
6048 std::ostream & operator<< ( std::ostream & os, const rose_graph_string_node_hash_multimap::iterator & rhm_it );
6049 
6050 // DQ (5/1/2009): Temporary typedef to use older name for compatability.
6052 
6053 
6054 
6060 // DQ (4/29/2009): Added to support ROSE Graph IR nodes
6061 // tps (11/18/2009) : This cannot be correct since the constructor takes a string not an int.
6062 // CH (4/9/2010): Use boost::unordered instead
6063 typedef rose_hash::unordered_multimap<SgGraphNode*, SgGraphEdge*, rose_hash::hash_graph_node, rose_hash::eqstr_graph_node> rose_graph_node_edge_hash_multimap_base_type;
6064 class rose_graph_node_edge_hash_multimap : public rose_graph_node_edge_hash_multimap_base_type
6065  {
6066  // This class is used to map nodes to edges in the highest level graph class.
6067  // Different graph classes derived from the SgGraph class contain additional
6068  // maps that contain specific types of edges.
6069 
6070  protected:
6071  SgNode * parent;
6072 
6073  public:
6075  : rose_graph_node_edge_hash_multimap_base_type()
6076  {}
6077  // tps (11/18/2009) : This cannot be correct since the constructor takes a string not an int.
6078 #if 0
6080  : rose_graph_node_edge_hash_multimap_base_type(sz)
6081  {}
6082 #endif
6084  // DQ (4/30/2009): This fixed a problem reported by Thomas Panas relative to seg-faults when using the copy constructor (forced his code to use references).
6085  // : rose_hash::unordered_multimap<SgGraphNode*, SgGraphEdge*, rose_hash::hash_graph_node, rose_hash::eqstr_graph_node>((rose_graph_node_edge_hash_multimap)rhs)
6086  : rose_graph_node_edge_hash_multimap_base_type(rhs),parent(rhs.parent)
6087  {}
6088 
6089  void set_parent(SgNode * new_parent)
6090  {
6091  parent = new_parent;
6092  }
6093  SgNode * get_parent()
6094  {
6095  return parent;
6096  }
6097 
6098  void delete_elements()
6099  {
6100  }
6101 
6103  {
6104  delete_elements();
6105  }
6106 
6107  friend class AST_FILE_IO;
6108  friend class SgSymbolTableStorageClass;
6110  };
6111 
6112 std::ostream & operator<< ( std::ostream & os, const rose_graph_node_edge_hash_multimap::iterator & rhm_it );
6113 
6114 
6118 // DQ (4/30/2009): Added to support more of the Graph functionality in new ROSE IR nodes
6119 // typedef rose_hash::unordered_map<int,SgGraphNode*, rose_hash::hash_integer, rose_hash::eqstr_graph_node> rose_graph_integer_node_hash_map_base_type
6120 // CH (4/9/2010): Use boost::unordered instead
6121 //#ifdef _MSCx_VER
6122 #if 0
6123 typedef rose_hash::unordered_map<int, SgGraphNode*, stdext::hash_compare <int, greater<int> > > rose_graph_integer_node_hash_map_base_type;
6124 #else
6125 typedef rose_hash::unordered_map<int, SgGraphNode*, rose_hash::hash_integer> rose_graph_integer_node_hash_map_base_type;
6126 #endif
6127 class rose_graph_integer_node_hash_map : public rose_graph_integer_node_hash_map_base_type
6128  {
6129  protected:
6130  // I think this is required by the AST file I/O support.
6131  SgNode * parent;
6132 
6133  public:
6135  : rose_graph_integer_node_hash_map_base_type()
6136  {}
6137 // tps (11/18/2009) : Is this constructor wrong? Should it be a pair of (int,SgGraphNode)?
6138 #if 0
6139 // example from MSDN microsoft hash_map:
6140 // hash_map <int, int, hash_compare <int, less<int> > > hm1;
6141 // hm1.insert( Int_Pair( 1, 10 ) );
6143  : rose_graph_integer_node_hash_map_base_type(sz)
6144  {}
6145 #endif
6147  : rose_graph_integer_node_hash_map_base_type(rhs),parent(rhs.parent)
6148  {}
6149 
6150  void set_parent(SgNode * new_parent)
6151  {
6152  parent = new_parent;
6153  }
6154  SgNode * get_parent()
6155  {
6156  return parent;
6157  }
6158 
6159  void delete_elements()
6160  {
6161  }
6162 
6164  {
6165  delete_elements();
6166  }
6167 
6168  friend class AST_FILE_IO;
6169  friend class SgSymbolTableStorageClass;
6171  };
6172 
6173 std::ostream & operator<< ( std::ostream & os, const rose_graph_integer_node_hash_map::iterator & rhm_it );
6174 
6175 
6176 
6180 // DQ (4/30/2009): Added to support more of the Graph functionality in new ROSE IR nodes
6181 // typedef rose_hash::unordered_map<int,SgGraphEdge*, rose_hash::hash_integer, rose_hash::eqstr_graph_edge> rose_graph_integer_edge_hash_map_base_type;
6182 // CH (4/9/2010): Use boost::unordered instead
6183 //#ifdef _MSCx_VER
6184 #if 0
6185 typedef rose_hash::unordered_map<int,SgGraphEdge*> rose_graph_integer_edge_hash_map_base_type;
6186 #else
6187 typedef rose_hash::unordered_map<int,SgGraphEdge*, rose_hash::hash_integer> rose_graph_integer_edge_hash_map_base_type;
6188 #endif
6189 class rose_graph_integer_edge_hash_map : public rose_graph_integer_edge_hash_map_base_type
6190  {
6191  // This class is used to map nodes to edges in the highest level graph class.
6192  // Different graph classes derived from the SgGraph class contain additional
6193  // maps that contain specific types of edges.
6194 
6195  protected:
6196  // I think this is required by the AST file I/O support.
6197  SgNode * parent;
6198 
6199  public:
6201  : rose_graph_integer_edge_hash_map_base_type()
6202  {}
6203 // tps (11/18/2009) : I assume this is wrong, it should be a pair
6204 #if 0
6206  : rose_graph_integer_edge_hash_map_base_type(sz)
6207  {}
6208 #endif
6210  : rose_graph_integer_edge_hash_map_base_type(rhs),parent(rhs.parent)
6211  {}
6212 
6213  void set_parent(SgNode * new_parent)
6214  {
6215  parent = new_parent;
6216  }
6217  SgNode * get_parent()
6218  {
6219  return parent;
6220  }
6221 
6222  void delete_elements()
6223  {
6224  }
6225 
6227  {
6228  delete_elements();
6229  }
6230 
6231  friend class AST_FILE_IO;
6232  friend class SgSymbolTableStorageClass;
6234  };
6235 
6236 std::ostream & operator<< ( std::ostream & os, const rose_graph_integer_edge_hash_map::iterator & rhm_it );
6237 
6238 
6239 
6243 // DQ (4/30/2009): Added to support more of the Graph functionality in new ROSE IR nodes
6244 // typedef rose_hash::unordered_map<int,SgGraphEdge*, rose_hash::hash_integer, rose_hash::eqstr_graph_edge> rose_graph_integer_edge_hash_multimap_base_type;
6245 
6246 typedef rose_hash::unordered_multimap<int,SgGraphEdge*> rose_graph_integer_edge_hash_multimap_base_type;
6247 class rose_graph_integer_edge_hash_multimap : public rose_graph_integer_edge_hash_multimap_base_type
6248  {
6249  // This class is used to map nodes to edges in the highest level graph class.
6250  // Different graph classes derived from the SgGraph class contain additional
6251  // maps that contain specific types of edges.
6252 
6253  protected:
6254  // I think this is required by the AST file I/O support.
6255  SgNode * parent;
6256 
6257  public:
6259  : rose_graph_integer_edge_hash_multimap_base_type()
6260  {}
6261 // tps (11/18/2009) : I assume this is wrong, it should be a pair
6262 #if 0
6264  : rose_graph_integer_edge_hash_multimap_base_type(sz)
6265  {}
6266 #endif
6268  : rose_graph_integer_edge_hash_multimap_base_type(rhs),parent(rhs.parent)
6269  {}
6270 
6271  void set_parent(SgNode * new_parent)
6272  {
6273  parent = new_parent;
6274  }
6275  SgNode * get_parent()
6276  {
6277  return parent;
6278  }
6279 
6280  void delete_elements()
6281  {
6282  }
6283 
6285  {
6286  delete_elements();
6287  }
6288 
6289  friend class AST_FILE_IO;
6290  friend class SgSymbolTableStorageClass;
6292  };
6293 
6294 std::ostream & operator<< ( std::ostream & os, const rose_graph_integer_edge_hash_multimap::iterator & rhm_it );
6295 
6296 
6297 
6300 typedef rose_hash::unordered_multimap<std::pair<int,int>,SgGraphEdge*, rose_hash::hash_integer_pair> rose_graph_integerpair_edge_hash_multimap_base_type;
6301 class rose_graph_integerpair_edge_hash_multimap : public rose_graph_integerpair_edge_hash_multimap_base_type
6302  {
6303  // This class is used to map nodes to edges in the highest level graph class.
6304  // Different graph classes derived from the SgGraph class contain additional
6305  // maps that contain specific types of edges.
6306 
6307  protected:
6308  // I think this is required by the AST file I/O support.
6309  SgNode * parent;
6310 
6311  public:
6313  : rose_graph_integerpair_edge_hash_multimap_base_type()
6314  {}
6315 // tps (11/18/2009) : I assume this is wrong, it should be a pair
6316 // DQ (12/1/2009): This is not ment to be a pair, it should be an int as part of setting the size of the hash table.
6317 #if 0
6319  : rose_graph_integerpair_edge_hash_multimap_base_type(sz)
6320  {}
6321 #endif
6323  : rose_graph_integerpair_edge_hash_multimap_base_type(rhs),parent(rhs.parent)
6324  {}
6325 
6326  void set_parent(SgNode * new_parent)
6327  {
6328  parent = new_parent;
6329  }
6330  SgNode * get_parent()
6331  {
6332  return parent;
6333  }
6334 
6335  void delete_elements()
6336  {
6337  }
6338 
6340  {
6341  delete_elements();
6342  }
6343 
6344  friend class AST_FILE_IO;
6345  friend class SgSymbolTableStorageClass;
6347  };
6348 
6349 std::ostream & operator<< ( std::ostream & os, const rose_graph_integerpair_edge_hash_multimap::iterator & rhm_it );
6350 
6351 
6352 
6356 // DQ (5/1/2009): This is added to support lookup of indexes based on labels (can be used for nodes or edges).
6357 // tps (11/18/2009) : This cannot be correct since the constructor takes a string not an int.
6358 // CH (4/9/2010): Use boost::unordered instead
6359 typedef rose_hash::unordered_multimap<std::string, int> rose_graph_string_integer_hash_multimap_base_type;
6360 class rose_graph_string_integer_hash_multimap : public rose_graph_string_integer_hash_multimap_base_type
6361  {
6362  protected:
6363  // DQ (4/25/2009): We need to change this name since I think we just want the
6364  // associated IR node in the AST, and not any concept of parent in the graph.
6365  SgNode* parent;
6366 
6367  public:
6369  : rose_graph_string_integer_hash_multimap_base_type(), parent(NULL)
6370  {}
6371  // tps (11/18/2009) : This cannot be correct since the constructor takes a string not an int.
6372 #if 0
6374  : rose_graph_string_integer_hash_multimap_base_type(sz), parent(NULL)
6375  {}
6376 #endif
6378  : rose_graph_string_integer_hash_multimap_base_type(rhs),parent(rhs.parent)
6379  {}
6380 
6381  // See note (above) about name change to the associated data member for these access functions.
6382  void set_parent(SgNode * new_parent)
6383  {
6384  parent = new_parent;
6385  }
6386  SgNode * get_parent()
6387  {
6388  return parent;
6389  }
6390 
6391  void delete_elements()
6392  {
6393  }
6394 
6396  {
6397  delete_elements();
6398 
6399  parent = NULL;
6400  }
6401 
6402  friend class AST_FILE_IO;
6403  friend class SgSymbolTableStorageClass;
6405  };
6406 
6407 std::ostream & operator<< ( std::ostream & os, const rose_graph_string_integer_hash_multimap::iterator & rhm_it );
6408 
6409 // DQ (11/26/2005): Support for visitor pattern.
6410 class ROSE_VisitTraversal;
6411 class ROSE_VisitorPattern;
6412 
6413 // DQ (3/12/2007): Added mangle name map
6414 // typedef std::map<SgNode*,std::string> SgMangledNameList;
6415 // typedef SgMangledNameList* SgMangledNameListPtr;
6416 
6417 // DQ (12/23/2005): support for traversal of AST using visitor pattern
6418 ROSE_DLL_API void traverseMemoryPoolNodes ( ROSE_VisitTraversal & traversal );
6419 ROSE_DLL_API void traverseMemoryPoolVisitorPattern ( ROSE_VisitorPattern & visitor );
6420 
6421 // DQ (2/9/2006): Added to support traversal over single representative of each IR node
6422 // This traversal helps support intrnal tools that call static member functions.
6423 ROSE_DLL_API void traverseRepresentativeNodes ( ROSE_VisitTraversal & traversal );
6424 
6425 // DQ (6/7/2010): Change the return type to size_t to support larger number of IR nodes
6426 // using values that overflow signed values of int.
6427 // DQ (1/2/2006): Support for computing the total number of IR nodes in use within an AST
6428 // computation is done based on the memory pools (so it is exact).
6429 // int numberOfNodes();
6430 // int memoryUsage();
6431 ROSE_DLL_API size_t numberOfNodes();
6432 ROSE_DLL_API size_t memoryUsage();
6433 
6434 // DQ: This function is used by the SgNode object to connect the unparser (in ROSE) to the AST.
6435 ROSE_DLL_API std::string globalUnparseToString ( const SgNode* astNode, SgUnparse_Info* inputUnparseInfoPointer = NULL );
6436 
6437 // DQ: These functions are used by soem specific STL containers to connect the unparser (in ROSE) to the AST (mostly for name qualification).
6438 // DQ (9/13/2014): Added support for more general unparsing of STL containers of IR nodes (at least these).
6439 ROSE_DLL_API std::string globalUnparseToString ( const SgTemplateParameterPtrList* templateParameterList, SgUnparse_Info* inputUnparseInfoPointer = NULL );
6440 ROSE_DLL_API std::string globalUnparseToString ( const SgTemplateArgumentPtrList* templateArgumentList, SgUnparse_Info* inputUnparseInfoPointer = NULL );
6441 
6442 
6443 // MS 2002: global type
6452  {
6453  // DQ (12/31/2005): Note that we can't use "using namespace std;"
6454  // to simplify this code, or so it seems.
6455  public:
6456  // The first two of these fields are constants, and so this avoids the constructor
6457  const char* type;
6458  const char* name;
6459  std::string value;
6460 
6461  RTIMemberData(): type(NULL), name(NULL), value() {}
6462 
6463  RTIMemberData(const char* type0, const char* name0, const std::string& value0)
6464  : type(type0), name(name0), value(value0)
6465  {}
6466 #if 0 // JJW this should not be used
6467  RTIMemberData(char* type0, char* name0, char* value0)
6468  : type(std::string(type0)), name(std::string(name0)), value(std::string(value0))
6469  {}
6470 #endif
6471  };
6472 
6473 typedef std::vector<RTIMemberData> RTIReturnType;
6474 
6475 struct ReferenceToPointerHandler;
6476 
6477 
6497  {
6498  public:
6499  // STL map type
6500  typedef std::map<const SgNode*,SgNode*> copiedNodeMapType;
6501 
6502  private:
6503  // DQ (10/8/2007): Added support for the depth to be kept track of in the AST copy mechansim.
6505  int depth;
6506 
6507  // This is mostly used for SgSymbol IR nodes (but will likely be used for other IR nodes in the future.
6509  copiedNodeMapType copiedNodeMap;
6510 
6511  public:
6512 
6513  // STL map iterator type
6514  typedef copiedNodeMapType::iterator copiedNodeMapTypeIterator;
6515 
6516 #if 0
6517  // This function is redundant. All of its functionality can be placed into the virtual copyAst() member function.
6518  virtual bool clone_node( const SgNode *n ) const = 0;
6519 #endif
6520 
6521  virtual SgNode *copyAst( const SgNode *n ) = 0;
6522 
6523  // Default constructor (required to initialize the depth
6524  SgCopyHelp() : depth(0) {}
6525 
6526  // Defined the virtual destructor
6527  virtual ~SgCopyHelp() {}
6528 
6529  // DQ (10/8/2007): Access functions for the depth (inlined for performance).
6530  int get_depth() { return depth; }
6531  void incrementDepth() { depth++; }
6532  void decrementDepth() { depth--; }
6533  copiedNodeMapType & get_copiedNodeMap() { return copiedNodeMap; }
6534 
6535  // Reset the state saved
6536  void clearState() { depth = 0; copiedNodeMap.clear(); }
6537 
6538  // Added things that generate symbols to the state (could be SgDeclarationStatement or SgInitializedName objects).
6539  void insertCopiedNodePair( const SgNode* key, SgNode* value );
6540 
6541  };
6542 
6543 
6550  {
6551  public:
6552 #if 0
6553  bool clone_node( const SgNode *n ) const { return false; }
6554 #endif
6555  SgNode *copyAst( const SgNode *n ) { return const_cast<SgNode *>(n); }
6556 
6557 #if 0
6558  // JJW 10-25-2007 Removed this because using it makes code very prone to bugs
6559  // PC (8/7/2006): static instances of SgCopyHelp subtypes without any attributes
6560  // TODO: make this functionality generic within ROSETTA
6561  private:
6562  static SgShallowCopy *p_static_instance;
6563  public:
6564  static SgShallowCopy &static_instance()
6565  {
6566  if (p_static_instance == NULL)
6567  {
6568  p_static_instance = new SgShallowCopy;
6569  }
6570  return *p_static_instance;
6571  }
6572 #endif
6573 
6574  };
6575 
6576 
6584 class ROSE_DLL_API SgTreeCopy : public SgCopyHelp
6585  {
6586  public:
6587 #if 0
6588  bool clone_node( const SgNode *n ) const;
6589 #endif
6590  SgNode *copyAst( const SgNode *n );
6591 
6592 #if 0
6593  // JJW 10-25-2007 Removed this because using it makes code very prone to bugs
6594  // PC (8/7/2006): static instances of SgCopyHelp subtypes without any attributes
6595  // TODO: make this functionality generic within ROSETTA
6596  private:
6597  static SgTreeCopy *p_static_instance;
6598  public:
6599  static SgTreeCopy &static_instance()
6600  {
6601  if (p_static_instance == NULL)
6602  {
6603  p_static_instance = new SgTreeCopy;
6604  }
6605  return *p_static_instance;
6606  }
6607 #endif
6608 
6609  };
6610 
6611 // PC (8/3/2006): Support for subnode capturing
6618 template <class CopyType>
6619 class SgCapturingCopy : public CopyType
6620  {
6621  protected:
6622  std::vector<SgNode *> origList;
6623  std::vector<SgNode *> copyList;
6624  public:
6625  SgCapturingCopy( std::vector<SgNode *> origList, const CopyType &base = CopyType() )
6626  // : origList(origList), CopyType(base)
6627  : CopyType(base), origList(origList), copyList(origList.size())
6628  { }
6629  virtual ~SgCapturingCopy() { }
6630  SgNode *copyAst( const SgNode *n )
6631  {
6632  SgNode *newNode = CopyType::copyAst(n);
6633  int listSize = origList.size();
6634  for (int i = 0; i < listSize; i++)
6635  {
6636  if (origList[i] == n)
6637  {
6638  copyList[i] = newNode;
6639  }
6640  }
6641  return newNode;
6642  }
6643  const std::vector<SgNode *> &get_copyList()
6644  {
6645  return copyList;
6646  }
6647  };
6648 
6649 // DQ (12/22/2005): Jochen's support for a constant (non-NULL) valued pointer
6650 // to use to distinguish valid from invalid IR nodes within the memory pools.
6653 namespace AST_FileIO
6654  {
6665 
6669  }
6670 
6671 // DQ (12/26/2005): Simple traversal base class for use with ROSE style
6672 // traversals. Need to move this to a different location later.
6674  {
6675  public:
6676  virtual ~ROSE_VisitTraversal() {};
6677  virtual void visit (SgNode* node) = 0;
6678  void traverseMemoryPool()
6679  {
6680  traverseMemoryPoolNodes(*this);
6681  }
6682  void traverseRepresentativeIRnodes()
6683  {
6684  traverseRepresentativeNodes(*this);
6685  }
6686  };
6687 
6688 
6689 // DQ (3/18/2006): Forward declarations of classes used to control and tailor the code generation.
6690 class UnparseDelegate;
6691 class UnparseFormatHelp;
6692 
6693 // DQ (4/19/2006): forward declaration of PreprocessingInfo so that
6694 // PreprocessingInfo can follow Sage III class declarations and contain
6695 // a Sg_File_Info object (to record the filename of the comments and
6696 // CPP directoves).
6697 // class PreprocessingInfo;
6698 
6699 // DQ (4/32/2006): g++ 4.0.2 requires a forward declaration for this (a friend class declaration is not sufficient!)
6700 class AstSpecificDataManagingClassStorageClass;
6701 
6702 // DQ (4/23/2006): The friend declaration the SgProject class is not enough this must be defined outside of the class (for g++ 4.1.0).
6703 std::ostream & operator<< ( std::ostream & os, const Rose_STL_Container<std::string> & l );
6704 
6705 // DQ (8/8/2008): Added support for std::multimap<rose_addr_t, rose_addr_t> used in binary file format.
6706 std::ostream & operator<< ( std::ostream & os, const std::multimap<rose_addr_t, rose_addr_t> & m );
6707 std::ostream & operator<< ( std::ostream & os, const std::vector<std::pair<rose_addr_t, rose_addr_t> > & l );
6708 // struct SgAsmGenericFormat::fileDetails;
6709 // std::ostream & operator<< ( std::ostream & os, const SgAsmGenericFormat::fileDetails & sb );
6710 std::ostream & operator<< ( std::ostream & os, const struct stat & sb );
6711 
6712 #if 0
6713 // DQ (8/28/2006): This fixes a bug in ROSE where the namespace scope is not defined
6714 // to permit get_scope() to return a valid pointer (non NULL) when processing the
6715 // STL used in the functions (return types, I think).
6716 namespace VirtualCFG
6717  {
6718  int dummy_function_in_predeclared_virtualCFG_namespace(void);
6719  }
6720 #endif
6721 
6722 // DQ (5/8/2007): Added support for type elaboration lists, hidden type lists, and hidden declaration lists.
6723 std::ostream & operator<< ( std::ostream & os, const std::set<SgSymbol*> & l );
6724 
6725 
6726 // DQ (8/21/2006): Jeremiah Willcock's Virtual CFG mechanism.
6727 //#include "virtualCFG.h"
6728 // tps (8/13/2007): working on binary cfg mechanism.
6729 //#include "virtualBinCFG.h"
6730 
6731 
6732 
6733 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
6734 
6735 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
6736 
6737 #if 1
6738 // Class Definition for SgNode
6739 class ROSE_DLL_API SgNode
6740  {
6741  public:
6742 
6743 
6744 /* #line 6745 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
6745 
6746  virtual SgNode* copy ( SgCopyHelp& help) const;
6747 // Start of memberFunctionString
6748 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
6749 
6750 // *** COMMON CODE SECTION BEGINS HERE ***
6751 
6752  public:
6753 
6754  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
6755  // and not required which is required to match the other aspects of the copy mechanism code generation.
6756  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
6757  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
6758  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
6759  // virtual SgNode* copy ( const SgCopyHelp & help) const;
6760 
6762  virtual std::string class_name() const;
6763 
6765  virtual VariantT variantT() const; // MS: new variant used in tree traversal
6766 
6768  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
6769  // static const VariantT static_variant = V_SgNode;
6770  enum { static_variant = V_SgNode };
6771 
6772  /* the generated cast function */
6774  ROSE_DLL_API friend SgNode* isSgNode( SgNode * s );
6775 
6777  ROSE_DLL_API friend const SgNode* isSgNode( const SgNode * s );
6778 
6779  // ******************************************
6780  // * Memory Pool / New / Delete
6781  // ******************************************
6782 
6783  public:
6785  static const unsigned pool_size; //
6787  static std::vector<unsigned char *> pools; //
6789  static SgNode * next_node; //
6790 
6792  static unsigned long initializeStorageClassArray(SgNodeStorageClass *); //
6793 
6795  static void clearMemoryPool(); //
6796  static void deleteMemoryPool(); //
6797 
6799  static void extendMemoryPoolForFileIO(); //
6800 
6802  static SgNode * getPointerFromGlobalIndex(unsigned long); //
6804  static SgNode * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
6805 
6807  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
6809  static void resetValidFreepointers(); //
6811  static unsigned long getNumberOfLastValidPointer(); //
6812 
6813 
6814 #if defined(INLINE_FUNCTIONS)
6815 
6816  inline void *operator new (size_t size);
6817 #else
6818 
6819  void *operator new (size_t size);
6820 #endif
6821 
6822  void operator delete (void* pointer, size_t size);
6823 
6824  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
6825  void operator delete (void* pointer)
6826  {
6827  // This is the generated delete operator...
6828  SgNode::operator delete (pointer,sizeof(SgNode));
6829  }
6830 
6832  static size_t numberOfNodes();
6833 
6835  static size_t memoryUsage();
6836 
6837  // End of scope which started in IR nodes specific code
6838  /* */
6839 
6840  /* name Internal Functions
6841  \brief Internal functions ... incomplete-documentation
6842 
6843  These functions have been made public as part of the design, but they are suggested for internal use
6844  or by particularly knowledgeable users for specialized tools or applications.
6845 
6846  \internal We could not make these private because they are required by user for special purposes. And
6847  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
6848 
6849  */
6850 
6851  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
6852  // overridden in every class by *generated* implementation
6854  virtual std::vector<SgNode*> get_traversalSuccessorContainer();
6855  // MS: 06/28/02 container of names of variables or container indices
6856  // used used in the traversal to access AST successor nodes
6857  // overridden in every class by *generated* implementation
6860  virtual std::vector<std::string> get_traversalSuccessorNamesContainer();
6861 
6862  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
6863  // than all the vector copies. The implementation for these functions is generated for each class.
6865  virtual size_t get_numberOfTraversalSuccessors();
6867  virtual SgNode *get_traversalSuccessorByIndex(size_t idx);
6869  virtual size_t get_childIndex(SgNode *child);
6870 
6871 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
6872  // MS: 08/16/2002 method for generating RTI information
6874  virtual RTIReturnType roseRTI();
6875 #endif
6876  /* */
6877 
6878 
6879 
6880  /* name Deprecated Functions
6881  \brief Deprecated functions ... incomplete-documentation
6882 
6883  These functions have been deprecated from use.
6884  */
6885  /* */
6886 
6888  virtual const char* sage_class_name() const ROSE_DEPRECATED_FUNCTION;
6889 
6890  // JJW (10/16/2008): Changed to a single function in Node.code, and put
6891  // getVariant() in #if 0 block to prevent confusing Doxygen
6892 #if 0
6893 
6894  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
6896  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
6897 #endif
6898  /* */
6899 
6900 
6901 
6902 
6903  public:
6904  /* name Traversal Support Functions
6905  \brief Traversal support functions ... incomplete-documentation
6906 
6907  These functions have been made public as part of the design, but they are suggested for internal use
6908  or by particularly knowledgable users for specialized tools or applications.
6909  */
6910  /* */
6911 
6912  // DQ (11/26/2005): Support for visitor pattern mechanims
6913  // (inferior to ROSE traversal mechanism, experimental).
6916  void executeVisitorMemberFunction (ROSE_VisitorPattern & visitor);
6917 
6918  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
6920  virtual void accept (ROSE_VisitorPattern & visitor);
6921 
6922  // DQ (12/26/2005): Support for traversal based on the memory pool
6925  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
6926 
6929  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
6930 
6931  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
6932  // This traversal helps support internal tools that call static member functions.
6933  // note: this function operates on the memory pools.
6936  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
6937  /* */
6938 
6939 
6940  public:
6941  /* name Memory Allocation Functions
6942  \brief Memory allocations functions ... incomplete-documentation
6943 
6944  These functions have been made public as part of the design, but they are suggested for internal use
6945  or by particularly knowledgable users for specialized tools or applications.
6946  */
6947  /* */
6948 
6959  virtual bool isInMemoryPool();
6960 
6971  virtual void checkDataMemberPointersIfInMemoryPool();
6972 
6973  // DQ (4/30/2006): Modified to be a const function.
6988  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const;
6989 
6999  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*);
7000 
7012  virtual long getChildIndex( SgNode* childNode ) const;
7013 
7014  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
7015  // comment here (changed to be a C style comment and not be a doxygen comment).
7016  /* \brief Constructor for use by AST File I/O Mechanism
7017 
7018  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
7019  which obtained via fast binary file I/O from disk.
7020  */
7021  // SgNode( SgNodeStorageClass& source );
7022 
7023 
7024 
7025 
7026 
7027  // JH (10/24/2005): methods added to support the ast file IO
7028  private:
7029 
7030  /* name AST Memory Allocation Support Functions
7031  \brief Memory allocations support....
7032 
7033  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
7034  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
7035  and support the AST File I/O Mechanism.
7036  */
7037  /* */
7038 
7039  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
7040  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
7041  that I use the same type everywhere, if any changes are made. THe second one declares the type
7042  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
7043  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
7044  a correspinding one in the AST_FILE_IO class!
7045  */
7046  // DQ (9/2/2015): This typedef is no longer used, we can't define the
7047  // comment here (changed to be a C style comment and not be a doxygen comment).
7048  /* \brief Typedef used for low level memory access.
7049  */
7050  // typedef unsigned char* TestType;
7051 
7052  // DQ (9/2/2015): This typedef is no longer used, we can't define the
7053  // comment here (changed to be a C style comment and not be a doxygen comment).
7054  /* \brief Typedef used to hold memory addresses as values.
7055  */
7056  // typedef unsigned long AddressType;
7057 
7058 
7059 
7060  // necessary, to have direct access to the p_freepointer and the private methods !
7062  friend class AST_FILE_IO;
7063 
7065  friend class SgNodeStorageClass;
7066 
7068  friend class AstSpecificDataManagingClass;
7069 
7071  friend class AstSpecificDataManagingClassStorageClass;
7072 
7073  public:
7075  SgNode( const SgNodeStorageClass& source );
7076 
7077  // private: // JJW hack
7078  /*
7079  name AST Memory Allocation Support Variables
7080  Memory allocations support variables
7081 
7082  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
7083  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
7084  and support the AST File I/O Mechanism.
7085  */
7086  /* */
7087 
7088  public:
7089 
7090  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
7091  // to current node (so that it will work cleanly with build functions to specify patterns).
7092  // virtual SgNode* addRegExpAttribute();
7098  SgNode* addRegExpAttribute(std::string s, AstRegExAttribute* a);
7099 
7100 // *** COMMON CODE SECTION ENDS HERE ***
7101 
7102 
7103 // End of memberFunctionString
7104 // Start of memberFunctionString
7105 /* #line 1186 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
7106 
7107  public:
7108 
7109  // DQ (7/23/2005): Let these be automatically generated by ROSETTA!
7110  // Opps, these can't be generated by ROSETTA, since it would result
7111  // in the recursive call to set_isModified (endless recursion).
7112 
7119  void set_isModified( bool isModified );
7120 
7125  void set_containsTransformation( bool containsTransformation );
7126 
7127 
7133  bool get_isModified() const;
7134 
7139  bool get_containsTransformation() const;
7140 
7142  void set_parent ( SgNode* parent );
7143 
7145  SgNode* get_parent () const;
7146 
7148  bool isChild ( SgNode* node ) const;
7149 
7150  // DQ (4/4/2006): Added optional parameter to customize unparsing
7152  // virtual std::string unparseToString(SgUnparse_Info* info = NULL) const;
7153  // Jeremiah (11/9/2007): The default value is not recognized by gdb.
7154  virtual std::string unparseToString(SgUnparse_Info* info) const;
7155 
7156  // DQ (9/6/2010): Move this to the source file (we want to eliminate function definitions in header files).
7157  // The existence of this function addresses a bug in gdb (see comment from Jeremiah (11/9/2007) above).
7158  // inline std::string unparseToString() const { return this->unparseToString(NULL); }
7159  std::string unparseToString() const;
7160 
7162  std::string unparseToCompleteString();
7163 
7172  static std::vector<std::string> buildCommandLineToSubstituteTransformationFile( const std::vector<std::string>& argv, std::string newFileName );
7173 
7174  // JJW (10/16/2008): Replace variant() by variantT() and a cast (the
7175  // numbers are the same, but the enumerator names are different)
7176  int variant() const ROSE_DEPRECATED_FUNCTION {return (int)this->variantT();}
7177 
7178  // AS (10/22/2007): build function to return class hierachy subtree of a VariantT
7179  static std::vector<VariantT> getClassHierarchySubTreeFunction( VariantT v);
7180  static void getClassHierarchySubTreeFunction( VariantT v, std::vector<VariantT>&);
7181 
7187  bool get_isVisited () const ROSE_DEPRECATED_FUNCTION;
7188 
7193  void set_isVisited ( bool isVisited ) ROSE_DEPRECATED_FUNCTION;
7194 
7199  static std::map<SgNode*,std::string> & get_globalMangledNameMap();
7200 
7203  static void clearGlobalMangledNameMap();
7204 
7210  static std::map<std::string, int> & get_shortMangledNameCache();
7211 
7217  static std::map<SgNode*,std::string> & get_globalQualifiedNameMapForNames();
7218 
7224  static void set_globalQualifiedNameMapForNames ( const std::map<SgNode*,std::string> & X );
7225 
7232  static std::map<SgNode*,std::string> & get_globalQualifiedNameMapForTypes();
7233 
7240  static void set_globalQualifiedNameMapForTypes ( const std::map<SgNode*,std::string> & X );
7241 
7242  // DQ (3/13/2019): Added name qualification support for references to types than can embed many types.
7249  static std::map<SgNode*,std::map<SgNode*,std::string> > & get_globalQualifiedNameMapForMapsOfTypes();
7250 
7251  // DQ (3/13/2019): Added name qualification support for references to types than can embed many types.
7258  static void set_globalQualifiedNameMapForMapsOfTypes ( const std::map<SgNode*,std::map<SgNode*,std::string> > & X );
7259 
7269  static std::map<SgNode*,std::string> & get_globalQualifiedNameMapForTemplateHeaders();
7270 
7275  static void set_globalQualifiedNameMapForTemplateHeaders ( const std::map<SgNode*,std::string> & X );
7276 
7283  static std::map<SgNode*,std::string> & get_globalTypeNameMap();
7284 
7290  static void set_globalTypeNameMap ( const std::map<SgNode*,std::string> & X );
7291 
7292 #if 0
7293 
7299  static std::map<SgNode*,std::vector<std::string> > & get_globalQualifiedNameMapForArrayTypeDimensions();
7300 
7306  static void set_globalQualifiedNameMapForArrayTypeDimensions ( const std::map<SgNode*, std::vector<std::string> > & X );
7307 #endif
7308 
7309 #if 0
7310  // DQ (6/21/2011): Added support for the state within the name qualification support to be referenced consistantly independent of recursive calls.
7317  static std::map<SgNode*> & get_globalReferencedNameSet();
7318 
7324  static void set_globalReferencedNameSet ( const std::set<SgNode*> & X );
7325 #endif
7326 
7327 
7328 
7329 
7330  /* name Persistant Attribute Mechanism
7331 
7332  This is the persistant attribute mechanism for attaching attributed to IR nodes across
7333  multiple passes. Note that these attributes are persistant in that they are preserved
7334  if the AST is written out to a file and read in from a file. However, virtual function
7335  in the user-defined class derived from the AstAttribute must be defined for the attribute
7336  to be defined across the boundary of File I/O (simple pack and unpack functions). More
7337  sophisticated mechanisms are available within the AstAttributeMechanism object
7338  (e.g iterating though attributes, etc; get_attributeMechanism() is available if direct
7339  access is required, however mostly only internal tools use this lower level support).
7340 
7341  \internal This used to be a public data member, but has been changed to be a protected
7342  pointer instead. The functional interface of the AstAttributeMechanism is presevered
7343  but some of the names and the syntax for calling the interface have changed. The
7344  pointer to the AstAttributeMechanism is now generated by ROSETTA.
7345  */
7346  /* */
7348  virtual void addNewAttribute(std::string s,AstAttribute* a);
7350  virtual AstAttribute* getAttribute(std::string s) const;
7352  virtual void updateAttribute(std::string s,AstAttribute* a); // formerly called: replace in AstAttributeMechanism
7357  virtual void setAttribute(std::string s,AstAttribute* a);
7359  virtual void removeAttribute(std::string s);
7361  virtual bool attributeExists(std::string s) const;
7363  virtual int numberOfAttributes() const;
7364 
7372  virtual AstAttributeMechanism* get_attributeMechanism() const;
7379  virtual void set_attributeMechanism(AstAttributeMechanism* a);
7380  /* */
7381 
7382 #if ALT_FIXUP_COPY
7383  /* name AST Copy Support Functions
7384 
7385  Support for IR node specific fixup of copy operation.
7386  This function helps reset scopes and build untraversed parts of the
7387  AST that are difficult to have be constructed using the automatically
7388  generated copy functions.
7389 
7390  \implementation These functions are used internally inside the AST copy mechanism.
7391  The public interface for this functionality is given below this section.
7392  */
7393  /* */
7394  virtual void fixupCopy_scopes (SgNode* copy, SgCopyHelp & help) const;
7395  virtual void fixupCopy_symbols (SgNode* copy, SgCopyHelp & help) const;
7396  virtual void fixupCopy_references (SgNode* copy, SgCopyHelp & help) const;
7397  /* */
7398 #else
7399  virtual void fixupCopy(SgNode* copy, SgCopyHelp & help) const;
7400 #endif
7401 
7402  /* name Source Position Information
7403  \brief Support for source code position information of all IR nodes.
7404 
7405  These are the virtual function definitions, they are overloaded for SgLocatedNode
7406  and a few of the SgSupport IR nodes.
7407  */
7408  /* */
7417  virtual Sg_File_Info* get_file_info(void) const { return NULL; }
7418 
7422  virtual Sg_File_Info* get_startOfConstruct(void) const {return NULL;}
7423 
7427  virtual Sg_File_Info* get_endOfConstruct(void) const { return NULL; }
7428  /* */
7429 
7430  /* name Control flow graph public functions
7431 
7432  These functions return control flow graph nodes for various positions
7433  around a construct. */
7434  /* */
7435 
7436 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
7437 #if 0
7438  // DQ (4/5/2017): Moved these function definition out of the header file to avoid warnings from
7439  // assertion from the header file (OK if it appears once from compiling the source file).
7441  VirtualCFG::CFGNode cfgForBeginning()
7442  {
7443  ROSE_ASSERT (this);
7444  return VirtualCFG::CFGNode(this, 0);
7445  }
7446 
7448  VirtualCFG::CFGNode cfgForEnd()
7449  {
7450  assert (this);
7451  return VirtualCFG::CFGNode(this, this->cfgIndexForEnd());
7452  }
7453  /* */
7454 #else
7455 
7456  VirtualCFG::CFGNode cfgForBeginning();
7458  VirtualCFG::CFGNode cfgForEnd();
7459 #endif
7460 #endif
7461 
7462 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
7463  /* name Control flow graph view helper functions
7464 
7465  These functions are used internally inside the control flow graph
7466  view code. The public interface for this functionality is given
7467  below this section. */
7468  /* */
7469 
7471  virtual unsigned int cfgIndexForEnd() const;
7472 
7475  virtual bool cfgIsIndexInteresting(unsigned int index) const;
7476 
7478  virtual unsigned int cfgFindChildIndex(SgNode* n);
7479 
7481  virtual unsigned int cfgFindNextChildIndex(SgNode* n);
7482 
7484  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index = false);
7485 
7487  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index = false);
7488 #if 0
7489 
7490  virtual std::vector<SgDirectedGraphEdge*> cfgOutEdges(unsigned int index, StaticCFG::CFG* cfg)
7491  { return cfg->getOutEdges(this, index); }
7492 
7494  virtual std::vector<SgDirectedGraphEdge*> cfgInEdges(unsigned int index, StaticCFG::CFG* cfg)
7495  { return cfg->getInEdges(this, index); }
7496 #endif
7497 #endif
7498  /* */
7499 
7500  // DQ (1/31/2006): These must be built to be static access member functions (so they can't be built by ROSETTA).
7501  /* name Function Type Information
7502  Support for global view of function types used in ROSE.
7503  */
7504  /* */
7506  static SgFunctionTypeTable* get_globalFunctionTypeTable();
7508  static void set_globalFunctionTypeTable(SgFunctionTypeTable* globalFunctionTypeTable);
7509  /* */
7510 
7511  // DQ (7/22/2010): Added seperate type table to support construction of unique types.
7513  static SgTypeTable* get_globalTypeTable();
7515  static void set_globalTypeTable(SgTypeTable* globalTypeTable);
7516 
7517  protected:
7518  static std::vector<std::tuple<unsigned char*, unsigned, VariantT>> all_pools;
7519  public:
7520  static VariantT variantFromPool(SgNode const * n);
7521 
7522  /* \brief Mangled name cache for improved performance of mangled name generation
7523  This mangle name caching is implemented to support better performance.
7524  */
7525  // static std::map<SgNode*,std::string> & get_globalMangledNameMap();
7526 
7533  int numberOfNodesInSubtree();
7534 
7542  int depthOfSubtree();
7543 
7544  protected:
7545 
7552  virtual void post_construction_initialization();
7553 
7554  private:
7555  // Make the copy constructor private (to avoid it being used)
7556  /* We have to make the copy constructor available so that the SgUnparse_Info
7557  copy constructor can access it, I'm not clear if this is a good idea.
7558  */
7559  // SgNode(const SgNode &); /* private so it can't be used. */
7560 
7562  SgNode & operator= ( const SgNode & X );
7563 
7564  public:
7565 
7566 
7567 
7568 // End of memberFunctionString
7569 
7570 
7571 
7572 
7573  public:
7574  SgNode* get_freepointer() const;
7575  void set_freepointer(SgNode* freepointer);
7576 
7577 
7578 
7579 
7580 
7581 
7582 
7583 
7584 
7585 
7586 
7587  public:
7588  virtual ~SgNode();
7589 
7590 
7591  public:
7592  SgNode();
7593 
7594  protected:
7595 // Start of memberFunctionString
7597 
7598 // End of memberFunctionString
7599 // Start of memberFunctionString
7601 
7602 // End of memberFunctionString
7603 // Start of memberFunctionString
7604 bool p_containsTransformation;
7605 
7606 // End of memberFunctionString
7607 // Start of memberFunctionString
7609 
7610 // End of memberFunctionString
7611 // Start of memberFunctionString
7613 
7614 // End of memberFunctionString
7615 // Start of memberFunctionString
7616 static SgTypeTable* p_globalTypeTable;
7617 
7618 // End of memberFunctionString
7619 // Start of memberFunctionString
7620 static std::map<SgNode*,std::string> p_globalMangledNameMap;
7621 
7622 // End of memberFunctionString
7623 // Start of memberFunctionString
7624 static std::map<std::string, int> p_shortMangledNameCache;
7625 
7626 // End of memberFunctionString
7627 // Start of memberFunctionString
7628 static std::map<SgNode*,std::string> p_globalQualifiedNameMapForNames;
7629 
7630 // End of memberFunctionString
7631 // Start of memberFunctionString
7632 static std::map<SgNode*,std::string> p_globalQualifiedNameMapForTypes;
7633 
7634 // End of memberFunctionString
7635 // Start of memberFunctionString
7636 static std::map<SgNode*,std::string> p_globalQualifiedNameMapForTemplateHeaders;
7637 
7638 // End of memberFunctionString
7639 // Start of memberFunctionString
7640 static std::map<SgNode*,std::string> p_globalTypeNameMap;
7641 
7642 // End of memberFunctionString
7643 // Start of memberFunctionString
7644 static std::map<SgNode*,std::map<SgNode*,std::string> > p_globalQualifiedNameMapForMapsOfTypes;
7645 
7646 // End of memberFunctionString
7647 
7648 
7649 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
7650 
7651 
7652  };
7653 #endif
7654 
7655 // postdeclarations for SgNode
7656 
7657 /* #line 7658 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
7658 
7659 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
7660 
7661 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
7662 
7663 
7664 /* #line 7665 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
7665 
7666 
7667 
7668 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
7669 
7670 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
7671 // This code is automatically generated for each
7672 // terminal and non-terminal within the defined
7673 // grammar. There is a simple way to change the
7674 // code to fix bugs etc. See the ROSE README file
7675 // for directions.
7676 
7677 // tps: (02/22/2010): Adding DLL export requirements
7678 #include "rosedll.h"
7679 
7680 // predeclarations for SgSupport
7681 
7682 /* #line 7683 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
7683 
7684 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
7685 
7686 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
7687 
7688 #if 1
7689 // Class Definition for SgSupport
7690 class ROSE_DLL_API SgSupport : public SgNode
7691  {
7692  public:
7693 
7694 
7695 /* #line 7696 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
7696 
7697  virtual SgNode* copy ( SgCopyHelp& help) const override;
7698 // Start of memberFunctionString
7699 /* #line 3 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
7700 
7701  // This is part of the SgSupport class definition
7702 
7703  // DQ (4/13/2004): Make the copy constructor parameter a const ref instead of just ref parameter
7704  // previously was protected so it couldn't be used (too easily).
7705  private:
7706  SgSupport(const SgSupport &); /* private so it can't be used. */
7707  SgSupport & operator= ( const SgSupport & X );
7708 
7709  private:
7710  friend class boost::serialization::access;
7711  template<class S>
7712  void serialize(S &s, const unsigned /*version*/) {
7713  s & BOOST_SERIALIZATION_BASE_OBJECT_NVP(SgNode);
7714  // No data members are serialized at this time, but this serialization function needs to be
7715  // defined because SgSupport is an indirect base class of SgBinaryComposite, which is
7716  // serializable.
7717  }
7718 
7719 
7720 // End of memberFunctionString
7721 // Start of memberFunctionString
7722 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
7723 
7724 // *** COMMON CODE SECTION BEGINS HERE ***
7725 
7726  public:
7727 
7728  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
7729  // and not required which is required to match the other aspects of the copy mechanism code generation.
7730  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
7731  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
7732  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
7733  // virtual SgNode* copy ( const SgCopyHelp & help) const;
7734 
7736  virtual std::string class_name() const override;
7737 
7739  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
7740 
7742  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
7743  // static const VariantT static_variant = V_SgSupport;
7744  enum { static_variant = V_SgSupport };
7745 
7746  /* the generated cast function */
7748  ROSE_DLL_API friend SgSupport* isSgSupport( SgNode * s );
7749 
7751  ROSE_DLL_API friend const SgSupport* isSgSupport( const SgNode * s );
7752 
7753  // ******************************************
7754  // * Memory Pool / New / Delete
7755  // ******************************************
7756 
7757  public:
7759  static const unsigned pool_size; //
7761  static std::vector<unsigned char *> pools; //
7763  static SgSupport * next_node; //
7764 
7766  static unsigned long initializeStorageClassArray(SgSupportStorageClass *); //
7767 
7769  static void clearMemoryPool(); //
7770  static void deleteMemoryPool(); //
7771 
7773  static void extendMemoryPoolForFileIO(); //
7774 
7776  static SgSupport * getPointerFromGlobalIndex(unsigned long); //
7778  static SgSupport * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
7779 
7781  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
7783  static void resetValidFreepointers(); //
7785  static unsigned long getNumberOfLastValidPointer(); //
7786 
7787 
7788 #if defined(INLINE_FUNCTIONS)
7789 
7790  inline void *operator new (size_t size);
7791 #else
7792 
7793  void *operator new (size_t size);
7794 #endif
7795 
7796  void operator delete (void* pointer, size_t size);
7797 
7798  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
7799  void operator delete (void* pointer)
7800  {
7801  // This is the generated delete operator...
7802  SgSupport::operator delete (pointer,sizeof(SgSupport));
7803  }
7804 
7806  static size_t numberOfNodes();
7807 
7809  static size_t memoryUsage();
7810 
7811  // End of scope which started in IR nodes specific code
7812  /* */
7813 
7814  /* name Internal Functions
7815  \brief Internal functions ... incomplete-documentation
7816 
7817  These functions have been made public as part of the design, but they are suggested for internal use
7818  or by particularly knowledgeable users for specialized tools or applications.
7819 
7820  \internal We could not make these private because they are required by user for special purposes. And
7821  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
7822 
7823  */
7824 
7825  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
7826  // overridden in every class by *generated* implementation
7828  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
7829  // MS: 06/28/02 container of names of variables or container indices
7830  // used used in the traversal to access AST successor nodes
7831  // overridden in every class by *generated* implementation
7834  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
7835 
7836  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
7837  // than all the vector copies. The implementation for these functions is generated for each class.
7839  virtual size_t get_numberOfTraversalSuccessors() override;
7841  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
7843  virtual size_t get_childIndex(SgNode *child) override;
7844 
7845 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
7846  // MS: 08/16/2002 method for generating RTI information
7848  virtual RTIReturnType roseRTI() override;
7849 #endif
7850  /* */
7851 
7852 
7853 
7854  /* name Deprecated Functions
7855  \brief Deprecated functions ... incomplete-documentation
7856 
7857  These functions have been deprecated from use.
7858  */
7859  /* */
7860 
7862  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
7863 
7864  // JJW (10/16/2008): Changed to a single function in Node.code, and put
7865  // getVariant() in #if 0 block to prevent confusing Doxygen
7866 #if 0
7867 
7868  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
7870  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
7871 #endif
7872  /* */
7873 
7874 
7875 
7876 
7877  public:
7878  /* name Traversal Support Functions
7879  \brief Traversal support functions ... incomplete-documentation
7880 
7881  These functions have been made public as part of the design, but they are suggested for internal use
7882  or by particularly knowledgable users for specialized tools or applications.
7883  */
7884  /* */
7885 
7886  // DQ (11/26/2005): Support for visitor pattern mechanims
7887  // (inferior to ROSE traversal mechanism, experimental).
7891 
7892  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
7894  virtual void accept (ROSE_VisitorPattern & visitor) override;
7895 
7896  // DQ (12/26/2005): Support for traversal based on the memory pool
7899  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
7900 
7904 
7905  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
7906  // This traversal helps support internal tools that call static member functions.
7907  // note: this function operates on the memory pools.
7910  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
7911  /* */
7912 
7913 
7914  public:
7915  /* name Memory Allocation Functions
7916  \brief Memory allocations functions ... incomplete-documentation
7917 
7918  These functions have been made public as part of the design, but they are suggested for internal use
7919  or by particularly knowledgable users for specialized tools or applications.
7920  */
7921  /* */
7922 
7933  virtual bool isInMemoryPool() override;
7934 
7945  virtual void checkDataMemberPointersIfInMemoryPool() override;
7946 
7947  // DQ (4/30/2006): Modified to be a const function.
7962  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
7963 
7973  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
7974 
7986  virtual long getChildIndex( SgNode* childNode ) const override;
7987 
7988  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
7989  // comment here (changed to be a C style comment and not be a doxygen comment).
7990  /* \brief Constructor for use by AST File I/O Mechanism
7991 
7992  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
7993  which obtained via fast binary file I/O from disk.
7994  */
7995  // SgSupport( SgSupportStorageClass& source );
7996 
7997 
7998 
7999 
8000 
8001  // JH (10/24/2005): methods added to support the ast file IO
8002  private:
8003 
8004  /* name AST Memory Allocation Support Functions
8005  \brief Memory allocations support....
8006 
8007  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
8008  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
8009  and support the AST File I/O Mechanism.
8010  */
8011  /* */
8012 
8013  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
8014  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
8015  that I use the same type everywhere, if any changes are made. THe second one declares the type
8016  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
8017  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
8018  a correspinding one in the AST_FILE_IO class!
8019  */
8020  // DQ (9/2/2015): This typedef is no longer used, we can't define the
8021  // comment here (changed to be a C style comment and not be a doxygen comment).
8022  /* \brief Typedef used for low level memory access.
8023  */
8024  // typedef unsigned char* TestType;
8025 
8026  // DQ (9/2/2015): This typedef is no longer used, we can't define the
8027  // comment here (changed to be a C style comment and not be a doxygen comment).
8028  /* \brief Typedef used to hold memory addresses as values.
8029  */
8030  // typedef unsigned long AddressType;
8031 
8032 
8033 
8034  // necessary, to have direct access to the p_freepointer and the private methods !
8036  friend class AST_FILE_IO;
8037 
8039  friend class SgSupportStorageClass;
8040 
8042  friend class AstSpecificDataManagingClass;
8043 
8045  friend class AstSpecificDataManagingClassStorageClass;
8046 
8047  public:
8049  SgSupport( const SgSupportStorageClass& source );
8050 
8051  // private: // JJW hack
8052  /*
8053  name AST Memory Allocation Support Variables
8054  Memory allocations support variables
8055 
8056  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
8057  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
8058  and support the AST File I/O Mechanism.
8059  */
8060  /* */
8061 
8062  public:
8063 
8064  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
8065  // to current node (so that it will work cleanly with build functions to specify patterns).
8066  // virtual SgNode* addRegExpAttribute();
8072  SgSupport* addRegExpAttribute(std::string s, AstRegExAttribute* a);
8073 
8074 // *** COMMON CODE SECTION ENDS HERE ***
8075 
8076 
8077 // End of memberFunctionString
8078 // Start of memberFunctionString
8079 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
8080 
8081  // the generated cast function
8082  // friend ROSE_DLL_API SgSupport* isSgSupport ( SgNode* s );
8083 
8084  typedef SgNode base_node_type;
8085 
8086 
8087 // End of memberFunctionString
8088 
8089 
8090  public:
8091  virtual ~SgSupport();
8092 
8093 
8094  public:
8095  SgSupport();
8096 
8097  protected:
8098 
8099 
8100 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
8101 
8102 
8103  };
8104 #endif
8105 
8106 // postdeclarations for SgSupport
8107 
8108 /* #line 8109 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
8109 
8110 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
8111 
8112 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
8113 
8114 
8115 /* #line 8116 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
8116 
8117 
8118 
8119 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
8120 
8121 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
8122 // This code is automatically generated for each
8123 // terminal and non-terminal within the defined
8124 // grammar. There is a simple way to change the
8125 // code to fix bugs etc. See the ROSE README file
8126 // for directions.
8127 
8128 // tps: (02/22/2010): Adding DLL export requirements
8129 #include "rosedll.h"
8130 
8131 // predeclarations for SgModifier
8132 
8133 /* #line 8134 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
8134 
8135 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
8136 
8137 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
8138 
8139 #if 1
8140 // Class Definition for SgModifier
8141 class ROSE_DLL_API SgModifier : public SgSupport
8142  {
8143  public:
8144 
8145 
8146 /* #line 8147 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
8147 
8148  virtual SgNode* copy ( SgCopyHelp& help) const override;
8149 // Start of memberFunctionString
8150 /* #line 792 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
8151 
8152  SgModifier ( const SgModifier & X );
8153  SgModifier & operator= ( const SgModifier & X );
8154 
8155  // bit handling support used by many derived classes
8156  bool checkBit ( unsigned int bit, const SgBitVector & bitVector ) const;
8157  void setBit ( unsigned int bit, SgBitVector & bitVector ) const;
8158  void unsetBit ( unsigned int bit, SgBitVector & bitVector ) const;
8159 
8160 
8161 
8162 // End of memberFunctionString
8163 // Start of memberFunctionString
8164 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
8165 
8166 // *** COMMON CODE SECTION BEGINS HERE ***
8167 
8168  public:
8169 
8170  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
8171  // and not required which is required to match the other aspects of the copy mechanism code generation.
8172  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
8173  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
8174  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
8175  // virtual SgNode* copy ( const SgCopyHelp & help) const;
8176 
8178  virtual std::string class_name() const override;
8179 
8181  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
8182 
8184  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
8185  // static const VariantT static_variant = V_SgModifier;
8186  enum { static_variant = V_SgModifier };
8187 
8188  /* the generated cast function */
8190  ROSE_DLL_API friend SgModifier* isSgModifier( SgNode * s );
8191 
8193  ROSE_DLL_API friend const SgModifier* isSgModifier( const SgNode * s );
8194 
8195  // ******************************************
8196  // * Memory Pool / New / Delete
8197  // ******************************************
8198 
8199  public:
8201  static const unsigned pool_size; //
8203  static std::vector<unsigned char *> pools; //
8205  static SgModifier * next_node; //
8206 
8208  static unsigned long initializeStorageClassArray(SgModifierStorageClass *); //
8209 
8211  static void clearMemoryPool(); //
8212  static void deleteMemoryPool(); //
8213 
8215  static void extendMemoryPoolForFileIO(); //
8216 
8218  static SgModifier * getPointerFromGlobalIndex(unsigned long); //
8220  static SgModifier * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
8221 
8223  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
8225  static void resetValidFreepointers(); //
8227  static unsigned long getNumberOfLastValidPointer(); //
8228 
8229 
8230 #if defined(INLINE_FUNCTIONS)
8231 
8232  inline void *operator new (size_t size);
8233 #else
8234 
8235  void *operator new (size_t size);
8236 #endif
8237 
8238  void operator delete (void* pointer, size_t size);
8239 
8240  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
8241  void operator delete (void* pointer)
8242  {
8243  // This is the generated delete operator...
8244  SgModifier::operator delete (pointer,sizeof(SgModifier));
8245  }
8246 
8248  static size_t numberOfNodes();
8249 
8251  static size_t memoryUsage();
8252 
8253  // End of scope which started in IR nodes specific code
8254  /* */
8255 
8256  /* name Internal Functions
8257  \brief Internal functions ... incomplete-documentation
8258 
8259  These functions have been made public as part of the design, but they are suggested for internal use
8260  or by particularly knowledgeable users for specialized tools or applications.
8261 
8262  \internal We could not make these private because they are required by user for special purposes. And
8263  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
8264 
8265  */
8266 
8267  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
8268  // overridden in every class by *generated* implementation
8270  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
8271  // MS: 06/28/02 container of names of variables or container indices
8272  // used used in the traversal to access AST successor nodes
8273  // overridden in every class by *generated* implementation
8276  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
8277 
8278  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
8279  // than all the vector copies. The implementation for these functions is generated for each class.
8281  virtual size_t get_numberOfTraversalSuccessors() override;
8283  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
8285  virtual size_t get_childIndex(SgNode *child) override;
8286 
8287 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
8288  // MS: 08/16/2002 method for generating RTI information
8290  virtual RTIReturnType roseRTI() override;
8291 #endif
8292  /* */
8293 
8294 
8295 
8296  /* name Deprecated Functions
8297  \brief Deprecated functions ... incomplete-documentation
8298 
8299  These functions have been deprecated from use.
8300  */
8301  /* */
8302 
8304  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
8305 
8306  // JJW (10/16/2008): Changed to a single function in Node.code, and put
8307  // getVariant() in #if 0 block to prevent confusing Doxygen
8308 #if 0
8309 
8310  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
8312  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
8313 #endif
8314  /* */
8315 
8316 
8317 
8318 
8319  public:
8320  /* name Traversal Support Functions
8321  \brief Traversal support functions ... incomplete-documentation
8322 
8323  These functions have been made public as part of the design, but they are suggested for internal use
8324  or by particularly knowledgable users for specialized tools or applications.
8325  */
8326  /* */
8327 
8328  // DQ (11/26/2005): Support for visitor pattern mechanims
8329  // (inferior to ROSE traversal mechanism, experimental).
8333 
8334  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
8336  virtual void accept (ROSE_VisitorPattern & visitor) override;
8337 
8338  // DQ (12/26/2005): Support for traversal based on the memory pool
8341  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
8342 
8346 
8347  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
8348  // This traversal helps support internal tools that call static member functions.
8349  // note: this function operates on the memory pools.
8352  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
8353  /* */
8354 
8355 
8356  public:
8357  /* name Memory Allocation Functions
8358  \brief Memory allocations functions ... incomplete-documentation
8359 
8360  These functions have been made public as part of the design, but they are suggested for internal use
8361  or by particularly knowledgable users for specialized tools or applications.
8362  */
8363  /* */
8364 
8375  virtual bool isInMemoryPool() override;
8376 
8387  virtual void checkDataMemberPointersIfInMemoryPool() override;
8388 
8389  // DQ (4/30/2006): Modified to be a const function.
8404  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
8405 
8415  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
8416 
8428  virtual long getChildIndex( SgNode* childNode ) const override;
8429 
8430  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
8431  // comment here (changed to be a C style comment and not be a doxygen comment).
8432  /* \brief Constructor for use by AST File I/O Mechanism
8433 
8434  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
8435  which obtained via fast binary file I/O from disk.
8436  */
8437  // SgModifier( SgModifierStorageClass& source );
8438 
8439 
8440 
8441 
8442 
8443  // JH (10/24/2005): methods added to support the ast file IO
8444  private:
8445 
8446  /* name AST Memory Allocation Support Functions
8447  \brief Memory allocations support....
8448 
8449  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
8450  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
8451  and support the AST File I/O Mechanism.
8452  */
8453  /* */
8454 
8455  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
8456  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
8457  that I use the same type everywhere, if any changes are made. THe second one declares the type
8458  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
8459  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
8460  a correspinding one in the AST_FILE_IO class!
8461  */
8462  // DQ (9/2/2015): This typedef is no longer used, we can't define the
8463  // comment here (changed to be a C style comment and not be a doxygen comment).
8464  /* \brief Typedef used for low level memory access.
8465  */
8466  // typedef unsigned char* TestType;
8467 
8468  // DQ (9/2/2015): This typedef is no longer used, we can't define the
8469  // comment here (changed to be a C style comment and not be a doxygen comment).
8470  /* \brief Typedef used to hold memory addresses as values.
8471  */
8472  // typedef unsigned long AddressType;
8473 
8474 
8475 
8476  // necessary, to have direct access to the p_freepointer and the private methods !
8478  friend class AST_FILE_IO;
8479 
8481  friend class SgModifierStorageClass;
8482 
8484  friend class AstSpecificDataManagingClass;
8485 
8487  friend class AstSpecificDataManagingClassStorageClass;
8488 
8489  public:
8491  SgModifier( const SgModifierStorageClass& source );
8492 
8493  // private: // JJW hack
8494  /*
8495  name AST Memory Allocation Support Variables
8496  Memory allocations support variables
8497 
8498  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
8499  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
8500  and support the AST File I/O Mechanism.
8501  */
8502  /* */
8503 
8504  public:
8505 
8506  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
8507  // to current node (so that it will work cleanly with build functions to specify patterns).
8508  // virtual SgNode* addRegExpAttribute();
8514  SgModifier* addRegExpAttribute(std::string s, AstRegExAttribute* a);
8515 
8516 // *** COMMON CODE SECTION ENDS HERE ***
8517 
8518 
8519 // End of memberFunctionString
8520 // Start of memberFunctionString
8521 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
8522 
8523  // the generated cast function
8524  // friend ROSE_DLL_API SgModifier* isSgModifier ( SgNode* s );
8525 
8526  typedef SgSupport base_node_type;
8527 
8528 
8529 // End of memberFunctionString
8530 
8531 
8532  public:
8533  virtual ~SgModifier();
8534 
8535 
8536  public:
8537  SgModifier();
8538 
8539  protected:
8540 
8541 
8542 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
8543 
8544 
8545  };
8546 #endif
8547 
8548 // postdeclarations for SgModifier
8549 
8550 /* #line 8551 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
8551 
8552 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
8553 
8554 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
8555 
8556 
8557 /* #line 8558 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
8558 
8559 
8560 
8561 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
8562 
8563 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
8564 // This code is automatically generated for each
8565 // terminal and non-terminal within the defined
8566 // grammar. There is a simple way to change the
8567 // code to fix bugs etc. See the ROSE README file
8568 // for directions.
8569 
8570 // tps: (02/22/2010): Adding DLL export requirements
8571 #include "rosedll.h"
8572 
8573 // predeclarations for SgModifierNodes
8574 
8575 /* #line 8576 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
8576 
8577 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
8578 
8579 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
8580 
8581 #if 1
8582 // Class Definition for SgModifierNodes
8583 class ROSE_DLL_API SgModifierNodes : public SgModifier
8584  {
8585  public:
8586 
8587 
8588 /* #line 8589 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
8589 
8590  virtual SgNode* copy ( SgCopyHelp& help) const override;
8591 // Start of memberFunctionString
8592 /* #line 804 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
8593 
8594  SgModifierNodes();
8595  // ~SgModifierNodes();
8596 
8597  void post_construction_initialization() override;
8598 
8599  // DQ (2/12/2007): This function is not used.
8600  // SgModifierType* match(SgType*, unsigned int);
8601 
8602  // DQ (2/4/2006): Added mechamism to clear all bits
8603  // void reset();
8604 
8605 
8606 
8607 // End of memberFunctionString
8608 // Start of memberFunctionString
8609 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
8610 
8611 // *** COMMON CODE SECTION BEGINS HERE ***
8612 
8613  public:
8614 
8615  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
8616  // and not required which is required to match the other aspects of the copy mechanism code generation.
8617  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
8618  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
8619  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
8620  // virtual SgNode* copy ( const SgCopyHelp & help) const;
8621 
8623  virtual std::string class_name() const override;
8624 
8626  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
8627 
8629  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
8630  // static const VariantT static_variant = V_SgModifierNodes;
8631  enum { static_variant = V_SgModifierNodes };
8632 
8633  /* the generated cast function */
8635  ROSE_DLL_API friend SgModifierNodes* isSgModifierNodes( SgNode * s );
8636 
8638  ROSE_DLL_API friend const SgModifierNodes* isSgModifierNodes( const SgNode * s );
8639 
8640  // ******************************************
8641  // * Memory Pool / New / Delete
8642  // ******************************************
8643 
8644  public:
8646  static const unsigned pool_size; //
8648  static std::vector<unsigned char *> pools; //
8650  static SgModifierNodes * next_node; //
8651 
8653  static unsigned long initializeStorageClassArray(SgModifierNodesStorageClass *); //
8654 
8656  static void clearMemoryPool(); //
8657  static void deleteMemoryPool(); //
8658 
8660  static void extendMemoryPoolForFileIO(); //
8661 
8663  static SgModifierNodes * getPointerFromGlobalIndex(unsigned long); //
8665  static SgModifierNodes * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
8666 
8668  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
8670  static void resetValidFreepointers(); //
8672  static unsigned long getNumberOfLastValidPointer(); //
8673 
8674 
8675 #if defined(INLINE_FUNCTIONS)
8676 
8677  inline void *operator new (size_t size);
8678 #else
8679 
8680  void *operator new (size_t size);
8681 #endif
8682 
8683  void operator delete (void* pointer, size_t size);
8684 
8685  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
8686  void operator delete (void* pointer)
8687  {
8688  // This is the generated delete operator...
8689  SgModifierNodes::operator delete (pointer,sizeof(SgModifierNodes));
8690  }
8691 
8693  static size_t numberOfNodes();
8694 
8696  static size_t memoryUsage();
8697 
8698  // End of scope which started in IR nodes specific code
8699  /* */
8700 
8701  /* name Internal Functions
8702  \brief Internal functions ... incomplete-documentation
8703 
8704  These functions have been made public as part of the design, but they are suggested for internal use
8705  or by particularly knowledgeable users for specialized tools or applications.
8706 
8707  \internal We could not make these private because they are required by user for special purposes. And
8708  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
8709 
8710  */
8711 
8712  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
8713  // overridden in every class by *generated* implementation
8715  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
8716  // MS: 06/28/02 container of names of variables or container indices
8717  // used used in the traversal to access AST successor nodes
8718  // overridden in every class by *generated* implementation
8721  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
8722 
8723  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
8724  // than all the vector copies. The implementation for these functions is generated for each class.
8726  virtual size_t get_numberOfTraversalSuccessors() override;
8728  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
8730  virtual size_t get_childIndex(SgNode *child) override;
8731 
8732 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
8733  // MS: 08/16/2002 method for generating RTI information
8735  virtual RTIReturnType roseRTI() override;
8736 #endif
8737  /* */
8738 
8739 
8740 
8741  /* name Deprecated Functions
8742  \brief Deprecated functions ... incomplete-documentation
8743 
8744  These functions have been deprecated from use.
8745  */
8746  /* */
8747 
8749  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
8750 
8751  // JJW (10/16/2008): Changed to a single function in Node.code, and put
8752  // getVariant() in #if 0 block to prevent confusing Doxygen
8753 #if 0
8754 
8755  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
8757  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
8758 #endif
8759  /* */
8760 
8761 
8762 
8763 
8764  public:
8765  /* name Traversal Support Functions
8766  \brief Traversal support functions ... incomplete-documentation
8767 
8768  These functions have been made public as part of the design, but they are suggested for internal use
8769  or by particularly knowledgable users for specialized tools or applications.
8770  */
8771  /* */
8772 
8773  // DQ (11/26/2005): Support for visitor pattern mechanims
8774  // (inferior to ROSE traversal mechanism, experimental).
8778 
8779  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
8781  virtual void accept (ROSE_VisitorPattern & visitor) override;
8782 
8783  // DQ (12/26/2005): Support for traversal based on the memory pool
8786  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
8787 
8791 
8792  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
8793  // This traversal helps support internal tools that call static member functions.
8794  // note: this function operates on the memory pools.
8797  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
8798  /* */
8799 
8800 
8801  public:
8802  /* name Memory Allocation Functions
8803  \brief Memory allocations functions ... incomplete-documentation
8804 
8805  These functions have been made public as part of the design, but they are suggested for internal use
8806  or by particularly knowledgable users for specialized tools or applications.
8807  */
8808  /* */
8809 
8820  virtual bool isInMemoryPool() override;
8821 
8832  virtual void checkDataMemberPointersIfInMemoryPool() override;
8833 
8834  // DQ (4/30/2006): Modified to be a const function.
8849  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
8850 
8860  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
8861 
8873  virtual long getChildIndex( SgNode* childNode ) const override;
8874 
8875  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
8876  // comment here (changed to be a C style comment and not be a doxygen comment).
8877  /* \brief Constructor for use by AST File I/O Mechanism
8878 
8879  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
8880  which obtained via fast binary file I/O from disk.
8881  */
8882  // SgModifierNodes( SgModifierNodesStorageClass& source );
8883 
8884 
8885 
8886 
8887 
8888  // JH (10/24/2005): methods added to support the ast file IO
8889  private:
8890 
8891  /* name AST Memory Allocation Support Functions
8892  \brief Memory allocations support....
8893 
8894  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
8895  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
8896  and support the AST File I/O Mechanism.
8897  */
8898  /* */
8899 
8900  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
8901  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
8902  that I use the same type everywhere, if any changes are made. THe second one declares the type
8903  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
8904  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
8905  a correspinding one in the AST_FILE_IO class!
8906  */
8907  // DQ (9/2/2015): This typedef is no longer used, we can't define the
8908  // comment here (changed to be a C style comment and not be a doxygen comment).
8909  /* \brief Typedef used for low level memory access.
8910  */
8911  // typedef unsigned char* TestType;
8912 
8913  // DQ (9/2/2015): This typedef is no longer used, we can't define the
8914  // comment here (changed to be a C style comment and not be a doxygen comment).
8915  /* \brief Typedef used to hold memory addresses as values.
8916  */
8917  // typedef unsigned long AddressType;
8918 
8919 
8920 
8921  // necessary, to have direct access to the p_freepointer and the private methods !
8923  friend class AST_FILE_IO;
8924 
8926  friend class SgModifierNodesStorageClass;
8927 
8929  friend class AstSpecificDataManagingClass;
8930 
8932  friend class AstSpecificDataManagingClassStorageClass;
8933 
8934  public:
8936  SgModifierNodes( const SgModifierNodesStorageClass& source );
8937 
8938  // private: // JJW hack
8939  /*
8940  name AST Memory Allocation Support Variables
8941  Memory allocations support variables
8942 
8943  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
8944  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
8945  and support the AST File I/O Mechanism.
8946  */
8947  /* */
8948 
8949  public:
8950 
8951  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
8952  // to current node (so that it will work cleanly with build functions to specify patterns).
8953  // virtual SgNode* addRegExpAttribute();
8960 
8961 // *** COMMON CODE SECTION ENDS HERE ***
8962 
8963 
8964 // End of memberFunctionString
8965 // Start of memberFunctionString
8966 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
8967 
8968  // the generated cast function
8969  // friend ROSE_DLL_API SgModifierNodes* isSgModifierNodes ( SgNode* s );
8970 
8971  typedef SgModifier base_node_type;
8972 
8973 
8974 // End of memberFunctionString
8975 
8976  public:
8977  SgModifierTypePtrVector get_nodes() const;
8978  void set_nodes(SgModifierTypePtrVector nodes);
8979 
8980  public:
8981  SgModifierNodes* get_next() const;
8982  void set_next(SgModifierNodes* next);
8983 
8984 
8985  public:
8986  virtual ~SgModifierNodes();
8987 
8988  protected:
8989 // Start of memberFunctionString
8990 SgModifierTypePtrVector p_nodes;
8991 
8992 // End of memberFunctionString
8993 // Start of memberFunctionString
8994 SgModifierNodes* p_next;
8995 
8996 // End of memberFunctionString
8997 
8998 
8999 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
9000 
9001 
9002  };
9003 #endif
9004 
9005 // postdeclarations for SgModifierNodes
9006 
9007 /* #line 9008 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
9008 
9009 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
9010 
9011 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
9012 
9013 
9014 /* #line 9015 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
9015 
9016 
9017 
9018 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
9019 
9020 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
9021 // This code is automatically generated for each
9022 // terminal and non-terminal within the defined
9023 // grammar. There is a simple way to change the
9024 // code to fix bugs etc. See the ROSE README file
9025 // for directions.
9026 
9027 // tps: (02/22/2010): Adding DLL export requirements
9028 #include "rosedll.h"
9029 
9030 // predeclarations for SgConstVolatileModifier
9031 
9032 /* #line 9033 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
9033 
9034 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
9035 
9036 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
9037 
9038 #if 1
9039 // Class Definition for SgConstVolatileModifier
9040 class ROSE_DLL_API SgConstVolatileModifier : public SgModifier
9041  {
9042  public:
9043 
9044 
9045 /* #line 9046 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
9046 
9047  virtual SgNode* copy ( SgCopyHelp& help) const override;
9048 // Start of memberFunctionString
9049 /* #line 818 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
9050 
9051 
9052  // const_volatile specifiers (const, volatile)
9053 
9061  {
9068  e_last_modifier
9069  };
9070 
9071  // Copy constructor
9073 
9074  // Assignment Operator
9076 
9077  void post_construction_initialization() override;
9078 
9079  bool isUnknown() const;
9080  void setUnknown();
9081 
9082  // DQ (3/21/2005): the default setting is non-const and non-volatile
9083  bool isDefault() const;
9084  void setDefault();
9085 
9086  bool isConst() const;
9087  void setConst();
9088 
9089  // DQ (3/21/2005): We could have a design with no unset function since the cv data is not a bit vector
9090  // the design reflects that a CV modifier is either const or volatile or neither.
9091  // Thus unsetting const would be to set the default value.
9092  void unsetConst();
9093 
9094  bool isVolatile() const;
9095  void setVolatile();
9096  // DQ (3/21/2005): See comment for unsetConst() above
9097  void unsetVolatile();
9098 
9099  std::string displayString() const;
9100  void display ( std::string label ) const;
9101  friend std::ostream & operator<< ( std::ostream & os, const SgConstVolatileModifier & m );
9102  friend bool operator== (const SgConstVolatileModifier& lhs, const SgConstVolatileModifier& rhs);
9103 
9104  // DQ (2/4/2006): Added mechamism to clear all bits
9105  void reset();
9106 
9107 
9108 
9109 // End of memberFunctionString
9110 // Start of memberFunctionString
9111 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
9112 
9113 // *** COMMON CODE SECTION BEGINS HERE ***
9114 
9115  public:
9116 
9117  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
9118  // and not required which is required to match the other aspects of the copy mechanism code generation.
9119  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
9120  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
9121  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
9122  // virtual SgNode* copy ( const SgCopyHelp & help) const;
9123 
9125  virtual std::string class_name() const override;
9126 
9128  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
9129 
9131  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
9132  // static const VariantT static_variant = V_SgConstVolatileModifier;
9133  enum { static_variant = V_SgConstVolatileModifier };
9134 
9135  /* the generated cast function */
9137  ROSE_DLL_API friend SgConstVolatileModifier* isSgConstVolatileModifier( SgNode * s );
9138 
9140  ROSE_DLL_API friend const SgConstVolatileModifier* isSgConstVolatileModifier( const SgNode * s );
9141 
9142  // ******************************************
9143  // * Memory Pool / New / Delete
9144  // ******************************************
9145 
9146  public:
9148  static const unsigned pool_size; //
9150  static std::vector<unsigned char *> pools; //
9152  static SgConstVolatileModifier * next_node; //
9153 
9155  static unsigned long initializeStorageClassArray(SgConstVolatileModifierStorageClass *); //
9156 
9158  static void clearMemoryPool(); //
9159  static void deleteMemoryPool(); //
9160 
9162  static void extendMemoryPoolForFileIO(); //
9163 
9165  static SgConstVolatileModifier * getPointerFromGlobalIndex(unsigned long); //
9167  static SgConstVolatileModifier * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
9168 
9170  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
9172  static void resetValidFreepointers(); //
9174  static unsigned long getNumberOfLastValidPointer(); //
9175 
9176 
9177 #if defined(INLINE_FUNCTIONS)
9178 
9179  inline void *operator new (size_t size);
9180 #else
9181 
9182  void *operator new (size_t size);
9183 #endif
9184 
9185  void operator delete (void* pointer, size_t size);
9186 
9187  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
9188  void operator delete (void* pointer)
9189  {
9190  // This is the generated delete operator...
9191  SgConstVolatileModifier::operator delete (pointer,sizeof(SgConstVolatileModifier));
9192  }
9193 
9195  static size_t numberOfNodes();
9196 
9198  static size_t memoryUsage();
9199 
9200  // End of scope which started in IR nodes specific code
9201  /* */
9202 
9203  /* name Internal Functions
9204  \brief Internal functions ... incomplete-documentation
9205 
9206  These functions have been made public as part of the design, but they are suggested for internal use
9207  or by particularly knowledgeable users for specialized tools or applications.
9208 
9209  \internal We could not make these private because they are required by user for special purposes. And
9210  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
9211 
9212  */
9213 
9214  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
9215  // overridden in every class by *generated* implementation
9217  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
9218  // MS: 06/28/02 container of names of variables or container indices
9219  // used used in the traversal to access AST successor nodes
9220  // overridden in every class by *generated* implementation
9223  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
9224 
9225  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
9226  // than all the vector copies. The implementation for these functions is generated for each class.
9228  virtual size_t get_numberOfTraversalSuccessors() override;
9230  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
9232  virtual size_t get_childIndex(SgNode *child) override;
9233 
9234 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
9235  // MS: 08/16/2002 method for generating RTI information
9237  virtual RTIReturnType roseRTI() override;
9238 #endif
9239  /* */
9240 
9241 
9242 
9243  /* name Deprecated Functions
9244  \brief Deprecated functions ... incomplete-documentation
9245 
9246  These functions have been deprecated from use.
9247  */
9248  /* */
9249 
9251  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
9252 
9253  // JJW (10/16/2008): Changed to a single function in Node.code, and put
9254  // getVariant() in #if 0 block to prevent confusing Doxygen
9255 #if 0
9256 
9257  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
9259  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
9260 #endif
9261  /* */
9262 
9263 
9264 
9265 
9266  public:
9267  /* name Traversal Support Functions
9268  \brief Traversal support functions ... incomplete-documentation
9269 
9270  These functions have been made public as part of the design, but they are suggested for internal use
9271  or by particularly knowledgable users for specialized tools or applications.
9272  */
9273  /* */
9274 
9275  // DQ (11/26/2005): Support for visitor pattern mechanims
9276  // (inferior to ROSE traversal mechanism, experimental).
9280 
9281  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
9283  virtual void accept (ROSE_VisitorPattern & visitor) override;
9284 
9285  // DQ (12/26/2005): Support for traversal based on the memory pool
9288  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
9289 
9293 
9294  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
9295  // This traversal helps support internal tools that call static member functions.
9296  // note: this function operates on the memory pools.
9299  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
9300  /* */
9301 
9302 
9303  public:
9304  /* name Memory Allocation Functions
9305  \brief Memory allocations functions ... incomplete-documentation
9306 
9307  These functions have been made public as part of the design, but they are suggested for internal use
9308  or by particularly knowledgable users for specialized tools or applications.
9309  */
9310  /* */
9311 
9322  virtual bool isInMemoryPool() override;
9323 
9334  virtual void checkDataMemberPointersIfInMemoryPool() override;
9335 
9336  // DQ (4/30/2006): Modified to be a const function.
9351  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
9352 
9362  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
9363 
9375  virtual long getChildIndex( SgNode* childNode ) const override;
9376 
9377  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
9378  // comment here (changed to be a C style comment and not be a doxygen comment).
9379  /* \brief Constructor for use by AST File I/O Mechanism
9380 
9381  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
9382  which obtained via fast binary file I/O from disk.
9383  */
9384  // SgConstVolatileModifier( SgConstVolatileModifierStorageClass& source );
9385 
9386 
9387 
9388 
9389 
9390  // JH (10/24/2005): methods added to support the ast file IO
9391  private:
9392 
9393  /* name AST Memory Allocation Support Functions
9394  \brief Memory allocations support....
9395 
9396  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
9397  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
9398  and support the AST File I/O Mechanism.
9399  */
9400  /* */
9401 
9402  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
9403  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
9404  that I use the same type everywhere, if any changes are made. THe second one declares the type
9405  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
9406  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
9407  a correspinding one in the AST_FILE_IO class!
9408  */
9409  // DQ (9/2/2015): This typedef is no longer used, we can't define the
9410  // comment here (changed to be a C style comment and not be a doxygen comment).
9411  /* \brief Typedef used for low level memory access.
9412  */
9413  // typedef unsigned char* TestType;
9414 
9415  // DQ (9/2/2015): This typedef is no longer used, we can't define the
9416  // comment here (changed to be a C style comment and not be a doxygen comment).
9417  /* \brief Typedef used to hold memory addresses as values.
9418  */
9419  // typedef unsigned long AddressType;
9420 
9421 
9422 
9423  // necessary, to have direct access to the p_freepointer and the private methods !
9425  friend class AST_FILE_IO;
9426 
9428  friend class SgConstVolatileModifierStorageClass;
9429 
9431  friend class AstSpecificDataManagingClass;
9432 
9434  friend class AstSpecificDataManagingClassStorageClass;
9435 
9436  public:
9438  SgConstVolatileModifier( const SgConstVolatileModifierStorageClass& source );
9439 
9440  // private: // JJW hack
9441  /*
9442  name AST Memory Allocation Support Variables
9443  Memory allocations support variables
9444 
9445  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
9446  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
9447  and support the AST File I/O Mechanism.
9448  */
9449  /* */
9450 
9451  public:
9452 
9453  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
9454  // to current node (so that it will work cleanly with build functions to specify patterns).
9455  // virtual SgNode* addRegExpAttribute();
9462 
9463 // *** COMMON CODE SECTION ENDS HERE ***
9464 
9465 
9466 // End of memberFunctionString
9467 // Start of memberFunctionString
9468 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
9469 
9470  // the generated cast function
9471  // friend ROSE_DLL_API SgConstVolatileModifier* isSgConstVolatileModifier ( SgNode* s );
9472 
9473  typedef SgModifier base_node_type;
9474 
9475 
9476 // End of memberFunctionString
9477 
9478  public:
9479  SgConstVolatileModifier::cv_modifier_enum get_modifier() const;
9480  void set_modifier(SgConstVolatileModifier::cv_modifier_enum modifier);
9481 
9482 
9483  public:
9484  virtual ~SgConstVolatileModifier();
9485 
9486 
9487  public:
9489 
9490  protected:
9491 // Start of memberFunctionString
9493 
9494 // End of memberFunctionString
9495 
9496 
9497 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
9498 
9499 
9500  };
9501 #endif
9502 
9503 // postdeclarations for SgConstVolatileModifier
9504 
9505 /* #line 9506 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
9506 
9507 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
9508 
9509 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
9510 
9511 
9512 /* #line 9513 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
9513 
9514 
9515 
9516 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
9517 
9518 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
9519 // This code is automatically generated for each
9520 // terminal and non-terminal within the defined
9521 // grammar. There is a simple way to change the
9522 // code to fix bugs etc. See the ROSE README file
9523 // for directions.
9524 
9525 // tps: (02/22/2010): Adding DLL export requirements
9526 #include "rosedll.h"
9527 
9528 // predeclarations for SgStorageModifier
9529 
9530 /* #line 9531 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
9531 
9532 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
9533 
9534 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
9535 
9536 #if 1
9537 // Class Definition for SgStorageModifier
9538 class ROSE_DLL_API SgStorageModifier : public SgModifier
9539  {
9540  public:
9541 
9542 
9543 /* #line 9544 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
9544 
9545  virtual SgNode* copy ( SgCopyHelp& help) const override;
9546 // Start of memberFunctionString
9547 /* #line 877 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
9548 
9549 
9550  // storage specifiers (auto, static, register, extern, mutable)
9551 
9552  // C++ grammar defines storage modifier to be only: auto, static, register, extern, mutable
9553 
9554  // DQ (4/6/2004): Added to provide uniform support for storage modifiers
9565  {
9566  e_unknown = 0,
9567  e_default = 1,
9568  e_extern = 2,
9569  e_static = 3,
9570  e_auto = 4,
9571  e_unspecified = 5,
9572  e_register = 6,
9573  e_mutable = 7,
9574  e_typedef = 8,
9575  e_asm = 9,
9576 #ifdef FORTRAN_SUPPORTED
9577  // included for later FORTRAN support
9578  e_local = 10,
9579  e_common = 11,
9580  e_associated = 12,
9581  e_intrinsic = 13,
9582  e_pointer_based = 14,
9583 #endif
9584 
9585  // Rasmussen (02/04/2018): Fortran contiguous array storage attribute
9586  e_contiguous = 15,
9588  // TV (04/08/2010): Support for CUDA storage modifiers
9589  e_cuda_global = 16,
9590  e_cuda_constant = 17,
9591  e_cuda_shared = 18,
9592  e_cuda_dynamic_shared = 19,
9594  // Rasmussen (03/13/2018): New CUDA storage modifiers
9595  e_cuda_device_memory = 20,
9596  e_cuda_managed = 21,
9597  e_cuda_pinned = 22,
9598  e_cuda_texture = 23,
9600  e_last_modifier
9601  };
9602 
9603  // Copy constructor
9604  SgStorageModifier ( const SgStorageModifier & X );
9605 
9606  // Assignment Operator
9608 
9609  void post_construction_initialization() override;
9610 
9611  bool isUnknown() const;
9612  void setUnknown();
9613 
9614  bool isDefault() const;
9615  void setDefault();
9616 
9617  bool isExtern() const;
9618  void setExtern();
9619 
9620  bool isStatic() const;
9621  void setStatic();
9622 
9623  bool isAuto() const;
9624  void setAuto();
9625 
9626  bool isUnspecified() const;
9627  void setUnspecified();
9628 
9629  bool isRegister() const;
9630  void setRegister();
9631 
9632  bool isMutable() const;
9633  void setMutable();
9634 
9635  // This is not used (but is present in the EDG AST)
9636  bool isTypedef() const;
9637  void setTypedef();
9638 
9639  // This is not used (but is present in the EDG AST)
9640  bool isAsm() const;
9641  void setAsm();
9642 
9643 #if 0
9644  // DQ (11/18/2007): We store this information differently now!
9645 #ifdef FORTRAN_SUPPORTED
9646  // These remaining access functions are specific to FORTRAN
9647  bool isLocal() const;
9648  void setLocal();
9649 
9650  bool isCommon() const;
9651  void setCommon();
9652 
9653  bool isAssociated() const;
9654  void setAssociated();
9655 
9656  bool isIntrinsic() const;
9657  void setIntrinsic();
9658 
9659  bool isPointerBased() const;
9660  void setPointerBased();
9661 #endif
9662 #endif
9663 
9664  // Rasmussen (02/06/2018): Fortran contiguous array storage attribute
9665  bool isContiguous() const;
9666  void setContiguous();
9667 
9668  // TV (04/08/2010): Support for CUDA storage modifiers
9669 
9670  bool isCudaGlobal() const;
9671  void setCudaGlobal();
9672 
9673  bool isCudaConstant() const;
9674  void setCudaConstant();
9675 
9676  bool isCudaShared() const;
9677  void setCudaShared();
9678 
9679  bool isCudaDynamicShared() const;
9680  void setCudaDynamicShared();
9681 
9682  // Rasmussen (03/13/2018): New CUDA storage modifiers
9683 
9684  bool isCudaDeviceMemory() const;
9685  void setCudaDeviceMemory();
9686 
9687  bool isCudaManaged() const;
9688  void setCudaManaged();
9689 
9690  bool isCudaPinned() const;
9691  void setCudaPinned();
9692 
9693  bool isCudaTexture() const;
9694  void setCudaTexture();
9695 
9696  std::string displayString() const;
9697  void display ( std::string label ) const;
9698  friend std::ostream & operator<< ( std::ostream & os, const SgStorageModifier & m );
9699  friend bool operator== (const SgStorageModifier& lhs, const SgStorageModifier& rhs);
9700 
9701  // DQ (2/4/2006): Added mechamism to clear all bits
9702  void reset();
9703 
9704 
9705 
9706 // End of memberFunctionString
9707 // Start of memberFunctionString
9708 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
9709 
9710 // *** COMMON CODE SECTION BEGINS HERE ***
9711 
9712  public:
9713 
9714  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
9715  // and not required which is required to match the other aspects of the copy mechanism code generation.
9716  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
9717  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
9718  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
9719  // virtual SgNode* copy ( const SgCopyHelp & help) const;
9720 
9722  virtual std::string class_name() const override;
9723 
9725  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
9726 
9728  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
9729  // static const VariantT static_variant = V_SgStorageModifier;
9730  enum { static_variant = V_SgStorageModifier };
9731 
9732  /* the generated cast function */
9734  ROSE_DLL_API friend SgStorageModifier* isSgStorageModifier( SgNode * s );
9735 
9737  ROSE_DLL_API friend const SgStorageModifier* isSgStorageModifier( const SgNode * s );
9738 
9739  // ******************************************
9740  // * Memory Pool / New / Delete
9741  // ******************************************
9742 
9743  public:
9745  static const unsigned pool_size; //
9747  static std::vector<unsigned char *> pools; //
9749  static SgStorageModifier * next_node; //
9750 
9752  static unsigned long initializeStorageClassArray(SgStorageModifierStorageClass *); //
9753 
9755  static void clearMemoryPool(); //
9756  static void deleteMemoryPool(); //
9757 
9759  static void extendMemoryPoolForFileIO(); //
9760 
9762  static SgStorageModifier * getPointerFromGlobalIndex(unsigned long); //
9764  static SgStorageModifier * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
9765 
9767  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
9769  static void resetValidFreepointers(); //
9771  static unsigned long getNumberOfLastValidPointer(); //
9772 
9773 
9774 #if defined(INLINE_FUNCTIONS)
9775 
9776  inline void *operator new (size_t size);
9777 #else
9778 
9779  void *operator new (size_t size);
9780 #endif
9781 
9782  void operator delete (void* pointer, size_t size);
9783 
9784  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
9785  void operator delete (void* pointer)
9786  {
9787  // This is the generated delete operator...
9788  SgStorageModifier::operator delete (pointer,sizeof(SgStorageModifier));
9789  }
9790 
9792  static size_t numberOfNodes();
9793 
9795  static size_t memoryUsage();
9796 
9797  // End of scope which started in IR nodes specific code
9798  /* */
9799 
9800  /* name Internal Functions
9801  \brief Internal functions ... incomplete-documentation
9802 
9803  These functions have been made public as part of the design, but they are suggested for internal use
9804  or by particularly knowledgeable users for specialized tools or applications.
9805 
9806  \internal We could not make these private because they are required by user for special purposes. And
9807  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
9808 
9809  */
9810 
9811  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
9812  // overridden in every class by *generated* implementation
9814  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
9815  // MS: 06/28/02 container of names of variables or container indices
9816  // used used in the traversal to access AST successor nodes
9817  // overridden in every class by *generated* implementation
9820  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
9821 
9822  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
9823  // than all the vector copies. The implementation for these functions is generated for each class.
9825  virtual size_t get_numberOfTraversalSuccessors() override;
9827  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
9829  virtual size_t get_childIndex(SgNode *child) override;
9830 
9831 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
9832  // MS: 08/16/2002 method for generating RTI information
9834  virtual RTIReturnType roseRTI() override;
9835 #endif
9836  /* */
9837 
9838 
9839 
9840  /* name Deprecated Functions
9841  \brief Deprecated functions ... incomplete-documentation
9842 
9843  These functions have been deprecated from use.
9844  */
9845  /* */
9846 
9848  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
9849 
9850  // JJW (10/16/2008): Changed to a single function in Node.code, and put
9851  // getVariant() in #if 0 block to prevent confusing Doxygen
9852 #if 0
9853 
9854  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
9856  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
9857 #endif
9858  /* */
9859 
9860 
9861 
9862 
9863  public:
9864  /* name Traversal Support Functions
9865  \brief Traversal support functions ... incomplete-documentation
9866 
9867  These functions have been made public as part of the design, but they are suggested for internal use
9868  or by particularly knowledgable users for specialized tools or applications.
9869  */
9870  /* */
9871 
9872  // DQ (11/26/2005): Support for visitor pattern mechanims
9873  // (inferior to ROSE traversal mechanism, experimental).
9877 
9878  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
9880  virtual void accept (ROSE_VisitorPattern & visitor) override;
9881 
9882  // DQ (12/26/2005): Support for traversal based on the memory pool
9885  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
9886 
9890 
9891  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
9892  // This traversal helps support internal tools that call static member functions.
9893  // note: this function operates on the memory pools.
9896  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
9897  /* */
9898 
9899 
9900  public:
9901  /* name Memory Allocation Functions
9902  \brief Memory allocations functions ... incomplete-documentation
9903 
9904  These functions have been made public as part of the design, but they are suggested for internal use
9905  or by particularly knowledgable users for specialized tools or applications.
9906  */
9907  /* */
9908 
9919  virtual bool isInMemoryPool() override;
9920 
9931  virtual void checkDataMemberPointersIfInMemoryPool() override;
9932 
9933  // DQ (4/30/2006): Modified to be a const function.
9948  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
9949 
9959  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
9960 
9972  virtual long getChildIndex( SgNode* childNode ) const override;
9973 
9974  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
9975  // comment here (changed to be a C style comment and not be a doxygen comment).
9976  /* \brief Constructor for use by AST File I/O Mechanism
9977 
9978  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
9979  which obtained via fast binary file I/O from disk.
9980  */
9981  // SgStorageModifier( SgStorageModifierStorageClass& source );
9982 
9983 
9984 
9985 
9986 
9987  // JH (10/24/2005): methods added to support the ast file IO
9988  private:
9989 
9990  /* name AST Memory Allocation Support Functions
9991  \brief Memory allocations support....
9992 
9993  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
9994  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
9995  and support the AST File I/O Mechanism.
9996  */
9997  /* */
9998 
9999  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
10000  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
10001  that I use the same type everywhere, if any changes are made. THe second one declares the type
10002  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
10003  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
10004  a correspinding one in the AST_FILE_IO class!
10005  */
10006  // DQ (9/2/2015): This typedef is no longer used, we can't define the
10007  // comment here (changed to be a C style comment and not be a doxygen comment).
10008  /* \brief Typedef used for low level memory access.
10009  */
10010  // typedef unsigned char* TestType;
10011 
10012  // DQ (9/2/2015): This typedef is no longer used, we can't define the
10013  // comment here (changed to be a C style comment and not be a doxygen comment).
10014  /* \brief Typedef used to hold memory addresses as values.
10015  */
10016  // typedef unsigned long AddressType;
10017 
10018 
10019 
10020  // necessary, to have direct access to the p_freepointer and the private methods !
10022  friend class AST_FILE_IO;
10023 
10025  friend class SgStorageModifierStorageClass;
10026 
10028  friend class AstSpecificDataManagingClass;
10029 
10031  friend class AstSpecificDataManagingClassStorageClass;
10032 
10033  public:
10035  SgStorageModifier( const SgStorageModifierStorageClass& source );
10036 
10037  // private: // JJW hack
10038  /*
10039  name AST Memory Allocation Support Variables
10040  Memory allocations support variables
10041 
10042  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
10043  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
10044  and support the AST File I/O Mechanism.
10045  */
10046  /* */
10047 
10048  public:
10049 
10050  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
10051  // to current node (so that it will work cleanly with build functions to specify patterns).
10052  // virtual SgNode* addRegExpAttribute();
10059 
10060 // *** COMMON CODE SECTION ENDS HERE ***
10061 
10062 
10063 // End of memberFunctionString
10064 // Start of memberFunctionString
10065 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
10066 
10067  // the generated cast function
10068  // friend ROSE_DLL_API SgStorageModifier* isSgStorageModifier ( SgNode* s );
10069 
10070  typedef SgModifier base_node_type;
10071 
10072 
10073 // End of memberFunctionString
10074 
10075  public:
10076  SgStorageModifier::storage_modifier_enum get_modifier() const;
10077  void set_modifier(SgStorageModifier::storage_modifier_enum modifier);
10078 
10079  public:
10080  bool get_thread_local_storage() const;
10081  void set_thread_local_storage(bool thread_local_storage);
10082 
10083 
10084  public:
10085  virtual ~SgStorageModifier();
10086 
10087 
10088  public:
10089  SgStorageModifier();
10090 
10091  protected:
10092 // Start of memberFunctionString
10094 
10095 // End of memberFunctionString
10096 // Start of memberFunctionString
10097 bool p_thread_local_storage;
10098 
10099 // End of memberFunctionString
10100 
10101 
10102 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
10103 
10104 
10105  };
10106 #endif
10107 
10108 // postdeclarations for SgStorageModifier
10109 
10110 /* #line 10111 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
10111 
10112 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
10113 
10114 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
10115 
10116 
10117 /* #line 10118 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
10118 
10119 
10120 
10121 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
10122 
10123 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
10124 // This code is automatically generated for each
10125 // terminal and non-terminal within the defined
10126 // grammar. There is a simple way to change the
10127 // code to fix bugs etc. See the ROSE README file
10128 // for directions.
10129 
10130 // tps: (02/22/2010): Adding DLL export requirements
10131 #include "rosedll.h"
10132 
10133 // predeclarations for SgAccessModifier
10134 
10135 /* #line 10136 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
10136 
10137 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
10138 
10139 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
10140 
10141 #if 1
10142 // Class Definition for SgAccessModifier
10143 class ROSE_DLL_API SgAccessModifier : public SgModifier
10144  {
10145  public:
10146 
10147 
10148 /* #line 10149 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
10149 
10150  virtual SgNode* copy ( SgCopyHelp& help) const override;
10151 // Start of memberFunctionString
10152 /* #line 1035 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
10153 
10154 
10155  // access specifiers (private, protected, public)
10156 
10157  // DQ (4/6/2004): Added to provide uniform support for access modifiers
10165  {
10166  e_unknown = 0,
10167  e_private = 1,
10168  e_protected = 2,
10169  e_public = 3,
10170 #if 0
10171  // DQ (8/11/2020): Original code.
10172  e_default = e_public, /*NO_STRINGIFY*/
10173  e_undefined = 4,
10174 #else
10175  // DQ (8/11/2020): new code for bug Cxx_tests/test2020_28.C.
10176  e_default = 4, /*NO_STRINGIFY*/
10177  e_undefined = 5,
10178 #endif
10179  e_last_modifier
10180  };
10181 
10182  // Copy constructor
10183  SgAccessModifier ( const SgAccessModifier & X );
10184 
10185  // Assignment Operator
10187 
10188  void post_construction_initialization() override;
10189 
10190  bool isUnknown() const;
10191  void setUnknown();
10192 
10193  bool isDefault() const;
10194  void setDefault();
10195 
10196  bool isPrivate() const;
10197  void setPrivate();
10198 
10199  bool isProtected() const;
10200  void setProtected();
10201 
10202  bool isPublic() const;
10203  void setPublic();
10204 
10205  // DQ (11/24/2007): Added support for Fortran staements to have undefined access (default in modules should not be public (or private))
10206  bool isUndefined() const;
10207  void setUndefined();
10208 
10209  std::string displayString() const;
10210  void display ( std::string label ) const;
10211  friend std::ostream & operator<< ( std::ostream & os, const SgAccessModifier & m );
10212  friend bool operator== (const SgAccessModifier& lhs, const SgAccessModifier& rhs);
10213 
10214  // DQ (2/4/2006): Added mechamism to clear all bits
10215  void reset();
10216 
10217 
10218 
10219 // End of memberFunctionString
10220 // Start of memberFunctionString
10221 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
10222 
10223 // *** COMMON CODE SECTION BEGINS HERE ***
10224 
10225  public:
10226 
10227  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
10228  // and not required which is required to match the other aspects of the copy mechanism code generation.
10229  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
10230  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
10231  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
10232  // virtual SgNode* copy ( const SgCopyHelp & help) const;
10233 
10235  virtual std::string class_name() const override;
10236 
10238  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
10239 
10241  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
10242  // static const VariantT static_variant = V_SgAccessModifier;
10243  enum { static_variant = V_SgAccessModifier };
10244 
10245  /* the generated cast function */
10247  ROSE_DLL_API friend SgAccessModifier* isSgAccessModifier( SgNode * s );
10248 
10250  ROSE_DLL_API friend const SgAccessModifier* isSgAccessModifier( const SgNode * s );
10251 
10252  // ******************************************
10253  // * Memory Pool / New / Delete
10254  // ******************************************
10255 
10256  public:
10258  static const unsigned pool_size; //
10260  static std::vector<unsigned char *> pools; //
10262  static SgAccessModifier * next_node; //
10263 
10265  static unsigned long initializeStorageClassArray(SgAccessModifierStorageClass *); //
10266 
10268  static void clearMemoryPool(); //
10269  static void deleteMemoryPool(); //
10270 
10272  static void extendMemoryPoolForFileIO(); //
10273 
10275  static SgAccessModifier * getPointerFromGlobalIndex(unsigned long); //
10277  static SgAccessModifier * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
10278 
10280  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
10282  static void resetValidFreepointers(); //
10284  static unsigned long getNumberOfLastValidPointer(); //
10285 
10286 
10287 #if defined(INLINE_FUNCTIONS)
10288 
10289  inline void *operator new (size_t size);
10290 #else
10291 
10292  void *operator new (size_t size);
10293 #endif
10294 
10295  void operator delete (void* pointer, size_t size);
10296 
10297  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
10298  void operator delete (void* pointer)
10299  {
10300  // This is the generated delete operator...
10301  SgAccessModifier::operator delete (pointer,sizeof(SgAccessModifier));
10302  }
10303 
10305  static size_t numberOfNodes();
10306 
10308  static size_t memoryUsage();
10309 
10310  // End of scope which started in IR nodes specific code
10311  /* */
10312 
10313  /* name Internal Functions
10314  \brief Internal functions ... incomplete-documentation
10315 
10316  These functions have been made public as part of the design, but they are suggested for internal use
10317  or by particularly knowledgeable users for specialized tools or applications.
10318 
10319  \internal We could not make these private because they are required by user for special purposes. And
10320  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
10321 
10322  */
10323 
10324  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
10325  // overridden in every class by *generated* implementation
10327  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
10328  // MS: 06/28/02 container of names of variables or container indices
10329  // used used in the traversal to access AST successor nodes
10330  // overridden in every class by *generated* implementation
10333  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
10334 
10335  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
10336  // than all the vector copies. The implementation for these functions is generated for each class.
10338  virtual size_t get_numberOfTraversalSuccessors() override;
10340  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
10342  virtual size_t get_childIndex(SgNode *child) override;
10343 
10344 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
10345  // MS: 08/16/2002 method for generating RTI information
10347  virtual RTIReturnType roseRTI() override;
10348 #endif
10349  /* */
10350 
10351 
10352 
10353  /* name Deprecated Functions
10354  \brief Deprecated functions ... incomplete-documentation
10355 
10356  These functions have been deprecated from use.
10357  */
10358  /* */
10359 
10361  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
10362 
10363  // JJW (10/16/2008): Changed to a single function in Node.code, and put
10364  // getVariant() in #if 0 block to prevent confusing Doxygen
10365 #if 0
10366 
10367  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
10369  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
10370 #endif
10371  /* */
10372 
10373 
10374 
10375 
10376  public:
10377  /* name Traversal Support Functions
10378  \brief Traversal support functions ... incomplete-documentation
10379 
10380  These functions have been made public as part of the design, but they are suggested for internal use
10381  or by particularly knowledgable users for specialized tools or applications.
10382  */
10383  /* */
10384 
10385  // DQ (11/26/2005): Support for visitor pattern mechanims
10386  // (inferior to ROSE traversal mechanism, experimental).
10390 
10391  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
10393  virtual void accept (ROSE_VisitorPattern & visitor) override;
10394 
10395  // DQ (12/26/2005): Support for traversal based on the memory pool
10398  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
10399 
10403 
10404  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
10405  // This traversal helps support internal tools that call static member functions.
10406  // note: this function operates on the memory pools.
10409  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
10410  /* */
10411 
10412 
10413  public:
10414  /* name Memory Allocation Functions
10415  \brief Memory allocations functions ... incomplete-documentation
10416 
10417  These functions have been made public as part of the design, but they are suggested for internal use
10418  or by particularly knowledgable users for specialized tools or applications.
10419  */
10420  /* */
10421 
10432  virtual bool isInMemoryPool() override;
10433 
10444  virtual void checkDataMemberPointersIfInMemoryPool() override;
10445 
10446  // DQ (4/30/2006): Modified to be a const function.
10461  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
10462 
10472  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
10473 
10485  virtual long getChildIndex( SgNode* childNode ) const override;
10486 
10487  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
10488  // comment here (changed to be a C style comment and not be a doxygen comment).
10489  /* \brief Constructor for use by AST File I/O Mechanism
10490 
10491  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
10492  which obtained via fast binary file I/O from disk.
10493  */
10494  // SgAccessModifier( SgAccessModifierStorageClass& source );
10495 
10496 
10497 
10498 
10499 
10500  // JH (10/24/2005): methods added to support the ast file IO
10501  private:
10502 
10503  /* name AST Memory Allocation Support Functions
10504  \brief Memory allocations support....
10505 
10506  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
10507  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
10508  and support the AST File I/O Mechanism.
10509  */
10510  /* */
10511 
10512  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
10513  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
10514  that I use the same type everywhere, if any changes are made. THe second one declares the type
10515  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
10516  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
10517  a correspinding one in the AST_FILE_IO class!
10518  */
10519  // DQ (9/2/2015): This typedef is no longer used, we can't define the
10520  // comment here (changed to be a C style comment and not be a doxygen comment).
10521  /* \brief Typedef used for low level memory access.
10522  */
10523  // typedef unsigned char* TestType;
10524 
10525  // DQ (9/2/2015): This typedef is no longer used, we can't define the
10526  // comment here (changed to be a C style comment and not be a doxygen comment).
10527  /* \brief Typedef used to hold memory addresses as values.
10528  */
10529  // typedef unsigned long AddressType;
10530 
10531 
10532 
10533  // necessary, to have direct access to the p_freepointer and the private methods !
10535  friend class AST_FILE_IO;
10536 
10538  friend class SgAccessModifierStorageClass;
10539 
10541  friend class AstSpecificDataManagingClass;
10542 
10544  friend class AstSpecificDataManagingClassStorageClass;
10545 
10546  public:
10548  SgAccessModifier( const SgAccessModifierStorageClass& source );
10549 
10550  // private: // JJW hack
10551  /*
10552  name AST Memory Allocation Support Variables
10553  Memory allocations support variables
10554 
10555  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
10556  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
10557  and support the AST File I/O Mechanism.
10558  */
10559  /* */
10560 
10561  public:
10562 
10563  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
10564  // to current node (so that it will work cleanly with build functions to specify patterns).
10565  // virtual SgNode* addRegExpAttribute();
10572 
10573 // *** COMMON CODE SECTION ENDS HERE ***
10574 
10575 
10576 // End of memberFunctionString
10577 // Start of memberFunctionString
10578 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
10579 
10580  // the generated cast function
10581  // friend ROSE_DLL_API SgAccessModifier* isSgAccessModifier ( SgNode* s );
10582 
10583  typedef SgModifier base_node_type;
10584 
10585 
10586 // End of memberFunctionString
10587 
10588  public:
10589  SgAccessModifier::access_modifier_enum get_modifier() const;
10590  void set_modifier(SgAccessModifier::access_modifier_enum modifier);
10591 
10592 
10593  public:
10594  virtual ~SgAccessModifier();
10595 
10596 
10597  public:
10598  SgAccessModifier();
10599 
10600  protected:
10601 // Start of memberFunctionString
10603 
10604 // End of memberFunctionString
10605 
10606 
10607 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
10608 
10609 
10610  };
10611 #endif
10612 
10613 // postdeclarations for SgAccessModifier
10614 
10615 /* #line 10616 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
10616 
10617 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
10618 
10619 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
10620 
10621 
10622 /* #line 10623 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
10623 
10624 
10625 
10626 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
10627 
10628 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
10629 // This code is automatically generated for each
10630 // terminal and non-terminal within the defined
10631 // grammar. There is a simple way to change the
10632 // code to fix bugs etc. See the ROSE README file
10633 // for directions.
10634 
10635 // tps: (02/22/2010): Adding DLL export requirements
10636 #include "rosedll.h"
10637 
10638 // predeclarations for SgFunctionModifier
10639 
10640 /* #line 10641 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
10641 
10642 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
10643 
10644 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
10645 
10646 #if 1
10647 // Class Definition for SgFunctionModifier
10648 class ROSE_DLL_API SgFunctionModifier : public SgModifier
10649  {
10650  public:
10651 
10652 
10653 /* #line 10654 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
10654 
10655  virtual SgNode* copy ( SgCopyHelp& help) const override;
10656 // Start of memberFunctionString
10657 /* #line 1101 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
10658 
10659 
10667  {
10668  // Multiple values can be specified at one time
10669  // (e.g. inline and explicit (works in g++!))
10670  e_unknown = 0,
10671  e_default = 1,
10672  e_inline = 2,
10673  e_virtual = 3,
10674  e_pure_virtual = 4,
10675  e_explicit = 5,
10676  // e_bind = 6, /*!< Fortran bind attribute for functions (see also type modifier) */
10677  e_pure = 7,
10678  e_elemental = 8,
10679  e_recursive = 9,
10681  // DQ (12/4/2007): Added support for GNU specific attributes
10682  e_gnu_attribute__constructor__ = 10,
10683  e_gnu_attribute__destructor__ = 11,
10684  e_gnu_attribute__pure__ = 12,
10685  e_gnu_attribute__weak__ = 13,
10686  e_gnu_attribute__unused__ = 14,
10687  e_gnu_attribute__used__ = 15,
10688  e_gnu_attribute__deprecated__ = 16,
10689  e_gnu_attribute__malloc__ = 17,
10690  e_gnu_attribute__naked__ = 18,
10691  e_gnu_attribute__no_instrument_function__ = 19,
10692  e_gnu_attribute__no_check_memory_usage__ = 20,
10693  e_gnu_attribute__noinline__ = 21,
10694  e_gnu_attribute__always_inline__ = 22,
10695  e_gnu_attribute__nothrow__ = 23,
10696  e_gnu_attribute__weakref__ = 24,
10698  // TV (04/08/2010): Support for CUDA functions modifiers
10699  e_cuda_device = 25,
10700  e_cuda_kernel = 26,
10701  e_cuda_host = 27,
10703  // Rasmussen (03/13/2018): New CUDA function modifiers
10704  e_cuda_global_function = 28,
10705  e_cuda_grid_global = 29,
10707  // TV (05/03/2010): Support for OpenCL functions modifiers
10708  e_opencl_kernel = 30,
10709  e_opencl_vec_type_hint = 31,
10710  e_opencl_work_group_size_hint = 32,
10711  e_opencl_work_group_size_req = 33,
10713  // DQ (4/13/2019): Added C++11 options for function modifiers.
10714  e_marked_default = 38,
10715  e_marked_delete = 39,
10717  // Rasmussen (10/26/2019): Jovial function modifier
10718  e_reentrant = 40,
10720  e_last_modifier
10721  };
10722 
10723  // TV (05/03/2010)
10724 
10726  unsigned long int x, y, z;
10727  };
10728 
10729  // Copy constructor
10730  SgFunctionModifier ( const SgFunctionModifier & X );
10731 
10732  // Assignment Operator
10734 
10735  void post_construction_initialization() override;
10736 
10737  bool isUnknown() const;
10738  void setUnknown();
10739  void unsetUnknown();
10740 
10741  bool isDefault() const;
10742  void setDefault();
10743  void unsetDefault();
10744 
10745  bool isInline() const;
10746  void setInline();
10747  void unsetInline();
10748 
10749  bool isVirtual() const;
10750  void setVirtual();
10751  void unsetVirtual();
10752 
10753  bool isPureVirtual() const;
10754  void setPureVirtual();
10755  void unsetPureVirtual();
10756 
10757  bool isExplicit() const;
10758  void setExplicit();
10759  void unsetExplicit();
10760 #if 0
10761  // DQ (11/21/2007): support for Fortran bind attribute on functions
10762  bool isBind() const;
10763  void setBind();
10764  void unsetBind();
10765 #endif
10766  // DQ (11/21/2007): support for Fortran pure attribute on functions
10767  bool isPure() const;
10768  void setPure();
10769  void unsetPure();
10770 
10771  // DQ (11/30/2007): support for Fortran elemental attribute on functions
10772  bool isElemental() const;
10773  void setElemental();
10774  void unsetElemental();
10775 
10776  // DQ (11/30/2007): support for Fortran recursive attribute on functions
10777  bool isRecursive() const;
10778  void setRecursive();
10779  void unsetRecursive();
10780 
10781  // Rasmussen (10/26/2019): support for Jovial reentrant attribute on functions
10782  bool isReentrant() const;
10783  void setReentrant();
10784  void unsetReentrant();
10785 
10786  // DQ (1/3/2009): Added GNU specific attributes
10787  bool isGnuAttributeConstructor() const;
10788  void setGnuAttributeConstructor();
10789  void unsetGnuAttributeConstructor();
10790 
10791  bool isGnuAttributeDestructor() const;
10792  void setGnuAttributeDestructor();
10793  void unsetGnuAttributeDestructor();
10794 
10795  bool isGnuAttributePure() const;
10796  void setGnuAttributePure();
10797  void unsetGnuAttributePure();
10798 
10799  bool isGnuAttributeWeak() const;
10800  void setGnuAttributeWeak();
10801  void unsetGnuAttributeWeak();
10802 
10803  bool isGnuAttributeUnused() const;
10804  void setGnuAttributeUnused();
10805  void unsetGnuAttributeUnused();
10806 
10807  bool isGnuAttributeUsed() const;
10808  void setGnuAttributeUsed();
10809  void unsetGnuAttributeUsed();
10810 
10811  bool isGnuAttributeDeprecated() const;
10812  void setGnuAttributeDeprecated();
10813  void unsetGnuAttributeDeprecated();
10814 
10815  bool isGnuAttributeMalloc() const;
10816  void setGnuAttributeMalloc();
10817  void unsetGnuAttributeMalloc();
10818 
10819  bool isGnuAttributeNaked() const;
10820  void setGnuAttributeNaked();
10821  void unsetGnuAttributeNaked();
10822 
10823  bool isGnuAttributeNoInstrumentFunction() const;
10824  void setGnuAttributeNoInstrumentFunction();
10825  void unsetGnuAttributeNoInstrumentFunction();
10826 
10827  bool isGnuAttributeNoCheckMemoryUsage() const;
10828  void setGnuAttributeNoCheckMemoryUsage();
10829  void unsetGnuAttributeNoCheckMemoryUsage();
10830 
10831  bool isGnuAttributeNoInline() const;
10832  void setGnuAttributeNoInline();
10833  void unsetGnuAttributeNoInline();
10834 
10835  bool isGnuAttributeAlwaysInline() const;
10836  void setGnuAttributeAlwaysInline();
10837  void unsetGnuAttributeAlwaysInline();
10838 
10839  bool isGnuAttributeNoThrow() const;
10840  void setGnuAttributeNoThrow();
10841  void unsetGnuAttributeNoThrow();
10842 
10843  bool isGnuAttributeWeakReference() const;
10844  void setGnuAttributeWeakReference();
10845  void unsetGnuAttributeWeakReference();
10846 
10847  // TV (04/08/2010): Support for CUDA functions modifiers
10848 
10849  bool isCudaDevice() const;
10850  void setCudaDevice();
10851  void unsetCudaDevice();
10852 
10853  bool isCudaKernel() const;
10854  void setCudaKernel();
10855  void unsetCudaKernel();
10856 
10857  bool isCudaHost() const;
10858  void setCudaHost();
10859  void unsetCudaHost();
10860 
10861  // Rasmussen (03/13/2018): New CUDA function modifiers
10862 
10863  bool isCudaGlobalFunction() const;
10864  void setCudaGlobalFunction();
10865  void unsetCudaGlobalFunction();
10866 
10867  bool isCudaGridGlobal() const;
10868  void setCudaGridGlobal();
10869  void unsetCudaGridGlobal();
10870 
10871  // TV (05/03/2010): Support for OpenCL functions modifiers
10872 
10873  bool isOpenclKernel() const;
10874  void setOpenclKernel();
10875  void unsetOpenclKernel();
10876 
10877  bool hasOpenclVecTypeHint() const;
10878  void setOpenclVecTypeHint();
10879  void unsetOpenclVecTypeHint();
10880 
10881  bool hasOpenclWorkGroupSizeHint() const;
10882  void setOpenclWorkGroupSizeHint();
10883  void unsetOpenclWorkGroupSizeHint();
10884 
10885  bool hasOpenclWorkGroupSizeReq() const;
10886  void setOpenclWorkGroupSizeReq();
10887  void unsetOpenclWorkGroupSizeReq();
10888 
10889  // DQ (4/13/2019): Added C++11 options for function modifiers.
10890  bool isMarkedDefault() const;
10891  void setMarkedDefault();
10892  void unsetMarkedDefault();
10893 
10894  // DQ (4/13/2019): Added C++11 options for function modifiers.
10895  bool isMarkedDelete() const;
10896  void setMarkedDelete();
10897  void unsetMarkedDelete();
10898 
10899 
10900  std::string displayString() const;
10901  void display ( std::string label ) const;
10902  friend std::ostream & operator<< ( std::ostream & os, const SgFunctionModifier & m );
10903  friend bool operator== (const SgFunctionModifier& lhs, const SgFunctionModifier& rhs);
10904 
10905  // DQ (2/4/2006): Added mechamism to clear all bits
10906  void reset();
10907 
10908 
10909 
10910 // End of memberFunctionString
10911 // Start of memberFunctionString
10912 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
10913 
10914 // *** COMMON CODE SECTION BEGINS HERE ***
10915 
10916  public:
10917 
10918  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
10919  // and not required which is required to match the other aspects of the copy mechanism code generation.
10920  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
10921  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
10922  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
10923  // virtual SgNode* copy ( const SgCopyHelp & help) const;
10924 
10926  virtual std::string class_name() const override;
10927 
10929  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
10930 
10932  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
10933  // static const VariantT static_variant = V_SgFunctionModifier;
10934  enum { static_variant = V_SgFunctionModifier };
10935 
10936  /* the generated cast function */
10938  ROSE_DLL_API friend SgFunctionModifier* isSgFunctionModifier( SgNode * s );
10939 
10941  ROSE_DLL_API friend const SgFunctionModifier* isSgFunctionModifier( const SgNode * s );
10942 
10943  // ******************************************
10944  // * Memory Pool / New / Delete
10945  // ******************************************
10946 
10947  public:
10949  static const unsigned pool_size; //
10951  static std::vector<unsigned char *> pools; //
10953  static SgFunctionModifier * next_node; //
10954 
10956  static unsigned long initializeStorageClassArray(SgFunctionModifierStorageClass *); //
10957 
10959  static void clearMemoryPool(); //
10960  static void deleteMemoryPool(); //
10961 
10963  static void extendMemoryPoolForFileIO(); //
10964 
10966  static SgFunctionModifier * getPointerFromGlobalIndex(unsigned long); //
10968  static SgFunctionModifier * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
10969 
10971  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
10973  static void resetValidFreepointers(); //
10975  static unsigned long getNumberOfLastValidPointer(); //
10976 
10977 
10978 #if defined(INLINE_FUNCTIONS)
10979 
10980  inline void *operator new (size_t size);
10981 #else
10982 
10983  void *operator new (size_t size);
10984 #endif
10985 
10986  void operator delete (void* pointer, size_t size);
10987 
10988  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
10989  void operator delete (void* pointer)
10990  {
10991  // This is the generated delete operator...
10992  SgFunctionModifier::operator delete (pointer,sizeof(SgFunctionModifier));
10993  }
10994 
10996  static size_t numberOfNodes();
10997 
10999  static size_t memoryUsage();
11000 
11001  // End of scope which started in IR nodes specific code
11002  /* */
11003 
11004  /* name Internal Functions
11005  \brief Internal functions ... incomplete-documentation
11006 
11007  These functions have been made public as part of the design, but they are suggested for internal use
11008  or by particularly knowledgeable users for specialized tools or applications.
11009 
11010  \internal We could not make these private because they are required by user for special purposes. And
11011  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
11012 
11013  */
11014 
11015  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
11016  // overridden in every class by *generated* implementation
11018  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
11019  // MS: 06/28/02 container of names of variables or container indices
11020  // used used in the traversal to access AST successor nodes
11021  // overridden in every class by *generated* implementation
11024  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
11025 
11026  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
11027  // than all the vector copies. The implementation for these functions is generated for each class.
11029  virtual size_t get_numberOfTraversalSuccessors() override;
11031  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
11033  virtual size_t get_childIndex(SgNode *child) override;
11034 
11035 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
11036  // MS: 08/16/2002 method for generating RTI information
11038  virtual RTIReturnType roseRTI() override;
11039 #endif
11040  /* */
11041 
11042 
11043 
11044  /* name Deprecated Functions
11045  \brief Deprecated functions ... incomplete-documentation
11046 
11047  These functions have been deprecated from use.
11048  */
11049  /* */
11050 
11052  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
11053 
11054  // JJW (10/16/2008): Changed to a single function in Node.code, and put
11055  // getVariant() in #if 0 block to prevent confusing Doxygen
11056 #if 0
11057 
11058  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
11060  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
11061 #endif
11062  /* */
11063 
11064 
11065 
11066 
11067  public:
11068  /* name Traversal Support Functions
11069  \brief Traversal support functions ... incomplete-documentation
11070 
11071  These functions have been made public as part of the design, but they are suggested for internal use
11072  or by particularly knowledgable users for specialized tools or applications.
11073  */
11074  /* */
11075 
11076  // DQ (11/26/2005): Support for visitor pattern mechanims
11077  // (inferior to ROSE traversal mechanism, experimental).
11081 
11082  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
11084  virtual void accept (ROSE_VisitorPattern & visitor) override;
11085 
11086  // DQ (12/26/2005): Support for traversal based on the memory pool
11089  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
11090 
11094 
11095  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
11096  // This traversal helps support internal tools that call static member functions.
11097  // note: this function operates on the memory pools.
11100  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
11101  /* */
11102 
11103 
11104  public:
11105  /* name Memory Allocation Functions
11106  \brief Memory allocations functions ... incomplete-documentation
11107 
11108  These functions have been made public as part of the design, but they are suggested for internal use
11109  or by particularly knowledgable users for specialized tools or applications.
11110  */
11111  /* */
11112 
11123  virtual bool isInMemoryPool() override;
11124 
11135  virtual void checkDataMemberPointersIfInMemoryPool() override;
11136 
11137  // DQ (4/30/2006): Modified to be a const function.
11152  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
11153 
11163  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
11164 
11176  virtual long getChildIndex( SgNode* childNode ) const override;
11177 
11178  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
11179  // comment here (changed to be a C style comment and not be a doxygen comment).
11180  /* \brief Constructor for use by AST File I/O Mechanism
11181 
11182  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
11183  which obtained via fast binary file I/O from disk.
11184  */
11185  // SgFunctionModifier( SgFunctionModifierStorageClass& source );
11186 
11187 
11188 
11189 
11190 
11191  // JH (10/24/2005): methods added to support the ast file IO
11192  private:
11193 
11194  /* name AST Memory Allocation Support Functions
11195  \brief Memory allocations support....
11196 
11197  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
11198  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
11199  and support the AST File I/O Mechanism.
11200  */
11201  /* */
11202 
11203  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
11204  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
11205  that I use the same type everywhere, if any changes are made. THe second one declares the type
11206  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
11207  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
11208  a correspinding one in the AST_FILE_IO class!
11209  */
11210  // DQ (9/2/2015): This typedef is no longer used, we can't define the
11211  // comment here (changed to be a C style comment and not be a doxygen comment).
11212  /* \brief Typedef used for low level memory access.
11213  */
11214  // typedef unsigned char* TestType;
11215 
11216  // DQ (9/2/2015): This typedef is no longer used, we can't define the
11217  // comment here (changed to be a C style comment and not be a doxygen comment).
11218  /* \brief Typedef used to hold memory addresses as values.
11219  */
11220  // typedef unsigned long AddressType;
11221 
11222 
11223 
11224  // necessary, to have direct access to the p_freepointer and the private methods !
11226  friend class AST_FILE_IO;
11227 
11229  friend class SgFunctionModifierStorageClass;
11230 
11232  friend class AstSpecificDataManagingClass;
11233 
11235  friend class AstSpecificDataManagingClassStorageClass;
11236 
11237  public:
11239  SgFunctionModifier( const SgFunctionModifierStorageClass& source );
11240 
11241  // private: // JJW hack
11242  /*
11243  name AST Memory Allocation Support Variables
11244  Memory allocations support variables
11245 
11246  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
11247  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
11248  and support the AST File I/O Mechanism.
11249  */
11250  /* */
11251 
11252  public:
11253 
11254  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
11255  // to current node (so that it will work cleanly with build functions to specify patterns).
11256  // virtual SgNode* addRegExpAttribute();
11263 
11264 // *** COMMON CODE SECTION ENDS HERE ***
11265 
11266 
11267 // End of memberFunctionString
11268 // Start of memberFunctionString
11269 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
11270 
11271  // the generated cast function
11272  // friend ROSE_DLL_API SgFunctionModifier* isSgFunctionModifier ( SgNode* s );
11273 
11274  typedef SgModifier base_node_type;
11275 
11276 
11277 // End of memberFunctionString
11278 
11279  public:
11280  SgBitVector get_modifierVector() const;
11281  void set_modifierVector(SgBitVector modifierVector);
11282 
11283  public:
11284  unsigned long int get_gnu_attribute_constructor_destructor_priority() const;
11285  void set_gnu_attribute_constructor_destructor_priority(unsigned long int gnu_attribute_constructor_destructor_priority);
11286 
11287  public:
11288  std::string get_gnu_attribute_named_weak_reference() const;
11289  void set_gnu_attribute_named_weak_reference(std::string gnu_attribute_named_weak_reference);
11290 
11291  public:
11292  std::string get_gnu_attribute_named_alias() const;
11293  void set_gnu_attribute_named_alias(std::string gnu_attribute_named_alias);
11294 
11295  public:
11296  SgType * get_opencl_vec_type() const;
11297  void set_opencl_vec_type(SgType * opencl_vec_type);
11298 
11299  public:
11300  SgFunctionModifier::opencl_work_group_size_t get_opencl_work_group_size() const;
11301  void set_opencl_work_group_size(SgFunctionModifier::opencl_work_group_size_t opencl_work_group_size);
11302 
11303 
11304  public:
11305  virtual ~SgFunctionModifier();
11306 
11307 
11308  public:
11309  SgFunctionModifier();
11310 
11311  protected:
11312 // Start of memberFunctionString
11313 SgBitVector p_modifierVector;
11314 
11315 // End of memberFunctionString
11316 // Start of memberFunctionString
11317 unsigned long int p_gnu_attribute_constructor_destructor_priority;
11318 
11319 // End of memberFunctionString
11320 // Start of memberFunctionString
11321 std::string p_gnu_attribute_named_weak_reference;
11322 
11323 // End of memberFunctionString
11324 // Start of memberFunctionString
11325 std::string p_gnu_attribute_named_alias;
11326 
11327 // End of memberFunctionString
11328 // Start of memberFunctionString
11329 SgType * p_opencl_vec_type;
11330 
11331 // End of memberFunctionString
11332 // Start of memberFunctionString
11333 SgFunctionModifier::opencl_work_group_size_t p_opencl_work_group_size;
11334 
11335 // End of memberFunctionString
11336 
11337 
11338 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
11339 
11340 
11341  };
11342 #endif
11343 
11344 // postdeclarations for SgFunctionModifier
11345 
11346 /* #line 11347 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
11347 
11348 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
11349 
11350 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
11351 
11352 
11353 /* #line 11354 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
11354 
11355 
11356 
11357 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
11358 
11359 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
11360 // This code is automatically generated for each
11361 // terminal and non-terminal within the defined
11362 // grammar. There is a simple way to change the
11363 // code to fix bugs etc. See the ROSE README file
11364 // for directions.
11365 
11366 // tps: (02/22/2010): Adding DLL export requirements
11367 #include "rosedll.h"
11368 
11369 // predeclarations for SgUPC_AccessModifier
11370 
11371 /* #line 11372 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
11372 
11373 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
11374 
11375 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
11376 
11377 #if 1
11378 // Class Definition for SgUPC_AccessModifier
11379 class ROSE_DLL_API SgUPC_AccessModifier : public SgModifier
11380  {
11381  public:
11382 
11383 
11384 /* #line 11385 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
11385 
11386  virtual SgNode* copy ( SgCopyHelp& help) const override;
11387 // Start of memberFunctionString
11388 /* #line 1354 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
11389 
11390 
11391  // UPC access specifiers (unspecified, shared, strict, relaxed)
11392 
11400  {
11401  // Bit values can support multiple values in a single enum type
11404  // DQ and Liao (6/13/2008): "shared" can be used with "strict" and "relaxed" so it must be handled separately.
11405  // e_upc_shared, /*!< UPC shared */
11408  e_last_modifier
11409  };
11410 
11411  // Copy constructor
11413 
11414  // Assignment Operator
11416 
11417  void post_construction_initialization() override;
11418 
11419  bool isUnknown() const;
11420  void setUnknown();
11421 
11422  bool isDefault() const;
11423  void setDefault();
11424 
11425  // bool isUPC_Shared() const;
11426  // void setUPC_Shared();
11427 
11428  bool isUPC_Strict() const;
11429  void setUPC_Strict();
11430 
11431  bool isUPC_Relaxed() const;
11432  void setUPC_Relaxed();
11433 
11434  std::string displayString() const;
11435  void display ( std::string label ) const;
11436  friend std::ostream & operator<< ( std::ostream & os, const SgUPC_AccessModifier & m );
11437  friend bool operator== (const SgUPC_AccessModifier& lhs, const SgUPC_AccessModifier& rhs);
11438 
11439  // DQ (2/4/2006): Added mechanism to clear all bits
11440  void reset();
11441 
11442 
11443 
11444 // End of memberFunctionString
11445 // Start of memberFunctionString
11446 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
11447 
11448 // *** COMMON CODE SECTION BEGINS HERE ***
11449 
11450  public:
11451 
11452  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
11453  // and not required which is required to match the other aspects of the copy mechanism code generation.
11454  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
11455  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
11456  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
11457  // virtual SgNode* copy ( const SgCopyHelp & help) const;
11458 
11460  virtual std::string class_name() const override;
11461 
11463  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
11464 
11466  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
11467  // static const VariantT static_variant = V_SgUPC_AccessModifier;
11468  enum { static_variant = V_SgUPC_AccessModifier };
11469 
11470  /* the generated cast function */
11472  ROSE_DLL_API friend SgUPC_AccessModifier* isSgUPC_AccessModifier( SgNode * s );
11473 
11475  ROSE_DLL_API friend const SgUPC_AccessModifier* isSgUPC_AccessModifier( const SgNode * s );
11476 
11477  // ******************************************
11478  // * Memory Pool / New / Delete
11479  // ******************************************
11480 
11481  public:
11483  static const unsigned pool_size; //
11485  static std::vector<unsigned char *> pools; //
11487  static SgUPC_AccessModifier * next_node; //
11488 
11490  static unsigned long initializeStorageClassArray(SgUPC_AccessModifierStorageClass *); //
11491 
11493  static void clearMemoryPool(); //
11494  static void deleteMemoryPool(); //
11495 
11497  static void extendMemoryPoolForFileIO(); //
11498 
11500  static SgUPC_AccessModifier * getPointerFromGlobalIndex(unsigned long); //
11502  static SgUPC_AccessModifier * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
11503 
11505  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
11507  static void resetValidFreepointers(); //
11509  static unsigned long getNumberOfLastValidPointer(); //
11510 
11511 
11512 #if defined(INLINE_FUNCTIONS)
11513 
11514  inline void *operator new (size_t size);
11515 #else
11516 
11517  void *operator new (size_t size);
11518 #endif
11519 
11520  void operator delete (void* pointer, size_t size);
11521 
11522  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
11523  void operator delete (void* pointer)
11524  {
11525  // This is the generated delete operator...
11526  SgUPC_AccessModifier::operator delete (pointer,sizeof(SgUPC_AccessModifier));
11527  }
11528 
11530  static size_t numberOfNodes();
11531 
11533  static size_t memoryUsage();
11534 
11535  // End of scope which started in IR nodes specific code
11536  /* */
11537 
11538  /* name Internal Functions
11539  \brief Internal functions ... incomplete-documentation
11540 
11541  These functions have been made public as part of the design, but they are suggested for internal use
11542  or by particularly knowledgeable users for specialized tools or applications.
11543 
11544  \internal We could not make these private because they are required by user for special purposes. And
11545  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
11546 
11547  */
11548 
11549  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
11550  // overridden in every class by *generated* implementation
11552  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
11553  // MS: 06/28/02 container of names of variables or container indices
11554  // used used in the traversal to access AST successor nodes
11555  // overridden in every class by *generated* implementation
11558  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
11559 
11560  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
11561  // than all the vector copies. The implementation for these functions is generated for each class.
11563  virtual size_t get_numberOfTraversalSuccessors() override;
11565  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
11567  virtual size_t get_childIndex(SgNode *child) override;
11568 
11569 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
11570  // MS: 08/16/2002 method for generating RTI information
11572  virtual RTIReturnType roseRTI() override;
11573 #endif
11574  /* */
11575 
11576 
11577 
11578  /* name Deprecated Functions
11579  \brief Deprecated functions ... incomplete-documentation
11580 
11581  These functions have been deprecated from use.
11582  */
11583  /* */
11584 
11586  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
11587 
11588  // JJW (10/16/2008): Changed to a single function in Node.code, and put
11589  // getVariant() in #if 0 block to prevent confusing Doxygen
11590 #if 0
11591 
11592  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
11594  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
11595 #endif
11596  /* */
11597 
11598 
11599 
11600 
11601  public:
11602  /* name Traversal Support Functions
11603  \brief Traversal support functions ... incomplete-documentation
11604 
11605  These functions have been made public as part of the design, but they are suggested for internal use
11606  or by particularly knowledgable users for specialized tools or applications.
11607  */
11608  /* */
11609 
11610  // DQ (11/26/2005): Support for visitor pattern mechanims
11611  // (inferior to ROSE traversal mechanism, experimental).
11615 
11616  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
11618  virtual void accept (ROSE_VisitorPattern & visitor) override;
11619 
11620  // DQ (12/26/2005): Support for traversal based on the memory pool
11623  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
11624 
11628 
11629  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
11630  // This traversal helps support internal tools that call static member functions.
11631  // note: this function operates on the memory pools.
11634  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
11635  /* */
11636 
11637 
11638  public:
11639  /* name Memory Allocation Functions
11640  \brief Memory allocations functions ... incomplete-documentation
11641 
11642  These functions have been made public as part of the design, but they are suggested for internal use
11643  or by particularly knowledgable users for specialized tools or applications.
11644  */
11645  /* */
11646 
11657  virtual bool isInMemoryPool() override;
11658 
11669  virtual void checkDataMemberPointersIfInMemoryPool() override;
11670 
11671  // DQ (4/30/2006): Modified to be a const function.
11686  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
11687 
11697  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
11698 
11710  virtual long getChildIndex( SgNode* childNode ) const override;
11711 
11712  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
11713  // comment here (changed to be a C style comment and not be a doxygen comment).
11714  /* \brief Constructor for use by AST File I/O Mechanism
11715 
11716  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
11717  which obtained via fast binary file I/O from disk.
11718  */
11719  // SgUPC_AccessModifier( SgUPC_AccessModifierStorageClass& source );
11720 
11721 
11722 
11723 
11724 
11725  // JH (10/24/2005): methods added to support the ast file IO
11726  private:
11727 
11728  /* name AST Memory Allocation Support Functions
11729  \brief Memory allocations support....
11730 
11731  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
11732  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
11733  and support the AST File I/O Mechanism.
11734  */
11735  /* */
11736 
11737  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
11738  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
11739  that I use the same type everywhere, if any changes are made. THe second one declares the type
11740  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
11741  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
11742  a correspinding one in the AST_FILE_IO class!
11743  */
11744  // DQ (9/2/2015): This typedef is no longer used, we can't define the
11745  // comment here (changed to be a C style comment and not be a doxygen comment).
11746  /* \brief Typedef used for low level memory access.
11747  */
11748  // typedef unsigned char* TestType;
11749 
11750  // DQ (9/2/2015): This typedef is no longer used, we can't define the
11751  // comment here (changed to be a C style comment and not be a doxygen comment).
11752  /* \brief Typedef used to hold memory addresses as values.
11753  */
11754  // typedef unsigned long AddressType;
11755 
11756 
11757 
11758  // necessary, to have direct access to the p_freepointer and the private methods !
11760  friend class AST_FILE_IO;
11761 
11763  friend class SgUPC_AccessModifierStorageClass;
11764 
11766  friend class AstSpecificDataManagingClass;
11767 
11769  friend class AstSpecificDataManagingClassStorageClass;
11770 
11771  public:
11773  SgUPC_AccessModifier( const SgUPC_AccessModifierStorageClass& source );
11774 
11775  // private: // JJW hack
11776  /*
11777  name AST Memory Allocation Support Variables
11778  Memory allocations support variables
11779 
11780  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
11781  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
11782  and support the AST File I/O Mechanism.
11783  */
11784  /* */
11785 
11786  public:
11787 
11788  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
11789  // to current node (so that it will work cleanly with build functions to specify patterns).
11790  // virtual SgNode* addRegExpAttribute();
11797 
11798 // *** COMMON CODE SECTION ENDS HERE ***
11799 
11800 
11801 // End of memberFunctionString
11802 // Start of memberFunctionString
11803 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
11804 
11805  // the generated cast function
11806  // friend ROSE_DLL_API SgUPC_AccessModifier* isSgUPC_AccessModifier ( SgNode* s );
11807 
11808  typedef SgModifier base_node_type;
11809 
11810 
11811 // End of memberFunctionString
11812 
11813  public:
11815  void set_modifier(SgUPC_AccessModifier::upc_access_modifier_enum modifier);
11816 
11817  public:
11818  bool get_isShared() const;
11819  void set_isShared(bool isShared);
11820 
11821  public:
11822  long get_layout() const;
11823  void set_layout(long layout);
11824 
11825 
11826  public:
11827  virtual ~SgUPC_AccessModifier();
11828 
11829 
11830  public:
11832 
11833  protected:
11834 // Start of memberFunctionString
11836 
11837 // End of memberFunctionString
11838 // Start of memberFunctionString
11839 bool p_isShared;
11840 
11841 // End of memberFunctionString
11842 // Start of memberFunctionString
11843 long p_layout;
11844 
11845 // End of memberFunctionString
11846 
11847 
11848 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
11849 
11850 
11851  };
11852 #endif
11853 
11854 // postdeclarations for SgUPC_AccessModifier
11855 
11856 /* #line 11857 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
11857 
11858 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
11859 
11860 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
11861 
11862 
11863 /* #line 11864 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
11864 
11865 
11866 
11867 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
11868 
11869 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
11870 // This code is automatically generated for each
11871 // terminal and non-terminal within the defined
11872 // grammar. There is a simple way to change the
11873 // code to fix bugs etc. See the ROSE README file
11874 // for directions.
11875 
11876 // tps: (02/22/2010): Adding DLL export requirements
11877 #include "rosedll.h"
11878 
11879 // predeclarations for SgSpecialFunctionModifier
11880 
11881 /* #line 11882 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
11882 
11883 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
11884 
11885 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
11886 
11887 #if 1
11888 // Class Definition for SgSpecialFunctionModifier
11889 class ROSE_DLL_API SgSpecialFunctionModifier : public SgModifier
11890  {
11891  public:
11892 
11893 
11894 /* #line 11895 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
11895 
11896  virtual SgNode* copy ( SgCopyHelp& help) const override;
11897 // Start of memberFunctionString
11898 /* #line 1460 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
11899 
11900 
11901  // special_function specifiers (constructor, destructor, conversion, operator)
11902 
11910  {
11911  e_unknown = 0,
11912  e_default = 1,
11913  e_none = e_default, /*NO_STRINGIFY*/
11914  e_constructor = 2,
11915  e_destructor = 3,
11916  e_conversion = 4,
11917  e_operator = 5,
11918  e_uld_operator = 6,
11919  e_lambda_entry_point = 7,
11920  e_last_modifier
11921  };
11922 
11923  // Copy constructor
11925 
11926  // Assignment Operator
11928 
11929  void post_construction_initialization() override;
11930 
11931  bool isUnknown() const;
11932  void setUnknown();
11933  void unsetUnknown();
11934 
11935  bool isDefault() const;
11936  void setDefault();
11937  void unsetDefault();
11938 
11939  bool isNotSpecial() const;
11940  void setNotSpecial();
11941  void unsetNotSpecial();
11942 
11943  bool isConstructor() const;
11944  void setConstructor();
11945  void unsetConstructor();
11946 
11947  bool isDestructor() const;
11948  void setDestructor();
11949  void unsetDestructor();
11950 
11951  bool isConversion() const;
11952  void setConversion();
11953  void unsetConversion();
11954 
11955  bool isOperator() const;
11956  void setOperator();
11957  void unsetOperator();
11958 
11959  bool isUldOperator() const;
11960  void setUldOperator();
11961  void unsetUldOperator();
11962 
11963  bool isLambdaEntryPoint() const;
11964  void setLambdaEntryPoint();
11965  void unsetLambdaEntryPoint();
11966 
11967  std::string displayString() const;
11968  void display ( std::string label ) const;
11969  friend std::ostream & operator<< ( std::ostream & os, const SgSpecialFunctionModifier & m );
11970  friend bool operator== (const SgSpecialFunctionModifier& lhs, const SgSpecialFunctionModifier& rhs);
11971 
11972  // DQ (2/4/2006): Added mechamism to clear all bits
11973  void reset();
11974 
11975 
11976 
11977 // End of memberFunctionString
11978 // Start of memberFunctionString
11979 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
11980 
11981 // *** COMMON CODE SECTION BEGINS HERE ***
11982 
11983  public:
11984 
11985  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
11986  // and not required which is required to match the other aspects of the copy mechanism code generation.
11987  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
11988  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
11989  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
11990  // virtual SgNode* copy ( const SgCopyHelp & help) const;
11991 
11993  virtual std::string class_name() const override;
11994 
11996  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
11997 
11999  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
12000  // static const VariantT static_variant = V_SgSpecialFunctionModifier;
12001  enum { static_variant = V_SgSpecialFunctionModifier };
12002 
12003  /* the generated cast function */
12005  ROSE_DLL_API friend SgSpecialFunctionModifier* isSgSpecialFunctionModifier( SgNode * s );
12006 
12008  ROSE_DLL_API friend const SgSpecialFunctionModifier* isSgSpecialFunctionModifier( const SgNode * s );
12009 
12010  // ******************************************
12011  // * Memory Pool / New / Delete
12012  // ******************************************
12013 
12014  public:
12016  static const unsigned pool_size; //
12018  static std::vector<unsigned char *> pools; //
12020  static SgSpecialFunctionModifier * next_node; //
12021 
12023  static unsigned long initializeStorageClassArray(SgSpecialFunctionModifierStorageClass *); //
12024 
12026  static void clearMemoryPool(); //
12027  static void deleteMemoryPool(); //
12028 
12030  static void extendMemoryPoolForFileIO(); //
12031 
12033  static SgSpecialFunctionModifier * getPointerFromGlobalIndex(unsigned long); //
12035  static SgSpecialFunctionModifier * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
12036 
12038  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
12040  static void resetValidFreepointers(); //
12042  static unsigned long getNumberOfLastValidPointer(); //
12043 
12044 
12045 #if defined(INLINE_FUNCTIONS)
12046 
12047  inline void *operator new (size_t size);
12048 #else
12049 
12050  void *operator new (size_t size);
12051 #endif
12052 
12053  void operator delete (void* pointer, size_t size);
12054 
12055  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
12056  void operator delete (void* pointer)
12057  {
12058  // This is the generated delete operator...
12059  SgSpecialFunctionModifier::operator delete (pointer,sizeof(SgSpecialFunctionModifier));
12060  }
12061 
12063  static size_t numberOfNodes();
12064 
12066  static size_t memoryUsage();
12067 
12068  // End of scope which started in IR nodes specific code
12069  /* */
12070 
12071  /* name Internal Functions
12072  \brief Internal functions ... incomplete-documentation
12073 
12074  These functions have been made public as part of the design, but they are suggested for internal use
12075  or by particularly knowledgeable users for specialized tools or applications.
12076 
12077  \internal We could not make these private because they are required by user for special purposes. And
12078  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
12079 
12080  */
12081 
12082  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
12083  // overridden in every class by *generated* implementation
12085  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
12086  // MS: 06/28/02 container of names of variables or container indices
12087  // used used in the traversal to access AST successor nodes
12088  // overridden in every class by *generated* implementation
12091  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
12092 
12093  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
12094  // than all the vector copies. The implementation for these functions is generated for each class.
12096  virtual size_t get_numberOfTraversalSuccessors() override;
12098  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
12100  virtual size_t get_childIndex(SgNode *child) override;
12101 
12102 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
12103  // MS: 08/16/2002 method for generating RTI information
12105  virtual RTIReturnType roseRTI() override;
12106 #endif
12107  /* */
12108 
12109 
12110 
12111  /* name Deprecated Functions
12112  \brief Deprecated functions ... incomplete-documentation
12113 
12114  These functions have been deprecated from use.
12115  */
12116  /* */
12117 
12119  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
12120 
12121  // JJW (10/16/2008): Changed to a single function in Node.code, and put
12122  // getVariant() in #if 0 block to prevent confusing Doxygen
12123 #if 0
12124 
12125  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
12127  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
12128 #endif
12129  /* */
12130 
12131 
12132 
12133 
12134  public:
12135  /* name Traversal Support Functions
12136  \brief Traversal support functions ... incomplete-documentation
12137 
12138  These functions have been made public as part of the design, but they are suggested for internal use
12139  or by particularly knowledgable users for specialized tools or applications.
12140  */
12141  /* */
12142 
12143  // DQ (11/26/2005): Support for visitor pattern mechanims
12144  // (inferior to ROSE traversal mechanism, experimental).
12148 
12149  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
12151  virtual void accept (ROSE_VisitorPattern & visitor) override;
12152 
12153  // DQ (12/26/2005): Support for traversal based on the memory pool
12156  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
12157 
12161 
12162  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
12163  // This traversal helps support internal tools that call static member functions.
12164  // note: this function operates on the memory pools.
12167  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
12168  /* */
12169 
12170 
12171  public:
12172  /* name Memory Allocation Functions
12173  \brief Memory allocations functions ... incomplete-documentation
12174 
12175  These functions have been made public as part of the design, but they are suggested for internal use
12176  or by particularly knowledgable users for specialized tools or applications.
12177  */
12178  /* */
12179 
12190  virtual bool isInMemoryPool() override;
12191 
12202  virtual void checkDataMemberPointersIfInMemoryPool() override;
12203 
12204  // DQ (4/30/2006): Modified to be a const function.
12219  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
12220 
12230  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
12231 
12243  virtual long getChildIndex( SgNode* childNode ) const override;
12244 
12245  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
12246  // comment here (changed to be a C style comment and not be a doxygen comment).
12247  /* \brief Constructor for use by AST File I/O Mechanism
12248 
12249  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
12250  which obtained via fast binary file I/O from disk.
12251  */
12252  // SgSpecialFunctionModifier( SgSpecialFunctionModifierStorageClass& source );
12253 
12254 
12255 
12256 
12257 
12258  // JH (10/24/2005): methods added to support the ast file IO
12259  private:
12260 
12261  /* name AST Memory Allocation Support Functions
12262  \brief Memory allocations support....
12263 
12264  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
12265  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
12266  and support the AST File I/O Mechanism.
12267  */
12268  /* */
12269 
12270  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
12271  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
12272  that I use the same type everywhere, if any changes are made. THe second one declares the type
12273  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
12274  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
12275  a correspinding one in the AST_FILE_IO class!
12276  */
12277  // DQ (9/2/2015): This typedef is no longer used, we can't define the
12278  // comment here (changed to be a C style comment and not be a doxygen comment).
12279  /* \brief Typedef used for low level memory access.
12280  */
12281  // typedef unsigned char* TestType;
12282 
12283  // DQ (9/2/2015): This typedef is no longer used, we can't define the
12284  // comment here (changed to be a C style comment and not be a doxygen comment).
12285  /* \brief Typedef used to hold memory addresses as values.
12286  */
12287  // typedef unsigned long AddressType;
12288 
12289 
12290 
12291  // necessary, to have direct access to the p_freepointer and the private methods !
12293  friend class AST_FILE_IO;
12294 
12296  friend class SgSpecialFunctionModifierStorageClass;
12297 
12299  friend class AstSpecificDataManagingClass;
12300 
12302  friend class AstSpecificDataManagingClassStorageClass;
12303 
12304  public:
12306  SgSpecialFunctionModifier( const SgSpecialFunctionModifierStorageClass& source );
12307 
12308  // private: // JJW hack
12309  /*
12310  name AST Memory Allocation Support Variables
12311  Memory allocations support variables
12312 
12313  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
12314  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
12315  and support the AST File I/O Mechanism.
12316  */
12317  /* */
12318 
12319  public:
12320 
12321  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
12322  // to current node (so that it will work cleanly with build functions to specify patterns).
12323  // virtual SgNode* addRegExpAttribute();
12330 
12331 // *** COMMON CODE SECTION ENDS HERE ***
12332 
12333 
12334 // End of memberFunctionString
12335 // Start of memberFunctionString
12336 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
12337 
12338  // the generated cast function
12339  // friend ROSE_DLL_API SgSpecialFunctionModifier* isSgSpecialFunctionModifier ( SgNode* s );
12340 
12341  typedef SgModifier base_node_type;
12342 
12343 
12344 // End of memberFunctionString
12345 
12346  public:
12347  SgBitVector get_modifierVector() const;
12348  void set_modifierVector(SgBitVector modifierVector);
12349 
12350 
12351  public:
12352  virtual ~SgSpecialFunctionModifier();
12353 
12354 
12355  public:
12357 
12358  protected:
12359 // Start of memberFunctionString
12360 SgBitVector p_modifierVector;
12361 
12362 // End of memberFunctionString
12363 
12364 
12365 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
12366 
12367 
12368  };
12369 #endif
12370 
12371 // postdeclarations for SgSpecialFunctionModifier
12372 
12373 /* #line 12374 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
12374 
12375 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
12376 
12377 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
12378 
12379 
12380 /* #line 12381 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
12381 
12382 
12383 
12384 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
12385 
12386 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
12387 // This code is automatically generated for each
12388 // terminal and non-terminal within the defined
12389 // grammar. There is a simple way to change the
12390 // code to fix bugs etc. See the ROSE README file
12391 // for directions.
12392 
12393 // tps: (02/22/2010): Adding DLL export requirements
12394 #include "rosedll.h"
12395 
12396 // predeclarations for SgElaboratedTypeModifier
12397 
12398 /* #line 12399 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
12399 
12400 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
12401 
12402 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
12403 
12404 #if 1
12405 // Class Definition for SgElaboratedTypeModifier
12406 class ROSE_DLL_API SgElaboratedTypeModifier : public SgModifier
12407  {
12408  public:
12409 
12410 
12411 /* #line 12412 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
12412 
12413  virtual SgNode* copy ( SgCopyHelp& help) const override;
12414 // Start of memberFunctionString
12415 /* #line 2151 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
12416 
12417  // elaborated-type-specifier (class, struct, union, enum, typename, typename template)
12418 
12419  // DQ (4/6/2004): Added to provide uniform support for access modifiers
12427  {
12428  // Only one value can be specified ???
12429  e_unknown = 0,
12430  e_default = 1,
12431  e_class = 2,
12432  e_struct = 3,
12433  e_union = 4,
12434  e_enum = 5,
12435  e_typename = 6,
12436  e_last_modifier
12437  };
12438 
12439  // Copy constructor
12441 
12442  // Assignment Operator
12444 
12445  void post_construction_initialization() override;
12446 
12447  bool isUnknown() const;
12448  void setUnknown();
12449 
12450  bool isDefault() const;
12451  void setDefault();
12452 
12453  bool isClass() const;
12454  void setClass();
12455 
12456  bool isStruct() const;
12457  void setStruct();
12458 
12459  bool isUnion() const;
12460  void setUnion();
12461 
12462  bool isEnum() const;
12463  void setEnum();
12464 
12465  bool isTypename() const;
12466  void setTypename();
12467 
12468  std::string displayString() const;
12469  void display ( std::string label ) const;
12470  friend std::ostream & operator<< ( std::ostream & os, const SgElaboratedTypeModifier & m );
12471  friend bool operator== (const SgElaboratedTypeModifier& lhs, const SgElaboratedTypeModifier& rhs);
12472 
12473  // DQ (2/4/2006): Added mechamism to clear all bits
12474  void reset();
12475 
12476 
12477 
12478 // End of memberFunctionString
12479 // Start of memberFunctionString
12480 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
12481 
12482 // *** COMMON CODE SECTION BEGINS HERE ***
12483 
12484  public:
12485 
12486  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
12487  // and not required which is required to match the other aspects of the copy mechanism code generation.
12488  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
12489  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
12490  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
12491  // virtual SgNode* copy ( const SgCopyHelp & help) const;
12492 
12494  virtual std::string class_name() const override;
12495 
12497  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
12498 
12500  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
12501  // static const VariantT static_variant = V_SgElaboratedTypeModifier;
12502  enum { static_variant = V_SgElaboratedTypeModifier };
12503 
12504  /* the generated cast function */
12506  ROSE_DLL_API friend SgElaboratedTypeModifier* isSgElaboratedTypeModifier( SgNode * s );
12507 
12509  ROSE_DLL_API friend const SgElaboratedTypeModifier* isSgElaboratedTypeModifier( const SgNode * s );
12510 
12511  // ******************************************
12512  // * Memory Pool / New / Delete
12513  // ******************************************
12514 
12515  public:
12517  static const unsigned pool_size; //
12519  static std::vector<unsigned char *> pools; //
12521  static SgElaboratedTypeModifier * next_node; //
12522 
12524  static unsigned long initializeStorageClassArray(SgElaboratedTypeModifierStorageClass *); //
12525 
12527  static void clearMemoryPool(); //
12528  static void deleteMemoryPool(); //
12529 
12531  static void extendMemoryPoolForFileIO(); //
12532 
12534  static SgElaboratedTypeModifier * getPointerFromGlobalIndex(unsigned long); //
12536  static SgElaboratedTypeModifier * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
12537 
12539  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
12541  static void resetValidFreepointers(); //
12543  static unsigned long getNumberOfLastValidPointer(); //
12544 
12545 
12546 #if defined(INLINE_FUNCTIONS)
12547 
12548  inline void *operator new (size_t size);
12549 #else
12550 
12551  void *operator new (size_t size);
12552 #endif
12553 
12554  void operator delete (void* pointer, size_t size);
12555 
12556  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
12557  void operator delete (void* pointer)
12558  {
12559  // This is the generated delete operator...
12560  SgElaboratedTypeModifier::operator delete (pointer,sizeof(SgElaboratedTypeModifier));
12561  }
12562 
12564  static size_t numberOfNodes();
12565 
12567  static size_t memoryUsage();
12568 
12569  // End of scope which started in IR nodes specific code
12570  /* */
12571 
12572  /* name Internal Functions
12573  \brief Internal functions ... incomplete-documentation
12574 
12575  These functions have been made public as part of the design, but they are suggested for internal use
12576  or by particularly knowledgeable users for specialized tools or applications.
12577 
12578  \internal We could not make these private because they are required by user for special purposes. And
12579  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
12580 
12581  */
12582 
12583  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
12584  // overridden in every class by *generated* implementation
12586  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
12587  // MS: 06/28/02 container of names of variables or container indices
12588  // used used in the traversal to access AST successor nodes
12589  // overridden in every class by *generated* implementation
12592  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
12593 
12594  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
12595  // than all the vector copies. The implementation for these functions is generated for each class.
12597  virtual size_t get_numberOfTraversalSuccessors() override;
12599  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
12601  virtual size_t get_childIndex(SgNode *child) override;
12602 
12603 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
12604  // MS: 08/16/2002 method for generating RTI information
12606  virtual RTIReturnType roseRTI() override;
12607 #endif
12608  /* */
12609 
12610 
12611 
12612  /* name Deprecated Functions
12613  \brief Deprecated functions ... incomplete-documentation
12614 
12615  These functions have been deprecated from use.
12616  */
12617  /* */
12618 
12620  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
12621 
12622  // JJW (10/16/2008): Changed to a single function in Node.code, and put
12623  // getVariant() in #if 0 block to prevent confusing Doxygen
12624 #if 0
12625 
12626  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
12628  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
12629 #endif
12630  /* */
12631 
12632 
12633 
12634 
12635  public:
12636  /* name Traversal Support Functions
12637  \brief Traversal support functions ... incomplete-documentation
12638 
12639  These functions have been made public as part of the design, but they are suggested for internal use
12640  or by particularly knowledgable users for specialized tools or applications.
12641  */
12642  /* */
12643 
12644  // DQ (11/26/2005): Support for visitor pattern mechanims
12645  // (inferior to ROSE traversal mechanism, experimental).
12649 
12650  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
12652  virtual void accept (ROSE_VisitorPattern & visitor) override;
12653 
12654  // DQ (12/26/2005): Support for traversal based on the memory pool
12657  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
12658 
12662 
12663  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
12664  // This traversal helps support internal tools that call static member functions.
12665  // note: this function operates on the memory pools.
12668  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
12669  /* */
12670 
12671 
12672  public:
12673  /* name Memory Allocation Functions
12674  \brief Memory allocations functions ... incomplete-documentation
12675 
12676  These functions have been made public as part of the design, but they are suggested for internal use
12677  or by particularly knowledgable users for specialized tools or applications.
12678  */
12679  /* */
12680 
12691  virtual bool isInMemoryPool() override;
12692 
12703  virtual void checkDataMemberPointersIfInMemoryPool() override;
12704 
12705  // DQ (4/30/2006): Modified to be a const function.
12720  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
12721 
12731  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
12732 
12744  virtual long getChildIndex( SgNode* childNode ) const override;
12745 
12746  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
12747  // comment here (changed to be a C style comment and not be a doxygen comment).
12748  /* \brief Constructor for use by AST File I/O Mechanism
12749 
12750  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
12751  which obtained via fast binary file I/O from disk.
12752  */
12753  // SgElaboratedTypeModifier( SgElaboratedTypeModifierStorageClass& source );
12754 
12755 
12756 
12757 
12758 
12759  // JH (10/24/2005): methods added to support the ast file IO
12760  private:
12761 
12762  /* name AST Memory Allocation Support Functions
12763  \brief Memory allocations support....
12764 
12765  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
12766  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
12767  and support the AST File I/O Mechanism.
12768  */
12769  /* */
12770 
12771  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
12772  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
12773  that I use the same type everywhere, if any changes are made. THe second one declares the type
12774  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
12775  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
12776  a correspinding one in the AST_FILE_IO class!
12777  */
12778  // DQ (9/2/2015): This typedef is no longer used, we can't define the
12779  // comment here (changed to be a C style comment and not be a doxygen comment).
12780  /* \brief Typedef used for low level memory access.
12781  */
12782  // typedef unsigned char* TestType;
12783 
12784  // DQ (9/2/2015): This typedef is no longer used, we can't define the
12785  // comment here (changed to be a C style comment and not be a doxygen comment).
12786  /* \brief Typedef used to hold memory addresses as values.
12787  */
12788  // typedef unsigned long AddressType;
12789 
12790 
12791 
12792  // necessary, to have direct access to the p_freepointer and the private methods !
12794  friend class AST_FILE_IO;
12795 
12797  friend class SgElaboratedTypeModifierStorageClass;
12798 
12800  friend class AstSpecificDataManagingClass;
12801 
12803  friend class AstSpecificDataManagingClassStorageClass;
12804 
12805  public:
12807  SgElaboratedTypeModifier( const SgElaboratedTypeModifierStorageClass& source );
12808 
12809  // private: // JJW hack
12810  /*
12811  name AST Memory Allocation Support Variables
12812  Memory allocations support variables
12813 
12814  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
12815  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
12816  and support the AST File I/O Mechanism.
12817  */
12818  /* */
12819 
12820  public:
12821 
12822  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
12823  // to current node (so that it will work cleanly with build functions to specify patterns).
12824  // virtual SgNode* addRegExpAttribute();
12831 
12832 // *** COMMON CODE SECTION ENDS HERE ***
12833 
12834 
12835 // End of memberFunctionString
12836 // Start of memberFunctionString
12837 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
12838 
12839  // the generated cast function
12840  // friend ROSE_DLL_API SgElaboratedTypeModifier* isSgElaboratedTypeModifier ( SgNode* s );
12841 
12842  typedef SgModifier base_node_type;
12843 
12844 
12845 // End of memberFunctionString
12846 
12847  public:
12849  void set_modifier(SgElaboratedTypeModifier::elaborated_type_modifier_enum modifier);
12850 
12851 
12852  public:
12853  virtual ~SgElaboratedTypeModifier();
12854 
12855 
12856  public:
12858 
12859  protected:
12860 // Start of memberFunctionString
12862 
12863 // End of memberFunctionString
12864 
12865 
12866 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
12867 
12868 
12869  };
12870 #endif
12871 
12872 // postdeclarations for SgElaboratedTypeModifier
12873 
12874 /* #line 12875 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
12875 
12876 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
12877 
12878 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
12879 
12880 
12881 /* #line 12882 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
12882 
12883 
12884 
12885 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
12886 
12887 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
12888 // This code is automatically generated for each
12889 // terminal and non-terminal within the defined
12890 // grammar. There is a simple way to change the
12891 // code to fix bugs etc. See the ROSE README file
12892 // for directions.
12893 
12894 // tps: (02/22/2010): Adding DLL export requirements
12895 #include "rosedll.h"
12896 
12897 // predeclarations for SgLinkageModifier
12898 
12899 /* #line 12900 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
12900 
12901 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
12902 
12903 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
12904 
12905 #if 1
12906 // Class Definition for SgLinkageModifier
12907 class ROSE_DLL_API SgLinkageModifier : public SgModifier
12908  {
12909  public:
12910 
12911 
12912 /* #line 12913 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
12913 
12914  virtual SgNode* copy ( SgCopyHelp& help) const override;
12915 // Start of memberFunctionString
12916 /* #line 2213 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
12917 
12918 
12919  // linkage-specification (extern, extern "C", extern "C++", extern "Fortran")
12920 
12921  // DQ (4/6/2004): Added to provide uniform support for access modifiers
12929  {
12930  e_unknown = 0,
12931  e_default = 1,
12932  e_C_linkage = 2,
12933  e_Cpp_linkage = 3,
12934  e_fortran_linkage = 4,
12935  e_fortran90_linkage = 5,
12936  e_last_modifier
12937  };
12938 
12939  // Copy constructor
12940  SgLinkageModifier ( const SgLinkageModifier & X );
12941 
12942  // Assignment Operator
12944 
12945  void post_construction_initialization() override;
12946 
12947  bool isUnknown() const;
12948  void setUnknown();
12949 
12950  bool isDefault() const;
12951  void setDefault();
12952 
12953  bool isC_Linkage() const;
12954  void setC_Linkage();
12955 
12956  bool isCppLinkage() const;
12957  void setCppLinkage();
12958 
12959  bool isFortranLinkage() const;
12960  void setFortranLinkage();
12961 
12962  std::string displayString() const;
12963  void display ( std::string label ) const;
12964  friend std::ostream & operator<< ( std::ostream & os, const SgLinkageModifier & m );
12965  friend bool operator== (const SgLinkageModifier& lhs, const SgLinkageModifier& rhs);
12966 
12967  // DQ (2/4/2006): Added mechamism to clear all bits
12968  void reset();
12969 
12970 
12971 
12972 // End of memberFunctionString
12973 // Start of memberFunctionString
12974 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
12975 
12976 // *** COMMON CODE SECTION BEGINS HERE ***
12977 
12978  public:
12979 
12980  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
12981  // and not required which is required to match the other aspects of the copy mechanism code generation.
12982  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
12983  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
12984  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
12985  // virtual SgNode* copy ( const SgCopyHelp & help) const;
12986 
12988  virtual std::string class_name() const override;
12989 
12991  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
12992 
12994  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
12995  // static const VariantT static_variant = V_SgLinkageModifier;
12996  enum { static_variant = V_SgLinkageModifier };
12997 
12998  /* the generated cast function */
13000  ROSE_DLL_API friend SgLinkageModifier* isSgLinkageModifier( SgNode * s );
13001 
13003  ROSE_DLL_API friend const SgLinkageModifier* isSgLinkageModifier( const SgNode * s );
13004 
13005  // ******************************************
13006  // * Memory Pool / New / Delete
13007  // ******************************************
13008 
13009  public:
13011  static const unsigned pool_size; //
13013  static std::vector<unsigned char *> pools; //
13015  static SgLinkageModifier * next_node; //
13016 
13018  static unsigned long initializeStorageClassArray(SgLinkageModifierStorageClass *); //
13019 
13021  static void clearMemoryPool(); //
13022  static void deleteMemoryPool(); //
13023 
13025  static void extendMemoryPoolForFileIO(); //
13026 
13028  static SgLinkageModifier * getPointerFromGlobalIndex(unsigned long); //
13030  static SgLinkageModifier * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
13031 
13033  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
13035  static void resetValidFreepointers(); //
13037  static unsigned long getNumberOfLastValidPointer(); //
13038 
13039 
13040 #if defined(INLINE_FUNCTIONS)
13041 
13042  inline void *operator new (size_t size);
13043 #else
13044 
13045  void *operator new (size_t size);
13046 #endif
13047 
13048  void operator delete (void* pointer, size_t size);
13049 
13050  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
13051  void operator delete (void* pointer)
13052  {
13053  // This is the generated delete operator...
13054  SgLinkageModifier::operator delete (pointer,sizeof(SgLinkageModifier));
13055  }
13056 
13058  static size_t numberOfNodes();
13059 
13061  static size_t memoryUsage();
13062 
13063  // End of scope which started in IR nodes specific code
13064  /* */
13065 
13066  /* name Internal Functions
13067  \brief Internal functions ... incomplete-documentation
13068 
13069  These functions have been made public as part of the design, but they are suggested for internal use
13070  or by particularly knowledgeable users for specialized tools or applications.
13071 
13072  \internal We could not make these private because they are required by user for special purposes. And
13073  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
13074 
13075  */
13076 
13077  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
13078  // overridden in every class by *generated* implementation
13080  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
13081  // MS: 06/28/02 container of names of variables or container indices
13082  // used used in the traversal to access AST successor nodes
13083  // overridden in every class by *generated* implementation
13086  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
13087 
13088  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
13089  // than all the vector copies. The implementation for these functions is generated for each class.
13091  virtual size_t get_numberOfTraversalSuccessors() override;
13093  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
13095  virtual size_t get_childIndex(SgNode *child) override;
13096 
13097 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
13098  // MS: 08/16/2002 method for generating RTI information
13100  virtual RTIReturnType roseRTI() override;
13101 #endif
13102  /* */
13103 
13104 
13105 
13106  /* name Deprecated Functions
13107  \brief Deprecated functions ... incomplete-documentation
13108 
13109  These functions have been deprecated from use.
13110  */
13111  /* */
13112 
13114  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
13115 
13116  // JJW (10/16/2008): Changed to a single function in Node.code, and put
13117  // getVariant() in #if 0 block to prevent confusing Doxygen
13118 #if 0
13119 
13120  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
13122  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
13123 #endif
13124  /* */
13125 
13126 
13127 
13128 
13129  public:
13130  /* name Traversal Support Functions
13131  \brief Traversal support functions ... incomplete-documentation
13132 
13133  These functions have been made public as part of the design, but they are suggested for internal use
13134  or by particularly knowledgable users for specialized tools or applications.
13135  */
13136  /* */
13137 
13138  // DQ (11/26/2005): Support for visitor pattern mechanims
13139  // (inferior to ROSE traversal mechanism, experimental).
13143 
13144  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
13146  virtual void accept (ROSE_VisitorPattern & visitor) override;
13147 
13148  // DQ (12/26/2005): Support for traversal based on the memory pool
13151  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
13152 
13156 
13157  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
13158  // This traversal helps support internal tools that call static member functions.
13159  // note: this function operates on the memory pools.
13162  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
13163  /* */
13164 
13165 
13166  public:
13167  /* name Memory Allocation Functions
13168  \brief Memory allocations functions ... incomplete-documentation
13169 
13170  These functions have been made public as part of the design, but they are suggested for internal use
13171  or by particularly knowledgable users for specialized tools or applications.
13172  */
13173  /* */
13174 
13185  virtual bool isInMemoryPool() override;
13186 
13197  virtual void checkDataMemberPointersIfInMemoryPool() override;
13198 
13199  // DQ (4/30/2006): Modified to be a const function.
13214  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
13215 
13225  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
13226 
13238  virtual long getChildIndex( SgNode* childNode ) const override;
13239 
13240  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
13241  // comment here (changed to be a C style comment and not be a doxygen comment).
13242  /* \brief Constructor for use by AST File I/O Mechanism
13243 
13244  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
13245  which obtained via fast binary file I/O from disk.
13246  */
13247  // SgLinkageModifier( SgLinkageModifierStorageClass& source );
13248 
13249 
13250 
13251 
13252 
13253  // JH (10/24/2005): methods added to support the ast file IO
13254  private:
13255 
13256  /* name AST Memory Allocation Support Functions
13257  \brief Memory allocations support....
13258 
13259  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
13260  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
13261  and support the AST File I/O Mechanism.
13262  */
13263  /* */
13264 
13265  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
13266  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
13267  that I use the same type everywhere, if any changes are made. THe second one declares the type
13268  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
13269  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
13270  a correspinding one in the AST_FILE_IO class!
13271  */
13272  // DQ (9/2/2015): This typedef is no longer used, we can't define the
13273  // comment here (changed to be a C style comment and not be a doxygen comment).
13274  /* \brief Typedef used for low level memory access.
13275  */
13276  // typedef unsigned char* TestType;
13277 
13278  // DQ (9/2/2015): This typedef is no longer used, we can't define the
13279  // comment here (changed to be a C style comment and not be a doxygen comment).
13280  /* \brief Typedef used to hold memory addresses as values.
13281  */
13282  // typedef unsigned long AddressType;
13283 
13284 
13285 
13286  // necessary, to have direct access to the p_freepointer and the private methods !
13288  friend class AST_FILE_IO;
13289 
13291  friend class SgLinkageModifierStorageClass;
13292 
13294  friend class AstSpecificDataManagingClass;
13295 
13297  friend class AstSpecificDataManagingClassStorageClass;
13298 
13299  public:
13301  SgLinkageModifier( const SgLinkageModifierStorageClass& source );
13302 
13303  // private: // JJW hack
13304  /*
13305  name AST Memory Allocation Support Variables
13306  Memory allocations support variables
13307 
13308  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
13309  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
13310  and support the AST File I/O Mechanism.
13311  */
13312  /* */
13313 
13314  public:
13315 
13316  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
13317  // to current node (so that it will work cleanly with build functions to specify patterns).
13318  // virtual SgNode* addRegExpAttribute();
13325 
13326 // *** COMMON CODE SECTION ENDS HERE ***
13327 
13328 
13329 // End of memberFunctionString
13330 // Start of memberFunctionString
13331 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
13332 
13333  // the generated cast function
13334  // friend ROSE_DLL_API SgLinkageModifier* isSgLinkageModifier ( SgNode* s );
13335 
13336  typedef SgModifier base_node_type;
13337 
13338 
13339 // End of memberFunctionString
13340 
13341  public:
13342  SgLinkageModifier::linkage_modifier_enum get_modifier() const;
13343  void set_modifier(SgLinkageModifier::linkage_modifier_enum modifier);
13344 
13345 
13346  public:
13347  virtual ~SgLinkageModifier();
13348 
13349 
13350  public:
13351  SgLinkageModifier();
13352 
13353  protected:
13354 // Start of memberFunctionString
13356 
13357 // End of memberFunctionString
13358 
13359 
13360 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
13361 
13362 
13363  };
13364 #endif
13365 
13366 // postdeclarations for SgLinkageModifier
13367 
13368 /* #line 13369 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
13369 
13370 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
13371 
13372 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
13373 
13374 
13375 /* #line 13376 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
13376 
13377 
13378 
13379 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
13380 
13381 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
13382 // This code is automatically generated for each
13383 // terminal and non-terminal within the defined
13384 // grammar. There is a simple way to change the
13385 // code to fix bugs etc. See the ROSE README file
13386 // for directions.
13387 
13388 // tps: (02/22/2010): Adding DLL export requirements
13389 #include "rosedll.h"
13390 
13391 // predeclarations for SgBaseClassModifier
13392 
13393 /* #line 13394 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
13394 
13395 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
13396 
13397 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
13398 
13399 #if 1
13400 // Class Definition for SgBaseClassModifier
13401 class ROSE_DLL_API SgBaseClassModifier : public SgModifier
13402  {
13403  public:
13404 
13405 
13406 /* #line 13407 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
13407 
13408  virtual SgNode* copy ( SgCopyHelp& help) const override;
13409 // Start of memberFunctionString
13410 /* #line 2268 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
13411 
13412  // base-class-specifier (virtual, access specifiers)
13413 
13414  // DQ (4/6/2004): Added to provide uniform support for access modifiers
13422  {
13423  // Only one value can be specified (at least in C, what about C++)
13424  e_unknown = 0,
13425  e_default = 1,
13426  e_virtual = 2,
13427  e_last_modifier
13428  };
13429 
13430  // Copy constructor
13432 
13433  // Assignment Operator
13435 
13436  void post_construction_initialization() override;
13437 
13438  SgAccessModifier & get_accessModifier();
13439  const SgAccessModifier & get_accessModifier() const;
13440 
13441  bool isUnknown() const;
13442  void setUnknown();
13443 
13444  bool isDefault() const;
13445  void setDefault();
13446 
13447  bool isVirtual() const;
13448  void setVirtual();
13449 
13450  std::string displayString() const;
13451  void display ( std::string label ) const;
13452  friend std::ostream & operator<< ( std::ostream & os, const SgBaseClassModifier & m );
13453  friend bool operator== (const SgBaseClassModifier& lhs, const SgBaseClassModifier& rhs);
13454 
13455  // DQ (2/4/2006): Added mechamism to clear all bits
13456  void reset();
13457 
13458 
13459 
13460 // End of memberFunctionString
13461 // Start of memberFunctionString
13462 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
13463 
13464 // *** COMMON CODE SECTION BEGINS HERE ***
13465 
13466  public:
13467 
13468  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
13469  // and not required which is required to match the other aspects of the copy mechanism code generation.
13470  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
13471  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
13472  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
13473  // virtual SgNode* copy ( const SgCopyHelp & help) const;
13474 
13476  virtual std::string class_name() const override;
13477 
13479  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
13480 
13482  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
13483  // static const VariantT static_variant = V_SgBaseClassModifier;
13484  enum { static_variant = V_SgBaseClassModifier };
13485 
13486  /* the generated cast function */
13488  ROSE_DLL_API friend SgBaseClassModifier* isSgBaseClassModifier( SgNode * s );
13489 
13491  ROSE_DLL_API friend const SgBaseClassModifier* isSgBaseClassModifier( const SgNode * s );
13492 
13493  // ******************************************
13494  // * Memory Pool / New / Delete
13495  // ******************************************
13496 
13497  public:
13499  static const unsigned pool_size; //
13501  static std::vector<unsigned char *> pools; //
13503  static SgBaseClassModifier * next_node; //
13504 
13506  static unsigned long initializeStorageClassArray(SgBaseClassModifierStorageClass *); //
13507 
13509  static void clearMemoryPool(); //
13510  static void deleteMemoryPool(); //
13511 
13513  static void extendMemoryPoolForFileIO(); //
13514 
13516  static SgBaseClassModifier * getPointerFromGlobalIndex(unsigned long); //
13518  static SgBaseClassModifier * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
13519 
13521  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
13523  static void resetValidFreepointers(); //
13525  static unsigned long getNumberOfLastValidPointer(); //
13526 
13527 
13528 #if defined(INLINE_FUNCTIONS)
13529 
13530  inline void *operator new (size_t size);
13531 #else
13532 
13533  void *operator new (size_t size);
13534 #endif
13535 
13536  void operator delete (void* pointer, size_t size);
13537 
13538  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
13539  void operator delete (void* pointer)
13540  {
13541  // This is the generated delete operator...
13542  SgBaseClassModifier::operator delete (pointer,sizeof(SgBaseClassModifier));
13543  }
13544 
13546  static size_t numberOfNodes();
13547 
13549  static size_t memoryUsage();
13550 
13551  // End of scope which started in IR nodes specific code
13552  /* */
13553 
13554  /* name Internal Functions
13555  \brief Internal functions ... incomplete-documentation
13556 
13557  These functions have been made public as part of the design, but they are suggested for internal use
13558  or by particularly knowledgeable users for specialized tools or applications.
13559 
13560  \internal We could not make these private because they are required by user for special purposes. And
13561  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
13562 
13563  */
13564 
13565  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
13566  // overridden in every class by *generated* implementation
13568  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
13569  // MS: 06/28/02 container of names of variables or container indices
13570  // used used in the traversal to access AST successor nodes
13571  // overridden in every class by *generated* implementation
13574  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
13575 
13576  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
13577  // than all the vector copies. The implementation for these functions is generated for each class.
13579  virtual size_t get_numberOfTraversalSuccessors() override;
13581  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
13583  virtual size_t get_childIndex(SgNode *child) override;
13584 
13585 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
13586  // MS: 08/16/2002 method for generating RTI information
13588  virtual RTIReturnType roseRTI() override;
13589 #endif
13590  /* */
13591 
13592 
13593 
13594  /* name Deprecated Functions
13595  \brief Deprecated functions ... incomplete-documentation
13596 
13597  These functions have been deprecated from use.
13598  */
13599  /* */
13600 
13602  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
13603 
13604  // JJW (10/16/2008): Changed to a single function in Node.code, and put
13605  // getVariant() in #if 0 block to prevent confusing Doxygen
13606 #if 0
13607 
13608  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
13610  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
13611 #endif
13612  /* */
13613 
13614 
13615 
13616 
13617  public:
13618  /* name Traversal Support Functions
13619  \brief Traversal support functions ... incomplete-documentation
13620 
13621  These functions have been made public as part of the design, but they are suggested for internal use
13622  or by particularly knowledgable users for specialized tools or applications.
13623  */
13624  /* */
13625 
13626  // DQ (11/26/2005): Support for visitor pattern mechanims
13627  // (inferior to ROSE traversal mechanism, experimental).
13631 
13632  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
13634  virtual void accept (ROSE_VisitorPattern & visitor) override;
13635 
13636  // DQ (12/26/2005): Support for traversal based on the memory pool
13639  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
13640 
13644 
13645  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
13646  // This traversal helps support internal tools that call static member functions.
13647  // note: this function operates on the memory pools.
13650  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
13651  /* */
13652 
13653 
13654  public:
13655  /* name Memory Allocation Functions
13656  \brief Memory allocations functions ... incomplete-documentation
13657 
13658  These functions have been made public as part of the design, but they are suggested for internal use
13659  or by particularly knowledgable users for specialized tools or applications.
13660  */
13661  /* */
13662 
13673  virtual bool isInMemoryPool() override;
13674 
13685  virtual void checkDataMemberPointersIfInMemoryPool() override;
13686 
13687  // DQ (4/30/2006): Modified to be a const function.
13702  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
13703 
13713  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
13714 
13726  virtual long getChildIndex( SgNode* childNode ) const override;
13727 
13728  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
13729  // comment here (changed to be a C style comment and not be a doxygen comment).
13730  /* \brief Constructor for use by AST File I/O Mechanism
13731 
13732  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
13733  which obtained via fast binary file I/O from disk.
13734  */
13735  // SgBaseClassModifier( SgBaseClassModifierStorageClass& source );
13736 
13737 
13738 
13739 
13740 
13741  // JH (10/24/2005): methods added to support the ast file IO
13742  private:
13743 
13744  /* name AST Memory Allocation Support Functions
13745  \brief Memory allocations support....
13746 
13747  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
13748  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
13749  and support the AST File I/O Mechanism.
13750  */
13751  /* */
13752 
13753  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
13754  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
13755  that I use the same type everywhere, if any changes are made. THe second one declares the type
13756  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
13757  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
13758  a correspinding one in the AST_FILE_IO class!
13759  */
13760  // DQ (9/2/2015): This typedef is no longer used, we can't define the
13761  // comment here (changed to be a C style comment and not be a doxygen comment).
13762  /* \brief Typedef used for low level memory access.
13763  */
13764  // typedef unsigned char* TestType;
13765 
13766  // DQ (9/2/2015): This typedef is no longer used, we can't define the
13767  // comment here (changed to be a C style comment and not be a doxygen comment).
13768  /* \brief Typedef used to hold memory addresses as values.
13769  */
13770  // typedef unsigned long AddressType;
13771 
13772 
13773 
13774  // necessary, to have direct access to the p_freepointer and the private methods !
13776  friend class AST_FILE_IO;
13777 
13779  friend class SgBaseClassModifierStorageClass;
13780 
13782  friend class AstSpecificDataManagingClass;
13783 
13785  friend class AstSpecificDataManagingClassStorageClass;
13786 
13787  public:
13789  SgBaseClassModifier( const SgBaseClassModifierStorageClass& source );
13790 
13791  // private: // JJW hack
13792  /*
13793  name AST Memory Allocation Support Variables
13794  Memory allocations support variables
13795 
13796  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
13797  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
13798  and support the AST File I/O Mechanism.
13799  */
13800  /* */
13801 
13802  public:
13803 
13804  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
13805  // to current node (so that it will work cleanly with build functions to specify patterns).
13806  // virtual SgNode* addRegExpAttribute();
13813 
13814 // *** COMMON CODE SECTION ENDS HERE ***
13815 
13816 
13817 // End of memberFunctionString
13818 // Start of memberFunctionString
13819 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
13820 
13821  // the generated cast function
13822  // friend ROSE_DLL_API SgBaseClassModifier* isSgBaseClassModifier ( SgNode* s );
13823 
13824  typedef SgModifier base_node_type;
13825 
13826 
13827 // End of memberFunctionString
13828 
13829  public:
13830  SgBaseClassModifier::baseclass_modifier_enum get_modifier() const;
13831  void set_modifier(SgBaseClassModifier::baseclass_modifier_enum modifier);
13832 
13833 
13834 
13835  public:
13836  virtual ~SgBaseClassModifier();
13837 
13838 
13839  public:
13841 
13842  protected:
13843 // Start of memberFunctionString
13845 
13846 // End of memberFunctionString
13847 // Start of memberFunctionString
13848 SgAccessModifier p_accessModifier;
13849 
13850 // End of memberFunctionString
13851 
13852 
13853 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
13854 
13855 
13856  };
13857 #endif
13858 
13859 // postdeclarations for SgBaseClassModifier
13860 
13861 /* #line 13862 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
13862 
13863 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
13864 
13865 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
13866 
13867 
13868 /* #line 13869 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
13869 
13870 
13871 
13872 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
13873 
13874 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
13875 // This code is automatically generated for each
13876 // terminal and non-terminal within the defined
13877 // grammar. There is a simple way to change the
13878 // code to fix bugs etc. See the ROSE README file
13879 // for directions.
13880 
13881 // tps: (02/22/2010): Adding DLL export requirements
13882 #include "rosedll.h"
13883 
13884 // predeclarations for SgStructureModifier
13885 
13886 /* #line 13887 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
13887 
13888 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
13889 
13890 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
13891 
13892 #if 1
13893 // Class Definition for SgStructureModifier
13894 class ROSE_DLL_API SgStructureModifier : public SgModifier
13895  {
13896  public:
13897 
13898 
13899 /* #line 13900 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
13900 
13901  virtual SgNode* copy ( SgCopyHelp& help) const override;
13902 // Start of memberFunctionString
13903 /* #line 1410 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
13904 
13905 
13906  // Jovial structure specifiers (unspecified, parallel, tight)
13907 
13915  {
13920  e_last_modifier
13921  };
13922 
13923  // Copy constructor
13925 
13926  // Assignment Operator
13928 
13929  void post_construction_initialization() override;
13930 
13931  bool isUnknown() const;
13932  void setUnknown();
13933 
13934  bool isDefault() const;
13935  void setDefault();
13936 
13937  bool isParallel() const;
13938  void setParallel();
13939 
13940  bool isTight() const;
13941  void setTight();
13942 
13943  std::string displayString() const;
13944  void display ( std::string label ) const;
13945  friend std::ostream & operator<< ( std::ostream & os, const SgStructureModifier & m );
13946  friend bool operator== (const SgStructureModifier& lhs, const SgStructureModifier& rhs);
13947 
13948  // Clear all bits
13949  void reset();
13950 
13951 
13952 
13953 // End of memberFunctionString
13954 // Start of memberFunctionString
13955 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
13956 
13957 // *** COMMON CODE SECTION BEGINS HERE ***
13958 
13959  public:
13960 
13961  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
13962  // and not required which is required to match the other aspects of the copy mechanism code generation.
13963  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
13964  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
13965  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
13966  // virtual SgNode* copy ( const SgCopyHelp & help) const;
13967 
13969  virtual std::string class_name() const override;
13970 
13972  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
13973 
13975  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
13976  // static const VariantT static_variant = V_SgStructureModifier;
13977  enum { static_variant = V_SgStructureModifier };
13978 
13979  /* the generated cast function */
13981  ROSE_DLL_API friend SgStructureModifier* isSgStructureModifier( SgNode * s );
13982 
13984  ROSE_DLL_API friend const SgStructureModifier* isSgStructureModifier( const SgNode * s );
13985 
13986  // ******************************************
13987  // * Memory Pool / New / Delete
13988  // ******************************************
13989 
13990  public:
13992  static const unsigned pool_size; //
13994  static std::vector<unsigned char *> pools; //
13996  static SgStructureModifier * next_node; //
13997 
13999  static unsigned long initializeStorageClassArray(SgStructureModifierStorageClass *); //
14000 
14002  static void clearMemoryPool(); //
14003  static void deleteMemoryPool(); //
14004 
14006  static void extendMemoryPoolForFileIO(); //
14007 
14009  static SgStructureModifier * getPointerFromGlobalIndex(unsigned long); //
14011  static SgStructureModifier * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
14012 
14014  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
14016  static void resetValidFreepointers(); //
14018  static unsigned long getNumberOfLastValidPointer(); //
14019 
14020 
14021 #if defined(INLINE_FUNCTIONS)
14022 
14023  inline void *operator new (size_t size);
14024 #else
14025 
14026  void *operator new (size_t size);
14027 #endif
14028 
14029  void operator delete (void* pointer, size_t size);
14030 
14031  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
14032  void operator delete (void* pointer)
14033  {
14034  // This is the generated delete operator...
14035  SgStructureModifier::operator delete (pointer,sizeof(SgStructureModifier));
14036  }
14037 
14039  static size_t numberOfNodes();
14040 
14042  static size_t memoryUsage();
14043 
14044  // End of scope which started in IR nodes specific code
14045  /* */
14046 
14047  /* name Internal Functions
14048  \brief Internal functions ... incomplete-documentation
14049 
14050  These functions have been made public as part of the design, but they are suggested for internal use
14051  or by particularly knowledgeable users for specialized tools or applications.
14052 
14053  \internal We could not make these private because they are required by user for special purposes. And
14054  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
14055 
14056  */
14057 
14058  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
14059  // overridden in every class by *generated* implementation
14061  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
14062  // MS: 06/28/02 container of names of variables or container indices
14063  // used used in the traversal to access AST successor nodes
14064  // overridden in every class by *generated* implementation
14067  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
14068 
14069  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
14070  // than all the vector copies. The implementation for these functions is generated for each class.
14072  virtual size_t get_numberOfTraversalSuccessors() override;
14074  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
14076  virtual size_t get_childIndex(SgNode *child) override;
14077 
14078 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
14079  // MS: 08/16/2002 method for generating RTI information
14081  virtual RTIReturnType roseRTI() override;
14082 #endif
14083  /* */
14084 
14085 
14086 
14087  /* name Deprecated Functions
14088  \brief Deprecated functions ... incomplete-documentation
14089 
14090  These functions have been deprecated from use.
14091  */
14092  /* */
14093 
14095  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
14096 
14097  // JJW (10/16/2008): Changed to a single function in Node.code, and put
14098  // getVariant() in #if 0 block to prevent confusing Doxygen
14099 #if 0
14100 
14101  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
14103  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
14104 #endif
14105  /* */
14106 
14107 
14108 
14109 
14110  public:
14111  /* name Traversal Support Functions
14112  \brief Traversal support functions ... incomplete-documentation
14113 
14114  These functions have been made public as part of the design, but they are suggested for internal use
14115  or by particularly knowledgable users for specialized tools or applications.
14116  */
14117  /* */
14118 
14119  // DQ (11/26/2005): Support for visitor pattern mechanims
14120  // (inferior to ROSE traversal mechanism, experimental).
14124 
14125  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
14127  virtual void accept (ROSE_VisitorPattern & visitor) override;
14128 
14129  // DQ (12/26/2005): Support for traversal based on the memory pool
14132  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
14133 
14137 
14138  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
14139  // This traversal helps support internal tools that call static member functions.
14140  // note: this function operates on the memory pools.
14143  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
14144  /* */
14145 
14146 
14147  public:
14148  /* name Memory Allocation Functions
14149  \brief Memory allocations functions ... incomplete-documentation
14150 
14151  These functions have been made public as part of the design, but they are suggested for internal use
14152  or by particularly knowledgable users for specialized tools or applications.
14153  */
14154  /* */
14155 
14166  virtual bool isInMemoryPool() override;
14167 
14178  virtual void checkDataMemberPointersIfInMemoryPool() override;
14179 
14180  // DQ (4/30/2006): Modified to be a const function.
14195  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
14196 
14206  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
14207 
14219  virtual long getChildIndex( SgNode* childNode ) const override;
14220 
14221  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
14222  // comment here (changed to be a C style comment and not be a doxygen comment).
14223  /* \brief Constructor for use by AST File I/O Mechanism
14224 
14225  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
14226  which obtained via fast binary file I/O from disk.
14227  */
14228  // SgStructureModifier( SgStructureModifierStorageClass& source );
14229 
14230 
14231 
14232 
14233 
14234  // JH (10/24/2005): methods added to support the ast file IO
14235  private:
14236 
14237  /* name AST Memory Allocation Support Functions
14238  \brief Memory allocations support....
14239 
14240  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
14241  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
14242  and support the AST File I/O Mechanism.
14243  */
14244  /* */
14245 
14246  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
14247  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
14248  that I use the same type everywhere, if any changes are made. THe second one declares the type
14249  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
14250  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
14251  a correspinding one in the AST_FILE_IO class!
14252  */
14253  // DQ (9/2/2015): This typedef is no longer used, we can't define the
14254  // comment here (changed to be a C style comment and not be a doxygen comment).
14255  /* \brief Typedef used for low level memory access.
14256  */
14257  // typedef unsigned char* TestType;
14258 
14259  // DQ (9/2/2015): This typedef is no longer used, we can't define the
14260  // comment here (changed to be a C style comment and not be a doxygen comment).
14261  /* \brief Typedef used to hold memory addresses as values.
14262  */
14263  // typedef unsigned long AddressType;
14264 
14265 
14266 
14267  // necessary, to have direct access to the p_freepointer and the private methods !
14269  friend class AST_FILE_IO;
14270 
14272  friend class SgStructureModifierStorageClass;
14273 
14275  friend class AstSpecificDataManagingClass;
14276 
14278  friend class AstSpecificDataManagingClassStorageClass;
14279 
14280  public:
14282  SgStructureModifier( const SgStructureModifierStorageClass& source );
14283 
14284  // private: // JJW hack
14285  /*
14286  name AST Memory Allocation Support Variables
14287  Memory allocations support variables
14288 
14289  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
14290  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
14291  and support the AST File I/O Mechanism.
14292  */
14293  /* */
14294 
14295  public:
14296 
14297  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
14298  // to current node (so that it will work cleanly with build functions to specify patterns).
14299  // virtual SgNode* addRegExpAttribute();
14306 
14307 // *** COMMON CODE SECTION ENDS HERE ***
14308 
14309 
14310 // End of memberFunctionString
14311 // Start of memberFunctionString
14312 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
14313 
14314  // the generated cast function
14315  // friend ROSE_DLL_API SgStructureModifier* isSgStructureModifier ( SgNode* s );
14316 
14317  typedef SgModifier base_node_type;
14318 
14319 
14320 // End of memberFunctionString
14321 
14322  public:
14324  void set_modifier(SgStructureModifier::jovial_structure_modifier_enum modifier);
14325 
14326  public:
14327  int get_bits_per_entry() const;
14328  void set_bits_per_entry(int bits_per_entry);
14329 
14330 
14331  public:
14332  virtual ~SgStructureModifier();
14333 
14334 
14335  public:
14337 
14338  protected:
14339 // Start of memberFunctionString
14341 
14342 // End of memberFunctionString
14343 // Start of memberFunctionString
14344 int p_bits_per_entry;
14345 
14346 // End of memberFunctionString
14347 
14348 
14349 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
14350 
14351 
14352  };
14353 #endif
14354 
14355 // postdeclarations for SgStructureModifier
14356 
14357 /* #line 14358 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
14358 
14359 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
14360 
14361 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
14362 
14363 
14364 /* #line 14365 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
14365 
14366 
14367 
14368 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
14369 
14370 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
14371 // This code is automatically generated for each
14372 // terminal and non-terminal within the defined
14373 // grammar. There is a simple way to change the
14374 // code to fix bugs etc. See the ROSE README file
14375 // for directions.
14376 
14377 // tps: (02/22/2010): Adding DLL export requirements
14378 #include "rosedll.h"
14379 
14380 // predeclarations for SgTypeModifier
14381 
14382 /* #line 14383 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
14383 
14384 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
14385 
14386 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
14387 
14388 #if 1
14389 // Class Definition for SgTypeModifier
14390 class ROSE_DLL_API SgTypeModifier : public SgModifier
14391  {
14392  public:
14393 
14394 
14395 /* #line 14396 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
14396 
14397  virtual SgNode* copy ( SgCopyHelp& help) const override;
14398 // Start of memberFunctionString
14399 /* #line 1774 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
14400 
14401 
14402  // type specifier (elaborated-type-specifier, cv-qualifier, restrict)
14403 
14404  // DQ (9/7/2007): Added Fortran specific values to handle Fortran attribute specifiers.
14405  // DQ (4/6/2004): Added to provide uniform support for type modifiers
14415  {
14416  e_unknown = 0,
14417  e_default = 1,
14418  e_restrict = 2,
14420  // Fortran specific modifiers (in Fortran these are called attribute specifiers)
14421  // Note that public and private access attributes are mapped to the C/C++ access modifiers in SgDeclarationModifier
14422  // e_public_access = 3, /*!< public qualifier (for Fortran 90) */
14423  // e_private_access = 4, /*!< private qualifier (for Fortran 90) */
14424  e_allocatable = 3,
14425  e_asynchronous = 4,
14426  e_bind = 5,
14427  e_data = 6,
14428  e_dimension = 7,
14429  // This should map to the C/C++ extern modifier in SgStorageModifier
14430  // e_external = x, /*!< external attribute specifier (for Fortran 77, this is less related to the SgLinkageModifier than the SgStorageModifier) */
14431  e_intent_in = 8,
14432  e_intent_out = 9,
14433  e_intent_inout = 10,
14434  e_intrinsic = 11,
14435  e_optional = 12,
14437  // DQ (8/28/2010): Added support for Fortran 90 type attributes (bind already present, and access-spec handled by C/C++ access modifiers in SgDeclarationModifier
14438  e_extends = 13,
14439  e_abstract = 14,
14441  // This should map to const in the SgConstVolatileModifier
14442  // e_parameter = xx,/*!< parameter attribute specifier (for Fortran 77) */
14443 
14444  // This should be mapped to the SgPointerType in C/C++
14445  // e_pointer = xx,/*!< pointer attribute specifier (for Fortran 90) */
14446  // Note that protected access attribute is mapped to the C/C++ protected access modifiers in SgDeclarationModifier
14447  // e_protected = xx,/*!< protected attribute specifier (for Fortran 2003) */
14448  e_save = 15,
14449  e_target = 16,
14450  e_value = 17,
14451  // This should map to volatile in the SgConstVolatileModifier
14452  // e_volatile = xx,/*!< volatile attribute specifier (for Fortran 2003) */
14453 
14454  // DQ (12/4/2007): Added support for GNU specific attributes
14455  e_gnu_attribute__unused__ = 18,
14456  e_gnu_attribute__packed__ = 19,
14457  e_gnu_attribute__deprecated__ = 20,
14458  e_gnu_attribute__transparent_union__ = 21,
14459  e_gnu_attribute__noreturn__ = 22,
14460  e_gnu_attribute__const__ = 23,
14461  e_gnu_attribute__cdecl__ = 24,
14462  e_gnu_attribute__stdcall__ = 25,
14464  // DQ (1/3/2009): New GNU attributes not previously supported in ROSE
14465  e_gnu_attribute__warn_unused_result__ = 26,
14466  e_gnu_attribute__nonnull__ = 27,
14467  e_gnu_attribute__sentinel__ = 28,
14469  // TV (02/27/2012): Address space modifer
14470  e_address_space__ = 29,
14472  // TV (02/27/2012): OpenCL related Modifier
14473  e_ocl_global__ = 30,
14474  e_ocl_local__ = 31,
14475  e_ocl_constant__ = 32,
14477  // TV (03/03/2012): Address space modifer
14478  e_vector_type__ = 33,
14480  // DQ (1/24/2016): New GNU attributes not previously supported in ROSE (added to support custom device specification on types).
14481  // This is part of an experiment to support a new feature in CUDA that would allow device specification in the function parameter type.
14482  // I am not certain that it should not already exist, but we don't have it implemented in ROSE. EDG appears to drop the "__device__"
14483  // keyword, so I am trying to capture it as an attribute.
14484  e_gnu_attribute__device__ = 34,
14486  // Rasmussen (3/1/2020): numeric type specifiers for Jovial
14487  e_round = 35,
14488  e_truncate = 36,
14489  e_truncate_towards_zero = 37,
14491  // PP (7/7/21): add support for Ada aliased declarations
14492  e_aliased = 38,
14494  // Last attribute enum (used for internal bounds checking)
14495  e_last_modifier
14496  };
14497 
14498  // DQ (12/4/2007): Added support for gnu attributes representing machine modes (for types)
14507  {
14508  e_gnu_extension_machine_mode_unknown = 0,
14509  e_gnu_extension_machine_mode_unspecified = 1,
14510  e_gnu_extension_machine_mode_BImode = 2,
14511  e_gnu_extension_machine_mode_QImode = 3,
14512  e_gnu_extension_machine_mode_HImode = 4,
14513  e_gnu_extension_machine_mode_PSImode = 5,
14514  e_gnu_extension_machine_mode_SImode = 6,
14515  e_gnu_extension_machine_mode_PDImode = 7,
14516  e_gnu_extension_machine_mode_DImode = 8,
14517  e_gnu_extension_machine_mode_TImode = 9,
14518  e_gnu_extension_machine_mode_OImode = 10,
14519  e_gnu_extension_machine_mode_QFmode = 11,
14520  e_gnu_extension_machine_mode_HFmode = 12,
14521  e_gnu_extension_machine_mode_TQFmode = 13,
14522  e_gnu_extension_machine_mode_SFmode = 14,
14523  e_gnu_extension_machine_mode_DFmode = 15,
14524  e_gnu_extension_machine_mode_XFmode = 16,
14525  e_gnu_extension_machine_mode_SDmode = 17,
14526  e_gnu_extension_machine_mode_DDmode = 18,
14527  e_gnu_extension_machine_mode_TDmode = 19,
14528  e_gnu_extension_machine_mode_TFmode = 20,
14529  e_gnu_extension_machine_mode_QQmode = 21,
14530  e_gnu_extension_machine_mode_HQmode = 22,
14531  e_gnu_extension_machine_mode_SQmode = 23,
14532  e_gnu_extension_machine_mode_DQmode = 24,
14533  e_gnu_extension_machine_mode_TQmode = 25,
14534  e_gnu_extension_machine_mode_UQQmode = 26,
14535  e_gnu_extension_machine_mode_UHQmode = 27,
14536  e_gnu_extension_machine_mode_USQmode = 28,
14537  e_gnu_extension_machine_mode_UDQmode = 29,
14538  e_gnu_extension_machine_mode_UTQmode = 30,
14539  e_gnu_extension_machine_mode_HAmode = 31,
14540  e_gnu_extension_machine_mode_SAmode = 32,
14541  e_gnu_extension_machine_mode_DAmode = 33,
14542  e_gnu_extension_machine_mode_TAmode = 34,
14543  e_gnu_extension_machine_mode_UHAmode = 35,
14544  e_gnu_extension_machine_mode_USAmode = 36,
14545  e_gnu_extension_machine_mode_UDAmode = 37,
14546  e_gnu_extension_machine_mode_UTAmode = 38,
14547  e_gnu_extension_machine_mode_CCmode = 39,
14548  e_gnu_extension_machine_mode_BLKmode = 40,
14549  e_gnu_extension_machine_mode_VOIDmode = 41,
14550  e_gnu_extension_machine_mode_QCmode = 42,
14551  e_gnu_extension_machine_mode_HCmode = 43,
14552  e_gnu_extension_machine_mode_SCmode = 44,
14553  e_gnu_extension_machine_mode_DCmode = 45,
14554  e_gnu_extension_machine_mode_XCmode = 46,
14555  e_gnu_extension_machine_mode_TCmode = 47,
14556  e_gnu_extension_machine_mode_CQImode = 48,
14557  e_gnu_extension_machine_mode_CHImode = 49,
14558  e_gnu_extension_machine_mode_CSImode = 50,
14559  e_gnu_extension_machine_mode_CDImode = 51,
14560  e_gnu_extension_machine_mode_CTImode = 52,
14561  e_gnu_extension_machine_mode_COImode = 53,
14562  e_last_machine_mode
14563  };
14564 
14565  // Copy constructor
14566  SgTypeModifier ( const SgTypeModifier & X );
14567 
14568  // Assignment Operator
14569  SgTypeModifier & operator= ( const SgTypeModifier & X );
14570 
14571  // Convert a single type_modifier_enum to an initializer
14572  // SgTypeModifier ( const SgTypeModifier::type_modifier_enum & m );
14573 
14574  void post_construction_initialization() override;
14575 
14576  SgUPC_AccessModifier & get_upcModifier();
14577  SgConstVolatileModifier & get_constVolatileModifier();
14578  SgElaboratedTypeModifier & get_elaboratedTypeModifier();
14579 
14580  // RV (2/2/2006): Added 'const' versions of above member functions.
14581  const SgUPC_AccessModifier & get_upcModifier(void) const;
14582  const SgConstVolatileModifier & get_constVolatileModifier(void) const;
14583  const SgElaboratedTypeModifier & get_elaboratedTypeModifier(void) const;
14584 
14585  SgStructureModifier & get_structureModifier();
14586  const SgStructureModifier & get_structureModifier() const;
14587 
14588  bool isUnknown() const;
14589  void setUnknown();
14590  void unsetUnknown();
14591 
14592  bool isDefault() const;
14593  void setDefault();
14594  void unsetDefault();
14595 
14596  bool isRestrict() const;
14597  void setRestrict();
14598  void unsetRestrict();
14599 
14600  // Fortran specific attribute
14601  bool isAllocatable() const;
14602  void setAllocatable();
14603  void unsetAllocatable();
14604 
14605  // Fortran specific attribute
14606  bool isBind() const;
14607  void setBind();
14608  void unsetBind();
14609 
14610  // Fortran specific attribute
14611  bool isAsynchronous() const;
14612  void setAsynchronous();
14613  void unsetAsynchronous();
14614 
14615  // Fortran specific attribute
14616  bool isData() const;
14617  void setData();
14618  void unsetData();
14619 
14620  // Fortran specific attribute
14621  bool isDimension() const;
14622  void setDimension();
14623  void unsetDimension();
14624 
14625  // Fortran specific attribute
14626  bool isIntent_in() const;
14627  void setIntent_in();
14628  void unsetIntent_in();
14629 
14630  // Fortran specific attribute
14631  bool isIntent_out() const;
14632  void setIntent_out();
14633  void unsetIntent_out();
14634 
14635  // Fortran specific attribute
14636  bool isIntent_inout() const;
14637  void setIntent_inout();
14638  void unsetIntent_inout();
14639 
14640  // Fortran specific attribute
14641  bool isIntrinsic() const;
14642  void setIntrinsic();
14643  void unsetIntrinsic();
14644 
14645  // Fortran specific attribute
14646  bool isOptional() const;
14647  void setOptional();
14648  void unsetOptional();
14649 
14650  // Fortran specific attribute
14651  bool isSave() const;
14652  void setSave();
14653  void unsetSave();
14654 
14655  // Fortran specific attribute
14656  bool isTarget() const;
14657  void setTarget();
14658  void unsetTarget();
14659 
14660  // Fortran specific attribute
14661  bool isValue() const;
14662  void setValue();
14663  void unsetValue();
14664 
14665  // Fortran specific attribute
14666  bool isExtends() const;
14667  void setExtends();
14668  void unsetExtends();
14669 
14670  // Fortran specific attribute
14671  bool isAbstract() const;
14672  void setAbstract();
14673  void unsetAbstract();
14674 
14675  // DQ (1/3/2009): Added GNU specific attributes
14676  bool isGnuAttributeUnused() const;
14677  void setGnuAttributeUnused();
14678  void unsetGnuAttributeUnused();
14679 
14680  bool isGnuAttributePacked() const;
14681  void setGnuAttributePacked();
14682  void unsetGnuAttributePacked();
14683 
14684  bool isGnuAttributeDeprecated() const;
14685  void setGnuAttributeDeprecated();
14686  void unsetGnuAttributeDeprecated();
14687 
14688  bool isGnuAttributeTransparentUnion() const;
14689  void setGnuAttributeTransparentUnion();
14690  void unsetGnuAttributeTransparentUnion();
14691 
14692  bool isGnuAttributeNoReturn() const;
14693  void setGnuAttributeNoReturn();
14694  void unsetGnuAttributeNoReturn();
14695 
14696  bool isGnuAttributeConst() const;
14697  void setGnuAttributeConst();
14698  void unsetGnuAttributeConst();
14699 
14700  bool isGnuAttributeCdecl() const;
14701  void setGnuAttributeCdecl();
14702  void unsetGnuAttributeCdecl();
14703 
14704  bool isGnuAttributeStdcall() const;
14705  void setGnuAttributeStdcall();
14706  void unsetGnuAttributeStdcall();
14707 
14708  bool isGnuAttributeWarnUnusedResult() const;
14709  void setGnuAttributeWarnUnusedResult();
14710  void unsetGnuAttributeWarnUnusedResult();
14711 
14712  bool isGnuAttributeNonnull() const;
14713  void setGnuAttributeNonnull();
14714  void unsetGnuAttributeNonnull();
14715 
14716  bool isGnuAttributeSentinel() const;
14717  void setGnuAttributeSentinel();
14718  void unsetGnuAttributeSentinel();
14719 
14720  bool haveAddressSpace() const;
14721  void setAddressSpace();
14722  void unsetAddressSpace();
14723 
14724  bool isOpenclGlobal() const;
14725  void setOpenclGlobal();
14726  void unsetOpenclGlobal();
14727 
14728  bool isOpenclLocal() const;
14729  void setOpenclLocal();
14730  void unsetOpenclLocal();
14731 
14732  bool isOpenclConstant() const;
14733  void setOpenclConstant();
14734  void unsetOpenclConstant();
14735 
14736  bool isVectorType() const;
14737  void setVectorType();
14738  void unsetVectorType();
14739 
14740  bool isGnuAttributeDevice() const;
14741  void setGnuAttributeDevice();
14742  void unsetGnuAttributeDevice();
14743 
14744  // Jovial specific attribute
14745  bool isRound() const;
14746  void setRound();
14747  void unsetRound();
14748 
14749  // Jovial specific attribute
14750  bool isTruncate() const;
14751  void setTruncate();
14752  void unsetTruncate();
14753 
14754  // Jovial specific attribute
14755  bool isTruncateTowardsZero() const;
14756  void setTruncateTowardsZero();
14757  void unsetTruncateTowardsZero();
14758 
14759  // Ada attribute for aliased variables, parameters, and components
14760  bool isAliased() const;
14761  void setAliased();
14762  void unsetAliased();
14763 
14764  std::string displayString() const;
14765  void display ( std::string label ) const;
14766  friend std::ostream & operator<< ( std::ostream & os, const SgTypeModifier & m );
14767  friend bool operator== (const SgTypeModifier& lhs, const SgTypeModifier& rhs);
14768 
14769  // DQ (2/4/2006): Added mechamism to clear all bits
14770  void reset();
14771 
14772  // DQ (11/28/2015): We need a better way to support equivalents and difference in the SgTypeModifier.
14773  bool isIdentity() const;
14774 
14775 
14776 
14777 // End of memberFunctionString
14778 // Start of memberFunctionString
14779 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
14780 
14781 // *** COMMON CODE SECTION BEGINS HERE ***
14782 
14783  public:
14784 
14785  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
14786  // and not required which is required to match the other aspects of the copy mechanism code generation.
14787  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
14788  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
14789  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
14790  // virtual SgNode* copy ( const SgCopyHelp & help) const;
14791 
14793  virtual std::string class_name() const override;
14794 
14796  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
14797 
14799  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
14800  // static const VariantT static_variant = V_SgTypeModifier;
14801  enum { static_variant = V_SgTypeModifier };
14802 
14803  /* the generated cast function */
14805  ROSE_DLL_API friend SgTypeModifier* isSgTypeModifier( SgNode * s );
14806 
14808  ROSE_DLL_API friend const SgTypeModifier* isSgTypeModifier( const SgNode * s );
14809 
14810  // ******************************************
14811  // * Memory Pool / New / Delete
14812  // ******************************************
14813 
14814  public:
14816  static const unsigned pool_size; //
14818  static std::vector<unsigned char *> pools; //
14820  static SgTypeModifier * next_node; //
14821 
14823  static unsigned long initializeStorageClassArray(SgTypeModifierStorageClass *); //
14824 
14826  static void clearMemoryPool(); //
14827  static void deleteMemoryPool(); //
14828 
14830  static void extendMemoryPoolForFileIO(); //
14831 
14833  static SgTypeModifier * getPointerFromGlobalIndex(unsigned long); //
14835  static SgTypeModifier * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
14836 
14838  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
14840  static void resetValidFreepointers(); //
14842  static unsigned long getNumberOfLastValidPointer(); //
14843 
14844 
14845 #if defined(INLINE_FUNCTIONS)
14846 
14847  inline void *operator new (size_t size);
14848 #else
14849 
14850  void *operator new (size_t size);
14851 #endif
14852 
14853  void operator delete (void* pointer, size_t size);
14854 
14855  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
14856  void operator delete (void* pointer)
14857  {
14858  // This is the generated delete operator...
14859  SgTypeModifier::operator delete (pointer,sizeof(SgTypeModifier));
14860  }
14861 
14863  static size_t numberOfNodes();
14864 
14866  static size_t memoryUsage();
14867 
14868  // End of scope which started in IR nodes specific code
14869  /* */
14870 
14871  /* name Internal Functions
14872  \brief Internal functions ... incomplete-documentation
14873 
14874  These functions have been made public as part of the design, but they are suggested for internal use
14875  or by particularly knowledgeable users for specialized tools or applications.
14876 
14877  \internal We could not make these private because they are required by user for special purposes. And
14878  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
14879 
14880  */
14881 
14882  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
14883  // overridden in every class by *generated* implementation
14885  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
14886  // MS: 06/28/02 container of names of variables or container indices
14887  // used used in the traversal to access AST successor nodes
14888  // overridden in every class by *generated* implementation
14891  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
14892 
14893  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
14894  // than all the vector copies. The implementation for these functions is generated for each class.
14896  virtual size_t get_numberOfTraversalSuccessors() override;
14898  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
14900  virtual size_t get_childIndex(SgNode *child) override;
14901 
14902 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
14903  // MS: 08/16/2002 method for generating RTI information
14905  virtual RTIReturnType roseRTI() override;
14906 #endif
14907  /* */
14908 
14909 
14910 
14911  /* name Deprecated Functions
14912  \brief Deprecated functions ... incomplete-documentation
14913 
14914  These functions have been deprecated from use.
14915  */
14916  /* */
14917 
14919  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
14920 
14921  // JJW (10/16/2008): Changed to a single function in Node.code, and put
14922  // getVariant() in #if 0 block to prevent confusing Doxygen
14923 #if 0
14924 
14925  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
14927  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
14928 #endif
14929  /* */
14930 
14931 
14932 
14933 
14934  public:
14935  /* name Traversal Support Functions
14936  \brief Traversal support functions ... incomplete-documentation
14937 
14938  These functions have been made public as part of the design, but they are suggested for internal use
14939  or by particularly knowledgable users for specialized tools or applications.
14940  */
14941  /* */
14942 
14943  // DQ (11/26/2005): Support for visitor pattern mechanims
14944  // (inferior to ROSE traversal mechanism, experimental).
14948 
14949  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
14951  virtual void accept (ROSE_VisitorPattern & visitor) override;
14952 
14953  // DQ (12/26/2005): Support for traversal based on the memory pool
14956  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
14957 
14961 
14962  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
14963  // This traversal helps support internal tools that call static member functions.
14964  // note: this function operates on the memory pools.
14967  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
14968  /* */
14969 
14970 
14971  public:
14972  /* name Memory Allocation Functions
14973  \brief Memory allocations functions ... incomplete-documentation
14974 
14975  These functions have been made public as part of the design, but they are suggested for internal use
14976  or by particularly knowledgable users for specialized tools or applications.
14977  */
14978  /* */
14979 
14990  virtual bool isInMemoryPool() override;
14991 
15002  virtual void checkDataMemberPointersIfInMemoryPool() override;
15003 
15004  // DQ (4/30/2006): Modified to be a const function.
15019  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
15020 
15030  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
15031 
15043  virtual long getChildIndex( SgNode* childNode ) const override;
15044 
15045  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
15046  // comment here (changed to be a C style comment and not be a doxygen comment).
15047  /* \brief Constructor for use by AST File I/O Mechanism
15048 
15049  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
15050  which obtained via fast binary file I/O from disk.
15051  */
15052  // SgTypeModifier( SgTypeModifierStorageClass& source );
15053 
15054 
15055 
15056 
15057 
15058  // JH (10/24/2005): methods added to support the ast file IO
15059  private:
15060 
15061  /* name AST Memory Allocation Support Functions
15062  \brief Memory allocations support....
15063 
15064  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
15065  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
15066  and support the AST File I/O Mechanism.
15067  */
15068  /* */
15069 
15070  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
15071  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
15072  that I use the same type everywhere, if any changes are made. THe second one declares the type
15073  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
15074  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
15075  a correspinding one in the AST_FILE_IO class!
15076  */
15077  // DQ (9/2/2015): This typedef is no longer used, we can't define the
15078  // comment here (changed to be a C style comment and not be a doxygen comment).
15079  /* \brief Typedef used for low level memory access.
15080  */
15081  // typedef unsigned char* TestType;
15082 
15083  // DQ (9/2/2015): This typedef is no longer used, we can't define the
15084  // comment here (changed to be a C style comment and not be a doxygen comment).
15085  /* \brief Typedef used to hold memory addresses as values.
15086  */
15087  // typedef unsigned long AddressType;
15088 
15089 
15090 
15091  // necessary, to have direct access to the p_freepointer and the private methods !
15093  friend class AST_FILE_IO;
15094 
15096  friend class SgTypeModifierStorageClass;
15097 
15099  friend class AstSpecificDataManagingClass;
15100 
15102  friend class AstSpecificDataManagingClassStorageClass;
15103 
15104  public:
15106  SgTypeModifier( const SgTypeModifierStorageClass& source );
15107 
15108  // private: // JJW hack
15109  /*
15110  name AST Memory Allocation Support Variables
15111  Memory allocations support variables
15112 
15113  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
15114  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
15115  and support the AST File I/O Mechanism.
15116  */
15117  /* */
15118 
15119  public:
15120 
15121  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
15122  // to current node (so that it will work cleanly with build functions to specify patterns).
15123  // virtual SgNode* addRegExpAttribute();
15130 
15131 // *** COMMON CODE SECTION ENDS HERE ***
15132 
15133 
15134 // End of memberFunctionString
15135 // Start of memberFunctionString
15136 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
15137 
15138  // the generated cast function
15139  // friend ROSE_DLL_API SgTypeModifier* isSgTypeModifier ( SgNode* s );
15140 
15141  typedef SgModifier base_node_type;
15142 
15143 
15144 // End of memberFunctionString
15145 
15146  public:
15147  SgBitVector get_modifierVector() const;
15148  void set_modifierVector(SgBitVector modifierVector);
15149 
15150 
15151 
15152 
15153 
15154 
15155  public:
15156  int get_gnu_attribute_alignment() const;
15157  void set_gnu_attribute_alignment(int gnu_attribute_alignment);
15158 
15159  public:
15160  long get_gnu_attribute_sentinel() const;
15161  void set_gnu_attribute_sentinel(long gnu_attribute_sentinel);
15162 
15163  public:
15164  unsigned get_address_space_value() const;
15165  void set_address_space_value(unsigned address_space_value);
15166 
15167  public:
15168  unsigned get_vector_size() const;
15169  void set_vector_size(unsigned vector_size);
15170 
15171 
15172  public:
15173  virtual ~SgTypeModifier();
15174 
15175 
15176  public:
15177  SgTypeModifier();
15178 
15179  protected:
15180 // Start of memberFunctionString
15181 SgBitVector p_modifierVector;
15182 
15183 // End of memberFunctionString
15184 // Start of memberFunctionString
15185 SgUPC_AccessModifier p_upcModifier;
15186 
15187 // End of memberFunctionString
15188 // Start of memberFunctionString
15189 SgStructureModifier p_structureModifier;
15190 
15191 // End of memberFunctionString
15192 // Start of memberFunctionString
15193 SgConstVolatileModifier p_constVolatileModifier;
15194 
15195 // End of memberFunctionString
15196 // Start of memberFunctionString
15197 SgElaboratedTypeModifier p_elaboratedTypeModifier;
15198 
15199 // End of memberFunctionString
15200 // Start of memberFunctionString
15201 SgTypeModifier::gnu_extension_machine_mode_enum p_gnu_extension_machine_mode;
15202 
15203 // End of memberFunctionString
15204 // Start of memberFunctionString
15205 int p_gnu_attribute_alignment;
15206 
15207 // End of memberFunctionString
15208 // Start of memberFunctionString
15209 long p_gnu_attribute_sentinel;
15210 
15211 // End of memberFunctionString
15212 // Start of memberFunctionString
15213 unsigned p_address_space_value;
15214 
15215 // End of memberFunctionString
15216 // Start of memberFunctionString
15217 unsigned p_vector_size;
15218 
15219 // End of memberFunctionString
15220 
15221 
15222 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
15223 
15224 
15225  };
15226 #endif
15227 
15228 // postdeclarations for SgTypeModifier
15229 
15230 /* #line 15231 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
15231 
15232 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
15233 
15234 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
15235 
15236 
15237 /* #line 15238 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
15238 
15239 
15240 
15241 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
15242 
15243 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
15244 // This code is automatically generated for each
15245 // terminal and non-terminal within the defined
15246 // grammar. There is a simple way to change the
15247 // code to fix bugs etc. See the ROSE README file
15248 // for directions.
15249 
15250 // tps: (02/22/2010): Adding DLL export requirements
15251 #include "rosedll.h"
15252 
15253 // predeclarations for SgDeclarationModifier
15254 
15255 /* #line 15256 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
15256 
15257 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
15258 
15259 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
15260 
15261 #if 1
15262 // Class Definition for SgDeclarationModifier
15263 class ROSE_DLL_API SgDeclarationModifier : public SgModifier
15264  {
15265  public:
15266 
15267 
15268 /* #line 15269 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
15269 
15270  virtual SgNode* copy ( SgCopyHelp& help) const override;
15271 // Start of memberFunctionString
15272 /* #line 1538 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
15273 
15274  // Support for: storage specifiers, type specifiers, function specifiers,
15275  // friend, typedef, export, throw
15276 
15284  {
15285  // Bit values can support multiple values in a single enum type
15286  e_unknown = 0,
15287  e_default = 1,
15288  e_friend = 2,
15289  e_typedef = 3,
15290  e_export = 4,
15291  e_throw = 5,
15292  e_bind = 6,
15293  e_final = 7,
15294  e_override = 8,
15296  e_ms_declspec_align = 10,
15297  e_ms_declspec_allocate = 11,
15298  e_ms_declspec_appdomain = 12,
15299  e_ms_declspec_code_seg = 13,
15300  e_ms_declspec_deprecated = 14,
15301  e_ms_declspec_dllimport = 15,
15302  e_ms_declspec_dllexport = 16,
15303  e_ms_declspec_jitintrinsic = 17,
15304  e_ms_declspec_naked = 18,
15305  e_ms_declspec_noalias = 19,
15306  e_ms_declspec_noinline = 20,
15307  e_ms_declspec_noreturn = 21,
15308  e_ms_declspec_nothrow = 22,
15309  e_ms_declspec_novtable = 23,
15310  e_ms_declspec_process = 24,
15311  e_ms_declspec_property = 25,
15312  e_ms_declspec_restrict = 26,
15313  e_ms_declspec_safebuffers = 27,
15314  e_ms_declspec_selectany = 28,
15315  e_ms_declspec_thread = 29,
15316  e_ms_declspec_uuid = 30,
15318  e_last_modifier
15319  };
15320 
15328  {
15329  e_unknown_visibility = 0,
15330  e_error_visibility = 1,
15331  e_unspecified_visibility = 2,
15332  e_hidden_visibility = 3,
15333  e_protected_visibility = 4,
15334  e_internal_visibility = 5,
15335  e_default_visibility = 6,
15336  e_last_visibility_attribute
15337  };
15338 
15339  // Copy constructor
15341 
15342  // Assignment Operator
15344 
15345  void post_construction_initialization() override;
15346 
15347  SgTypeModifier & get_typeModifier();
15348  SgAccessModifier & get_accessModifier();
15349  SgStorageModifier & get_storageModifier();
15350 
15351  const SgTypeModifier & get_typeModifier() const;
15352  const SgAccessModifier & get_accessModifier() const;
15353  const SgStorageModifier & get_storageModifier() const;
15354 
15355  bool isUnknown() const;
15356  void setUnknown();
15357  void unsetUnknown();
15358 
15359  bool isDefault() const;
15360  void setDefault();
15361  void unsetDefault();
15362 
15363  bool isFriend() const;
15364  void setFriend();
15365  void unsetFriend();
15366 
15367  bool isTypedef() const;
15368  void setTypedef();
15369  void unsetTypedef();
15370 
15371  bool isExport() const;
15372  void setExport();
15373  void unsetExport();
15374 
15375  bool isThrow() const;
15376  void setThrow();
15377  void unsetThrow();
15378 
15379  // Fortran specific attribute
15380  bool isBind() const;
15381  void setBind();
15382  void unsetBind();
15383 
15384  // PHP, Java, and C++11 specific attribute
15385  bool isFinal() const;
15386  void setFinal();
15387  void unsetFinal();
15388 
15389  // C++11 specific attribute
15390  bool isOverride() const;
15391  void setOverride();
15392  void unsetOverride();
15393 
15394  // DQ (8/16/2014): Adding non-C++ standard Microsoft specific attributes.
15395  bool is_ms_declspec_align() const;
15396  void set_ms_declspec_align();
15397  void unset_ms_declspec_align();
15398 
15399  // DQ (8/16/2014): Adding non-C++ standard Microsoft specific attributes.
15400  bool is_ms_declspec_allocate() const;
15401  void set_ms_declspec_allocate();
15402  void unset_ms_declspec_allocate();
15403 
15404  // DQ (8/16/2014): Adding non-C++ standard Microsoft specific attributes.
15405  bool is_ms_declspec_appdomain() const;
15406  void set_ms_declspec_appdomain();
15407  void unset_ms_declspec_appdomain();
15408 
15409  // DQ (8/16/2014): Adding non-C++ standard Microsoft specific attributes.
15410  bool is_ms_declspec_code_seg() const;
15411  void set_ms_declspec_code_seg();
15412  void unset_ms_declspec_code_seg();
15413 
15414  // DQ (8/16/2014): Adding non-C++ standard Microsoft specific attributes.
15415  bool is_ms_declspec_deprecated() const;
15416  void set_ms_declspec_deprecated();
15417  void unset_ms_declspec_deprecated();
15418 
15419  // DQ (8/16/2014): Adding non-C++ standard Microsoft specific attributes.
15420  bool is_ms_declspec_dllimport() const;
15421  void set_ms_declspec_dllimport();
15422  void unset_ms_declspec_dllimport();
15423 
15424  // DQ (8/16/2014): Adding non-C++ standard Microsoft specific attributes.
15425  bool is_ms_declspec_dllexport() const;
15426  void set_ms_declspec_dllexport();
15427  void unset_ms_declspec_dllexport();
15428 
15429  // DQ (8/16/2014): Adding non-C++ standard Microsoft specific attributes.
15430  bool is_ms_declspec_jitintrinsic() const;
15431  void set_ms_declspec_jitintrinsic();
15432  void unset_ms_declspec_jitintrinsic();
15433 
15434  // DQ (8/16/2014): Adding non-C++ standard Microsoft specific attributes.
15435  bool is_ms_declspec_naked() const;
15436  void set_ms_declspec_naked();
15437  void unset_ms_declspec_naked();
15438 
15439  // DQ (8/16/2014): Adding non-C++ standard Microsoft specific attributes.
15440  bool is_ms_declspec_noalias() const;
15441  void set_ms_declspec_noalias();
15442  void unset_ms_declspec_noalias();
15443 
15444  // DQ (8/16/2014): Adding non-C++ standard Microsoft specific attributes.
15445  bool is_ms_declspec_noinline() const;
15446  void set_ms_declspec_noinline();
15447  void unset_ms_declspec_noinline();
15448 
15449  // DQ (8/16/2014): Adding non-C++ standard Microsoft specific attributes.
15450  bool is_ms_declspec_noreturn() const;
15451  void set_ms_declspec_noreturn();
15452  void unset_ms_declspec_noreturn();
15453 
15454  // DQ (8/16/2014): Adding non-C++ standard Microsoft specific attributes.
15455  bool is_ms_declspec_nothrow() const;
15456  void set_ms_declspec_nothrow();
15457  void unset_ms_declspec_nothrow();
15458 
15459  // DQ (8/16/2014): Adding non-C++ standard Microsoft specific attributes.
15460  bool is_ms_declspec_novtable() const;
15461  void set_ms_declspec_novtable();
15462  void unset_ms_declspec_novtable();
15463 
15464  // DQ (8/16/2014): Adding non-C++ standard Microsoft specific attributes.
15465  bool is_ms_declspec_process() const;
15466  void set_ms_declspec_process();
15467  void unset_ms_declspec_process();
15468 
15469  // DQ (8/16/2014): Adding non-C++ standard Microsoft specific attributes.
15470  bool is_ms_declspec_property() const;
15471  void set_ms_declspec_property();
15472  void unset_ms_declspec_property();
15473 
15474  // DQ (8/16/2014): Adding non-C++ standard Microsoft specific attributes.
15475  bool is_ms_declspec_restrict() const;
15476  void set_ms_declspec_restrict();
15477  void unset_ms_declspec_restrict();
15478 
15479  // DQ (8/16/2014): Adding non-C++ standard Microsoft specific attributes.
15480  bool is_ms_declspec_safebuffers() const;
15481  void set_ms_declspec_safebuffers();
15482  void unset_ms_declspec_safebuffers();
15483 
15484  // DQ (8/16/2014): Adding non-C++ standard Microsoft specific attributes.
15485  bool is_ms_declspec_selectany() const;
15486  void set_ms_declspec_selectany();
15487  void unset_ms_declspec_selectany();
15488 
15489  // DQ (8/16/2014): Adding non-C++ standard Microsoft specific attributes.
15490  bool is_ms_declspec_thread() const;
15491  void set_ms_declspec_thread();
15492  void unset_ms_declspec_thread();
15493 
15494  // DQ (8/16/2014): Adding non-C++ standard Microsoft specific attributes.
15495  bool is_ms_declspec_uuid() const;
15496  void set_ms_declspec_uuid();
15497  void unset_ms_declspec_uuid();
15498 
15499  std::string displayString() const;
15500  void display ( std::string label ) const;
15501  friend std::ostream & operator<< ( std::ostream & os, const SgDeclarationModifier & m );
15502  friend bool operator== (const SgDeclarationModifier& lhs, const SgDeclarationModifier& rhs);
15503 
15504  // DQ (2/4/2006): Added mechamism to clear all bits
15505  void reset();
15506 
15507 
15508 
15509 // End of memberFunctionString
15510 // Start of memberFunctionString
15511 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
15512 
15513 // *** COMMON CODE SECTION BEGINS HERE ***
15514 
15515  public:
15516 
15517  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
15518  // and not required which is required to match the other aspects of the copy mechanism code generation.
15519  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
15520  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
15521  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
15522  // virtual SgNode* copy ( const SgCopyHelp & help) const;
15523 
15525  virtual std::string class_name() const override;
15526 
15528  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
15529 
15531  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
15532  // static const VariantT static_variant = V_SgDeclarationModifier;
15533  enum { static_variant = V_SgDeclarationModifier };
15534 
15535  /* the generated cast function */
15537  ROSE_DLL_API friend SgDeclarationModifier* isSgDeclarationModifier( SgNode * s );
15538 
15540  ROSE_DLL_API friend const SgDeclarationModifier* isSgDeclarationModifier( const SgNode * s );
15541 
15542  // ******************************************
15543  // * Memory Pool / New / Delete
15544  // ******************************************
15545 
15546  public:
15548  static const unsigned pool_size; //
15550  static std::vector<unsigned char *> pools; //
15552  static SgDeclarationModifier * next_node; //
15553 
15555  static unsigned long initializeStorageClassArray(SgDeclarationModifierStorageClass *); //
15556 
15558  static void clearMemoryPool(); //
15559  static void deleteMemoryPool(); //
15560 
15562  static void extendMemoryPoolForFileIO(); //
15563 
15565  static SgDeclarationModifier * getPointerFromGlobalIndex(unsigned long); //
15567  static SgDeclarationModifier * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
15568 
15570  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
15572  static void resetValidFreepointers(); //
15574  static unsigned long getNumberOfLastValidPointer(); //
15575 
15576 
15577 #if defined(INLINE_FUNCTIONS)
15578 
15579  inline void *operator new (size_t size);
15580 #else
15581 
15582  void *operator new (size_t size);
15583 #endif
15584 
15585  void operator delete (void* pointer, size_t size);
15586 
15587  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
15588  void operator delete (void* pointer)
15589  {
15590  // This is the generated delete operator...
15591  SgDeclarationModifier::operator delete (pointer,sizeof(SgDeclarationModifier));
15592  }
15593 
15595  static size_t numberOfNodes();
15596 
15598  static size_t memoryUsage();
15599 
15600  // End of scope which started in IR nodes specific code
15601  /* */
15602 
15603  /* name Internal Functions
15604  \brief Internal functions ... incomplete-documentation
15605 
15606  These functions have been made public as part of the design, but they are suggested for internal use
15607  or by particularly knowledgeable users for specialized tools or applications.
15608 
15609  \internal We could not make these private because they are required by user for special purposes. And
15610  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
15611 
15612  */
15613 
15614  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
15615  // overridden in every class by *generated* implementation
15617  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
15618  // MS: 06/28/02 container of names of variables or container indices
15619  // used used in the traversal to access AST successor nodes
15620  // overridden in every class by *generated* implementation
15623  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
15624 
15625  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
15626  // than all the vector copies. The implementation for these functions is generated for each class.
15628  virtual size_t get_numberOfTraversalSuccessors() override;
15630  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
15632  virtual size_t get_childIndex(SgNode *child) override;
15633 
15634 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
15635  // MS: 08/16/2002 method for generating RTI information
15637  virtual RTIReturnType roseRTI() override;
15638 #endif
15639  /* */
15640 
15641 
15642 
15643  /* name Deprecated Functions
15644  \brief Deprecated functions ... incomplete-documentation
15645 
15646  These functions have been deprecated from use.
15647  */
15648  /* */
15649 
15651  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
15652 
15653  // JJW (10/16/2008): Changed to a single function in Node.code, and put
15654  // getVariant() in #if 0 block to prevent confusing Doxygen
15655 #if 0
15656 
15657  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
15659  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
15660 #endif
15661  /* */
15662 
15663 
15664 
15665 
15666  public:
15667  /* name Traversal Support Functions
15668  \brief Traversal support functions ... incomplete-documentation
15669 
15670  These functions have been made public as part of the design, but they are suggested for internal use
15671  or by particularly knowledgable users for specialized tools or applications.
15672  */
15673  /* */
15674 
15675  // DQ (11/26/2005): Support for visitor pattern mechanims
15676  // (inferior to ROSE traversal mechanism, experimental).
15680 
15681  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
15683  virtual void accept (ROSE_VisitorPattern & visitor) override;
15684 
15685  // DQ (12/26/2005): Support for traversal based on the memory pool
15688  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
15689 
15693 
15694  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
15695  // This traversal helps support internal tools that call static member functions.
15696  // note: this function operates on the memory pools.
15699  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
15700  /* */
15701 
15702 
15703  public:
15704  /* name Memory Allocation Functions
15705  \brief Memory allocations functions ... incomplete-documentation
15706 
15707  These functions have been made public as part of the design, but they are suggested for internal use
15708  or by particularly knowledgable users for specialized tools or applications.
15709  */
15710  /* */
15711 
15722  virtual bool isInMemoryPool() override;
15723 
15734  virtual void checkDataMemberPointersIfInMemoryPool() override;
15735 
15736  // DQ (4/30/2006): Modified to be a const function.
15751  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
15752 
15762  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
15763 
15775  virtual long getChildIndex( SgNode* childNode ) const override;
15776 
15777  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
15778  // comment here (changed to be a C style comment and not be a doxygen comment).
15779  /* \brief Constructor for use by AST File I/O Mechanism
15780 
15781  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
15782  which obtained via fast binary file I/O from disk.
15783  */
15784  // SgDeclarationModifier( SgDeclarationModifierStorageClass& source );
15785 
15786 
15787 
15788 
15789 
15790  // JH (10/24/2005): methods added to support the ast file IO
15791  private:
15792 
15793  /* name AST Memory Allocation Support Functions
15794  \brief Memory allocations support....
15795 
15796  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
15797  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
15798  and support the AST File I/O Mechanism.
15799  */
15800  /* */
15801 
15802  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
15803  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
15804  that I use the same type everywhere, if any changes are made. THe second one declares the type
15805  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
15806  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
15807  a correspinding one in the AST_FILE_IO class!
15808  */
15809  // DQ (9/2/2015): This typedef is no longer used, we can't define the
15810  // comment here (changed to be a C style comment and not be a doxygen comment).
15811  /* \brief Typedef used for low level memory access.
15812  */
15813  // typedef unsigned char* TestType;
15814 
15815  // DQ (9/2/2015): This typedef is no longer used, we can't define the
15816  // comment here (changed to be a C style comment and not be a doxygen comment).
15817  /* \brief Typedef used to hold memory addresses as values.
15818  */
15819  // typedef unsigned long AddressType;
15820 
15821 
15822 
15823  // necessary, to have direct access to the p_freepointer and the private methods !
15825  friend class AST_FILE_IO;
15826 
15828  friend class SgDeclarationModifierStorageClass;
15829 
15831  friend class AstSpecificDataManagingClass;
15832 
15834  friend class AstSpecificDataManagingClassStorageClass;
15835 
15836  public:
15838  SgDeclarationModifier( const SgDeclarationModifierStorageClass& source );
15839 
15840  // private: // JJW hack
15841  /*
15842  name AST Memory Allocation Support Variables
15843  Memory allocations support variables
15844 
15845  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
15846  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
15847  and support the AST File I/O Mechanism.
15848  */
15849  /* */
15850 
15851  public:
15852 
15853  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
15854  // to current node (so that it will work cleanly with build functions to specify patterns).
15855  // virtual SgNode* addRegExpAttribute();
15862 
15863 // *** COMMON CODE SECTION ENDS HERE ***
15864 
15865 
15866 // End of memberFunctionString
15867 // Start of memberFunctionString
15868 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
15869 
15870  // the generated cast function
15871  // friend ROSE_DLL_API SgDeclarationModifier* isSgDeclarationModifier ( SgNode* s );
15872 
15873  typedef SgModifier base_node_type;
15874 
15875 
15876 // End of memberFunctionString
15877 
15878  public:
15879  SgBitVector get_modifierVector() const;
15880  void set_modifierVector(SgBitVector modifierVector);
15881 
15882 
15883 
15884 
15885  public:
15886  std::string get_gnu_attribute_section_name() const;
15887  void set_gnu_attribute_section_name(std::string gnu_attribute_section_name);
15888 
15889  public:
15890  SgDeclarationModifier::gnu_declaration_visability_enum get_gnu_attribute_visability() const;
15891  void set_gnu_attribute_visability(SgDeclarationModifier::gnu_declaration_visability_enum gnu_attribute_visability);
15892 
15893  public:
15894  std::string get_microsoft_uuid_string() const;
15895  void set_microsoft_uuid_string(std::string microsoft_uuid_string);
15896 
15897  public:
15898  std::string get_microsoft_property_get_function_name() const;
15899  void set_microsoft_property_get_function_name(std::string microsoft_property_get_function_name);
15900 
15901  public:
15902  std::string get_microsoft_property_put_function_name() const;
15903  void set_microsoft_property_put_function_name(std::string microsoft_property_put_function_name);
15904 
15905 
15906  public:
15907  virtual ~SgDeclarationModifier();
15908 
15909 
15910  public:
15912 
15913  protected:
15914 // Start of memberFunctionString
15915 SgBitVector p_modifierVector;
15916 
15917 // End of memberFunctionString
15918 // Start of memberFunctionString
15920 
15921 // End of memberFunctionString
15922 // Start of memberFunctionString
15924 
15925 // End of memberFunctionString
15926 // Start of memberFunctionString
15928 
15929 // End of memberFunctionString
15930 // Start of memberFunctionString
15931 std::string p_gnu_attribute_section_name;
15932 
15933 // End of memberFunctionString
15934 // Start of memberFunctionString
15936 
15937 // End of memberFunctionString
15938 // Start of memberFunctionString
15939 std::string p_microsoft_uuid_string;
15940 
15941 // End of memberFunctionString
15942 // Start of memberFunctionString
15943 std::string p_microsoft_property_get_function_name;
15944 
15945 // End of memberFunctionString
15946 // Start of memberFunctionString
15947 std::string p_microsoft_property_put_function_name;
15948 
15949 // End of memberFunctionString
15950 
15951 
15952 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
15953 
15954 
15955  };
15956 #endif
15957 
15958 // postdeclarations for SgDeclarationModifier
15959 
15960 /* #line 15961 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
15961 
15962 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
15963 
15964 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
15965 
15966 
15967 /* #line 15968 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
15968 
15969 
15970 
15971 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
15972 
15973 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
15974 // This code is automatically generated for each
15975 // terminal and non-terminal within the defined
15976 // grammar. There is a simple way to change the
15977 // code to fix bugs etc. See the ROSE README file
15978 // for directions.
15979 
15980 // tps: (02/22/2010): Adding DLL export requirements
15981 #include "rosedll.h"
15982 
15983 // predeclarations for SgOpenclAccessModeModifier
15984 
15985 /* #line 15986 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
15986 
15987 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
15988 
15989 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
15990 
15991 #if 1
15992 // Class Definition for SgOpenclAccessModeModifier
15993 class ROSE_DLL_API SgOpenclAccessModeModifier : public SgModifier
15994  {
15995  public:
15996 
15997 
15998 /* #line 15999 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
15999 
16000  virtual SgNode* copy ( SgCopyHelp& help) const override;
16001 // Start of memberFunctionString
16002 /* #line 7754 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
16003 
16004 
16005  // TV (05/03/2010): OpenCL Access Mode Support
16006 
16008  {
16009  e_unknown = 0,
16010  e_default = 1,
16011  e_read_only = 2,
16012  e_write_only = 3,
16013  e_read_write = 4,
16015  e_last_modifier
16016  };
16017 
16018  // Copy constructor
16020 
16021  // Assignment Operator
16023 
16024  void post_construction_initialization() override;
16025 
16026  bool isUnknown() const;
16027  void setUnknown();
16028 
16029  bool isDefault() const;
16030  void setDefault();
16031 
16032  bool isReadOnly() const;
16033  void setReadOnly();
16034 
16035  bool isWriteOnly() const;
16036  void setWriteOnly();
16037 
16038  bool isReadWrite() const;
16039  void setReadWrite();
16040 
16041  std::string displayString() const;
16042  void display ( std::string label ) const;
16043  friend std::ostream & operator<< ( std::ostream & os, const SgStorageModifier & m );
16044 
16045 
16046 
16047 // End of memberFunctionString
16048 // Start of memberFunctionString
16049 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
16050 
16051 // *** COMMON CODE SECTION BEGINS HERE ***
16052 
16053  public:
16054 
16055  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
16056  // and not required which is required to match the other aspects of the copy mechanism code generation.
16057  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
16058  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
16059  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
16060  // virtual SgNode* copy ( const SgCopyHelp & help) const;
16061 
16063  virtual std::string class_name() const override;
16064 
16066  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
16067 
16069  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
16070  // static const VariantT static_variant = V_SgOpenclAccessModeModifier;
16071  enum { static_variant = V_SgOpenclAccessModeModifier };
16072 
16073  /* the generated cast function */
16075  ROSE_DLL_API friend SgOpenclAccessModeModifier* isSgOpenclAccessModeModifier( SgNode * s );
16076 
16078  ROSE_DLL_API friend const SgOpenclAccessModeModifier* isSgOpenclAccessModeModifier( const SgNode * s );
16079 
16080  // ******************************************
16081  // * Memory Pool / New / Delete
16082  // ******************************************
16083 
16084  public:
16086  static const unsigned pool_size; //
16088  static std::vector<unsigned char *> pools; //
16090  static SgOpenclAccessModeModifier * next_node; //
16091 
16093  static unsigned long initializeStorageClassArray(SgOpenclAccessModeModifierStorageClass *); //
16094 
16096  static void clearMemoryPool(); //
16097  static void deleteMemoryPool(); //
16098 
16100  static void extendMemoryPoolForFileIO(); //
16101 
16103  static SgOpenclAccessModeModifier * getPointerFromGlobalIndex(unsigned long); //
16105  static SgOpenclAccessModeModifier * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
16106 
16108  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
16110  static void resetValidFreepointers(); //
16112  static unsigned long getNumberOfLastValidPointer(); //
16113 
16114 
16115 #if defined(INLINE_FUNCTIONS)
16116 
16117  inline void *operator new (size_t size);
16118 #else
16119 
16120  void *operator new (size_t size);
16121 #endif
16122 
16123  void operator delete (void* pointer, size_t size);
16124 
16125  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
16126  void operator delete (void* pointer)
16127  {
16128  // This is the generated delete operator...
16129  SgOpenclAccessModeModifier::operator delete (pointer,sizeof(SgOpenclAccessModeModifier));
16130  }
16131 
16133  static size_t numberOfNodes();
16134 
16136  static size_t memoryUsage();
16137 
16138  // End of scope which started in IR nodes specific code
16139  /* */
16140 
16141  /* name Internal Functions
16142  \brief Internal functions ... incomplete-documentation
16143 
16144  These functions have been made public as part of the design, but they are suggested for internal use
16145  or by particularly knowledgeable users for specialized tools or applications.
16146 
16147  \internal We could not make these private because they are required by user for special purposes. And
16148  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
16149 
16150  */
16151 
16152  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
16153  // overridden in every class by *generated* implementation
16155  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
16156  // MS: 06/28/02 container of names of variables or container indices
16157  // used used in the traversal to access AST successor nodes
16158  // overridden in every class by *generated* implementation
16161  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
16162 
16163  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
16164  // than all the vector copies. The implementation for these functions is generated for each class.
16166  virtual size_t get_numberOfTraversalSuccessors() override;
16168  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
16170  virtual size_t get_childIndex(SgNode *child) override;
16171 
16172 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
16173  // MS: 08/16/2002 method for generating RTI information
16175  virtual RTIReturnType roseRTI() override;
16176 #endif
16177  /* */
16178 
16179 
16180 
16181  /* name Deprecated Functions
16182  \brief Deprecated functions ... incomplete-documentation
16183 
16184  These functions have been deprecated from use.
16185  */
16186  /* */
16187 
16189  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
16190 
16191  // JJW (10/16/2008): Changed to a single function in Node.code, and put
16192  // getVariant() in #if 0 block to prevent confusing Doxygen
16193 #if 0
16194 
16195  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
16197  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
16198 #endif
16199  /* */
16200 
16201 
16202 
16203 
16204  public:
16205  /* name Traversal Support Functions
16206  \brief Traversal support functions ... incomplete-documentation
16207 
16208  These functions have been made public as part of the design, but they are suggested for internal use
16209  or by particularly knowledgable users for specialized tools or applications.
16210  */
16211  /* */
16212 
16213  // DQ (11/26/2005): Support for visitor pattern mechanims
16214  // (inferior to ROSE traversal mechanism, experimental).
16218 
16219  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
16221  virtual void accept (ROSE_VisitorPattern & visitor) override;
16222 
16223  // DQ (12/26/2005): Support for traversal based on the memory pool
16226  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
16227 
16231 
16232  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
16233  // This traversal helps support internal tools that call static member functions.
16234  // note: this function operates on the memory pools.
16237  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
16238  /* */
16239 
16240 
16241  public:
16242  /* name Memory Allocation Functions
16243  \brief Memory allocations functions ... incomplete-documentation
16244 
16245  These functions have been made public as part of the design, but they are suggested for internal use
16246  or by particularly knowledgable users for specialized tools or applications.
16247  */
16248  /* */
16249 
16260  virtual bool isInMemoryPool() override;
16261 
16272  virtual void checkDataMemberPointersIfInMemoryPool() override;
16273 
16274  // DQ (4/30/2006): Modified to be a const function.
16289  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
16290 
16300  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
16301 
16313  virtual long getChildIndex( SgNode* childNode ) const override;
16314 
16315  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
16316  // comment here (changed to be a C style comment and not be a doxygen comment).
16317  /* \brief Constructor for use by AST File I/O Mechanism
16318 
16319  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
16320  which obtained via fast binary file I/O from disk.
16321  */
16322  // SgOpenclAccessModeModifier( SgOpenclAccessModeModifierStorageClass& source );
16323 
16324 
16325 
16326 
16327 
16328  // JH (10/24/2005): methods added to support the ast file IO
16329  private:
16330 
16331  /* name AST Memory Allocation Support Functions
16332  \brief Memory allocations support....
16333 
16334  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
16335  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
16336  and support the AST File I/O Mechanism.
16337  */
16338  /* */
16339 
16340  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
16341  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
16342  that I use the same type everywhere, if any changes are made. THe second one declares the type
16343  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
16344  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
16345  a correspinding one in the AST_FILE_IO class!
16346  */
16347  // DQ (9/2/2015): This typedef is no longer used, we can't define the
16348  // comment here (changed to be a C style comment and not be a doxygen comment).
16349  /* \brief Typedef used for low level memory access.
16350  */
16351  // typedef unsigned char* TestType;
16352 
16353  // DQ (9/2/2015): This typedef is no longer used, we can't define the
16354  // comment here (changed to be a C style comment and not be a doxygen comment).
16355  /* \brief Typedef used to hold memory addresses as values.
16356  */
16357  // typedef unsigned long AddressType;
16358 
16359 
16360 
16361  // necessary, to have direct access to the p_freepointer and the private methods !
16363  friend class AST_FILE_IO;
16364 
16366  friend class SgOpenclAccessModeModifierStorageClass;
16367 
16369  friend class AstSpecificDataManagingClass;
16370 
16372  friend class AstSpecificDataManagingClassStorageClass;
16373 
16374  public:
16376  SgOpenclAccessModeModifier( const SgOpenclAccessModeModifierStorageClass& source );
16377 
16378  // private: // JJW hack
16379  /*
16380  name AST Memory Allocation Support Variables
16381  Memory allocations support variables
16382 
16383  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
16384  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
16385  and support the AST File I/O Mechanism.
16386  */
16387  /* */
16388 
16389  public:
16390 
16391  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
16392  // to current node (so that it will work cleanly with build functions to specify patterns).
16393  // virtual SgNode* addRegExpAttribute();
16400 
16401 // *** COMMON CODE SECTION ENDS HERE ***
16402 
16403 
16404 // End of memberFunctionString
16405 // Start of memberFunctionString
16406 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
16407 
16408  // the generated cast function
16409  // friend ROSE_DLL_API SgOpenclAccessModeModifier* isSgOpenclAccessModeModifier ( SgNode* s );
16410 
16411  typedef SgModifier base_node_type;
16412 
16413 
16414 // End of memberFunctionString
16415 
16416  public:
16418  void set_modifier(SgOpenclAccessModeModifier::access_mode_modifier_enum modifier);
16419 
16420 
16421  public:
16422  virtual ~SgOpenclAccessModeModifier();
16423 
16424 
16425  public:
16427 
16428  protected:
16429 // Start of memberFunctionString
16431 
16432 // End of memberFunctionString
16433 
16434 
16435 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
16436 
16437 
16438  };
16439 #endif
16440 
16441 // postdeclarations for SgOpenclAccessModeModifier
16442 
16443 /* #line 16444 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
16444 
16445 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
16446 
16447 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
16448 
16449 
16450 /* #line 16451 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
16451 
16452 
16453 
16454 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
16455 
16456 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
16457 // This code is automatically generated for each
16458 // terminal and non-terminal within the defined
16459 // grammar. There is a simple way to change the
16460 // code to fix bugs etc. See the ROSE README file
16461 // for directions.
16462 
16463 // tps: (02/22/2010): Adding DLL export requirements
16464 #include "rosedll.h"
16465 
16466 // predeclarations for SgName
16467 
16468 /* #line 16469 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
16469 
16470 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
16471 
16472 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
16473 
16474 #if 1
16475 // Class Definition for SgName
16476 class ROSE_DLL_API SgName : public SgSupport
16477  {
16478  public:
16479 
16480 
16481 /* #line 16482 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
16482 
16483  virtual SgNode* copy ( SgCopyHelp& help) const override;
16484 // Start of memberFunctionString
16485 /* #line 5563 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
16486 
16487  // We need to define the default constructor explicitly
16488  // (else p_char is not initialized properly to NULL)
16489  SgName();
16490  SgName(const char* str);
16491  SgName(const std::string& str);
16492  SgName(const SgName& n);
16493 
16494  // ~SgName();
16495 
16496  int operator!=(const SgName& n1) const;
16497  int operator==(const SgName& n1) const;
16498  int operator< (const SgName& n1) const;
16499 
16500  // DQ (11/27/2010): Added to support case sensitive and case insensitive semantics.
16501  static bool caseInsensitiveEquality ( const SgName & x, const SgName & y );
16502 
16503  // DQ (4/21/2020): I think this might be used but not defined.
16504  // Added to support assignments to string variables.
16505  operator std::string () const;
16506 
16507  // DQ (11/28/2009): Fixed return value of function to be "bool" instead of "int"
16508  bool is_null(void) const;
16509  void replace_space(char t);
16510  SgName& operator<<(const std::string& str);
16511 
16512  static SgName itoname(int val);
16513 
16514  SgName& operator<<(int val);
16515  SgName& operator=(const SgName& n1);
16516  SgName& tail(int n); // keep std::string after n
16517  SgName& head(int n); // keep first n chars
16518 
16519  const char* str() const;
16520  std::string& getString();
16521  const std::string& getString() const;
16522 
16523  // In places where the str() member function is called it is toe get the
16524  // length of the std::string in p_char so it makes since to provide a member
16525  // function to get the length instead of making a the str() function a
16526  // const member function!
16527  unsigned int get_length() const;
16528 
16529  // DQ: We made this a const function to work with the Sage Symbol Table implementation
16530  // But it is a bad idea to have it since it causes problems where it is used.
16531  // EXAMPLE: char* char_pointer = tempSgName;
16532  // this code fragment causes a new SgName object to be build and the pointer to
16533  // the std::string in the new object is returned then the SgName object goes out of
16534  // scope and then reading the std::string causes a purify FMR error!
16535  // It might be that it should not be a const function (this is likely the
16536  // real source of the problem), but I would like to remove it anyway for
16537  // now to simplify the debugging!
16538  // operator char*() const;
16539 
16540  // To handle "assert(p_name != NULL);" where p_name is a SgName
16541  // object, STL requires that the "operator==()" be defined
16542  // (STL builds the "operator!=()" from the "operator==()"
16543  bool operator== (const int) const { return false; }
16544 
16545  void display( const std::string& label ) const;
16546 
16547  // DQ (9/9/2004): Supporting function for building qualified names (specialied std::string concatination)
16548  static SgName assembleQualifiedName(const SgName & scopeQualifiedName, const SgName & localName);
16549 
16550  // DQ (9/9/2004): friend function (string concatination)
16551  ROSE_DLL_API friend SgName operator+(const SgName & n1, const SgName & n2);
16552 
16553  // DQ (11/15/2004): Added to support general string operations (first used in the unparser)
16554  SgName & operator+= (const SgName & n1);
16555 
16556  SgName invertCase() const;
16557 
16558 
16559 
16560 // End of memberFunctionString
16561 // Start of memberFunctionString
16562 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
16563 
16564 // *** COMMON CODE SECTION BEGINS HERE ***
16565 
16566  public:
16567 
16568  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
16569  // and not required which is required to match the other aspects of the copy mechanism code generation.
16570  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
16571  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
16572  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
16573  // virtual SgNode* copy ( const SgCopyHelp & help) const;
16574 
16576  virtual std::string class_name() const override;
16577 
16579  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
16580 
16582  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
16583  // static const VariantT static_variant = V_SgName;
16584  enum { static_variant = V_SgName };
16585 
16586  /* the generated cast function */
16588  ROSE_DLL_API friend SgName* isSgName( SgNode * s );
16589 
16591  ROSE_DLL_API friend const SgName* isSgName( const SgNode * s );
16592 
16593  // ******************************************
16594  // * Memory Pool / New / Delete
16595  // ******************************************
16596 
16597  public:
16599  static const unsigned pool_size; //
16601  static std::vector<unsigned char *> pools; //
16603  static SgName * next_node; //
16604 
16606  static unsigned long initializeStorageClassArray(SgNameStorageClass *); //
16607 
16609  static void clearMemoryPool(); //
16610  static void deleteMemoryPool(); //
16611 
16613  static void extendMemoryPoolForFileIO(); //
16614 
16616  static SgName * getPointerFromGlobalIndex(unsigned long); //
16618  static SgName * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
16619 
16621  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
16623  static void resetValidFreepointers(); //
16625  static unsigned long getNumberOfLastValidPointer(); //
16626 
16627 
16628 #if defined(INLINE_FUNCTIONS)
16629 
16630  inline void *operator new (size_t size);
16631 #else
16632 
16633  void *operator new (size_t size);
16634 #endif
16635 
16636  void operator delete (void* pointer, size_t size);
16637 
16638  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
16639  void operator delete (void* pointer)
16640  {
16641  // This is the generated delete operator...
16642  SgName::operator delete (pointer,sizeof(SgName));
16643  }
16644 
16646  static size_t numberOfNodes();
16647 
16649  static size_t memoryUsage();
16650 
16651  // End of scope which started in IR nodes specific code
16652  /* */
16653 
16654  /* name Internal Functions
16655  \brief Internal functions ... incomplete-documentation
16656 
16657  These functions have been made public as part of the design, but they are suggested for internal use
16658  or by particularly knowledgeable users for specialized tools or applications.
16659 
16660  \internal We could not make these private because they are required by user for special purposes. And
16661  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
16662 
16663  */
16664 
16665  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
16666  // overridden in every class by *generated* implementation
16668  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
16669  // MS: 06/28/02 container of names of variables or container indices
16670  // used used in the traversal to access AST successor nodes
16671  // overridden in every class by *generated* implementation
16674  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
16675 
16676  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
16677  // than all the vector copies. The implementation for these functions is generated for each class.
16679  virtual size_t get_numberOfTraversalSuccessors() override;
16681  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
16683  virtual size_t get_childIndex(SgNode *child) override;
16684 
16685 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
16686  // MS: 08/16/2002 method for generating RTI information
16688  virtual RTIReturnType roseRTI() override;
16689 #endif
16690  /* */
16691 
16692 
16693 
16694  /* name Deprecated Functions
16695  \brief Deprecated functions ... incomplete-documentation
16696 
16697  These functions have been deprecated from use.
16698  */
16699  /* */
16700 
16702  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
16703 
16704  // JJW (10/16/2008): Changed to a single function in Node.code, and put
16705  // getVariant() in #if 0 block to prevent confusing Doxygen
16706 #if 0
16707 
16708  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
16710  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
16711 #endif
16712  /* */
16713 
16714 
16715 
16716 
16717  public:
16718  /* name Traversal Support Functions
16719  \brief Traversal support functions ... incomplete-documentation
16720 
16721  These functions have been made public as part of the design, but they are suggested for internal use
16722  or by particularly knowledgable users for specialized tools or applications.
16723  */
16724  /* */
16725 
16726  // DQ (11/26/2005): Support for visitor pattern mechanims
16727  // (inferior to ROSE traversal mechanism, experimental).
16731 
16732  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
16734  virtual void accept (ROSE_VisitorPattern & visitor) override;
16735 
16736  // DQ (12/26/2005): Support for traversal based on the memory pool
16739  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
16740 
16744 
16745  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
16746  // This traversal helps support internal tools that call static member functions.
16747  // note: this function operates on the memory pools.
16750  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
16751  /* */
16752 
16753 
16754  public:
16755  /* name Memory Allocation Functions
16756  \brief Memory allocations functions ... incomplete-documentation
16757 
16758  These functions have been made public as part of the design, but they are suggested for internal use
16759  or by particularly knowledgable users for specialized tools or applications.
16760  */
16761  /* */
16762 
16773  virtual bool isInMemoryPool() override;
16774 
16785  virtual void checkDataMemberPointersIfInMemoryPool() override;
16786 
16787  // DQ (4/30/2006): Modified to be a const function.
16802  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
16803 
16813  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
16814 
16826  virtual long getChildIndex( SgNode* childNode ) const override;
16827 
16828  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
16829  // comment here (changed to be a C style comment and not be a doxygen comment).
16830  /* \brief Constructor for use by AST File I/O Mechanism
16831 
16832  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
16833  which obtained via fast binary file I/O from disk.
16834  */
16835  // SgName( SgNameStorageClass& source );
16836 
16837 
16838 
16839 
16840 
16841  // JH (10/24/2005): methods added to support the ast file IO
16842  private:
16843 
16844  /* name AST Memory Allocation Support Functions
16845  \brief Memory allocations support....
16846 
16847  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
16848  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
16849  and support the AST File I/O Mechanism.
16850  */
16851  /* */
16852 
16853  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
16854  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
16855  that I use the same type everywhere, if any changes are made. THe second one declares the type
16856  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
16857  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
16858  a correspinding one in the AST_FILE_IO class!
16859  */
16860  // DQ (9/2/2015): This typedef is no longer used, we can't define the
16861  // comment here (changed to be a C style comment and not be a doxygen comment).
16862  /* \brief Typedef used for low level memory access.
16863  */
16864  // typedef unsigned char* TestType;
16865 
16866  // DQ (9/2/2015): This typedef is no longer used, we can't define the
16867  // comment here (changed to be a C style comment and not be a doxygen comment).
16868  /* \brief Typedef used to hold memory addresses as values.
16869  */
16870  // typedef unsigned long AddressType;
16871 
16872 
16873 
16874  // necessary, to have direct access to the p_freepointer and the private methods !
16876  friend class AST_FILE_IO;
16877 
16879  friend class SgNameStorageClass;
16880 
16882  friend class AstSpecificDataManagingClass;
16883 
16885  friend class AstSpecificDataManagingClassStorageClass;
16886 
16887  public:
16889  SgName( const SgNameStorageClass& source );
16890 
16891  // private: // JJW hack
16892  /*
16893  name AST Memory Allocation Support Variables
16894  Memory allocations support variables
16895 
16896  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
16897  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
16898  and support the AST File I/O Mechanism.
16899  */
16900  /* */
16901 
16902  public:
16903 
16904  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
16905  // to current node (so that it will work cleanly with build functions to specify patterns).
16906  // virtual SgNode* addRegExpAttribute();
16912  SgName* addRegExpAttribute(std::string s, AstRegExAttribute* a);
16913 
16914 // *** COMMON CODE SECTION ENDS HERE ***
16915 
16916 
16917 // End of memberFunctionString
16918 // Start of memberFunctionString
16919 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
16920 
16921  // the generated cast function
16922  // friend ROSE_DLL_API SgName* isSgName ( SgNode* s );
16923 
16924  typedef SgSupport base_node_type;
16925 
16926 
16927 // End of memberFunctionString
16928 
16929 
16930 
16931  public:
16932  virtual ~SgName();
16933 
16934  protected:
16935 // Start of memberFunctionString
16936 std::string p_char;
16937 
16938 // End of memberFunctionString
16939 
16940 
16941 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
16942 
16943 
16944  };
16945 #endif
16946 
16947 // postdeclarations for SgName
16948 
16949 /* #line 16950 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
16950 /* #line 5638 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
16951 
16952 // extern const SgName defaultName("defaultName");
16953 
16954 // DQ (10/5/2007): We no longer need this!
16955 // extern const SgName SgdefaultName;
16956 
16957 
16958 
16959 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
16960 
16961 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
16962 
16963 
16964 /* #line 16965 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
16965 
16966 
16967 
16968 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
16969 
16970 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
16971 // This code is automatically generated for each
16972 // terminal and non-terminal within the defined
16973 // grammar. There is a simple way to change the
16974 // code to fix bugs etc. See the ROSE README file
16975 // for directions.
16976 
16977 // tps: (02/22/2010): Adding DLL export requirements
16978 #include "rosedll.h"
16979 
16980 // predeclarations for SgSymbolTable
16981 
16982 /* #line 16983 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
16983 /* #line 4576 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
16984 
16985 
16986 std::ostream & operator<< ( std::ostream & os, const std::vector<bool> & bv );
16987 
16988 // forward class declaration to support case sensitive/insensitive symbol tables.
16989 class rose_hash_multimap;
16990 
16993 struct eqstr
16994  {
16995  // DQ (12/22/2005): Added constructor to support case insensitive name semantics
16996  const rose_hash_multimap* hash_multimap;
16997 
16998  // DQ (12/22/2005): Added constructor to support case insensitive name semantics
16999  eqstr(const rose_hash_multimap* p) : hash_multimap(p) {}
17000 
17001  // The definition of this function requires the reference to the member function
17002  // rose_hash_multimap::get_case_insensitive_semantics() so it must be seen after
17003  // the rose_hash_multimap class definition.
17004  bool operator()(const SgName & s1, const SgName & s2) const;
17005  };
17006 
17010  {
17011  // DQ (12/22/2005): Added constructor to support case insensitive name semantics
17012  const rose_hash_multimap* hash_multimap;
17013 
17014  // CH (4/8/2010): Use boost::unordered instead
17015  // CH (4/13/2010): Use boost::hash<string> instead
17016  // rose_hash::hash<const char*> hasher;
17017  rose_hash::hash<std::string> hasher;
17018 
17019  public:
17020  // DQ (12/22/2005): Added constructor to support case insensitive name semantics
17021  hash_Name(const rose_hash_multimap* p) : hash_multimap(p) {}
17022 
17023  // The definition of this function requires the reference to the member function
17024  // rose_hash_multimap::get_case_insensitive_semantics() so it must be seen after
17025  // the rose_hash_multimap class definition.
17026  size_t operator()(const SgName & name) const;
17027  };
17028 
17040 // tps (11/19/2009) : Constructor of hash_multimap in MSVS is different
17041 // CH (4/8/2010): Use boost::unordered instead
17042 
17043 class rose_hash_multimap : public rose_hash::unordered_multimap<SgName, SgSymbol*, hash_Name, eqstr>
17044  {
17045  protected:
17046  SgNode * parent;
17047  bool case_insensitive_semantics;
17048 
17049  public:
17050  // DQ (12/22/2005): Added initialization of parent pointer as suggested by Jochen
17051 #if 0
17052  // DQ (11/27/2010): Older version of code before adding support for case insensitive behavior.
17053  rose_hash_multimap(bool case_insensitive_semantics = false)
17054  // : rose_hash::unordered_multimap<SgName, SgSymbol*, hash_Name, eqstr>(), parent(NULL)
17055  : rose_hash::unordered_multimap<SgName, SgSymbol*, hash_Name, eqstr>(boost::unordered_detail::default_bucket_count,hash_Name(),eqstr(case_insensitive_semantics)), parent(NULL)
17056  {}
17057 
17058  rose_hash_multimap(int sz, bool case_insensitive_semantics = false)
17059  // : rose_hash::unordered_multimap<SgName, SgSymbol*, hash_Name, eqstr>(sz), parent(NULL)
17060  : rose_hash::unordered_multimap<SgName, SgSymbol*, hash_Name, eqstr>(sz,hash_Name(),eqstr(case_insensitive_semantics)), parent(NULL)
17061  {}
17062 
17064  : rose_hash::unordered_multimap<SgName, SgSymbol*, hash_Name, eqstr>(/*(rose_hash_multimap)*/rhs), parent(rhs.parent)
17065  {}
17066 #else
17067  // DQ (11/27/2010): Newer version of code after adding support for case insensitive behavior.
17069  // : rose_hash::unordered_multimap<SgName, SgSymbol*, hash_Name, eqstr>(boost::unordered_detail::default_bucket_count,hash_Name(this),eqstr(this)), parent(NULL), case_insensitive_semantics(false)
17070  : rose_hash::unordered_multimap<SgName, SgSymbol*, hash_Name, eqstr>(17,hash_Name(this),eqstr(this)), parent(NULL), case_insensitive_semantics(false)
17071  {
17072 #if 0
17073  // DQ (11/5/2020): Added debugging support.
17074  printf ("In rose_hash_multimap() default constructor \n");
17075 #endif
17076  }
17077 
17078  rose_hash_multimap(int sz)
17079  : rose_hash::unordered_multimap<SgName, SgSymbol*, hash_Name, eqstr>(sz,hash_Name(this),eqstr(this)), parent(NULL), case_insensitive_semantics(false)
17080  {
17081 #if 0
17082  // DQ (11/5/2020): Added debugging support.
17083  printf ("In rose_hash_multimap(int sz) constructor \n");
17084 #endif
17085  }
17086 
17088  : rose_hash::unordered_multimap<SgName, SgSymbol*, hash_Name, eqstr>(/*(rose_hash_multimap)*/rhs), parent(rhs.parent), case_insensitive_semantics(rhs.case_insensitive_semantics)
17089  {
17090 #if 0
17091  // DQ (11/5/2020): Added debugging support.
17092  printf ("In rose_hash_multimap() copy constructor \n");
17093 #endif
17094  }
17095 #endif
17096  void set_parent(SgNode * new_parent)
17097  {
17098  parent = new_parent;
17099  }
17100 
17101  SgNode* get_parent() const
17102  {
17103  return parent;
17104  }
17105 
17106  // DQ (11/28/2010): Added support to set/unset case sensitivity in symbol table handling.
17107  void set_case_insensitive_semantics(bool b)
17108  {
17109  case_insensitive_semantics = b;
17110  }
17111 
17112  // DQ (11/28/2010): Added support to set/unset case sensitivity in symbol table handling.
17113  bool get_case_insensitive_semantics() const
17114  {
17115  return case_insensitive_semantics;
17116  }
17117 
17118  void delete_elements();
17119 
17121  {
17122 #if 0
17123  printf ("Inside of rose_hash_multimap destructor: this = %p derived from public rose_hash::unordered_multimap<SgName, SgSymbol*, hash_Name, eqstr>: \n",this);
17124 #endif
17125  delete_elements();
17126 
17127  // DQ (12/22/2005): Added initialization of parent pointer as suggested by Jochen
17128  parent = NULL;
17129  }
17130 
17131  // JH (01/01/2006) friend class declarations to get direct access to data member for the ast file IO
17132  friend class AST_FILE_IO;
17133  friend class SgSymbolTableStorageClass;
17134  friend class EasyStorage<rose_hash_multimap*>;
17135  };
17136 
17137 
17138 std::ostream & operator<< ( std::ostream & os, const rose_hash_multimap::iterator & rhm_it );
17139 
17140 
17141 
17142 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
17143 
17144 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
17145 
17146 #if 1
17147 // Class Definition for SgSymbolTable
17148 class ROSE_DLL_API SgSymbolTable : public SgSupport
17149  {
17150  public:
17151 
17152 
17153 /* #line 17154 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
17154 
17155  virtual SgNode* copy ( SgCopyHelp& help) const override;
17156 // Start of memberFunctionString
17157 /* #line 4735 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
17158 
17159 
17160  // AJ (10/21/2004): Added support STL based implementation of hash table.
17161  // I have replaced the p_table in the SgSymbolTable from a SgSymbolHashMultimap
17162  // to the STL hash_multimap<SgName,SgSymbol*,..>. The hash function for SgName
17163  // uses the native STL hash function for char* . The methods of SgSymbolTable
17164  // were adjusted (where necessary) to accomodate the STL hash_multimap table.
17165  // What we have now is the old interaface of SgSymbolTable working with STL
17166  // hash_multimap AND the STL interaface through the hash_multimap table.
17167 
17168  // DQ (1/30/2007): Added many member functions back into ROSE, now that we both
17169  // better appriciate why they are required and we are overhaling the symbol
17170  // table interface generally.
17171  // Comment from 9/7/2006):
17172  // Many member functions were removed because they are (with few exceptions,
17173  // where they have been recently restored) infreqently used and too
17174  // much funcionality to support robustly. Now that we use STL internally
17175  // and we make the STL hash map available, users have all possible access.
17176 
17177  // typedefs to STL container used internally
17179  typedef BaseHashType::iterator hash_iterator;
17180 
17181  // Default constructor (builds the hash table using a default size: 17 typically)
17182  SgSymbolTable();
17183 
17185  SgSymbolTable(int sz);
17186 
17187  // Destructors are automatically generated by ROSETTA and so should not be explicitly represented
17188  // ~SgSymbolTable();
17189 
17190  // General function used to build AST
17191  void insert ( const SgName & name, SgSymbol *sp );
17192 
17193 #if 1
17194  // DQ (11/27/2010): Changing the return type to "bool"
17195  // DQ (1/31/2007): Depricated (is not well named and should return bool)
17196  // int find ( const SgName & name, SgSymbol *sp, bool case_insensitive = false ) ROSE_DEPRECATED_FUNCTION;
17197  bool find ( const SgName & name, SgSymbol *sp ) ROSE_DEPRECATED_FUNCTION;
17198 #endif
17199 
17200  // DQ (1/31/2007): New functions that will replace the depricated find() member function
17201  // Note that this is log n in complexity
17202  bool exists ( const SgName &, SgSymbol *sp ) const;
17203 
17204  // DQ (1/31/2007): This is log n in complexity
17205  bool exists ( const SgName & name) const;
17206 
17207  // DQ (1/31/2007): This is linear in complexity (expensive)
17208  bool exists ( const SgSymbol *sp ) const;
17209 
17210  // DQ (2/6/2007): find functions that take the declarations that are internally associated with SgSymbol IR nodes.
17211  SgSymbol* find( const SgInitializedName* initializedName);
17212  SgSymbol* find( const SgFunctionType* functionType);
17213  SgSymbol* find( const SgStatement* statement);
17214 
17215  // DQ (1/30/2007): Added general remove function for an explicitly identified SgSymbol
17216  void remove ( const SgSymbol* symbol );
17217 
17218  // DQ (1/30/2007): Added general remove functions for all SgSymbol IR nodes.
17219  // This function will remove all symbols with the specified name (even ones of
17220  // different types, see rest of comment).
17221  // This function is a bit dangerous except for function types since only for the
17222  // function type table are the names unique. For non-function type symbol
17223  // tables classes and typedefs can have the same name (e.g. "typedef struct X {} X;")
17224  // so removing the name might have unexpected results!
17225  void remove_function_type ( const SgName & name);
17226 
17227 #if 0
17228  // DQ (1/30/2007): Added remove functions for each sort of SgSymbol IR node
17229  // This removes all the symbols matching the name or name and type of symbol
17230  // These can be dangerous where there are the names in the symbol table are
17231  // not unique and especially when using multiple un-names declarations of
17232  // the same type or symbol.
17233  void remove_function ( const SgName & );
17234  void remove_class ( const SgName & );
17235  void remove_enum ( const SgName & );
17236  void remove_typedef ( const SgName & );
17237  void remove_label ( const SgName & );
17238  void remove_var ( const SgName & );
17239  void remove_enum_field ( const SgName & );
17240  void remove_function_type ( const SgName & );
17241  void remove_namespace ( const SgName & );
17242 #endif
17243 
17244 #if 0
17245  // DQ (11/27/2010): Removing these to avoid updating them to have consistant case handling support (deprecated 4-5 years ago).
17246 
17247  // Used by SgScopeStatement::lookup_symbol(const SgName& n)
17248  SgSymbol* findany(const SgName &) ROSE_DEPRECATED_FUNCTION;
17249 
17250  // Used only for global function type table
17251  SgFunctionTypeSymbol* findfunctype(const SgName&) ROSE_DEPRECATED_FUNCTION;
17252 
17253  // Used by Qing's AST Interface code
17254  SgVariableSymbol* findvar(const SgName &) ROSE_DEPRECATED_FUNCTION;
17255  SgClassSymbol* findclass(const SgName &) ROSE_DEPRECATED_FUNCTION;
17256  SgFunctionSymbol* findfunc(const SgName&) ROSE_DEPRECATED_FUNCTION;
17257  SgFunctionSymbol* findfunc(const SgName&, const SgType*) ROSE_DEPRECATED_FUNCTION;
17258 #endif
17259 
17260  // DQ (1/30/2007): New interface member functions using name.
17261  // These function search first against the name and then iteratively continue through
17262  // the internal STL container to look for an entry that match the name and the type of
17263  // the SgSymbol. This is optimially fast only for the case where there are unique names.
17264  // SgSymbol* find_any(const SgName & name); //! Complexity O(log n) for first match against name, then O(n)
17265  SgSymbol* find_any(const SgName & name, SgTemplateParameterPtrList* templateParameterList, SgTemplateArgumentPtrList* templateArgumentList);
17266 
17267  SgVariableSymbol* find_variable(const SgName & name);
17268 
17269 // #ifndef ROSE_USE_SWIG_SUPPORT
17270 #ifndef SWIG
17271  // DQ (3/10/2013): These functions are left undefined in the final link step for SWIG support, so remove it from SWIG processing for now.
17272 
17273  // DQ (12/27/2011): Added support for template declarations in the AST.
17274  // SgTemplateVariableSymbol* find_template_variable(const SgName & name);
17275  SgVariableSymbol* find_nontemplate_variable(const SgName & name);
17276 #endif
17277  SgClassSymbol* find_class(const SgName & name);
17278 
17279  // DQ (1/23/2019): This function adds the support to find the SgAlias symbols of a given name.
17280  // This is important in handling the viability of symbols through base classes when private base
17281  // class derivation is used.
17282  // SgAliasSymbol* find_alias(const SgName & nm);
17283 
17284  // DQ (8/10/2013): I have needed to change the API to support more than just template arguments (adding support for template parameters).
17285  // DQ (8/8/2013): I have needed to change the API to support more than just classes.
17286  // DQ (8/22/2012): We need more information to disambiguate where template argument name qualification would be important. See test2012_195.C.
17287  // bool hasMatchingTemplateArgumentsOrNoTemplateArguments(SgTemplateArgumentPtrList* X_templateArgumentsList, SgClassSymbol* classSymbol);
17288  // bool hasMatchingTemplateArgumentsOrNoTemplateArguments(SgTemplateArgumentPtrList* X_templateArgumentsList, SgSymbol* symbol);
17289  // bool hasMatchingTemplateArgumentsOrNoTemplateArguments(SgTemplateParameterPtrList* templateParameterList, SgTemplateArgumentPtrList* templateArgumentsList, SgSymbol* symbol);
17290  bool hasMatchingTemplateParametersArgumentsOrNoTemplateParametersArguments(SgTemplateParameterPtrList* templateParameterList, SgTemplateArgumentPtrList* templateArgumentsList, SgSymbol* symbol);
17291  bool hasMatchingTemplateParametersOrNoTemplateParameters(SgTemplateParameterPtrList* templateParameterList, SgSymbol* symbol);
17292  bool hasMatchingTemplateArgumentsOrNoTemplateArguments(SgTemplateArgumentPtrList* templateArgumentsList, SgSymbol* symbol);
17293  // template <class T> bool hasMatchingTemplateParametersOrArgumentsOrNoTemplateParametersOrArguments(T* templateParametersOrArgumentsList, SgSymbol* symbol);
17294  template <class T> bool hasMatchingTemplateParametersOrArgumentsOrNoTemplateParametersOrArguments(std::vector<T*>* templateParametersOrArgumentsList, SgSymbol* symbol);
17295 
17296  SgClassSymbol* find_class(const SgName & name, SgTemplateArgumentPtrList* templateArgumentsList);
17297 
17298  // DQ (1/23/2019): This function adds the support to find the SgAlias symbols of a given name.
17299  // This is important in handling the viability of symbols through base classes when private base
17300  // class derivation is used.
17301  // SgAliasSymbol* find_alias(const SgName & name, SgTemplateArgumentPtrList* templateArgumentsList); //! Complexity O(log n) for first match against name, then O(n)
17302 
17303  SgNonrealSymbol* find_nonreal(const SgName & name, SgTemplateParameterPtrList* templateParameterList, SgTemplateArgumentPtrList* templateArgumentsList);
17304 
17305  SgFunctionSymbol* find_function(const SgName& name);
17306  // SgFunctionSymbol* find_function(const SgName&, const SgType* name); //! Complexity O(log n) for first match against name, then O(n)
17307  SgFunctionSymbol* find_function(const SgName&, const SgType* name, SgTemplateArgumentPtrList* templateArgumentList = NULL);
17308 
17309  SgFunctionTypeSymbol* find_function_type(const SgName& name);
17310 
17311  // Additional find functions (using name)
17312  SgTypedefSymbol* find_typedef(const SgName & name);
17313  SgEnumSymbol* find_enum(const SgName & name);
17314  SgEnumFieldSymbol* find_enum_field(const SgName & name);
17315  SgLabelSymbol* find_label(const SgName & name);
17316  SgNamespaceSymbol* find_namespace(const SgName & name);
17317 
17318 #if 0
17319  // DQ (8/13/2013): Since function templates, member function templates, and class templates are symbols not derived from SgTemplateSymbol,
17320  // this function is not very useful since it returns a SgTemplateSymbol. This was a part of the older pre-EDG4x API.
17321  // DQ (8/10/2013): Added support for specification of template parameters (for member and non-member function overloading) and template arguments (for class specialization).
17322  // SgTemplateSymbol* find_template(const SgName & name);
17323  SgTemplateSymbol* find_template(const SgName & name, SgTemplateParameterPtrList* templateParameterList, SgTemplateArgumentPtrList* templateArgumentList);
17324 #endif
17325  // DQ (5/19/2013): Find the aliasSymbol for which the (aliasSymbol->get_base() == sp).
17326  SgAliasSymbol* find_aliased_symbol(const SgName & nm, SgSymbol *sp);
17327 
17328  // DQ (12/26/2011): Added more refined level of support for template declarations in the AST.
17329  // SgTemplateClassSymbol* find_template_class (const SgName & nm);
17330 
17331 #if 0
17332  // DQ (11/27/2010): Removing these to avoid updating them to have consistant case handling support (deprecated 4-5 years ago).
17333  SgSymbol* findfirstany() ROSE_DEPRECATED_FUNCTION;
17334  SgVariableSymbol* findfirstvar() ROSE_DEPRECATED_FUNCTION;
17335  SgClassSymbol* findfirstclass() ROSE_DEPRECATED_FUNCTION;
17336  SgFunctionSymbol* findfirstfunction() ROSE_DEPRECATED_FUNCTION;
17337 #endif
17338  // DQ (1/30/2007): New interface member functions: get the first symbol using type of SgSymbol
17339  SgSymbol* find_any();
17340  SgVariableSymbol* find_variable();
17341  SgClassSymbol* find_class();
17342  SgFunctionSymbol* find_function();
17343 
17344  // DQ (2/19/2007): this is equivalent to the STL "begin()" function because
17345  // SgFunctionTypeSymbol objects are placed into the global function type table.
17346  // SgFunctionTypeSymbol* find_function_type();
17347 
17348  SgTypedefSymbol* find_typedef();
17349  SgEnumSymbol* find_enum();
17350  SgEnumFieldSymbol* find_enum_field();
17351  SgLabelSymbol* find_label();
17352  SgNamespaceSymbol* find_namespace();
17353  SgTemplateSymbol* find_template();
17354 
17355  // DQ (12/27/2011): Added support for template declarations in the AST.
17356  // DQ (12/12/2011): New functions to support template declarations in the AST.
17357  // SgTemplateFunctionSymbol* find_template_function(const SgName& name, const SgType* type);
17359  // SgTemplateFunctionSymbol* find_template_function(const SgName& name, const SgType* type, SgTemplateParameterPtrList* templateList, SgTemplateArgumentPtrList* templateArgumentList);
17360  SgTemplateFunctionSymbol* find_template_function(const SgName& name, const SgType* type, SgTemplateParameterPtrList* templateList);
17361 
17362  SgTemplateVariableSymbol* find_template_variable(const SgName& name, SgTemplateParameterPtrList* templateList, SgTemplateArgumentPtrList* templateArgumentsList);
17363 
17364  // DQ (8/10/2013): Adding template parameter support for overloaded templates (note that the
17365  // template arguments for specialization are not required since partial template function
17366  // specialization is not allowed in C++ and any requirement for specialized functions could
17367  // only be for instantiatied template functions which would use a different symbol lookup function.
17368  // SgFunctionSymbol* find_nontemplate_function(const SgName& name, const SgType* type);
17369  SgFunctionSymbol* find_nontemplate_function(const SgName& name, const SgType* type, SgTemplateArgumentPtrList* templateArgumentList);
17370 
17371  // DQ (12/27/2011): Added support for template declarations in the AST.
17373  // SgTemplateMemberFunctionSymbol* find_template_member_function(const SgName& name, const SgType* type);
17374  // SgTemplateMemberFunctionSymbol* find_template_member_function(const SgName& name, const SgType* type, SgTemplateParameterPtrList* templateList, SgTemplateArgumentPtrList* templateArgumentList);
17375  SgTemplateMemberFunctionSymbol* find_template_member_function(const SgName& name, const SgType* type, SgTemplateParameterPtrList* templateList);
17376  // SgMemberFunctionSymbol* find_nontemplate_member_function(const SgName& name, const SgType* type);
17377  SgMemberFunctionSymbol* find_nontemplate_member_function(const SgName& name, const SgType* type, SgTemplateArgumentPtrList* templateArgumentList);
17378 
17379  // DQ (9/9/2012): We need to pass the template parameters to help disambiguate the symblos using more than just the names.
17380  // SgTemplateClassSymbol* find_template_class (const SgName& name); //! Complexity O(log n) for first match against name, then O(n)
17381  SgTemplateClassSymbol* find_template_class (const SgName & nm, SgTemplateParameterPtrList* templateList, SgTemplateArgumentPtrList* templateArgumentList );
17382 
17383  // DQ (3/8/2017): Adding support for template typedef declarations and their symbol table handling.
17384  // SgTemplateTypedefSymbol* find_template_typedef (const SgName & nm, SgTemplateParameterPtrList* templateList, SgTemplateArgumentPtrList* templateArgumentList );
17385  SgTemplateTypedefSymbol* find_template_typedef (const SgName & nm);
17386 
17387  // SgClassSymbol* find_nontemplate_class(const SgName& name); //! Complexity O(log n) for first match against name, then O(n)
17388  SgClassSymbol* find_nontemplate_class(const SgName& name, SgTemplateArgumentPtrList* templateArgumentsList);
17389 
17390 #if 0
17391  // DQ (11/27/2010): Removing these to avoid updating them to have consistant case handling support (deprecated 4-5 years ago).
17392  SgSymbol* nextany() ROSE_DEPRECATED_FUNCTION;
17393  SgVariableSymbol* nextvar() ROSE_DEPRECATED_FUNCTION;
17394  SgClassSymbol* nextclass() ROSE_DEPRECATED_FUNCTION;
17395 #endif
17396  // Get the next symbol of a specific type, return NULL if not available.
17397  // These functions use state information set by the find functions (either
17398  // the versions using the name or not using a name as a parameter).
17399  SgSymbol* next_any();
17400  SgVariableSymbol* next_variable();
17401  SgClassSymbol* next_class();
17402  SgFunctionSymbol* next_function();
17403  SgTypedefSymbol* next_typedef();
17404  SgEnumSymbol* next_enum();
17405  SgEnumFieldSymbol* next_enum_field();
17406  SgLabelSymbol* next_label();
17407  SgNamespaceSymbol* next_namespace();
17408  SgTemplateSymbol* next_template();
17409 #if 0
17410  // DQ (11/27/2010): Removing these to avoid updating them to have consistant case handling support (deprecated 4-5 years ago).
17411  // for both global function and member functions
17412  SgFunctionSymbol* nextfunc() ROSE_DEPRECATED_FUNCTION;
17413 #endif
17414 #if 0
17415  // DQ (9/7/2006): Previously removed functionality, restored by request from Beata at ANL.
17416  // The next for functions have been placed back into the Sage III interface.
17417  SgVariableSymbol* findfirstvar();
17418  SgVariableSymbol* nextvar();
17419  SgSymbol* nextany();
17420  SgSymbol* findfirstany();
17421 #endif
17422 #if 0
17423  // DQ (11/27/2010): Removing these to avoid updating them to have consistant case handling support (deprecated 4-5 years ago).
17424  // This is a cute operator to use, but since it can't specify a type of SgSymbol it is not so useful in practice.
17425  SgSymbol* operator[](const SgName &) ROSE_DEPRECATED_FUNCTION;
17426 #endif
17427  int count(const SgName &) const;
17429 
17431  int count_aliases(const SgName &) const;
17432 
17434  void print( std::string label, VariantT nodeType = V_SgSymbol );
17435  void print();
17436  // void print( std::string label );
17437 
17438  // Output to ostream (this function is not implemented)
17439  // void print(std::ostream&);
17440 
17442  int size() const;
17443 
17445  std::set<SgNode*> get_symbols() const;
17446 
17447 #if 0
17448 // DQ (3/10/2007): This approach in the end, didn't work. So I think this can be removed!
17450  unsigned int generateUniqueNumberForMatchingSymbol( SgDeclarationStatement* symbolBasis ) const;
17451 #endif
17452 
17454  SgName get_name( const SgNode* node) const;
17455 
17456  // DQ (11/28/2010): Added case sensitive/insensitive option to symbol table behavior.
17462  bool isCaseInsensitive() const;
17463  void setCaseInsensitive(bool b);
17464 
17465  // DQ (3/30/2014): This is a mode introduced to match the C++ handling of symbols of base classes with that of Java.
17466  // This might be temporary, but is at least a part of how we are sorting out the differences between C++ and Java
17467  // for symbols data members in base classes. In C++ these are represented as SgAliasSymbols in the derived classes
17468  // (permitting access issues to be addressed). In Java this is less sophisticated and one has to seach the base
17469  // classes explicitly. This mode permits the semantics of searching for symbols to be handled from the derived class
17470  // directly. It might be a better design to have the Java symbol handling be a bit more like that of C++, but this
17471  // must be discussed in some detail before we go that far.
17472  static bool get_force_search_of_base_classes();
17473  static void set_force_search_of_base_classes( bool value );
17474 
17475  // DQ (7/12/2014): Adding support for static data member.
17476  static SgNodeSet & get_aliasSymbolCausalNodeSet();
17477 
17478  // DQ (8/3/2019): Display function for static data member.
17479  static void display_aliasSymbolCausalNodeSet();
17480 
17481  protected:
17482 
17483 #if 0
17484  // DQ (8/21/2013): This function has been removed in favor of a single low-level (templated) supporting
17485  // function that can optionally handle types (only used to support function lookups).
17486  // DQ (12/26/2011): Refactoring of code into templated support function.
17487  // template<class ReturnType> ReturnType* find_symbol_support (const SgName & nm);
17488  template<class ReturnType> ReturnType* find_symbol_support (const SgName & nm, SgTemplateParameterPtrList* templateParameters = NULL, SgTemplateArgumentPtrList* templateArguments = NULL);
17489 #endif
17490 
17491  // DQ (4/14/2017): Test test2017_30.C demonstrates that we need to be able to force the filtering of symbols from templates
17492  // DQ (5/20/2013): Added refactoring of symbol lookup support so that we can handle new namespace support for symbols.
17493  // template<class ReturnType> ReturnType* find_symbol_with_type_support (const SgName & nm, const SgType* type);
17494  // template<class ReturnType> ReturnType* find_symbol_with_type_support (const SgName & nm, const SgType* type, SgTemplateParameterPtrList* templateParameters, SgTemplateArgumentPtrList* templateArgumentList);
17495  template<class ReturnType> ReturnType* find_symbol_with_type_support (const SgName & nm, const SgType* type, SgTemplateParameterPtrList* templateParameters, SgTemplateArgumentPtrList* templateArgumentList, bool filterTemplateSymbols);
17496 
17497 #if 0
17498  // DQ (5/20/2013): Added support for better refactoring on the template code so we can use it to support other functions.
17499  // DQ (9/9/2012): Adding more template support (need version of function for template parameters (to disambiguate
17500  // template names, similar to how we do so for template instantiations using the template argument list).
17501  // template<class ReturnType> ReturnType* find_template_symbol_support (const SgName & nm, SgTemplateParameterPtrList* templateParameters, SgTemplateArgumentPtrList* templateArgumentList);
17502  template<class ReturnType,class ReturnTypeDeclaration> ReturnType* find_template_symbol_support (const SgName & nm, SgTemplateParameterPtrList* templateParameters, SgTemplateArgumentPtrList* templateArgumentList);
17503 
17504  // DQ (8/12/2013): This function is redundant and is not replaced by the template function find_symbol_support<SgClassName>(nm,NULL,templateArgumentsList).
17505  // DQ (5/20/2013): Added refactoring of symbol lookup support so that we can handle new namespace support for symbols.
17506  template<class ReturnType> ReturnType* find_symbol_with_template_args_support ( const SgName & nm, SgTemplateArgumentPtrList* templateArgumentsList );
17507 #endif
17508 
17509  public:
17510 #if 0
17511  // DQ (5/21/2013): This function was moved from the symbol table to the SgScopeStatement so that we could
17512  // make the symbol table access functions private as part of the new namespace symbol table handling.
17513  // DQ (3/13/2012): Added support for organizing how we match function declarations with function symbols.
17514  template<class T>
17515  SgFunctionSymbol* find_symbol_by_type_of_function (const SgName & name, const SgType* func_type);
17516 #endif
17517 
17518  size_t maxCollisions();
17519 
17520 
17521 
17522 // End of memberFunctionString
17523 // Start of memberFunctionString
17524 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
17525 
17526 // *** COMMON CODE SECTION BEGINS HERE ***
17527 
17528  public:
17529 
17530  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
17531  // and not required which is required to match the other aspects of the copy mechanism code generation.
17532  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
17533  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
17534  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
17535  // virtual SgNode* copy ( const SgCopyHelp & help) const;
17536 
17538  virtual std::string class_name() const override;
17539 
17541  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
17542 
17544  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
17545  // static const VariantT static_variant = V_SgSymbolTable;
17546  enum { static_variant = V_SgSymbolTable };
17547 
17548  /* the generated cast function */
17550  ROSE_DLL_API friend SgSymbolTable* isSgSymbolTable( SgNode * s );
17551 
17553  ROSE_DLL_API friend const SgSymbolTable* isSgSymbolTable( const SgNode * s );
17554 
17555  // ******************************************
17556  // * Memory Pool / New / Delete
17557  // ******************************************
17558 
17559  public:
17561  static const unsigned pool_size; //
17563  static std::vector<unsigned char *> pools; //
17565  static SgSymbolTable * next_node; //
17566 
17568  static unsigned long initializeStorageClassArray(SgSymbolTableStorageClass *); //
17569 
17571  static void clearMemoryPool(); //
17572  static void deleteMemoryPool(); //
17573 
17575  static void extendMemoryPoolForFileIO(); //
17576 
17578  static SgSymbolTable * getPointerFromGlobalIndex(unsigned long); //
17580  static SgSymbolTable * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
17581 
17583  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
17585  static void resetValidFreepointers(); //
17587  static unsigned long getNumberOfLastValidPointer(); //
17588 
17589 
17590 #if defined(INLINE_FUNCTIONS)
17591 
17592  inline void *operator new (size_t size);
17593 #else
17594 
17595  void *operator new (size_t size);
17596 #endif
17597 
17598  void operator delete (void* pointer, size_t size);
17599 
17600  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
17601  void operator delete (void* pointer)
17602  {
17603  // This is the generated delete operator...
17604  SgSymbolTable::operator delete (pointer,sizeof(SgSymbolTable));
17605  }
17606 
17608  static size_t numberOfNodes();
17609 
17611  static size_t memoryUsage();
17612 
17613  // End of scope which started in IR nodes specific code
17614  /* */
17615 
17616  /* name Internal Functions
17617  \brief Internal functions ... incomplete-documentation
17618 
17619  These functions have been made public as part of the design, but they are suggested for internal use
17620  or by particularly knowledgeable users for specialized tools or applications.
17621 
17622  \internal We could not make these private because they are required by user for special purposes. And
17623  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
17624 
17625  */
17626 
17627  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
17628  // overridden in every class by *generated* implementation
17630  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
17631  // MS: 06/28/02 container of names of variables or container indices
17632  // used used in the traversal to access AST successor nodes
17633  // overridden in every class by *generated* implementation
17636  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
17637 
17638  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
17639  // than all the vector copies. The implementation for these functions is generated for each class.
17641  virtual size_t get_numberOfTraversalSuccessors() override;
17643  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
17645  virtual size_t get_childIndex(SgNode *child) override;
17646 
17647 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
17648  // MS: 08/16/2002 method for generating RTI information
17650  virtual RTIReturnType roseRTI() override;
17651 #endif
17652  /* */
17653 
17654 
17655 
17656  /* name Deprecated Functions
17657  \brief Deprecated functions ... incomplete-documentation
17658 
17659  These functions have been deprecated from use.
17660  */
17661  /* */
17662 
17664  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
17665 
17666  // JJW (10/16/2008): Changed to a single function in Node.code, and put
17667  // getVariant() in #if 0 block to prevent confusing Doxygen
17668 #if 0
17669 
17670  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
17672  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
17673 #endif
17674  /* */
17675 
17676 
17677 
17678 
17679  public:
17680  /* name Traversal Support Functions
17681  \brief Traversal support functions ... incomplete-documentation
17682 
17683  These functions have been made public as part of the design, but they are suggested for internal use
17684  or by particularly knowledgable users for specialized tools or applications.
17685  */
17686  /* */
17687 
17688  // DQ (11/26/2005): Support for visitor pattern mechanims
17689  // (inferior to ROSE traversal mechanism, experimental).
17693 
17694  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
17696  virtual void accept (ROSE_VisitorPattern & visitor) override;
17697 
17698  // DQ (12/26/2005): Support for traversal based on the memory pool
17701  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
17702 
17706 
17707  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
17708  // This traversal helps support internal tools that call static member functions.
17709  // note: this function operates on the memory pools.
17712  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
17713  /* */
17714 
17715 
17716  public:
17717  /* name Memory Allocation Functions
17718  \brief Memory allocations functions ... incomplete-documentation
17719 
17720  These functions have been made public as part of the design, but they are suggested for internal use
17721  or by particularly knowledgable users for specialized tools or applications.
17722  */
17723  /* */
17724 
17735  virtual bool isInMemoryPool() override;
17736 
17747  virtual void checkDataMemberPointersIfInMemoryPool() override;
17748 
17749  // DQ (4/30/2006): Modified to be a const function.
17764  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
17765 
17775  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
17776 
17788  virtual long getChildIndex( SgNode* childNode ) const override;
17789 
17790  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
17791  // comment here (changed to be a C style comment and not be a doxygen comment).
17792  /* \brief Constructor for use by AST File I/O Mechanism
17793 
17794  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
17795  which obtained via fast binary file I/O from disk.
17796  */
17797  // SgSymbolTable( SgSymbolTableStorageClass& source );
17798 
17799 
17800 
17801 
17802 
17803  // JH (10/24/2005): methods added to support the ast file IO
17804  private:
17805 
17806  /* name AST Memory Allocation Support Functions
17807  \brief Memory allocations support....
17808 
17809  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
17810  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
17811  and support the AST File I/O Mechanism.
17812  */
17813  /* */
17814 
17815  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
17816  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
17817  that I use the same type everywhere, if any changes are made. THe second one declares the type
17818  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
17819  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
17820  a correspinding one in the AST_FILE_IO class!
17821  */
17822  // DQ (9/2/2015): This typedef is no longer used, we can't define the
17823  // comment here (changed to be a C style comment and not be a doxygen comment).
17824  /* \brief Typedef used for low level memory access.
17825  */
17826  // typedef unsigned char* TestType;
17827 
17828  // DQ (9/2/2015): This typedef is no longer used, we can't define the
17829  // comment here (changed to be a C style comment and not be a doxygen comment).
17830  /* \brief Typedef used to hold memory addresses as values.
17831  */
17832  // typedef unsigned long AddressType;
17833 
17834 
17835 
17836  // necessary, to have direct access to the p_freepointer and the private methods !
17838  friend class AST_FILE_IO;
17839 
17841  friend class SgSymbolTableStorageClass;
17842 
17844  friend class AstSpecificDataManagingClass;
17845 
17847  friend class AstSpecificDataManagingClassStorageClass;
17848 
17849  public:
17851  SgSymbolTable( const SgSymbolTableStorageClass& source );
17852 
17853  // private: // JJW hack
17854  /*
17855  name AST Memory Allocation Support Variables
17856  Memory allocations support variables
17857 
17858  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
17859  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
17860  and support the AST File I/O Mechanism.
17861  */
17862  /* */
17863 
17864  public:
17865 
17866  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
17867  // to current node (so that it will work cleanly with build functions to specify patterns).
17868  // virtual SgNode* addRegExpAttribute();
17875 
17876 // *** COMMON CODE SECTION ENDS HERE ***
17877 
17878 
17879 // End of memberFunctionString
17880 // Start of memberFunctionString
17881 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
17882 
17883  // the generated cast function
17884  // friend ROSE_DLL_API SgSymbolTable* isSgSymbolTable ( SgNode* s );
17885 
17886  typedef SgSupport base_node_type;
17887 
17888 
17889 // End of memberFunctionString
17890 
17891 
17892  public:
17893  SgName get_name() const /* (getDataAccessFunctionPrototypeString) */;
17894  void set_name(SgName name) /* (getDataAccessFunctionPrototypeString) */;
17895 
17896  public:
17897  bool get_no_name() const;
17898  void set_no_name(bool no_name);
17899 
17900  public:
17901  rose_hash_multimap* get_table() const;
17902  void set_table( rose_hash_multimap* table);
17903 
17904  public:
17905  SgNodeSet get_symbolSet() const;
17906  void set_symbolSet(SgNodeSet symbolSet);
17907 
17908 
17909 
17910 
17911 
17912  public:
17913  virtual ~SgSymbolTable();
17914 
17915  protected:
17916 // Start of memberFunctionString
17917 hash_iterator p_iterator;
17918 
17919 // End of memberFunctionString
17920 // Start of memberFunctionString
17921 SgName p_name;
17922 
17923 // End of memberFunctionString
17924 // Start of memberFunctionString
17925 bool p_no_name;
17926 
17927 // End of memberFunctionString
17928 // Start of memberFunctionString
17930 
17931 // End of memberFunctionString
17932 // Start of memberFunctionString
17933 SgNodeSet p_symbolSet;
17934 
17935 // End of memberFunctionString
17936 // Start of memberFunctionString
17937 bool p_case_insensitive;
17938 
17939 // End of memberFunctionString
17940 // Start of memberFunctionString
17941 static SgNodeSet p_aliasSymbolCausalNodeSet;
17942 
17943 // End of memberFunctionString
17944 // Start of memberFunctionString
17945 static bool p_force_search_of_base_classes;
17946 
17947 // End of memberFunctionString
17948 
17949 
17950 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
17951 
17952 
17953  };
17954 #endif
17955 
17956 // postdeclarations for SgSymbolTable
17957 
17958 /* #line 17959 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
17959 /* #line 5100 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
17960 
17961 
17962 
17963 
17964 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
17965 
17966 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
17967 
17968 
17969 /* #line 17970 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
17970 
17971 
17972 
17973 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
17974 
17975 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
17976 // This code is automatically generated for each
17977 // terminal and non-terminal within the defined
17978 // grammar. There is a simple way to change the
17979 // code to fix bugs etc. See the ROSE README file
17980 // for directions.
17981 
17982 // tps: (02/22/2010): Adding DLL export requirements
17983 #include "rosedll.h"
17984 
17985 // predeclarations for SgAttribute
17986 
17987 /* #line 17988 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
17988 
17989 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
17990 
17991 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
17992 
17993 #if 1
17994 // Class Definition for SgAttribute
17995 class ROSE_DLL_API SgAttribute : public SgSupport
17996  {
17997  public:
17998 
17999 
18000 /* #line 18001 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
18001 
18002  virtual SgNode* copy ( SgCopyHelp& help) const override;
18003 // Start of memberFunctionString
18004 /* #line 5651 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
18005 
18006  // SgAttribute(char* str);
18007  int isSame(const std::string& str);
18008 
18009  // DQ (12/6/2016): This needs to match being const as in the derived class (this also eliminates a compiler warning).
18010  // virtual bool isPragma() { return 0; } // MS02/22/02
18011  virtual bool isPragma() const { return 0; }
18012 
18013  // char *get_name() const;
18014 
18015  protected:
18016  // char* p_name;
18017 
18018 
18019 
18020 // End of memberFunctionString
18021 // Start of memberFunctionString
18022 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
18023 
18024 // *** COMMON CODE SECTION BEGINS HERE ***
18025 
18026  public:
18027 
18028  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
18029  // and not required which is required to match the other aspects of the copy mechanism code generation.
18030  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
18031  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
18032  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
18033  // virtual SgNode* copy ( const SgCopyHelp & help) const;
18034 
18036  virtual std::string class_name() const override;
18037 
18039  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
18040 
18042  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
18043  // static const VariantT static_variant = V_SgAttribute;
18044  enum { static_variant = V_SgAttribute };
18045 
18046  /* the generated cast function */
18048  ROSE_DLL_API friend SgAttribute* isSgAttribute( SgNode * s );
18049 
18051  ROSE_DLL_API friend const SgAttribute* isSgAttribute( const SgNode * s );
18052 
18053  // ******************************************
18054  // * Memory Pool / New / Delete
18055  // ******************************************
18056 
18057  public:
18059  static const unsigned pool_size; //
18061  static std::vector<unsigned char *> pools; //
18063  static SgAttribute * next_node; //
18064 
18066  static unsigned long initializeStorageClassArray(SgAttributeStorageClass *); //
18067 
18069  static void clearMemoryPool(); //
18070  static void deleteMemoryPool(); //
18071 
18073  static void extendMemoryPoolForFileIO(); //
18074 
18076  static SgAttribute * getPointerFromGlobalIndex(unsigned long); //
18078  static SgAttribute * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
18079 
18081  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
18083  static void resetValidFreepointers(); //
18085  static unsigned long getNumberOfLastValidPointer(); //
18086 
18087 
18088 #if defined(INLINE_FUNCTIONS)
18089 
18090  inline void *operator new (size_t size);
18091 #else
18092 
18093  void *operator new (size_t size);
18094 #endif
18095 
18096  void operator delete (void* pointer, size_t size);
18097 
18098  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
18099  void operator delete (void* pointer)
18100  {
18101  // This is the generated delete operator...
18102  SgAttribute::operator delete (pointer,sizeof(SgAttribute));
18103  }
18104 
18106  static size_t numberOfNodes();
18107 
18109  static size_t memoryUsage();
18110 
18111  // End of scope which started in IR nodes specific code
18112  /* */
18113 
18114  /* name Internal Functions
18115  \brief Internal functions ... incomplete-documentation
18116 
18117  These functions have been made public as part of the design, but they are suggested for internal use
18118  or by particularly knowledgeable users for specialized tools or applications.
18119 
18120  \internal We could not make these private because they are required by user for special purposes. And
18121  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
18122 
18123  */
18124 
18125  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
18126  // overridden in every class by *generated* implementation
18128  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
18129  // MS: 06/28/02 container of names of variables or container indices
18130  // used used in the traversal to access AST successor nodes
18131  // overridden in every class by *generated* implementation
18134  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
18135 
18136  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
18137  // than all the vector copies. The implementation for these functions is generated for each class.
18139  virtual size_t get_numberOfTraversalSuccessors() override;
18141  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
18143  virtual size_t get_childIndex(SgNode *child) override;
18144 
18145 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
18146  // MS: 08/16/2002 method for generating RTI information
18148  virtual RTIReturnType roseRTI() override;
18149 #endif
18150  /* */
18151 
18152 
18153 
18154  /* name Deprecated Functions
18155  \brief Deprecated functions ... incomplete-documentation
18156 
18157  These functions have been deprecated from use.
18158  */
18159  /* */
18160 
18162  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
18163 
18164  // JJW (10/16/2008): Changed to a single function in Node.code, and put
18165  // getVariant() in #if 0 block to prevent confusing Doxygen
18166 #if 0
18167 
18168  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
18170  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
18171 #endif
18172  /* */
18173 
18174 
18175 
18176 
18177  public:
18178  /* name Traversal Support Functions
18179  \brief Traversal support functions ... incomplete-documentation
18180 
18181  These functions have been made public as part of the design, but they are suggested for internal use
18182  or by particularly knowledgable users for specialized tools or applications.
18183  */
18184  /* */
18185 
18186  // DQ (11/26/2005): Support for visitor pattern mechanims
18187  // (inferior to ROSE traversal mechanism, experimental).
18191 
18192  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
18194  virtual void accept (ROSE_VisitorPattern & visitor) override;
18195 
18196  // DQ (12/26/2005): Support for traversal based on the memory pool
18199  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
18200 
18204 
18205  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
18206  // This traversal helps support internal tools that call static member functions.
18207  // note: this function operates on the memory pools.
18210  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
18211  /* */
18212 
18213 
18214  public:
18215  /* name Memory Allocation Functions
18216  \brief Memory allocations functions ... incomplete-documentation
18217 
18218  These functions have been made public as part of the design, but they are suggested for internal use
18219  or by particularly knowledgable users for specialized tools or applications.
18220  */
18221  /* */
18222 
18233  virtual bool isInMemoryPool() override;
18234 
18245  virtual void checkDataMemberPointersIfInMemoryPool() override;
18246 
18247  // DQ (4/30/2006): Modified to be a const function.
18262  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
18263 
18273  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
18274 
18286  virtual long getChildIndex( SgNode* childNode ) const override;
18287 
18288  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
18289  // comment here (changed to be a C style comment and not be a doxygen comment).
18290  /* \brief Constructor for use by AST File I/O Mechanism
18291 
18292  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
18293  which obtained via fast binary file I/O from disk.
18294  */
18295  // SgAttribute( SgAttributeStorageClass& source );
18296 
18297 
18298 
18299 
18300 
18301  // JH (10/24/2005): methods added to support the ast file IO
18302  private:
18303 
18304  /* name AST Memory Allocation Support Functions
18305  \brief Memory allocations support....
18306 
18307  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
18308  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
18309  and support the AST File I/O Mechanism.
18310  */
18311  /* */
18312 
18313  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
18314  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
18315  that I use the same type everywhere, if any changes are made. THe second one declares the type
18316  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
18317  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
18318  a correspinding one in the AST_FILE_IO class!
18319  */
18320  // DQ (9/2/2015): This typedef is no longer used, we can't define the
18321  // comment here (changed to be a C style comment and not be a doxygen comment).
18322  /* \brief Typedef used for low level memory access.
18323  */
18324  // typedef unsigned char* TestType;
18325 
18326  // DQ (9/2/2015): This typedef is no longer used, we can't define the
18327  // comment here (changed to be a C style comment and not be a doxygen comment).
18328  /* \brief Typedef used to hold memory addresses as values.
18329  */
18330  // typedef unsigned long AddressType;
18331 
18332 
18333 
18334  // necessary, to have direct access to the p_freepointer and the private methods !
18336  friend class AST_FILE_IO;
18337 
18339  friend class SgAttributeStorageClass;
18340 
18342  friend class AstSpecificDataManagingClass;
18343 
18345  friend class AstSpecificDataManagingClassStorageClass;
18346 
18347  public:
18349  SgAttribute( const SgAttributeStorageClass& source );
18350 
18351  // private: // JJW hack
18352  /*
18353  name AST Memory Allocation Support Variables
18354  Memory allocations support variables
18355 
18356  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
18357  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
18358  and support the AST File I/O Mechanism.
18359  */
18360  /* */
18361 
18362  public:
18363 
18364  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
18365  // to current node (so that it will work cleanly with build functions to specify patterns).
18366  // virtual SgNode* addRegExpAttribute();
18372  SgAttribute* addRegExpAttribute(std::string s, AstRegExAttribute* a);
18373 
18374 // *** COMMON CODE SECTION ENDS HERE ***
18375 
18376 
18377 // End of memberFunctionString
18378 // Start of memberFunctionString
18379 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
18380 
18381  // the generated cast function
18382  // friend ROSE_DLL_API SgAttribute* isSgAttribute ( SgNode* s );
18383 
18384  typedef SgSupport base_node_type;
18385 
18386 
18387 // End of memberFunctionString
18388 
18389  public:
18390  std::string get_name() const /* (getDataAccessFunctionPrototypeString) */;
18391  void set_name(std::string name) /* (getDataAccessFunctionPrototypeString) */;
18392 
18393 
18394  public:
18395  virtual ~SgAttribute();
18396 
18397 
18398  public:
18399  SgAttribute(std::string name = "");
18400 
18401  protected:
18402 // Start of memberFunctionString
18403 std::string p_name;
18404 
18405 // End of memberFunctionString
18406 
18407 
18408 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
18409 
18410 
18411  };
18412 #endif
18413 
18414 // postdeclarations for SgAttribute
18415 
18416 /* #line 18417 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
18417 
18418 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
18419 
18420 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
18421 
18422 
18423 /* #line 18424 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
18424 
18425 
18426 
18427 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
18428 
18429 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
18430 // This code is automatically generated for each
18431 // terminal and non-terminal within the defined
18432 // grammar. There is a simple way to change the
18433 // code to fix bugs etc. See the ROSE README file
18434 // for directions.
18435 
18436 // tps: (02/22/2010): Adding DLL export requirements
18437 #include "rosedll.h"
18438 
18439 // predeclarations for SgPragma
18440 
18441 /* #line 18442 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
18442 
18443 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
18444 
18445 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
18446 
18447 #if 1
18448 // Class Definition for SgPragma
18449 class ROSE_DLL_API SgPragma : public SgAttribute
18450  {
18451  public:
18452 
18453 
18454 /* #line 18455 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
18455 
18456  virtual SgNode* copy ( SgCopyHelp& help) const override;
18457 // Start of memberFunctionString
18458 /* #line 5774 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
18459 
18460  // SgPragma(char *name);
18461 
18462  void post_construction_initialization() override;
18463 
18464  std::string get_pragma() const;
18465  bool samePragma(const std::string& str);
18466  bool isPragma() const override;
18467  bool gotPrinted() const;
18468  void setPrinted(bool s = true);
18469 
18470  // DQ (8/3/2004): added function to match virtual function in SgNode
18471  Sg_File_Info* get_file_info() const override;
18472 
18473 
18474 
18475 // End of memberFunctionString
18476 // Start of memberFunctionString
18477 /* #line 2317 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
18478 
18479 
18480  /* name Persistant Attribute Mechanism
18481 
18482  This is the persistant attribute mechanism for attaching attributes to IR nodes across
18483  multiple passes. Note that these attributes are persistant in that they are preserved
18484  if the AST is written out to a file and read in from a file. However, virtual function
18485  in the user-defined class derived from the AstAttribute must be defined for the attribute
18486  to be defined across the boundary of File I/O (simple pack and unpack functions). More
18487  sophisticated mechanisms are available within the AstAttributeMechanism object
18488  (e.g iterating though attributes, etc; get_attributeMechanism() is available if direct
18489  access is required, however mostly only internal tools use this lower level support).
18490 
18491  \internal This used to be a public data member, but has been changed to be a protected
18492  pointer instead. The functional interface of the AstAttributeMechanism is presevered
18493  but some of the names and the syntax for calling the interface have changed. The
18494  pointer to the AstAttributeMechanism is now generated by ROSETTA.
18495  */
18496  /* */
18498  virtual void addNewAttribute(std::string s,AstAttribute* a) override;
18500  virtual AstAttribute* getAttribute(std::string s) const override;
18502  virtual void updateAttribute(std::string s,AstAttribute* a) override; // formerly called: replace in AstAttributeMechanism
18507  virtual void setAttribute(std::string s,AstAttribute* a) override;
18509  virtual void removeAttribute(std::string s) override;
18511  virtual bool attributeExists(std::string s) const override;
18513  virtual int numberOfAttributes() const override;
18514 
18529  /* */
18530 
18531 
18532 
18533 
18534 // End of memberFunctionString
18535 // Start of memberFunctionString
18536 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
18537 
18538 // *** COMMON CODE SECTION BEGINS HERE ***
18539 
18540  public:
18541 
18542  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
18543  // and not required which is required to match the other aspects of the copy mechanism code generation.
18544  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
18545  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
18546  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
18547  // virtual SgNode* copy ( const SgCopyHelp & help) const;
18548 
18550  virtual std::string class_name() const override;
18551 
18553  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
18554 
18556  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
18557  // static const VariantT static_variant = V_SgPragma;
18558  enum { static_variant = V_SgPragma };
18559 
18560  /* the generated cast function */
18562  ROSE_DLL_API friend SgPragma* isSgPragma( SgNode * s );
18563 
18565  ROSE_DLL_API friend const SgPragma* isSgPragma( const SgNode * s );
18566 
18567  // ******************************************
18568  // * Memory Pool / New / Delete
18569  // ******************************************
18570 
18571  public:
18573  static const unsigned pool_size; //
18575  static std::vector<unsigned char *> pools; //
18577  static SgPragma * next_node; //
18578 
18580  static unsigned long initializeStorageClassArray(SgPragmaStorageClass *); //
18581 
18583  static void clearMemoryPool(); //
18584  static void deleteMemoryPool(); //
18585 
18587  static void extendMemoryPoolForFileIO(); //
18588 
18590  static SgPragma * getPointerFromGlobalIndex(unsigned long); //
18592  static SgPragma * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
18593 
18595  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
18597  static void resetValidFreepointers(); //
18599  static unsigned long getNumberOfLastValidPointer(); //
18600 
18601 
18602 #if defined(INLINE_FUNCTIONS)
18603 
18604  inline void *operator new (size_t size);
18605 #else
18606 
18607  void *operator new (size_t size);
18608 #endif
18609 
18610  void operator delete (void* pointer, size_t size);
18611 
18612  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
18613  void operator delete (void* pointer)
18614  {
18615  // This is the generated delete operator...
18616  SgPragma::operator delete (pointer,sizeof(SgPragma));
18617  }
18618 
18620  static size_t numberOfNodes();
18621 
18623  static size_t memoryUsage();
18624 
18625  // End of scope which started in IR nodes specific code
18626  /* */
18627 
18628  /* name Internal Functions
18629  \brief Internal functions ... incomplete-documentation
18630 
18631  These functions have been made public as part of the design, but they are suggested for internal use
18632  or by particularly knowledgeable users for specialized tools or applications.
18633 
18634  \internal We could not make these private because they are required by user for special purposes. And
18635  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
18636 
18637  */
18638 
18639  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
18640  // overridden in every class by *generated* implementation
18642  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
18643  // MS: 06/28/02 container of names of variables or container indices
18644  // used used in the traversal to access AST successor nodes
18645  // overridden in every class by *generated* implementation
18648  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
18649 
18650  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
18651  // than all the vector copies. The implementation for these functions is generated for each class.
18653  virtual size_t get_numberOfTraversalSuccessors() override;
18655  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
18657  virtual size_t get_childIndex(SgNode *child) override;
18658 
18659 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
18660  // MS: 08/16/2002 method for generating RTI information
18662  virtual RTIReturnType roseRTI() override;
18663 #endif
18664  /* */
18665 
18666 
18667 
18668  /* name Deprecated Functions
18669  \brief Deprecated functions ... incomplete-documentation
18670 
18671  These functions have been deprecated from use.
18672  */
18673  /* */
18674 
18676  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
18677 
18678  // JJW (10/16/2008): Changed to a single function in Node.code, and put
18679  // getVariant() in #if 0 block to prevent confusing Doxygen
18680 #if 0
18681 
18682  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
18684  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
18685 #endif
18686  /* */
18687 
18688 
18689 
18690 
18691  public:
18692  /* name Traversal Support Functions
18693  \brief Traversal support functions ... incomplete-documentation
18694 
18695  These functions have been made public as part of the design, but they are suggested for internal use
18696  or by particularly knowledgable users for specialized tools or applications.
18697  */
18698  /* */
18699 
18700  // DQ (11/26/2005): Support for visitor pattern mechanims
18701  // (inferior to ROSE traversal mechanism, experimental).
18705 
18706  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
18708  virtual void accept (ROSE_VisitorPattern & visitor) override;
18709 
18710  // DQ (12/26/2005): Support for traversal based on the memory pool
18713  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
18714 
18718 
18719  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
18720  // This traversal helps support internal tools that call static member functions.
18721  // note: this function operates on the memory pools.
18724  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
18725  /* */
18726 
18727 
18728  public:
18729  /* name Memory Allocation Functions
18730  \brief Memory allocations functions ... incomplete-documentation
18731 
18732  These functions have been made public as part of the design, but they are suggested for internal use
18733  or by particularly knowledgable users for specialized tools or applications.
18734  */
18735  /* */
18736 
18747  virtual bool isInMemoryPool() override;
18748 
18759  virtual void checkDataMemberPointersIfInMemoryPool() override;
18760 
18761  // DQ (4/30/2006): Modified to be a const function.
18776  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
18777 
18787  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
18788 
18800  virtual long getChildIndex( SgNode* childNode ) const override;
18801 
18802  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
18803  // comment here (changed to be a C style comment and not be a doxygen comment).
18804  /* \brief Constructor for use by AST File I/O Mechanism
18805 
18806  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
18807  which obtained via fast binary file I/O from disk.
18808  */
18809  // SgPragma( SgPragmaStorageClass& source );
18810 
18811 
18812 
18813 
18814 
18815  // JH (10/24/2005): methods added to support the ast file IO
18816  private:
18817 
18818  /* name AST Memory Allocation Support Functions
18819  \brief Memory allocations support....
18820 
18821  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
18822  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
18823  and support the AST File I/O Mechanism.
18824  */
18825  /* */
18826 
18827  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
18828  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
18829  that I use the same type everywhere, if any changes are made. THe second one declares the type
18830  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
18831  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
18832  a correspinding one in the AST_FILE_IO class!
18833  */
18834  // DQ (9/2/2015): This typedef is no longer used, we can't define the
18835  // comment here (changed to be a C style comment and not be a doxygen comment).
18836  /* \brief Typedef used for low level memory access.
18837  */
18838  // typedef unsigned char* TestType;
18839 
18840  // DQ (9/2/2015): This typedef is no longer used, we can't define the
18841  // comment here (changed to be a C style comment and not be a doxygen comment).
18842  /* \brief Typedef used to hold memory addresses as values.
18843  */
18844  // typedef unsigned long AddressType;
18845 
18846 
18847 
18848  // necessary, to have direct access to the p_freepointer and the private methods !
18850  friend class AST_FILE_IO;
18851 
18853  friend class SgPragmaStorageClass;
18854 
18856  friend class AstSpecificDataManagingClass;
18857 
18859  friend class AstSpecificDataManagingClassStorageClass;
18860 
18861  public:
18863  SgPragma( const SgPragmaStorageClass& source );
18864 
18865  // private: // JJW hack
18866  /*
18867  name AST Memory Allocation Support Variables
18868  Memory allocations support variables
18869 
18870  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
18871  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
18872  and support the AST File I/O Mechanism.
18873  */
18874  /* */
18875 
18876  public:
18877 
18878  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
18879  // to current node (so that it will work cleanly with build functions to specify patterns).
18880  // virtual SgNode* addRegExpAttribute();
18886  SgPragma* addRegExpAttribute(std::string s, AstRegExAttribute* a);
18887 
18888 // *** COMMON CODE SECTION ENDS HERE ***
18889 
18890 
18891 // End of memberFunctionString
18892 // Start of memberFunctionString
18893 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
18894 
18895  // the generated cast function
18896  // friend ROSE_DLL_API SgPragma* isSgPragma ( SgNode* s );
18897 
18898  typedef SgAttribute base_node_type;
18899 
18900 
18901 // End of memberFunctionString
18902 
18903  public:
18904  Sg_File_Info* get_startOfConstruct() const override /* (getDataAccessFunctionPrototypeString) */;
18905  void set_startOfConstruct(Sg_File_Info* startOfConstruct) /* (getDataAccessFunctionPrototypeString) */;
18906 
18907  public:
18908  Sg_File_Info* get_endOfConstruct() const override /* (getDataAccessFunctionPrototypeString) */;
18909  void set_endOfConstruct(Sg_File_Info* endOfConstruct) /* (getDataAccessFunctionPrototypeString) */;
18910 
18911 
18912  public:
18913  SgExprListExp* get_args() const;
18914  void set_args(SgExprListExp* args);
18915 
18916  public:
18917  AstAttributeMechanism* get_attributeMechanism() const override /* (getDataAccessFunctionPrototypeString) */;
18918  void set_attributeMechanism(AstAttributeMechanism* attributeMechanism) override /* (getDataAccessFunctionPrototypeString) */;
18919 
18920 
18921  public:
18922  virtual ~SgPragma();
18923 
18924 
18925  public:
18926  SgPragma(std::string name = "", Sg_File_Info* startOfConstruct = NULL, Sg_File_Info* endOfConstruct = NULL);
18927 
18928  protected:
18929 // Start of memberFunctionString
18930 Sg_File_Info* p_startOfConstruct;
18931 
18932 // End of memberFunctionString
18933 // Start of memberFunctionString
18934 Sg_File_Info* p_endOfConstruct;
18935 
18936 // End of memberFunctionString
18937 // Start of memberFunctionString
18938 short p_printed;
18939 
18940 // End of memberFunctionString
18941 // Start of memberFunctionString
18942 SgExprListExp* p_args;
18943 
18944 // End of memberFunctionString
18945 // Start of memberFunctionString
18946 AstAttributeMechanism* p_attributeMechanism;
18947 
18948 // End of memberFunctionString
18949 
18950 
18951 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
18952 
18953 
18954  };
18955 #endif
18956 
18957 // postdeclarations for SgPragma
18958 
18959 /* #line 18960 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
18960 
18961 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
18962 
18963 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
18964 
18965 
18966 /* #line 18967 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
18967 
18968 
18969 
18970 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
18971 
18972 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
18973 // This code is automatically generated for each
18974 // terminal and non-terminal within the defined
18975 // grammar. There is a simple way to change the
18976 // code to fix bugs etc. See the ROSE README file
18977 // for directions.
18978 
18979 // tps: (02/22/2010): Adding DLL export requirements
18980 #include "rosedll.h"
18981 
18982 // predeclarations for SgBitAttribute
18983 
18984 /* #line 18985 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
18985 
18986 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
18987 
18988 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
18989 
18990 #if 1
18991 // Class Definition for SgBitAttribute
18992 class ROSE_DLL_API SgBitAttribute : public SgAttribute
18993  {
18994  public:
18995 
18996 
18997 /* #line 18998 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
18998 
18999  virtual SgNode* copy ( SgCopyHelp& help) const override;
19000 // Start of memberFunctionString
19001 /* #line 5667 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
19002 
19003  // SgBitAttribute(char *str);
19004 
19005 // int isAttributeSet(unsigned long int bit) const;
19006 // void setAttribute(unsigned long int bit);
19007 // void unsetAttribute(unsigned long int bit);
19008 // int isPragma() const;
19009 
19010  // private:
19011  // unsigned long int p_bitflag;
19012 
19013 
19014 
19015 // End of memberFunctionString
19016 // Start of memberFunctionString
19017 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
19018 
19019 // *** COMMON CODE SECTION BEGINS HERE ***
19020 
19021  public:
19022 
19023  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
19024  // and not required which is required to match the other aspects of the copy mechanism code generation.
19025  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
19026  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
19027  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
19028  // virtual SgNode* copy ( const SgCopyHelp & help) const;
19029 
19031  virtual std::string class_name() const override;
19032 
19034  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
19035 
19037  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
19038  // static const VariantT static_variant = V_SgBitAttribute;
19039  enum { static_variant = V_SgBitAttribute };
19040 
19041  /* the generated cast function */
19043  ROSE_DLL_API friend SgBitAttribute* isSgBitAttribute( SgNode * s );
19044 
19046  ROSE_DLL_API friend const SgBitAttribute* isSgBitAttribute( const SgNode * s );
19047 
19048  // ******************************************
19049  // * Memory Pool / New / Delete
19050  // ******************************************
19051 
19052  public:
19054  static const unsigned pool_size; //
19056  static std::vector<unsigned char *> pools; //
19058  static SgBitAttribute * next_node; //
19059 
19061  static unsigned long initializeStorageClassArray(SgBitAttributeStorageClass *); //
19062 
19064  static void clearMemoryPool(); //
19065  static void deleteMemoryPool(); //
19066 
19068  static void extendMemoryPoolForFileIO(); //
19069 
19071  static SgBitAttribute * getPointerFromGlobalIndex(unsigned long); //
19073  static SgBitAttribute * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
19074 
19076  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
19078  static void resetValidFreepointers(); //
19080  static unsigned long getNumberOfLastValidPointer(); //
19081 
19082 
19083 #if defined(INLINE_FUNCTIONS)
19084 
19085  inline void *operator new (size_t size);
19086 #else
19087 
19088  void *operator new (size_t size);
19089 #endif
19090 
19091  void operator delete (void* pointer, size_t size);
19092 
19093  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
19094  void operator delete (void* pointer)
19095  {
19096  // This is the generated delete operator...
19097  SgBitAttribute::operator delete (pointer,sizeof(SgBitAttribute));
19098  }
19099 
19101  static size_t numberOfNodes();
19102 
19104  static size_t memoryUsage();
19105 
19106  // End of scope which started in IR nodes specific code
19107  /* */
19108 
19109  /* name Internal Functions
19110  \brief Internal functions ... incomplete-documentation
19111 
19112  These functions have been made public as part of the design, but they are suggested for internal use
19113  or by particularly knowledgeable users for specialized tools or applications.
19114 
19115  \internal We could not make these private because they are required by user for special purposes. And
19116  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
19117 
19118  */
19119 
19120  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
19121  // overridden in every class by *generated* implementation
19123  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
19124  // MS: 06/28/02 container of names of variables or container indices
19125  // used used in the traversal to access AST successor nodes
19126  // overridden in every class by *generated* implementation
19129  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
19130 
19131  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
19132  // than all the vector copies. The implementation for these functions is generated for each class.
19134  virtual size_t get_numberOfTraversalSuccessors() override;
19136  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
19138  virtual size_t get_childIndex(SgNode *child) override;
19139 
19140 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
19141  // MS: 08/16/2002 method for generating RTI information
19143  virtual RTIReturnType roseRTI() override;
19144 #endif
19145  /* */
19146 
19147 
19148 
19149  /* name Deprecated Functions
19150  \brief Deprecated functions ... incomplete-documentation
19151 
19152  These functions have been deprecated from use.
19153  */
19154  /* */
19155 
19157  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
19158 
19159  // JJW (10/16/2008): Changed to a single function in Node.code, and put
19160  // getVariant() in #if 0 block to prevent confusing Doxygen
19161 #if 0
19162 
19163  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
19165  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
19166 #endif
19167  /* */
19168 
19169 
19170 
19171 
19172  public:
19173  /* name Traversal Support Functions
19174  \brief Traversal support functions ... incomplete-documentation
19175 
19176  These functions have been made public as part of the design, but they are suggested for internal use
19177  or by particularly knowledgable users for specialized tools or applications.
19178  */
19179  /* */
19180 
19181  // DQ (11/26/2005): Support for visitor pattern mechanims
19182  // (inferior to ROSE traversal mechanism, experimental).
19186 
19187  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
19189  virtual void accept (ROSE_VisitorPattern & visitor) override;
19190 
19191  // DQ (12/26/2005): Support for traversal based on the memory pool
19194  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
19195 
19199 
19200  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
19201  // This traversal helps support internal tools that call static member functions.
19202  // note: this function operates on the memory pools.
19205  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
19206  /* */
19207 
19208 
19209  public:
19210  /* name Memory Allocation Functions
19211  \brief Memory allocations functions ... incomplete-documentation
19212 
19213  These functions have been made public as part of the design, but they are suggested for internal use
19214  or by particularly knowledgable users for specialized tools or applications.
19215  */
19216  /* */
19217 
19228  virtual bool isInMemoryPool() override;
19229 
19240  virtual void checkDataMemberPointersIfInMemoryPool() override;
19241 
19242  // DQ (4/30/2006): Modified to be a const function.
19257  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
19258 
19268  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
19269 
19281  virtual long getChildIndex( SgNode* childNode ) const override;
19282 
19283  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
19284  // comment here (changed to be a C style comment and not be a doxygen comment).
19285  /* \brief Constructor for use by AST File I/O Mechanism
19286 
19287  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
19288  which obtained via fast binary file I/O from disk.
19289  */
19290  // SgBitAttribute( SgBitAttributeStorageClass& source );
19291 
19292 
19293 
19294 
19295 
19296  // JH (10/24/2005): methods added to support the ast file IO
19297  private:
19298 
19299  /* name AST Memory Allocation Support Functions
19300  \brief Memory allocations support....
19301 
19302  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
19303  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
19304  and support the AST File I/O Mechanism.
19305  */
19306  /* */
19307 
19308  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
19309  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
19310  that I use the same type everywhere, if any changes are made. THe second one declares the type
19311  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
19312  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
19313  a correspinding one in the AST_FILE_IO class!
19314  */
19315  // DQ (9/2/2015): This typedef is no longer used, we can't define the
19316  // comment here (changed to be a C style comment and not be a doxygen comment).
19317  /* \brief Typedef used for low level memory access.
19318  */
19319  // typedef unsigned char* TestType;
19320 
19321  // DQ (9/2/2015): This typedef is no longer used, we can't define the
19322  // comment here (changed to be a C style comment and not be a doxygen comment).
19323  /* \brief Typedef used to hold memory addresses as values.
19324  */
19325  // typedef unsigned long AddressType;
19326 
19327 
19328 
19329  // necessary, to have direct access to the p_freepointer and the private methods !
19331  friend class AST_FILE_IO;
19332 
19334  friend class SgBitAttributeStorageClass;
19335 
19337  friend class AstSpecificDataManagingClass;
19338 
19340  friend class AstSpecificDataManagingClassStorageClass;
19341 
19342  public:
19344  SgBitAttribute( const SgBitAttributeStorageClass& source );
19345 
19346  // private: // JJW hack
19347  /*
19348  name AST Memory Allocation Support Variables
19349  Memory allocations support variables
19350 
19351  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
19352  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
19353  and support the AST File I/O Mechanism.
19354  */
19355  /* */
19356 
19357  public:
19358 
19359  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
19360  // to current node (so that it will work cleanly with build functions to specify patterns).
19361  // virtual SgNode* addRegExpAttribute();
19368 
19369 // *** COMMON CODE SECTION ENDS HERE ***
19370 
19371 
19372 // End of memberFunctionString
19373 // Start of memberFunctionString
19374 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
19375 
19376  // the generated cast function
19377  // friend ROSE_DLL_API SgBitAttribute* isSgBitAttribute ( SgNode* s );
19378 
19379  typedef SgAttribute base_node_type;
19380 
19381 
19382 // End of memberFunctionString
19383 
19384  public:
19385  unsigned long int get_bitflag() const;
19386  void set_bitflag(unsigned long int bitflag);
19387 
19388 
19389  public:
19390  virtual ~SgBitAttribute();
19391 
19392 
19393  public:
19394  SgBitAttribute(std::string name = "", unsigned long int bitflag = 0);
19395 
19396  protected:
19397 // Start of memberFunctionString
19398 unsigned long int p_bitflag;
19399 
19400 // End of memberFunctionString
19401 
19402 
19403 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
19404 
19405 
19406  };
19407 #endif
19408 
19409 // postdeclarations for SgBitAttribute
19410 
19411 /* #line 19412 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
19412 
19413 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
19414 
19415 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
19416 
19417 
19418 /* #line 19419 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
19419 
19420 
19421 
19422 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
19423 
19424 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
19425 // This code is automatically generated for each
19426 // terminal and non-terminal within the defined
19427 // grammar. There is a simple way to change the
19428 // code to fix bugs etc. See the ROSE README file
19429 // for directions.
19430 
19431 // tps: (02/22/2010): Adding DLL export requirements
19432 #include "rosedll.h"
19433 
19434 // predeclarations for SgFuncDecl_attr
19435 
19436 /* #line 19437 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
19437 
19438 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
19439 
19440 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
19441 
19442 #if 1
19443 // Class Definition for SgFuncDecl_attr
19444 class ROSE_DLL_API SgFuncDecl_attr : public SgBitAttribute
19445  {
19446  public:
19447 
19448 
19449 /* #line 19450 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
19450 
19451  virtual SgNode* copy ( SgCopyHelp& help) const override;
19452 // Start of memberFunctionString
19453 /* #line 5681 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
19454 
19455  // SgFuncDecl_attr();
19456  // void set_suppress_atomic();
19457  // int get_suppress_atomic() const;
19458 
19459  // JH (1/18/2006): Added default constructor explicitly to avoid having it be generated by the compiler
19460  SgFuncDecl_attr();
19461 
19462  private:
19463  // enum { e_suppressatomic = 0x00000001 };
19464 
19465 
19466 
19467 // End of memberFunctionString
19468 // Start of memberFunctionString
19469 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
19470 
19471 // *** COMMON CODE SECTION BEGINS HERE ***
19472 
19473  public:
19474 
19475  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
19476  // and not required which is required to match the other aspects of the copy mechanism code generation.
19477  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
19478  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
19479  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
19480  // virtual SgNode* copy ( const SgCopyHelp & help) const;
19481 
19483  virtual std::string class_name() const override;
19484 
19486  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
19487 
19489  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
19490  // static const VariantT static_variant = V_SgFuncDecl_attr;
19491  enum { static_variant = V_SgFuncDecl_attr };
19492 
19493  /* the generated cast function */
19495  ROSE_DLL_API friend SgFuncDecl_attr* isSgFuncDecl_attr( SgNode * s );
19496 
19498  ROSE_DLL_API friend const SgFuncDecl_attr* isSgFuncDecl_attr( const SgNode * s );
19499 
19500  // ******************************************
19501  // * Memory Pool / New / Delete
19502  // ******************************************
19503 
19504  public:
19506  static const unsigned pool_size; //
19508  static std::vector<unsigned char *> pools; //
19510  static SgFuncDecl_attr * next_node; //
19511 
19513  static unsigned long initializeStorageClassArray(SgFuncDecl_attrStorageClass *); //
19514 
19516  static void clearMemoryPool(); //
19517  static void deleteMemoryPool(); //
19518 
19520  static void extendMemoryPoolForFileIO(); //
19521 
19523  static SgFuncDecl_attr * getPointerFromGlobalIndex(unsigned long); //
19525  static SgFuncDecl_attr * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
19526 
19528  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
19530  static void resetValidFreepointers(); //
19532  static unsigned long getNumberOfLastValidPointer(); //
19533 
19534 
19535 #if defined(INLINE_FUNCTIONS)
19536 
19537  inline void *operator new (size_t size);
19538 #else
19539 
19540  void *operator new (size_t size);
19541 #endif
19542 
19543  void operator delete (void* pointer, size_t size);
19544 
19545  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
19546  void operator delete (void* pointer)
19547  {
19548  // This is the generated delete operator...
19549  SgFuncDecl_attr::operator delete (pointer,sizeof(SgFuncDecl_attr));
19550  }
19551 
19553  static size_t numberOfNodes();
19554 
19556  static size_t memoryUsage();
19557 
19558  // End of scope which started in IR nodes specific code
19559  /* */
19560 
19561  /* name Internal Functions
19562  \brief Internal functions ... incomplete-documentation
19563 
19564  These functions have been made public as part of the design, but they are suggested for internal use
19565  or by particularly knowledgeable users for specialized tools or applications.
19566 
19567  \internal We could not make these private because they are required by user for special purposes. And
19568  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
19569 
19570  */
19571 
19572  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
19573  // overridden in every class by *generated* implementation
19575  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
19576  // MS: 06/28/02 container of names of variables or container indices
19577  // used used in the traversal to access AST successor nodes
19578  // overridden in every class by *generated* implementation
19581  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
19582 
19583  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
19584  // than all the vector copies. The implementation for these functions is generated for each class.
19586  virtual size_t get_numberOfTraversalSuccessors() override;
19588  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
19590  virtual size_t get_childIndex(SgNode *child) override;
19591 
19592 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
19593  // MS: 08/16/2002 method for generating RTI information
19595  virtual RTIReturnType roseRTI() override;
19596 #endif
19597  /* */
19598 
19599 
19600 
19601  /* name Deprecated Functions
19602  \brief Deprecated functions ... incomplete-documentation
19603 
19604  These functions have been deprecated from use.
19605  */
19606  /* */
19607 
19609  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
19610 
19611  // JJW (10/16/2008): Changed to a single function in Node.code, and put
19612  // getVariant() in #if 0 block to prevent confusing Doxygen
19613 #if 0
19614 
19615  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
19617  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
19618 #endif
19619  /* */
19620 
19621 
19622 
19623 
19624  public:
19625  /* name Traversal Support Functions
19626  \brief Traversal support functions ... incomplete-documentation
19627 
19628  These functions have been made public as part of the design, but they are suggested for internal use
19629  or by particularly knowledgable users for specialized tools or applications.
19630  */
19631  /* */
19632 
19633  // DQ (11/26/2005): Support for visitor pattern mechanims
19634  // (inferior to ROSE traversal mechanism, experimental).
19638 
19639  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
19641  virtual void accept (ROSE_VisitorPattern & visitor) override;
19642 
19643  // DQ (12/26/2005): Support for traversal based on the memory pool
19646  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
19647 
19651 
19652  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
19653  // This traversal helps support internal tools that call static member functions.
19654  // note: this function operates on the memory pools.
19657  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
19658  /* */
19659 
19660 
19661  public:
19662  /* name Memory Allocation Functions
19663  \brief Memory allocations functions ... incomplete-documentation
19664 
19665  These functions have been made public as part of the design, but they are suggested for internal use
19666  or by particularly knowledgable users for specialized tools or applications.
19667  */
19668  /* */
19669 
19680  virtual bool isInMemoryPool() override;
19681 
19692  virtual void checkDataMemberPointersIfInMemoryPool() override;
19693 
19694  // DQ (4/30/2006): Modified to be a const function.
19709  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
19710 
19720  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
19721 
19733  virtual long getChildIndex( SgNode* childNode ) const override;
19734 
19735  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
19736  // comment here (changed to be a C style comment and not be a doxygen comment).
19737  /* \brief Constructor for use by AST File I/O Mechanism
19738 
19739  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
19740  which obtained via fast binary file I/O from disk.
19741  */
19742  // SgFuncDecl_attr( SgFuncDecl_attrStorageClass& source );
19743 
19744 
19745 
19746 
19747 
19748  // JH (10/24/2005): methods added to support the ast file IO
19749  private:
19750 
19751  /* name AST Memory Allocation Support Functions
19752  \brief Memory allocations support....
19753 
19754  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
19755  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
19756  and support the AST File I/O Mechanism.
19757  */
19758  /* */
19759 
19760  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
19761  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
19762  that I use the same type everywhere, if any changes are made. THe second one declares the type
19763  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
19764  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
19765  a correspinding one in the AST_FILE_IO class!
19766  */
19767  // DQ (9/2/2015): This typedef is no longer used, we can't define the
19768  // comment here (changed to be a C style comment and not be a doxygen comment).
19769  /* \brief Typedef used for low level memory access.
19770  */
19771  // typedef unsigned char* TestType;
19772 
19773  // DQ (9/2/2015): This typedef is no longer used, we can't define the
19774  // comment here (changed to be a C style comment and not be a doxygen comment).
19775  /* \brief Typedef used to hold memory addresses as values.
19776  */
19777  // typedef unsigned long AddressType;
19778 
19779 
19780 
19781  // necessary, to have direct access to the p_freepointer and the private methods !
19783  friend class AST_FILE_IO;
19784 
19786  friend class SgFuncDecl_attrStorageClass;
19787 
19789  friend class AstSpecificDataManagingClass;
19790 
19792  friend class AstSpecificDataManagingClassStorageClass;
19793 
19794  public:
19796  SgFuncDecl_attr( const SgFuncDecl_attrStorageClass& source );
19797 
19798  // private: // JJW hack
19799  /*
19800  name AST Memory Allocation Support Variables
19801  Memory allocations support variables
19802 
19803  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
19804  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
19805  and support the AST File I/O Mechanism.
19806  */
19807  /* */
19808 
19809  public:
19810 
19811  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
19812  // to current node (so that it will work cleanly with build functions to specify patterns).
19813  // virtual SgNode* addRegExpAttribute();
19820 
19821 // *** COMMON CODE SECTION ENDS HERE ***
19822 
19823 
19824 // End of memberFunctionString
19825 // Start of memberFunctionString
19826 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
19827 
19828  // the generated cast function
19829  // friend ROSE_DLL_API SgFuncDecl_attr* isSgFuncDecl_attr ( SgNode* s );
19830 
19832 
19833 
19834 // End of memberFunctionString
19835 
19836 
19837  public:
19838  virtual ~SgFuncDecl_attr();
19839 
19840  protected:
19841 
19842 
19843 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
19844 
19845 
19846  };
19847 #endif
19848 
19849 // postdeclarations for SgFuncDecl_attr
19850 
19851 /* #line 19852 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
19852 /* #line 5694 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
19853 
19854 // int get_suppress_atomic(SgFunctionDeclaration *);
19855 // void set_suppress_atomic(SgFunctionDeclaration *);
19856 
19857 
19858 
19859 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
19860 
19861 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
19862 
19863 
19864 /* #line 19865 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
19865 
19866 
19867 
19868 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
19869 
19870 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
19871 // This code is automatically generated for each
19872 // terminal and non-terminal within the defined
19873 // grammar. There is a simple way to change the
19874 // code to fix bugs etc. See the ROSE README file
19875 // for directions.
19876 
19877 // tps: (02/22/2010): Adding DLL export requirements
19878 #include "rosedll.h"
19879 
19880 // predeclarations for SgClassDecl_attr
19881 
19882 /* #line 19883 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
19883 
19884 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
19885 
19886 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
19887 
19888 #if 1
19889 // Class Definition for SgClassDecl_attr
19890 class ROSE_DLL_API SgClassDecl_attr : public SgBitAttribute
19891  {
19892  public:
19893 
19894 
19895 /* #line 19896 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
19896 
19897  virtual SgNode* copy ( SgCopyHelp& help) const override;
19898 // Start of memberFunctionString
19899 /* #line 5713 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
19900 
19901  /* local attribute class to suppress the printing of global keyword */
19902 // SgClassDecl_attr();
19903 // void set_suppress_global();
19904 // int get_suppress_global() const;
19905 
19906  // JH (1/18/2006): Added default constructor explicitly to avoid having it be generated by the compiler
19907  SgClassDecl_attr();
19908 
19909  private:
19910 // enum { e_suppress_global = 0x00000001 };
19911 
19912 
19913 
19914 // End of memberFunctionString
19915 // Start of memberFunctionString
19916 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
19917 
19918 // *** COMMON CODE SECTION BEGINS HERE ***
19919 
19920  public:
19921 
19922  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
19923  // and not required which is required to match the other aspects of the copy mechanism code generation.
19924  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
19925  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
19926  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
19927  // virtual SgNode* copy ( const SgCopyHelp & help) const;
19928 
19930  virtual std::string class_name() const override;
19931 
19933  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
19934 
19936  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
19937  // static const VariantT static_variant = V_SgClassDecl_attr;
19938  enum { static_variant = V_SgClassDecl_attr };
19939 
19940  /* the generated cast function */
19942  ROSE_DLL_API friend SgClassDecl_attr* isSgClassDecl_attr( SgNode * s );
19943 
19945  ROSE_DLL_API friend const SgClassDecl_attr* isSgClassDecl_attr( const SgNode * s );
19946 
19947  // ******************************************
19948  // * Memory Pool / New / Delete
19949  // ******************************************
19950 
19951  public:
19953  static const unsigned pool_size; //
19955  static std::vector<unsigned char *> pools; //
19957  static SgClassDecl_attr * next_node; //
19958 
19960  static unsigned long initializeStorageClassArray(SgClassDecl_attrStorageClass *); //
19961 
19963  static void clearMemoryPool(); //
19964  static void deleteMemoryPool(); //
19965 
19967  static void extendMemoryPoolForFileIO(); //
19968 
19970  static SgClassDecl_attr * getPointerFromGlobalIndex(unsigned long); //
19972  static SgClassDecl_attr * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
19973 
19975  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
19977  static void resetValidFreepointers(); //
19979  static unsigned long getNumberOfLastValidPointer(); //
19980 
19981 
19982 #if defined(INLINE_FUNCTIONS)
19983 
19984  inline void *operator new (size_t size);
19985 #else
19986 
19987  void *operator new (size_t size);
19988 #endif
19989 
19990  void operator delete (void* pointer, size_t size);
19991 
19992  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
19993  void operator delete (void* pointer)
19994  {
19995  // This is the generated delete operator...
19996  SgClassDecl_attr::operator delete (pointer,sizeof(SgClassDecl_attr));
19997  }
19998 
20000  static size_t numberOfNodes();
20001 
20003  static size_t memoryUsage();
20004 
20005  // End of scope which started in IR nodes specific code
20006  /* */
20007 
20008  /* name Internal Functions
20009  \brief Internal functions ... incomplete-documentation
20010 
20011  These functions have been made public as part of the design, but they are suggested for internal use
20012  or by particularly knowledgeable users for specialized tools or applications.
20013 
20014  \internal We could not make these private because they are required by user for special purposes. And
20015  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
20016 
20017  */
20018 
20019  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
20020  // overridden in every class by *generated* implementation
20022  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
20023  // MS: 06/28/02 container of names of variables or container indices
20024  // used used in the traversal to access AST successor nodes
20025  // overridden in every class by *generated* implementation
20028  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
20029 
20030  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
20031  // than all the vector copies. The implementation for these functions is generated for each class.
20033  virtual size_t get_numberOfTraversalSuccessors() override;
20035  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
20037  virtual size_t get_childIndex(SgNode *child) override;
20038 
20039 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
20040  // MS: 08/16/2002 method for generating RTI information
20042  virtual RTIReturnType roseRTI() override;
20043 #endif
20044  /* */
20045 
20046 
20047 
20048  /* name Deprecated Functions
20049  \brief Deprecated functions ... incomplete-documentation
20050 
20051  These functions have been deprecated from use.
20052  */
20053  /* */
20054 
20056  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
20057 
20058  // JJW (10/16/2008): Changed to a single function in Node.code, and put
20059  // getVariant() in #if 0 block to prevent confusing Doxygen
20060 #if 0
20061 
20062  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
20064  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
20065 #endif
20066  /* */
20067 
20068 
20069 
20070 
20071  public:
20072  /* name Traversal Support Functions
20073  \brief Traversal support functions ... incomplete-documentation
20074 
20075  These functions have been made public as part of the design, but they are suggested for internal use
20076  or by particularly knowledgable users for specialized tools or applications.
20077  */
20078  /* */
20079 
20080  // DQ (11/26/2005): Support for visitor pattern mechanims
20081  // (inferior to ROSE traversal mechanism, experimental).
20085 
20086  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
20088  virtual void accept (ROSE_VisitorPattern & visitor) override;
20089 
20090  // DQ (12/26/2005): Support for traversal based on the memory pool
20093  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
20094 
20098 
20099  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
20100  // This traversal helps support internal tools that call static member functions.
20101  // note: this function operates on the memory pools.
20104  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
20105  /* */
20106 
20107 
20108  public:
20109  /* name Memory Allocation Functions
20110  \brief Memory allocations functions ... incomplete-documentation
20111 
20112  These functions have been made public as part of the design, but they are suggested for internal use
20113  or by particularly knowledgable users for specialized tools or applications.
20114  */
20115  /* */
20116 
20127  virtual bool isInMemoryPool() override;
20128 
20139  virtual void checkDataMemberPointersIfInMemoryPool() override;
20140 
20141  // DQ (4/30/2006): Modified to be a const function.
20156  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
20157 
20167  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
20168 
20180  virtual long getChildIndex( SgNode* childNode ) const override;
20181 
20182  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
20183  // comment here (changed to be a C style comment and not be a doxygen comment).
20184  /* \brief Constructor for use by AST File I/O Mechanism
20185 
20186  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
20187  which obtained via fast binary file I/O from disk.
20188  */
20189  // SgClassDecl_attr( SgClassDecl_attrStorageClass& source );
20190 
20191 
20192 
20193 
20194 
20195  // JH (10/24/2005): methods added to support the ast file IO
20196  private:
20197 
20198  /* name AST Memory Allocation Support Functions
20199  \brief Memory allocations support....
20200 
20201  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
20202  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
20203  and support the AST File I/O Mechanism.
20204  */
20205  /* */
20206 
20207  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
20208  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
20209  that I use the same type everywhere, if any changes are made. THe second one declares the type
20210  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
20211  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
20212  a correspinding one in the AST_FILE_IO class!
20213  */
20214  // DQ (9/2/2015): This typedef is no longer used, we can't define the
20215  // comment here (changed to be a C style comment and not be a doxygen comment).
20216  /* \brief Typedef used for low level memory access.
20217  */
20218  // typedef unsigned char* TestType;
20219 
20220  // DQ (9/2/2015): This typedef is no longer used, we can't define the
20221  // comment here (changed to be a C style comment and not be a doxygen comment).
20222  /* \brief Typedef used to hold memory addresses as values.
20223  */
20224  // typedef unsigned long AddressType;
20225 
20226 
20227 
20228  // necessary, to have direct access to the p_freepointer and the private methods !
20230  friend class AST_FILE_IO;
20231 
20233  friend class SgClassDecl_attrStorageClass;
20234 
20236  friend class AstSpecificDataManagingClass;
20237 
20239  friend class AstSpecificDataManagingClassStorageClass;
20240 
20241  public:
20243  SgClassDecl_attr( const SgClassDecl_attrStorageClass& source );
20244 
20245  // private: // JJW hack
20246  /*
20247  name AST Memory Allocation Support Variables
20248  Memory allocations support variables
20249 
20250  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
20251  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
20252  and support the AST File I/O Mechanism.
20253  */
20254  /* */
20255 
20256  public:
20257 
20258  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
20259  // to current node (so that it will work cleanly with build functions to specify patterns).
20260  // virtual SgNode* addRegExpAttribute();
20267 
20268 // *** COMMON CODE SECTION ENDS HERE ***
20269 
20270 
20271 // End of memberFunctionString
20272 // Start of memberFunctionString
20273 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
20274 
20275  // the generated cast function
20276  // friend ROSE_DLL_API SgClassDecl_attr* isSgClassDecl_attr ( SgNode* s );
20277 
20279 
20280 
20281 // End of memberFunctionString
20282 
20283 
20284  public:
20285  virtual ~SgClassDecl_attr();
20286 
20287  protected:
20288 
20289 
20290 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
20291 
20292 
20293  };
20294 #endif
20295 
20296 // postdeclarations for SgClassDecl_attr
20297 
20298 /* #line 20299 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
20299 /* #line 5758 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
20300 
20301 //int get_suppress_globalSgClassDeclaration *);
20302 //void set_suppress_global(SgClassDeclaration *);
20303 
20304 
20305 
20306 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
20307 
20308 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
20309 
20310 
20311 /* #line 20312 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
20312 
20313 
20314 
20315 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
20316 
20317 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
20318 // This code is automatically generated for each
20319 // terminal and non-terminal within the defined
20320 // grammar. There is a simple way to change the
20321 // code to fix bugs etc. See the ROSE README file
20322 // for directions.
20323 
20324 // tps: (02/22/2010): Adding DLL export requirements
20325 #include "rosedll.h"
20326 
20327 // predeclarations for Sg_File_Info
20328 
20329 /* #line 20330 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
20330 
20331 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
20332 
20333 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
20334 
20335 #if 1
20336 // Class Definition for Sg_File_Info
20337 class ROSE_DLL_API Sg_File_Info : public SgSupport
20338  {
20339  public:
20340 
20341 
20342 /* #line 20343 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
20343 
20344  virtual SgNode* copy ( SgCopyHelp& help) const override;
20345 // Start of memberFunctionString
20346 /* #line 5791 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
20347 
20348 
20374  enum classifier
20375  {
20376  e_transformation = 0x1,
20377  e_compiler_generated = 0x2,
20378  e_output_in_code_generation = 0x4,
20379  e_shared = 0x8,
20380  e_frontend_specific = 0x10,
20381  e_source_position_unavailable_in_frontend = 0x20,
20382  e_comment_or_directive = 0x40,
20383  e_token = 0x80,
20384  // DQ (4/24/2013): Added support for default arguments.
20385  e_default_argument = 0x100,
20386  // DQ (4/24/2013): Added support for implicit cast.
20387  e_implicit_cast = 0x200
20388  };
20389 
20390  // ~Sg_File_Info();
20391 
20392  // DQ (5/10/2006): Remove these to simplify implementation.
20393  Sg_File_Info();
20394  // Sg_File_Info(const char* filename, int line = 0, int col = 0) ROSE_DEPRECATED_FUNCTION;
20395  Sg_File_Info(const std::string & filename, int line = 0, int col = 0);
20396 
20397  // DQ (2/15/2003): added copy constructor
20398  Sg_File_Info(const Sg_File_Info & X);
20399 
20400  // DQ (11/6/2008): Added to support construction of objects using Dwarf information.
20401  Sg_File_Info( int file_id, int line, int column );
20402 
20403  void post_construction_initialization() override;
20404 
20405  // ROSE-1499, ROSE-1639 (added const to char*)
20406  void check_file_id(const char * label, bool assertion=true) const;
20407 
20408  // DQ (11/6/2008): Added support for extending the internal static filename to integer id map
20410  static int addFilenameToMap ( const std::string & filename );
20411 
20413  static int numberOfSourceFiles();
20414 
20415  void set_filename (const char* filename) ROSE_DEPRECATED_FUNCTION;
20416  void set_filenameString ( const std::string & filename );
20417  void set_line (int line);
20418  void set_col ( int n );
20419  void display (const std::string label ) const;
20420  void display () const;
20421  std::string displayString (const std::string & label = "") const;
20422  //void output (std::ostream& os) ROSE_DEPRECATED_FUNCTION;
20423 
20424  // DQ (6/11/2007): output static data for debugging
20425  static void display_static_data( const std::string label );
20426 
20427  const char* get_filename() const ROSE_DEPRECATED_FUNCTION;
20428  const std::string& get_filenameString() const;
20429  int get_line() const;
20430  int get_col() const;
20431 
20432  // DQ (2/28/2019): Support for multi-file handling.
20434  int get_line(int file_id) const;
20435 
20436  void set_file_id ( int file_id );
20437  int get_file_id () const;
20438 
20439  std::string get_raw_filename() const;
20440  int get_raw_line() const;
20441  int get_raw_col() const;
20442 
20443  // DQ (12/18/2012): Added support for physical filename and line number data.
20444  void set_physical_filename ( const std::string & filename );
20445  std::string get_physical_filename() const;
20446  void set_physical_file_id ( int physical_file_id );
20447  int get_physical_file_id () const;
20448  void set_physical_line (int line);
20449  int get_physical_line() const;
20450  void set_physical_source_position_to_match_logical_source_position();
20451 
20452  // DQ (2/28/2019): Support for multi-file handling.
20454  int get_physical_line(int file_id) const;
20455 
20456  // DQ (2/28/2019): This is required because the physical id returned can be dependent on the file id when this is a shared IR node.
20457  int get_physical_file_id (int file_id) const;
20458 
20459  // DQ (1/23/2013): Added source position sequence information. This work supports the handling of default arguments and addresses
20460  // new future capabilities to ROSE.
20461  void set_source_sequence_number (unsigned int n);
20462  unsigned int get_source_sequence_number() const;
20463 
20464  // DQ (12/22/2006): This copies the line number and column number information and verifies that
20465  // the file name is the same (it does not reset any fo the classification flags). This is more
20466  // useful than the assignment operator for updating information and is used in the file:
20467  // fixupSourcePositionInformation.C
20468  void updateSourcePosition ( Sg_File_Info* update );
20469 
20470  // DQ (6/20/2005): There are a number of reasons why an IR node might not have a position in the source code
20471  // this function abstracts that query process.
20472  bool hasPositionInSource() const;
20473 
20474  // DQ (6/21/2005): check if this file info object is from the same file
20475 
20476  // DQ (9/5/2008): Switched back to using SgFile instead of SgSourceFile.
20477  // bool isSameFile(SgFile* file) const;
20478  // bool isSameFile(SgSourceFile* file) const;
20479  bool isSameFile(SgFile* file) const;
20480 
20481  // DQ (1/18/2006): Added new function with more useful interface.
20482  bool isSameFile(Sg_File_Info* fileInfo) const;
20483  // DQ (11/1/2006): Alternative use case.
20484  bool isSameFile(const Sg_File_Info & fileInfo) const;
20485 
20487  // bool isOriginal() const;
20488  bool isTransformation() const;
20489  // bool isDeclaration() const ROSE_DEPRECATED_FUNCTION;
20490  // bool isInitialization() const ROSE_DEPRECATED_FUNCTION;
20491 
20492  // DQ (2/21/2005): Added support for specification of compiler generated code (done in front-end translation)
20493  bool isCompilerGenerated() const;
20494  bool isCompilerGeneratedNodeToBeUnparsed() const ROSE_DEPRECATED_FUNCTION;
20495  bool isOutputInCodeGeneration() const;
20496  bool isShared() const;
20497  bool isFrontendSpecific() const;
20498  // bool isUnused1() const;
20499 
20500  bool isSourcePositionUnavailableInFrontend() const;
20501  void unsetSourcePositionUnavailableInFrontend();
20502  void setSourcePositionUnavailableInFrontend();
20503 
20504  // DQ (12/23/2006): Added to support the Sg_File_Info objects used by comments and CPP directives
20505  // (since their parents are NULL, becuase the PreprocessingInfo class is not dirived from a SgNode
20506  // the parent point can't be used to point to it).
20507  bool isCommentOrDirective() const;
20508  void unsetCommentOrDirective();
20509  void setCommentOrDirective();
20510 
20511  // DQ (12/23/2006): Added to support Rama and Andreas's work on handling of token streams within the AST.
20512  // (The Sg_File_Info objects used have NULL parent pointers, becuase the token class is not dirived from a SgNode.
20513  bool isToken() const;
20514  void unsetToken();
20515  void setToken();
20516 
20517  // DQ (4/24/2013): Added support for marking as default argument. Note that compiler generated is not specific
20518  // enough because even implicit casts would then be confused as default arguments.
20519  bool isDefaultArgument() const;
20520  void unsetDefaultArgument();
20521  void setDefaultArgument();
20522 
20523  // DQ (4/26/2013): Added support for marking as implicit casts. Note that compiler generated is not
20524  // as specific as we want (though it has worked for a long time, we want a more precise mechanism).
20525  bool isImplicitCast() const;
20526  void unsetImplicitCast();
20527  void setImplicitCast();
20528 
20530  // void unsetOriginal();
20531  // void setOriginal();
20532  void unsetTransformation();
20533  void setTransformation();
20534  // void unsetDeclaration();
20535  // void setDeclaration();
20536  // void unsetInitialization();
20537  // void setInitialization();
20538 
20540  void unsetCompilerGeneratedNodeToBeUnparsed() ROSE_DEPRECATED_FUNCTION;
20541  void setCompilerGeneratedNodeToBeUnparsed() ROSE_DEPRECATED_FUNCTION;
20542 
20544  void unsetOutputInCodeGeneration();
20545  void setOutputInCodeGeneration();
20546 
20548  void unsetShared();
20549  void setShared();
20550 
20551  // DQ (5/6/2006): Added to support gnu compatability mode (incomplete within EDG and
20552  // which we make complete through the declaration of builtin functions as required).
20553  void unsetFrontendSpecific();
20554  void setFrontendSpecific();
20555 
20556  // MK (8/2/05) : Added support for unparsing set, to allow shared nodes to only be unparsed by
20557  // the appropriate files
20559  void addFileToUnparse(int file_id);
20561  bool shouldUnparse(int file_id);
20562 
20563  // DQ (2/21/2005): Added support for specification of compiler generated code (done in front-end translation)
20564  void unsetCompilerGenerated();
20565  void setCompilerGenerated();
20566 
20567  // DQ (8/1/2005): use static function to return new Sg_File_Info object set to default values
20568  static Sg_File_Info* generateDefaultFileInfo();
20569 
20570  static Sg_File_Info* generateDefaultFileInfoForTransformationNode();
20571 
20572  // DQ (1/11/2006): Added static function whicl allows specification of transformation with assignement to
20573  // a specific file (where it would be unparsed). This function will call setOutputInCodeGeneration().
20574  static Sg_File_Info* generateFileInfoForTransformationNode( int file_id );
20575  static Sg_File_Info* generateFileInfoForTransformationNode( std::string filename );
20576 
20577  static Sg_File_Info* generateDefaultFileInfoForCompilerGeneratedNode();
20578 
20579 
20581  unsigned int get_classificationBitField(void) const;
20582  void set_classificationBitField( unsigned int );
20583 
20584  void set_isPartOfTransformation( bool isPartOfTransformation ) ROSE_DEPRECATED_FUNCTION;
20585  bool get_isPartOfTransformation() ROSE_DEPRECATED_FUNCTION;
20586 
20587  void register_node(SgLocatedNode* node) ROSE_DEPRECATED_FUNCTION; /* register interest */
20588  void deregister_node(SgLocatedNode* node) ROSE_DEPRECATED_FUNCTION;
20589 
20590  // functions added by Dan Quinlan (suggested by Gary Lee)
20591  // int getCurrentLine () const ROSE_DEPRECATED_FUNCTION;
20592  // std::string getCurrentFilename () const ROSE_DEPRECATED_FUNCTION;
20593 
20594  // int getReferenceCount() ROSE_DEPRECATED_FUNCTION;
20595  // void incrementReferenceCount() ROSE_DEPRECATED_FUNCTION;
20596  // void decrementReferenceCount() ROSE_DEPRECATED_FUNCTION;
20597 
20598  // DQ (7/4/2005): Added to test internal consistancy
20599  bool ok() const;
20600  // bool consistancyCheck() const;
20601 
20602  // MK (8/2/05) : Added functions to interface with fileid maps, in order to eventually
20603  // restrict access to the maps themselves
20604  // PC and AS (8/29/06) : made function return a const string reference as this will
20605  // eliminate the temporary string within the lifetime of the function.
20606  static const std::string& getFilenameFromID( int id );
20607  static int getIDFromFilename( std::string filename );
20608 
20609  // DQ (11/2/2006): Added simple assignment operator.
20610  Sg_File_Info & operator= ( const Sg_File_Info & X );
20611 
20612  // DQ (9/26/2004): Added operator== to permit testing of reused definitions of defining declarations!
20613  friend bool operator== ( const Sg_File_Info & X, const Sg_File_Info & Y );
20614  // DQ (10/6/2004): Added operator!= to permit testing of reused definitions of defining declarations!
20615  friend bool operator!= ( const Sg_File_Info & X, const Sg_File_Info & Y );
20616  // DQ (10/25/2004): Added operator> to permit testing of strting vs. ending file info object (assert starting < ending)
20617  friend bool operator> ( const Sg_File_Info & X, const Sg_File_Info & Y );
20618  friend bool operator< ( const Sg_File_Info & X, const Sg_File_Info & Y );
20619  friend bool operator>= ( const Sg_File_Info & X, const Sg_File_Info & Y );
20620  friend bool operator<= ( const Sg_File_Info & X, const Sg_File_Info & Y );
20621 
20622  // DQ (2/23/2010): Added static access function for static data members (ROSETTA generates only not statuc access functions).
20624  static std::map<int, std::string> & get_fileidtoname_map();
20626  static void set_fileidtoname_map(std::map<int, std::string> & X);
20627 
20628  // DQ (2/23/2010): Added static access function for static data members (ROSETTA generates only not statuc access functions).
20630  static std::map<std::string, int> & get_nametofileid_map();
20632  static void set_nametofileid_map(std::map<std::string,int> & X);
20633 
20634  // MK (7/22/05) This enum is used by the file id mechanism
20640  COPY_FILE_ID = -1,
20641  NULL_FILE_ID = -2,
20642  TRANSFORMATION_FILE_ID = -3,
20643  COMPILER_GENERATED_FILE_ID = -4,
20644  COMPILER_GENERATED_MARKED_FOR_OUTPUT_FILE_ID = -5,
20645  // MK (8/2/05) : Added new enum value to facilitate interface to maps. If we try
20646  // to retrieve the fileid for a filename which isn't in the map, we return
20647  // BAD_FILE_ID to indicate this.
20648  BAD_FILE_ID = -6
20649  };
20650 
20651 
20652 
20653  // DQ (2/27/2019): Adding support for access function to list of fileIds and line numbers associated with
20654  // support for multi-file sharing of IR nodes and the support to know there source position information
20655  // from each file.
20656  // const SgFileIdList & get_fileIDsToUnparse () const;
20657  // SgFileIdList & get_fileIDsToUnparse ();
20658 
20659 #if 0
20660  // DQ (12/20/2005): These have been placed into ROSETTA
20661 
20662  // MK (7/22/05) These maps are used by the file id mechanism
20664  static std::map<int, std::string> p_fileidtoname_map;
20666  static std::map<std::string, int> p_nametofileid_map;
20667 
20668  // MK (7/22/05) These maps are used by the file id mechanism
20670  static int p_max_file_id;
20671 #endif
20672 
20673 
20674 
20675 // End of memberFunctionString
20676 // Start of memberFunctionString
20677 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
20678 
20679 // *** COMMON CODE SECTION BEGINS HERE ***
20680 
20681  public:
20682 
20683  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
20684  // and not required which is required to match the other aspects of the copy mechanism code generation.
20685  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
20686  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
20687  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
20688  // virtual SgNode* copy ( const SgCopyHelp & help) const;
20689 
20691  virtual std::string class_name() const override;
20692 
20694  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
20695 
20697  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
20698  // static const VariantT static_variant = V_Sg_File_Info;
20699  enum { static_variant = V_Sg_File_Info };
20700 
20701  /* the generated cast function */
20703  ROSE_DLL_API friend Sg_File_Info* isSg_File_Info( SgNode * s );
20704 
20706  ROSE_DLL_API friend const Sg_File_Info* isSg_File_Info( const SgNode * s );
20707 
20708  // ******************************************
20709  // * Memory Pool / New / Delete
20710  // ******************************************
20711 
20712  public:
20714  static const unsigned pool_size; //
20716  static std::vector<unsigned char *> pools; //
20718  static Sg_File_Info * next_node; //
20719 
20721  static unsigned long initializeStorageClassArray(Sg_File_InfoStorageClass *); //
20722 
20724  static void clearMemoryPool(); //
20725  static void deleteMemoryPool(); //
20726 
20728  static void extendMemoryPoolForFileIO(); //
20729 
20731  static Sg_File_Info * getPointerFromGlobalIndex(unsigned long); //
20733  static Sg_File_Info * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
20734 
20736  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
20738  static void resetValidFreepointers(); //
20740  static unsigned long getNumberOfLastValidPointer(); //
20741 
20742 
20743 #if defined(INLINE_FUNCTIONS)
20744 
20745  inline void *operator new (size_t size);
20746 #else
20747 
20748  void *operator new (size_t size);
20749 #endif
20750 
20751  void operator delete (void* pointer, size_t size);
20752 
20753  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
20754  void operator delete (void* pointer)
20755  {
20756  // This is the generated delete operator...
20757  Sg_File_Info::operator delete (pointer,sizeof(Sg_File_Info));
20758  }
20759 
20761  static size_t numberOfNodes();
20762 
20764  static size_t memoryUsage();
20765 
20766  // End of scope which started in IR nodes specific code
20767  /* */
20768 
20769  /* name Internal Functions
20770  \brief Internal functions ... incomplete-documentation
20771 
20772  These functions have been made public as part of the design, but they are suggested for internal use
20773  or by particularly knowledgeable users for specialized tools or applications.
20774 
20775  \internal We could not make these private because they are required by user for special purposes. And
20776  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
20777 
20778  */
20779 
20780  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
20781  // overridden in every class by *generated* implementation
20783  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
20784  // MS: 06/28/02 container of names of variables or container indices
20785  // used used in the traversal to access AST successor nodes
20786  // overridden in every class by *generated* implementation
20789  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
20790 
20791  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
20792  // than all the vector copies. The implementation for these functions is generated for each class.
20794  virtual size_t get_numberOfTraversalSuccessors() override;
20796  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
20798  virtual size_t get_childIndex(SgNode *child) override;
20799 
20800 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
20801  // MS: 08/16/2002 method for generating RTI information
20803  virtual RTIReturnType roseRTI() override;
20804 #endif
20805  /* */
20806 
20807 
20808 
20809  /* name Deprecated Functions
20810  \brief Deprecated functions ... incomplete-documentation
20811 
20812  These functions have been deprecated from use.
20813  */
20814  /* */
20815 
20817  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
20818 
20819  // JJW (10/16/2008): Changed to a single function in Node.code, and put
20820  // getVariant() in #if 0 block to prevent confusing Doxygen
20821 #if 0
20822 
20823  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
20825  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
20826 #endif
20827  /* */
20828 
20829 
20830 
20831 
20832  public:
20833  /* name Traversal Support Functions
20834  \brief Traversal support functions ... incomplete-documentation
20835 
20836  These functions have been made public as part of the design, but they are suggested for internal use
20837  or by particularly knowledgable users for specialized tools or applications.
20838  */
20839  /* */
20840 
20841  // DQ (11/26/2005): Support for visitor pattern mechanims
20842  // (inferior to ROSE traversal mechanism, experimental).
20846 
20847  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
20849  virtual void accept (ROSE_VisitorPattern & visitor) override;
20850 
20851  // DQ (12/26/2005): Support for traversal based on the memory pool
20854  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
20855 
20859 
20860  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
20861  // This traversal helps support internal tools that call static member functions.
20862  // note: this function operates on the memory pools.
20865  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
20866  /* */
20867 
20868 
20869  public:
20870  /* name Memory Allocation Functions
20871  \brief Memory allocations functions ... incomplete-documentation
20872 
20873  These functions have been made public as part of the design, but they are suggested for internal use
20874  or by particularly knowledgable users for specialized tools or applications.
20875  */
20876  /* */
20877 
20888  virtual bool isInMemoryPool() override;
20889 
20900  virtual void checkDataMemberPointersIfInMemoryPool() override;
20901 
20902  // DQ (4/30/2006): Modified to be a const function.
20917  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
20918 
20928  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
20929 
20941  virtual long getChildIndex( SgNode* childNode ) const override;
20942 
20943  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
20944  // comment here (changed to be a C style comment and not be a doxygen comment).
20945  /* \brief Constructor for use by AST File I/O Mechanism
20946 
20947  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
20948  which obtained via fast binary file I/O from disk.
20949  */
20950  // Sg_File_Info( Sg_File_InfoStorageClass& source );
20951 
20952 
20953 
20954 
20955 
20956  // JH (10/24/2005): methods added to support the ast file IO
20957  private:
20958 
20959  /* name AST Memory Allocation Support Functions
20960  \brief Memory allocations support....
20961 
20962  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
20963  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
20964  and support the AST File I/O Mechanism.
20965  */
20966  /* */
20967 
20968  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
20969  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
20970  that I use the same type everywhere, if any changes are made. THe second one declares the type
20971  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
20972  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
20973  a correspinding one in the AST_FILE_IO class!
20974  */
20975  // DQ (9/2/2015): This typedef is no longer used, we can't define the
20976  // comment here (changed to be a C style comment and not be a doxygen comment).
20977  /* \brief Typedef used for low level memory access.
20978  */
20979  // typedef unsigned char* TestType;
20980 
20981  // DQ (9/2/2015): This typedef is no longer used, we can't define the
20982  // comment here (changed to be a C style comment and not be a doxygen comment).
20983  /* \brief Typedef used to hold memory addresses as values.
20984  */
20985  // typedef unsigned long AddressType;
20986 
20987 
20988 
20989  // necessary, to have direct access to the p_freepointer and the private methods !
20991  friend class AST_FILE_IO;
20992 
20994  friend class Sg_File_InfoStorageClass;
20995 
20997  friend class AstSpecificDataManagingClass;
20998 
21000  friend class AstSpecificDataManagingClassStorageClass;
21001 
21002  public:
21004  Sg_File_Info( const Sg_File_InfoStorageClass& source );
21005 
21006  // private: // JJW hack
21007  /*
21008  name AST Memory Allocation Support Variables
21009  Memory allocations support variables
21010 
21011  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
21012  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
21013  and support the AST File I/O Mechanism.
21014  */
21015  /* */
21016 
21017  public:
21018 
21019  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
21020  // to current node (so that it will work cleanly with build functions to specify patterns).
21021  // virtual SgNode* addRegExpAttribute();
21028 
21029 // *** COMMON CODE SECTION ENDS HERE ***
21030 
21031 
21032 // End of memberFunctionString
21033 // Start of memberFunctionString
21034 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
21035 
21036  // the generated cast function
21037  // friend ROSE_DLL_API Sg_File_Info* isSg_File_Info ( SgNode* s );
21038 
21039  typedef SgSupport base_node_type;
21040 
21041 
21042 // End of memberFunctionString
21043 
21044 
21045 
21046 
21047 
21048 
21049 
21050 
21051  public:
21052  const SgFileIdList& get_fileIDsToUnparse() const;
21053  SgFileIdList& get_fileIDsToUnparse();
21054 
21055  public:
21056  const SgFileLineNumberList& get_fileLineNumbersToUnparse() const;
21057  SgFileLineNumberList& get_fileLineNumbersToUnparse();
21058 
21059 
21060 
21061 
21062  public:
21063  virtual ~Sg_File_Info();
21064 
21065  protected:
21066 // Start of memberFunctionString
21068 
21069 // End of memberFunctionString
21070 // Start of memberFunctionString
21072 
21073 // End of memberFunctionString
21074 // Start of memberFunctionString
21075 int p_col;
21076 
21077 // End of memberFunctionString
21078 // Start of memberFunctionString
21080 
21081 // End of memberFunctionString
21082 // Start of memberFunctionString
21083 int p_physical_file_id;
21084 
21085 // End of memberFunctionString
21086 // Start of memberFunctionString
21087 int p_physical_line;
21088 
21089 // End of memberFunctionString
21090 // Start of memberFunctionString
21091 unsigned int p_source_sequence_number;
21092 
21093 // End of memberFunctionString
21094 // Start of memberFunctionString
21095 SgFileIdList p_fileIDsToUnparse;
21096 
21097 // End of memberFunctionString
21098 // Start of memberFunctionString
21099 SgFileLineNumberList p_fileLineNumbersToUnparse;
21100 
21101 // End of memberFunctionString
21102 // Start of memberFunctionString
21103 static std::map<int, std::string> p_fileidtoname_map;
21104 
21105 // End of memberFunctionString
21106 // Start of memberFunctionString
21107 static std::map<std::string, int> p_nametofileid_map;
21108 
21109 // End of memberFunctionString
21110 
21111 
21112 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
21113 
21114 
21115  };
21116 #endif
21117 
21118 // postdeclarations for Sg_File_Info
21119 
21120 /* #line 21121 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
21121 /* #line 7590 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
21122 
21124 // extern SgUnparse_Info SgNO_UNPARSE_INFO;
21125 
21126 // support function declarations for unparsing
21127 //extern void printSgVariant ( std::ostream& os, int x );
21128 extern std::string getSgVariant ( int x);
21129 
21130 
21131 
21132 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
21133 
21134 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
21135 
21136 
21137 /* #line 21138 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
21138 
21139 
21140 
21141 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
21142 
21143 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
21144 // This code is automatically generated for each
21145 // terminal and non-terminal within the defined
21146 // grammar. There is a simple way to change the
21147 // code to fix bugs etc. See the ROSE README file
21148 // for directions.
21149 
21150 // tps: (02/22/2010): Adding DLL export requirements
21151 #include "rosedll.h"
21152 
21153 // predeclarations for SgFile
21154 
21155 /* #line 21156 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
21156 
21157 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
21158 
21159 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
21160 
21161 #if 1
21162 // Class Definition for SgFile
21163 class ROSE_DLL_API SgFile : public SgSupport
21164  {
21165  public:
21166 
21167 
21168 /* #line 21169 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
21169 
21170  virtual SgNode* copy ( SgCopyHelp& help) const override;
21171 // Start of memberFunctionString
21172 /* #line 6124 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
21173 
21174 
21175 private:
21176  friend class boost::serialization::access;
21177 
21178  template<class S>
21179  void serialize(S &s, const unsigned /*version*/) {
21180  s & BOOST_SERIALIZATION_BASE_OBJECT_NVP(SgSupport);
21181  // Most data members are not serialized yet, but this is here because SgFile is a base class of
21182  // SgBinaryComposite whose fields are serialized.
21183  }
21184 
21185 public:
21186 
21192  {
21195  e_free_form_output_format
21196  };
21197 
21198 
21205  // enum outputLanguageOption_enum
21207  {
21213  e_last_language
21214  };
21215 
21216 public:
21217  enum standard_enum
21218  {
21219  e_default_standard,
21220  e_c89_standard,
21221  e_c90_standard,
21222  e_c99_standard,
21223  e_c11_standard,
21224  e_c14_standard,
21225  e_c18_standard,
21226  e_upc_standard,
21227  e_cxx98_standard,
21228  e_cxx03_standard,
21229  e_cxx11_standard,
21230  e_cxx14_standard,
21231  e_cxx17_standard,
21232  e_cxx20_standard,
21233  e_upcxx_standard,
21234  e_f77_standard,
21235  e_f90_standard,
21236  e_f95_standard,
21237  e_f03_standard,
21238  e_f08_standard,
21239  e_f18_standard
21240  };
21241 
21242 public:
21243  enum standard_enum get_standard(void) const;
21244  void set_standard(enum standard_enum e_std);
21245  void set_default_standard(void);
21246 
21247  // DQ (1/10/2019): Add way to output a string to report standard in debug messages.
21248  std::string display_standard(enum standard_enum e_std);
21249 
21250  bool is_gnu_standard(void) const;
21251  void set_gnu_standard();
21252  void unset_gnu_standard();
21253 
21254  bool get_C89_only (void) const;
21255  void set_C89_only (void);
21256 
21257  bool get_C89_gnu_only (void) const;
21258  void set_C89_gnu_only (void);
21259 
21260  bool get_C90_only (void) const;
21261  void set_C90_only (void);
21262 
21263  bool get_C90_gnu_only (void) const;
21264  void set_C90_gnu_only (void);
21265 
21266  bool get_C99_only (void) const;
21267  void set_C99_only (void);
21268 
21269  bool get_C99_gnu_only (void) const;
21270  void set_C99_gnu_only (void);
21271 
21272  bool get_C11_only (void) const;
21273  void set_C11_only (void);
21274 
21275  bool get_C11_gnu_only (void) const;
21276  void set_C11_gnu_only (void);
21277 
21278  bool get_C14_only (void) const;
21279  void set_C14_only (void);
21280 
21281  bool get_C14_gnu_only (void) const;
21282  void set_C14_gnu_only (void);
21283 
21284  bool get_C18_only (void) const;
21285  void set_C18_only (void);
21286 
21287  bool get_C18_gnu_only (void) const;
21288  void set_C18_gnu_only (void);
21289 
21290  bool get_UPC_only (void) const;
21291  void set_UPC_only (void);
21292 
21293  bool get_Cxx98_only (void) const;
21294  void set_Cxx98_only (void);
21295 
21296  bool get_Cxx98_gnu_only (void) const;
21297  void set_Cxx98_gnu_only (void);
21298 
21299  bool get_Cxx03_only (void) const;
21300  void set_Cxx03_only (void);
21301 
21302  bool get_Cxx03_gnu_only (void) const;
21303  void set_Cxx03_gnu_only (void);
21304 
21305  bool get_Cxx11_only (void) const;
21306  void set_Cxx11_only (void);
21307 
21308  bool get_Cxx11_gnu_only (void) const;
21309  void set_Cxx11_gnu_only (void);
21310 
21311  bool get_Cxx14_only (void) const;
21312  void set_Cxx14_only (void);
21313 
21314  bool get_Cxx14_gnu_only (void) const;
21315  void set_Cxx14_gnu_only (void);
21316 
21317  bool get_Cxx17_only (void) const;
21318  void set_Cxx17_only (void);
21319 
21320  bool get_Cxx17_gnu_only (void) const;
21321  void set_Cxx17_gnu_only (void);
21322 
21323  bool get_Cxx20_only (void) const;
21324  void set_Cxx20_only (void);
21325 
21326  bool get_Cxx20_gnu_only (void) const;
21327  void set_Cxx20_gnu_only (void);
21328 
21329  bool get_UPCxx_only (void) const;
21330  void set_UPCxx_only (void);
21331 
21332  bool get_F77_only (void) const;
21333  void set_F77_only (void);
21334 
21335  bool get_F90_only (void) const;
21336  void set_F90_only (void);
21337 
21338  bool get_F95_only (void) const;
21339  void set_F95_only (void);
21340 
21341  bool get_F2003_only (void) const;
21342  void set_F2003_only (void);
21343 
21344  bool get_F2008_only (void) const;
21345  void set_F2008_only (void);
21346 
21347  bool get_F2018_only (void) const;
21348  void set_F2018_only (void);
21349 
21350 public:
21351 
21356  SgFile ( int & argc, char** & argv, SgProject* project = NULL );
21357  SgFile(std::vector<std::string>& argv, SgProject* project = NULL);
21358 
21359  // SgFile ( int & argc, char** & argv, int & errorCode, int fileNameIndex, SgProject* project );
21360  // virtual void doSetupForConstructor(const std::vector<std::string>& argv, int& errorCode, int fileNameIndex, SgProject* project);
21361  //AS(10/04/08) Changed semantics of doSetupForConstructor to not call frontend
21362  virtual void doSetupForConstructor(const std::vector<std::string>& argv, SgProject* project);
21363 
21365  // SgFile() ROSE_DEPRECATED_FUNCTION;
21366 
21368  // ~SgFile();
21369 
21371  void initialization ();
21372 
21374  // void unparsestdout();
21375 
21377  // void unparse ( std::ostream & os );
21378 
21379  // Root of the Abstract Syntax Tree (AST) representing this file
21380  // (a Sg global declaration scope statement).
21381  // SgGlobal & root() ROSE_DEPRECATED_FUNCTION;
21382 
21384  // DQ (7/19/2005): Added to support future name change from "root"
21385  // SgGlobal* get_globalScope() const;
21386 
21387  // DQ (9/5/2008): Support for older name of the SgGlobal in SgSourceFile
21388  // SgGlobal* get_root() const;
21389 
21390  // DQ (3/18/2006): Modified the unparse function interface to permit specification of default
21391  // arguments to control code generation formatting and use of alternative code generation
21392  // approaches (copy based code generation).
21393  // void unparse ();
21395  void unparse ( UnparseFormatHelp *unparseHelp = NULL, UnparseDelegate* unparseDelagate = NULL );
21396 
21397  // DQ (5/8/2010): Added support to reset the Sg_File_Info (source code position information)
21398  // to be relative to the generated code instead of the original input code. This is useful when
21399  // we want to output references to the position of language constructs in the generated code
21400  // instead of the original input code. Also useful for building references to locations in
21401  // automatically generated code.
21402  void resetSourcePositionToGeneratedCode ( UnparseFormatHelp *unparseFormatHelp = NULL );
21403 
21405  // BP : 11/13/2001, modified to include compiler name
21406  // int compileOutput ( int fileNameIndex, const std::string& compilerName );
21407  int compileOutput ( int fileNameIndex );
21408 
21409  // function to generate PDF output file for AST
21410  // void outputPDF();
21411 
21413  std::string getFileName() const;
21414 
21416  // friend void roseDisplayMechanism( SgFile *file );
21417 
21418 // #ifndef ROSE_USE_SWIG_SUPPORT
21419 #ifndef SWIG
21420  // DQ (3/10/2013): This function is left undefined in the final link step for SWIG support, so remove it from SWIG processing for now.
21421  friend void alternativeSageEdgInterfaceConstruction( SgFile *file );
21422 #endif
21423 
21425  // int callFrontEnd ( int & argc, char** & argv , SgFile & file, int fileNameIndex );
21426  // int callFrontEnd ( int & argc, char** & argv );
21427 
21428  // Get the commandline from where it is stored internally
21429  virtual int callFrontEnd();
21430 
21432  // GB (9/4/2009)
21433  void secondaryPassOverSourceFile();
21434 
21435  // DQ (9/2/2008): Added to factor out detail fo building the AST in callFrontEnd().
21436  virtual int buildAST( std::vector<std::string> argv, std::vector<std::string> inputCommandLine );
21437 
21438  // DQ (6/17/2005): I think that this should be a static function and perhaps moved to SgProject instead of in SgFile
21440  void processRoseCommandLineOptions ( std::vector<std::string>& argv );
21441 
21442  // DQ (6/21/2005): Added support for backend specific command-line options to be recognized in ROSE
21443  // (required to control template instantiation). Does not modify input parameters.
21444  void processBackendSpecificCommandLineOptions ( const std::vector<std::string>& argv );
21445 
21446  // DQ (6/17/2005): I think that this should be a static function and perhaps moved to SgProject instead of in SgFile
21448  static void stripRoseCommandLineOptions ( std::vector<std::string> & argv );
21449 
21450  // DQ (6/17/2005): I think that this should be a static function and perhaps moved to SgProject instead of in SgFile
21452  static void stripEdgCommandLineOptions ( std::vector<std::string> & argv );
21453 
21454  // DQ (4/2/2011): Added Fortran specific support to filter command line options from the backend compiler's command line.
21456  static void stripFortranCommandLineOptions ( std::vector<std::string> & argv );
21457 
21458  // Pei-Hung (12/20/2021): Added translator support to filter command line options from the backend compiler's command line.
21460  static void stripTranslationCommandLineOptions ( std::vector<std::string> & argv );
21461 
21462  // BP : 11/13/2001, modified to take compiler name
21463  void build_EDG_CommandLine ( std::vector<std::string> & inputCommandLine, std::vector<std::string>& argv, int fileNameIndex );
21464 
21465  // TV: 02/15/12, CLANG also need a command line builder
21466  void build_CLANG_CommandLine ( std::vector<std::string> & inputCommandLine, std::vector<std::string>& argv, int fileNameIndex );
21467 
21469  // friend void pdfPrintAbstractSyntaxTreeEDG ( SgFile *file, bool writeOutHeaderFiles = false );
21470  // friend void pdfPrintAbstractSyntaxTreeEDG ( SgFile *file );
21471  // friend void pdfPrintAbstractSyntaxTreeSage ( SgFile *file, bool writeOutHeaderFiles = false );
21472 
21473  // Move this function from ROSE into the AST restructuring tool (placed here os it can be called)
21474  static void usage ( int status );
21475 
21477  std::string getWorkingDirectory ();
21478  std::string getSourceDirectory ();
21479 
21481  std::string generateOutputFileName() const;
21482 
21483  // DQ (9/24/2013): I think this is more useful as a static function (and I need it this way in the unparser).
21485  // std::string generate_C_preprocessor_intermediate_filename( std::string filename );
21486  static std::string generate_C_preprocessor_intermediate_filename( std::string filename );
21487 
21488  // The unparser and vendor compiler needs access to many variables
21489  // that are protected (Later this should be a member function).
21490  // friend void unparseFile ( SgFile & file );
21491  // friend int compileOutput ( int & argc, char** & argv, SgFile & file );
21492  // BP : 11/13/2001, modified to include compiler name
21493  std::vector<std::string> buildCompilerCommandLineOptions ( std::vector<std::string> & argv, int fileNameIndex, const std::string& compilerName );
21494  // BP : 11/13/2001, modified to include compiler name
21495  // int compileOutput ( std::vector<std::string> & argv, int fileNameIndex, const std::string& compilerName );
21496  int compileOutput ( std::vector<std::string> & argv, int fileNameIndex );
21497 
21498  void display ( const std::string & label ) const;
21499 
21503  bool isPrelinkPhase() const;
21504 
21506  SgProject* get_project();
21507 
21508  // DQ (1/17/2006): Build an explicit copy constructor that returns an error internally
21509  SgFile ( const SgFile & X );
21510 
21511  // DQ (1/18/2006): Added function to be match virtual function on SgNode
21512  // (so that the SgFile's Sg_File_Info object could be accessed).
21513  // Sg_File_Info* get_file_info(void) const;
21514 
21517  // void setupSourceFilename ( const std::vector<std::string>& argv );
21518 
21520  Sg_File_Info* get_file_info() const override;
21521 
21523  void set_file_info( Sg_File_Info* fileinfo );
21524 
21525  // DQ (12/23/2008): This sets up the Sg_File_Info in the SgFile and initializes it with the correct name etc.
21526  // This function is called at several locations to build SgSourceFiles of different types (languages).
21527  void initializeSourcePosition( const std::string & sourceFilename );
21528 
21529  // DQ (2/5/2009): This is now a data member at SgProject and SgFile.
21530  // DQ (2/4/2009): Added the data member to the SgProject and tha access function to the SgFile,
21531  // it was previously reversed.
21532  // bool get_binary_only (void) const;
21533 
21534  // DQ (6/13/2013): Added to support to call the frontend after all SgFiles are built up.
21535  void runFrontend(int & nextErrorCode);
21536 
21537 #if 0
21538 // DQ (9/5/2008): Moved to SgSourceFile
21539 #if ALT_FIXUP_COPY
21540  // DQ (11/7/2007): These need to be called separately (see documentation)
21541  virtual void fixupCopy_scopes (SgNode* copy, SgCopyHelp & help) const override;
21542  virtual void fixupCopy_symbols (SgNode* copy, SgCopyHelp & help) const override;
21543  virtual void fixupCopy_references (SgNode* copy, SgCopyHelp & help) const override;
21544 #else
21545  // DQ (10/5/2007): Added fixup function to set scopes not set properly by the ROSETTA generated copy!
21546  virtual void fixupCopy(SgNode* copy, SgCopyHelp & help) const;
21547 #endif
21548 #endif
21549 
21550  // DQ (9/24/2013): Added function to output the name of the language for the generated code.
21551  // static std::string get_outputLanguageOptionName ( outputLanguageOption_enum lang );
21552  static std::string get_outputLanguageOptionName ( languageOption_enum lang );
21553 
21554  // DQ (5/23/2015): Added support for p_skip_unparse_asm_commands to be implemented
21555  // as a static member variable instead of non-static member variable. See test2015_141.c
21556  // for where this is required.
21557  static void set_skip_unparse_asm_commands( bool b );
21558  static bool get_skip_unparse_asm_commands();
21559 
21560  // DQ (4/24/2021): Added support for p_header_file_unparsing_optimization to be implemented
21561  // as a static member variable instead of non-static member variable. Part of header file
21562  // optimization support.
21563  static void set_header_file_unparsing_optimization( bool b );
21564  static bool get_header_file_unparsing_optimization();
21565 
21566 
21567 
21568 // End of memberFunctionString
21569 // Start of memberFunctionString
21570 /* #line 2317 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
21571 
21572 
21573  /* name Persistant Attribute Mechanism
21574 
21575  This is the persistant attribute mechanism for attaching attributes to IR nodes across
21576  multiple passes. Note that these attributes are persistant in that they are preserved
21577  if the AST is written out to a file and read in from a file. However, virtual function
21578  in the user-defined class derived from the AstAttribute must be defined for the attribute
21579  to be defined across the boundary of File I/O (simple pack and unpack functions). More
21580  sophisticated mechanisms are available within the AstAttributeMechanism object
21581  (e.g iterating though attributes, etc; get_attributeMechanism() is available if direct
21582  access is required, however mostly only internal tools use this lower level support).
21583 
21584  \internal This used to be a public data member, but has been changed to be a protected
21585  pointer instead. The functional interface of the AstAttributeMechanism is presevered
21586  but some of the names and the syntax for calling the interface have changed. The
21587  pointer to the AstAttributeMechanism is now generated by ROSETTA.
21588  */
21589  /* */
21591  virtual void addNewAttribute(std::string s,AstAttribute* a) override;
21593  virtual AstAttribute* getAttribute(std::string s) const override;
21595  virtual void updateAttribute(std::string s,AstAttribute* a) override; // formerly called: replace in AstAttributeMechanism
21600  virtual void setAttribute(std::string s,AstAttribute* a) override;
21602  virtual void removeAttribute(std::string s) override;
21604  virtual bool attributeExists(std::string s) const override;
21606  virtual int numberOfAttributes() const override;
21607 
21622  /* */
21623 
21624 
21625 
21626 
21627 // End of memberFunctionString
21628 // Start of memberFunctionString
21629 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
21630 
21631 // *** COMMON CODE SECTION BEGINS HERE ***
21632 
21633  public:
21634 
21635  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
21636  // and not required which is required to match the other aspects of the copy mechanism code generation.
21637  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
21638  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
21639  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
21640  // virtual SgNode* copy ( const SgCopyHelp & help) const;
21641 
21643  virtual std::string class_name() const override;
21644 
21646  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
21647 
21649  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
21650  // static const VariantT static_variant = V_SgFile;
21651  enum { static_variant = V_SgFile };
21652 
21653  /* the generated cast function */
21655  ROSE_DLL_API friend SgFile* isSgFile( SgNode * s );
21656 
21658  ROSE_DLL_API friend const SgFile* isSgFile( const SgNode * s );
21659 
21660  // ******************************************
21661  // * Memory Pool / New / Delete
21662  // ******************************************
21663 
21664  public:
21666  static const unsigned pool_size; //
21668  static std::vector<unsigned char *> pools; //
21670  static SgFile * next_node; //
21671 
21673  static unsigned long initializeStorageClassArray(SgFileStorageClass *); //
21674 
21676  static void clearMemoryPool(); //
21677  static void deleteMemoryPool(); //
21678 
21680  static void extendMemoryPoolForFileIO(); //
21681 
21683  static SgFile * getPointerFromGlobalIndex(unsigned long); //
21685  static SgFile * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
21686 
21688  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
21690  static void resetValidFreepointers(); //
21692  static unsigned long getNumberOfLastValidPointer(); //
21693 
21694 
21695 #if defined(INLINE_FUNCTIONS)
21696 
21697  inline void *operator new (size_t size);
21698 #else
21699 
21700  void *operator new (size_t size);
21701 #endif
21702 
21703  void operator delete (void* pointer, size_t size);
21704 
21705  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
21706  void operator delete (void* pointer)
21707  {
21708  // This is the generated delete operator...
21709  SgFile::operator delete (pointer,sizeof(SgFile));
21710  }
21711 
21713  static size_t numberOfNodes();
21714 
21716  static size_t memoryUsage();
21717 
21718  // End of scope which started in IR nodes specific code
21719  /* */
21720 
21721  /* name Internal Functions
21722  \brief Internal functions ... incomplete-documentation
21723 
21724  These functions have been made public as part of the design, but they are suggested for internal use
21725  or by particularly knowledgeable users for specialized tools or applications.
21726 
21727  \internal We could not make these private because they are required by user for special purposes. And
21728  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
21729 
21730  */
21731 
21732  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
21733  // overridden in every class by *generated* implementation
21735  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
21736  // MS: 06/28/02 container of names of variables or container indices
21737  // used used in the traversal to access AST successor nodes
21738  // overridden in every class by *generated* implementation
21741  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
21742 
21743  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
21744  // than all the vector copies. The implementation for these functions is generated for each class.
21746  virtual size_t get_numberOfTraversalSuccessors() override;
21748  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
21750  virtual size_t get_childIndex(SgNode *child) override;
21751 
21752 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
21753  // MS: 08/16/2002 method for generating RTI information
21755  virtual RTIReturnType roseRTI() override;
21756 #endif
21757  /* */
21758 
21759 
21760 
21761  /* name Deprecated Functions
21762  \brief Deprecated functions ... incomplete-documentation
21763 
21764  These functions have been deprecated from use.
21765  */
21766  /* */
21767 
21769  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
21770 
21771  // JJW (10/16/2008): Changed to a single function in Node.code, and put
21772  // getVariant() in #if 0 block to prevent confusing Doxygen
21773 #if 0
21774 
21775  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
21777  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
21778 #endif
21779  /* */
21780 
21781 
21782 
21783 
21784  public:
21785  /* name Traversal Support Functions
21786  \brief Traversal support functions ... incomplete-documentation
21787 
21788  These functions have been made public as part of the design, but they are suggested for internal use
21789  or by particularly knowledgable users for specialized tools or applications.
21790  */
21791  /* */
21792 
21793  // DQ (11/26/2005): Support for visitor pattern mechanims
21794  // (inferior to ROSE traversal mechanism, experimental).
21798 
21799  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
21801  virtual void accept (ROSE_VisitorPattern & visitor) override;
21802 
21803  // DQ (12/26/2005): Support for traversal based on the memory pool
21806  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
21807 
21811 
21812  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
21813  // This traversal helps support internal tools that call static member functions.
21814  // note: this function operates on the memory pools.
21817  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
21818  /* */
21819 
21820 
21821  public:
21822  /* name Memory Allocation Functions
21823  \brief Memory allocations functions ... incomplete-documentation
21824 
21825  These functions have been made public as part of the design, but they are suggested for internal use
21826  or by particularly knowledgable users for specialized tools or applications.
21827  */
21828  /* */
21829 
21840  virtual bool isInMemoryPool() override;
21841 
21852  virtual void checkDataMemberPointersIfInMemoryPool() override;
21853 
21854  // DQ (4/30/2006): Modified to be a const function.
21869  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
21870 
21880  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
21881 
21893  virtual long getChildIndex( SgNode* childNode ) const override;
21894 
21895  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
21896  // comment here (changed to be a C style comment and not be a doxygen comment).
21897  /* \brief Constructor for use by AST File I/O Mechanism
21898 
21899  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
21900  which obtained via fast binary file I/O from disk.
21901  */
21902  // SgFile( SgFileStorageClass& source );
21903 
21904 
21905 
21906 
21907 
21908  // JH (10/24/2005): methods added to support the ast file IO
21909  private:
21910 
21911  /* name AST Memory Allocation Support Functions
21912  \brief Memory allocations support....
21913 
21914  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
21915  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
21916  and support the AST File I/O Mechanism.
21917  */
21918  /* */
21919 
21920  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
21921  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
21922  that I use the same type everywhere, if any changes are made. THe second one declares the type
21923  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
21924  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
21925  a correspinding one in the AST_FILE_IO class!
21926  */
21927  // DQ (9/2/2015): This typedef is no longer used, we can't define the
21928  // comment here (changed to be a C style comment and not be a doxygen comment).
21929  /* \brief Typedef used for low level memory access.
21930  */
21931  // typedef unsigned char* TestType;
21932 
21933  // DQ (9/2/2015): This typedef is no longer used, we can't define the
21934  // comment here (changed to be a C style comment and not be a doxygen comment).
21935  /* \brief Typedef used to hold memory addresses as values.
21936  */
21937  // typedef unsigned long AddressType;
21938 
21939 
21940 
21941  // necessary, to have direct access to the p_freepointer and the private methods !
21943  friend class AST_FILE_IO;
21944 
21946  friend class SgFileStorageClass;
21947 
21949  friend class AstSpecificDataManagingClass;
21950 
21952  friend class AstSpecificDataManagingClassStorageClass;
21953 
21954  public:
21956  SgFile( const SgFileStorageClass& source );
21957 
21958  // private: // JJW hack
21959  /*
21960  name AST Memory Allocation Support Variables
21961  Memory allocations support variables
21962 
21963  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
21964  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
21965  and support the AST File I/O Mechanism.
21966  */
21967  /* */
21968 
21969  public:
21970 
21971  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
21972  // to current node (so that it will work cleanly with build functions to specify patterns).
21973  // virtual SgNode* addRegExpAttribute();
21979  SgFile* addRegExpAttribute(std::string s, AstRegExAttribute* a);
21980 
21981 // *** COMMON CODE SECTION ENDS HERE ***
21982 
21983 
21984 // End of memberFunctionString
21985 // Start of memberFunctionString
21986 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
21987 
21988  // the generated cast function
21989  // friend ROSE_DLL_API SgFile* isSgFile ( SgNode* s );
21990 
21991  typedef SgSupport base_node_type;
21992 
21993 
21994 // End of memberFunctionString
21995 
21996  public:
21997  Sg_File_Info* get_startOfConstruct() const override /* (getDataAccessFunctionPrototypeString) */;
21998  void set_startOfConstruct(Sg_File_Info* startOfConstruct) /* (getDataAccessFunctionPrototypeString) */;
21999 
22000  public:
22001  SgStringList get_originalCommandLineArgumentList() const;
22002  void set_originalCommandLineArgumentList(SgStringList originalCommandLineArgumentList);
22003 
22004  public:
22005  int get_verbose() const;
22006  void set_verbose(int verbose);
22007 
22008  public:
22009  bool get_output_warnings() const;
22010  void set_output_warnings(bool output_warnings);
22011 
22012  public:
22013  bool get_C_only() const;
22014  void set_C_only(bool C_only);
22015 
22016  public:
22017  bool get_Cxx_only() const;
22018  void set_Cxx_only(bool Cxx_only);
22019 
22020  public:
22021  bool get_Fortran_only() const;
22022  void set_Fortran_only(bool Fortran_only);
22023 
22024  public:
22025  bool get_CoArrayFortran_only() const;
22026  void set_CoArrayFortran_only(bool CoArrayFortran_only);
22027 
22028  public:
22029  int get_upc_threads() const;
22030  void set_upc_threads(int upc_threads);
22031 
22032  public:
22033  bool get_Cuda_only() const;
22034  void set_Cuda_only(bool Cuda_only);
22035 
22036  public:
22037  bool get_OpenCL_only() const;
22038  void set_OpenCL_only(bool OpenCL_only);
22039 
22040  public:
22041  bool get_requires_C_preprocessor() const;
22042  void set_requires_C_preprocessor(bool requires_C_preprocessor);
22043 
22044  public:
22045  SgFile::outputFormatOption_enum get_inputFormat() const;
22046  void set_inputFormat(SgFile::outputFormatOption_enum inputFormat);
22047 
22048  public:
22049  SgFile::outputFormatOption_enum get_outputFormat() const;
22050  void set_outputFormat(SgFile::outputFormatOption_enum outputFormat);
22051 
22052  public:
22053  SgFile::outputFormatOption_enum get_backendCompileFormat() const;
22054  void set_backendCompileFormat(SgFile::outputFormatOption_enum backendCompileFormat);
22055 
22056  public:
22057  bool get_fortran_implicit_none() const;
22058  void set_fortran_implicit_none(bool fortran_implicit_none);
22059 
22060  public:
22061  bool get_openmp() const;
22062  void set_openmp(bool openmp);
22063 
22064  public:
22065  bool get_openmp_parse_only() const;
22066  void set_openmp_parse_only(bool openmp_parse_only);
22067 
22068  public:
22069  bool get_openmp_ast_only() const;
22070  void set_openmp_ast_only(bool openmp_ast_only);
22071 
22072  public:
22073  bool get_openmp_lowering() const;
22074  void set_openmp_lowering(bool openmp_lowering);
22075 
22076  public:
22077  bool get_openmp_analyzing() const;
22078  void set_openmp_analyzing(bool openmp_analyzing);
22079 
22080  public:
22081  bool get_cray_pointer_support() const;
22082  void set_cray_pointer_support(bool cray_pointer_support);
22083 
22084  public:
22085  bool get_failsafe() const;
22086  void set_failsafe(bool failsafe);
22087 
22088  public:
22089  bool get_output_parser_actions() const;
22090  void set_output_parser_actions(bool output_parser_actions);
22091 
22092  public:
22093  bool get_exit_after_parser() const;
22094  void set_exit_after_parser(bool exit_after_parser);
22095 
22096  public:
22097  bool get_skip_syntax_check() const;
22098  void set_skip_syntax_check(bool skip_syntax_check);
22099 
22100  public:
22101  bool get_skip_parser() const;
22102  void set_skip_parser(bool skip_parser);
22103 
22104  public:
22105  bool get_relax_syntax_check() const;
22106  void set_relax_syntax_check(bool relax_syntax_check);
22107 
22108  public:
22109  bool get_skip_translation_from_edg_ast_to_rose_ast() const;
22110  void set_skip_translation_from_edg_ast_to_rose_ast(bool skip_translation_from_edg_ast_to_rose_ast);
22111 
22112  public:
22113  bool get_skip_transformation() const;
22114  void set_skip_transformation(bool skip_transformation);
22115 
22116  public:
22117  bool get_skip_unparse() const;
22118  void set_skip_unparse(bool skip_unparse);
22119 
22120  public:
22121  bool get_skipfinalCompileStep() const;
22122  void set_skipfinalCompileStep(bool skipfinalCompileStep);
22123 
22124  public:
22125  bool get_unparse_includes() const;
22126  void set_unparse_includes(bool unparse_includes);
22127 
22128  public:
22129  bool get_unparse_line_directives() const;
22130  void set_unparse_line_directives(bool unparse_line_directives);
22131 
22132  public:
22133  bool get_unparse_function_calls_using_operator_syntax() const;
22134  void set_unparse_function_calls_using_operator_syntax(bool unparse_function_calls_using_operator_syntax);
22135 
22136  public:
22137  bool get_unparse_function_calls_using_operator_names() const;
22138  void set_unparse_function_calls_using_operator_names(bool unparse_function_calls_using_operator_names);
22139 
22140  public:
22141  bool get_unparse_instruction_addresses() const;
22142  void set_unparse_instruction_addresses(bool unparse_instruction_addresses);
22143 
22144  public:
22145  bool get_unparse_raw_memory_contents() const;
22146  void set_unparse_raw_memory_contents(bool unparse_raw_memory_contents);
22147 
22148  public:
22149  bool get_unparse_binary_file_format() const;
22150  void set_unparse_binary_file_format(bool unparse_binary_file_format);
22151 
22152  public:
22153  SgFile::languageOption_enum get_outputLanguage() const;
22154  void set_outputLanguage(SgFile::languageOption_enum outputLanguage);
22155 
22156  public:
22157  SgFile::languageOption_enum get_inputLanguage() const;
22158  void set_inputLanguage(SgFile::languageOption_enum inputLanguage);
22159 
22160  public:
22161  std::string get_sourceFileNameWithPath() const;
22162  void set_sourceFileNameWithPath(std::string sourceFileNameWithPath);
22163 
22164  public:
22165  std::string get_sourceFileNameWithoutPath() const;
22166  void set_sourceFileNameWithoutPath(std::string sourceFileNameWithoutPath);
22167 
22168  public:
22169  std::string get_unparse_output_filename() const;
22170  void set_unparse_output_filename(std::string unparse_output_filename);
22171 
22172  public:
22173  std::string get_objectFileNameWithPath() const;
22174  void set_objectFileNameWithPath(std::string objectFileNameWithPath);
22175 
22176  public:
22177  std::string get_objectFileNameWithoutPath() const;
22178  void set_objectFileNameWithoutPath(std::string objectFileNameWithoutPath);
22179 
22180  public:
22181  bool get_useBackendOnly() const;
22182  void set_useBackendOnly(bool useBackendOnly);
22183 
22184  public:
22185  bool get_compileOnly() const;
22186  void set_compileOnly(bool compileOnly);
22187 
22188  public:
22189  std::string get_savedFrontendCommandLine() const;
22190  void set_savedFrontendCommandLine(std::string savedFrontendCommandLine);
22191 
22192  public:
22193  bool get_no_implicit_templates() const;
22194  void set_no_implicit_templates(bool no_implicit_templates);
22195 
22196  public:
22197  bool get_no_implicit_inline_templates() const;
22198  void set_no_implicit_inline_templates(bool no_implicit_inline_templates);
22199 
22200  public:
22201  bool get_skip_commentsAndDirectives() const;
22202  void set_skip_commentsAndDirectives(bool skip_commentsAndDirectives);
22203 
22204  public:
22205  bool get_collectAllCommentsAndDirectives() const;
22206  void set_collectAllCommentsAndDirectives(bool collectAllCommentsAndDirectives);
22207 
22208  public:
22209  bool get_translateCommentsAndDirectivesIntoAST() const;
22210  void set_translateCommentsAndDirectivesIntoAST(bool translateCommentsAndDirectivesIntoAST);
22211 
22212  public:
22213  bool get_unparseHeaderFiles() const;
22214  void set_unparseHeaderFiles(bool unparseHeaderFiles);
22215 
22216  public:
22217  ROSEAttributesListContainerPtr get_preprocessorDirectivesAndCommentsList() const;
22218  void set_preprocessorDirectivesAndCommentsList(ROSEAttributesListContainerPtr preprocessorDirectivesAndCommentsList);
22219 
22220  public:
22221  AstAttributeMechanism* get_attributeMechanism() const override /* (getDataAccessFunctionPrototypeString) */;
22222  void set_attributeMechanism(AstAttributeMechanism* attributeMechanism) override /* (getDataAccessFunctionPrototypeString) */;
22223 
22224  public:
22225  bool get_KCC_frontend() const;
22226  void set_KCC_frontend(bool KCC_frontend);
22227 
22228  public:
22229  bool get_new_frontend() const;
22230  void set_new_frontend(bool new_frontend);
22231 
22232  public:
22233  bool get_disable_edg_backend() const;
22234  void set_disable_edg_backend(bool disable_edg_backend);
22235 
22236  public:
22237  bool get_disable_sage_backend() const;
22238  void set_disable_sage_backend(bool disable_sage_backend);
22239 
22240  public:
22241  int get_testingLevel() const;
22242  void set_testingLevel(int testingLevel);
22243 
22244  public:
22245  bool get_preinit_il() const;
22246  void set_preinit_il(bool preinit_il);
22247 
22248  public:
22249  bool get_enable_cp_backend() const;
22250  void set_enable_cp_backend(bool enable_cp_backend);
22251 
22252  public:
22253  bool get_markGeneratedFiles() const;
22254  void set_markGeneratedFiles(bool markGeneratedFiles);
22255 
22256  public:
22257  bool get_negative_test() const;
22258  void set_negative_test(bool negative_test);
22259 
22260  public:
22261  bool get_strict_language_handling() const;
22262  void set_strict_language_handling(bool strict_language_handling);
22263 
22264  public:
22265  bool get_wave() const;
22266  void set_wave(bool wave);
22267 
22268  public:
22269  int get_embedColorCodesInGeneratedCode() const;
22270  void set_embedColorCodesInGeneratedCode(int embedColorCodesInGeneratedCode);
22271 
22272  public:
22273  int get_generateSourcePositionCodes() const;
22274  void set_generateSourcePositionCodes(int generateSourcePositionCodes);
22275 
22276  public:
22277  bool get_sourceFileUsesCppFileExtension() const;
22278  void set_sourceFileUsesCppFileExtension(bool sourceFileUsesCppFileExtension);
22279 
22280  public:
22281  bool get_sourceFileUsesFortranFileExtension() const;
22282  void set_sourceFileUsesFortranFileExtension(bool sourceFileUsesFortranFileExtension);
22283 
22284  public:
22285  bool get_sourceFileUsesFortran77FileExtension() const;
22286  void set_sourceFileUsesFortran77FileExtension(bool sourceFileUsesFortran77FileExtension);
22287 
22288  public:
22289  bool get_sourceFileUsesFortran90FileExtension() const;
22290  void set_sourceFileUsesFortran90FileExtension(bool sourceFileUsesFortran90FileExtension);
22291 
22292  public:
22293  bool get_sourceFileUsesFortran95FileExtension() const;
22294  void set_sourceFileUsesFortran95FileExtension(bool sourceFileUsesFortran95FileExtension);
22295 
22296  public:
22297  bool get_sourceFileUsesFortran2003FileExtension() const;
22298  void set_sourceFileUsesFortran2003FileExtension(bool sourceFileUsesFortran2003FileExtension);
22299 
22300  public:
22301  bool get_sourceFileUsesFortran2008FileExtension() const;
22302  void set_sourceFileUsesFortran2008FileExtension(bool sourceFileUsesFortran2008FileExtension);
22303 
22304  public:
22305  bool get_sourceFileUsesCoArrayFortranFileExtension() const;
22306  void set_sourceFileUsesCoArrayFortranFileExtension(bool sourceFileUsesCoArrayFortranFileExtension);
22307 
22308  public:
22309  bool get_sourceFileTypeIsUnknown() const;
22310  void set_sourceFileTypeIsUnknown(bool sourceFileTypeIsUnknown);
22311 
22312  public:
22313  int get_detect_dangling_pointers() const;
22314  void set_detect_dangling_pointers(int detect_dangling_pointers);
22315 
22316  public:
22317  bool get_experimental_fortran_frontend() const;
22318  void set_experimental_fortran_frontend(bool experimental_fortran_frontend);
22319 
22320  public:
22321  bool get_experimental_flang_frontend() const;
22322  void set_experimental_flang_frontend(bool experimental_flang_frontend);
22323 
22324  public:
22325  bool get_experimental_cuda_fortran_frontend() const;
22326  void set_experimental_cuda_fortran_frontend(bool experimental_cuda_fortran_frontend);
22327 
22328  public:
22329  bool get_experimental_fortran_frontend_OFP_test() const;
22330  void set_experimental_fortran_frontend_OFP_test(bool experimental_fortran_frontend_OFP_test);
22331 
22332  public:
22333  bool get_read_executable_file_format_only() const;
22334  void set_read_executable_file_format_only(bool read_executable_file_format_only);
22335 
22336  public:
22337  bool get_visualize_executable_file_format_skip_symbols() const;
22338  void set_visualize_executable_file_format_skip_symbols(bool visualize_executable_file_format_skip_symbols);
22339 
22340  public:
22341  bool get_visualize_dwarf_only() const;
22342  void set_visualize_dwarf_only(bool visualize_dwarf_only);
22343 
22344  public:
22345  bool get_read_instructions_only() const;
22346  void set_read_instructions_only(bool read_instructions_only);
22347 
22348 
22349  public:
22350  const SgStringList& get_libraryArchiveObjectFileNameList() const;
22351  SgStringList& get_libraryArchiveObjectFileNameList();
22352 
22353  public:
22354  bool get_isLibraryArchive() const;
22355  void set_isLibraryArchive(bool isLibraryArchive);
22356 
22357  public:
22358  bool get_isObjectFile() const;
22359  void set_isObjectFile(bool isObjectFile);
22360 
22361  public:
22362  bool get_unparse_tokens() const;
22363  void set_unparse_tokens(bool unparse_tokens);
22364 
22365  public:
22366  int get_unparse_tokens_testing() const;
22367  void set_unparse_tokens_testing(int unparse_tokens_testing);
22368 
22369  public:
22370  bool get_unparse_using_leading_and_trailing_token_mappings() const;
22371  void set_unparse_using_leading_and_trailing_token_mappings(bool unparse_using_leading_and_trailing_token_mappings);
22372 
22373  public:
22374  bool get_unparse_template_ast() const;
22375  void set_unparse_template_ast(bool unparse_template_ast);
22376 
22377  public:
22378  bool get_skipAstConsistancyTests() const;
22379  void set_skipAstConsistancyTests(bool skipAstConsistancyTests);
22380 
22381  public:
22382  bool get_multifile_support() const;
22383  void set_multifile_support(bool multifile_support);
22384 
22385  public:
22386  bool get_optimization() const;
22387  void set_optimization(bool optimization);
22388 
22389  public:
22390  bool get_use_token_stream_to_improve_source_position_info() const;
22391  void set_use_token_stream_to_improve_source_position_info(bool use_token_stream_to_improve_source_position_info);
22392 
22393  public:
22394  bool get_suppress_variable_declaration_normalization() const;
22395  void set_suppress_variable_declaration_normalization(bool suppress_variable_declaration_normalization);
22396 
22397  public:
22398  bool get_edg_il_to_graphviz() const;
22399  void set_edg_il_to_graphviz(bool edg_il_to_graphviz);
22400 
22401  public:
22402  bool get_clang_il_to_graphviz() const;
22403  void set_clang_il_to_graphviz(bool clang_il_to_graphviz);
22404 
22405  public:
22406  bool get_no_optimize_flag_for_frontend() const;
22407  void set_no_optimize_flag_for_frontend(bool no_optimize_flag_for_frontend);
22408 
22409  public:
22410  bool get_unparse_edg_normalized_method_ROSE_1392() const;
22411  void set_unparse_edg_normalized_method_ROSE_1392(bool unparse_edg_normalized_method_ROSE_1392);
22412 
22413 
22414  public:
22415  bool get_header_file_unparsing_optimization_source_file() const;
22416  void set_header_file_unparsing_optimization_source_file(bool header_file_unparsing_optimization_source_file);
22417 
22418  public:
22419  bool get_header_file_unparsing_optimization_header_file() const;
22420  void set_header_file_unparsing_optimization_header_file(bool header_file_unparsing_optimization_header_file);
22421 
22422 
22423 
22424  public:
22425  int get_frontendErrorCode() const;
22426  void set_frontendErrorCode(int frontendErrorCode);
22427 
22428  public:
22429  int get_javacErrorCode() const;
22430  void set_javacErrorCode(int javacErrorCode);
22431 
22432  public:
22433  int get_ecjErrorCode() const;
22434  void set_ecjErrorCode(int ecjErrorCode);
22435 
22436  public:
22437  int get_midendErrorCode() const;
22438  void set_midendErrorCode(int midendErrorCode);
22439 
22440  public:
22441  int get_unparserErrorCode() const;
22442  void set_unparserErrorCode(int unparserErrorCode);
22443 
22444  public:
22445  int get_backendCompilerErrorCode() const;
22446  void set_backendCompilerErrorCode(int backendCompilerErrorCode);
22447 
22448  public:
22449  bool get_unparsedFileFailedCompilation() const;
22450  void set_unparsedFileFailedCompilation(bool unparsedFileFailedCompilation);
22451 
22452 
22453  public:
22454  virtual ~SgFile();
22455 
22456 
22457  public:
22458  SgFile();
22459 
22460  protected:
22461 // Start of memberFunctionString
22462 Sg_File_Info* p_startOfConstruct;
22463 
22464 // End of memberFunctionString
22465 // Start of memberFunctionString
22466 SgStringList p_originalCommandLineArgumentList;
22467 
22468 // End of memberFunctionString
22469 // Start of memberFunctionString
22470 int p_verbose;
22471 
22472 // End of memberFunctionString
22473 // Start of memberFunctionString
22474 bool p_output_warnings;
22475 
22476 // End of memberFunctionString
22477 // Start of memberFunctionString
22478 bool p_C_only;
22479 
22480 // End of memberFunctionString
22481 // Start of memberFunctionString
22482 bool p_Cxx_only;
22483 
22484 // End of memberFunctionString
22485 // Start of memberFunctionString
22486 bool p_Fortran_only;
22487 
22488 // End of memberFunctionString
22489 // Start of memberFunctionString
22490 bool p_CoArrayFortran_only;
22491 
22492 // End of memberFunctionString
22493 // Start of memberFunctionString
22494 int p_upc_threads;
22495 
22496 // End of memberFunctionString
22497 // Start of memberFunctionString
22498 bool p_Cuda_only;
22499 
22500 // End of memberFunctionString
22501 // Start of memberFunctionString
22502 bool p_OpenCL_only;
22503 
22504 // End of memberFunctionString
22505 // Start of memberFunctionString
22506 bool p_requires_C_preprocessor;
22507 
22508 // End of memberFunctionString
22509 // Start of memberFunctionString
22510 SgFile::outputFormatOption_enum p_inputFormat;
22511 
22512 // End of memberFunctionString
22513 // Start of memberFunctionString
22514 SgFile::outputFormatOption_enum p_outputFormat;
22515 
22516 // End of memberFunctionString
22517 // Start of memberFunctionString
22518 SgFile::outputFormatOption_enum p_backendCompileFormat;
22519 
22520 // End of memberFunctionString
22521 // Start of memberFunctionString
22522 bool p_fortran_implicit_none;
22523 
22524 // End of memberFunctionString
22525 // Start of memberFunctionString
22526 bool p_openmp;
22527 
22528 // End of memberFunctionString
22529 // Start of memberFunctionString
22530 bool p_openmp_parse_only;
22531 
22532 // End of memberFunctionString
22533 // Start of memberFunctionString
22534 bool p_openmp_ast_only;
22535 
22536 // End of memberFunctionString
22537 // Start of memberFunctionString
22538 bool p_openmp_lowering;
22539 
22540 // End of memberFunctionString
22541 // Start of memberFunctionString
22542 bool p_openmp_analyzing;
22543 
22544 // End of memberFunctionString
22545 // Start of memberFunctionString
22546 bool p_cray_pointer_support;
22547 
22548 // End of memberFunctionString
22549 // Start of memberFunctionString
22550 bool p_failsafe;
22551 
22552 // End of memberFunctionString
22553 // Start of memberFunctionString
22554 bool p_output_parser_actions;
22555 
22556 // End of memberFunctionString
22557 // Start of memberFunctionString
22558 bool p_exit_after_parser;
22559 
22560 // End of memberFunctionString
22561 // Start of memberFunctionString
22562 bool p_skip_syntax_check;
22563 
22564 // End of memberFunctionString
22565 // Start of memberFunctionString
22566 bool p_skip_parser;
22567 
22568 // End of memberFunctionString
22569 // Start of memberFunctionString
22570 bool p_relax_syntax_check;
22571 
22572 // End of memberFunctionString
22573 // Start of memberFunctionString
22574 bool p_skip_translation_from_edg_ast_to_rose_ast;
22575 
22576 // End of memberFunctionString
22577 // Start of memberFunctionString
22578 bool p_skip_transformation;
22579 
22580 // End of memberFunctionString
22581 // Start of memberFunctionString
22582 bool p_skip_unparse;
22583 
22584 // End of memberFunctionString
22585 // Start of memberFunctionString
22586 bool p_skipfinalCompileStep;
22587 
22588 // End of memberFunctionString
22589 // Start of memberFunctionString
22590 bool p_unparse_includes;
22591 
22592 // End of memberFunctionString
22593 // Start of memberFunctionString
22594 bool p_unparse_line_directives;
22595 
22596 // End of memberFunctionString
22597 // Start of memberFunctionString
22598 bool p_unparse_function_calls_using_operator_syntax;
22599 
22600 // End of memberFunctionString
22601 // Start of memberFunctionString
22602 bool p_unparse_function_calls_using_operator_names;
22603 
22604 // End of memberFunctionString
22605 // Start of memberFunctionString
22606 bool p_unparse_instruction_addresses;
22607 
22608 // End of memberFunctionString
22609 // Start of memberFunctionString
22610 bool p_unparse_raw_memory_contents;
22611 
22612 // End of memberFunctionString
22613 // Start of memberFunctionString
22614 bool p_unparse_binary_file_format;
22615 
22616 // End of memberFunctionString
22617 // Start of memberFunctionString
22618 SgFile::languageOption_enum p_outputLanguage;
22619 
22620 // End of memberFunctionString
22621 // Start of memberFunctionString
22622 SgFile::languageOption_enum p_inputLanguage;
22623 
22624 // End of memberFunctionString
22625 // Start of memberFunctionString
22626 std::string p_sourceFileNameWithPath;
22627 
22628 // End of memberFunctionString
22629 // Start of memberFunctionString
22630 std::string p_sourceFileNameWithoutPath;
22631 
22632 // End of memberFunctionString
22633 // Start of memberFunctionString
22634 std::string p_unparse_output_filename;
22635 
22636 // End of memberFunctionString
22637 // Start of memberFunctionString
22638 std::string p_objectFileNameWithPath;
22639 
22640 // End of memberFunctionString
22641 // Start of memberFunctionString
22642 std::string p_objectFileNameWithoutPath;
22643 
22644 // End of memberFunctionString
22645 // Start of memberFunctionString
22646 bool p_useBackendOnly;
22647 
22648 // End of memberFunctionString
22649 // Start of memberFunctionString
22650 bool p_compileOnly;
22651 
22652 // End of memberFunctionString
22653 // Start of memberFunctionString
22654 std::string p_savedFrontendCommandLine;
22655 
22656 // End of memberFunctionString
22657 // Start of memberFunctionString
22658 bool p_no_implicit_templates;
22659 
22660 // End of memberFunctionString
22661 // Start of memberFunctionString
22662 bool p_no_implicit_inline_templates;
22663 
22664 // End of memberFunctionString
22665 // Start of memberFunctionString
22666 bool p_skip_commentsAndDirectives;
22667 
22668 // End of memberFunctionString
22669 // Start of memberFunctionString
22670 bool p_collectAllCommentsAndDirectives;
22671 
22672 // End of memberFunctionString
22673 // Start of memberFunctionString
22674 bool p_translateCommentsAndDirectivesIntoAST;
22675 
22676 // End of memberFunctionString
22677 // Start of memberFunctionString
22678 bool p_unparseHeaderFiles;
22679 
22680 // End of memberFunctionString
22681 // Start of memberFunctionString
22682 ROSEAttributesListContainerPtr p_preprocessorDirectivesAndCommentsList;
22683 
22684 // End of memberFunctionString
22685 // Start of memberFunctionString
22686 AstAttributeMechanism* p_attributeMechanism;
22687 
22688 // End of memberFunctionString
22689 // Start of memberFunctionString
22690 bool p_KCC_frontend;
22691 
22692 // End of memberFunctionString
22693 // Start of memberFunctionString
22694 bool p_new_frontend;
22695 
22696 // End of memberFunctionString
22697 // Start of memberFunctionString
22698 bool p_disable_edg_backend;
22699 
22700 // End of memberFunctionString
22701 // Start of memberFunctionString
22702 bool p_disable_sage_backend;
22703 
22704 // End of memberFunctionString
22705 // Start of memberFunctionString
22706 int p_testingLevel;
22707 
22708 // End of memberFunctionString
22709 // Start of memberFunctionString
22710 bool p_preinit_il;
22711 
22712 // End of memberFunctionString
22713 // Start of memberFunctionString
22714 bool p_enable_cp_backend;
22715 
22716 // End of memberFunctionString
22717 // Start of memberFunctionString
22718 bool p_markGeneratedFiles;
22719 
22720 // End of memberFunctionString
22721 // Start of memberFunctionString
22722 bool p_negative_test;
22723 
22724 // End of memberFunctionString
22725 // Start of memberFunctionString
22726 bool p_strict_language_handling;
22727 
22728 // End of memberFunctionString
22729 // Start of memberFunctionString
22730 bool p_wave;
22731 
22732 // End of memberFunctionString
22733 // Start of memberFunctionString
22734 int p_embedColorCodesInGeneratedCode;
22735 
22736 // End of memberFunctionString
22737 // Start of memberFunctionString
22738 int p_generateSourcePositionCodes;
22739 
22740 // End of memberFunctionString
22741 // Start of memberFunctionString
22742 bool p_sourceFileUsesCppFileExtension;
22743 
22744 // End of memberFunctionString
22745 // Start of memberFunctionString
22746 bool p_sourceFileUsesFortranFileExtension;
22747 
22748 // End of memberFunctionString
22749 // Start of memberFunctionString
22750 bool p_sourceFileUsesFortran77FileExtension;
22751 
22752 // End of memberFunctionString
22753 // Start of memberFunctionString
22754 bool p_sourceFileUsesFortran90FileExtension;
22755 
22756 // End of memberFunctionString
22757 // Start of memberFunctionString
22758 bool p_sourceFileUsesFortran95FileExtension;
22759 
22760 // End of memberFunctionString
22761 // Start of memberFunctionString
22762 bool p_sourceFileUsesFortran2003FileExtension;
22763 
22764 // End of memberFunctionString
22765 // Start of memberFunctionString
22766 bool p_sourceFileUsesFortran2008FileExtension;
22767 
22768 // End of memberFunctionString
22769 // Start of memberFunctionString
22770 bool p_sourceFileUsesCoArrayFortranFileExtension;
22771 
22772 // End of memberFunctionString
22773 // Start of memberFunctionString
22774 bool p_sourceFileTypeIsUnknown;
22775 
22776 // End of memberFunctionString
22777 // Start of memberFunctionString
22778 int p_detect_dangling_pointers;
22779 
22780 // End of memberFunctionString
22781 // Start of memberFunctionString
22782 bool p_experimental_fortran_frontend;
22783 
22784 // End of memberFunctionString
22785 // Start of memberFunctionString
22786 bool p_experimental_flang_frontend;
22787 
22788 // End of memberFunctionString
22789 // Start of memberFunctionString
22790 bool p_experimental_cuda_fortran_frontend;
22791 
22792 // End of memberFunctionString
22793 // Start of memberFunctionString
22794 bool p_experimental_fortran_frontend_OFP_test;
22795 
22796 // End of memberFunctionString
22797 // Start of memberFunctionString
22798 bool p_read_executable_file_format_only;
22799 
22800 // End of memberFunctionString
22801 // Start of memberFunctionString
22802 bool p_visualize_executable_file_format_skip_symbols;
22803 
22804 // End of memberFunctionString
22805 // Start of memberFunctionString
22806 bool p_visualize_dwarf_only;
22807 
22808 // End of memberFunctionString
22809 // Start of memberFunctionString
22810 bool p_read_instructions_only;
22811 
22812 // End of memberFunctionString
22813 // Start of memberFunctionString
22814 static bool p_skip_unparse_asm_commands;
22815 
22816 // End of memberFunctionString
22817 // Start of memberFunctionString
22818 SgStringList p_libraryArchiveObjectFileNameList;
22819 
22820 // End of memberFunctionString
22821 // Start of memberFunctionString
22822 bool p_isLibraryArchive;
22823 
22824 // End of memberFunctionString
22825 // Start of memberFunctionString
22826 bool p_isObjectFile;
22827 
22828 // End of memberFunctionString
22829 // Start of memberFunctionString
22830 bool p_unparse_tokens;
22831 
22832 // End of memberFunctionString
22833 // Start of memberFunctionString
22834 int p_unparse_tokens_testing;
22835 
22836 // End of memberFunctionString
22837 // Start of memberFunctionString
22838 bool p_unparse_using_leading_and_trailing_token_mappings;
22839 
22840 // End of memberFunctionString
22841 // Start of memberFunctionString
22842 bool p_unparse_template_ast;
22843 
22844 // End of memberFunctionString
22845 // Start of memberFunctionString
22846 bool p_skipAstConsistancyTests;
22847 
22848 // End of memberFunctionString
22849 // Start of memberFunctionString
22850 bool p_multifile_support;
22851 
22852 // End of memberFunctionString
22853 // Start of memberFunctionString
22854 bool p_optimization;
22855 
22856 // End of memberFunctionString
22857 // Start of memberFunctionString
22858 bool p_use_token_stream_to_improve_source_position_info;
22859 
22860 // End of memberFunctionString
22861 // Start of memberFunctionString
22862 bool p_suppress_variable_declaration_normalization;
22863 
22864 // End of memberFunctionString
22865 // Start of memberFunctionString
22866 bool p_edg_il_to_graphviz;
22867 
22868 // End of memberFunctionString
22869 // Start of memberFunctionString
22870 bool p_clang_il_to_graphviz;
22871 
22872 // End of memberFunctionString
22873 // Start of memberFunctionString
22874 bool p_no_optimize_flag_for_frontend;
22875 
22876 // End of memberFunctionString
22877 // Start of memberFunctionString
22878 bool p_unparse_edg_normalized_method_ROSE_1392;
22879 
22880 // End of memberFunctionString
22881 // Start of memberFunctionString
22882 static bool p_header_file_unparsing_optimization;
22883 
22884 // End of memberFunctionString
22885 // Start of memberFunctionString
22886 bool p_header_file_unparsing_optimization_source_file;
22887 
22888 // End of memberFunctionString
22889 // Start of memberFunctionString
22890 bool p_header_file_unparsing_optimization_header_file;
22891 
22892 // End of memberFunctionString
22893 // Start of memberFunctionString
22894 SgFile::standard_enum p_standard;
22895 
22896 // End of memberFunctionString
22897 // Start of memberFunctionString
22898 bool p_gnu_standard;
22899 
22900 // End of memberFunctionString
22901 // Start of memberFunctionString
22902 int p_frontendErrorCode;
22903 
22904 // End of memberFunctionString
22905 // Start of memberFunctionString
22906 int p_javacErrorCode;
22907 
22908 // End of memberFunctionString
22909 // Start of memberFunctionString
22910 int p_ecjErrorCode;
22911 
22912 // End of memberFunctionString
22913 // Start of memberFunctionString
22914 int p_midendErrorCode;
22915 
22916 // End of memberFunctionString
22917 // Start of memberFunctionString
22918 int p_unparserErrorCode;
22919 
22920 // End of memberFunctionString
22921 // Start of memberFunctionString
22922 int p_backendCompilerErrorCode;
22923 
22924 // End of memberFunctionString
22925 // Start of memberFunctionString
22926 bool p_unparsedFileFailedCompilation;
22927 
22928 // End of memberFunctionString
22929 
22930 
22931 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
22932 
22933 
22934  };
22935 #endif
22936 
22937 // postdeclarations for SgFile
22938 
22939 /* #line 22940 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
22940 
22941 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
22942 
22943 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
22944 
22945 
22946 /* #line 22947 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
22947 
22948 
22949 
22950 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
22951 
22952 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
22953 // This code is automatically generated for each
22954 // terminal and non-terminal within the defined
22955 // grammar. There is a simple way to change the
22956 // code to fix bugs etc. See the ROSE README file
22957 // for directions.
22958 
22959 // tps: (02/22/2010): Adding DLL export requirements
22960 #include "rosedll.h"
22961 
22962 // predeclarations for SgSourceFile
22963 
22964 /* #line 22965 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
22965 
22966 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
22967 
22968 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
22969 
22970 #if 1
22971 // Class Definition for SgSourceFile
22972 class ROSE_DLL_API SgSourceFile : public SgFile
22973  {
22974  public:
22975 
22976 
22977 /* #line 22978 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
22978 
22979  virtual SgNode* copy ( SgCopyHelp& help) const override;
22980 // Start of memberFunctionString
22981 /* #line 6519 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
22982 
22983 #ifndef ROSE_SKIP_COMPILATION_OF_WAVE
22984  public:
22985  // King84 (2010.09.22): Added support for getting the preprocessed token stream and the raw token stream.
22986  typedef boost::wave::cpplexer::lex_token<> token_type;
22987  typedef std::list<token_type> LexTokenList;
22988  protected:
22989  LexTokenList rawTokenStream;
22990  public:
22991  LexTokenList& get_rawTokenStream() { return rawTokenStream; }
22992 #else
22993  public:
22994 #endif
22995 
22996  // SgSourceFile ( int & argc, char** & argv, int & errorCode, int fileNameIndex = 0, SgProject* project = NULL );
22997  SgSourceFile(std::vector<std::string>& argv, SgProject* project = NULL);
22998  virtual int callFrontEnd() override;
22999  // SgSourceFile ( const SgSourceFile & X );
23000 
23002  // SgSourceFile() ROSE_DEPRECATED_FUNCTION;
23003 
23004  virtual int buildAST( std::vector<std::string> argv, std::vector<std::string> inputCommandLine ) override;
23005 // #ifdef ROSE_BUILD_FORTRAN_LANGUAGE_SUPPORT // Liao 6/25/2010, support enable-only-c and haskell
23006 
23008  int build_Fortran_AST( std::vector<std::string> argv, std::vector<std::string> inputCommandLine );
23009 
23010 // #endif
23011  int build_C_and_Cxx_AST( std::vector<std::string> argv, std::vector<std::string> inputCommandLine );
23012 
23013  virtual void doSetupForConstructor(const std::vector<std::string>& argv, SgProject* project) override;
23014 
23015  // DQ (12/19/2008): Added support for translation source position information using CPP linemarkers (this is specific to Fortran).
23016  void processCppLinemarkers();
23017 
23018  // DQ (12/13/2012): Added support for more translation source position information using CPP linemarkers (this is not specific to Fortran).
23019  // void gatherASTSourcePositionsBasedOnDetectedLineDirectives();
23020  void fixupASTSourcePositionsBasedOnDetectedLineDirectives(std::set<int> equivalentFilenames);
23021 
23022  // DQ (9/5/2008): Support for older name of the SgGlobal in SgSourceFile
23023  // SgGlobal* get_root() const;
23024 
23025  // DQ (12/23/2008): This sets up the Sg_File_Info in the SgFile and initializes it with the correct name etc.
23026  // This should be the only place where the SgGlobal (global scope object) is built.
23027  void initializeGlobalScope();
23028 
23029 #if ALT_FIXUP_COPY
23030  // DQ (11/7/2007): These need to be called separately (see documentation)
23031  virtual void fixupCopy_scopes (SgNode* copy, SgCopyHelp & help) const override;
23032  virtual void fixupCopy_symbols (SgNode* copy, SgCopyHelp & help) const override;
23033  virtual void fixupCopy_references (SgNode* copy, SgCopyHelp & help) const override;
23034 #else
23035  // DQ (10/5/2007): Added fixup function to set scopes not set properly by the ROSETTA generated copy!
23036  virtual void fixupCopy(SgNode* copy, SgCopyHelp & help) const;
23037 #endif
23038 
23039  // DQ (1/20/2021): Changed the API to use a pointer to a std::map<SgNode*,TokenStreamSequenceToNodeMapping*> instead of a reference.
23040  // DQ (10/28/2013): Abstract access to the new token subsequence map (currently for statements).
23041  // map<SgNode*,TokenStreamSequenceToNodeMapping*> tokenStreamSequenceMap;
23042  // void set_tokenSubsequenceMap(std::map<SgNode*,TokenStreamSequenceToNodeMapping*> & tokenStreamSequenceMap);
23043  void set_tokenSubsequenceMap(std::map<SgNode*,TokenStreamSequenceToNodeMapping*>* tokenStreamSequenceMap);
23044  std::map<SgNode*,TokenStreamSequenceToNodeMapping*> & get_tokenSubsequenceMap();
23045 
23046  // DQ (11/27/2013): Added support for definition of the token unparsing frontier in the AST.
23047  // void set_token_unparse_frontier(std::vector<FrontierNode*> & tokenStreamSequenceMap);
23048  // std::vector<FrontierNode*> & get_token_unparse_frontier();
23049  void set_token_unparse_frontier(std::map<SgStatement*,FrontierNode*> & tokenStreamSequenceMap);
23050  std::map<SgStatement*,FrontierNode*> & get_token_unparse_frontier();
23051 
23052  // DQ (11/27/2013): Added support for adjacency of nodes in the unparsing frontier in the AST.
23053  void set_token_unparse_frontier_adjacency(std::map<SgNode*,PreviousAndNextNodeData*> & tokenStreamSequenceMap);
23054  std::map<SgNode*,PreviousAndNextNodeData*> & get_token_unparse_frontier_adjacency();
23055 
23056  // DQ (11/29/2013): Added to support access to multi-map of redundant mapping of frontier IR nodes to token subsequences.
23057  void set_redundantlyMappedTokensToStatementMultimap(std::multimap<int,SgStatement*> & X);
23058  std::multimap<int,SgStatement*> & get_redundantlyMappedTokensToStatementMultimap();
23059 
23060  // DQ (11/29/2013): Added to support access to multi-map of redundant mapping of frontier IR nodes to token subsequences.
23061  std::set<int> & get_redundantTokenEndingsSet();
23062  void set_redundantTokenEndingsSet(std::set<int> & X);
23063 
23064  // DQ (9/28/2018): Removed static keyword (I don't think we wnat this to be a static function.
23065  // DQ (11/20/2015): Added support for retrieving representative whitespace in unparsing transformations when using the token-based unparsing.
23066  // static void set_representativeWhitespaceStatementMap(std::map<SgScopeStatement*,SgStatement*> & representativeWhitespaceStatementMap);
23067  // static std::map<SgScopeStatement*,SgStatement*> & get_representativeWhitespaceStatementMap();
23068  void set_representativeWhitespaceStatementMap(std::map<SgScopeStatement*,SgStatement*> & representativeWhitespaceStatementMap);
23069  std::map<SgScopeStatement*,SgStatement*> & get_representativeWhitespaceStatementMap();
23070 
23071  // DQ (9/28/2018): Removed static keyword (I don't think we wnat this to be a static function.
23072  // DQ (11/30/2015): Provide a statement to use as a key in the macro expansion map to get info about macro expansions.
23073  // static void set_macroExpansionMap(std::map<SgStatement*,MacroExpansion*> & macroExpansionMap);
23074  // static std::map<SgStatement*,MacroExpansion*> & get_macroExpansionMap();
23075  void set_macroExpansionMap(std::map<SgStatement*,MacroExpansion*> & macroExpansionMap);
23076  std::map<SgStatement*,MacroExpansion*> & get_macroExpansionMap();
23077 
23078 #if 0
23079  // DQ (9/12/2009): Adding support for new name qualification (not ready yet).
23080  // typedef std::vector<SgNode*> NumberToStatementType;
23081  // void buildStatementNumbering( NumberToStatementType & numberToStatementContainer );
23082  void buildStatementNumbering();
23083 #endif
23084 
23085 
23086 
23087 // End of memberFunctionString
23088 // Start of memberFunctionString
23089 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
23090 
23091 // *** COMMON CODE SECTION BEGINS HERE ***
23092 
23093  public:
23094 
23095  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
23096  // and not required which is required to match the other aspects of the copy mechanism code generation.
23097  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
23098  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
23099  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
23100  // virtual SgNode* copy ( const SgCopyHelp & help) const;
23101 
23103  virtual std::string class_name() const override;
23104 
23106  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
23107 
23109  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
23110  // static const VariantT static_variant = V_SgSourceFile;
23111  enum { static_variant = V_SgSourceFile };
23112 
23113  /* the generated cast function */
23115  ROSE_DLL_API friend SgSourceFile* isSgSourceFile( SgNode * s );
23116 
23118  ROSE_DLL_API friend const SgSourceFile* isSgSourceFile( const SgNode * s );
23119 
23120  // ******************************************
23121  // * Memory Pool / New / Delete
23122  // ******************************************
23123 
23124  public:
23126  static const unsigned pool_size; //
23128  static std::vector<unsigned char *> pools; //
23130  static SgSourceFile * next_node; //
23131 
23133  static unsigned long initializeStorageClassArray(SgSourceFileStorageClass *); //
23134 
23136  static void clearMemoryPool(); //
23137  static void deleteMemoryPool(); //
23138 
23140  static void extendMemoryPoolForFileIO(); //
23141 
23143  static SgSourceFile * getPointerFromGlobalIndex(unsigned long); //
23145  static SgSourceFile * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
23146 
23148  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
23150  static void resetValidFreepointers(); //
23152  static unsigned long getNumberOfLastValidPointer(); //
23153 
23154 
23155 #if defined(INLINE_FUNCTIONS)
23156 
23157  inline void *operator new (size_t size);
23158 #else
23159 
23160  void *operator new (size_t size);
23161 #endif
23162 
23163  void operator delete (void* pointer, size_t size);
23164 
23165  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
23166  void operator delete (void* pointer)
23167  {
23168  // This is the generated delete operator...
23169  SgSourceFile::operator delete (pointer,sizeof(SgSourceFile));
23170  }
23171 
23173  static size_t numberOfNodes();
23174 
23176  static size_t memoryUsage();
23177 
23178  // End of scope which started in IR nodes specific code
23179  /* */
23180 
23181  /* name Internal Functions
23182  \brief Internal functions ... incomplete-documentation
23183 
23184  These functions have been made public as part of the design, but they are suggested for internal use
23185  or by particularly knowledgeable users for specialized tools or applications.
23186 
23187  \internal We could not make these private because they are required by user for special purposes. And
23188  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
23189 
23190  */
23191 
23192  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
23193  // overridden in every class by *generated* implementation
23195  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
23196  // MS: 06/28/02 container of names of variables or container indices
23197  // used used in the traversal to access AST successor nodes
23198  // overridden in every class by *generated* implementation
23201  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
23202 
23203  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
23204  // than all the vector copies. The implementation for these functions is generated for each class.
23206  virtual size_t get_numberOfTraversalSuccessors() override;
23208  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
23210  virtual size_t get_childIndex(SgNode *child) override;
23211 
23212 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
23213  // MS: 08/16/2002 method for generating RTI information
23215  virtual RTIReturnType roseRTI() override;
23216 #endif
23217  /* */
23218 
23219 
23220 
23221  /* name Deprecated Functions
23222  \brief Deprecated functions ... incomplete-documentation
23223 
23224  These functions have been deprecated from use.
23225  */
23226  /* */
23227 
23229  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
23230 
23231  // JJW (10/16/2008): Changed to a single function in Node.code, and put
23232  // getVariant() in #if 0 block to prevent confusing Doxygen
23233 #if 0
23234 
23235  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
23237  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
23238 #endif
23239  /* */
23240 
23241 
23242 
23243 
23244  public:
23245  /* name Traversal Support Functions
23246  \brief Traversal support functions ... incomplete-documentation
23247 
23248  These functions have been made public as part of the design, but they are suggested for internal use
23249  or by particularly knowledgable users for specialized tools or applications.
23250  */
23251  /* */
23252 
23253  // DQ (11/26/2005): Support for visitor pattern mechanims
23254  // (inferior to ROSE traversal mechanism, experimental).
23258 
23259  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
23261  virtual void accept (ROSE_VisitorPattern & visitor) override;
23262 
23263  // DQ (12/26/2005): Support for traversal based on the memory pool
23266  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
23267 
23271 
23272  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
23273  // This traversal helps support internal tools that call static member functions.
23274  // note: this function operates on the memory pools.
23277  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
23278  /* */
23279 
23280 
23281  public:
23282  /* name Memory Allocation Functions
23283  \brief Memory allocations functions ... incomplete-documentation
23284 
23285  These functions have been made public as part of the design, but they are suggested for internal use
23286  or by particularly knowledgable users for specialized tools or applications.
23287  */
23288  /* */
23289 
23300  virtual bool isInMemoryPool() override;
23301 
23312  virtual void checkDataMemberPointersIfInMemoryPool() override;
23313 
23314  // DQ (4/30/2006): Modified to be a const function.
23329  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
23330 
23340  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
23341 
23353  virtual long getChildIndex( SgNode* childNode ) const override;
23354 
23355  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
23356  // comment here (changed to be a C style comment and not be a doxygen comment).
23357  /* \brief Constructor for use by AST File I/O Mechanism
23358 
23359  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
23360  which obtained via fast binary file I/O from disk.
23361  */
23362  // SgSourceFile( SgSourceFileStorageClass& source );
23363 
23364 
23365 
23366 
23367 
23368  // JH (10/24/2005): methods added to support the ast file IO
23369  private:
23370 
23371  /* name AST Memory Allocation Support Functions
23372  \brief Memory allocations support....
23373 
23374  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
23375  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
23376  and support the AST File I/O Mechanism.
23377  */
23378  /* */
23379 
23380  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
23381  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
23382  that I use the same type everywhere, if any changes are made. THe second one declares the type
23383  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
23384  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
23385  a correspinding one in the AST_FILE_IO class!
23386  */
23387  // DQ (9/2/2015): This typedef is no longer used, we can't define the
23388  // comment here (changed to be a C style comment and not be a doxygen comment).
23389  /* \brief Typedef used for low level memory access.
23390  */
23391  // typedef unsigned char* TestType;
23392 
23393  // DQ (9/2/2015): This typedef is no longer used, we can't define the
23394  // comment here (changed to be a C style comment and not be a doxygen comment).
23395  /* \brief Typedef used to hold memory addresses as values.
23396  */
23397  // typedef unsigned long AddressType;
23398 
23399 
23400 
23401  // necessary, to have direct access to the p_freepointer and the private methods !
23403  friend class AST_FILE_IO;
23404 
23406  friend class SgSourceFileStorageClass;
23407 
23409  friend class AstSpecificDataManagingClass;
23410 
23412  friend class AstSpecificDataManagingClassStorageClass;
23413 
23414  public:
23416  SgSourceFile( const SgSourceFileStorageClass& source );
23417 
23418  // private: // JJW hack
23419  /*
23420  name AST Memory Allocation Support Variables
23421  Memory allocations support variables
23422 
23423  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
23424  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
23425  and support the AST File I/O Mechanism.
23426  */
23427  /* */
23428 
23429  public:
23430 
23431  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
23432  // to current node (so that it will work cleanly with build functions to specify patterns).
23433  // virtual SgNode* addRegExpAttribute();
23440 
23441 // *** COMMON CODE SECTION ENDS HERE ***
23442 
23443 
23444 // End of memberFunctionString
23445 // Start of memberFunctionString
23446 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
23447 
23448  // the generated cast function
23449  // friend ROSE_DLL_API SgSourceFile* isSgSourceFile ( SgNode* s );
23450 
23451  typedef SgFile base_node_type;
23452 
23453 
23454 // End of memberFunctionString
23455 
23456  public:
23457  SgGlobal* get_globalScope() const;
23458  void set_globalScope(SgGlobal* globalScope);
23459 
23460  public:
23461  const SgModuleStatementPtrList& get_module_list() const;
23462  SgModuleStatementPtrList& get_module_list();
23463 
23464  public:
23465  const SgTokenPtrList& get_token_list() const;
23466  SgTokenPtrList& get_token_list();
23467 
23468  public:
23469  SgGlobal* get_temp_holding_scope() const;
23470  void set_temp_holding_scope(SgGlobal* temp_holding_scope);
23471 
23472  public:
23473  bool get_isHeaderFile() const;
23474  void set_isHeaderFile(bool isHeaderFile);
23475 
23476  public:
23477  bool get_isHeaderFileIncludedMoreThanOnce() const;
23478  void set_isHeaderFileIncludedMoreThanOnce(bool isHeaderFileIncludedMoreThanOnce);
23479 
23480  public:
23481  SgHeaderFileReport* get_headerFileReport() const;
23482  void set_headerFileReport(SgHeaderFileReport* headerFileReport);
23483 
23484  public:
23485  const SgStringList& get_extraIncludeDirectorySpecifierBeforeList() const;
23486  SgStringList& get_extraIncludeDirectorySpecifierBeforeList();
23487 
23488  public:
23489  const SgStringList& get_extraIncludeDirectorySpecifierAfterList() const;
23490  SgStringList& get_extraIncludeDirectorySpecifierAfterList();
23491 
23492  public:
23493  SgIncludeFile* get_associated_include_file() const;
23494  void set_associated_include_file(SgIncludeFile* associated_include_file);
23495 
23496  public:
23497  bool get_processedToIncludeCppDirectivesAndComments() const;
23498  void set_processedToIncludeCppDirectivesAndComments(bool processedToIncludeCppDirectivesAndComments);
23499 
23500  public:
23501  const SgNodePtrList& get_extra_nodes_for_namequal_init() const;
23502  SgNodePtrList& get_extra_nodes_for_namequal_init();
23503 
23504  public:
23505  bool get_isDynamicLibrary() const;
23506  void set_isDynamicLibrary(bool isDynamicLibrary);
23507 
23508 
23509  public:
23510  virtual ~SgSourceFile();
23511 
23512 
23513  public:
23514  SgSourceFile();
23515 
23516  protected:
23517 // Start of memberFunctionString
23518 SgGlobal* p_globalScope;
23519 
23520 // End of memberFunctionString
23521 // Start of memberFunctionString
23522 SgModuleStatementPtrList p_module_list;
23523 
23524 // End of memberFunctionString
23525 // Start of memberFunctionString
23526 SgTokenPtrList p_token_list;
23527 
23528 // End of memberFunctionString
23529 // Start of memberFunctionString
23530 SgGlobal* p_temp_holding_scope;
23531 
23532 // End of memberFunctionString
23533 // Start of memberFunctionString
23534 bool p_isHeaderFile;
23535 
23536 // End of memberFunctionString
23537 // Start of memberFunctionString
23538 bool p_isHeaderFileIncludedMoreThanOnce;
23539 
23540 // End of memberFunctionString
23541 // Start of memberFunctionString
23542 SgHeaderFileReport* p_headerFileReport;
23543 
23544 // End of memberFunctionString
23545 // Start of memberFunctionString
23546 SgStringList p_extraIncludeDirectorySpecifierBeforeList;
23547 
23548 // End of memberFunctionString
23549 // Start of memberFunctionString
23550 SgStringList p_extraIncludeDirectorySpecifierAfterList;
23551 
23552 // End of memberFunctionString
23553 // Start of memberFunctionString
23554 SgIncludeFile* p_associated_include_file;
23555 
23556 // End of memberFunctionString
23557 // Start of memberFunctionString
23558 bool p_processedToIncludeCppDirectivesAndComments;
23559 
23560 // End of memberFunctionString
23561 // Start of memberFunctionString
23562 SgNodePtrList p_extra_nodes_for_namequal_init;
23563 
23564 // End of memberFunctionString
23565 // Start of memberFunctionString
23566 bool p_isDynamicLibrary;
23567 
23568 // End of memberFunctionString
23569 
23570 
23571 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
23572 
23573 
23574  };
23575 #endif
23576 
23577 // postdeclarations for SgSourceFile
23578 
23579 /* #line 23580 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
23580 
23581 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
23582 
23583 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
23584 
23585 
23586 /* #line 23587 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
23587 
23588 
23589 
23590 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
23591 
23592 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
23593 // This code is automatically generated for each
23594 // terminal and non-terminal within the defined
23595 // grammar. There is a simple way to change the
23596 // code to fix bugs etc. See the ROSE README file
23597 // for directions.
23598 
23599 // tps: (02/22/2010): Adding DLL export requirements
23600 #include "rosedll.h"
23601 
23602 // predeclarations for SgUnknownFile
23603 
23604 /* #line 23605 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
23605 
23606 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
23607 
23608 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
23609 
23610 #if 1
23611 // Class Definition for SgUnknownFile
23612 class ROSE_DLL_API SgUnknownFile : public SgFile
23613  {
23614  public:
23615 
23616 
23617 /* #line 23618 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
23618 
23619  virtual SgNode* copy ( SgCopyHelp& help) const override;
23620 // Start of memberFunctionString
23621 /* #line 6642 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
23622 
23623  public:
23624  SgUnknownFile(std::vector<std::string>& argv, SgProject* project = NULL);
23625 
23626  virtual int callFrontEnd() override;
23627  virtual void doSetupForConstructor(const std::vector<std::string>& argv, SgProject* project) override;
23628 
23629 
23630 
23631 // End of memberFunctionString
23632 // Start of memberFunctionString
23633 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
23634 
23635 // *** COMMON CODE SECTION BEGINS HERE ***
23636 
23637  public:
23638 
23639  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
23640  // and not required which is required to match the other aspects of the copy mechanism code generation.
23641  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
23642  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
23643  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
23644  // virtual SgNode* copy ( const SgCopyHelp & help) const;
23645 
23647  virtual std::string class_name() const override;
23648 
23650  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
23651 
23653  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
23654  // static const VariantT static_variant = V_SgUnknownFile;
23655  enum { static_variant = V_SgUnknownFile };
23656 
23657  /* the generated cast function */
23659  ROSE_DLL_API friend SgUnknownFile* isSgUnknownFile( SgNode * s );
23660 
23662  ROSE_DLL_API friend const SgUnknownFile* isSgUnknownFile( const SgNode * s );
23663 
23664  // ******************************************
23665  // * Memory Pool / New / Delete
23666  // ******************************************
23667 
23668  public:
23670  static const unsigned pool_size; //
23672  static std::vector<unsigned char *> pools; //
23674  static SgUnknownFile * next_node; //
23675 
23677  static unsigned long initializeStorageClassArray(SgUnknownFileStorageClass *); //
23678 
23680  static void clearMemoryPool(); //
23681  static void deleteMemoryPool(); //
23682 
23684  static void extendMemoryPoolForFileIO(); //
23685 
23687  static SgUnknownFile * getPointerFromGlobalIndex(unsigned long); //
23689  static SgUnknownFile * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
23690 
23692  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
23694  static void resetValidFreepointers(); //
23696  static unsigned long getNumberOfLastValidPointer(); //
23697 
23698 
23699 #if defined(INLINE_FUNCTIONS)
23700 
23701  inline void *operator new (size_t size);
23702 #else
23703 
23704  void *operator new (size_t size);
23705 #endif
23706 
23707  void operator delete (void* pointer, size_t size);
23708 
23709  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
23710  void operator delete (void* pointer)
23711  {
23712  // This is the generated delete operator...
23713  SgUnknownFile::operator delete (pointer,sizeof(SgUnknownFile));
23714  }
23715 
23717  static size_t numberOfNodes();
23718 
23720  static size_t memoryUsage();
23721 
23722  // End of scope which started in IR nodes specific code
23723  /* */
23724 
23725  /* name Internal Functions
23726  \brief Internal functions ... incomplete-documentation
23727 
23728  These functions have been made public as part of the design, but they are suggested for internal use
23729  or by particularly knowledgeable users for specialized tools or applications.
23730 
23731  \internal We could not make these private because they are required by user for special purposes. And
23732  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
23733 
23734  */
23735 
23736  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
23737  // overridden in every class by *generated* implementation
23739  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
23740  // MS: 06/28/02 container of names of variables or container indices
23741  // used used in the traversal to access AST successor nodes
23742  // overridden in every class by *generated* implementation
23745  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
23746 
23747  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
23748  // than all the vector copies. The implementation for these functions is generated for each class.
23750  virtual size_t get_numberOfTraversalSuccessors() override;
23752  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
23754  virtual size_t get_childIndex(SgNode *child) override;
23755 
23756 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
23757  // MS: 08/16/2002 method for generating RTI information
23759  virtual RTIReturnType roseRTI() override;
23760 #endif
23761  /* */
23762 
23763 
23764 
23765  /* name Deprecated Functions
23766  \brief Deprecated functions ... incomplete-documentation
23767 
23768  These functions have been deprecated from use.
23769  */
23770  /* */
23771 
23773  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
23774 
23775  // JJW (10/16/2008): Changed to a single function in Node.code, and put
23776  // getVariant() in #if 0 block to prevent confusing Doxygen
23777 #if 0
23778 
23779  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
23781  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
23782 #endif
23783  /* */
23784 
23785 
23786 
23787 
23788  public:
23789  /* name Traversal Support Functions
23790  \brief Traversal support functions ... incomplete-documentation
23791 
23792  These functions have been made public as part of the design, but they are suggested for internal use
23793  or by particularly knowledgable users for specialized tools or applications.
23794  */
23795  /* */
23796 
23797  // DQ (11/26/2005): Support for visitor pattern mechanims
23798  // (inferior to ROSE traversal mechanism, experimental).
23802 
23803  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
23805  virtual void accept (ROSE_VisitorPattern & visitor) override;
23806 
23807  // DQ (12/26/2005): Support for traversal based on the memory pool
23810  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
23811 
23815 
23816  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
23817  // This traversal helps support internal tools that call static member functions.
23818  // note: this function operates on the memory pools.
23821  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
23822  /* */
23823 
23824 
23825  public:
23826  /* name Memory Allocation Functions
23827  \brief Memory allocations functions ... incomplete-documentation
23828 
23829  These functions have been made public as part of the design, but they are suggested for internal use
23830  or by particularly knowledgable users for specialized tools or applications.
23831  */
23832  /* */
23833 
23844  virtual bool isInMemoryPool() override;
23845 
23856  virtual void checkDataMemberPointersIfInMemoryPool() override;
23857 
23858  // DQ (4/30/2006): Modified to be a const function.
23873  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
23874 
23884  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
23885 
23897  virtual long getChildIndex( SgNode* childNode ) const override;
23898 
23899  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
23900  // comment here (changed to be a C style comment and not be a doxygen comment).
23901  /* \brief Constructor for use by AST File I/O Mechanism
23902 
23903  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
23904  which obtained via fast binary file I/O from disk.
23905  */
23906  // SgUnknownFile( SgUnknownFileStorageClass& source );
23907 
23908 
23909 
23910 
23911 
23912  // JH (10/24/2005): methods added to support the ast file IO
23913  private:
23914 
23915  /* name AST Memory Allocation Support Functions
23916  \brief Memory allocations support....
23917 
23918  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
23919  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
23920  and support the AST File I/O Mechanism.
23921  */
23922  /* */
23923 
23924  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
23925  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
23926  that I use the same type everywhere, if any changes are made. THe second one declares the type
23927  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
23928  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
23929  a correspinding one in the AST_FILE_IO class!
23930  */
23931  // DQ (9/2/2015): This typedef is no longer used, we can't define the
23932  // comment here (changed to be a C style comment and not be a doxygen comment).
23933  /* \brief Typedef used for low level memory access.
23934  */
23935  // typedef unsigned char* TestType;
23936 
23937  // DQ (9/2/2015): This typedef is no longer used, we can't define the
23938  // comment here (changed to be a C style comment and not be a doxygen comment).
23939  /* \brief Typedef used to hold memory addresses as values.
23940  */
23941  // typedef unsigned long AddressType;
23942 
23943 
23944 
23945  // necessary, to have direct access to the p_freepointer and the private methods !
23947  friend class AST_FILE_IO;
23948 
23950  friend class SgUnknownFileStorageClass;
23951 
23953  friend class AstSpecificDataManagingClass;
23954 
23956  friend class AstSpecificDataManagingClassStorageClass;
23957 
23958  public:
23960  SgUnknownFile( const SgUnknownFileStorageClass& source );
23961 
23962  // private: // JJW hack
23963  /*
23964  name AST Memory Allocation Support Variables
23965  Memory allocations support variables
23966 
23967  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
23968  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
23969  and support the AST File I/O Mechanism.
23970  */
23971  /* */
23972 
23973  public:
23974 
23975  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
23976  // to current node (so that it will work cleanly with build functions to specify patterns).
23977  // virtual SgNode* addRegExpAttribute();
23984 
23985 // *** COMMON CODE SECTION ENDS HERE ***
23986 
23987 
23988 // End of memberFunctionString
23989 // Start of memberFunctionString
23990 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
23991 
23992  // the generated cast function
23993  // friend ROSE_DLL_API SgUnknownFile* isSgUnknownFile ( SgNode* s );
23994 
23995  typedef SgFile base_node_type;
23996 
23997 
23998 // End of memberFunctionString
23999 
24000  public:
24001  SgGlobal* get_globalScope() const;
24002  void set_globalScope(SgGlobal* globalScope);
24003 
24004 
24005  public:
24006  virtual ~SgUnknownFile();
24007 
24008 
24009  public:
24010  SgUnknownFile();
24011 
24012  protected:
24013 // Start of memberFunctionString
24014 SgGlobal* p_globalScope;
24015 
24016 // End of memberFunctionString
24017 
24018 
24019 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
24020 
24021 
24022  };
24023 #endif
24024 
24025 // postdeclarations for SgUnknownFile
24026 
24027 /* #line 24028 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
24028 
24029 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
24030 
24031 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
24032 
24033 
24034 /* #line 24035 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
24035 
24036 
24037 
24038 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
24039 
24040 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
24041 // This code is automatically generated for each
24042 // terminal and non-terminal within the defined
24043 // grammar. There is a simple way to change the
24044 // code to fix bugs etc. See the ROSE README file
24045 // for directions.
24046 
24047 // tps: (02/22/2010): Adding DLL export requirements
24048 #include "rosedll.h"
24049 
24050 // predeclarations for SgProject
24051 
24052 /* #line 24053 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
24053 
24054 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
24055 
24056 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
24057 
24058 #if 1
24059 // Class Definition for SgProject
24060 class ROSE_DLL_API SgProject : public SgSupport
24061  {
24062  public:
24063 
24064 
24065 /* #line 24066 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
24066 
24067  virtual SgNode* copy ( SgCopyHelp& help) const override;
24068 // Start of memberFunctionString
24069 /* #line 6677 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
24070 
24071 
24072 
24075  {
24076  e_unknown = 0,
24077  e_default = 1,
24078  e_none = 2,
24079  e_used = 3,
24080  e_all = 4,
24081  e_local = 5,
24082  e_last
24083  };
24084 
24086  SgProject ( const std::vector<std::string>& argv, bool frontendConstantFolding = false);
24087  SgProject ( int argc, char** argv, bool frontendConstantFolding = false);
24088 
24089 #if 0
24090  // DQ (10/16/2005): Depreicated a long time ago, removed it now!
24092  // SgProject ( int &argc, char** argv, int & errorCode);
24093  SgProject ( int &argc, char** argv, int & errorCode) ROSE_DEPRECATED_FUNCTION;
24094 #endif
24095 
24096  // DQ (4/10/2017): Adding support for use of Saywer for command line handling.
24098  std::vector<std::string> parseCommandLine(std::vector<std::string> argv);
24099 
24100  // DQ (4/10/2017): Adding support for use of Saywer for command line handling.
24101  // Sawyer::CommandLine::SwitchGroup commandLineSwitches();
24102 
24104  Sawyer::CommandLine::SwitchGroup frontendAllSwitches();
24105  Sawyer::CommandLine::SwitchGroup backendAllSwitches();
24106 
24108  void processCommandLine(const std::vector<std::string>& argv);
24109  void processCommandLine(int argc, char** argv) { processCommandLine(std::vector<std::string>(argv, argv + argc)); }
24110 
24112  int parse();
24113 
24116  int parse (const std::vector<std::string>& argv);
24117  int parse (int argc, char** argv) { return parse(std::vector<std::string>(argv, argv + argc)); }
24118 
24119  public:
24120 
24122  SgProject();
24123 
24125  SgProject( const SgProject & project );
24126 
24128  // ~SgProject();
24129 
24131  int numberOfFiles() const;
24132 
24134  int numberOfDirectories() const;
24135 
24138  SgFile & get_file ( int i ) const ROSE_DEPRECATED_FUNCTION;
24139 
24142  void set_file ( SgFile & file ) ROSE_DEPRECATED_FUNCTION;
24143 
24147  SgFilePtrList get_files() const;
24148  SgFilePtrList get_files_with_errors() const;
24149  SgFilePtrList get_files_without_errors() const;
24150 
24152  SgFile* operator[]( unsigned int i );
24153 
24155  SgFile* operator[]( std::string filename );
24156 
24158  // void unparse();
24159  void unparse ( UnparseFormatHelp *unparseFormatHelp = NULL, UnparseDelegate* unparseDelegate = NULL );
24160 
24161  // DQ (5/8/2010): Added support for resetting the source position information.
24162  void resetSourcePositionToGeneratedCode ( UnparseFormatHelp *unparseFormatHelp = NULL );
24163 
24164  // DQ (10/14/2010): Removing reference to macros defined in rose_config.h.
24165  // DQ (8/29/2005): Added support for classification of back-end compilers (independent of the name invoked to execute them)
24167  // BP : 11/13/2001, modified to take compiler name
24168  // int compileOutput( char *compilerName = CXX_COMPILER_NAME );
24169  // int compileOutput( const std::string& compilerName = BACKEND_CXX_COMPILER_NAME_WITH_PATH );
24170  int compileOutput();
24171  int RunFrontend();
24172 
24173  // DQ (10/14/2010): Removing reference to macros defined in rose_config.h.
24174  // DQ (8/29/2005): Added support for classification of back-end compilers (independent of the name invoked to execute them)
24176  // int link ( std::string linkerName = CXX_COMPILER_NAME );
24177  // int link ( std::string linkerName = BACKEND_CXX_COMPILER_NAME_WITH_PATH );
24178  int link ( std::string linkerName );
24179 
24180  // DQ (10/14/2010): Removing reference to macros defined in rose_config.h.
24181  // DQ (8/29/2005): Added support for classification of back-end compilers (independent of the name invoked to execute them)
24183  // int link ( int argc, char** argv, std::string linkerName = CXX_COMPILER_NAME );
24184  // int link ( const std::vector<std::string>& argv, std::string linkerName = BACKEND_CXX_COMPILER_NAME_WITH_PATH );
24185  int link ( const std::vector<std::string>& argv, std::string linkerName );
24186 
24187  // function to generate PDF output file for AST
24188  // void outputPDF();
24189 
24191  static int p_verbose;
24192 
24193  // DQ (4/4/2020): Adding support for unparse headers feature specific diagnostics.
24196 
24198  // static int project_argc;
24199  // static char** project_argv;
24200 
24201  // DQ (9/2/2008): Removed this redundant function
24202  // DQ: Get list of file names in project (generated from the list of SgFile nodes)
24203  // I think this is redundant with the other lists of filenames!
24204  // Rose_STL_Container<std::string> getFileNames() const;
24205 
24207  Rose_STL_Container<std::string> getAbsolutePathFileNames() const;
24208 
24212  static int get_verbose (void);
24213  static void set_verbose (int);
24214 
24215  // DQ (4/4/2020): Added debugging support for feature specific unparsing of header files.
24216  static int get_unparseHeaderFilesDebug (void);
24217  static void set_unparseHeaderFilesDebug (int);
24218 
24219  // DQ: bool values on the SgFile nodes which can be queried on the SgProject
24220  // nodes (must be the same across all SgFile nodes in the project).
24221  bool get_skip_translation_from_edg_ast_to_rose_ast (void) const;
24222  bool get_skip_transformation (void) const;
24223  bool get_skip_unparse (void) const;
24224  bool get_useBackendOnly (void) const;
24225 
24226  // DQ (4/6/2010): Added to support parsing only option.
24227  bool get_exit_after_parser(void) const;
24228 
24229  // DQ (12/28/2010): Added to support skipping compilation in backendCompilesUsingOriginalInputFile()
24230  bool get_skipfinalCompileStep (void) const;
24231 
24232  void set_C_only (bool value);
24233  bool get_C_only (void) const;
24234 
24235  bool get_C89_only (void) const;
24236  bool get_C89_gnu_only (void) const;
24237  bool get_C90_only (void) const;
24238  bool get_C90_gnu_only (void) const;
24239  bool get_C99_only (void) const;
24240  bool get_C99_gnu_only (void) const;
24241  bool get_C11_only (void) const;
24242  bool get_C11_gnu_only (void) const;
24243  bool get_C14_only (void) const;
24244  bool get_C14_gnu_only (void) const;
24245 
24246  void set_Cxx_only (bool value);
24247  bool get_Cxx_only (void) const;
24248 
24249  bool get_Cxx98_only (void) const;
24250  bool get_Cxx98_gnu_only (void) const;
24251  bool get_Cxx03_only (void) const;
24252  bool get_Cxx03_gnu_only (void) const;
24253  bool get_Cxx11_only (void) const;
24254  bool get_Cxx11_gnu_only (void) const;
24255  bool get_Cxx14_only (void) const;
24256  bool get_Cxx14_gnu_only (void) const;
24257  bool get_Cxx17_only (void) const;
24258  bool get_Cxx17_gnu_only (void) const;
24259 
24260  void set_Fortran_only (bool value);
24261  bool get_Fortran_only (void) const;
24262 
24263  bool get_F77_only (void) const;
24264  bool get_F90_only (void) const;
24265  bool get_F95_only (void) const;
24266  bool get_F2003_only (void) const;
24267  bool get_F2008_only (void) const;
24268  bool get_F2018_only (void) const;
24269  bool get_CoArrayFortran_only (void) const;
24270 
24271 
24272  std::list<std::string> get_Java_classpath (void) const;
24273  void set_Java_classpath (std::list<std::string> param);
24274  std::list<std::string> get_Java_sourcepath (void) const;
24275  void set_Java_sourcepath (std::list<std::string> param);
24276  std::string get_Java_destdir (void) const;
24277  void set_Java_destdir (std::string param);
24278  std::string get_Java_source_destdir (void) const;
24279  void set_Java_source_destdir (std::string param);
24280 
24281  void display ( const std::string & label ) const;
24282 
24283  void initialization();
24284 
24285  friend std::ostream & operator<< ( std::ostream & os, const Rose_STL_Container<std::string> & l );
24286 
24287 #if ALT_FIXUP_COPY
24288  // DQ (11/7/2007): These need to be called separately (see documentation)
24289  virtual void fixupCopy_scopes (SgNode* copy, SgCopyHelp & help) const override;
24290  virtual void fixupCopy_symbols (SgNode* copy, SgCopyHelp & help) const override;
24291  virtual void fixupCopy_references (SgNode* copy, SgCopyHelp & help) const override;
24292 #else
24293  // DQ (10/5/2007): Added fixup function to set scopes not set properly by the ROSETTA generated copy!
24294  virtual void fixupCopy(SgNode* copy, SgCopyHelp & help) const;
24295 #endif
24296 
24297  void skipfinalCompileStep(bool value);
24298 
24299  SgStringList & get_includePathList();
24300  const SgStringList & get_includePathList() const;
24301  void set_includePathList(const SgStringList & includePathList);
24302 
24303  SgStringList & get_excludePathList();
24304  const SgStringList & get_excludePathList() const;
24305  void set_excludePathList(const SgStringList & excludePathList);
24306 
24307  SgStringList & get_includeFileList();
24308  const SgStringList & get_includeFileList() const;
24309  void set_includeFileList(const SgStringList & includeFileList);
24310 
24311  SgStringList & get_excludeFileList();
24312  const SgStringList & get_excludeFileList() const;
24313  void set_excludeFileList(const SgStringList & excludeFileList);
24314 
24315  // negara1 (07/29/2011)
24316  std::string findIncludedFile(PreprocessingInfo* preprocessingInfo);
24317 
24318  int get_detect_dangling_pointers(void) const;
24319 
24320 #if ROSE_USING_OLD_PROJECT_FILE_LIST_SUPPORT
24321 #else
24322  // DQ (1/21/2010): In this case we want to support the previous interface so that we can transition easily.
24323  SgFilePtrList & get_fileList() const;
24324  void set_fileList(SgFilePtrList & fileList);
24325 #endif
24326 
24327  // DQ (8/3/2018): Added support for evaluation of options at the project level (which are normally associated with files).
24328  bool get_unparse_tokens (void) const;
24329  // void set_unparse_tokens (bool value);
24330 
24331 
24332 
24333 
24334 
24335 // End of memberFunctionString
24336 // Start of memberFunctionString
24337 /* #line 2317 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
24338 
24339 
24340  /* name Persistant Attribute Mechanism
24341 
24342  This is the persistant attribute mechanism for attaching attributes to IR nodes across
24343  multiple passes. Note that these attributes are persistant in that they are preserved
24344  if the AST is written out to a file and read in from a file. However, virtual function
24345  in the user-defined class derived from the AstAttribute must be defined for the attribute
24346  to be defined across the boundary of File I/O (simple pack and unpack functions). More
24347  sophisticated mechanisms are available within the AstAttributeMechanism object
24348  (e.g iterating though attributes, etc; get_attributeMechanism() is available if direct
24349  access is required, however mostly only internal tools use this lower level support).
24350 
24351  \internal This used to be a public data member, but has been changed to be a protected
24352  pointer instead. The functional interface of the AstAttributeMechanism is presevered
24353  but some of the names and the syntax for calling the interface have changed. The
24354  pointer to the AstAttributeMechanism is now generated by ROSETTA.
24355  */
24356  /* */
24358  virtual void addNewAttribute(std::string s,AstAttribute* a) override;
24360  virtual AstAttribute* getAttribute(std::string s) const override;
24362  virtual void updateAttribute(std::string s,AstAttribute* a) override; // formerly called: replace in AstAttributeMechanism
24367  virtual void setAttribute(std::string s,AstAttribute* a) override;
24369  virtual void removeAttribute(std::string s) override;
24371  virtual bool attributeExists(std::string s) const override;
24373  virtual int numberOfAttributes() const override;
24374 
24389  /* */
24390 
24391 
24392 
24393 
24394 // End of memberFunctionString
24395 // Start of memberFunctionString
24396 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
24397 
24398 // *** COMMON CODE SECTION BEGINS HERE ***
24399 
24400  public:
24401 
24402  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
24403  // and not required which is required to match the other aspects of the copy mechanism code generation.
24404  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
24405  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
24406  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
24407  // virtual SgNode* copy ( const SgCopyHelp & help) const;
24408 
24410  virtual std::string class_name() const override;
24411 
24413  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
24414 
24416  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
24417  // static const VariantT static_variant = V_SgProject;
24418  enum { static_variant = V_SgProject };
24419 
24420  /* the generated cast function */
24422  ROSE_DLL_API friend SgProject* isSgProject( SgNode * s );
24423 
24425  ROSE_DLL_API friend const SgProject* isSgProject( const SgNode * s );
24426 
24427  // ******************************************
24428  // * Memory Pool / New / Delete
24429  // ******************************************
24430 
24431  public:
24433  static const unsigned pool_size; //
24435  static std::vector<unsigned char *> pools; //
24437  static SgProject * next_node; //
24438 
24440  static unsigned long initializeStorageClassArray(SgProjectStorageClass *); //
24441 
24443  static void clearMemoryPool(); //
24444  static void deleteMemoryPool(); //
24445 
24447  static void extendMemoryPoolForFileIO(); //
24448 
24450  static SgProject * getPointerFromGlobalIndex(unsigned long); //
24452  static SgProject * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
24453 
24455  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
24457  static void resetValidFreepointers(); //
24459  static unsigned long getNumberOfLastValidPointer(); //
24460 
24461 
24462 #if defined(INLINE_FUNCTIONS)
24463 
24464  inline void *operator new (size_t size);
24465 #else
24466 
24467  void *operator new (size_t size);
24468 #endif
24469 
24470  void operator delete (void* pointer, size_t size);
24471 
24472  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
24473  void operator delete (void* pointer)
24474  {
24475  // This is the generated delete operator...
24476  SgProject::operator delete (pointer,sizeof(SgProject));
24477  }
24478 
24480  static size_t numberOfNodes();
24481 
24483  static size_t memoryUsage();
24484 
24485  // End of scope which started in IR nodes specific code
24486  /* */
24487 
24488  /* name Internal Functions
24489  \brief Internal functions ... incomplete-documentation
24490 
24491  These functions have been made public as part of the design, but they are suggested for internal use
24492  or by particularly knowledgeable users for specialized tools or applications.
24493 
24494  \internal We could not make these private because they are required by user for special purposes. And
24495  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
24496 
24497  */
24498 
24499  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
24500  // overridden in every class by *generated* implementation
24502  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
24503  // MS: 06/28/02 container of names of variables or container indices
24504  // used used in the traversal to access AST successor nodes
24505  // overridden in every class by *generated* implementation
24508  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
24509 
24510  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
24511  // than all the vector copies. The implementation for these functions is generated for each class.
24513  virtual size_t get_numberOfTraversalSuccessors() override;
24515  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
24517  virtual size_t get_childIndex(SgNode *child) override;
24518 
24519 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
24520  // MS: 08/16/2002 method for generating RTI information
24522  virtual RTIReturnType roseRTI() override;
24523 #endif
24524  /* */
24525 
24526 
24527 
24528  /* name Deprecated Functions
24529  \brief Deprecated functions ... incomplete-documentation
24530 
24531  These functions have been deprecated from use.
24532  */
24533  /* */
24534 
24536  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
24537 
24538  // JJW (10/16/2008): Changed to a single function in Node.code, and put
24539  // getVariant() in #if 0 block to prevent confusing Doxygen
24540 #if 0
24541 
24542  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
24544  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
24545 #endif
24546  /* */
24547 
24548 
24549 
24550 
24551  public:
24552  /* name Traversal Support Functions
24553  \brief Traversal support functions ... incomplete-documentation
24554 
24555  These functions have been made public as part of the design, but they are suggested for internal use
24556  or by particularly knowledgable users for specialized tools or applications.
24557  */
24558  /* */
24559 
24560  // DQ (11/26/2005): Support for visitor pattern mechanims
24561  // (inferior to ROSE traversal mechanism, experimental).
24565 
24566  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
24568  virtual void accept (ROSE_VisitorPattern & visitor) override;
24569 
24570  // DQ (12/26/2005): Support for traversal based on the memory pool
24573  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
24574 
24578 
24579  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
24580  // This traversal helps support internal tools that call static member functions.
24581  // note: this function operates on the memory pools.
24584  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
24585  /* */
24586 
24587 
24588  public:
24589  /* name Memory Allocation Functions
24590  \brief Memory allocations functions ... incomplete-documentation
24591 
24592  These functions have been made public as part of the design, but they are suggested for internal use
24593  or by particularly knowledgable users for specialized tools or applications.
24594  */
24595  /* */
24596 
24607  virtual bool isInMemoryPool() override;
24608 
24619  virtual void checkDataMemberPointersIfInMemoryPool() override;
24620 
24621  // DQ (4/30/2006): Modified to be a const function.
24636  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
24637 
24647  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
24648 
24660  virtual long getChildIndex( SgNode* childNode ) const override;
24661 
24662  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
24663  // comment here (changed to be a C style comment and not be a doxygen comment).
24664  /* \brief Constructor for use by AST File I/O Mechanism
24665 
24666  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
24667  which obtained via fast binary file I/O from disk.
24668  */
24669  // SgProject( SgProjectStorageClass& source );
24670 
24671 
24672 
24673 
24674 
24675  // JH (10/24/2005): methods added to support the ast file IO
24676  private:
24677 
24678  /* name AST Memory Allocation Support Functions
24679  \brief Memory allocations support....
24680 
24681  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
24682  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
24683  and support the AST File I/O Mechanism.
24684  */
24685  /* */
24686 
24687  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
24688  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
24689  that I use the same type everywhere, if any changes are made. THe second one declares the type
24690  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
24691  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
24692  a correspinding one in the AST_FILE_IO class!
24693  */
24694  // DQ (9/2/2015): This typedef is no longer used, we can't define the
24695  // comment here (changed to be a C style comment and not be a doxygen comment).
24696  /* \brief Typedef used for low level memory access.
24697  */
24698  // typedef unsigned char* TestType;
24699 
24700  // DQ (9/2/2015): This typedef is no longer used, we can't define the
24701  // comment here (changed to be a C style comment and not be a doxygen comment).
24702  /* \brief Typedef used to hold memory addresses as values.
24703  */
24704  // typedef unsigned long AddressType;
24705 
24706 
24707 
24708  // necessary, to have direct access to the p_freepointer and the private methods !
24710  friend class AST_FILE_IO;
24711 
24713  friend class SgProjectStorageClass;
24714 
24716  friend class AstSpecificDataManagingClass;
24717 
24719  friend class AstSpecificDataManagingClassStorageClass;
24720 
24721  public:
24723  SgProject( const SgProjectStorageClass& source );
24724 
24725  // private: // JJW hack
24726  /*
24727  name AST Memory Allocation Support Variables
24728  Memory allocations support variables
24729 
24730  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
24731  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
24732  and support the AST File I/O Mechanism.
24733  */
24734  /* */
24735 
24736  public:
24737 
24738  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
24739  // to current node (so that it will work cleanly with build functions to specify patterns).
24740  // virtual SgNode* addRegExpAttribute();
24746  SgProject* addRegExpAttribute(std::string s, AstRegExAttribute* a);
24747 
24748 // *** COMMON CODE SECTION ENDS HERE ***
24749 
24750 
24751 // End of memberFunctionString
24752 // Start of memberFunctionString
24753 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
24754 
24755  // the generated cast function
24756  // friend ROSE_DLL_API SgProject* isSgProject ( SgNode* s );
24757 
24758  typedef SgSupport base_node_type;
24759 
24760 
24761 // End of memberFunctionString
24762 
24763  public:
24764  SgFileList* get_fileList_ptr() const;
24765  void set_fileList_ptr(SgFileList* fileList_ptr);
24766 
24767  public:
24768  SgStringList get_originalCommandLineArgumentList() const;
24769  void set_originalCommandLineArgumentList(SgStringList originalCommandLineArgumentList);
24770 
24771  public:
24772  int get_frontendErrorCode() const;
24773  void set_frontendErrorCode(int frontendErrorCode);
24774 
24775  public:
24776  int get_javacErrorCode() const;
24777  void set_javacErrorCode(int javacErrorCode);
24778 
24779  public:
24780  int get_ecjErrorCode() const;
24781  void set_ecjErrorCode(int ecjErrorCode);
24782 
24783  public:
24784  int get_midendErrorCode() const;
24785  void set_midendErrorCode(int midendErrorCode);
24786 
24787  public:
24788  int get_backendErrorCode() const;
24789  void set_backendErrorCode(int backendErrorCode);
24790 
24791  public:
24792  bool get_keep_going() const;
24793  void set_keep_going(bool keep_going);
24794 
24795  public:
24796  bool get_unparser__clobber_input_file() const;
24797  void set_unparser__clobber_input_file(bool unparser__clobber_input_file);
24798 
24799  public:
24800  std::string get_outputFileName() const;
24801  void set_outputFileName(std::string outputFileName);
24802 
24803  public:
24804  const SgStringList& get_sourceFileNameList() const;
24805  SgStringList& get_sourceFileNameList();
24806 
24807  public:
24808  const SgStringList& get_objectFileNameList() const;
24809  SgStringList& get_objectFileNameList();
24810 
24811  public:
24812  const SgStringList& get_libraryFileList() const;
24813  SgStringList& get_libraryFileList();
24814 
24815  public:
24816  const SgStringList& get_librarySpecifierList() const;
24817  SgStringList& get_librarySpecifierList();
24818 
24819  public:
24820  const SgStringList& get_libraryDirectorySpecifierList() const;
24821  SgStringList& get_libraryDirectorySpecifierList();
24822 
24823  public:
24824  const SgStringList& get_includeDirectorySpecifierList() const;
24825  SgStringList& get_includeDirectorySpecifierList();
24826 
24827  public:
24828  const SgStringList& get_macroSpecifierList() const;
24829  SgStringList& get_macroSpecifierList();
24830 
24831  public:
24832  const SgStringList& get_preincludeFileList() const;
24833  SgStringList& get_preincludeFileList();
24834 
24835  public:
24836  const SgStringList& get_preincludeDirectoryList() const;
24837  SgStringList& get_preincludeDirectoryList();
24838 
24839  public:
24840  bool get_compileOnly() const;
24841  void set_compileOnly(bool compileOnly);
24842 
24843  public:
24844  bool get_wave() const;
24845  void set_wave(bool wave);
24846 
24847  public:
24848  bool get_prelink() const;
24849  void set_prelink(bool prelink);
24850 
24851  public:
24852  SgProject::template_instantiation_enum get_template_instantiation_mode() const;
24853  void set_template_instantiation_mode(SgProject::template_instantiation_enum template_instantiation_mode);
24854 
24855  public:
24856  bool get_ast_merge() const;
24857  void set_ast_merge(bool ast_merge);
24858 
24859  public:
24860  std::string get_projectSpecificDatabaseFile() const;
24861  void set_projectSpecificDatabaseFile(std::string projectSpecificDatabaseFile);
24862 
24863  public:
24864  bool get_C_PreprocessorOnly() const;
24865  void set_C_PreprocessorOnly(bool C_PreprocessorOnly);
24866 
24867  public:
24868  AstAttributeMechanism* get_attributeMechanism() const override /* (getDataAccessFunctionPrototypeString) */;
24869  void set_attributeMechanism(AstAttributeMechanism* attributeMechanism) override /* (getDataAccessFunctionPrototypeString) */;
24870 
24871  public:
24872  std::string get_compilationPerformanceFile() const;
24873  void set_compilationPerformanceFile(std::string compilationPerformanceFile);
24874 
24875 
24876 
24877 
24878 
24879  public:
24880  bool get_binary_only() const;
24881  void set_binary_only(bool binary_only);
24882 
24883  public:
24884  SgDirectoryList* get_directoryList() const;
24885  void set_directoryList(SgDirectoryList* directoryList);
24886 
24887 
24888 
24889 
24890 
24891 
24892 
24893 
24894 
24895  public:
24896  std::list<std::string> get_Fortran_ofp_jvm_options() const;
24897  void set_Fortran_ofp_jvm_options(std::list<std::string> Fortran_ofp_jvm_options);
24898 
24899  public:
24900  bool get_openmp_linking() const;
24901  void set_openmp_linking(bool openmp_linking);
24902 
24903  public:
24904  std::list<std::string> get_Java_ecj_jvm_options() const;
24905  void set_Java_ecj_jvm_options(std::list<std::string> Java_ecj_jvm_options);
24906 
24907  public:
24908  bool get_Java_batch_mode() const;
24909  void set_Java_batch_mode(bool Java_batch_mode);
24910 
24911 
24912 
24913 
24914 
24915  public:
24916  bool get_addCppDirectivesToAST() const;
24917  void set_addCppDirectivesToAST(bool addCppDirectivesToAST);
24918 
24919  public:
24920  std::map<std::string, std::set<PreprocessingInfo*> > get_includingPreprocessingInfosMap() const;
24921  void set_includingPreprocessingInfosMap(std::map<std::string, std::set<PreprocessingInfo*> > includingPreprocessingInfosMap);
24922 
24923  public:
24924  std::list<std::string> get_quotedIncludesSearchPaths() const;
24925  void set_quotedIncludesSearchPaths(std::list<std::string> quotedIncludesSearchPaths);
24926 
24927  public:
24928  std::list<std::string> get_bracketedIncludesSearchPaths() const;
24929  void set_bracketedIncludesSearchPaths(std::list<std::string> bracketedIncludesSearchPaths);
24930 
24931  public:
24932  std::string get_unparseHeaderFilesRootFolder() const;
24933  void set_unparseHeaderFilesRootFolder(std::string unparseHeaderFilesRootFolder);
24934 
24935  public:
24936  bool get_frontendConstantFolding() const;
24937  void set_frontendConstantFolding(bool frontendConstantFolding);
24938 
24939  public:
24940  SgGlobal* get_globalScopeAcrossFiles() const;
24941  void set_globalScopeAcrossFiles(SgGlobal* globalScopeAcrossFiles);
24942 
24943  public:
24944  bool get_unparse_in_same_directory_as_input_file() const;
24945  void set_unparse_in_same_directory_as_input_file(bool unparse_in_same_directory_as_input_file);
24946 
24947  public:
24948  bool get_stop_after_compilation_do_not_assemble_file() const;
24949  void set_stop_after_compilation_do_not_assemble_file(bool stop_after_compilation_do_not_assemble_file);
24950 
24951  public:
24952  std::string get_gnuOptionForUndefinedSymbol() const;
24953  void set_gnuOptionForUndefinedSymbol(std::string gnuOptionForUndefinedSymbol);
24954 
24955  public:
24956  bool get_mode_32_bit() const;
24957  void set_mode_32_bit(bool mode_32_bit);
24958 
24959  public:
24960  bool get_noclobber_output_file() const;
24961  void set_noclobber_output_file(bool noclobber_output_file);
24962 
24963  public:
24964  bool get_noclobber_if_different_output_file() const;
24965  void set_noclobber_if_different_output_file(bool noclobber_if_different_output_file);
24966 
24967  public:
24968  bool get_suppressConstantFoldingPostProcessing() const;
24969  void set_suppressConstantFoldingPostProcessing(bool suppressConstantFoldingPostProcessing);
24970 
24971  public:
24972  bool get_appendPID() const;
24973  void set_appendPID(bool appendPID);
24974 
24975  public:
24976  bool get_reportOnHeaderFileUnparsing() const;
24977  void set_reportOnHeaderFileUnparsing(bool reportOnHeaderFileUnparsing);
24978 
24979  public:
24980  std::string get_applicationRootDirectory() const;
24981  void set_applicationRootDirectory(std::string applicationRootDirectory);
24982 
24983  public:
24984  bool get_usingApplicationRootDirectory() const;
24985  void set_usingApplicationRootDirectory(bool usingApplicationRootDirectory);
24986 
24987  public:
24988  bool get_usingDeferredTransformations() const;
24989  void set_usingDeferredTransformations(bool usingDeferredTransformations);
24990 
24991  public:
24992  std::string get_astfile_out() const;
24993  void set_astfile_out(std::string astfile_out);
24994 
24995  public:
24996  std::list<std::string> get_astfiles_in() const;
24997  void set_astfiles_in(std::list<std::string> astfiles_in);
24998 
24999  public:
25000  const SgStringList& get_extraIncludeDirectorySpecifierBeforeList() const;
25001  SgStringList& get_extraIncludeDirectorySpecifierBeforeList();
25002 
25003  public:
25004  const SgStringList& get_extraIncludeDirectorySpecifierAfterList() const;
25005  SgStringList& get_extraIncludeDirectorySpecifierAfterList();
25006 
25007 
25008  public:
25009  virtual ~SgProject();
25010 
25011  protected:
25012 // Start of memberFunctionString
25013 SgFileList* p_fileList_ptr;
25014 
25015 // End of memberFunctionString
25016 // Start of memberFunctionString
25017 SgStringList p_originalCommandLineArgumentList;
25018 
25019 // End of memberFunctionString
25020 // Start of memberFunctionString
25021 int p_frontendErrorCode;
25022 
25023 // End of memberFunctionString
25024 // Start of memberFunctionString
25025 int p_javacErrorCode;
25026 
25027 // End of memberFunctionString
25028 // Start of memberFunctionString
25029 int p_ecjErrorCode;
25030 
25031 // End of memberFunctionString
25032 // Start of memberFunctionString
25033 int p_midendErrorCode;
25034 
25035 // End of memberFunctionString
25036 // Start of memberFunctionString
25037 int p_backendErrorCode;
25038 
25039 // End of memberFunctionString
25040 // Start of memberFunctionString
25041 bool p_keep_going;
25042 
25043 // End of memberFunctionString
25044 // Start of memberFunctionString
25045 bool p_unparser__clobber_input_file;
25046 
25047 // End of memberFunctionString
25048 // Start of memberFunctionString
25049 std::string p_outputFileName;
25050 
25051 // End of memberFunctionString
25052 // Start of memberFunctionString
25053 SgStringList p_sourceFileNameList;
25054 
25055 // End of memberFunctionString
25056 // Start of memberFunctionString
25057 SgStringList p_objectFileNameList;
25058 
25059 // End of memberFunctionString
25060 // Start of memberFunctionString
25061 SgStringList p_libraryFileList;
25062 
25063 // End of memberFunctionString
25064 // Start of memberFunctionString
25065 SgStringList p_librarySpecifierList;
25066 
25067 // End of memberFunctionString
25068 // Start of memberFunctionString
25069 SgStringList p_libraryDirectorySpecifierList;
25070 
25071 // End of memberFunctionString
25072 // Start of memberFunctionString
25073 SgStringList p_includeDirectorySpecifierList;
25074 
25075 // End of memberFunctionString
25076 // Start of memberFunctionString
25077 SgStringList p_macroSpecifierList;
25078 
25079 // End of memberFunctionString
25080 // Start of memberFunctionString
25081 SgStringList p_preincludeFileList;
25082 
25083 // End of memberFunctionString
25084 // Start of memberFunctionString
25085 SgStringList p_preincludeDirectoryList;
25086 
25087 // End of memberFunctionString
25088 // Start of memberFunctionString
25089 bool p_compileOnly;
25090 
25091 // End of memberFunctionString
25092 // Start of memberFunctionString
25093 bool p_wave;
25094 
25095 // End of memberFunctionString
25096 // Start of memberFunctionString
25097 bool p_prelink;
25098 
25099 // End of memberFunctionString
25100 // Start of memberFunctionString
25101 SgProject::template_instantiation_enum p_template_instantiation_mode;
25102 
25103 // End of memberFunctionString
25104 // Start of memberFunctionString
25105 bool p_ast_merge;
25106 
25107 // End of memberFunctionString
25108 // Start of memberFunctionString
25109 std::string p_projectSpecificDatabaseFile;
25110 
25111 // End of memberFunctionString
25112 // Start of memberFunctionString
25113 bool p_C_PreprocessorOnly;
25114 
25115 // End of memberFunctionString
25116 // Start of memberFunctionString
25117 AstAttributeMechanism* p_attributeMechanism;
25118 
25119 // End of memberFunctionString
25120 // Start of memberFunctionString
25121 std::string p_compilationPerformanceFile;
25122 
25123 // End of memberFunctionString
25124 // Start of memberFunctionString
25125 SgStringList p_includePathList;
25126 
25127 // End of memberFunctionString
25128 // Start of memberFunctionString
25129 SgStringList p_excludePathList;
25130 
25131 // End of memberFunctionString
25132 // Start of memberFunctionString
25133 SgStringList p_includeFileList;
25134 
25135 // End of memberFunctionString
25136 // Start of memberFunctionString
25137 SgStringList p_excludeFileList;
25138 
25139 // End of memberFunctionString
25140 // Start of memberFunctionString
25141 bool p_binary_only;
25142 
25143 // End of memberFunctionString
25144 // Start of memberFunctionString
25145 SgDirectoryList* p_directoryList;
25146 
25147 // End of memberFunctionString
25148 // Start of memberFunctionString
25149 bool p_C_only;
25150 
25151 // End of memberFunctionString
25152 // Start of memberFunctionString
25153 bool p_Cxx_only;
25154 
25155 // End of memberFunctionString
25156 // Start of memberFunctionString
25157 bool p_C11_only;
25158 
25159 // End of memberFunctionString
25160 // Start of memberFunctionString
25161 bool p_Cxx0x_only;
25162 
25163 // End of memberFunctionString
25164 // Start of memberFunctionString
25165 bool p_Cxx11_only;
25166 
25167 // End of memberFunctionString
25168 // Start of memberFunctionString
25169 bool p_C14_only;
25170 
25171 // End of memberFunctionString
25172 // Start of memberFunctionString
25173 bool p_Cxx14_only;
25174 
25175 // End of memberFunctionString
25176 // Start of memberFunctionString
25177 bool p_Fortran_only;
25178 
25179 // End of memberFunctionString
25180 // Start of memberFunctionString
25181 std::list<std::string> p_Fortran_ofp_jvm_options;
25182 
25183 // End of memberFunctionString
25184 // Start of memberFunctionString
25185 bool p_openmp_linking;
25186 
25187 // End of memberFunctionString
25188 // Start of memberFunctionString
25189 std::list<std::string> p_Java_ecj_jvm_options;
25190 
25191 // End of memberFunctionString
25192 // Start of memberFunctionString
25193 bool p_Java_batch_mode;
25194 
25195 // End of memberFunctionString
25196 // Start of memberFunctionString
25197 std::list<std::string> p_Java_classpath;
25198 
25199 // End of memberFunctionString
25200 // Start of memberFunctionString
25201 std::list<std::string> p_Java_sourcepath;
25202 
25203 // End of memberFunctionString
25204 // Start of memberFunctionString
25205 std::string p_Java_destdir;
25206 
25207 // End of memberFunctionString
25208 // Start of memberFunctionString
25209 std::string p_Java_source_destdir;
25210 
25211 // End of memberFunctionString
25212 // Start of memberFunctionString
25213 bool p_addCppDirectivesToAST;
25214 
25215 // End of memberFunctionString
25216 // Start of memberFunctionString
25217 std::map<std::string, std::set<PreprocessingInfo*> > p_includingPreprocessingInfosMap;
25218 
25219 // End of memberFunctionString
25220 // Start of memberFunctionString
25221 std::list<std::string> p_quotedIncludesSearchPaths;
25222 
25223 // End of memberFunctionString
25224 // Start of memberFunctionString
25225 std::list<std::string> p_bracketedIncludesSearchPaths;
25226 
25227 // End of memberFunctionString
25228 // Start of memberFunctionString
25229 std::string p_unparseHeaderFilesRootFolder;
25230 
25231 // End of memberFunctionString
25232 // Start of memberFunctionString
25233 bool p_frontendConstantFolding;
25234 
25235 // End of memberFunctionString
25236 // Start of memberFunctionString
25237 SgGlobal* p_globalScopeAcrossFiles;
25238 
25239 // End of memberFunctionString
25240 // Start of memberFunctionString
25241 bool p_unparse_in_same_directory_as_input_file;
25242 
25243 // End of memberFunctionString
25244 // Start of memberFunctionString
25245 bool p_stop_after_compilation_do_not_assemble_file;
25246 
25247 // End of memberFunctionString
25248 // Start of memberFunctionString
25249 std::string p_gnuOptionForUndefinedSymbol;
25250 
25251 // End of memberFunctionString
25252 // Start of memberFunctionString
25253 bool p_mode_32_bit;
25254 
25255 // End of memberFunctionString
25256 // Start of memberFunctionString
25257 bool p_noclobber_output_file;
25258 
25259 // End of memberFunctionString
25260 // Start of memberFunctionString
25261 bool p_noclobber_if_different_output_file;
25262 
25263 // End of memberFunctionString
25264 // Start of memberFunctionString
25265 bool p_suppressConstantFoldingPostProcessing;
25266 
25267 // End of memberFunctionString
25268 // Start of memberFunctionString
25269 bool p_appendPID;
25270 
25271 // End of memberFunctionString
25272 // Start of memberFunctionString
25273 bool p_reportOnHeaderFileUnparsing;
25274 
25275 // End of memberFunctionString
25276 // Start of memberFunctionString
25277 std::string p_applicationRootDirectory;
25278 
25279 // End of memberFunctionString
25280 // Start of memberFunctionString
25281 bool p_usingApplicationRootDirectory;
25282 
25283 // End of memberFunctionString
25284 // Start of memberFunctionString
25285 bool p_usingDeferredTransformations;
25286 
25287 // End of memberFunctionString
25288 // Start of memberFunctionString
25289 std::string p_astfile_out;
25290 
25291 // End of memberFunctionString
25292 // Start of memberFunctionString
25293 std::list<std::string> p_astfiles_in;
25294 
25295 // End of memberFunctionString
25296 // Start of memberFunctionString
25297 SgStringList p_extraIncludeDirectorySpecifierBeforeList;
25298 
25299 // End of memberFunctionString
25300 // Start of memberFunctionString
25301 SgStringList p_extraIncludeDirectorySpecifierAfterList;
25302 
25303 // End of memberFunctionString
25304 
25305 
25306 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
25307 
25308 
25309  };
25310 #endif
25311 
25312 // postdeclarations for SgProject
25313 
25314 /* #line 25315 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
25315 
25316 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
25317 
25318 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
25319 
25320 
25321 /* #line 25322 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
25322 
25323 
25324 
25325 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
25326 
25327 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
25328 // This code is automatically generated for each
25329 // terminal and non-terminal within the defined
25330 // grammar. There is a simple way to change the
25331 // code to fix bugs etc. See the ROSE README file
25332 // for directions.
25333 
25334 // tps: (02/22/2010): Adding DLL export requirements
25335 #include "rosedll.h"
25336 
25337 // predeclarations for SgOptions
25338 
25339 /* #line 25340 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
25340 
25341 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
25342 
25343 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
25344 
25345 #if 1
25346 // Class Definition for SgOptions
25347 class ROSE_DLL_API SgOptions : public SgSupport
25348  {
25349  public:
25350 
25351 
25352 /* #line 25353 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
25353 
25354  virtual SgNode* copy ( SgCopyHelp& help) const override;
25355 // Start of memberFunctionString
25356 /* #line 6943 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
25357 
25358  // In general we avoid the definition of member function within the class declaration!
25359  // This is a minor divergence upon this policy.
25360 
25361  friend class Sg_Options& Sg_options();
25362  public:
25363  inline std::ostream& default_output() { return *p_default_output;}
25364  inline void set_default_output(std::ostream& os){ p_default_output = &os;}
25365 
25366  inline std::ostream& debug_output() { return *p_debug_output;}
25367  inline void set_debug_output(std::ostream& os) { p_debug_output = &os;}
25368 
25369  inline std::ostream& error_output() { return *p_error_output;}
25370  inline void set_error_output(std::ostream& os) { p_error_output = &os;}
25371 
25372  inline std::ostream& logging_output() { return *p_logging_output;}
25373  inline void set_logging_output(std::ostream& os){ p_logging_output = &os;}
25374 
25375  inline int debug_level() {return p_debug_level;}
25376  inline void set_debug_level(int l) { p_debug_level = l; }
25377 
25378  inline int logging_level() {return p_logging_level;}
25379  inline void set_logging(std::ostream& log_file, int level)
25380  { p_logging_level = level; p_logging_output = &log_file; }
25381 #if 0
25382  // We need a option to permit the generated constructors to be protected or private
25383  private:
25384  Sg_Options(); /* to stop anyone but Sg_options() instantiating it */
25385 #endif
25386 
25387 
25388 
25389 // End of memberFunctionString
25390 // Start of memberFunctionString
25391 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
25392 
25393 // *** COMMON CODE SECTION BEGINS HERE ***
25394 
25395  public:
25396 
25397  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
25398  // and not required which is required to match the other aspects of the copy mechanism code generation.
25399  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
25400  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
25401  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
25402  // virtual SgNode* copy ( const SgCopyHelp & help) const;
25403 
25405  virtual std::string class_name() const override;
25406 
25408  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
25409 
25411  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
25412  // static const VariantT static_variant = V_SgOptions;
25413  enum { static_variant = V_SgOptions };
25414 
25415  /* the generated cast function */
25417  ROSE_DLL_API friend SgOptions* isSgOptions( SgNode * s );
25418 
25420  ROSE_DLL_API friend const SgOptions* isSgOptions( const SgNode * s );
25421 
25422  // ******************************************
25423  // * Memory Pool / New / Delete
25424  // ******************************************
25425 
25426  public:
25428  static const unsigned pool_size; //
25430  static std::vector<unsigned char *> pools; //
25432  static SgOptions * next_node; //
25433 
25435  static unsigned long initializeStorageClassArray(SgOptionsStorageClass *); //
25436 
25438  static void clearMemoryPool(); //
25439  static void deleteMemoryPool(); //
25440 
25442  static void extendMemoryPoolForFileIO(); //
25443 
25445  static SgOptions * getPointerFromGlobalIndex(unsigned long); //
25447  static SgOptions * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
25448 
25450  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
25452  static void resetValidFreepointers(); //
25454  static unsigned long getNumberOfLastValidPointer(); //
25455 
25456 
25457 #if defined(INLINE_FUNCTIONS)
25458 
25459  inline void *operator new (size_t size);
25460 #else
25461 
25462  void *operator new (size_t size);
25463 #endif
25464 
25465  void operator delete (void* pointer, size_t size);
25466 
25467  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
25468  void operator delete (void* pointer)
25469  {
25470  // This is the generated delete operator...
25471  SgOptions::operator delete (pointer,sizeof(SgOptions));
25472  }
25473 
25475  static size_t numberOfNodes();
25476 
25478  static size_t memoryUsage();
25479 
25480  // End of scope which started in IR nodes specific code
25481  /* */
25482 
25483  /* name Internal Functions
25484  \brief Internal functions ... incomplete-documentation
25485 
25486  These functions have been made public as part of the design, but they are suggested for internal use
25487  or by particularly knowledgeable users for specialized tools or applications.
25488 
25489  \internal We could not make these private because they are required by user for special purposes. And
25490  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
25491 
25492  */
25493 
25494  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
25495  // overridden in every class by *generated* implementation
25497  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
25498  // MS: 06/28/02 container of names of variables or container indices
25499  // used used in the traversal to access AST successor nodes
25500  // overridden in every class by *generated* implementation
25503  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
25504 
25505  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
25506  // than all the vector copies. The implementation for these functions is generated for each class.
25508  virtual size_t get_numberOfTraversalSuccessors() override;
25510  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
25512  virtual size_t get_childIndex(SgNode *child) override;
25513 
25514 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
25515  // MS: 08/16/2002 method for generating RTI information
25517  virtual RTIReturnType roseRTI() override;
25518 #endif
25519  /* */
25520 
25521 
25522 
25523  /* name Deprecated Functions
25524  \brief Deprecated functions ... incomplete-documentation
25525 
25526  These functions have been deprecated from use.
25527  */
25528  /* */
25529 
25531  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
25532 
25533  // JJW (10/16/2008): Changed to a single function in Node.code, and put
25534  // getVariant() in #if 0 block to prevent confusing Doxygen
25535 #if 0
25536 
25537  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
25539  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
25540 #endif
25541  /* */
25542 
25543 
25544 
25545 
25546  public:
25547  /* name Traversal Support Functions
25548  \brief Traversal support functions ... incomplete-documentation
25549 
25550  These functions have been made public as part of the design, but they are suggested for internal use
25551  or by particularly knowledgable users for specialized tools or applications.
25552  */
25553  /* */
25554 
25555  // DQ (11/26/2005): Support for visitor pattern mechanims
25556  // (inferior to ROSE traversal mechanism, experimental).
25560 
25561  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
25563  virtual void accept (ROSE_VisitorPattern & visitor) override;
25564 
25565  // DQ (12/26/2005): Support for traversal based on the memory pool
25568  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
25569 
25573 
25574  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
25575  // This traversal helps support internal tools that call static member functions.
25576  // note: this function operates on the memory pools.
25579  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
25580  /* */
25581 
25582 
25583  public:
25584  /* name Memory Allocation Functions
25585  \brief Memory allocations functions ... incomplete-documentation
25586 
25587  These functions have been made public as part of the design, but they are suggested for internal use
25588  or by particularly knowledgable users for specialized tools or applications.
25589  */
25590  /* */
25591 
25602  virtual bool isInMemoryPool() override;
25603 
25614  virtual void checkDataMemberPointersIfInMemoryPool() override;
25615 
25616  // DQ (4/30/2006): Modified to be a const function.
25631  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
25632 
25642  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
25643 
25655  virtual long getChildIndex( SgNode* childNode ) const override;
25656 
25657  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
25658  // comment here (changed to be a C style comment and not be a doxygen comment).
25659  /* \brief Constructor for use by AST File I/O Mechanism
25660 
25661  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
25662  which obtained via fast binary file I/O from disk.
25663  */
25664  // SgOptions( SgOptionsStorageClass& source );
25665 
25666 
25667 
25668 
25669 
25670  // JH (10/24/2005): methods added to support the ast file IO
25671  private:
25672 
25673  /* name AST Memory Allocation Support Functions
25674  \brief Memory allocations support....
25675 
25676  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
25677  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
25678  and support the AST File I/O Mechanism.
25679  */
25680  /* */
25681 
25682  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
25683  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
25684  that I use the same type everywhere, if any changes are made. THe second one declares the type
25685  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
25686  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
25687  a correspinding one in the AST_FILE_IO class!
25688  */
25689  // DQ (9/2/2015): This typedef is no longer used, we can't define the
25690  // comment here (changed to be a C style comment and not be a doxygen comment).
25691  /* \brief Typedef used for low level memory access.
25692  */
25693  // typedef unsigned char* TestType;
25694 
25695  // DQ (9/2/2015): This typedef is no longer used, we can't define the
25696  // comment here (changed to be a C style comment and not be a doxygen comment).
25697  /* \brief Typedef used to hold memory addresses as values.
25698  */
25699  // typedef unsigned long AddressType;
25700 
25701 
25702 
25703  // necessary, to have direct access to the p_freepointer and the private methods !
25705  friend class AST_FILE_IO;
25706 
25708  friend class SgOptionsStorageClass;
25709 
25711  friend class AstSpecificDataManagingClass;
25712 
25714  friend class AstSpecificDataManagingClassStorageClass;
25715 
25716  public:
25718  SgOptions( const SgOptionsStorageClass& source );
25719 
25720  // private: // JJW hack
25721  /*
25722  name AST Memory Allocation Support Variables
25723  Memory allocations support variables
25724 
25725  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
25726  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
25727  and support the AST File I/O Mechanism.
25728  */
25729  /* */
25730 
25731  public:
25732 
25733  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
25734  // to current node (so that it will work cleanly with build functions to specify patterns).
25735  // virtual SgNode* addRegExpAttribute();
25741  SgOptions* addRegExpAttribute(std::string s, AstRegExAttribute* a);
25742 
25743 // *** COMMON CODE SECTION ENDS HERE ***
25744 
25745 
25746 // End of memberFunctionString
25747 // Start of memberFunctionString
25748 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
25749 
25750  // the generated cast function
25751  // friend ROSE_DLL_API SgOptions* isSgOptions ( SgNode* s );
25752 
25753  typedef SgSupport base_node_type;
25754 
25755 
25756 // End of memberFunctionString
25757 
25758 
25759 
25760 
25761 
25762 
25763 
25764 
25765  public:
25766  virtual ~SgOptions();
25767 
25768 
25769  public:
25770  SgOptions();
25771 
25772  protected:
25773 // Start of memberFunctionString
25774 std::ostream* p_default_output;
25775 
25776 // End of memberFunctionString
25777 // Start of memberFunctionString
25778 std::ostream* p_debug_output;
25779 
25780 // End of memberFunctionString
25781 // Start of memberFunctionString
25782 std::ostream* p_error_output;
25783 
25784 // End of memberFunctionString
25785 // Start of memberFunctionString
25786 std::ostream* p_logging_output;
25787 
25788 // End of memberFunctionString
25789 // Start of memberFunctionString
25790 int p_debug_level;
25791 
25792 // End of memberFunctionString
25793 // Start of memberFunctionString
25794 int p_logging_level;
25795 
25796 // End of memberFunctionString
25797 
25798 
25799 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
25800 
25801 
25802  };
25803 #endif
25804 
25805 // postdeclarations for SgOptions
25806 
25807 /* #line 25808 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
25808 
25809 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
25810 
25811 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
25812 
25813 
25814 /* #line 25815 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
25815 
25816 
25817 
25818 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
25819 
25820 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
25821 // This code is automatically generated for each
25822 // terminal and non-terminal within the defined
25823 // grammar. There is a simple way to change the
25824 // code to fix bugs etc. See the ROSE README file
25825 // for directions.
25826 
25827 // tps: (02/22/2010): Adding DLL export requirements
25828 #include "rosedll.h"
25829 
25830 // predeclarations for SgUnparse_Info
25831 
25832 /* #line 25833 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
25833 
25834 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
25835 
25836 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
25837 
25838 #if 1
25839 // Class Definition for SgUnparse_Info
25840 class ROSE_DLL_API SgUnparse_Info : public SgSupport
25841  {
25842  public:
25843 
25844 
25845 /* #line 25846 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
25846 
25847  virtual SgNode* copy ( SgCopyHelp& help) const override;
25848 // Start of memberFunctionString
25849 /* #line 6976 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
25850 
25851  // This class defines it's data explicitly so that the explicitly defined
25852  // member access functions will be used and none will be generated!
25853 
25854  // Default constructor defined here because the automatically generated constructor
25855  // would not be generated with the error checking that I require to debug the use of
25856  // the SgUnparse_Info object as an inherited attribute in the unparser.
25857  SgUnparse_Info ();
25858 
25859  SgUnparse_Info ( const SgUnparse_Info & X );
25860  SgUnparse_Info & operator= ( const SgUnparse_Info & X );
25861 
25862  void post_construction_initialization() override;
25863 
25864  // DQ (4/16/2003): Notes on how to improve the unparser:
25865  // Rather than having an inherited attribute that stores some context information
25866  // and clearer approach would be to have an inherited attribute that stored all
25867  // the context information. The SgUnparse_Info object should be abandoned for
25868  // the use of a persistant attribute built using an initial traversal (to set them)
25869  // over the entire tree. Such a traversal would have to visit every node of
25870  // the AST, because the unparser has to visit every node.
25871 
25872  // DQ (12/6/2003) Need to use a vector<bool> type to store flags so that we can include
25873  // more flags that permited in a 32bit long integer. We used long long for a while, but
25874  // this does not work with the 3.x gnu g++ compiler (and C++ does not allow enum values to
25875  // be more than long (32 bits on many machines, Intel x86). Modifying the implementation
25876  // to use an STL vector<bool> type permits an unlimited number of flags (for future growth).
25877 
25888  {
25890  b_enum_defaultValue = 0,
25891  b_isPointerToSomething = 1,
25893  b_isReferenceToSomething = 2,
25894  b_inVarDecl = 3,
25896  b_inArgList = 4,
25898  b_SkipSemiColon = 5,
25900  b_inEnumDecl = 6,
25902  b_inTemplateList = 7,
25904  b_SkipBaseType = 8,
25906  b_inAggregateInitializer = 9,
25908  b_isWithType = 10,
25910  b_inConditional = 11,
25912  b_SkipDefinition = 12,
25914  b_SkipClassSpecifier = 13,
25916  b_inEmbeddedDecl = 14,
25918  b_SkipGlobal = 15,
25920  b_SkipAtomic = 16,
25921  b_PrintName = 17,
25924  b_CheckAccess = 18,
25926  b_SkipFunctionQualifier = 19,
25928  b_isArrayType = 20,
25930  b_inRhsExpr = 21,
25932  b_SkipParen = 22,
25936  b_isTypeSecondPart = 23,
25940  b_isTypeFirstPart = 24,
25941  b_SkipInitializer = 25,
25944  b_SkipComments = 26,
25947  b_SkipCPPDirectives = 27,
25950  b_SkipEnumDefinition = 28,
25953  b_SkipFunctionDefinition = 29,
25956  b_SkipClassDefinition = 30,
25959  b_AddSemiColonAfterDeclaration = 31,
25962  b_SkipWhitespaces = 32,
25968  b_SkipBasicBlock = 33,
25978  b_outputClassTemplateName = 34,
25986  // DQ (5/27/2005): Added support for getting comments and directives output before any inserted
25987  // compiler generated statements.
25991  b_outputCompilerGeneratedStatements = 35,
25993  // DQ (4/5/2006): Added support for constant folded values to be optionally output
25995  b_SkipConstantFoldedExpressions = 36,
25997  // DQ and PC (6/1/2006): Added Peter's suggested fixes to support unparsing fully qualified names.
25998  b_forceQualifiedNames = 37,
26000  // DQ (10/11/2006): This is added to support a default where all qualified names are output.
26002  b_SkipQualifiedNames = 38,
26004  b_skipCheckAccess = 39,
26007  b_requiresGlobalNameQualification = 40,
26009  // DQ (8/10/2006):
26010  // b_isAsmOutputOperand = 40, /*!< Mark as output operand */
26011 
26012  b_useTypeAttributes = 41,
26014  b_SkipFormatting = 42,
26016  // FMZ: Added for generate fortran xxx.rose_mod file
26017  b_outputFortranModFile = 43,
26019  // DQ (1/16/2011): Fortran support required.
26020  b_supressStrippedTypeName = 44,
26022  // DQ (4/13/2013): Added support to unparse code using overloaded operator names or operator syntax (to match the input code).
26023  b_prefixOperator = 45,
26025  // DQ (2/2/2014): Supress output of array bound in array type. Used to support array declearations with empty bracket syntax (e.g. int array[];).
26026  b_supressArrayBound = 46,
26028  // DQ (9/3/2014): Supress output of this operator where compiler generated (required to support lambda function code generation).
26029  b_supressImplicitThisOperator = 47,
26031  // DQ (12/5/2014): Record that the statement was partially unparsed using the token stream.
26032  b_unparsedPartiallyUsingTokenStream = 48,
26034  // DQ (3/25/2015): This is the support required for the offsetof() function family (__offsetof(), __builtin_offsetof(), etc.).
26035  b_skipCompilerGeneratedSubExpressions = 49,
26037  // DQ (11/15/2015): Token-based unparsing support for partial token sequence unparsing of lists of statements (controls fromatting).
26038  b_parentStatementListBeingUnparsedUsingPartialTokenSequence = 50,
26040  // DQ (2/8/2016): Adding support for C++11 specific initialization lists.
26041  b_cxx11_initialization_list = 51,
26043  // DQ (2/3/2019): Need to know when we are unparsing the base type within a typedef so that member pointers can be output with parenthesis (see Cxx11_tests/test2019_77.C).
26045  b_inTypedefDecl = 52,
26047  // DQ (4/13/2019): Generated strings of template instantiations need to sometimes exclude the initial name qualification to avoid it being redundantly generated, see Cxx11_tests/test2019_350.C).
26048  b_SkipNameQualification = 53,
26050  // DQ (12/26/2019): Use an alternative defining declaration in unparsing of named type, see Cxx11_tests/test2019_518a.C and test2019_518b.C).
26051  // Required to support multiple file handling, and its unparsing.
26052  b_useAlternativeDefiningDeclaration = 54,
26054  // DQ (1/6/2021): Adding support to detect use of unparseToString() functionality. This is required to avoid premature saving of state
26055  // regarding the static previouslyUnparsedTokenSubsequences which is required to support multiple statements (e.g. a variable declarations
26056  // with containing multiple variables which translates (typically) to multiple variable declarations (each with one variable) within the AST).
26057  b_usedInUparseToStringFunction = 55,
26059  UNPARSE_TYPE_LAST
26061  };
26062 
26065  {
26066  a_unset_access = 1,
26067  a_private_access = 2,
26068  a_protected_access = 3,
26069  a_public_access = 4,
26070  // DQ (8/12/2020): added a new value to support when this is not set explicitly (see Cxx_tests/test2020_28.C).
26071  a_default_access = 5
26072  };
26073 
26074  private:
26075 
26076  // DQ (1/3/2009): This is similar code to what is in SgModifier::checkBit, setBit, unsetBit; so it could be refactored.
26077  bool checkBit(unparse_type_num bit) const;
26078  void setBit(unparse_type_num bit);
26079  void unsetBit(unparse_type_num bit);
26080 
26081  public:
26082 
26083  // access function to SgUnparse_Info
26084  bool isUnsetAccess() const;
26085  void set_isUnsetAccess();
26086  bool isPrivateAccess() const;
26087  void set_isPrivateAccess();
26088  bool isProtectedAccess() const;
26089  void set_isProtectedAccess();
26090  bool isPublicAccess() const;
26091  void set_isPublicAccess();
26092 
26093  // DQ (8/12/2020): Adding a default value for when it is not set explicitly.
26094  bool isDefaultAccess() const;
26095  void set_isDefaultAccess();
26096 
26097  bool isPointerToSomething() const;
26098  void set_isPointerToSomething();
26099  void unset_isPointerToSomething();
26100 
26101  bool isReferenceToSomething() const;
26102  void set_isReferenceToSomething();
26103  void unset_isReferenceToSomething();
26104 
26105  bool inVarDecl() const;
26106  void set_inVarDecl();
26107  void unset_inVarDecl();
26108 
26109  bool inArgList() const;
26110  void set_inArgList();
26111  void unset_inArgList();
26112 
26113  bool SkipSemiColon() const;
26114  void set_SkipSemiColon();
26115  void unset_SkipSemiColon();
26116 
26117  bool inEnumDecl() const;
26118  void set_inEnumDecl();
26119  void unset_inEnumDecl();
26120 
26121  bool inTemplateList() const;
26122  void set_inTemplateList();
26123  void unset_inTemplateList();
26124 
26125  bool SkipBaseType() const;
26126  void set_SkipBaseType();
26127  void unset_SkipBaseType();
26128 
26129  bool inAggregateInitializer() const;
26130  void set_inAggregateInitializer();
26131  void unset_inAggregateInitializer();
26132 
26133  bool isWithType() const;
26134  void set_isWithType();
26135  void unset_isWithType();
26136 
26137  bool inConditional() const;
26138  void set_inConditional();
26139  void unset_inConditional();
26140 
26141  bool SkipDefinition() const;
26142  void set_SkipDefinition();
26143  void unset_SkipDefinition();
26144 
26145  bool SkipClassSpecifier() const;
26146  void set_SkipClassSpecifier();
26147  void unset_SkipClassSpecifier();
26148 
26149  bool inEmbeddedDecl() const;
26150  void set_inEmbeddedDecl();
26151  void unset_inEmbeddedDecl();
26152 
26153  bool SkipGlobal() const;
26154  void set_SkipGlobal();
26155  void unset_SkipGlobal();
26156 
26157  bool SkipAtomic() const;
26158  void set_SkipAtomic();
26159  void unset_SkipAtomic();
26160 
26161  bool PrintName() const;
26162  void set_PrintName();
26163  void unset_PrintName();
26164 
26165  bool CheckAccess() const;
26166  void set_CheckAccess();
26167  void unset_CheckAccess();
26168 
26169  bool SkipFunctionQualifier() const;
26170  void set_SkipFunctionQualifier();
26171  void unset_SkipFunctionQualifier();
26172 
26173  bool isArrayType() const;
26174  void set_isArrayType();
26175  void unset_isArrayType();
26176 
26177  bool inRhsExpr() const;
26178  void set_inRhsExpr();
26179  void unset_inRhsExpr();
26180 
26181  bool SkipParen() const;
26182  void set_SkipParen();
26183  void unset_SkipParen();
26184 
26185  // DQ (5/10/2015): Added documentation for how these are tested, set and unset.
26190  bool isTypeSecondPart() const;
26191 
26192  // DQ (5/10/2015): Added documentation for how these are tested, set and unset.
26199  void set_isTypeSecondPart();
26200 
26201  // DQ (5/10/2015): Added documentation for how these are tested, set and unset.
26208  void unset_isTypeSecondPart();
26209 
26210  // DQ (5/10/2015): Added documentation for how these are tested, set and unset.
26215  bool isTypeFirstPart() const;
26216 
26217  // DQ (5/10/2015): Added documentation for how these are tested, set and unset.
26224  void set_isTypeFirstPart();
26225 
26226  // DQ (5/10/2015): Added documentation for how these are tested, set and unset.
26233  void unset_isTypeFirstPart();
26234 
26235  bool SkipInitializer() const;
26236  void set_SkipInitializer();
26237  void unset_SkipInitializer();
26238 
26239  bool SkipComments() const;
26240  void set_SkipComments();
26241  void unset_SkipComments();
26242 
26243  // MS: 09/03/03
26244  bool SkipWhitespaces() const;
26245  void set_SkipWhitespaces();
26246  void unset_SkipWhitespaces();
26247 
26248  bool SkipCPPDirectives() const;
26249  void set_SkipCPPDirectives();
26250  void unset_SkipCPPDirectives();
26251 
26252  bool SkipEnumDefinition() const;
26253  void set_SkipEnumDefinition();
26254  void unset_SkipEnumDefinition();
26255 
26256  bool SkipFunctionDefinition() const;
26257  void set_SkipFunctionDefinition();
26258  void unset_SkipFunctionDefinition();
26259 
26260  bool SkipClassDefinition() const;
26261  void set_SkipClassDefinition();
26262  void unset_SkipClassDefinition();
26263 
26264  bool AddSemiColonAfterDeclaration() const;
26265  void set_AddSemiColonAfterDeclaration();
26266  void unset_AddSemiColonAfterDeclaration();
26267 
26268  // DQ (11/04/03): Added to support unparsing control flow (SgForStmt, SgSwitch,
26269  // etc.) to make prefix more precise. Can't add case to anything
26270  // but switch, and capture declarations in for loops, for example.
26271  bool SkipBasicBlock() const;
26272  void set_SkipBasicBlock();
26273  void unset_SkipBasicBlock();
26274 
26275  // DQ (3/18/2004): Added to support unparsing of class templates in variables but
26276  // not in in instatiated template declarations (unless the template is transformed
26277  // in which case another test is used).
26278  bool outputClassTemplateName() const;
26279  void set_outputClassTemplateName();
26280  void unset_outputClassTemplateName();
26281 
26282  // DQ (5/27/2005): support (see documentation above)
26283  bool outputCompilerGeneratedStatements() const;
26284  void set_outputCompilerGeneratedStatements();
26285  void unset_outputCompilerGeneratedStatements();
26286 
26287  // DQ (4/5/2006): Added support for constant folded values to be optionally output
26291  bool SkipConstantFoldedExpressions() const;
26292  void set_SkipConstantFoldedExpressions();
26293  void unset_SkipConstantFoldedExpressions();
26294 
26295  // DQ and PC (6/1/2006): Added Peter's suggested fixes to support unparsing fully qualified names.
26296  bool forceQualifiedNames() const;
26297  void set_forceQualifiedNames();
26298  void unset_forceQualifiedNames();
26299 
26300  // DQ and PC (6/1/2006): Added Peter's suggested fixes to support unparsing fully qualified names.
26301  bool skipCheckAccess() const;
26302  void set_skipCheckAccess();
26303  void unset_skipCheckAccess();
26304 
26305  // DQ (10/11/2006): Added to support new implementation of name qualification
26306  bool SkipQualifiedNames() const;
26307  void set_SkipQualifiedNames();
26308  void unset_SkipQualifiedNames();
26309 
26310  bool requiresGlobalNameQualification() const;
26311  void set_requiresGlobalNameQualification();
26312  void unset_requiresGlobalNameQualification();
26313 
26314  // DQ (9/22/2007): Added optional handling of Fortran type attributes, these may have to be setup for each different kind of type attribute.
26315  bool useTypeAttributes() const;
26316  void set_useTypeAttributes();
26317  void unset_useTypeAttributes();
26318 
26319  bool SkipFormatting() const;
26320  void set_SkipFormatting();
26321  void unset_SkipFormatting();
26322 
26323  bool supressStrippedTypeName() const;
26324  void set_supressStrippedTypeName();
26325  void unset_supressStrippedTypeName();
26326 
26327  std::string get_operator_name();
26328  void set_operator_name(const std::string& on);
26329 
26330  SgName& get_name();
26331  void set_name(const SgName& name);
26332  void unset_name();
26333 
26334  SgDeclarationStatement* get_decl_stmt();
26335  void set_decl_stmt(SgDeclarationStatement* stmt );
26336  void unset_decl_stmt();
26337 
26338  int get_nested_expression();
26339  void set_nested_expression();
26340  void unset_nested_expression();
26341 
26342  // DQ (4/13/2013): Added support to mark output of overloaded operators an prefix operators.
26343  bool isPrefixOperator() const;
26344  void set_prefixOperator();
26345  void unset_prefixOperator();
26346 
26347  // DQ (2/2/2014): Supress output of array bound in array type. Used to support array declearations with empty bracket syntax (e.g. int array[];).
26348  bool supressArrayBound() const;
26349  void set_supressArrayBound();
26350  void unset_supressArrayBound();
26351 
26352  // DQ (9/3/2014): Supress output of this operator where compiler generated (required to support lambda function code generation).
26353  bool supressImplicitThisOperator() const;
26354  void set_supressImplicitThisOperator();
26355  void unset_supressImplicitThisOperator();
26356 
26357  // DQ (12/5/2014): Record that the statement was partially unparsed using the token stream.
26358  bool unparsedPartiallyUsingTokenStream() const;
26359  void set_unparsedPartiallyUsingTokenStream();
26360  void unset_unparsedPartiallyUsingTokenStream();
26361 
26362  // DQ (3/25/2015): This is the support required for the offsetof() function family (__offsetof(), __builtin_offsetof(), etc.).
26363  bool skipCompilerGeneratedSubExpressions() const;
26364  void set_skipCompilerGeneratedSubExpressions();
26365  void unset_skipCompilerGeneratedSubExpressions();
26366 
26367  // DQ (11/15/2015): Token-based unparsing support for partial token sequence unparsing of lists of statements (controls fromatting).
26368  bool parentStatementListBeingUnparsedUsingPartialTokenSequence() const;
26369  void set_parentStatementListBeingUnparsedUsingPartialTokenSequence();
26370  void unset_parentStatementListBeingUnparsedUsingPartialTokenSequence();
26371 
26372  // DQ (2/8/2016): Adding support for C++11 specific initialization lists.
26373  bool get_cxx11_initialization_list() const;
26374  void set_cxx11_initialization_list();
26375  void unset_cxx11_initialization_list();
26376 
26377  // DQ (2/3/2019): unparsing for base type in typedefs when base type is a member pointer.
26378  bool inTypedefDecl() const;
26379  void set_inTypedefDecl();
26380  void unset_inTypedefDecl();
26381 
26382  // DQ (4/13/2019): unparsing for generated template instantiations need to sometime skip the initial name qualification.
26383  bool SkipNameQualification() const;
26384  void set_SkipNameQualification();
26385  void unset_SkipNameQualification();
26386 
26387  // DQ (12/26/2019): unparsing for defining declarations in named types defined in multiple translation units (multi-file support).
26388  bool useAlternativeDefiningDeclaration() const;
26389  void set_useAlternativeDefiningDeclaration();
26390  void unset_useAlternativeDefiningDeclaration();
26391 
26392  // DQ (1/6/2021): Adding support to detect use of unparseToString() functionality. This is required to avoid premature saving of state
26393  // regarding the static previouslyUnparsedTokenSubsequences which is required to support multiple statements (e.g. a variable declarations
26394  // with containing multiple variables which translates (typically) to multiple variable declarations (each with one variable) within the AST).
26395  bool usedInUparseToStringFunction() const;
26396  void set_usedInUparseToStringFunction();
26397  void unset_usedInUparseToStringFunction();
26398 #if 0
26399  // DQ (11/21/2021): Adding support for types to be unparsed with the context of the correct declaration to support multi-file handling.
26400  SgDeclarationStatement* get_declaration_of_context();
26401  void set_declaration_of_context(SgDeclarationStatement* d);
26402 #endif
26403  // DQ (11/21/2021): Adding support for types to be unparsed with the context of the correct declaration to support multi-file handling.
26404  void unset_declaration_of_context();
26405 
26406 #if 0
26407  // MK: These access functions are now automatically generated!
26408  SgNamedType *get_current_context();
26409  void set_current_context(SgNamedType *t);
26410 #endif
26411  void unset_current_context();
26412 
26413  SgName get_array_index_list();
26414 
26415  void set_array_index_list(SgExpression *e, SgUnparse_Info finfo );
26416  void unset_array_index_list();
26417 
26418  // Support for processing of recursive references to structure tags within the data
26419  // structures that they define.
26420  void addStructureTag ( SgNamedType* structureTag );
26421 
26423  SgTypePtrList & getStructureTagList ();
26424 
26425  // DQ (1/9/2007): Modified to make const
26426  void display ( const std::string & label = "") const;
26427  std::string displayString ( const std::string & label ) const;
26428 
26436  // static bool forceDefaultConstructorToTriggerError;
26437 
26438  // DQ (9/6/2004): Support for list of scopes required to qualify names (e.g. types, data members, member functions, etc.)
26439  // SgSymbolPtrList & get_listOfScopeSymbols();
26440  // void set_listOfScopeSymbols ( const SgSymbolPtrList & l );
26441 
26442  // DQ (1/31/2006): moved static bool forceDefaultConstructorToTriggerError to be built by ROSETTA
26443  static bool get_forceDefaultConstructorToTriggerError();
26444  static void set_forceDefaultConstructorToTriggerError( bool forceDefaultConstructorToTriggerError);
26445 
26446  // FMZ (5/8/2008) Added to support to generate fortran XX.rose_mod file for a module
26447  // the code will based on fortran unparser code
26448  bool outputFortranModFile() const;
26449  void set_outputFortranModFile();
26450  void unset_outputFortranModFile();
26451 
26452  // driscoll6 (6/6/2011) Mutators for p_nestingLevel
26453  void inc_nestingLevel();
26454  void dec_nestingLevel();
26455 
26456  // DQ (8/16/2020): Record when we are in an extern "C" so that we can avoid nesting (see Cxx_tests/test2020_28.C).
26457  // We need to build the access functions directly because of the static data member.
26458  static bool get_extern_C_with_braces();
26459  static void set_extern_C_with_braces( bool extern_C_with_braces );
26460 
26461 
26462 
26463 // End of memberFunctionString
26464 // Start of memberFunctionString
26465 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
26466 
26467 // *** COMMON CODE SECTION BEGINS HERE ***
26468 
26469  public:
26470 
26471  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
26472  // and not required which is required to match the other aspects of the copy mechanism code generation.
26473  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
26474  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
26475  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
26476  // virtual SgNode* copy ( const SgCopyHelp & help) const;
26477 
26479  virtual std::string class_name() const override;
26480 
26482  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
26483 
26485  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
26486  // static const VariantT static_variant = V_SgUnparse_Info;
26487  enum { static_variant = V_SgUnparse_Info };
26488 
26489  /* the generated cast function */
26491  ROSE_DLL_API friend SgUnparse_Info* isSgUnparse_Info( SgNode * s );
26492 
26494  ROSE_DLL_API friend const SgUnparse_Info* isSgUnparse_Info( const SgNode * s );
26495 
26496  // ******************************************
26497  // * Memory Pool / New / Delete
26498  // ******************************************
26499 
26500  public:
26502  static const unsigned pool_size; //
26504  static std::vector<unsigned char *> pools; //
26506  static SgUnparse_Info * next_node; //
26507 
26509  static unsigned long initializeStorageClassArray(SgUnparse_InfoStorageClass *); //
26510 
26512  static void clearMemoryPool(); //
26513  static void deleteMemoryPool(); //
26514 
26516  static void extendMemoryPoolForFileIO(); //
26517 
26519  static SgUnparse_Info * getPointerFromGlobalIndex(unsigned long); //
26521  static SgUnparse_Info * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
26522 
26524  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
26526  static void resetValidFreepointers(); //
26528  static unsigned long getNumberOfLastValidPointer(); //
26529 
26530 
26531 #if defined(INLINE_FUNCTIONS)
26532 
26533  inline void *operator new (size_t size);
26534 #else
26535 
26536  void *operator new (size_t size);
26537 #endif
26538 
26539  void operator delete (void* pointer, size_t size);
26540 
26541  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
26542  void operator delete (void* pointer)
26543  {
26544  // This is the generated delete operator...
26545  SgUnparse_Info::operator delete (pointer,sizeof(SgUnparse_Info));
26546  }
26547 
26549  static size_t numberOfNodes();
26550 
26552  static size_t memoryUsage();
26553 
26554  // End of scope which started in IR nodes specific code
26555  /* */
26556 
26557  /* name Internal Functions
26558  \brief Internal functions ... incomplete-documentation
26559 
26560  These functions have been made public as part of the design, but they are suggested for internal use
26561  or by particularly knowledgeable users for specialized tools or applications.
26562 
26563  \internal We could not make these private because they are required by user for special purposes. And
26564  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
26565 
26566  */
26567 
26568  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
26569  // overridden in every class by *generated* implementation
26571  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
26572  // MS: 06/28/02 container of names of variables or container indices
26573  // used used in the traversal to access AST successor nodes
26574  // overridden in every class by *generated* implementation
26577  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
26578 
26579  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
26580  // than all the vector copies. The implementation for these functions is generated for each class.
26582  virtual size_t get_numberOfTraversalSuccessors() override;
26584  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
26586  virtual size_t get_childIndex(SgNode *child) override;
26587 
26588 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
26589  // MS: 08/16/2002 method for generating RTI information
26591  virtual RTIReturnType roseRTI() override;
26592 #endif
26593  /* */
26594 
26595 
26596 
26597  /* name Deprecated Functions
26598  \brief Deprecated functions ... incomplete-documentation
26599 
26600  These functions have been deprecated from use.
26601  */
26602  /* */
26603 
26605  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
26606 
26607  // JJW (10/16/2008): Changed to a single function in Node.code, and put
26608  // getVariant() in #if 0 block to prevent confusing Doxygen
26609 #if 0
26610 
26611  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
26613  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
26614 #endif
26615  /* */
26616 
26617 
26618 
26619 
26620  public:
26621  /* name Traversal Support Functions
26622  \brief Traversal support functions ... incomplete-documentation
26623 
26624  These functions have been made public as part of the design, but they are suggested for internal use
26625  or by particularly knowledgable users for specialized tools or applications.
26626  */
26627  /* */
26628 
26629  // DQ (11/26/2005): Support for visitor pattern mechanims
26630  // (inferior to ROSE traversal mechanism, experimental).
26634 
26635  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
26637  virtual void accept (ROSE_VisitorPattern & visitor) override;
26638 
26639  // DQ (12/26/2005): Support for traversal based on the memory pool
26642  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
26643 
26647 
26648  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
26649  // This traversal helps support internal tools that call static member functions.
26650  // note: this function operates on the memory pools.
26653  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
26654  /* */
26655 
26656 
26657  public:
26658  /* name Memory Allocation Functions
26659  \brief Memory allocations functions ... incomplete-documentation
26660 
26661  These functions have been made public as part of the design, but they are suggested for internal use
26662  or by particularly knowledgable users for specialized tools or applications.
26663  */
26664  /* */
26665 
26676  virtual bool isInMemoryPool() override;
26677 
26688  virtual void checkDataMemberPointersIfInMemoryPool() override;
26689 
26690  // DQ (4/30/2006): Modified to be a const function.
26705  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
26706 
26716  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
26717 
26729  virtual long getChildIndex( SgNode* childNode ) const override;
26730 
26731  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
26732  // comment here (changed to be a C style comment and not be a doxygen comment).
26733  /* \brief Constructor for use by AST File I/O Mechanism
26734 
26735  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
26736  which obtained via fast binary file I/O from disk.
26737  */
26738  // SgUnparse_Info( SgUnparse_InfoStorageClass& source );
26739 
26740 
26741 
26742 
26743 
26744  // JH (10/24/2005): methods added to support the ast file IO
26745  private:
26746 
26747  /* name AST Memory Allocation Support Functions
26748  \brief Memory allocations support....
26749 
26750  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
26751  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
26752  and support the AST File I/O Mechanism.
26753  */
26754  /* */
26755 
26756  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
26757  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
26758  that I use the same type everywhere, if any changes are made. THe second one declares the type
26759  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
26760  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
26761  a correspinding one in the AST_FILE_IO class!
26762  */
26763  // DQ (9/2/2015): This typedef is no longer used, we can't define the
26764  // comment here (changed to be a C style comment and not be a doxygen comment).
26765  /* \brief Typedef used for low level memory access.
26766  */
26767  // typedef unsigned char* TestType;
26768 
26769  // DQ (9/2/2015): This typedef is no longer used, we can't define the
26770  // comment here (changed to be a C style comment and not be a doxygen comment).
26771  /* \brief Typedef used to hold memory addresses as values.
26772  */
26773  // typedef unsigned long AddressType;
26774 
26775 
26776 
26777  // necessary, to have direct access to the p_freepointer and the private methods !
26779  friend class AST_FILE_IO;
26780 
26782  friend class SgUnparse_InfoStorageClass;
26783 
26785  friend class AstSpecificDataManagingClass;
26786 
26788  friend class AstSpecificDataManagingClassStorageClass;
26789 
26790  public:
26792  SgUnparse_Info( const SgUnparse_InfoStorageClass& source );
26793 
26794  // private: // JJW hack
26795  /*
26796  name AST Memory Allocation Support Variables
26797  Memory allocations support variables
26798 
26799  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
26800  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
26801  and support the AST File I/O Mechanism.
26802  */
26803  /* */
26804 
26805  public:
26806 
26807  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
26808  // to current node (so that it will work cleanly with build functions to specify patterns).
26809  // virtual SgNode* addRegExpAttribute();
26816 
26817 // *** COMMON CODE SECTION ENDS HERE ***
26818 
26819 
26820 // End of memberFunctionString
26821 // Start of memberFunctionString
26822 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
26823 
26824  // the generated cast function
26825  // friend ROSE_DLL_API SgUnparse_Info* isSgUnparse_Info ( SgNode* s );
26826 
26827  typedef SgSupport base_node_type;
26828 
26829 
26830 // End of memberFunctionString
26831 
26832 
26833  public:
26834  int get_access_attribute() const;
26835  void set_access_attribute(int access_attribute);
26836 
26837 
26838 
26839 
26840  public:
26841  SgDeclarationStatement* get_declstatement_ptr() const;
26842  void set_declstatement_ptr(SgDeclarationStatement* declstatement_ptr);
26843 
26844  public:
26845  SgDeclarationStatement* get_declaration_of_context() const;
26846  void set_declaration_of_context(SgDeclarationStatement* declaration_of_context);
26847 
26848  public:
26849  SgNamedType* get_current_context() const;
26850  void set_current_context(SgNamedType* current_context);
26851 
26852  public:
26853  SgName get_array_index_list() const;
26854  void set_array_index_list(SgName array_index_list);
26855 
26856 
26857  public:
26858  SgNamespaceDeclarationStatement* get_current_namespace() const;
26859  void set_current_namespace(SgNamespaceDeclarationStatement* current_namespace);
26860 
26861 
26862  public:
26863  bool get_outputCodeGenerationFormatDelimiters() const;
26864  void set_outputCodeGenerationFormatDelimiters(bool outputCodeGenerationFormatDelimiters);
26865 
26866  public:
26867  SgQualifiedNamePtrList get_qualifiedNameList() const;
26868  void set_qualifiedNameList(SgQualifiedNamePtrList qualifiedNameList);
26869 
26870  public:
26871  SgFunctionCallExp* get_current_function_call() const;
26872  void set_current_function_call(SgFunctionCallExp* current_function_call);
26873 
26874  public:
26875  SgScopeStatement* get_current_scope() const;
26876  void set_current_scope(SgScopeStatement* current_scope);
26877 
26878  public:
26879  SgNode* get_reference_node_for_qualification() const;
26880  void set_reference_node_for_qualification(SgNode* reference_node_for_qualification);
26881 
26882  public:
26883  int get_name_qualification_length() const;
26884  void set_name_qualification_length(int name_qualification_length);
26885 
26886  public:
26887  bool get_type_elaboration_required() const;
26888  void set_type_elaboration_required(bool type_elaboration_required);
26889 
26890  public:
26891  bool get_global_qualification_required() const;
26892  void set_global_qualification_required(bool global_qualification_required);
26893 
26894  public:
26895  int get_nestingLevel() const;
26896  void set_nestingLevel(int nestingLevel);
26897 
26898  public:
26899  SgFile::languageOption_enum get_language() const;
26900  void set_language(SgFile::languageOption_enum language);
26901 
26902  public:
26903  SgSourceFile* get_current_source_file() const;
26904  void set_current_source_file(SgSourceFile* current_source_file);
26905 
26906  public:
26907  bool get_use_generated_name_for_template_arguments() const;
26908  void set_use_generated_name_for_template_arguments(bool use_generated_name_for_template_arguments);
26909 
26910  public:
26911  bool get_user_defined_literal() const;
26912  void set_user_defined_literal(bool user_defined_literal);
26913 
26914  public:
26915  SgDeclarationStatement* get_declstatement_associated_with_type() const;
26916  void set_declstatement_associated_with_type(SgDeclarationStatement* declstatement_associated_with_type);
26917 
26918 
26919  public:
26920  bool get_context_for_added_parentheses() const;
26921  void set_context_for_added_parentheses(bool context_for_added_parentheses);
26922 
26923 
26924  public:
26925  virtual ~SgUnparse_Info();
26926 
26927  protected:
26928 // Start of memberFunctionString
26929 SgBitVector p_unparse_attribute;
26930 
26931 // End of memberFunctionString
26932 // Start of memberFunctionString
26933 int p_access_attribute;
26934 
26935 // End of memberFunctionString
26936 // Start of memberFunctionString
26937 int p_nested_expression;
26938 
26939 // End of memberFunctionString
26940 // Start of memberFunctionString
26941 std::string p_operator_name;
26942 
26943 // End of memberFunctionString
26944 // Start of memberFunctionString
26945 SgName p_var_name;
26946 
26947 // End of memberFunctionString
26948 // Start of memberFunctionString
26949 SgDeclarationStatement* p_declstatement_ptr;
26950 
26951 // End of memberFunctionString
26952 // Start of memberFunctionString
26953 SgDeclarationStatement* p_declaration_of_context;
26954 
26955 // End of memberFunctionString
26956 // Start of memberFunctionString
26957 SgNamedType* p_current_context;
26958 
26959 // End of memberFunctionString
26960 // Start of memberFunctionString
26961 SgName p_array_index_list;
26962 
26963 // End of memberFunctionString
26964 // Start of memberFunctionString
26965 static SgTypePtrList p_structureTagProcessingList;
26966 
26967 // End of memberFunctionString
26968 // Start of memberFunctionString
26969 SgNamespaceDeclarationStatement* p_current_namespace;
26970 
26971 // End of memberFunctionString
26972 // Start of memberFunctionString
26973 static bool p_forceDefaultConstructorToTriggerError;
26974 
26975 // End of memberFunctionString
26976 // Start of memberFunctionString
26977 bool p_outputCodeGenerationFormatDelimiters;
26978 
26979 // End of memberFunctionString
26980 // Start of memberFunctionString
26981 SgQualifiedNamePtrList p_qualifiedNameList;
26982 
26983 // End of memberFunctionString
26984 // Start of memberFunctionString
26985 SgFunctionCallExp* p_current_function_call;
26986 
26987 // End of memberFunctionString
26988 // Start of memberFunctionString
26989 SgScopeStatement* p_current_scope;
26990 
26991 // End of memberFunctionString
26992 // Start of memberFunctionString
26993 SgNode* p_reference_node_for_qualification;
26994 
26995 // End of memberFunctionString
26996 // Start of memberFunctionString
26997 int p_name_qualification_length;
26998 
26999 // End of memberFunctionString
27000 // Start of memberFunctionString
27001 bool p_type_elaboration_required;
27002 
27003 // End of memberFunctionString
27004 // Start of memberFunctionString
27005 bool p_global_qualification_required;
27006 
27007 // End of memberFunctionString
27008 // Start of memberFunctionString
27009 int p_nestingLevel;
27010 
27011 // End of memberFunctionString
27012 // Start of memberFunctionString
27013 SgFile::languageOption_enum p_language;
27014 
27015 // End of memberFunctionString
27016 // Start of memberFunctionString
27017 SgSourceFile* p_current_source_file;
27018 
27019 // End of memberFunctionString
27020 // Start of memberFunctionString
27021 bool p_use_generated_name_for_template_arguments;
27022 
27023 // End of memberFunctionString
27024 // Start of memberFunctionString
27025 bool p_user_defined_literal;
27026 
27027 // End of memberFunctionString
27028 // Start of memberFunctionString
27029 SgDeclarationStatement* p_declstatement_associated_with_type;
27030 
27031 // End of memberFunctionString
27032 // Start of memberFunctionString
27033 static bool p_extern_C_with_braces;
27034 
27035 // End of memberFunctionString
27036 // Start of memberFunctionString
27037 bool p_context_for_added_parentheses;
27038 
27039 // End of memberFunctionString
27040 
27041 
27042 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
27043 
27044 
27045  };
27046 #endif
27047 
27048 // postdeclarations for SgUnparse_Info
27049 
27050 /* #line 27051 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
27051 
27052 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
27053 
27054 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
27055 
27056 
27057 /* #line 27058 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
27058 
27059 
27060 
27061 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
27062 
27063 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
27064 // This code is automatically generated for each
27065 // terminal and non-terminal within the defined
27066 // grammar. There is a simple way to change the
27067 // code to fix bugs etc. See the ROSE README file
27068 // for directions.
27069 
27070 // tps: (02/22/2010): Adding DLL export requirements
27071 #include "rosedll.h"
27072 
27073 // predeclarations for SgBaseClass
27074 
27075 /* #line 27076 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
27076 
27077 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
27078 
27079 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
27080 
27081 #if 1
27082 // Class Definition for SgBaseClass
27083 class ROSE_DLL_API SgBaseClass : public SgSupport
27084  {
27085  public:
27086 
27087 
27088 /* #line 27089 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
27089 
27090  virtual SgNode* copy ( SgCopyHelp& help) const override;
27091 // Start of memberFunctionString
27092 /* #line 5109 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
27093 
27094  public:
27095  void post_construction_initialization() override;
27096 
27097  // This function should be autogenerated
27098  // SgBaseClass(int specifier=0, SgClassDeclaration* ptr = NULL, int dir = 0);
27099  SgBaseClass(const SgBaseClass& ptr);
27100  // ~SgBaseClass();
27101  SgBaseClass& operator= (const SgBaseClass& ptr);
27102  // int get_base_specifier() const;
27103  // SgClassDeclaration* get_base_class() const;
27104  // SgClassDeclaration* replace_base_class(SgClassDeclaration*);
27105 
27106  bool operator== (const SgBaseClass& ) const;
27107  bool operator< (const SgBaseClass&) const;
27108 
27109 #if 0
27110  // DQ (1/21/2019): This should be an automatically generated access function.
27111  // DQ (4/25/2004): Part of new modifier interface
27112  SgBaseClassModifier & get_baseClassModifier();
27113 #endif
27114 
27115 #if ALT_FIXUP_COPY
27116  // DQ (11/7/2007): These need to be called separately (see documentation)
27117  virtual void fixupCopy_scopes (SgNode* copy, SgCopyHelp & help) const override;
27118  virtual void fixupCopy_symbols (SgNode* copy, SgCopyHelp & help) const override;
27119  virtual void fixupCopy_references (SgNode* copy, SgCopyHelp & help) const override;
27120 #else
27121  // DQ (10/20/2007): Added fixup function to set scopes not set properly by the ROSETTA generated copy!
27122  virtual void fixupCopy(SgNode* copy, SgCopyHelp & help) const;
27123 #endif
27124 
27125  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
27126  int get_name_qualification_length() const;
27127  void set_name_qualification_length(int name_qualification_length);
27128 
27129  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
27130  bool get_type_elaboration_required() const;
27131  void set_type_elaboration_required(bool type_elaboration_required);
27132 
27133  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
27134  bool get_global_qualification_required() const;
27135  void set_global_qualification_required(bool global_qualification_required);
27136 
27137 #if 0
27138  // These are now autogenerated
27139  private:
27140  int p_specifier;
27141  int p_direct;
27142  SgClassDeclaration* p_ptr;
27143 #endif
27144 
27145  // DQ (5/29/2011): Added to support for new qualified name generation
27147  SgName get_qualified_name_prefix() const;
27148 
27149 
27150 
27151 // End of memberFunctionString
27152 // Start of memberFunctionString
27153 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
27154 
27155 // *** COMMON CODE SECTION BEGINS HERE ***
27156 
27157  public:
27158 
27159  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
27160  // and not required which is required to match the other aspects of the copy mechanism code generation.
27161  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
27162  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
27163  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
27164  // virtual SgNode* copy ( const SgCopyHelp & help) const;
27165 
27167  virtual std::string class_name() const override;
27168 
27170  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
27171 
27173  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
27174  // static const VariantT static_variant = V_SgBaseClass;
27175  enum { static_variant = V_SgBaseClass };
27176 
27177  /* the generated cast function */
27179  ROSE_DLL_API friend SgBaseClass* isSgBaseClass( SgNode * s );
27180 
27182  ROSE_DLL_API friend const SgBaseClass* isSgBaseClass( const SgNode * s );
27183 
27184  // ******************************************
27185  // * Memory Pool / New / Delete
27186  // ******************************************
27187 
27188  public:
27190  static const unsigned pool_size; //
27192  static std::vector<unsigned char *> pools; //
27194  static SgBaseClass * next_node; //
27195 
27197  static unsigned long initializeStorageClassArray(SgBaseClassStorageClass *); //
27198 
27200  static void clearMemoryPool(); //
27201  static void deleteMemoryPool(); //
27202 
27204  static void extendMemoryPoolForFileIO(); //
27205 
27207  static SgBaseClass * getPointerFromGlobalIndex(unsigned long); //
27209  static SgBaseClass * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
27210 
27212  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
27214  static void resetValidFreepointers(); //
27216  static unsigned long getNumberOfLastValidPointer(); //
27217 
27218 
27219 #if defined(INLINE_FUNCTIONS)
27220 
27221  inline void *operator new (size_t size);
27222 #else
27223 
27224  void *operator new (size_t size);
27225 #endif
27226 
27227  void operator delete (void* pointer, size_t size);
27228 
27229  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
27230  void operator delete (void* pointer)
27231  {
27232  // This is the generated delete operator...
27233  SgBaseClass::operator delete (pointer,sizeof(SgBaseClass));
27234  }
27235 
27237  static size_t numberOfNodes();
27238 
27240  static size_t memoryUsage();
27241 
27242  // End of scope which started in IR nodes specific code
27243  /* */
27244 
27245  /* name Internal Functions
27246  \brief Internal functions ... incomplete-documentation
27247 
27248  These functions have been made public as part of the design, but they are suggested for internal use
27249  or by particularly knowledgeable users for specialized tools or applications.
27250 
27251  \internal We could not make these private because they are required by user for special purposes. And
27252  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
27253 
27254  */
27255 
27256  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
27257  // overridden in every class by *generated* implementation
27259  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
27260  // MS: 06/28/02 container of names of variables or container indices
27261  // used used in the traversal to access AST successor nodes
27262  // overridden in every class by *generated* implementation
27265  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
27266 
27267  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
27268  // than all the vector copies. The implementation for these functions is generated for each class.
27270  virtual size_t get_numberOfTraversalSuccessors() override;
27272  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
27274  virtual size_t get_childIndex(SgNode *child) override;
27275 
27276 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
27277  // MS: 08/16/2002 method for generating RTI information
27279  virtual RTIReturnType roseRTI() override;
27280 #endif
27281  /* */
27282 
27283 
27284 
27285  /* name Deprecated Functions
27286  \brief Deprecated functions ... incomplete-documentation
27287 
27288  These functions have been deprecated from use.
27289  */
27290  /* */
27291 
27293  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
27294 
27295  // JJW (10/16/2008): Changed to a single function in Node.code, and put
27296  // getVariant() in #if 0 block to prevent confusing Doxygen
27297 #if 0
27298 
27299  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
27301  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
27302 #endif
27303  /* */
27304 
27305 
27306 
27307 
27308  public:
27309  /* name Traversal Support Functions
27310  \brief Traversal support functions ... incomplete-documentation
27311 
27312  These functions have been made public as part of the design, but they are suggested for internal use
27313  or by particularly knowledgable users for specialized tools or applications.
27314  */
27315  /* */
27316 
27317  // DQ (11/26/2005): Support for visitor pattern mechanims
27318  // (inferior to ROSE traversal mechanism, experimental).
27322 
27323  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
27325  virtual void accept (ROSE_VisitorPattern & visitor) override;
27326 
27327  // DQ (12/26/2005): Support for traversal based on the memory pool
27330  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
27331 
27335 
27336  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
27337  // This traversal helps support internal tools that call static member functions.
27338  // note: this function operates on the memory pools.
27341  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
27342  /* */
27343 
27344 
27345  public:
27346  /* name Memory Allocation Functions
27347  \brief Memory allocations functions ... incomplete-documentation
27348 
27349  These functions have been made public as part of the design, but they are suggested for internal use
27350  or by particularly knowledgable users for specialized tools or applications.
27351  */
27352  /* */
27353 
27364  virtual bool isInMemoryPool() override;
27365 
27376  virtual void checkDataMemberPointersIfInMemoryPool() override;
27377 
27378  // DQ (4/30/2006): Modified to be a const function.
27393  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
27394 
27404  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
27405 
27417  virtual long getChildIndex( SgNode* childNode ) const override;
27418 
27419  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
27420  // comment here (changed to be a C style comment and not be a doxygen comment).
27421  /* \brief Constructor for use by AST File I/O Mechanism
27422 
27423  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
27424  which obtained via fast binary file I/O from disk.
27425  */
27426  // SgBaseClass( SgBaseClassStorageClass& source );
27427 
27428 
27429 
27430 
27431 
27432  // JH (10/24/2005): methods added to support the ast file IO
27433  private:
27434 
27435  /* name AST Memory Allocation Support Functions
27436  \brief Memory allocations support....
27437 
27438  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
27439  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
27440  and support the AST File I/O Mechanism.
27441  */
27442  /* */
27443 
27444  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
27445  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
27446  that I use the same type everywhere, if any changes are made. THe second one declares the type
27447  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
27448  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
27449  a correspinding one in the AST_FILE_IO class!
27450  */
27451  // DQ (9/2/2015): This typedef is no longer used, we can't define the
27452  // comment here (changed to be a C style comment and not be a doxygen comment).
27453  /* \brief Typedef used for low level memory access.
27454  */
27455  // typedef unsigned char* TestType;
27456 
27457  // DQ (9/2/2015): This typedef is no longer used, we can't define the
27458  // comment here (changed to be a C style comment and not be a doxygen comment).
27459  /* \brief Typedef used to hold memory addresses as values.
27460  */
27461  // typedef unsigned long AddressType;
27462 
27463 
27464 
27465  // necessary, to have direct access to the p_freepointer and the private methods !
27467  friend class AST_FILE_IO;
27468 
27470  friend class SgBaseClassStorageClass;
27471 
27473  friend class AstSpecificDataManagingClass;
27474 
27476  friend class AstSpecificDataManagingClassStorageClass;
27477 
27478  public:
27480  SgBaseClass( const SgBaseClassStorageClass& source );
27481 
27482  // private: // JJW hack
27483  /*
27484  name AST Memory Allocation Support Variables
27485  Memory allocations support variables
27486 
27487  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
27488  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
27489  and support the AST File I/O Mechanism.
27490  */
27491  /* */
27492 
27493  public:
27494 
27495  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
27496  // to current node (so that it will work cleanly with build functions to specify patterns).
27497  // virtual SgNode* addRegExpAttribute();
27503  SgBaseClass* addRegExpAttribute(std::string s, AstRegExAttribute* a);
27504 
27505 // *** COMMON CODE SECTION ENDS HERE ***
27506 
27507 
27508 // End of memberFunctionString
27509 // Start of memberFunctionString
27510 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
27511 
27512  // the generated cast function
27513  // friend ROSE_DLL_API SgBaseClass* isSgBaseClass ( SgNode* s );
27514 
27515  typedef SgSupport base_node_type;
27516 
27517 
27518 // End of memberFunctionString
27519 
27520  public:
27521  SgClassDeclaration* get_base_class() const;
27522  void set_base_class(SgClassDeclaration* base_class);
27523 
27524  public:
27525  bool get_isDirectBaseClass() const;
27526  void set_isDirectBaseClass(bool isDirectBaseClass);
27527 
27528  public:
27529  SgBaseClassModifier* get_baseClassModifier() const;
27530  void set_baseClassModifier(SgBaseClassModifier* baseClassModifier);
27531 
27532 
27533 
27534 
27535 
27536  public:
27537  virtual ~SgBaseClass();
27538 
27539 
27540  public:
27541  SgBaseClass(SgClassDeclaration* base_class = NULL, bool isDirectBaseClass = false);
27542 
27543  protected:
27544 // Start of memberFunctionString
27545 SgClassDeclaration* p_base_class;
27546 
27547 // End of memberFunctionString
27548 // Start of memberFunctionString
27549 bool p_isDirectBaseClass;
27550 
27551 // End of memberFunctionString
27552 // Start of memberFunctionString
27553 SgBaseClassModifier* p_baseClassModifier;
27554 
27555 // End of memberFunctionString
27556 // Start of memberFunctionString
27557 int p_name_qualification_length;
27558 
27559 // End of memberFunctionString
27560 // Start of memberFunctionString
27561 bool p_type_elaboration_required;
27562 
27563 // End of memberFunctionString
27564 // Start of memberFunctionString
27565 bool p_global_qualification_required;
27566 
27567 // End of memberFunctionString
27568 
27569 
27570 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
27571 
27572 
27573  };
27574 #endif
27575 
27576 // postdeclarations for SgBaseClass
27577 
27578 /* #line 27579 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
27579 
27580 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
27581 
27582 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
27583 
27584 
27585 /* #line 27586 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
27586 
27587 
27588 
27589 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
27590 
27591 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
27592 // This code is automatically generated for each
27593 // terminal and non-terminal within the defined
27594 // grammar. There is a simple way to change the
27595 // code to fix bugs etc. See the ROSE README file
27596 // for directions.
27597 
27598 // tps: (02/22/2010): Adding DLL export requirements
27599 #include "rosedll.h"
27600 
27601 // predeclarations for SgExpBaseClass
27602 
27603 /* #line 27604 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
27604 
27605 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
27606 
27607 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
27608 
27609 #if 1
27610 // Class Definition for SgExpBaseClass
27611 class ROSE_DLL_API SgExpBaseClass : public SgBaseClass
27612  {
27613  public:
27614 
27615 
27616 /* #line 27617 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
27617 
27618  virtual SgNode* copy ( SgCopyHelp& help) const override;
27619 // Start of memberFunctionString
27620 /* #line 5167 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
27621 
27622  public:
27623  void post_construction_initialization() override;
27624 
27625 
27626 // End of memberFunctionString
27627 // Start of memberFunctionString
27628 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
27629 
27630 // *** COMMON CODE SECTION BEGINS HERE ***
27631 
27632  public:
27633 
27634  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
27635  // and not required which is required to match the other aspects of the copy mechanism code generation.
27636  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
27637  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
27638  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
27639  // virtual SgNode* copy ( const SgCopyHelp & help) const;
27640 
27642  virtual std::string class_name() const override;
27643 
27645  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
27646 
27648  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
27649  // static const VariantT static_variant = V_SgExpBaseClass;
27650  enum { static_variant = V_SgExpBaseClass };
27651 
27652  /* the generated cast function */
27654  ROSE_DLL_API friend SgExpBaseClass* isSgExpBaseClass( SgNode * s );
27655 
27657  ROSE_DLL_API friend const SgExpBaseClass* isSgExpBaseClass( const SgNode * s );
27658 
27659  // ******************************************
27660  // * Memory Pool / New / Delete
27661  // ******************************************
27662 
27663  public:
27665  static const unsigned pool_size; //
27667  static std::vector<unsigned char *> pools; //
27669  static SgExpBaseClass * next_node; //
27670 
27672  static unsigned long initializeStorageClassArray(SgExpBaseClassStorageClass *); //
27673 
27675  static void clearMemoryPool(); //
27676  static void deleteMemoryPool(); //
27677 
27679  static void extendMemoryPoolForFileIO(); //
27680 
27682  static SgExpBaseClass * getPointerFromGlobalIndex(unsigned long); //
27684  static SgExpBaseClass * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
27685 
27687  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
27689  static void resetValidFreepointers(); //
27691  static unsigned long getNumberOfLastValidPointer(); //
27692 
27693 
27694 #if defined(INLINE_FUNCTIONS)
27695 
27696  inline void *operator new (size_t size);
27697 #else
27698 
27699  void *operator new (size_t size);
27700 #endif
27701 
27702  void operator delete (void* pointer, size_t size);
27703 
27704  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
27705  void operator delete (void* pointer)
27706  {
27707  // This is the generated delete operator...
27708  SgExpBaseClass::operator delete (pointer,sizeof(SgExpBaseClass));
27709  }
27710 
27712  static size_t numberOfNodes();
27713 
27715  static size_t memoryUsage();
27716 
27717  // End of scope which started in IR nodes specific code
27718  /* */
27719 
27720  /* name Internal Functions
27721  \brief Internal functions ... incomplete-documentation
27722 
27723  These functions have been made public as part of the design, but they are suggested for internal use
27724  or by particularly knowledgeable users for specialized tools or applications.
27725 
27726  \internal We could not make these private because they are required by user for special purposes. And
27727  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
27728 
27729  */
27730 
27731  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
27732  // overridden in every class by *generated* implementation
27734  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
27735  // MS: 06/28/02 container of names of variables or container indices
27736  // used used in the traversal to access AST successor nodes
27737  // overridden in every class by *generated* implementation
27740  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
27741 
27742  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
27743  // than all the vector copies. The implementation for these functions is generated for each class.
27745  virtual size_t get_numberOfTraversalSuccessors() override;
27747  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
27749  virtual size_t get_childIndex(SgNode *child) override;
27750 
27751 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
27752  // MS: 08/16/2002 method for generating RTI information
27754  virtual RTIReturnType roseRTI() override;
27755 #endif
27756  /* */
27757 
27758 
27759 
27760  /* name Deprecated Functions
27761  \brief Deprecated functions ... incomplete-documentation
27762 
27763  These functions have been deprecated from use.
27764  */
27765  /* */
27766 
27768  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
27769 
27770  // JJW (10/16/2008): Changed to a single function in Node.code, and put
27771  // getVariant() in #if 0 block to prevent confusing Doxygen
27772 #if 0
27773 
27774  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
27776  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
27777 #endif
27778  /* */
27779 
27780 
27781 
27782 
27783  public:
27784  /* name Traversal Support Functions
27785  \brief Traversal support functions ... incomplete-documentation
27786 
27787  These functions have been made public as part of the design, but they are suggested for internal use
27788  or by particularly knowledgable users for specialized tools or applications.
27789  */
27790  /* */
27791 
27792  // DQ (11/26/2005): Support for visitor pattern mechanims
27793  // (inferior to ROSE traversal mechanism, experimental).
27797 
27798  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
27800  virtual void accept (ROSE_VisitorPattern & visitor) override;
27801 
27802  // DQ (12/26/2005): Support for traversal based on the memory pool
27805  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
27806 
27810 
27811  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
27812  // This traversal helps support internal tools that call static member functions.
27813  // note: this function operates on the memory pools.
27816  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
27817  /* */
27818 
27819 
27820  public:
27821  /* name Memory Allocation Functions
27822  \brief Memory allocations functions ... incomplete-documentation
27823 
27824  These functions have been made public as part of the design, but they are suggested for internal use
27825  or by particularly knowledgable users for specialized tools or applications.
27826  */
27827  /* */
27828 
27839  virtual bool isInMemoryPool() override;
27840 
27851  virtual void checkDataMemberPointersIfInMemoryPool() override;
27852 
27853  // DQ (4/30/2006): Modified to be a const function.
27868  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
27869 
27879  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
27880 
27892  virtual long getChildIndex( SgNode* childNode ) const override;
27893 
27894  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
27895  // comment here (changed to be a C style comment and not be a doxygen comment).
27896  /* \brief Constructor for use by AST File I/O Mechanism
27897 
27898  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
27899  which obtained via fast binary file I/O from disk.
27900  */
27901  // SgExpBaseClass( SgExpBaseClassStorageClass& source );
27902 
27903 
27904 
27905 
27906 
27907  // JH (10/24/2005): methods added to support the ast file IO
27908  private:
27909 
27910  /* name AST Memory Allocation Support Functions
27911  \brief Memory allocations support....
27912 
27913  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
27914  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
27915  and support the AST File I/O Mechanism.
27916  */
27917  /* */
27918 
27919  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
27920  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
27921  that I use the same type everywhere, if any changes are made. THe second one declares the type
27922  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
27923  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
27924  a correspinding one in the AST_FILE_IO class!
27925  */
27926  // DQ (9/2/2015): This typedef is no longer used, we can't define the
27927  // comment here (changed to be a C style comment and not be a doxygen comment).
27928  /* \brief Typedef used for low level memory access.
27929  */
27930  // typedef unsigned char* TestType;
27931 
27932  // DQ (9/2/2015): This typedef is no longer used, we can't define the
27933  // comment here (changed to be a C style comment and not be a doxygen comment).
27934  /* \brief Typedef used to hold memory addresses as values.
27935  */
27936  // typedef unsigned long AddressType;
27937 
27938 
27939 
27940  // necessary, to have direct access to the p_freepointer and the private methods !
27942  friend class AST_FILE_IO;
27943 
27945  friend class SgExpBaseClassStorageClass;
27946 
27948  friend class AstSpecificDataManagingClass;
27949 
27951  friend class AstSpecificDataManagingClassStorageClass;
27952 
27953  public:
27955  SgExpBaseClass( const SgExpBaseClassStorageClass& source );
27956 
27957  // private: // JJW hack
27958  /*
27959  name AST Memory Allocation Support Variables
27960  Memory allocations support variables
27961 
27962  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
27963  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
27964  and support the AST File I/O Mechanism.
27965  */
27966  /* */
27967 
27968  public:
27969 
27970  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
27971  // to current node (so that it will work cleanly with build functions to specify patterns).
27972  // virtual SgNode* addRegExpAttribute();
27979 
27980 // *** COMMON CODE SECTION ENDS HERE ***
27981 
27982 
27983 // End of memberFunctionString
27984 // Start of memberFunctionString
27985 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
27986 
27987  // the generated cast function
27988  // friend ROSE_DLL_API SgExpBaseClass* isSgExpBaseClass ( SgNode* s );
27989 
27990  typedef SgBaseClass base_node_type;
27991 
27992 
27993 // End of memberFunctionString
27994 
27995  public:
27996  SgExpression* get_base_class_exp() const;
27997  void set_base_class_exp(SgExpression* base_class_exp);
27998 
27999 
28000  public:
28001  virtual ~SgExpBaseClass();
28002 
28003 
28004  public:
28005  SgExpBaseClass(SgClassDeclaration* base_class = NULL, bool isDirectBaseClass = false, SgExpression* base_class_exp = NULL);
28006 
28007  protected:
28008 // Start of memberFunctionString
28009 SgExpression* p_base_class_exp;
28010 
28011 // End of memberFunctionString
28012 
28013 
28014 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
28015 
28016 
28017  };
28018 #endif
28019 
28020 // postdeclarations for SgExpBaseClass
28021 
28022 /* #line 28023 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
28023 
28024 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
28025 
28026 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
28027 
28028 
28029 /* #line 28030 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
28030 
28031 
28032 
28033 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
28034 
28035 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
28036 // This code is automatically generated for each
28037 // terminal and non-terminal within the defined
28038 // grammar. There is a simple way to change the
28039 // code to fix bugs etc. See the ROSE README file
28040 // for directions.
28041 
28042 // tps: (02/22/2010): Adding DLL export requirements
28043 #include "rosedll.h"
28044 
28045 // predeclarations for SgNonrealBaseClass
28046 
28047 /* #line 28048 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
28048 
28049 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
28050 
28051 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
28052 
28053 #if 1
28054 // Class Definition for SgNonrealBaseClass
28055 class ROSE_DLL_API SgNonrealBaseClass : public SgBaseClass
28056  {
28057  public:
28058 
28059 
28060 /* #line 28061 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
28061 
28062  virtual SgNode* copy ( SgCopyHelp& help) const override;
28063 // Start of memberFunctionString
28064 /* #line 5172 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
28065 
28066  public:
28067  void post_construction_initialization() override;
28068 
28069 
28070 // End of memberFunctionString
28071 // Start of memberFunctionString
28072 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
28073 
28074 // *** COMMON CODE SECTION BEGINS HERE ***
28075 
28076  public:
28077 
28078  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
28079  // and not required which is required to match the other aspects of the copy mechanism code generation.
28080  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
28081  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
28082  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
28083  // virtual SgNode* copy ( const SgCopyHelp & help) const;
28084 
28086  virtual std::string class_name() const override;
28087 
28089  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
28090 
28092  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
28093  // static const VariantT static_variant = V_SgNonrealBaseClass;
28094  enum { static_variant = V_SgNonrealBaseClass };
28095 
28096  /* the generated cast function */
28098  ROSE_DLL_API friend SgNonrealBaseClass* isSgNonrealBaseClass( SgNode * s );
28099 
28101  ROSE_DLL_API friend const SgNonrealBaseClass* isSgNonrealBaseClass( const SgNode * s );
28102 
28103  // ******************************************
28104  // * Memory Pool / New / Delete
28105  // ******************************************
28106 
28107  public:
28109  static const unsigned pool_size; //
28111  static std::vector<unsigned char *> pools; //
28113  static SgNonrealBaseClass * next_node; //
28114 
28116  static unsigned long initializeStorageClassArray(SgNonrealBaseClassStorageClass *); //
28117 
28119  static void clearMemoryPool(); //
28120  static void deleteMemoryPool(); //
28121 
28123  static void extendMemoryPoolForFileIO(); //
28124 
28126  static SgNonrealBaseClass * getPointerFromGlobalIndex(unsigned long); //
28128  static SgNonrealBaseClass * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
28129 
28131  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
28133  static void resetValidFreepointers(); //
28135  static unsigned long getNumberOfLastValidPointer(); //
28136 
28137 
28138 #if defined(INLINE_FUNCTIONS)
28139 
28140  inline void *operator new (size_t size);
28141 #else
28142 
28143  void *operator new (size_t size);
28144 #endif
28145 
28146  void operator delete (void* pointer, size_t size);
28147 
28148  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
28149  void operator delete (void* pointer)
28150  {
28151  // This is the generated delete operator...
28152  SgNonrealBaseClass::operator delete (pointer,sizeof(SgNonrealBaseClass));
28153  }
28154 
28156  static size_t numberOfNodes();
28157 
28159  static size_t memoryUsage();
28160 
28161  // End of scope which started in IR nodes specific code
28162  /* */
28163 
28164  /* name Internal Functions
28165  \brief Internal functions ... incomplete-documentation
28166 
28167  These functions have been made public as part of the design, but they are suggested for internal use
28168  or by particularly knowledgeable users for specialized tools or applications.
28169 
28170  \internal We could not make these private because they are required by user for special purposes. And
28171  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
28172 
28173  */
28174 
28175  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
28176  // overridden in every class by *generated* implementation
28178  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
28179  // MS: 06/28/02 container of names of variables or container indices
28180  // used used in the traversal to access AST successor nodes
28181  // overridden in every class by *generated* implementation
28184  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
28185 
28186  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
28187  // than all the vector copies. The implementation for these functions is generated for each class.
28189  virtual size_t get_numberOfTraversalSuccessors() override;
28191  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
28193  virtual size_t get_childIndex(SgNode *child) override;
28194 
28195 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
28196  // MS: 08/16/2002 method for generating RTI information
28198  virtual RTIReturnType roseRTI() override;
28199 #endif
28200  /* */
28201 
28202 
28203 
28204  /* name Deprecated Functions
28205  \brief Deprecated functions ... incomplete-documentation
28206 
28207  These functions have been deprecated from use.
28208  */
28209  /* */
28210 
28212  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
28213 
28214  // JJW (10/16/2008): Changed to a single function in Node.code, and put
28215  // getVariant() in #if 0 block to prevent confusing Doxygen
28216 #if 0
28217 
28218  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
28220  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
28221 #endif
28222  /* */
28223 
28224 
28225 
28226 
28227  public:
28228  /* name Traversal Support Functions
28229  \brief Traversal support functions ... incomplete-documentation
28230 
28231  These functions have been made public as part of the design, but they are suggested for internal use
28232  or by particularly knowledgable users for specialized tools or applications.
28233  */
28234  /* */
28235 
28236  // DQ (11/26/2005): Support for visitor pattern mechanims
28237  // (inferior to ROSE traversal mechanism, experimental).
28241 
28242  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
28244  virtual void accept (ROSE_VisitorPattern & visitor) override;
28245 
28246  // DQ (12/26/2005): Support for traversal based on the memory pool
28249  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
28250 
28254 
28255  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
28256  // This traversal helps support internal tools that call static member functions.
28257  // note: this function operates on the memory pools.
28260  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
28261  /* */
28262 
28263 
28264  public:
28265  /* name Memory Allocation Functions
28266  \brief Memory allocations functions ... incomplete-documentation
28267 
28268  These functions have been made public as part of the design, but they are suggested for internal use
28269  or by particularly knowledgable users for specialized tools or applications.
28270  */
28271  /* */
28272 
28283  virtual bool isInMemoryPool() override;
28284 
28295  virtual void checkDataMemberPointersIfInMemoryPool() override;
28296 
28297  // DQ (4/30/2006): Modified to be a const function.
28312  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
28313 
28323  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
28324 
28336  virtual long getChildIndex( SgNode* childNode ) const override;
28337 
28338  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
28339  // comment here (changed to be a C style comment and not be a doxygen comment).
28340  /* \brief Constructor for use by AST File I/O Mechanism
28341 
28342  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
28343  which obtained via fast binary file I/O from disk.
28344  */
28345  // SgNonrealBaseClass( SgNonrealBaseClassStorageClass& source );
28346 
28347 
28348 
28349 
28350 
28351  // JH (10/24/2005): methods added to support the ast file IO
28352  private:
28353 
28354  /* name AST Memory Allocation Support Functions
28355  \brief Memory allocations support....
28356 
28357  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
28358  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
28359  and support the AST File I/O Mechanism.
28360  */
28361  /* */
28362 
28363  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
28364  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
28365  that I use the same type everywhere, if any changes are made. THe second one declares the type
28366  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
28367  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
28368  a correspinding one in the AST_FILE_IO class!
28369  */
28370  // DQ (9/2/2015): This typedef is no longer used, we can't define the
28371  // comment here (changed to be a C style comment and not be a doxygen comment).
28372  /* \brief Typedef used for low level memory access.
28373  */
28374  // typedef unsigned char* TestType;
28375 
28376  // DQ (9/2/2015): This typedef is no longer used, we can't define the
28377  // comment here (changed to be a C style comment and not be a doxygen comment).
28378  /* \brief Typedef used to hold memory addresses as values.
28379  */
28380  // typedef unsigned long AddressType;
28381 
28382 
28383 
28384  // necessary, to have direct access to the p_freepointer and the private methods !
28386  friend class AST_FILE_IO;
28387 
28389  friend class SgNonrealBaseClassStorageClass;
28390 
28392  friend class AstSpecificDataManagingClass;
28393 
28395  friend class AstSpecificDataManagingClassStorageClass;
28396 
28397  public:
28399  SgNonrealBaseClass( const SgNonrealBaseClassStorageClass& source );
28400 
28401  // private: // JJW hack
28402  /*
28403  name AST Memory Allocation Support Variables
28404  Memory allocations support variables
28405 
28406  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
28407  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
28408  and support the AST File I/O Mechanism.
28409  */
28410  /* */
28411 
28412  public:
28413 
28414  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
28415  // to current node (so that it will work cleanly with build functions to specify patterns).
28416  // virtual SgNode* addRegExpAttribute();
28423 
28424 // *** COMMON CODE SECTION ENDS HERE ***
28425 
28426 
28427 // End of memberFunctionString
28428 // Start of memberFunctionString
28429 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
28430 
28431  // the generated cast function
28432  // friend ROSE_DLL_API SgNonrealBaseClass* isSgNonrealBaseClass ( SgNode* s );
28433 
28434  typedef SgBaseClass base_node_type;
28435 
28436 
28437 // End of memberFunctionString
28438 
28439  public:
28440  SgNonrealDecl* get_base_class_nonreal() const;
28441  void set_base_class_nonreal(SgNonrealDecl* base_class_nonreal);
28442 
28443 
28444  public:
28445  virtual ~SgNonrealBaseClass();
28446 
28447 
28448  public:
28449  SgNonrealBaseClass(SgClassDeclaration* base_class = NULL, bool isDirectBaseClass = false, SgNonrealDecl* base_class_nonreal = NULL);
28450 
28451  protected:
28452 // Start of memberFunctionString
28453 SgNonrealDecl* p_base_class_nonreal;
28454 
28455 // End of memberFunctionString
28456 
28457 
28458 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
28459 
28460 
28461  };
28462 #endif
28463 
28464 // postdeclarations for SgNonrealBaseClass
28465 
28466 /* #line 28467 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
28467 
28468 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
28469 
28470 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
28471 
28472 
28473 /* #line 28474 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
28474 
28475 
28476 
28477 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
28478 
28479 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
28480 // This code is automatically generated for each
28481 // terminal and non-terminal within the defined
28482 // grammar. There is a simple way to change the
28483 // code to fix bugs etc. See the ROSE README file
28484 // for directions.
28485 
28486 // tps: (02/22/2010): Adding DLL export requirements
28487 #include "rosedll.h"
28488 
28489 // predeclarations for SgTypedefSeq
28490 
28491 /* #line 28492 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
28492 
28493 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
28494 
28495 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
28496 
28497 #if 1
28498 // Class Definition for SgTypedefSeq
28499 class ROSE_DLL_API SgTypedefSeq : public SgSupport
28500  {
28501  public:
28502 
28503 
28504 /* #line 28505 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
28505 
28506  virtual SgNode* copy ( SgCopyHelp& help) const override;
28507 // Start of memberFunctionString
28508 /* #line 21009 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
28509 
28510  // Get a const list of input types (types of the parameters list) to this function type (from a cost functionType object)
28512  const SgTypePtrList & get_typedefs() const;
28513 
28514  // Get the list of input types (types of the parameters list) to this function type
28516  SgTypePtrList & get_typedefs();
28517 
28519  void append_typedef( SgType* what);
28520 
28522  void insert_typedef(const SgTypePtrList::iterator& where, SgType* what);
28523 
28524 
28525 
28526 // End of memberFunctionString
28527 // Start of memberFunctionString
28528 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
28529 
28530 // *** COMMON CODE SECTION BEGINS HERE ***
28531 
28532  public:
28533 
28534  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
28535  // and not required which is required to match the other aspects of the copy mechanism code generation.
28536  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
28537  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
28538  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
28539  // virtual SgNode* copy ( const SgCopyHelp & help) const;
28540 
28542  virtual std::string class_name() const override;
28543 
28545  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
28546 
28548  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
28549  // static const VariantT static_variant = V_SgTypedefSeq;
28550  enum { static_variant = V_SgTypedefSeq };
28551 
28552  /* the generated cast function */
28554  ROSE_DLL_API friend SgTypedefSeq* isSgTypedefSeq( SgNode * s );
28555 
28557  ROSE_DLL_API friend const SgTypedefSeq* isSgTypedefSeq( const SgNode * s );
28558 
28559  // ******************************************
28560  // * Memory Pool / New / Delete
28561  // ******************************************
28562 
28563  public:
28565  static const unsigned pool_size; //
28567  static std::vector<unsigned char *> pools; //
28569  static SgTypedefSeq * next_node; //
28570 
28572  static unsigned long initializeStorageClassArray(SgTypedefSeqStorageClass *); //
28573 
28575  static void clearMemoryPool(); //
28576  static void deleteMemoryPool(); //
28577 
28579  static void extendMemoryPoolForFileIO(); //
28580 
28582  static SgTypedefSeq * getPointerFromGlobalIndex(unsigned long); //
28584  static SgTypedefSeq * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
28585 
28587  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
28589  static void resetValidFreepointers(); //
28591  static unsigned long getNumberOfLastValidPointer(); //
28592 
28593 
28594 #if defined(INLINE_FUNCTIONS)
28595 
28596  inline void *operator new (size_t size);
28597 #else
28598 
28599  void *operator new (size_t size);
28600 #endif
28601 
28602  void operator delete (void* pointer, size_t size);
28603 
28604  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
28605  void operator delete (void* pointer)
28606  {
28607  // This is the generated delete operator...
28608  SgTypedefSeq::operator delete (pointer,sizeof(SgTypedefSeq));
28609  }
28610 
28612  static size_t numberOfNodes();
28613 
28615  static size_t memoryUsage();
28616 
28617  // End of scope which started in IR nodes specific code
28618  /* */
28619 
28620  /* name Internal Functions
28621  \brief Internal functions ... incomplete-documentation
28622 
28623  These functions have been made public as part of the design, but they are suggested for internal use
28624  or by particularly knowledgeable users for specialized tools or applications.
28625 
28626  \internal We could not make these private because they are required by user for special purposes. And
28627  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
28628 
28629  */
28630 
28631  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
28632  // overridden in every class by *generated* implementation
28634  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
28635  // MS: 06/28/02 container of names of variables or container indices
28636  // used used in the traversal to access AST successor nodes
28637  // overridden in every class by *generated* implementation
28640  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
28641 
28642  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
28643  // than all the vector copies. The implementation for these functions is generated for each class.
28645  virtual size_t get_numberOfTraversalSuccessors() override;
28647  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
28649  virtual size_t get_childIndex(SgNode *child) override;
28650 
28651 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
28652  // MS: 08/16/2002 method for generating RTI information
28654  virtual RTIReturnType roseRTI() override;
28655 #endif
28656  /* */
28657 
28658 
28659 
28660  /* name Deprecated Functions
28661  \brief Deprecated functions ... incomplete-documentation
28662 
28663  These functions have been deprecated from use.
28664  */
28665  /* */
28666 
28668  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
28669 
28670  // JJW (10/16/2008): Changed to a single function in Node.code, and put
28671  // getVariant() in #if 0 block to prevent confusing Doxygen
28672 #if 0
28673 
28674  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
28676  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
28677 #endif
28678  /* */
28679 
28680 
28681 
28682 
28683  public:
28684  /* name Traversal Support Functions
28685  \brief Traversal support functions ... incomplete-documentation
28686 
28687  These functions have been made public as part of the design, but they are suggested for internal use
28688  or by particularly knowledgable users for specialized tools or applications.
28689  */
28690  /* */
28691 
28692  // DQ (11/26/2005): Support for visitor pattern mechanims
28693  // (inferior to ROSE traversal mechanism, experimental).
28697 
28698  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
28700  virtual void accept (ROSE_VisitorPattern & visitor) override;
28701 
28702  // DQ (12/26/2005): Support for traversal based on the memory pool
28705  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
28706 
28710 
28711  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
28712  // This traversal helps support internal tools that call static member functions.
28713  // note: this function operates on the memory pools.
28716  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
28717  /* */
28718 
28719 
28720  public:
28721  /* name Memory Allocation Functions
28722  \brief Memory allocations functions ... incomplete-documentation
28723 
28724  These functions have been made public as part of the design, but they are suggested for internal use
28725  or by particularly knowledgable users for specialized tools or applications.
28726  */
28727  /* */
28728 
28739  virtual bool isInMemoryPool() override;
28740 
28751  virtual void checkDataMemberPointersIfInMemoryPool() override;
28752 
28753  // DQ (4/30/2006): Modified to be a const function.
28768  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
28769 
28779  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
28780 
28792  virtual long getChildIndex( SgNode* childNode ) const override;
28793 
28794  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
28795  // comment here (changed to be a C style comment and not be a doxygen comment).
28796  /* \brief Constructor for use by AST File I/O Mechanism
28797 
28798  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
28799  which obtained via fast binary file I/O from disk.
28800  */
28801  // SgTypedefSeq( SgTypedefSeqStorageClass& source );
28802 
28803 
28804 
28805 
28806 
28807  // JH (10/24/2005): methods added to support the ast file IO
28808  private:
28809 
28810  /* name AST Memory Allocation Support Functions
28811  \brief Memory allocations support....
28812 
28813  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
28814  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
28815  and support the AST File I/O Mechanism.
28816  */
28817  /* */
28818 
28819  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
28820  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
28821  that I use the same type everywhere, if any changes are made. THe second one declares the type
28822  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
28823  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
28824  a correspinding one in the AST_FILE_IO class!
28825  */
28826  // DQ (9/2/2015): This typedef is no longer used, we can't define the
28827  // comment here (changed to be a C style comment and not be a doxygen comment).
28828  /* \brief Typedef used for low level memory access.
28829  */
28830  // typedef unsigned char* TestType;
28831 
28832  // DQ (9/2/2015): This typedef is no longer used, we can't define the
28833  // comment here (changed to be a C style comment and not be a doxygen comment).
28834  /* \brief Typedef used to hold memory addresses as values.
28835  */
28836  // typedef unsigned long AddressType;
28837 
28838 
28839 
28840  // necessary, to have direct access to the p_freepointer and the private methods !
28842  friend class AST_FILE_IO;
28843 
28845  friend class SgTypedefSeqStorageClass;
28846 
28848  friend class AstSpecificDataManagingClass;
28849 
28851  friend class AstSpecificDataManagingClassStorageClass;
28852 
28853  public:
28855  SgTypedefSeq( const SgTypedefSeqStorageClass& source );
28856 
28857  // private: // JJW hack
28858  /*
28859  name AST Memory Allocation Support Variables
28860  Memory allocations support variables
28861 
28862  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
28863  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
28864  and support the AST File I/O Mechanism.
28865  */
28866  /* */
28867 
28868  public:
28869 
28870  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
28871  // to current node (so that it will work cleanly with build functions to specify patterns).
28872  // virtual SgNode* addRegExpAttribute();
28879 
28880 // *** COMMON CODE SECTION ENDS HERE ***
28881 
28882 
28883 // End of memberFunctionString
28884 // Start of memberFunctionString
28885 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
28886 
28887  // the generated cast function
28888  // friend ROSE_DLL_API SgTypedefSeq* isSgTypedefSeq ( SgNode* s );
28889 
28890  typedef SgSupport base_node_type;
28891 
28892 
28893 // End of memberFunctionString
28894 
28895 
28896 
28897  public:
28898  virtual ~SgTypedefSeq();
28899 
28900 
28901  public:
28902  SgTypedefSeq();
28903 
28904  protected:
28905 // Start of memberFunctionString
28906 SgTypePtrList p_typedefs;
28907 
28908 // End of memberFunctionString
28909 
28910 
28911 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
28912 
28913 
28914  };
28915 #endif
28916 
28917 // postdeclarations for SgTypedefSeq
28918 
28919 /* #line 28920 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
28920 
28921 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
28922 
28923 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
28924 
28925 
28926 /* #line 28927 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
28927 
28928 
28929 
28930 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
28931 
28932 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
28933 // This code is automatically generated for each
28934 // terminal and non-terminal within the defined
28935 // grammar. There is a simple way to change the
28936 // code to fix bugs etc. See the ROSE README file
28937 // for directions.
28938 
28939 // tps: (02/22/2010): Adding DLL export requirements
28940 #include "rosedll.h"
28941 
28942 // predeclarations for SgTemplateParameter
28943 
28944 /* #line 28945 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
28945 
28946 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
28947 
28948 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
28949 
28950 #if 1
28951 // Class Definition for SgTemplateParameter
28952 class ROSE_DLL_API SgTemplateParameter : public SgSupport
28953  {
28954  public:
28955 
28956 
28957 /* #line 28958 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
28958 
28959  virtual SgNode* copy ( SgCopyHelp& help) const override;
28960 // Start of memberFunctionString
28961 /* #line 7600 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
28962 
28963  public:
28964 
28965  // DQ (8/10/2013): We need to unify how to reference the enum values between template parameters and template arguments.
28966  // enum SgTemplateArgument::template_argument_enum;
28967  // typedef SgTemplateArgument::template_argument_enum template_parameter_enum;
28968 
28971  {
28972  parameter_undefined = 0,
28973  type_parameter = 1,
28974  nontype_parameter = 2,
28975  template_parameter = 3
28976  };
28977 
28978  void post_construction_initialization() override;
28979 
28980  // Different constructors for use in building the different types of parameters possible
28981  SgTemplateParameter ( SgType* parameter , SgType* defaultParameter );
28982  SgTemplateParameter ( SgExpression* parameter , SgExpression* defaultParameter );
28983  SgTemplateParameter ( SgTemplateDeclaration* parameter, SgTemplateDeclaration* defaultParameter );
28984 
28985  // DQ (8/10/2013): commonly names functions for SgTemplateParameter and SgTemplateArgument.
28986  static bool is_matching_type (const SgTemplateParameter & X, const SgTemplateParameter & Y);
28987  static bool is_matching_nontype (const SgTemplateParameter & X, const SgTemplateParameter & Y);
28988  static bool is_matching_template(const SgTemplateParameter & X, const SgTemplateParameter & Y);
28989 
28990  // DQ (5/19/2014): This is added to symetry in the functions that are template on either SgTemplateArgument or SgTemplateParameter.
28991  static bool is_matching_template_pack_expansion (const SgTemplateParameter & X, const SgTemplateParameter & Y);
28992 
28993  static bool is_matching_kind (const SgTemplateParameter & X, const SgTemplateParameter & Y);
28994 
28995  SgName get_mangled_name (void) const;
28996 
28997 
28998 
28999 // End of memberFunctionString
29000 // Start of memberFunctionString
29001 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
29002 
29003 // *** COMMON CODE SECTION BEGINS HERE ***
29004 
29005  public:
29006 
29007  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
29008  // and not required which is required to match the other aspects of the copy mechanism code generation.
29009  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
29010  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
29011  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
29012  // virtual SgNode* copy ( const SgCopyHelp & help) const;
29013 
29015  virtual std::string class_name() const override;
29016 
29018  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
29019 
29021  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
29022  // static const VariantT static_variant = V_SgTemplateParameter;
29023  enum { static_variant = V_SgTemplateParameter };
29024 
29025  /* the generated cast function */
29027  ROSE_DLL_API friend SgTemplateParameter* isSgTemplateParameter( SgNode * s );
29028 
29030  ROSE_DLL_API friend const SgTemplateParameter* isSgTemplateParameter( const SgNode * s );
29031 
29032  // ******************************************
29033  // * Memory Pool / New / Delete
29034  // ******************************************
29035 
29036  public:
29038  static const unsigned pool_size; //
29040  static std::vector<unsigned char *> pools; //
29042  static SgTemplateParameter * next_node; //
29043 
29045  static unsigned long initializeStorageClassArray(SgTemplateParameterStorageClass *); //
29046 
29048  static void clearMemoryPool(); //
29049  static void deleteMemoryPool(); //
29050 
29052  static void extendMemoryPoolForFileIO(); //
29053 
29055  static SgTemplateParameter * getPointerFromGlobalIndex(unsigned long); //
29057  static SgTemplateParameter * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
29058 
29060  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
29062  static void resetValidFreepointers(); //
29064  static unsigned long getNumberOfLastValidPointer(); //
29065 
29066 
29067 #if defined(INLINE_FUNCTIONS)
29068 
29069  inline void *operator new (size_t size);
29070 #else
29071 
29072  void *operator new (size_t size);
29073 #endif
29074 
29075  void operator delete (void* pointer, size_t size);
29076 
29077  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
29078  void operator delete (void* pointer)
29079  {
29080  // This is the generated delete operator...
29081  SgTemplateParameter::operator delete (pointer,sizeof(SgTemplateParameter));
29082  }
29083 
29085  static size_t numberOfNodes();
29086 
29088  static size_t memoryUsage();
29089 
29090  // End of scope which started in IR nodes specific code
29091  /* */
29092 
29093  /* name Internal Functions
29094  \brief Internal functions ... incomplete-documentation
29095 
29096  These functions have been made public as part of the design, but they are suggested for internal use
29097  or by particularly knowledgeable users for specialized tools or applications.
29098 
29099  \internal We could not make these private because they are required by user for special purposes. And
29100  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
29101 
29102  */
29103 
29104  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
29105  // overridden in every class by *generated* implementation
29107  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
29108  // MS: 06/28/02 container of names of variables or container indices
29109  // used used in the traversal to access AST successor nodes
29110  // overridden in every class by *generated* implementation
29113  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
29114 
29115  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
29116  // than all the vector copies. The implementation for these functions is generated for each class.
29118  virtual size_t get_numberOfTraversalSuccessors() override;
29120  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
29122  virtual size_t get_childIndex(SgNode *child) override;
29123 
29124 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
29125  // MS: 08/16/2002 method for generating RTI information
29127  virtual RTIReturnType roseRTI() override;
29128 #endif
29129  /* */
29130 
29131 
29132 
29133  /* name Deprecated Functions
29134  \brief Deprecated functions ... incomplete-documentation
29135 
29136  These functions have been deprecated from use.
29137  */
29138  /* */
29139 
29141  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
29142 
29143  // JJW (10/16/2008): Changed to a single function in Node.code, and put
29144  // getVariant() in #if 0 block to prevent confusing Doxygen
29145 #if 0
29146 
29147  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
29149  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
29150 #endif
29151  /* */
29152 
29153 
29154 
29155 
29156  public:
29157  /* name Traversal Support Functions
29158  \brief Traversal support functions ... incomplete-documentation
29159 
29160  These functions have been made public as part of the design, but they are suggested for internal use
29161  or by particularly knowledgable users for specialized tools or applications.
29162  */
29163  /* */
29164 
29165  // DQ (11/26/2005): Support for visitor pattern mechanims
29166  // (inferior to ROSE traversal mechanism, experimental).
29170 
29171  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
29173  virtual void accept (ROSE_VisitorPattern & visitor) override;
29174 
29175  // DQ (12/26/2005): Support for traversal based on the memory pool
29178  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
29179 
29183 
29184  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
29185  // This traversal helps support internal tools that call static member functions.
29186  // note: this function operates on the memory pools.
29189  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
29190  /* */
29191 
29192 
29193  public:
29194  /* name Memory Allocation Functions
29195  \brief Memory allocations functions ... incomplete-documentation
29196 
29197  These functions have been made public as part of the design, but they are suggested for internal use
29198  or by particularly knowledgable users for specialized tools or applications.
29199  */
29200  /* */
29201 
29212  virtual bool isInMemoryPool() override;
29213 
29224  virtual void checkDataMemberPointersIfInMemoryPool() override;
29225 
29226  // DQ (4/30/2006): Modified to be a const function.
29241  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
29242 
29252  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
29253 
29265  virtual long getChildIndex( SgNode* childNode ) const override;
29266 
29267  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
29268  // comment here (changed to be a C style comment and not be a doxygen comment).
29269  /* \brief Constructor for use by AST File I/O Mechanism
29270 
29271  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
29272  which obtained via fast binary file I/O from disk.
29273  */
29274  // SgTemplateParameter( SgTemplateParameterStorageClass& source );
29275 
29276 
29277 
29278 
29279 
29280  // JH (10/24/2005): methods added to support the ast file IO
29281  private:
29282 
29283  /* name AST Memory Allocation Support Functions
29284  \brief Memory allocations support....
29285 
29286  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
29287  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
29288  and support the AST File I/O Mechanism.
29289  */
29290  /* */
29291 
29292  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
29293  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
29294  that I use the same type everywhere, if any changes are made. THe second one declares the type
29295  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
29296  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
29297  a correspinding one in the AST_FILE_IO class!
29298  */
29299  // DQ (9/2/2015): This typedef is no longer used, we can't define the
29300  // comment here (changed to be a C style comment and not be a doxygen comment).
29301  /* \brief Typedef used for low level memory access.
29302  */
29303  // typedef unsigned char* TestType;
29304 
29305  // DQ (9/2/2015): This typedef is no longer used, we can't define the
29306  // comment here (changed to be a C style comment and not be a doxygen comment).
29307  /* \brief Typedef used to hold memory addresses as values.
29308  */
29309  // typedef unsigned long AddressType;
29310 
29311 
29312 
29313  // necessary, to have direct access to the p_freepointer and the private methods !
29315  friend class AST_FILE_IO;
29316 
29318  friend class SgTemplateParameterStorageClass;
29319 
29321  friend class AstSpecificDataManagingClass;
29322 
29324  friend class AstSpecificDataManagingClassStorageClass;
29325 
29326  public:
29328  SgTemplateParameter( const SgTemplateParameterStorageClass& source );
29329 
29330  // private: // JJW hack
29331  /*
29332  name AST Memory Allocation Support Variables
29333  Memory allocations support variables
29334 
29335  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
29336  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
29337  and support the AST File I/O Mechanism.
29338  */
29339  /* */
29340 
29341  public:
29342 
29343  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
29344  // to current node (so that it will work cleanly with build functions to specify patterns).
29345  // virtual SgNode* addRegExpAttribute();
29352 
29353 // *** COMMON CODE SECTION ENDS HERE ***
29354 
29355 
29356 // End of memberFunctionString
29357 // Start of memberFunctionString
29358 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
29359 
29360  // the generated cast function
29361  // friend ROSE_DLL_API SgTemplateParameter* isSgTemplateParameter ( SgNode* s );
29362 
29363  typedef SgSupport base_node_type;
29364 
29365 
29366 // End of memberFunctionString
29367 
29368  public:
29369  SgTemplateParameter::template_parameter_enum get_parameterType() const;
29370  void set_parameterType(SgTemplateParameter::template_parameter_enum parameterType);
29371 
29372  public:
29373  SgType* get_type() const /* (getDataAccessFunctionPrototypeString) */;
29374  void set_type(SgType* type) /* (getDataAccessFunctionPrototypeString) */;
29375 
29376  public:
29377  SgType* get_defaultTypeParameter() const;
29378  void set_defaultTypeParameter(SgType* defaultTypeParameter);
29379 
29380  public:
29381  SgExpression* get_expression() const;
29382  void set_expression(SgExpression* expression);
29383 
29384  public:
29385  SgExpression* get_defaultExpressionParameter() const;
29386  void set_defaultExpressionParameter(SgExpression* defaultExpressionParameter);
29387 
29388  public:
29389  SgDeclarationStatement* get_templateDeclaration() const;
29390  void set_templateDeclaration(SgDeclarationStatement* templateDeclaration);
29391 
29392  public:
29393  SgDeclarationStatement* get_defaultTemplateDeclarationParameter() const;
29394  void set_defaultTemplateDeclarationParameter(SgDeclarationStatement* defaultTemplateDeclarationParameter);
29395 
29396  public:
29397  SgInitializedName* get_initializedName() const;
29398  void set_initializedName(SgInitializedName* initializedName);
29399 
29400 
29401  public:
29402  virtual ~SgTemplateParameter();
29403 
29404 
29405  public:
29406  SgTemplateParameter(SgTemplateParameter::template_parameter_enum parameterType = parameter_undefined, SgType* type = NULL, SgType* defaultTypeParameter = NULL, SgExpression* expression = NULL, SgExpression* defaultExpressionParameter = NULL, SgDeclarationStatement* templateDeclaration = NULL, SgDeclarationStatement* defaultTemplateDeclarationParameter = NULL, SgInitializedName* initializedName = NULL);
29407 
29408  protected:
29409 // Start of memberFunctionString
29411 
29412 // End of memberFunctionString
29413 // Start of memberFunctionString
29414 SgType* p_type;
29415 
29416 // End of memberFunctionString
29417 // Start of memberFunctionString
29418 SgType* p_defaultTypeParameter;
29419 
29420 // End of memberFunctionString
29421 // Start of memberFunctionString
29422 SgExpression* p_expression;
29423 
29424 // End of memberFunctionString
29425 // Start of memberFunctionString
29426 SgExpression* p_defaultExpressionParameter;
29427 
29428 // End of memberFunctionString
29429 // Start of memberFunctionString
29430 SgDeclarationStatement* p_templateDeclaration;
29431 
29432 // End of memberFunctionString
29433 // Start of memberFunctionString
29434 SgDeclarationStatement* p_defaultTemplateDeclarationParameter;
29435 
29436 // End of memberFunctionString
29437 // Start of memberFunctionString
29438 SgInitializedName* p_initializedName;
29439 
29440 // End of memberFunctionString
29441 
29442 
29443 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
29444 
29445 
29446  };
29447 #endif
29448 
29449 // postdeclarations for SgTemplateParameter
29450 
29451 /* #line 29452 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
29452 
29453 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
29454 
29455 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
29456 
29457 
29458 /* #line 29459 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
29459 
29460 
29461 
29462 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
29463 
29464 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
29465 // This code is automatically generated for each
29466 // terminal and non-terminal within the defined
29467 // grammar. There is a simple way to change the
29468 // code to fix bugs etc. See the ROSE README file
29469 // for directions.
29470 
29471 // tps: (02/22/2010): Adding DLL export requirements
29472 #include "rosedll.h"
29473 
29474 // predeclarations for SgTemplateArgument
29475 
29476 /* #line 29477 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
29477 
29478 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
29479 
29480 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
29481 
29482 #if 1
29483 // Class Definition for SgTemplateArgument
29484 class ROSE_DLL_API SgTemplateArgument : public SgSupport
29485  {
29486  public:
29487 
29488 
29489 /* #line 29490 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
29490 
29491  virtual SgNode* copy ( SgCopyHelp& help) const override;
29492 // Start of memberFunctionString
29493 /* #line 7637 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
29494 
29495  public:
29496 
29499  {
29500  argument_undefined = 0,
29501  type_argument = 1,
29502  nontype_argument = 2,
29503  template_template_argument = 3,
29504  start_of_pack_expansion_argument = 4
29505  };
29506 
29507  void post_construction_initialization() override;
29508 
29509  // Different constructors for use in building the different types of parameters possible
29510  SgTemplateArgument ( SgType* parameter, bool explicitlySpecified );
29511  SgTemplateArgument ( SgExpression* parameter, bool explicitlySpecified );
29512  // SgTemplateArgument ( SgTemplateInstantiationDecl* parameter, bool explicitlySpecified );
29513  SgTemplateArgument ( SgTemplateDeclaration* parameter, bool explicitlySpecified );
29514 
29515  // DQ (7/3/2013): Added new type of template argument type to support varadic template arguments.
29516  SgTemplateArgument ( bool explicitlySpecified );
29517 
29518  // RV (2/2/2006): Added mangling for template arguments.
29520  SgName get_mangled_name (void) const;
29521 
29523  SgScopeStatement* get_scope () const;
29524 
29525 #if ALT_FIXUP_COPY
29526  // DQ (11/7/2007): These need to be called separately (see documentation)
29527  virtual void fixupCopy_scopes (SgNode* copy, SgCopyHelp & help) const override;
29528  virtual void fixupCopy_symbols (SgNode* copy, SgCopyHelp & help) const override;
29529  virtual void fixupCopy_references (SgNode* copy, SgCopyHelp & help) const override;
29530 #else
29531  // DQ (11/5/2007): Added fixup function to set scopes not set properly by the ROSETTA generated copy!
29532  virtual void fixupCopy(SgNode* copy, SgCopyHelp & help) const;
29533 #endif
29534 
29535  // DQ (5/29/2011): Added to support for new qualified name generation
29537  SgName get_qualified_name_prefix() const;
29538 
29539  // DQ (7/24/2011): Added to support for new qualified name generation
29541  SgName get_qualified_name_prefix_for_type() const;
29542 
29543  // DQ (8/10/2013): commonly names functions for SgTemplateParameter and SgTemplateArgument.
29544  static bool is_matching_type (const SgTemplateArgument & X, const SgTemplateArgument & Y);
29545  static bool is_matching_nontype (const SgTemplateArgument & X, const SgTemplateArgument & Y);
29546  static bool is_matching_template(const SgTemplateArgument & X, const SgTemplateArgument & Y);
29547 
29548  // DQ (5/19/2014): This is added to symetry in the functions that are template on either SgTemplateArgument or SgTemplateParameter.
29549  static bool is_matching_template_pack_expansion (const SgTemplateArgument & X, const SgTemplateArgument & Y);
29550 
29551  static bool is_matching_kind (const SgTemplateArgument & X, const SgTemplateArgument & Y);
29552 
29553  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
29554  int get_name_qualification_length() const;
29555  void set_name_qualification_length(int name_qualification_length);
29556 
29557  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
29558  bool get_type_elaboration_required() const;
29559  void set_type_elaboration_required(bool type_elaboration_required);
29560 
29561  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
29562  bool get_global_qualification_required() const;
29563  void set_global_qualification_required(bool global_qualification_required);
29564 
29565  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
29566  bool get_requiresGlobalNameQualificationOnType() const;
29567  void set_requiresGlobalNameQualificationOnType(bool requiresGlobalNameQualificationOnType);
29568 
29569  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
29570  int get_name_qualification_length_for_type() const;
29571  void set_name_qualification_length_for_type(int name_qualification_length_for_type);
29572 
29573  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
29574  bool get_type_elaboration_required_for_type() const;
29575  void set_type_elaboration_required_for_type(bool type_elaboration_required_for_type);
29576 
29577  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
29578  bool get_global_qualification_required_for_type() const;
29579  void set_global_qualification_required_for_type(bool global_qualification_required_for_type);
29580 
29581  // DQ (5/22/2016): Adding display function for debugging.
29582  void display( const std::string & label) const;
29583 
29584  // DQ (3/10/2018): Adding debugging support.
29585  std::string unparseToStringSupport();
29586 
29587  // DQ (2/10/2019): Adding debugging support.
29588  std::string template_argument_kind () const;
29589 
29590  // DQ (2/10/2019): Refactored support for template unparsing.
29591  bool isTemplateArgumentFromAnonymousClass() const;
29592 
29593  // DQ (2/11/2019): Refactored support for logic to control when template arguments are unparsed.
29594  // Temporarily this code is located in the unparseCxx_expressions.C file.
29595  void outputTemplateArgument(bool & skip_unparsing, bool & stop_unparsing);
29596 
29597 
29598 
29599 // End of memberFunctionString
29600 // Start of memberFunctionString
29601 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
29602 
29603 // *** COMMON CODE SECTION BEGINS HERE ***
29604 
29605  public:
29606 
29607  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
29608  // and not required which is required to match the other aspects of the copy mechanism code generation.
29609  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
29610  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
29611  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
29612  // virtual SgNode* copy ( const SgCopyHelp & help) const;
29613 
29615  virtual std::string class_name() const override;
29616 
29618  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
29619 
29621  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
29622  // static const VariantT static_variant = V_SgTemplateArgument;
29623  enum { static_variant = V_SgTemplateArgument };
29624 
29625  /* the generated cast function */
29627  ROSE_DLL_API friend SgTemplateArgument* isSgTemplateArgument( SgNode * s );
29628 
29630  ROSE_DLL_API friend const SgTemplateArgument* isSgTemplateArgument( const SgNode * s );
29631 
29632  // ******************************************
29633  // * Memory Pool / New / Delete
29634  // ******************************************
29635 
29636  public:
29638  static const unsigned pool_size; //
29640  static std::vector<unsigned char *> pools; //
29642  static SgTemplateArgument * next_node; //
29643 
29645  static unsigned long initializeStorageClassArray(SgTemplateArgumentStorageClass *); //
29646 
29648  static void clearMemoryPool(); //
29649  static void deleteMemoryPool(); //
29650 
29652  static void extendMemoryPoolForFileIO(); //
29653 
29655  static SgTemplateArgument * getPointerFromGlobalIndex(unsigned long); //
29657  static SgTemplateArgument * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
29658 
29660  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
29662  static void resetValidFreepointers(); //
29664  static unsigned long getNumberOfLastValidPointer(); //
29665 
29666 
29667 #if defined(INLINE_FUNCTIONS)
29668 
29669  inline void *operator new (size_t size);
29670 #else
29671 
29672  void *operator new (size_t size);
29673 #endif
29674 
29675  void operator delete (void* pointer, size_t size);
29676 
29677  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
29678  void operator delete (void* pointer)
29679  {
29680  // This is the generated delete operator...
29681  SgTemplateArgument::operator delete (pointer,sizeof(SgTemplateArgument));
29682  }
29683 
29685  static size_t numberOfNodes();
29686 
29688  static size_t memoryUsage();
29689 
29690  // End of scope which started in IR nodes specific code
29691  /* */
29692 
29693  /* name Internal Functions
29694  \brief Internal functions ... incomplete-documentation
29695 
29696  These functions have been made public as part of the design, but they are suggested for internal use
29697  or by particularly knowledgeable users for specialized tools or applications.
29698 
29699  \internal We could not make these private because they are required by user for special purposes. And
29700  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
29701 
29702  */
29703 
29704  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
29705  // overridden in every class by *generated* implementation
29707  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
29708  // MS: 06/28/02 container of names of variables or container indices
29709  // used used in the traversal to access AST successor nodes
29710  // overridden in every class by *generated* implementation
29713  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
29714 
29715  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
29716  // than all the vector copies. The implementation for these functions is generated for each class.
29718  virtual size_t get_numberOfTraversalSuccessors() override;
29720  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
29722  virtual size_t get_childIndex(SgNode *child) override;
29723 
29724 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
29725  // MS: 08/16/2002 method for generating RTI information
29727  virtual RTIReturnType roseRTI() override;
29728 #endif
29729  /* */
29730 
29731 
29732 
29733  /* name Deprecated Functions
29734  \brief Deprecated functions ... incomplete-documentation
29735 
29736  These functions have been deprecated from use.
29737  */
29738  /* */
29739 
29741  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
29742 
29743  // JJW (10/16/2008): Changed to a single function in Node.code, and put
29744  // getVariant() in #if 0 block to prevent confusing Doxygen
29745 #if 0
29746 
29747  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
29749  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
29750 #endif
29751  /* */
29752 
29753 
29754 
29755 
29756  public:
29757  /* name Traversal Support Functions
29758  \brief Traversal support functions ... incomplete-documentation
29759 
29760  These functions have been made public as part of the design, but they are suggested for internal use
29761  or by particularly knowledgable users for specialized tools or applications.
29762  */
29763  /* */
29764 
29765  // DQ (11/26/2005): Support for visitor pattern mechanims
29766  // (inferior to ROSE traversal mechanism, experimental).
29770 
29771  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
29773  virtual void accept (ROSE_VisitorPattern & visitor) override;
29774 
29775  // DQ (12/26/2005): Support for traversal based on the memory pool
29778  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
29779 
29783 
29784  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
29785  // This traversal helps support internal tools that call static member functions.
29786  // note: this function operates on the memory pools.
29789  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
29790  /* */
29791 
29792 
29793  public:
29794  /* name Memory Allocation Functions
29795  \brief Memory allocations functions ... incomplete-documentation
29796 
29797  These functions have been made public as part of the design, but they are suggested for internal use
29798  or by particularly knowledgable users for specialized tools or applications.
29799  */
29800  /* */
29801 
29812  virtual bool isInMemoryPool() override;
29813 
29824  virtual void checkDataMemberPointersIfInMemoryPool() override;
29825 
29826  // DQ (4/30/2006): Modified to be a const function.
29841  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
29842 
29852  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
29853 
29865  virtual long getChildIndex( SgNode* childNode ) const override;
29866 
29867  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
29868  // comment here (changed to be a C style comment and not be a doxygen comment).
29869  /* \brief Constructor for use by AST File I/O Mechanism
29870 
29871  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
29872  which obtained via fast binary file I/O from disk.
29873  */
29874  // SgTemplateArgument( SgTemplateArgumentStorageClass& source );
29875 
29876 
29877 
29878 
29879 
29880  // JH (10/24/2005): methods added to support the ast file IO
29881  private:
29882 
29883  /* name AST Memory Allocation Support Functions
29884  \brief Memory allocations support....
29885 
29886  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
29887  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
29888  and support the AST File I/O Mechanism.
29889  */
29890  /* */
29891 
29892  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
29893  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
29894  that I use the same type everywhere, if any changes are made. THe second one declares the type
29895  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
29896  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
29897  a correspinding one in the AST_FILE_IO class!
29898  */
29899  // DQ (9/2/2015): This typedef is no longer used, we can't define the
29900  // comment here (changed to be a C style comment and not be a doxygen comment).
29901  /* \brief Typedef used for low level memory access.
29902  */
29903  // typedef unsigned char* TestType;
29904 
29905  // DQ (9/2/2015): This typedef is no longer used, we can't define the
29906  // comment here (changed to be a C style comment and not be a doxygen comment).
29907  /* \brief Typedef used to hold memory addresses as values.
29908  */
29909  // typedef unsigned long AddressType;
29910 
29911 
29912 
29913  // necessary, to have direct access to the p_freepointer and the private methods !
29915  friend class AST_FILE_IO;
29916 
29918  friend class SgTemplateArgumentStorageClass;
29919 
29921  friend class AstSpecificDataManagingClass;
29922 
29924  friend class AstSpecificDataManagingClassStorageClass;
29925 
29926  public:
29928  SgTemplateArgument( const SgTemplateArgumentStorageClass& source );
29929 
29930  // private: // JJW hack
29931  /*
29932  name AST Memory Allocation Support Variables
29933  Memory allocations support variables
29934 
29935  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
29936  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
29937  and support the AST File I/O Mechanism.
29938  */
29939  /* */
29940 
29941  public:
29942 
29943  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
29944  // to current node (so that it will work cleanly with build functions to specify patterns).
29945  // virtual SgNode* addRegExpAttribute();
29952 
29953 // *** COMMON CODE SECTION ENDS HERE ***
29954 
29955 
29956 // End of memberFunctionString
29957 // Start of memberFunctionString
29958 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
29959 
29960  // the generated cast function
29961  // friend ROSE_DLL_API SgTemplateArgument* isSgTemplateArgument ( SgNode* s );
29962 
29963  typedef SgSupport base_node_type;
29964 
29965 
29966 // End of memberFunctionString
29967 
29968  public:
29969  SgTemplateArgument::template_argument_enum get_argumentType() const;
29970  void set_argumentType(SgTemplateArgument::template_argument_enum argumentType);
29971 
29972  public:
29973  bool get_isArrayBoundUnknownType() const;
29974  void set_isArrayBoundUnknownType(bool isArrayBoundUnknownType);
29975 
29976  public:
29977  SgType* get_type() const /* (getDataAccessFunctionPrototypeString) */;
29978  void set_type(SgType* type) /* (getDataAccessFunctionPrototypeString) */;
29979 
29980  public:
29981  SgType* get_unparsable_type_alias() const;
29982  void set_unparsable_type_alias(SgType* unparsable_type_alias);
29983 
29984  public:
29985  SgExpression* get_expression() const;
29986  void set_expression(SgExpression* expression);
29987 
29988  public:
29989  SgDeclarationStatement* get_templateDeclaration() const;
29990  void set_templateDeclaration(SgDeclarationStatement* templateDeclaration);
29991 
29992  public:
29993  SgInitializedName* get_initializedName() const;
29994  void set_initializedName(SgInitializedName* initializedName);
29995 
29996  public:
29997  bool get_explicitlySpecified() const;
29998  void set_explicitlySpecified(bool explicitlySpecified);
29999 
30000 
30001 
30002 
30003 
30004 
30005 
30006 
30007  public:
30008  SgTemplateArgument* get_previous_instance() const;
30009  void set_previous_instance(SgTemplateArgument* previous_instance);
30010 
30011  public:
30012  SgTemplateArgument* get_next_instance() const;
30013  void set_next_instance(SgTemplateArgument* next_instance);
30014 
30015  public:
30016  bool get_is_pack_element() const;
30017  void set_is_pack_element(bool is_pack_element);
30018 
30019 
30020  public:
30021  virtual ~SgTemplateArgument();
30022 
30023 
30024  public:
30025  SgTemplateArgument(SgTemplateArgument::template_argument_enum argumentType = argument_undefined, bool isArrayBoundUnknownType = false, SgType* type = NULL, SgExpression* expression = NULL, SgDeclarationStatement* templateDeclaration = NULL, bool explicitlySpecified = true);
30026 
30027  protected:
30028 // Start of memberFunctionString
30030 
30031 // End of memberFunctionString
30032 // Start of memberFunctionString
30033 bool p_isArrayBoundUnknownType;
30034 
30035 // End of memberFunctionString
30036 // Start of memberFunctionString
30037 SgType* p_type;
30038 
30039 // End of memberFunctionString
30040 // Start of memberFunctionString
30041 SgType* p_unparsable_type_alias;
30042 
30043 // End of memberFunctionString
30044 // Start of memberFunctionString
30045 SgExpression* p_expression;
30046 
30047 // End of memberFunctionString
30048 // Start of memberFunctionString
30049 SgDeclarationStatement* p_templateDeclaration;
30050 
30051 // End of memberFunctionString
30052 // Start of memberFunctionString
30053 SgInitializedName* p_initializedName;
30054 
30055 // End of memberFunctionString
30056 // Start of memberFunctionString
30057 bool p_explicitlySpecified;
30058 
30059 // End of memberFunctionString
30060 // Start of memberFunctionString
30061 int p_name_qualification_length;
30062 
30063 // End of memberFunctionString
30064 // Start of memberFunctionString
30065 bool p_type_elaboration_required;
30066 
30067 // End of memberFunctionString
30068 // Start of memberFunctionString
30069 bool p_global_qualification_required;
30070 
30071 // End of memberFunctionString
30072 // Start of memberFunctionString
30073 bool p_requiresGlobalNameQualificationOnType;
30074 
30075 // End of memberFunctionString
30076 // Start of memberFunctionString
30077 int p_name_qualification_length_for_type;
30078 
30079 // End of memberFunctionString
30080 // Start of memberFunctionString
30081 bool p_type_elaboration_required_for_type;
30082 
30083 // End of memberFunctionString
30084 // Start of memberFunctionString
30085 bool p_global_qualification_required_for_type;
30086 
30087 // End of memberFunctionString
30088 // Start of memberFunctionString
30089 SgTemplateArgument* p_previous_instance;
30090 
30091 // End of memberFunctionString
30092 // Start of memberFunctionString
30093 SgTemplateArgument* p_next_instance;
30094 
30095 // End of memberFunctionString
30096 // Start of memberFunctionString
30097 bool p_is_pack_element;
30098 
30099 // End of memberFunctionString
30100 
30101 
30102 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
30103 
30104 
30105  };
30106 #endif
30107 
30108 // postdeclarations for SgTemplateArgument
30109 
30110 /* #line 30111 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
30111 
30112 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
30113 
30114 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
30115 
30116 
30117 /* #line 30118 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
30118 
30119 
30120 
30121 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
30122 
30123 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
30124 // This code is automatically generated for each
30125 // terminal and non-terminal within the defined
30126 // grammar. There is a simple way to change the
30127 // code to fix bugs etc. See the ROSE README file
30128 // for directions.
30129 
30130 // tps: (02/22/2010): Adding DLL export requirements
30131 #include "rosedll.h"
30132 
30133 // predeclarations for SgDirectory
30134 
30135 /* #line 30136 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
30136 
30137 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
30138 
30139 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
30140 
30141 #if 1
30142 // Class Definition for SgDirectory
30143 class ROSE_DLL_API SgDirectory : public SgSupport
30144  {
30145  public:
30146 
30147 
30148 /* #line 30149 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
30149 
30150  virtual SgNode* copy ( SgCopyHelp& help) const override;
30151 // Start of memberFunctionString
30152 /* #line 6659 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
30153 
30154  public:
30155  int numberOfFiles() const;
30156  SgFile* get_file(int i) const;
30157 
30158  int numberOfDirectories() const;
30159  SgDirectory* get_directory(int i) const;
30160 
30161  void post_construction_initialization() override;
30162 
30163 
30164 
30165 // End of memberFunctionString
30166 // Start of memberFunctionString
30167 /* #line 2317 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
30168 
30169 
30170  /* name Persistant Attribute Mechanism
30171 
30172  This is the persistant attribute mechanism for attaching attributes to IR nodes across
30173  multiple passes. Note that these attributes are persistant in that they are preserved
30174  if the AST is written out to a file and read in from a file. However, virtual function
30175  in the user-defined class derived from the AstAttribute must be defined for the attribute
30176  to be defined across the boundary of File I/O (simple pack and unpack functions). More
30177  sophisticated mechanisms are available within the AstAttributeMechanism object
30178  (e.g iterating though attributes, etc; get_attributeMechanism() is available if direct
30179  access is required, however mostly only internal tools use this lower level support).
30180 
30181  \internal This used to be a public data member, but has been changed to be a protected
30182  pointer instead. The functional interface of the AstAttributeMechanism is presevered
30183  but some of the names and the syntax for calling the interface have changed. The
30184  pointer to the AstAttributeMechanism is now generated by ROSETTA.
30185  */
30186  /* */
30188  virtual void addNewAttribute(std::string s,AstAttribute* a) override;
30190  virtual AstAttribute* getAttribute(std::string s) const override;
30192  virtual void updateAttribute(std::string s,AstAttribute* a) override; // formerly called: replace in AstAttributeMechanism
30197  virtual void setAttribute(std::string s,AstAttribute* a) override;
30199  virtual void removeAttribute(std::string s) override;
30201  virtual bool attributeExists(std::string s) const override;
30203  virtual int numberOfAttributes() const override;
30204 
30219  /* */
30220 
30221 
30222 
30223 
30224 // End of memberFunctionString
30225 // Start of memberFunctionString
30226 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
30227 
30228 // *** COMMON CODE SECTION BEGINS HERE ***
30229 
30230  public:
30231 
30232  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
30233  // and not required which is required to match the other aspects of the copy mechanism code generation.
30234  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
30235  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
30236  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
30237  // virtual SgNode* copy ( const SgCopyHelp & help) const;
30238 
30240  virtual std::string class_name() const override;
30241 
30243  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
30244 
30246  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
30247  // static const VariantT static_variant = V_SgDirectory;
30248  enum { static_variant = V_SgDirectory };
30249 
30250  /* the generated cast function */
30252  ROSE_DLL_API friend SgDirectory* isSgDirectory( SgNode * s );
30253 
30255  ROSE_DLL_API friend const SgDirectory* isSgDirectory( const SgNode * s );
30256 
30257  // ******************************************
30258  // * Memory Pool / New / Delete
30259  // ******************************************
30260 
30261  public:
30263  static const unsigned pool_size; //
30265  static std::vector<unsigned char *> pools; //
30267  static SgDirectory * next_node; //
30268 
30270  static unsigned long initializeStorageClassArray(SgDirectoryStorageClass *); //
30271 
30273  static void clearMemoryPool(); //
30274  static void deleteMemoryPool(); //
30275 
30277  static void extendMemoryPoolForFileIO(); //
30278 
30280  static SgDirectory * getPointerFromGlobalIndex(unsigned long); //
30282  static SgDirectory * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
30283 
30285  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
30287  static void resetValidFreepointers(); //
30289  static unsigned long getNumberOfLastValidPointer(); //
30290 
30291 
30292 #if defined(INLINE_FUNCTIONS)
30293 
30294  inline void *operator new (size_t size);
30295 #else
30296 
30297  void *operator new (size_t size);
30298 #endif
30299 
30300  void operator delete (void* pointer, size_t size);
30301 
30302  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
30303  void operator delete (void* pointer)
30304  {
30305  // This is the generated delete operator...
30306  SgDirectory::operator delete (pointer,sizeof(SgDirectory));
30307  }
30308 
30310  static size_t numberOfNodes();
30311 
30313  static size_t memoryUsage();
30314 
30315  // End of scope which started in IR nodes specific code
30316  /* */
30317 
30318  /* name Internal Functions
30319  \brief Internal functions ... incomplete-documentation
30320 
30321  These functions have been made public as part of the design, but they are suggested for internal use
30322  or by particularly knowledgeable users for specialized tools or applications.
30323 
30324  \internal We could not make these private because they are required by user for special purposes. And
30325  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
30326 
30327  */
30328 
30329  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
30330  // overridden in every class by *generated* implementation
30332  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
30333  // MS: 06/28/02 container of names of variables or container indices
30334  // used used in the traversal to access AST successor nodes
30335  // overridden in every class by *generated* implementation
30338  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
30339 
30340  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
30341  // than all the vector copies. The implementation for these functions is generated for each class.
30343  virtual size_t get_numberOfTraversalSuccessors() override;
30345  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
30347  virtual size_t get_childIndex(SgNode *child) override;
30348 
30349 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
30350  // MS: 08/16/2002 method for generating RTI information
30352  virtual RTIReturnType roseRTI() override;
30353 #endif
30354  /* */
30355 
30356 
30357 
30358  /* name Deprecated Functions
30359  \brief Deprecated functions ... incomplete-documentation
30360 
30361  These functions have been deprecated from use.
30362  */
30363  /* */
30364 
30366  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
30367 
30368  // JJW (10/16/2008): Changed to a single function in Node.code, and put
30369  // getVariant() in #if 0 block to prevent confusing Doxygen
30370 #if 0
30371 
30372  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
30374  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
30375 #endif
30376  /* */
30377 
30378 
30379 
30380 
30381  public:
30382  /* name Traversal Support Functions
30383  \brief Traversal support functions ... incomplete-documentation
30384 
30385  These functions have been made public as part of the design, but they are suggested for internal use
30386  or by particularly knowledgable users for specialized tools or applications.
30387  */
30388  /* */
30389 
30390  // DQ (11/26/2005): Support for visitor pattern mechanims
30391  // (inferior to ROSE traversal mechanism, experimental).
30395 
30396  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
30398  virtual void accept (ROSE_VisitorPattern & visitor) override;
30399 
30400  // DQ (12/26/2005): Support for traversal based on the memory pool
30403  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
30404 
30408 
30409  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
30410  // This traversal helps support internal tools that call static member functions.
30411  // note: this function operates on the memory pools.
30414  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
30415  /* */
30416 
30417 
30418  public:
30419  /* name Memory Allocation Functions
30420  \brief Memory allocations functions ... incomplete-documentation
30421 
30422  These functions have been made public as part of the design, but they are suggested for internal use
30423  or by particularly knowledgable users for specialized tools or applications.
30424  */
30425  /* */
30426 
30437  virtual bool isInMemoryPool() override;
30438 
30449  virtual void checkDataMemberPointersIfInMemoryPool() override;
30450 
30451  // DQ (4/30/2006): Modified to be a const function.
30466  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
30467 
30477  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
30478 
30490  virtual long getChildIndex( SgNode* childNode ) const override;
30491 
30492  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
30493  // comment here (changed to be a C style comment and not be a doxygen comment).
30494  /* \brief Constructor for use by AST File I/O Mechanism
30495 
30496  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
30497  which obtained via fast binary file I/O from disk.
30498  */
30499  // SgDirectory( SgDirectoryStorageClass& source );
30500 
30501 
30502 
30503 
30504 
30505  // JH (10/24/2005): methods added to support the ast file IO
30506  private:
30507 
30508  /* name AST Memory Allocation Support Functions
30509  \brief Memory allocations support....
30510 
30511  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
30512  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
30513  and support the AST File I/O Mechanism.
30514  */
30515  /* */
30516 
30517  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
30518  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
30519  that I use the same type everywhere, if any changes are made. THe second one declares the type
30520  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
30521  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
30522  a correspinding one in the AST_FILE_IO class!
30523  */
30524  // DQ (9/2/2015): This typedef is no longer used, we can't define the
30525  // comment here (changed to be a C style comment and not be a doxygen comment).
30526  /* \brief Typedef used for low level memory access.
30527  */
30528  // typedef unsigned char* TestType;
30529 
30530  // DQ (9/2/2015): This typedef is no longer used, we can't define the
30531  // comment here (changed to be a C style comment and not be a doxygen comment).
30532  /* \brief Typedef used to hold memory addresses as values.
30533  */
30534  // typedef unsigned long AddressType;
30535 
30536 
30537 
30538  // necessary, to have direct access to the p_freepointer and the private methods !
30540  friend class AST_FILE_IO;
30541 
30543  friend class SgDirectoryStorageClass;
30544 
30546  friend class AstSpecificDataManagingClass;
30547 
30549  friend class AstSpecificDataManagingClassStorageClass;
30550 
30551  public:
30553  SgDirectory( const SgDirectoryStorageClass& source );
30554 
30555  // private: // JJW hack
30556  /*
30557  name AST Memory Allocation Support Variables
30558  Memory allocations support variables
30559 
30560  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
30561  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
30562  and support the AST File I/O Mechanism.
30563  */
30564  /* */
30565 
30566  public:
30567 
30568  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
30569  // to current node (so that it will work cleanly with build functions to specify patterns).
30570  // virtual SgNode* addRegExpAttribute();
30576  SgDirectory* addRegExpAttribute(std::string s, AstRegExAttribute* a);
30577 
30578 // *** COMMON CODE SECTION ENDS HERE ***
30579 
30580 
30581 // End of memberFunctionString
30582 // Start of memberFunctionString
30583 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
30584 
30585  // the generated cast function
30586  // friend ROSE_DLL_API SgDirectory* isSgDirectory ( SgNode* s );
30587 
30588  typedef SgSupport base_node_type;
30589 
30590 
30591 // End of memberFunctionString
30592 
30593  public:
30594  std::string get_name() const /* (getDataAccessFunctionPrototypeString) */;
30595  void set_name(std::string name) /* (getDataAccessFunctionPrototypeString) */;
30596 
30597  public:
30598  SgFileList* get_fileList() const;
30599  void set_fileList(SgFileList* fileList);
30600 
30601  public:
30602  SgDirectoryList* get_directoryList() const;
30603  void set_directoryList(SgDirectoryList* directoryList);
30604 
30605  public:
30606  AstAttributeMechanism* get_attributeMechanism() const override /* (getDataAccessFunctionPrototypeString) */;
30607  void set_attributeMechanism(AstAttributeMechanism* attributeMechanism) override /* (getDataAccessFunctionPrototypeString) */;
30608 
30609 
30610  public:
30611  virtual ~SgDirectory();
30612 
30613 
30614  public:
30615  SgDirectory(std::string name = "");
30616 
30617  protected:
30618 // Start of memberFunctionString
30619 std::string p_name;
30620 
30621 // End of memberFunctionString
30622 // Start of memberFunctionString
30623 SgFileList* p_fileList;
30624 
30625 // End of memberFunctionString
30626 // Start of memberFunctionString
30627 SgDirectoryList* p_directoryList;
30628 
30629 // End of memberFunctionString
30630 // Start of memberFunctionString
30631 AstAttributeMechanism* p_attributeMechanism;
30632 
30633 // End of memberFunctionString
30634 
30635 
30636 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
30637 
30638 
30639  };
30640 #endif
30641 
30642 // postdeclarations for SgDirectory
30643 
30644 /* #line 30645 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
30645 
30646 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
30647 
30648 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
30649 
30650 
30651 /* #line 30652 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
30652 
30653 
30654 
30655 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
30656 
30657 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
30658 // This code is automatically generated for each
30659 // terminal and non-terminal within the defined
30660 // grammar. There is a simple way to change the
30661 // code to fix bugs etc. See the ROSE README file
30662 // for directions.
30663 
30664 // tps: (02/22/2010): Adding DLL export requirements
30665 #include "rosedll.h"
30666 
30667 // predeclarations for SgFileList
30668 
30669 /* #line 30670 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
30670 
30671 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
30672 
30673 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
30674 
30675 #if 1
30676 // Class Definition for SgFileList
30677 class ROSE_DLL_API SgFileList : public SgSupport
30678  {
30679  public:
30680 
30681 
30682 /* #line 30683 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
30683 
30684  virtual SgNode* copy ( SgCopyHelp& help) const override;
30685 // Start of memberFunctionString
30686 /* #line 6653 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
30687 
30688  public:
30689 
30690 
30691 
30692 // End of memberFunctionString
30693 // Start of memberFunctionString
30694 /* #line 2317 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
30695 
30696 
30697  /* name Persistant Attribute Mechanism
30698 
30699  This is the persistant attribute mechanism for attaching attributes to IR nodes across
30700  multiple passes. Note that these attributes are persistant in that they are preserved
30701  if the AST is written out to a file and read in from a file. However, virtual function
30702  in the user-defined class derived from the AstAttribute must be defined for the attribute
30703  to be defined across the boundary of File I/O (simple pack and unpack functions). More
30704  sophisticated mechanisms are available within the AstAttributeMechanism object
30705  (e.g iterating though attributes, etc; get_attributeMechanism() is available if direct
30706  access is required, however mostly only internal tools use this lower level support).
30707 
30708  \internal This used to be a public data member, but has been changed to be a protected
30709  pointer instead. The functional interface of the AstAttributeMechanism is presevered
30710  but some of the names and the syntax for calling the interface have changed. The
30711  pointer to the AstAttributeMechanism is now generated by ROSETTA.
30712  */
30713  /* */
30715  virtual void addNewAttribute(std::string s,AstAttribute* a) override;
30717  virtual AstAttribute* getAttribute(std::string s) const override;
30719  virtual void updateAttribute(std::string s,AstAttribute* a) override; // formerly called: replace in AstAttributeMechanism
30724  virtual void setAttribute(std::string s,AstAttribute* a) override;
30726  virtual void removeAttribute(std::string s) override;
30728  virtual bool attributeExists(std::string s) const override;
30730  virtual int numberOfAttributes() const override;
30731 
30746  /* */
30747 
30748 
30749 
30750 
30751 // End of memberFunctionString
30752 // Start of memberFunctionString
30753 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
30754 
30755 // *** COMMON CODE SECTION BEGINS HERE ***
30756 
30757  public:
30758 
30759  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
30760  // and not required which is required to match the other aspects of the copy mechanism code generation.
30761  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
30762  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
30763  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
30764  // virtual SgNode* copy ( const SgCopyHelp & help) const;
30765 
30767  virtual std::string class_name() const override;
30768 
30770  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
30771 
30773  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
30774  // static const VariantT static_variant = V_SgFileList;
30775  enum { static_variant = V_SgFileList };
30776 
30777  /* the generated cast function */
30779  ROSE_DLL_API friend SgFileList* isSgFileList( SgNode * s );
30780 
30782  ROSE_DLL_API friend const SgFileList* isSgFileList( const SgNode * s );
30783 
30784  // ******************************************
30785  // * Memory Pool / New / Delete
30786  // ******************************************
30787 
30788  public:
30790  static const unsigned pool_size; //
30792  static std::vector<unsigned char *> pools; //
30794  static SgFileList * next_node; //
30795 
30797  static unsigned long initializeStorageClassArray(SgFileListStorageClass *); //
30798 
30800  static void clearMemoryPool(); //
30801  static void deleteMemoryPool(); //
30802 
30804  static void extendMemoryPoolForFileIO(); //
30805 
30807  static SgFileList * getPointerFromGlobalIndex(unsigned long); //
30809  static SgFileList * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
30810 
30812  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
30814  static void resetValidFreepointers(); //
30816  static unsigned long getNumberOfLastValidPointer(); //
30817 
30818 
30819 #if defined(INLINE_FUNCTIONS)
30820 
30821  inline void *operator new (size_t size);
30822 #else
30823 
30824  void *operator new (size_t size);
30825 #endif
30826 
30827  void operator delete (void* pointer, size_t size);
30828 
30829  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
30830  void operator delete (void* pointer)
30831  {
30832  // This is the generated delete operator...
30833  SgFileList::operator delete (pointer,sizeof(SgFileList));
30834  }
30835 
30837  static size_t numberOfNodes();
30838 
30840  static size_t memoryUsage();
30841 
30842  // End of scope which started in IR nodes specific code
30843  /* */
30844 
30845  /* name Internal Functions
30846  \brief Internal functions ... incomplete-documentation
30847 
30848  These functions have been made public as part of the design, but they are suggested for internal use
30849  or by particularly knowledgeable users for specialized tools or applications.
30850 
30851  \internal We could not make these private because they are required by user for special purposes. And
30852  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
30853 
30854  */
30855 
30856  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
30857  // overridden in every class by *generated* implementation
30859  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
30860  // MS: 06/28/02 container of names of variables or container indices
30861  // used used in the traversal to access AST successor nodes
30862  // overridden in every class by *generated* implementation
30865  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
30866 
30867  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
30868  // than all the vector copies. The implementation for these functions is generated for each class.
30870  virtual size_t get_numberOfTraversalSuccessors() override;
30872  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
30874  virtual size_t get_childIndex(SgNode *child) override;
30875 
30876 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
30877  // MS: 08/16/2002 method for generating RTI information
30879  virtual RTIReturnType roseRTI() override;
30880 #endif
30881  /* */
30882 
30883 
30884 
30885  /* name Deprecated Functions
30886  \brief Deprecated functions ... incomplete-documentation
30887 
30888  These functions have been deprecated from use.
30889  */
30890  /* */
30891 
30893  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
30894 
30895  // JJW (10/16/2008): Changed to a single function in Node.code, and put
30896  // getVariant() in #if 0 block to prevent confusing Doxygen
30897 #if 0
30898 
30899  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
30901  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
30902 #endif
30903  /* */
30904 
30905 
30906 
30907 
30908  public:
30909  /* name Traversal Support Functions
30910  \brief Traversal support functions ... incomplete-documentation
30911 
30912  These functions have been made public as part of the design, but they are suggested for internal use
30913  or by particularly knowledgable users for specialized tools or applications.
30914  */
30915  /* */
30916 
30917  // DQ (11/26/2005): Support for visitor pattern mechanims
30918  // (inferior to ROSE traversal mechanism, experimental).
30922 
30923  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
30925  virtual void accept (ROSE_VisitorPattern & visitor) override;
30926 
30927  // DQ (12/26/2005): Support for traversal based on the memory pool
30930  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
30931 
30935 
30936  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
30937  // This traversal helps support internal tools that call static member functions.
30938  // note: this function operates on the memory pools.
30941  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
30942  /* */
30943 
30944 
30945  public:
30946  /* name Memory Allocation Functions
30947  \brief Memory allocations functions ... incomplete-documentation
30948 
30949  These functions have been made public as part of the design, but they are suggested for internal use
30950  or by particularly knowledgable users for specialized tools or applications.
30951  */
30952  /* */
30953 
30964  virtual bool isInMemoryPool() override;
30965 
30976  virtual void checkDataMemberPointersIfInMemoryPool() override;
30977 
30978  // DQ (4/30/2006): Modified to be a const function.
30993  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
30994 
31004  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
31005 
31017  virtual long getChildIndex( SgNode* childNode ) const override;
31018 
31019  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
31020  // comment here (changed to be a C style comment and not be a doxygen comment).
31021  /* \brief Constructor for use by AST File I/O Mechanism
31022 
31023  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
31024  which obtained via fast binary file I/O from disk.
31025  */
31026  // SgFileList( SgFileListStorageClass& source );
31027 
31028 
31029 
31030 
31031 
31032  // JH (10/24/2005): methods added to support the ast file IO
31033  private:
31034 
31035  /* name AST Memory Allocation Support Functions
31036  \brief Memory allocations support....
31037 
31038  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
31039  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
31040  and support the AST File I/O Mechanism.
31041  */
31042  /* */
31043 
31044  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
31045  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
31046  that I use the same type everywhere, if any changes are made. THe second one declares the type
31047  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
31048  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
31049  a correspinding one in the AST_FILE_IO class!
31050  */
31051  // DQ (9/2/2015): This typedef is no longer used, we can't define the
31052  // comment here (changed to be a C style comment and not be a doxygen comment).
31053  /* \brief Typedef used for low level memory access.
31054  */
31055  // typedef unsigned char* TestType;
31056 
31057  // DQ (9/2/2015): This typedef is no longer used, we can't define the
31058  // comment here (changed to be a C style comment and not be a doxygen comment).
31059  /* \brief Typedef used to hold memory addresses as values.
31060  */
31061  // typedef unsigned long AddressType;
31062 
31063 
31064 
31065  // necessary, to have direct access to the p_freepointer and the private methods !
31067  friend class AST_FILE_IO;
31068 
31070  friend class SgFileListStorageClass;
31071 
31073  friend class AstSpecificDataManagingClass;
31074 
31076  friend class AstSpecificDataManagingClassStorageClass;
31077 
31078  public:
31080  SgFileList( const SgFileListStorageClass& source );
31081 
31082  // private: // JJW hack
31083  /*
31084  name AST Memory Allocation Support Variables
31085  Memory allocations support variables
31086 
31087  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
31088  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
31089  and support the AST File I/O Mechanism.
31090  */
31091  /* */
31092 
31093  public:
31094 
31095  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
31096  // to current node (so that it will work cleanly with build functions to specify patterns).
31097  // virtual SgNode* addRegExpAttribute();
31103  SgFileList* addRegExpAttribute(std::string s, AstRegExAttribute* a);
31104 
31105 // *** COMMON CODE SECTION ENDS HERE ***
31106 
31107 
31108 // End of memberFunctionString
31109 // Start of memberFunctionString
31110 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
31111 
31112  // the generated cast function
31113  // friend ROSE_DLL_API SgFileList* isSgFileList ( SgNode* s );
31114 
31115  typedef SgSupport base_node_type;
31116 
31117 
31118 // End of memberFunctionString
31119 
31120  public:
31121  const SgFilePtrList& get_listOfFiles() const;
31122  SgFilePtrList& get_listOfFiles();
31123 
31124  public:
31125  AstAttributeMechanism* get_attributeMechanism() const override /* (getDataAccessFunctionPrototypeString) */;
31126  void set_attributeMechanism(AstAttributeMechanism* attributeMechanism) override /* (getDataAccessFunctionPrototypeString) */;
31127 
31128 
31129  public:
31130  virtual ~SgFileList();
31131 
31132 
31133  public:
31134  SgFileList();
31135 
31136  protected:
31137 // Start of memberFunctionString
31138 SgFilePtrList p_listOfFiles;
31139 
31140 // End of memberFunctionString
31141 // Start of memberFunctionString
31142 AstAttributeMechanism* p_attributeMechanism;
31143 
31144 // End of memberFunctionString
31145 
31146 
31147 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
31148 
31149 
31150  };
31151 #endif
31152 
31153 // postdeclarations for SgFileList
31154 
31155 /* #line 31156 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
31156 
31157 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
31158 
31159 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
31160 
31161 
31162 /* #line 31163 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
31163 
31164 
31165 
31166 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
31167 
31168 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
31169 // This code is automatically generated for each
31170 // terminal and non-terminal within the defined
31171 // grammar. There is a simple way to change the
31172 // code to fix bugs etc. See the ROSE README file
31173 // for directions.
31174 
31175 // tps: (02/22/2010): Adding DLL export requirements
31176 #include "rosedll.h"
31177 
31178 // predeclarations for SgDirectoryList
31179 
31180 /* #line 31181 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
31181 
31182 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
31183 
31184 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
31185 
31186 #if 1
31187 // Class Definition for SgDirectoryList
31188 class ROSE_DLL_API SgDirectoryList : public SgSupport
31189  {
31190  public:
31191 
31192 
31193 /* #line 31194 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
31194 
31195  virtual SgNode* copy ( SgCopyHelp& help) const override;
31196 // Start of memberFunctionString
31197 /* #line 6672 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
31198 
31199  public:
31200 
31201 
31202 
31203 // End of memberFunctionString
31204 // Start of memberFunctionString
31205 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
31206 
31207 // *** COMMON CODE SECTION BEGINS HERE ***
31208 
31209  public:
31210 
31211  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
31212  // and not required which is required to match the other aspects of the copy mechanism code generation.
31213  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
31214  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
31215  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
31216  // virtual SgNode* copy ( const SgCopyHelp & help) const;
31217 
31219  virtual std::string class_name() const override;
31220 
31222  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
31223 
31225  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
31226  // static const VariantT static_variant = V_SgDirectoryList;
31227  enum { static_variant = V_SgDirectoryList };
31228 
31229  /* the generated cast function */
31231  ROSE_DLL_API friend SgDirectoryList* isSgDirectoryList( SgNode * s );
31232 
31234  ROSE_DLL_API friend const SgDirectoryList* isSgDirectoryList( const SgNode * s );
31235 
31236  // ******************************************
31237  // * Memory Pool / New / Delete
31238  // ******************************************
31239 
31240  public:
31242  static const unsigned pool_size; //
31244  static std::vector<unsigned char *> pools; //
31246  static SgDirectoryList * next_node; //
31247 
31249  static unsigned long initializeStorageClassArray(SgDirectoryListStorageClass *); //
31250 
31252  static void clearMemoryPool(); //
31253  static void deleteMemoryPool(); //
31254 
31256  static void extendMemoryPoolForFileIO(); //
31257 
31259  static SgDirectoryList * getPointerFromGlobalIndex(unsigned long); //
31261  static SgDirectoryList * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
31262 
31264  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
31266  static void resetValidFreepointers(); //
31268  static unsigned long getNumberOfLastValidPointer(); //
31269 
31270 
31271 #if defined(INLINE_FUNCTIONS)
31272 
31273  inline void *operator new (size_t size);
31274 #else
31275 
31276  void *operator new (size_t size);
31277 #endif
31278 
31279  void operator delete (void* pointer, size_t size);
31280 
31281  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
31282  void operator delete (void* pointer)
31283  {
31284  // This is the generated delete operator...
31285  SgDirectoryList::operator delete (pointer,sizeof(SgDirectoryList));
31286  }
31287 
31289  static size_t numberOfNodes();
31290 
31292  static size_t memoryUsage();
31293 
31294  // End of scope which started in IR nodes specific code
31295  /* */
31296 
31297  /* name Internal Functions
31298  \brief Internal functions ... incomplete-documentation
31299 
31300  These functions have been made public as part of the design, but they are suggested for internal use
31301  or by particularly knowledgeable users for specialized tools or applications.
31302 
31303  \internal We could not make these private because they are required by user for special purposes. And
31304  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
31305 
31306  */
31307 
31308  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
31309  // overridden in every class by *generated* implementation
31311  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
31312  // MS: 06/28/02 container of names of variables or container indices
31313  // used used in the traversal to access AST successor nodes
31314  // overridden in every class by *generated* implementation
31317  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
31318 
31319  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
31320  // than all the vector copies. The implementation for these functions is generated for each class.
31322  virtual size_t get_numberOfTraversalSuccessors() override;
31324  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
31326  virtual size_t get_childIndex(SgNode *child) override;
31327 
31328 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
31329  // MS: 08/16/2002 method for generating RTI information
31331  virtual RTIReturnType roseRTI() override;
31332 #endif
31333  /* */
31334 
31335 
31336 
31337  /* name Deprecated Functions
31338  \brief Deprecated functions ... incomplete-documentation
31339 
31340  These functions have been deprecated from use.
31341  */
31342  /* */
31343 
31345  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
31346 
31347  // JJW (10/16/2008): Changed to a single function in Node.code, and put
31348  // getVariant() in #if 0 block to prevent confusing Doxygen
31349 #if 0
31350 
31351  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
31353  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
31354 #endif
31355  /* */
31356 
31357 
31358 
31359 
31360  public:
31361  /* name Traversal Support Functions
31362  \brief Traversal support functions ... incomplete-documentation
31363 
31364  These functions have been made public as part of the design, but they are suggested for internal use
31365  or by particularly knowledgable users for specialized tools or applications.
31366  */
31367  /* */
31368 
31369  // DQ (11/26/2005): Support for visitor pattern mechanims
31370  // (inferior to ROSE traversal mechanism, experimental).
31374 
31375  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
31377  virtual void accept (ROSE_VisitorPattern & visitor) override;
31378 
31379  // DQ (12/26/2005): Support for traversal based on the memory pool
31382  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
31383 
31387 
31388  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
31389  // This traversal helps support internal tools that call static member functions.
31390  // note: this function operates on the memory pools.
31393  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
31394  /* */
31395 
31396 
31397  public:
31398  /* name Memory Allocation Functions
31399  \brief Memory allocations functions ... incomplete-documentation
31400 
31401  These functions have been made public as part of the design, but they are suggested for internal use
31402  or by particularly knowledgable users for specialized tools or applications.
31403  */
31404  /* */
31405 
31416  virtual bool isInMemoryPool() override;
31417 
31428  virtual void checkDataMemberPointersIfInMemoryPool() override;
31429 
31430  // DQ (4/30/2006): Modified to be a const function.
31445  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
31446 
31456  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
31457 
31469  virtual long getChildIndex( SgNode* childNode ) const override;
31470 
31471  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
31472  // comment here (changed to be a C style comment and not be a doxygen comment).
31473  /* \brief Constructor for use by AST File I/O Mechanism
31474 
31475  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
31476  which obtained via fast binary file I/O from disk.
31477  */
31478  // SgDirectoryList( SgDirectoryListStorageClass& source );
31479 
31480 
31481 
31482 
31483 
31484  // JH (10/24/2005): methods added to support the ast file IO
31485  private:
31486 
31487  /* name AST Memory Allocation Support Functions
31488  \brief Memory allocations support....
31489 
31490  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
31491  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
31492  and support the AST File I/O Mechanism.
31493  */
31494  /* */
31495 
31496  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
31497  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
31498  that I use the same type everywhere, if any changes are made. THe second one declares the type
31499  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
31500  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
31501  a correspinding one in the AST_FILE_IO class!
31502  */
31503  // DQ (9/2/2015): This typedef is no longer used, we can't define the
31504  // comment here (changed to be a C style comment and not be a doxygen comment).
31505  /* \brief Typedef used for low level memory access.
31506  */
31507  // typedef unsigned char* TestType;
31508 
31509  // DQ (9/2/2015): This typedef is no longer used, we can't define the
31510  // comment here (changed to be a C style comment and not be a doxygen comment).
31511  /* \brief Typedef used to hold memory addresses as values.
31512  */
31513  // typedef unsigned long AddressType;
31514 
31515 
31516 
31517  // necessary, to have direct access to the p_freepointer and the private methods !
31519  friend class AST_FILE_IO;
31520 
31522  friend class SgDirectoryListStorageClass;
31523 
31525  friend class AstSpecificDataManagingClass;
31526 
31528  friend class AstSpecificDataManagingClassStorageClass;
31529 
31530  public:
31532  SgDirectoryList( const SgDirectoryListStorageClass& source );
31533 
31534  // private: // JJW hack
31535  /*
31536  name AST Memory Allocation Support Variables
31537  Memory allocations support variables
31538 
31539  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
31540  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
31541  and support the AST File I/O Mechanism.
31542  */
31543  /* */
31544 
31545  public:
31546 
31547  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
31548  // to current node (so that it will work cleanly with build functions to specify patterns).
31549  // virtual SgNode* addRegExpAttribute();
31556 
31557 // *** COMMON CODE SECTION ENDS HERE ***
31558 
31559 
31560 // End of memberFunctionString
31561 // Start of memberFunctionString
31562 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
31563 
31564  // the generated cast function
31565  // friend ROSE_DLL_API SgDirectoryList* isSgDirectoryList ( SgNode* s );
31566 
31567  typedef SgSupport base_node_type;
31568 
31569 
31570 // End of memberFunctionString
31571 
31572  public:
31573  const SgDirectoryPtrList& get_listOfDirectories() const;
31574  SgDirectoryPtrList& get_listOfDirectories();
31575 
31576 
31577  public:
31578  virtual ~SgDirectoryList();
31579 
31580 
31581  public:
31582  SgDirectoryList();
31583 
31584  protected:
31585 // Start of memberFunctionString
31586 SgDirectoryPtrList p_listOfDirectories;
31587 
31588 // End of memberFunctionString
31589 
31590 
31591 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
31592 
31593 
31594  };
31595 #endif
31596 
31597 // postdeclarations for SgDirectoryList
31598 
31599 /* #line 31600 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
31600 
31601 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
31602 
31603 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
31604 
31605 
31606 /* #line 31607 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
31607 
31608 
31609 
31610 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
31611 
31612 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
31613 // This code is automatically generated for each
31614 // terminal and non-terminal within the defined
31615 // grammar. There is a simple way to change the
31616 // code to fix bugs etc. See the ROSE README file
31617 // for directions.
31618 
31619 // tps: (02/22/2010): Adding DLL export requirements
31620 #include "rosedll.h"
31621 
31622 // predeclarations for SgFunctionParameterTypeList
31623 
31624 /* #line 31625 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
31625 
31626 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
31627 
31628 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
31629 
31630 #if 1
31631 // Class Definition for SgFunctionParameterTypeList
31632 class ROSE_DLL_API SgFunctionParameterTypeList : public SgSupport
31633  {
31634  public:
31635 
31636 
31637 /* #line 31638 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
31638 
31639  virtual SgNode* copy ( SgCopyHelp& help) const override;
31640 // Start of memberFunctionString
31641 /* #line 21049 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
31642 
31644  const SgTypePtrList & get_arguments() const;
31645 
31647  SgTypePtrList & get_arguments();
31648 
31649  // WAS: void append_argument(const SgTypePtr& what);
31650  // WAS: void insert_argument(const SgTypePtrList::iterator& where, const SgTypePtr & what)
31651 
31653  void append_argument( SgType* what);
31654 
31656  void insert_argument(const SgTypePtrList::iterator& where, SgType* what);
31657 
31658  // DQ (1/18/2006): Added default constructor explicitly to avoid having it be generated by the compiler
31660 
31661 
31662 
31663 // End of memberFunctionString
31664 // Start of memberFunctionString
31665 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
31666 
31667 // *** COMMON CODE SECTION BEGINS HERE ***
31668 
31669  public:
31670 
31671  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
31672  // and not required which is required to match the other aspects of the copy mechanism code generation.
31673  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
31674  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
31675  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
31676  // virtual SgNode* copy ( const SgCopyHelp & help) const;
31677 
31679  virtual std::string class_name() const override;
31680 
31682  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
31683 
31685  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
31686  // static const VariantT static_variant = V_SgFunctionParameterTypeList;
31687  enum { static_variant = V_SgFunctionParameterTypeList };
31688 
31689  /* the generated cast function */
31691  ROSE_DLL_API friend SgFunctionParameterTypeList* isSgFunctionParameterTypeList( SgNode * s );
31692 
31694  ROSE_DLL_API friend const SgFunctionParameterTypeList* isSgFunctionParameterTypeList( const SgNode * s );
31695 
31696  // ******************************************
31697  // * Memory Pool / New / Delete
31698  // ******************************************
31699 
31700  public:
31702  static const unsigned pool_size; //
31704  static std::vector<unsigned char *> pools; //
31706  static SgFunctionParameterTypeList * next_node; //
31707 
31709  static unsigned long initializeStorageClassArray(SgFunctionParameterTypeListStorageClass *); //
31710 
31712  static void clearMemoryPool(); //
31713  static void deleteMemoryPool(); //
31714 
31716  static void extendMemoryPoolForFileIO(); //
31717 
31719  static SgFunctionParameterTypeList * getPointerFromGlobalIndex(unsigned long); //
31721  static SgFunctionParameterTypeList * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
31722 
31724  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
31726  static void resetValidFreepointers(); //
31728  static unsigned long getNumberOfLastValidPointer(); //
31729 
31730 
31731 #if defined(INLINE_FUNCTIONS)
31732 
31733  inline void *operator new (size_t size);
31734 #else
31735 
31736  void *operator new (size_t size);
31737 #endif
31738 
31739  void operator delete (void* pointer, size_t size);
31740 
31741  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
31742  void operator delete (void* pointer)
31743  {
31744  // This is the generated delete operator...
31745  SgFunctionParameterTypeList::operator delete (pointer,sizeof(SgFunctionParameterTypeList));
31746  }
31747 
31749  static size_t numberOfNodes();
31750 
31752  static size_t memoryUsage();
31753 
31754  // End of scope which started in IR nodes specific code
31755  /* */
31756 
31757  /* name Internal Functions
31758  \brief Internal functions ... incomplete-documentation
31759 
31760  These functions have been made public as part of the design, but they are suggested for internal use
31761  or by particularly knowledgeable users for specialized tools or applications.
31762 
31763  \internal We could not make these private because they are required by user for special purposes. And
31764  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
31765 
31766  */
31767 
31768  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
31769  // overridden in every class by *generated* implementation
31771  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
31772  // MS: 06/28/02 container of names of variables or container indices
31773  // used used in the traversal to access AST successor nodes
31774  // overridden in every class by *generated* implementation
31777  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
31778 
31779  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
31780  // than all the vector copies. The implementation for these functions is generated for each class.
31782  virtual size_t get_numberOfTraversalSuccessors() override;
31784  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
31786  virtual size_t get_childIndex(SgNode *child) override;
31787 
31788 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
31789  // MS: 08/16/2002 method for generating RTI information
31791  virtual RTIReturnType roseRTI() override;
31792 #endif
31793  /* */
31794 
31795 
31796 
31797  /* name Deprecated Functions
31798  \brief Deprecated functions ... incomplete-documentation
31799 
31800  These functions have been deprecated from use.
31801  */
31802  /* */
31803 
31805  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
31806 
31807  // JJW (10/16/2008): Changed to a single function in Node.code, and put
31808  // getVariant() in #if 0 block to prevent confusing Doxygen
31809 #if 0
31810 
31811  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
31813  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
31814 #endif
31815  /* */
31816 
31817 
31818 
31819 
31820  public:
31821  /* name Traversal Support Functions
31822  \brief Traversal support functions ... incomplete-documentation
31823 
31824  These functions have been made public as part of the design, but they are suggested for internal use
31825  or by particularly knowledgable users for specialized tools or applications.
31826  */
31827  /* */
31828 
31829  // DQ (11/26/2005): Support for visitor pattern mechanims
31830  // (inferior to ROSE traversal mechanism, experimental).
31834 
31835  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
31837  virtual void accept (ROSE_VisitorPattern & visitor) override;
31838 
31839  // DQ (12/26/2005): Support for traversal based on the memory pool
31842  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
31843 
31847 
31848  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
31849  // This traversal helps support internal tools that call static member functions.
31850  // note: this function operates on the memory pools.
31853  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
31854  /* */
31855 
31856 
31857  public:
31858  /* name Memory Allocation Functions
31859  \brief Memory allocations functions ... incomplete-documentation
31860 
31861  These functions have been made public as part of the design, but they are suggested for internal use
31862  or by particularly knowledgable users for specialized tools or applications.
31863  */
31864  /* */
31865 
31876  virtual bool isInMemoryPool() override;
31877 
31888  virtual void checkDataMemberPointersIfInMemoryPool() override;
31889 
31890  // DQ (4/30/2006): Modified to be a const function.
31905  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
31906 
31916  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
31917 
31929  virtual long getChildIndex( SgNode* childNode ) const override;
31930 
31931  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
31932  // comment here (changed to be a C style comment and not be a doxygen comment).
31933  /* \brief Constructor for use by AST File I/O Mechanism
31934 
31935  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
31936  which obtained via fast binary file I/O from disk.
31937  */
31938  // SgFunctionParameterTypeList( SgFunctionParameterTypeListStorageClass& source );
31939 
31940 
31941 
31942 
31943 
31944  // JH (10/24/2005): methods added to support the ast file IO
31945  private:
31946 
31947  /* name AST Memory Allocation Support Functions
31948  \brief Memory allocations support....
31949 
31950  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
31951  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
31952  and support the AST File I/O Mechanism.
31953  */
31954  /* */
31955 
31956  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
31957  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
31958  that I use the same type everywhere, if any changes are made. THe second one declares the type
31959  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
31960  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
31961  a correspinding one in the AST_FILE_IO class!
31962  */
31963  // DQ (9/2/2015): This typedef is no longer used, we can't define the
31964  // comment here (changed to be a C style comment and not be a doxygen comment).
31965  /* \brief Typedef used for low level memory access.
31966  */
31967  // typedef unsigned char* TestType;
31968 
31969  // DQ (9/2/2015): This typedef is no longer used, we can't define the
31970  // comment here (changed to be a C style comment and not be a doxygen comment).
31971  /* \brief Typedef used to hold memory addresses as values.
31972  */
31973  // typedef unsigned long AddressType;
31974 
31975 
31976 
31977  // necessary, to have direct access to the p_freepointer and the private methods !
31979  friend class AST_FILE_IO;
31980 
31982  friend class SgFunctionParameterTypeListStorageClass;
31983 
31985  friend class AstSpecificDataManagingClass;
31986 
31988  friend class AstSpecificDataManagingClassStorageClass;
31989 
31990  public:
31992  SgFunctionParameterTypeList( const SgFunctionParameterTypeListStorageClass& source );
31993 
31994  // private: // JJW hack
31995  /*
31996  name AST Memory Allocation Support Variables
31997  Memory allocations support variables
31998 
31999  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
32000  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
32001  and support the AST File I/O Mechanism.
32002  */
32003  /* */
32004 
32005  public:
32006 
32007  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
32008  // to current node (so that it will work cleanly with build functions to specify patterns).
32009  // virtual SgNode* addRegExpAttribute();
32016 
32017 // *** COMMON CODE SECTION ENDS HERE ***
32018 
32019 
32020 // End of memberFunctionString
32021 // Start of memberFunctionString
32022 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
32023 
32024  // the generated cast function
32025  // friend ROSE_DLL_API SgFunctionParameterTypeList* isSgFunctionParameterTypeList ( SgNode* s );
32026 
32027  typedef SgSupport base_node_type;
32028 
32029 
32030 // End of memberFunctionString
32031 
32032 
32033 
32034  public:
32035  virtual ~SgFunctionParameterTypeList();
32036 
32037  protected:
32038 // Start of memberFunctionString
32039 SgTypePtrList p_arguments;
32040 
32041 // End of memberFunctionString
32042 
32043 
32044 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
32045 
32046 
32047  };
32048 #endif
32049 
32050 // postdeclarations for SgFunctionParameterTypeList
32051 
32052 /* #line 32053 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
32053 
32054 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
32055 
32056 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
32057 
32058 
32059 /* #line 32060 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
32060 
32061 
32062 
32063 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
32064 
32065 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
32066 // This code is automatically generated for each
32067 // terminal and non-terminal within the defined
32068 // grammar. There is a simple way to change the
32069 // code to fix bugs etc. See the ROSE README file
32070 // for directions.
32071 
32072 // tps: (02/22/2010): Adding DLL export requirements
32073 #include "rosedll.h"
32074 
32075 // predeclarations for SgQualifiedName
32076 
32077 /* #line 32078 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
32078 
32079 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
32080 
32081 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
32082 
32083 #if 1
32084 // Class Definition for SgQualifiedName
32085 class ROSE_DLL_API SgQualifiedName : public SgSupport
32086  {
32087  public:
32088 
32089 
32090 /* #line 32091 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
32091 
32092  virtual SgNode* copy ( SgCopyHelp& help) const override;
32093 // Start of memberFunctionString
32094 /* #line 5647 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
32095 
32096 
32097 
32098 // End of memberFunctionString
32099 // Start of memberFunctionString
32100 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
32101 
32102 // *** COMMON CODE SECTION BEGINS HERE ***
32103 
32104  public:
32105 
32106  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
32107  // and not required which is required to match the other aspects of the copy mechanism code generation.
32108  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
32109  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
32110  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
32111  // virtual SgNode* copy ( const SgCopyHelp & help) const;
32112 
32114  virtual std::string class_name() const override;
32115 
32117  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
32118 
32120  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
32121  // static const VariantT static_variant = V_SgQualifiedName;
32122  enum { static_variant = V_SgQualifiedName };
32123 
32124  /* the generated cast function */
32126  ROSE_DLL_API friend SgQualifiedName* isSgQualifiedName( SgNode * s );
32127 
32129  ROSE_DLL_API friend const SgQualifiedName* isSgQualifiedName( const SgNode * s );
32130 
32131  // ******************************************
32132  // * Memory Pool / New / Delete
32133  // ******************************************
32134 
32135  public:
32137  static const unsigned pool_size; //
32139  static std::vector<unsigned char *> pools; //
32141  static SgQualifiedName * next_node; //
32142 
32144  static unsigned long initializeStorageClassArray(SgQualifiedNameStorageClass *); //
32145 
32147  static void clearMemoryPool(); //
32148  static void deleteMemoryPool(); //
32149 
32151  static void extendMemoryPoolForFileIO(); //
32152 
32154  static SgQualifiedName * getPointerFromGlobalIndex(unsigned long); //
32156  static SgQualifiedName * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
32157 
32159  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
32161  static void resetValidFreepointers(); //
32163  static unsigned long getNumberOfLastValidPointer(); //
32164 
32165 
32166 #if defined(INLINE_FUNCTIONS)
32167 
32168  inline void *operator new (size_t size);
32169 #else
32170 
32171  void *operator new (size_t size);
32172 #endif
32173 
32174  void operator delete (void* pointer, size_t size);
32175 
32176  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
32177  void operator delete (void* pointer)
32178  {
32179  // This is the generated delete operator...
32180  SgQualifiedName::operator delete (pointer,sizeof(SgQualifiedName));
32181  }
32182 
32184  static size_t numberOfNodes();
32185 
32187  static size_t memoryUsage();
32188 
32189  // End of scope which started in IR nodes specific code
32190  /* */
32191 
32192  /* name Internal Functions
32193  \brief Internal functions ... incomplete-documentation
32194 
32195  These functions have been made public as part of the design, but they are suggested for internal use
32196  or by particularly knowledgeable users for specialized tools or applications.
32197 
32198  \internal We could not make these private because they are required by user for special purposes. And
32199  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
32200 
32201  */
32202 
32203  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
32204  // overridden in every class by *generated* implementation
32206  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
32207  // MS: 06/28/02 container of names of variables or container indices
32208  // used used in the traversal to access AST successor nodes
32209  // overridden in every class by *generated* implementation
32212  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
32213 
32214  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
32215  // than all the vector copies. The implementation for these functions is generated for each class.
32217  virtual size_t get_numberOfTraversalSuccessors() override;
32219  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
32221  virtual size_t get_childIndex(SgNode *child) override;
32222 
32223 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
32224  // MS: 08/16/2002 method for generating RTI information
32226  virtual RTIReturnType roseRTI() override;
32227 #endif
32228  /* */
32229 
32230 
32231 
32232  /* name Deprecated Functions
32233  \brief Deprecated functions ... incomplete-documentation
32234 
32235  These functions have been deprecated from use.
32236  */
32237  /* */
32238 
32240  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
32241 
32242  // JJW (10/16/2008): Changed to a single function in Node.code, and put
32243  // getVariant() in #if 0 block to prevent confusing Doxygen
32244 #if 0
32245 
32246  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
32248  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
32249 #endif
32250  /* */
32251 
32252 
32253 
32254 
32255  public:
32256  /* name Traversal Support Functions
32257  \brief Traversal support functions ... incomplete-documentation
32258 
32259  These functions have been made public as part of the design, but they are suggested for internal use
32260  or by particularly knowledgable users for specialized tools or applications.
32261  */
32262  /* */
32263 
32264  // DQ (11/26/2005): Support for visitor pattern mechanims
32265  // (inferior to ROSE traversal mechanism, experimental).
32269 
32270  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
32272  virtual void accept (ROSE_VisitorPattern & visitor) override;
32273 
32274  // DQ (12/26/2005): Support for traversal based on the memory pool
32277  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
32278 
32282 
32283  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
32284  // This traversal helps support internal tools that call static member functions.
32285  // note: this function operates on the memory pools.
32288  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
32289  /* */
32290 
32291 
32292  public:
32293  /* name Memory Allocation Functions
32294  \brief Memory allocations functions ... incomplete-documentation
32295 
32296  These functions have been made public as part of the design, but they are suggested for internal use
32297  or by particularly knowledgable users for specialized tools or applications.
32298  */
32299  /* */
32300 
32311  virtual bool isInMemoryPool() override;
32312 
32323  virtual void checkDataMemberPointersIfInMemoryPool() override;
32324 
32325  // DQ (4/30/2006): Modified to be a const function.
32340  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
32341 
32351  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
32352 
32364  virtual long getChildIndex( SgNode* childNode ) const override;
32365 
32366  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
32367  // comment here (changed to be a C style comment and not be a doxygen comment).
32368  /* \brief Constructor for use by AST File I/O Mechanism
32369 
32370  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
32371  which obtained via fast binary file I/O from disk.
32372  */
32373  // SgQualifiedName( SgQualifiedNameStorageClass& source );
32374 
32375 
32376 
32377 
32378 
32379  // JH (10/24/2005): methods added to support the ast file IO
32380  private:
32381 
32382  /* name AST Memory Allocation Support Functions
32383  \brief Memory allocations support....
32384 
32385  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
32386  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
32387  and support the AST File I/O Mechanism.
32388  */
32389  /* */
32390 
32391  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
32392  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
32393  that I use the same type everywhere, if any changes are made. THe second one declares the type
32394  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
32395  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
32396  a correspinding one in the AST_FILE_IO class!
32397  */
32398  // DQ (9/2/2015): This typedef is no longer used, we can't define the
32399  // comment here (changed to be a C style comment and not be a doxygen comment).
32400  /* \brief Typedef used for low level memory access.
32401  */
32402  // typedef unsigned char* TestType;
32403 
32404  // DQ (9/2/2015): This typedef is no longer used, we can't define the
32405  // comment here (changed to be a C style comment and not be a doxygen comment).
32406  /* \brief Typedef used to hold memory addresses as values.
32407  */
32408  // typedef unsigned long AddressType;
32409 
32410 
32411 
32412  // necessary, to have direct access to the p_freepointer and the private methods !
32414  friend class AST_FILE_IO;
32415 
32417  friend class SgQualifiedNameStorageClass;
32418 
32420  friend class AstSpecificDataManagingClass;
32421 
32423  friend class AstSpecificDataManagingClassStorageClass;
32424 
32425  public:
32427  SgQualifiedName( const SgQualifiedNameStorageClass& source );
32428 
32429  // private: // JJW hack
32430  /*
32431  name AST Memory Allocation Support Variables
32432  Memory allocations support variables
32433 
32434  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
32435  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
32436  and support the AST File I/O Mechanism.
32437  */
32438  /* */
32439 
32440  public:
32441 
32442  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
32443  // to current node (so that it will work cleanly with build functions to specify patterns).
32444  // virtual SgNode* addRegExpAttribute();
32451 
32452 // *** COMMON CODE SECTION ENDS HERE ***
32453 
32454 
32455 // End of memberFunctionString
32456 // Start of memberFunctionString
32457 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
32458 
32459  // the generated cast function
32460  // friend ROSE_DLL_API SgQualifiedName* isSgQualifiedName ( SgNode* s );
32461 
32462  typedef SgSupport base_node_type;
32463 
32464 
32465 // End of memberFunctionString
32466 
32467  public:
32468  SgScopeStatement* get_scope() const /* (getDataAccessFunctionPrototypeString) */;
32469  void set_scope(SgScopeStatement* scope) /* (getDataAccessFunctionPrototypeString) */;
32470 
32471 
32472  public:
32473  virtual ~SgQualifiedName();
32474 
32475 
32476  public:
32477  SgQualifiedName(SgScopeStatement* scope = NULL);
32478 
32479  protected:
32480 // Start of memberFunctionString
32481 SgScopeStatement* p_scope;
32482 
32483 // End of memberFunctionString
32484 
32485 
32486 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
32487 
32488 
32489  };
32490 #endif
32491 
32492 // postdeclarations for SgQualifiedName
32493 
32494 /* #line 32495 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
32495 
32496 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
32497 
32498 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
32499 
32500 
32501 /* #line 32502 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
32502 
32503 
32504 
32505 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
32506 
32507 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
32508 // This code is automatically generated for each
32509 // terminal and non-terminal within the defined
32510 // grammar. There is a simple way to change the
32511 // code to fix bugs etc. See the ROSE README file
32512 // for directions.
32513 
32514 // tps: (02/22/2010): Adding DLL export requirements
32515 #include "rosedll.h"
32516 
32517 // predeclarations for SgTemplateArgumentList
32518 
32519 /* #line 32520 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
32520 
32521 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
32522 
32523 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
32524 
32525 #if 1
32526 // Class Definition for SgTemplateArgumentList
32527 class ROSE_DLL_API SgTemplateArgumentList : public SgSupport
32528  {
32529  public:
32530 
32531 
32532 /* #line 32533 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
32533 
32534  virtual SgNode* copy ( SgCopyHelp& help) const override;
32535 // Start of memberFunctionString
32536 /* #line 7746 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
32537 
32538 
32539  // DQ (2/10/2019): I think this IR node is no longer used.
32540  // DQ (3/10/2018): Adding debugging support.
32541  // std::string unparseToStringSupport();
32542 
32543 
32544 
32545 // End of memberFunctionString
32546 // Start of memberFunctionString
32547 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
32548 
32549 // *** COMMON CODE SECTION BEGINS HERE ***
32550 
32551  public:
32552 
32553  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
32554  // and not required which is required to match the other aspects of the copy mechanism code generation.
32555  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
32556  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
32557  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
32558  // virtual SgNode* copy ( const SgCopyHelp & help) const;
32559 
32561  virtual std::string class_name() const override;
32562 
32564  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
32565 
32567  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
32568  // static const VariantT static_variant = V_SgTemplateArgumentList;
32569  enum { static_variant = V_SgTemplateArgumentList };
32570 
32571  /* the generated cast function */
32573  ROSE_DLL_API friend SgTemplateArgumentList* isSgTemplateArgumentList( SgNode * s );
32574 
32576  ROSE_DLL_API friend const SgTemplateArgumentList* isSgTemplateArgumentList( const SgNode * s );
32577 
32578  // ******************************************
32579  // * Memory Pool / New / Delete
32580  // ******************************************
32581 
32582  public:
32584  static const unsigned pool_size; //
32586  static std::vector<unsigned char *> pools; //
32588  static SgTemplateArgumentList * next_node; //
32589 
32591  static unsigned long initializeStorageClassArray(SgTemplateArgumentListStorageClass *); //
32592 
32594  static void clearMemoryPool(); //
32595  static void deleteMemoryPool(); //
32596 
32598  static void extendMemoryPoolForFileIO(); //
32599 
32601  static SgTemplateArgumentList * getPointerFromGlobalIndex(unsigned long); //
32603  static SgTemplateArgumentList * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
32604 
32606  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
32608  static void resetValidFreepointers(); //
32610  static unsigned long getNumberOfLastValidPointer(); //
32611 
32612 
32613 #if defined(INLINE_FUNCTIONS)
32614 
32615  inline void *operator new (size_t size);
32616 #else
32617 
32618  void *operator new (size_t size);
32619 #endif
32620 
32621  void operator delete (void* pointer, size_t size);
32622 
32623  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
32624  void operator delete (void* pointer)
32625  {
32626  // This is the generated delete operator...
32627  SgTemplateArgumentList::operator delete (pointer,sizeof(SgTemplateArgumentList));
32628  }
32629 
32631  static size_t numberOfNodes();
32632 
32634  static size_t memoryUsage();
32635 
32636  // End of scope which started in IR nodes specific code
32637  /* */
32638 
32639  /* name Internal Functions
32640  \brief Internal functions ... incomplete-documentation
32641 
32642  These functions have been made public as part of the design, but they are suggested for internal use
32643  or by particularly knowledgeable users for specialized tools or applications.
32644 
32645  \internal We could not make these private because they are required by user for special purposes. And
32646  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
32647 
32648  */
32649 
32650  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
32651  // overridden in every class by *generated* implementation
32653  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
32654  // MS: 06/28/02 container of names of variables or container indices
32655  // used used in the traversal to access AST successor nodes
32656  // overridden in every class by *generated* implementation
32659  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
32660 
32661  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
32662  // than all the vector copies. The implementation for these functions is generated for each class.
32664  virtual size_t get_numberOfTraversalSuccessors() override;
32666  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
32668  virtual size_t get_childIndex(SgNode *child) override;
32669 
32670 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
32671  // MS: 08/16/2002 method for generating RTI information
32673  virtual RTIReturnType roseRTI() override;
32674 #endif
32675  /* */
32676 
32677 
32678 
32679  /* name Deprecated Functions
32680  \brief Deprecated functions ... incomplete-documentation
32681 
32682  These functions have been deprecated from use.
32683  */
32684  /* */
32685 
32687  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
32688 
32689  // JJW (10/16/2008): Changed to a single function in Node.code, and put
32690  // getVariant() in #if 0 block to prevent confusing Doxygen
32691 #if 0
32692 
32693  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
32695  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
32696 #endif
32697  /* */
32698 
32699 
32700 
32701 
32702  public:
32703  /* name Traversal Support Functions
32704  \brief Traversal support functions ... incomplete-documentation
32705 
32706  These functions have been made public as part of the design, but they are suggested for internal use
32707  or by particularly knowledgable users for specialized tools or applications.
32708  */
32709  /* */
32710 
32711  // DQ (11/26/2005): Support for visitor pattern mechanims
32712  // (inferior to ROSE traversal mechanism, experimental).
32716 
32717  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
32719  virtual void accept (ROSE_VisitorPattern & visitor) override;
32720 
32721  // DQ (12/26/2005): Support for traversal based on the memory pool
32724  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
32725 
32729 
32730  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
32731  // This traversal helps support internal tools that call static member functions.
32732  // note: this function operates on the memory pools.
32735  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
32736  /* */
32737 
32738 
32739  public:
32740  /* name Memory Allocation Functions
32741  \brief Memory allocations functions ... incomplete-documentation
32742 
32743  These functions have been made public as part of the design, but they are suggested for internal use
32744  or by particularly knowledgable users for specialized tools or applications.
32745  */
32746  /* */
32747 
32758  virtual bool isInMemoryPool() override;
32759 
32770  virtual void checkDataMemberPointersIfInMemoryPool() override;
32771 
32772  // DQ (4/30/2006): Modified to be a const function.
32787  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
32788 
32798  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
32799 
32811  virtual long getChildIndex( SgNode* childNode ) const override;
32812 
32813  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
32814  // comment here (changed to be a C style comment and not be a doxygen comment).
32815  /* \brief Constructor for use by AST File I/O Mechanism
32816 
32817  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
32818  which obtained via fast binary file I/O from disk.
32819  */
32820  // SgTemplateArgumentList( SgTemplateArgumentListStorageClass& source );
32821 
32822 
32823 
32824 
32825 
32826  // JH (10/24/2005): methods added to support the ast file IO
32827  private:
32828 
32829  /* name AST Memory Allocation Support Functions
32830  \brief Memory allocations support....
32831 
32832  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
32833  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
32834  and support the AST File I/O Mechanism.
32835  */
32836  /* */
32837 
32838  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
32839  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
32840  that I use the same type everywhere, if any changes are made. THe second one declares the type
32841  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
32842  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
32843  a correspinding one in the AST_FILE_IO class!
32844  */
32845  // DQ (9/2/2015): This typedef is no longer used, we can't define the
32846  // comment here (changed to be a C style comment and not be a doxygen comment).
32847  /* \brief Typedef used for low level memory access.
32848  */
32849  // typedef unsigned char* TestType;
32850 
32851  // DQ (9/2/2015): This typedef is no longer used, we can't define the
32852  // comment here (changed to be a C style comment and not be a doxygen comment).
32853  /* \brief Typedef used to hold memory addresses as values.
32854  */
32855  // typedef unsigned long AddressType;
32856 
32857 
32858 
32859  // necessary, to have direct access to the p_freepointer and the private methods !
32861  friend class AST_FILE_IO;
32862 
32864  friend class SgTemplateArgumentListStorageClass;
32865 
32867  friend class AstSpecificDataManagingClass;
32868 
32870  friend class AstSpecificDataManagingClassStorageClass;
32871 
32872  public:
32874  SgTemplateArgumentList( const SgTemplateArgumentListStorageClass& source );
32875 
32876  // private: // JJW hack
32877  /*
32878  name AST Memory Allocation Support Variables
32879  Memory allocations support variables
32880 
32881  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
32882  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
32883  and support the AST File I/O Mechanism.
32884  */
32885  /* */
32886 
32887  public:
32888 
32889  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
32890  // to current node (so that it will work cleanly with build functions to specify patterns).
32891  // virtual SgNode* addRegExpAttribute();
32898 
32899 // *** COMMON CODE SECTION ENDS HERE ***
32900 
32901 
32902 // End of memberFunctionString
32903 // Start of memberFunctionString
32904 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
32905 
32906  // the generated cast function
32907  // friend ROSE_DLL_API SgTemplateArgumentList* isSgTemplateArgumentList ( SgNode* s );
32908 
32909  typedef SgSupport base_node_type;
32910 
32911 
32912 // End of memberFunctionString
32913 
32914  public:
32915  SgTemplateArgumentPtrList get_args() const;
32916  void set_args(SgTemplateArgumentPtrList args);
32917 
32918 
32919  public:
32920  virtual ~SgTemplateArgumentList();
32921 
32922 
32923  public:
32925 
32926  protected:
32927 // Start of memberFunctionString
32928 SgTemplateArgumentPtrList p_args;
32929 
32930 // End of memberFunctionString
32931 
32932 
32933 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
32934 
32935 
32936  };
32937 #endif
32938 
32939 // postdeclarations for SgTemplateArgumentList
32940 
32941 /* #line 32942 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
32942 
32943 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
32944 
32945 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
32946 
32947 
32948 /* #line 32949 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
32949 
32950 
32951 
32952 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
32953 
32954 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
32955 // This code is automatically generated for each
32956 // terminal and non-terminal within the defined
32957 // grammar. There is a simple way to change the
32958 // code to fix bugs etc. See the ROSE README file
32959 // for directions.
32960 
32961 // tps: (02/22/2010): Adding DLL export requirements
32962 #include "rosedll.h"
32963 
32964 // predeclarations for SgTemplateParameterList
32965 
32966 /* #line 32967 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
32967 
32968 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
32969 
32970 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
32971 
32972 #if 1
32973 // Class Definition for SgTemplateParameterList
32974 class ROSE_DLL_API SgTemplateParameterList : public SgSupport
32975  {
32976  public:
32977 
32978 
32979 /* #line 32980 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
32980 
32981  virtual SgNode* copy ( SgCopyHelp& help) const override;
32982 // Start of memberFunctionString
32983 /* #line 7743 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
32984 
32985 
32986 
32987 // End of memberFunctionString
32988 // Start of memberFunctionString
32989 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
32990 
32991 // *** COMMON CODE SECTION BEGINS HERE ***
32992 
32993  public:
32994 
32995  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
32996  // and not required which is required to match the other aspects of the copy mechanism code generation.
32997  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
32998  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
32999  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
33000  // virtual SgNode* copy ( const SgCopyHelp & help) const;
33001 
33003  virtual std::string class_name() const override;
33004 
33006  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
33007 
33009  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
33010  // static const VariantT static_variant = V_SgTemplateParameterList;
33011  enum { static_variant = V_SgTemplateParameterList };
33012 
33013  /* the generated cast function */
33015  ROSE_DLL_API friend SgTemplateParameterList* isSgTemplateParameterList( SgNode * s );
33016 
33018  ROSE_DLL_API friend const SgTemplateParameterList* isSgTemplateParameterList( const SgNode * s );
33019 
33020  // ******************************************
33021  // * Memory Pool / New / Delete
33022  // ******************************************
33023 
33024  public:
33026  static const unsigned pool_size; //
33028  static std::vector<unsigned char *> pools; //
33030  static SgTemplateParameterList * next_node; //
33031 
33033  static unsigned long initializeStorageClassArray(SgTemplateParameterListStorageClass *); //
33034 
33036  static void clearMemoryPool(); //
33037  static void deleteMemoryPool(); //
33038 
33040  static void extendMemoryPoolForFileIO(); //
33041 
33043  static SgTemplateParameterList * getPointerFromGlobalIndex(unsigned long); //
33045  static SgTemplateParameterList * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
33046 
33048  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
33050  static void resetValidFreepointers(); //
33052  static unsigned long getNumberOfLastValidPointer(); //
33053 
33054 
33055 #if defined(INLINE_FUNCTIONS)
33056 
33057  inline void *operator new (size_t size);
33058 #else
33059 
33060  void *operator new (size_t size);
33061 #endif
33062 
33063  void operator delete (void* pointer, size_t size);
33064 
33065  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
33066  void operator delete (void* pointer)
33067  {
33068  // This is the generated delete operator...
33069  SgTemplateParameterList::operator delete (pointer,sizeof(SgTemplateParameterList));
33070  }
33071 
33073  static size_t numberOfNodes();
33074 
33076  static size_t memoryUsage();
33077 
33078  // End of scope which started in IR nodes specific code
33079  /* */
33080 
33081  /* name Internal Functions
33082  \brief Internal functions ... incomplete-documentation
33083 
33084  These functions have been made public as part of the design, but they are suggested for internal use
33085  or by particularly knowledgeable users for specialized tools or applications.
33086 
33087  \internal We could not make these private because they are required by user for special purposes. And
33088  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
33089 
33090  */
33091 
33092  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
33093  // overridden in every class by *generated* implementation
33095  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
33096  // MS: 06/28/02 container of names of variables or container indices
33097  // used used in the traversal to access AST successor nodes
33098  // overridden in every class by *generated* implementation
33101  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
33102 
33103  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
33104  // than all the vector copies. The implementation for these functions is generated for each class.
33106  virtual size_t get_numberOfTraversalSuccessors() override;
33108  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
33110  virtual size_t get_childIndex(SgNode *child) override;
33111 
33112 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
33113  // MS: 08/16/2002 method for generating RTI information
33115  virtual RTIReturnType roseRTI() override;
33116 #endif
33117  /* */
33118 
33119 
33120 
33121  /* name Deprecated Functions
33122  \brief Deprecated functions ... incomplete-documentation
33123 
33124  These functions have been deprecated from use.
33125  */
33126  /* */
33127 
33129  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
33130 
33131  // JJW (10/16/2008): Changed to a single function in Node.code, and put
33132  // getVariant() in #if 0 block to prevent confusing Doxygen
33133 #if 0
33134 
33135  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
33137  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
33138 #endif
33139  /* */
33140 
33141 
33142 
33143 
33144  public:
33145  /* name Traversal Support Functions
33146  \brief Traversal support functions ... incomplete-documentation
33147 
33148  These functions have been made public as part of the design, but they are suggested for internal use
33149  or by particularly knowledgable users for specialized tools or applications.
33150  */
33151  /* */
33152 
33153  // DQ (11/26/2005): Support for visitor pattern mechanims
33154  // (inferior to ROSE traversal mechanism, experimental).
33158 
33159  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
33161  virtual void accept (ROSE_VisitorPattern & visitor) override;
33162 
33163  // DQ (12/26/2005): Support for traversal based on the memory pool
33166  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
33167 
33171 
33172  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
33173  // This traversal helps support internal tools that call static member functions.
33174  // note: this function operates on the memory pools.
33177  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
33178  /* */
33179 
33180 
33181  public:
33182  /* name Memory Allocation Functions
33183  \brief Memory allocations functions ... incomplete-documentation
33184 
33185  These functions have been made public as part of the design, but they are suggested for internal use
33186  or by particularly knowledgable users for specialized tools or applications.
33187  */
33188  /* */
33189 
33200  virtual bool isInMemoryPool() override;
33201 
33212  virtual void checkDataMemberPointersIfInMemoryPool() override;
33213 
33214  // DQ (4/30/2006): Modified to be a const function.
33229  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
33230 
33240  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
33241 
33253  virtual long getChildIndex( SgNode* childNode ) const override;
33254 
33255  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
33256  // comment here (changed to be a C style comment and not be a doxygen comment).
33257  /* \brief Constructor for use by AST File I/O Mechanism
33258 
33259  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
33260  which obtained via fast binary file I/O from disk.
33261  */
33262  // SgTemplateParameterList( SgTemplateParameterListStorageClass& source );
33263 
33264 
33265 
33266 
33267 
33268  // JH (10/24/2005): methods added to support the ast file IO
33269  private:
33270 
33271  /* name AST Memory Allocation Support Functions
33272  \brief Memory allocations support....
33273 
33274  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
33275  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
33276  and support the AST File I/O Mechanism.
33277  */
33278  /* */
33279 
33280  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
33281  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
33282  that I use the same type everywhere, if any changes are made. THe second one declares the type
33283  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
33284  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
33285  a correspinding one in the AST_FILE_IO class!
33286  */
33287  // DQ (9/2/2015): This typedef is no longer used, we can't define the
33288  // comment here (changed to be a C style comment and not be a doxygen comment).
33289  /* \brief Typedef used for low level memory access.
33290  */
33291  // typedef unsigned char* TestType;
33292 
33293  // DQ (9/2/2015): This typedef is no longer used, we can't define the
33294  // comment here (changed to be a C style comment and not be a doxygen comment).
33295  /* \brief Typedef used to hold memory addresses as values.
33296  */
33297  // typedef unsigned long AddressType;
33298 
33299 
33300 
33301  // necessary, to have direct access to the p_freepointer and the private methods !
33303  friend class AST_FILE_IO;
33304 
33306  friend class SgTemplateParameterListStorageClass;
33307 
33309  friend class AstSpecificDataManagingClass;
33310 
33312  friend class AstSpecificDataManagingClassStorageClass;
33313 
33314  public:
33316  SgTemplateParameterList( const SgTemplateParameterListStorageClass& source );
33317 
33318  // private: // JJW hack
33319  /*
33320  name AST Memory Allocation Support Variables
33321  Memory allocations support variables
33322 
33323  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
33324  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
33325  and support the AST File I/O Mechanism.
33326  */
33327  /* */
33328 
33329  public:
33330 
33331  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
33332  // to current node (so that it will work cleanly with build functions to specify patterns).
33333  // virtual SgNode* addRegExpAttribute();
33340 
33341 // *** COMMON CODE SECTION ENDS HERE ***
33342 
33343 
33344 // End of memberFunctionString
33345 // Start of memberFunctionString
33346 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
33347 
33348  // the generated cast function
33349  // friend ROSE_DLL_API SgTemplateParameterList* isSgTemplateParameterList ( SgNode* s );
33350 
33351  typedef SgSupport base_node_type;
33352 
33353 
33354 // End of memberFunctionString
33355 
33356  public:
33357  SgTemplateParameterPtrList get_args() const;
33358  void set_args(SgTemplateParameterPtrList args);
33359 
33360 
33361  public:
33362  virtual ~SgTemplateParameterList();
33363 
33364 
33365  public:
33367 
33368  protected:
33369 // Start of memberFunctionString
33370 SgTemplateParameterPtrList p_args;
33371 
33372 // End of memberFunctionString
33373 
33374 
33375 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
33376 
33377 
33378  };
33379 #endif
33380 
33381 // postdeclarations for SgTemplateParameterList
33382 
33383 /* #line 33384 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
33384 
33385 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
33386 
33387 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
33388 
33389 
33390 /* #line 33391 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
33391 
33392 
33393 
33394 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
33395 
33396 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
33397 // This code is automatically generated for each
33398 // terminal and non-terminal within the defined
33399 // grammar. There is a simple way to change the
33400 // code to fix bugs etc. See the ROSE README file
33401 // for directions.
33402 
33403 // tps: (02/22/2010): Adding DLL export requirements
33404 #include "rosedll.h"
33405 
33406 // predeclarations for SgGraph
33407 
33408 /* #line 33409 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
33409 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
33410 
33411 
33412 #if 0
33413 // Required for Boost Spanning Tree support.
33414 #include <boost/graph/adjacency_list.hpp>
33415 #include <boost/graph/kruskal_min_spanning_tree.hpp>
33416 #endif
33417 
33425 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
33426 
33427 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
33428 
33429 #if 1
33430 // Class Definition for SgGraph
33431 class ROSE_DLL_API SgGraph : public SgSupport
33432  {
33433  public:
33434 
33435 
33436 /* #line 33437 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
33437 
33438  virtual SgNode* copy ( SgCopyHelp& help) const override;
33439 // Start of memberFunctionString
33440 /* #line 485 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
33441 
33442 
33448  {
33449  // DQ (4/29/2009): Added an error value
33454  e_last_type
33455  };
33456 
33462  {
33463  // DQ (4/29/2009): Added an error value
33474  dfa_standard, // dfa_standard_node color
33483  e_last_property
33484  };
33485 
33486 
33487 
33488 #if 0
33489 
33490  // DQ (4/29/2009): Boost graph Type
33492  typedef boost::adjacency_list < boost::vecS, boost::vecS, boost::undirectedS, boost::no_property, boost::property < boost::edge_weight_t, int > > BoostGraphType;
33493 
33495  typedef boost::graph_traits < BoostGraphType >::edge_descriptor BoostEdgeDescriptor;
33496 
33497  // DQ (4/29/2009): We might need this in the future, but not now!
33498  // typedef boost::graph_traits < BoostGraphType >::vertex_descriptor BoostVertexDescriptor;
33499 
33500 #endif
33501 
33502 
33504  typedef std::pair<int, int> BoostEdgeType;
33505 
33506  // DQ (4/29/2009): Added support for boost edges to be used in boost graph library algorithms.
33507  // We need this local type so that the member access functions for data members of this type can be resolved.
33508  // typedef std::vector<SgGraph::BoostEdgeType> SgBoostEdgeList;
33509  typedef std::vector<BoostEdgeType> SgBoostEdgeList;
33510  // typedef SgBoostEdgeList* SgBoostEdgeListPtr;
33511 
33512  // DQ (4/29/2009): Added support for boost edges to be used in boost graph library algorithms.
33513  typedef std::vector<int> SgBoostEdgeWeightList;
33514  // typedef SgBoostEdgeWeightList* SgBoostEdgeWeightListPtr;
33515 
33516  int hashCode( const char* p, int len) const; // hash a character array
33517  // void initialize_graph_id();
33518  void append_properties( int addr, const std::string & prop );
33519 
33521  SgGraphNode* addNode( const std::string & name = "", SgNode* sg_node = NULL);
33522 
33524  SgGraphNode* addNode( SgGraphNode* node );
33525 
33527  SgGraphEdge* addEdge( SgGraphNode* a, SgGraphNode* b, const std::string & name = "");
33528 
33530  SgGraphEdge* addEdge( SgGraphEdge* edge );
33531 
33532  void post_construction_initialization() override;
33533 
33535  // std::vector <BoostEdgeDescriptor> generateSpanningTree();
33536  std::vector <SgGraphEdge*> generateSpanningTree();
33537 
33538  // tps (4/30/2009): Added properties for nodes and edges
33539  // todo: this will be replaced with AstAttributes once the graph conversion is done.
33540  std::string getProperty(SgGraph::GraphProperties property, SgGraphNode* node);
33541  std::string getProperty(SgGraph::GraphProperties property, SgGraphEdge* edge);
33542  void setProperty(SgGraph::GraphProperties property, SgGraphNode* node, std::string value);
33543  void setProperty(SgGraph::GraphProperties property, SgGraphEdge* edge, std::string value);
33544 
33545  // tps (4/30/2009): The following are functions on the graph that were used before
33546  // in the old graph implementation
33547  //std::set<SgGraphEdge*> getEdge(SgGraphNode* src, SgGraphNode* trg);
33548  void checkIfGraphNodeExists(const std::string& trg_mnemonic, std::vector<SgGraphNode*>& nodes);
33549 //SgGraphNode* checkIfGraphNodeExists(std::string& trg_mnemonic);
33550 
33551 
33552 
33554  bool exists( SgGraphNode* node );
33555 
33557  bool exists( SgGraphEdge* edge );
33558 
33559 
33561  std::set<SgGraphEdge*> computeEdgeSet( SgGraphNode* node );
33562 
33564  std::set<int> computeEdgeSet( int node_index );
33565 
33567  std::set< std::pair<int,int> > computeNodeIndexPairSet( int node_index );
33568 
33570  std::set<SgGraphNode*> computeNodeSet( const std::string & label );
33571 
33573  std::set<SgGraphNode*> computeNodeSet();
33574 
33576  std::set<int> computeNodeIndexSet( const std::string & label );
33577 
33578  // Number of nodes in graph.
33579  size_t numberOfGraphNodes() const;
33580 
33581  // Number of edges in graph.
33582  size_t numberOfGraphEdges() const;
33583 
33584  void display_node_index_to_edge_multimap() const;
33585  void display_node_index_to_node_map() const;
33586  void display_edge_index_to_edge_map() const;
33587  void display_node_index_pair_to_edge_multimap() const;
33588  void display_string_to_node_index_multimap() const;
33589  void display_string_to_edge_index_multimap() const;
33590 
33591 #ifdef ROSE_USING_GRAPH_IR_NODES_FOR_BACKWARD_COMPATABILITY
33592  void display_nodes() const;
33593  void display_edges() const;
33594 #endif
33595 
33597  void resize_hash_maps( size_t numberOfNodes, size_t numberOfEdges = 10 );
33598 
33600  size_t memory_usage();
33601 
33602 
33603 
33604 // End of memberFunctionString
33605 // Start of memberFunctionString
33606 /* #line 2317 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
33607 
33608 
33609  /* name Persistant Attribute Mechanism
33610 
33611  This is the persistant attribute mechanism for attaching attributes to IR nodes across
33612  multiple passes. Note that these attributes are persistant in that they are preserved
33613  if the AST is written out to a file and read in from a file. However, virtual function
33614  in the user-defined class derived from the AstAttribute must be defined for the attribute
33615  to be defined across the boundary of File I/O (simple pack and unpack functions). More
33616  sophisticated mechanisms are available within the AstAttributeMechanism object
33617  (e.g iterating though attributes, etc; get_attributeMechanism() is available if direct
33618  access is required, however mostly only internal tools use this lower level support).
33619 
33620  \internal This used to be a public data member, but has been changed to be a protected
33621  pointer instead. The functional interface of the AstAttributeMechanism is presevered
33622  but some of the names and the syntax for calling the interface have changed. The
33623  pointer to the AstAttributeMechanism is now generated by ROSETTA.
33624  */
33625  /* */
33627  virtual void addNewAttribute(std::string s,AstAttribute* a) override;
33629  virtual AstAttribute* getAttribute(std::string s) const override;
33631  virtual void updateAttribute(std::string s,AstAttribute* a) override; // formerly called: replace in AstAttributeMechanism
33636  virtual void setAttribute(std::string s,AstAttribute* a) override;
33638  virtual void removeAttribute(std::string s) override;
33640  virtual bool attributeExists(std::string s) const override;
33642  virtual int numberOfAttributes() const override;
33643 
33658  /* */
33659 
33660 
33661 
33662 
33663 // End of memberFunctionString
33664 // Start of memberFunctionString
33665 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
33666 
33667 // *** COMMON CODE SECTION BEGINS HERE ***
33668 
33669  public:
33670 
33671  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
33672  // and not required which is required to match the other aspects of the copy mechanism code generation.
33673  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
33674  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
33675  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
33676  // virtual SgNode* copy ( const SgCopyHelp & help) const;
33677 
33679  virtual std::string class_name() const override;
33680 
33682  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
33683 
33685  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
33686  // static const VariantT static_variant = V_SgGraph;
33687  enum { static_variant = V_SgGraph };
33688 
33689  /* the generated cast function */
33691  ROSE_DLL_API friend SgGraph* isSgGraph( SgNode * s );
33692 
33694  ROSE_DLL_API friend const SgGraph* isSgGraph( const SgNode * s );
33695 
33696  // ******************************************
33697  // * Memory Pool / New / Delete
33698  // ******************************************
33699 
33700  public:
33702  static const unsigned pool_size; //
33704  static std::vector<unsigned char *> pools; //
33706  static SgGraph * next_node; //
33707 
33709  static unsigned long initializeStorageClassArray(SgGraphStorageClass *); //
33710 
33712  static void clearMemoryPool(); //
33713  static void deleteMemoryPool(); //
33714 
33716  static void extendMemoryPoolForFileIO(); //
33717 
33719  static SgGraph * getPointerFromGlobalIndex(unsigned long); //
33721  static SgGraph * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
33722 
33724  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
33726  static void resetValidFreepointers(); //
33728  static unsigned long getNumberOfLastValidPointer(); //
33729 
33730 
33731 #if defined(INLINE_FUNCTIONS)
33732 
33733  inline void *operator new (size_t size);
33734 #else
33735 
33736  void *operator new (size_t size);
33737 #endif
33738 
33739  void operator delete (void* pointer, size_t size);
33740 
33741  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
33742  void operator delete (void* pointer)
33743  {
33744  // This is the generated delete operator...
33745  SgGraph::operator delete (pointer,sizeof(SgGraph));
33746  }
33747 
33749  static size_t numberOfNodes();
33750 
33752  static size_t memoryUsage();
33753 
33754  // End of scope which started in IR nodes specific code
33755  /* */
33756 
33757  /* name Internal Functions
33758  \brief Internal functions ... incomplete-documentation
33759 
33760  These functions have been made public as part of the design, but they are suggested for internal use
33761  or by particularly knowledgeable users for specialized tools or applications.
33762 
33763  \internal We could not make these private because they are required by user for special purposes. And
33764  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
33765 
33766  */
33767 
33768  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
33769  // overridden in every class by *generated* implementation
33771  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
33772  // MS: 06/28/02 container of names of variables or container indices
33773  // used used in the traversal to access AST successor nodes
33774  // overridden in every class by *generated* implementation
33777  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
33778 
33779  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
33780  // than all the vector copies. The implementation for these functions is generated for each class.
33782  virtual size_t get_numberOfTraversalSuccessors() override;
33784  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
33786  virtual size_t get_childIndex(SgNode *child) override;
33787 
33788 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
33789  // MS: 08/16/2002 method for generating RTI information
33791  virtual RTIReturnType roseRTI() override;
33792 #endif
33793  /* */
33794 
33795 
33796 
33797  /* name Deprecated Functions
33798  \brief Deprecated functions ... incomplete-documentation
33799 
33800  These functions have been deprecated from use.
33801  */
33802  /* */
33803 
33805  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
33806 
33807  // JJW (10/16/2008): Changed to a single function in Node.code, and put
33808  // getVariant() in #if 0 block to prevent confusing Doxygen
33809 #if 0
33810 
33811  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
33813  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
33814 #endif
33815  /* */
33816 
33817 
33818 
33819 
33820  public:
33821  /* name Traversal Support Functions
33822  \brief Traversal support functions ... incomplete-documentation
33823 
33824  These functions have been made public as part of the design, but they are suggested for internal use
33825  or by particularly knowledgable users for specialized tools or applications.
33826  */
33827  /* */
33828 
33829  // DQ (11/26/2005): Support for visitor pattern mechanims
33830  // (inferior to ROSE traversal mechanism, experimental).
33834 
33835  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
33837  virtual void accept (ROSE_VisitorPattern & visitor) override;
33838 
33839  // DQ (12/26/2005): Support for traversal based on the memory pool
33842  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
33843 
33847 
33848  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
33849  // This traversal helps support internal tools that call static member functions.
33850  // note: this function operates on the memory pools.
33853  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
33854  /* */
33855 
33856 
33857  public:
33858  /* name Memory Allocation Functions
33859  \brief Memory allocations functions ... incomplete-documentation
33860 
33861  These functions have been made public as part of the design, but they are suggested for internal use
33862  or by particularly knowledgable users for specialized tools or applications.
33863  */
33864  /* */
33865 
33876  virtual bool isInMemoryPool() override;
33877 
33888  virtual void checkDataMemberPointersIfInMemoryPool() override;
33889 
33890  // DQ (4/30/2006): Modified to be a const function.
33905  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
33906 
33916  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
33917 
33929  virtual long getChildIndex( SgNode* childNode ) const override;
33930 
33931  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
33932  // comment here (changed to be a C style comment and not be a doxygen comment).
33933  /* \brief Constructor for use by AST File I/O Mechanism
33934 
33935  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
33936  which obtained via fast binary file I/O from disk.
33937  */
33938  // SgGraph( SgGraphStorageClass& source );
33939 
33940 
33941 
33942 
33943 
33944  // JH (10/24/2005): methods added to support the ast file IO
33945  private:
33946 
33947  /* name AST Memory Allocation Support Functions
33948  \brief Memory allocations support....
33949 
33950  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
33951  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
33952  and support the AST File I/O Mechanism.
33953  */
33954  /* */
33955 
33956  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
33957  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
33958  that I use the same type everywhere, if any changes are made. THe second one declares the type
33959  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
33960  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
33961  a correspinding one in the AST_FILE_IO class!
33962  */
33963  // DQ (9/2/2015): This typedef is no longer used, we can't define the
33964  // comment here (changed to be a C style comment and not be a doxygen comment).
33965  /* \brief Typedef used for low level memory access.
33966  */
33967  // typedef unsigned char* TestType;
33968 
33969  // DQ (9/2/2015): This typedef is no longer used, we can't define the
33970  // comment here (changed to be a C style comment and not be a doxygen comment).
33971  /* \brief Typedef used to hold memory addresses as values.
33972  */
33973  // typedef unsigned long AddressType;
33974 
33975 
33976 
33977  // necessary, to have direct access to the p_freepointer and the private methods !
33979  friend class AST_FILE_IO;
33980 
33982  friend class SgGraphStorageClass;
33983 
33985  friend class AstSpecificDataManagingClass;
33986 
33988  friend class AstSpecificDataManagingClassStorageClass;
33989 
33990  public:
33992  SgGraph( const SgGraphStorageClass& source );
33993 
33994  // private: // JJW hack
33995  /*
33996  name AST Memory Allocation Support Variables
33997  Memory allocations support variables
33998 
33999  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
34000  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
34001  and support the AST File I/O Mechanism.
34002  */
34003  /* */
34004 
34005  public:
34006 
34007  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
34008  // to current node (so that it will work cleanly with build functions to specify patterns).
34009  // virtual SgNode* addRegExpAttribute();
34015  SgGraph* addRegExpAttribute(std::string s, AstRegExAttribute* a);
34016 
34017 // *** COMMON CODE SECTION ENDS HERE ***
34018 
34019 
34020 // End of memberFunctionString
34021 // Start of memberFunctionString
34022 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
34023 
34024  // the generated cast function
34025  // friend ROSE_DLL_API SgGraph* isSgGraph ( SgNode* s );
34026 
34027  typedef SgSupport base_node_type;
34028 
34029 
34030 // End of memberFunctionString
34031 
34032  public:
34033  std::string get_name() const /* (getDataAccessFunctionPrototypeString) */;
34034  void set_name(std::string name) /* (getDataAccessFunctionPrototypeString) */;
34035 
34036  public:
34037  const rose_graph_integer_node_hash_map& get_node_index_to_node_map() const;
34038  rose_graph_integer_node_hash_map& get_node_index_to_node_map();
34039 
34040  public:
34041  const rose_graph_integer_edge_hash_map& get_edge_index_to_edge_map() const;
34042  rose_graph_integer_edge_hash_map& get_edge_index_to_edge_map();
34043 
34044  public:
34045  const rose_graph_integerpair_edge_hash_multimap& get_node_index_pair_to_edge_multimap() const;
34046  rose_graph_integerpair_edge_hash_multimap& get_node_index_pair_to_edge_multimap();
34047 
34048  public:
34049  const rose_graph_string_integer_hash_multimap& get_string_to_node_index_multimap() const;
34050  rose_graph_string_integer_hash_multimap& get_string_to_node_index_multimap();
34051 
34052  public:
34053  const rose_graph_string_integer_hash_multimap& get_string_to_edge_index_multimap() const;
34054  rose_graph_string_integer_hash_multimap& get_string_to_edge_index_multimap();
34055 
34056  public:
34057  const rose_graph_integer_edge_hash_multimap& get_node_index_to_edge_multimap() const;
34058  rose_graph_integer_edge_hash_multimap& get_node_index_to_edge_multimap();
34059 
34060  public:
34061  int get_index() const;
34062  void set_index(int index);
34063 
34064 
34065  public:
34066  const SgBoostEdgeList& get_boost_edges() const;
34067  SgBoostEdgeList& get_boost_edges();
34068 
34069  public:
34070  const SgBoostEdgeWeightList& get_boost_edge_weights() const;
34071  SgBoostEdgeWeightList& get_boost_edge_weights();
34072 
34073  public:
34074  AstAttributeMechanism* get_attributeMechanism() const override /* (getDataAccessFunctionPrototypeString) */;
34075  void set_attributeMechanism(AstAttributeMechanism* attributeMechanism) override /* (getDataAccessFunctionPrototypeString) */;
34076 
34077  public:
34078  const std::map<int, std::string>& get_properties() const;
34079  std::map<int, std::string>& get_properties();
34080 
34081 
34082  public:
34083  virtual ~SgGraph();
34084 
34085 
34086  public:
34087  SgGraph(std::string name = "");
34088 
34089  protected:
34090 // Start of memberFunctionString
34091 std::string p_name;
34092 
34093 // End of memberFunctionString
34094 // Start of memberFunctionString
34095 rose_graph_integer_node_hash_map p_node_index_to_node_map;
34096 
34097 // End of memberFunctionString
34098 // Start of memberFunctionString
34099 rose_graph_integer_edge_hash_map p_edge_index_to_edge_map;
34100 
34101 // End of memberFunctionString
34102 // Start of memberFunctionString
34103 rose_graph_integerpair_edge_hash_multimap p_node_index_pair_to_edge_multimap;
34104 
34105 // End of memberFunctionString
34106 // Start of memberFunctionString
34107 rose_graph_string_integer_hash_multimap p_string_to_node_index_multimap;
34108 
34109 // End of memberFunctionString
34110 // Start of memberFunctionString
34111 rose_graph_string_integer_hash_multimap p_string_to_edge_index_multimap;
34112 
34113 // End of memberFunctionString
34114 // Start of memberFunctionString
34115 rose_graph_integer_edge_hash_multimap p_node_index_to_edge_multimap;
34116 
34117 // End of memberFunctionString
34118 // Start of memberFunctionString
34119 int p_index;
34120 
34121 // End of memberFunctionString
34122 // Start of memberFunctionString
34123 static int p_index_counter;
34124 
34125 // End of memberFunctionString
34126 // Start of memberFunctionString
34127 SgBoostEdgeList p_boost_edges;
34128 
34129 // End of memberFunctionString
34130 // Start of memberFunctionString
34131 SgBoostEdgeWeightList p_boost_edge_weights;
34132 
34133 // End of memberFunctionString
34134 // Start of memberFunctionString
34135 AstAttributeMechanism* p_attributeMechanism;
34136 
34137 // End of memberFunctionString
34138 // Start of memberFunctionString
34139 std::map<int, std::string> p_properties;
34140 
34141 // End of memberFunctionString
34142 
34143 
34144 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
34145 
34146 
34147  };
34148 #endif
34149 
34150 // postdeclarations for SgGraph
34151 
34152 /* #line 34153 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
34153 /* #line 649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
34154 
34155 
34156 
34157 // DQ (4/29/2009): Added support for boost edges to be used in boost graph library algorithms.
34158 // We need this global type so that the member access functions (defined outside the class)
34159 // for data members of this type can be resolved.
34160 typedef SgGraph::SgBoostEdgeList SgBoostEdgeList;
34161 typedef SgBoostEdgeList* SgBoostEdgeListPtr;
34162 
34163 // DQ (4/29/2009): Added support for boost edges to be used in boost graph library algorithms.
34164 typedef SgGraph::SgBoostEdgeWeightList SgBoostEdgeWeightList;
34165 typedef SgBoostEdgeWeightList* SgBoostEdgeWeightListPtr;
34166 
34167 
34168 // Supporting graph type required by Boost Graph Library.
34169 // typedef boost::graph_traits < SgGraph::BoostGraphType >::edge_descriptor BoostEdgeDescriptor;
34170 
34171 
34172 
34173 
34174 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
34175 
34176 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
34177 
34178 
34179 /* #line 34180 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
34180 
34181 
34182 
34183 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
34184 
34185 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
34186 // This code is automatically generated for each
34187 // terminal and non-terminal within the defined
34188 // grammar. There is a simple way to change the
34189 // code to fix bugs etc. See the ROSE README file
34190 // for directions.
34191 
34192 // tps: (02/22/2010): Adding DLL export requirements
34193 #include "rosedll.h"
34194 
34195 // predeclarations for SgIncidenceDirectedGraph
34196 
34197 /* #line 34198 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
34198 
34199 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
34200 
34201 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
34202 
34203 #if 1
34204 // Class Definition for SgIncidenceDirectedGraph
34205 class ROSE_DLL_API SgIncidenceDirectedGraph : public SgGraph
34206  {
34207  public:
34208 
34209 
34210 /* #line 34211 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
34211 
34212  virtual SgNode* copy ( SgCopyHelp& help) const override;
34213 // Start of memberFunctionString
34214 /* #line 744 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
34215 
34216  // tps (4/30/2009): The following are functions on the graph that were used before
34217  // in the old graph implementation
34218  std::set<SgGraphEdge*> getEdge(SgGraphNode* src);
34219  bool checkIfGraphEdgeExists(SgGraphNode* src);
34220 
34221  void post_construction_initialization() override;
34222 
34224  SgDirectedGraphEdge* addDirectedEdge( SgGraphNode* a, SgGraphNode* b, const std::string & name = "");
34225 
34227  SgDirectedGraphEdge* addDirectedEdge( SgDirectedGraphEdge* edge );
34228 
34230  bool removeDirectedEdge( SgDirectedGraphEdge* edge );
34231 
34232  // tps (4/30/2009): Added to support functionality for DirectedGraphs
34233  void getSuccessors(const SgGraphNode* node, std::vector <SgGraphNode*>& vec ) const;
34234  void getPredecessors(const SgGraphNode* node, std::vector <SgGraphNode*>& vec ) const;
34235  std::set<SgDirectedGraphEdge*> getDirectedEdge(SgGraphNode* src, SgGraphNode* trg);
34236  bool checkIfDirectedGraphEdgeExists(SgGraphNode* src, SgGraphNode* trg);
34237 
34238  // DQ (8/18/2009): Added support for construction of sets of edges.
34239  std::set<SgDirectedGraphEdge*> computeEdgeSetIn( SgGraphNode* node );
34240  std::set<int> computeEdgeSetIn( int node_index );
34241  std::set<SgDirectedGraphEdge*> computeEdgeSetOut( SgGraphNode* node );
34242  std::set<int> computeEdgeSetOut( int node_index );
34243 
34244 
34245 
34246 // End of memberFunctionString
34247 // Start of memberFunctionString
34248 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
34249 
34250 // *** COMMON CODE SECTION BEGINS HERE ***
34251 
34252  public:
34253 
34254  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
34255  // and not required which is required to match the other aspects of the copy mechanism code generation.
34256  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
34257  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
34258  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
34259  // virtual SgNode* copy ( const SgCopyHelp & help) const;
34260 
34262  virtual std::string class_name() const override;
34263 
34265  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
34266 
34268  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
34269  // static const VariantT static_variant = V_SgIncidenceDirectedGraph;
34270  enum { static_variant = V_SgIncidenceDirectedGraph };
34271 
34272  /* the generated cast function */
34274  ROSE_DLL_API friend SgIncidenceDirectedGraph* isSgIncidenceDirectedGraph( SgNode * s );
34275 
34277  ROSE_DLL_API friend const SgIncidenceDirectedGraph* isSgIncidenceDirectedGraph( const SgNode * s );
34278 
34279  // ******************************************
34280  // * Memory Pool / New / Delete
34281  // ******************************************
34282 
34283  public:
34285  static const unsigned pool_size; //
34287  static std::vector<unsigned char *> pools; //
34289  static SgIncidenceDirectedGraph * next_node; //
34290 
34292  static unsigned long initializeStorageClassArray(SgIncidenceDirectedGraphStorageClass *); //
34293 
34295  static void clearMemoryPool(); //
34296  static void deleteMemoryPool(); //
34297 
34299  static void extendMemoryPoolForFileIO(); //
34300 
34302  static SgIncidenceDirectedGraph * getPointerFromGlobalIndex(unsigned long); //
34304  static SgIncidenceDirectedGraph * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
34305 
34307  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
34309  static void resetValidFreepointers(); //
34311  static unsigned long getNumberOfLastValidPointer(); //
34312 
34313 
34314 #if defined(INLINE_FUNCTIONS)
34315 
34316  inline void *operator new (size_t size);
34317 #else
34318 
34319  void *operator new (size_t size);
34320 #endif
34321 
34322  void operator delete (void* pointer, size_t size);
34323 
34324  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
34325  void operator delete (void* pointer)
34326  {
34327  // This is the generated delete operator...
34328  SgIncidenceDirectedGraph::operator delete (pointer,sizeof(SgIncidenceDirectedGraph));
34329  }
34330 
34332  static size_t numberOfNodes();
34333 
34335  static size_t memoryUsage();
34336 
34337  // End of scope which started in IR nodes specific code
34338  /* */
34339 
34340  /* name Internal Functions
34341  \brief Internal functions ... incomplete-documentation
34342 
34343  These functions have been made public as part of the design, but they are suggested for internal use
34344  or by particularly knowledgeable users for specialized tools or applications.
34345 
34346  \internal We could not make these private because they are required by user for special purposes. And
34347  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
34348 
34349  */
34350 
34351  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
34352  // overridden in every class by *generated* implementation
34354  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
34355  // MS: 06/28/02 container of names of variables or container indices
34356  // used used in the traversal to access AST successor nodes
34357  // overridden in every class by *generated* implementation
34360  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
34361 
34362  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
34363  // than all the vector copies. The implementation for these functions is generated for each class.
34365  virtual size_t get_numberOfTraversalSuccessors() override;
34367  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
34369  virtual size_t get_childIndex(SgNode *child) override;
34370 
34371 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
34372  // MS: 08/16/2002 method for generating RTI information
34374  virtual RTIReturnType roseRTI() override;
34375 #endif
34376  /* */
34377 
34378 
34379 
34380  /* name Deprecated Functions
34381  \brief Deprecated functions ... incomplete-documentation
34382 
34383  These functions have been deprecated from use.
34384  */
34385  /* */
34386 
34388  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
34389 
34390  // JJW (10/16/2008): Changed to a single function in Node.code, and put
34391  // getVariant() in #if 0 block to prevent confusing Doxygen
34392 #if 0
34393 
34394  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
34396  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
34397 #endif
34398  /* */
34399 
34400 
34401 
34402 
34403  public:
34404  /* name Traversal Support Functions
34405  \brief Traversal support functions ... incomplete-documentation
34406 
34407  These functions have been made public as part of the design, but they are suggested for internal use
34408  or by particularly knowledgable users for specialized tools or applications.
34409  */
34410  /* */
34411 
34412  // DQ (11/26/2005): Support for visitor pattern mechanims
34413  // (inferior to ROSE traversal mechanism, experimental).
34417 
34418  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
34420  virtual void accept (ROSE_VisitorPattern & visitor) override;
34421 
34422  // DQ (12/26/2005): Support for traversal based on the memory pool
34425  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
34426 
34430 
34431  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
34432  // This traversal helps support internal tools that call static member functions.
34433  // note: this function operates on the memory pools.
34436  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
34437  /* */
34438 
34439 
34440  public:
34441  /* name Memory Allocation Functions
34442  \brief Memory allocations functions ... incomplete-documentation
34443 
34444  These functions have been made public as part of the design, but they are suggested for internal use
34445  or by particularly knowledgable users for specialized tools or applications.
34446  */
34447  /* */
34448 
34459  virtual bool isInMemoryPool() override;
34460 
34471  virtual void checkDataMemberPointersIfInMemoryPool() override;
34472 
34473  // DQ (4/30/2006): Modified to be a const function.
34488  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
34489 
34499  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
34500 
34512  virtual long getChildIndex( SgNode* childNode ) const override;
34513 
34514  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
34515  // comment here (changed to be a C style comment and not be a doxygen comment).
34516  /* \brief Constructor for use by AST File I/O Mechanism
34517 
34518  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
34519  which obtained via fast binary file I/O from disk.
34520  */
34521  // SgIncidenceDirectedGraph( SgIncidenceDirectedGraphStorageClass& source );
34522 
34523 
34524 
34525 
34526 
34527  // JH (10/24/2005): methods added to support the ast file IO
34528  private:
34529 
34530  /* name AST Memory Allocation Support Functions
34531  \brief Memory allocations support....
34532 
34533  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
34534  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
34535  and support the AST File I/O Mechanism.
34536  */
34537  /* */
34538 
34539  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
34540  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
34541  that I use the same type everywhere, if any changes are made. THe second one declares the type
34542  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
34543  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
34544  a correspinding one in the AST_FILE_IO class!
34545  */
34546  // DQ (9/2/2015): This typedef is no longer used, we can't define the
34547  // comment here (changed to be a C style comment and not be a doxygen comment).
34548  /* \brief Typedef used for low level memory access.
34549  */
34550  // typedef unsigned char* TestType;
34551 
34552  // DQ (9/2/2015): This typedef is no longer used, we can't define the
34553  // comment here (changed to be a C style comment and not be a doxygen comment).
34554  /* \brief Typedef used to hold memory addresses as values.
34555  */
34556  // typedef unsigned long AddressType;
34557 
34558 
34559 
34560  // necessary, to have direct access to the p_freepointer and the private methods !
34562  friend class AST_FILE_IO;
34563 
34565  friend class SgIncidenceDirectedGraphStorageClass;
34566 
34568  friend class AstSpecificDataManagingClass;
34569 
34571  friend class AstSpecificDataManagingClassStorageClass;
34572 
34573  public:
34575  SgIncidenceDirectedGraph( const SgIncidenceDirectedGraphStorageClass& source );
34576 
34577  // private: // JJW hack
34578  /*
34579  name AST Memory Allocation Support Variables
34580  Memory allocations support variables
34581 
34582  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
34583  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
34584  and support the AST File I/O Mechanism.
34585  */
34586  /* */
34587 
34588  public:
34589 
34590  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
34591  // to current node (so that it will work cleanly with build functions to specify patterns).
34592  // virtual SgNode* addRegExpAttribute();
34599 
34600 // *** COMMON CODE SECTION ENDS HERE ***
34601 
34602 
34603 // End of memberFunctionString
34604 // Start of memberFunctionString
34605 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
34606 
34607  // the generated cast function
34608  // friend ROSE_DLL_API SgIncidenceDirectedGraph* isSgIncidenceDirectedGraph ( SgNode* s );
34609 
34610  typedef SgGraph base_node_type;
34611 
34612 
34613 // End of memberFunctionString
34614 
34615  public:
34616  const rose_graph_integer_edge_hash_multimap& get_node_index_to_edge_multimap_edgesOut() const;
34617  rose_graph_integer_edge_hash_multimap& get_node_index_to_edge_multimap_edgesOut();
34618 
34619  public:
34620  const rose_graph_integer_edge_hash_multimap& get_node_index_to_edge_multimap_edgesIn() const;
34621  rose_graph_integer_edge_hash_multimap& get_node_index_to_edge_multimap_edgesIn();
34622 
34623 
34624  public:
34625  virtual ~SgIncidenceDirectedGraph();
34626 
34627 
34628  public:
34629  SgIncidenceDirectedGraph(std::string name = "");
34630 
34631  protected:
34632 // Start of memberFunctionString
34633 rose_graph_integer_edge_hash_multimap p_node_index_to_edge_multimap_edgesOut;
34634 
34635 // End of memberFunctionString
34636 // Start of memberFunctionString
34637 rose_graph_integer_edge_hash_multimap p_node_index_to_edge_multimap_edgesIn;
34638 
34639 // End of memberFunctionString
34640 
34641 
34642 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
34643 
34644 
34645  };
34646 #endif
34647 
34648 // postdeclarations for SgIncidenceDirectedGraph
34649 
34650 /* #line 34651 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
34651 
34652 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
34653 
34654 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
34655 
34656 
34657 /* #line 34658 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
34658 
34659 
34660 
34661 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
34662 
34663 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
34664 // This code is automatically generated for each
34665 // terminal and non-terminal within the defined
34666 // grammar. There is a simple way to change the
34667 // code to fix bugs etc. See the ROSE README file
34668 // for directions.
34669 
34670 // tps: (02/22/2010): Adding DLL export requirements
34671 #include "rosedll.h"
34672 
34673 // predeclarations for SgBidirectionalGraph
34674 
34675 /* #line 34676 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
34676 
34677 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
34678 
34679 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
34680 
34681 #if 1
34682 // Class Definition for SgBidirectionalGraph
34684  {
34685  public:
34686 
34687 
34688 /* #line 34689 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
34689 
34690  virtual SgNode* copy ( SgCopyHelp& help) const override;
34691 // Start of memberFunctionString
34692 /* #line 776 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
34693 
34694 
34695 
34696 // End of memberFunctionString
34697 // Start of memberFunctionString
34698 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
34699 
34700 // *** COMMON CODE SECTION BEGINS HERE ***
34701 
34702  public:
34703 
34704  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
34705  // and not required which is required to match the other aspects of the copy mechanism code generation.
34706  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
34707  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
34708  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
34709  // virtual SgNode* copy ( const SgCopyHelp & help) const;
34710 
34712  virtual std::string class_name() const override;
34713 
34715  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
34716 
34718  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
34719  // static const VariantT static_variant = V_SgBidirectionalGraph;
34720  enum { static_variant = V_SgBidirectionalGraph };
34721 
34722  /* the generated cast function */
34724  ROSE_DLL_API friend SgBidirectionalGraph* isSgBidirectionalGraph( SgNode * s );
34725 
34727  ROSE_DLL_API friend const SgBidirectionalGraph* isSgBidirectionalGraph( const SgNode * s );
34728 
34729  // ******************************************
34730  // * Memory Pool / New / Delete
34731  // ******************************************
34732 
34733  public:
34735  static const unsigned pool_size; //
34737  static std::vector<unsigned char *> pools; //
34739  static SgBidirectionalGraph * next_node; //
34740 
34742  static unsigned long initializeStorageClassArray(SgBidirectionalGraphStorageClass *); //
34743 
34745  static void clearMemoryPool(); //
34746  static void deleteMemoryPool(); //
34747 
34749  static void extendMemoryPoolForFileIO(); //
34750 
34752  static SgBidirectionalGraph * getPointerFromGlobalIndex(unsigned long); //
34754  static SgBidirectionalGraph * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
34755 
34757  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
34759  static void resetValidFreepointers(); //
34761  static unsigned long getNumberOfLastValidPointer(); //
34762 
34763 
34764 #if defined(INLINE_FUNCTIONS)
34765 
34766  inline void *operator new (size_t size);
34767 #else
34768 
34769  void *operator new (size_t size);
34770 #endif
34771 
34772  void operator delete (void* pointer, size_t size);
34773 
34774  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
34775  void operator delete (void* pointer)
34776  {
34777  // This is the generated delete operator...
34778  SgBidirectionalGraph::operator delete (pointer,sizeof(SgBidirectionalGraph));
34779  }
34780 
34782  static size_t numberOfNodes();
34783 
34785  static size_t memoryUsage();
34786 
34787  // End of scope which started in IR nodes specific code
34788  /* */
34789 
34790  /* name Internal Functions
34791  \brief Internal functions ... incomplete-documentation
34792 
34793  These functions have been made public as part of the design, but they are suggested for internal use
34794  or by particularly knowledgeable users for specialized tools or applications.
34795 
34796  \internal We could not make these private because they are required by user for special purposes. And
34797  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
34798 
34799  */
34800 
34801  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
34802  // overridden in every class by *generated* implementation
34804  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
34805  // MS: 06/28/02 container of names of variables or container indices
34806  // used used in the traversal to access AST successor nodes
34807  // overridden in every class by *generated* implementation
34810  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
34811 
34812  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
34813  // than all the vector copies. The implementation for these functions is generated for each class.
34815  virtual size_t get_numberOfTraversalSuccessors() override;
34817  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
34819  virtual size_t get_childIndex(SgNode *child) override;
34820 
34821 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
34822  // MS: 08/16/2002 method for generating RTI information
34824  virtual RTIReturnType roseRTI() override;
34825 #endif
34826  /* */
34827 
34828 
34829 
34830  /* name Deprecated Functions
34831  \brief Deprecated functions ... incomplete-documentation
34832 
34833  These functions have been deprecated from use.
34834  */
34835  /* */
34836 
34838  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
34839 
34840  // JJW (10/16/2008): Changed to a single function in Node.code, and put
34841  // getVariant() in #if 0 block to prevent confusing Doxygen
34842 #if 0
34843 
34844  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
34846  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
34847 #endif
34848  /* */
34849 
34850 
34851 
34852 
34853  public:
34854  /* name Traversal Support Functions
34855  \brief Traversal support functions ... incomplete-documentation
34856 
34857  These functions have been made public as part of the design, but they are suggested for internal use
34858  or by particularly knowledgable users for specialized tools or applications.
34859  */
34860  /* */
34861 
34862  // DQ (11/26/2005): Support for visitor pattern mechanims
34863  // (inferior to ROSE traversal mechanism, experimental).
34867 
34868  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
34870  virtual void accept (ROSE_VisitorPattern & visitor) override;
34871 
34872  // DQ (12/26/2005): Support for traversal based on the memory pool
34875  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
34876 
34880 
34881  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
34882  // This traversal helps support internal tools that call static member functions.
34883  // note: this function operates on the memory pools.
34886  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
34887  /* */
34888 
34889 
34890  public:
34891  /* name Memory Allocation Functions
34892  \brief Memory allocations functions ... incomplete-documentation
34893 
34894  These functions have been made public as part of the design, but they are suggested for internal use
34895  or by particularly knowledgable users for specialized tools or applications.
34896  */
34897  /* */
34898 
34909  virtual bool isInMemoryPool() override;
34910 
34921  virtual void checkDataMemberPointersIfInMemoryPool() override;
34922 
34923  // DQ (4/30/2006): Modified to be a const function.
34938  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
34939 
34949  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
34950 
34962  virtual long getChildIndex( SgNode* childNode ) const override;
34963 
34964  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
34965  // comment here (changed to be a C style comment and not be a doxygen comment).
34966  /* \brief Constructor for use by AST File I/O Mechanism
34967 
34968  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
34969  which obtained via fast binary file I/O from disk.
34970  */
34971  // SgBidirectionalGraph( SgBidirectionalGraphStorageClass& source );
34972 
34973 
34974 
34975 
34976 
34977  // JH (10/24/2005): methods added to support the ast file IO
34978  private:
34979 
34980  /* name AST Memory Allocation Support Functions
34981  \brief Memory allocations support....
34982 
34983  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
34984  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
34985  and support the AST File I/O Mechanism.
34986  */
34987  /* */
34988 
34989  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
34990  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
34991  that I use the same type everywhere, if any changes are made. THe second one declares the type
34992  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
34993  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
34994  a correspinding one in the AST_FILE_IO class!
34995  */
34996  // DQ (9/2/2015): This typedef is no longer used, we can't define the
34997  // comment here (changed to be a C style comment and not be a doxygen comment).
34998  /* \brief Typedef used for low level memory access.
34999  */
35000  // typedef unsigned char* TestType;
35001 
35002  // DQ (9/2/2015): This typedef is no longer used, we can't define the
35003  // comment here (changed to be a C style comment and not be a doxygen comment).
35004  /* \brief Typedef used to hold memory addresses as values.
35005  */
35006  // typedef unsigned long AddressType;
35007 
35008 
35009 
35010  // necessary, to have direct access to the p_freepointer and the private methods !
35012  friend class AST_FILE_IO;
35013 
35015  friend class SgBidirectionalGraphStorageClass;
35016 
35018  friend class AstSpecificDataManagingClass;
35019 
35021  friend class AstSpecificDataManagingClassStorageClass;
35022 
35023  public:
35025  SgBidirectionalGraph( const SgBidirectionalGraphStorageClass& source );
35026 
35027  // private: // JJW hack
35028  /*
35029  name AST Memory Allocation Support Variables
35030  Memory allocations support variables
35031 
35032  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
35033  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
35034  and support the AST File I/O Mechanism.
35035  */
35036  /* */
35037 
35038  public:
35039 
35040  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
35041  // to current node (so that it will work cleanly with build functions to specify patterns).
35042  // virtual SgNode* addRegExpAttribute();
35049 
35050 // *** COMMON CODE SECTION ENDS HERE ***
35051 
35052 
35053 // End of memberFunctionString
35054 // Start of memberFunctionString
35055 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
35056 
35057  // the generated cast function
35058  // friend ROSE_DLL_API SgBidirectionalGraph* isSgBidirectionalGraph ( SgNode* s );
35059 
35061 
35062 
35063 // End of memberFunctionString
35064 
35065 
35066  public:
35067  virtual ~SgBidirectionalGraph();
35068 
35069 
35070  public:
35071  SgBidirectionalGraph(std::string name = "");
35072 
35073  protected:
35074 
35075 
35076 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
35077 
35078 
35079  };
35080 #endif
35081 
35082 // postdeclarations for SgBidirectionalGraph
35083 
35084 /* #line 35085 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
35085 
35086 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
35087 
35088 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
35089 
35090 
35091 /* #line 35092 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
35092 
35093 
35094 
35095 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
35096 
35097 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
35098 // This code is automatically generated for each
35099 // terminal and non-terminal within the defined
35100 // grammar. There is a simple way to change the
35101 // code to fix bugs etc. See the ROSE README file
35102 // for directions.
35103 
35104 // tps: (02/22/2010): Adding DLL export requirements
35105 #include "rosedll.h"
35106 
35107 // predeclarations for SgStringKeyedBidirectionalGraph
35108 
35109 /* #line 35110 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
35110 
35111 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
35112 
35113 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
35114 
35115 #if 1
35116 // Class Definition for SgStringKeyedBidirectionalGraph
35118  {
35119  public:
35120 
35121 
35122 /* #line 35123 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
35123 
35124  virtual SgNode* copy ( SgCopyHelp& help) const override;
35125 // Start of memberFunctionString
35126 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
35127 
35128 // *** COMMON CODE SECTION BEGINS HERE ***
35129 
35130  public:
35131 
35132  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
35133  // and not required which is required to match the other aspects of the copy mechanism code generation.
35134  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
35135  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
35136  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
35137  // virtual SgNode* copy ( const SgCopyHelp & help) const;
35138 
35140  virtual std::string class_name() const override;
35141 
35143  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
35144 
35146  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
35147  // static const VariantT static_variant = V_SgStringKeyedBidirectionalGraph;
35148  enum { static_variant = V_SgStringKeyedBidirectionalGraph };
35149 
35150  /* the generated cast function */
35152  ROSE_DLL_API friend SgStringKeyedBidirectionalGraph* isSgStringKeyedBidirectionalGraph( SgNode * s );
35153 
35155  ROSE_DLL_API friend const SgStringKeyedBidirectionalGraph* isSgStringKeyedBidirectionalGraph( const SgNode * s );
35156 
35157  // ******************************************
35158  // * Memory Pool / New / Delete
35159  // ******************************************
35160 
35161  public:
35163  static const unsigned pool_size; //
35165  static std::vector<unsigned char *> pools; //
35167  static SgStringKeyedBidirectionalGraph * next_node; //
35168 
35170  static unsigned long initializeStorageClassArray(SgStringKeyedBidirectionalGraphStorageClass *); //
35171 
35173  static void clearMemoryPool(); //
35174  static void deleteMemoryPool(); //
35175 
35177  static void extendMemoryPoolForFileIO(); //
35178 
35180  static SgStringKeyedBidirectionalGraph * getPointerFromGlobalIndex(unsigned long); //
35182  static SgStringKeyedBidirectionalGraph * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
35183 
35185  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
35187  static void resetValidFreepointers(); //
35189  static unsigned long getNumberOfLastValidPointer(); //
35190 
35191 
35192 #if defined(INLINE_FUNCTIONS)
35193 
35194  inline void *operator new (size_t size);
35195 #else
35196 
35197  void *operator new (size_t size);
35198 #endif
35199 
35200  void operator delete (void* pointer, size_t size);
35201 
35202  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
35203  void operator delete (void* pointer)
35204  {
35205  // This is the generated delete operator...
35206  SgStringKeyedBidirectionalGraph::operator delete (pointer,sizeof(SgStringKeyedBidirectionalGraph));
35207  }
35208 
35210  static size_t numberOfNodes();
35211 
35213  static size_t memoryUsage();
35214 
35215  // End of scope which started in IR nodes specific code
35216  /* */
35217 
35218  /* name Internal Functions
35219  \brief Internal functions ... incomplete-documentation
35220 
35221  These functions have been made public as part of the design, but they are suggested for internal use
35222  or by particularly knowledgeable users for specialized tools or applications.
35223 
35224  \internal We could not make these private because they are required by user for special purposes. And
35225  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
35226 
35227  */
35228 
35229  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
35230  // overridden in every class by *generated* implementation
35232  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
35233  // MS: 06/28/02 container of names of variables or container indices
35234  // used used in the traversal to access AST successor nodes
35235  // overridden in every class by *generated* implementation
35238  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
35239 
35240  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
35241  // than all the vector copies. The implementation for these functions is generated for each class.
35243  virtual size_t get_numberOfTraversalSuccessors() override;
35245  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
35247  virtual size_t get_childIndex(SgNode *child) override;
35248 
35249 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
35250  // MS: 08/16/2002 method for generating RTI information
35252  virtual RTIReturnType roseRTI() override;
35253 #endif
35254  /* */
35255 
35256 
35257 
35258  /* name Deprecated Functions
35259  \brief Deprecated functions ... incomplete-documentation
35260 
35261  These functions have been deprecated from use.
35262  */
35263  /* */
35264 
35266  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
35267 
35268  // JJW (10/16/2008): Changed to a single function in Node.code, and put
35269  // getVariant() in #if 0 block to prevent confusing Doxygen
35270 #if 0
35271 
35272  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
35274  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
35275 #endif
35276  /* */
35277 
35278 
35279 
35280 
35281  public:
35282  /* name Traversal Support Functions
35283  \brief Traversal support functions ... incomplete-documentation
35284 
35285  These functions have been made public as part of the design, but they are suggested for internal use
35286  or by particularly knowledgable users for specialized tools or applications.
35287  */
35288  /* */
35289 
35290  // DQ (11/26/2005): Support for visitor pattern mechanims
35291  // (inferior to ROSE traversal mechanism, experimental).
35295 
35296  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
35298  virtual void accept (ROSE_VisitorPattern & visitor) override;
35299 
35300  // DQ (12/26/2005): Support for traversal based on the memory pool
35303  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
35304 
35308 
35309  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
35310  // This traversal helps support internal tools that call static member functions.
35311  // note: this function operates on the memory pools.
35314  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
35315  /* */
35316 
35317 
35318  public:
35319  /* name Memory Allocation Functions
35320  \brief Memory allocations functions ... incomplete-documentation
35321 
35322  These functions have been made public as part of the design, but they are suggested for internal use
35323  or by particularly knowledgable users for specialized tools or applications.
35324  */
35325  /* */
35326 
35337  virtual bool isInMemoryPool() override;
35338 
35349  virtual void checkDataMemberPointersIfInMemoryPool() override;
35350 
35351  // DQ (4/30/2006): Modified to be a const function.
35366  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
35367 
35377  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
35378 
35390  virtual long getChildIndex( SgNode* childNode ) const override;
35391 
35392  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
35393  // comment here (changed to be a C style comment and not be a doxygen comment).
35394  /* \brief Constructor for use by AST File I/O Mechanism
35395 
35396  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
35397  which obtained via fast binary file I/O from disk.
35398  */
35399  // SgStringKeyedBidirectionalGraph( SgStringKeyedBidirectionalGraphStorageClass& source );
35400 
35401 
35402 
35403 
35404 
35405  // JH (10/24/2005): methods added to support the ast file IO
35406  private:
35407 
35408  /* name AST Memory Allocation Support Functions
35409  \brief Memory allocations support....
35410 
35411  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
35412  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
35413  and support the AST File I/O Mechanism.
35414  */
35415  /* */
35416 
35417  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
35418  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
35419  that I use the same type everywhere, if any changes are made. THe second one declares the type
35420  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
35421  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
35422  a correspinding one in the AST_FILE_IO class!
35423  */
35424  // DQ (9/2/2015): This typedef is no longer used, we can't define the
35425  // comment here (changed to be a C style comment and not be a doxygen comment).
35426  /* \brief Typedef used for low level memory access.
35427  */
35428  // typedef unsigned char* TestType;
35429 
35430  // DQ (9/2/2015): This typedef is no longer used, we can't define the
35431  // comment here (changed to be a C style comment and not be a doxygen comment).
35432  /* \brief Typedef used to hold memory addresses as values.
35433  */
35434  // typedef unsigned long AddressType;
35435 
35436 
35437 
35438  // necessary, to have direct access to the p_freepointer and the private methods !
35440  friend class AST_FILE_IO;
35441 
35443  friend class SgStringKeyedBidirectionalGraphStorageClass;
35444 
35446  friend class AstSpecificDataManagingClass;
35447 
35449  friend class AstSpecificDataManagingClassStorageClass;
35450 
35451  public:
35453  SgStringKeyedBidirectionalGraph( const SgStringKeyedBidirectionalGraphStorageClass& source );
35454 
35455  // private: // JJW hack
35456  /*
35457  name AST Memory Allocation Support Variables
35458  Memory allocations support variables
35459 
35460  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
35461  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
35462  and support the AST File I/O Mechanism.
35463  */
35464  /* */
35465 
35466  public:
35467 
35468  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
35469  // to current node (so that it will work cleanly with build functions to specify patterns).
35470  // virtual SgNode* addRegExpAttribute();
35477 
35478 // *** COMMON CODE SECTION ENDS HERE ***
35479 
35480 
35481 // End of memberFunctionString
35482 // Start of memberFunctionString
35483 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
35484 
35485  // the generated cast function
35486  // friend ROSE_DLL_API SgStringKeyedBidirectionalGraph* isSgStringKeyedBidirectionalGraph ( SgNode* s );
35487 
35489 
35490 
35491 // End of memberFunctionString
35492 
35493 
35494  public:
35496 
35497 
35498  public:
35499  SgStringKeyedBidirectionalGraph(std::string name = "");
35500 
35501  protected:
35502 
35503 
35504 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
35505 
35506 
35507  };
35508 #endif
35509 
35510 // postdeclarations for SgStringKeyedBidirectionalGraph
35511 
35512 /* #line 35513 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
35513 
35514 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
35515 
35516 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
35517 
35518 
35519 /* #line 35520 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
35520 
35521 
35522 
35523 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
35524 
35525 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
35526 // This code is automatically generated for each
35527 // terminal and non-terminal within the defined
35528 // grammar. There is a simple way to change the
35529 // code to fix bugs etc. See the ROSE README file
35530 // for directions.
35531 
35532 // tps: (02/22/2010): Adding DLL export requirements
35533 #include "rosedll.h"
35534 
35535 // predeclarations for SgIntKeyedBidirectionalGraph
35536 
35537 /* #line 35538 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
35538 
35539 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
35540 
35541 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
35542 
35543 #if 1
35544 // Class Definition for SgIntKeyedBidirectionalGraph
35546  {
35547  public:
35548 
35549 
35550 /* #line 35551 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
35551 
35552  virtual SgNode* copy ( SgCopyHelp& help) const override;
35553 // Start of memberFunctionString
35554 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
35555 
35556 // *** COMMON CODE SECTION BEGINS HERE ***
35557 
35558  public:
35559 
35560  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
35561  // and not required which is required to match the other aspects of the copy mechanism code generation.
35562  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
35563  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
35564  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
35565  // virtual SgNode* copy ( const SgCopyHelp & help) const;
35566 
35568  virtual std::string class_name() const override;
35569 
35571  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
35572 
35574  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
35575  // static const VariantT static_variant = V_SgIntKeyedBidirectionalGraph;
35576  enum { static_variant = V_SgIntKeyedBidirectionalGraph };
35577 
35578  /* the generated cast function */
35580  ROSE_DLL_API friend SgIntKeyedBidirectionalGraph* isSgIntKeyedBidirectionalGraph( SgNode * s );
35581 
35583  ROSE_DLL_API friend const SgIntKeyedBidirectionalGraph* isSgIntKeyedBidirectionalGraph( const SgNode * s );
35584 
35585  // ******************************************
35586  // * Memory Pool / New / Delete
35587  // ******************************************
35588 
35589  public:
35591  static const unsigned pool_size; //
35593  static std::vector<unsigned char *> pools; //
35595  static SgIntKeyedBidirectionalGraph * next_node; //
35596 
35598  static unsigned long initializeStorageClassArray(SgIntKeyedBidirectionalGraphStorageClass *); //
35599 
35601  static void clearMemoryPool(); //
35602  static void deleteMemoryPool(); //
35603 
35605  static void extendMemoryPoolForFileIO(); //
35606 
35608  static SgIntKeyedBidirectionalGraph * getPointerFromGlobalIndex(unsigned long); //
35610  static SgIntKeyedBidirectionalGraph * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
35611 
35613  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
35615  static void resetValidFreepointers(); //
35617  static unsigned long getNumberOfLastValidPointer(); //
35618 
35619 
35620 #if defined(INLINE_FUNCTIONS)
35621 
35622  inline void *operator new (size_t size);
35623 #else
35624 
35625  void *operator new (size_t size);
35626 #endif
35627 
35628  void operator delete (void* pointer, size_t size);
35629 
35630  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
35631  void operator delete (void* pointer)
35632  {
35633  // This is the generated delete operator...
35634  SgIntKeyedBidirectionalGraph::operator delete (pointer,sizeof(SgIntKeyedBidirectionalGraph));
35635  }
35636 
35638  static size_t numberOfNodes();
35639 
35641  static size_t memoryUsage();
35642 
35643  // End of scope which started in IR nodes specific code
35644  /* */
35645 
35646  /* name Internal Functions
35647  \brief Internal functions ... incomplete-documentation
35648 
35649  These functions have been made public as part of the design, but they are suggested for internal use
35650  or by particularly knowledgeable users for specialized tools or applications.
35651 
35652  \internal We could not make these private because they are required by user for special purposes. And
35653  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
35654 
35655  */
35656 
35657  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
35658  // overridden in every class by *generated* implementation
35660  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
35661  // MS: 06/28/02 container of names of variables or container indices
35662  // used used in the traversal to access AST successor nodes
35663  // overridden in every class by *generated* implementation
35666  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
35667 
35668  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
35669  // than all the vector copies. The implementation for these functions is generated for each class.
35671  virtual size_t get_numberOfTraversalSuccessors() override;
35673  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
35675  virtual size_t get_childIndex(SgNode *child) override;
35676 
35677 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
35678  // MS: 08/16/2002 method for generating RTI information
35680  virtual RTIReturnType roseRTI() override;
35681 #endif
35682  /* */
35683 
35684 
35685 
35686  /* name Deprecated Functions
35687  \brief Deprecated functions ... incomplete-documentation
35688 
35689  These functions have been deprecated from use.
35690  */
35691  /* */
35692 
35694  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
35695 
35696  // JJW (10/16/2008): Changed to a single function in Node.code, and put
35697  // getVariant() in #if 0 block to prevent confusing Doxygen
35698 #if 0
35699 
35700  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
35702  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
35703 #endif
35704  /* */
35705 
35706 
35707 
35708 
35709  public:
35710  /* name Traversal Support Functions
35711  \brief Traversal support functions ... incomplete-documentation
35712 
35713  These functions have been made public as part of the design, but they are suggested for internal use
35714  or by particularly knowledgable users for specialized tools or applications.
35715  */
35716  /* */
35717 
35718  // DQ (11/26/2005): Support for visitor pattern mechanims
35719  // (inferior to ROSE traversal mechanism, experimental).
35723 
35724  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
35726  virtual void accept (ROSE_VisitorPattern & visitor) override;
35727 
35728  // DQ (12/26/2005): Support for traversal based on the memory pool
35731  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
35732 
35736 
35737  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
35738  // This traversal helps support internal tools that call static member functions.
35739  // note: this function operates on the memory pools.
35742  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
35743  /* */
35744 
35745 
35746  public:
35747  /* name Memory Allocation Functions
35748  \brief Memory allocations functions ... incomplete-documentation
35749 
35750  These functions have been made public as part of the design, but they are suggested for internal use
35751  or by particularly knowledgable users for specialized tools or applications.
35752  */
35753  /* */
35754 
35765  virtual bool isInMemoryPool() override;
35766 
35777  virtual void checkDataMemberPointersIfInMemoryPool() override;
35778 
35779  // DQ (4/30/2006): Modified to be a const function.
35794  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
35795 
35805  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
35806 
35818  virtual long getChildIndex( SgNode* childNode ) const override;
35819 
35820  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
35821  // comment here (changed to be a C style comment and not be a doxygen comment).
35822  /* \brief Constructor for use by AST File I/O Mechanism
35823 
35824  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
35825  which obtained via fast binary file I/O from disk.
35826  */
35827  // SgIntKeyedBidirectionalGraph( SgIntKeyedBidirectionalGraphStorageClass& source );
35828 
35829 
35830 
35831 
35832 
35833  // JH (10/24/2005): methods added to support the ast file IO
35834  private:
35835 
35836  /* name AST Memory Allocation Support Functions
35837  \brief Memory allocations support....
35838 
35839  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
35840  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
35841  and support the AST File I/O Mechanism.
35842  */
35843  /* */
35844 
35845  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
35846  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
35847  that I use the same type everywhere, if any changes are made. THe second one declares the type
35848  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
35849  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
35850  a correspinding one in the AST_FILE_IO class!
35851  */
35852  // DQ (9/2/2015): This typedef is no longer used, we can't define the
35853  // comment here (changed to be a C style comment and not be a doxygen comment).
35854  /* \brief Typedef used for low level memory access.
35855  */
35856  // typedef unsigned char* TestType;
35857 
35858  // DQ (9/2/2015): This typedef is no longer used, we can't define the
35859  // comment here (changed to be a C style comment and not be a doxygen comment).
35860  /* \brief Typedef used to hold memory addresses as values.
35861  */
35862  // typedef unsigned long AddressType;
35863 
35864 
35865 
35866  // necessary, to have direct access to the p_freepointer and the private methods !
35868  friend class AST_FILE_IO;
35869 
35871  friend class SgIntKeyedBidirectionalGraphStorageClass;
35872 
35874  friend class AstSpecificDataManagingClass;
35875 
35877  friend class AstSpecificDataManagingClassStorageClass;
35878 
35879  public:
35881  SgIntKeyedBidirectionalGraph( const SgIntKeyedBidirectionalGraphStorageClass& source );
35882 
35883  // private: // JJW hack
35884  /*
35885  name AST Memory Allocation Support Variables
35886  Memory allocations support variables
35887 
35888  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
35889  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
35890  and support the AST File I/O Mechanism.
35891  */
35892  /* */
35893 
35894  public:
35895 
35896  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
35897  // to current node (so that it will work cleanly with build functions to specify patterns).
35898  // virtual SgNode* addRegExpAttribute();
35905 
35906 // *** COMMON CODE SECTION ENDS HERE ***
35907 
35908 
35909 // End of memberFunctionString
35910 // Start of memberFunctionString
35911 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
35912 
35913  // the generated cast function
35914  // friend ROSE_DLL_API SgIntKeyedBidirectionalGraph* isSgIntKeyedBidirectionalGraph ( SgNode* s );
35915 
35917 
35918 
35919 // End of memberFunctionString
35920 
35921 
35922  public:
35923  virtual ~SgIntKeyedBidirectionalGraph();
35924 
35925 
35926  public:
35927  SgIntKeyedBidirectionalGraph(std::string name = "");
35928 
35929  protected:
35930 
35931 
35932 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
35933 
35934 
35935  };
35936 #endif
35937 
35938 // postdeclarations for SgIntKeyedBidirectionalGraph
35939 
35940 /* #line 35941 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
35941 
35942 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
35943 
35944 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
35945 
35946 
35947 /* #line 35948 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
35948 
35949 
35950 
35951 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
35952 
35953 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
35954 // This code is automatically generated for each
35955 // terminal and non-terminal within the defined
35956 // grammar. There is a simple way to change the
35957 // code to fix bugs etc. See the ROSE README file
35958 // for directions.
35959 
35960 // tps: (02/22/2010): Adding DLL export requirements
35961 #include "rosedll.h"
35962 
35963 // predeclarations for SgIncidenceUndirectedGraph
35964 
35965 /* #line 35966 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
35966 
35967 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
35968 
35969 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
35970 
35971 #if 1
35972 // Class Definition for SgIncidenceUndirectedGraph
35973 class ROSE_DLL_API SgIncidenceUndirectedGraph : public SgGraph
35974  {
35975  public:
35976 
35977 
35978 /* #line 35979 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
35979 
35980  virtual SgNode* copy ( SgCopyHelp& help) const override;
35981 // Start of memberFunctionString
35982 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
35983 
35984 
35985 
35986 // End of memberFunctionString
35987 // Start of memberFunctionString
35988 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
35989 
35990 // *** COMMON CODE SECTION BEGINS HERE ***
35991 
35992  public:
35993 
35994  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
35995  // and not required which is required to match the other aspects of the copy mechanism code generation.
35996  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
35997  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
35998  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
35999  // virtual SgNode* copy ( const SgCopyHelp & help) const;
36000 
36002  virtual std::string class_name() const override;
36003 
36005  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
36006 
36008  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
36009  // static const VariantT static_variant = V_SgIncidenceUndirectedGraph;
36010  enum { static_variant = V_SgIncidenceUndirectedGraph };
36011 
36012  /* the generated cast function */
36014  ROSE_DLL_API friend SgIncidenceUndirectedGraph* isSgIncidenceUndirectedGraph( SgNode * s );
36015 
36017  ROSE_DLL_API friend const SgIncidenceUndirectedGraph* isSgIncidenceUndirectedGraph( const SgNode * s );
36018 
36019  // ******************************************
36020  // * Memory Pool / New / Delete
36021  // ******************************************
36022 
36023  public:
36025  static const unsigned pool_size; //
36027  static std::vector<unsigned char *> pools; //
36029  static SgIncidenceUndirectedGraph * next_node; //
36030 
36032  static unsigned long initializeStorageClassArray(SgIncidenceUndirectedGraphStorageClass *); //
36033 
36035  static void clearMemoryPool(); //
36036  static void deleteMemoryPool(); //
36037 
36039  static void extendMemoryPoolForFileIO(); //
36040 
36042  static SgIncidenceUndirectedGraph * getPointerFromGlobalIndex(unsigned long); //
36044  static SgIncidenceUndirectedGraph * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
36045 
36047  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
36049  static void resetValidFreepointers(); //
36051  static unsigned long getNumberOfLastValidPointer(); //
36052 
36053 
36054 #if defined(INLINE_FUNCTIONS)
36055 
36056  inline void *operator new (size_t size);
36057 #else
36058 
36059  void *operator new (size_t size);
36060 #endif
36061 
36062  void operator delete (void* pointer, size_t size);
36063 
36064  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
36065  void operator delete (void* pointer)
36066  {
36067  // This is the generated delete operator...
36068  SgIncidenceUndirectedGraph::operator delete (pointer,sizeof(SgIncidenceUndirectedGraph));
36069  }
36070 
36072  static size_t numberOfNodes();
36073 
36075  static size_t memoryUsage();
36076 
36077  // End of scope which started in IR nodes specific code
36078  /* */
36079 
36080  /* name Internal Functions
36081  \brief Internal functions ... incomplete-documentation
36082 
36083  These functions have been made public as part of the design, but they are suggested for internal use
36084  or by particularly knowledgeable users for specialized tools or applications.
36085 
36086  \internal We could not make these private because they are required by user for special purposes. And
36087  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
36088 
36089  */
36090 
36091  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
36092  // overridden in every class by *generated* implementation
36094  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
36095  // MS: 06/28/02 container of names of variables or container indices
36096  // used used in the traversal to access AST successor nodes
36097  // overridden in every class by *generated* implementation
36100  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
36101 
36102  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
36103  // than all the vector copies. The implementation for these functions is generated for each class.
36105  virtual size_t get_numberOfTraversalSuccessors() override;
36107  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
36109  virtual size_t get_childIndex(SgNode *child) override;
36110 
36111 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
36112  // MS: 08/16/2002 method for generating RTI information
36114  virtual RTIReturnType roseRTI() override;
36115 #endif
36116  /* */
36117 
36118 
36119 
36120  /* name Deprecated Functions
36121  \brief Deprecated functions ... incomplete-documentation
36122 
36123  These functions have been deprecated from use.
36124  */
36125  /* */
36126 
36128  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
36129 
36130  // JJW (10/16/2008): Changed to a single function in Node.code, and put
36131  // getVariant() in #if 0 block to prevent confusing Doxygen
36132 #if 0
36133 
36134  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
36136  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
36137 #endif
36138  /* */
36139 
36140 
36141 
36142 
36143  public:
36144  /* name Traversal Support Functions
36145  \brief Traversal support functions ... incomplete-documentation
36146 
36147  These functions have been made public as part of the design, but they are suggested for internal use
36148  or by particularly knowledgable users for specialized tools or applications.
36149  */
36150  /* */
36151 
36152  // DQ (11/26/2005): Support for visitor pattern mechanims
36153  // (inferior to ROSE traversal mechanism, experimental).
36157 
36158  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
36160  virtual void accept (ROSE_VisitorPattern & visitor) override;
36161 
36162  // DQ (12/26/2005): Support for traversal based on the memory pool
36165  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
36166 
36170 
36171  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
36172  // This traversal helps support internal tools that call static member functions.
36173  // note: this function operates on the memory pools.
36176  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
36177  /* */
36178 
36179 
36180  public:
36181  /* name Memory Allocation Functions
36182  \brief Memory allocations functions ... incomplete-documentation
36183 
36184  These functions have been made public as part of the design, but they are suggested for internal use
36185  or by particularly knowledgable users for specialized tools or applications.
36186  */
36187  /* */
36188 
36199  virtual bool isInMemoryPool() override;
36200 
36211  virtual void checkDataMemberPointersIfInMemoryPool() override;
36212 
36213  // DQ (4/30/2006): Modified to be a const function.
36228  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
36229 
36239  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
36240 
36252  virtual long getChildIndex( SgNode* childNode ) const override;
36253 
36254  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
36255  // comment here (changed to be a C style comment and not be a doxygen comment).
36256  /* \brief Constructor for use by AST File I/O Mechanism
36257 
36258  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
36259  which obtained via fast binary file I/O from disk.
36260  */
36261  // SgIncidenceUndirectedGraph( SgIncidenceUndirectedGraphStorageClass& source );
36262 
36263 
36264 
36265 
36266 
36267  // JH (10/24/2005): methods added to support the ast file IO
36268  private:
36269 
36270  /* name AST Memory Allocation Support Functions
36271  \brief Memory allocations support....
36272 
36273  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
36274  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
36275  and support the AST File I/O Mechanism.
36276  */
36277  /* */
36278 
36279  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
36280  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
36281  that I use the same type everywhere, if any changes are made. THe second one declares the type
36282  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
36283  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
36284  a correspinding one in the AST_FILE_IO class!
36285  */
36286  // DQ (9/2/2015): This typedef is no longer used, we can't define the
36287  // comment here (changed to be a C style comment and not be a doxygen comment).
36288  /* \brief Typedef used for low level memory access.
36289  */
36290  // typedef unsigned char* TestType;
36291 
36292  // DQ (9/2/2015): This typedef is no longer used, we can't define the
36293  // comment here (changed to be a C style comment and not be a doxygen comment).
36294  /* \brief Typedef used to hold memory addresses as values.
36295  */
36296  // typedef unsigned long AddressType;
36297 
36298 
36299 
36300  // necessary, to have direct access to the p_freepointer and the private methods !
36302  friend class AST_FILE_IO;
36303 
36305  friend class SgIncidenceUndirectedGraphStorageClass;
36306 
36308  friend class AstSpecificDataManagingClass;
36309 
36311  friend class AstSpecificDataManagingClassStorageClass;
36312 
36313  public:
36315  SgIncidenceUndirectedGraph( const SgIncidenceUndirectedGraphStorageClass& source );
36316 
36317  // private: // JJW hack
36318  /*
36319  name AST Memory Allocation Support Variables
36320  Memory allocations support variables
36321 
36322  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
36323  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
36324  and support the AST File I/O Mechanism.
36325  */
36326  /* */
36327 
36328  public:
36329 
36330  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
36331  // to current node (so that it will work cleanly with build functions to specify patterns).
36332  // virtual SgNode* addRegExpAttribute();
36339 
36340 // *** COMMON CODE SECTION ENDS HERE ***
36341 
36342 
36343 // End of memberFunctionString
36344 // Start of memberFunctionString
36345 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
36346 
36347  // the generated cast function
36348  // friend ROSE_DLL_API SgIncidenceUndirectedGraph* isSgIncidenceUndirectedGraph ( SgNode* s );
36349 
36350  typedef SgGraph base_node_type;
36351 
36352 
36353 // End of memberFunctionString
36354 
36355 
36356  public:
36357  virtual ~SgIncidenceUndirectedGraph();
36358 
36359 
36360  public:
36361  SgIncidenceUndirectedGraph(std::string name = "");
36362 
36363  protected:
36364 
36365 
36366 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
36367 
36368 
36369  };
36370 #endif
36371 
36372 // postdeclarations for SgIncidenceUndirectedGraph
36373 
36374 /* #line 36375 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
36375 
36376 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
36377 
36378 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
36379 
36380 
36381 /* #line 36382 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
36382 
36383 
36384 
36385 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
36386 
36387 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
36388 // This code is automatically generated for each
36389 // terminal and non-terminal within the defined
36390 // grammar. There is a simple way to change the
36391 // code to fix bugs etc. See the ROSE README file
36392 // for directions.
36393 
36394 // tps: (02/22/2010): Adding DLL export requirements
36395 #include "rosedll.h"
36396 
36397 // predeclarations for SgGraphNode
36398 
36399 /* #line 36400 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
36400 
36401 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
36402 
36403 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
36404 
36405 #if 1
36406 // Class Definition for SgGraphNode
36407 class ROSE_DLL_API SgGraphNode : public SgSupport
36408  {
36409  public:
36410 
36411 
36412 /* #line 36413 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
36413 
36414  virtual SgNode* copy ( SgCopyHelp& help) const override;
36415 // Start of memberFunctionString
36416 /* #line 670 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
36417 
36418  void append_properties( int addr, const std::string & prop );
36419 
36420  void post_construction_initialization() override;
36421 
36422 
36423 // End of memberFunctionString
36424 // Start of memberFunctionString
36425 /* #line 2317 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
36426 
36427 
36428  /* name Persistant Attribute Mechanism
36429 
36430  This is the persistant attribute mechanism for attaching attributes to IR nodes across
36431  multiple passes. Note that these attributes are persistant in that they are preserved
36432  if the AST is written out to a file and read in from a file. However, virtual function
36433  in the user-defined class derived from the AstAttribute must be defined for the attribute
36434  to be defined across the boundary of File I/O (simple pack and unpack functions). More
36435  sophisticated mechanisms are available within the AstAttributeMechanism object
36436  (e.g iterating though attributes, etc; get_attributeMechanism() is available if direct
36437  access is required, however mostly only internal tools use this lower level support).
36438 
36439  \internal This used to be a public data member, but has been changed to be a protected
36440  pointer instead. The functional interface of the AstAttributeMechanism is presevered
36441  but some of the names and the syntax for calling the interface have changed. The
36442  pointer to the AstAttributeMechanism is now generated by ROSETTA.
36443  */
36444  /* */
36446  virtual void addNewAttribute(std::string s,AstAttribute* a) override;
36448  virtual AstAttribute* getAttribute(std::string s) const override;
36450  virtual void updateAttribute(std::string s,AstAttribute* a) override; // formerly called: replace in AstAttributeMechanism
36455  virtual void setAttribute(std::string s,AstAttribute* a) override;
36457  virtual void removeAttribute(std::string s) override;
36459  virtual bool attributeExists(std::string s) const override;
36461  virtual int numberOfAttributes() const override;
36462 
36477  /* */
36478 
36479 
36480 
36481 
36482 // End of memberFunctionString
36483 // Start of memberFunctionString
36484 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
36485 
36486 // *** COMMON CODE SECTION BEGINS HERE ***
36487 
36488  public:
36489 
36490  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
36491  // and not required which is required to match the other aspects of the copy mechanism code generation.
36492  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
36493  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
36494  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
36495  // virtual SgNode* copy ( const SgCopyHelp & help) const;
36496 
36498  virtual std::string class_name() const override;
36499 
36501  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
36502 
36504  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
36505  // static const VariantT static_variant = V_SgGraphNode;
36506  enum { static_variant = V_SgGraphNode };
36507 
36508  /* the generated cast function */
36510  ROSE_DLL_API friend SgGraphNode* isSgGraphNode( SgNode * s );
36511 
36513  ROSE_DLL_API friend const SgGraphNode* isSgGraphNode( const SgNode * s );
36514 
36515  // ******************************************
36516  // * Memory Pool / New / Delete
36517  // ******************************************
36518 
36519  public:
36521  static const unsigned pool_size; //
36523  static std::vector<unsigned char *> pools; //
36525  static SgGraphNode * next_node; //
36526 
36528  static unsigned long initializeStorageClassArray(SgGraphNodeStorageClass *); //
36529 
36531  static void clearMemoryPool(); //
36532  static void deleteMemoryPool(); //
36533 
36535  static void extendMemoryPoolForFileIO(); //
36536 
36538  static SgGraphNode * getPointerFromGlobalIndex(unsigned long); //
36540  static SgGraphNode * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
36541 
36543  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
36545  static void resetValidFreepointers(); //
36547  static unsigned long getNumberOfLastValidPointer(); //
36548 
36549 
36550 #if defined(INLINE_FUNCTIONS)
36551 
36552  inline void *operator new (size_t size);
36553 #else
36554 
36555  void *operator new (size_t size);
36556 #endif
36557 
36558  void operator delete (void* pointer, size_t size);
36559 
36560  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
36561  void operator delete (void* pointer)
36562  {
36563  // This is the generated delete operator...
36564  SgGraphNode::operator delete (pointer,sizeof(SgGraphNode));
36565  }
36566 
36568  static size_t numberOfNodes();
36569 
36571  static size_t memoryUsage();
36572 
36573  // End of scope which started in IR nodes specific code
36574  /* */
36575 
36576  /* name Internal Functions
36577  \brief Internal functions ... incomplete-documentation
36578 
36579  These functions have been made public as part of the design, but they are suggested for internal use
36580  or by particularly knowledgeable users for specialized tools or applications.
36581 
36582  \internal We could not make these private because they are required by user for special purposes. And
36583  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
36584 
36585  */
36586 
36587  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
36588  // overridden in every class by *generated* implementation
36590  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
36591  // MS: 06/28/02 container of names of variables or container indices
36592  // used used in the traversal to access AST successor nodes
36593  // overridden in every class by *generated* implementation
36596  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
36597 
36598  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
36599  // than all the vector copies. The implementation for these functions is generated for each class.
36601  virtual size_t get_numberOfTraversalSuccessors() override;
36603  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
36605  virtual size_t get_childIndex(SgNode *child) override;
36606 
36607 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
36608  // MS: 08/16/2002 method for generating RTI information
36610  virtual RTIReturnType roseRTI() override;
36611 #endif
36612  /* */
36613 
36614 
36615 
36616  /* name Deprecated Functions
36617  \brief Deprecated functions ... incomplete-documentation
36618 
36619  These functions have been deprecated from use.
36620  */
36621  /* */
36622 
36624  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
36625 
36626  // JJW (10/16/2008): Changed to a single function in Node.code, and put
36627  // getVariant() in #if 0 block to prevent confusing Doxygen
36628 #if 0
36629 
36630  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
36632  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
36633 #endif
36634  /* */
36635 
36636 
36637 
36638 
36639  public:
36640  /* name Traversal Support Functions
36641  \brief Traversal support functions ... incomplete-documentation
36642 
36643  These functions have been made public as part of the design, but they are suggested for internal use
36644  or by particularly knowledgable users for specialized tools or applications.
36645  */
36646  /* */
36647 
36648  // DQ (11/26/2005): Support for visitor pattern mechanims
36649  // (inferior to ROSE traversal mechanism, experimental).
36653 
36654  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
36656  virtual void accept (ROSE_VisitorPattern & visitor) override;
36657 
36658  // DQ (12/26/2005): Support for traversal based on the memory pool
36661  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
36662 
36666 
36667  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
36668  // This traversal helps support internal tools that call static member functions.
36669  // note: this function operates on the memory pools.
36672  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
36673  /* */
36674 
36675 
36676  public:
36677  /* name Memory Allocation Functions
36678  \brief Memory allocations functions ... incomplete-documentation
36679 
36680  These functions have been made public as part of the design, but they are suggested for internal use
36681  or by particularly knowledgable users for specialized tools or applications.
36682  */
36683  /* */
36684 
36695  virtual bool isInMemoryPool() override;
36696 
36707  virtual void checkDataMemberPointersIfInMemoryPool() override;
36708 
36709  // DQ (4/30/2006): Modified to be a const function.
36724  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
36725 
36735  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
36736 
36748  virtual long getChildIndex( SgNode* childNode ) const override;
36749 
36750  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
36751  // comment here (changed to be a C style comment and not be a doxygen comment).
36752  /* \brief Constructor for use by AST File I/O Mechanism
36753 
36754  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
36755  which obtained via fast binary file I/O from disk.
36756  */
36757  // SgGraphNode( SgGraphNodeStorageClass& source );
36758 
36759 
36760 
36761 
36762 
36763  // JH (10/24/2005): methods added to support the ast file IO
36764  private:
36765 
36766  /* name AST Memory Allocation Support Functions
36767  \brief Memory allocations support....
36768 
36769  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
36770  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
36771  and support the AST File I/O Mechanism.
36772  */
36773  /* */
36774 
36775  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
36776  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
36777  that I use the same type everywhere, if any changes are made. THe second one declares the type
36778  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
36779  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
36780  a correspinding one in the AST_FILE_IO class!
36781  */
36782  // DQ (9/2/2015): This typedef is no longer used, we can't define the
36783  // comment here (changed to be a C style comment and not be a doxygen comment).
36784  /* \brief Typedef used for low level memory access.
36785  */
36786  // typedef unsigned char* TestType;
36787 
36788  // DQ (9/2/2015): This typedef is no longer used, we can't define the
36789  // comment here (changed to be a C style comment and not be a doxygen comment).
36790  /* \brief Typedef used to hold memory addresses as values.
36791  */
36792  // typedef unsigned long AddressType;
36793 
36794 
36795 
36796  // necessary, to have direct access to the p_freepointer and the private methods !
36798  friend class AST_FILE_IO;
36799 
36801  friend class SgGraphNodeStorageClass;
36802 
36804  friend class AstSpecificDataManagingClass;
36805 
36807  friend class AstSpecificDataManagingClassStorageClass;
36808 
36809  public:
36811  SgGraphNode( const SgGraphNodeStorageClass& source );
36812 
36813  // private: // JJW hack
36814  /*
36815  name AST Memory Allocation Support Variables
36816  Memory allocations support variables
36817 
36818  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
36819  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
36820  and support the AST File I/O Mechanism.
36821  */
36822  /* */
36823 
36824  public:
36825 
36826  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
36827  // to current node (so that it will work cleanly with build functions to specify patterns).
36828  // virtual SgNode* addRegExpAttribute();
36834  SgGraphNode* addRegExpAttribute(std::string s, AstRegExAttribute* a);
36835 
36836 // *** COMMON CODE SECTION ENDS HERE ***
36837 
36838 
36839 // End of memberFunctionString
36840 // Start of memberFunctionString
36841 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
36842 
36843  // the generated cast function
36844  // friend ROSE_DLL_API SgGraphNode* isSgGraphNode ( SgNode* s );
36845 
36846  typedef SgSupport base_node_type;
36847 
36848 
36849 // End of memberFunctionString
36850 
36851  public:
36852  std::string get_name() const /* (getDataAccessFunctionPrototypeString) */;
36853  void set_name(std::string name) /* (getDataAccessFunctionPrototypeString) */;
36854 
36855  public:
36856  SgNode* get_SgNode() const;
36857  void set_SgNode(SgNode* SgNode);
36858 
36859  public:
36860  int get_index() const;
36861  void set_index(int index);
36862 
36863 
36864  public:
36865  AstAttributeMechanism* get_attributeMechanism() const override /* (getDataAccessFunctionPrototypeString) */;
36866  void set_attributeMechanism(AstAttributeMechanism* attributeMechanism) override /* (getDataAccessFunctionPrototypeString) */;
36867 
36868  public:
36869  const std::map<int, std::string>& get_properties() const;
36870  std::map<int, std::string>& get_properties();
36871 
36872 
36873  public:
36874  virtual ~SgGraphNode();
36875 
36876 
36877  public:
36878  SgGraphNode(std::string name = "");
36879 
36880  protected:
36881 // Start of memberFunctionString
36882 std::string p_name;
36883 
36884 // End of memberFunctionString
36885 // Start of memberFunctionString
36886 SgNode* p_SgNode;
36887 
36888 // End of memberFunctionString
36889 // Start of memberFunctionString
36890 int p_index;
36891 
36892 // End of memberFunctionString
36893 // Start of memberFunctionString
36894 static int p_index_counter;
36895 
36896 // End of memberFunctionString
36897 // Start of memberFunctionString
36898 AstAttributeMechanism* p_attributeMechanism;
36899 
36900 // End of memberFunctionString
36901 // Start of memberFunctionString
36902 std::map<int, std::string> p_properties;
36903 
36904 // End of memberFunctionString
36905 
36906 
36907 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
36908 
36909 
36910  };
36911 #endif
36912 
36913 // postdeclarations for SgGraphNode
36914 
36915 /* #line 36916 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
36916 
36917 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
36918 
36919 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
36920 
36921 
36922 /* #line 36923 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
36923 
36924 
36925 
36926 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
36927 
36928 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
36929 // This code is automatically generated for each
36930 // terminal and non-terminal within the defined
36931 // grammar. There is a simple way to change the
36932 // code to fix bugs etc. See the ROSE README file
36933 // for directions.
36934 
36935 // tps: (02/22/2010): Adding DLL export requirements
36936 #include "rosedll.h"
36937 
36938 // predeclarations for SgGraphEdge
36939 
36940 /* #line 36941 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
36941 
36942 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
36943 
36944 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
36945 
36946 #if 1
36947 // Class Definition for SgGraphEdge
36948 class ROSE_DLL_API SgGraphEdge : public SgSupport
36949  {
36950  public:
36951 
36952 
36953 /* #line 36954 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
36954 
36955  virtual SgNode* copy ( SgCopyHelp& help) const override;
36956 // Start of memberFunctionString
36957 /* #line 677 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
36958 
36959  void append_properties( int addr, const std::string & prop );
36960 
36961  void post_construction_initialization() override;
36962 
36963 
36964 // End of memberFunctionString
36965 // Start of memberFunctionString
36966 /* #line 2317 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
36967 
36968 
36969  /* name Persistant Attribute Mechanism
36970 
36971  This is the persistant attribute mechanism for attaching attributes to IR nodes across
36972  multiple passes. Note that these attributes are persistant in that they are preserved
36973  if the AST is written out to a file and read in from a file. However, virtual function
36974  in the user-defined class derived from the AstAttribute must be defined for the attribute
36975  to be defined across the boundary of File I/O (simple pack and unpack functions). More
36976  sophisticated mechanisms are available within the AstAttributeMechanism object
36977  (e.g iterating though attributes, etc; get_attributeMechanism() is available if direct
36978  access is required, however mostly only internal tools use this lower level support).
36979 
36980  \internal This used to be a public data member, but has been changed to be a protected
36981  pointer instead. The functional interface of the AstAttributeMechanism is presevered
36982  but some of the names and the syntax for calling the interface have changed. The
36983  pointer to the AstAttributeMechanism is now generated by ROSETTA.
36984  */
36985  /* */
36987  virtual void addNewAttribute(std::string s,AstAttribute* a) override;
36989  virtual AstAttribute* getAttribute(std::string s) const override;
36991  virtual void updateAttribute(std::string s,AstAttribute* a) override; // formerly called: replace in AstAttributeMechanism
36996  virtual void setAttribute(std::string s,AstAttribute* a) override;
36998  virtual void removeAttribute(std::string s) override;
37000  virtual bool attributeExists(std::string s) const override;
37002  virtual int numberOfAttributes() const override;
37003 
37018  /* */
37019 
37020 
37021 
37022 
37023 // End of memberFunctionString
37024 // Start of memberFunctionString
37025 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
37026 
37027 // *** COMMON CODE SECTION BEGINS HERE ***
37028 
37029  public:
37030 
37031  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
37032  // and not required which is required to match the other aspects of the copy mechanism code generation.
37033  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
37034  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
37035  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
37036  // virtual SgNode* copy ( const SgCopyHelp & help) const;
37037 
37039  virtual std::string class_name() const override;
37040 
37042  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
37043 
37045  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
37046  // static const VariantT static_variant = V_SgGraphEdge;
37047  enum { static_variant = V_SgGraphEdge };
37048 
37049  /* the generated cast function */
37051  ROSE_DLL_API friend SgGraphEdge* isSgGraphEdge( SgNode * s );
37052 
37054  ROSE_DLL_API friend const SgGraphEdge* isSgGraphEdge( const SgNode * s );
37055 
37056  // ******************************************
37057  // * Memory Pool / New / Delete
37058  // ******************************************
37059 
37060  public:
37062  static const unsigned pool_size; //
37064  static std::vector<unsigned char *> pools; //
37066  static SgGraphEdge * next_node; //
37067 
37069  static unsigned long initializeStorageClassArray(SgGraphEdgeStorageClass *); //
37070 
37072  static void clearMemoryPool(); //
37073  static void deleteMemoryPool(); //
37074 
37076  static void extendMemoryPoolForFileIO(); //
37077 
37079  static SgGraphEdge * getPointerFromGlobalIndex(unsigned long); //
37081  static SgGraphEdge * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
37082 
37084  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
37086  static void resetValidFreepointers(); //
37088  static unsigned long getNumberOfLastValidPointer(); //
37089 
37090 
37091 #if defined(INLINE_FUNCTIONS)
37092 
37093  inline void *operator new (size_t size);
37094 #else
37095 
37096  void *operator new (size_t size);
37097 #endif
37098 
37099  void operator delete (void* pointer, size_t size);
37100 
37101  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
37102  void operator delete (void* pointer)
37103  {
37104  // This is the generated delete operator...
37105  SgGraphEdge::operator delete (pointer,sizeof(SgGraphEdge));
37106  }
37107 
37109  static size_t numberOfNodes();
37110 
37112  static size_t memoryUsage();
37113 
37114  // End of scope which started in IR nodes specific code
37115  /* */
37116 
37117  /* name Internal Functions
37118  \brief Internal functions ... incomplete-documentation
37119 
37120  These functions have been made public as part of the design, but they are suggested for internal use
37121  or by particularly knowledgeable users for specialized tools or applications.
37122 
37123  \internal We could not make these private because they are required by user for special purposes. And
37124  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
37125 
37126  */
37127 
37128  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
37129  // overridden in every class by *generated* implementation
37131  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
37132  // MS: 06/28/02 container of names of variables or container indices
37133  // used used in the traversal to access AST successor nodes
37134  // overridden in every class by *generated* implementation
37137  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
37138 
37139  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
37140  // than all the vector copies. The implementation for these functions is generated for each class.
37142  virtual size_t get_numberOfTraversalSuccessors() override;
37144  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
37146  virtual size_t get_childIndex(SgNode *child) override;
37147 
37148 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
37149  // MS: 08/16/2002 method for generating RTI information
37151  virtual RTIReturnType roseRTI() override;
37152 #endif
37153  /* */
37154 
37155 
37156 
37157  /* name Deprecated Functions
37158  \brief Deprecated functions ... incomplete-documentation
37159 
37160  These functions have been deprecated from use.
37161  */
37162  /* */
37163 
37165  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
37166 
37167  // JJW (10/16/2008): Changed to a single function in Node.code, and put
37168  // getVariant() in #if 0 block to prevent confusing Doxygen
37169 #if 0
37170 
37171  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
37173  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
37174 #endif
37175  /* */
37176 
37177 
37178 
37179 
37180  public:
37181  /* name Traversal Support Functions
37182  \brief Traversal support functions ... incomplete-documentation
37183 
37184  These functions have been made public as part of the design, but they are suggested for internal use
37185  or by particularly knowledgable users for specialized tools or applications.
37186  */
37187  /* */
37188 
37189  // DQ (11/26/2005): Support for visitor pattern mechanims
37190  // (inferior to ROSE traversal mechanism, experimental).
37194 
37195  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
37197  virtual void accept (ROSE_VisitorPattern & visitor) override;
37198 
37199  // DQ (12/26/2005): Support for traversal based on the memory pool
37202  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
37203 
37207 
37208  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
37209  // This traversal helps support internal tools that call static member functions.
37210  // note: this function operates on the memory pools.
37213  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
37214  /* */
37215 
37216 
37217  public:
37218  /* name Memory Allocation Functions
37219  \brief Memory allocations functions ... incomplete-documentation
37220 
37221  These functions have been made public as part of the design, but they are suggested for internal use
37222  or by particularly knowledgable users for specialized tools or applications.
37223  */
37224  /* */
37225 
37236  virtual bool isInMemoryPool() override;
37237 
37248  virtual void checkDataMemberPointersIfInMemoryPool() override;
37249 
37250  // DQ (4/30/2006): Modified to be a const function.
37265  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
37266 
37276  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
37277 
37289  virtual long getChildIndex( SgNode* childNode ) const override;
37290 
37291  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
37292  // comment here (changed to be a C style comment and not be a doxygen comment).
37293  /* \brief Constructor for use by AST File I/O Mechanism
37294 
37295  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
37296  which obtained via fast binary file I/O from disk.
37297  */
37298  // SgGraphEdge( SgGraphEdgeStorageClass& source );
37299 
37300 
37301 
37302 
37303 
37304  // JH (10/24/2005): methods added to support the ast file IO
37305  private:
37306 
37307  /* name AST Memory Allocation Support Functions
37308  \brief Memory allocations support....
37309 
37310  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
37311  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
37312  and support the AST File I/O Mechanism.
37313  */
37314  /* */
37315 
37316  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
37317  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
37318  that I use the same type everywhere, if any changes are made. THe second one declares the type
37319  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
37320  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
37321  a correspinding one in the AST_FILE_IO class!
37322  */
37323  // DQ (9/2/2015): This typedef is no longer used, we can't define the
37324  // comment here (changed to be a C style comment and not be a doxygen comment).
37325  /* \brief Typedef used for low level memory access.
37326  */
37327  // typedef unsigned char* TestType;
37328 
37329  // DQ (9/2/2015): This typedef is no longer used, we can't define the
37330  // comment here (changed to be a C style comment and not be a doxygen comment).
37331  /* \brief Typedef used to hold memory addresses as values.
37332  */
37333  // typedef unsigned long AddressType;
37334 
37335 
37336 
37337  // necessary, to have direct access to the p_freepointer and the private methods !
37339  friend class AST_FILE_IO;
37340 
37342  friend class SgGraphEdgeStorageClass;
37343 
37345  friend class AstSpecificDataManagingClass;
37346 
37348  friend class AstSpecificDataManagingClassStorageClass;
37349 
37350  public:
37352  SgGraphEdge( const SgGraphEdgeStorageClass& source );
37353 
37354  // private: // JJW hack
37355  /*
37356  name AST Memory Allocation Support Variables
37357  Memory allocations support variables
37358 
37359  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
37360  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
37361  and support the AST File I/O Mechanism.
37362  */
37363  /* */
37364 
37365  public:
37366 
37367  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
37368  // to current node (so that it will work cleanly with build functions to specify patterns).
37369  // virtual SgNode* addRegExpAttribute();
37375  SgGraphEdge* addRegExpAttribute(std::string s, AstRegExAttribute* a);
37376 
37377 // *** COMMON CODE SECTION ENDS HERE ***
37378 
37379 
37380 // End of memberFunctionString
37381 // Start of memberFunctionString
37382 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
37383 
37384  // the generated cast function
37385  // friend ROSE_DLL_API SgGraphEdge* isSgGraphEdge ( SgNode* s );
37386 
37387  typedef SgSupport base_node_type;
37388 
37389 
37390 // End of memberFunctionString
37391 
37392  public:
37393  SgGraphNode* get_node_A() const;
37394  void set_node_A(SgGraphNode* node_A);
37395 
37396  public:
37397  SgGraphNode* get_node_B() const;
37398  void set_node_B(SgGraphNode* node_B);
37399 
37400  public:
37401  std::string get_name() const /* (getDataAccessFunctionPrototypeString) */;
37402  void set_name(std::string name) /* (getDataAccessFunctionPrototypeString) */;
37403 
37404  public:
37405  int get_index() const;
37406  void set_index(int index);
37407 
37408 
37409  public:
37410  AstAttributeMechanism* get_attributeMechanism() const override /* (getDataAccessFunctionPrototypeString) */;
37411  void set_attributeMechanism(AstAttributeMechanism* attributeMechanism) override /* (getDataAccessFunctionPrototypeString) */;
37412 
37413  public:
37414  const std::map<int, std::string>& get_properties() const;
37415  std::map<int, std::string>& get_properties();
37416 
37417 
37418  public:
37419  virtual ~SgGraphEdge();
37420 
37421 
37422  public:
37423  SgGraphEdge(SgGraphNode* node_A = NULL, SgGraphNode* node_B = NULL, std::string name = "");
37424 
37425  protected:
37426 // Start of memberFunctionString
37427 SgGraphNode* p_node_A;
37428 
37429 // End of memberFunctionString
37430 // Start of memberFunctionString
37431 SgGraphNode* p_node_B;
37432 
37433 // End of memberFunctionString
37434 // Start of memberFunctionString
37435 std::string p_name;
37436 
37437 // End of memberFunctionString
37438 // Start of memberFunctionString
37439 int p_index;
37440 
37441 // End of memberFunctionString
37442 // Start of memberFunctionString
37443 static int p_index_counter;
37444 
37445 // End of memberFunctionString
37446 // Start of memberFunctionString
37447 AstAttributeMechanism* p_attributeMechanism;
37448 
37449 // End of memberFunctionString
37450 // Start of memberFunctionString
37451 std::map<int, std::string> p_properties;
37452 
37453 // End of memberFunctionString
37454 
37455 
37456 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
37457 
37458 
37459  };
37460 #endif
37461 
37462 // postdeclarations for SgGraphEdge
37463 
37464 /* #line 37465 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
37465 
37466 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
37467 
37468 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
37469 
37470 
37471 /* #line 37472 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
37472 
37473 
37474 
37475 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
37476 
37477 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
37478 // This code is automatically generated for each
37479 // terminal and non-terminal within the defined
37480 // grammar. There is a simple way to change the
37481 // code to fix bugs etc. See the ROSE README file
37482 // for directions.
37483 
37484 // tps: (02/22/2010): Adding DLL export requirements
37485 #include "rosedll.h"
37486 
37487 // predeclarations for SgDirectedGraphEdge
37488 
37489 /* #line 37490 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
37490 
37491 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
37492 
37493 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
37494 
37495 #if 1
37496 // Class Definition for SgDirectedGraphEdge
37497 class ROSE_DLL_API SgDirectedGraphEdge : public SgGraphEdge
37498  {
37499  public:
37500 
37501 
37502 /* #line 37503 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
37503 
37504  virtual SgNode* copy ( SgCopyHelp& help) const override;
37505 // Start of memberFunctionString
37506 /* #line 684 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
37507 
37508  public:
37509  // DQ (8/18/2008): This is part of the OLD interface introduced for backward compatability!
37510  SgDirectedGraphEdge(std::string name, std::string type, int n, SgGraphNode* from, SgGraphNode* to);
37511 
37512  SgGraphNode* get_from() { return p_node_A; }
37513  SgGraphNode* get_to() { return p_node_B; }
37514 
37515 
37516 // End of memberFunctionString
37517 // Start of memberFunctionString
37518 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
37519 
37520 // *** COMMON CODE SECTION BEGINS HERE ***
37521 
37522  public:
37523 
37524  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
37525  // and not required which is required to match the other aspects of the copy mechanism code generation.
37526  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
37527  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
37528  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
37529  // virtual SgNode* copy ( const SgCopyHelp & help) const;
37530 
37532  virtual std::string class_name() const override;
37533 
37535  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
37536 
37538  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
37539  // static const VariantT static_variant = V_SgDirectedGraphEdge;
37540  enum { static_variant = V_SgDirectedGraphEdge };
37541 
37542  /* the generated cast function */
37544  ROSE_DLL_API friend SgDirectedGraphEdge* isSgDirectedGraphEdge( SgNode * s );
37545 
37547  ROSE_DLL_API friend const SgDirectedGraphEdge* isSgDirectedGraphEdge( const SgNode * s );
37548 
37549  // ******************************************
37550  // * Memory Pool / New / Delete
37551  // ******************************************
37552 
37553  public:
37555  static const unsigned pool_size; //
37557  static std::vector<unsigned char *> pools; //
37559  static SgDirectedGraphEdge * next_node; //
37560 
37562  static unsigned long initializeStorageClassArray(SgDirectedGraphEdgeStorageClass *); //
37563 
37565  static void clearMemoryPool(); //
37566  static void deleteMemoryPool(); //
37567 
37569  static void extendMemoryPoolForFileIO(); //
37570 
37572  static SgDirectedGraphEdge * getPointerFromGlobalIndex(unsigned long); //
37574  static SgDirectedGraphEdge * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
37575 
37577  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
37579  static void resetValidFreepointers(); //
37581  static unsigned long getNumberOfLastValidPointer(); //
37582 
37583 
37584 #if defined(INLINE_FUNCTIONS)
37585 
37586  inline void *operator new (size_t size);
37587 #else
37588 
37589  void *operator new (size_t size);
37590 #endif
37591 
37592  void operator delete (void* pointer, size_t size);
37593 
37594  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
37595  void operator delete (void* pointer)
37596  {
37597  // This is the generated delete operator...
37598  SgDirectedGraphEdge::operator delete (pointer,sizeof(SgDirectedGraphEdge));
37599  }
37600 
37602  static size_t numberOfNodes();
37603 
37605  static size_t memoryUsage();
37606 
37607  // End of scope which started in IR nodes specific code
37608  /* */
37609 
37610  /* name Internal Functions
37611  \brief Internal functions ... incomplete-documentation
37612 
37613  These functions have been made public as part of the design, but they are suggested for internal use
37614  or by particularly knowledgeable users for specialized tools or applications.
37615 
37616  \internal We could not make these private because they are required by user for special purposes. And
37617  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
37618 
37619  */
37620 
37621  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
37622  // overridden in every class by *generated* implementation
37624  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
37625  // MS: 06/28/02 container of names of variables or container indices
37626  // used used in the traversal to access AST successor nodes
37627  // overridden in every class by *generated* implementation
37630  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
37631 
37632  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
37633  // than all the vector copies. The implementation for these functions is generated for each class.
37635  virtual size_t get_numberOfTraversalSuccessors() override;
37637  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
37639  virtual size_t get_childIndex(SgNode *child) override;
37640 
37641 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
37642  // MS: 08/16/2002 method for generating RTI information
37644  virtual RTIReturnType roseRTI() override;
37645 #endif
37646  /* */
37647 
37648 
37649 
37650  /* name Deprecated Functions
37651  \brief Deprecated functions ... incomplete-documentation
37652 
37653  These functions have been deprecated from use.
37654  */
37655  /* */
37656 
37658  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
37659 
37660  // JJW (10/16/2008): Changed to a single function in Node.code, and put
37661  // getVariant() in #if 0 block to prevent confusing Doxygen
37662 #if 0
37663 
37664  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
37666  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
37667 #endif
37668  /* */
37669 
37670 
37671 
37672 
37673  public:
37674  /* name Traversal Support Functions
37675  \brief Traversal support functions ... incomplete-documentation
37676 
37677  These functions have been made public as part of the design, but they are suggested for internal use
37678  or by particularly knowledgable users for specialized tools or applications.
37679  */
37680  /* */
37681 
37682  // DQ (11/26/2005): Support for visitor pattern mechanims
37683  // (inferior to ROSE traversal mechanism, experimental).
37687 
37688  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
37690  virtual void accept (ROSE_VisitorPattern & visitor) override;
37691 
37692  // DQ (12/26/2005): Support for traversal based on the memory pool
37695  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
37696 
37700 
37701  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
37702  // This traversal helps support internal tools that call static member functions.
37703  // note: this function operates on the memory pools.
37706  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
37707  /* */
37708 
37709 
37710  public:
37711  /* name Memory Allocation Functions
37712  \brief Memory allocations functions ... incomplete-documentation
37713 
37714  These functions have been made public as part of the design, but they are suggested for internal use
37715  or by particularly knowledgable users for specialized tools or applications.
37716  */
37717  /* */
37718 
37729  virtual bool isInMemoryPool() override;
37730 
37741  virtual void checkDataMemberPointersIfInMemoryPool() override;
37742 
37743  // DQ (4/30/2006): Modified to be a const function.
37758  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
37759 
37769  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
37770 
37782  virtual long getChildIndex( SgNode* childNode ) const override;
37783 
37784  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
37785  // comment here (changed to be a C style comment and not be a doxygen comment).
37786  /* \brief Constructor for use by AST File I/O Mechanism
37787 
37788  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
37789  which obtained via fast binary file I/O from disk.
37790  */
37791  // SgDirectedGraphEdge( SgDirectedGraphEdgeStorageClass& source );
37792 
37793 
37794 
37795 
37796 
37797  // JH (10/24/2005): methods added to support the ast file IO
37798  private:
37799 
37800  /* name AST Memory Allocation Support Functions
37801  \brief Memory allocations support....
37802 
37803  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
37804  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
37805  and support the AST File I/O Mechanism.
37806  */
37807  /* */
37808 
37809  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
37810  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
37811  that I use the same type everywhere, if any changes are made. THe second one declares the type
37812  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
37813  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
37814  a correspinding one in the AST_FILE_IO class!
37815  */
37816  // DQ (9/2/2015): This typedef is no longer used, we can't define the
37817  // comment here (changed to be a C style comment and not be a doxygen comment).
37818  /* \brief Typedef used for low level memory access.
37819  */
37820  // typedef unsigned char* TestType;
37821 
37822  // DQ (9/2/2015): This typedef is no longer used, we can't define the
37823  // comment here (changed to be a C style comment and not be a doxygen comment).
37824  /* \brief Typedef used to hold memory addresses as values.
37825  */
37826  // typedef unsigned long AddressType;
37827 
37828 
37829 
37830  // necessary, to have direct access to the p_freepointer and the private methods !
37832  friend class AST_FILE_IO;
37833 
37835  friend class SgDirectedGraphEdgeStorageClass;
37836 
37838  friend class AstSpecificDataManagingClass;
37839 
37841  friend class AstSpecificDataManagingClassStorageClass;
37842 
37843  public:
37845  SgDirectedGraphEdge( const SgDirectedGraphEdgeStorageClass& source );
37846 
37847  // private: // JJW hack
37848  /*
37849  name AST Memory Allocation Support Variables
37850  Memory allocations support variables
37851 
37852  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
37853  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
37854  and support the AST File I/O Mechanism.
37855  */
37856  /* */
37857 
37858  public:
37859 
37860  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
37861  // to current node (so that it will work cleanly with build functions to specify patterns).
37862  // virtual SgNode* addRegExpAttribute();
37869 
37870 // *** COMMON CODE SECTION ENDS HERE ***
37871 
37872 
37873 // End of memberFunctionString
37874 // Start of memberFunctionString
37875 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
37876 
37877  // the generated cast function
37878  // friend ROSE_DLL_API SgDirectedGraphEdge* isSgDirectedGraphEdge ( SgNode* s );
37879 
37880  typedef SgGraphEdge base_node_type;
37881 
37882 
37883 // End of memberFunctionString
37884 
37885 
37886  public:
37887  virtual ~SgDirectedGraphEdge();
37888 
37889 
37890  public:
37891  SgDirectedGraphEdge(SgGraphNode* node_A = NULL, SgGraphNode* node_B = NULL, std::string name = "");
37892 
37893  protected:
37894 
37895 
37896 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
37897 
37898 
37899  };
37900 #endif
37901 
37902 // postdeclarations for SgDirectedGraphEdge
37903 
37904 /* #line 37905 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
37905 
37906 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
37907 
37908 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
37909 
37910 
37911 /* #line 37912 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
37912 
37913 
37914 
37915 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
37916 
37917 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
37918 // This code is automatically generated for each
37919 // terminal and non-terminal within the defined
37920 // grammar. There is a simple way to change the
37921 // code to fix bugs etc. See the ROSE README file
37922 // for directions.
37923 
37924 // tps: (02/22/2010): Adding DLL export requirements
37925 #include "rosedll.h"
37926 
37927 // predeclarations for SgUndirectedGraphEdge
37928 
37929 /* #line 37930 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
37930 
37931 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
37932 
37933 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
37934 
37935 #if 1
37936 // Class Definition for SgUndirectedGraphEdge
37937 class ROSE_DLL_API SgUndirectedGraphEdge : public SgGraphEdge
37938  {
37939  public:
37940 
37941 
37942 /* #line 37943 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
37943 
37944  virtual SgNode* copy ( SgCopyHelp& help) const override;
37945 // Start of memberFunctionString
37946 /* #line 730 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
37947 
37948  SgGraphNode* get_node1() { return p_node_A; }
37949  SgGraphNode* get_node2() { return p_node_B; }
37950 
37951 
37952 // End of memberFunctionString
37953 // Start of memberFunctionString
37954 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
37955 
37956 // *** COMMON CODE SECTION BEGINS HERE ***
37957 
37958  public:
37959 
37960  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
37961  // and not required which is required to match the other aspects of the copy mechanism code generation.
37962  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
37963  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
37964  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
37965  // virtual SgNode* copy ( const SgCopyHelp & help) const;
37966 
37968  virtual std::string class_name() const override;
37969 
37971  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
37972 
37974  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
37975  // static const VariantT static_variant = V_SgUndirectedGraphEdge;
37976  enum { static_variant = V_SgUndirectedGraphEdge };
37977 
37978  /* the generated cast function */
37980  ROSE_DLL_API friend SgUndirectedGraphEdge* isSgUndirectedGraphEdge( SgNode * s );
37981 
37983  ROSE_DLL_API friend const SgUndirectedGraphEdge* isSgUndirectedGraphEdge( const SgNode * s );
37984 
37985  // ******************************************
37986  // * Memory Pool / New / Delete
37987  // ******************************************
37988 
37989  public:
37991  static const unsigned pool_size; //
37993  static std::vector<unsigned char *> pools; //
37995  static SgUndirectedGraphEdge * next_node; //
37996 
37998  static unsigned long initializeStorageClassArray(SgUndirectedGraphEdgeStorageClass *); //
37999 
38001  static void clearMemoryPool(); //
38002  static void deleteMemoryPool(); //
38003 
38005  static void extendMemoryPoolForFileIO(); //
38006 
38008  static SgUndirectedGraphEdge * getPointerFromGlobalIndex(unsigned long); //
38010  static SgUndirectedGraphEdge * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
38011 
38013  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
38015  static void resetValidFreepointers(); //
38017  static unsigned long getNumberOfLastValidPointer(); //
38018 
38019 
38020 #if defined(INLINE_FUNCTIONS)
38021 
38022  inline void *operator new (size_t size);
38023 #else
38024 
38025  void *operator new (size_t size);
38026 #endif
38027 
38028  void operator delete (void* pointer, size_t size);
38029 
38030  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
38031  void operator delete (void* pointer)
38032  {
38033  // This is the generated delete operator...
38034  SgUndirectedGraphEdge::operator delete (pointer,sizeof(SgUndirectedGraphEdge));
38035  }
38036 
38038  static size_t numberOfNodes();
38039 
38041  static size_t memoryUsage();
38042 
38043  // End of scope which started in IR nodes specific code
38044  /* */
38045 
38046  /* name Internal Functions
38047  \brief Internal functions ... incomplete-documentation
38048 
38049  These functions have been made public as part of the design, but they are suggested for internal use
38050  or by particularly knowledgeable users for specialized tools or applications.
38051 
38052  \internal We could not make these private because they are required by user for special purposes. And
38053  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
38054 
38055  */
38056 
38057  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
38058  // overridden in every class by *generated* implementation
38060  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
38061  // MS: 06/28/02 container of names of variables or container indices
38062  // used used in the traversal to access AST successor nodes
38063  // overridden in every class by *generated* implementation
38066  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
38067 
38068  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
38069  // than all the vector copies. The implementation for these functions is generated for each class.
38071  virtual size_t get_numberOfTraversalSuccessors() override;
38073  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
38075  virtual size_t get_childIndex(SgNode *child) override;
38076 
38077 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
38078  // MS: 08/16/2002 method for generating RTI information
38080  virtual RTIReturnType roseRTI() override;
38081 #endif
38082  /* */
38083 
38084 
38085 
38086  /* name Deprecated Functions
38087  \brief Deprecated functions ... incomplete-documentation
38088 
38089  These functions have been deprecated from use.
38090  */
38091  /* */
38092 
38094  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
38095 
38096  // JJW (10/16/2008): Changed to a single function in Node.code, and put
38097  // getVariant() in #if 0 block to prevent confusing Doxygen
38098 #if 0
38099 
38100  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
38102  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
38103 #endif
38104  /* */
38105 
38106 
38107 
38108 
38109  public:
38110  /* name Traversal Support Functions
38111  \brief Traversal support functions ... incomplete-documentation
38112 
38113  These functions have been made public as part of the design, but they are suggested for internal use
38114  or by particularly knowledgable users for specialized tools or applications.
38115  */
38116  /* */
38117 
38118  // DQ (11/26/2005): Support for visitor pattern mechanims
38119  // (inferior to ROSE traversal mechanism, experimental).
38123 
38124  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
38126  virtual void accept (ROSE_VisitorPattern & visitor) override;
38127 
38128  // DQ (12/26/2005): Support for traversal based on the memory pool
38131  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
38132 
38136 
38137  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
38138  // This traversal helps support internal tools that call static member functions.
38139  // note: this function operates on the memory pools.
38142  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
38143  /* */
38144 
38145 
38146  public:
38147  /* name Memory Allocation Functions
38148  \brief Memory allocations functions ... incomplete-documentation
38149 
38150  These functions have been made public as part of the design, but they are suggested for internal use
38151  or by particularly knowledgable users for specialized tools or applications.
38152  */
38153  /* */
38154 
38165  virtual bool isInMemoryPool() override;
38166 
38177  virtual void checkDataMemberPointersIfInMemoryPool() override;
38178 
38179  // DQ (4/30/2006): Modified to be a const function.
38194  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
38195 
38205  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
38206 
38218  virtual long getChildIndex( SgNode* childNode ) const override;
38219 
38220  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
38221  // comment here (changed to be a C style comment and not be a doxygen comment).
38222  /* \brief Constructor for use by AST File I/O Mechanism
38223 
38224  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
38225  which obtained via fast binary file I/O from disk.
38226  */
38227  // SgUndirectedGraphEdge( SgUndirectedGraphEdgeStorageClass& source );
38228 
38229 
38230 
38231 
38232 
38233  // JH (10/24/2005): methods added to support the ast file IO
38234  private:
38235 
38236  /* name AST Memory Allocation Support Functions
38237  \brief Memory allocations support....
38238 
38239  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
38240  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
38241  and support the AST File I/O Mechanism.
38242  */
38243  /* */
38244 
38245  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
38246  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
38247  that I use the same type everywhere, if any changes are made. THe second one declares the type
38248  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
38249  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
38250  a correspinding one in the AST_FILE_IO class!
38251  */
38252  // DQ (9/2/2015): This typedef is no longer used, we can't define the
38253  // comment here (changed to be a C style comment and not be a doxygen comment).
38254  /* \brief Typedef used for low level memory access.
38255  */
38256  // typedef unsigned char* TestType;
38257 
38258  // DQ (9/2/2015): This typedef is no longer used, we can't define the
38259  // comment here (changed to be a C style comment and not be a doxygen comment).
38260  /* \brief Typedef used to hold memory addresses as values.
38261  */
38262  // typedef unsigned long AddressType;
38263 
38264 
38265 
38266  // necessary, to have direct access to the p_freepointer and the private methods !
38268  friend class AST_FILE_IO;
38269 
38271  friend class SgUndirectedGraphEdgeStorageClass;
38272 
38274  friend class AstSpecificDataManagingClass;
38275 
38277  friend class AstSpecificDataManagingClassStorageClass;
38278 
38279  public:
38281  SgUndirectedGraphEdge( const SgUndirectedGraphEdgeStorageClass& source );
38282 
38283  // private: // JJW hack
38284  /*
38285  name AST Memory Allocation Support Variables
38286  Memory allocations support variables
38287 
38288  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
38289  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
38290  and support the AST File I/O Mechanism.
38291  */
38292  /* */
38293 
38294  public:
38295 
38296  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
38297  // to current node (so that it will work cleanly with build functions to specify patterns).
38298  // virtual SgNode* addRegExpAttribute();
38305 
38306 // *** COMMON CODE SECTION ENDS HERE ***
38307 
38308 
38309 // End of memberFunctionString
38310 // Start of memberFunctionString
38311 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
38312 
38313  // the generated cast function
38314  // friend ROSE_DLL_API SgUndirectedGraphEdge* isSgUndirectedGraphEdge ( SgNode* s );
38315 
38316  typedef SgGraphEdge base_node_type;
38317 
38318 
38319 // End of memberFunctionString
38320 
38321 
38322  public:
38323  virtual ~SgUndirectedGraphEdge();
38324 
38325 
38326  public:
38327  SgUndirectedGraphEdge(SgGraphNode* node_A = NULL, SgGraphNode* node_B = NULL, std::string name = "");
38328 
38329  protected:
38330 
38331 
38332 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
38333 
38334 
38335  };
38336 #endif
38337 
38338 // postdeclarations for SgUndirectedGraphEdge
38339 
38340 /* #line 38341 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
38341 
38342 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
38343 
38344 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
38345 
38346 
38347 /* #line 38348 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
38348 
38349 
38350 
38351 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
38352 
38353 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
38354 // This code is automatically generated for each
38355 // terminal and non-terminal within the defined
38356 // grammar. There is a simple way to change the
38357 // code to fix bugs etc. See the ROSE README file
38358 // for directions.
38359 
38360 // tps: (02/22/2010): Adding DLL export requirements
38361 #include "rosedll.h"
38362 
38363 // predeclarations for SgGraphNodeList
38364 
38365 /* #line 38366 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
38366 
38367 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
38368 
38369 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
38370 
38371 #if 1
38372 // Class Definition for SgGraphNodeList
38373 class ROSE_DLL_API SgGraphNodeList : public SgSupport
38374  {
38375  public:
38376 
38377 
38378 /* #line 38379 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
38379 
38380  virtual SgNode* copy ( SgCopyHelp& help) const override;
38381 // Start of memberFunctionString
38382 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
38383 
38384 // *** COMMON CODE SECTION BEGINS HERE ***
38385 
38386  public:
38387 
38388  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
38389  // and not required which is required to match the other aspects of the copy mechanism code generation.
38390  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
38391  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
38392  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
38393  // virtual SgNode* copy ( const SgCopyHelp & help) const;
38394 
38396  virtual std::string class_name() const override;
38397 
38399  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
38400 
38402  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
38403  // static const VariantT static_variant = V_SgGraphNodeList;
38404  enum { static_variant = V_SgGraphNodeList };
38405 
38406  /* the generated cast function */
38408  ROSE_DLL_API friend SgGraphNodeList* isSgGraphNodeList( SgNode * s );
38409 
38411  ROSE_DLL_API friend const SgGraphNodeList* isSgGraphNodeList( const SgNode * s );
38412 
38413  // ******************************************
38414  // * Memory Pool / New / Delete
38415  // ******************************************
38416 
38417  public:
38419  static const unsigned pool_size; //
38421  static std::vector<unsigned char *> pools; //
38423  static SgGraphNodeList * next_node; //
38424 
38426  static unsigned long initializeStorageClassArray(SgGraphNodeListStorageClass *); //
38427 
38429  static void clearMemoryPool(); //
38430  static void deleteMemoryPool(); //
38431 
38433  static void extendMemoryPoolForFileIO(); //
38434 
38436  static SgGraphNodeList * getPointerFromGlobalIndex(unsigned long); //
38438  static SgGraphNodeList * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
38439 
38441  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
38443  static void resetValidFreepointers(); //
38445  static unsigned long getNumberOfLastValidPointer(); //
38446 
38447 
38448 #if defined(INLINE_FUNCTIONS)
38449 
38450  inline void *operator new (size_t size);
38451 #else
38452 
38453  void *operator new (size_t size);
38454 #endif
38455 
38456  void operator delete (void* pointer, size_t size);
38457 
38458  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
38459  void operator delete (void* pointer)
38460  {
38461  // This is the generated delete operator...
38462  SgGraphNodeList::operator delete (pointer,sizeof(SgGraphNodeList));
38463  }
38464 
38466  static size_t numberOfNodes();
38467 
38469  static size_t memoryUsage();
38470 
38471  // End of scope which started in IR nodes specific code
38472  /* */
38473 
38474  /* name Internal Functions
38475  \brief Internal functions ... incomplete-documentation
38476 
38477  These functions have been made public as part of the design, but they are suggested for internal use
38478  or by particularly knowledgeable users for specialized tools or applications.
38479 
38480  \internal We could not make these private because they are required by user for special purposes. And
38481  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
38482 
38483  */
38484 
38485  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
38486  // overridden in every class by *generated* implementation
38488  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
38489  // MS: 06/28/02 container of names of variables or container indices
38490  // used used in the traversal to access AST successor nodes
38491  // overridden in every class by *generated* implementation
38494  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
38495 
38496  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
38497  // than all the vector copies. The implementation for these functions is generated for each class.
38499  virtual size_t get_numberOfTraversalSuccessors() override;
38501  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
38503  virtual size_t get_childIndex(SgNode *child) override;
38504 
38505 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
38506  // MS: 08/16/2002 method for generating RTI information
38508  virtual RTIReturnType roseRTI() override;
38509 #endif
38510  /* */
38511 
38512 
38513 
38514  /* name Deprecated Functions
38515  \brief Deprecated functions ... incomplete-documentation
38516 
38517  These functions have been deprecated from use.
38518  */
38519  /* */
38520 
38522  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
38523 
38524  // JJW (10/16/2008): Changed to a single function in Node.code, and put
38525  // getVariant() in #if 0 block to prevent confusing Doxygen
38526 #if 0
38527 
38528  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
38530  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
38531 #endif
38532  /* */
38533 
38534 
38535 
38536 
38537  public:
38538  /* name Traversal Support Functions
38539  \brief Traversal support functions ... incomplete-documentation
38540 
38541  These functions have been made public as part of the design, but they are suggested for internal use
38542  or by particularly knowledgable users for specialized tools or applications.
38543  */
38544  /* */
38545 
38546  // DQ (11/26/2005): Support for visitor pattern mechanims
38547  // (inferior to ROSE traversal mechanism, experimental).
38551 
38552  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
38554  virtual void accept (ROSE_VisitorPattern & visitor) override;
38555 
38556  // DQ (12/26/2005): Support for traversal based on the memory pool
38559  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
38560 
38564 
38565  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
38566  // This traversal helps support internal tools that call static member functions.
38567  // note: this function operates on the memory pools.
38570  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
38571  /* */
38572 
38573 
38574  public:
38575  /* name Memory Allocation Functions
38576  \brief Memory allocations functions ... incomplete-documentation
38577 
38578  These functions have been made public as part of the design, but they are suggested for internal use
38579  or by particularly knowledgable users for specialized tools or applications.
38580  */
38581  /* */
38582 
38593  virtual bool isInMemoryPool() override;
38594 
38605  virtual void checkDataMemberPointersIfInMemoryPool() override;
38606 
38607  // DQ (4/30/2006): Modified to be a const function.
38622  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
38623 
38633  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
38634 
38646  virtual long getChildIndex( SgNode* childNode ) const override;
38647 
38648  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
38649  // comment here (changed to be a C style comment and not be a doxygen comment).
38650  /* \brief Constructor for use by AST File I/O Mechanism
38651 
38652  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
38653  which obtained via fast binary file I/O from disk.
38654  */
38655  // SgGraphNodeList( SgGraphNodeListStorageClass& source );
38656 
38657 
38658 
38659 
38660 
38661  // JH (10/24/2005): methods added to support the ast file IO
38662  private:
38663 
38664  /* name AST Memory Allocation Support Functions
38665  \brief Memory allocations support....
38666 
38667  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
38668  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
38669  and support the AST File I/O Mechanism.
38670  */
38671  /* */
38672 
38673  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
38674  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
38675  that I use the same type everywhere, if any changes are made. THe second one declares the type
38676  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
38677  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
38678  a correspinding one in the AST_FILE_IO class!
38679  */
38680  // DQ (9/2/2015): This typedef is no longer used, we can't define the
38681  // comment here (changed to be a C style comment and not be a doxygen comment).
38682  /* \brief Typedef used for low level memory access.
38683  */
38684  // typedef unsigned char* TestType;
38685 
38686  // DQ (9/2/2015): This typedef is no longer used, we can't define the
38687  // comment here (changed to be a C style comment and not be a doxygen comment).
38688  /* \brief Typedef used to hold memory addresses as values.
38689  */
38690  // typedef unsigned long AddressType;
38691 
38692 
38693 
38694  // necessary, to have direct access to the p_freepointer and the private methods !
38696  friend class AST_FILE_IO;
38697 
38699  friend class SgGraphNodeListStorageClass;
38700 
38702  friend class AstSpecificDataManagingClass;
38703 
38705  friend class AstSpecificDataManagingClassStorageClass;
38706 
38707  public:
38709  SgGraphNodeList( const SgGraphNodeListStorageClass& source );
38710 
38711  // private: // JJW hack
38712  /*
38713  name AST Memory Allocation Support Variables
38714  Memory allocations support variables
38715 
38716  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
38717  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
38718  and support the AST File I/O Mechanism.
38719  */
38720  /* */
38721 
38722  public:
38723 
38724  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
38725  // to current node (so that it will work cleanly with build functions to specify patterns).
38726  // virtual SgNode* addRegExpAttribute();
38733 
38734 // *** COMMON CODE SECTION ENDS HERE ***
38735 
38736 
38737 // End of memberFunctionString
38738 // Start of memberFunctionString
38739 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
38740 
38741  // the generated cast function
38742  // friend ROSE_DLL_API SgGraphNodeList* isSgGraphNodeList ( SgNode* s );
38743 
38744  typedef SgSupport base_node_type;
38745 
38746 
38747 // End of memberFunctionString
38748 
38749 
38750  public:
38751  virtual ~SgGraphNodeList();
38752 
38753 
38754  public:
38755  SgGraphNodeList();
38756 
38757  protected:
38758 
38759 
38760 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
38761 
38762 
38763  };
38764 #endif
38765 
38766 // postdeclarations for SgGraphNodeList
38767 
38768 /* #line 38769 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
38769 
38770 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
38771 
38772 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
38773 
38774 
38775 /* #line 38776 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
38776 
38777 
38778 
38779 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
38780 
38781 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
38782 // This code is automatically generated for each
38783 // terminal and non-terminal within the defined
38784 // grammar. There is a simple way to change the
38785 // code to fix bugs etc. See the ROSE README file
38786 // for directions.
38787 
38788 // tps: (02/22/2010): Adding DLL export requirements
38789 #include "rosedll.h"
38790 
38791 // predeclarations for SgGraphEdgeList
38792 
38793 /* #line 38794 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
38794 
38795 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
38796 
38797 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
38798 
38799 #if 1
38800 // Class Definition for SgGraphEdgeList
38801 class ROSE_DLL_API SgGraphEdgeList : public SgSupport
38802  {
38803  public:
38804 
38805 
38806 /* #line 38807 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
38807 
38808  virtual SgNode* copy ( SgCopyHelp& help) const override;
38809 // Start of memberFunctionString
38810 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
38811 
38812 // *** COMMON CODE SECTION BEGINS HERE ***
38813 
38814  public:
38815 
38816  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
38817  // and not required which is required to match the other aspects of the copy mechanism code generation.
38818  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
38819  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
38820  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
38821  // virtual SgNode* copy ( const SgCopyHelp & help) const;
38822 
38824  virtual std::string class_name() const override;
38825 
38827  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
38828 
38830  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
38831  // static const VariantT static_variant = V_SgGraphEdgeList;
38832  enum { static_variant = V_SgGraphEdgeList };
38833 
38834  /* the generated cast function */
38836  ROSE_DLL_API friend SgGraphEdgeList* isSgGraphEdgeList( SgNode * s );
38837 
38839  ROSE_DLL_API friend const SgGraphEdgeList* isSgGraphEdgeList( const SgNode * s );
38840 
38841  // ******************************************
38842  // * Memory Pool / New / Delete
38843  // ******************************************
38844 
38845  public:
38847  static const unsigned pool_size; //
38849  static std::vector<unsigned char *> pools; //
38851  static SgGraphEdgeList * next_node; //
38852 
38854  static unsigned long initializeStorageClassArray(SgGraphEdgeListStorageClass *); //
38855 
38857  static void clearMemoryPool(); //
38858  static void deleteMemoryPool(); //
38859 
38861  static void extendMemoryPoolForFileIO(); //
38862 
38864  static SgGraphEdgeList * getPointerFromGlobalIndex(unsigned long); //
38866  static SgGraphEdgeList * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
38867 
38869  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
38871  static void resetValidFreepointers(); //
38873  static unsigned long getNumberOfLastValidPointer(); //
38874 
38875 
38876 #if defined(INLINE_FUNCTIONS)
38877 
38878  inline void *operator new (size_t size);
38879 #else
38880 
38881  void *operator new (size_t size);
38882 #endif
38883 
38884  void operator delete (void* pointer, size_t size);
38885 
38886  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
38887  void operator delete (void* pointer)
38888  {
38889  // This is the generated delete operator...
38890  SgGraphEdgeList::operator delete (pointer,sizeof(SgGraphEdgeList));
38891  }
38892 
38894  static size_t numberOfNodes();
38895 
38897  static size_t memoryUsage();
38898 
38899  // End of scope which started in IR nodes specific code
38900  /* */
38901 
38902  /* name Internal Functions
38903  \brief Internal functions ... incomplete-documentation
38904 
38905  These functions have been made public as part of the design, but they are suggested for internal use
38906  or by particularly knowledgeable users for specialized tools or applications.
38907 
38908  \internal We could not make these private because they are required by user for special purposes. And
38909  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
38910 
38911  */
38912 
38913  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
38914  // overridden in every class by *generated* implementation
38916  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
38917  // MS: 06/28/02 container of names of variables or container indices
38918  // used used in the traversal to access AST successor nodes
38919  // overridden in every class by *generated* implementation
38922  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
38923 
38924  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
38925  // than all the vector copies. The implementation for these functions is generated for each class.
38927  virtual size_t get_numberOfTraversalSuccessors() override;
38929  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
38931  virtual size_t get_childIndex(SgNode *child) override;
38932 
38933 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
38934  // MS: 08/16/2002 method for generating RTI information
38936  virtual RTIReturnType roseRTI() override;
38937 #endif
38938  /* */
38939 
38940 
38941 
38942  /* name Deprecated Functions
38943  \brief Deprecated functions ... incomplete-documentation
38944 
38945  These functions have been deprecated from use.
38946  */
38947  /* */
38948 
38950  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
38951 
38952  // JJW (10/16/2008): Changed to a single function in Node.code, and put
38953  // getVariant() in #if 0 block to prevent confusing Doxygen
38954 #if 0
38955 
38956  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
38958  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
38959 #endif
38960  /* */
38961 
38962 
38963 
38964 
38965  public:
38966  /* name Traversal Support Functions
38967  \brief Traversal support functions ... incomplete-documentation
38968 
38969  These functions have been made public as part of the design, but they are suggested for internal use
38970  or by particularly knowledgable users for specialized tools or applications.
38971  */
38972  /* */
38973 
38974  // DQ (11/26/2005): Support for visitor pattern mechanims
38975  // (inferior to ROSE traversal mechanism, experimental).
38979 
38980  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
38982  virtual void accept (ROSE_VisitorPattern & visitor) override;
38983 
38984  // DQ (12/26/2005): Support for traversal based on the memory pool
38987  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
38988 
38992 
38993  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
38994  // This traversal helps support internal tools that call static member functions.
38995  // note: this function operates on the memory pools.
38998  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
38999  /* */
39000 
39001 
39002  public:
39003  /* name Memory Allocation Functions
39004  \brief Memory allocations functions ... incomplete-documentation
39005 
39006  These functions have been made public as part of the design, but they are suggested for internal use
39007  or by particularly knowledgable users for specialized tools or applications.
39008  */
39009  /* */
39010 
39021  virtual bool isInMemoryPool() override;
39022 
39033  virtual void checkDataMemberPointersIfInMemoryPool() override;
39034 
39035  // DQ (4/30/2006): Modified to be a const function.
39050  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
39051 
39061  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
39062 
39074  virtual long getChildIndex( SgNode* childNode ) const override;
39075 
39076  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
39077  // comment here (changed to be a C style comment and not be a doxygen comment).
39078  /* \brief Constructor for use by AST File I/O Mechanism
39079 
39080  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
39081  which obtained via fast binary file I/O from disk.
39082  */
39083  // SgGraphEdgeList( SgGraphEdgeListStorageClass& source );
39084 
39085 
39086 
39087 
39088 
39089  // JH (10/24/2005): methods added to support the ast file IO
39090  private:
39091 
39092  /* name AST Memory Allocation Support Functions
39093  \brief Memory allocations support....
39094 
39095  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
39096  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
39097  and support the AST File I/O Mechanism.
39098  */
39099  /* */
39100 
39101  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
39102  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
39103  that I use the same type everywhere, if any changes are made. THe second one declares the type
39104  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
39105  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
39106  a correspinding one in the AST_FILE_IO class!
39107  */
39108  // DQ (9/2/2015): This typedef is no longer used, we can't define the
39109  // comment here (changed to be a C style comment and not be a doxygen comment).
39110  /* \brief Typedef used for low level memory access.
39111  */
39112  // typedef unsigned char* TestType;
39113 
39114  // DQ (9/2/2015): This typedef is no longer used, we can't define the
39115  // comment here (changed to be a C style comment and not be a doxygen comment).
39116  /* \brief Typedef used to hold memory addresses as values.
39117  */
39118  // typedef unsigned long AddressType;
39119 
39120 
39121 
39122  // necessary, to have direct access to the p_freepointer and the private methods !
39124  friend class AST_FILE_IO;
39125 
39127  friend class SgGraphEdgeListStorageClass;
39128 
39130  friend class AstSpecificDataManagingClass;
39131 
39133  friend class AstSpecificDataManagingClassStorageClass;
39134 
39135  public:
39137  SgGraphEdgeList( const SgGraphEdgeListStorageClass& source );
39138 
39139  // private: // JJW hack
39140  /*
39141  name AST Memory Allocation Support Variables
39142  Memory allocations support variables
39143 
39144  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
39145  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
39146  and support the AST File I/O Mechanism.
39147  */
39148  /* */
39149 
39150  public:
39151 
39152  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
39153  // to current node (so that it will work cleanly with build functions to specify patterns).
39154  // virtual SgNode* addRegExpAttribute();
39161 
39162 // *** COMMON CODE SECTION ENDS HERE ***
39163 
39164 
39165 // End of memberFunctionString
39166 // Start of memberFunctionString
39167 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
39168 
39169  // the generated cast function
39170  // friend ROSE_DLL_API SgGraphEdgeList* isSgGraphEdgeList ( SgNode* s );
39171 
39172  typedef SgSupport base_node_type;
39173 
39174 
39175 // End of memberFunctionString
39176 
39177 
39178  public:
39179  virtual ~SgGraphEdgeList();
39180 
39181 
39182  public:
39183  SgGraphEdgeList();
39184 
39185  protected:
39186 
39187 
39188 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
39189 
39190 
39191  };
39192 #endif
39193 
39194 // postdeclarations for SgGraphEdgeList
39195 
39196 /* #line 39197 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
39197 
39198 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
39199 
39200 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
39201 
39202 
39203 /* #line 39204 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
39204 
39205 
39206 
39207 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
39208 
39209 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
39210 // This code is automatically generated for each
39211 // terminal and non-terminal within the defined
39212 // grammar. There is a simple way to change the
39213 // code to fix bugs etc. See the ROSE README file
39214 // for directions.
39215 
39216 // tps: (02/22/2010): Adding DLL export requirements
39217 #include "rosedll.h"
39218 
39219 // predeclarations for SgTypeTable
39220 
39221 /* #line 39222 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
39222 
39223 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
39224 
39225 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
39226 
39227 #if 1
39228 // Class Definition for SgTypeTable
39229 class ROSE_DLL_API SgTypeTable : public SgSupport
39230  {
39231  public:
39232 
39233 
39234 /* #line 39235 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
39235 
39236  virtual SgNode* copy ( SgCopyHelp& help) const override;
39237 // Start of memberFunctionString
39238 /* #line 2432 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
39239 
39240  SgTypeTable ();
39241  void insert_type(const SgName&, SgType *);
39242 
39243  SgType* lookup_type (const SgName&);
39244 
39245  // DQ (7/22/2010): Added to support AST merge.
39246  void remove_type(const SgName&);
39247 
39248  void print_typetable(std::ostream& os = std::cout);
39249 
39250 
39251 
39252 // End of memberFunctionString
39253 // Start of memberFunctionString
39254 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
39255 
39256 // *** COMMON CODE SECTION BEGINS HERE ***
39257 
39258  public:
39259 
39260  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
39261  // and not required which is required to match the other aspects of the copy mechanism code generation.
39262  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
39263  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
39264  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
39265  // virtual SgNode* copy ( const SgCopyHelp & help) const;
39266 
39268  virtual std::string class_name() const override;
39269 
39271  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
39272 
39274  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
39275  // static const VariantT static_variant = V_SgTypeTable;
39276  enum { static_variant = V_SgTypeTable };
39277 
39278  /* the generated cast function */
39280  ROSE_DLL_API friend SgTypeTable* isSgTypeTable( SgNode * s );
39281 
39283  ROSE_DLL_API friend const SgTypeTable* isSgTypeTable( const SgNode * s );
39284 
39285  // ******************************************
39286  // * Memory Pool / New / Delete
39287  // ******************************************
39288 
39289  public:
39291  static const unsigned pool_size; //
39293  static std::vector<unsigned char *> pools; //
39295  static SgTypeTable * next_node; //
39296 
39298  static unsigned long initializeStorageClassArray(SgTypeTableStorageClass *); //
39299 
39301  static void clearMemoryPool(); //
39302  static void deleteMemoryPool(); //
39303 
39305  static void extendMemoryPoolForFileIO(); //
39306 
39308  static SgTypeTable * getPointerFromGlobalIndex(unsigned long); //
39310  static SgTypeTable * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
39311 
39313  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
39315  static void resetValidFreepointers(); //
39317  static unsigned long getNumberOfLastValidPointer(); //
39318 
39319 
39320 #if defined(INLINE_FUNCTIONS)
39321 
39322  inline void *operator new (size_t size);
39323 #else
39324 
39325  void *operator new (size_t size);
39326 #endif
39327 
39328  void operator delete (void* pointer, size_t size);
39329 
39330  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
39331  void operator delete (void* pointer)
39332  {
39333  // This is the generated delete operator...
39334  SgTypeTable::operator delete (pointer,sizeof(SgTypeTable));
39335  }
39336 
39338  static size_t numberOfNodes();
39339 
39341  static size_t memoryUsage();
39342 
39343  // End of scope which started in IR nodes specific code
39344  /* */
39345 
39346  /* name Internal Functions
39347  \brief Internal functions ... incomplete-documentation
39348 
39349  These functions have been made public as part of the design, but they are suggested for internal use
39350  or by particularly knowledgeable users for specialized tools or applications.
39351 
39352  \internal We could not make these private because they are required by user for special purposes. And
39353  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
39354 
39355  */
39356 
39357  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
39358  // overridden in every class by *generated* implementation
39360  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
39361  // MS: 06/28/02 container of names of variables or container indices
39362  // used used in the traversal to access AST successor nodes
39363  // overridden in every class by *generated* implementation
39366  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
39367 
39368  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
39369  // than all the vector copies. The implementation for these functions is generated for each class.
39371  virtual size_t get_numberOfTraversalSuccessors() override;
39373  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
39375  virtual size_t get_childIndex(SgNode *child) override;
39376 
39377 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
39378  // MS: 08/16/2002 method for generating RTI information
39380  virtual RTIReturnType roseRTI() override;
39381 #endif
39382  /* */
39383 
39384 
39385 
39386  /* name Deprecated Functions
39387  \brief Deprecated functions ... incomplete-documentation
39388 
39389  These functions have been deprecated from use.
39390  */
39391  /* */
39392 
39394  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
39395 
39396  // JJW (10/16/2008): Changed to a single function in Node.code, and put
39397  // getVariant() in #if 0 block to prevent confusing Doxygen
39398 #if 0
39399 
39400  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
39402  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
39403 #endif
39404  /* */
39405 
39406 
39407 
39408 
39409  public:
39410  /* name Traversal Support Functions
39411  \brief Traversal support functions ... incomplete-documentation
39412 
39413  These functions have been made public as part of the design, but they are suggested for internal use
39414  or by particularly knowledgable users for specialized tools or applications.
39415  */
39416  /* */
39417 
39418  // DQ (11/26/2005): Support for visitor pattern mechanims
39419  // (inferior to ROSE traversal mechanism, experimental).
39423 
39424  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
39426  virtual void accept (ROSE_VisitorPattern & visitor) override;
39427 
39428  // DQ (12/26/2005): Support for traversal based on the memory pool
39431  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
39432 
39436 
39437  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
39438  // This traversal helps support internal tools that call static member functions.
39439  // note: this function operates on the memory pools.
39442  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
39443  /* */
39444 
39445 
39446  public:
39447  /* name Memory Allocation Functions
39448  \brief Memory allocations functions ... incomplete-documentation
39449 
39450  These functions have been made public as part of the design, but they are suggested for internal use
39451  or by particularly knowledgable users for specialized tools or applications.
39452  */
39453  /* */
39454 
39465  virtual bool isInMemoryPool() override;
39466 
39477  virtual void checkDataMemberPointersIfInMemoryPool() override;
39478 
39479  // DQ (4/30/2006): Modified to be a const function.
39494  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
39495 
39505  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
39506 
39518  virtual long getChildIndex( SgNode* childNode ) const override;
39519 
39520  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
39521  // comment here (changed to be a C style comment and not be a doxygen comment).
39522  /* \brief Constructor for use by AST File I/O Mechanism
39523 
39524  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
39525  which obtained via fast binary file I/O from disk.
39526  */
39527  // SgTypeTable( SgTypeTableStorageClass& source );
39528 
39529 
39530 
39531 
39532 
39533  // JH (10/24/2005): methods added to support the ast file IO
39534  private:
39535 
39536  /* name AST Memory Allocation Support Functions
39537  \brief Memory allocations support....
39538 
39539  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
39540  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
39541  and support the AST File I/O Mechanism.
39542  */
39543  /* */
39544 
39545  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
39546  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
39547  that I use the same type everywhere, if any changes are made. THe second one declares the type
39548  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
39549  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
39550  a correspinding one in the AST_FILE_IO class!
39551  */
39552  // DQ (9/2/2015): This typedef is no longer used, we can't define the
39553  // comment here (changed to be a C style comment and not be a doxygen comment).
39554  /* \brief Typedef used for low level memory access.
39555  */
39556  // typedef unsigned char* TestType;
39557 
39558  // DQ (9/2/2015): This typedef is no longer used, we can't define the
39559  // comment here (changed to be a C style comment and not be a doxygen comment).
39560  /* \brief Typedef used to hold memory addresses as values.
39561  */
39562  // typedef unsigned long AddressType;
39563 
39564 
39565 
39566  // necessary, to have direct access to the p_freepointer and the private methods !
39568  friend class AST_FILE_IO;
39569 
39571  friend class SgTypeTableStorageClass;
39572 
39574  friend class AstSpecificDataManagingClass;
39575 
39577  friend class AstSpecificDataManagingClassStorageClass;
39578 
39579  public:
39581  SgTypeTable( const SgTypeTableStorageClass& source );
39582 
39583  // private: // JJW hack
39584  /*
39585  name AST Memory Allocation Support Variables
39586  Memory allocations support variables
39587 
39588  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
39589  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
39590  and support the AST File I/O Mechanism.
39591  */
39592  /* */
39593 
39594  public:
39595 
39596  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
39597  // to current node (so that it will work cleanly with build functions to specify patterns).
39598  // virtual SgNode* addRegExpAttribute();
39604  SgTypeTable* addRegExpAttribute(std::string s, AstRegExAttribute* a);
39605 
39606 // *** COMMON CODE SECTION ENDS HERE ***
39607 
39608 
39609 // End of memberFunctionString
39610 // Start of memberFunctionString
39611 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
39612 
39613  // the generated cast function
39614  // friend ROSE_DLL_API SgTypeTable* isSgTypeTable ( SgNode* s );
39615 
39616  typedef SgSupport base_node_type;
39617 
39618 
39619 // End of memberFunctionString
39620 
39621  public:
39622  SgSymbolTable* get_type_table() const;
39623  void set_type_table(SgSymbolTable* type_table);
39624 
39625 
39626  public:
39627  virtual ~SgTypeTable();
39628 
39629  protected:
39630 // Start of memberFunctionString
39631 SgSymbolTable* p_type_table;
39632 
39633 // End of memberFunctionString
39634 
39635 
39636 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
39637 
39638 
39639  };
39640 #endif
39641 
39642 // postdeclarations for SgTypeTable
39643 
39644 /* #line 39645 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
39645 
39646 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
39647 
39648 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
39649 
39650 
39651 /* #line 39652 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
39652 
39653 
39654 
39655 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
39656 
39657 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
39658 // This code is automatically generated for each
39659 // terminal and non-terminal within the defined
39660 // grammar. There is a simple way to change the
39661 // code to fix bugs etc. See the ROSE README file
39662 // for directions.
39663 
39664 // tps: (02/22/2010): Adding DLL export requirements
39665 #include "rosedll.h"
39666 
39667 // predeclarations for SgNameGroup
39668 
39669 /* #line 39670 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
39670 
39671 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
39672 
39673 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
39674 
39675 #if 1
39676 // Class Definition for SgNameGroup
39677 class ROSE_DLL_API SgNameGroup : public SgSupport
39678  {
39679  public:
39680 
39681 
39682 /* #line 39683 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
39683 
39684  virtual SgNode* copy ( SgCopyHelp& help) const override;
39685 // Start of memberFunctionString
39686 /* #line 2374 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
39687 
39688  const SgStringList & get_name_list() const;
39689  SgStringList & get_name_list();
39690 
39691 
39692 // End of memberFunctionString
39693 // Start of memberFunctionString
39694 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
39695 
39696 // *** COMMON CODE SECTION BEGINS HERE ***
39697 
39698  public:
39699 
39700  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
39701  // and not required which is required to match the other aspects of the copy mechanism code generation.
39702  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
39703  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
39704  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
39705  // virtual SgNode* copy ( const SgCopyHelp & help) const;
39706 
39708  virtual std::string class_name() const override;
39709 
39711  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
39712 
39714  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
39715  // static const VariantT static_variant = V_SgNameGroup;
39716  enum { static_variant = V_SgNameGroup };
39717 
39718  /* the generated cast function */
39720  ROSE_DLL_API friend SgNameGroup* isSgNameGroup( SgNode * s );
39721 
39723  ROSE_DLL_API friend const SgNameGroup* isSgNameGroup( const SgNode * s );
39724 
39725  // ******************************************
39726  // * Memory Pool / New / Delete
39727  // ******************************************
39728 
39729  public:
39731  static const unsigned pool_size; //
39733  static std::vector<unsigned char *> pools; //
39735  static SgNameGroup * next_node; //
39736 
39738  static unsigned long initializeStorageClassArray(SgNameGroupStorageClass *); //
39739 
39741  static void clearMemoryPool(); //
39742  static void deleteMemoryPool(); //
39743 
39745  static void extendMemoryPoolForFileIO(); //
39746 
39748  static SgNameGroup * getPointerFromGlobalIndex(unsigned long); //
39750  static SgNameGroup * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
39751 
39753  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
39755  static void resetValidFreepointers(); //
39757  static unsigned long getNumberOfLastValidPointer(); //
39758 
39759 
39760 #if defined(INLINE_FUNCTIONS)
39761 
39762  inline void *operator new (size_t size);
39763 #else
39764 
39765  void *operator new (size_t size);
39766 #endif
39767 
39768  void operator delete (void* pointer, size_t size);
39769 
39770  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
39771  void operator delete (void* pointer)
39772  {
39773  // This is the generated delete operator...
39774  SgNameGroup::operator delete (pointer,sizeof(SgNameGroup));
39775  }
39776 
39778  static size_t numberOfNodes();
39779 
39781  static size_t memoryUsage();
39782 
39783  // End of scope which started in IR nodes specific code
39784  /* */
39785 
39786  /* name Internal Functions
39787  \brief Internal functions ... incomplete-documentation
39788 
39789  These functions have been made public as part of the design, but they are suggested for internal use
39790  or by particularly knowledgeable users for specialized tools or applications.
39791 
39792  \internal We could not make these private because they are required by user for special purposes. And
39793  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
39794 
39795  */
39796 
39797  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
39798  // overridden in every class by *generated* implementation
39800  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
39801  // MS: 06/28/02 container of names of variables or container indices
39802  // used used in the traversal to access AST successor nodes
39803  // overridden in every class by *generated* implementation
39806  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
39807 
39808  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
39809  // than all the vector copies. The implementation for these functions is generated for each class.
39811  virtual size_t get_numberOfTraversalSuccessors() override;
39813  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
39815  virtual size_t get_childIndex(SgNode *child) override;
39816 
39817 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
39818  // MS: 08/16/2002 method for generating RTI information
39820  virtual RTIReturnType roseRTI() override;
39821 #endif
39822  /* */
39823 
39824 
39825 
39826  /* name Deprecated Functions
39827  \brief Deprecated functions ... incomplete-documentation
39828 
39829  These functions have been deprecated from use.
39830  */
39831  /* */
39832 
39834  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
39835 
39836  // JJW (10/16/2008): Changed to a single function in Node.code, and put
39837  // getVariant() in #if 0 block to prevent confusing Doxygen
39838 #if 0
39839 
39840  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
39842  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
39843 #endif
39844  /* */
39845 
39846 
39847 
39848 
39849  public:
39850  /* name Traversal Support Functions
39851  \brief Traversal support functions ... incomplete-documentation
39852 
39853  These functions have been made public as part of the design, but they are suggested for internal use
39854  or by particularly knowledgable users for specialized tools or applications.
39855  */
39856  /* */
39857 
39858  // DQ (11/26/2005): Support for visitor pattern mechanims
39859  // (inferior to ROSE traversal mechanism, experimental).
39863 
39864  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
39866  virtual void accept (ROSE_VisitorPattern & visitor) override;
39867 
39868  // DQ (12/26/2005): Support for traversal based on the memory pool
39871  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
39872 
39876 
39877  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
39878  // This traversal helps support internal tools that call static member functions.
39879  // note: this function operates on the memory pools.
39882  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
39883  /* */
39884 
39885 
39886  public:
39887  /* name Memory Allocation Functions
39888  \brief Memory allocations functions ... incomplete-documentation
39889 
39890  These functions have been made public as part of the design, but they are suggested for internal use
39891  or by particularly knowledgable users for specialized tools or applications.
39892  */
39893  /* */
39894 
39905  virtual bool isInMemoryPool() override;
39906 
39917  virtual void checkDataMemberPointersIfInMemoryPool() override;
39918 
39919  // DQ (4/30/2006): Modified to be a const function.
39934  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
39935 
39945  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
39946 
39958  virtual long getChildIndex( SgNode* childNode ) const override;
39959 
39960  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
39961  // comment here (changed to be a C style comment and not be a doxygen comment).
39962  /* \brief Constructor for use by AST File I/O Mechanism
39963 
39964  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
39965  which obtained via fast binary file I/O from disk.
39966  */
39967  // SgNameGroup( SgNameGroupStorageClass& source );
39968 
39969 
39970 
39971 
39972 
39973  // JH (10/24/2005): methods added to support the ast file IO
39974  private:
39975 
39976  /* name AST Memory Allocation Support Functions
39977  \brief Memory allocations support....
39978 
39979  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
39980  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
39981  and support the AST File I/O Mechanism.
39982  */
39983  /* */
39984 
39985  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
39986  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
39987  that I use the same type everywhere, if any changes are made. THe second one declares the type
39988  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
39989  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
39990  a correspinding one in the AST_FILE_IO class!
39991  */
39992  // DQ (9/2/2015): This typedef is no longer used, we can't define the
39993  // comment here (changed to be a C style comment and not be a doxygen comment).
39994  /* \brief Typedef used for low level memory access.
39995  */
39996  // typedef unsigned char* TestType;
39997 
39998  // DQ (9/2/2015): This typedef is no longer used, we can't define the
39999  // comment here (changed to be a C style comment and not be a doxygen comment).
40000  /* \brief Typedef used to hold memory addresses as values.
40001  */
40002  // typedef unsigned long AddressType;
40003 
40004 
40005 
40006  // necessary, to have direct access to the p_freepointer and the private methods !
40008  friend class AST_FILE_IO;
40009 
40011  friend class SgNameGroupStorageClass;
40012 
40014  friend class AstSpecificDataManagingClass;
40015 
40017  friend class AstSpecificDataManagingClassStorageClass;
40018 
40019  public:
40021  SgNameGroup( const SgNameGroupStorageClass& source );
40022 
40023  // private: // JJW hack
40024  /*
40025  name AST Memory Allocation Support Variables
40026  Memory allocations support variables
40027 
40028  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
40029  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
40030  and support the AST File I/O Mechanism.
40031  */
40032  /* */
40033 
40034  public:
40035 
40036  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
40037  // to current node (so that it will work cleanly with build functions to specify patterns).
40038  // virtual SgNode* addRegExpAttribute();
40044  SgNameGroup* addRegExpAttribute(std::string s, AstRegExAttribute* a);
40045 
40046 // *** COMMON CODE SECTION ENDS HERE ***
40047 
40048 
40049 // End of memberFunctionString
40050 // Start of memberFunctionString
40051 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
40052 
40053  // the generated cast function
40054  // friend ROSE_DLL_API SgNameGroup* isSgNameGroup ( SgNode* s );
40055 
40056  typedef SgSupport base_node_type;
40057 
40058 
40059 // End of memberFunctionString
40060 
40061  public:
40062  std::string get_group_name() const;
40063  void set_group_name(std::string group_name);
40064 
40065 
40066 
40067  public:
40068  virtual ~SgNameGroup();
40069 
40070 
40071  public:
40072  SgNameGroup();
40073 
40074  protected:
40075 // Start of memberFunctionString
40076 std::string p_group_name;
40077 
40078 // End of memberFunctionString
40079 // Start of memberFunctionString
40080 SgStringList p_name_list;
40081 
40082 // End of memberFunctionString
40083 
40084 
40085 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
40086 
40087 
40088  };
40089 #endif
40090 
40091 // postdeclarations for SgNameGroup
40092 
40093 /* #line 40094 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
40094 
40095 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
40096 
40097 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
40098 
40099 
40100 /* #line 40101 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
40101 
40102 
40103 
40104 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
40105 
40106 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
40107 // This code is automatically generated for each
40108 // terminal and non-terminal within the defined
40109 // grammar. There is a simple way to change the
40110 // code to fix bugs etc. See the ROSE README file
40111 // for directions.
40112 
40113 // tps: (02/22/2010): Adding DLL export requirements
40114 #include "rosedll.h"
40115 
40116 // predeclarations for SgDimensionObject
40117 
40118 /* #line 40119 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
40119 
40120 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
40121 
40122 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
40123 
40124 #if 1
40125 // Class Definition for SgDimensionObject
40126 class ROSE_DLL_API SgDimensionObject : public SgSupport
40127  {
40128  public:
40129 
40130 
40131 /* #line 40132 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
40132 
40133  virtual SgNode* copy ( SgCopyHelp& help) const override;
40134 // Start of memberFunctionString
40135 /* #line 2384 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
40136 
40137 
40138 
40139 // End of memberFunctionString
40140 // Start of memberFunctionString
40141 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
40142 
40143 // *** COMMON CODE SECTION BEGINS HERE ***
40144 
40145  public:
40146 
40147  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
40148  // and not required which is required to match the other aspects of the copy mechanism code generation.
40149  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
40150  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
40151  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
40152  // virtual SgNode* copy ( const SgCopyHelp & help) const;
40153 
40155  virtual std::string class_name() const override;
40156 
40158  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
40159 
40161  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
40162  // static const VariantT static_variant = V_SgDimensionObject;
40163  enum { static_variant = V_SgDimensionObject };
40164 
40165  /* the generated cast function */
40167  ROSE_DLL_API friend SgDimensionObject* isSgDimensionObject( SgNode * s );
40168 
40170  ROSE_DLL_API friend const SgDimensionObject* isSgDimensionObject( const SgNode * s );
40171 
40172  // ******************************************
40173  // * Memory Pool / New / Delete
40174  // ******************************************
40175 
40176  public:
40178  static const unsigned pool_size; //
40180  static std::vector<unsigned char *> pools; //
40182  static SgDimensionObject * next_node; //
40183 
40185  static unsigned long initializeStorageClassArray(SgDimensionObjectStorageClass *); //
40186 
40188  static void clearMemoryPool(); //
40189  static void deleteMemoryPool(); //
40190 
40192  static void extendMemoryPoolForFileIO(); //
40193 
40195  static SgDimensionObject * getPointerFromGlobalIndex(unsigned long); //
40197  static SgDimensionObject * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
40198 
40200  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
40202  static void resetValidFreepointers(); //
40204  static unsigned long getNumberOfLastValidPointer(); //
40205 
40206 
40207 #if defined(INLINE_FUNCTIONS)
40208 
40209  inline void *operator new (size_t size);
40210 #else
40211 
40212  void *operator new (size_t size);
40213 #endif
40214 
40215  void operator delete (void* pointer, size_t size);
40216 
40217  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
40218  void operator delete (void* pointer)
40219  {
40220  // This is the generated delete operator...
40221  SgDimensionObject::operator delete (pointer,sizeof(SgDimensionObject));
40222  }
40223 
40225  static size_t numberOfNodes();
40226 
40228  static size_t memoryUsage();
40229 
40230  // End of scope which started in IR nodes specific code
40231  /* */
40232 
40233  /* name Internal Functions
40234  \brief Internal functions ... incomplete-documentation
40235 
40236  These functions have been made public as part of the design, but they are suggested for internal use
40237  or by particularly knowledgeable users for specialized tools or applications.
40238 
40239  \internal We could not make these private because they are required by user for special purposes. And
40240  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
40241 
40242  */
40243 
40244  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
40245  // overridden in every class by *generated* implementation
40247  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
40248  // MS: 06/28/02 container of names of variables or container indices
40249  // used used in the traversal to access AST successor nodes
40250  // overridden in every class by *generated* implementation
40253  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
40254 
40255  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
40256  // than all the vector copies. The implementation for these functions is generated for each class.
40258  virtual size_t get_numberOfTraversalSuccessors() override;
40260  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
40262  virtual size_t get_childIndex(SgNode *child) override;
40263 
40264 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
40265  // MS: 08/16/2002 method for generating RTI information
40267  virtual RTIReturnType roseRTI() override;
40268 #endif
40269  /* */
40270 
40271 
40272 
40273  /* name Deprecated Functions
40274  \brief Deprecated functions ... incomplete-documentation
40275 
40276  These functions have been deprecated from use.
40277  */
40278  /* */
40279 
40281  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
40282 
40283  // JJW (10/16/2008): Changed to a single function in Node.code, and put
40284  // getVariant() in #if 0 block to prevent confusing Doxygen
40285 #if 0
40286 
40287  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
40289  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
40290 #endif
40291  /* */
40292 
40293 
40294 
40295 
40296  public:
40297  /* name Traversal Support Functions
40298  \brief Traversal support functions ... incomplete-documentation
40299 
40300  These functions have been made public as part of the design, but they are suggested for internal use
40301  or by particularly knowledgable users for specialized tools or applications.
40302  */
40303  /* */
40304 
40305  // DQ (11/26/2005): Support for visitor pattern mechanims
40306  // (inferior to ROSE traversal mechanism, experimental).
40310 
40311  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
40313  virtual void accept (ROSE_VisitorPattern & visitor) override;
40314 
40315  // DQ (12/26/2005): Support for traversal based on the memory pool
40318  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
40319 
40323 
40324  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
40325  // This traversal helps support internal tools that call static member functions.
40326  // note: this function operates on the memory pools.
40329  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
40330  /* */
40331 
40332 
40333  public:
40334  /* name Memory Allocation Functions
40335  \brief Memory allocations functions ... incomplete-documentation
40336 
40337  These functions have been made public as part of the design, but they are suggested for internal use
40338  or by particularly knowledgable users for specialized tools or applications.
40339  */
40340  /* */
40341 
40352  virtual bool isInMemoryPool() override;
40353 
40364  virtual void checkDataMemberPointersIfInMemoryPool() override;
40365 
40366  // DQ (4/30/2006): Modified to be a const function.
40381  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
40382 
40392  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
40393 
40405  virtual long getChildIndex( SgNode* childNode ) const override;
40406 
40407  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
40408  // comment here (changed to be a C style comment and not be a doxygen comment).
40409  /* \brief Constructor for use by AST File I/O Mechanism
40410 
40411  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
40412  which obtained via fast binary file I/O from disk.
40413  */
40414  // SgDimensionObject( SgDimensionObjectStorageClass& source );
40415 
40416 
40417 
40418 
40419 
40420  // JH (10/24/2005): methods added to support the ast file IO
40421  private:
40422 
40423  /* name AST Memory Allocation Support Functions
40424  \brief Memory allocations support....
40425 
40426  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
40427  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
40428  and support the AST File I/O Mechanism.
40429  */
40430  /* */
40431 
40432  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
40433  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
40434  that I use the same type everywhere, if any changes are made. THe second one declares the type
40435  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
40436  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
40437  a correspinding one in the AST_FILE_IO class!
40438  */
40439  // DQ (9/2/2015): This typedef is no longer used, we can't define the
40440  // comment here (changed to be a C style comment and not be a doxygen comment).
40441  /* \brief Typedef used for low level memory access.
40442  */
40443  // typedef unsigned char* TestType;
40444 
40445  // DQ (9/2/2015): This typedef is no longer used, we can't define the
40446  // comment here (changed to be a C style comment and not be a doxygen comment).
40447  /* \brief Typedef used to hold memory addresses as values.
40448  */
40449  // typedef unsigned long AddressType;
40450 
40451 
40452 
40453  // necessary, to have direct access to the p_freepointer and the private methods !
40455  friend class AST_FILE_IO;
40456 
40458  friend class SgDimensionObjectStorageClass;
40459 
40461  friend class AstSpecificDataManagingClass;
40462 
40464  friend class AstSpecificDataManagingClassStorageClass;
40465 
40466  public:
40468  SgDimensionObject( const SgDimensionObjectStorageClass& source );
40469 
40470  // private: // JJW hack
40471  /*
40472  name AST Memory Allocation Support Variables
40473  Memory allocations support variables
40474 
40475  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
40476  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
40477  and support the AST File I/O Mechanism.
40478  */
40479  /* */
40480 
40481  public:
40482 
40483  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
40484  // to current node (so that it will work cleanly with build functions to specify patterns).
40485  // virtual SgNode* addRegExpAttribute();
40492 
40493 // *** COMMON CODE SECTION ENDS HERE ***
40494 
40495 
40496 // End of memberFunctionString
40497 // Start of memberFunctionString
40498 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
40499 
40500  // the generated cast function
40501  // friend ROSE_DLL_API SgDimensionObject* isSgDimensionObject ( SgNode* s );
40502 
40503  typedef SgSupport base_node_type;
40504 
40505 
40506 // End of memberFunctionString
40507 
40508  public:
40509  SgInitializedName* get_array() const;
40510  void set_array(SgInitializedName* array);
40511 
40512  public:
40513  SgExprListExp* get_shape() const;
40514  void set_shape(SgExprListExp* shape);
40515 
40516 
40517  public:
40518  virtual ~SgDimensionObject();
40519 
40520 
40521  public:
40522  SgDimensionObject();
40523 
40524  protected:
40525 // Start of memberFunctionString
40526 SgInitializedName* p_array;
40527 
40528 // End of memberFunctionString
40529 // Start of memberFunctionString
40530 SgExprListExp* p_shape;
40531 
40532 // End of memberFunctionString
40533 
40534 
40535 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
40536 
40537 
40538  };
40539 #endif
40540 
40541 // postdeclarations for SgDimensionObject
40542 
40543 /* #line 40544 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
40544 
40545 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
40546 
40547 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
40548 
40549 
40550 /* #line 40551 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
40551 
40552 
40553 
40554 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
40555 
40556 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
40557 // This code is automatically generated for each
40558 // terminal and non-terminal within the defined
40559 // grammar. There is a simple way to change the
40560 // code to fix bugs etc. See the ROSE README file
40561 // for directions.
40562 
40563 // tps: (02/22/2010): Adding DLL export requirements
40564 #include "rosedll.h"
40565 
40566 // predeclarations for SgFormatItem
40567 
40568 /* #line 40569 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
40569 
40570 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
40571 
40572 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
40573 
40574 #if 1
40575 // Class Definition for SgFormatItem
40576 class ROSE_DLL_API SgFormatItem : public SgSupport
40577  {
40578  public:
40579 
40580 
40581 /* #line 40582 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
40582 
40583  virtual SgNode* copy ( SgCopyHelp& help) const override;
40584 // Start of memberFunctionString
40585 /* #line 2419 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
40586 
40587 
40588 
40589 // End of memberFunctionString
40590 // Start of memberFunctionString
40591 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
40592 
40593 // *** COMMON CODE SECTION BEGINS HERE ***
40594 
40595  public:
40596 
40597  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
40598  // and not required which is required to match the other aspects of the copy mechanism code generation.
40599  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
40600  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
40601  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
40602  // virtual SgNode* copy ( const SgCopyHelp & help) const;
40603 
40605  virtual std::string class_name() const override;
40606 
40608  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
40609 
40611  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
40612  // static const VariantT static_variant = V_SgFormatItem;
40613  enum { static_variant = V_SgFormatItem };
40614 
40615  /* the generated cast function */
40617  ROSE_DLL_API friend SgFormatItem* isSgFormatItem( SgNode * s );
40618 
40620  ROSE_DLL_API friend const SgFormatItem* isSgFormatItem( const SgNode * s );
40621 
40622  // ******************************************
40623  // * Memory Pool / New / Delete
40624  // ******************************************
40625 
40626  public:
40628  static const unsigned pool_size; //
40630  static std::vector<unsigned char *> pools; //
40632  static SgFormatItem * next_node; //
40633 
40635  static unsigned long initializeStorageClassArray(SgFormatItemStorageClass *); //
40636 
40638  static void clearMemoryPool(); //
40639  static void deleteMemoryPool(); //
40640 
40642  static void extendMemoryPoolForFileIO(); //
40643 
40645  static SgFormatItem * getPointerFromGlobalIndex(unsigned long); //
40647  static SgFormatItem * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
40648 
40650  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
40652  static void resetValidFreepointers(); //
40654  static unsigned long getNumberOfLastValidPointer(); //
40655 
40656 
40657 #if defined(INLINE_FUNCTIONS)
40658 
40659  inline void *operator new (size_t size);
40660 #else
40661 
40662  void *operator new (size_t size);
40663 #endif
40664 
40665  void operator delete (void* pointer, size_t size);
40666 
40667  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
40668  void operator delete (void* pointer)
40669  {
40670  // This is the generated delete operator...
40671  SgFormatItem::operator delete (pointer,sizeof(SgFormatItem));
40672  }
40673 
40675  static size_t numberOfNodes();
40676 
40678  static size_t memoryUsage();
40679 
40680  // End of scope which started in IR nodes specific code
40681  /* */
40682 
40683  /* name Internal Functions
40684  \brief Internal functions ... incomplete-documentation
40685 
40686  These functions have been made public as part of the design, but they are suggested for internal use
40687  or by particularly knowledgeable users for specialized tools or applications.
40688 
40689  \internal We could not make these private because they are required by user for special purposes. And
40690  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
40691 
40692  */
40693 
40694  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
40695  // overridden in every class by *generated* implementation
40697  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
40698  // MS: 06/28/02 container of names of variables or container indices
40699  // used used in the traversal to access AST successor nodes
40700  // overridden in every class by *generated* implementation
40703  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
40704 
40705  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
40706  // than all the vector copies. The implementation for these functions is generated for each class.
40708  virtual size_t get_numberOfTraversalSuccessors() override;
40710  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
40712  virtual size_t get_childIndex(SgNode *child) override;
40713 
40714 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
40715  // MS: 08/16/2002 method for generating RTI information
40717  virtual RTIReturnType roseRTI() override;
40718 #endif
40719  /* */
40720 
40721 
40722 
40723  /* name Deprecated Functions
40724  \brief Deprecated functions ... incomplete-documentation
40725 
40726  These functions have been deprecated from use.
40727  */
40728  /* */
40729 
40731  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
40732 
40733  // JJW (10/16/2008): Changed to a single function in Node.code, and put
40734  // getVariant() in #if 0 block to prevent confusing Doxygen
40735 #if 0
40736 
40737  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
40739  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
40740 #endif
40741  /* */
40742 
40743 
40744 
40745 
40746  public:
40747  /* name Traversal Support Functions
40748  \brief Traversal support functions ... incomplete-documentation
40749 
40750  These functions have been made public as part of the design, but they are suggested for internal use
40751  or by particularly knowledgable users for specialized tools or applications.
40752  */
40753  /* */
40754 
40755  // DQ (11/26/2005): Support for visitor pattern mechanims
40756  // (inferior to ROSE traversal mechanism, experimental).
40760 
40761  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
40763  virtual void accept (ROSE_VisitorPattern & visitor) override;
40764 
40765  // DQ (12/26/2005): Support for traversal based on the memory pool
40768  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
40769 
40773 
40774  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
40775  // This traversal helps support internal tools that call static member functions.
40776  // note: this function operates on the memory pools.
40779  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
40780  /* */
40781 
40782 
40783  public:
40784  /* name Memory Allocation Functions
40785  \brief Memory allocations functions ... incomplete-documentation
40786 
40787  These functions have been made public as part of the design, but they are suggested for internal use
40788  or by particularly knowledgable users for specialized tools or applications.
40789  */
40790  /* */
40791 
40802  virtual bool isInMemoryPool() override;
40803 
40814  virtual void checkDataMemberPointersIfInMemoryPool() override;
40815 
40816  // DQ (4/30/2006): Modified to be a const function.
40831  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
40832 
40842  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
40843 
40855  virtual long getChildIndex( SgNode* childNode ) const override;
40856 
40857  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
40858  // comment here (changed to be a C style comment and not be a doxygen comment).
40859  /* \brief Constructor for use by AST File I/O Mechanism
40860 
40861  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
40862  which obtained via fast binary file I/O from disk.
40863  */
40864  // SgFormatItem( SgFormatItemStorageClass& source );
40865 
40866 
40867 
40868 
40869 
40870  // JH (10/24/2005): methods added to support the ast file IO
40871  private:
40872 
40873  /* name AST Memory Allocation Support Functions
40874  \brief Memory allocations support....
40875 
40876  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
40877  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
40878  and support the AST File I/O Mechanism.
40879  */
40880  /* */
40881 
40882  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
40883  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
40884  that I use the same type everywhere, if any changes are made. THe second one declares the type
40885  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
40886  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
40887  a correspinding one in the AST_FILE_IO class!
40888  */
40889  // DQ (9/2/2015): This typedef is no longer used, we can't define the
40890  // comment here (changed to be a C style comment and not be a doxygen comment).
40891  /* \brief Typedef used for low level memory access.
40892  */
40893  // typedef unsigned char* TestType;
40894 
40895  // DQ (9/2/2015): This typedef is no longer used, we can't define the
40896  // comment here (changed to be a C style comment and not be a doxygen comment).
40897  /* \brief Typedef used to hold memory addresses as values.
40898  */
40899  // typedef unsigned long AddressType;
40900 
40901 
40902 
40903  // necessary, to have direct access to the p_freepointer and the private methods !
40905  friend class AST_FILE_IO;
40906 
40908  friend class SgFormatItemStorageClass;
40909 
40911  friend class AstSpecificDataManagingClass;
40912 
40914  friend class AstSpecificDataManagingClassStorageClass;
40915 
40916  public:
40918  SgFormatItem( const SgFormatItemStorageClass& source );
40919 
40920  // private: // JJW hack
40921  /*
40922  name AST Memory Allocation Support Variables
40923  Memory allocations support variables
40924 
40925  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
40926  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
40927  and support the AST File I/O Mechanism.
40928  */
40929  /* */
40930 
40931  public:
40932 
40933  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
40934  // to current node (so that it will work cleanly with build functions to specify patterns).
40935  // virtual SgNode* addRegExpAttribute();
40942 
40943 // *** COMMON CODE SECTION ENDS HERE ***
40944 
40945 
40946 // End of memberFunctionString
40947 // Start of memberFunctionString
40948 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
40949 
40950  // the generated cast function
40951  // friend ROSE_DLL_API SgFormatItem* isSgFormatItem ( SgNode* s );
40952 
40953  typedef SgSupport base_node_type;
40954 
40955 
40956 // End of memberFunctionString
40957 
40958  public:
40959  int get_repeat_specification() const;
40960  void set_repeat_specification(int repeat_specification);
40961 
40962  public:
40963  SgExpression* get_data() const;
40964  void set_data(SgExpression* data);
40965 
40966  public:
40967  SgFormatItemList* get_format_item_list() const;
40968  void set_format_item_list(SgFormatItemList* format_item_list);
40969 
40970 
40971  public:
40972  virtual ~SgFormatItem();
40973 
40974 
40975  public:
40976  SgFormatItem();
40977 
40978  protected:
40979 // Start of memberFunctionString
40980 int p_repeat_specification;
40981 
40982 // End of memberFunctionString
40983 // Start of memberFunctionString
40984 SgExpression* p_data;
40985 
40986 // End of memberFunctionString
40987 // Start of memberFunctionString
40988 SgFormatItemList* p_format_item_list;
40989 
40990 // End of memberFunctionString
40991 
40992 
40993 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
40994 
40995 
40996  };
40997 #endif
40998 
40999 // postdeclarations for SgFormatItem
41000 
41001 /* #line 41002 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
41002 
41003 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
41004 
41005 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
41006 
41007 
41008 /* #line 41009 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
41009 
41010 
41011 
41012 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
41013 
41014 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
41015 // This code is automatically generated for each
41016 // terminal and non-terminal within the defined
41017 // grammar. There is a simple way to change the
41018 // code to fix bugs etc. See the ROSE README file
41019 // for directions.
41020 
41021 // tps: (02/22/2010): Adding DLL export requirements
41022 #include "rosedll.h"
41023 
41024 // predeclarations for SgFormatItemList
41025 
41026 /* #line 41027 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
41027 
41028 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
41029 
41030 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
41031 
41032 #if 1
41033 // Class Definition for SgFormatItemList
41034 class ROSE_DLL_API SgFormatItemList : public SgSupport
41035  {
41036  public:
41037 
41038 
41039 /* #line 41040 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
41040 
41041  virtual SgNode* copy ( SgCopyHelp& help) const override;
41042 // Start of memberFunctionString
41043 /* #line 2423 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
41044 
41045 
41046  const SgFormatItemPtrList & get_format_item_list() const;
41047  SgFormatItemPtrList & get_format_item_list();
41048  void set_format_item_list ( const SgFormatItemPtrList & formatItemList );
41049 
41050 
41051 
41052 // End of memberFunctionString
41053 // Start of memberFunctionString
41054 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
41055 
41056 // *** COMMON CODE SECTION BEGINS HERE ***
41057 
41058  public:
41059 
41060  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
41061  // and not required which is required to match the other aspects of the copy mechanism code generation.
41062  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
41063  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
41064  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
41065  // virtual SgNode* copy ( const SgCopyHelp & help) const;
41066 
41068  virtual std::string class_name() const override;
41069 
41071  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
41072 
41074  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
41075  // static const VariantT static_variant = V_SgFormatItemList;
41076  enum { static_variant = V_SgFormatItemList };
41077 
41078  /* the generated cast function */
41080  ROSE_DLL_API friend SgFormatItemList* isSgFormatItemList( SgNode * s );
41081 
41083  ROSE_DLL_API friend const SgFormatItemList* isSgFormatItemList( const SgNode * s );
41084 
41085  // ******************************************
41086  // * Memory Pool / New / Delete
41087  // ******************************************
41088 
41089  public:
41091  static const unsigned pool_size; //
41093  static std::vector<unsigned char *> pools; //
41095  static SgFormatItemList * next_node; //
41096 
41098  static unsigned long initializeStorageClassArray(SgFormatItemListStorageClass *); //
41099 
41101  static void clearMemoryPool(); //
41102  static void deleteMemoryPool(); //
41103 
41105  static void extendMemoryPoolForFileIO(); //
41106 
41108  static SgFormatItemList * getPointerFromGlobalIndex(unsigned long); //
41110  static SgFormatItemList * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
41111 
41113  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
41115  static void resetValidFreepointers(); //
41117  static unsigned long getNumberOfLastValidPointer(); //
41118 
41119 
41120 #if defined(INLINE_FUNCTIONS)
41121 
41122  inline void *operator new (size_t size);
41123 #else
41124 
41125  void *operator new (size_t size);
41126 #endif
41127 
41128  void operator delete (void* pointer, size_t size);
41129 
41130  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
41131  void operator delete (void* pointer)
41132  {
41133  // This is the generated delete operator...
41134  SgFormatItemList::operator delete (pointer,sizeof(SgFormatItemList));
41135  }
41136 
41138  static size_t numberOfNodes();
41139 
41141  static size_t memoryUsage();
41142 
41143  // End of scope which started in IR nodes specific code
41144  /* */
41145 
41146  /* name Internal Functions
41147  \brief Internal functions ... incomplete-documentation
41148 
41149  These functions have been made public as part of the design, but they are suggested for internal use
41150  or by particularly knowledgeable users for specialized tools or applications.
41151 
41152  \internal We could not make these private because they are required by user for special purposes. And
41153  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
41154 
41155  */
41156 
41157  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
41158  // overridden in every class by *generated* implementation
41160  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
41161  // MS: 06/28/02 container of names of variables or container indices
41162  // used used in the traversal to access AST successor nodes
41163  // overridden in every class by *generated* implementation
41166  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
41167 
41168  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
41169  // than all the vector copies. The implementation for these functions is generated for each class.
41171  virtual size_t get_numberOfTraversalSuccessors() override;
41173  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
41175  virtual size_t get_childIndex(SgNode *child) override;
41176 
41177 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
41178  // MS: 08/16/2002 method for generating RTI information
41180  virtual RTIReturnType roseRTI() override;
41181 #endif
41182  /* */
41183 
41184 
41185 
41186  /* name Deprecated Functions
41187  \brief Deprecated functions ... incomplete-documentation
41188 
41189  These functions have been deprecated from use.
41190  */
41191  /* */
41192 
41194  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
41195 
41196  // JJW (10/16/2008): Changed to a single function in Node.code, and put
41197  // getVariant() in #if 0 block to prevent confusing Doxygen
41198 #if 0
41199 
41200  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
41202  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
41203 #endif
41204  /* */
41205 
41206 
41207 
41208 
41209  public:
41210  /* name Traversal Support Functions
41211  \brief Traversal support functions ... incomplete-documentation
41212 
41213  These functions have been made public as part of the design, but they are suggested for internal use
41214  or by particularly knowledgable users for specialized tools or applications.
41215  */
41216  /* */
41217 
41218  // DQ (11/26/2005): Support for visitor pattern mechanims
41219  // (inferior to ROSE traversal mechanism, experimental).
41223 
41224  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
41226  virtual void accept (ROSE_VisitorPattern & visitor) override;
41227 
41228  // DQ (12/26/2005): Support for traversal based on the memory pool
41231  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
41232 
41236 
41237  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
41238  // This traversal helps support internal tools that call static member functions.
41239  // note: this function operates on the memory pools.
41242  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
41243  /* */
41244 
41245 
41246  public:
41247  /* name Memory Allocation Functions
41248  \brief Memory allocations functions ... incomplete-documentation
41249 
41250  These functions have been made public as part of the design, but they are suggested for internal use
41251  or by particularly knowledgable users for specialized tools or applications.
41252  */
41253  /* */
41254 
41265  virtual bool isInMemoryPool() override;
41266 
41277  virtual void checkDataMemberPointersIfInMemoryPool() override;
41278 
41279  // DQ (4/30/2006): Modified to be a const function.
41294  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
41295 
41305  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
41306 
41318  virtual long getChildIndex( SgNode* childNode ) const override;
41319 
41320  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
41321  // comment here (changed to be a C style comment and not be a doxygen comment).
41322  /* \brief Constructor for use by AST File I/O Mechanism
41323 
41324  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
41325  which obtained via fast binary file I/O from disk.
41326  */
41327  // SgFormatItemList( SgFormatItemListStorageClass& source );
41328 
41329 
41330 
41331 
41332 
41333  // JH (10/24/2005): methods added to support the ast file IO
41334  private:
41335 
41336  /* name AST Memory Allocation Support Functions
41337  \brief Memory allocations support....
41338 
41339  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
41340  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
41341  and support the AST File I/O Mechanism.
41342  */
41343  /* */
41344 
41345  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
41346  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
41347  that I use the same type everywhere, if any changes are made. THe second one declares the type
41348  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
41349  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
41350  a correspinding one in the AST_FILE_IO class!
41351  */
41352  // DQ (9/2/2015): This typedef is no longer used, we can't define the
41353  // comment here (changed to be a C style comment and not be a doxygen comment).
41354  /* \brief Typedef used for low level memory access.
41355  */
41356  // typedef unsigned char* TestType;
41357 
41358  // DQ (9/2/2015): This typedef is no longer used, we can't define the
41359  // comment here (changed to be a C style comment and not be a doxygen comment).
41360  /* \brief Typedef used to hold memory addresses as values.
41361  */
41362  // typedef unsigned long AddressType;
41363 
41364 
41365 
41366  // necessary, to have direct access to the p_freepointer and the private methods !
41368  friend class AST_FILE_IO;
41369 
41371  friend class SgFormatItemListStorageClass;
41372 
41374  friend class AstSpecificDataManagingClass;
41375 
41377  friend class AstSpecificDataManagingClassStorageClass;
41378 
41379  public:
41381  SgFormatItemList( const SgFormatItemListStorageClass& source );
41382 
41383  // private: // JJW hack
41384  /*
41385  name AST Memory Allocation Support Variables
41386  Memory allocations support variables
41387 
41388  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
41389  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
41390  and support the AST File I/O Mechanism.
41391  */
41392  /* */
41393 
41394  public:
41395 
41396  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
41397  // to current node (so that it will work cleanly with build functions to specify patterns).
41398  // virtual SgNode* addRegExpAttribute();
41405 
41406 // *** COMMON CODE SECTION ENDS HERE ***
41407 
41408 
41409 // End of memberFunctionString
41410 // Start of memberFunctionString
41411 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
41412 
41413  // the generated cast function
41414  // friend ROSE_DLL_API SgFormatItemList* isSgFormatItemList ( SgNode* s );
41415 
41416  typedef SgSupport base_node_type;
41417 
41418 
41419 // End of memberFunctionString
41420 
41421 
41422 
41423  public:
41424  virtual ~SgFormatItemList();
41425 
41426 
41427  public:
41428  SgFormatItemList();
41429 
41430  protected:
41431 // Start of memberFunctionString
41432 SgFormatItemPtrList p_format_item_list;
41433 
41434 // End of memberFunctionString
41435 
41436 
41437 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
41438 
41439 
41440  };
41441 #endif
41442 
41443 // postdeclarations for SgFormatItemList
41444 
41445 /* #line 41446 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
41446 
41447 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
41448 
41449 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
41450 
41451 
41452 /* #line 41453 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
41453 
41454 
41455 
41456 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
41457 
41458 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
41459 // This code is automatically generated for each
41460 // terminal and non-terminal within the defined
41461 // grammar. There is a simple way to change the
41462 // code to fix bugs etc. See the ROSE README file
41463 // for directions.
41464 
41465 // tps: (02/22/2010): Adding DLL export requirements
41466 #include "rosedll.h"
41467 
41468 // predeclarations for SgDataStatementGroup
41469 
41470 /* #line 41471 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
41471 
41472 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
41473 
41474 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
41475 
41476 #if 1
41477 // Class Definition for SgDataStatementGroup
41478 class ROSE_DLL_API SgDataStatementGroup : public SgSupport
41479  {
41480  public:
41481 
41482 
41483 /* #line 41484 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
41484 
41485  virtual SgNode* copy ( SgCopyHelp& help) const override;
41486 // Start of memberFunctionString
41487 /* #line 2388 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
41488 
41489 
41490  const SgDataStatementObjectPtrList & get_object_list() const;
41491  SgDataStatementObjectPtrList & get_object_list();
41492 
41493  const SgDataStatementValuePtrList & get_value_list() const;
41494  SgDataStatementValuePtrList & get_value_list();
41495 
41496 
41497 
41498 // End of memberFunctionString
41499 // Start of memberFunctionString
41500 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
41501 
41502 // *** COMMON CODE SECTION BEGINS HERE ***
41503 
41504  public:
41505 
41506  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
41507  // and not required which is required to match the other aspects of the copy mechanism code generation.
41508  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
41509  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
41510  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
41511  // virtual SgNode* copy ( const SgCopyHelp & help) const;
41512 
41514  virtual std::string class_name() const override;
41515 
41517  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
41518 
41520  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
41521  // static const VariantT static_variant = V_SgDataStatementGroup;
41522  enum { static_variant = V_SgDataStatementGroup };
41523 
41524  /* the generated cast function */
41526  ROSE_DLL_API friend SgDataStatementGroup* isSgDataStatementGroup( SgNode * s );
41527 
41529  ROSE_DLL_API friend const SgDataStatementGroup* isSgDataStatementGroup( const SgNode * s );
41530 
41531  // ******************************************
41532  // * Memory Pool / New / Delete
41533  // ******************************************
41534 
41535  public:
41537  static const unsigned pool_size; //
41539  static std::vector<unsigned char *> pools; //
41541  static SgDataStatementGroup * next_node; //
41542 
41544  static unsigned long initializeStorageClassArray(SgDataStatementGroupStorageClass *); //
41545 
41547  static void clearMemoryPool(); //
41548  static void deleteMemoryPool(); //
41549 
41551  static void extendMemoryPoolForFileIO(); //
41552 
41554  static SgDataStatementGroup * getPointerFromGlobalIndex(unsigned long); //
41556  static SgDataStatementGroup * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
41557 
41559  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
41561  static void resetValidFreepointers(); //
41563  static unsigned long getNumberOfLastValidPointer(); //
41564 
41565 
41566 #if defined(INLINE_FUNCTIONS)
41567 
41568  inline void *operator new (size_t size);
41569 #else
41570 
41571  void *operator new (size_t size);
41572 #endif
41573 
41574  void operator delete (void* pointer, size_t size);
41575 
41576  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
41577  void operator delete (void* pointer)
41578  {
41579  // This is the generated delete operator...
41580  SgDataStatementGroup::operator delete (pointer,sizeof(SgDataStatementGroup));
41581  }
41582 
41584  static size_t numberOfNodes();
41585 
41587  static size_t memoryUsage();
41588 
41589  // End of scope which started in IR nodes specific code
41590  /* */
41591 
41592  /* name Internal Functions
41593  \brief Internal functions ... incomplete-documentation
41594 
41595  These functions have been made public as part of the design, but they are suggested for internal use
41596  or by particularly knowledgeable users for specialized tools or applications.
41597 
41598  \internal We could not make these private because they are required by user for special purposes. And
41599  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
41600 
41601  */
41602 
41603  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
41604  // overridden in every class by *generated* implementation
41606  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
41607  // MS: 06/28/02 container of names of variables or container indices
41608  // used used in the traversal to access AST successor nodes
41609  // overridden in every class by *generated* implementation
41612  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
41613 
41614  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
41615  // than all the vector copies. The implementation for these functions is generated for each class.
41617  virtual size_t get_numberOfTraversalSuccessors() override;
41619  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
41621  virtual size_t get_childIndex(SgNode *child) override;
41622 
41623 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
41624  // MS: 08/16/2002 method for generating RTI information
41626  virtual RTIReturnType roseRTI() override;
41627 #endif
41628  /* */
41629 
41630 
41631 
41632  /* name Deprecated Functions
41633  \brief Deprecated functions ... incomplete-documentation
41634 
41635  These functions have been deprecated from use.
41636  */
41637  /* */
41638 
41640  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
41641 
41642  // JJW (10/16/2008): Changed to a single function in Node.code, and put
41643  // getVariant() in #if 0 block to prevent confusing Doxygen
41644 #if 0
41645 
41646  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
41648  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
41649 #endif
41650  /* */
41651 
41652 
41653 
41654 
41655  public:
41656  /* name Traversal Support Functions
41657  \brief Traversal support functions ... incomplete-documentation
41658 
41659  These functions have been made public as part of the design, but they are suggested for internal use
41660  or by particularly knowledgable users for specialized tools or applications.
41661  */
41662  /* */
41663 
41664  // DQ (11/26/2005): Support for visitor pattern mechanims
41665  // (inferior to ROSE traversal mechanism, experimental).
41669 
41670  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
41672  virtual void accept (ROSE_VisitorPattern & visitor) override;
41673 
41674  // DQ (12/26/2005): Support for traversal based on the memory pool
41677  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
41678 
41682 
41683  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
41684  // This traversal helps support internal tools that call static member functions.
41685  // note: this function operates on the memory pools.
41688  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
41689  /* */
41690 
41691 
41692  public:
41693  /* name Memory Allocation Functions
41694  \brief Memory allocations functions ... incomplete-documentation
41695 
41696  These functions have been made public as part of the design, but they are suggested for internal use
41697  or by particularly knowledgable users for specialized tools or applications.
41698  */
41699  /* */
41700 
41711  virtual bool isInMemoryPool() override;
41712 
41723  virtual void checkDataMemberPointersIfInMemoryPool() override;
41724 
41725  // DQ (4/30/2006): Modified to be a const function.
41740  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
41741 
41751  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
41752 
41764  virtual long getChildIndex( SgNode* childNode ) const override;
41765 
41766  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
41767  // comment here (changed to be a C style comment and not be a doxygen comment).
41768  /* \brief Constructor for use by AST File I/O Mechanism
41769 
41770  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
41771  which obtained via fast binary file I/O from disk.
41772  */
41773  // SgDataStatementGroup( SgDataStatementGroupStorageClass& source );
41774 
41775 
41776 
41777 
41778 
41779  // JH (10/24/2005): methods added to support the ast file IO
41780  private:
41781 
41782  /* name AST Memory Allocation Support Functions
41783  \brief Memory allocations support....
41784 
41785  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
41786  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
41787  and support the AST File I/O Mechanism.
41788  */
41789  /* */
41790 
41791  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
41792  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
41793  that I use the same type everywhere, if any changes are made. THe second one declares the type
41794  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
41795  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
41796  a correspinding one in the AST_FILE_IO class!
41797  */
41798  // DQ (9/2/2015): This typedef is no longer used, we can't define the
41799  // comment here (changed to be a C style comment and not be a doxygen comment).
41800  /* \brief Typedef used for low level memory access.
41801  */
41802  // typedef unsigned char* TestType;
41803 
41804  // DQ (9/2/2015): This typedef is no longer used, we can't define the
41805  // comment here (changed to be a C style comment and not be a doxygen comment).
41806  /* \brief Typedef used to hold memory addresses as values.
41807  */
41808  // typedef unsigned long AddressType;
41809 
41810 
41811 
41812  // necessary, to have direct access to the p_freepointer and the private methods !
41814  friend class AST_FILE_IO;
41815 
41817  friend class SgDataStatementGroupStorageClass;
41818 
41820  friend class AstSpecificDataManagingClass;
41821 
41823  friend class AstSpecificDataManagingClassStorageClass;
41824 
41825  public:
41827  SgDataStatementGroup( const SgDataStatementGroupStorageClass& source );
41828 
41829  // private: // JJW hack
41830  /*
41831  name AST Memory Allocation Support Variables
41832  Memory allocations support variables
41833 
41834  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
41835  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
41836  and support the AST File I/O Mechanism.
41837  */
41838  /* */
41839 
41840  public:
41841 
41842  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
41843  // to current node (so that it will work cleanly with build functions to specify patterns).
41844  // virtual SgNode* addRegExpAttribute();
41851 
41852 // *** COMMON CODE SECTION ENDS HERE ***
41853 
41854 
41855 // End of memberFunctionString
41856 // Start of memberFunctionString
41857 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
41858 
41859  // the generated cast function
41860  // friend ROSE_DLL_API SgDataStatementGroup* isSgDataStatementGroup ( SgNode* s );
41861 
41862  typedef SgSupport base_node_type;
41863 
41864 
41865 // End of memberFunctionString
41866 
41867 
41868 
41869 
41870  public:
41871  virtual ~SgDataStatementGroup();
41872 
41873 
41874  public:
41876 
41877  protected:
41878 // Start of memberFunctionString
41879 SgDataStatementObjectPtrList p_object_list;
41880 
41881 // End of memberFunctionString
41882 // Start of memberFunctionString
41883 SgDataStatementValuePtrList p_value_list;
41884 
41885 // End of memberFunctionString
41886 
41887 
41888 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
41889 
41890 
41891  };
41892 #endif
41893 
41894 // postdeclarations for SgDataStatementGroup
41895 
41896 /* #line 41897 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
41897 
41898 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
41899 
41900 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
41901 
41902 
41903 /* #line 41904 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
41904 
41905 
41906 
41907 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
41908 
41909 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
41910 // This code is automatically generated for each
41911 // terminal and non-terminal within the defined
41912 // grammar. There is a simple way to change the
41913 // code to fix bugs etc. See the ROSE README file
41914 // for directions.
41915 
41916 // tps: (02/22/2010): Adding DLL export requirements
41917 #include "rosedll.h"
41918 
41919 // predeclarations for SgDataStatementObject
41920 
41921 /* #line 41922 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
41922 
41923 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
41924 
41925 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
41926 
41927 #if 1
41928 // Class Definition for SgDataStatementObject
41929 class ROSE_DLL_API SgDataStatementObject : public SgSupport
41930  {
41931  public:
41932 
41933 
41934 /* #line 41935 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
41935 
41936  virtual SgNode* copy ( SgCopyHelp& help) const override;
41937 // Start of memberFunctionString
41938 /* #line 2398 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
41939 
41940 
41941 
41942 // End of memberFunctionString
41943 // Start of memberFunctionString
41944 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
41945 
41946 // *** COMMON CODE SECTION BEGINS HERE ***
41947 
41948  public:
41949 
41950  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
41951  // and not required which is required to match the other aspects of the copy mechanism code generation.
41952  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
41953  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
41954  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
41955  // virtual SgNode* copy ( const SgCopyHelp & help) const;
41956 
41958  virtual std::string class_name() const override;
41959 
41961  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
41962 
41964  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
41965  // static const VariantT static_variant = V_SgDataStatementObject;
41966  enum { static_variant = V_SgDataStatementObject };
41967 
41968  /* the generated cast function */
41970  ROSE_DLL_API friend SgDataStatementObject* isSgDataStatementObject( SgNode * s );
41971 
41973  ROSE_DLL_API friend const SgDataStatementObject* isSgDataStatementObject( const SgNode * s );
41974 
41975  // ******************************************
41976  // * Memory Pool / New / Delete
41977  // ******************************************
41978 
41979  public:
41981  static const unsigned pool_size; //
41983  static std::vector<unsigned char *> pools; //
41985  static SgDataStatementObject * next_node; //
41986 
41988  static unsigned long initializeStorageClassArray(SgDataStatementObjectStorageClass *); //
41989 
41991  static void clearMemoryPool(); //
41992  static void deleteMemoryPool(); //
41993 
41995  static void extendMemoryPoolForFileIO(); //
41996 
41998  static SgDataStatementObject * getPointerFromGlobalIndex(unsigned long); //
42000  static SgDataStatementObject * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
42001 
42003  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
42005  static void resetValidFreepointers(); //
42007  static unsigned long getNumberOfLastValidPointer(); //
42008 
42009 
42010 #if defined(INLINE_FUNCTIONS)
42011 
42012  inline void *operator new (size_t size);
42013 #else
42014 
42015  void *operator new (size_t size);
42016 #endif
42017 
42018  void operator delete (void* pointer, size_t size);
42019 
42020  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
42021  void operator delete (void* pointer)
42022  {
42023  // This is the generated delete operator...
42024  SgDataStatementObject::operator delete (pointer,sizeof(SgDataStatementObject));
42025  }
42026 
42028  static size_t numberOfNodes();
42029 
42031  static size_t memoryUsage();
42032 
42033  // End of scope which started in IR nodes specific code
42034  /* */
42035 
42036  /* name Internal Functions
42037  \brief Internal functions ... incomplete-documentation
42038 
42039  These functions have been made public as part of the design, but they are suggested for internal use
42040  or by particularly knowledgeable users for specialized tools or applications.
42041 
42042  \internal We could not make these private because they are required by user for special purposes. And
42043  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
42044 
42045  */
42046 
42047  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
42048  // overridden in every class by *generated* implementation
42050  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
42051  // MS: 06/28/02 container of names of variables or container indices
42052  // used used in the traversal to access AST successor nodes
42053  // overridden in every class by *generated* implementation
42056  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
42057 
42058  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
42059  // than all the vector copies. The implementation for these functions is generated for each class.
42061  virtual size_t get_numberOfTraversalSuccessors() override;
42063  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
42065  virtual size_t get_childIndex(SgNode *child) override;
42066 
42067 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
42068  // MS: 08/16/2002 method for generating RTI information
42070  virtual RTIReturnType roseRTI() override;
42071 #endif
42072  /* */
42073 
42074 
42075 
42076  /* name Deprecated Functions
42077  \brief Deprecated functions ... incomplete-documentation
42078 
42079  These functions have been deprecated from use.
42080  */
42081  /* */
42082 
42084  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
42085 
42086  // JJW (10/16/2008): Changed to a single function in Node.code, and put
42087  // getVariant() in #if 0 block to prevent confusing Doxygen
42088 #if 0
42089 
42090  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
42092  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
42093 #endif
42094  /* */
42095 
42096 
42097 
42098 
42099  public:
42100  /* name Traversal Support Functions
42101  \brief Traversal support functions ... incomplete-documentation
42102 
42103  These functions have been made public as part of the design, but they are suggested for internal use
42104  or by particularly knowledgable users for specialized tools or applications.
42105  */
42106  /* */
42107 
42108  // DQ (11/26/2005): Support for visitor pattern mechanims
42109  // (inferior to ROSE traversal mechanism, experimental).
42113 
42114  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
42116  virtual void accept (ROSE_VisitorPattern & visitor) override;
42117 
42118  // DQ (12/26/2005): Support for traversal based on the memory pool
42121  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
42122 
42126 
42127  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
42128  // This traversal helps support internal tools that call static member functions.
42129  // note: this function operates on the memory pools.
42132  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
42133  /* */
42134 
42135 
42136  public:
42137  /* name Memory Allocation Functions
42138  \brief Memory allocations functions ... incomplete-documentation
42139 
42140  These functions have been made public as part of the design, but they are suggested for internal use
42141  or by particularly knowledgable users for specialized tools or applications.
42142  */
42143  /* */
42144 
42155  virtual bool isInMemoryPool() override;
42156 
42167  virtual void checkDataMemberPointersIfInMemoryPool() override;
42168 
42169  // DQ (4/30/2006): Modified to be a const function.
42184  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
42185 
42195  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
42196 
42208  virtual long getChildIndex( SgNode* childNode ) const override;
42209 
42210  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
42211  // comment here (changed to be a C style comment and not be a doxygen comment).
42212  /* \brief Constructor for use by AST File I/O Mechanism
42213 
42214  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
42215  which obtained via fast binary file I/O from disk.
42216  */
42217  // SgDataStatementObject( SgDataStatementObjectStorageClass& source );
42218 
42219 
42220 
42221 
42222 
42223  // JH (10/24/2005): methods added to support the ast file IO
42224  private:
42225 
42226  /* name AST Memory Allocation Support Functions
42227  \brief Memory allocations support....
42228 
42229  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
42230  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
42231  and support the AST File I/O Mechanism.
42232  */
42233  /* */
42234 
42235  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
42236  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
42237  that I use the same type everywhere, if any changes are made. THe second one declares the type
42238  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
42239  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
42240  a correspinding one in the AST_FILE_IO class!
42241  */
42242  // DQ (9/2/2015): This typedef is no longer used, we can't define the
42243  // comment here (changed to be a C style comment and not be a doxygen comment).
42244  /* \brief Typedef used for low level memory access.
42245  */
42246  // typedef unsigned char* TestType;
42247 
42248  // DQ (9/2/2015): This typedef is no longer used, we can't define the
42249  // comment here (changed to be a C style comment and not be a doxygen comment).
42250  /* \brief Typedef used to hold memory addresses as values.
42251  */
42252  // typedef unsigned long AddressType;
42253 
42254 
42255 
42256  // necessary, to have direct access to the p_freepointer and the private methods !
42258  friend class AST_FILE_IO;
42259 
42261  friend class SgDataStatementObjectStorageClass;
42262 
42264  friend class AstSpecificDataManagingClass;
42265 
42267  friend class AstSpecificDataManagingClassStorageClass;
42268 
42269  public:
42271  SgDataStatementObject( const SgDataStatementObjectStorageClass& source );
42272 
42273  // private: // JJW hack
42274  /*
42275  name AST Memory Allocation Support Variables
42276  Memory allocations support variables
42277 
42278  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
42279  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
42280  and support the AST File I/O Mechanism.
42281  */
42282  /* */
42283 
42284  public:
42285 
42286  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
42287  // to current node (so that it will work cleanly with build functions to specify patterns).
42288  // virtual SgNode* addRegExpAttribute();
42295 
42296 // *** COMMON CODE SECTION ENDS HERE ***
42297 
42298 
42299 // End of memberFunctionString
42300 // Start of memberFunctionString
42301 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
42302 
42303  // the generated cast function
42304  // friend ROSE_DLL_API SgDataStatementObject* isSgDataStatementObject ( SgNode* s );
42305 
42306  typedef SgSupport base_node_type;
42307 
42308 
42309 // End of memberFunctionString
42310 
42311  public:
42312  SgExprListExp* get_variableReference_list() const;
42313  void set_variableReference_list(SgExprListExp* variableReference_list);
42314 
42315 
42316  public:
42317  virtual ~SgDataStatementObject();
42318 
42319 
42320  public:
42322 
42323  protected:
42324 // Start of memberFunctionString
42325 SgExprListExp* p_variableReference_list;
42326 
42327 // End of memberFunctionString
42328 
42329 
42330 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
42331 
42332 
42333  };
42334 #endif
42335 
42336 // postdeclarations for SgDataStatementObject
42337 
42338 /* #line 42339 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
42339 
42340 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
42341 
42342 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
42343 
42344 
42345 /* #line 42346 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
42346 
42347 
42348 
42349 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
42350 
42351 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
42352 // This code is automatically generated for each
42353 // terminal and non-terminal within the defined
42354 // grammar. There is a simple way to change the
42355 // code to fix bugs etc. See the ROSE README file
42356 // for directions.
42357 
42358 // tps: (02/22/2010): Adding DLL export requirements
42359 #include "rosedll.h"
42360 
42361 // predeclarations for SgIncludeFile
42362 
42363 /* #line 42364 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
42364 
42365 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
42366 
42367 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
42368 
42369 #if 1
42370 // Class Definition for SgIncludeFile
42371 class ROSE_DLL_API SgIncludeFile : public SgSupport
42372  {
42373  public:
42374 
42375 
42376 /* #line 42377 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
42377 
42378  virtual SgNode* copy ( SgCopyHelp& help) const override;
42379 // Start of memberFunctionString
42380 /* #line 6625 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
42381 
42382 
42383 
42384 // End of memberFunctionString
42385 // Start of memberFunctionString
42386 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
42387 
42388 // *** COMMON CODE SECTION BEGINS HERE ***
42389 
42390  public:
42391 
42392  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
42393  // and not required which is required to match the other aspects of the copy mechanism code generation.
42394  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
42395  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
42396  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
42397  // virtual SgNode* copy ( const SgCopyHelp & help) const;
42398 
42400  virtual std::string class_name() const override;
42401 
42403  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
42404 
42406  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
42407  // static const VariantT static_variant = V_SgIncludeFile;
42408  enum { static_variant = V_SgIncludeFile };
42409 
42410  /* the generated cast function */
42412  ROSE_DLL_API friend SgIncludeFile* isSgIncludeFile( SgNode * s );
42413 
42415  ROSE_DLL_API friend const SgIncludeFile* isSgIncludeFile( const SgNode * s );
42416 
42417  // ******************************************
42418  // * Memory Pool / New / Delete
42419  // ******************************************
42420 
42421  public:
42423  static const unsigned pool_size; //
42425  static std::vector<unsigned char *> pools; //
42427  static SgIncludeFile * next_node; //
42428 
42430  static unsigned long initializeStorageClassArray(SgIncludeFileStorageClass *); //
42431 
42433  static void clearMemoryPool(); //
42434  static void deleteMemoryPool(); //
42435 
42437  static void extendMemoryPoolForFileIO(); //
42438 
42440  static SgIncludeFile * getPointerFromGlobalIndex(unsigned long); //
42442  static SgIncludeFile * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
42443 
42445  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
42447  static void resetValidFreepointers(); //
42449  static unsigned long getNumberOfLastValidPointer(); //
42450 
42451 
42452 #if defined(INLINE_FUNCTIONS)
42453 
42454  inline void *operator new (size_t size);
42455 #else
42456 
42457  void *operator new (size_t size);
42458 #endif
42459 
42460  void operator delete (void* pointer, size_t size);
42461 
42462  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
42463  void operator delete (void* pointer)
42464  {
42465  // This is the generated delete operator...
42466  SgIncludeFile::operator delete (pointer,sizeof(SgIncludeFile));
42467  }
42468 
42470  static size_t numberOfNodes();
42471 
42473  static size_t memoryUsage();
42474 
42475  // End of scope which started in IR nodes specific code
42476  /* */
42477 
42478  /* name Internal Functions
42479  \brief Internal functions ... incomplete-documentation
42480 
42481  These functions have been made public as part of the design, but they are suggested for internal use
42482  or by particularly knowledgeable users for specialized tools or applications.
42483 
42484  \internal We could not make these private because they are required by user for special purposes. And
42485  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
42486 
42487  */
42488 
42489  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
42490  // overridden in every class by *generated* implementation
42492  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
42493  // MS: 06/28/02 container of names of variables or container indices
42494  // used used in the traversal to access AST successor nodes
42495  // overridden in every class by *generated* implementation
42498  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
42499 
42500  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
42501  // than all the vector copies. The implementation for these functions is generated for each class.
42503  virtual size_t get_numberOfTraversalSuccessors() override;
42505  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
42507  virtual size_t get_childIndex(SgNode *child) override;
42508 
42509 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
42510  // MS: 08/16/2002 method for generating RTI information
42512  virtual RTIReturnType roseRTI() override;
42513 #endif
42514  /* */
42515 
42516 
42517 
42518  /* name Deprecated Functions
42519  \brief Deprecated functions ... incomplete-documentation
42520 
42521  These functions have been deprecated from use.
42522  */
42523  /* */
42524 
42526  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
42527 
42528  // JJW (10/16/2008): Changed to a single function in Node.code, and put
42529  // getVariant() in #if 0 block to prevent confusing Doxygen
42530 #if 0
42531 
42532  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
42534  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
42535 #endif
42536  /* */
42537 
42538 
42539 
42540 
42541  public:
42542  /* name Traversal Support Functions
42543  \brief Traversal support functions ... incomplete-documentation
42544 
42545  These functions have been made public as part of the design, but they are suggested for internal use
42546  or by particularly knowledgable users for specialized tools or applications.
42547  */
42548  /* */
42549 
42550  // DQ (11/26/2005): Support for visitor pattern mechanims
42551  // (inferior to ROSE traversal mechanism, experimental).
42555 
42556  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
42558  virtual void accept (ROSE_VisitorPattern & visitor) override;
42559 
42560  // DQ (12/26/2005): Support for traversal based on the memory pool
42563  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
42564 
42568 
42569  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
42570  // This traversal helps support internal tools that call static member functions.
42571  // note: this function operates on the memory pools.
42574  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
42575  /* */
42576 
42577 
42578  public:
42579  /* name Memory Allocation Functions
42580  \brief Memory allocations functions ... incomplete-documentation
42581 
42582  These functions have been made public as part of the design, but they are suggested for internal use
42583  or by particularly knowledgable users for specialized tools or applications.
42584  */
42585  /* */
42586 
42597  virtual bool isInMemoryPool() override;
42598 
42609  virtual void checkDataMemberPointersIfInMemoryPool() override;
42610 
42611  // DQ (4/30/2006): Modified to be a const function.
42626  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
42627 
42637  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
42638 
42650  virtual long getChildIndex( SgNode* childNode ) const override;
42651 
42652  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
42653  // comment here (changed to be a C style comment and not be a doxygen comment).
42654  /* \brief Constructor for use by AST File I/O Mechanism
42655 
42656  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
42657  which obtained via fast binary file I/O from disk.
42658  */
42659  // SgIncludeFile( SgIncludeFileStorageClass& source );
42660 
42661 
42662 
42663 
42664 
42665  // JH (10/24/2005): methods added to support the ast file IO
42666  private:
42667 
42668  /* name AST Memory Allocation Support Functions
42669  \brief Memory allocations support....
42670 
42671  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
42672  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
42673  and support the AST File I/O Mechanism.
42674  */
42675  /* */
42676 
42677  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
42678  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
42679  that I use the same type everywhere, if any changes are made. THe second one declares the type
42680  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
42681  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
42682  a correspinding one in the AST_FILE_IO class!
42683  */
42684  // DQ (9/2/2015): This typedef is no longer used, we can't define the
42685  // comment here (changed to be a C style comment and not be a doxygen comment).
42686  /* \brief Typedef used for low level memory access.
42687  */
42688  // typedef unsigned char* TestType;
42689 
42690  // DQ (9/2/2015): This typedef is no longer used, we can't define the
42691  // comment here (changed to be a C style comment and not be a doxygen comment).
42692  /* \brief Typedef used to hold memory addresses as values.
42693  */
42694  // typedef unsigned long AddressType;
42695 
42696 
42697 
42698  // necessary, to have direct access to the p_freepointer and the private methods !
42700  friend class AST_FILE_IO;
42701 
42703  friend class SgIncludeFileStorageClass;
42704 
42706  friend class AstSpecificDataManagingClass;
42707 
42709  friend class AstSpecificDataManagingClassStorageClass;
42710 
42711  public:
42713  SgIncludeFile( const SgIncludeFileStorageClass& source );
42714 
42715  // private: // JJW hack
42716  /*
42717  name AST Memory Allocation Support Variables
42718  Memory allocations support variables
42719 
42720  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
42721  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
42722  and support the AST File I/O Mechanism.
42723  */
42724  /* */
42725 
42726  public:
42727 
42728  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
42729  // to current node (so that it will work cleanly with build functions to specify patterns).
42730  // virtual SgNode* addRegExpAttribute();
42737 
42738 // *** COMMON CODE SECTION ENDS HERE ***
42739 
42740 
42741 // End of memberFunctionString
42742 // Start of memberFunctionString
42743 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
42744 
42745  // the generated cast function
42746  // friend ROSE_DLL_API SgIncludeFile* isSgIncludeFile ( SgNode* s );
42747 
42748  typedef SgSupport base_node_type;
42749 
42750 
42751 // End of memberFunctionString
42752 
42753  public:
42754  SgName get_filename() const;
42755  void set_filename(SgName filename);
42756 
42757  public:
42758  SgSourceFile* get_source_file() const;
42759  void set_source_file(SgSourceFile* source_file);
42760 
42761  public:
42762  const SgIncludeFilePtrList& get_include_file_list() const;
42763  SgIncludeFilePtrList& get_include_file_list();
42764 
42765  public:
42766  unsigned int get_first_source_sequence_number() const;
42767  void set_first_source_sequence_number(unsigned int first_source_sequence_number);
42768 
42769  public:
42770  unsigned int get_last_source_sequence_number() const;
42771  void set_last_source_sequence_number(unsigned int last_source_sequence_number);
42772 
42773  public:
42774  bool get_isIncludedMoreThanOnce() const;
42775  void set_isIncludedMoreThanOnce(bool isIncludedMoreThanOnce);
42776 
42777  public:
42778  bool get_isPrimaryUse() const;
42779  void set_isPrimaryUse(bool isPrimaryUse);
42780 
42781  public:
42782  std::string get_file_hash() const;
42783  void set_file_hash(std::string file_hash);
42784 
42785  public:
42786  SgName get_name_used_in_include_directive() const;
42787  void set_name_used_in_include_directive(SgName name_used_in_include_directive);
42788 
42789  public:
42790  SgSourceFile* get_source_file_of_translation_unit() const;
42791  void set_source_file_of_translation_unit(SgSourceFile* source_file_of_translation_unit);
42792 
42793  public:
42794  SgSourceFile* get_including_source_file() const;
42795  void set_including_source_file(SgSourceFile* including_source_file);
42796 
42797  public:
42798  SgIncludeFile* get_parent_include_file() const;
42799  void set_parent_include_file(SgIncludeFile* parent_include_file);
42800 
42801  public:
42802  bool get_isSystemInclude() const;
42803  void set_isSystemInclude(bool isSystemInclude);
42804 
42805  public:
42806  bool get_isPreinclude() const;
42807  void set_isPreinclude(bool isPreinclude);
42808 
42809  public:
42810  bool get_requires_explict_path_for_unparsed_headers() const;
42811  void set_requires_explict_path_for_unparsed_headers(bool requires_explict_path_for_unparsed_headers);
42812 
42813  public:
42814  bool get_can_be_supported_using_token_based_unparsing() const;
42815  void set_can_be_supported_using_token_based_unparsing(bool can_be_supported_using_token_based_unparsing);
42816 
42817  public:
42818  SgName get_directory_prefix() const;
42819  void set_directory_prefix(SgName directory_prefix);
42820 
42821  public:
42822  SgName get_name_without_path() const;
42823  void set_name_without_path(SgName name_without_path);
42824 
42825  public:
42826  SgName get_applicationRootDirectory() const;
42827  void set_applicationRootDirectory(SgName applicationRootDirectory);
42828 
42829  public:
42830  bool get_will_be_unparsed() const;
42831  void set_will_be_unparsed(bool will_be_unparsed);
42832 
42833  public:
42834  bool get_isRoseSystemInclude() const;
42835  void set_isRoseSystemInclude(bool isRoseSystemInclude);
42836 
42837  public:
42838  bool get_from_system_include_dir() const;
42839  void set_from_system_include_dir(bool from_system_include_dir);
42840 
42841  public:
42842  bool get_preinclude_macros_only() const;
42843  void set_preinclude_macros_only(bool preinclude_macros_only);
42844 
42845  public:
42846  bool get_isApplicationFile() const;
42847  void set_isApplicationFile(bool isApplicationFile);
42848 
42849  public:
42850  bool get_isRootSourceFile() const;
42851  void set_isRootSourceFile(bool isRootSourceFile);
42852 
42853  public:
42854  SgStatement* get_firstStatement() const;
42855  void set_firstStatement(SgStatement* firstStatement);
42856 
42857  public:
42858  SgStatement* get_lastStatement() const;
42859  void set_lastStatement(SgStatement* lastStatement);
42860 
42861 
42862  public:
42863  virtual ~SgIncludeFile();
42864 
42865 
42866  public:
42867  SgIncludeFile(SgName filename = "");
42868 
42869  protected:
42870 // Start of memberFunctionString
42871 SgName p_filename;
42872 
42873 // End of memberFunctionString
42874 // Start of memberFunctionString
42875 SgSourceFile* p_source_file;
42876 
42877 // End of memberFunctionString
42878 // Start of memberFunctionString
42879 SgIncludeFilePtrList p_include_file_list;
42880 
42881 // End of memberFunctionString
42882 // Start of memberFunctionString
42883 unsigned int p_first_source_sequence_number;
42884 
42885 // End of memberFunctionString
42886 // Start of memberFunctionString
42887 unsigned int p_last_source_sequence_number;
42888 
42889 // End of memberFunctionString
42890 // Start of memberFunctionString
42891 bool p_isIncludedMoreThanOnce;
42892 
42893 // End of memberFunctionString
42894 // Start of memberFunctionString
42895 bool p_isPrimaryUse;
42896 
42897 // End of memberFunctionString
42898 // Start of memberFunctionString
42899 std::string p_file_hash;
42900 
42901 // End of memberFunctionString
42902 // Start of memberFunctionString
42903 SgName p_name_used_in_include_directive;
42904 
42905 // End of memberFunctionString
42906 // Start of memberFunctionString
42907 SgSourceFile* p_source_file_of_translation_unit;
42908 
42909 // End of memberFunctionString
42910 // Start of memberFunctionString
42911 SgSourceFile* p_including_source_file;
42912 
42913 // End of memberFunctionString
42914 // Start of memberFunctionString
42915 SgIncludeFile* p_parent_include_file;
42916 
42917 // End of memberFunctionString
42918 // Start of memberFunctionString
42919 bool p_isSystemInclude;
42920 
42921 // End of memberFunctionString
42922 // Start of memberFunctionString
42923 bool p_isPreinclude;
42924 
42925 // End of memberFunctionString
42926 // Start of memberFunctionString
42927 bool p_requires_explict_path_for_unparsed_headers;
42928 
42929 // End of memberFunctionString
42930 // Start of memberFunctionString
42931 bool p_can_be_supported_using_token_based_unparsing;
42932 
42933 // End of memberFunctionString
42934 // Start of memberFunctionString
42935 SgName p_directory_prefix;
42936 
42937 // End of memberFunctionString
42938 // Start of memberFunctionString
42939 SgName p_name_without_path;
42940 
42941 // End of memberFunctionString
42942 // Start of memberFunctionString
42943 SgName p_applicationRootDirectory;
42944 
42945 // End of memberFunctionString
42946 // Start of memberFunctionString
42947 bool p_will_be_unparsed;
42948 
42949 // End of memberFunctionString
42950 // Start of memberFunctionString
42951 bool p_isRoseSystemInclude;
42952 
42953 // End of memberFunctionString
42954 // Start of memberFunctionString
42955 bool p_from_system_include_dir;
42956 
42957 // End of memberFunctionString
42958 // Start of memberFunctionString
42959 bool p_preinclude_macros_only;
42960 
42961 // End of memberFunctionString
42962 // Start of memberFunctionString
42963 bool p_isApplicationFile;
42964 
42965 // End of memberFunctionString
42966 // Start of memberFunctionString
42967 bool p_isRootSourceFile;
42968 
42969 // End of memberFunctionString
42970 // Start of memberFunctionString
42971 SgStatement* p_firstStatement;
42972 
42973 // End of memberFunctionString
42974 // Start of memberFunctionString
42975 SgStatement* p_lastStatement;
42976 
42977 // End of memberFunctionString
42978 
42979 
42980 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
42981 
42982 
42983  };
42984 #endif
42985 
42986 // postdeclarations for SgIncludeFile
42987 
42988 /* #line 42989 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
42989 
42990 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
42991 
42992 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
42993 
42994 
42995 /* #line 42996 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
42996 
42997 
42998 
42999 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
43000 
43001 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
43002 // This code is automatically generated for each
43003 // terminal and non-terminal within the defined
43004 // grammar. There is a simple way to change the
43005 // code to fix bugs etc. See the ROSE README file
43006 // for directions.
43007 
43008 // tps: (02/22/2010): Adding DLL export requirements
43009 #include "rosedll.h"
43010 
43011 // predeclarations for SgDataStatementValue
43012 
43013 /* #line 43014 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
43014 
43015 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
43016 
43017 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
43018 
43019 #if 1
43020 // Class Definition for SgDataStatementValue
43021 class ROSE_DLL_API SgDataStatementValue : public SgSupport
43022  {
43023  public:
43024 
43025 
43026 /* #line 43027 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
43027 
43028  virtual SgNode* copy ( SgCopyHelp& help) const override;
43029 // Start of memberFunctionString
43030 /* #line 2401 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
43031 
43032 
43035  {
43036  e_unknown = 0,
43037  e_default = 1,
43038  e_explict_list = 2,
43039  e_implicit_list = 3,
43040  e_implied_do = 4,
43041  e_last_initializer_form
43042  };
43043 
43044  void post_construction_initialization() override;
43045 
43046 
43047 
43048 // End of memberFunctionString
43049 // Start of memberFunctionString
43050 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
43051 
43052 // *** COMMON CODE SECTION BEGINS HERE ***
43053 
43054  public:
43055 
43056  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
43057  // and not required which is required to match the other aspects of the copy mechanism code generation.
43058  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
43059  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
43060  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
43061  // virtual SgNode* copy ( const SgCopyHelp & help) const;
43062 
43064  virtual std::string class_name() const override;
43065 
43067  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
43068 
43070  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
43071  // static const VariantT static_variant = V_SgDataStatementValue;
43072  enum { static_variant = V_SgDataStatementValue };
43073 
43074  /* the generated cast function */
43076  ROSE_DLL_API friend SgDataStatementValue* isSgDataStatementValue( SgNode * s );
43077 
43079  ROSE_DLL_API friend const SgDataStatementValue* isSgDataStatementValue( const SgNode * s );
43080 
43081  // ******************************************
43082  // * Memory Pool / New / Delete
43083  // ******************************************
43084 
43085  public:
43087  static const unsigned pool_size; //
43089  static std::vector<unsigned char *> pools; //
43091  static SgDataStatementValue * next_node; //
43092 
43094  static unsigned long initializeStorageClassArray(SgDataStatementValueStorageClass *); //
43095 
43097  static void clearMemoryPool(); //
43098  static void deleteMemoryPool(); //
43099 
43101  static void extendMemoryPoolForFileIO(); //
43102 
43104  static SgDataStatementValue * getPointerFromGlobalIndex(unsigned long); //
43106  static SgDataStatementValue * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
43107 
43109  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
43111  static void resetValidFreepointers(); //
43113  static unsigned long getNumberOfLastValidPointer(); //
43114 
43115 
43116 #if defined(INLINE_FUNCTIONS)
43117 
43118  inline void *operator new (size_t size);
43119 #else
43120 
43121  void *operator new (size_t size);
43122 #endif
43123 
43124  void operator delete (void* pointer, size_t size);
43125 
43126  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
43127  void operator delete (void* pointer)
43128  {
43129  // This is the generated delete operator...
43130  SgDataStatementValue::operator delete (pointer,sizeof(SgDataStatementValue));
43131  }
43132 
43134  static size_t numberOfNodes();
43135 
43137  static size_t memoryUsage();
43138 
43139  // End of scope which started in IR nodes specific code
43140  /* */
43141 
43142  /* name Internal Functions
43143  \brief Internal functions ... incomplete-documentation
43144 
43145  These functions have been made public as part of the design, but they are suggested for internal use
43146  or by particularly knowledgeable users for specialized tools or applications.
43147 
43148  \internal We could not make these private because they are required by user for special purposes. And
43149  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
43150 
43151  */
43152 
43153  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
43154  // overridden in every class by *generated* implementation
43156  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
43157  // MS: 06/28/02 container of names of variables or container indices
43158  // used used in the traversal to access AST successor nodes
43159  // overridden in every class by *generated* implementation
43162  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
43163 
43164  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
43165  // than all the vector copies. The implementation for these functions is generated for each class.
43167  virtual size_t get_numberOfTraversalSuccessors() override;
43169  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
43171  virtual size_t get_childIndex(SgNode *child) override;
43172 
43173 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
43174  // MS: 08/16/2002 method for generating RTI information
43176  virtual RTIReturnType roseRTI() override;
43177 #endif
43178  /* */
43179 
43180 
43181 
43182  /* name Deprecated Functions
43183  \brief Deprecated functions ... incomplete-documentation
43184 
43185  These functions have been deprecated from use.
43186  */
43187  /* */
43188 
43190  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
43191 
43192  // JJW (10/16/2008): Changed to a single function in Node.code, and put
43193  // getVariant() in #if 0 block to prevent confusing Doxygen
43194 #if 0
43195 
43196  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
43198  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
43199 #endif
43200  /* */
43201 
43202 
43203 
43204 
43205  public:
43206  /* name Traversal Support Functions
43207  \brief Traversal support functions ... incomplete-documentation
43208 
43209  These functions have been made public as part of the design, but they are suggested for internal use
43210  or by particularly knowledgable users for specialized tools or applications.
43211  */
43212  /* */
43213 
43214  // DQ (11/26/2005): Support for visitor pattern mechanims
43215  // (inferior to ROSE traversal mechanism, experimental).
43219 
43220  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
43222  virtual void accept (ROSE_VisitorPattern & visitor) override;
43223 
43224  // DQ (12/26/2005): Support for traversal based on the memory pool
43227  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
43228 
43232 
43233  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
43234  // This traversal helps support internal tools that call static member functions.
43235  // note: this function operates on the memory pools.
43238  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
43239  /* */
43240 
43241 
43242  public:
43243  /* name Memory Allocation Functions
43244  \brief Memory allocations functions ... incomplete-documentation
43245 
43246  These functions have been made public as part of the design, but they are suggested for internal use
43247  or by particularly knowledgable users for specialized tools or applications.
43248  */
43249  /* */
43250 
43261  virtual bool isInMemoryPool() override;
43262 
43273  virtual void checkDataMemberPointersIfInMemoryPool() override;
43274 
43275  // DQ (4/30/2006): Modified to be a const function.
43290  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
43291 
43301  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
43302 
43314  virtual long getChildIndex( SgNode* childNode ) const override;
43315 
43316  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
43317  // comment here (changed to be a C style comment and not be a doxygen comment).
43318  /* \brief Constructor for use by AST File I/O Mechanism
43319 
43320  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
43321  which obtained via fast binary file I/O from disk.
43322  */
43323  // SgDataStatementValue( SgDataStatementValueStorageClass& source );
43324 
43325 
43326 
43327 
43328 
43329  // JH (10/24/2005): methods added to support the ast file IO
43330  private:
43331 
43332  /* name AST Memory Allocation Support Functions
43333  \brief Memory allocations support....
43334 
43335  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
43336  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
43337  and support the AST File I/O Mechanism.
43338  */
43339  /* */
43340 
43341  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
43342  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
43343  that I use the same type everywhere, if any changes are made. THe second one declares the type
43344  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
43345  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
43346  a correspinding one in the AST_FILE_IO class!
43347  */
43348  // DQ (9/2/2015): This typedef is no longer used, we can't define the
43349  // comment here (changed to be a C style comment and not be a doxygen comment).
43350  /* \brief Typedef used for low level memory access.
43351  */
43352  // typedef unsigned char* TestType;
43353 
43354  // DQ (9/2/2015): This typedef is no longer used, we can't define the
43355  // comment here (changed to be a C style comment and not be a doxygen comment).
43356  /* \brief Typedef used to hold memory addresses as values.
43357  */
43358  // typedef unsigned long AddressType;
43359 
43360 
43361 
43362  // necessary, to have direct access to the p_freepointer and the private methods !
43364  friend class AST_FILE_IO;
43365 
43367  friend class SgDataStatementValueStorageClass;
43368 
43370  friend class AstSpecificDataManagingClass;
43371 
43373  friend class AstSpecificDataManagingClassStorageClass;
43374 
43375  public:
43377  SgDataStatementValue( const SgDataStatementValueStorageClass& source );
43378 
43379  // private: // JJW hack
43380  /*
43381  name AST Memory Allocation Support Variables
43382  Memory allocations support variables
43383 
43384  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
43385  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
43386  and support the AST File I/O Mechanism.
43387  */
43388  /* */
43389 
43390  public:
43391 
43392  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
43393  // to current node (so that it will work cleanly with build functions to specify patterns).
43394  // virtual SgNode* addRegExpAttribute();
43401 
43402 // *** COMMON CODE SECTION ENDS HERE ***
43403 
43404 
43405 // End of memberFunctionString
43406 // Start of memberFunctionString
43407 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
43408 
43409  // the generated cast function
43410  // friend ROSE_DLL_API SgDataStatementValue* isSgDataStatementValue ( SgNode* s );
43411 
43412  typedef SgSupport base_node_type;
43413 
43414 
43415 // End of memberFunctionString
43416 
43417  public:
43418  SgDataStatementValue::data_statement_value_enum get_data_initialization_format() const;
43419  void set_data_initialization_format(SgDataStatementValue::data_statement_value_enum data_initialization_format);
43420 
43421  public:
43422  SgExprListExp* get_initializer_list() const;
43423  void set_initializer_list(SgExprListExp* initializer_list);
43424 
43425  public:
43426  SgExpression* get_repeat_expression() const;
43427  void set_repeat_expression(SgExpression* repeat_expression);
43428 
43429  public:
43430  SgExpression* get_constant_expression() const;
43431  void set_constant_expression(SgExpression* constant_expression);
43432 
43433 
43434  public:
43435  virtual ~SgDataStatementValue();
43436 
43437 
43438  public:
43440 
43441  protected:
43442 // Start of memberFunctionString
43443 SgDataStatementValue::data_statement_value_enum p_data_initialization_format;
43444 
43445 // End of memberFunctionString
43446 // Start of memberFunctionString
43447 SgExprListExp* p_initializer_list;
43448 
43449 // End of memberFunctionString
43450 // Start of memberFunctionString
43451 SgExpression* p_repeat_expression;
43452 
43453 // End of memberFunctionString
43454 // Start of memberFunctionString
43455 SgExpression* p_constant_expression;
43456 
43457 // End of memberFunctionString
43458 
43459 
43460 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
43461 
43462 
43463  };
43464 #endif
43465 
43466 // postdeclarations for SgDataStatementValue
43467 
43468 /* #line 43469 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
43469 
43470 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
43471 
43472 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
43473 
43474 
43475 /* #line 43476 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
43476 
43477 
43478 
43479 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
43480 
43481 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
43482 // This code is automatically generated for each
43483 // terminal and non-terminal within the defined
43484 // grammar. There is a simple way to change the
43485 // code to fix bugs etc. See the ROSE README file
43486 // for directions.
43487 
43488 // tps: (02/22/2010): Adding DLL export requirements
43489 #include "rosedll.h"
43490 
43491 // predeclarations for SgHeaderFileReport
43492 
43493 /* #line 43494 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
43494 
43495 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
43496 
43497 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
43498 
43499 #if 1
43500 // Class Definition for SgHeaderFileReport
43501 class ROSE_DLL_API SgHeaderFileReport : public SgSupport
43502  {
43503  public:
43504 
43505 
43506 /* #line 43507 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
43507 
43508  virtual SgNode* copy ( SgCopyHelp& help) const override;
43509 // Start of memberFunctionString
43510 /* #line 6629 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
43511 
43512  private:
43513  // Define these as private so that we can control and/or eliminate their use.
43514  // SgHeaderFileReport( const SgHeaderFileReport & X );
43515  // SgHeaderFileReport & operator= ( const SgHeaderFileReport & X );
43516 
43517  public:
43518  void display( const std::string & label) const;
43519 
43520  // SgHeaderFileReport( SgSourceFile* sourceFile );
43521 
43522 
43523 
43524 // End of memberFunctionString
43525 // Start of memberFunctionString
43526 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
43527 
43528 // *** COMMON CODE SECTION BEGINS HERE ***
43529 
43530  public:
43531 
43532  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
43533  // and not required which is required to match the other aspects of the copy mechanism code generation.
43534  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
43535  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
43536  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
43537  // virtual SgNode* copy ( const SgCopyHelp & help) const;
43538 
43540  virtual std::string class_name() const override;
43541 
43543  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
43544 
43546  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
43547  // static const VariantT static_variant = V_SgHeaderFileReport;
43548  enum { static_variant = V_SgHeaderFileReport };
43549 
43550  /* the generated cast function */
43552  ROSE_DLL_API friend SgHeaderFileReport* isSgHeaderFileReport( SgNode * s );
43553 
43555  ROSE_DLL_API friend const SgHeaderFileReport* isSgHeaderFileReport( const SgNode * s );
43556 
43557  // ******************************************
43558  // * Memory Pool / New / Delete
43559  // ******************************************
43560 
43561  public:
43563  static const unsigned pool_size; //
43565  static std::vector<unsigned char *> pools; //
43567  static SgHeaderFileReport * next_node; //
43568 
43570  static unsigned long initializeStorageClassArray(SgHeaderFileReportStorageClass *); //
43571 
43573  static void clearMemoryPool(); //
43574  static void deleteMemoryPool(); //
43575 
43577  static void extendMemoryPoolForFileIO(); //
43578 
43580  static SgHeaderFileReport * getPointerFromGlobalIndex(unsigned long); //
43582  static SgHeaderFileReport * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
43583 
43585  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
43587  static void resetValidFreepointers(); //
43589  static unsigned long getNumberOfLastValidPointer(); //
43590 
43591 
43592 #if defined(INLINE_FUNCTIONS)
43593 
43594  inline void *operator new (size_t size);
43595 #else
43596 
43597  void *operator new (size_t size);
43598 #endif
43599 
43600  void operator delete (void* pointer, size_t size);
43601 
43602  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
43603  void operator delete (void* pointer)
43604  {
43605  // This is the generated delete operator...
43606  SgHeaderFileReport::operator delete (pointer,sizeof(SgHeaderFileReport));
43607  }
43608 
43610  static size_t numberOfNodes();
43611 
43613  static size_t memoryUsage();
43614 
43615  // End of scope which started in IR nodes specific code
43616  /* */
43617 
43618  /* name Internal Functions
43619  \brief Internal functions ... incomplete-documentation
43620 
43621  These functions have been made public as part of the design, but they are suggested for internal use
43622  or by particularly knowledgeable users for specialized tools or applications.
43623 
43624  \internal We could not make these private because they are required by user for special purposes. And
43625  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
43626 
43627  */
43628 
43629  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
43630  // overridden in every class by *generated* implementation
43632  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
43633  // MS: 06/28/02 container of names of variables or container indices
43634  // used used in the traversal to access AST successor nodes
43635  // overridden in every class by *generated* implementation
43638  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
43639 
43640  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
43641  // than all the vector copies. The implementation for these functions is generated for each class.
43643  virtual size_t get_numberOfTraversalSuccessors() override;
43645  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
43647  virtual size_t get_childIndex(SgNode *child) override;
43648 
43649 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
43650  // MS: 08/16/2002 method for generating RTI information
43652  virtual RTIReturnType roseRTI() override;
43653 #endif
43654  /* */
43655 
43656 
43657 
43658  /* name Deprecated Functions
43659  \brief Deprecated functions ... incomplete-documentation
43660 
43661  These functions have been deprecated from use.
43662  */
43663  /* */
43664 
43666  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
43667 
43668  // JJW (10/16/2008): Changed to a single function in Node.code, and put
43669  // getVariant() in #if 0 block to prevent confusing Doxygen
43670 #if 0
43671 
43672  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
43674  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
43675 #endif
43676  /* */
43677 
43678 
43679 
43680 
43681  public:
43682  /* name Traversal Support Functions
43683  \brief Traversal support functions ... incomplete-documentation
43684 
43685  These functions have been made public as part of the design, but they are suggested for internal use
43686  or by particularly knowledgable users for specialized tools or applications.
43687  */
43688  /* */
43689 
43690  // DQ (11/26/2005): Support for visitor pattern mechanims
43691  // (inferior to ROSE traversal mechanism, experimental).
43695 
43696  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
43698  virtual void accept (ROSE_VisitorPattern & visitor) override;
43699 
43700  // DQ (12/26/2005): Support for traversal based on the memory pool
43703  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
43704 
43708 
43709  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
43710  // This traversal helps support internal tools that call static member functions.
43711  // note: this function operates on the memory pools.
43714  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
43715  /* */
43716 
43717 
43718  public:
43719  /* name Memory Allocation Functions
43720  \brief Memory allocations functions ... incomplete-documentation
43721 
43722  These functions have been made public as part of the design, but they are suggested for internal use
43723  or by particularly knowledgable users for specialized tools or applications.
43724  */
43725  /* */
43726 
43737  virtual bool isInMemoryPool() override;
43738 
43749  virtual void checkDataMemberPointersIfInMemoryPool() override;
43750 
43751  // DQ (4/30/2006): Modified to be a const function.
43766  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
43767 
43777  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
43778 
43790  virtual long getChildIndex( SgNode* childNode ) const override;
43791 
43792  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
43793  // comment here (changed to be a C style comment and not be a doxygen comment).
43794  /* \brief Constructor for use by AST File I/O Mechanism
43795 
43796  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
43797  which obtained via fast binary file I/O from disk.
43798  */
43799  // SgHeaderFileReport( SgHeaderFileReportStorageClass& source );
43800 
43801 
43802 
43803 
43804 
43805  // JH (10/24/2005): methods added to support the ast file IO
43806  private:
43807 
43808  /* name AST Memory Allocation Support Functions
43809  \brief Memory allocations support....
43810 
43811  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
43812  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
43813  and support the AST File I/O Mechanism.
43814  */
43815  /* */
43816 
43817  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
43818  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
43819  that I use the same type everywhere, if any changes are made. THe second one declares the type
43820  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
43821  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
43822  a correspinding one in the AST_FILE_IO class!
43823  */
43824  // DQ (9/2/2015): This typedef is no longer used, we can't define the
43825  // comment here (changed to be a C style comment and not be a doxygen comment).
43826  /* \brief Typedef used for low level memory access.
43827  */
43828  // typedef unsigned char* TestType;
43829 
43830  // DQ (9/2/2015): This typedef is no longer used, we can't define the
43831  // comment here (changed to be a C style comment and not be a doxygen comment).
43832  /* \brief Typedef used to hold memory addresses as values.
43833  */
43834  // typedef unsigned long AddressType;
43835 
43836 
43837 
43838  // necessary, to have direct access to the p_freepointer and the private methods !
43840  friend class AST_FILE_IO;
43841 
43843  friend class SgHeaderFileReportStorageClass;
43844 
43846  friend class AstSpecificDataManagingClass;
43847 
43849  friend class AstSpecificDataManagingClassStorageClass;
43850 
43851  public:
43853  SgHeaderFileReport( const SgHeaderFileReportStorageClass& source );
43854 
43855  // private: // JJW hack
43856  /*
43857  name AST Memory Allocation Support Variables
43858  Memory allocations support variables
43859 
43860  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
43861  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
43862  and support the AST File I/O Mechanism.
43863  */
43864  /* */
43865 
43866  public:
43867 
43868  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
43869  // to current node (so that it will work cleanly with build functions to specify patterns).
43870  // virtual SgNode* addRegExpAttribute();
43877 
43878 // *** COMMON CODE SECTION ENDS HERE ***
43879 
43880 
43881 // End of memberFunctionString
43882 // Start of memberFunctionString
43883 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
43884 
43885  // the generated cast function
43886  // friend ROSE_DLL_API SgHeaderFileReport* isSgHeaderFileReport ( SgNode* s );
43887 
43888  typedef SgSupport base_node_type;
43889 
43890 
43891 // End of memberFunctionString
43892 
43893  public:
43894  SgSourceFile* get_source_file() const;
43895  void set_source_file(SgSourceFile* source_file);
43896 
43897  public:
43898  const SgSourceFilePtrList& get_include_file_list() const;
43899  SgSourceFilePtrList& get_include_file_list();
43900 
43901 
43902  public:
43903  virtual ~SgHeaderFileReport();
43904 
43905 
43906  public:
43907  SgHeaderFileReport(SgSourceFile* source_file = NULL);
43908 
43909  protected:
43910 // Start of memberFunctionString
43911 SgSourceFile* p_source_file;
43912 
43913 // End of memberFunctionString
43914 // Start of memberFunctionString
43915 SgSourceFilePtrList p_include_file_list;
43916 
43917 // End of memberFunctionString
43918 
43919 
43920 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
43921 
43922 
43923  };
43924 #endif
43925 
43926 // postdeclarations for SgHeaderFileReport
43927 
43928 /* #line 43929 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
43929 
43930 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
43931 
43932 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
43933 
43934 
43935 /* #line 43936 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
43936 
43937 
43938 
43939 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
43940 
43941 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
43942 // This code is automatically generated for each
43943 // terminal and non-terminal within the defined
43944 // grammar. There is a simple way to change the
43945 // code to fix bugs etc. See the ROSE README file
43946 // for directions.
43947 
43948 // tps: (02/22/2010): Adding DLL export requirements
43949 #include "rosedll.h"
43950 
43951 // predeclarations for SgType
43952 
43953 /* #line 43954 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
43954 
43955 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
43956 
43957 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
43958 
43959 #if 1
43960 // Class Definition for SgType
43961 class ROSE_DLL_API SgType : public SgNode
43962  {
43963  public:
43964 
43965 
43966 /* #line 43967 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
43967 
43968  virtual SgNode* copy ( SgCopyHelp& help) const override;
43969 // Start of memberFunctionString
43970 /* #line 7 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
43971 
43972 
43973  /* This class forms a base class for all of the types represented in the C++ grammar.
43974  All types are derived from this class and thus contain the following functionality.
43975  */
43976 
43977  public:
43978  /*
43979  \if documentDevelopmentVersionUsingDoxygen
43980  name Friend Classes
43981  \brief Friend classes declarations
43982 
43983  \endif
43984  */
43985  friend class SgPointerType;
43986  friend class SgReferenceType;
43987  friend class SgRvalueReferenceType;
43988  friend class SgDeclType;
43989  friend class SgTypedefType;
43990  friend class SgTypeOfType;
43991 
43993  public:
44002  SgType();
44003 
44009  SgType(const SgType & X);
44010 
44011  // RV (1/30/2006)
44015  virtual SgName get_mangled (void) const;
44016 
44017  // SKW (3/1/2011): Added these explicit declarations since we no longer build them automatically
44018  virtual SgExpression * get_type_kind () const;
44019  virtual void set_type_kind ( SgExpression* type_kind );
44020 
44029  bool isUnsignedType() const;
44030  bool isIntegerType() const;
44031  bool isFloatType() const;
44032 
44033  // DQ (4/20/2019): Added support to detect primative types (which don't require name qualification).
44034  bool isPrimativeType() const;
44035 
44037  // DQ (10/11/2007): These sorts of values are usually handled as enum fields in ROSE. They could be redone at some point.
44038  // PC and AS new variables to support a flexible stripType() which takes an bit array as a paramater
44039  static const unsigned char STRIP_MODIFIER_TYPE = ((unsigned char) 1 << 0); // 0x01
44040  static const unsigned char STRIP_REFERENCE_TYPE = ((unsigned char) 1 << 1); // 0x02
44041  static const unsigned char STRIP_RVALUE_REFERENCE_TYPE = ((unsigned char) 1 << 2); // 0x04
44042  static const unsigned char STRIP_POINTER_TYPE = ((unsigned char) 1 << 3); // 0x08
44043  static const unsigned char STRIP_ARRAY_TYPE = ((unsigned char) 1 << 4); // 0x16
44044  static const unsigned char STRIP_TYPEDEF_TYPE = ((unsigned char) 1 << 5); // 0x32
44045 
44046  // DQ (4/15/2019): Adding specific support for pointer to member (SgPointerMemberType) since we don't always
44047  // want to strip it and we need better control over this. Since SgPointerMemberType is derived from SgPointerType
44048  // (which might be a design mistake) it was handled along with SgPointer but for name qualification we need the
44049  // stripType function to have greater expresiveness.
44050  static const unsigned char STRIP_POINTER_MEMBER_TYPE = ((unsigned char) 1 << 6); // 0x64
44051 
44060  bool hasExplicitType();
44061 
44068  bool containsInternalTypes();
44069 
44076  Rose_STL_Container<SgType*> getInternalTypes() const;
44077 
44081  void reset_base_type(SgType* baseType);
44082 
44086  SgType* findBaseType() const;
44087 
44088  SgType * dereference();
44089  const SgType * dereference() const ;
44090 
44091  // DQ (6/21/2005): Added to support getting a deeply nested types quickly and easily.
44093  // SgType* stripType(unsigned char bit_array = STRIP_MODIFIER_TYPE | STRIP_REFERENCE_TYPE | STRIP_RVALUE_REFERENCE_TYPE | STRIP_POINTER_TYPE | STRIP_ARRAY_TYPE | STRIP_TYPEDEF_TYPE ) const;
44094  SgType* stripType(unsigned char bit_array = STRIP_MODIFIER_TYPE | STRIP_REFERENCE_TYPE | STRIP_RVALUE_REFERENCE_TYPE |
44095  STRIP_POINTER_TYPE | STRIP_ARRAY_TYPE | STRIP_TYPEDEF_TYPE | STRIP_POINTER_MEMBER_TYPE ) const;
44096 
44097  // DQ (6/30/2005): Added to support invistigation of hidden types
44100 
44101  // DQ (6/30/2005): Would these functions also be useful?
44102  // SgType* stripTypedefs() const;
44103  // SgType* stripModifiers() const;
44104 
44105  // DQ (7/26/2010): Now we finally need this function!
44106  // Generates a new SgModifierType with modifiers set according to input parameter.
44107  // SgModifierType* matchModifiers(unsigned int f);
44108 
44109  // void printName(SgUnparse_Info& ui, ostream& os);
44110 
44111 #if 0
44112  // This codes was part of an experiment to distinguish struct tag { int x; } X; from struct tag X;
44113  // It turns out that the declaration of the tag in this case in placed into the EDG orphan list
44114  // as a type and that we don't require this mechanism (thought we might in the future so for now
44115  // it is just commented out.
44116 
44117  // DQ Added to support unparsing of autonomous declarations
44118  // Support for variable declearations where the type is explicitly defined as a structure
44119  enum useWithinDeclarationEnum {
44120  // handle cases of struct B btag { int x; } b_1st; and struct btag b_2nd;
44121  e_first_declaration = 0x00000001,
44122  // distinguish between B { int x; } b; and B btag { int x; } b;
44123  e_autonomous_tag_declaration = 0x00000002
44124  };
44125  useWithinDeclarationEnum p_useWithinDeclaration;
44126 
44127  // These are for support of the useWithinDeclaration variable
44128  bool isFirstDeclaration() const;
44129  void setFirstDeclaration();
44130  void unsetFirstDeclaration();
44131  bool isAutonomousTagDeclaration() const;
44132  void setAutonomousTagDeclaration();
44133  void unsetAutonomousTagDeclaration();
44134 #endif
44135 
44136  // DQ (9/7/2007): Support for Fortran attribute specifiers
44137  enum fortran_attribute_specifiers_enum
44138  {
44139  e_unknown_attribute_specifier = 0,
44140  e_public_access,
44141  e_private_access,
44142  e_allocatable,
44143  e_asynchronous,
44144  e_bind,
44145  e_data,
44146  e_dimension,
44147  e_intent,
44148  e_optional,
44149  e_parameter,
44150  e_pointer,
44151  e_protected,
44152  e_save,
44153  e_target,
44154  e_value,
44155  e_volatile,
44156  e_last_attribute_specifier
44157  };
44158 
44159 
44160 
44161  /*
44162  name Conversion Functions
44163  \brief Simple conversion functions.
44164  \internal Not sure these are useful when using the string interface.
44165  */
44167  static SgType * arithmetic_conversions(SgType *, SgType *);
44168 
44170  static SgType * integer_promotion (SgType *, SgType *);
44171 
44173  static SgType * float_promotion (SgType *, SgType *);
44176  // DQ (4/27/2005): Added protected function to support refactored code for name mangling
44177  protected:
44180 
44181  public:
44182 
44183  // DQ (7/24/2010): Added static function to distiquish which types (very few) are
44184  // required to use the local type table for types built during AST construction.
44185  // This is required to support that we don't always know the scope of a type while
44186  // it is being constructed (while it's declarations are being constructed).
44187  static bool handledUsingLocalTable( SgType* t );
44188 
44189  // DQ (7/30/2010): This function gets the scope from either the C/C++ or Fortran
44190  // procesing so that the local type table in each scope can be referenced.
44191  static SgScopeStatement* getCurrentScope();
44192 
44193  SgDeclarationStatement* getAssociatedDeclaration() const;
44194 
44195 #if 0
44196  // DQ (11/28/2015): This has been moved from the SgModifierType class to the SgType class since it is a general requirement.
44197  // DQ (11/28/2015): Adding operator==() function to use in symbol table lookup when template
44198  // arguments or parameters resolve to SgModifierType and we need to know if it is the same type.
44199  // One might expect that with type tables they would only be the same if there were the same
44200  // pointer, but I think this is not alwasy true for SgModifierType nodes.
44201  // bool operator== (const SgType & Y) const;
44202 #endif
44203  // DQ (12/8/2015): Insead of the operator==(), we require a more nuanced approach.
44204  // There are concepts of type equivalence (where for example a typedef of an int would
44205  // be the same type as the int) and type intechangablity, where two equivalent types will
44206  // can be substituted for each other (which might not be possible if one of them has
44207  // only private access permissions.
44209  bool isEquivalentType (const SgType * other_type) const;
44210 
44211 
44212 
44213 // End of memberFunctionString
44214 // Start of memberFunctionString
44215 /* #line 2317 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
44216 
44217 
44218  /* name Persistant Attribute Mechanism
44219 
44220  This is the persistant attribute mechanism for attaching attributes to IR nodes across
44221  multiple passes. Note that these attributes are persistant in that they are preserved
44222  if the AST is written out to a file and read in from a file. However, virtual function
44223  in the user-defined class derived from the AstAttribute must be defined for the attribute
44224  to be defined across the boundary of File I/O (simple pack and unpack functions). More
44225  sophisticated mechanisms are available within the AstAttributeMechanism object
44226  (e.g iterating though attributes, etc; get_attributeMechanism() is available if direct
44227  access is required, however mostly only internal tools use this lower level support).
44228 
44229  \internal This used to be a public data member, but has been changed to be a protected
44230  pointer instead. The functional interface of the AstAttributeMechanism is presevered
44231  but some of the names and the syntax for calling the interface have changed. The
44232  pointer to the AstAttributeMechanism is now generated by ROSETTA.
44233  */
44234  /* */
44236  virtual void addNewAttribute(std::string s,AstAttribute* a) override;
44238  virtual AstAttribute* getAttribute(std::string s) const override;
44240  virtual void updateAttribute(std::string s,AstAttribute* a) override; // formerly called: replace in AstAttributeMechanism
44245  virtual void setAttribute(std::string s,AstAttribute* a) override;
44247  virtual void removeAttribute(std::string s) override;
44249  virtual bool attributeExists(std::string s) const override;
44251  virtual int numberOfAttributes() const override;
44252 
44267  /* */
44268 
44269 
44270 
44271 
44272 // End of memberFunctionString
44273 // Start of memberFunctionString
44274 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
44275 
44276 // *** COMMON CODE SECTION BEGINS HERE ***
44277 
44278  public:
44279 
44280  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
44281  // and not required which is required to match the other aspects of the copy mechanism code generation.
44282  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
44283  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
44284  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
44285  // virtual SgNode* copy ( const SgCopyHelp & help) const;
44286 
44288  virtual std::string class_name() const override;
44289 
44291  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
44292 
44294  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
44295  // static const VariantT static_variant = V_SgType;
44296  enum { static_variant = V_SgType };
44297 
44298  /* the generated cast function */
44300  ROSE_DLL_API friend SgType* isSgType( SgNode * s );
44301 
44303  ROSE_DLL_API friend const SgType* isSgType( const SgNode * s );
44304 
44305  // ******************************************
44306  // * Memory Pool / New / Delete
44307  // ******************************************
44308 
44309  public:
44311  static const unsigned pool_size; //
44313  static std::vector<unsigned char *> pools; //
44315  static SgType * next_node; //
44316 
44318  static unsigned long initializeStorageClassArray(SgTypeStorageClass *); //
44319 
44321  static void clearMemoryPool(); //
44322  static void deleteMemoryPool(); //
44323 
44325  static void extendMemoryPoolForFileIO(); //
44326 
44328  static SgType * getPointerFromGlobalIndex(unsigned long); //
44330  static SgType * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
44331 
44333  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
44335  static void resetValidFreepointers(); //
44337  static unsigned long getNumberOfLastValidPointer(); //
44338 
44339 
44340 #if defined(INLINE_FUNCTIONS)
44341 
44342  inline void *operator new (size_t size);
44343 #else
44344 
44345  void *operator new (size_t size);
44346 #endif
44347 
44348  void operator delete (void* pointer, size_t size);
44349 
44350  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
44351  void operator delete (void* pointer)
44352  {
44353  // This is the generated delete operator...
44354  SgType::operator delete (pointer,sizeof(SgType));
44355  }
44356 
44358  static size_t numberOfNodes();
44359 
44361  static size_t memoryUsage();
44362 
44363  // End of scope which started in IR nodes specific code
44364  /* */
44365 
44366  /* name Internal Functions
44367  \brief Internal functions ... incomplete-documentation
44368 
44369  These functions have been made public as part of the design, but they are suggested for internal use
44370  or by particularly knowledgeable users for specialized tools or applications.
44371 
44372  \internal We could not make these private because they are required by user for special purposes. And
44373  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
44374 
44375  */
44376 
44377  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
44378  // overridden in every class by *generated* implementation
44380  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
44381  // MS: 06/28/02 container of names of variables or container indices
44382  // used used in the traversal to access AST successor nodes
44383  // overridden in every class by *generated* implementation
44386  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
44387 
44388  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
44389  // than all the vector copies. The implementation for these functions is generated for each class.
44391  virtual size_t get_numberOfTraversalSuccessors() override;
44393  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
44395  virtual size_t get_childIndex(SgNode *child) override;
44396 
44397 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
44398  // MS: 08/16/2002 method for generating RTI information
44400  virtual RTIReturnType roseRTI() override;
44401 #endif
44402  /* */
44403 
44404 
44405 
44406  /* name Deprecated Functions
44407  \brief Deprecated functions ... incomplete-documentation
44408 
44409  These functions have been deprecated from use.
44410  */
44411  /* */
44412 
44414  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
44415 
44416  // JJW (10/16/2008): Changed to a single function in Node.code, and put
44417  // getVariant() in #if 0 block to prevent confusing Doxygen
44418 #if 0
44419 
44420  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
44422  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
44423 #endif
44424  /* */
44425 
44426 
44427 
44428 
44429  public:
44430  /* name Traversal Support Functions
44431  \brief Traversal support functions ... incomplete-documentation
44432 
44433  These functions have been made public as part of the design, but they are suggested for internal use
44434  or by particularly knowledgable users for specialized tools or applications.
44435  */
44436  /* */
44437 
44438  // DQ (11/26/2005): Support for visitor pattern mechanims
44439  // (inferior to ROSE traversal mechanism, experimental).
44443 
44444  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
44446  virtual void accept (ROSE_VisitorPattern & visitor) override;
44447 
44448  // DQ (12/26/2005): Support for traversal based on the memory pool
44451  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
44452 
44456 
44457  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
44458  // This traversal helps support internal tools that call static member functions.
44459  // note: this function operates on the memory pools.
44462  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
44463  /* */
44464 
44465 
44466  public:
44467  /* name Memory Allocation Functions
44468  \brief Memory allocations functions ... incomplete-documentation
44469 
44470  These functions have been made public as part of the design, but they are suggested for internal use
44471  or by particularly knowledgable users for specialized tools or applications.
44472  */
44473  /* */
44474 
44485  virtual bool isInMemoryPool() override;
44486 
44497  virtual void checkDataMemberPointersIfInMemoryPool() override;
44498 
44499  // DQ (4/30/2006): Modified to be a const function.
44514  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
44515 
44525  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
44526 
44538  virtual long getChildIndex( SgNode* childNode ) const override;
44539 
44540  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
44541  // comment here (changed to be a C style comment and not be a doxygen comment).
44542  /* \brief Constructor for use by AST File I/O Mechanism
44543 
44544  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
44545  which obtained via fast binary file I/O from disk.
44546  */
44547  // SgType( SgTypeStorageClass& source );
44548 
44549 
44550 
44551 
44552 
44553  // JH (10/24/2005): methods added to support the ast file IO
44554  private:
44555 
44556  /* name AST Memory Allocation Support Functions
44557  \brief Memory allocations support....
44558 
44559  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
44560  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
44561  and support the AST File I/O Mechanism.
44562  */
44563  /* */
44564 
44565  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
44566  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
44567  that I use the same type everywhere, if any changes are made. THe second one declares the type
44568  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
44569  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
44570  a correspinding one in the AST_FILE_IO class!
44571  */
44572  // DQ (9/2/2015): This typedef is no longer used, we can't define the
44573  // comment here (changed to be a C style comment and not be a doxygen comment).
44574  /* \brief Typedef used for low level memory access.
44575  */
44576  // typedef unsigned char* TestType;
44577 
44578  // DQ (9/2/2015): This typedef is no longer used, we can't define the
44579  // comment here (changed to be a C style comment and not be a doxygen comment).
44580  /* \brief Typedef used to hold memory addresses as values.
44581  */
44582  // typedef unsigned long AddressType;
44583 
44584 
44585 
44586  // necessary, to have direct access to the p_freepointer and the private methods !
44588  friend class AST_FILE_IO;
44589 
44591  friend class SgTypeStorageClass;
44592 
44594  friend class AstSpecificDataManagingClass;
44595 
44597  friend class AstSpecificDataManagingClassStorageClass;
44598 
44599  public:
44601  SgType( const SgTypeStorageClass& source );
44602 
44603  // private: // JJW hack
44604  /*
44605  name AST Memory Allocation Support Variables
44606  Memory allocations support variables
44607 
44608  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
44609  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
44610  and support the AST File I/O Mechanism.
44611  */
44612  /* */
44613 
44614  public:
44615 
44616  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
44617  // to current node (so that it will work cleanly with build functions to specify patterns).
44618  // virtual SgNode* addRegExpAttribute();
44624  SgType* addRegExpAttribute(std::string s, AstRegExAttribute* a);
44625 
44626 // *** COMMON CODE SECTION ENDS HERE ***
44627 
44628 
44629 // End of memberFunctionString
44630 // Start of memberFunctionString
44631 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
44632 
44633  // the generated cast function
44634  // friend ROSE_DLL_API SgType* isSgType ( SgNode* s );
44635 
44636  typedef SgNode base_node_type;
44637 
44638 
44639 // End of memberFunctionString
44640 
44641  public:
44642  bool get_isCoArray() const;
44643  void set_isCoArray(bool isCoArray);
44644 
44645  public:
44646  int get_substitutedForTemplateParam() const;
44647  void set_substitutedForTemplateParam(int substitutedForTemplateParam);
44648 
44649  public:
44650  SgReferenceType* get_ref_to() const;
44651  void set_ref_to(SgReferenceType* ref_to);
44652 
44653  public:
44654  SgPointerType* get_ptr_to() const;
44655  void set_ptr_to(SgPointerType* ptr_to);
44656 
44657  public:
44658  SgModifierNodes* get_modifiers() const;
44659  void set_modifiers(SgModifierNodes* modifiers);
44660 
44661  public:
44662  SgTypedefSeq* get_typedefs() const;
44663  void set_typedefs(SgTypedefSeq* typedefs);
44664 
44665  public:
44666  SgRvalueReferenceType* get_rvalue_ref_to() const;
44667  void set_rvalue_ref_to(SgRvalueReferenceType* rvalue_ref_to);
44668 
44669  public:
44670  SgDeclType* get_decltype_ref_to() const;
44671  void set_decltype_ref_to(SgDeclType* decltype_ref_to);
44672 
44673  public:
44674  SgTypeOfType* get_typeof_ref_to() const;
44675  void set_typeof_ref_to(SgTypeOfType* typeof_ref_to);
44676 
44677 
44678  public:
44679  AstAttributeMechanism* get_attributeMechanism() const override /* (getDataAccessFunctionPrototypeString) */;
44680  void set_attributeMechanism(AstAttributeMechanism* attributeMechanism) override /* (getDataAccessFunctionPrototypeString) */;
44681 
44682 
44683  public:
44684  virtual ~SgType();
44685 
44686  protected:
44687 // Start of memberFunctionString
44688 bool p_isCoArray;
44689 
44690 // End of memberFunctionString
44691 // Start of memberFunctionString
44692 int p_substitutedForTemplateParam;
44693 
44694 // End of memberFunctionString
44695 // Start of memberFunctionString
44697 
44698 // End of memberFunctionString
44699 // Start of memberFunctionString
44700 SgPointerType* p_ptr_to;
44701 
44702 // End of memberFunctionString
44703 // Start of memberFunctionString
44704 SgModifierNodes* p_modifiers;
44705 
44706 // End of memberFunctionString
44707 // Start of memberFunctionString
44708 SgTypedefSeq* p_typedefs;
44709 
44710 // End of memberFunctionString
44711 // Start of memberFunctionString
44712 SgRvalueReferenceType* p_rvalue_ref_to;
44713 
44714 // End of memberFunctionString
44715 // Start of memberFunctionString
44716 SgDeclType* p_decltype_ref_to;
44717 
44718 // End of memberFunctionString
44719 // Start of memberFunctionString
44720 SgTypeOfType* p_typeof_ref_to;
44721 
44722 // End of memberFunctionString
44723 // Start of memberFunctionString
44724 SgExpression* p_type_kind;
44725 
44726 // End of memberFunctionString
44727 // Start of memberFunctionString
44728 AstAttributeMechanism* p_attributeMechanism;
44729 
44730 // End of memberFunctionString
44731 
44732 
44733 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
44734 
44735 
44736  };
44737 #endif
44738 
44739 // postdeclarations for SgType
44740 
44741 /* #line 44742 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
44742 
44743 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
44744 
44745 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
44746 
44747 
44748 /* #line 44749 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
44749 
44750 
44751 
44752 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
44753 
44754 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
44755 // This code is automatically generated for each
44756 // terminal and non-terminal within the defined
44757 // grammar. There is a simple way to change the
44758 // code to fix bugs etc. See the ROSE README file
44759 // for directions.
44760 
44761 // tps: (02/22/2010): Adding DLL export requirements
44762 #include "rosedll.h"
44763 
44764 // predeclarations for SgTypeUnknown
44765 
44766 /* #line 44767 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
44767 
44768 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
44769 
44770 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
44771 
44772 #if 1
44773 // Class Definition for SgTypeUnknown
44774 class ROSE_DLL_API SgTypeUnknown : public SgType
44775  {
44776  public:
44777 
44778 
44779 /* #line 44780 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
44780 
44781  virtual SgNode* copy ( SgCopyHelp& help) const override;
44782 // Start of memberFunctionString
44783 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
44784 
44785 // *** COMMON CODE SECTION BEGINS HERE ***
44786 
44787  public:
44788 
44789  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
44790  // and not required which is required to match the other aspects of the copy mechanism code generation.
44791  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
44792  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
44793  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
44794  // virtual SgNode* copy ( const SgCopyHelp & help) const;
44795 
44797  virtual std::string class_name() const override;
44798 
44800  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
44801 
44803  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
44804  // static const VariantT static_variant = V_SgTypeUnknown;
44805  enum { static_variant = V_SgTypeUnknown };
44806 
44807  /* the generated cast function */
44809  ROSE_DLL_API friend SgTypeUnknown* isSgTypeUnknown( SgNode * s );
44810 
44812  ROSE_DLL_API friend const SgTypeUnknown* isSgTypeUnknown( const SgNode * s );
44813 
44814  // ******************************************
44815  // * Memory Pool / New / Delete
44816  // ******************************************
44817 
44818  public:
44820  static const unsigned pool_size; //
44822  static std::vector<unsigned char *> pools; //
44824  static SgTypeUnknown * next_node; //
44825 
44827  static unsigned long initializeStorageClassArray(SgTypeUnknownStorageClass *); //
44828 
44830  static void clearMemoryPool(); //
44831  static void deleteMemoryPool(); //
44832 
44834  static void extendMemoryPoolForFileIO(); //
44835 
44837  static SgTypeUnknown * getPointerFromGlobalIndex(unsigned long); //
44839  static SgTypeUnknown * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
44840 
44842  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
44844  static void resetValidFreepointers(); //
44846  static unsigned long getNumberOfLastValidPointer(); //
44847 
44848 
44849 #if defined(INLINE_FUNCTIONS)
44850 
44851  inline void *operator new (size_t size);
44852 #else
44853 
44854  void *operator new (size_t size);
44855 #endif
44856 
44857  void operator delete (void* pointer, size_t size);
44858 
44859  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
44860  void operator delete (void* pointer)
44861  {
44862  // This is the generated delete operator...
44863  SgTypeUnknown::operator delete (pointer,sizeof(SgTypeUnknown));
44864  }
44865 
44867  static size_t numberOfNodes();
44868 
44870  static size_t memoryUsage();
44871 
44872  // End of scope which started in IR nodes specific code
44873  /* */
44874 
44875  /* name Internal Functions
44876  \brief Internal functions ... incomplete-documentation
44877 
44878  These functions have been made public as part of the design, but they are suggested for internal use
44879  or by particularly knowledgeable users for specialized tools or applications.
44880 
44881  \internal We could not make these private because they are required by user for special purposes. And
44882  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
44883 
44884  */
44885 
44886  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
44887  // overridden in every class by *generated* implementation
44889  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
44890  // MS: 06/28/02 container of names of variables or container indices
44891  // used used in the traversal to access AST successor nodes
44892  // overridden in every class by *generated* implementation
44895  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
44896 
44897  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
44898  // than all the vector copies. The implementation for these functions is generated for each class.
44900  virtual size_t get_numberOfTraversalSuccessors() override;
44902  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
44904  virtual size_t get_childIndex(SgNode *child) override;
44905 
44906 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
44907  // MS: 08/16/2002 method for generating RTI information
44909  virtual RTIReturnType roseRTI() override;
44910 #endif
44911  /* */
44912 
44913 
44914 
44915  /* name Deprecated Functions
44916  \brief Deprecated functions ... incomplete-documentation
44917 
44918  These functions have been deprecated from use.
44919  */
44920  /* */
44921 
44923  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
44924 
44925  // JJW (10/16/2008): Changed to a single function in Node.code, and put
44926  // getVariant() in #if 0 block to prevent confusing Doxygen
44927 #if 0
44928 
44929  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
44931  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
44932 #endif
44933  /* */
44934 
44935 
44936 
44937 
44938  public:
44939  /* name Traversal Support Functions
44940  \brief Traversal support functions ... incomplete-documentation
44941 
44942  These functions have been made public as part of the design, but they are suggested for internal use
44943  or by particularly knowledgable users for specialized tools or applications.
44944  */
44945  /* */
44946 
44947  // DQ (11/26/2005): Support for visitor pattern mechanims
44948  // (inferior to ROSE traversal mechanism, experimental).
44952 
44953  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
44955  virtual void accept (ROSE_VisitorPattern & visitor) override;
44956 
44957  // DQ (12/26/2005): Support for traversal based on the memory pool
44960  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
44961 
44965 
44966  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
44967  // This traversal helps support internal tools that call static member functions.
44968  // note: this function operates on the memory pools.
44971  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
44972  /* */
44973 
44974 
44975  public:
44976  /* name Memory Allocation Functions
44977  \brief Memory allocations functions ... incomplete-documentation
44978 
44979  These functions have been made public as part of the design, but they are suggested for internal use
44980  or by particularly knowledgable users for specialized tools or applications.
44981  */
44982  /* */
44983 
44994  virtual bool isInMemoryPool() override;
44995 
45006  virtual void checkDataMemberPointersIfInMemoryPool() override;
45007 
45008  // DQ (4/30/2006): Modified to be a const function.
45023  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
45024 
45034  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
45035 
45047  virtual long getChildIndex( SgNode* childNode ) const override;
45048 
45049  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
45050  // comment here (changed to be a C style comment and not be a doxygen comment).
45051  /* \brief Constructor for use by AST File I/O Mechanism
45052 
45053  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
45054  which obtained via fast binary file I/O from disk.
45055  */
45056  // SgTypeUnknown( SgTypeUnknownStorageClass& source );
45057 
45058 
45059 
45060 
45061 
45062  // JH (10/24/2005): methods added to support the ast file IO
45063  private:
45064 
45065  /* name AST Memory Allocation Support Functions
45066  \brief Memory allocations support....
45067 
45068  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
45069  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
45070  and support the AST File I/O Mechanism.
45071  */
45072  /* */
45073 
45074  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
45075  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
45076  that I use the same type everywhere, if any changes are made. THe second one declares the type
45077  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
45078  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
45079  a correspinding one in the AST_FILE_IO class!
45080  */
45081  // DQ (9/2/2015): This typedef is no longer used, we can't define the
45082  // comment here (changed to be a C style comment and not be a doxygen comment).
45083  /* \brief Typedef used for low level memory access.
45084  */
45085  // typedef unsigned char* TestType;
45086 
45087  // DQ (9/2/2015): This typedef is no longer used, we can't define the
45088  // comment here (changed to be a C style comment and not be a doxygen comment).
45089  /* \brief Typedef used to hold memory addresses as values.
45090  */
45091  // typedef unsigned long AddressType;
45092 
45093 
45094 
45095  // necessary, to have direct access to the p_freepointer and the private methods !
45097  friend class AST_FILE_IO;
45098 
45100  friend class SgTypeUnknownStorageClass;
45101 
45103  friend class AstSpecificDataManagingClass;
45104 
45106  friend class AstSpecificDataManagingClassStorageClass;
45107 
45108  public:
45110  SgTypeUnknown( const SgTypeUnknownStorageClass& source );
45111 
45112  // private: // JJW hack
45113  /*
45114  name AST Memory Allocation Support Variables
45115  Memory allocations support variables
45116 
45117  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
45118  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
45119  and support the AST File I/O Mechanism.
45120  */
45121  /* */
45122 
45123  public:
45124 
45125  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
45126  // to current node (so that it will work cleanly with build functions to specify patterns).
45127  // virtual SgNode* addRegExpAttribute();
45134 
45135 // *** COMMON CODE SECTION ENDS HERE ***
45136 
45137 
45138 // End of memberFunctionString
45139 // Start of memberFunctionString
45140 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
45141 
45142  // the generated cast function
45143  // friend ROSE_DLL_API SgTypeUnknown* isSgTypeUnknown ( SgNode* s );
45144 
45145  typedef SgType base_node_type;
45146 
45147 
45148 // End of memberFunctionString
45149 // Start of memberFunctionString
45150 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
45151 
45152  // SgName get_mangled ( SgUnparse_Info & info );
45153 
45155  // SgName get_mangled ( SgUnparse_Info & info );
45156  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
45157  virtual SgName get_mangled (void) const override;
45158 
45159 
45160 
45161 // End of memberFunctionString
45162 // Start of memberFunctionString
45163 /* #line 267 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
45164 
45166  // DQ (1/31/2006): Modified to build all types in the memory pools
45167  // static SgTypeUnknown builtin_type;
45168  // static SgTypeUnknown* builtin_type;
45169 
45170  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
45171  // since we don't store the type explicitly anymore except in a few IR nodes which have there
45172  // own data member and associated access function.
45173  // static SgTypeUnknown* get_builtin_type();
45174 
45175  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
45176  // since we don't store the type explicitly anymore except in a few IR nodes which have there
45177  // own data member and associated access function.
45178  // static void set_builtin_type(SgTypeUnknown* builtin_type);
45179 
45181  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
45182  // static SgTypeUnknown* createType(void);
45183  static SgTypeUnknown* createType(SgExpression* optional_fortran_type_kind = NULL);
45184 
45185 
45186 // End of memberFunctionString
45187 
45188  public:
45189  std::string get_type_name() const;
45190  void set_type_name(std::string type_name);
45191 
45192  public:
45193  bool get_has_type_name() const;
45194  void set_has_type_name(bool has_type_name);
45195 
45196 
45197 
45198  public:
45199  virtual ~SgTypeUnknown();
45200 
45201 
45202  public:
45203  SgTypeUnknown();
45204 
45205  protected:
45206 // Start of memberFunctionString
45207 std::string p_type_name;
45208 
45209 // End of memberFunctionString
45210 // Start of memberFunctionString
45211 bool p_has_type_name;
45212 
45213 // End of memberFunctionString
45214 // Start of memberFunctionString
45215 static SgTypeUnknown* p_builtin_type;
45216 
45217 // End of memberFunctionString
45218 
45219 
45220 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
45221 
45222 
45223  };
45224 #endif
45225 
45226 // postdeclarations for SgTypeUnknown
45227 
45228 /* #line 45229 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
45229 
45230 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
45231 
45232 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
45233 
45234 
45235 /* #line 45236 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
45236 
45237 
45238 
45239 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
45240 
45241 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
45242 // This code is automatically generated for each
45243 // terminal and non-terminal within the defined
45244 // grammar. There is a simple way to change the
45245 // code to fix bugs etc. See the ROSE README file
45246 // for directions.
45247 
45248 // tps: (02/22/2010): Adding DLL export requirements
45249 #include "rosedll.h"
45250 
45251 // predeclarations for SgTypeChar
45252 
45253 /* #line 45254 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
45254 
45255 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
45256 
45257 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
45258 
45259 #if 1
45260 // Class Definition for SgTypeChar
45261 class ROSE_DLL_API SgTypeChar : public SgType
45262  {
45263  public:
45264 
45265 
45266 /* #line 45267 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
45267 
45268  virtual SgNode* copy ( SgCopyHelp& help) const override;
45269 // Start of memberFunctionString
45270 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
45271 
45272 // *** COMMON CODE SECTION BEGINS HERE ***
45273 
45274  public:
45275 
45276  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
45277  // and not required which is required to match the other aspects of the copy mechanism code generation.
45278  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
45279  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
45280  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
45281  // virtual SgNode* copy ( const SgCopyHelp & help) const;
45282 
45284  virtual std::string class_name() const override;
45285 
45287  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
45288 
45290  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
45291  // static const VariantT static_variant = V_SgTypeChar;
45292  enum { static_variant = V_SgTypeChar };
45293 
45294  /* the generated cast function */
45296  ROSE_DLL_API friend SgTypeChar* isSgTypeChar( SgNode * s );
45297 
45299  ROSE_DLL_API friend const SgTypeChar* isSgTypeChar( const SgNode * s );
45300 
45301  // ******************************************
45302  // * Memory Pool / New / Delete
45303  // ******************************************
45304 
45305  public:
45307  static const unsigned pool_size; //
45309  static std::vector<unsigned char *> pools; //
45311  static SgTypeChar * next_node; //
45312 
45314  static unsigned long initializeStorageClassArray(SgTypeCharStorageClass *); //
45315 
45317  static void clearMemoryPool(); //
45318  static void deleteMemoryPool(); //
45319 
45321  static void extendMemoryPoolForFileIO(); //
45322 
45324  static SgTypeChar * getPointerFromGlobalIndex(unsigned long); //
45326  static SgTypeChar * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
45327 
45329  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
45331  static void resetValidFreepointers(); //
45333  static unsigned long getNumberOfLastValidPointer(); //
45334 
45335 
45336 #if defined(INLINE_FUNCTIONS)
45337 
45338  inline void *operator new (size_t size);
45339 #else
45340 
45341  void *operator new (size_t size);
45342 #endif
45343 
45344  void operator delete (void* pointer, size_t size);
45345 
45346  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
45347  void operator delete (void* pointer)
45348  {
45349  // This is the generated delete operator...
45350  SgTypeChar::operator delete (pointer,sizeof(SgTypeChar));
45351  }
45352 
45354  static size_t numberOfNodes();
45355 
45357  static size_t memoryUsage();
45358 
45359  // End of scope which started in IR nodes specific code
45360  /* */
45361 
45362  /* name Internal Functions
45363  \brief Internal functions ... incomplete-documentation
45364 
45365  These functions have been made public as part of the design, but they are suggested for internal use
45366  or by particularly knowledgeable users for specialized tools or applications.
45367 
45368  \internal We could not make these private because they are required by user for special purposes. And
45369  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
45370 
45371  */
45372 
45373  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
45374  // overridden in every class by *generated* implementation
45376  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
45377  // MS: 06/28/02 container of names of variables or container indices
45378  // used used in the traversal to access AST successor nodes
45379  // overridden in every class by *generated* implementation
45382  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
45383 
45384  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
45385  // than all the vector copies. The implementation for these functions is generated for each class.
45387  virtual size_t get_numberOfTraversalSuccessors() override;
45389  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
45391  virtual size_t get_childIndex(SgNode *child) override;
45392 
45393 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
45394  // MS: 08/16/2002 method for generating RTI information
45396  virtual RTIReturnType roseRTI() override;
45397 #endif
45398  /* */
45399 
45400 
45401 
45402  /* name Deprecated Functions
45403  \brief Deprecated functions ... incomplete-documentation
45404 
45405  These functions have been deprecated from use.
45406  */
45407  /* */
45408 
45410  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
45411 
45412  // JJW (10/16/2008): Changed to a single function in Node.code, and put
45413  // getVariant() in #if 0 block to prevent confusing Doxygen
45414 #if 0
45415 
45416  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
45418  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
45419 #endif
45420  /* */
45421 
45422 
45423 
45424 
45425  public:
45426  /* name Traversal Support Functions
45427  \brief Traversal support functions ... incomplete-documentation
45428 
45429  These functions have been made public as part of the design, but they are suggested for internal use
45430  or by particularly knowledgable users for specialized tools or applications.
45431  */
45432  /* */
45433 
45434  // DQ (11/26/2005): Support for visitor pattern mechanims
45435  // (inferior to ROSE traversal mechanism, experimental).
45439 
45440  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
45442  virtual void accept (ROSE_VisitorPattern & visitor) override;
45443 
45444  // DQ (12/26/2005): Support for traversal based on the memory pool
45447  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
45448 
45452 
45453  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
45454  // This traversal helps support internal tools that call static member functions.
45455  // note: this function operates on the memory pools.
45458  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
45459  /* */
45460 
45461 
45462  public:
45463  /* name Memory Allocation Functions
45464  \brief Memory allocations functions ... incomplete-documentation
45465 
45466  These functions have been made public as part of the design, but they are suggested for internal use
45467  or by particularly knowledgable users for specialized tools or applications.
45468  */
45469  /* */
45470 
45481  virtual bool isInMemoryPool() override;
45482 
45493  virtual void checkDataMemberPointersIfInMemoryPool() override;
45494 
45495  // DQ (4/30/2006): Modified to be a const function.
45510  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
45511 
45521  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
45522 
45534  virtual long getChildIndex( SgNode* childNode ) const override;
45535 
45536  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
45537  // comment here (changed to be a C style comment and not be a doxygen comment).
45538  /* \brief Constructor for use by AST File I/O Mechanism
45539 
45540  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
45541  which obtained via fast binary file I/O from disk.
45542  */
45543  // SgTypeChar( SgTypeCharStorageClass& source );
45544 
45545 
45546 
45547 
45548 
45549  // JH (10/24/2005): methods added to support the ast file IO
45550  private:
45551 
45552  /* name AST Memory Allocation Support Functions
45553  \brief Memory allocations support....
45554 
45555  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
45556  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
45557  and support the AST File I/O Mechanism.
45558  */
45559  /* */
45560 
45561  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
45562  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
45563  that I use the same type everywhere, if any changes are made. THe second one declares the type
45564  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
45565  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
45566  a correspinding one in the AST_FILE_IO class!
45567  */
45568  // DQ (9/2/2015): This typedef is no longer used, we can't define the
45569  // comment here (changed to be a C style comment and not be a doxygen comment).
45570  /* \brief Typedef used for low level memory access.
45571  */
45572  // typedef unsigned char* TestType;
45573 
45574  // DQ (9/2/2015): This typedef is no longer used, we can't define the
45575  // comment here (changed to be a C style comment and not be a doxygen comment).
45576  /* \brief Typedef used to hold memory addresses as values.
45577  */
45578  // typedef unsigned long AddressType;
45579 
45580 
45581 
45582  // necessary, to have direct access to the p_freepointer and the private methods !
45584  friend class AST_FILE_IO;
45585 
45587  friend class SgTypeCharStorageClass;
45588 
45590  friend class AstSpecificDataManagingClass;
45591 
45593  friend class AstSpecificDataManagingClassStorageClass;
45594 
45595  public:
45597  SgTypeChar( const SgTypeCharStorageClass& source );
45598 
45599  // private: // JJW hack
45600  /*
45601  name AST Memory Allocation Support Variables
45602  Memory allocations support variables
45603 
45604  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
45605  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
45606  and support the AST File I/O Mechanism.
45607  */
45608  /* */
45609 
45610  public:
45611 
45612  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
45613  // to current node (so that it will work cleanly with build functions to specify patterns).
45614  // virtual SgNode* addRegExpAttribute();
45620  SgTypeChar* addRegExpAttribute(std::string s, AstRegExAttribute* a);
45621 
45622 // *** COMMON CODE SECTION ENDS HERE ***
45623 
45624 
45625 // End of memberFunctionString
45626 // Start of memberFunctionString
45627 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
45628 
45629  // the generated cast function
45630  // friend ROSE_DLL_API SgTypeChar* isSgTypeChar ( SgNode* s );
45631 
45632  typedef SgType base_node_type;
45633 
45634 
45635 // End of memberFunctionString
45636 // Start of memberFunctionString
45637 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
45638 
45639  // SgName get_mangled ( SgUnparse_Info & info );
45640 
45642  // SgName get_mangled ( SgUnparse_Info & info );
45643  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
45644  virtual SgName get_mangled (void) const override;
45645 
45646 
45647 
45648 // End of memberFunctionString
45649 // Start of memberFunctionString
45650 /* #line 267 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
45651 
45653  // DQ (1/31/2006): Modified to build all types in the memory pools
45654  // static SgTypeChar builtin_type;
45655  // static SgTypeChar* builtin_type;
45656 
45657  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
45658  // since we don't store the type explicitly anymore except in a few IR nodes which have there
45659  // own data member and associated access function.
45660  // static SgTypeChar* get_builtin_type();
45661 
45662  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
45663  // since we don't store the type explicitly anymore except in a few IR nodes which have there
45664  // own data member and associated access function.
45665  // static void set_builtin_type(SgTypeChar* builtin_type);
45666 
45668  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
45669  // static SgTypeChar* createType(void);
45670  static SgTypeChar* createType(SgExpression* optional_fortran_type_kind = NULL);
45671 
45672 
45673 // End of memberFunctionString
45674 
45675 
45676 
45677  public:
45678  virtual ~SgTypeChar();
45679 
45680 
45681  public:
45682  SgTypeChar();
45683 
45684  protected:
45685 // Start of memberFunctionString
45686 static SgTypeChar* p_builtin_type;
45687 
45688 // End of memberFunctionString
45689 
45690 
45691 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
45692 
45693 
45694  };
45695 #endif
45696 
45697 // postdeclarations for SgTypeChar
45698 
45699 /* #line 45700 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
45700 
45701 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
45702 
45703 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
45704 
45705 
45706 /* #line 45707 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
45707 
45708 
45709 
45710 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
45711 
45712 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
45713 // This code is automatically generated for each
45714 // terminal and non-terminal within the defined
45715 // grammar. There is a simple way to change the
45716 // code to fix bugs etc. See the ROSE README file
45717 // for directions.
45718 
45719 // tps: (02/22/2010): Adding DLL export requirements
45720 #include "rosedll.h"
45721 
45722 // predeclarations for SgTypeSignedChar
45723 
45724 /* #line 45725 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
45725 
45726 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
45727 
45728 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
45729 
45730 #if 1
45731 // Class Definition for SgTypeSignedChar
45732 class ROSE_DLL_API SgTypeSignedChar : public SgType
45733  {
45734  public:
45735 
45736 
45737 /* #line 45738 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
45738 
45739  virtual SgNode* copy ( SgCopyHelp& help) const override;
45740 // Start of memberFunctionString
45741 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
45742 
45743 // *** COMMON CODE SECTION BEGINS HERE ***
45744 
45745  public:
45746 
45747  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
45748  // and not required which is required to match the other aspects of the copy mechanism code generation.
45749  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
45750  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
45751  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
45752  // virtual SgNode* copy ( const SgCopyHelp & help) const;
45753 
45755  virtual std::string class_name() const override;
45756 
45758  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
45759 
45761  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
45762  // static const VariantT static_variant = V_SgTypeSignedChar;
45763  enum { static_variant = V_SgTypeSignedChar };
45764 
45765  /* the generated cast function */
45767  ROSE_DLL_API friend SgTypeSignedChar* isSgTypeSignedChar( SgNode * s );
45768 
45770  ROSE_DLL_API friend const SgTypeSignedChar* isSgTypeSignedChar( const SgNode * s );
45771 
45772  // ******************************************
45773  // * Memory Pool / New / Delete
45774  // ******************************************
45775 
45776  public:
45778  static const unsigned pool_size; //
45780  static std::vector<unsigned char *> pools; //
45782  static SgTypeSignedChar * next_node; //
45783 
45785  static unsigned long initializeStorageClassArray(SgTypeSignedCharStorageClass *); //
45786 
45788  static void clearMemoryPool(); //
45789  static void deleteMemoryPool(); //
45790 
45792  static void extendMemoryPoolForFileIO(); //
45793 
45795  static SgTypeSignedChar * getPointerFromGlobalIndex(unsigned long); //
45797  static SgTypeSignedChar * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
45798 
45800  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
45802  static void resetValidFreepointers(); //
45804  static unsigned long getNumberOfLastValidPointer(); //
45805 
45806 
45807 #if defined(INLINE_FUNCTIONS)
45808 
45809  inline void *operator new (size_t size);
45810 #else
45811 
45812  void *operator new (size_t size);
45813 #endif
45814 
45815  void operator delete (void* pointer, size_t size);
45816 
45817  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
45818  void operator delete (void* pointer)
45819  {
45820  // This is the generated delete operator...
45821  SgTypeSignedChar::operator delete (pointer,sizeof(SgTypeSignedChar));
45822  }
45823 
45825  static size_t numberOfNodes();
45826 
45828  static size_t memoryUsage();
45829 
45830  // End of scope which started in IR nodes specific code
45831  /* */
45832 
45833  /* name Internal Functions
45834  \brief Internal functions ... incomplete-documentation
45835 
45836  These functions have been made public as part of the design, but they are suggested for internal use
45837  or by particularly knowledgeable users for specialized tools or applications.
45838 
45839  \internal We could not make these private because they are required by user for special purposes. And
45840  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
45841 
45842  */
45843 
45844  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
45845  // overridden in every class by *generated* implementation
45847  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
45848  // MS: 06/28/02 container of names of variables or container indices
45849  // used used in the traversal to access AST successor nodes
45850  // overridden in every class by *generated* implementation
45853  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
45854 
45855  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
45856  // than all the vector copies. The implementation for these functions is generated for each class.
45858  virtual size_t get_numberOfTraversalSuccessors() override;
45860  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
45862  virtual size_t get_childIndex(SgNode *child) override;
45863 
45864 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
45865  // MS: 08/16/2002 method for generating RTI information
45867  virtual RTIReturnType roseRTI() override;
45868 #endif
45869  /* */
45870 
45871 
45872 
45873  /* name Deprecated Functions
45874  \brief Deprecated functions ... incomplete-documentation
45875 
45876  These functions have been deprecated from use.
45877  */
45878  /* */
45879 
45881  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
45882 
45883  // JJW (10/16/2008): Changed to a single function in Node.code, and put
45884  // getVariant() in #if 0 block to prevent confusing Doxygen
45885 #if 0
45886 
45887  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
45889  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
45890 #endif
45891  /* */
45892 
45893 
45894 
45895 
45896  public:
45897  /* name Traversal Support Functions
45898  \brief Traversal support functions ... incomplete-documentation
45899 
45900  These functions have been made public as part of the design, but they are suggested for internal use
45901  or by particularly knowledgable users for specialized tools or applications.
45902  */
45903  /* */
45904 
45905  // DQ (11/26/2005): Support for visitor pattern mechanims
45906  // (inferior to ROSE traversal mechanism, experimental).
45910 
45911  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
45913  virtual void accept (ROSE_VisitorPattern & visitor) override;
45914 
45915  // DQ (12/26/2005): Support for traversal based on the memory pool
45918  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
45919 
45923 
45924  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
45925  // This traversal helps support internal tools that call static member functions.
45926  // note: this function operates on the memory pools.
45929  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
45930  /* */
45931 
45932 
45933  public:
45934  /* name Memory Allocation Functions
45935  \brief Memory allocations functions ... incomplete-documentation
45936 
45937  These functions have been made public as part of the design, but they are suggested for internal use
45938  or by particularly knowledgable users for specialized tools or applications.
45939  */
45940  /* */
45941 
45952  virtual bool isInMemoryPool() override;
45953 
45964  virtual void checkDataMemberPointersIfInMemoryPool() override;
45965 
45966  // DQ (4/30/2006): Modified to be a const function.
45981  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
45982 
45992  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
45993 
46005  virtual long getChildIndex( SgNode* childNode ) const override;
46006 
46007  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
46008  // comment here (changed to be a C style comment and not be a doxygen comment).
46009  /* \brief Constructor for use by AST File I/O Mechanism
46010 
46011  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
46012  which obtained via fast binary file I/O from disk.
46013  */
46014  // SgTypeSignedChar( SgTypeSignedCharStorageClass& source );
46015 
46016 
46017 
46018 
46019 
46020  // JH (10/24/2005): methods added to support the ast file IO
46021  private:
46022 
46023  /* name AST Memory Allocation Support Functions
46024  \brief Memory allocations support....
46025 
46026  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
46027  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
46028  and support the AST File I/O Mechanism.
46029  */
46030  /* */
46031 
46032  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
46033  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
46034  that I use the same type everywhere, if any changes are made. THe second one declares the type
46035  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
46036  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
46037  a correspinding one in the AST_FILE_IO class!
46038  */
46039  // DQ (9/2/2015): This typedef is no longer used, we can't define the
46040  // comment here (changed to be a C style comment and not be a doxygen comment).
46041  /* \brief Typedef used for low level memory access.
46042  */
46043  // typedef unsigned char* TestType;
46044 
46045  // DQ (9/2/2015): This typedef is no longer used, we can't define the
46046  // comment here (changed to be a C style comment and not be a doxygen comment).
46047  /* \brief Typedef used to hold memory addresses as values.
46048  */
46049  // typedef unsigned long AddressType;
46050 
46051 
46052 
46053  // necessary, to have direct access to the p_freepointer and the private methods !
46055  friend class AST_FILE_IO;
46056 
46058  friend class SgTypeSignedCharStorageClass;
46059 
46061  friend class AstSpecificDataManagingClass;
46062 
46064  friend class AstSpecificDataManagingClassStorageClass;
46065 
46066  public:
46068  SgTypeSignedChar( const SgTypeSignedCharStorageClass& source );
46069 
46070  // private: // JJW hack
46071  /*
46072  name AST Memory Allocation Support Variables
46073  Memory allocations support variables
46074 
46075  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
46076  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
46077  and support the AST File I/O Mechanism.
46078  */
46079  /* */
46080 
46081  public:
46082 
46083  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
46084  // to current node (so that it will work cleanly with build functions to specify patterns).
46085  // virtual SgNode* addRegExpAttribute();
46092 
46093 // *** COMMON CODE SECTION ENDS HERE ***
46094 
46095 
46096 // End of memberFunctionString
46097 // Start of memberFunctionString
46098 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
46099 
46100  // the generated cast function
46101  // friend ROSE_DLL_API SgTypeSignedChar* isSgTypeSignedChar ( SgNode* s );
46102 
46103  typedef SgType base_node_type;
46104 
46105 
46106 // End of memberFunctionString
46107 // Start of memberFunctionString
46108 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
46109 
46110  // SgName get_mangled ( SgUnparse_Info & info );
46111 
46113  // SgName get_mangled ( SgUnparse_Info & info );
46114  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
46115  virtual SgName get_mangled (void) const override;
46116 
46117 
46118 
46119 // End of memberFunctionString
46120 // Start of memberFunctionString
46121 /* #line 267 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
46122 
46124  // DQ (1/31/2006): Modified to build all types in the memory pools
46125  // static SgTypeSignedChar builtin_type;
46126  // static SgTypeSignedChar* builtin_type;
46127 
46128  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
46129  // since we don't store the type explicitly anymore except in a few IR nodes which have there
46130  // own data member and associated access function.
46131  // static SgTypeSignedChar* get_builtin_type();
46132 
46133  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
46134  // since we don't store the type explicitly anymore except in a few IR nodes which have there
46135  // own data member and associated access function.
46136  // static void set_builtin_type(SgTypeSignedChar* builtin_type);
46137 
46139  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
46140  // static SgTypeSignedChar* createType(void);
46141  static SgTypeSignedChar* createType(SgExpression* optional_fortran_type_kind = NULL);
46142 
46143 
46144 // End of memberFunctionString
46145 
46146 
46147 
46148  public:
46149  virtual ~SgTypeSignedChar();
46150 
46151 
46152  public:
46153  SgTypeSignedChar();
46154 
46155  protected:
46156 // Start of memberFunctionString
46157 static SgTypeSignedChar* p_builtin_type;
46158 
46159 // End of memberFunctionString
46160 
46161 
46162 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
46163 
46164 
46165  };
46166 #endif
46167 
46168 // postdeclarations for SgTypeSignedChar
46169 
46170 /* #line 46171 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
46171 
46172 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
46173 
46174 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
46175 
46176 
46177 /* #line 46178 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
46178 
46179 
46180 
46181 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
46182 
46183 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
46184 // This code is automatically generated for each
46185 // terminal and non-terminal within the defined
46186 // grammar. There is a simple way to change the
46187 // code to fix bugs etc. See the ROSE README file
46188 // for directions.
46189 
46190 // tps: (02/22/2010): Adding DLL export requirements
46191 #include "rosedll.h"
46192 
46193 // predeclarations for SgTypeUnsignedChar
46194 
46195 /* #line 46196 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
46196 
46197 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
46198 
46199 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
46200 
46201 #if 1
46202 // Class Definition for SgTypeUnsignedChar
46203 class ROSE_DLL_API SgTypeUnsignedChar : public SgType
46204  {
46205  public:
46206 
46207 
46208 /* #line 46209 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
46209 
46210  virtual SgNode* copy ( SgCopyHelp& help) const override;
46211 // Start of memberFunctionString
46212 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
46213 
46214 // *** COMMON CODE SECTION BEGINS HERE ***
46215 
46216  public:
46217 
46218  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
46219  // and not required which is required to match the other aspects of the copy mechanism code generation.
46220  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
46221  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
46222  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
46223  // virtual SgNode* copy ( const SgCopyHelp & help) const;
46224 
46226  virtual std::string class_name() const override;
46227 
46229  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
46230 
46232  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
46233  // static const VariantT static_variant = V_SgTypeUnsignedChar;
46234  enum { static_variant = V_SgTypeUnsignedChar };
46235 
46236  /* the generated cast function */
46238  ROSE_DLL_API friend SgTypeUnsignedChar* isSgTypeUnsignedChar( SgNode * s );
46239 
46241  ROSE_DLL_API friend const SgTypeUnsignedChar* isSgTypeUnsignedChar( const SgNode * s );
46242 
46243  // ******************************************
46244  // * Memory Pool / New / Delete
46245  // ******************************************
46246 
46247  public:
46249  static const unsigned pool_size; //
46251  static std::vector<unsigned char *> pools; //
46253  static SgTypeUnsignedChar * next_node; //
46254 
46256  static unsigned long initializeStorageClassArray(SgTypeUnsignedCharStorageClass *); //
46257 
46259  static void clearMemoryPool(); //
46260  static void deleteMemoryPool(); //
46261 
46263  static void extendMemoryPoolForFileIO(); //
46264 
46266  static SgTypeUnsignedChar * getPointerFromGlobalIndex(unsigned long); //
46268  static SgTypeUnsignedChar * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
46269 
46271  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
46273  static void resetValidFreepointers(); //
46275  static unsigned long getNumberOfLastValidPointer(); //
46276 
46277 
46278 #if defined(INLINE_FUNCTIONS)
46279 
46280  inline void *operator new (size_t size);
46281 #else
46282 
46283  void *operator new (size_t size);
46284 #endif
46285 
46286  void operator delete (void* pointer, size_t size);
46287 
46288  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
46289  void operator delete (void* pointer)
46290  {
46291  // This is the generated delete operator...
46292  SgTypeUnsignedChar::operator delete (pointer,sizeof(SgTypeUnsignedChar));
46293  }
46294 
46296  static size_t numberOfNodes();
46297 
46299  static size_t memoryUsage();
46300 
46301  // End of scope which started in IR nodes specific code
46302  /* */
46303 
46304  /* name Internal Functions
46305  \brief Internal functions ... incomplete-documentation
46306 
46307  These functions have been made public as part of the design, but they are suggested for internal use
46308  or by particularly knowledgeable users for specialized tools or applications.
46309 
46310  \internal We could not make these private because they are required by user for special purposes. And
46311  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
46312 
46313  */
46314 
46315  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
46316  // overridden in every class by *generated* implementation
46318  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
46319  // MS: 06/28/02 container of names of variables or container indices
46320  // used used in the traversal to access AST successor nodes
46321  // overridden in every class by *generated* implementation
46324  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
46325 
46326  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
46327  // than all the vector copies. The implementation for these functions is generated for each class.
46329  virtual size_t get_numberOfTraversalSuccessors() override;
46331  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
46333  virtual size_t get_childIndex(SgNode *child) override;
46334 
46335 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
46336  // MS: 08/16/2002 method for generating RTI information
46338  virtual RTIReturnType roseRTI() override;
46339 #endif
46340  /* */
46341 
46342 
46343 
46344  /* name Deprecated Functions
46345  \brief Deprecated functions ... incomplete-documentation
46346 
46347  These functions have been deprecated from use.
46348  */
46349  /* */
46350 
46352  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
46353 
46354  // JJW (10/16/2008): Changed to a single function in Node.code, and put
46355  // getVariant() in #if 0 block to prevent confusing Doxygen
46356 #if 0
46357 
46358  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
46360  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
46361 #endif
46362  /* */
46363 
46364 
46365 
46366 
46367  public:
46368  /* name Traversal Support Functions
46369  \brief Traversal support functions ... incomplete-documentation
46370 
46371  These functions have been made public as part of the design, but they are suggested for internal use
46372  or by particularly knowledgable users for specialized tools or applications.
46373  */
46374  /* */
46375 
46376  // DQ (11/26/2005): Support for visitor pattern mechanims
46377  // (inferior to ROSE traversal mechanism, experimental).
46381 
46382  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
46384  virtual void accept (ROSE_VisitorPattern & visitor) override;
46385 
46386  // DQ (12/26/2005): Support for traversal based on the memory pool
46389  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
46390 
46394 
46395  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
46396  // This traversal helps support internal tools that call static member functions.
46397  // note: this function operates on the memory pools.
46400  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
46401  /* */
46402 
46403 
46404  public:
46405  /* name Memory Allocation Functions
46406  \brief Memory allocations functions ... incomplete-documentation
46407 
46408  These functions have been made public as part of the design, but they are suggested for internal use
46409  or by particularly knowledgable users for specialized tools or applications.
46410  */
46411  /* */
46412 
46423  virtual bool isInMemoryPool() override;
46424 
46435  virtual void checkDataMemberPointersIfInMemoryPool() override;
46436 
46437  // DQ (4/30/2006): Modified to be a const function.
46452  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
46453 
46463  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
46464 
46476  virtual long getChildIndex( SgNode* childNode ) const override;
46477 
46478  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
46479  // comment here (changed to be a C style comment and not be a doxygen comment).
46480  /* \brief Constructor for use by AST File I/O Mechanism
46481 
46482  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
46483  which obtained via fast binary file I/O from disk.
46484  */
46485  // SgTypeUnsignedChar( SgTypeUnsignedCharStorageClass& source );
46486 
46487 
46488 
46489 
46490 
46491  // JH (10/24/2005): methods added to support the ast file IO
46492  private:
46493 
46494  /* name AST Memory Allocation Support Functions
46495  \brief Memory allocations support....
46496 
46497  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
46498  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
46499  and support the AST File I/O Mechanism.
46500  */
46501  /* */
46502 
46503  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
46504  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
46505  that I use the same type everywhere, if any changes are made. THe second one declares the type
46506  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
46507  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
46508  a correspinding one in the AST_FILE_IO class!
46509  */
46510  // DQ (9/2/2015): This typedef is no longer used, we can't define the
46511  // comment here (changed to be a C style comment and not be a doxygen comment).
46512  /* \brief Typedef used for low level memory access.
46513  */
46514  // typedef unsigned char* TestType;
46515 
46516  // DQ (9/2/2015): This typedef is no longer used, we can't define the
46517  // comment here (changed to be a C style comment and not be a doxygen comment).
46518  /* \brief Typedef used to hold memory addresses as values.
46519  */
46520  // typedef unsigned long AddressType;
46521 
46522 
46523 
46524  // necessary, to have direct access to the p_freepointer and the private methods !
46526  friend class AST_FILE_IO;
46527 
46529  friend class SgTypeUnsignedCharStorageClass;
46530 
46532  friend class AstSpecificDataManagingClass;
46533 
46535  friend class AstSpecificDataManagingClassStorageClass;
46536 
46537  public:
46539  SgTypeUnsignedChar( const SgTypeUnsignedCharStorageClass& source );
46540 
46541  // private: // JJW hack
46542  /*
46543  name AST Memory Allocation Support Variables
46544  Memory allocations support variables
46545 
46546  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
46547  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
46548  and support the AST File I/O Mechanism.
46549  */
46550  /* */
46551 
46552  public:
46553 
46554  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
46555  // to current node (so that it will work cleanly with build functions to specify patterns).
46556  // virtual SgNode* addRegExpAttribute();
46563 
46564 // *** COMMON CODE SECTION ENDS HERE ***
46565 
46566 
46567 // End of memberFunctionString
46568 // Start of memberFunctionString
46569 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
46570 
46571  // the generated cast function
46572  // friend ROSE_DLL_API SgTypeUnsignedChar* isSgTypeUnsignedChar ( SgNode* s );
46573 
46574  typedef SgType base_node_type;
46575 
46576 
46577 // End of memberFunctionString
46578 // Start of memberFunctionString
46579 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
46580 
46581  // SgName get_mangled ( SgUnparse_Info & info );
46582 
46584  // SgName get_mangled ( SgUnparse_Info & info );
46585  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
46586  virtual SgName get_mangled (void) const override;
46587 
46588 
46589 
46590 // End of memberFunctionString
46591 // Start of memberFunctionString
46592 /* #line 267 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
46593 
46595  // DQ (1/31/2006): Modified to build all types in the memory pools
46596  // static SgTypeUnsignedChar builtin_type;
46597  // static SgTypeUnsignedChar* builtin_type;
46598 
46599  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
46600  // since we don't store the type explicitly anymore except in a few IR nodes which have there
46601  // own data member and associated access function.
46602  // static SgTypeUnsignedChar* get_builtin_type();
46603 
46604  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
46605  // since we don't store the type explicitly anymore except in a few IR nodes which have there
46606  // own data member and associated access function.
46607  // static void set_builtin_type(SgTypeUnsignedChar* builtin_type);
46608 
46610  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
46611  // static SgTypeUnsignedChar* createType(void);
46612  static SgTypeUnsignedChar* createType(SgExpression* optional_fortran_type_kind = NULL);
46613 
46614 
46615 // End of memberFunctionString
46616 
46617 
46618 
46619  public:
46620  virtual ~SgTypeUnsignedChar();
46621 
46622 
46623  public:
46624  SgTypeUnsignedChar();
46625 
46626  protected:
46627 // Start of memberFunctionString
46628 static SgTypeUnsignedChar* p_builtin_type;
46629 
46630 // End of memberFunctionString
46631 
46632 
46633 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
46634 
46635 
46636  };
46637 #endif
46638 
46639 // postdeclarations for SgTypeUnsignedChar
46640 
46641 /* #line 46642 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
46642 
46643 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
46644 
46645 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
46646 
46647 
46648 /* #line 46649 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
46649 
46650 
46651 
46652 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
46653 
46654 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
46655 // This code is automatically generated for each
46656 // terminal and non-terminal within the defined
46657 // grammar. There is a simple way to change the
46658 // code to fix bugs etc. See the ROSE README file
46659 // for directions.
46660 
46661 // tps: (02/22/2010): Adding DLL export requirements
46662 #include "rosedll.h"
46663 
46664 // predeclarations for SgTypeShort
46665 
46666 /* #line 46667 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
46667 
46668 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
46669 
46670 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
46671 
46672 #if 1
46673 // Class Definition for SgTypeShort
46674 class ROSE_DLL_API SgTypeShort : public SgType
46675  {
46676  public:
46677 
46678 
46679 /* #line 46680 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
46680 
46681  virtual SgNode* copy ( SgCopyHelp& help) const override;
46682 // Start of memberFunctionString
46683 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
46684 
46685 // *** COMMON CODE SECTION BEGINS HERE ***
46686 
46687  public:
46688 
46689  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
46690  // and not required which is required to match the other aspects of the copy mechanism code generation.
46691  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
46692  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
46693  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
46694  // virtual SgNode* copy ( const SgCopyHelp & help) const;
46695 
46697  virtual std::string class_name() const override;
46698 
46700  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
46701 
46703  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
46704  // static const VariantT static_variant = V_SgTypeShort;
46705  enum { static_variant = V_SgTypeShort };
46706 
46707  /* the generated cast function */
46709  ROSE_DLL_API friend SgTypeShort* isSgTypeShort( SgNode * s );
46710 
46712  ROSE_DLL_API friend const SgTypeShort* isSgTypeShort( const SgNode * s );
46713 
46714  // ******************************************
46715  // * Memory Pool / New / Delete
46716  // ******************************************
46717 
46718  public:
46720  static const unsigned pool_size; //
46722  static std::vector<unsigned char *> pools; //
46724  static SgTypeShort * next_node; //
46725 
46727  static unsigned long initializeStorageClassArray(SgTypeShortStorageClass *); //
46728 
46730  static void clearMemoryPool(); //
46731  static void deleteMemoryPool(); //
46732 
46734  static void extendMemoryPoolForFileIO(); //
46735 
46737  static SgTypeShort * getPointerFromGlobalIndex(unsigned long); //
46739  static SgTypeShort * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
46740 
46742  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
46744  static void resetValidFreepointers(); //
46746  static unsigned long getNumberOfLastValidPointer(); //
46747 
46748 
46749 #if defined(INLINE_FUNCTIONS)
46750 
46751  inline void *operator new (size_t size);
46752 #else
46753 
46754  void *operator new (size_t size);
46755 #endif
46756 
46757  void operator delete (void* pointer, size_t size);
46758 
46759  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
46760  void operator delete (void* pointer)
46761  {
46762  // This is the generated delete operator...
46763  SgTypeShort::operator delete (pointer,sizeof(SgTypeShort));
46764  }
46765 
46767  static size_t numberOfNodes();
46768 
46770  static size_t memoryUsage();
46771 
46772  // End of scope which started in IR nodes specific code
46773  /* */
46774 
46775  /* name Internal Functions
46776  \brief Internal functions ... incomplete-documentation
46777 
46778  These functions have been made public as part of the design, but they are suggested for internal use
46779  or by particularly knowledgeable users for specialized tools or applications.
46780 
46781  \internal We could not make these private because they are required by user for special purposes. And
46782  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
46783 
46784  */
46785 
46786  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
46787  // overridden in every class by *generated* implementation
46789  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
46790  // MS: 06/28/02 container of names of variables or container indices
46791  // used used in the traversal to access AST successor nodes
46792  // overridden in every class by *generated* implementation
46795  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
46796 
46797  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
46798  // than all the vector copies. The implementation for these functions is generated for each class.
46800  virtual size_t get_numberOfTraversalSuccessors() override;
46802  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
46804  virtual size_t get_childIndex(SgNode *child) override;
46805 
46806 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
46807  // MS: 08/16/2002 method for generating RTI information
46809  virtual RTIReturnType roseRTI() override;
46810 #endif
46811  /* */
46812 
46813 
46814 
46815  /* name Deprecated Functions
46816  \brief Deprecated functions ... incomplete-documentation
46817 
46818  These functions have been deprecated from use.
46819  */
46820  /* */
46821 
46823  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
46824 
46825  // JJW (10/16/2008): Changed to a single function in Node.code, and put
46826  // getVariant() in #if 0 block to prevent confusing Doxygen
46827 #if 0
46828 
46829  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
46831  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
46832 #endif
46833  /* */
46834 
46835 
46836 
46837 
46838  public:
46839  /* name Traversal Support Functions
46840  \brief Traversal support functions ... incomplete-documentation
46841 
46842  These functions have been made public as part of the design, but they are suggested for internal use
46843  or by particularly knowledgable users for specialized tools or applications.
46844  */
46845  /* */
46846 
46847  // DQ (11/26/2005): Support for visitor pattern mechanims
46848  // (inferior to ROSE traversal mechanism, experimental).
46852 
46853  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
46855  virtual void accept (ROSE_VisitorPattern & visitor) override;
46856 
46857  // DQ (12/26/2005): Support for traversal based on the memory pool
46860  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
46861 
46865 
46866  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
46867  // This traversal helps support internal tools that call static member functions.
46868  // note: this function operates on the memory pools.
46871  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
46872  /* */
46873 
46874 
46875  public:
46876  /* name Memory Allocation Functions
46877  \brief Memory allocations functions ... incomplete-documentation
46878 
46879  These functions have been made public as part of the design, but they are suggested for internal use
46880  or by particularly knowledgable users for specialized tools or applications.
46881  */
46882  /* */
46883 
46894  virtual bool isInMemoryPool() override;
46895 
46906  virtual void checkDataMemberPointersIfInMemoryPool() override;
46907 
46908  // DQ (4/30/2006): Modified to be a const function.
46923  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
46924 
46934  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
46935 
46947  virtual long getChildIndex( SgNode* childNode ) const override;
46948 
46949  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
46950  // comment here (changed to be a C style comment and not be a doxygen comment).
46951  /* \brief Constructor for use by AST File I/O Mechanism
46952 
46953  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
46954  which obtained via fast binary file I/O from disk.
46955  */
46956  // SgTypeShort( SgTypeShortStorageClass& source );
46957 
46958 
46959 
46960 
46961 
46962  // JH (10/24/2005): methods added to support the ast file IO
46963  private:
46964 
46965  /* name AST Memory Allocation Support Functions
46966  \brief Memory allocations support....
46967 
46968  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
46969  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
46970  and support the AST File I/O Mechanism.
46971  */
46972  /* */
46973 
46974  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
46975  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
46976  that I use the same type everywhere, if any changes are made. THe second one declares the type
46977  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
46978  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
46979  a correspinding one in the AST_FILE_IO class!
46980  */
46981  // DQ (9/2/2015): This typedef is no longer used, we can't define the
46982  // comment here (changed to be a C style comment and not be a doxygen comment).
46983  /* \brief Typedef used for low level memory access.
46984  */
46985  // typedef unsigned char* TestType;
46986 
46987  // DQ (9/2/2015): This typedef is no longer used, we can't define the
46988  // comment here (changed to be a C style comment and not be a doxygen comment).
46989  /* \brief Typedef used to hold memory addresses as values.
46990  */
46991  // typedef unsigned long AddressType;
46992 
46993 
46994 
46995  // necessary, to have direct access to the p_freepointer and the private methods !
46997  friend class AST_FILE_IO;
46998 
47000  friend class SgTypeShortStorageClass;
47001 
47003  friend class AstSpecificDataManagingClass;
47004 
47006  friend class AstSpecificDataManagingClassStorageClass;
47007 
47008  public:
47010  SgTypeShort( const SgTypeShortStorageClass& source );
47011 
47012  // private: // JJW hack
47013  /*
47014  name AST Memory Allocation Support Variables
47015  Memory allocations support variables
47016 
47017  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
47018  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
47019  and support the AST File I/O Mechanism.
47020  */
47021  /* */
47022 
47023  public:
47024 
47025  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
47026  // to current node (so that it will work cleanly with build functions to specify patterns).
47027  // virtual SgNode* addRegExpAttribute();
47033  SgTypeShort* addRegExpAttribute(std::string s, AstRegExAttribute* a);
47034 
47035 // *** COMMON CODE SECTION ENDS HERE ***
47036 
47037 
47038 // End of memberFunctionString
47039 // Start of memberFunctionString
47040 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
47041 
47042  // the generated cast function
47043  // friend ROSE_DLL_API SgTypeShort* isSgTypeShort ( SgNode* s );
47044 
47045  typedef SgType base_node_type;
47046 
47047 
47048 // End of memberFunctionString
47049 // Start of memberFunctionString
47050 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
47051 
47052  // SgName get_mangled ( SgUnparse_Info & info );
47053 
47055  // SgName get_mangled ( SgUnparse_Info & info );
47056  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
47057  virtual SgName get_mangled (void) const override;
47058 
47059 
47060 
47061 // End of memberFunctionString
47062 // Start of memberFunctionString
47063 /* #line 267 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
47064 
47066  // DQ (1/31/2006): Modified to build all types in the memory pools
47067  // static SgTypeShort builtin_type;
47068  // static SgTypeShort* builtin_type;
47069 
47070  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
47071  // since we don't store the type explicitly anymore except in a few IR nodes which have there
47072  // own data member and associated access function.
47073  // static SgTypeShort* get_builtin_type();
47074 
47075  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
47076  // since we don't store the type explicitly anymore except in a few IR nodes which have there
47077  // own data member and associated access function.
47078  // static void set_builtin_type(SgTypeShort* builtin_type);
47079 
47081  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
47082  // static SgTypeShort* createType(void);
47083  static SgTypeShort* createType(SgExpression* optional_fortran_type_kind = NULL);
47084 
47085 
47086 // End of memberFunctionString
47087 
47088 
47089 
47090  public:
47091  virtual ~SgTypeShort();
47092 
47093 
47094  public:
47095  SgTypeShort();
47096 
47097  protected:
47098 // Start of memberFunctionString
47099 static SgTypeShort* p_builtin_type;
47100 
47101 // End of memberFunctionString
47102 
47103 
47104 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
47105 
47106 
47107  };
47108 #endif
47109 
47110 // postdeclarations for SgTypeShort
47111 
47112 /* #line 47113 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
47113 
47114 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
47115 
47116 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
47117 
47118 
47119 /* #line 47120 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
47120 
47121 
47122 
47123 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
47124 
47125 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
47126 // This code is automatically generated for each
47127 // terminal and non-terminal within the defined
47128 // grammar. There is a simple way to change the
47129 // code to fix bugs etc. See the ROSE README file
47130 // for directions.
47131 
47132 // tps: (02/22/2010): Adding DLL export requirements
47133 #include "rosedll.h"
47134 
47135 // predeclarations for SgTypeSignedShort
47136 
47137 /* #line 47138 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
47138 
47139 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
47140 
47141 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
47142 
47143 #if 1
47144 // Class Definition for SgTypeSignedShort
47145 class ROSE_DLL_API SgTypeSignedShort : public SgType
47146  {
47147  public:
47148 
47149 
47150 /* #line 47151 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
47151 
47152  virtual SgNode* copy ( SgCopyHelp& help) const override;
47153 // Start of memberFunctionString
47154 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
47155 
47156 // *** COMMON CODE SECTION BEGINS HERE ***
47157 
47158  public:
47159 
47160  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
47161  // and not required which is required to match the other aspects of the copy mechanism code generation.
47162  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
47163  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
47164  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
47165  // virtual SgNode* copy ( const SgCopyHelp & help) const;
47166 
47168  virtual std::string class_name() const override;
47169 
47171  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
47172 
47174  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
47175  // static const VariantT static_variant = V_SgTypeSignedShort;
47176  enum { static_variant = V_SgTypeSignedShort };
47177 
47178  /* the generated cast function */
47180  ROSE_DLL_API friend SgTypeSignedShort* isSgTypeSignedShort( SgNode * s );
47181 
47183  ROSE_DLL_API friend const SgTypeSignedShort* isSgTypeSignedShort( const SgNode * s );
47184 
47185  // ******************************************
47186  // * Memory Pool / New / Delete
47187  // ******************************************
47188 
47189  public:
47191  static const unsigned pool_size; //
47193  static std::vector<unsigned char *> pools; //
47195  static SgTypeSignedShort * next_node; //
47196 
47198  static unsigned long initializeStorageClassArray(SgTypeSignedShortStorageClass *); //
47199 
47201  static void clearMemoryPool(); //
47202  static void deleteMemoryPool(); //
47203 
47205  static void extendMemoryPoolForFileIO(); //
47206 
47208  static SgTypeSignedShort * getPointerFromGlobalIndex(unsigned long); //
47210  static SgTypeSignedShort * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
47211 
47213  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
47215  static void resetValidFreepointers(); //
47217  static unsigned long getNumberOfLastValidPointer(); //
47218 
47219 
47220 #if defined(INLINE_FUNCTIONS)
47221 
47222  inline void *operator new (size_t size);
47223 #else
47224 
47225  void *operator new (size_t size);
47226 #endif
47227 
47228  void operator delete (void* pointer, size_t size);
47229 
47230  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
47231  void operator delete (void* pointer)
47232  {
47233  // This is the generated delete operator...
47234  SgTypeSignedShort::operator delete (pointer,sizeof(SgTypeSignedShort));
47235  }
47236 
47238  static size_t numberOfNodes();
47239 
47241  static size_t memoryUsage();
47242 
47243  // End of scope which started in IR nodes specific code
47244  /* */
47245 
47246  /* name Internal Functions
47247  \brief Internal functions ... incomplete-documentation
47248 
47249  These functions have been made public as part of the design, but they are suggested for internal use
47250  or by particularly knowledgeable users for specialized tools or applications.
47251 
47252  \internal We could not make these private because they are required by user for special purposes. And
47253  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
47254 
47255  */
47256 
47257  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
47258  // overridden in every class by *generated* implementation
47260  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
47261  // MS: 06/28/02 container of names of variables or container indices
47262  // used used in the traversal to access AST successor nodes
47263  // overridden in every class by *generated* implementation
47266  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
47267 
47268  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
47269  // than all the vector copies. The implementation for these functions is generated for each class.
47271  virtual size_t get_numberOfTraversalSuccessors() override;
47273  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
47275  virtual size_t get_childIndex(SgNode *child) override;
47276 
47277 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
47278  // MS: 08/16/2002 method for generating RTI information
47280  virtual RTIReturnType roseRTI() override;
47281 #endif
47282  /* */
47283 
47284 
47285 
47286  /* name Deprecated Functions
47287  \brief Deprecated functions ... incomplete-documentation
47288 
47289  These functions have been deprecated from use.
47290  */
47291  /* */
47292 
47294  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
47295 
47296  // JJW (10/16/2008): Changed to a single function in Node.code, and put
47297  // getVariant() in #if 0 block to prevent confusing Doxygen
47298 #if 0
47299 
47300  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
47302  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
47303 #endif
47304  /* */
47305 
47306 
47307 
47308 
47309  public:
47310  /* name Traversal Support Functions
47311  \brief Traversal support functions ... incomplete-documentation
47312 
47313  These functions have been made public as part of the design, but they are suggested for internal use
47314  or by particularly knowledgable users for specialized tools or applications.
47315  */
47316  /* */
47317 
47318  // DQ (11/26/2005): Support for visitor pattern mechanims
47319  // (inferior to ROSE traversal mechanism, experimental).
47323 
47324  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
47326  virtual void accept (ROSE_VisitorPattern & visitor) override;
47327 
47328  // DQ (12/26/2005): Support for traversal based on the memory pool
47331  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
47332 
47336 
47337  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
47338  // This traversal helps support internal tools that call static member functions.
47339  // note: this function operates on the memory pools.
47342  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
47343  /* */
47344 
47345 
47346  public:
47347  /* name Memory Allocation Functions
47348  \brief Memory allocations functions ... incomplete-documentation
47349 
47350  These functions have been made public as part of the design, but they are suggested for internal use
47351  or by particularly knowledgable users for specialized tools or applications.
47352  */
47353  /* */
47354 
47365  virtual bool isInMemoryPool() override;
47366 
47377  virtual void checkDataMemberPointersIfInMemoryPool() override;
47378 
47379  // DQ (4/30/2006): Modified to be a const function.
47394  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
47395 
47405  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
47406 
47418  virtual long getChildIndex( SgNode* childNode ) const override;
47419 
47420  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
47421  // comment here (changed to be a C style comment and not be a doxygen comment).
47422  /* \brief Constructor for use by AST File I/O Mechanism
47423 
47424  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
47425  which obtained via fast binary file I/O from disk.
47426  */
47427  // SgTypeSignedShort( SgTypeSignedShortStorageClass& source );
47428 
47429 
47430 
47431 
47432 
47433  // JH (10/24/2005): methods added to support the ast file IO
47434  private:
47435 
47436  /* name AST Memory Allocation Support Functions
47437  \brief Memory allocations support....
47438 
47439  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
47440  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
47441  and support the AST File I/O Mechanism.
47442  */
47443  /* */
47444 
47445  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
47446  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
47447  that I use the same type everywhere, if any changes are made. THe second one declares the type
47448  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
47449  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
47450  a correspinding one in the AST_FILE_IO class!
47451  */
47452  // DQ (9/2/2015): This typedef is no longer used, we can't define the
47453  // comment here (changed to be a C style comment and not be a doxygen comment).
47454  /* \brief Typedef used for low level memory access.
47455  */
47456  // typedef unsigned char* TestType;
47457 
47458  // DQ (9/2/2015): This typedef is no longer used, we can't define the
47459  // comment here (changed to be a C style comment and not be a doxygen comment).
47460  /* \brief Typedef used to hold memory addresses as values.
47461  */
47462  // typedef unsigned long AddressType;
47463 
47464 
47465 
47466  // necessary, to have direct access to the p_freepointer and the private methods !
47468  friend class AST_FILE_IO;
47469 
47471  friend class SgTypeSignedShortStorageClass;
47472 
47474  friend class AstSpecificDataManagingClass;
47475 
47477  friend class AstSpecificDataManagingClassStorageClass;
47478 
47479  public:
47481  SgTypeSignedShort( const SgTypeSignedShortStorageClass& source );
47482 
47483  // private: // JJW hack
47484  /*
47485  name AST Memory Allocation Support Variables
47486  Memory allocations support variables
47487 
47488  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
47489  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
47490  and support the AST File I/O Mechanism.
47491  */
47492  /* */
47493 
47494  public:
47495 
47496  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
47497  // to current node (so that it will work cleanly with build functions to specify patterns).
47498  // virtual SgNode* addRegExpAttribute();
47505 
47506 // *** COMMON CODE SECTION ENDS HERE ***
47507 
47508 
47509 // End of memberFunctionString
47510 // Start of memberFunctionString
47511 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
47512 
47513  // the generated cast function
47514  // friend ROSE_DLL_API SgTypeSignedShort* isSgTypeSignedShort ( SgNode* s );
47515 
47516  typedef SgType base_node_type;
47517 
47518 
47519 // End of memberFunctionString
47520 // Start of memberFunctionString
47521 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
47522 
47523  // SgName get_mangled ( SgUnparse_Info & info );
47524 
47526  // SgName get_mangled ( SgUnparse_Info & info );
47527  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
47528  virtual SgName get_mangled (void) const override;
47529 
47530 
47531 
47532 // End of memberFunctionString
47533 // Start of memberFunctionString
47534 /* #line 267 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
47535 
47537  // DQ (1/31/2006): Modified to build all types in the memory pools
47538  // static SgTypeSignedShort builtin_type;
47539  // static SgTypeSignedShort* builtin_type;
47540 
47541  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
47542  // since we don't store the type explicitly anymore except in a few IR nodes which have there
47543  // own data member and associated access function.
47544  // static SgTypeSignedShort* get_builtin_type();
47545 
47546  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
47547  // since we don't store the type explicitly anymore except in a few IR nodes which have there
47548  // own data member and associated access function.
47549  // static void set_builtin_type(SgTypeSignedShort* builtin_type);
47550 
47552  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
47553  // static SgTypeSignedShort* createType(void);
47554  static SgTypeSignedShort* createType(SgExpression* optional_fortran_type_kind = NULL);
47555 
47556 
47557 // End of memberFunctionString
47558 
47559 
47560 
47561  public:
47562  virtual ~SgTypeSignedShort();
47563 
47564 
47565  public:
47566  SgTypeSignedShort();
47567 
47568  protected:
47569 // Start of memberFunctionString
47570 static SgTypeSignedShort* p_builtin_type;
47571 
47572 // End of memberFunctionString
47573 
47574 
47575 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
47576 
47577 
47578  };
47579 #endif
47580 
47581 // postdeclarations for SgTypeSignedShort
47582 
47583 /* #line 47584 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
47584 
47585 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
47586 
47587 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
47588 
47589 
47590 /* #line 47591 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
47591 
47592 
47593 
47594 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
47595 
47596 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
47597 // This code is automatically generated for each
47598 // terminal and non-terminal within the defined
47599 // grammar. There is a simple way to change the
47600 // code to fix bugs etc. See the ROSE README file
47601 // for directions.
47602 
47603 // tps: (02/22/2010): Adding DLL export requirements
47604 #include "rosedll.h"
47605 
47606 // predeclarations for SgTypeUnsignedShort
47607 
47608 /* #line 47609 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
47609 
47610 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
47611 
47612 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
47613 
47614 #if 1
47615 // Class Definition for SgTypeUnsignedShort
47616 class ROSE_DLL_API SgTypeUnsignedShort : public SgType
47617  {
47618  public:
47619 
47620 
47621 /* #line 47622 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
47622 
47623  virtual SgNode* copy ( SgCopyHelp& help) const override;
47624 // Start of memberFunctionString
47625 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
47626 
47627 // *** COMMON CODE SECTION BEGINS HERE ***
47628 
47629  public:
47630 
47631  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
47632  // and not required which is required to match the other aspects of the copy mechanism code generation.
47633  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
47634  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
47635  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
47636  // virtual SgNode* copy ( const SgCopyHelp & help) const;
47637 
47639  virtual std::string class_name() const override;
47640 
47642  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
47643 
47645  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
47646  // static const VariantT static_variant = V_SgTypeUnsignedShort;
47647  enum { static_variant = V_SgTypeUnsignedShort };
47648 
47649  /* the generated cast function */
47651  ROSE_DLL_API friend SgTypeUnsignedShort* isSgTypeUnsignedShort( SgNode * s );
47652 
47654  ROSE_DLL_API friend const SgTypeUnsignedShort* isSgTypeUnsignedShort( const SgNode * s );
47655 
47656  // ******************************************
47657  // * Memory Pool / New / Delete
47658  // ******************************************
47659 
47660  public:
47662  static const unsigned pool_size; //
47664  static std::vector<unsigned char *> pools; //
47666  static SgTypeUnsignedShort * next_node; //
47667 
47669  static unsigned long initializeStorageClassArray(SgTypeUnsignedShortStorageClass *); //
47670 
47672  static void clearMemoryPool(); //
47673  static void deleteMemoryPool(); //
47674 
47676  static void extendMemoryPoolForFileIO(); //
47677 
47679  static SgTypeUnsignedShort * getPointerFromGlobalIndex(unsigned long); //
47681  static SgTypeUnsignedShort * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
47682 
47684  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
47686  static void resetValidFreepointers(); //
47688  static unsigned long getNumberOfLastValidPointer(); //
47689 
47690 
47691 #if defined(INLINE_FUNCTIONS)
47692 
47693  inline void *operator new (size_t size);
47694 #else
47695 
47696  void *operator new (size_t size);
47697 #endif
47698 
47699  void operator delete (void* pointer, size_t size);
47700 
47701  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
47702  void operator delete (void* pointer)
47703  {
47704  // This is the generated delete operator...
47705  SgTypeUnsignedShort::operator delete (pointer,sizeof(SgTypeUnsignedShort));
47706  }
47707 
47709  static size_t numberOfNodes();
47710 
47712  static size_t memoryUsage();
47713 
47714  // End of scope which started in IR nodes specific code
47715  /* */
47716 
47717  /* name Internal Functions
47718  \brief Internal functions ... incomplete-documentation
47719 
47720  These functions have been made public as part of the design, but they are suggested for internal use
47721  or by particularly knowledgeable users for specialized tools or applications.
47722 
47723  \internal We could not make these private because they are required by user for special purposes. And
47724  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
47725 
47726  */
47727 
47728  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
47729  // overridden in every class by *generated* implementation
47731  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
47732  // MS: 06/28/02 container of names of variables or container indices
47733  // used used in the traversal to access AST successor nodes
47734  // overridden in every class by *generated* implementation
47737  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
47738 
47739  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
47740  // than all the vector copies. The implementation for these functions is generated for each class.
47742  virtual size_t get_numberOfTraversalSuccessors() override;
47744  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
47746  virtual size_t get_childIndex(SgNode *child) override;
47747 
47748 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
47749  // MS: 08/16/2002 method for generating RTI information
47751  virtual RTIReturnType roseRTI() override;
47752 #endif
47753  /* */
47754 
47755 
47756 
47757  /* name Deprecated Functions
47758  \brief Deprecated functions ... incomplete-documentation
47759 
47760  These functions have been deprecated from use.
47761  */
47762  /* */
47763 
47765  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
47766 
47767  // JJW (10/16/2008): Changed to a single function in Node.code, and put
47768  // getVariant() in #if 0 block to prevent confusing Doxygen
47769 #if 0
47770 
47771  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
47773  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
47774 #endif
47775  /* */
47776 
47777 
47778 
47779 
47780  public:
47781  /* name Traversal Support Functions
47782  \brief Traversal support functions ... incomplete-documentation
47783 
47784  These functions have been made public as part of the design, but they are suggested for internal use
47785  or by particularly knowledgable users for specialized tools or applications.
47786  */
47787  /* */
47788 
47789  // DQ (11/26/2005): Support for visitor pattern mechanims
47790  // (inferior to ROSE traversal mechanism, experimental).
47794 
47795  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
47797  virtual void accept (ROSE_VisitorPattern & visitor) override;
47798 
47799  // DQ (12/26/2005): Support for traversal based on the memory pool
47802  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
47803 
47807 
47808  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
47809  // This traversal helps support internal tools that call static member functions.
47810  // note: this function operates on the memory pools.
47813  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
47814  /* */
47815 
47816 
47817  public:
47818  /* name Memory Allocation Functions
47819  \brief Memory allocations functions ... incomplete-documentation
47820 
47821  These functions have been made public as part of the design, but they are suggested for internal use
47822  or by particularly knowledgable users for specialized tools or applications.
47823  */
47824  /* */
47825 
47836  virtual bool isInMemoryPool() override;
47837 
47848  virtual void checkDataMemberPointersIfInMemoryPool() override;
47849 
47850  // DQ (4/30/2006): Modified to be a const function.
47865  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
47866 
47876  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
47877 
47889  virtual long getChildIndex( SgNode* childNode ) const override;
47890 
47891  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
47892  // comment here (changed to be a C style comment and not be a doxygen comment).
47893  /* \brief Constructor for use by AST File I/O Mechanism
47894 
47895  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
47896  which obtained via fast binary file I/O from disk.
47897  */
47898  // SgTypeUnsignedShort( SgTypeUnsignedShortStorageClass& source );
47899 
47900 
47901 
47902 
47903 
47904  // JH (10/24/2005): methods added to support the ast file IO
47905  private:
47906 
47907  /* name AST Memory Allocation Support Functions
47908  \brief Memory allocations support....
47909 
47910  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
47911  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
47912  and support the AST File I/O Mechanism.
47913  */
47914  /* */
47915 
47916  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
47917  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
47918  that I use the same type everywhere, if any changes are made. THe second one declares the type
47919  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
47920  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
47921  a correspinding one in the AST_FILE_IO class!
47922  */
47923  // DQ (9/2/2015): This typedef is no longer used, we can't define the
47924  // comment here (changed to be a C style comment and not be a doxygen comment).
47925  /* \brief Typedef used for low level memory access.
47926  */
47927  // typedef unsigned char* TestType;
47928 
47929  // DQ (9/2/2015): This typedef is no longer used, we can't define the
47930  // comment here (changed to be a C style comment and not be a doxygen comment).
47931  /* \brief Typedef used to hold memory addresses as values.
47932  */
47933  // typedef unsigned long AddressType;
47934 
47935 
47936 
47937  // necessary, to have direct access to the p_freepointer and the private methods !
47939  friend class AST_FILE_IO;
47940 
47942  friend class SgTypeUnsignedShortStorageClass;
47943 
47945  friend class AstSpecificDataManagingClass;
47946 
47948  friend class AstSpecificDataManagingClassStorageClass;
47949 
47950  public:
47952  SgTypeUnsignedShort( const SgTypeUnsignedShortStorageClass& source );
47953 
47954  // private: // JJW hack
47955  /*
47956  name AST Memory Allocation Support Variables
47957  Memory allocations support variables
47958 
47959  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
47960  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
47961  and support the AST File I/O Mechanism.
47962  */
47963  /* */
47964 
47965  public:
47966 
47967  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
47968  // to current node (so that it will work cleanly with build functions to specify patterns).
47969  // virtual SgNode* addRegExpAttribute();
47976 
47977 // *** COMMON CODE SECTION ENDS HERE ***
47978 
47979 
47980 // End of memberFunctionString
47981 // Start of memberFunctionString
47982 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
47983 
47984  // the generated cast function
47985  // friend ROSE_DLL_API SgTypeUnsignedShort* isSgTypeUnsignedShort ( SgNode* s );
47986 
47987  typedef SgType base_node_type;
47988 
47989 
47990 // End of memberFunctionString
47991 // Start of memberFunctionString
47992 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
47993 
47994  // SgName get_mangled ( SgUnparse_Info & info );
47995 
47997  // SgName get_mangled ( SgUnparse_Info & info );
47998  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
47999  virtual SgName get_mangled (void) const override;
48000 
48001 
48002 
48003 // End of memberFunctionString
48004 // Start of memberFunctionString
48005 /* #line 267 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
48006 
48008  // DQ (1/31/2006): Modified to build all types in the memory pools
48009  // static SgTypeUnsignedShort builtin_type;
48010  // static SgTypeUnsignedShort* builtin_type;
48011 
48012  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
48013  // since we don't store the type explicitly anymore except in a few IR nodes which have there
48014  // own data member and associated access function.
48015  // static SgTypeUnsignedShort* get_builtin_type();
48016 
48017  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
48018  // since we don't store the type explicitly anymore except in a few IR nodes which have there
48019  // own data member and associated access function.
48020  // static void set_builtin_type(SgTypeUnsignedShort* builtin_type);
48021 
48023  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
48024  // static SgTypeUnsignedShort* createType(void);
48025  static SgTypeUnsignedShort* createType(SgExpression* optional_fortran_type_kind = NULL);
48026 
48027 
48028 // End of memberFunctionString
48029 
48030 
48031 
48032  public:
48033  virtual ~SgTypeUnsignedShort();
48034 
48035 
48036  public:
48038 
48039  protected:
48040 // Start of memberFunctionString
48041 static SgTypeUnsignedShort* p_builtin_type;
48042 
48043 // End of memberFunctionString
48044 
48045 
48046 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
48047 
48048 
48049  };
48050 #endif
48051 
48052 // postdeclarations for SgTypeUnsignedShort
48053 
48054 /* #line 48055 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
48055 
48056 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
48057 
48058 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
48059 
48060 
48061 /* #line 48062 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
48062 
48063 
48064 
48065 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
48066 
48067 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
48068 // This code is automatically generated for each
48069 // terminal and non-terminal within the defined
48070 // grammar. There is a simple way to change the
48071 // code to fix bugs etc. See the ROSE README file
48072 // for directions.
48073 
48074 // tps: (02/22/2010): Adding DLL export requirements
48075 #include "rosedll.h"
48076 
48077 // predeclarations for SgTypeInt
48078 
48079 /* #line 48080 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
48080 
48081 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
48082 
48083 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
48084 
48085 #if 1
48086 // Class Definition for SgTypeInt
48087 class ROSE_DLL_API SgTypeInt : public SgType
48088  {
48089  public:
48090 
48091 
48092 /* #line 48093 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
48093 
48094  virtual SgNode* copy ( SgCopyHelp& help) const override;
48095 // Start of memberFunctionString
48096 /* #line 290 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
48097 
48098  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
48099  // since we don't store the type explicitly anymore except in a few IR nodes which have there
48100  // own data member and associated access function.
48101  // static SgTypeInt* get_builtin_type();
48102 
48103  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
48104  // since we don't store the type explicitly anymore except in a few IR nodes which have there
48105  // own data member and associated access function.
48106  // static void set_builtin_type(SgTypeInt* builtin_type);
48107 
48109  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
48110  // static SgTypeInt* createType(int sz = 0);
48111  static SgTypeInt* createType(int sz = 0, SgExpression* optional_fortran_type_kind = NULL);
48112 
48113 
48114 // End of memberFunctionString
48115 // Start of memberFunctionString
48116 /* #line 308 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
48117 
48118  // static SgTypeInt* get_builtin_type();
48119  // static void set_builtin_type(SgTypeInt* builtin_type);
48120 
48122  // Could not use maxBitLength in array size below (so I just used the #define value directly).
48123  // DQ (1/31/2006): Modified to build all types in the memory pools
48124  // static SgTypeInt builtin_type[ROSE_INTEGER_TYPE_MAX_BIT_LENGTH];
48125  // static SgTypeInt* builtin_type[ROSE_INTEGER_TYPE_MAX_BIT_LENGTH];
48126 
48127 
48128 // End of memberFunctionString
48129 // Start of memberFunctionString
48130 /* #line 896 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
48131 
48132  // DQ (12/26/2005): C++ allows initialization in-class of static const, but it is not very portable yet.
48133  // static const int maxBitLength = ROSE_INTEGER_TYPE_MAX_BIT_LENGTH;
48134  static const int maxBitLength; // = ROSE_INTEGER_TYPE_MAX_BIT_LENGTH;
48135 
48136  // DQ (12/26/2005): Supporting function for traverseMemoryPool
48137  // where static IR nodes (only isn soem SgType IR nodes) are
48138  // present and must be traversed using specially generated code.
48139  // virtual void executeVisitorMemberFunctionOnBuiltinData(ROSE_Visitor & visitor);
48140 
48141 
48142 // End of memberFunctionString
48143 // Start of memberFunctionString
48144 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
48145 
48146 // *** COMMON CODE SECTION BEGINS HERE ***
48147 
48148  public:
48149 
48150  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
48151  // and not required which is required to match the other aspects of the copy mechanism code generation.
48152  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
48153  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
48154  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
48155  // virtual SgNode* copy ( const SgCopyHelp & help) const;
48156 
48158  virtual std::string class_name() const override;
48159 
48161  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
48162 
48164  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
48165  // static const VariantT static_variant = V_SgTypeInt;
48166  enum { static_variant = V_SgTypeInt };
48167 
48168  /* the generated cast function */
48170  ROSE_DLL_API friend SgTypeInt* isSgTypeInt( SgNode * s );
48171 
48173  ROSE_DLL_API friend const SgTypeInt* isSgTypeInt( const SgNode * s );
48174 
48175  // ******************************************
48176  // * Memory Pool / New / Delete
48177  // ******************************************
48178 
48179  public:
48181  static const unsigned pool_size; //
48183  static std::vector<unsigned char *> pools; //
48185  static SgTypeInt * next_node; //
48186 
48188  static unsigned long initializeStorageClassArray(SgTypeIntStorageClass *); //
48189 
48191  static void clearMemoryPool(); //
48192  static void deleteMemoryPool(); //
48193 
48195  static void extendMemoryPoolForFileIO(); //
48196 
48198  static SgTypeInt * getPointerFromGlobalIndex(unsigned long); //
48200  static SgTypeInt * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
48201 
48203  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
48205  static void resetValidFreepointers(); //
48207  static unsigned long getNumberOfLastValidPointer(); //
48208 
48209 
48210 #if defined(INLINE_FUNCTIONS)
48211 
48212  inline void *operator new (size_t size);
48213 #else
48214 
48215  void *operator new (size_t size);
48216 #endif
48217 
48218  void operator delete (void* pointer, size_t size);
48219 
48220  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
48221  void operator delete (void* pointer)
48222  {
48223  // This is the generated delete operator...
48224  SgTypeInt::operator delete (pointer,sizeof(SgTypeInt));
48225  }
48226 
48228  static size_t numberOfNodes();
48229 
48231  static size_t memoryUsage();
48232 
48233  // End of scope which started in IR nodes specific code
48234  /* */
48235 
48236  /* name Internal Functions
48237  \brief Internal functions ... incomplete-documentation
48238 
48239  These functions have been made public as part of the design, but they are suggested for internal use
48240  or by particularly knowledgeable users for specialized tools or applications.
48241 
48242  \internal We could not make these private because they are required by user for special purposes. And
48243  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
48244 
48245  */
48246 
48247  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
48248  // overridden in every class by *generated* implementation
48250  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
48251  // MS: 06/28/02 container of names of variables or container indices
48252  // used used in the traversal to access AST successor nodes
48253  // overridden in every class by *generated* implementation
48256  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
48257 
48258  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
48259  // than all the vector copies. The implementation for these functions is generated for each class.
48261  virtual size_t get_numberOfTraversalSuccessors() override;
48263  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
48265  virtual size_t get_childIndex(SgNode *child) override;
48266 
48267 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
48268  // MS: 08/16/2002 method for generating RTI information
48270  virtual RTIReturnType roseRTI() override;
48271 #endif
48272  /* */
48273 
48274 
48275 
48276  /* name Deprecated Functions
48277  \brief Deprecated functions ... incomplete-documentation
48278 
48279  These functions have been deprecated from use.
48280  */
48281  /* */
48282 
48284  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
48285 
48286  // JJW (10/16/2008): Changed to a single function in Node.code, and put
48287  // getVariant() in #if 0 block to prevent confusing Doxygen
48288 #if 0
48289 
48290  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
48292  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
48293 #endif
48294  /* */
48295 
48296 
48297 
48298 
48299  public:
48300  /* name Traversal Support Functions
48301  \brief Traversal support functions ... incomplete-documentation
48302 
48303  These functions have been made public as part of the design, but they are suggested for internal use
48304  or by particularly knowledgable users for specialized tools or applications.
48305  */
48306  /* */
48307 
48308  // DQ (11/26/2005): Support for visitor pattern mechanims
48309  // (inferior to ROSE traversal mechanism, experimental).
48313 
48314  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
48316  virtual void accept (ROSE_VisitorPattern & visitor) override;
48317 
48318  // DQ (12/26/2005): Support for traversal based on the memory pool
48321  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
48322 
48326 
48327  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
48328  // This traversal helps support internal tools that call static member functions.
48329  // note: this function operates on the memory pools.
48332  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
48333  /* */
48334 
48335 
48336  public:
48337  /* name Memory Allocation Functions
48338  \brief Memory allocations functions ... incomplete-documentation
48339 
48340  These functions have been made public as part of the design, but they are suggested for internal use
48341  or by particularly knowledgable users for specialized tools or applications.
48342  */
48343  /* */
48344 
48355  virtual bool isInMemoryPool() override;
48356 
48367  virtual void checkDataMemberPointersIfInMemoryPool() override;
48368 
48369  // DQ (4/30/2006): Modified to be a const function.
48384  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
48385 
48395  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
48396 
48408  virtual long getChildIndex( SgNode* childNode ) const override;
48409 
48410  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
48411  // comment here (changed to be a C style comment and not be a doxygen comment).
48412  /* \brief Constructor for use by AST File I/O Mechanism
48413 
48414  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
48415  which obtained via fast binary file I/O from disk.
48416  */
48417  // SgTypeInt( SgTypeIntStorageClass& source );
48418 
48419 
48420 
48421 
48422 
48423  // JH (10/24/2005): methods added to support the ast file IO
48424  private:
48425 
48426  /* name AST Memory Allocation Support Functions
48427  \brief Memory allocations support....
48428 
48429  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
48430  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
48431  and support the AST File I/O Mechanism.
48432  */
48433  /* */
48434 
48435  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
48436  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
48437  that I use the same type everywhere, if any changes are made. THe second one declares the type
48438  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
48439  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
48440  a correspinding one in the AST_FILE_IO class!
48441  */
48442  // DQ (9/2/2015): This typedef is no longer used, we can't define the
48443  // comment here (changed to be a C style comment and not be a doxygen comment).
48444  /* \brief Typedef used for low level memory access.
48445  */
48446  // typedef unsigned char* TestType;
48447 
48448  // DQ (9/2/2015): This typedef is no longer used, we can't define the
48449  // comment here (changed to be a C style comment and not be a doxygen comment).
48450  /* \brief Typedef used to hold memory addresses as values.
48451  */
48452  // typedef unsigned long AddressType;
48453 
48454 
48455 
48456  // necessary, to have direct access to the p_freepointer and the private methods !
48458  friend class AST_FILE_IO;
48459 
48461  friend class SgTypeIntStorageClass;
48462 
48464  friend class AstSpecificDataManagingClass;
48465 
48467  friend class AstSpecificDataManagingClassStorageClass;
48468 
48469  public:
48471  SgTypeInt( const SgTypeIntStorageClass& source );
48472 
48473  // private: // JJW hack
48474  /*
48475  name AST Memory Allocation Support Variables
48476  Memory allocations support variables
48477 
48478  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
48479  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
48480  and support the AST File I/O Mechanism.
48481  */
48482  /* */
48483 
48484  public:
48485 
48486  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
48487  // to current node (so that it will work cleanly with build functions to specify patterns).
48488  // virtual SgNode* addRegExpAttribute();
48494  SgTypeInt* addRegExpAttribute(std::string s, AstRegExAttribute* a);
48495 
48496 // *** COMMON CODE SECTION ENDS HERE ***
48497 
48498 
48499 // End of memberFunctionString
48500 // Start of memberFunctionString
48501 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
48502 
48503  // the generated cast function
48504  // friend ROSE_DLL_API SgTypeInt* isSgTypeInt ( SgNode* s );
48505 
48506  typedef SgType base_node_type;
48507 
48508 
48509 // End of memberFunctionString
48510 // Start of memberFunctionString
48511 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
48512 
48513  // SgName get_mangled ( SgUnparse_Info & info );
48514 
48516  // SgName get_mangled ( SgUnparse_Info & info );
48517  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
48518  virtual SgName get_mangled (void) const override;
48519 
48520 
48521 
48522 // End of memberFunctionString
48523 
48524 
48525  public:
48526  int get_field_size() const;
48527  void set_field_size(int field_size);
48528 
48529 
48530  public:
48531  virtual ~SgTypeInt();
48532 
48533 
48534  public:
48535  SgTypeInt(int field_size = 0);
48536 
48537  protected:
48538 // Start of memberFunctionString
48539 static SgTypeInt* p_builtin_type;
48540 
48541 // End of memberFunctionString
48542 // Start of memberFunctionString
48543 int p_field_size;
48544 
48545 // End of memberFunctionString
48546 
48547 
48548 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
48549 
48550 
48551  };
48552 #endif
48553 
48554 // postdeclarations for SgTypeInt
48555 
48556 /* #line 48557 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
48557 
48558 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
48559 
48560 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
48561 
48562 
48563 /* #line 48564 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
48564 
48565 
48566 
48567 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
48568 
48569 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
48570 // This code is automatically generated for each
48571 // terminal and non-terminal within the defined
48572 // grammar. There is a simple way to change the
48573 // code to fix bugs etc. See the ROSE README file
48574 // for directions.
48575 
48576 // tps: (02/22/2010): Adding DLL export requirements
48577 #include "rosedll.h"
48578 
48579 // predeclarations for SgTypeSignedInt
48580 
48581 /* #line 48582 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
48582 
48583 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
48584 
48585 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
48586 
48587 #if 1
48588 // Class Definition for SgTypeSignedInt
48589 class ROSE_DLL_API SgTypeSignedInt : public SgType
48590  {
48591  public:
48592 
48593 
48594 /* #line 48595 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
48595 
48596  virtual SgNode* copy ( SgCopyHelp& help) const override;
48597 // Start of memberFunctionString
48598 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
48599 
48600 // *** COMMON CODE SECTION BEGINS HERE ***
48601 
48602  public:
48603 
48604  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
48605  // and not required which is required to match the other aspects of the copy mechanism code generation.
48606  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
48607  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
48608  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
48609  // virtual SgNode* copy ( const SgCopyHelp & help) const;
48610 
48612  virtual std::string class_name() const override;
48613 
48615  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
48616 
48618  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
48619  // static const VariantT static_variant = V_SgTypeSignedInt;
48620  enum { static_variant = V_SgTypeSignedInt };
48621 
48622  /* the generated cast function */
48624  ROSE_DLL_API friend SgTypeSignedInt* isSgTypeSignedInt( SgNode * s );
48625 
48627  ROSE_DLL_API friend const SgTypeSignedInt* isSgTypeSignedInt( const SgNode * s );
48628 
48629  // ******************************************
48630  // * Memory Pool / New / Delete
48631  // ******************************************
48632 
48633  public:
48635  static const unsigned pool_size; //
48637  static std::vector<unsigned char *> pools; //
48639  static SgTypeSignedInt * next_node; //
48640 
48642  static unsigned long initializeStorageClassArray(SgTypeSignedIntStorageClass *); //
48643 
48645  static void clearMemoryPool(); //
48646  static void deleteMemoryPool(); //
48647 
48649  static void extendMemoryPoolForFileIO(); //
48650 
48652  static SgTypeSignedInt * getPointerFromGlobalIndex(unsigned long); //
48654  static SgTypeSignedInt * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
48655 
48657  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
48659  static void resetValidFreepointers(); //
48661  static unsigned long getNumberOfLastValidPointer(); //
48662 
48663 
48664 #if defined(INLINE_FUNCTIONS)
48665 
48666  inline void *operator new (size_t size);
48667 #else
48668 
48669  void *operator new (size_t size);
48670 #endif
48671 
48672  void operator delete (void* pointer, size_t size);
48673 
48674  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
48675  void operator delete (void* pointer)
48676  {
48677  // This is the generated delete operator...
48678  SgTypeSignedInt::operator delete (pointer,sizeof(SgTypeSignedInt));
48679  }
48680 
48682  static size_t numberOfNodes();
48683 
48685  static size_t memoryUsage();
48686 
48687  // End of scope which started in IR nodes specific code
48688  /* */
48689 
48690  /* name Internal Functions
48691  \brief Internal functions ... incomplete-documentation
48692 
48693  These functions have been made public as part of the design, but they are suggested for internal use
48694  or by particularly knowledgeable users for specialized tools or applications.
48695 
48696  \internal We could not make these private because they are required by user for special purposes. And
48697  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
48698 
48699  */
48700 
48701  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
48702  // overridden in every class by *generated* implementation
48704  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
48705  // MS: 06/28/02 container of names of variables or container indices
48706  // used used in the traversal to access AST successor nodes
48707  // overridden in every class by *generated* implementation
48710  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
48711 
48712  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
48713  // than all the vector copies. The implementation for these functions is generated for each class.
48715  virtual size_t get_numberOfTraversalSuccessors() override;
48717  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
48719  virtual size_t get_childIndex(SgNode *child) override;
48720 
48721 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
48722  // MS: 08/16/2002 method for generating RTI information
48724  virtual RTIReturnType roseRTI() override;
48725 #endif
48726  /* */
48727 
48728 
48729 
48730  /* name Deprecated Functions
48731  \brief Deprecated functions ... incomplete-documentation
48732 
48733  These functions have been deprecated from use.
48734  */
48735  /* */
48736 
48738  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
48739 
48740  // JJW (10/16/2008): Changed to a single function in Node.code, and put
48741  // getVariant() in #if 0 block to prevent confusing Doxygen
48742 #if 0
48743 
48744  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
48746  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
48747 #endif
48748  /* */
48749 
48750 
48751 
48752 
48753  public:
48754  /* name Traversal Support Functions
48755  \brief Traversal support functions ... incomplete-documentation
48756 
48757  These functions have been made public as part of the design, but they are suggested for internal use
48758  or by particularly knowledgable users for specialized tools or applications.
48759  */
48760  /* */
48761 
48762  // DQ (11/26/2005): Support for visitor pattern mechanims
48763  // (inferior to ROSE traversal mechanism, experimental).
48767 
48768  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
48770  virtual void accept (ROSE_VisitorPattern & visitor) override;
48771 
48772  // DQ (12/26/2005): Support for traversal based on the memory pool
48775  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
48776 
48780 
48781  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
48782  // This traversal helps support internal tools that call static member functions.
48783  // note: this function operates on the memory pools.
48786  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
48787  /* */
48788 
48789 
48790  public:
48791  /* name Memory Allocation Functions
48792  \brief Memory allocations functions ... incomplete-documentation
48793 
48794  These functions have been made public as part of the design, but they are suggested for internal use
48795  or by particularly knowledgable users for specialized tools or applications.
48796  */
48797  /* */
48798 
48809  virtual bool isInMemoryPool() override;
48810 
48821  virtual void checkDataMemberPointersIfInMemoryPool() override;
48822 
48823  // DQ (4/30/2006): Modified to be a const function.
48838  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
48839 
48849  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
48850 
48862  virtual long getChildIndex( SgNode* childNode ) const override;
48863 
48864  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
48865  // comment here (changed to be a C style comment and not be a doxygen comment).
48866  /* \brief Constructor for use by AST File I/O Mechanism
48867 
48868  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
48869  which obtained via fast binary file I/O from disk.
48870  */
48871  // SgTypeSignedInt( SgTypeSignedIntStorageClass& source );
48872 
48873 
48874 
48875 
48876 
48877  // JH (10/24/2005): methods added to support the ast file IO
48878  private:
48879 
48880  /* name AST Memory Allocation Support Functions
48881  \brief Memory allocations support....
48882 
48883  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
48884  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
48885  and support the AST File I/O Mechanism.
48886  */
48887  /* */
48888 
48889  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
48890  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
48891  that I use the same type everywhere, if any changes are made. THe second one declares the type
48892  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
48893  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
48894  a correspinding one in the AST_FILE_IO class!
48895  */
48896  // DQ (9/2/2015): This typedef is no longer used, we can't define the
48897  // comment here (changed to be a C style comment and not be a doxygen comment).
48898  /* \brief Typedef used for low level memory access.
48899  */
48900  // typedef unsigned char* TestType;
48901 
48902  // DQ (9/2/2015): This typedef is no longer used, we can't define the
48903  // comment here (changed to be a C style comment and not be a doxygen comment).
48904  /* \brief Typedef used to hold memory addresses as values.
48905  */
48906  // typedef unsigned long AddressType;
48907 
48908 
48909 
48910  // necessary, to have direct access to the p_freepointer and the private methods !
48912  friend class AST_FILE_IO;
48913 
48915  friend class SgTypeSignedIntStorageClass;
48916 
48918  friend class AstSpecificDataManagingClass;
48919 
48921  friend class AstSpecificDataManagingClassStorageClass;
48922 
48923  public:
48925  SgTypeSignedInt( const SgTypeSignedIntStorageClass& source );
48926 
48927  // private: // JJW hack
48928  /*
48929  name AST Memory Allocation Support Variables
48930  Memory allocations support variables
48931 
48932  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
48933  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
48934  and support the AST File I/O Mechanism.
48935  */
48936  /* */
48937 
48938  public:
48939 
48940  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
48941  // to current node (so that it will work cleanly with build functions to specify patterns).
48942  // virtual SgNode* addRegExpAttribute();
48949 
48950 // *** COMMON CODE SECTION ENDS HERE ***
48951 
48952 
48953 // End of memberFunctionString
48954 // Start of memberFunctionString
48955 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
48956 
48957  // the generated cast function
48958  // friend ROSE_DLL_API SgTypeSignedInt* isSgTypeSignedInt ( SgNode* s );
48959 
48960  typedef SgType base_node_type;
48961 
48962 
48963 // End of memberFunctionString
48964 // Start of memberFunctionString
48965 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
48966 
48967  // SgName get_mangled ( SgUnparse_Info & info );
48968 
48970  // SgName get_mangled ( SgUnparse_Info & info );
48971  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
48972  virtual SgName get_mangled (void) const override;
48973 
48974 
48975 
48976 // End of memberFunctionString
48977 // Start of memberFunctionString
48978 /* #line 267 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
48979 
48981  // DQ (1/31/2006): Modified to build all types in the memory pools
48982  // static SgTypeSignedInt builtin_type;
48983  // static SgTypeSignedInt* builtin_type;
48984 
48985  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
48986  // since we don't store the type explicitly anymore except in a few IR nodes which have there
48987  // own data member and associated access function.
48988  // static SgTypeSignedInt* get_builtin_type();
48989 
48990  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
48991  // since we don't store the type explicitly anymore except in a few IR nodes which have there
48992  // own data member and associated access function.
48993  // static void set_builtin_type(SgTypeSignedInt* builtin_type);
48994 
48996  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
48997  // static SgTypeSignedInt* createType(void);
48998  static SgTypeSignedInt* createType(SgExpression* optional_fortran_type_kind = NULL);
48999 
49000 
49001 // End of memberFunctionString
49002 
49003 
49004 
49005  public:
49006  virtual ~SgTypeSignedInt();
49007 
49008 
49009  public:
49010  SgTypeSignedInt();
49011 
49012  protected:
49013 // Start of memberFunctionString
49014 static SgTypeSignedInt* p_builtin_type;
49015 
49016 // End of memberFunctionString
49017 
49018 
49019 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
49020 
49021 
49022  };
49023 #endif
49024 
49025 // postdeclarations for SgTypeSignedInt
49026 
49027 /* #line 49028 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
49028 
49029 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
49030 
49031 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
49032 
49033 
49034 /* #line 49035 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
49035 
49036 
49037 
49038 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
49039 
49040 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
49041 // This code is automatically generated for each
49042 // terminal and non-terminal within the defined
49043 // grammar. There is a simple way to change the
49044 // code to fix bugs etc. See the ROSE README file
49045 // for directions.
49046 
49047 // tps: (02/22/2010): Adding DLL export requirements
49048 #include "rosedll.h"
49049 
49050 // predeclarations for SgTypeUnsignedInt
49051 
49052 /* #line 49053 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
49053 
49054 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
49055 
49056 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
49057 
49058 #if 1
49059 // Class Definition for SgTypeUnsignedInt
49060 class ROSE_DLL_API SgTypeUnsignedInt : public SgType
49061  {
49062  public:
49063 
49064 
49065 /* #line 49066 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
49066 
49067  virtual SgNode* copy ( SgCopyHelp& help) const override;
49068 // Start of memberFunctionString
49069 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
49070 
49071 // *** COMMON CODE SECTION BEGINS HERE ***
49072 
49073  public:
49074 
49075  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
49076  // and not required which is required to match the other aspects of the copy mechanism code generation.
49077  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
49078  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
49079  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
49080  // virtual SgNode* copy ( const SgCopyHelp & help) const;
49081 
49083  virtual std::string class_name() const override;
49084 
49086  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
49087 
49089  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
49090  // static const VariantT static_variant = V_SgTypeUnsignedInt;
49091  enum { static_variant = V_SgTypeUnsignedInt };
49092 
49093  /* the generated cast function */
49095  ROSE_DLL_API friend SgTypeUnsignedInt* isSgTypeUnsignedInt( SgNode * s );
49096 
49098  ROSE_DLL_API friend const SgTypeUnsignedInt* isSgTypeUnsignedInt( const SgNode * s );
49099 
49100  // ******************************************
49101  // * Memory Pool / New / Delete
49102  // ******************************************
49103 
49104  public:
49106  static const unsigned pool_size; //
49108  static std::vector<unsigned char *> pools; //
49110  static SgTypeUnsignedInt * next_node; //
49111 
49113  static unsigned long initializeStorageClassArray(SgTypeUnsignedIntStorageClass *); //
49114 
49116  static void clearMemoryPool(); //
49117  static void deleteMemoryPool(); //
49118 
49120  static void extendMemoryPoolForFileIO(); //
49121 
49123  static SgTypeUnsignedInt * getPointerFromGlobalIndex(unsigned long); //
49125  static SgTypeUnsignedInt * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
49126 
49128  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
49130  static void resetValidFreepointers(); //
49132  static unsigned long getNumberOfLastValidPointer(); //
49133 
49134 
49135 #if defined(INLINE_FUNCTIONS)
49136 
49137  inline void *operator new (size_t size);
49138 #else
49139 
49140  void *operator new (size_t size);
49141 #endif
49142 
49143  void operator delete (void* pointer, size_t size);
49144 
49145  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
49146  void operator delete (void* pointer)
49147  {
49148  // This is the generated delete operator...
49149  SgTypeUnsignedInt::operator delete (pointer,sizeof(SgTypeUnsignedInt));
49150  }
49151 
49153  static size_t numberOfNodes();
49154 
49156  static size_t memoryUsage();
49157 
49158  // End of scope which started in IR nodes specific code
49159  /* */
49160 
49161  /* name Internal Functions
49162  \brief Internal functions ... incomplete-documentation
49163 
49164  These functions have been made public as part of the design, but they are suggested for internal use
49165  or by particularly knowledgeable users for specialized tools or applications.
49166 
49167  \internal We could not make these private because they are required by user for special purposes. And
49168  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
49169 
49170  */
49171 
49172  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
49173  // overridden in every class by *generated* implementation
49175  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
49176  // MS: 06/28/02 container of names of variables or container indices
49177  // used used in the traversal to access AST successor nodes
49178  // overridden in every class by *generated* implementation
49181  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
49182 
49183  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
49184  // than all the vector copies. The implementation for these functions is generated for each class.
49186  virtual size_t get_numberOfTraversalSuccessors() override;
49188  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
49190  virtual size_t get_childIndex(SgNode *child) override;
49191 
49192 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
49193  // MS: 08/16/2002 method for generating RTI information
49195  virtual RTIReturnType roseRTI() override;
49196 #endif
49197  /* */
49198 
49199 
49200 
49201  /* name Deprecated Functions
49202  \brief Deprecated functions ... incomplete-documentation
49203 
49204  These functions have been deprecated from use.
49205  */
49206  /* */
49207 
49209  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
49210 
49211  // JJW (10/16/2008): Changed to a single function in Node.code, and put
49212  // getVariant() in #if 0 block to prevent confusing Doxygen
49213 #if 0
49214 
49215  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
49217  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
49218 #endif
49219  /* */
49220 
49221 
49222 
49223 
49224  public:
49225  /* name Traversal Support Functions
49226  \brief Traversal support functions ... incomplete-documentation
49227 
49228  These functions have been made public as part of the design, but they are suggested for internal use
49229  or by particularly knowledgable users for specialized tools or applications.
49230  */
49231  /* */
49232 
49233  // DQ (11/26/2005): Support for visitor pattern mechanims
49234  // (inferior to ROSE traversal mechanism, experimental).
49238 
49239  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
49241  virtual void accept (ROSE_VisitorPattern & visitor) override;
49242 
49243  // DQ (12/26/2005): Support for traversal based on the memory pool
49246  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
49247 
49251 
49252  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
49253  // This traversal helps support internal tools that call static member functions.
49254  // note: this function operates on the memory pools.
49257  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
49258  /* */
49259 
49260 
49261  public:
49262  /* name Memory Allocation Functions
49263  \brief Memory allocations functions ... incomplete-documentation
49264 
49265  These functions have been made public as part of the design, but they are suggested for internal use
49266  or by particularly knowledgable users for specialized tools or applications.
49267  */
49268  /* */
49269 
49280  virtual bool isInMemoryPool() override;
49281 
49292  virtual void checkDataMemberPointersIfInMemoryPool() override;
49293 
49294  // DQ (4/30/2006): Modified to be a const function.
49309  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
49310 
49320  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
49321 
49333  virtual long getChildIndex( SgNode* childNode ) const override;
49334 
49335  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
49336  // comment here (changed to be a C style comment and not be a doxygen comment).
49337  /* \brief Constructor for use by AST File I/O Mechanism
49338 
49339  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
49340  which obtained via fast binary file I/O from disk.
49341  */
49342  // SgTypeUnsignedInt( SgTypeUnsignedIntStorageClass& source );
49343 
49344 
49345 
49346 
49347 
49348  // JH (10/24/2005): methods added to support the ast file IO
49349  private:
49350 
49351  /* name AST Memory Allocation Support Functions
49352  \brief Memory allocations support....
49353 
49354  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
49355  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
49356  and support the AST File I/O Mechanism.
49357  */
49358  /* */
49359 
49360  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
49361  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
49362  that I use the same type everywhere, if any changes are made. THe second one declares the type
49363  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
49364  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
49365  a correspinding one in the AST_FILE_IO class!
49366  */
49367  // DQ (9/2/2015): This typedef is no longer used, we can't define the
49368  // comment here (changed to be a C style comment and not be a doxygen comment).
49369  /* \brief Typedef used for low level memory access.
49370  */
49371  // typedef unsigned char* TestType;
49372 
49373  // DQ (9/2/2015): This typedef is no longer used, we can't define the
49374  // comment here (changed to be a C style comment and not be a doxygen comment).
49375  /* \brief Typedef used to hold memory addresses as values.
49376  */
49377  // typedef unsigned long AddressType;
49378 
49379 
49380 
49381  // necessary, to have direct access to the p_freepointer and the private methods !
49383  friend class AST_FILE_IO;
49384 
49386  friend class SgTypeUnsignedIntStorageClass;
49387 
49389  friend class AstSpecificDataManagingClass;
49390 
49392  friend class AstSpecificDataManagingClassStorageClass;
49393 
49394  public:
49396  SgTypeUnsignedInt( const SgTypeUnsignedIntStorageClass& source );
49397 
49398  // private: // JJW hack
49399  /*
49400  name AST Memory Allocation Support Variables
49401  Memory allocations support variables
49402 
49403  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
49404  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
49405  and support the AST File I/O Mechanism.
49406  */
49407  /* */
49408 
49409  public:
49410 
49411  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
49412  // to current node (so that it will work cleanly with build functions to specify patterns).
49413  // virtual SgNode* addRegExpAttribute();
49420 
49421 // *** COMMON CODE SECTION ENDS HERE ***
49422 
49423 
49424 // End of memberFunctionString
49425 // Start of memberFunctionString
49426 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
49427 
49428  // the generated cast function
49429  // friend ROSE_DLL_API SgTypeUnsignedInt* isSgTypeUnsignedInt ( SgNode* s );
49430 
49431  typedef SgType base_node_type;
49432 
49433 
49434 // End of memberFunctionString
49435 // Start of memberFunctionString
49436 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
49437 
49438  // SgName get_mangled ( SgUnparse_Info & info );
49439 
49441  // SgName get_mangled ( SgUnparse_Info & info );
49442  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
49443  virtual SgName get_mangled (void) const override;
49444 
49445 
49446 
49447 // End of memberFunctionString
49448 // Start of memberFunctionString
49449 /* #line 267 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
49450 
49452  // DQ (1/31/2006): Modified to build all types in the memory pools
49453  // static SgTypeUnsignedInt builtin_type;
49454  // static SgTypeUnsignedInt* builtin_type;
49455 
49456  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
49457  // since we don't store the type explicitly anymore except in a few IR nodes which have there
49458  // own data member and associated access function.
49459  // static SgTypeUnsignedInt* get_builtin_type();
49460 
49461  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
49462  // since we don't store the type explicitly anymore except in a few IR nodes which have there
49463  // own data member and associated access function.
49464  // static void set_builtin_type(SgTypeUnsignedInt* builtin_type);
49465 
49467  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
49468  // static SgTypeUnsignedInt* createType(void);
49469  static SgTypeUnsignedInt* createType(SgExpression* optional_fortran_type_kind = NULL);
49470 
49471 
49472 // End of memberFunctionString
49473 
49474 
49475 
49476  public:
49477  virtual ~SgTypeUnsignedInt();
49478 
49479 
49480  public:
49481  SgTypeUnsignedInt();
49482 
49483  protected:
49484 // Start of memberFunctionString
49485 static SgTypeUnsignedInt* p_builtin_type;
49486 
49487 // End of memberFunctionString
49488 
49489 
49490 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
49491 
49492 
49493  };
49494 #endif
49495 
49496 // postdeclarations for SgTypeUnsignedInt
49497 
49498 /* #line 49499 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
49499 
49500 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
49501 
49502 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
49503 
49504 
49505 /* #line 49506 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
49506 
49507 
49508 
49509 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
49510 
49511 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
49512 // This code is automatically generated for each
49513 // terminal and non-terminal within the defined
49514 // grammar. There is a simple way to change the
49515 // code to fix bugs etc. See the ROSE README file
49516 // for directions.
49517 
49518 // tps: (02/22/2010): Adding DLL export requirements
49519 #include "rosedll.h"
49520 
49521 // predeclarations for SgTypeLong
49522 
49523 /* #line 49524 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
49524 
49525 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
49526 
49527 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
49528 
49529 #if 1
49530 // Class Definition for SgTypeLong
49531 class ROSE_DLL_API SgTypeLong : public SgType
49532  {
49533  public:
49534 
49535 
49536 /* #line 49537 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
49537 
49538  virtual SgNode* copy ( SgCopyHelp& help) const override;
49539 // Start of memberFunctionString
49540 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
49541 
49542 // *** COMMON CODE SECTION BEGINS HERE ***
49543 
49544  public:
49545 
49546  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
49547  // and not required which is required to match the other aspects of the copy mechanism code generation.
49548  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
49549  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
49550  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
49551  // virtual SgNode* copy ( const SgCopyHelp & help) const;
49552 
49554  virtual std::string class_name() const override;
49555 
49557  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
49558 
49560  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
49561  // static const VariantT static_variant = V_SgTypeLong;
49562  enum { static_variant = V_SgTypeLong };
49563 
49564  /* the generated cast function */
49566  ROSE_DLL_API friend SgTypeLong* isSgTypeLong( SgNode * s );
49567 
49569  ROSE_DLL_API friend const SgTypeLong* isSgTypeLong( const SgNode * s );
49570 
49571  // ******************************************
49572  // * Memory Pool / New / Delete
49573  // ******************************************
49574 
49575  public:
49577  static const unsigned pool_size; //
49579  static std::vector<unsigned char *> pools; //
49581  static SgTypeLong * next_node; //
49582 
49584  static unsigned long initializeStorageClassArray(SgTypeLongStorageClass *); //
49585 
49587  static void clearMemoryPool(); //
49588  static void deleteMemoryPool(); //
49589 
49591  static void extendMemoryPoolForFileIO(); //
49592 
49594  static SgTypeLong * getPointerFromGlobalIndex(unsigned long); //
49596  static SgTypeLong * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
49597 
49599  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
49601  static void resetValidFreepointers(); //
49603  static unsigned long getNumberOfLastValidPointer(); //
49604 
49605 
49606 #if defined(INLINE_FUNCTIONS)
49607 
49608  inline void *operator new (size_t size);
49609 #else
49610 
49611  void *operator new (size_t size);
49612 #endif
49613 
49614  void operator delete (void* pointer, size_t size);
49615 
49616  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
49617  void operator delete (void* pointer)
49618  {
49619  // This is the generated delete operator...
49620  SgTypeLong::operator delete (pointer,sizeof(SgTypeLong));
49621  }
49622 
49624  static size_t numberOfNodes();
49625 
49627  static size_t memoryUsage();
49628 
49629  // End of scope which started in IR nodes specific code
49630  /* */
49631 
49632  /* name Internal Functions
49633  \brief Internal functions ... incomplete-documentation
49634 
49635  These functions have been made public as part of the design, but they are suggested for internal use
49636  or by particularly knowledgeable users for specialized tools or applications.
49637 
49638  \internal We could not make these private because they are required by user for special purposes. And
49639  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
49640 
49641  */
49642 
49643  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
49644  // overridden in every class by *generated* implementation
49646  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
49647  // MS: 06/28/02 container of names of variables or container indices
49648  // used used in the traversal to access AST successor nodes
49649  // overridden in every class by *generated* implementation
49652  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
49653 
49654  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
49655  // than all the vector copies. The implementation for these functions is generated for each class.
49657  virtual size_t get_numberOfTraversalSuccessors() override;
49659  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
49661  virtual size_t get_childIndex(SgNode *child) override;
49662 
49663 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
49664  // MS: 08/16/2002 method for generating RTI information
49666  virtual RTIReturnType roseRTI() override;
49667 #endif
49668  /* */
49669 
49670 
49671 
49672  /* name Deprecated Functions
49673  \brief Deprecated functions ... incomplete-documentation
49674 
49675  These functions have been deprecated from use.
49676  */
49677  /* */
49678 
49680  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
49681 
49682  // JJW (10/16/2008): Changed to a single function in Node.code, and put
49683  // getVariant() in #if 0 block to prevent confusing Doxygen
49684 #if 0
49685 
49686  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
49688  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
49689 #endif
49690  /* */
49691 
49692 
49693 
49694 
49695  public:
49696  /* name Traversal Support Functions
49697  \brief Traversal support functions ... incomplete-documentation
49698 
49699  These functions have been made public as part of the design, but they are suggested for internal use
49700  or by particularly knowledgable users for specialized tools or applications.
49701  */
49702  /* */
49703 
49704  // DQ (11/26/2005): Support for visitor pattern mechanims
49705  // (inferior to ROSE traversal mechanism, experimental).
49709 
49710  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
49712  virtual void accept (ROSE_VisitorPattern & visitor) override;
49713 
49714  // DQ (12/26/2005): Support for traversal based on the memory pool
49717  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
49718 
49722 
49723  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
49724  // This traversal helps support internal tools that call static member functions.
49725  // note: this function operates on the memory pools.
49728  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
49729  /* */
49730 
49731 
49732  public:
49733  /* name Memory Allocation Functions
49734  \brief Memory allocations functions ... incomplete-documentation
49735 
49736  These functions have been made public as part of the design, but they are suggested for internal use
49737  or by particularly knowledgable users for specialized tools or applications.
49738  */
49739  /* */
49740 
49751  virtual bool isInMemoryPool() override;
49752 
49763  virtual void checkDataMemberPointersIfInMemoryPool() override;
49764 
49765  // DQ (4/30/2006): Modified to be a const function.
49780  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
49781 
49791  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
49792 
49804  virtual long getChildIndex( SgNode* childNode ) const override;
49805 
49806  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
49807  // comment here (changed to be a C style comment and not be a doxygen comment).
49808  /* \brief Constructor for use by AST File I/O Mechanism
49809 
49810  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
49811  which obtained via fast binary file I/O from disk.
49812  */
49813  // SgTypeLong( SgTypeLongStorageClass& source );
49814 
49815 
49816 
49817 
49818 
49819  // JH (10/24/2005): methods added to support the ast file IO
49820  private:
49821 
49822  /* name AST Memory Allocation Support Functions
49823  \brief Memory allocations support....
49824 
49825  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
49826  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
49827  and support the AST File I/O Mechanism.
49828  */
49829  /* */
49830 
49831  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
49832  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
49833  that I use the same type everywhere, if any changes are made. THe second one declares the type
49834  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
49835  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
49836  a correspinding one in the AST_FILE_IO class!
49837  */
49838  // DQ (9/2/2015): This typedef is no longer used, we can't define the
49839  // comment here (changed to be a C style comment and not be a doxygen comment).
49840  /* \brief Typedef used for low level memory access.
49841  */
49842  // typedef unsigned char* TestType;
49843 
49844  // DQ (9/2/2015): This typedef is no longer used, we can't define the
49845  // comment here (changed to be a C style comment and not be a doxygen comment).
49846  /* \brief Typedef used to hold memory addresses as values.
49847  */
49848  // typedef unsigned long AddressType;
49849 
49850 
49851 
49852  // necessary, to have direct access to the p_freepointer and the private methods !
49854  friend class AST_FILE_IO;
49855 
49857  friend class SgTypeLongStorageClass;
49858 
49860  friend class AstSpecificDataManagingClass;
49861 
49863  friend class AstSpecificDataManagingClassStorageClass;
49864 
49865  public:
49867  SgTypeLong( const SgTypeLongStorageClass& source );
49868 
49869  // private: // JJW hack
49870  /*
49871  name AST Memory Allocation Support Variables
49872  Memory allocations support variables
49873 
49874  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
49875  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
49876  and support the AST File I/O Mechanism.
49877  */
49878  /* */
49879 
49880  public:
49881 
49882  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
49883  // to current node (so that it will work cleanly with build functions to specify patterns).
49884  // virtual SgNode* addRegExpAttribute();
49890  SgTypeLong* addRegExpAttribute(std::string s, AstRegExAttribute* a);
49891 
49892 // *** COMMON CODE SECTION ENDS HERE ***
49893 
49894 
49895 // End of memberFunctionString
49896 // Start of memberFunctionString
49897 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
49898 
49899  // the generated cast function
49900  // friend ROSE_DLL_API SgTypeLong* isSgTypeLong ( SgNode* s );
49901 
49902  typedef SgType base_node_type;
49903 
49904 
49905 // End of memberFunctionString
49906 // Start of memberFunctionString
49907 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
49908 
49909  // SgName get_mangled ( SgUnparse_Info & info );
49910 
49912  // SgName get_mangled ( SgUnparse_Info & info );
49913  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
49914  virtual SgName get_mangled (void) const override;
49915 
49916 
49917 
49918 // End of memberFunctionString
49919 // Start of memberFunctionString
49920 /* #line 267 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
49921 
49923  // DQ (1/31/2006): Modified to build all types in the memory pools
49924  // static SgTypeLong builtin_type;
49925  // static SgTypeLong* builtin_type;
49926 
49927  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
49928  // since we don't store the type explicitly anymore except in a few IR nodes which have there
49929  // own data member and associated access function.
49930  // static SgTypeLong* get_builtin_type();
49931 
49932  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
49933  // since we don't store the type explicitly anymore except in a few IR nodes which have there
49934  // own data member and associated access function.
49935  // static void set_builtin_type(SgTypeLong* builtin_type);
49936 
49938  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
49939  // static SgTypeLong* createType(void);
49940  static SgTypeLong* createType(SgExpression* optional_fortran_type_kind = NULL);
49941 
49942 
49943 // End of memberFunctionString
49944 
49945 
49946 
49947  public:
49948  virtual ~SgTypeLong();
49949 
49950 
49951  public:
49952  SgTypeLong();
49953 
49954  protected:
49955 // Start of memberFunctionString
49956 static SgTypeLong* p_builtin_type;
49957 
49958 // End of memberFunctionString
49959 
49960 
49961 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
49962 
49963 
49964  };
49965 #endif
49966 
49967 // postdeclarations for SgTypeLong
49968 
49969 /* #line 49970 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
49970 
49971 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
49972 
49973 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
49974 
49975 
49976 /* #line 49977 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
49977 
49978 
49979 
49980 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
49981 
49982 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
49983 // This code is automatically generated for each
49984 // terminal and non-terminal within the defined
49985 // grammar. There is a simple way to change the
49986 // code to fix bugs etc. See the ROSE README file
49987 // for directions.
49988 
49989 // tps: (02/22/2010): Adding DLL export requirements
49990 #include "rosedll.h"
49991 
49992 // predeclarations for SgTypeSignedLong
49993 
49994 /* #line 49995 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
49995 
49996 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
49997 
49998 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
49999 
50000 #if 1
50001 // Class Definition for SgTypeSignedLong
50002 class ROSE_DLL_API SgTypeSignedLong : public SgType
50003  {
50004  public:
50005 
50006 
50007 /* #line 50008 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
50008 
50009  virtual SgNode* copy ( SgCopyHelp& help) const override;
50010 // Start of memberFunctionString
50011 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
50012 
50013 // *** COMMON CODE SECTION BEGINS HERE ***
50014 
50015  public:
50016 
50017  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
50018  // and not required which is required to match the other aspects of the copy mechanism code generation.
50019  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
50020  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
50021  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
50022  // virtual SgNode* copy ( const SgCopyHelp & help) const;
50023 
50025  virtual std::string class_name() const override;
50026 
50028  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
50029 
50031  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
50032  // static const VariantT static_variant = V_SgTypeSignedLong;
50033  enum { static_variant = V_SgTypeSignedLong };
50034 
50035  /* the generated cast function */
50037  ROSE_DLL_API friend SgTypeSignedLong* isSgTypeSignedLong( SgNode * s );
50038 
50040  ROSE_DLL_API friend const SgTypeSignedLong* isSgTypeSignedLong( const SgNode * s );
50041 
50042  // ******************************************
50043  // * Memory Pool / New / Delete
50044  // ******************************************
50045 
50046  public:
50048  static const unsigned pool_size; //
50050  static std::vector<unsigned char *> pools; //
50052  static SgTypeSignedLong * next_node; //
50053 
50055  static unsigned long initializeStorageClassArray(SgTypeSignedLongStorageClass *); //
50056 
50058  static void clearMemoryPool(); //
50059  static void deleteMemoryPool(); //
50060 
50062  static void extendMemoryPoolForFileIO(); //
50063 
50065  static SgTypeSignedLong * getPointerFromGlobalIndex(unsigned long); //
50067  static SgTypeSignedLong * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
50068 
50070  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
50072  static void resetValidFreepointers(); //
50074  static unsigned long getNumberOfLastValidPointer(); //
50075 
50076 
50077 #if defined(INLINE_FUNCTIONS)
50078 
50079  inline void *operator new (size_t size);
50080 #else
50081 
50082  void *operator new (size_t size);
50083 #endif
50084 
50085  void operator delete (void* pointer, size_t size);
50086 
50087  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
50088  void operator delete (void* pointer)
50089  {
50090  // This is the generated delete operator...
50091  SgTypeSignedLong::operator delete (pointer,sizeof(SgTypeSignedLong));
50092  }
50093 
50095  static size_t numberOfNodes();
50096 
50098  static size_t memoryUsage();
50099 
50100  // End of scope which started in IR nodes specific code
50101  /* */
50102 
50103  /* name Internal Functions
50104  \brief Internal functions ... incomplete-documentation
50105 
50106  These functions have been made public as part of the design, but they are suggested for internal use
50107  or by particularly knowledgeable users for specialized tools or applications.
50108 
50109  \internal We could not make these private because they are required by user for special purposes. And
50110  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
50111 
50112  */
50113 
50114  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
50115  // overridden in every class by *generated* implementation
50117  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
50118  // MS: 06/28/02 container of names of variables or container indices
50119  // used used in the traversal to access AST successor nodes
50120  // overridden in every class by *generated* implementation
50123  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
50124 
50125  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
50126  // than all the vector copies. The implementation for these functions is generated for each class.
50128  virtual size_t get_numberOfTraversalSuccessors() override;
50130  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
50132  virtual size_t get_childIndex(SgNode *child) override;
50133 
50134 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
50135  // MS: 08/16/2002 method for generating RTI information
50137  virtual RTIReturnType roseRTI() override;
50138 #endif
50139  /* */
50140 
50141 
50142 
50143  /* name Deprecated Functions
50144  \brief Deprecated functions ... incomplete-documentation
50145 
50146  These functions have been deprecated from use.
50147  */
50148  /* */
50149 
50151  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
50152 
50153  // JJW (10/16/2008): Changed to a single function in Node.code, and put
50154  // getVariant() in #if 0 block to prevent confusing Doxygen
50155 #if 0
50156 
50157  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
50159  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
50160 #endif
50161  /* */
50162 
50163 
50164 
50165 
50166  public:
50167  /* name Traversal Support Functions
50168  \brief Traversal support functions ... incomplete-documentation
50169 
50170  These functions have been made public as part of the design, but they are suggested for internal use
50171  or by particularly knowledgable users for specialized tools or applications.
50172  */
50173  /* */
50174 
50175  // DQ (11/26/2005): Support for visitor pattern mechanims
50176  // (inferior to ROSE traversal mechanism, experimental).
50180 
50181  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
50183  virtual void accept (ROSE_VisitorPattern & visitor) override;
50184 
50185  // DQ (12/26/2005): Support for traversal based on the memory pool
50188  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
50189 
50193 
50194  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
50195  // This traversal helps support internal tools that call static member functions.
50196  // note: this function operates on the memory pools.
50199  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
50200  /* */
50201 
50202 
50203  public:
50204  /* name Memory Allocation Functions
50205  \brief Memory allocations functions ... incomplete-documentation
50206 
50207  These functions have been made public as part of the design, but they are suggested for internal use
50208  or by particularly knowledgable users for specialized tools or applications.
50209  */
50210  /* */
50211 
50222  virtual bool isInMemoryPool() override;
50223 
50234  virtual void checkDataMemberPointersIfInMemoryPool() override;
50235 
50236  // DQ (4/30/2006): Modified to be a const function.
50251  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
50252 
50262  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
50263 
50275  virtual long getChildIndex( SgNode* childNode ) const override;
50276 
50277  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
50278  // comment here (changed to be a C style comment and not be a doxygen comment).
50279  /* \brief Constructor for use by AST File I/O Mechanism
50280 
50281  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
50282  which obtained via fast binary file I/O from disk.
50283  */
50284  // SgTypeSignedLong( SgTypeSignedLongStorageClass& source );
50285 
50286 
50287 
50288 
50289 
50290  // JH (10/24/2005): methods added to support the ast file IO
50291  private:
50292 
50293  /* name AST Memory Allocation Support Functions
50294  \brief Memory allocations support....
50295 
50296  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
50297  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
50298  and support the AST File I/O Mechanism.
50299  */
50300  /* */
50301 
50302  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
50303  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
50304  that I use the same type everywhere, if any changes are made. THe second one declares the type
50305  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
50306  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
50307  a correspinding one in the AST_FILE_IO class!
50308  */
50309  // DQ (9/2/2015): This typedef is no longer used, we can't define the
50310  // comment here (changed to be a C style comment and not be a doxygen comment).
50311  /* \brief Typedef used for low level memory access.
50312  */
50313  // typedef unsigned char* TestType;
50314 
50315  // DQ (9/2/2015): This typedef is no longer used, we can't define the
50316  // comment here (changed to be a C style comment and not be a doxygen comment).
50317  /* \brief Typedef used to hold memory addresses as values.
50318  */
50319  // typedef unsigned long AddressType;
50320 
50321 
50322 
50323  // necessary, to have direct access to the p_freepointer and the private methods !
50325  friend class AST_FILE_IO;
50326 
50328  friend class SgTypeSignedLongStorageClass;
50329 
50331  friend class AstSpecificDataManagingClass;
50332 
50334  friend class AstSpecificDataManagingClassStorageClass;
50335 
50336  public:
50338  SgTypeSignedLong( const SgTypeSignedLongStorageClass& source );
50339 
50340  // private: // JJW hack
50341  /*
50342  name AST Memory Allocation Support Variables
50343  Memory allocations support variables
50344 
50345  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
50346  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
50347  and support the AST File I/O Mechanism.
50348  */
50349  /* */
50350 
50351  public:
50352 
50353  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
50354  // to current node (so that it will work cleanly with build functions to specify patterns).
50355  // virtual SgNode* addRegExpAttribute();
50362 
50363 // *** COMMON CODE SECTION ENDS HERE ***
50364 
50365 
50366 // End of memberFunctionString
50367 // Start of memberFunctionString
50368 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
50369 
50370  // the generated cast function
50371  // friend ROSE_DLL_API SgTypeSignedLong* isSgTypeSignedLong ( SgNode* s );
50372 
50373  typedef SgType base_node_type;
50374 
50375 
50376 // End of memberFunctionString
50377 // Start of memberFunctionString
50378 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
50379 
50380  // SgName get_mangled ( SgUnparse_Info & info );
50381 
50383  // SgName get_mangled ( SgUnparse_Info & info );
50384  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
50385  virtual SgName get_mangled (void) const override;
50386 
50387 
50388 
50389 // End of memberFunctionString
50390 // Start of memberFunctionString
50391 /* #line 267 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
50392 
50394  // DQ (1/31/2006): Modified to build all types in the memory pools
50395  // static SgTypeSignedLong builtin_type;
50396  // static SgTypeSignedLong* builtin_type;
50397 
50398  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
50399  // since we don't store the type explicitly anymore except in a few IR nodes which have there
50400  // own data member and associated access function.
50401  // static SgTypeSignedLong* get_builtin_type();
50402 
50403  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
50404  // since we don't store the type explicitly anymore except in a few IR nodes which have there
50405  // own data member and associated access function.
50406  // static void set_builtin_type(SgTypeSignedLong* builtin_type);
50407 
50409  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
50410  // static SgTypeSignedLong* createType(void);
50411  static SgTypeSignedLong* createType(SgExpression* optional_fortran_type_kind = NULL);
50412 
50413 
50414 // End of memberFunctionString
50415 
50416 
50417 
50418  public:
50419  virtual ~SgTypeSignedLong();
50420 
50421 
50422  public:
50423  SgTypeSignedLong();
50424 
50425  protected:
50426 // Start of memberFunctionString
50427 static SgTypeSignedLong* p_builtin_type;
50428 
50429 // End of memberFunctionString
50430 
50431 
50432 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
50433 
50434 
50435  };
50436 #endif
50437 
50438 // postdeclarations for SgTypeSignedLong
50439 
50440 /* #line 50441 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
50441 
50442 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
50443 
50444 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
50445 
50446 
50447 /* #line 50448 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
50448 
50449 
50450 
50451 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
50452 
50453 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
50454 // This code is automatically generated for each
50455 // terminal and non-terminal within the defined
50456 // grammar. There is a simple way to change the
50457 // code to fix bugs etc. See the ROSE README file
50458 // for directions.
50459 
50460 // tps: (02/22/2010): Adding DLL export requirements
50461 #include "rosedll.h"
50462 
50463 // predeclarations for SgTypeUnsignedLong
50464 
50465 /* #line 50466 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
50466 
50467 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
50468 
50469 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
50470 
50471 #if 1
50472 // Class Definition for SgTypeUnsignedLong
50473 class ROSE_DLL_API SgTypeUnsignedLong : public SgType
50474  {
50475  public:
50476 
50477 
50478 /* #line 50479 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
50479 
50480  virtual SgNode* copy ( SgCopyHelp& help) const override;
50481 // Start of memberFunctionString
50482 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
50483 
50484 // *** COMMON CODE SECTION BEGINS HERE ***
50485 
50486  public:
50487 
50488  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
50489  // and not required which is required to match the other aspects of the copy mechanism code generation.
50490  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
50491  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
50492  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
50493  // virtual SgNode* copy ( const SgCopyHelp & help) const;
50494 
50496  virtual std::string class_name() const override;
50497 
50499  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
50500 
50502  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
50503  // static const VariantT static_variant = V_SgTypeUnsignedLong;
50504  enum { static_variant = V_SgTypeUnsignedLong };
50505 
50506  /* the generated cast function */
50508  ROSE_DLL_API friend SgTypeUnsignedLong* isSgTypeUnsignedLong( SgNode * s );
50509 
50511  ROSE_DLL_API friend const SgTypeUnsignedLong* isSgTypeUnsignedLong( const SgNode * s );
50512 
50513  // ******************************************
50514  // * Memory Pool / New / Delete
50515  // ******************************************
50516 
50517  public:
50519  static const unsigned pool_size; //
50521  static std::vector<unsigned char *> pools; //
50523  static SgTypeUnsignedLong * next_node; //
50524 
50526  static unsigned long initializeStorageClassArray(SgTypeUnsignedLongStorageClass *); //
50527 
50529  static void clearMemoryPool(); //
50530  static void deleteMemoryPool(); //
50531 
50533  static void extendMemoryPoolForFileIO(); //
50534 
50536  static SgTypeUnsignedLong * getPointerFromGlobalIndex(unsigned long); //
50538  static SgTypeUnsignedLong * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
50539 
50541  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
50543  static void resetValidFreepointers(); //
50545  static unsigned long getNumberOfLastValidPointer(); //
50546 
50547 
50548 #if defined(INLINE_FUNCTIONS)
50549 
50550  inline void *operator new (size_t size);
50551 #else
50552 
50553  void *operator new (size_t size);
50554 #endif
50555 
50556  void operator delete (void* pointer, size_t size);
50557 
50558  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
50559  void operator delete (void* pointer)
50560  {
50561  // This is the generated delete operator...
50562  SgTypeUnsignedLong::operator delete (pointer,sizeof(SgTypeUnsignedLong));
50563  }
50564 
50566  static size_t numberOfNodes();
50567 
50569  static size_t memoryUsage();
50570 
50571  // End of scope which started in IR nodes specific code
50572  /* */
50573 
50574  /* name Internal Functions
50575  \brief Internal functions ... incomplete-documentation
50576 
50577  These functions have been made public as part of the design, but they are suggested for internal use
50578  or by particularly knowledgeable users for specialized tools or applications.
50579 
50580  \internal We could not make these private because they are required by user for special purposes. And
50581  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
50582 
50583  */
50584 
50585  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
50586  // overridden in every class by *generated* implementation
50588  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
50589  // MS: 06/28/02 container of names of variables or container indices
50590  // used used in the traversal to access AST successor nodes
50591  // overridden in every class by *generated* implementation
50594  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
50595 
50596  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
50597  // than all the vector copies. The implementation for these functions is generated for each class.
50599  virtual size_t get_numberOfTraversalSuccessors() override;
50601  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
50603  virtual size_t get_childIndex(SgNode *child) override;
50604 
50605 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
50606  // MS: 08/16/2002 method for generating RTI information
50608  virtual RTIReturnType roseRTI() override;
50609 #endif
50610  /* */
50611 
50612 
50613 
50614  /* name Deprecated Functions
50615  \brief Deprecated functions ... incomplete-documentation
50616 
50617  These functions have been deprecated from use.
50618  */
50619  /* */
50620 
50622  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
50623 
50624  // JJW (10/16/2008): Changed to a single function in Node.code, and put
50625  // getVariant() in #if 0 block to prevent confusing Doxygen
50626 #if 0
50627 
50628  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
50630  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
50631 #endif
50632  /* */
50633 
50634 
50635 
50636 
50637  public:
50638  /* name Traversal Support Functions
50639  \brief Traversal support functions ... incomplete-documentation
50640 
50641  These functions have been made public as part of the design, but they are suggested for internal use
50642  or by particularly knowledgable users for specialized tools or applications.
50643  */
50644  /* */
50645 
50646  // DQ (11/26/2005): Support for visitor pattern mechanims
50647  // (inferior to ROSE traversal mechanism, experimental).
50651 
50652  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
50654  virtual void accept (ROSE_VisitorPattern & visitor) override;
50655 
50656  // DQ (12/26/2005): Support for traversal based on the memory pool
50659  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
50660 
50664 
50665  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
50666  // This traversal helps support internal tools that call static member functions.
50667  // note: this function operates on the memory pools.
50670  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
50671  /* */
50672 
50673 
50674  public:
50675  /* name Memory Allocation Functions
50676  \brief Memory allocations functions ... incomplete-documentation
50677 
50678  These functions have been made public as part of the design, but they are suggested for internal use
50679  or by particularly knowledgable users for specialized tools or applications.
50680  */
50681  /* */
50682 
50693  virtual bool isInMemoryPool() override;
50694 
50705  virtual void checkDataMemberPointersIfInMemoryPool() override;
50706 
50707  // DQ (4/30/2006): Modified to be a const function.
50722  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
50723 
50733  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
50734 
50746  virtual long getChildIndex( SgNode* childNode ) const override;
50747 
50748  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
50749  // comment here (changed to be a C style comment and not be a doxygen comment).
50750  /* \brief Constructor for use by AST File I/O Mechanism
50751 
50752  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
50753  which obtained via fast binary file I/O from disk.
50754  */
50755  // SgTypeUnsignedLong( SgTypeUnsignedLongStorageClass& source );
50756 
50757 
50758 
50759 
50760 
50761  // JH (10/24/2005): methods added to support the ast file IO
50762  private:
50763 
50764  /* name AST Memory Allocation Support Functions
50765  \brief Memory allocations support....
50766 
50767  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
50768  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
50769  and support the AST File I/O Mechanism.
50770  */
50771  /* */
50772 
50773  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
50774  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
50775  that I use the same type everywhere, if any changes are made. THe second one declares the type
50776  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
50777  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
50778  a correspinding one in the AST_FILE_IO class!
50779  */
50780  // DQ (9/2/2015): This typedef is no longer used, we can't define the
50781  // comment here (changed to be a C style comment and not be a doxygen comment).
50782  /* \brief Typedef used for low level memory access.
50783  */
50784  // typedef unsigned char* TestType;
50785 
50786  // DQ (9/2/2015): This typedef is no longer used, we can't define the
50787  // comment here (changed to be a C style comment and not be a doxygen comment).
50788  /* \brief Typedef used to hold memory addresses as values.
50789  */
50790  // typedef unsigned long AddressType;
50791 
50792 
50793 
50794  // necessary, to have direct access to the p_freepointer and the private methods !
50796  friend class AST_FILE_IO;
50797 
50799  friend class SgTypeUnsignedLongStorageClass;
50800 
50802  friend class AstSpecificDataManagingClass;
50803 
50805  friend class AstSpecificDataManagingClassStorageClass;
50806 
50807  public:
50809  SgTypeUnsignedLong( const SgTypeUnsignedLongStorageClass& source );
50810 
50811  // private: // JJW hack
50812  /*
50813  name AST Memory Allocation Support Variables
50814  Memory allocations support variables
50815 
50816  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
50817  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
50818  and support the AST File I/O Mechanism.
50819  */
50820  /* */
50821 
50822  public:
50823 
50824  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
50825  // to current node (so that it will work cleanly with build functions to specify patterns).
50826  // virtual SgNode* addRegExpAttribute();
50833 
50834 // *** COMMON CODE SECTION ENDS HERE ***
50835 
50836 
50837 // End of memberFunctionString
50838 // Start of memberFunctionString
50839 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
50840 
50841  // the generated cast function
50842  // friend ROSE_DLL_API SgTypeUnsignedLong* isSgTypeUnsignedLong ( SgNode* s );
50843 
50844  typedef SgType base_node_type;
50845 
50846 
50847 // End of memberFunctionString
50848 // Start of memberFunctionString
50849 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
50850 
50851  // SgName get_mangled ( SgUnparse_Info & info );
50852 
50854  // SgName get_mangled ( SgUnparse_Info & info );
50855  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
50856  virtual SgName get_mangled (void) const override;
50857 
50858 
50859 
50860 // End of memberFunctionString
50861 // Start of memberFunctionString
50862 /* #line 267 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
50863 
50865  // DQ (1/31/2006): Modified to build all types in the memory pools
50866  // static SgTypeUnsignedLong builtin_type;
50867  // static SgTypeUnsignedLong* builtin_type;
50868 
50869  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
50870  // since we don't store the type explicitly anymore except in a few IR nodes which have there
50871  // own data member and associated access function.
50872  // static SgTypeUnsignedLong* get_builtin_type();
50873 
50874  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
50875  // since we don't store the type explicitly anymore except in a few IR nodes which have there
50876  // own data member and associated access function.
50877  // static void set_builtin_type(SgTypeUnsignedLong* builtin_type);
50878 
50880  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
50881  // static SgTypeUnsignedLong* createType(void);
50882  static SgTypeUnsignedLong* createType(SgExpression* optional_fortran_type_kind = NULL);
50883 
50884 
50885 // End of memberFunctionString
50886 
50887 
50888 
50889  public:
50890  virtual ~SgTypeUnsignedLong();
50891 
50892 
50893  public:
50894  SgTypeUnsignedLong();
50895 
50896  protected:
50897 // Start of memberFunctionString
50898 static SgTypeUnsignedLong* p_builtin_type;
50899 
50900 // End of memberFunctionString
50901 
50902 
50903 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
50904 
50905 
50906  };
50907 #endif
50908 
50909 // postdeclarations for SgTypeUnsignedLong
50910 
50911 /* #line 50912 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
50912 
50913 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
50914 
50915 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
50916 
50917 
50918 /* #line 50919 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
50919 
50920 
50921 
50922 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
50923 
50924 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
50925 // This code is automatically generated for each
50926 // terminal and non-terminal within the defined
50927 // grammar. There is a simple way to change the
50928 // code to fix bugs etc. See the ROSE README file
50929 // for directions.
50930 
50931 // tps: (02/22/2010): Adding DLL export requirements
50932 #include "rosedll.h"
50933 
50934 // predeclarations for SgTypeVoid
50935 
50936 /* #line 50937 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
50937 
50938 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
50939 
50940 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
50941 
50942 #if 1
50943 // Class Definition for SgTypeVoid
50944 class ROSE_DLL_API SgTypeVoid : public SgType
50945  {
50946  public:
50947 
50948 
50949 /* #line 50950 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
50950 
50951  virtual SgNode* copy ( SgCopyHelp& help) const override;
50952 // Start of memberFunctionString
50953 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
50954 
50955 // *** COMMON CODE SECTION BEGINS HERE ***
50956 
50957  public:
50958 
50959  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
50960  // and not required which is required to match the other aspects of the copy mechanism code generation.
50961  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
50962  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
50963  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
50964  // virtual SgNode* copy ( const SgCopyHelp & help) const;
50965 
50967  virtual std::string class_name() const override;
50968 
50970  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
50971 
50973  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
50974  // static const VariantT static_variant = V_SgTypeVoid;
50975  enum { static_variant = V_SgTypeVoid };
50976 
50977  /* the generated cast function */
50979  ROSE_DLL_API friend SgTypeVoid* isSgTypeVoid( SgNode * s );
50980 
50982  ROSE_DLL_API friend const SgTypeVoid* isSgTypeVoid( const SgNode * s );
50983 
50984  // ******************************************
50985  // * Memory Pool / New / Delete
50986  // ******************************************
50987 
50988  public:
50990  static const unsigned pool_size; //
50992  static std::vector<unsigned char *> pools; //
50994  static SgTypeVoid * next_node; //
50995 
50997  static unsigned long initializeStorageClassArray(SgTypeVoidStorageClass *); //
50998 
51000  static void clearMemoryPool(); //
51001  static void deleteMemoryPool(); //
51002 
51004  static void extendMemoryPoolForFileIO(); //
51005 
51007  static SgTypeVoid * getPointerFromGlobalIndex(unsigned long); //
51009  static SgTypeVoid * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
51010 
51012  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
51014  static void resetValidFreepointers(); //
51016  static unsigned long getNumberOfLastValidPointer(); //
51017 
51018 
51019 #if defined(INLINE_FUNCTIONS)
51020 
51021  inline void *operator new (size_t size);
51022 #else
51023 
51024  void *operator new (size_t size);
51025 #endif
51026 
51027  void operator delete (void* pointer, size_t size);
51028 
51029  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
51030  void operator delete (void* pointer)
51031  {
51032  // This is the generated delete operator...
51033  SgTypeVoid::operator delete (pointer,sizeof(SgTypeVoid));
51034  }
51035 
51037  static size_t numberOfNodes();
51038 
51040  static size_t memoryUsage();
51041 
51042  // End of scope which started in IR nodes specific code
51043  /* */
51044 
51045  /* name Internal Functions
51046  \brief Internal functions ... incomplete-documentation
51047 
51048  These functions have been made public as part of the design, but they are suggested for internal use
51049  or by particularly knowledgeable users for specialized tools or applications.
51050 
51051  \internal We could not make these private because they are required by user for special purposes. And
51052  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
51053 
51054  */
51055 
51056  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
51057  // overridden in every class by *generated* implementation
51059  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
51060  // MS: 06/28/02 container of names of variables or container indices
51061  // used used in the traversal to access AST successor nodes
51062  // overridden in every class by *generated* implementation
51065  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
51066 
51067  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
51068  // than all the vector copies. The implementation for these functions is generated for each class.
51070  virtual size_t get_numberOfTraversalSuccessors() override;
51072  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
51074  virtual size_t get_childIndex(SgNode *child) override;
51075 
51076 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
51077  // MS: 08/16/2002 method for generating RTI information
51079  virtual RTIReturnType roseRTI() override;
51080 #endif
51081  /* */
51082 
51083 
51084 
51085  /* name Deprecated Functions
51086  \brief Deprecated functions ... incomplete-documentation
51087 
51088  These functions have been deprecated from use.
51089  */
51090  /* */
51091 
51093  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
51094 
51095  // JJW (10/16/2008): Changed to a single function in Node.code, and put
51096  // getVariant() in #if 0 block to prevent confusing Doxygen
51097 #if 0
51098 
51099  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
51101  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
51102 #endif
51103  /* */
51104 
51105 
51106 
51107 
51108  public:
51109  /* name Traversal Support Functions
51110  \brief Traversal support functions ... incomplete-documentation
51111 
51112  These functions have been made public as part of the design, but they are suggested for internal use
51113  or by particularly knowledgable users for specialized tools or applications.
51114  */
51115  /* */
51116 
51117  // DQ (11/26/2005): Support for visitor pattern mechanims
51118  // (inferior to ROSE traversal mechanism, experimental).
51122 
51123  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
51125  virtual void accept (ROSE_VisitorPattern & visitor) override;
51126 
51127  // DQ (12/26/2005): Support for traversal based on the memory pool
51130  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
51131 
51135 
51136  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
51137  // This traversal helps support internal tools that call static member functions.
51138  // note: this function operates on the memory pools.
51141  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
51142  /* */
51143 
51144 
51145  public:
51146  /* name Memory Allocation Functions
51147  \brief Memory allocations functions ... incomplete-documentation
51148 
51149  These functions have been made public as part of the design, but they are suggested for internal use
51150  or by particularly knowledgable users for specialized tools or applications.
51151  */
51152  /* */
51153 
51164  virtual bool isInMemoryPool() override;
51165 
51176  virtual void checkDataMemberPointersIfInMemoryPool() override;
51177 
51178  // DQ (4/30/2006): Modified to be a const function.
51193  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
51194 
51204  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
51205 
51217  virtual long getChildIndex( SgNode* childNode ) const override;
51218 
51219  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
51220  // comment here (changed to be a C style comment and not be a doxygen comment).
51221  /* \brief Constructor for use by AST File I/O Mechanism
51222 
51223  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
51224  which obtained via fast binary file I/O from disk.
51225  */
51226  // SgTypeVoid( SgTypeVoidStorageClass& source );
51227 
51228 
51229 
51230 
51231 
51232  // JH (10/24/2005): methods added to support the ast file IO
51233  private:
51234 
51235  /* name AST Memory Allocation Support Functions
51236  \brief Memory allocations support....
51237 
51238  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
51239  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
51240  and support the AST File I/O Mechanism.
51241  */
51242  /* */
51243 
51244  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
51245  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
51246  that I use the same type everywhere, if any changes are made. THe second one declares the type
51247  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
51248  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
51249  a correspinding one in the AST_FILE_IO class!
51250  */
51251  // DQ (9/2/2015): This typedef is no longer used, we can't define the
51252  // comment here (changed to be a C style comment and not be a doxygen comment).
51253  /* \brief Typedef used for low level memory access.
51254  */
51255  // typedef unsigned char* TestType;
51256 
51257  // DQ (9/2/2015): This typedef is no longer used, we can't define the
51258  // comment here (changed to be a C style comment and not be a doxygen comment).
51259  /* \brief Typedef used to hold memory addresses as values.
51260  */
51261  // typedef unsigned long AddressType;
51262 
51263 
51264 
51265  // necessary, to have direct access to the p_freepointer and the private methods !
51267  friend class AST_FILE_IO;
51268 
51270  friend class SgTypeVoidStorageClass;
51271 
51273  friend class AstSpecificDataManagingClass;
51274 
51276  friend class AstSpecificDataManagingClassStorageClass;
51277 
51278  public:
51280  SgTypeVoid( const SgTypeVoidStorageClass& source );
51281 
51282  // private: // JJW hack
51283  /*
51284  name AST Memory Allocation Support Variables
51285  Memory allocations support variables
51286 
51287  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
51288  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
51289  and support the AST File I/O Mechanism.
51290  */
51291  /* */
51292 
51293  public:
51294 
51295  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
51296  // to current node (so that it will work cleanly with build functions to specify patterns).
51297  // virtual SgNode* addRegExpAttribute();
51303  SgTypeVoid* addRegExpAttribute(std::string s, AstRegExAttribute* a);
51304 
51305 // *** COMMON CODE SECTION ENDS HERE ***
51306 
51307 
51308 // End of memberFunctionString
51309 // Start of memberFunctionString
51310 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
51311 
51312  // the generated cast function
51313  // friend ROSE_DLL_API SgTypeVoid* isSgTypeVoid ( SgNode* s );
51314 
51315  typedef SgType base_node_type;
51316 
51317 
51318 // End of memberFunctionString
51319 // Start of memberFunctionString
51320 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
51321 
51322  // SgName get_mangled ( SgUnparse_Info & info );
51323 
51325  // SgName get_mangled ( SgUnparse_Info & info );
51326  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
51327  virtual SgName get_mangled (void) const override;
51328 
51329 
51330 
51331 // End of memberFunctionString
51332 // Start of memberFunctionString
51333 /* #line 267 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
51334 
51336  // DQ (1/31/2006): Modified to build all types in the memory pools
51337  // static SgTypeVoid builtin_type;
51338  // static SgTypeVoid* builtin_type;
51339 
51340  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
51341  // since we don't store the type explicitly anymore except in a few IR nodes which have there
51342  // own data member and associated access function.
51343  // static SgTypeVoid* get_builtin_type();
51344 
51345  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
51346  // since we don't store the type explicitly anymore except in a few IR nodes which have there
51347  // own data member and associated access function.
51348  // static void set_builtin_type(SgTypeVoid* builtin_type);
51349 
51351  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
51352  // static SgTypeVoid* createType(void);
51353  static SgTypeVoid* createType(SgExpression* optional_fortran_type_kind = NULL);
51354 
51355 
51356 // End of memberFunctionString
51357 
51358 
51359 
51360  public:
51361  virtual ~SgTypeVoid();
51362 
51363 
51364  public:
51365  SgTypeVoid();
51366 
51367  protected:
51368 // Start of memberFunctionString
51369 static SgTypeVoid* p_builtin_type;
51370 
51371 // End of memberFunctionString
51372 
51373 
51374 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
51375 
51376 
51377  };
51378 #endif
51379 
51380 // postdeclarations for SgTypeVoid
51381 
51382 /* #line 51383 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
51383 
51384 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
51385 
51386 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
51387 
51388 
51389 /* #line 51390 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
51390 
51391 
51392 
51393 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
51394 
51395 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
51396 // This code is automatically generated for each
51397 // terminal and non-terminal within the defined
51398 // grammar. There is a simple way to change the
51399 // code to fix bugs etc. See the ROSE README file
51400 // for directions.
51401 
51402 // tps: (02/22/2010): Adding DLL export requirements
51403 #include "rosedll.h"
51404 
51405 // predeclarations for SgTypeGlobalVoid
51406 
51407 /* #line 51408 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
51408 
51409 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
51410 
51411 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
51412 
51413 #if 1
51414 // Class Definition for SgTypeGlobalVoid
51415 class ROSE_DLL_API SgTypeGlobalVoid : public SgType
51416  {
51417  public:
51418 
51419 
51420 /* #line 51421 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
51421 
51422  virtual SgNode* copy ( SgCopyHelp& help) const override;
51423 // Start of memberFunctionString
51424 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
51425 
51426 // *** COMMON CODE SECTION BEGINS HERE ***
51427 
51428  public:
51429 
51430  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
51431  // and not required which is required to match the other aspects of the copy mechanism code generation.
51432  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
51433  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
51434  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
51435  // virtual SgNode* copy ( const SgCopyHelp & help) const;
51436 
51438  virtual std::string class_name() const override;
51439 
51441  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
51442 
51444  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
51445  // static const VariantT static_variant = V_SgTypeGlobalVoid;
51446  enum { static_variant = V_SgTypeGlobalVoid };
51447 
51448  /* the generated cast function */
51450  ROSE_DLL_API friend SgTypeGlobalVoid* isSgTypeGlobalVoid( SgNode * s );
51451 
51453  ROSE_DLL_API friend const SgTypeGlobalVoid* isSgTypeGlobalVoid( const SgNode * s );
51454 
51455  // ******************************************
51456  // * Memory Pool / New / Delete
51457  // ******************************************
51458 
51459  public:
51461  static const unsigned pool_size; //
51463  static std::vector<unsigned char *> pools; //
51465  static SgTypeGlobalVoid * next_node; //
51466 
51468  static unsigned long initializeStorageClassArray(SgTypeGlobalVoidStorageClass *); //
51469 
51471  static void clearMemoryPool(); //
51472  static void deleteMemoryPool(); //
51473 
51475  static void extendMemoryPoolForFileIO(); //
51476 
51478  static SgTypeGlobalVoid * getPointerFromGlobalIndex(unsigned long); //
51480  static SgTypeGlobalVoid * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
51481 
51483  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
51485  static void resetValidFreepointers(); //
51487  static unsigned long getNumberOfLastValidPointer(); //
51488 
51489 
51490 #if defined(INLINE_FUNCTIONS)
51491 
51492  inline void *operator new (size_t size);
51493 #else
51494 
51495  void *operator new (size_t size);
51496 #endif
51497 
51498  void operator delete (void* pointer, size_t size);
51499 
51500  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
51501  void operator delete (void* pointer)
51502  {
51503  // This is the generated delete operator...
51504  SgTypeGlobalVoid::operator delete (pointer,sizeof(SgTypeGlobalVoid));
51505  }
51506 
51508  static size_t numberOfNodes();
51509 
51511  static size_t memoryUsage();
51512 
51513  // End of scope which started in IR nodes specific code
51514  /* */
51515 
51516  /* name Internal Functions
51517  \brief Internal functions ... incomplete-documentation
51518 
51519  These functions have been made public as part of the design, but they are suggested for internal use
51520  or by particularly knowledgeable users for specialized tools or applications.
51521 
51522  \internal We could not make these private because they are required by user for special purposes. And
51523  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
51524 
51525  */
51526 
51527  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
51528  // overridden in every class by *generated* implementation
51530  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
51531  // MS: 06/28/02 container of names of variables or container indices
51532  // used used in the traversal to access AST successor nodes
51533  // overridden in every class by *generated* implementation
51536  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
51537 
51538  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
51539  // than all the vector copies. The implementation for these functions is generated for each class.
51541  virtual size_t get_numberOfTraversalSuccessors() override;
51543  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
51545  virtual size_t get_childIndex(SgNode *child) override;
51546 
51547 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
51548  // MS: 08/16/2002 method for generating RTI information
51550  virtual RTIReturnType roseRTI() override;
51551 #endif
51552  /* */
51553 
51554 
51555 
51556  /* name Deprecated Functions
51557  \brief Deprecated functions ... incomplete-documentation
51558 
51559  These functions have been deprecated from use.
51560  */
51561  /* */
51562 
51564  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
51565 
51566  // JJW (10/16/2008): Changed to a single function in Node.code, and put
51567  // getVariant() in #if 0 block to prevent confusing Doxygen
51568 #if 0
51569 
51570  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
51572  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
51573 #endif
51574  /* */
51575 
51576 
51577 
51578 
51579  public:
51580  /* name Traversal Support Functions
51581  \brief Traversal support functions ... incomplete-documentation
51582 
51583  These functions have been made public as part of the design, but they are suggested for internal use
51584  or by particularly knowledgable users for specialized tools or applications.
51585  */
51586  /* */
51587 
51588  // DQ (11/26/2005): Support for visitor pattern mechanims
51589  // (inferior to ROSE traversal mechanism, experimental).
51593 
51594  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
51596  virtual void accept (ROSE_VisitorPattern & visitor) override;
51597 
51598  // DQ (12/26/2005): Support for traversal based on the memory pool
51601  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
51602 
51606 
51607  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
51608  // This traversal helps support internal tools that call static member functions.
51609  // note: this function operates on the memory pools.
51612  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
51613  /* */
51614 
51615 
51616  public:
51617  /* name Memory Allocation Functions
51618  \brief Memory allocations functions ... incomplete-documentation
51619 
51620  These functions have been made public as part of the design, but they are suggested for internal use
51621  or by particularly knowledgable users for specialized tools or applications.
51622  */
51623  /* */
51624 
51635  virtual bool isInMemoryPool() override;
51636 
51647  virtual void checkDataMemberPointersIfInMemoryPool() override;
51648 
51649  // DQ (4/30/2006): Modified to be a const function.
51664  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
51665 
51675  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
51676 
51688  virtual long getChildIndex( SgNode* childNode ) const override;
51689 
51690  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
51691  // comment here (changed to be a C style comment and not be a doxygen comment).
51692  /* \brief Constructor for use by AST File I/O Mechanism
51693 
51694  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
51695  which obtained via fast binary file I/O from disk.
51696  */
51697  // SgTypeGlobalVoid( SgTypeGlobalVoidStorageClass& source );
51698 
51699 
51700 
51701 
51702 
51703  // JH (10/24/2005): methods added to support the ast file IO
51704  private:
51705 
51706  /* name AST Memory Allocation Support Functions
51707  \brief Memory allocations support....
51708 
51709  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
51710  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
51711  and support the AST File I/O Mechanism.
51712  */
51713  /* */
51714 
51715  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
51716  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
51717  that I use the same type everywhere, if any changes are made. THe second one declares the type
51718  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
51719  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
51720  a correspinding one in the AST_FILE_IO class!
51721  */
51722  // DQ (9/2/2015): This typedef is no longer used, we can't define the
51723  // comment here (changed to be a C style comment and not be a doxygen comment).
51724  /* \brief Typedef used for low level memory access.
51725  */
51726  // typedef unsigned char* TestType;
51727 
51728  // DQ (9/2/2015): This typedef is no longer used, we can't define the
51729  // comment here (changed to be a C style comment and not be a doxygen comment).
51730  /* \brief Typedef used to hold memory addresses as values.
51731  */
51732  // typedef unsigned long AddressType;
51733 
51734 
51735 
51736  // necessary, to have direct access to the p_freepointer and the private methods !
51738  friend class AST_FILE_IO;
51739 
51741  friend class SgTypeGlobalVoidStorageClass;
51742 
51744  friend class AstSpecificDataManagingClass;
51745 
51747  friend class AstSpecificDataManagingClassStorageClass;
51748 
51749  public:
51751  SgTypeGlobalVoid( const SgTypeGlobalVoidStorageClass& source );
51752 
51753  // private: // JJW hack
51754  /*
51755  name AST Memory Allocation Support Variables
51756  Memory allocations support variables
51757 
51758  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
51759  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
51760  and support the AST File I/O Mechanism.
51761  */
51762  /* */
51763 
51764  public:
51765 
51766  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
51767  // to current node (so that it will work cleanly with build functions to specify patterns).
51768  // virtual SgNode* addRegExpAttribute();
51775 
51776 // *** COMMON CODE SECTION ENDS HERE ***
51777 
51778 
51779 // End of memberFunctionString
51780 // Start of memberFunctionString
51781 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
51782 
51783  // the generated cast function
51784  // friend ROSE_DLL_API SgTypeGlobalVoid* isSgTypeGlobalVoid ( SgNode* s );
51785 
51786  typedef SgType base_node_type;
51787 
51788 
51789 // End of memberFunctionString
51790 // Start of memberFunctionString
51791 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
51792 
51793  // SgName get_mangled ( SgUnparse_Info & info );
51794 
51796  // SgName get_mangled ( SgUnparse_Info & info );
51797  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
51798  virtual SgName get_mangled (void) const override;
51799 
51800 
51801 
51802 // End of memberFunctionString
51803 // Start of memberFunctionString
51804 /* #line 267 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
51805 
51807  // DQ (1/31/2006): Modified to build all types in the memory pools
51808  // static SgTypeGlobalVoid builtin_type;
51809  // static SgTypeGlobalVoid* builtin_type;
51810 
51811  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
51812  // since we don't store the type explicitly anymore except in a few IR nodes which have there
51813  // own data member and associated access function.
51814  // static SgTypeGlobalVoid* get_builtin_type();
51815 
51816  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
51817  // since we don't store the type explicitly anymore except in a few IR nodes which have there
51818  // own data member and associated access function.
51819  // static void set_builtin_type(SgTypeGlobalVoid* builtin_type);
51820 
51822  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
51823  // static SgTypeGlobalVoid* createType(void);
51824  static SgTypeGlobalVoid* createType(SgExpression* optional_fortran_type_kind = NULL);
51825 
51826 
51827 // End of memberFunctionString
51828 
51829 
51830 
51831  public:
51832  virtual ~SgTypeGlobalVoid();
51833 
51834 
51835  public:
51836  SgTypeGlobalVoid();
51837 
51838  protected:
51839 // Start of memberFunctionString
51840 static SgTypeGlobalVoid* p_builtin_type;
51841 
51842 // End of memberFunctionString
51843 
51844 
51845 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
51846 
51847 
51848  };
51849 #endif
51850 
51851 // postdeclarations for SgTypeGlobalVoid
51852 
51853 /* #line 51854 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
51854 
51855 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
51856 
51857 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
51858 
51859 
51860 /* #line 51861 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
51861 
51862 
51863 
51864 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
51865 
51866 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
51867 // This code is automatically generated for each
51868 // terminal and non-terminal within the defined
51869 // grammar. There is a simple way to change the
51870 // code to fix bugs etc. See the ROSE README file
51871 // for directions.
51872 
51873 // tps: (02/22/2010): Adding DLL export requirements
51874 #include "rosedll.h"
51875 
51876 // predeclarations for SgTypeWchar
51877 
51878 /* #line 51879 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
51879 
51880 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
51881 
51882 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
51883 
51884 #if 1
51885 // Class Definition for SgTypeWchar
51886 class ROSE_DLL_API SgTypeWchar : public SgType
51887  {
51888  public:
51889 
51890 
51891 /* #line 51892 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
51892 
51893  virtual SgNode* copy ( SgCopyHelp& help) const override;
51894 // Start of memberFunctionString
51895 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
51896 
51897 // *** COMMON CODE SECTION BEGINS HERE ***
51898 
51899  public:
51900 
51901  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
51902  // and not required which is required to match the other aspects of the copy mechanism code generation.
51903  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
51904  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
51905  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
51906  // virtual SgNode* copy ( const SgCopyHelp & help) const;
51907 
51909  virtual std::string class_name() const override;
51910 
51912  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
51913 
51915  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
51916  // static const VariantT static_variant = V_SgTypeWchar;
51917  enum { static_variant = V_SgTypeWchar };
51918 
51919  /* the generated cast function */
51921  ROSE_DLL_API friend SgTypeWchar* isSgTypeWchar( SgNode * s );
51922 
51924  ROSE_DLL_API friend const SgTypeWchar* isSgTypeWchar( const SgNode * s );
51925 
51926  // ******************************************
51927  // * Memory Pool / New / Delete
51928  // ******************************************
51929 
51930  public:
51932  static const unsigned pool_size; //
51934  static std::vector<unsigned char *> pools; //
51936  static SgTypeWchar * next_node; //
51937 
51939  static unsigned long initializeStorageClassArray(SgTypeWcharStorageClass *); //
51940 
51942  static void clearMemoryPool(); //
51943  static void deleteMemoryPool(); //
51944 
51946  static void extendMemoryPoolForFileIO(); //
51947 
51949  static SgTypeWchar * getPointerFromGlobalIndex(unsigned long); //
51951  static SgTypeWchar * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
51952 
51954  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
51956  static void resetValidFreepointers(); //
51958  static unsigned long getNumberOfLastValidPointer(); //
51959 
51960 
51961 #if defined(INLINE_FUNCTIONS)
51962 
51963  inline void *operator new (size_t size);
51964 #else
51965 
51966  void *operator new (size_t size);
51967 #endif
51968 
51969  void operator delete (void* pointer, size_t size);
51970 
51971  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
51972  void operator delete (void* pointer)
51973  {
51974  // This is the generated delete operator...
51975  SgTypeWchar::operator delete (pointer,sizeof(SgTypeWchar));
51976  }
51977 
51979  static size_t numberOfNodes();
51980 
51982  static size_t memoryUsage();
51983 
51984  // End of scope which started in IR nodes specific code
51985  /* */
51986 
51987  /* name Internal Functions
51988  \brief Internal functions ... incomplete-documentation
51989 
51990  These functions have been made public as part of the design, but they are suggested for internal use
51991  or by particularly knowledgeable users for specialized tools or applications.
51992 
51993  \internal We could not make these private because they are required by user for special purposes. And
51994  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
51995 
51996  */
51997 
51998  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
51999  // overridden in every class by *generated* implementation
52001  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
52002  // MS: 06/28/02 container of names of variables or container indices
52003  // used used in the traversal to access AST successor nodes
52004  // overridden in every class by *generated* implementation
52007  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
52008 
52009  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
52010  // than all the vector copies. The implementation for these functions is generated for each class.
52012  virtual size_t get_numberOfTraversalSuccessors() override;
52014  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
52016  virtual size_t get_childIndex(SgNode *child) override;
52017 
52018 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
52019  // MS: 08/16/2002 method for generating RTI information
52021  virtual RTIReturnType roseRTI() override;
52022 #endif
52023  /* */
52024 
52025 
52026 
52027  /* name Deprecated Functions
52028  \brief Deprecated functions ... incomplete-documentation
52029 
52030  These functions have been deprecated from use.
52031  */
52032  /* */
52033 
52035  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
52036 
52037  // JJW (10/16/2008): Changed to a single function in Node.code, and put
52038  // getVariant() in #if 0 block to prevent confusing Doxygen
52039 #if 0
52040 
52041  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
52043  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
52044 #endif
52045  /* */
52046 
52047 
52048 
52049 
52050  public:
52051  /* name Traversal Support Functions
52052  \brief Traversal support functions ... incomplete-documentation
52053 
52054  These functions have been made public as part of the design, but they are suggested for internal use
52055  or by particularly knowledgable users for specialized tools or applications.
52056  */
52057  /* */
52058 
52059  // DQ (11/26/2005): Support for visitor pattern mechanims
52060  // (inferior to ROSE traversal mechanism, experimental).
52064 
52065  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
52067  virtual void accept (ROSE_VisitorPattern & visitor) override;
52068 
52069  // DQ (12/26/2005): Support for traversal based on the memory pool
52072  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
52073 
52077 
52078  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
52079  // This traversal helps support internal tools that call static member functions.
52080  // note: this function operates on the memory pools.
52083  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
52084  /* */
52085 
52086 
52087  public:
52088  /* name Memory Allocation Functions
52089  \brief Memory allocations functions ... incomplete-documentation
52090 
52091  These functions have been made public as part of the design, but they are suggested for internal use
52092  or by particularly knowledgable users for specialized tools or applications.
52093  */
52094  /* */
52095 
52106  virtual bool isInMemoryPool() override;
52107 
52118  virtual void checkDataMemberPointersIfInMemoryPool() override;
52119 
52120  // DQ (4/30/2006): Modified to be a const function.
52135  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
52136 
52146  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
52147 
52159  virtual long getChildIndex( SgNode* childNode ) const override;
52160 
52161  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
52162  // comment here (changed to be a C style comment and not be a doxygen comment).
52163  /* \brief Constructor for use by AST File I/O Mechanism
52164 
52165  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
52166  which obtained via fast binary file I/O from disk.
52167  */
52168  // SgTypeWchar( SgTypeWcharStorageClass& source );
52169 
52170 
52171 
52172 
52173 
52174  // JH (10/24/2005): methods added to support the ast file IO
52175  private:
52176 
52177  /* name AST Memory Allocation Support Functions
52178  \brief Memory allocations support....
52179 
52180  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
52181  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
52182  and support the AST File I/O Mechanism.
52183  */
52184  /* */
52185 
52186  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
52187  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
52188  that I use the same type everywhere, if any changes are made. THe second one declares the type
52189  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
52190  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
52191  a correspinding one in the AST_FILE_IO class!
52192  */
52193  // DQ (9/2/2015): This typedef is no longer used, we can't define the
52194  // comment here (changed to be a C style comment and not be a doxygen comment).
52195  /* \brief Typedef used for low level memory access.
52196  */
52197  // typedef unsigned char* TestType;
52198 
52199  // DQ (9/2/2015): This typedef is no longer used, we can't define the
52200  // comment here (changed to be a C style comment and not be a doxygen comment).
52201  /* \brief Typedef used to hold memory addresses as values.
52202  */
52203  // typedef unsigned long AddressType;
52204 
52205 
52206 
52207  // necessary, to have direct access to the p_freepointer and the private methods !
52209  friend class AST_FILE_IO;
52210 
52212  friend class SgTypeWcharStorageClass;
52213 
52215  friend class AstSpecificDataManagingClass;
52216 
52218  friend class AstSpecificDataManagingClassStorageClass;
52219 
52220  public:
52222  SgTypeWchar( const SgTypeWcharStorageClass& source );
52223 
52224  // private: // JJW hack
52225  /*
52226  name AST Memory Allocation Support Variables
52227  Memory allocations support variables
52228 
52229  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
52230  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
52231  and support the AST File I/O Mechanism.
52232  */
52233  /* */
52234 
52235  public:
52236 
52237  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
52238  // to current node (so that it will work cleanly with build functions to specify patterns).
52239  // virtual SgNode* addRegExpAttribute();
52245  SgTypeWchar* addRegExpAttribute(std::string s, AstRegExAttribute* a);
52246 
52247 // *** COMMON CODE SECTION ENDS HERE ***
52248 
52249 
52250 // End of memberFunctionString
52251 // Start of memberFunctionString
52252 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
52253 
52254  // the generated cast function
52255  // friend ROSE_DLL_API SgTypeWchar* isSgTypeWchar ( SgNode* s );
52256 
52257  typedef SgType base_node_type;
52258 
52259 
52260 // End of memberFunctionString
52261 // Start of memberFunctionString
52262 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
52263 
52264  // SgName get_mangled ( SgUnparse_Info & info );
52265 
52267  // SgName get_mangled ( SgUnparse_Info & info );
52268  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
52269  virtual SgName get_mangled (void) const override;
52270 
52271 
52272 
52273 // End of memberFunctionString
52274 // Start of memberFunctionString
52275 /* #line 267 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
52276 
52278  // DQ (1/31/2006): Modified to build all types in the memory pools
52279  // static SgTypeWchar builtin_type;
52280  // static SgTypeWchar* builtin_type;
52281 
52282  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
52283  // since we don't store the type explicitly anymore except in a few IR nodes which have there
52284  // own data member and associated access function.
52285  // static SgTypeWchar* get_builtin_type();
52286 
52287  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
52288  // since we don't store the type explicitly anymore except in a few IR nodes which have there
52289  // own data member and associated access function.
52290  // static void set_builtin_type(SgTypeWchar* builtin_type);
52291 
52293  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
52294  // static SgTypeWchar* createType(void);
52295  static SgTypeWchar* createType(SgExpression* optional_fortran_type_kind = NULL);
52296 
52297 
52298 // End of memberFunctionString
52299 
52300 
52301 
52302  public:
52303  virtual ~SgTypeWchar();
52304 
52305 
52306  public:
52307  SgTypeWchar();
52308 
52309  protected:
52310 // Start of memberFunctionString
52311 static SgTypeWchar* p_builtin_type;
52312 
52313 // End of memberFunctionString
52314 
52315 
52316 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
52317 
52318 
52319  };
52320 #endif
52321 
52322 // postdeclarations for SgTypeWchar
52323 
52324 /* #line 52325 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
52325 
52326 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
52327 
52328 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
52329 
52330 
52331 /* #line 52332 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
52332 
52333 
52334 
52335 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
52336 
52337 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
52338 // This code is automatically generated for each
52339 // terminal and non-terminal within the defined
52340 // grammar. There is a simple way to change the
52341 // code to fix bugs etc. See the ROSE README file
52342 // for directions.
52343 
52344 // tps: (02/22/2010): Adding DLL export requirements
52345 #include "rosedll.h"
52346 
52347 // predeclarations for SgTypeFloat
52348 
52349 /* #line 52350 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
52350 
52351 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
52352 
52353 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
52354 
52355 #if 1
52356 // Class Definition for SgTypeFloat
52357 class ROSE_DLL_API SgTypeFloat : public SgType
52358  {
52359  public:
52360 
52361 
52362 /* #line 52363 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
52363 
52364  virtual SgNode* copy ( SgCopyHelp& help) const override;
52365 // Start of memberFunctionString
52366 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
52367 
52368 // *** COMMON CODE SECTION BEGINS HERE ***
52369 
52370  public:
52371 
52372  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
52373  // and not required which is required to match the other aspects of the copy mechanism code generation.
52374  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
52375  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
52376  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
52377  // virtual SgNode* copy ( const SgCopyHelp & help) const;
52378 
52380  virtual std::string class_name() const override;
52381 
52383  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
52384 
52386  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
52387  // static const VariantT static_variant = V_SgTypeFloat;
52388  enum { static_variant = V_SgTypeFloat };
52389 
52390  /* the generated cast function */
52392  ROSE_DLL_API friend SgTypeFloat* isSgTypeFloat( SgNode * s );
52393 
52395  ROSE_DLL_API friend const SgTypeFloat* isSgTypeFloat( const SgNode * s );
52396 
52397  // ******************************************
52398  // * Memory Pool / New / Delete
52399  // ******************************************
52400 
52401  public:
52403  static const unsigned pool_size; //
52405  static std::vector<unsigned char *> pools; //
52407  static SgTypeFloat * next_node; //
52408 
52410  static unsigned long initializeStorageClassArray(SgTypeFloatStorageClass *); //
52411 
52413  static void clearMemoryPool(); //
52414  static void deleteMemoryPool(); //
52415 
52417  static void extendMemoryPoolForFileIO(); //
52418 
52420  static SgTypeFloat * getPointerFromGlobalIndex(unsigned long); //
52422  static SgTypeFloat * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
52423 
52425  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
52427  static void resetValidFreepointers(); //
52429  static unsigned long getNumberOfLastValidPointer(); //
52430 
52431 
52432 #if defined(INLINE_FUNCTIONS)
52433 
52434  inline void *operator new (size_t size);
52435 #else
52436 
52437  void *operator new (size_t size);
52438 #endif
52439 
52440  void operator delete (void* pointer, size_t size);
52441 
52442  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
52443  void operator delete (void* pointer)
52444  {
52445  // This is the generated delete operator...
52446  SgTypeFloat::operator delete (pointer,sizeof(SgTypeFloat));
52447  }
52448 
52450  static size_t numberOfNodes();
52451 
52453  static size_t memoryUsage();
52454 
52455  // End of scope which started in IR nodes specific code
52456  /* */
52457 
52458  /* name Internal Functions
52459  \brief Internal functions ... incomplete-documentation
52460 
52461  These functions have been made public as part of the design, but they are suggested for internal use
52462  or by particularly knowledgeable users for specialized tools or applications.
52463 
52464  \internal We could not make these private because they are required by user for special purposes. And
52465  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
52466 
52467  */
52468 
52469  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
52470  // overridden in every class by *generated* implementation
52472  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
52473  // MS: 06/28/02 container of names of variables or container indices
52474  // used used in the traversal to access AST successor nodes
52475  // overridden in every class by *generated* implementation
52478  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
52479 
52480  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
52481  // than all the vector copies. The implementation for these functions is generated for each class.
52483  virtual size_t get_numberOfTraversalSuccessors() override;
52485  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
52487  virtual size_t get_childIndex(SgNode *child) override;
52488 
52489 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
52490  // MS: 08/16/2002 method for generating RTI information
52492  virtual RTIReturnType roseRTI() override;
52493 #endif
52494  /* */
52495 
52496 
52497 
52498  /* name Deprecated Functions
52499  \brief Deprecated functions ... incomplete-documentation
52500 
52501  These functions have been deprecated from use.
52502  */
52503  /* */
52504 
52506  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
52507 
52508  // JJW (10/16/2008): Changed to a single function in Node.code, and put
52509  // getVariant() in #if 0 block to prevent confusing Doxygen
52510 #if 0
52511 
52512  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
52514  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
52515 #endif
52516  /* */
52517 
52518 
52519 
52520 
52521  public:
52522  /* name Traversal Support Functions
52523  \brief Traversal support functions ... incomplete-documentation
52524 
52525  These functions have been made public as part of the design, but they are suggested for internal use
52526  or by particularly knowledgable users for specialized tools or applications.
52527  */
52528  /* */
52529 
52530  // DQ (11/26/2005): Support for visitor pattern mechanims
52531  // (inferior to ROSE traversal mechanism, experimental).
52535 
52536  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
52538  virtual void accept (ROSE_VisitorPattern & visitor) override;
52539 
52540  // DQ (12/26/2005): Support for traversal based on the memory pool
52543  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
52544 
52548 
52549  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
52550  // This traversal helps support internal tools that call static member functions.
52551  // note: this function operates on the memory pools.
52554  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
52555  /* */
52556 
52557 
52558  public:
52559  /* name Memory Allocation Functions
52560  \brief Memory allocations functions ... incomplete-documentation
52561 
52562  These functions have been made public as part of the design, but they are suggested for internal use
52563  or by particularly knowledgable users for specialized tools or applications.
52564  */
52565  /* */
52566 
52577  virtual bool isInMemoryPool() override;
52578 
52589  virtual void checkDataMemberPointersIfInMemoryPool() override;
52590 
52591  // DQ (4/30/2006): Modified to be a const function.
52606  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
52607 
52617  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
52618 
52630  virtual long getChildIndex( SgNode* childNode ) const override;
52631 
52632  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
52633  // comment here (changed to be a C style comment and not be a doxygen comment).
52634  /* \brief Constructor for use by AST File I/O Mechanism
52635 
52636  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
52637  which obtained via fast binary file I/O from disk.
52638  */
52639  // SgTypeFloat( SgTypeFloatStorageClass& source );
52640 
52641 
52642 
52643 
52644 
52645  // JH (10/24/2005): methods added to support the ast file IO
52646  private:
52647 
52648  /* name AST Memory Allocation Support Functions
52649  \brief Memory allocations support....
52650 
52651  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
52652  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
52653  and support the AST File I/O Mechanism.
52654  */
52655  /* */
52656 
52657  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
52658  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
52659  that I use the same type everywhere, if any changes are made. THe second one declares the type
52660  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
52661  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
52662  a correspinding one in the AST_FILE_IO class!
52663  */
52664  // DQ (9/2/2015): This typedef is no longer used, we can't define the
52665  // comment here (changed to be a C style comment and not be a doxygen comment).
52666  /* \brief Typedef used for low level memory access.
52667  */
52668  // typedef unsigned char* TestType;
52669 
52670  // DQ (9/2/2015): This typedef is no longer used, we can't define the
52671  // comment here (changed to be a C style comment and not be a doxygen comment).
52672  /* \brief Typedef used to hold memory addresses as values.
52673  */
52674  // typedef unsigned long AddressType;
52675 
52676 
52677 
52678  // necessary, to have direct access to the p_freepointer and the private methods !
52680  friend class AST_FILE_IO;
52681 
52683  friend class SgTypeFloatStorageClass;
52684 
52686  friend class AstSpecificDataManagingClass;
52687 
52689  friend class AstSpecificDataManagingClassStorageClass;
52690 
52691  public:
52693  SgTypeFloat( const SgTypeFloatStorageClass& source );
52694 
52695  // private: // JJW hack
52696  /*
52697  name AST Memory Allocation Support Variables
52698  Memory allocations support variables
52699 
52700  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
52701  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
52702  and support the AST File I/O Mechanism.
52703  */
52704  /* */
52705 
52706  public:
52707 
52708  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
52709  // to current node (so that it will work cleanly with build functions to specify patterns).
52710  // virtual SgNode* addRegExpAttribute();
52716  SgTypeFloat* addRegExpAttribute(std::string s, AstRegExAttribute* a);
52717 
52718 // *** COMMON CODE SECTION ENDS HERE ***
52719 
52720 
52721 // End of memberFunctionString
52722 // Start of memberFunctionString
52723 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
52724 
52725  // the generated cast function
52726  // friend ROSE_DLL_API SgTypeFloat* isSgTypeFloat ( SgNode* s );
52727 
52728  typedef SgType base_node_type;
52729 
52730 
52731 // End of memberFunctionString
52732 // Start of memberFunctionString
52733 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
52734 
52735  // SgName get_mangled ( SgUnparse_Info & info );
52736 
52738  // SgName get_mangled ( SgUnparse_Info & info );
52739  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
52740  virtual SgName get_mangled (void) const override;
52741 
52742 
52743 
52744 // End of memberFunctionString
52745 // Start of memberFunctionString
52746 /* #line 267 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
52747 
52749  // DQ (1/31/2006): Modified to build all types in the memory pools
52750  // static SgTypeFloat builtin_type;
52751  // static SgTypeFloat* builtin_type;
52752 
52753  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
52754  // since we don't store the type explicitly anymore except in a few IR nodes which have there
52755  // own data member and associated access function.
52756  // static SgTypeFloat* get_builtin_type();
52757 
52758  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
52759  // since we don't store the type explicitly anymore except in a few IR nodes which have there
52760  // own data member and associated access function.
52761  // static void set_builtin_type(SgTypeFloat* builtin_type);
52762 
52764  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
52765  // static SgTypeFloat* createType(void);
52766  static SgTypeFloat* createType(SgExpression* optional_fortran_type_kind = NULL);
52767 
52768 
52769 // End of memberFunctionString
52770 
52771 
52772 
52773  public:
52774  virtual ~SgTypeFloat();
52775 
52776 
52777  public:
52778  SgTypeFloat();
52779 
52780  protected:
52781 // Start of memberFunctionString
52782 static SgTypeFloat* p_builtin_type;
52783 
52784 // End of memberFunctionString
52785 
52786 
52787 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
52788 
52789 
52790  };
52791 #endif
52792 
52793 // postdeclarations for SgTypeFloat
52794 
52795 /* #line 52796 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
52796 
52797 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
52798 
52799 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
52800 
52801 
52802 /* #line 52803 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
52803 
52804 
52805 
52806 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
52807 
52808 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
52809 // This code is automatically generated for each
52810 // terminal and non-terminal within the defined
52811 // grammar. There is a simple way to change the
52812 // code to fix bugs etc. See the ROSE README file
52813 // for directions.
52814 
52815 // tps: (02/22/2010): Adding DLL export requirements
52816 #include "rosedll.h"
52817 
52818 // predeclarations for SgTypeDouble
52819 
52820 /* #line 52821 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
52821 
52822 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
52823 
52824 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
52825 
52826 #if 1
52827 // Class Definition for SgTypeDouble
52828 class ROSE_DLL_API SgTypeDouble : public SgType
52829  {
52830  public:
52831 
52832 
52833 /* #line 52834 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
52834 
52835  virtual SgNode* copy ( SgCopyHelp& help) const override;
52836 // Start of memberFunctionString
52837 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
52838 
52839 // *** COMMON CODE SECTION BEGINS HERE ***
52840 
52841  public:
52842 
52843  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
52844  // and not required which is required to match the other aspects of the copy mechanism code generation.
52845  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
52846  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
52847  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
52848  // virtual SgNode* copy ( const SgCopyHelp & help) const;
52849 
52851  virtual std::string class_name() const override;
52852 
52854  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
52855 
52857  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
52858  // static const VariantT static_variant = V_SgTypeDouble;
52859  enum { static_variant = V_SgTypeDouble };
52860 
52861  /* the generated cast function */
52863  ROSE_DLL_API friend SgTypeDouble* isSgTypeDouble( SgNode * s );
52864 
52866  ROSE_DLL_API friend const SgTypeDouble* isSgTypeDouble( const SgNode * s );
52867 
52868  // ******************************************
52869  // * Memory Pool / New / Delete
52870  // ******************************************
52871 
52872  public:
52874  static const unsigned pool_size; //
52876  static std::vector<unsigned char *> pools; //
52878  static SgTypeDouble * next_node; //
52879 
52881  static unsigned long initializeStorageClassArray(SgTypeDoubleStorageClass *); //
52882 
52884  static void clearMemoryPool(); //
52885  static void deleteMemoryPool(); //
52886 
52888  static void extendMemoryPoolForFileIO(); //
52889 
52891  static SgTypeDouble * getPointerFromGlobalIndex(unsigned long); //
52893  static SgTypeDouble * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
52894 
52896  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
52898  static void resetValidFreepointers(); //
52900  static unsigned long getNumberOfLastValidPointer(); //
52901 
52902 
52903 #if defined(INLINE_FUNCTIONS)
52904 
52905  inline void *operator new (size_t size);
52906 #else
52907 
52908  void *operator new (size_t size);
52909 #endif
52910 
52911  void operator delete (void* pointer, size_t size);
52912 
52913  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
52914  void operator delete (void* pointer)
52915  {
52916  // This is the generated delete operator...
52917  SgTypeDouble::operator delete (pointer,sizeof(SgTypeDouble));
52918  }
52919 
52921  static size_t numberOfNodes();
52922 
52924  static size_t memoryUsage();
52925 
52926  // End of scope which started in IR nodes specific code
52927  /* */
52928 
52929  /* name Internal Functions
52930  \brief Internal functions ... incomplete-documentation
52931 
52932  These functions have been made public as part of the design, but they are suggested for internal use
52933  or by particularly knowledgeable users for specialized tools or applications.
52934 
52935  \internal We could not make these private because they are required by user for special purposes. And
52936  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
52937 
52938  */
52939 
52940  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
52941  // overridden in every class by *generated* implementation
52943  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
52944  // MS: 06/28/02 container of names of variables or container indices
52945  // used used in the traversal to access AST successor nodes
52946  // overridden in every class by *generated* implementation
52949  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
52950 
52951  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
52952  // than all the vector copies. The implementation for these functions is generated for each class.
52954  virtual size_t get_numberOfTraversalSuccessors() override;
52956  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
52958  virtual size_t get_childIndex(SgNode *child) override;
52959 
52960 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
52961  // MS: 08/16/2002 method for generating RTI information
52963  virtual RTIReturnType roseRTI() override;
52964 #endif
52965  /* */
52966 
52967 
52968 
52969  /* name Deprecated Functions
52970  \brief Deprecated functions ... incomplete-documentation
52971 
52972  These functions have been deprecated from use.
52973  */
52974  /* */
52975 
52977  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
52978 
52979  // JJW (10/16/2008): Changed to a single function in Node.code, and put
52980  // getVariant() in #if 0 block to prevent confusing Doxygen
52981 #if 0
52982 
52983  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
52985  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
52986 #endif
52987  /* */
52988 
52989 
52990 
52991 
52992  public:
52993  /* name Traversal Support Functions
52994  \brief Traversal support functions ... incomplete-documentation
52995 
52996  These functions have been made public as part of the design, but they are suggested for internal use
52997  or by particularly knowledgable users for specialized tools or applications.
52998  */
52999  /* */
53000 
53001  // DQ (11/26/2005): Support for visitor pattern mechanims
53002  // (inferior to ROSE traversal mechanism, experimental).
53006 
53007  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
53009  virtual void accept (ROSE_VisitorPattern & visitor) override;
53010 
53011  // DQ (12/26/2005): Support for traversal based on the memory pool
53014  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
53015 
53019 
53020  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
53021  // This traversal helps support internal tools that call static member functions.
53022  // note: this function operates on the memory pools.
53025  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
53026  /* */
53027 
53028 
53029  public:
53030  /* name Memory Allocation Functions
53031  \brief Memory allocations functions ... incomplete-documentation
53032 
53033  These functions have been made public as part of the design, but they are suggested for internal use
53034  or by particularly knowledgable users for specialized tools or applications.
53035  */
53036  /* */
53037 
53048  virtual bool isInMemoryPool() override;
53049 
53060  virtual void checkDataMemberPointersIfInMemoryPool() override;
53061 
53062  // DQ (4/30/2006): Modified to be a const function.
53077  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
53078 
53088  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
53089 
53101  virtual long getChildIndex( SgNode* childNode ) const override;
53102 
53103  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
53104  // comment here (changed to be a C style comment and not be a doxygen comment).
53105  /* \brief Constructor for use by AST File I/O Mechanism
53106 
53107  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
53108  which obtained via fast binary file I/O from disk.
53109  */
53110  // SgTypeDouble( SgTypeDoubleStorageClass& source );
53111 
53112 
53113 
53114 
53115 
53116  // JH (10/24/2005): methods added to support the ast file IO
53117  private:
53118 
53119  /* name AST Memory Allocation Support Functions
53120  \brief Memory allocations support....
53121 
53122  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
53123  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
53124  and support the AST File I/O Mechanism.
53125  */
53126  /* */
53127 
53128  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
53129  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
53130  that I use the same type everywhere, if any changes are made. THe second one declares the type
53131  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
53132  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
53133  a correspinding one in the AST_FILE_IO class!
53134  */
53135  // DQ (9/2/2015): This typedef is no longer used, we can't define the
53136  // comment here (changed to be a C style comment and not be a doxygen comment).
53137  /* \brief Typedef used for low level memory access.
53138  */
53139  // typedef unsigned char* TestType;
53140 
53141  // DQ (9/2/2015): This typedef is no longer used, we can't define the
53142  // comment here (changed to be a C style comment and not be a doxygen comment).
53143  /* \brief Typedef used to hold memory addresses as values.
53144  */
53145  // typedef unsigned long AddressType;
53146 
53147 
53148 
53149  // necessary, to have direct access to the p_freepointer and the private methods !
53151  friend class AST_FILE_IO;
53152 
53154  friend class SgTypeDoubleStorageClass;
53155 
53157  friend class AstSpecificDataManagingClass;
53158 
53160  friend class AstSpecificDataManagingClassStorageClass;
53161 
53162  public:
53164  SgTypeDouble( const SgTypeDoubleStorageClass& source );
53165 
53166  // private: // JJW hack
53167  /*
53168  name AST Memory Allocation Support Variables
53169  Memory allocations support variables
53170 
53171  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
53172  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
53173  and support the AST File I/O Mechanism.
53174  */
53175  /* */
53176 
53177  public:
53178 
53179  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
53180  // to current node (so that it will work cleanly with build functions to specify patterns).
53181  // virtual SgNode* addRegExpAttribute();
53188 
53189 // *** COMMON CODE SECTION ENDS HERE ***
53190 
53191 
53192 // End of memberFunctionString
53193 // Start of memberFunctionString
53194 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
53195 
53196  // the generated cast function
53197  // friend ROSE_DLL_API SgTypeDouble* isSgTypeDouble ( SgNode* s );
53198 
53199  typedef SgType base_node_type;
53200 
53201 
53202 // End of memberFunctionString
53203 // Start of memberFunctionString
53204 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
53205 
53206  // SgName get_mangled ( SgUnparse_Info & info );
53207 
53209  // SgName get_mangled ( SgUnparse_Info & info );
53210  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
53211  virtual SgName get_mangled (void) const override;
53212 
53213 
53214 
53215 // End of memberFunctionString
53216 // Start of memberFunctionString
53217 /* #line 267 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
53218 
53220  // DQ (1/31/2006): Modified to build all types in the memory pools
53221  // static SgTypeDouble builtin_type;
53222  // static SgTypeDouble* builtin_type;
53223 
53224  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
53225  // since we don't store the type explicitly anymore except in a few IR nodes which have there
53226  // own data member and associated access function.
53227  // static SgTypeDouble* get_builtin_type();
53228 
53229  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
53230  // since we don't store the type explicitly anymore except in a few IR nodes which have there
53231  // own data member and associated access function.
53232  // static void set_builtin_type(SgTypeDouble* builtin_type);
53233 
53235  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
53236  // static SgTypeDouble* createType(void);
53237  static SgTypeDouble* createType(SgExpression* optional_fortran_type_kind = NULL);
53238 
53239 
53240 // End of memberFunctionString
53241 
53242 
53243 
53244  public:
53245  virtual ~SgTypeDouble();
53246 
53247 
53248  public:
53249  SgTypeDouble();
53250 
53251  protected:
53252 // Start of memberFunctionString
53253 static SgTypeDouble* p_builtin_type;
53254 
53255 // End of memberFunctionString
53256 
53257 
53258 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
53259 
53260 
53261  };
53262 #endif
53263 
53264 // postdeclarations for SgTypeDouble
53265 
53266 /* #line 53267 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
53267 
53268 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
53269 
53270 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
53271 
53272 
53273 /* #line 53274 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
53274 
53275 
53276 
53277 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
53278 
53279 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
53280 // This code is automatically generated for each
53281 // terminal and non-terminal within the defined
53282 // grammar. There is a simple way to change the
53283 // code to fix bugs etc. See the ROSE README file
53284 // for directions.
53285 
53286 // tps: (02/22/2010): Adding DLL export requirements
53287 #include "rosedll.h"
53288 
53289 // predeclarations for SgTypeLongLong
53290 
53291 /* #line 53292 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
53292 
53293 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
53294 
53295 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
53296 
53297 #if 1
53298 // Class Definition for SgTypeLongLong
53299 class ROSE_DLL_API SgTypeLongLong : public SgType
53300  {
53301  public:
53302 
53303 
53304 /* #line 53305 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
53305 
53306  virtual SgNode* copy ( SgCopyHelp& help) const override;
53307 // Start of memberFunctionString
53308 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
53309 
53310 // *** COMMON CODE SECTION BEGINS HERE ***
53311 
53312  public:
53313 
53314  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
53315  // and not required which is required to match the other aspects of the copy mechanism code generation.
53316  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
53317  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
53318  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
53319  // virtual SgNode* copy ( const SgCopyHelp & help) const;
53320 
53322  virtual std::string class_name() const override;
53323 
53325  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
53326 
53328  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
53329  // static const VariantT static_variant = V_SgTypeLongLong;
53330  enum { static_variant = V_SgTypeLongLong };
53331 
53332  /* the generated cast function */
53334  ROSE_DLL_API friend SgTypeLongLong* isSgTypeLongLong( SgNode * s );
53335 
53337  ROSE_DLL_API friend const SgTypeLongLong* isSgTypeLongLong( const SgNode * s );
53338 
53339  // ******************************************
53340  // * Memory Pool / New / Delete
53341  // ******************************************
53342 
53343  public:
53345  static const unsigned pool_size; //
53347  static std::vector<unsigned char *> pools; //
53349  static SgTypeLongLong * next_node; //
53350 
53352  static unsigned long initializeStorageClassArray(SgTypeLongLongStorageClass *); //
53353 
53355  static void clearMemoryPool(); //
53356  static void deleteMemoryPool(); //
53357 
53359  static void extendMemoryPoolForFileIO(); //
53360 
53362  static SgTypeLongLong * getPointerFromGlobalIndex(unsigned long); //
53364  static SgTypeLongLong * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
53365 
53367  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
53369  static void resetValidFreepointers(); //
53371  static unsigned long getNumberOfLastValidPointer(); //
53372 
53373 
53374 #if defined(INLINE_FUNCTIONS)
53375 
53376  inline void *operator new (size_t size);
53377 #else
53378 
53379  void *operator new (size_t size);
53380 #endif
53381 
53382  void operator delete (void* pointer, size_t size);
53383 
53384  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
53385  void operator delete (void* pointer)
53386  {
53387  // This is the generated delete operator...
53388  SgTypeLongLong::operator delete (pointer,sizeof(SgTypeLongLong));
53389  }
53390 
53392  static size_t numberOfNodes();
53393 
53395  static size_t memoryUsage();
53396 
53397  // End of scope which started in IR nodes specific code
53398  /* */
53399 
53400  /* name Internal Functions
53401  \brief Internal functions ... incomplete-documentation
53402 
53403  These functions have been made public as part of the design, but they are suggested for internal use
53404  or by particularly knowledgeable users for specialized tools or applications.
53405 
53406  \internal We could not make these private because they are required by user for special purposes. And
53407  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
53408 
53409  */
53410 
53411  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
53412  // overridden in every class by *generated* implementation
53414  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
53415  // MS: 06/28/02 container of names of variables or container indices
53416  // used used in the traversal to access AST successor nodes
53417  // overridden in every class by *generated* implementation
53420  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
53421 
53422  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
53423  // than all the vector copies. The implementation for these functions is generated for each class.
53425  virtual size_t get_numberOfTraversalSuccessors() override;
53427  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
53429  virtual size_t get_childIndex(SgNode *child) override;
53430 
53431 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
53432  // MS: 08/16/2002 method for generating RTI information
53434  virtual RTIReturnType roseRTI() override;
53435 #endif
53436  /* */
53437 
53438 
53439 
53440  /* name Deprecated Functions
53441  \brief Deprecated functions ... incomplete-documentation
53442 
53443  These functions have been deprecated from use.
53444  */
53445  /* */
53446 
53448  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
53449 
53450  // JJW (10/16/2008): Changed to a single function in Node.code, and put
53451  // getVariant() in #if 0 block to prevent confusing Doxygen
53452 #if 0
53453 
53454  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
53456  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
53457 #endif
53458  /* */
53459 
53460 
53461 
53462 
53463  public:
53464  /* name Traversal Support Functions
53465  \brief Traversal support functions ... incomplete-documentation
53466 
53467  These functions have been made public as part of the design, but they are suggested for internal use
53468  or by particularly knowledgable users for specialized tools or applications.
53469  */
53470  /* */
53471 
53472  // DQ (11/26/2005): Support for visitor pattern mechanims
53473  // (inferior to ROSE traversal mechanism, experimental).
53477 
53478  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
53480  virtual void accept (ROSE_VisitorPattern & visitor) override;
53481 
53482  // DQ (12/26/2005): Support for traversal based on the memory pool
53485  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
53486 
53490 
53491  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
53492  // This traversal helps support internal tools that call static member functions.
53493  // note: this function operates on the memory pools.
53496  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
53497  /* */
53498 
53499 
53500  public:
53501  /* name Memory Allocation Functions
53502  \brief Memory allocations functions ... incomplete-documentation
53503 
53504  These functions have been made public as part of the design, but they are suggested for internal use
53505  or by particularly knowledgable users for specialized tools or applications.
53506  */
53507  /* */
53508 
53519  virtual bool isInMemoryPool() override;
53520 
53531  virtual void checkDataMemberPointersIfInMemoryPool() override;
53532 
53533  // DQ (4/30/2006): Modified to be a const function.
53548  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
53549 
53559  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
53560 
53572  virtual long getChildIndex( SgNode* childNode ) const override;
53573 
53574  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
53575  // comment here (changed to be a C style comment and not be a doxygen comment).
53576  /* \brief Constructor for use by AST File I/O Mechanism
53577 
53578  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
53579  which obtained via fast binary file I/O from disk.
53580  */
53581  // SgTypeLongLong( SgTypeLongLongStorageClass& source );
53582 
53583 
53584 
53585 
53586 
53587  // JH (10/24/2005): methods added to support the ast file IO
53588  private:
53589 
53590  /* name AST Memory Allocation Support Functions
53591  \brief Memory allocations support....
53592 
53593  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
53594  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
53595  and support the AST File I/O Mechanism.
53596  */
53597  /* */
53598 
53599  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
53600  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
53601  that I use the same type everywhere, if any changes are made. THe second one declares the type
53602  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
53603  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
53604  a correspinding one in the AST_FILE_IO class!
53605  */
53606  // DQ (9/2/2015): This typedef is no longer used, we can't define the
53607  // comment here (changed to be a C style comment and not be a doxygen comment).
53608  /* \brief Typedef used for low level memory access.
53609  */
53610  // typedef unsigned char* TestType;
53611 
53612  // DQ (9/2/2015): This typedef is no longer used, we can't define the
53613  // comment here (changed to be a C style comment and not be a doxygen comment).
53614  /* \brief Typedef used to hold memory addresses as values.
53615  */
53616  // typedef unsigned long AddressType;
53617 
53618 
53619 
53620  // necessary, to have direct access to the p_freepointer and the private methods !
53622  friend class AST_FILE_IO;
53623 
53625  friend class SgTypeLongLongStorageClass;
53626 
53628  friend class AstSpecificDataManagingClass;
53629 
53631  friend class AstSpecificDataManagingClassStorageClass;
53632 
53633  public:
53635  SgTypeLongLong( const SgTypeLongLongStorageClass& source );
53636 
53637  // private: // JJW hack
53638  /*
53639  name AST Memory Allocation Support Variables
53640  Memory allocations support variables
53641 
53642  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
53643  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
53644  and support the AST File I/O Mechanism.
53645  */
53646  /* */
53647 
53648  public:
53649 
53650  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
53651  // to current node (so that it will work cleanly with build functions to specify patterns).
53652  // virtual SgNode* addRegExpAttribute();
53659 
53660 // *** COMMON CODE SECTION ENDS HERE ***
53661 
53662 
53663 // End of memberFunctionString
53664 // Start of memberFunctionString
53665 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
53666 
53667  // the generated cast function
53668  // friend ROSE_DLL_API SgTypeLongLong* isSgTypeLongLong ( SgNode* s );
53669 
53670  typedef SgType base_node_type;
53671 
53672 
53673 // End of memberFunctionString
53674 // Start of memberFunctionString
53675 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
53676 
53677  // SgName get_mangled ( SgUnparse_Info & info );
53678 
53680  // SgName get_mangled ( SgUnparse_Info & info );
53681  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
53682  virtual SgName get_mangled (void) const override;
53683 
53684 
53685 
53686 // End of memberFunctionString
53687 // Start of memberFunctionString
53688 /* #line 267 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
53689 
53691  // DQ (1/31/2006): Modified to build all types in the memory pools
53692  // static SgTypeLongLong builtin_type;
53693  // static SgTypeLongLong* builtin_type;
53694 
53695  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
53696  // since we don't store the type explicitly anymore except in a few IR nodes which have there
53697  // own data member and associated access function.
53698  // static SgTypeLongLong* get_builtin_type();
53699 
53700  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
53701  // since we don't store the type explicitly anymore except in a few IR nodes which have there
53702  // own data member and associated access function.
53703  // static void set_builtin_type(SgTypeLongLong* builtin_type);
53704 
53706  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
53707  // static SgTypeLongLong* createType(void);
53708  static SgTypeLongLong* createType(SgExpression* optional_fortran_type_kind = NULL);
53709 
53710 
53711 // End of memberFunctionString
53712 
53713 
53714 
53715  public:
53716  virtual ~SgTypeLongLong();
53717 
53718 
53719  public:
53720  SgTypeLongLong();
53721 
53722  protected:
53723 // Start of memberFunctionString
53724 static SgTypeLongLong* p_builtin_type;
53725 
53726 // End of memberFunctionString
53727 
53728 
53729 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
53730 
53731 
53732  };
53733 #endif
53734 
53735 // postdeclarations for SgTypeLongLong
53736 
53737 /* #line 53738 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
53738 
53739 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
53740 
53741 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
53742 
53743 
53744 /* #line 53745 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
53745 
53746 
53747 
53748 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
53749 
53750 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
53751 // This code is automatically generated for each
53752 // terminal and non-terminal within the defined
53753 // grammar. There is a simple way to change the
53754 // code to fix bugs etc. See the ROSE README file
53755 // for directions.
53756 
53757 // tps: (02/22/2010): Adding DLL export requirements
53758 #include "rosedll.h"
53759 
53760 // predeclarations for SgTypeSignedLongLong
53761 
53762 /* #line 53763 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
53763 
53764 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
53765 
53766 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
53767 
53768 #if 1
53769 // Class Definition for SgTypeSignedLongLong
53770 class ROSE_DLL_API SgTypeSignedLongLong : public SgType
53771  {
53772  public:
53773 
53774 
53775 /* #line 53776 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
53776 
53777  virtual SgNode* copy ( SgCopyHelp& help) const override;
53778 // Start of memberFunctionString
53779 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
53780 
53781 // *** COMMON CODE SECTION BEGINS HERE ***
53782 
53783  public:
53784 
53785  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
53786  // and not required which is required to match the other aspects of the copy mechanism code generation.
53787  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
53788  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
53789  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
53790  // virtual SgNode* copy ( const SgCopyHelp & help) const;
53791 
53793  virtual std::string class_name() const override;
53794 
53796  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
53797 
53799  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
53800  // static const VariantT static_variant = V_SgTypeSignedLongLong;
53801  enum { static_variant = V_SgTypeSignedLongLong };
53802 
53803  /* the generated cast function */
53805  ROSE_DLL_API friend SgTypeSignedLongLong* isSgTypeSignedLongLong( SgNode * s );
53806 
53808  ROSE_DLL_API friend const SgTypeSignedLongLong* isSgTypeSignedLongLong( const SgNode * s );
53809 
53810  // ******************************************
53811  // * Memory Pool / New / Delete
53812  // ******************************************
53813 
53814  public:
53816  static const unsigned pool_size; //
53818  static std::vector<unsigned char *> pools; //
53820  static SgTypeSignedLongLong * next_node; //
53821 
53823  static unsigned long initializeStorageClassArray(SgTypeSignedLongLongStorageClass *); //
53824 
53826  static void clearMemoryPool(); //
53827  static void deleteMemoryPool(); //
53828 
53830  static void extendMemoryPoolForFileIO(); //
53831 
53833  static SgTypeSignedLongLong * getPointerFromGlobalIndex(unsigned long); //
53835  static SgTypeSignedLongLong * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
53836 
53838  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
53840  static void resetValidFreepointers(); //
53842  static unsigned long getNumberOfLastValidPointer(); //
53843 
53844 
53845 #if defined(INLINE_FUNCTIONS)
53846 
53847  inline void *operator new (size_t size);
53848 #else
53849 
53850  void *operator new (size_t size);
53851 #endif
53852 
53853  void operator delete (void* pointer, size_t size);
53854 
53855  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
53856  void operator delete (void* pointer)
53857  {
53858  // This is the generated delete operator...
53859  SgTypeSignedLongLong::operator delete (pointer,sizeof(SgTypeSignedLongLong));
53860  }
53861 
53863  static size_t numberOfNodes();
53864 
53866  static size_t memoryUsage();
53867 
53868  // End of scope which started in IR nodes specific code
53869  /* */
53870 
53871  /* name Internal Functions
53872  \brief Internal functions ... incomplete-documentation
53873 
53874  These functions have been made public as part of the design, but they are suggested for internal use
53875  or by particularly knowledgeable users for specialized tools or applications.
53876 
53877  \internal We could not make these private because they are required by user for special purposes. And
53878  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
53879 
53880  */
53881 
53882  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
53883  // overridden in every class by *generated* implementation
53885  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
53886  // MS: 06/28/02 container of names of variables or container indices
53887  // used used in the traversal to access AST successor nodes
53888  // overridden in every class by *generated* implementation
53891  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
53892 
53893  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
53894  // than all the vector copies. The implementation for these functions is generated for each class.
53896  virtual size_t get_numberOfTraversalSuccessors() override;
53898  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
53900  virtual size_t get_childIndex(SgNode *child) override;
53901 
53902 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
53903  // MS: 08/16/2002 method for generating RTI information
53905  virtual RTIReturnType roseRTI() override;
53906 #endif
53907  /* */
53908 
53909 
53910 
53911  /* name Deprecated Functions
53912  \brief Deprecated functions ... incomplete-documentation
53913 
53914  These functions have been deprecated from use.
53915  */
53916  /* */
53917 
53919  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
53920 
53921  // JJW (10/16/2008): Changed to a single function in Node.code, and put
53922  // getVariant() in #if 0 block to prevent confusing Doxygen
53923 #if 0
53924 
53925  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
53927  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
53928 #endif
53929  /* */
53930 
53931 
53932 
53933 
53934  public:
53935  /* name Traversal Support Functions
53936  \brief Traversal support functions ... incomplete-documentation
53937 
53938  These functions have been made public as part of the design, but they are suggested for internal use
53939  or by particularly knowledgable users for specialized tools or applications.
53940  */
53941  /* */
53942 
53943  // DQ (11/26/2005): Support for visitor pattern mechanims
53944  // (inferior to ROSE traversal mechanism, experimental).
53948 
53949  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
53951  virtual void accept (ROSE_VisitorPattern & visitor) override;
53952 
53953  // DQ (12/26/2005): Support for traversal based on the memory pool
53956  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
53957 
53961 
53962  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
53963  // This traversal helps support internal tools that call static member functions.
53964  // note: this function operates on the memory pools.
53967  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
53968  /* */
53969 
53970 
53971  public:
53972  /* name Memory Allocation Functions
53973  \brief Memory allocations functions ... incomplete-documentation
53974 
53975  These functions have been made public as part of the design, but they are suggested for internal use
53976  or by particularly knowledgable users for specialized tools or applications.
53977  */
53978  /* */
53979 
53990  virtual bool isInMemoryPool() override;
53991 
54002  virtual void checkDataMemberPointersIfInMemoryPool() override;
54003 
54004  // DQ (4/30/2006): Modified to be a const function.
54019  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
54020 
54030  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
54031 
54043  virtual long getChildIndex( SgNode* childNode ) const override;
54044 
54045  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
54046  // comment here (changed to be a C style comment and not be a doxygen comment).
54047  /* \brief Constructor for use by AST File I/O Mechanism
54048 
54049  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
54050  which obtained via fast binary file I/O from disk.
54051  */
54052  // SgTypeSignedLongLong( SgTypeSignedLongLongStorageClass& source );
54053 
54054 
54055 
54056 
54057 
54058  // JH (10/24/2005): methods added to support the ast file IO
54059  private:
54060 
54061  /* name AST Memory Allocation Support Functions
54062  \brief Memory allocations support....
54063 
54064  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
54065  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
54066  and support the AST File I/O Mechanism.
54067  */
54068  /* */
54069 
54070  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
54071  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
54072  that I use the same type everywhere, if any changes are made. THe second one declares the type
54073  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
54074  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
54075  a correspinding one in the AST_FILE_IO class!
54076  */
54077  // DQ (9/2/2015): This typedef is no longer used, we can't define the
54078  // comment here (changed to be a C style comment and not be a doxygen comment).
54079  /* \brief Typedef used for low level memory access.
54080  */
54081  // typedef unsigned char* TestType;
54082 
54083  // DQ (9/2/2015): This typedef is no longer used, we can't define the
54084  // comment here (changed to be a C style comment and not be a doxygen comment).
54085  /* \brief Typedef used to hold memory addresses as values.
54086  */
54087  // typedef unsigned long AddressType;
54088 
54089 
54090 
54091  // necessary, to have direct access to the p_freepointer and the private methods !
54093  friend class AST_FILE_IO;
54094 
54096  friend class SgTypeSignedLongLongStorageClass;
54097 
54099  friend class AstSpecificDataManagingClass;
54100 
54102  friend class AstSpecificDataManagingClassStorageClass;
54103 
54104  public:
54106  SgTypeSignedLongLong( const SgTypeSignedLongLongStorageClass& source );
54107 
54108  // private: // JJW hack
54109  /*
54110  name AST Memory Allocation Support Variables
54111  Memory allocations support variables
54112 
54113  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
54114  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
54115  and support the AST File I/O Mechanism.
54116  */
54117  /* */
54118 
54119  public:
54120 
54121  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
54122  // to current node (so that it will work cleanly with build functions to specify patterns).
54123  // virtual SgNode* addRegExpAttribute();
54130 
54131 // *** COMMON CODE SECTION ENDS HERE ***
54132 
54133 
54134 // End of memberFunctionString
54135 // Start of memberFunctionString
54136 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
54137 
54138  // the generated cast function
54139  // friend ROSE_DLL_API SgTypeSignedLongLong* isSgTypeSignedLongLong ( SgNode* s );
54140 
54141  typedef SgType base_node_type;
54142 
54143 
54144 // End of memberFunctionString
54145 // Start of memberFunctionString
54146 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
54147 
54148  // SgName get_mangled ( SgUnparse_Info & info );
54149 
54151  // SgName get_mangled ( SgUnparse_Info & info );
54152  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
54153  virtual SgName get_mangled (void) const override;
54154 
54155 
54156 
54157 // End of memberFunctionString
54158 // Start of memberFunctionString
54159 /* #line 267 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
54160 
54162  // DQ (1/31/2006): Modified to build all types in the memory pools
54163  // static SgTypeSignedLongLong builtin_type;
54164  // static SgTypeSignedLongLong* builtin_type;
54165 
54166  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
54167  // since we don't store the type explicitly anymore except in a few IR nodes which have there
54168  // own data member and associated access function.
54169  // static SgTypeSignedLongLong* get_builtin_type();
54170 
54171  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
54172  // since we don't store the type explicitly anymore except in a few IR nodes which have there
54173  // own data member and associated access function.
54174  // static void set_builtin_type(SgTypeSignedLongLong* builtin_type);
54175 
54177  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
54178  // static SgTypeSignedLongLong* createType(void);
54179  static SgTypeSignedLongLong* createType(SgExpression* optional_fortran_type_kind = NULL);
54180 
54181 
54182 // End of memberFunctionString
54183 
54184 
54185 
54186  public:
54187  virtual ~SgTypeSignedLongLong();
54188 
54189 
54190  public:
54192 
54193  protected:
54194 // Start of memberFunctionString
54195 static SgTypeSignedLongLong* p_builtin_type;
54196 
54197 // End of memberFunctionString
54198 
54199 
54200 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
54201 
54202 
54203  };
54204 #endif
54205 
54206 // postdeclarations for SgTypeSignedLongLong
54207 
54208 /* #line 54209 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
54209 
54210 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
54211 
54212 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
54213 
54214 
54215 /* #line 54216 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
54216 
54217 
54218 
54219 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
54220 
54221 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
54222 // This code is automatically generated for each
54223 // terminal and non-terminal within the defined
54224 // grammar. There is a simple way to change the
54225 // code to fix bugs etc. See the ROSE README file
54226 // for directions.
54227 
54228 // tps: (02/22/2010): Adding DLL export requirements
54229 #include "rosedll.h"
54230 
54231 // predeclarations for SgTypeUnsignedLongLong
54232 
54233 /* #line 54234 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
54234 
54235 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
54236 
54237 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
54238 
54239 #if 1
54240 // Class Definition for SgTypeUnsignedLongLong
54241 class ROSE_DLL_API SgTypeUnsignedLongLong : public SgType
54242  {
54243  public:
54244 
54245 
54246 /* #line 54247 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
54247 
54248  virtual SgNode* copy ( SgCopyHelp& help) const override;
54249 // Start of memberFunctionString
54250 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
54251 
54252 // *** COMMON CODE SECTION BEGINS HERE ***
54253 
54254  public:
54255 
54256  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
54257  // and not required which is required to match the other aspects of the copy mechanism code generation.
54258  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
54259  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
54260  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
54261  // virtual SgNode* copy ( const SgCopyHelp & help) const;
54262 
54264  virtual std::string class_name() const override;
54265 
54267  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
54268 
54270  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
54271  // static const VariantT static_variant = V_SgTypeUnsignedLongLong;
54272  enum { static_variant = V_SgTypeUnsignedLongLong };
54273 
54274  /* the generated cast function */
54276  ROSE_DLL_API friend SgTypeUnsignedLongLong* isSgTypeUnsignedLongLong( SgNode * s );
54277 
54279  ROSE_DLL_API friend const SgTypeUnsignedLongLong* isSgTypeUnsignedLongLong( const SgNode * s );
54280 
54281  // ******************************************
54282  // * Memory Pool / New / Delete
54283  // ******************************************
54284 
54285  public:
54287  static const unsigned pool_size; //
54289  static std::vector<unsigned char *> pools; //
54291  static SgTypeUnsignedLongLong * next_node; //
54292 
54294  static unsigned long initializeStorageClassArray(SgTypeUnsignedLongLongStorageClass *); //
54295 
54297  static void clearMemoryPool(); //
54298  static void deleteMemoryPool(); //
54299 
54301  static void extendMemoryPoolForFileIO(); //
54302 
54304  static SgTypeUnsignedLongLong * getPointerFromGlobalIndex(unsigned long); //
54306  static SgTypeUnsignedLongLong * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
54307 
54309  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
54311  static void resetValidFreepointers(); //
54313  static unsigned long getNumberOfLastValidPointer(); //
54314 
54315 
54316 #if defined(INLINE_FUNCTIONS)
54317 
54318  inline void *operator new (size_t size);
54319 #else
54320 
54321  void *operator new (size_t size);
54322 #endif
54323 
54324  void operator delete (void* pointer, size_t size);
54325 
54326  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
54327  void operator delete (void* pointer)
54328  {
54329  // This is the generated delete operator...
54330  SgTypeUnsignedLongLong::operator delete (pointer,sizeof(SgTypeUnsignedLongLong));
54331  }
54332 
54334  static size_t numberOfNodes();
54335 
54337  static size_t memoryUsage();
54338 
54339  // End of scope which started in IR nodes specific code
54340  /* */
54341 
54342  /* name Internal Functions
54343  \brief Internal functions ... incomplete-documentation
54344 
54345  These functions have been made public as part of the design, but they are suggested for internal use
54346  or by particularly knowledgeable users for specialized tools or applications.
54347 
54348  \internal We could not make these private because they are required by user for special purposes. And
54349  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
54350 
54351  */
54352 
54353  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
54354  // overridden in every class by *generated* implementation
54356  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
54357  // MS: 06/28/02 container of names of variables or container indices
54358  // used used in the traversal to access AST successor nodes
54359  // overridden in every class by *generated* implementation
54362  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
54363 
54364  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
54365  // than all the vector copies. The implementation for these functions is generated for each class.
54367  virtual size_t get_numberOfTraversalSuccessors() override;
54369  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
54371  virtual size_t get_childIndex(SgNode *child) override;
54372 
54373 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
54374  // MS: 08/16/2002 method for generating RTI information
54376  virtual RTIReturnType roseRTI() override;
54377 #endif
54378  /* */
54379 
54380 
54381 
54382  /* name Deprecated Functions
54383  \brief Deprecated functions ... incomplete-documentation
54384 
54385  These functions have been deprecated from use.
54386  */
54387  /* */
54388 
54390  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
54391 
54392  // JJW (10/16/2008): Changed to a single function in Node.code, and put
54393  // getVariant() in #if 0 block to prevent confusing Doxygen
54394 #if 0
54395 
54396  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
54398  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
54399 #endif
54400  /* */
54401 
54402 
54403 
54404 
54405  public:
54406  /* name Traversal Support Functions
54407  \brief Traversal support functions ... incomplete-documentation
54408 
54409  These functions have been made public as part of the design, but they are suggested for internal use
54410  or by particularly knowledgable users for specialized tools or applications.
54411  */
54412  /* */
54413 
54414  // DQ (11/26/2005): Support for visitor pattern mechanims
54415  // (inferior to ROSE traversal mechanism, experimental).
54419 
54420  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
54422  virtual void accept (ROSE_VisitorPattern & visitor) override;
54423 
54424  // DQ (12/26/2005): Support for traversal based on the memory pool
54427  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
54428 
54432 
54433  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
54434  // This traversal helps support internal tools that call static member functions.
54435  // note: this function operates on the memory pools.
54438  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
54439  /* */
54440 
54441 
54442  public:
54443  /* name Memory Allocation Functions
54444  \brief Memory allocations functions ... incomplete-documentation
54445 
54446  These functions have been made public as part of the design, but they are suggested for internal use
54447  or by particularly knowledgable users for specialized tools or applications.
54448  */
54449  /* */
54450 
54461  virtual bool isInMemoryPool() override;
54462 
54473  virtual void checkDataMemberPointersIfInMemoryPool() override;
54474 
54475  // DQ (4/30/2006): Modified to be a const function.
54490  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
54491 
54501  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
54502 
54514  virtual long getChildIndex( SgNode* childNode ) const override;
54515 
54516  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
54517  // comment here (changed to be a C style comment and not be a doxygen comment).
54518  /* \brief Constructor for use by AST File I/O Mechanism
54519 
54520  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
54521  which obtained via fast binary file I/O from disk.
54522  */
54523  // SgTypeUnsignedLongLong( SgTypeUnsignedLongLongStorageClass& source );
54524 
54525 
54526 
54527 
54528 
54529  // JH (10/24/2005): methods added to support the ast file IO
54530  private:
54531 
54532  /* name AST Memory Allocation Support Functions
54533  \brief Memory allocations support....
54534 
54535  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
54536  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
54537  and support the AST File I/O Mechanism.
54538  */
54539  /* */
54540 
54541  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
54542  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
54543  that I use the same type everywhere, if any changes are made. THe second one declares the type
54544  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
54545  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
54546  a correspinding one in the AST_FILE_IO class!
54547  */
54548  // DQ (9/2/2015): This typedef is no longer used, we can't define the
54549  // comment here (changed to be a C style comment and not be a doxygen comment).
54550  /* \brief Typedef used for low level memory access.
54551  */
54552  // typedef unsigned char* TestType;
54553 
54554  // DQ (9/2/2015): This typedef is no longer used, we can't define the
54555  // comment here (changed to be a C style comment and not be a doxygen comment).
54556  /* \brief Typedef used to hold memory addresses as values.
54557  */
54558  // typedef unsigned long AddressType;
54559 
54560 
54561 
54562  // necessary, to have direct access to the p_freepointer and the private methods !
54564  friend class AST_FILE_IO;
54565 
54567  friend class SgTypeUnsignedLongLongStorageClass;
54568 
54570  friend class AstSpecificDataManagingClass;
54571 
54573  friend class AstSpecificDataManagingClassStorageClass;
54574 
54575  public:
54577  SgTypeUnsignedLongLong( const SgTypeUnsignedLongLongStorageClass& source );
54578 
54579  // private: // JJW hack
54580  /*
54581  name AST Memory Allocation Support Variables
54582  Memory allocations support variables
54583 
54584  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
54585  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
54586  and support the AST File I/O Mechanism.
54587  */
54588  /* */
54589 
54590  public:
54591 
54592  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
54593  // to current node (so that it will work cleanly with build functions to specify patterns).
54594  // virtual SgNode* addRegExpAttribute();
54601 
54602 // *** COMMON CODE SECTION ENDS HERE ***
54603 
54604 
54605 // End of memberFunctionString
54606 // Start of memberFunctionString
54607 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
54608 
54609  // the generated cast function
54610  // friend ROSE_DLL_API SgTypeUnsignedLongLong* isSgTypeUnsignedLongLong ( SgNode* s );
54611 
54612  typedef SgType base_node_type;
54613 
54614 
54615 // End of memberFunctionString
54616 // Start of memberFunctionString
54617 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
54618 
54619  // SgName get_mangled ( SgUnparse_Info & info );
54620 
54622  // SgName get_mangled ( SgUnparse_Info & info );
54623  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
54624  virtual SgName get_mangled (void) const override;
54625 
54626 
54627 
54628 // End of memberFunctionString
54629 // Start of memberFunctionString
54630 /* #line 267 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
54631 
54633  // DQ (1/31/2006): Modified to build all types in the memory pools
54634  // static SgTypeUnsignedLongLong builtin_type;
54635  // static SgTypeUnsignedLongLong* builtin_type;
54636 
54637  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
54638  // since we don't store the type explicitly anymore except in a few IR nodes which have there
54639  // own data member and associated access function.
54640  // static SgTypeUnsignedLongLong* get_builtin_type();
54641 
54642  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
54643  // since we don't store the type explicitly anymore except in a few IR nodes which have there
54644  // own data member and associated access function.
54645  // static void set_builtin_type(SgTypeUnsignedLongLong* builtin_type);
54646 
54648  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
54649  // static SgTypeUnsignedLongLong* createType(void);
54650  static SgTypeUnsignedLongLong* createType(SgExpression* optional_fortran_type_kind = NULL);
54651 
54652 
54653 // End of memberFunctionString
54654 
54655 
54656 
54657  public:
54658  virtual ~SgTypeUnsignedLongLong();
54659 
54660 
54661  public:
54663 
54664  protected:
54665 // Start of memberFunctionString
54666 static SgTypeUnsignedLongLong* p_builtin_type;
54667 
54668 // End of memberFunctionString
54669 
54670 
54671 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
54672 
54673 
54674  };
54675 #endif
54676 
54677 // postdeclarations for SgTypeUnsignedLongLong
54678 
54679 /* #line 54680 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
54680 
54681 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
54682 
54683 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
54684 
54685 
54686 /* #line 54687 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
54687 
54688 
54689 
54690 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
54691 
54692 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
54693 // This code is automatically generated for each
54694 // terminal and non-terminal within the defined
54695 // grammar. There is a simple way to change the
54696 // code to fix bugs etc. See the ROSE README file
54697 // for directions.
54698 
54699 // tps: (02/22/2010): Adding DLL export requirements
54700 #include "rosedll.h"
54701 
54702 // predeclarations for SgTypeSigned128bitInteger
54703 
54704 /* #line 54705 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
54705 
54706 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
54707 
54708 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
54709 
54710 #if 1
54711 // Class Definition for SgTypeSigned128bitInteger
54712 class ROSE_DLL_API SgTypeSigned128bitInteger : public SgType
54713  {
54714  public:
54715 
54716 
54717 /* #line 54718 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
54718 
54719  virtual SgNode* copy ( SgCopyHelp& help) const override;
54720 // Start of memberFunctionString
54721 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
54722 
54723 // *** COMMON CODE SECTION BEGINS HERE ***
54724 
54725  public:
54726 
54727  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
54728  // and not required which is required to match the other aspects of the copy mechanism code generation.
54729  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
54730  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
54731  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
54732  // virtual SgNode* copy ( const SgCopyHelp & help) const;
54733 
54735  virtual std::string class_name() const override;
54736 
54738  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
54739 
54741  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
54742  // static const VariantT static_variant = V_SgTypeSigned128bitInteger;
54743  enum { static_variant = V_SgTypeSigned128bitInteger };
54744 
54745  /* the generated cast function */
54747  ROSE_DLL_API friend SgTypeSigned128bitInteger* isSgTypeSigned128bitInteger( SgNode * s );
54748 
54750  ROSE_DLL_API friend const SgTypeSigned128bitInteger* isSgTypeSigned128bitInteger( const SgNode * s );
54751 
54752  // ******************************************
54753  // * Memory Pool / New / Delete
54754  // ******************************************
54755 
54756  public:
54758  static const unsigned pool_size; //
54760  static std::vector<unsigned char *> pools; //
54762  static SgTypeSigned128bitInteger * next_node; //
54763 
54765  static unsigned long initializeStorageClassArray(SgTypeSigned128bitIntegerStorageClass *); //
54766 
54768  static void clearMemoryPool(); //
54769  static void deleteMemoryPool(); //
54770 
54772  static void extendMemoryPoolForFileIO(); //
54773 
54775  static SgTypeSigned128bitInteger * getPointerFromGlobalIndex(unsigned long); //
54777  static SgTypeSigned128bitInteger * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
54778 
54780  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
54782  static void resetValidFreepointers(); //
54784  static unsigned long getNumberOfLastValidPointer(); //
54785 
54786 
54787 #if defined(INLINE_FUNCTIONS)
54788 
54789  inline void *operator new (size_t size);
54790 #else
54791 
54792  void *operator new (size_t size);
54793 #endif
54794 
54795  void operator delete (void* pointer, size_t size);
54796 
54797  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
54798  void operator delete (void* pointer)
54799  {
54800  // This is the generated delete operator...
54801  SgTypeSigned128bitInteger::operator delete (pointer,sizeof(SgTypeSigned128bitInteger));
54802  }
54803 
54805  static size_t numberOfNodes();
54806 
54808  static size_t memoryUsage();
54809 
54810  // End of scope which started in IR nodes specific code
54811  /* */
54812 
54813  /* name Internal Functions
54814  \brief Internal functions ... incomplete-documentation
54815 
54816  These functions have been made public as part of the design, but they are suggested for internal use
54817  or by particularly knowledgeable users for specialized tools or applications.
54818 
54819  \internal We could not make these private because they are required by user for special purposes. And
54820  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
54821 
54822  */
54823 
54824  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
54825  // overridden in every class by *generated* implementation
54827  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
54828  // MS: 06/28/02 container of names of variables or container indices
54829  // used used in the traversal to access AST successor nodes
54830  // overridden in every class by *generated* implementation
54833  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
54834 
54835  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
54836  // than all the vector copies. The implementation for these functions is generated for each class.
54838  virtual size_t get_numberOfTraversalSuccessors() override;
54840  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
54842  virtual size_t get_childIndex(SgNode *child) override;
54843 
54844 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
54845  // MS: 08/16/2002 method for generating RTI information
54847  virtual RTIReturnType roseRTI() override;
54848 #endif
54849  /* */
54850 
54851 
54852 
54853  /* name Deprecated Functions
54854  \brief Deprecated functions ... incomplete-documentation
54855 
54856  These functions have been deprecated from use.
54857  */
54858  /* */
54859 
54861  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
54862 
54863  // JJW (10/16/2008): Changed to a single function in Node.code, and put
54864  // getVariant() in #if 0 block to prevent confusing Doxygen
54865 #if 0
54866 
54867  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
54869  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
54870 #endif
54871  /* */
54872 
54873 
54874 
54875 
54876  public:
54877  /* name Traversal Support Functions
54878  \brief Traversal support functions ... incomplete-documentation
54879 
54880  These functions have been made public as part of the design, but they are suggested for internal use
54881  or by particularly knowledgable users for specialized tools or applications.
54882  */
54883  /* */
54884 
54885  // DQ (11/26/2005): Support for visitor pattern mechanims
54886  // (inferior to ROSE traversal mechanism, experimental).
54890 
54891  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
54893  virtual void accept (ROSE_VisitorPattern & visitor) override;
54894 
54895  // DQ (12/26/2005): Support for traversal based on the memory pool
54898  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
54899 
54903 
54904  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
54905  // This traversal helps support internal tools that call static member functions.
54906  // note: this function operates on the memory pools.
54909  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
54910  /* */
54911 
54912 
54913  public:
54914  /* name Memory Allocation Functions
54915  \brief Memory allocations functions ... incomplete-documentation
54916 
54917  These functions have been made public as part of the design, but they are suggested for internal use
54918  or by particularly knowledgable users for specialized tools or applications.
54919  */
54920  /* */
54921 
54932  virtual bool isInMemoryPool() override;
54933 
54944  virtual void checkDataMemberPointersIfInMemoryPool() override;
54945 
54946  // DQ (4/30/2006): Modified to be a const function.
54961  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
54962 
54972  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
54973 
54985  virtual long getChildIndex( SgNode* childNode ) const override;
54986 
54987  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
54988  // comment here (changed to be a C style comment and not be a doxygen comment).
54989  /* \brief Constructor for use by AST File I/O Mechanism
54990 
54991  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
54992  which obtained via fast binary file I/O from disk.
54993  */
54994  // SgTypeSigned128bitInteger( SgTypeSigned128bitIntegerStorageClass& source );
54995 
54996 
54997 
54998 
54999 
55000  // JH (10/24/2005): methods added to support the ast file IO
55001  private:
55002 
55003  /* name AST Memory Allocation Support Functions
55004  \brief Memory allocations support....
55005 
55006  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
55007  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
55008  and support the AST File I/O Mechanism.
55009  */
55010  /* */
55011 
55012  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
55013  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
55014  that I use the same type everywhere, if any changes are made. THe second one declares the type
55015  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
55016  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
55017  a correspinding one in the AST_FILE_IO class!
55018  */
55019  // DQ (9/2/2015): This typedef is no longer used, we can't define the
55020  // comment here (changed to be a C style comment and not be a doxygen comment).
55021  /* \brief Typedef used for low level memory access.
55022  */
55023  // typedef unsigned char* TestType;
55024 
55025  // DQ (9/2/2015): This typedef is no longer used, we can't define the
55026  // comment here (changed to be a C style comment and not be a doxygen comment).
55027  /* \brief Typedef used to hold memory addresses as values.
55028  */
55029  // typedef unsigned long AddressType;
55030 
55031 
55032 
55033  // necessary, to have direct access to the p_freepointer and the private methods !
55035  friend class AST_FILE_IO;
55036 
55038  friend class SgTypeSigned128bitIntegerStorageClass;
55039 
55041  friend class AstSpecificDataManagingClass;
55042 
55044  friend class AstSpecificDataManagingClassStorageClass;
55045 
55046  public:
55048  SgTypeSigned128bitInteger( const SgTypeSigned128bitIntegerStorageClass& source );
55049 
55050  // private: // JJW hack
55051  /*
55052  name AST Memory Allocation Support Variables
55053  Memory allocations support variables
55054 
55055  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
55056  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
55057  and support the AST File I/O Mechanism.
55058  */
55059  /* */
55060 
55061  public:
55062 
55063  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
55064  // to current node (so that it will work cleanly with build functions to specify patterns).
55065  // virtual SgNode* addRegExpAttribute();
55072 
55073 // *** COMMON CODE SECTION ENDS HERE ***
55074 
55075 
55076 // End of memberFunctionString
55077 // Start of memberFunctionString
55078 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
55079 
55080  // the generated cast function
55081  // friend ROSE_DLL_API SgTypeSigned128bitInteger* isSgTypeSigned128bitInteger ( SgNode* s );
55082 
55083  typedef SgType base_node_type;
55084 
55085 
55086 // End of memberFunctionString
55087 // Start of memberFunctionString
55088 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
55089 
55090  // SgName get_mangled ( SgUnparse_Info & info );
55091 
55093  // SgName get_mangled ( SgUnparse_Info & info );
55094  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
55095  virtual SgName get_mangled (void) const override;
55096 
55097 
55098 
55099 // End of memberFunctionString
55100 // Start of memberFunctionString
55101 /* #line 267 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
55102 
55104  // DQ (1/31/2006): Modified to build all types in the memory pools
55105  // static SgTypeSigned128bitInteger builtin_type;
55106  // static SgTypeSigned128bitInteger* builtin_type;
55107 
55108  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
55109  // since we don't store the type explicitly anymore except in a few IR nodes which have there
55110  // own data member and associated access function.
55111  // static SgTypeSigned128bitInteger* get_builtin_type();
55112 
55113  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
55114  // since we don't store the type explicitly anymore except in a few IR nodes which have there
55115  // own data member and associated access function.
55116  // static void set_builtin_type(SgTypeSigned128bitInteger* builtin_type);
55117 
55119  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
55120  // static SgTypeSigned128bitInteger* createType(void);
55121  static SgTypeSigned128bitInteger* createType(SgExpression* optional_fortran_type_kind = NULL);
55122 
55123 
55124 // End of memberFunctionString
55125 
55126 
55127 
55128  public:
55129  virtual ~SgTypeSigned128bitInteger();
55130 
55131 
55132  public:
55134 
55135  protected:
55136 // Start of memberFunctionString
55137 static SgTypeSigned128bitInteger* p_builtin_type;
55138 
55139 // End of memberFunctionString
55140 
55141 
55142 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
55143 
55144 
55145  };
55146 #endif
55147 
55148 // postdeclarations for SgTypeSigned128bitInteger
55149 
55150 /* #line 55151 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
55151 
55152 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
55153 
55154 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
55155 
55156 
55157 /* #line 55158 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
55158 
55159 
55160 
55161 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
55162 
55163 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
55164 // This code is automatically generated for each
55165 // terminal and non-terminal within the defined
55166 // grammar. There is a simple way to change the
55167 // code to fix bugs etc. See the ROSE README file
55168 // for directions.
55169 
55170 // tps: (02/22/2010): Adding DLL export requirements
55171 #include "rosedll.h"
55172 
55173 // predeclarations for SgTypeUnsigned128bitInteger
55174 
55175 /* #line 55176 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
55176 
55177 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
55178 
55179 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
55180 
55181 #if 1
55182 // Class Definition for SgTypeUnsigned128bitInteger
55183 class ROSE_DLL_API SgTypeUnsigned128bitInteger : public SgType
55184  {
55185  public:
55186 
55187 
55188 /* #line 55189 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
55189 
55190  virtual SgNode* copy ( SgCopyHelp& help) const override;
55191 // Start of memberFunctionString
55192 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
55193 
55194 // *** COMMON CODE SECTION BEGINS HERE ***
55195 
55196  public:
55197 
55198  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
55199  // and not required which is required to match the other aspects of the copy mechanism code generation.
55200  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
55201  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
55202  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
55203  // virtual SgNode* copy ( const SgCopyHelp & help) const;
55204 
55206  virtual std::string class_name() const override;
55207 
55209  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
55210 
55212  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
55213  // static const VariantT static_variant = V_SgTypeUnsigned128bitInteger;
55214  enum { static_variant = V_SgTypeUnsigned128bitInteger };
55215 
55216  /* the generated cast function */
55218  ROSE_DLL_API friend SgTypeUnsigned128bitInteger* isSgTypeUnsigned128bitInteger( SgNode * s );
55219 
55221  ROSE_DLL_API friend const SgTypeUnsigned128bitInteger* isSgTypeUnsigned128bitInteger( const SgNode * s );
55222 
55223  // ******************************************
55224  // * Memory Pool / New / Delete
55225  // ******************************************
55226 
55227  public:
55229  static const unsigned pool_size; //
55231  static std::vector<unsigned char *> pools; //
55233  static SgTypeUnsigned128bitInteger * next_node; //
55234 
55236  static unsigned long initializeStorageClassArray(SgTypeUnsigned128bitIntegerStorageClass *); //
55237 
55239  static void clearMemoryPool(); //
55240  static void deleteMemoryPool(); //
55241 
55243  static void extendMemoryPoolForFileIO(); //
55244 
55246  static SgTypeUnsigned128bitInteger * getPointerFromGlobalIndex(unsigned long); //
55248  static SgTypeUnsigned128bitInteger * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
55249 
55251  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
55253  static void resetValidFreepointers(); //
55255  static unsigned long getNumberOfLastValidPointer(); //
55256 
55257 
55258 #if defined(INLINE_FUNCTIONS)
55259 
55260  inline void *operator new (size_t size);
55261 #else
55262 
55263  void *operator new (size_t size);
55264 #endif
55265 
55266  void operator delete (void* pointer, size_t size);
55267 
55268  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
55269  void operator delete (void* pointer)
55270  {
55271  // This is the generated delete operator...
55272  SgTypeUnsigned128bitInteger::operator delete (pointer,sizeof(SgTypeUnsigned128bitInteger));
55273  }
55274 
55276  static size_t numberOfNodes();
55277 
55279  static size_t memoryUsage();
55280 
55281  // End of scope which started in IR nodes specific code
55282  /* */
55283 
55284  /* name Internal Functions
55285  \brief Internal functions ... incomplete-documentation
55286 
55287  These functions have been made public as part of the design, but they are suggested for internal use
55288  or by particularly knowledgeable users for specialized tools or applications.
55289 
55290  \internal We could not make these private because they are required by user for special purposes. And
55291  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
55292 
55293  */
55294 
55295  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
55296  // overridden in every class by *generated* implementation
55298  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
55299  // MS: 06/28/02 container of names of variables or container indices
55300  // used used in the traversal to access AST successor nodes
55301  // overridden in every class by *generated* implementation
55304  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
55305 
55306  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
55307  // than all the vector copies. The implementation for these functions is generated for each class.
55309  virtual size_t get_numberOfTraversalSuccessors() override;
55311  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
55313  virtual size_t get_childIndex(SgNode *child) override;
55314 
55315 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
55316  // MS: 08/16/2002 method for generating RTI information
55318  virtual RTIReturnType roseRTI() override;
55319 #endif
55320  /* */
55321 
55322 
55323 
55324  /* name Deprecated Functions
55325  \brief Deprecated functions ... incomplete-documentation
55326 
55327  These functions have been deprecated from use.
55328  */
55329  /* */
55330 
55332  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
55333 
55334  // JJW (10/16/2008): Changed to a single function in Node.code, and put
55335  // getVariant() in #if 0 block to prevent confusing Doxygen
55336 #if 0
55337 
55338  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
55340  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
55341 #endif
55342  /* */
55343 
55344 
55345 
55346 
55347  public:
55348  /* name Traversal Support Functions
55349  \brief Traversal support functions ... incomplete-documentation
55350 
55351  These functions have been made public as part of the design, but they are suggested for internal use
55352  or by particularly knowledgable users for specialized tools or applications.
55353  */
55354  /* */
55355 
55356  // DQ (11/26/2005): Support for visitor pattern mechanims
55357  // (inferior to ROSE traversal mechanism, experimental).
55361 
55362  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
55364  virtual void accept (ROSE_VisitorPattern & visitor) override;
55365 
55366  // DQ (12/26/2005): Support for traversal based on the memory pool
55369  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
55370 
55374 
55375  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
55376  // This traversal helps support internal tools that call static member functions.
55377  // note: this function operates on the memory pools.
55380  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
55381  /* */
55382 
55383 
55384  public:
55385  /* name Memory Allocation Functions
55386  \brief Memory allocations functions ... incomplete-documentation
55387 
55388  These functions have been made public as part of the design, but they are suggested for internal use
55389  or by particularly knowledgable users for specialized tools or applications.
55390  */
55391  /* */
55392 
55403  virtual bool isInMemoryPool() override;
55404 
55415  virtual void checkDataMemberPointersIfInMemoryPool() override;
55416 
55417  // DQ (4/30/2006): Modified to be a const function.
55432  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
55433 
55443  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
55444 
55456  virtual long getChildIndex( SgNode* childNode ) const override;
55457 
55458  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
55459  // comment here (changed to be a C style comment and not be a doxygen comment).
55460  /* \brief Constructor for use by AST File I/O Mechanism
55461 
55462  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
55463  which obtained via fast binary file I/O from disk.
55464  */
55465  // SgTypeUnsigned128bitInteger( SgTypeUnsigned128bitIntegerStorageClass& source );
55466 
55467 
55468 
55469 
55470 
55471  // JH (10/24/2005): methods added to support the ast file IO
55472  private:
55473 
55474  /* name AST Memory Allocation Support Functions
55475  \brief Memory allocations support....
55476 
55477  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
55478  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
55479  and support the AST File I/O Mechanism.
55480  */
55481  /* */
55482 
55483  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
55484  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
55485  that I use the same type everywhere, if any changes are made. THe second one declares the type
55486  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
55487  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
55488  a correspinding one in the AST_FILE_IO class!
55489  */
55490  // DQ (9/2/2015): This typedef is no longer used, we can't define the
55491  // comment here (changed to be a C style comment and not be a doxygen comment).
55492  /* \brief Typedef used for low level memory access.
55493  */
55494  // typedef unsigned char* TestType;
55495 
55496  // DQ (9/2/2015): This typedef is no longer used, we can't define the
55497  // comment here (changed to be a C style comment and not be a doxygen comment).
55498  /* \brief Typedef used to hold memory addresses as values.
55499  */
55500  // typedef unsigned long AddressType;
55501 
55502 
55503 
55504  // necessary, to have direct access to the p_freepointer and the private methods !
55506  friend class AST_FILE_IO;
55507 
55509  friend class SgTypeUnsigned128bitIntegerStorageClass;
55510 
55512  friend class AstSpecificDataManagingClass;
55513 
55515  friend class AstSpecificDataManagingClassStorageClass;
55516 
55517  public:
55519  SgTypeUnsigned128bitInteger( const SgTypeUnsigned128bitIntegerStorageClass& source );
55520 
55521  // private: // JJW hack
55522  /*
55523  name AST Memory Allocation Support Variables
55524  Memory allocations support variables
55525 
55526  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
55527  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
55528  and support the AST File I/O Mechanism.
55529  */
55530  /* */
55531 
55532  public:
55533 
55534  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
55535  // to current node (so that it will work cleanly with build functions to specify patterns).
55536  // virtual SgNode* addRegExpAttribute();
55543 
55544 // *** COMMON CODE SECTION ENDS HERE ***
55545 
55546 
55547 // End of memberFunctionString
55548 // Start of memberFunctionString
55549 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
55550 
55551  // the generated cast function
55552  // friend ROSE_DLL_API SgTypeUnsigned128bitInteger* isSgTypeUnsigned128bitInteger ( SgNode* s );
55553 
55554  typedef SgType base_node_type;
55555 
55556 
55557 // End of memberFunctionString
55558 // Start of memberFunctionString
55559 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
55560 
55561  // SgName get_mangled ( SgUnparse_Info & info );
55562 
55564  // SgName get_mangled ( SgUnparse_Info & info );
55565  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
55566  virtual SgName get_mangled (void) const override;
55567 
55568 
55569 
55570 // End of memberFunctionString
55571 // Start of memberFunctionString
55572 /* #line 267 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
55573 
55575  // DQ (1/31/2006): Modified to build all types in the memory pools
55576  // static SgTypeUnsigned128bitInteger builtin_type;
55577  // static SgTypeUnsigned128bitInteger* builtin_type;
55578 
55579  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
55580  // since we don't store the type explicitly anymore except in a few IR nodes which have there
55581  // own data member and associated access function.
55582  // static SgTypeUnsigned128bitInteger* get_builtin_type();
55583 
55584  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
55585  // since we don't store the type explicitly anymore except in a few IR nodes which have there
55586  // own data member and associated access function.
55587  // static void set_builtin_type(SgTypeUnsigned128bitInteger* builtin_type);
55588 
55590  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
55591  // static SgTypeUnsigned128bitInteger* createType(void);
55592  static SgTypeUnsigned128bitInteger* createType(SgExpression* optional_fortran_type_kind = NULL);
55593 
55594 
55595 // End of memberFunctionString
55596 
55597 
55598 
55599  public:
55600  virtual ~SgTypeUnsigned128bitInteger();
55601 
55602 
55603  public:
55605 
55606  protected:
55607 // Start of memberFunctionString
55608 static SgTypeUnsigned128bitInteger* p_builtin_type;
55609 
55610 // End of memberFunctionString
55611 
55612 
55613 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
55614 
55615 
55616  };
55617 #endif
55618 
55619 // postdeclarations for SgTypeUnsigned128bitInteger
55620 
55621 /* #line 55622 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
55622 
55623 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
55624 
55625 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
55626 
55627 
55628 /* #line 55629 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
55629 
55630 
55631 
55632 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
55633 
55634 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
55635 // This code is automatically generated for each
55636 // terminal and non-terminal within the defined
55637 // grammar. There is a simple way to change the
55638 // code to fix bugs etc. See the ROSE README file
55639 // for directions.
55640 
55641 // tps: (02/22/2010): Adding DLL export requirements
55642 #include "rosedll.h"
55643 
55644 // predeclarations for SgTypeFloat80
55645 
55646 /* #line 55647 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
55647 
55648 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
55649 
55650 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
55651 
55652 #if 1
55653 // Class Definition for SgTypeFloat80
55654 class ROSE_DLL_API SgTypeFloat80 : public SgType
55655  {
55656  public:
55657 
55658 
55659 /* #line 55660 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
55660 
55661  virtual SgNode* copy ( SgCopyHelp& help) const override;
55662 // Start of memberFunctionString
55663 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
55664 
55665 // *** COMMON CODE SECTION BEGINS HERE ***
55666 
55667  public:
55668 
55669  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
55670  // and not required which is required to match the other aspects of the copy mechanism code generation.
55671  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
55672  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
55673  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
55674  // virtual SgNode* copy ( const SgCopyHelp & help) const;
55675 
55677  virtual std::string class_name() const override;
55678 
55680  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
55681 
55683  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
55684  // static const VariantT static_variant = V_SgTypeFloat80;
55685  enum { static_variant = V_SgTypeFloat80 };
55686 
55687  /* the generated cast function */
55689  ROSE_DLL_API friend SgTypeFloat80* isSgTypeFloat80( SgNode * s );
55690 
55692  ROSE_DLL_API friend const SgTypeFloat80* isSgTypeFloat80( const SgNode * s );
55693 
55694  // ******************************************
55695  // * Memory Pool / New / Delete
55696  // ******************************************
55697 
55698  public:
55700  static const unsigned pool_size; //
55702  static std::vector<unsigned char *> pools; //
55704  static SgTypeFloat80 * next_node; //
55705 
55707  static unsigned long initializeStorageClassArray(SgTypeFloat80StorageClass *); //
55708 
55710  static void clearMemoryPool(); //
55711  static void deleteMemoryPool(); //
55712 
55714  static void extendMemoryPoolForFileIO(); //
55715 
55717  static SgTypeFloat80 * getPointerFromGlobalIndex(unsigned long); //
55719  static SgTypeFloat80 * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
55720 
55722  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
55724  static void resetValidFreepointers(); //
55726  static unsigned long getNumberOfLastValidPointer(); //
55727 
55728 
55729 #if defined(INLINE_FUNCTIONS)
55730 
55731  inline void *operator new (size_t size);
55732 #else
55733 
55734  void *operator new (size_t size);
55735 #endif
55736 
55737  void operator delete (void* pointer, size_t size);
55738 
55739  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
55740  void operator delete (void* pointer)
55741  {
55742  // This is the generated delete operator...
55743  SgTypeFloat80::operator delete (pointer,sizeof(SgTypeFloat80));
55744  }
55745 
55747  static size_t numberOfNodes();
55748 
55750  static size_t memoryUsage();
55751 
55752  // End of scope which started in IR nodes specific code
55753  /* */
55754 
55755  /* name Internal Functions
55756  \brief Internal functions ... incomplete-documentation
55757 
55758  These functions have been made public as part of the design, but they are suggested for internal use
55759  or by particularly knowledgeable users for specialized tools or applications.
55760 
55761  \internal We could not make these private because they are required by user for special purposes. And
55762  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
55763 
55764  */
55765 
55766  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
55767  // overridden in every class by *generated* implementation
55769  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
55770  // MS: 06/28/02 container of names of variables or container indices
55771  // used used in the traversal to access AST successor nodes
55772  // overridden in every class by *generated* implementation
55775  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
55776 
55777  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
55778  // than all the vector copies. The implementation for these functions is generated for each class.
55780  virtual size_t get_numberOfTraversalSuccessors() override;
55782  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
55784  virtual size_t get_childIndex(SgNode *child) override;
55785 
55786 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
55787  // MS: 08/16/2002 method for generating RTI information
55789  virtual RTIReturnType roseRTI() override;
55790 #endif
55791  /* */
55792 
55793 
55794 
55795  /* name Deprecated Functions
55796  \brief Deprecated functions ... incomplete-documentation
55797 
55798  These functions have been deprecated from use.
55799  */
55800  /* */
55801 
55803  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
55804 
55805  // JJW (10/16/2008): Changed to a single function in Node.code, and put
55806  // getVariant() in #if 0 block to prevent confusing Doxygen
55807 #if 0
55808 
55809  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
55811  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
55812 #endif
55813  /* */
55814 
55815 
55816 
55817 
55818  public:
55819  /* name Traversal Support Functions
55820  \brief Traversal support functions ... incomplete-documentation
55821 
55822  These functions have been made public as part of the design, but they are suggested for internal use
55823  or by particularly knowledgable users for specialized tools or applications.
55824  */
55825  /* */
55826 
55827  // DQ (11/26/2005): Support for visitor pattern mechanims
55828  // (inferior to ROSE traversal mechanism, experimental).
55832 
55833  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
55835  virtual void accept (ROSE_VisitorPattern & visitor) override;
55836 
55837  // DQ (12/26/2005): Support for traversal based on the memory pool
55840  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
55841 
55845 
55846  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
55847  // This traversal helps support internal tools that call static member functions.
55848  // note: this function operates on the memory pools.
55851  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
55852  /* */
55853 
55854 
55855  public:
55856  /* name Memory Allocation Functions
55857  \brief Memory allocations functions ... incomplete-documentation
55858 
55859  These functions have been made public as part of the design, but they are suggested for internal use
55860  or by particularly knowledgable users for specialized tools or applications.
55861  */
55862  /* */
55863 
55874  virtual bool isInMemoryPool() override;
55875 
55886  virtual void checkDataMemberPointersIfInMemoryPool() override;
55887 
55888  // DQ (4/30/2006): Modified to be a const function.
55903  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
55904 
55914  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
55915 
55927  virtual long getChildIndex( SgNode* childNode ) const override;
55928 
55929  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
55930  // comment here (changed to be a C style comment and not be a doxygen comment).
55931  /* \brief Constructor for use by AST File I/O Mechanism
55932 
55933  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
55934  which obtained via fast binary file I/O from disk.
55935  */
55936  // SgTypeFloat80( SgTypeFloat80StorageClass& source );
55937 
55938 
55939 
55940 
55941 
55942  // JH (10/24/2005): methods added to support the ast file IO
55943  private:
55944 
55945  /* name AST Memory Allocation Support Functions
55946  \brief Memory allocations support....
55947 
55948  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
55949  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
55950  and support the AST File I/O Mechanism.
55951  */
55952  /* */
55953 
55954  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
55955  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
55956  that I use the same type everywhere, if any changes are made. THe second one declares the type
55957  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
55958  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
55959  a correspinding one in the AST_FILE_IO class!
55960  */
55961  // DQ (9/2/2015): This typedef is no longer used, we can't define the
55962  // comment here (changed to be a C style comment and not be a doxygen comment).
55963  /* \brief Typedef used for low level memory access.
55964  */
55965  // typedef unsigned char* TestType;
55966 
55967  // DQ (9/2/2015): This typedef is no longer used, we can't define the
55968  // comment here (changed to be a C style comment and not be a doxygen comment).
55969  /* \brief Typedef used to hold memory addresses as values.
55970  */
55971  // typedef unsigned long AddressType;
55972 
55973 
55974 
55975  // necessary, to have direct access to the p_freepointer and the private methods !
55977  friend class AST_FILE_IO;
55978 
55980  friend class SgTypeFloat80StorageClass;
55981 
55983  friend class AstSpecificDataManagingClass;
55984 
55986  friend class AstSpecificDataManagingClassStorageClass;
55987 
55988  public:
55990  SgTypeFloat80( const SgTypeFloat80StorageClass& source );
55991 
55992  // private: // JJW hack
55993  /*
55994  name AST Memory Allocation Support Variables
55995  Memory allocations support variables
55996 
55997  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
55998  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
55999  and support the AST File I/O Mechanism.
56000  */
56001  /* */
56002 
56003  public:
56004 
56005  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
56006  // to current node (so that it will work cleanly with build functions to specify patterns).
56007  // virtual SgNode* addRegExpAttribute();
56014 
56015 // *** COMMON CODE SECTION ENDS HERE ***
56016 
56017 
56018 // End of memberFunctionString
56019 // Start of memberFunctionString
56020 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
56021 
56022  // the generated cast function
56023  // friend ROSE_DLL_API SgTypeFloat80* isSgTypeFloat80 ( SgNode* s );
56024 
56025  typedef SgType base_node_type;
56026 
56027 
56028 // End of memberFunctionString
56029 // Start of memberFunctionString
56030 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
56031 
56032  // SgName get_mangled ( SgUnparse_Info & info );
56033 
56035  // SgName get_mangled ( SgUnparse_Info & info );
56036  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
56037  virtual SgName get_mangled (void) const override;
56038 
56039 
56040 
56041 // End of memberFunctionString
56042 // Start of memberFunctionString
56043 /* #line 267 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
56044 
56046  // DQ (1/31/2006): Modified to build all types in the memory pools
56047  // static SgTypeFloat80 builtin_type;
56048  // static SgTypeFloat80* builtin_type;
56049 
56050  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
56051  // since we don't store the type explicitly anymore except in a few IR nodes which have there
56052  // own data member and associated access function.
56053  // static SgTypeFloat80* get_builtin_type();
56054 
56055  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
56056  // since we don't store the type explicitly anymore except in a few IR nodes which have there
56057  // own data member and associated access function.
56058  // static void set_builtin_type(SgTypeFloat80* builtin_type);
56059 
56061  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
56062  // static SgTypeFloat80* createType(void);
56063  static SgTypeFloat80* createType(SgExpression* optional_fortran_type_kind = NULL);
56064 
56065 
56066 // End of memberFunctionString
56067 
56068 
56069 
56070  public:
56071  virtual ~SgTypeFloat80();
56072 
56073 
56074  public:
56075  SgTypeFloat80();
56076 
56077  protected:
56078 // Start of memberFunctionString
56079 static SgTypeFloat80* p_builtin_type;
56080 
56081 // End of memberFunctionString
56082 
56083 
56084 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
56085 
56086 
56087  };
56088 #endif
56089 
56090 // postdeclarations for SgTypeFloat80
56091 
56092 /* #line 56093 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
56093 
56094 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
56095 
56096 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
56097 
56098 
56099 /* #line 56100 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
56100 
56101 
56102 
56103 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
56104 
56105 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
56106 // This code is automatically generated for each
56107 // terminal and non-terminal within the defined
56108 // grammar. There is a simple way to change the
56109 // code to fix bugs etc. See the ROSE README file
56110 // for directions.
56111 
56112 // tps: (02/22/2010): Adding DLL export requirements
56113 #include "rosedll.h"
56114 
56115 // predeclarations for SgTypeLongDouble
56116 
56117 /* #line 56118 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
56118 
56119 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
56120 
56121 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
56122 
56123 #if 1
56124 // Class Definition for SgTypeLongDouble
56125 class ROSE_DLL_API SgTypeLongDouble : public SgType
56126  {
56127  public:
56128 
56129 
56130 /* #line 56131 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
56131 
56132  virtual SgNode* copy ( SgCopyHelp& help) const override;
56133 // Start of memberFunctionString
56134 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
56135 
56136 // *** COMMON CODE SECTION BEGINS HERE ***
56137 
56138  public:
56139 
56140  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
56141  // and not required which is required to match the other aspects of the copy mechanism code generation.
56142  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
56143  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
56144  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
56145  // virtual SgNode* copy ( const SgCopyHelp & help) const;
56146 
56148  virtual std::string class_name() const override;
56149 
56151  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
56152 
56154  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
56155  // static const VariantT static_variant = V_SgTypeLongDouble;
56156  enum { static_variant = V_SgTypeLongDouble };
56157 
56158  /* the generated cast function */
56160  ROSE_DLL_API friend SgTypeLongDouble* isSgTypeLongDouble( SgNode * s );
56161 
56163  ROSE_DLL_API friend const SgTypeLongDouble* isSgTypeLongDouble( const SgNode * s );
56164 
56165  // ******************************************
56166  // * Memory Pool / New / Delete
56167  // ******************************************
56168 
56169  public:
56171  static const unsigned pool_size; //
56173  static std::vector<unsigned char *> pools; //
56175  static SgTypeLongDouble * next_node; //
56176 
56178  static unsigned long initializeStorageClassArray(SgTypeLongDoubleStorageClass *); //
56179 
56181  static void clearMemoryPool(); //
56182  static void deleteMemoryPool(); //
56183 
56185  static void extendMemoryPoolForFileIO(); //
56186 
56188  static SgTypeLongDouble * getPointerFromGlobalIndex(unsigned long); //
56190  static SgTypeLongDouble * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
56191 
56193  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
56195  static void resetValidFreepointers(); //
56197  static unsigned long getNumberOfLastValidPointer(); //
56198 
56199 
56200 #if defined(INLINE_FUNCTIONS)
56201 
56202  inline void *operator new (size_t size);
56203 #else
56204 
56205  void *operator new (size_t size);
56206 #endif
56207 
56208  void operator delete (void* pointer, size_t size);
56209 
56210  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
56211  void operator delete (void* pointer)
56212  {
56213  // This is the generated delete operator...
56214  SgTypeLongDouble::operator delete (pointer,sizeof(SgTypeLongDouble));
56215  }
56216 
56218  static size_t numberOfNodes();
56219 
56221  static size_t memoryUsage();
56222 
56223  // End of scope which started in IR nodes specific code
56224  /* */
56225 
56226  /* name Internal Functions
56227  \brief Internal functions ... incomplete-documentation
56228 
56229  These functions have been made public as part of the design, but they are suggested for internal use
56230  or by particularly knowledgeable users for specialized tools or applications.
56231 
56232  \internal We could not make these private because they are required by user for special purposes. And
56233  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
56234 
56235  */
56236 
56237  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
56238  // overridden in every class by *generated* implementation
56240  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
56241  // MS: 06/28/02 container of names of variables or container indices
56242  // used used in the traversal to access AST successor nodes
56243  // overridden in every class by *generated* implementation
56246  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
56247 
56248  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
56249  // than all the vector copies. The implementation for these functions is generated for each class.
56251  virtual size_t get_numberOfTraversalSuccessors() override;
56253  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
56255  virtual size_t get_childIndex(SgNode *child) override;
56256 
56257 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
56258  // MS: 08/16/2002 method for generating RTI information
56260  virtual RTIReturnType roseRTI() override;
56261 #endif
56262  /* */
56263 
56264 
56265 
56266  /* name Deprecated Functions
56267  \brief Deprecated functions ... incomplete-documentation
56268 
56269  These functions have been deprecated from use.
56270  */
56271  /* */
56272 
56274  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
56275 
56276  // JJW (10/16/2008): Changed to a single function in Node.code, and put
56277  // getVariant() in #if 0 block to prevent confusing Doxygen
56278 #if 0
56279 
56280  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
56282  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
56283 #endif
56284  /* */
56285 
56286 
56287 
56288 
56289  public:
56290  /* name Traversal Support Functions
56291  \brief Traversal support functions ... incomplete-documentation
56292 
56293  These functions have been made public as part of the design, but they are suggested for internal use
56294  or by particularly knowledgable users for specialized tools or applications.
56295  */
56296  /* */
56297 
56298  // DQ (11/26/2005): Support for visitor pattern mechanims
56299  // (inferior to ROSE traversal mechanism, experimental).
56303 
56304  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
56306  virtual void accept (ROSE_VisitorPattern & visitor) override;
56307 
56308  // DQ (12/26/2005): Support for traversal based on the memory pool
56311  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
56312 
56316 
56317  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
56318  // This traversal helps support internal tools that call static member functions.
56319  // note: this function operates on the memory pools.
56322  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
56323  /* */
56324 
56325 
56326  public:
56327  /* name Memory Allocation Functions
56328  \brief Memory allocations functions ... incomplete-documentation
56329 
56330  These functions have been made public as part of the design, but they are suggested for internal use
56331  or by particularly knowledgable users for specialized tools or applications.
56332  */
56333  /* */
56334 
56345  virtual bool isInMemoryPool() override;
56346 
56357  virtual void checkDataMemberPointersIfInMemoryPool() override;
56358 
56359  // DQ (4/30/2006): Modified to be a const function.
56374  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
56375 
56385  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
56386 
56398  virtual long getChildIndex( SgNode* childNode ) const override;
56399 
56400  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
56401  // comment here (changed to be a C style comment and not be a doxygen comment).
56402  /* \brief Constructor for use by AST File I/O Mechanism
56403 
56404  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
56405  which obtained via fast binary file I/O from disk.
56406  */
56407  // SgTypeLongDouble( SgTypeLongDoubleStorageClass& source );
56408 
56409 
56410 
56411 
56412 
56413  // JH (10/24/2005): methods added to support the ast file IO
56414  private:
56415 
56416  /* name AST Memory Allocation Support Functions
56417  \brief Memory allocations support....
56418 
56419  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
56420  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
56421  and support the AST File I/O Mechanism.
56422  */
56423  /* */
56424 
56425  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
56426  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
56427  that I use the same type everywhere, if any changes are made. THe second one declares the type
56428  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
56429  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
56430  a correspinding one in the AST_FILE_IO class!
56431  */
56432  // DQ (9/2/2015): This typedef is no longer used, we can't define the
56433  // comment here (changed to be a C style comment and not be a doxygen comment).
56434  /* \brief Typedef used for low level memory access.
56435  */
56436  // typedef unsigned char* TestType;
56437 
56438  // DQ (9/2/2015): This typedef is no longer used, we can't define the
56439  // comment here (changed to be a C style comment and not be a doxygen comment).
56440  /* \brief Typedef used to hold memory addresses as values.
56441  */
56442  // typedef unsigned long AddressType;
56443 
56444 
56445 
56446  // necessary, to have direct access to the p_freepointer and the private methods !
56448  friend class AST_FILE_IO;
56449 
56451  friend class SgTypeLongDoubleStorageClass;
56452 
56454  friend class AstSpecificDataManagingClass;
56455 
56457  friend class AstSpecificDataManagingClassStorageClass;
56458 
56459  public:
56461  SgTypeLongDouble( const SgTypeLongDoubleStorageClass& source );
56462 
56463  // private: // JJW hack
56464  /*
56465  name AST Memory Allocation Support Variables
56466  Memory allocations support variables
56467 
56468  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
56469  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
56470  and support the AST File I/O Mechanism.
56471  */
56472  /* */
56473 
56474  public:
56475 
56476  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
56477  // to current node (so that it will work cleanly with build functions to specify patterns).
56478  // virtual SgNode* addRegExpAttribute();
56485 
56486 // *** COMMON CODE SECTION ENDS HERE ***
56487 
56488 
56489 // End of memberFunctionString
56490 // Start of memberFunctionString
56491 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
56492 
56493  // the generated cast function
56494  // friend ROSE_DLL_API SgTypeLongDouble* isSgTypeLongDouble ( SgNode* s );
56495 
56496  typedef SgType base_node_type;
56497 
56498 
56499 // End of memberFunctionString
56500 // Start of memberFunctionString
56501 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
56502 
56503  // SgName get_mangled ( SgUnparse_Info & info );
56504 
56506  // SgName get_mangled ( SgUnparse_Info & info );
56507  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
56508  virtual SgName get_mangled (void) const override;
56509 
56510 
56511 
56512 // End of memberFunctionString
56513 // Start of memberFunctionString
56514 /* #line 267 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
56515 
56517  // DQ (1/31/2006): Modified to build all types in the memory pools
56518  // static SgTypeLongDouble builtin_type;
56519  // static SgTypeLongDouble* builtin_type;
56520 
56521  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
56522  // since we don't store the type explicitly anymore except in a few IR nodes which have there
56523  // own data member and associated access function.
56524  // static SgTypeLongDouble* get_builtin_type();
56525 
56526  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
56527  // since we don't store the type explicitly anymore except in a few IR nodes which have there
56528  // own data member and associated access function.
56529  // static void set_builtin_type(SgTypeLongDouble* builtin_type);
56530 
56532  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
56533  // static SgTypeLongDouble* createType(void);
56534  static SgTypeLongDouble* createType(SgExpression* optional_fortran_type_kind = NULL);
56535 
56536 
56537 // End of memberFunctionString
56538 
56539 
56540 
56541  public:
56542  virtual ~SgTypeLongDouble();
56543 
56544 
56545  public:
56546  SgTypeLongDouble();
56547 
56548  protected:
56549 // Start of memberFunctionString
56550 static SgTypeLongDouble* p_builtin_type;
56551 
56552 // End of memberFunctionString
56553 
56554 
56555 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
56556 
56557 
56558  };
56559 #endif
56560 
56561 // postdeclarations for SgTypeLongDouble
56562 
56563 /* #line 56564 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
56564 
56565 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
56566 
56567 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
56568 
56569 
56570 /* #line 56571 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
56571 
56572 
56573 
56574 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
56575 
56576 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
56577 // This code is automatically generated for each
56578 // terminal and non-terminal within the defined
56579 // grammar. There is a simple way to change the
56580 // code to fix bugs etc. See the ROSE README file
56581 // for directions.
56582 
56583 // tps: (02/22/2010): Adding DLL export requirements
56584 #include "rosedll.h"
56585 
56586 // predeclarations for SgTypeString
56587 
56588 /* #line 56589 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
56589 
56590 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
56591 
56592 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
56593 
56594 #if 1
56595 // Class Definition for SgTypeString
56596 class ROSE_DLL_API SgTypeString : public SgType
56597  {
56598  public:
56599 
56600 
56601 /* #line 56602 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
56602 
56603  virtual SgNode* copy ( SgCopyHelp& help) const override;
56604 // Start of memberFunctionString
56605 /* #line 945 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
56606 
56607  // DQ (8/17/2010): Support for Fortran use of SgTypeString.
56608  // static SgTypeString* createType(SgExpression*, size_t length, SgExpression* optional_fortran_type_kind = NULL);
56609  static SgTypeString* createType(SgExpression*, SgExpression* optional_fortran_type_kind = NULL);
56610 
56612  void post_construction_initialization() override;
56613 
56614 
56615 // End of memberFunctionString
56616 // Start of memberFunctionString
56617 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
56618 
56619 // *** COMMON CODE SECTION BEGINS HERE ***
56620 
56621  public:
56622 
56623  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
56624  // and not required which is required to match the other aspects of the copy mechanism code generation.
56625  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
56626  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
56627  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
56628  // virtual SgNode* copy ( const SgCopyHelp & help) const;
56629 
56631  virtual std::string class_name() const override;
56632 
56634  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
56635 
56637  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
56638  // static const VariantT static_variant = V_SgTypeString;
56639  enum { static_variant = V_SgTypeString };
56640 
56641  /* the generated cast function */
56643  ROSE_DLL_API friend SgTypeString* isSgTypeString( SgNode * s );
56644 
56646  ROSE_DLL_API friend const SgTypeString* isSgTypeString( const SgNode * s );
56647 
56648  // ******************************************
56649  // * Memory Pool / New / Delete
56650  // ******************************************
56651 
56652  public:
56654  static const unsigned pool_size; //
56656  static std::vector<unsigned char *> pools; //
56658  static SgTypeString * next_node; //
56659 
56661  static unsigned long initializeStorageClassArray(SgTypeStringStorageClass *); //
56662 
56664  static void clearMemoryPool(); //
56665  static void deleteMemoryPool(); //
56666 
56668  static void extendMemoryPoolForFileIO(); //
56669 
56671  static SgTypeString * getPointerFromGlobalIndex(unsigned long); //
56673  static SgTypeString * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
56674 
56676  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
56678  static void resetValidFreepointers(); //
56680  static unsigned long getNumberOfLastValidPointer(); //
56681 
56682 
56683 #if defined(INLINE_FUNCTIONS)
56684 
56685  inline void *operator new (size_t size);
56686 #else
56687 
56688  void *operator new (size_t size);
56689 #endif
56690 
56691  void operator delete (void* pointer, size_t size);
56692 
56693  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
56694  void operator delete (void* pointer)
56695  {
56696  // This is the generated delete operator...
56697  SgTypeString::operator delete (pointer,sizeof(SgTypeString));
56698  }
56699 
56701  static size_t numberOfNodes();
56702 
56704  static size_t memoryUsage();
56705 
56706  // End of scope which started in IR nodes specific code
56707  /* */
56708 
56709  /* name Internal Functions
56710  \brief Internal functions ... incomplete-documentation
56711 
56712  These functions have been made public as part of the design, but they are suggested for internal use
56713  or by particularly knowledgeable users for specialized tools or applications.
56714 
56715  \internal We could not make these private because they are required by user for special purposes. And
56716  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
56717 
56718  */
56719 
56720  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
56721  // overridden in every class by *generated* implementation
56723  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
56724  // MS: 06/28/02 container of names of variables or container indices
56725  // used used in the traversal to access AST successor nodes
56726  // overridden in every class by *generated* implementation
56729  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
56730 
56731  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
56732  // than all the vector copies. The implementation for these functions is generated for each class.
56734  virtual size_t get_numberOfTraversalSuccessors() override;
56736  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
56738  virtual size_t get_childIndex(SgNode *child) override;
56739 
56740 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
56741  // MS: 08/16/2002 method for generating RTI information
56743  virtual RTIReturnType roseRTI() override;
56744 #endif
56745  /* */
56746 
56747 
56748 
56749  /* name Deprecated Functions
56750  \brief Deprecated functions ... incomplete-documentation
56751 
56752  These functions have been deprecated from use.
56753  */
56754  /* */
56755 
56757  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
56758 
56759  // JJW (10/16/2008): Changed to a single function in Node.code, and put
56760  // getVariant() in #if 0 block to prevent confusing Doxygen
56761 #if 0
56762 
56763  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
56765  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
56766 #endif
56767  /* */
56768 
56769 
56770 
56771 
56772  public:
56773  /* name Traversal Support Functions
56774  \brief Traversal support functions ... incomplete-documentation
56775 
56776  These functions have been made public as part of the design, but they are suggested for internal use
56777  or by particularly knowledgable users for specialized tools or applications.
56778  */
56779  /* */
56780 
56781  // DQ (11/26/2005): Support for visitor pattern mechanims
56782  // (inferior to ROSE traversal mechanism, experimental).
56786 
56787  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
56789  virtual void accept (ROSE_VisitorPattern & visitor) override;
56790 
56791  // DQ (12/26/2005): Support for traversal based on the memory pool
56794  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
56795 
56799 
56800  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
56801  // This traversal helps support internal tools that call static member functions.
56802  // note: this function operates on the memory pools.
56805  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
56806  /* */
56807 
56808 
56809  public:
56810  /* name Memory Allocation Functions
56811  \brief Memory allocations functions ... incomplete-documentation
56812 
56813  These functions have been made public as part of the design, but they are suggested for internal use
56814  or by particularly knowledgable users for specialized tools or applications.
56815  */
56816  /* */
56817 
56828  virtual bool isInMemoryPool() override;
56829 
56840  virtual void checkDataMemberPointersIfInMemoryPool() override;
56841 
56842  // DQ (4/30/2006): Modified to be a const function.
56857  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
56858 
56868  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
56869 
56881  virtual long getChildIndex( SgNode* childNode ) const override;
56882 
56883  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
56884  // comment here (changed to be a C style comment and not be a doxygen comment).
56885  /* \brief Constructor for use by AST File I/O Mechanism
56886 
56887  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
56888  which obtained via fast binary file I/O from disk.
56889  */
56890  // SgTypeString( SgTypeStringStorageClass& source );
56891 
56892 
56893 
56894 
56895 
56896  // JH (10/24/2005): methods added to support the ast file IO
56897  private:
56898 
56899  /* name AST Memory Allocation Support Functions
56900  \brief Memory allocations support....
56901 
56902  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
56903  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
56904  and support the AST File I/O Mechanism.
56905  */
56906  /* */
56907 
56908  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
56909  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
56910  that I use the same type everywhere, if any changes are made. THe second one declares the type
56911  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
56912  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
56913  a correspinding one in the AST_FILE_IO class!
56914  */
56915  // DQ (9/2/2015): This typedef is no longer used, we can't define the
56916  // comment here (changed to be a C style comment and not be a doxygen comment).
56917  /* \brief Typedef used for low level memory access.
56918  */
56919  // typedef unsigned char* TestType;
56920 
56921  // DQ (9/2/2015): This typedef is no longer used, we can't define the
56922  // comment here (changed to be a C style comment and not be a doxygen comment).
56923  /* \brief Typedef used to hold memory addresses as values.
56924  */
56925  // typedef unsigned long AddressType;
56926 
56927 
56928 
56929  // necessary, to have direct access to the p_freepointer and the private methods !
56931  friend class AST_FILE_IO;
56932 
56934  friend class SgTypeStringStorageClass;
56935 
56937  friend class AstSpecificDataManagingClass;
56938 
56940  friend class AstSpecificDataManagingClassStorageClass;
56941 
56942  public:
56944  SgTypeString( const SgTypeStringStorageClass& source );
56945 
56946  // private: // JJW hack
56947  /*
56948  name AST Memory Allocation Support Variables
56949  Memory allocations support variables
56950 
56951  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
56952  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
56953  and support the AST File I/O Mechanism.
56954  */
56955  /* */
56956 
56957  public:
56958 
56959  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
56960  // to current node (so that it will work cleanly with build functions to specify patterns).
56961  // virtual SgNode* addRegExpAttribute();
56968 
56969 // *** COMMON CODE SECTION ENDS HERE ***
56970 
56971 
56972 // End of memberFunctionString
56973 // Start of memberFunctionString
56974 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
56975 
56976  // the generated cast function
56977  // friend ROSE_DLL_API SgTypeString* isSgTypeString ( SgNode* s );
56978 
56979  typedef SgType base_node_type;
56980 
56981 
56982 // End of memberFunctionString
56983 // Start of memberFunctionString
56984 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
56985 
56986  // SgName get_mangled ( SgUnparse_Info & info );
56987 
56989  // SgName get_mangled ( SgUnparse_Info & info );
56990  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
56991  virtual SgName get_mangled (void) const override;
56992 
56993 
56994 
56995 // End of memberFunctionString
56996 
56997  public:
56998  SgExpression* get_lengthExpression() const;
56999  void set_lengthExpression(SgExpression* lengthExpression);
57000 
57001 
57002  public:
57003  virtual ~SgTypeString();
57004 
57005 
57006  public:
57007  SgTypeString(SgExpression* lengthExpression = NULL);
57008 
57009  protected:
57010 // Start of memberFunctionString
57011 SgExpression* p_lengthExpression;
57012 
57013 // End of memberFunctionString
57014 
57015 
57016 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
57017 
57018 
57019  };
57020 #endif
57021 
57022 // postdeclarations for SgTypeString
57023 
57024 /* #line 57025 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
57025 
57026 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
57027 
57028 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
57029 
57030 
57031 /* #line 57032 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
57032 
57033 
57034 
57035 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
57036 
57037 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
57038 // This code is automatically generated for each
57039 // terminal and non-terminal within the defined
57040 // grammar. There is a simple way to change the
57041 // code to fix bugs etc. See the ROSE README file
57042 // for directions.
57043 
57044 // tps: (02/22/2010): Adding DLL export requirements
57045 #include "rosedll.h"
57046 
57047 // predeclarations for SgTypeBool
57048 
57049 /* #line 57050 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
57050 
57051 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
57052 
57053 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
57054 
57055 #if 1
57056 // Class Definition for SgTypeBool
57057 class ROSE_DLL_API SgTypeBool : public SgType
57058  {
57059  public:
57060 
57061 
57062 /* #line 57063 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
57063 
57064  virtual SgNode* copy ( SgCopyHelp& help) const override;
57065 // Start of memberFunctionString
57066 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
57067 
57068 // *** COMMON CODE SECTION BEGINS HERE ***
57069 
57070  public:
57071 
57072  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
57073  // and not required which is required to match the other aspects of the copy mechanism code generation.
57074  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
57075  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
57076  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
57077  // virtual SgNode* copy ( const SgCopyHelp & help) const;
57078 
57080  virtual std::string class_name() const override;
57081 
57083  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
57084 
57086  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
57087  // static const VariantT static_variant = V_SgTypeBool;
57088  enum { static_variant = V_SgTypeBool };
57089 
57090  /* the generated cast function */
57092  ROSE_DLL_API friend SgTypeBool* isSgTypeBool( SgNode * s );
57093 
57095  ROSE_DLL_API friend const SgTypeBool* isSgTypeBool( const SgNode * s );
57096 
57097  // ******************************************
57098  // * Memory Pool / New / Delete
57099  // ******************************************
57100 
57101  public:
57103  static const unsigned pool_size; //
57105  static std::vector<unsigned char *> pools; //
57107  static SgTypeBool * next_node; //
57108 
57110  static unsigned long initializeStorageClassArray(SgTypeBoolStorageClass *); //
57111 
57113  static void clearMemoryPool(); //
57114  static void deleteMemoryPool(); //
57115 
57117  static void extendMemoryPoolForFileIO(); //
57118 
57120  static SgTypeBool * getPointerFromGlobalIndex(unsigned long); //
57122  static SgTypeBool * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
57123 
57125  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
57127  static void resetValidFreepointers(); //
57129  static unsigned long getNumberOfLastValidPointer(); //
57130 
57131 
57132 #if defined(INLINE_FUNCTIONS)
57133 
57134  inline void *operator new (size_t size);
57135 #else
57136 
57137  void *operator new (size_t size);
57138 #endif
57139 
57140  void operator delete (void* pointer, size_t size);
57141 
57142  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
57143  void operator delete (void* pointer)
57144  {
57145  // This is the generated delete operator...
57146  SgTypeBool::operator delete (pointer,sizeof(SgTypeBool));
57147  }
57148 
57150  static size_t numberOfNodes();
57151 
57153  static size_t memoryUsage();
57154 
57155  // End of scope which started in IR nodes specific code
57156  /* */
57157 
57158  /* name Internal Functions
57159  \brief Internal functions ... incomplete-documentation
57160 
57161  These functions have been made public as part of the design, but they are suggested for internal use
57162  or by particularly knowledgeable users for specialized tools or applications.
57163 
57164  \internal We could not make these private because they are required by user for special purposes. And
57165  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
57166 
57167  */
57168 
57169  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
57170  // overridden in every class by *generated* implementation
57172  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
57173  // MS: 06/28/02 container of names of variables or container indices
57174  // used used in the traversal to access AST successor nodes
57175  // overridden in every class by *generated* implementation
57178  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
57179 
57180  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
57181  // than all the vector copies. The implementation for these functions is generated for each class.
57183  virtual size_t get_numberOfTraversalSuccessors() override;
57185  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
57187  virtual size_t get_childIndex(SgNode *child) override;
57188 
57189 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
57190  // MS: 08/16/2002 method for generating RTI information
57192  virtual RTIReturnType roseRTI() override;
57193 #endif
57194  /* */
57195 
57196 
57197 
57198  /* name Deprecated Functions
57199  \brief Deprecated functions ... incomplete-documentation
57200 
57201  These functions have been deprecated from use.
57202  */
57203  /* */
57204 
57206  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
57207 
57208  // JJW (10/16/2008): Changed to a single function in Node.code, and put
57209  // getVariant() in #if 0 block to prevent confusing Doxygen
57210 #if 0
57211 
57212  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
57214  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
57215 #endif
57216  /* */
57217 
57218 
57219 
57220 
57221  public:
57222  /* name Traversal Support Functions
57223  \brief Traversal support functions ... incomplete-documentation
57224 
57225  These functions have been made public as part of the design, but they are suggested for internal use
57226  or by particularly knowledgable users for specialized tools or applications.
57227  */
57228  /* */
57229 
57230  // DQ (11/26/2005): Support for visitor pattern mechanims
57231  // (inferior to ROSE traversal mechanism, experimental).
57235 
57236  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
57238  virtual void accept (ROSE_VisitorPattern & visitor) override;
57239 
57240  // DQ (12/26/2005): Support for traversal based on the memory pool
57243  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
57244 
57248 
57249  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
57250  // This traversal helps support internal tools that call static member functions.
57251  // note: this function operates on the memory pools.
57254  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
57255  /* */
57256 
57257 
57258  public:
57259  /* name Memory Allocation Functions
57260  \brief Memory allocations functions ... incomplete-documentation
57261 
57262  These functions have been made public as part of the design, but they are suggested for internal use
57263  or by particularly knowledgable users for specialized tools or applications.
57264  */
57265  /* */
57266 
57277  virtual bool isInMemoryPool() override;
57278 
57289  virtual void checkDataMemberPointersIfInMemoryPool() override;
57290 
57291  // DQ (4/30/2006): Modified to be a const function.
57306  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
57307 
57317  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
57318 
57330  virtual long getChildIndex( SgNode* childNode ) const override;
57331 
57332  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
57333  // comment here (changed to be a C style comment and not be a doxygen comment).
57334  /* \brief Constructor for use by AST File I/O Mechanism
57335 
57336  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
57337  which obtained via fast binary file I/O from disk.
57338  */
57339  // SgTypeBool( SgTypeBoolStorageClass& source );
57340 
57341 
57342 
57343 
57344 
57345  // JH (10/24/2005): methods added to support the ast file IO
57346  private:
57347 
57348  /* name AST Memory Allocation Support Functions
57349  \brief Memory allocations support....
57350 
57351  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
57352  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
57353  and support the AST File I/O Mechanism.
57354  */
57355  /* */
57356 
57357  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
57358  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
57359  that I use the same type everywhere, if any changes are made. THe second one declares the type
57360  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
57361  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
57362  a correspinding one in the AST_FILE_IO class!
57363  */
57364  // DQ (9/2/2015): This typedef is no longer used, we can't define the
57365  // comment here (changed to be a C style comment and not be a doxygen comment).
57366  /* \brief Typedef used for low level memory access.
57367  */
57368  // typedef unsigned char* TestType;
57369 
57370  // DQ (9/2/2015): This typedef is no longer used, we can't define the
57371  // comment here (changed to be a C style comment and not be a doxygen comment).
57372  /* \brief Typedef used to hold memory addresses as values.
57373  */
57374  // typedef unsigned long AddressType;
57375 
57376 
57377 
57378  // necessary, to have direct access to the p_freepointer and the private methods !
57380  friend class AST_FILE_IO;
57381 
57383  friend class SgTypeBoolStorageClass;
57384 
57386  friend class AstSpecificDataManagingClass;
57387 
57389  friend class AstSpecificDataManagingClassStorageClass;
57390 
57391  public:
57393  SgTypeBool( const SgTypeBoolStorageClass& source );
57394 
57395  // private: // JJW hack
57396  /*
57397  name AST Memory Allocation Support Variables
57398  Memory allocations support variables
57399 
57400  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
57401  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
57402  and support the AST File I/O Mechanism.
57403  */
57404  /* */
57405 
57406  public:
57407 
57408  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
57409  // to current node (so that it will work cleanly with build functions to specify patterns).
57410  // virtual SgNode* addRegExpAttribute();
57416  SgTypeBool* addRegExpAttribute(std::string s, AstRegExAttribute* a);
57417 
57418 // *** COMMON CODE SECTION ENDS HERE ***
57419 
57420 
57421 // End of memberFunctionString
57422 // Start of memberFunctionString
57423 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
57424 
57425  // the generated cast function
57426  // friend ROSE_DLL_API SgTypeBool* isSgTypeBool ( SgNode* s );
57427 
57428  typedef SgType base_node_type;
57429 
57430 
57431 // End of memberFunctionString
57432 // Start of memberFunctionString
57433 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
57434 
57435  // SgName get_mangled ( SgUnparse_Info & info );
57436 
57438  // SgName get_mangled ( SgUnparse_Info & info );
57439  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
57440  virtual SgName get_mangled (void) const override;
57441 
57442 
57443 
57444 // End of memberFunctionString
57445 // Start of memberFunctionString
57446 /* #line 267 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
57447 
57449  // DQ (1/31/2006): Modified to build all types in the memory pools
57450  // static SgTypeBool builtin_type;
57451  // static SgTypeBool* builtin_type;
57452 
57453  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
57454  // since we don't store the type explicitly anymore except in a few IR nodes which have there
57455  // own data member and associated access function.
57456  // static SgTypeBool* get_builtin_type();
57457 
57458  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
57459  // since we don't store the type explicitly anymore except in a few IR nodes which have there
57460  // own data member and associated access function.
57461  // static void set_builtin_type(SgTypeBool* builtin_type);
57462 
57464  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
57465  // static SgTypeBool* createType(void);
57466  static SgTypeBool* createType(SgExpression* optional_fortran_type_kind = NULL);
57467 
57468 
57469 // End of memberFunctionString
57470 
57471 
57472 
57473  public:
57474  virtual ~SgTypeBool();
57475 
57476 
57477  public:
57478  SgTypeBool();
57479 
57480  protected:
57481 // Start of memberFunctionString
57482 static SgTypeBool* p_builtin_type;
57483 
57484 // End of memberFunctionString
57485 
57486 
57487 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
57488 
57489 
57490  };
57491 #endif
57492 
57493 // postdeclarations for SgTypeBool
57494 
57495 /* #line 57496 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
57496 
57497 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
57498 
57499 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
57500 
57501 
57502 /* #line 57503 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
57503 
57504 
57505 
57506 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
57507 
57508 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
57509 // This code is automatically generated for each
57510 // terminal and non-terminal within the defined
57511 // grammar. There is a simple way to change the
57512 // code to fix bugs etc. See the ROSE README file
57513 // for directions.
57514 
57515 // tps: (02/22/2010): Adding DLL export requirements
57516 #include "rosedll.h"
57517 
57518 // predeclarations for SgPointerType
57519 
57520 /* #line 57521 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
57521 
57522 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
57523 
57524 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
57525 
57526 #if 1
57527 // Class Definition for SgPointerType
57528 class ROSE_DLL_API SgPointerType : public SgType
57529  {
57530  public:
57531 
57532 
57533 /* #line 57534 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
57534 
57535  virtual SgNode* copy ( SgCopyHelp& help) const override;
57536 // Start of memberFunctionString
57537 /* #line 290 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
57538 
57539  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
57540  // since we don't store the type explicitly anymore except in a few IR nodes which have there
57541  // own data member and associated access function.
57542  // static SgPointerType* get_builtin_type();
57543 
57544  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
57545  // since we don't store the type explicitly anymore except in a few IR nodes which have there
57546  // own data member and associated access function.
57547  // static void set_builtin_type(SgPointerType* builtin_type);
57548 
57550  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
57551  // static SgPointerType* createType(SgType* type = NULL);
57552  static SgPointerType* createType(SgType* type = NULL, SgExpression* optional_fortran_type_kind = NULL);
57553 
57554 
57555 // End of memberFunctionString
57556 // Start of memberFunctionString
57557 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
57558 
57559 // *** COMMON CODE SECTION BEGINS HERE ***
57560 
57561  public:
57562 
57563  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
57564  // and not required which is required to match the other aspects of the copy mechanism code generation.
57565  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
57566  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
57567  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
57568  // virtual SgNode* copy ( const SgCopyHelp & help) const;
57569 
57571  virtual std::string class_name() const override;
57572 
57574  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
57575 
57577  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
57578  // static const VariantT static_variant = V_SgPointerType;
57579  enum { static_variant = V_SgPointerType };
57580 
57581  /* the generated cast function */
57583  ROSE_DLL_API friend SgPointerType* isSgPointerType( SgNode * s );
57584 
57586  ROSE_DLL_API friend const SgPointerType* isSgPointerType( const SgNode * s );
57587 
57588  // ******************************************
57589  // * Memory Pool / New / Delete
57590  // ******************************************
57591 
57592  public:
57594  static const unsigned pool_size; //
57596  static std::vector<unsigned char *> pools; //
57598  static SgPointerType * next_node; //
57599 
57601  static unsigned long initializeStorageClassArray(SgPointerTypeStorageClass *); //
57602 
57604  static void clearMemoryPool(); //
57605  static void deleteMemoryPool(); //
57606 
57608  static void extendMemoryPoolForFileIO(); //
57609 
57611  static SgPointerType * getPointerFromGlobalIndex(unsigned long); //
57613  static SgPointerType * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
57614 
57616  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
57618  static void resetValidFreepointers(); //
57620  static unsigned long getNumberOfLastValidPointer(); //
57621 
57622 
57623 #if defined(INLINE_FUNCTIONS)
57624 
57625  inline void *operator new (size_t size);
57626 #else
57627 
57628  void *operator new (size_t size);
57629 #endif
57630 
57631  void operator delete (void* pointer, size_t size);
57632 
57633  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
57634  void operator delete (void* pointer)
57635  {
57636  // This is the generated delete operator...
57637  SgPointerType::operator delete (pointer,sizeof(SgPointerType));
57638  }
57639 
57641  static size_t numberOfNodes();
57642 
57644  static size_t memoryUsage();
57645 
57646  // End of scope which started in IR nodes specific code
57647  /* */
57648 
57649  /* name Internal Functions
57650  \brief Internal functions ... incomplete-documentation
57651 
57652  These functions have been made public as part of the design, but they are suggested for internal use
57653  or by particularly knowledgeable users for specialized tools or applications.
57654 
57655  \internal We could not make these private because they are required by user for special purposes. And
57656  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
57657 
57658  */
57659 
57660  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
57661  // overridden in every class by *generated* implementation
57663  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
57664  // MS: 06/28/02 container of names of variables or container indices
57665  // used used in the traversal to access AST successor nodes
57666  // overridden in every class by *generated* implementation
57669  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
57670 
57671  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
57672  // than all the vector copies. The implementation for these functions is generated for each class.
57674  virtual size_t get_numberOfTraversalSuccessors() override;
57676  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
57678  virtual size_t get_childIndex(SgNode *child) override;
57679 
57680 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
57681  // MS: 08/16/2002 method for generating RTI information
57683  virtual RTIReturnType roseRTI() override;
57684 #endif
57685  /* */
57686 
57687 
57688 
57689  /* name Deprecated Functions
57690  \brief Deprecated functions ... incomplete-documentation
57691 
57692  These functions have been deprecated from use.
57693  */
57694  /* */
57695 
57697  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
57698 
57699  // JJW (10/16/2008): Changed to a single function in Node.code, and put
57700  // getVariant() in #if 0 block to prevent confusing Doxygen
57701 #if 0
57702 
57703  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
57705  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
57706 #endif
57707  /* */
57708 
57709 
57710 
57711 
57712  public:
57713  /* name Traversal Support Functions
57714  \brief Traversal support functions ... incomplete-documentation
57715 
57716  These functions have been made public as part of the design, but they are suggested for internal use
57717  or by particularly knowledgable users for specialized tools or applications.
57718  */
57719  /* */
57720 
57721  // DQ (11/26/2005): Support for visitor pattern mechanims
57722  // (inferior to ROSE traversal mechanism, experimental).
57726 
57727  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
57729  virtual void accept (ROSE_VisitorPattern & visitor) override;
57730 
57731  // DQ (12/26/2005): Support for traversal based on the memory pool
57734  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
57735 
57739 
57740  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
57741  // This traversal helps support internal tools that call static member functions.
57742  // note: this function operates on the memory pools.
57745  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
57746  /* */
57747 
57748 
57749  public:
57750  /* name Memory Allocation Functions
57751  \brief Memory allocations functions ... incomplete-documentation
57752 
57753  These functions have been made public as part of the design, but they are suggested for internal use
57754  or by particularly knowledgable users for specialized tools or applications.
57755  */
57756  /* */
57757 
57768  virtual bool isInMemoryPool() override;
57769 
57780  virtual void checkDataMemberPointersIfInMemoryPool() override;
57781 
57782  // DQ (4/30/2006): Modified to be a const function.
57797  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
57798 
57808  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
57809 
57821  virtual long getChildIndex( SgNode* childNode ) const override;
57822 
57823  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
57824  // comment here (changed to be a C style comment and not be a doxygen comment).
57825  /* \brief Constructor for use by AST File I/O Mechanism
57826 
57827  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
57828  which obtained via fast binary file I/O from disk.
57829  */
57830  // SgPointerType( SgPointerTypeStorageClass& source );
57831 
57832 
57833 
57834 
57835 
57836  // JH (10/24/2005): methods added to support the ast file IO
57837  private:
57838 
57839  /* name AST Memory Allocation Support Functions
57840  \brief Memory allocations support....
57841 
57842  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
57843  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
57844  and support the AST File I/O Mechanism.
57845  */
57846  /* */
57847 
57848  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
57849  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
57850  that I use the same type everywhere, if any changes are made. THe second one declares the type
57851  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
57852  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
57853  a correspinding one in the AST_FILE_IO class!
57854  */
57855  // DQ (9/2/2015): This typedef is no longer used, we can't define the
57856  // comment here (changed to be a C style comment and not be a doxygen comment).
57857  /* \brief Typedef used for low level memory access.
57858  */
57859  // typedef unsigned char* TestType;
57860 
57861  // DQ (9/2/2015): This typedef is no longer used, we can't define the
57862  // comment here (changed to be a C style comment and not be a doxygen comment).
57863  /* \brief Typedef used to hold memory addresses as values.
57864  */
57865  // typedef unsigned long AddressType;
57866 
57867 
57868 
57869  // necessary, to have direct access to the p_freepointer and the private methods !
57871  friend class AST_FILE_IO;
57872 
57874  friend class SgPointerTypeStorageClass;
57875 
57877  friend class AstSpecificDataManagingClass;
57878 
57880  friend class AstSpecificDataManagingClassStorageClass;
57881 
57882  public:
57884  SgPointerType( const SgPointerTypeStorageClass& source );
57885 
57886  // private: // JJW hack
57887  /*
57888  name AST Memory Allocation Support Variables
57889  Memory allocations support variables
57890 
57891  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
57892  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
57893  and support the AST File I/O Mechanism.
57894  */
57895  /* */
57896 
57897  public:
57898 
57899  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
57900  // to current node (so that it will work cleanly with build functions to specify patterns).
57901  // virtual SgNode* addRegExpAttribute();
57908 
57909 // *** COMMON CODE SECTION ENDS HERE ***
57910 
57911 
57912 // End of memberFunctionString
57913 // Start of memberFunctionString
57914 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
57915 
57916  // the generated cast function
57917  // friend ROSE_DLL_API SgPointerType* isSgPointerType ( SgNode* s );
57918 
57919  typedef SgType base_node_type;
57920 
57921 
57922 // End of memberFunctionString
57923 // Start of memberFunctionString
57924 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
57925 
57926  // SgName get_mangled ( SgUnparse_Info & info );
57927 
57929  // SgName get_mangled ( SgUnparse_Info & info );
57930  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
57931  virtual SgName get_mangled (void) const override;
57932 
57933 
57934 
57935 // End of memberFunctionString
57936 
57937  public:
57938  SgType* get_base_type() const;
57939  void set_base_type(SgType* base_type);
57940 
57941 
57942  public:
57943  virtual ~SgPointerType();
57944 
57945 
57946  public:
57947  SgPointerType(SgType* base_type = NULL);
57948 
57949  protected:
57950 // Start of memberFunctionString
57951 SgType* p_base_type;
57952 
57953 // End of memberFunctionString
57954 
57955 
57956 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
57957 
57958 
57959  };
57960 #endif
57961 
57962 // postdeclarations for SgPointerType
57963 
57964 /* #line 57965 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
57965 
57966 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
57967 
57968 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
57969 
57970 
57971 /* #line 57972 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
57972 
57973 
57974 
57975 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
57976 
57977 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
57978 // This code is automatically generated for each
57979 // terminal and non-terminal within the defined
57980 // grammar. There is a simple way to change the
57981 // code to fix bugs etc. See the ROSE README file
57982 // for directions.
57983 
57984 // tps: (02/22/2010): Adding DLL export requirements
57985 #include "rosedll.h"
57986 
57987 // predeclarations for SgPointerMemberType
57988 
57989 /* #line 57990 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
57990 
57991 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
57992 
57993 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
57994 
57995 #if 1
57996 // Class Definition for SgPointerMemberType
57997 class ROSE_DLL_API SgPointerMemberType : public SgPointerType
57998  {
57999  public:
58000 
58001 
58002 /* #line 58003 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
58003 
58004  virtual SgNode* copy ( SgCopyHelp& help) const override;
58005 // Start of memberFunctionString
58006 /* #line 290 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
58007 
58008  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
58009  // since we don't store the type explicitly anymore except in a few IR nodes which have there
58010  // own data member and associated access function.
58011  // static SgPointerMemberType* get_builtin_type();
58012 
58013  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
58014  // since we don't store the type explicitly anymore except in a few IR nodes which have there
58015  // own data member and associated access function.
58016  // static void set_builtin_type(SgPointerMemberType* builtin_type);
58017 
58019  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
58020  // static SgPointerMemberType* createType(SgType* type = NULL, SgType* class_type = NULL);
58021  static SgPointerMemberType* createType(SgType* type = NULL, SgType* class_type = NULL, SgExpression* optional_fortran_type_kind = NULL);
58022 
58023 
58024 // End of memberFunctionString
58025 // Start of memberFunctionString
58026 /* #line 927 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
58027 
58029  // DQ (4/11/2019): This alllows it to support both the cases where a definition might not
58030  // exist and the case of a pointer to member of a nonreal type.
58031  // The old functionality is represented in the get_class_definition_of() function.
58032  SgDeclarationStatement* get_class_declaration_of() const;
58033 
58035  SgClassDefinition* get_class_definition_of() const;
58036 
58037  // DQ (4/20/2019): Renamed these to make them more clear, since there are two locations for name qualification in a SgPointerMemberType.
58038  // DQ (4/18/2019): Added support for name qualification of type chains of SgPointerMemberType.
58039  // SgName get_qualified_name_prefix() const;
58040  SgName get_qualified_name_prefix_for_class_of() const;
58041  SgName get_qualified_name_prefix_for_base_type() const;
58042 
58043 
58044 
58045 // End of memberFunctionString
58046 // Start of memberFunctionString
58047 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
58048 
58049 // *** COMMON CODE SECTION BEGINS HERE ***
58050 
58051  public:
58052 
58053  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
58054  // and not required which is required to match the other aspects of the copy mechanism code generation.
58055  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
58056  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
58057  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
58058  // virtual SgNode* copy ( const SgCopyHelp & help) const;
58059 
58061  virtual std::string class_name() const override;
58062 
58064  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
58065 
58067  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
58068  // static const VariantT static_variant = V_SgPointerMemberType;
58069  enum { static_variant = V_SgPointerMemberType };
58070 
58071  /* the generated cast function */
58073  ROSE_DLL_API friend SgPointerMemberType* isSgPointerMemberType( SgNode * s );
58074 
58076  ROSE_DLL_API friend const SgPointerMemberType* isSgPointerMemberType( const SgNode * s );
58077 
58078  // ******************************************
58079  // * Memory Pool / New / Delete
58080  // ******************************************
58081 
58082  public:
58084  static const unsigned pool_size; //
58086  static std::vector<unsigned char *> pools; //
58088  static SgPointerMemberType * next_node; //
58089 
58091  static unsigned long initializeStorageClassArray(SgPointerMemberTypeStorageClass *); //
58092 
58094  static void clearMemoryPool(); //
58095  static void deleteMemoryPool(); //
58096 
58098  static void extendMemoryPoolForFileIO(); //
58099 
58101  static SgPointerMemberType * getPointerFromGlobalIndex(unsigned long); //
58103  static SgPointerMemberType * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
58104 
58106  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
58108  static void resetValidFreepointers(); //
58110  static unsigned long getNumberOfLastValidPointer(); //
58111 
58112 
58113 #if defined(INLINE_FUNCTIONS)
58114 
58115  inline void *operator new (size_t size);
58116 #else
58117 
58118  void *operator new (size_t size);
58119 #endif
58120 
58121  void operator delete (void* pointer, size_t size);
58122 
58123  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
58124  void operator delete (void* pointer)
58125  {
58126  // This is the generated delete operator...
58127  SgPointerMemberType::operator delete (pointer,sizeof(SgPointerMemberType));
58128  }
58129 
58131  static size_t numberOfNodes();
58132 
58134  static size_t memoryUsage();
58135 
58136  // End of scope which started in IR nodes specific code
58137  /* */
58138 
58139  /* name Internal Functions
58140  \brief Internal functions ... incomplete-documentation
58141 
58142  These functions have been made public as part of the design, but they are suggested for internal use
58143  or by particularly knowledgeable users for specialized tools or applications.
58144 
58145  \internal We could not make these private because they are required by user for special purposes. And
58146  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
58147 
58148  */
58149 
58150  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
58151  // overridden in every class by *generated* implementation
58153  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
58154  // MS: 06/28/02 container of names of variables or container indices
58155  // used used in the traversal to access AST successor nodes
58156  // overridden in every class by *generated* implementation
58159  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
58160 
58161  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
58162  // than all the vector copies. The implementation for these functions is generated for each class.
58164  virtual size_t get_numberOfTraversalSuccessors() override;
58166  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
58168  virtual size_t get_childIndex(SgNode *child) override;
58169 
58170 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
58171  // MS: 08/16/2002 method for generating RTI information
58173  virtual RTIReturnType roseRTI() override;
58174 #endif
58175  /* */
58176 
58177 
58178 
58179  /* name Deprecated Functions
58180  \brief Deprecated functions ... incomplete-documentation
58181 
58182  These functions have been deprecated from use.
58183  */
58184  /* */
58185 
58187  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
58188 
58189  // JJW (10/16/2008): Changed to a single function in Node.code, and put
58190  // getVariant() in #if 0 block to prevent confusing Doxygen
58191 #if 0
58192 
58193  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
58195  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
58196 #endif
58197  /* */
58198 
58199 
58200 
58201 
58202  public:
58203  /* name Traversal Support Functions
58204  \brief Traversal support functions ... incomplete-documentation
58205 
58206  These functions have been made public as part of the design, but they are suggested for internal use
58207  or by particularly knowledgable users for specialized tools or applications.
58208  */
58209  /* */
58210 
58211  // DQ (11/26/2005): Support for visitor pattern mechanims
58212  // (inferior to ROSE traversal mechanism, experimental).
58216 
58217  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
58219  virtual void accept (ROSE_VisitorPattern & visitor) override;
58220 
58221  // DQ (12/26/2005): Support for traversal based on the memory pool
58224  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
58225 
58229 
58230  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
58231  // This traversal helps support internal tools that call static member functions.
58232  // note: this function operates on the memory pools.
58235  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
58236  /* */
58237 
58238 
58239  public:
58240  /* name Memory Allocation Functions
58241  \brief Memory allocations functions ... incomplete-documentation
58242 
58243  These functions have been made public as part of the design, but they are suggested for internal use
58244  or by particularly knowledgable users for specialized tools or applications.
58245  */
58246  /* */
58247 
58258  virtual bool isInMemoryPool() override;
58259 
58270  virtual void checkDataMemberPointersIfInMemoryPool() override;
58271 
58272  // DQ (4/30/2006): Modified to be a const function.
58287  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
58288 
58298  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
58299 
58311  virtual long getChildIndex( SgNode* childNode ) const override;
58312 
58313  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
58314  // comment here (changed to be a C style comment and not be a doxygen comment).
58315  /* \brief Constructor for use by AST File I/O Mechanism
58316 
58317  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
58318  which obtained via fast binary file I/O from disk.
58319  */
58320  // SgPointerMemberType( SgPointerMemberTypeStorageClass& source );
58321 
58322 
58323 
58324 
58325 
58326  // JH (10/24/2005): methods added to support the ast file IO
58327  private:
58328 
58329  /* name AST Memory Allocation Support Functions
58330  \brief Memory allocations support....
58331 
58332  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
58333  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
58334  and support the AST File I/O Mechanism.
58335  */
58336  /* */
58337 
58338  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
58339  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
58340  that I use the same type everywhere, if any changes are made. THe second one declares the type
58341  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
58342  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
58343  a correspinding one in the AST_FILE_IO class!
58344  */
58345  // DQ (9/2/2015): This typedef is no longer used, we can't define the
58346  // comment here (changed to be a C style comment and not be a doxygen comment).
58347  /* \brief Typedef used for low level memory access.
58348  */
58349  // typedef unsigned char* TestType;
58350 
58351  // DQ (9/2/2015): This typedef is no longer used, we can't define the
58352  // comment here (changed to be a C style comment and not be a doxygen comment).
58353  /* \brief Typedef used to hold memory addresses as values.
58354  */
58355  // typedef unsigned long AddressType;
58356 
58357 
58358 
58359  // necessary, to have direct access to the p_freepointer and the private methods !
58361  friend class AST_FILE_IO;
58362 
58364  friend class SgPointerMemberTypeStorageClass;
58365 
58367  friend class AstSpecificDataManagingClass;
58368 
58370  friend class AstSpecificDataManagingClassStorageClass;
58371 
58372  public:
58374  SgPointerMemberType( const SgPointerMemberTypeStorageClass& source );
58375 
58376  // private: // JJW hack
58377  /*
58378  name AST Memory Allocation Support Variables
58379  Memory allocations support variables
58380 
58381  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
58382  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
58383  and support the AST File I/O Mechanism.
58384  */
58385  /* */
58386 
58387  public:
58388 
58389  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
58390  // to current node (so that it will work cleanly with build functions to specify patterns).
58391  // virtual SgNode* addRegExpAttribute();
58398 
58399 // *** COMMON CODE SECTION ENDS HERE ***
58400 
58401 
58402 // End of memberFunctionString
58403 // Start of memberFunctionString
58404 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
58405 
58406  // the generated cast function
58407  // friend ROSE_DLL_API SgPointerMemberType* isSgPointerMemberType ( SgNode* s );
58408 
58409  typedef SgPointerType base_node_type;
58410 
58411 
58412 // End of memberFunctionString
58413 // Start of memberFunctionString
58414 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
58415 
58416  // SgName get_mangled ( SgUnparse_Info & info );
58417 
58419  // SgName get_mangled ( SgUnparse_Info & info );
58420  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
58421  virtual SgName get_mangled (void) const override;
58422 
58423 
58424 
58425 // End of memberFunctionString
58426 
58427  public:
58428  SgType* get_class_type() const;
58429  void set_class_type(SgType* class_type);
58430 
58431 
58432  public:
58433  virtual ~SgPointerMemberType();
58434 
58435 
58436  public:
58437  SgPointerMemberType(SgType* base_type = NULL, SgType* class_type = NULL);
58438 
58439  protected:
58440 // Start of memberFunctionString
58441 SgType* p_class_type;
58442 
58443 // End of memberFunctionString
58444 
58445 
58446 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
58447 
58448 
58449  };
58450 #endif
58451 
58452 // postdeclarations for SgPointerMemberType
58453 
58454 /* #line 58455 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
58455 
58456 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
58457 
58458 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
58459 
58460 
58461 /* #line 58462 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
58462 
58463 
58464 
58465 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
58466 
58467 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
58468 // This code is automatically generated for each
58469 // terminal and non-terminal within the defined
58470 // grammar. There is a simple way to change the
58471 // code to fix bugs etc. See the ROSE README file
58472 // for directions.
58473 
58474 // tps: (02/22/2010): Adding DLL export requirements
58475 #include "rosedll.h"
58476 
58477 // predeclarations for SgReferenceType
58478 
58479 /* #line 58480 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
58480 
58481 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
58482 
58483 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
58484 
58485 #if 1
58486 // Class Definition for SgReferenceType
58487 class ROSE_DLL_API SgReferenceType : public SgType
58488  {
58489  public:
58490 
58491 
58492 /* #line 58493 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
58493 
58494  virtual SgNode* copy ( SgCopyHelp& help) const override;
58495 // Start of memberFunctionString
58496 /* #line 290 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
58497 
58498  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
58499  // since we don't store the type explicitly anymore except in a few IR nodes which have there
58500  // own data member and associated access function.
58501  // static SgReferenceType* get_builtin_type();
58502 
58503  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
58504  // since we don't store the type explicitly anymore except in a few IR nodes which have there
58505  // own data member and associated access function.
58506  // static void set_builtin_type(SgReferenceType* builtin_type);
58507 
58509  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
58510  // static SgReferenceType* createType(SgType* type = NULL);
58511  static SgReferenceType* createType(SgType* type = NULL, SgExpression* optional_fortran_type_kind = NULL);
58512 
58513 
58514 // End of memberFunctionString
58515 // Start of memberFunctionString
58516 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
58517 
58518 // *** COMMON CODE SECTION BEGINS HERE ***
58519 
58520  public:
58521 
58522  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
58523  // and not required which is required to match the other aspects of the copy mechanism code generation.
58524  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
58525  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
58526  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
58527  // virtual SgNode* copy ( const SgCopyHelp & help) const;
58528 
58530  virtual std::string class_name() const override;
58531 
58533  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
58534 
58536  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
58537  // static const VariantT static_variant = V_SgReferenceType;
58538  enum { static_variant = V_SgReferenceType };
58539 
58540  /* the generated cast function */
58542  ROSE_DLL_API friend SgReferenceType* isSgReferenceType( SgNode * s );
58543 
58545  ROSE_DLL_API friend const SgReferenceType* isSgReferenceType( const SgNode * s );
58546 
58547  // ******************************************
58548  // * Memory Pool / New / Delete
58549  // ******************************************
58550 
58551  public:
58553  static const unsigned pool_size; //
58555  static std::vector<unsigned char *> pools; //
58557  static SgReferenceType * next_node; //
58558 
58560  static unsigned long initializeStorageClassArray(SgReferenceTypeStorageClass *); //
58561 
58563  static void clearMemoryPool(); //
58564  static void deleteMemoryPool(); //
58565 
58567  static void extendMemoryPoolForFileIO(); //
58568 
58570  static SgReferenceType * getPointerFromGlobalIndex(unsigned long); //
58572  static SgReferenceType * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
58573 
58575  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
58577  static void resetValidFreepointers(); //
58579  static unsigned long getNumberOfLastValidPointer(); //
58580 
58581 
58582 #if defined(INLINE_FUNCTIONS)
58583 
58584  inline void *operator new (size_t size);
58585 #else
58586 
58587  void *operator new (size_t size);
58588 #endif
58589 
58590  void operator delete (void* pointer, size_t size);
58591 
58592  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
58593  void operator delete (void* pointer)
58594  {
58595  // This is the generated delete operator...
58596  SgReferenceType::operator delete (pointer,sizeof(SgReferenceType));
58597  }
58598 
58600  static size_t numberOfNodes();
58601 
58603  static size_t memoryUsage();
58604 
58605  // End of scope which started in IR nodes specific code
58606  /* */
58607 
58608  /* name Internal Functions
58609  \brief Internal functions ... incomplete-documentation
58610 
58611  These functions have been made public as part of the design, but they are suggested for internal use
58612  or by particularly knowledgeable users for specialized tools or applications.
58613 
58614  \internal We could not make these private because they are required by user for special purposes. And
58615  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
58616 
58617  */
58618 
58619  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
58620  // overridden in every class by *generated* implementation
58622  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
58623  // MS: 06/28/02 container of names of variables or container indices
58624  // used used in the traversal to access AST successor nodes
58625  // overridden in every class by *generated* implementation
58628  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
58629 
58630  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
58631  // than all the vector copies. The implementation for these functions is generated for each class.
58633  virtual size_t get_numberOfTraversalSuccessors() override;
58635  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
58637  virtual size_t get_childIndex(SgNode *child) override;
58638 
58639 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
58640  // MS: 08/16/2002 method for generating RTI information
58642  virtual RTIReturnType roseRTI() override;
58643 #endif
58644  /* */
58645 
58646 
58647 
58648  /* name Deprecated Functions
58649  \brief Deprecated functions ... incomplete-documentation
58650 
58651  These functions have been deprecated from use.
58652  */
58653  /* */
58654 
58656  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
58657 
58658  // JJW (10/16/2008): Changed to a single function in Node.code, and put
58659  // getVariant() in #if 0 block to prevent confusing Doxygen
58660 #if 0
58661 
58662  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
58664  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
58665 #endif
58666  /* */
58667 
58668 
58669 
58670 
58671  public:
58672  /* name Traversal Support Functions
58673  \brief Traversal support functions ... incomplete-documentation
58674 
58675  These functions have been made public as part of the design, but they are suggested for internal use
58676  or by particularly knowledgable users for specialized tools or applications.
58677  */
58678  /* */
58679 
58680  // DQ (11/26/2005): Support for visitor pattern mechanims
58681  // (inferior to ROSE traversal mechanism, experimental).
58685 
58686  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
58688  virtual void accept (ROSE_VisitorPattern & visitor) override;
58689 
58690  // DQ (12/26/2005): Support for traversal based on the memory pool
58693  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
58694 
58698 
58699  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
58700  // This traversal helps support internal tools that call static member functions.
58701  // note: this function operates on the memory pools.
58704  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
58705  /* */
58706 
58707 
58708  public:
58709  /* name Memory Allocation Functions
58710  \brief Memory allocations functions ... incomplete-documentation
58711 
58712  These functions have been made public as part of the design, but they are suggested for internal use
58713  or by particularly knowledgable users for specialized tools or applications.
58714  */
58715  /* */
58716 
58727  virtual bool isInMemoryPool() override;
58728 
58739  virtual void checkDataMemberPointersIfInMemoryPool() override;
58740 
58741  // DQ (4/30/2006): Modified to be a const function.
58756  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
58757 
58767  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
58768 
58780  virtual long getChildIndex( SgNode* childNode ) const override;
58781 
58782  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
58783  // comment here (changed to be a C style comment and not be a doxygen comment).
58784  /* \brief Constructor for use by AST File I/O Mechanism
58785 
58786  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
58787  which obtained via fast binary file I/O from disk.
58788  */
58789  // SgReferenceType( SgReferenceTypeStorageClass& source );
58790 
58791 
58792 
58793 
58794 
58795  // JH (10/24/2005): methods added to support the ast file IO
58796  private:
58797 
58798  /* name AST Memory Allocation Support Functions
58799  \brief Memory allocations support....
58800 
58801  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
58802  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
58803  and support the AST File I/O Mechanism.
58804  */
58805  /* */
58806 
58807  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
58808  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
58809  that I use the same type everywhere, if any changes are made. THe second one declares the type
58810  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
58811  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
58812  a correspinding one in the AST_FILE_IO class!
58813  */
58814  // DQ (9/2/2015): This typedef is no longer used, we can't define the
58815  // comment here (changed to be a C style comment and not be a doxygen comment).
58816  /* \brief Typedef used for low level memory access.
58817  */
58818  // typedef unsigned char* TestType;
58819 
58820  // DQ (9/2/2015): This typedef is no longer used, we can't define the
58821  // comment here (changed to be a C style comment and not be a doxygen comment).
58822  /* \brief Typedef used to hold memory addresses as values.
58823  */
58824  // typedef unsigned long AddressType;
58825 
58826 
58827 
58828  // necessary, to have direct access to the p_freepointer and the private methods !
58830  friend class AST_FILE_IO;
58831 
58833  friend class SgReferenceTypeStorageClass;
58834 
58836  friend class AstSpecificDataManagingClass;
58837 
58839  friend class AstSpecificDataManagingClassStorageClass;
58840 
58841  public:
58843  SgReferenceType( const SgReferenceTypeStorageClass& source );
58844 
58845  // private: // JJW hack
58846  /*
58847  name AST Memory Allocation Support Variables
58848  Memory allocations support variables
58849 
58850  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
58851  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
58852  and support the AST File I/O Mechanism.
58853  */
58854  /* */
58855 
58856  public:
58857 
58858  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
58859  // to current node (so that it will work cleanly with build functions to specify patterns).
58860  // virtual SgNode* addRegExpAttribute();
58867 
58868 // *** COMMON CODE SECTION ENDS HERE ***
58869 
58870 
58871 // End of memberFunctionString
58872 // Start of memberFunctionString
58873 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
58874 
58875  // the generated cast function
58876  // friend ROSE_DLL_API SgReferenceType* isSgReferenceType ( SgNode* s );
58877 
58878  typedef SgType base_node_type;
58879 
58880 
58881 // End of memberFunctionString
58882 // Start of memberFunctionString
58883 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
58884 
58885  // SgName get_mangled ( SgUnparse_Info & info );
58886 
58888  // SgName get_mangled ( SgUnparse_Info & info );
58889  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
58890  virtual SgName get_mangled (void) const override;
58891 
58892 
58893 
58894 // End of memberFunctionString
58895 
58896  public:
58897  SgType* get_base_type() const;
58898  void set_base_type(SgType* base_type);
58899 
58900 
58901  public:
58902  virtual ~SgReferenceType();
58903 
58904 
58905  public:
58906  SgReferenceType(SgType* base_type = NULL);
58907 
58908  protected:
58909 // Start of memberFunctionString
58910 SgType* p_base_type;
58911 
58912 // End of memberFunctionString
58913 
58914 
58915 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
58916 
58917 
58918  };
58919 #endif
58920 
58921 // postdeclarations for SgReferenceType
58922 
58923 /* #line 58924 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
58924 
58925 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
58926 
58927 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
58928 
58929 
58930 /* #line 58931 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
58931 
58932 
58933 
58934 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
58935 
58936 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
58937 // This code is automatically generated for each
58938 // terminal and non-terminal within the defined
58939 // grammar. There is a simple way to change the
58940 // code to fix bugs etc. See the ROSE README file
58941 // for directions.
58942 
58943 // tps: (02/22/2010): Adding DLL export requirements
58944 #include "rosedll.h"
58945 
58946 // predeclarations for SgNamedType
58947 
58948 /* #line 58949 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
58949 
58950 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
58951 
58952 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
58953 
58954 #if 1
58955 // Class Definition for SgNamedType
58956 class ROSE_DLL_API SgNamedType : public SgType
58957  {
58958  public:
58959 
58960 
58961 /* #line 58962 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
58962 
58963  virtual SgNode* copy ( SgCopyHelp& help) const override;
58964 // Start of memberFunctionString
58965 /* #line 356 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
58966 
58968 
58972  // virtual SgName get_name() const = 0;
58973  virtual SgName get_name() const;
58974 
58975  SgNamedType ( const SgNamedType & X );
58976 
58977 
58978 // End of memberFunctionString
58979 // Start of memberFunctionString
58980 /* #line 379 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
58981 
58983  SgName get_qualified_name() const;
58984 
58985 
58986 // End of memberFunctionString
58987 // Start of memberFunctionString
58988 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
58989 
58990 // *** COMMON CODE SECTION BEGINS HERE ***
58991 
58992  public:
58993 
58994  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
58995  // and not required which is required to match the other aspects of the copy mechanism code generation.
58996  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
58997  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
58998  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
58999  // virtual SgNode* copy ( const SgCopyHelp & help) const;
59000 
59002  virtual std::string class_name() const override;
59003 
59005  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
59006 
59008  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
59009  // static const VariantT static_variant = V_SgNamedType;
59010  enum { static_variant = V_SgNamedType };
59011 
59012  /* the generated cast function */
59014  ROSE_DLL_API friend SgNamedType* isSgNamedType( SgNode * s );
59015 
59017  ROSE_DLL_API friend const SgNamedType* isSgNamedType( const SgNode * s );
59018 
59019  // ******************************************
59020  // * Memory Pool / New / Delete
59021  // ******************************************
59022 
59023  public:
59025  static const unsigned pool_size; //
59027  static std::vector<unsigned char *> pools; //
59029  static SgNamedType * next_node; //
59030 
59032  static unsigned long initializeStorageClassArray(SgNamedTypeStorageClass *); //
59033 
59035  static void clearMemoryPool(); //
59036  static void deleteMemoryPool(); //
59037 
59039  static void extendMemoryPoolForFileIO(); //
59040 
59042  static SgNamedType * getPointerFromGlobalIndex(unsigned long); //
59044  static SgNamedType * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
59045 
59047  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
59049  static void resetValidFreepointers(); //
59051  static unsigned long getNumberOfLastValidPointer(); //
59052 
59053 
59054 #if defined(INLINE_FUNCTIONS)
59055 
59056  inline void *operator new (size_t size);
59057 #else
59058 
59059  void *operator new (size_t size);
59060 #endif
59061 
59062  void operator delete (void* pointer, size_t size);
59063 
59064  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
59065  void operator delete (void* pointer)
59066  {
59067  // This is the generated delete operator...
59068  SgNamedType::operator delete (pointer,sizeof(SgNamedType));
59069  }
59070 
59072  static size_t numberOfNodes();
59073 
59075  static size_t memoryUsage();
59076 
59077  // End of scope which started in IR nodes specific code
59078  /* */
59079 
59080  /* name Internal Functions
59081  \brief Internal functions ... incomplete-documentation
59082 
59083  These functions have been made public as part of the design, but they are suggested for internal use
59084  or by particularly knowledgeable users for specialized tools or applications.
59085 
59086  \internal We could not make these private because they are required by user for special purposes. And
59087  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
59088 
59089  */
59090 
59091  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
59092  // overridden in every class by *generated* implementation
59094  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
59095  // MS: 06/28/02 container of names of variables or container indices
59096  // used used in the traversal to access AST successor nodes
59097  // overridden in every class by *generated* implementation
59100  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
59101 
59102  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
59103  // than all the vector copies. The implementation for these functions is generated for each class.
59105  virtual size_t get_numberOfTraversalSuccessors() override;
59107  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
59109  virtual size_t get_childIndex(SgNode *child) override;
59110 
59111 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
59112  // MS: 08/16/2002 method for generating RTI information
59114  virtual RTIReturnType roseRTI() override;
59115 #endif
59116  /* */
59117 
59118 
59119 
59120  /* name Deprecated Functions
59121  \brief Deprecated functions ... incomplete-documentation
59122 
59123  These functions have been deprecated from use.
59124  */
59125  /* */
59126 
59128  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
59129 
59130  // JJW (10/16/2008): Changed to a single function in Node.code, and put
59131  // getVariant() in #if 0 block to prevent confusing Doxygen
59132 #if 0
59133 
59134  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
59136  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
59137 #endif
59138  /* */
59139 
59140 
59141 
59142 
59143  public:
59144  /* name Traversal Support Functions
59145  \brief Traversal support functions ... incomplete-documentation
59146 
59147  These functions have been made public as part of the design, but they are suggested for internal use
59148  or by particularly knowledgable users for specialized tools or applications.
59149  */
59150  /* */
59151 
59152  // DQ (11/26/2005): Support for visitor pattern mechanims
59153  // (inferior to ROSE traversal mechanism, experimental).
59157 
59158  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
59160  virtual void accept (ROSE_VisitorPattern & visitor) override;
59161 
59162  // DQ (12/26/2005): Support for traversal based on the memory pool
59165  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
59166 
59170 
59171  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
59172  // This traversal helps support internal tools that call static member functions.
59173  // note: this function operates on the memory pools.
59176  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
59177  /* */
59178 
59179 
59180  public:
59181  /* name Memory Allocation Functions
59182  \brief Memory allocations functions ... incomplete-documentation
59183 
59184  These functions have been made public as part of the design, but they are suggested for internal use
59185  or by particularly knowledgable users for specialized tools or applications.
59186  */
59187  /* */
59188 
59199  virtual bool isInMemoryPool() override;
59200 
59211  virtual void checkDataMemberPointersIfInMemoryPool() override;
59212 
59213  // DQ (4/30/2006): Modified to be a const function.
59228  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
59229 
59239  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
59240 
59252  virtual long getChildIndex( SgNode* childNode ) const override;
59253 
59254  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
59255  // comment here (changed to be a C style comment and not be a doxygen comment).
59256  /* \brief Constructor for use by AST File I/O Mechanism
59257 
59258  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
59259  which obtained via fast binary file I/O from disk.
59260  */
59261  // SgNamedType( SgNamedTypeStorageClass& source );
59262 
59263 
59264 
59265 
59266 
59267  // JH (10/24/2005): methods added to support the ast file IO
59268  private:
59269 
59270  /* name AST Memory Allocation Support Functions
59271  \brief Memory allocations support....
59272 
59273  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
59274  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
59275  and support the AST File I/O Mechanism.
59276  */
59277  /* */
59278 
59279  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
59280  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
59281  that I use the same type everywhere, if any changes are made. THe second one declares the type
59282  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
59283  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
59284  a correspinding one in the AST_FILE_IO class!
59285  */
59286  // DQ (9/2/2015): This typedef is no longer used, we can't define the
59287  // comment here (changed to be a C style comment and not be a doxygen comment).
59288  /* \brief Typedef used for low level memory access.
59289  */
59290  // typedef unsigned char* TestType;
59291 
59292  // DQ (9/2/2015): This typedef is no longer used, we can't define the
59293  // comment here (changed to be a C style comment and not be a doxygen comment).
59294  /* \brief Typedef used to hold memory addresses as values.
59295  */
59296  // typedef unsigned long AddressType;
59297 
59298 
59299 
59300  // necessary, to have direct access to the p_freepointer and the private methods !
59302  friend class AST_FILE_IO;
59303 
59305  friend class SgNamedTypeStorageClass;
59306 
59308  friend class AstSpecificDataManagingClass;
59309 
59311  friend class AstSpecificDataManagingClassStorageClass;
59312 
59313  public:
59315  SgNamedType( const SgNamedTypeStorageClass& source );
59316 
59317  // private: // JJW hack
59318  /*
59319  name AST Memory Allocation Support Variables
59320  Memory allocations support variables
59321 
59322  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
59323  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
59324  and support the AST File I/O Mechanism.
59325  */
59326  /* */
59327 
59328  public:
59329 
59330  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
59331  // to current node (so that it will work cleanly with build functions to specify patterns).
59332  // virtual SgNode* addRegExpAttribute();
59338  SgNamedType* addRegExpAttribute(std::string s, AstRegExAttribute* a);
59339 
59340 // *** COMMON CODE SECTION ENDS HERE ***
59341 
59342 
59343 // End of memberFunctionString
59344 // Start of memberFunctionString
59345 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
59346 
59347  // the generated cast function
59348  // friend ROSE_DLL_API SgNamedType* isSgNamedType ( SgNode* s );
59349 
59350  typedef SgType base_node_type;
59351 
59352 
59353 // End of memberFunctionString
59354 // Start of memberFunctionString
59355 /* #line 267 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
59356 
59358  // DQ (1/31/2006): Modified to build all types in the memory pools
59359  // static SgNamedType builtin_type;
59360  // static SgNamedType* builtin_type;
59361 
59362  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
59363  // since we don't store the type explicitly anymore except in a few IR nodes which have there
59364  // own data member and associated access function.
59365  // static SgNamedType* get_builtin_type();
59366 
59367  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
59368  // since we don't store the type explicitly anymore except in a few IR nodes which have there
59369  // own data member and associated access function.
59370  // static void set_builtin_type(SgNamedType* builtin_type);
59371 
59373  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
59374  // static SgNamedType* createType(void);
59375  static SgNamedType* createType(SgExpression* optional_fortran_type_kind = NULL);
59376 
59377 
59378 // End of memberFunctionString
59379 
59380 
59381  public:
59382  SgDeclarationStatement* get_declaration() const;
59383  void set_declaration(SgDeclarationStatement* declaration);
59384 
59385  public:
59386  bool get_autonomous_declaration() const;
59387  void set_autonomous_declaration(bool autonomous_declaration);
59388 
59389  public:
59390  bool get_is_from_template_parameter() const;
59391  void set_is_from_template_parameter(bool is_from_template_parameter);
59392 
59393 
59394  public:
59395  virtual ~SgNamedType();
59396 
59397 
59398  public:
59399  SgNamedType(SgDeclarationStatement* declaration = NULL);
59400 
59401  protected:
59402 // Start of memberFunctionString
59403 static SgNamedType* p_builtin_type;
59404 
59405 // End of memberFunctionString
59406 // Start of memberFunctionString
59407 SgDeclarationStatement* p_declaration;
59408 
59409 // End of memberFunctionString
59410 // Start of memberFunctionString
59411 bool p_autonomous_declaration;
59412 
59413 // End of memberFunctionString
59414 // Start of memberFunctionString
59415 bool p_is_from_template_parameter;
59416 
59417 // End of memberFunctionString
59418 
59419 
59420 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
59421 
59422 
59423  };
59424 #endif
59425 
59426 // postdeclarations for SgNamedType
59427 
59428 /* #line 59429 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
59429 
59430 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
59431 
59432 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
59433 
59434 
59435 /* #line 59436 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
59436 
59437 
59438 
59439 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
59440 
59441 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
59442 // This code is automatically generated for each
59443 // terminal and non-terminal within the defined
59444 // grammar. There is a simple way to change the
59445 // code to fix bugs etc. See the ROSE README file
59446 // for directions.
59447 
59448 // tps: (02/22/2010): Adding DLL export requirements
59449 #include "rosedll.h"
59450 
59451 // predeclarations for SgClassType
59452 
59453 /* #line 59454 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
59454 
59455 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
59456 
59457 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
59458 
59459 #if 1
59460 // Class Definition for SgClassType
59461 class ROSE_DLL_API SgClassType : public SgNamedType
59462  {
59463  public:
59464 
59465 
59466 /* #line 59467 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
59467 
59468  virtual SgNode* copy ( SgCopyHelp& help) const override;
59469 // Start of memberFunctionString
59470 /* #line 290 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
59471 
59472  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
59473  // since we don't store the type explicitly anymore except in a few IR nodes which have there
59474  // own data member and associated access function.
59475  // static SgClassType* get_builtin_type();
59476 
59477  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
59478  // since we don't store the type explicitly anymore except in a few IR nodes which have there
59479  // own data member and associated access function.
59480  // static void set_builtin_type(SgClassType* builtin_type);
59481 
59483  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
59484  // static SgClassType* createType(SgDeclarationStatement* decl = NULL);
59485  static SgClassType* createType(SgDeclarationStatement* decl = NULL, SgExpression* optional_fortran_type_kind = NULL);
59486 
59487 
59488 // End of memberFunctionString
59489 // Start of memberFunctionString
59490 /* #line 391 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
59491 
59492  SgClassType ( const SgClassType & X );
59493 
59494 
59495 // End of memberFunctionString
59496 // Start of memberFunctionString
59497 /* #line 369 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
59498 
59500 
59504  SgName get_name() const override;
59505 
59506 
59507 // End of memberFunctionString
59508 // Start of memberFunctionString
59509 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
59510 
59511 // *** COMMON CODE SECTION BEGINS HERE ***
59512 
59513  public:
59514 
59515  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
59516  // and not required which is required to match the other aspects of the copy mechanism code generation.
59517  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
59518  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
59519  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
59520  // virtual SgNode* copy ( const SgCopyHelp & help) const;
59521 
59523  virtual std::string class_name() const override;
59524 
59526  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
59527 
59529  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
59530  // static const VariantT static_variant = V_SgClassType;
59531  enum { static_variant = V_SgClassType };
59532 
59533  /* the generated cast function */
59535  ROSE_DLL_API friend SgClassType* isSgClassType( SgNode * s );
59536 
59538  ROSE_DLL_API friend const SgClassType* isSgClassType( const SgNode * s );
59539 
59540  // ******************************************
59541  // * Memory Pool / New / Delete
59542  // ******************************************
59543 
59544  public:
59546  static const unsigned pool_size; //
59548  static std::vector<unsigned char *> pools; //
59550  static SgClassType * next_node; //
59551 
59553  static unsigned long initializeStorageClassArray(SgClassTypeStorageClass *); //
59554 
59556  static void clearMemoryPool(); //
59557  static void deleteMemoryPool(); //
59558 
59560  static void extendMemoryPoolForFileIO(); //
59561 
59563  static SgClassType * getPointerFromGlobalIndex(unsigned long); //
59565  static SgClassType * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
59566 
59568  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
59570  static void resetValidFreepointers(); //
59572  static unsigned long getNumberOfLastValidPointer(); //
59573 
59574 
59575 #if defined(INLINE_FUNCTIONS)
59576 
59577  inline void *operator new (size_t size);
59578 #else
59579 
59580  void *operator new (size_t size);
59581 #endif
59582 
59583  void operator delete (void* pointer, size_t size);
59584 
59585  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
59586  void operator delete (void* pointer)
59587  {
59588  // This is the generated delete operator...
59589  SgClassType::operator delete (pointer,sizeof(SgClassType));
59590  }
59591 
59593  static size_t numberOfNodes();
59594 
59596  static size_t memoryUsage();
59597 
59598  // End of scope which started in IR nodes specific code
59599  /* */
59600 
59601  /* name Internal Functions
59602  \brief Internal functions ... incomplete-documentation
59603 
59604  These functions have been made public as part of the design, but they are suggested for internal use
59605  or by particularly knowledgeable users for specialized tools or applications.
59606 
59607  \internal We could not make these private because they are required by user for special purposes. And
59608  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
59609 
59610  */
59611 
59612  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
59613  // overridden in every class by *generated* implementation
59615  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
59616  // MS: 06/28/02 container of names of variables or container indices
59617  // used used in the traversal to access AST successor nodes
59618  // overridden in every class by *generated* implementation
59621  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
59622 
59623  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
59624  // than all the vector copies. The implementation for these functions is generated for each class.
59626  virtual size_t get_numberOfTraversalSuccessors() override;
59628  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
59630  virtual size_t get_childIndex(SgNode *child) override;
59631 
59632 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
59633  // MS: 08/16/2002 method for generating RTI information
59635  virtual RTIReturnType roseRTI() override;
59636 #endif
59637  /* */
59638 
59639 
59640 
59641  /* name Deprecated Functions
59642  \brief Deprecated functions ... incomplete-documentation
59643 
59644  These functions have been deprecated from use.
59645  */
59646  /* */
59647 
59649  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
59650 
59651  // JJW (10/16/2008): Changed to a single function in Node.code, and put
59652  // getVariant() in #if 0 block to prevent confusing Doxygen
59653 #if 0
59654 
59655  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
59657  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
59658 #endif
59659  /* */
59660 
59661 
59662 
59663 
59664  public:
59665  /* name Traversal Support Functions
59666  \brief Traversal support functions ... incomplete-documentation
59667 
59668  These functions have been made public as part of the design, but they are suggested for internal use
59669  or by particularly knowledgable users for specialized tools or applications.
59670  */
59671  /* */
59672 
59673  // DQ (11/26/2005): Support for visitor pattern mechanims
59674  // (inferior to ROSE traversal mechanism, experimental).
59678 
59679  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
59681  virtual void accept (ROSE_VisitorPattern & visitor) override;
59682 
59683  // DQ (12/26/2005): Support for traversal based on the memory pool
59686  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
59687 
59691 
59692  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
59693  // This traversal helps support internal tools that call static member functions.
59694  // note: this function operates on the memory pools.
59697  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
59698  /* */
59699 
59700 
59701  public:
59702  /* name Memory Allocation Functions
59703  \brief Memory allocations functions ... incomplete-documentation
59704 
59705  These functions have been made public as part of the design, but they are suggested for internal use
59706  or by particularly knowledgable users for specialized tools or applications.
59707  */
59708  /* */
59709 
59720  virtual bool isInMemoryPool() override;
59721 
59732  virtual void checkDataMemberPointersIfInMemoryPool() override;
59733 
59734  // DQ (4/30/2006): Modified to be a const function.
59749  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
59750 
59760  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
59761 
59773  virtual long getChildIndex( SgNode* childNode ) const override;
59774 
59775  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
59776  // comment here (changed to be a C style comment and not be a doxygen comment).
59777  /* \brief Constructor for use by AST File I/O Mechanism
59778 
59779  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
59780  which obtained via fast binary file I/O from disk.
59781  */
59782  // SgClassType( SgClassTypeStorageClass& source );
59783 
59784 
59785 
59786 
59787 
59788  // JH (10/24/2005): methods added to support the ast file IO
59789  private:
59790 
59791  /* name AST Memory Allocation Support Functions
59792  \brief Memory allocations support....
59793 
59794  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
59795  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
59796  and support the AST File I/O Mechanism.
59797  */
59798  /* */
59799 
59800  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
59801  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
59802  that I use the same type everywhere, if any changes are made. THe second one declares the type
59803  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
59804  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
59805  a correspinding one in the AST_FILE_IO class!
59806  */
59807  // DQ (9/2/2015): This typedef is no longer used, we can't define the
59808  // comment here (changed to be a C style comment and not be a doxygen comment).
59809  /* \brief Typedef used for low level memory access.
59810  */
59811  // typedef unsigned char* TestType;
59812 
59813  // DQ (9/2/2015): This typedef is no longer used, we can't define the
59814  // comment here (changed to be a C style comment and not be a doxygen comment).
59815  /* \brief Typedef used to hold memory addresses as values.
59816  */
59817  // typedef unsigned long AddressType;
59818 
59819 
59820 
59821  // necessary, to have direct access to the p_freepointer and the private methods !
59823  friend class AST_FILE_IO;
59824 
59826  friend class SgClassTypeStorageClass;
59827 
59829  friend class AstSpecificDataManagingClass;
59830 
59832  friend class AstSpecificDataManagingClassStorageClass;
59833 
59834  public:
59836  SgClassType( const SgClassTypeStorageClass& source );
59837 
59838  // private: // JJW hack
59839  /*
59840  name AST Memory Allocation Support Variables
59841  Memory allocations support variables
59842 
59843  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
59844  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
59845  and support the AST File I/O Mechanism.
59846  */
59847  /* */
59848 
59849  public:
59850 
59851  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
59852  // to current node (so that it will work cleanly with build functions to specify patterns).
59853  // virtual SgNode* addRegExpAttribute();
59859  SgClassType* addRegExpAttribute(std::string s, AstRegExAttribute* a);
59860 
59861 // *** COMMON CODE SECTION ENDS HERE ***
59862 
59863 
59864 // End of memberFunctionString
59865 // Start of memberFunctionString
59866 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
59867 
59868  // the generated cast function
59869  // friend ROSE_DLL_API SgClassType* isSgClassType ( SgNode* s );
59870 
59871  typedef SgNamedType base_node_type;
59872 
59873 
59874 // End of memberFunctionString
59875 // Start of memberFunctionString
59876 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
59877 
59878  // SgName get_mangled ( SgUnparse_Info & info );
59879 
59881  // SgName get_mangled ( SgUnparse_Info & info );
59882  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
59883  virtual SgName get_mangled (void) const override;
59884 
59885 
59886 
59887 // End of memberFunctionString
59888 
59889  public:
59890  bool get_packed() const;
59891  void set_packed(bool packed);
59892 
59893 
59894  public:
59895  virtual ~SgClassType();
59896 
59897 
59898  public:
59899  SgClassType(SgDeclarationStatement* declaration = NULL);
59900 
59901  protected:
59902 // Start of memberFunctionString
59903 bool p_packed;
59904 
59905 // End of memberFunctionString
59906 
59907 
59908 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
59909 
59910 
59911  };
59912 #endif
59913 
59914 // postdeclarations for SgClassType
59915 
59916 /* #line 59917 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
59917 
59918 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
59919 
59920 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
59921 
59922 
59923 /* #line 59924 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
59924 
59925 
59926 
59927 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
59928 
59929 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
59930 // This code is automatically generated for each
59931 // terminal and non-terminal within the defined
59932 // grammar. There is a simple way to change the
59933 // code to fix bugs etc. See the ROSE README file
59934 // for directions.
59935 
59936 // tps: (02/22/2010): Adding DLL export requirements
59937 #include "rosedll.h"
59938 
59939 // predeclarations for SgEnumType
59940 
59941 /* #line 59942 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
59942 
59943 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
59944 
59945 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
59946 
59947 #if 1
59948 // Class Definition for SgEnumType
59949 class ROSE_DLL_API SgEnumType : public SgNamedType
59950  {
59951  public:
59952 
59953 
59954 /* #line 59955 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
59955 
59956  virtual SgNode* copy ( SgCopyHelp& help) const override;
59957 // Start of memberFunctionString
59958 /* #line 290 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
59959 
59960  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
59961  // since we don't store the type explicitly anymore except in a few IR nodes which have there
59962  // own data member and associated access function.
59963  // static SgEnumType* get_builtin_type();
59964 
59965  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
59966  // since we don't store the type explicitly anymore except in a few IR nodes which have there
59967  // own data member and associated access function.
59968  // static void set_builtin_type(SgEnumType* builtin_type);
59969 
59971  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
59972  // static SgEnumType* createType(SgEnumDeclaration* decl = NULL);
59973  static SgEnumType* createType(SgEnumDeclaration* decl = NULL, SgExpression* optional_fortran_type_kind = NULL);
59974 
59975 
59976 // End of memberFunctionString
59977 // Start of memberFunctionString
59978 /* #line 408 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
59979 
59980  SgEnumType ( const SgEnumType & X );
59981 
59982 
59983 // End of memberFunctionString
59984 // Start of memberFunctionString
59985 /* #line 369 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
59986 
59988 
59992  SgName get_name() const override;
59993 
59994 
59995 // End of memberFunctionString
59996 // Start of memberFunctionString
59997 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
59998 
59999 // *** COMMON CODE SECTION BEGINS HERE ***
60000 
60001  public:
60002 
60003  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
60004  // and not required which is required to match the other aspects of the copy mechanism code generation.
60005  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
60006  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
60007  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
60008  // virtual SgNode* copy ( const SgCopyHelp & help) const;
60009 
60011  virtual std::string class_name() const override;
60012 
60014  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
60015 
60017  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
60018  // static const VariantT static_variant = V_SgEnumType;
60019  enum { static_variant = V_SgEnumType };
60020 
60021  /* the generated cast function */
60023  ROSE_DLL_API friend SgEnumType* isSgEnumType( SgNode * s );
60024 
60026  ROSE_DLL_API friend const SgEnumType* isSgEnumType( const SgNode * s );
60027 
60028  // ******************************************
60029  // * Memory Pool / New / Delete
60030  // ******************************************
60031 
60032  public:
60034  static const unsigned pool_size; //
60036  static std::vector<unsigned char *> pools; //
60038  static SgEnumType * next_node; //
60039 
60041  static unsigned long initializeStorageClassArray(SgEnumTypeStorageClass *); //
60042 
60044  static void clearMemoryPool(); //
60045  static void deleteMemoryPool(); //
60046 
60048  static void extendMemoryPoolForFileIO(); //
60049 
60051  static SgEnumType * getPointerFromGlobalIndex(unsigned long); //
60053  static SgEnumType * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
60054 
60056  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
60058  static void resetValidFreepointers(); //
60060  static unsigned long getNumberOfLastValidPointer(); //
60061 
60062 
60063 #if defined(INLINE_FUNCTIONS)
60064 
60065  inline void *operator new (size_t size);
60066 #else
60067 
60068  void *operator new (size_t size);
60069 #endif
60070 
60071  void operator delete (void* pointer, size_t size);
60072 
60073  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
60074  void operator delete (void* pointer)
60075  {
60076  // This is the generated delete operator...
60077  SgEnumType::operator delete (pointer,sizeof(SgEnumType));
60078  }
60079 
60081  static size_t numberOfNodes();
60082 
60084  static size_t memoryUsage();
60085 
60086  // End of scope which started in IR nodes specific code
60087  /* */
60088 
60089  /* name Internal Functions
60090  \brief Internal functions ... incomplete-documentation
60091 
60092  These functions have been made public as part of the design, but they are suggested for internal use
60093  or by particularly knowledgeable users for specialized tools or applications.
60094 
60095  \internal We could not make these private because they are required by user for special purposes. And
60096  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
60097 
60098  */
60099 
60100  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
60101  // overridden in every class by *generated* implementation
60103  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
60104  // MS: 06/28/02 container of names of variables or container indices
60105  // used used in the traversal to access AST successor nodes
60106  // overridden in every class by *generated* implementation
60109  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
60110 
60111  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
60112  // than all the vector copies. The implementation for these functions is generated for each class.
60114  virtual size_t get_numberOfTraversalSuccessors() override;
60116  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
60118  virtual size_t get_childIndex(SgNode *child) override;
60119 
60120 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
60121  // MS: 08/16/2002 method for generating RTI information
60123  virtual RTIReturnType roseRTI() override;
60124 #endif
60125  /* */
60126 
60127 
60128 
60129  /* name Deprecated Functions
60130  \brief Deprecated functions ... incomplete-documentation
60131 
60132  These functions have been deprecated from use.
60133  */
60134  /* */
60135 
60137  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
60138 
60139  // JJW (10/16/2008): Changed to a single function in Node.code, and put
60140  // getVariant() in #if 0 block to prevent confusing Doxygen
60141 #if 0
60142 
60143  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
60145  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
60146 #endif
60147  /* */
60148 
60149 
60150 
60151 
60152  public:
60153  /* name Traversal Support Functions
60154  \brief Traversal support functions ... incomplete-documentation
60155 
60156  These functions have been made public as part of the design, but they are suggested for internal use
60157  or by particularly knowledgable users for specialized tools or applications.
60158  */
60159  /* */
60160 
60161  // DQ (11/26/2005): Support for visitor pattern mechanims
60162  // (inferior to ROSE traversal mechanism, experimental).
60166 
60167  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
60169  virtual void accept (ROSE_VisitorPattern & visitor) override;
60170 
60171  // DQ (12/26/2005): Support for traversal based on the memory pool
60174  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
60175 
60179 
60180  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
60181  // This traversal helps support internal tools that call static member functions.
60182  // note: this function operates on the memory pools.
60185  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
60186  /* */
60187 
60188 
60189  public:
60190  /* name Memory Allocation Functions
60191  \brief Memory allocations functions ... incomplete-documentation
60192 
60193  These functions have been made public as part of the design, but they are suggested for internal use
60194  or by particularly knowledgable users for specialized tools or applications.
60195  */
60196  /* */
60197 
60208  virtual bool isInMemoryPool() override;
60209 
60220  virtual void checkDataMemberPointersIfInMemoryPool() override;
60221 
60222  // DQ (4/30/2006): Modified to be a const function.
60237  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
60238 
60248  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
60249 
60261  virtual long getChildIndex( SgNode* childNode ) const override;
60262 
60263  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
60264  // comment here (changed to be a C style comment and not be a doxygen comment).
60265  /* \brief Constructor for use by AST File I/O Mechanism
60266 
60267  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
60268  which obtained via fast binary file I/O from disk.
60269  */
60270  // SgEnumType( SgEnumTypeStorageClass& source );
60271 
60272 
60273 
60274 
60275 
60276  // JH (10/24/2005): methods added to support the ast file IO
60277  private:
60278 
60279  /* name AST Memory Allocation Support Functions
60280  \brief Memory allocations support....
60281 
60282  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
60283  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
60284  and support the AST File I/O Mechanism.
60285  */
60286  /* */
60287 
60288  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
60289  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
60290  that I use the same type everywhere, if any changes are made. THe second one declares the type
60291  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
60292  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
60293  a correspinding one in the AST_FILE_IO class!
60294  */
60295  // DQ (9/2/2015): This typedef is no longer used, we can't define the
60296  // comment here (changed to be a C style comment and not be a doxygen comment).
60297  /* \brief Typedef used for low level memory access.
60298  */
60299  // typedef unsigned char* TestType;
60300 
60301  // DQ (9/2/2015): This typedef is no longer used, we can't define the
60302  // comment here (changed to be a C style comment and not be a doxygen comment).
60303  /* \brief Typedef used to hold memory addresses as values.
60304  */
60305  // typedef unsigned long AddressType;
60306 
60307 
60308 
60309  // necessary, to have direct access to the p_freepointer and the private methods !
60311  friend class AST_FILE_IO;
60312 
60314  friend class SgEnumTypeStorageClass;
60315 
60317  friend class AstSpecificDataManagingClass;
60318 
60320  friend class AstSpecificDataManagingClassStorageClass;
60321 
60322  public:
60324  SgEnumType( const SgEnumTypeStorageClass& source );
60325 
60326  // private: // JJW hack
60327  /*
60328  name AST Memory Allocation Support Variables
60329  Memory allocations support variables
60330 
60331  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
60332  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
60333  and support the AST File I/O Mechanism.
60334  */
60335  /* */
60336 
60337  public:
60338 
60339  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
60340  // to current node (so that it will work cleanly with build functions to specify patterns).
60341  // virtual SgNode* addRegExpAttribute();
60347  SgEnumType* addRegExpAttribute(std::string s, AstRegExAttribute* a);
60348 
60349 // *** COMMON CODE SECTION ENDS HERE ***
60350 
60351 
60352 // End of memberFunctionString
60353 // Start of memberFunctionString
60354 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
60355 
60356  // the generated cast function
60357  // friend ROSE_DLL_API SgEnumType* isSgEnumType ( SgNode* s );
60358 
60359  typedef SgNamedType base_node_type;
60360 
60361 
60362 // End of memberFunctionString
60363 // Start of memberFunctionString
60364 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
60365 
60366  // SgName get_mangled ( SgUnparse_Info & info );
60367 
60369  // SgName get_mangled ( SgUnparse_Info & info );
60370  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
60371  virtual SgName get_mangled (void) const override;
60372 
60373 
60374 
60375 // End of memberFunctionString
60376 
60377 
60378  public:
60379  virtual ~SgEnumType();
60380 
60381 
60382  public:
60383  SgEnumType(SgDeclarationStatement* declaration = NULL);
60384 
60385  protected:
60386 
60387 
60388 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
60389 
60390 
60391  };
60392 #endif
60393 
60394 // postdeclarations for SgEnumType
60395 
60396 /* #line 60397 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
60397 
60398 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
60399 
60400 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
60401 
60402 
60403 /* #line 60404 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
60404 
60405 
60406 
60407 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
60408 
60409 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
60410 // This code is automatically generated for each
60411 // terminal and non-terminal within the defined
60412 // grammar. There is a simple way to change the
60413 // code to fix bugs etc. See the ROSE README file
60414 // for directions.
60415 
60416 // tps: (02/22/2010): Adding DLL export requirements
60417 #include "rosedll.h"
60418 
60419 // predeclarations for SgTypedefType
60420 
60421 /* #line 60422 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
60422 
60423 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
60424 
60425 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
60426 
60427 #if 1
60428 // Class Definition for SgTypedefType
60429 class ROSE_DLL_API SgTypedefType : public SgNamedType
60430  {
60431  public:
60432 
60433 
60434 /* #line 60435 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
60435 
60436  virtual SgNode* copy ( SgCopyHelp& help) const override;
60437 // Start of memberFunctionString
60438 /* #line 290 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
60439 
60440  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
60441  // since we don't store the type explicitly anymore except in a few IR nodes which have there
60442  // own data member and associated access function.
60443  // static SgTypedefType* get_builtin_type();
60444 
60445  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
60446  // since we don't store the type explicitly anymore except in a few IR nodes which have there
60447  // own data member and associated access function.
60448  // static void set_builtin_type(SgTypedefType* builtin_type);
60449 
60451  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
60452  // static SgTypedefType* createType(SgTypedefDeclaration* decl = NULL);
60453  static SgTypedefType* createType(SgTypedefDeclaration* decl = NULL, SgExpression* optional_fortran_type_kind = NULL);
60454 
60455 
60456 // End of memberFunctionString
60457 // Start of memberFunctionString
60458 /* #line 369 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
60459 
60461 
60465  SgName get_name() const override;
60466 
60467 
60468 // End of memberFunctionString
60469 // Start of memberFunctionString
60470 /* #line 385 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
60471 
60473  SgType* get_base_type() const;
60474 
60475 
60476 // End of memberFunctionString
60477 // Start of memberFunctionString
60478 /* #line 348 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
60479 
60480 
60481  // DQ (10/18/2007): Added copy constructor so that the typedef lists on each type could be updated properly.
60483  SgTypedefType ( const SgTypedefType & X );
60484 
60485 
60486 
60487 // End of memberFunctionString
60488 // Start of memberFunctionString
60489 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
60490 
60491 // *** COMMON CODE SECTION BEGINS HERE ***
60492 
60493  public:
60494 
60495  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
60496  // and not required which is required to match the other aspects of the copy mechanism code generation.
60497  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
60498  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
60499  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
60500  // virtual SgNode* copy ( const SgCopyHelp & help) const;
60501 
60503  virtual std::string class_name() const override;
60504 
60506  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
60507 
60509  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
60510  // static const VariantT static_variant = V_SgTypedefType;
60511  enum { static_variant = V_SgTypedefType };
60512 
60513  /* the generated cast function */
60515  ROSE_DLL_API friend SgTypedefType* isSgTypedefType( SgNode * s );
60516 
60518  ROSE_DLL_API friend const SgTypedefType* isSgTypedefType( const SgNode * s );
60519 
60520  // ******************************************
60521  // * Memory Pool / New / Delete
60522  // ******************************************
60523 
60524  public:
60526  static const unsigned pool_size; //
60528  static std::vector<unsigned char *> pools; //
60530  static SgTypedefType * next_node; //
60531 
60533  static unsigned long initializeStorageClassArray(SgTypedefTypeStorageClass *); //
60534 
60536  static void clearMemoryPool(); //
60537  static void deleteMemoryPool(); //
60538 
60540  static void extendMemoryPoolForFileIO(); //
60541 
60543  static SgTypedefType * getPointerFromGlobalIndex(unsigned long); //
60545  static SgTypedefType * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
60546 
60548  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
60550  static void resetValidFreepointers(); //
60552  static unsigned long getNumberOfLastValidPointer(); //
60553 
60554 
60555 #if defined(INLINE_FUNCTIONS)
60556 
60557  inline void *operator new (size_t size);
60558 #else
60559 
60560  void *operator new (size_t size);
60561 #endif
60562 
60563  void operator delete (void* pointer, size_t size);
60564 
60565  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
60566  void operator delete (void* pointer)
60567  {
60568  // This is the generated delete operator...
60569  SgTypedefType::operator delete (pointer,sizeof(SgTypedefType));
60570  }
60571 
60573  static size_t numberOfNodes();
60574 
60576  static size_t memoryUsage();
60577 
60578  // End of scope which started in IR nodes specific code
60579  /* */
60580 
60581  /* name Internal Functions
60582  \brief Internal functions ... incomplete-documentation
60583 
60584  These functions have been made public as part of the design, but they are suggested for internal use
60585  or by particularly knowledgeable users for specialized tools or applications.
60586 
60587  \internal We could not make these private because they are required by user for special purposes. And
60588  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
60589 
60590  */
60591 
60592  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
60593  // overridden in every class by *generated* implementation
60595  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
60596  // MS: 06/28/02 container of names of variables or container indices
60597  // used used in the traversal to access AST successor nodes
60598  // overridden in every class by *generated* implementation
60601  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
60602 
60603  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
60604  // than all the vector copies. The implementation for these functions is generated for each class.
60606  virtual size_t get_numberOfTraversalSuccessors() override;
60608  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
60610  virtual size_t get_childIndex(SgNode *child) override;
60611 
60612 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
60613  // MS: 08/16/2002 method for generating RTI information
60615  virtual RTIReturnType roseRTI() override;
60616 #endif
60617  /* */
60618 
60619 
60620 
60621  /* name Deprecated Functions
60622  \brief Deprecated functions ... incomplete-documentation
60623 
60624  These functions have been deprecated from use.
60625  */
60626  /* */
60627 
60629  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
60630 
60631  // JJW (10/16/2008): Changed to a single function in Node.code, and put
60632  // getVariant() in #if 0 block to prevent confusing Doxygen
60633 #if 0
60634 
60635  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
60637  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
60638 #endif
60639  /* */
60640 
60641 
60642 
60643 
60644  public:
60645  /* name Traversal Support Functions
60646  \brief Traversal support functions ... incomplete-documentation
60647 
60648  These functions have been made public as part of the design, but they are suggested for internal use
60649  or by particularly knowledgable users for specialized tools or applications.
60650  */
60651  /* */
60652 
60653  // DQ (11/26/2005): Support for visitor pattern mechanims
60654  // (inferior to ROSE traversal mechanism, experimental).
60658 
60659  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
60661  virtual void accept (ROSE_VisitorPattern & visitor) override;
60662 
60663  // DQ (12/26/2005): Support for traversal based on the memory pool
60666  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
60667 
60671 
60672  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
60673  // This traversal helps support internal tools that call static member functions.
60674  // note: this function operates on the memory pools.
60677  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
60678  /* */
60679 
60680 
60681  public:
60682  /* name Memory Allocation Functions
60683  \brief Memory allocations functions ... incomplete-documentation
60684 
60685  These functions have been made public as part of the design, but they are suggested for internal use
60686  or by particularly knowledgable users for specialized tools or applications.
60687  */
60688  /* */
60689 
60700  virtual bool isInMemoryPool() override;
60701 
60712  virtual void checkDataMemberPointersIfInMemoryPool() override;
60713 
60714  // DQ (4/30/2006): Modified to be a const function.
60729  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
60730 
60740  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
60741 
60753  virtual long getChildIndex( SgNode* childNode ) const override;
60754 
60755  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
60756  // comment here (changed to be a C style comment and not be a doxygen comment).
60757  /* \brief Constructor for use by AST File I/O Mechanism
60758 
60759  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
60760  which obtained via fast binary file I/O from disk.
60761  */
60762  // SgTypedefType( SgTypedefTypeStorageClass& source );
60763 
60764 
60765 
60766 
60767 
60768  // JH (10/24/2005): methods added to support the ast file IO
60769  private:
60770 
60771  /* name AST Memory Allocation Support Functions
60772  \brief Memory allocations support....
60773 
60774  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
60775  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
60776  and support the AST File I/O Mechanism.
60777  */
60778  /* */
60779 
60780  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
60781  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
60782  that I use the same type everywhere, if any changes are made. THe second one declares the type
60783  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
60784  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
60785  a correspinding one in the AST_FILE_IO class!
60786  */
60787  // DQ (9/2/2015): This typedef is no longer used, we can't define the
60788  // comment here (changed to be a C style comment and not be a doxygen comment).
60789  /* \brief Typedef used for low level memory access.
60790  */
60791  // typedef unsigned char* TestType;
60792 
60793  // DQ (9/2/2015): This typedef is no longer used, we can't define the
60794  // comment here (changed to be a C style comment and not be a doxygen comment).
60795  /* \brief Typedef used to hold memory addresses as values.
60796  */
60797  // typedef unsigned long AddressType;
60798 
60799 
60800 
60801  // necessary, to have direct access to the p_freepointer and the private methods !
60803  friend class AST_FILE_IO;
60804 
60806  friend class SgTypedefTypeStorageClass;
60807 
60809  friend class AstSpecificDataManagingClass;
60810 
60812  friend class AstSpecificDataManagingClassStorageClass;
60813 
60814  public:
60816  SgTypedefType( const SgTypedefTypeStorageClass& source );
60817 
60818  // private: // JJW hack
60819  /*
60820  name AST Memory Allocation Support Variables
60821  Memory allocations support variables
60822 
60823  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
60824  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
60825  and support the AST File I/O Mechanism.
60826  */
60827  /* */
60828 
60829  public:
60830 
60831  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
60832  // to current node (so that it will work cleanly with build functions to specify patterns).
60833  // virtual SgNode* addRegExpAttribute();
60840 
60841 // *** COMMON CODE SECTION ENDS HERE ***
60842 
60843 
60844 // End of memberFunctionString
60845 // Start of memberFunctionString
60846 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
60847 
60848  // the generated cast function
60849  // friend ROSE_DLL_API SgTypedefType* isSgTypedefType ( SgNode* s );
60850 
60851  typedef SgNamedType base_node_type;
60852 
60853 
60854 // End of memberFunctionString
60855 // Start of memberFunctionString
60856 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
60857 
60858  // SgName get_mangled ( SgUnparse_Info & info );
60859 
60861  // SgName get_mangled ( SgUnparse_Info & info );
60862  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
60863  virtual SgName get_mangled (void) const override;
60864 
60865 
60866 
60867 // End of memberFunctionString
60868 
60869  public:
60870  SgSymbol* get_parent_scope() const;
60871  void set_parent_scope(SgSymbol* parent_scope);
60872 
60873 
60874  public:
60875  virtual ~SgTypedefType();
60876 
60877 
60878  public:
60879  SgTypedefType(SgDeclarationStatement* declaration = NULL, SgSymbol* parent_scope = NULL);
60880 
60881  protected:
60882 // Start of memberFunctionString
60883 SgSymbol* p_parent_scope;
60884 
60885 // End of memberFunctionString
60886 
60887 
60888 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
60889 
60890 
60891  };
60892 #endif
60893 
60894 // postdeclarations for SgTypedefType
60895 
60896 /* #line 60897 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
60897 
60898 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
60899 
60900 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
60901 
60902 
60903 /* #line 60904 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
60904 
60905 
60906 
60907 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
60908 
60909 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
60910 // This code is automatically generated for each
60911 // terminal and non-terminal within the defined
60912 // grammar. There is a simple way to change the
60913 // code to fix bugs etc. See the ROSE README file
60914 // for directions.
60915 
60916 // tps: (02/22/2010): Adding DLL export requirements
60917 #include "rosedll.h"
60918 
60919 // predeclarations for SgNonrealType
60920 
60921 /* #line 60922 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
60922 
60923 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
60924 
60925 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
60926 
60927 #if 1
60928 // Class Definition for SgNonrealType
60929 class ROSE_DLL_API SgNonrealType : public SgNamedType
60930  {
60931  public:
60932 
60933 
60934 /* #line 60935 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
60935 
60936  virtual SgNode* copy ( SgCopyHelp& help) const override;
60937 // Start of memberFunctionString
60938 /* #line 290 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
60939 
60940  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
60941  // since we don't store the type explicitly anymore except in a few IR nodes which have there
60942  // own data member and associated access function.
60943  // static SgNonrealType* get_builtin_type();
60944 
60945  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
60946  // since we don't store the type explicitly anymore except in a few IR nodes which have there
60947  // own data member and associated access function.
60948  // static void set_builtin_type(SgNonrealType* builtin_type);
60949 
60951  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
60952  // static SgNonrealType* createType(SgNonrealDecl* decl = NULL);
60953  static SgNonrealType* createType(SgNonrealDecl* decl = NULL, SgExpression* optional_fortran_type_kind = NULL);
60954 
60955 
60956 // End of memberFunctionString
60957 // Start of memberFunctionString
60958 /* #line 395 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
60959 
60960  SgNonrealType ( const SgNonrealType & X );
60961 // virtual SgName get_mangled(void) const;
60962 // virtual SgName get_name() const;
60963 
60964 
60965 // End of memberFunctionString
60966 // Start of memberFunctionString
60967 /* #line 369 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
60968 
60970 
60974  SgName get_name() const override;
60975 
60976 
60977 // End of memberFunctionString
60978 // Start of memberFunctionString
60979 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
60980 
60981 // *** COMMON CODE SECTION BEGINS HERE ***
60982 
60983  public:
60984 
60985  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
60986  // and not required which is required to match the other aspects of the copy mechanism code generation.
60987  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
60988  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
60989  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
60990  // virtual SgNode* copy ( const SgCopyHelp & help) const;
60991 
60993  virtual std::string class_name() const override;
60994 
60996  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
60997 
60999  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
61000  // static const VariantT static_variant = V_SgNonrealType;
61001  enum { static_variant = V_SgNonrealType };
61002 
61003  /* the generated cast function */
61005  ROSE_DLL_API friend SgNonrealType* isSgNonrealType( SgNode * s );
61006 
61008  ROSE_DLL_API friend const SgNonrealType* isSgNonrealType( const SgNode * s );
61009 
61010  // ******************************************
61011  // * Memory Pool / New / Delete
61012  // ******************************************
61013 
61014  public:
61016  static const unsigned pool_size; //
61018  static std::vector<unsigned char *> pools; //
61020  static SgNonrealType * next_node; //
61021 
61023  static unsigned long initializeStorageClassArray(SgNonrealTypeStorageClass *); //
61024 
61026  static void clearMemoryPool(); //
61027  static void deleteMemoryPool(); //
61028 
61030  static void extendMemoryPoolForFileIO(); //
61031 
61033  static SgNonrealType * getPointerFromGlobalIndex(unsigned long); //
61035  static SgNonrealType * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
61036 
61038  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
61040  static void resetValidFreepointers(); //
61042  static unsigned long getNumberOfLastValidPointer(); //
61043 
61044 
61045 #if defined(INLINE_FUNCTIONS)
61046 
61047  inline void *operator new (size_t size);
61048 #else
61049 
61050  void *operator new (size_t size);
61051 #endif
61052 
61053  void operator delete (void* pointer, size_t size);
61054 
61055  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
61056  void operator delete (void* pointer)
61057  {
61058  // This is the generated delete operator...
61059  SgNonrealType::operator delete (pointer,sizeof(SgNonrealType));
61060  }
61061 
61063  static size_t numberOfNodes();
61064 
61066  static size_t memoryUsage();
61067 
61068  // End of scope which started in IR nodes specific code
61069  /* */
61070 
61071  /* name Internal Functions
61072  \brief Internal functions ... incomplete-documentation
61073 
61074  These functions have been made public as part of the design, but they are suggested for internal use
61075  or by particularly knowledgeable users for specialized tools or applications.
61076 
61077  \internal We could not make these private because they are required by user for special purposes. And
61078  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
61079 
61080  */
61081 
61082  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
61083  // overridden in every class by *generated* implementation
61085  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
61086  // MS: 06/28/02 container of names of variables or container indices
61087  // used used in the traversal to access AST successor nodes
61088  // overridden in every class by *generated* implementation
61091  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
61092 
61093  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
61094  // than all the vector copies. The implementation for these functions is generated for each class.
61096  virtual size_t get_numberOfTraversalSuccessors() override;
61098  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
61100  virtual size_t get_childIndex(SgNode *child) override;
61101 
61102 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
61103  // MS: 08/16/2002 method for generating RTI information
61105  virtual RTIReturnType roseRTI() override;
61106 #endif
61107  /* */
61108 
61109 
61110 
61111  /* name Deprecated Functions
61112  \brief Deprecated functions ... incomplete-documentation
61113 
61114  These functions have been deprecated from use.
61115  */
61116  /* */
61117 
61119  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
61120 
61121  // JJW (10/16/2008): Changed to a single function in Node.code, and put
61122  // getVariant() in #if 0 block to prevent confusing Doxygen
61123 #if 0
61124 
61125  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
61127  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
61128 #endif
61129  /* */
61130 
61131 
61132 
61133 
61134  public:
61135  /* name Traversal Support Functions
61136  \brief Traversal support functions ... incomplete-documentation
61137 
61138  These functions have been made public as part of the design, but they are suggested for internal use
61139  or by particularly knowledgable users for specialized tools or applications.
61140  */
61141  /* */
61142 
61143  // DQ (11/26/2005): Support for visitor pattern mechanims
61144  // (inferior to ROSE traversal mechanism, experimental).
61148 
61149  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
61151  virtual void accept (ROSE_VisitorPattern & visitor) override;
61152 
61153  // DQ (12/26/2005): Support for traversal based on the memory pool
61156  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
61157 
61161 
61162  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
61163  // This traversal helps support internal tools that call static member functions.
61164  // note: this function operates on the memory pools.
61167  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
61168  /* */
61169 
61170 
61171  public:
61172  /* name Memory Allocation Functions
61173  \brief Memory allocations functions ... incomplete-documentation
61174 
61175  These functions have been made public as part of the design, but they are suggested for internal use
61176  or by particularly knowledgable users for specialized tools or applications.
61177  */
61178  /* */
61179 
61190  virtual bool isInMemoryPool() override;
61191 
61202  virtual void checkDataMemberPointersIfInMemoryPool() override;
61203 
61204  // DQ (4/30/2006): Modified to be a const function.
61219  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
61220 
61230  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
61231 
61243  virtual long getChildIndex( SgNode* childNode ) const override;
61244 
61245  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
61246  // comment here (changed to be a C style comment and not be a doxygen comment).
61247  /* \brief Constructor for use by AST File I/O Mechanism
61248 
61249  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
61250  which obtained via fast binary file I/O from disk.
61251  */
61252  // SgNonrealType( SgNonrealTypeStorageClass& source );
61253 
61254 
61255 
61256 
61257 
61258  // JH (10/24/2005): methods added to support the ast file IO
61259  private:
61260 
61261  /* name AST Memory Allocation Support Functions
61262  \brief Memory allocations support....
61263 
61264  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
61265  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
61266  and support the AST File I/O Mechanism.
61267  */
61268  /* */
61269 
61270  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
61271  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
61272  that I use the same type everywhere, if any changes are made. THe second one declares the type
61273  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
61274  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
61275  a correspinding one in the AST_FILE_IO class!
61276  */
61277  // DQ (9/2/2015): This typedef is no longer used, we can't define the
61278  // comment here (changed to be a C style comment and not be a doxygen comment).
61279  /* \brief Typedef used for low level memory access.
61280  */
61281  // typedef unsigned char* TestType;
61282 
61283  // DQ (9/2/2015): This typedef is no longer used, we can't define the
61284  // comment here (changed to be a C style comment and not be a doxygen comment).
61285  /* \brief Typedef used to hold memory addresses as values.
61286  */
61287  // typedef unsigned long AddressType;
61288 
61289 
61290 
61291  // necessary, to have direct access to the p_freepointer and the private methods !
61293  friend class AST_FILE_IO;
61294 
61296  friend class SgNonrealTypeStorageClass;
61297 
61299  friend class AstSpecificDataManagingClass;
61300 
61302  friend class AstSpecificDataManagingClassStorageClass;
61303 
61304  public:
61306  SgNonrealType( const SgNonrealTypeStorageClass& source );
61307 
61308  // private: // JJW hack
61309  /*
61310  name AST Memory Allocation Support Variables
61311  Memory allocations support variables
61312 
61313  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
61314  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
61315  and support the AST File I/O Mechanism.
61316  */
61317  /* */
61318 
61319  public:
61320 
61321  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
61322  // to current node (so that it will work cleanly with build functions to specify patterns).
61323  // virtual SgNode* addRegExpAttribute();
61330 
61331 // *** COMMON CODE SECTION ENDS HERE ***
61332 
61333 
61334 // End of memberFunctionString
61335 // Start of memberFunctionString
61336 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
61337 
61338  // the generated cast function
61339  // friend ROSE_DLL_API SgNonrealType* isSgNonrealType ( SgNode* s );
61340 
61341  typedef SgNamedType base_node_type;
61342 
61343 
61344 // End of memberFunctionString
61345 // Start of memberFunctionString
61346 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
61347 
61348  // SgName get_mangled ( SgUnparse_Info & info );
61349 
61351  // SgName get_mangled ( SgUnparse_Info & info );
61352  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
61353  virtual SgName get_mangled (void) const override;
61354 
61355 
61356 
61357 // End of memberFunctionString
61358 
61359 
61360  public:
61361  virtual ~SgNonrealType();
61362 
61363 
61364  public:
61365  SgNonrealType(SgDeclarationStatement* declaration = NULL);
61366 
61367  protected:
61368 
61369 
61370 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
61371 
61372 
61373  };
61374 #endif
61375 
61376 // postdeclarations for SgNonrealType
61377 
61378 /* #line 61379 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
61379 
61380 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
61381 
61382 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
61383 
61384 
61385 /* #line 61386 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
61386 
61387 
61388 
61389 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
61390 
61391 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
61392 // This code is automatically generated for each
61393 // terminal and non-terminal within the defined
61394 // grammar. There is a simple way to change the
61395 // code to fix bugs etc. See the ROSE README file
61396 // for directions.
61397 
61398 // tps: (02/22/2010): Adding DLL export requirements
61399 #include "rosedll.h"
61400 
61401 // predeclarations for SgModifierType
61402 
61403 /* #line 61404 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
61404 
61405 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
61406 
61407 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
61408 
61409 #if 1
61410 // Class Definition for SgModifierType
61411 class ROSE_DLL_API SgModifierType : public SgType
61412  {
61413  public:
61414 
61415 
61416 /* #line 61417 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
61417 
61418  virtual SgNode* copy ( SgCopyHelp& help) const override;
61419 // Start of memberFunctionString
61420 /* #line 290 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
61421 
61422  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
61423  // since we don't store the type explicitly anymore except in a few IR nodes which have there
61424  // own data member and associated access function.
61425  // static SgModifierType* get_builtin_type();
61426 
61427  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
61428  // since we don't store the type explicitly anymore except in a few IR nodes which have there
61429  // own data member and associated access function.
61430  // static void set_builtin_type(SgModifierType* builtin_type);
61431 
61433  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
61434  // static SgModifierType* createType(SgType* type = NULL, unsigned int x = 0);
61435  static SgModifierType* createType(SgType* type = NULL, unsigned int x = 0, SgExpression* optional_fortran_type_kind = NULL);
61436 
61437 
61438 // End of memberFunctionString
61439 // Start of memberFunctionString
61440 /* #line 417 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
61441 
61442 
61443  // name TypeModifierGroup3 Type Modifiers
61444  /*
61445  name Type Modifiers
61446  \brief Compute modifier values.
61447 
61448  These return false in the implementation of the virtual functions
61449  in SgType and are overridden here.
61450 
61451  \internal Return type should be changed to "bool."
61452  \todo implement type modifier query functions in SgType class.
61453  */
61454 #if 0
61455  bool isConst() const ;
61458  bool isVolatile() const ;
61460  bool isRestrict() const ;
61462  bool isUPC_Shared() const ;
61464  bool isUPC_Strict() const ;
61466  bool isUPC_Relaxed() const ;
61467 #endif
61468 
61470  // DQ (7/28/2010): Make this private so that we can support API that would force the type table to be used.
61471  // Users should use the build functions to construct modifier types (SgModifierType IR nodes) with different
61472  // flags set.
61473  // private:
61475  SgTypeModifier & get_typeModifier();
61476 
61477  // RV (2/2/2006): Added a 'const' version
61478  const SgTypeModifier& get_typeModifier (void) const;
61479 
61480  // DQ (7/28/2010): Make this public as the end of the previous private region.
61481  public:
61482  // friend namespace SageBuilder;
61483  // friend SgModifierType* SageBuilder::buildConstType(SgType* base_type /*=NULL*/);
61484 
61485  static SgModifierType* insertModifierTypeIntoTypeTable( SgModifierType* result );
61486 
61487 #if 0
61488  // DQ (11/28/2015): This has been move to the SgType class since it is a general requirement.
61489  // DQ (11/28/2015): Adding operator==() function to use in symbol table lookup when template
61490  // arguments or parameters resolve to SgModifierType and we need to know if it is the same type.
61491  // One might expect that with type tables they would only be the same if there were the same
61492  // pointer, but I think this is not alwasy true for SgModifierType nodes.
61493  // bool operator== (const SgModifierType & X, const SgModifierType & Y);
61494  bool operator== (const SgModifierType & Y) const;
61495 #endif
61496 #if 0
61497  void unsetRestrict();
61498  void setRestrict();
61499  void unsetConst();
61500  void setConst();
61501  void unsetVolatile();
61502  void setVolatile();
61503  void unsetUPC_Shared();
61504  void setUPC_Shared();
61505  void unsetUPC_Strict();
61506  void setUPC_Strict();
61507  void unsetUPC_Relaxed();
61508  void setUPC_Relaxed();
61509 #endif
61510 
61511 #if 0
61512  // Tests not implemented!
61513 
61515  bool isExtern() const ;
61517  bool isTypedef() const ;
61519  bool isVirtual() const ;
61521  bool isProtected() const ;
61523  bool isPrivate() const ;
61525  bool isPublic() const ;
61527  bool isAuto() const ;
61528 #endif
61529 
61530 #if 0
61531  enum modifiers
61533  {
61534  m_volatile = 0x01,
61535  m_global = 0x02,
61536  m_sync = 0x04,
61537  m_const = 0x08,
61538  m_restrict = 0x10,
61539  m_shared = 0x20,
61540  m_strict = 0x40,
61541  m_relaxed = 0x80,
61542  };
61543 
61545  void set_modifier (int flag);
61546 
61548  void unset_modifier (int flag);
61549 
61551  bool isConst() const;
61552  bool isSync() const;
61553  bool isGlobal() const;
61554  bool isVolatile() const;
61555  bool isRestrict() const;
61556 
61557  // UPC specific
61558  bool isShared() const;
61559  bool isStrict() const;
61560  bool isRelaxed() const;
61561 
61563  void unsetSync();
61564  void setSync();
61565  void unsetGlobal();
61566  void setGlobal();
61567  void unsetConst();
61568  void setConst();
61569  void unsetRestrict();
61570  void setRestrict();
61571 
61572  // UPC specific
61573  void unsetShared();
61574  void setShared();
61575  void unsetStrict();
61576  void setStrict();
61577  void unsetRelaxed();
61578  void setRelaxed();
61579 
61581  unsigned int bitfield(void);
61582 #endif
61583 
61584 #if 0
61585  // DQ (4/6/2004): Added to provide uniform support for type modifiers
61586  enum type_modifier_enum
61587  {
61588  // Bit values can support multiple values in a single enum type
61589  e_unknown = 0x000, // Unknown value (default)
61590  e_const = 0x001, // Const qualifier
61591  e_volatile = 0x002, // Volatile qualifier
61592  e_restrict = 0x004, // Restrict qualifier
61593  e_unaligned = 0x008, // Microsoft __unaligned qualifier
61594  e_near = 0x010, // near
61595  e_far = 0x020, // far
61596  e_upc_shared = 0x040, // UPC shared
61597  e_upc_strict = 0x080, // UPC strict
61598  e_upc_relaxed = 0x100, // UPC relaxed
61599  e_last_type_modifier = 0x200
61600  };
61601 
61602  // DQ (4/6/2004): Added to provide uniform support for storage modifiers
61603  enum storage_modifier_enum
61604  {
61605  // Only one value can be specified (at least in C, what about C++)
61606  e_unknown_storage,
61607  e_extern,
61608  e_static,
61609  e_auto,
61610  e_unspecified,
61611  e_typedef,
61612  e_register,
61613  e_asm,
61614 #ifdef FORTRAN_SUPPORTED
61615  e_local, // Auto or static at back end's preference
61616  e_common, // A COMMON block
61617  e_associated, // Variable is part of an association
61618  e_intrinsic, // Intrinsic function or subroutine
61619  e_pointer_based, // Pointee of a POINTER definition
61620 #endif
61621  e_last_storage_modifier
61622  };
61623 
61624  // DQ (4/6/2004): Added to provide uniform support for access modifiers
61625  enum access_modifier_enum
61626  {
61627  // Only one value can be specified (at least in C, what about C++)
61628  e_unknown_access,
61629  e_private,
61630  e_protected,
61631  e_public,
61632  e_virtual, // support for virtual base class (applies only in case of inheritance)
61633  e_last_access_modifier
61634  };
61635 
61636  int checkBit(type_modifier_enum bit) const;
61637  void setBit(type_modifier_enum bit);
61638  void unsetBit(type_modifier_enum bit);
61639 #endif
61640 
61641 #if 0
61642  // DQ (4/13/2004): This new design organizes the modifiers in SAGE
61643 
61646 
61647  // Interface from cv-specifier in type-specifier
61648  int isConst() const;
61649  void setConst();
61650  void unsetConst();
61651 
61652  // Interface from cv-specifier in type-specifier
61653  int isVolatile() const;
61654  void setVolatile();
61655  void unsetVolatile();
61656 
61657  // Interface from type-specifier
61658  int isRestrict() const;
61659  void setRestrict();
61660  void unsetRestrict();
61661 #if 0
61662  int isUnaligned() const;
61663  void setUnaligned();
61664  void unsetUnaligned();
61665 
61666  int isNear() const;
61667  void setNear();
61668  void unsetNear();
61669 
61670  int isFar() const;
61671  void setFar();
61672  void unsetFar();
61673 #endif
61674  int isUPC_Shared() const;
61675  void setUPC_Shared();
61676  void unsetUPC_Shared();
61677 
61678  int isUPC_Strict() const;
61679  void setUPC_Strict();
61680  void unsetUPC_Strict();
61681 
61682  int isUPC_Relaxed() const;
61683  void setUPC_Relaxed();
61684  void unsetUPC_Relaxed();
61685 
61687  int isUnknownStorage() const;
61688  void setUnknownStorage();
61689 
61690  int isExtern() const;
61691  void setExtern();
61692 
61693  int isStatic() const;
61694  void setStatic();
61695 
61696  int isAuto() const;
61697  void setAuto();
61698 
61699  int isUnspecified() const;
61700  void setUnspecified();
61701 
61702  // This is not used (but is present in the EDG AST)
61703  int isTypedef() const;
61704  void setTypedef();
61705 
61706  int isRegister() const;
61707  void setRegister();
61708 
61709  int isAsm() const;
61710  void setAsm();
61711 
61712 #ifdef FORTRAN_SUPPORTED
61713  // These remaining access functions are specific to FORTRAN
61714  int isLocal() const;
61715  void setLocal();
61716 
61717  int isCommon() const;
61718  void setCommon();
61719 
61720  int isAssociated() const;
61721  void setAssociated();
61722 
61723  int isIntrinsic() const;
61724  void setIntrinsic();
61725 
61726  int isPointerBased() const;
61727  void setPointerBased();
61728 #endif
61729 
61731  int isUnknownAccess() const;
61732  void setUnknownAccess();
61733 
61734  int isPrivate() const;
61735  void setPrivate();
61736 
61737  int isProtected() const;
61738  void setProtected();
61739 
61740  int isPublic() const;
61741  void setPublic();
61742 
61743  int isVirtual() const;
61744  void setVirtual();
61745 
61747  unsigned int bitfield(void);
61748 #endif
61749 
61751  void post_construction_initialization() override;
61752 
61753 
61754 
61755 // End of memberFunctionString
61756 // Start of memberFunctionString
61757 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
61758 
61759 // *** COMMON CODE SECTION BEGINS HERE ***
61760 
61761  public:
61762 
61763  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
61764  // and not required which is required to match the other aspects of the copy mechanism code generation.
61765  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
61766  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
61767  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
61768  // virtual SgNode* copy ( const SgCopyHelp & help) const;
61769 
61771  virtual std::string class_name() const override;
61772 
61774  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
61775 
61777  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
61778  // static const VariantT static_variant = V_SgModifierType;
61779  enum { static_variant = V_SgModifierType };
61780 
61781  /* the generated cast function */
61783  ROSE_DLL_API friend SgModifierType* isSgModifierType( SgNode * s );
61784 
61786  ROSE_DLL_API friend const SgModifierType* isSgModifierType( const SgNode * s );
61787 
61788  // ******************************************
61789  // * Memory Pool / New / Delete
61790  // ******************************************
61791 
61792  public:
61794  static const unsigned pool_size; //
61796  static std::vector<unsigned char *> pools; //
61798  static SgModifierType * next_node; //
61799 
61801  static unsigned long initializeStorageClassArray(SgModifierTypeStorageClass *); //
61802 
61804  static void clearMemoryPool(); //
61805  static void deleteMemoryPool(); //
61806 
61808  static void extendMemoryPoolForFileIO(); //
61809 
61811  static SgModifierType * getPointerFromGlobalIndex(unsigned long); //
61813  static SgModifierType * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
61814 
61816  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
61818  static void resetValidFreepointers(); //
61820  static unsigned long getNumberOfLastValidPointer(); //
61821 
61822 
61823 #if defined(INLINE_FUNCTIONS)
61824 
61825  inline void *operator new (size_t size);
61826 #else
61827 
61828  void *operator new (size_t size);
61829 #endif
61830 
61831  void operator delete (void* pointer, size_t size);
61832 
61833  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
61834  void operator delete (void* pointer)
61835  {
61836  // This is the generated delete operator...
61837  SgModifierType::operator delete (pointer,sizeof(SgModifierType));
61838  }
61839 
61841  static size_t numberOfNodes();
61842 
61844  static size_t memoryUsage();
61845 
61846  // End of scope which started in IR nodes specific code
61847  /* */
61848 
61849  /* name Internal Functions
61850  \brief Internal functions ... incomplete-documentation
61851 
61852  These functions have been made public as part of the design, but they are suggested for internal use
61853  or by particularly knowledgeable users for specialized tools or applications.
61854 
61855  \internal We could not make these private because they are required by user for special purposes. And
61856  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
61857 
61858  */
61859 
61860  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
61861  // overridden in every class by *generated* implementation
61863  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
61864  // MS: 06/28/02 container of names of variables or container indices
61865  // used used in the traversal to access AST successor nodes
61866  // overridden in every class by *generated* implementation
61869  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
61870 
61871  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
61872  // than all the vector copies. The implementation for these functions is generated for each class.
61874  virtual size_t get_numberOfTraversalSuccessors() override;
61876  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
61878  virtual size_t get_childIndex(SgNode *child) override;
61879 
61880 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
61881  // MS: 08/16/2002 method for generating RTI information
61883  virtual RTIReturnType roseRTI() override;
61884 #endif
61885  /* */
61886 
61887 
61888 
61889  /* name Deprecated Functions
61890  \brief Deprecated functions ... incomplete-documentation
61891 
61892  These functions have been deprecated from use.
61893  */
61894  /* */
61895 
61897  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
61898 
61899  // JJW (10/16/2008): Changed to a single function in Node.code, and put
61900  // getVariant() in #if 0 block to prevent confusing Doxygen
61901 #if 0
61902 
61903  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
61905  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
61906 #endif
61907  /* */
61908 
61909 
61910 
61911 
61912  public:
61913  /* name Traversal Support Functions
61914  \brief Traversal support functions ... incomplete-documentation
61915 
61916  These functions have been made public as part of the design, but they are suggested for internal use
61917  or by particularly knowledgable users for specialized tools or applications.
61918  */
61919  /* */
61920 
61921  // DQ (11/26/2005): Support for visitor pattern mechanims
61922  // (inferior to ROSE traversal mechanism, experimental).
61926 
61927  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
61929  virtual void accept (ROSE_VisitorPattern & visitor) override;
61930 
61931  // DQ (12/26/2005): Support for traversal based on the memory pool
61934  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
61935 
61939 
61940  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
61941  // This traversal helps support internal tools that call static member functions.
61942  // note: this function operates on the memory pools.
61945  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
61946  /* */
61947 
61948 
61949  public:
61950  /* name Memory Allocation Functions
61951  \brief Memory allocations functions ... incomplete-documentation
61952 
61953  These functions have been made public as part of the design, but they are suggested for internal use
61954  or by particularly knowledgable users for specialized tools or applications.
61955  */
61956  /* */
61957 
61968  virtual bool isInMemoryPool() override;
61969 
61980  virtual void checkDataMemberPointersIfInMemoryPool() override;
61981 
61982  // DQ (4/30/2006): Modified to be a const function.
61997  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
61998 
62008  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
62009 
62021  virtual long getChildIndex( SgNode* childNode ) const override;
62022 
62023  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
62024  // comment here (changed to be a C style comment and not be a doxygen comment).
62025  /* \brief Constructor for use by AST File I/O Mechanism
62026 
62027  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
62028  which obtained via fast binary file I/O from disk.
62029  */
62030  // SgModifierType( SgModifierTypeStorageClass& source );
62031 
62032 
62033 
62034 
62035 
62036  // JH (10/24/2005): methods added to support the ast file IO
62037  private:
62038 
62039  /* name AST Memory Allocation Support Functions
62040  \brief Memory allocations support....
62041 
62042  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
62043  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
62044  and support the AST File I/O Mechanism.
62045  */
62046  /* */
62047 
62048  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
62049  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
62050  that I use the same type everywhere, if any changes are made. THe second one declares the type
62051  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
62052  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
62053  a correspinding one in the AST_FILE_IO class!
62054  */
62055  // DQ (9/2/2015): This typedef is no longer used, we can't define the
62056  // comment here (changed to be a C style comment and not be a doxygen comment).
62057  /* \brief Typedef used for low level memory access.
62058  */
62059  // typedef unsigned char* TestType;
62060 
62061  // DQ (9/2/2015): This typedef is no longer used, we can't define the
62062  // comment here (changed to be a C style comment and not be a doxygen comment).
62063  /* \brief Typedef used to hold memory addresses as values.
62064  */
62065  // typedef unsigned long AddressType;
62066 
62067 
62068 
62069  // necessary, to have direct access to the p_freepointer and the private methods !
62071  friend class AST_FILE_IO;
62072 
62074  friend class SgModifierTypeStorageClass;
62075 
62077  friend class AstSpecificDataManagingClass;
62078 
62080  friend class AstSpecificDataManagingClassStorageClass;
62081 
62082  public:
62084  SgModifierType( const SgModifierTypeStorageClass& source );
62085 
62086  // private: // JJW hack
62087  /*
62088  name AST Memory Allocation Support Variables
62089  Memory allocations support variables
62090 
62091  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
62092  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
62093  and support the AST File I/O Mechanism.
62094  */
62095  /* */
62096 
62097  public:
62098 
62099  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
62100  // to current node (so that it will work cleanly with build functions to specify patterns).
62101  // virtual SgNode* addRegExpAttribute();
62108 
62109 // *** COMMON CODE SECTION ENDS HERE ***
62110 
62111 
62112 // End of memberFunctionString
62113 // Start of memberFunctionString
62114 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
62115 
62116  // the generated cast function
62117  // friend ROSE_DLL_API SgModifierType* isSgModifierType ( SgNode* s );
62118 
62119  typedef SgType base_node_type;
62120 
62121 
62122 // End of memberFunctionString
62123 // Start of memberFunctionString
62124 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
62125 
62126  // SgName get_mangled ( SgUnparse_Info & info );
62127 
62129  // SgName get_mangled ( SgUnparse_Info & info );
62130  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
62131  virtual SgName get_mangled (void) const override;
62132 
62133 
62134 
62135 // End of memberFunctionString
62136 
62137  public:
62138  SgType* get_base_type() const;
62139  void set_base_type(SgType* base_type);
62140 
62141 
62142  public:
62143  char* get_frontend_type_reference() const;
62144  void set_frontend_type_reference(char* frontend_type_reference);
62145 
62146 
62147  public:
62148  virtual ~SgModifierType();
62149 
62150 
62151  public:
62152  SgModifierType(SgType* base_type = NULL);
62153 
62154  protected:
62155 // Start of memberFunctionString
62156 SgType* p_base_type;
62157 
62158 // End of memberFunctionString
62159 // Start of memberFunctionString
62160 SgTypeModifier p_typeModifier;
62161 
62162 // End of memberFunctionString
62163 // Start of memberFunctionString
62164 char* p_frontend_type_reference;
62165 
62166 // End of memberFunctionString
62167 
62168 
62169 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
62170 
62171 
62172  };
62173 #endif
62174 
62175 // postdeclarations for SgModifierType
62176 
62177 /* #line 62178 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
62178 
62179 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
62180 
62181 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
62182 
62183 
62184 /* #line 62185 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
62185 
62186 
62187 
62188 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
62189 
62190 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
62191 // This code is automatically generated for each
62192 // terminal and non-terminal within the defined
62193 // grammar. There is a simple way to change the
62194 // code to fix bugs etc. See the ROSE README file
62195 // for directions.
62196 
62197 // tps: (02/22/2010): Adding DLL export requirements
62198 #include "rosedll.h"
62199 
62200 // predeclarations for SgFunctionType
62201 
62202 /* #line 62203 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
62203 
62204 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
62205 
62206 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
62207 
62208 #if 1
62209 // Class Definition for SgFunctionType
62210 class ROSE_DLL_API SgFunctionType : public SgType
62211  {
62212  public:
62213 
62214 
62215 /* #line 62216 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
62216 
62217  virtual SgNode* copy ( SgCopyHelp& help) const override;
62218 // Start of memberFunctionString
62219 /* #line 290 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
62220 
62221  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
62222  // since we don't store the type explicitly anymore except in a few IR nodes which have there
62223  // own data member and associated access function.
62224  // static SgFunctionType* get_builtin_type();
62225 
62226  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
62227  // since we don't store the type explicitly anymore except in a few IR nodes which have there
62228  // own data member and associated access function.
62229  // static void set_builtin_type(SgFunctionType* builtin_type);
62230 
62232  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
62233  // static SgFunctionType* createType(SgPartialFunctionType* type = NULL);
62234  static SgFunctionType* createType(SgPartialFunctionType* type = NULL, SgExpression* optional_fortran_type_kind = NULL);
62235 
62236 
62237 // End of memberFunctionString
62238 // Start of memberFunctionString
62239 /* #line 747 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
62240 
62241 
62244 
62245  // static SgFunctionType* createType(SgPartialFunctionType *);
62246 
62248  void post_construction_initialization () override;
62249 
62250  // Get a const list of input types (types of the parameters list) to this function type (from a cost functionType object)
62252  const SgTypePtrList & get_arguments() const;
62253 
62254  // Get the list of input types (types of the parameters list) to this function type
62256  SgTypePtrList & get_arguments();
62257 
62258  // WAS: void append_argument(const SgTypePtr& what);
62259  // WAS: void insert_argument(const SgTypePtrList::iterator& where, const SgTypePtr & what)
62260 
62262  void append_argument( SgType* what);
62263 
62265  void insert_argument(const SgTypePtrList::iterator& where, SgType* what);
62266 
62268 
62270  // DQ (2/7/2006): Removed as a test
62271  // virtual SgName get_mangled_name ( SgUnparse_Info & info );
62272 
62275  virtual SgName get_mangled_type ();
62276 
62278  // SgFunctionType* mkAnotherType(SgType *);
62279 
62281  // void sym_print(std::ostream& os);
62282 
62283  SgSymbol* get_symbol_from_symbol_table() const;
62284 
62285  // TV (04/18/11): For support of shared function type.
62286  static SgName get_mangled(SgType* return_type, SgFunctionParameterTypeList * typeList);
62287 
62288 
62289 
62290 // End of memberFunctionString
62291 // Start of memberFunctionString
62292 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
62293 
62294 // *** COMMON CODE SECTION BEGINS HERE ***
62295 
62296  public:
62297 
62298  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
62299  // and not required which is required to match the other aspects of the copy mechanism code generation.
62300  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
62301  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
62302  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
62303  // virtual SgNode* copy ( const SgCopyHelp & help) const;
62304 
62306  virtual std::string class_name() const override;
62307 
62309  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
62310 
62312  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
62313  // static const VariantT static_variant = V_SgFunctionType;
62314  enum { static_variant = V_SgFunctionType };
62315 
62316  /* the generated cast function */
62318  ROSE_DLL_API friend SgFunctionType* isSgFunctionType( SgNode * s );
62319 
62321  ROSE_DLL_API friend const SgFunctionType* isSgFunctionType( const SgNode * s );
62322 
62323  // ******************************************
62324  // * Memory Pool / New / Delete
62325  // ******************************************
62326 
62327  public:
62329  static const unsigned pool_size; //
62331  static std::vector<unsigned char *> pools; //
62333  static SgFunctionType * next_node; //
62334 
62336  static unsigned long initializeStorageClassArray(SgFunctionTypeStorageClass *); //
62337 
62339  static void clearMemoryPool(); //
62340  static void deleteMemoryPool(); //
62341 
62343  static void extendMemoryPoolForFileIO(); //
62344 
62346  static SgFunctionType * getPointerFromGlobalIndex(unsigned long); //
62348  static SgFunctionType * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
62349 
62351  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
62353  static void resetValidFreepointers(); //
62355  static unsigned long getNumberOfLastValidPointer(); //
62356 
62357 
62358 #if defined(INLINE_FUNCTIONS)
62359 
62360  inline void *operator new (size_t size);
62361 #else
62362 
62363  void *operator new (size_t size);
62364 #endif
62365 
62366  void operator delete (void* pointer, size_t size);
62367 
62368  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
62369  void operator delete (void* pointer)
62370  {
62371  // This is the generated delete operator...
62372  SgFunctionType::operator delete (pointer,sizeof(SgFunctionType));
62373  }
62374 
62376  static size_t numberOfNodes();
62377 
62379  static size_t memoryUsage();
62380 
62381  // End of scope which started in IR nodes specific code
62382  /* */
62383 
62384  /* name Internal Functions
62385  \brief Internal functions ... incomplete-documentation
62386 
62387  These functions have been made public as part of the design, but they are suggested for internal use
62388  or by particularly knowledgeable users for specialized tools or applications.
62389 
62390  \internal We could not make these private because they are required by user for special purposes. And
62391  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
62392 
62393  */
62394 
62395  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
62396  // overridden in every class by *generated* implementation
62398  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
62399  // MS: 06/28/02 container of names of variables or container indices
62400  // used used in the traversal to access AST successor nodes
62401  // overridden in every class by *generated* implementation
62404  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
62405 
62406  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
62407  // than all the vector copies. The implementation for these functions is generated for each class.
62409  virtual size_t get_numberOfTraversalSuccessors() override;
62411  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
62413  virtual size_t get_childIndex(SgNode *child) override;
62414 
62415 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
62416  // MS: 08/16/2002 method for generating RTI information
62418  virtual RTIReturnType roseRTI() override;
62419 #endif
62420  /* */
62421 
62422 
62423 
62424  /* name Deprecated Functions
62425  \brief Deprecated functions ... incomplete-documentation
62426 
62427  These functions have been deprecated from use.
62428  */
62429  /* */
62430 
62432  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
62433 
62434  // JJW (10/16/2008): Changed to a single function in Node.code, and put
62435  // getVariant() in #if 0 block to prevent confusing Doxygen
62436 #if 0
62437 
62438  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
62440  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
62441 #endif
62442  /* */
62443 
62444 
62445 
62446 
62447  public:
62448  /* name Traversal Support Functions
62449  \brief Traversal support functions ... incomplete-documentation
62450 
62451  These functions have been made public as part of the design, but they are suggested for internal use
62452  or by particularly knowledgable users for specialized tools or applications.
62453  */
62454  /* */
62455 
62456  // DQ (11/26/2005): Support for visitor pattern mechanims
62457  // (inferior to ROSE traversal mechanism, experimental).
62461 
62462  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
62464  virtual void accept (ROSE_VisitorPattern & visitor) override;
62465 
62466  // DQ (12/26/2005): Support for traversal based on the memory pool
62469  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
62470 
62474 
62475  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
62476  // This traversal helps support internal tools that call static member functions.
62477  // note: this function operates on the memory pools.
62480  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
62481  /* */
62482 
62483 
62484  public:
62485  /* name Memory Allocation Functions
62486  \brief Memory allocations functions ... incomplete-documentation
62487 
62488  These functions have been made public as part of the design, but they are suggested for internal use
62489  or by particularly knowledgable users for specialized tools or applications.
62490  */
62491  /* */
62492 
62503  virtual bool isInMemoryPool() override;
62504 
62515  virtual void checkDataMemberPointersIfInMemoryPool() override;
62516 
62517  // DQ (4/30/2006): Modified to be a const function.
62532  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
62533 
62543  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
62544 
62556  virtual long getChildIndex( SgNode* childNode ) const override;
62557 
62558  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
62559  // comment here (changed to be a C style comment and not be a doxygen comment).
62560  /* \brief Constructor for use by AST File I/O Mechanism
62561 
62562  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
62563  which obtained via fast binary file I/O from disk.
62564  */
62565  // SgFunctionType( SgFunctionTypeStorageClass& source );
62566 
62567 
62568 
62569 
62570 
62571  // JH (10/24/2005): methods added to support the ast file IO
62572  private:
62573 
62574  /* name AST Memory Allocation Support Functions
62575  \brief Memory allocations support....
62576 
62577  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
62578  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
62579  and support the AST File I/O Mechanism.
62580  */
62581  /* */
62582 
62583  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
62584  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
62585  that I use the same type everywhere, if any changes are made. THe second one declares the type
62586  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
62587  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
62588  a correspinding one in the AST_FILE_IO class!
62589  */
62590  // DQ (9/2/2015): This typedef is no longer used, we can't define the
62591  // comment here (changed to be a C style comment and not be a doxygen comment).
62592  /* \brief Typedef used for low level memory access.
62593  */
62594  // typedef unsigned char* TestType;
62595 
62596  // DQ (9/2/2015): This typedef is no longer used, we can't define the
62597  // comment here (changed to be a C style comment and not be a doxygen comment).
62598  /* \brief Typedef used to hold memory addresses as values.
62599  */
62600  // typedef unsigned long AddressType;
62601 
62602 
62603 
62604  // necessary, to have direct access to the p_freepointer and the private methods !
62606  friend class AST_FILE_IO;
62607 
62609  friend class SgFunctionTypeStorageClass;
62610 
62612  friend class AstSpecificDataManagingClass;
62613 
62615  friend class AstSpecificDataManagingClassStorageClass;
62616 
62617  public:
62619  SgFunctionType( const SgFunctionTypeStorageClass& source );
62620 
62621  // private: // JJW hack
62622  /*
62623  name AST Memory Allocation Support Variables
62624  Memory allocations support variables
62625 
62626  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
62627  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
62628  and support the AST File I/O Mechanism.
62629  */
62630  /* */
62631 
62632  public:
62633 
62634  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
62635  // to current node (so that it will work cleanly with build functions to specify patterns).
62636  // virtual SgNode* addRegExpAttribute();
62643 
62644 // *** COMMON CODE SECTION ENDS HERE ***
62645 
62646 
62647 // End of memberFunctionString
62648 // Start of memberFunctionString
62649 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
62650 
62651  // the generated cast function
62652  // friend ROSE_DLL_API SgFunctionType* isSgFunctionType ( SgNode* s );
62653 
62654  typedef SgType base_node_type;
62655 
62656 
62657 // End of memberFunctionString
62658 // Start of memberFunctionString
62659 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
62660 
62661  // SgName get_mangled ( SgUnparse_Info & info );
62662 
62664  // SgName get_mangled ( SgUnparse_Info & info );
62665  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
62666  virtual SgName get_mangled (void) const override;
62667 
62668 
62669 
62670 // End of memberFunctionString
62671 
62672  public:
62673  SgType* get_return_type() const;
62674  void set_return_type(SgType* return_type);
62675 
62676  public:
62677  bool get_has_ellipses() const;
62678  void set_has_ellipses(bool has_ellipses);
62679 
62680  public:
62681  SgType* get_orig_return_type() const;
62682  void set_orig_return_type(SgType* orig_return_type);
62683 
62684  public:
62685  SgFunctionParameterTypeList* get_argument_list() const;
62686  void set_argument_list(SgFunctionParameterTypeList* argument_list);
62687 
62688 
62689  public:
62690  virtual ~SgFunctionType();
62691 
62692 
62693  public:
62694  SgFunctionType(SgType* return_type = NULL, bool has_ellipses = true);
62695 
62696  protected:
62697 // Start of memberFunctionString
62698 SgType* p_return_type;
62699 
62700 // End of memberFunctionString
62701 // Start of memberFunctionString
62702 bool p_has_ellipses;
62703 
62704 // End of memberFunctionString
62705 // Start of memberFunctionString
62706 SgType* p_orig_return_type;
62707 
62708 // End of memberFunctionString
62709 // Start of memberFunctionString
62710 SgFunctionParameterTypeList* p_argument_list;
62711 
62712 // End of memberFunctionString
62713 
62714 
62715 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
62716 
62717 
62718  };
62719 #endif
62720 
62721 // postdeclarations for SgFunctionType
62722 
62723 /* #line 62724 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
62724 
62725 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
62726 
62727 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
62728 
62729 
62730 /* #line 62731 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
62731 
62732 
62733 
62734 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
62735 
62736 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
62737 // This code is automatically generated for each
62738 // terminal and non-terminal within the defined
62739 // grammar. There is a simple way to change the
62740 // code to fix bugs etc. See the ROSE README file
62741 // for directions.
62742 
62743 // tps: (02/22/2010): Adding DLL export requirements
62744 #include "rosedll.h"
62745 
62746 // predeclarations for SgMemberFunctionType
62747 
62748 /* #line 62749 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
62749 
62750 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
62751 
62752 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
62753 
62754 #if 1
62755 // Class Definition for SgMemberFunctionType
62756 class ROSE_DLL_API SgMemberFunctionType : public SgFunctionType
62757  {
62758  public:
62759 
62760 
62761 /* #line 62762 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
62762 
62763  virtual SgNode* copy ( SgCopyHelp& help) const override;
62764 // Start of memberFunctionString
62765 /* #line 290 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
62766 
62767  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
62768  // since we don't store the type explicitly anymore except in a few IR nodes which have there
62769  // own data member and associated access function.
62770  // static SgMemberFunctionType* get_builtin_type();
62771 
62772  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
62773  // since we don't store the type explicitly anymore except in a few IR nodes which have there
62774  // own data member and associated access function.
62775  // static void set_builtin_type(SgMemberFunctionType* builtin_type);
62776 
62778  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
62779  // static SgMemberFunctionType* createType(SgPartialFunctionType* type = NULL);
62780  static SgMemberFunctionType* createType(SgPartialFunctionType* type = NULL, SgExpression* optional_fortran_type_kind = NULL);
62781 
62782 
62783 // End of memberFunctionString
62784 // Start of memberFunctionString
62785 /* #line 797 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
62786 
62787 
62790 
62792  void post_construction_initialization() override;
62793 
62794 #if 1
62797  {
62798  e_const = 0x00000001,
62799  e_volatile = 0x00000002,
62800  e_restrict = 0x00000004,
62801 
62802  // DQ (1/9/2020): Added reference qualifiers (C++11 feature).
62803  e_ref_qualifier_lvalue = 0x00000008,
62804  e_ref_qualifier_rvalue = 0x00000010
62805  };
62806 
62807  // static SgMemberFunctionType* createType(SgPartialFunctionType *);
62808 
62809 #if 0
62810  int isUnknownFunc();
62812  void setUnknownFunc();
62813 
62815  int isDefaultFunc();
62816  void setDefaultFunc();
62817 #endif
62818  bool isConstFunc() const; // RV (2/1/2006): Made 'const' member
62820  void setConstFunc();
62821  void unsetConstFunc();
62822 
62824  bool isVolatileFunc() const; // RV (2/1/2006): Made 'const' member
62825  void setVolatileFunc();
62826  void unsetVolatileFunc();
62827 #if 1
62828  // DQ (3/8/2012): Enabled the use of rescrict recorded in the function type.
62830  bool isRestrictFunc() const;
62831  void setRestrictFunc();
62832  void unsetRestrictFunc();
62833 #endif
62834 
62835  // DQ (1/9/2020): Enabled the use of reference qualification recorded in the function type.
62837  bool isLvalueReferenceFunc() const;
62838  void setLvalueReferenceFunc();
62839  void unsetLvalueReferenceFunc();
62840 
62842  bool isRvalueReferenceFunc() const;
62843  void setRvalueReferenceFunc();
62844  void unsetRvalueReferenceFunc();
62845 #endif
62846 
62847  // void set_mfunc_specifier(unsigned long i);
62848  // SgName get_mangled(SgUnparse_Info &);
62849 
62851  // SgName get_mangled_name(SgUnparse_Info&);
62852 
62854  // SgName get_mangled_type();
62855  // RV (2/1/2006): Changed signature, and removed 'get_mangled_type()'.
62856  virtual SgName get_mangled_name (void) const;
62857 
62858  // DQ (12/6/2012): Adding member function specifier data (since this will be a part of the generated mangled name).
62859  // DQ (12/3/2011): Added better support for member function name mangling (symetric with SgFunctionType).
62860  // static SgName get_mangled(SgType* ret_type, SgFunctionParameterTypeList* typeList, SgClassType* classType );
62861  static SgName get_mangled(SgType* ret_type, SgFunctionParameterTypeList* typeList, SgType* classType, unsigned int mfunc_specifier );
62862 
62864  SgMemberFunctionType * mkAnotherType(SgType *);
62865 
62867  SgClassDefinition* get_struct_name() const;
62868 
62869 
62870 
62871 // End of memberFunctionString
62872 // Start of memberFunctionString
62873 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
62874 
62875 // *** COMMON CODE SECTION BEGINS HERE ***
62876 
62877  public:
62878 
62879  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
62880  // and not required which is required to match the other aspects of the copy mechanism code generation.
62881  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
62882  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
62883  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
62884  // virtual SgNode* copy ( const SgCopyHelp & help) const;
62885 
62887  virtual std::string class_name() const override;
62888 
62890  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
62891 
62893  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
62894  // static const VariantT static_variant = V_SgMemberFunctionType;
62895  enum { static_variant = V_SgMemberFunctionType };
62896 
62897  /* the generated cast function */
62899  ROSE_DLL_API friend SgMemberFunctionType* isSgMemberFunctionType( SgNode * s );
62900 
62902  ROSE_DLL_API friend const SgMemberFunctionType* isSgMemberFunctionType( const SgNode * s );
62903 
62904  // ******************************************
62905  // * Memory Pool / New / Delete
62906  // ******************************************
62907 
62908  public:
62910  static const unsigned pool_size; //
62912  static std::vector<unsigned char *> pools; //
62914  static SgMemberFunctionType * next_node; //
62915 
62917  static unsigned long initializeStorageClassArray(SgMemberFunctionTypeStorageClass *); //
62918 
62920  static void clearMemoryPool(); //
62921  static void deleteMemoryPool(); //
62922 
62924  static void extendMemoryPoolForFileIO(); //
62925 
62927  static SgMemberFunctionType * getPointerFromGlobalIndex(unsigned long); //
62929  static SgMemberFunctionType * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
62930 
62932  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
62934  static void resetValidFreepointers(); //
62936  static unsigned long getNumberOfLastValidPointer(); //
62937 
62938 
62939 #if defined(INLINE_FUNCTIONS)
62940 
62941  inline void *operator new (size_t size);
62942 #else
62943 
62944  void *operator new (size_t size);
62945 #endif
62946 
62947  void operator delete (void* pointer, size_t size);
62948 
62949  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
62950  void operator delete (void* pointer)
62951  {
62952  // This is the generated delete operator...
62953  SgMemberFunctionType::operator delete (pointer,sizeof(SgMemberFunctionType));
62954  }
62955 
62957  static size_t numberOfNodes();
62958 
62960  static size_t memoryUsage();
62961 
62962  // End of scope which started in IR nodes specific code
62963  /* */
62964 
62965  /* name Internal Functions
62966  \brief Internal functions ... incomplete-documentation
62967 
62968  These functions have been made public as part of the design, but they are suggested for internal use
62969  or by particularly knowledgeable users for specialized tools or applications.
62970 
62971  \internal We could not make these private because they are required by user for special purposes. And
62972  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
62973 
62974  */
62975 
62976  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
62977  // overridden in every class by *generated* implementation
62979  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
62980  // MS: 06/28/02 container of names of variables or container indices
62981  // used used in the traversal to access AST successor nodes
62982  // overridden in every class by *generated* implementation
62985  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
62986 
62987  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
62988  // than all the vector copies. The implementation for these functions is generated for each class.
62990  virtual size_t get_numberOfTraversalSuccessors() override;
62992  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
62994  virtual size_t get_childIndex(SgNode *child) override;
62995 
62996 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
62997  // MS: 08/16/2002 method for generating RTI information
62999  virtual RTIReturnType roseRTI() override;
63000 #endif
63001  /* */
63002 
63003 
63004 
63005  /* name Deprecated Functions
63006  \brief Deprecated functions ... incomplete-documentation
63007 
63008  These functions have been deprecated from use.
63009  */
63010  /* */
63011 
63013  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
63014 
63015  // JJW (10/16/2008): Changed to a single function in Node.code, and put
63016  // getVariant() in #if 0 block to prevent confusing Doxygen
63017 #if 0
63018 
63019  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
63021  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
63022 #endif
63023  /* */
63024 
63025 
63026 
63027 
63028  public:
63029  /* name Traversal Support Functions
63030  \brief Traversal support functions ... incomplete-documentation
63031 
63032  These functions have been made public as part of the design, but they are suggested for internal use
63033  or by particularly knowledgable users for specialized tools or applications.
63034  */
63035  /* */
63036 
63037  // DQ (11/26/2005): Support for visitor pattern mechanims
63038  // (inferior to ROSE traversal mechanism, experimental).
63042 
63043  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
63045  virtual void accept (ROSE_VisitorPattern & visitor) override;
63046 
63047  // DQ (12/26/2005): Support for traversal based on the memory pool
63050  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
63051 
63055 
63056  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
63057  // This traversal helps support internal tools that call static member functions.
63058  // note: this function operates on the memory pools.
63061  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
63062  /* */
63063 
63064 
63065  public:
63066  /* name Memory Allocation Functions
63067  \brief Memory allocations functions ... incomplete-documentation
63068 
63069  These functions have been made public as part of the design, but they are suggested for internal use
63070  or by particularly knowledgable users for specialized tools or applications.
63071  */
63072  /* */
63073 
63084  virtual bool isInMemoryPool() override;
63085 
63096  virtual void checkDataMemberPointersIfInMemoryPool() override;
63097 
63098  // DQ (4/30/2006): Modified to be a const function.
63113  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
63114 
63124  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
63125 
63137  virtual long getChildIndex( SgNode* childNode ) const override;
63138 
63139  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
63140  // comment here (changed to be a C style comment and not be a doxygen comment).
63141  /* \brief Constructor for use by AST File I/O Mechanism
63142 
63143  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
63144  which obtained via fast binary file I/O from disk.
63145  */
63146  // SgMemberFunctionType( SgMemberFunctionTypeStorageClass& source );
63147 
63148 
63149 
63150 
63151 
63152  // JH (10/24/2005): methods added to support the ast file IO
63153  private:
63154 
63155  /* name AST Memory Allocation Support Functions
63156  \brief Memory allocations support....
63157 
63158  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
63159  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
63160  and support the AST File I/O Mechanism.
63161  */
63162  /* */
63163 
63164  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
63165  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
63166  that I use the same type everywhere, if any changes are made. THe second one declares the type
63167  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
63168  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
63169  a correspinding one in the AST_FILE_IO class!
63170  */
63171  // DQ (9/2/2015): This typedef is no longer used, we can't define the
63172  // comment here (changed to be a C style comment and not be a doxygen comment).
63173  /* \brief Typedef used for low level memory access.
63174  */
63175  // typedef unsigned char* TestType;
63176 
63177  // DQ (9/2/2015): This typedef is no longer used, we can't define the
63178  // comment here (changed to be a C style comment and not be a doxygen comment).
63179  /* \brief Typedef used to hold memory addresses as values.
63180  */
63181  // typedef unsigned long AddressType;
63182 
63183 
63184 
63185  // necessary, to have direct access to the p_freepointer and the private methods !
63187  friend class AST_FILE_IO;
63188 
63190  friend class SgMemberFunctionTypeStorageClass;
63191 
63193  friend class AstSpecificDataManagingClass;
63194 
63196  friend class AstSpecificDataManagingClassStorageClass;
63197 
63198  public:
63200  SgMemberFunctionType( const SgMemberFunctionTypeStorageClass& source );
63201 
63202  // private: // JJW hack
63203  /*
63204  name AST Memory Allocation Support Variables
63205  Memory allocations support variables
63206 
63207  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
63208  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
63209  and support the AST File I/O Mechanism.
63210  */
63211  /* */
63212 
63213  public:
63214 
63215  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
63216  // to current node (so that it will work cleanly with build functions to specify patterns).
63217  // virtual SgNode* addRegExpAttribute();
63224 
63225 // *** COMMON CODE SECTION ENDS HERE ***
63226 
63227 
63228 // End of memberFunctionString
63229 // Start of memberFunctionString
63230 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
63231 
63232  // the generated cast function
63233  // friend ROSE_DLL_API SgMemberFunctionType* isSgMemberFunctionType ( SgNode* s );
63234 
63236 
63237 
63238 // End of memberFunctionString
63239 // Start of memberFunctionString
63240 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
63241 
63242  // SgName get_mangled ( SgUnparse_Info & info );
63243 
63245  // SgName get_mangled ( SgUnparse_Info & info );
63246  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
63247  virtual SgName get_mangled (void) const override;
63248 
63249 
63250 
63251 // End of memberFunctionString
63252 
63253  public:
63254  SgType* get_class_type() const;
63255  void set_class_type(SgType* class_type);
63256 
63257  public:
63258  unsigned int get_mfunc_specifier() const;
63259  void set_mfunc_specifier(unsigned int mfunc_specifier);
63260 
63261  public:
63262  unsigned int get_ref_qualifiers() const;
63263  void set_ref_qualifiers(unsigned int ref_qualifiers);
63264 
63265 
63266  public:
63267  virtual ~SgMemberFunctionType();
63268 
63269 
63270  public:
63271  SgMemberFunctionType(SgType* return_type = NULL, bool has_ellipses = true, SgType* class_type = NULL, unsigned int mfunc_specifier = 0, unsigned int ref_qualifiers = 0);
63272 
63273  protected:
63274 // Start of memberFunctionString
63275 SgType* p_class_type;
63276 
63277 // End of memberFunctionString
63278 // Start of memberFunctionString
63279 unsigned int p_mfunc_specifier;
63280 
63281 // End of memberFunctionString
63282 // Start of memberFunctionString
63283 unsigned int p_ref_qualifiers;
63284 
63285 // End of memberFunctionString
63286 
63287 
63288 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
63289 
63290 
63291  };
63292 #endif
63293 
63294 // postdeclarations for SgMemberFunctionType
63295 
63296 /* #line 63297 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
63297 
63298 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
63299 
63300 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
63301 
63302 
63303 /* #line 63304 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
63304 
63305 
63306 
63307 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
63308 
63309 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
63310 // This code is automatically generated for each
63311 // terminal and non-terminal within the defined
63312 // grammar. There is a simple way to change the
63313 // code to fix bugs etc. See the ROSE README file
63314 // for directions.
63315 
63316 // tps: (02/22/2010): Adding DLL export requirements
63317 #include "rosedll.h"
63318 
63319 // predeclarations for SgPartialFunctionType
63320 
63321 /* #line 63322 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
63322 
63323 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
63324 
63325 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
63326 
63327 #if 1
63328 // Class Definition for SgPartialFunctionType
63329 class ROSE_DLL_API SgPartialFunctionType : public SgMemberFunctionType
63330  {
63331  public:
63332 
63333 
63334 /* #line 63335 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
63335 
63336  virtual SgNode* copy ( SgCopyHelp& help) const override;
63337 // Start of memberFunctionString
63338 /* #line 290 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
63339 
63340  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
63341  // since we don't store the type explicitly anymore except in a few IR nodes which have there
63342  // own data member and associated access function.
63343  // static SgPartialFunctionType* get_builtin_type();
63344 
63345  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
63346  // since we don't store the type explicitly anymore except in a few IR nodes which have there
63347  // own data member and associated access function.
63348  // static void set_builtin_type(SgPartialFunctionType* builtin_type);
63349 
63351  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
63352  // static SgPartialFunctionType* createType(SgType* type = NULL);
63353  static SgPartialFunctionType* createType(SgType* type = NULL, SgExpression* optional_fortran_type_kind = NULL);
63354 
63355 
63356 // End of memberFunctionString
63357 // Start of memberFunctionString
63358 /* #line 883 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
63359 
63360  void post_construction_initialization () override;
63361 
63362 
63363 // End of memberFunctionString
63364 // Start of memberFunctionString
63365 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
63366 
63367 // *** COMMON CODE SECTION BEGINS HERE ***
63368 
63369  public:
63370 
63371  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
63372  // and not required which is required to match the other aspects of the copy mechanism code generation.
63373  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
63374  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
63375  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
63376  // virtual SgNode* copy ( const SgCopyHelp & help) const;
63377 
63379  virtual std::string class_name() const override;
63380 
63382  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
63383 
63385  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
63386  // static const VariantT static_variant = V_SgPartialFunctionType;
63387  enum { static_variant = V_SgPartialFunctionType };
63388 
63389  /* the generated cast function */
63391  ROSE_DLL_API friend SgPartialFunctionType* isSgPartialFunctionType( SgNode * s );
63392 
63394  ROSE_DLL_API friend const SgPartialFunctionType* isSgPartialFunctionType( const SgNode * s );
63395 
63396  // ******************************************
63397  // * Memory Pool / New / Delete
63398  // ******************************************
63399 
63400  public:
63402  static const unsigned pool_size; //
63404  static std::vector<unsigned char *> pools; //
63406  static SgPartialFunctionType * next_node; //
63407 
63409  static unsigned long initializeStorageClassArray(SgPartialFunctionTypeStorageClass *); //
63410 
63412  static void clearMemoryPool(); //
63413  static void deleteMemoryPool(); //
63414 
63416  static void extendMemoryPoolForFileIO(); //
63417 
63419  static SgPartialFunctionType * getPointerFromGlobalIndex(unsigned long); //
63421  static SgPartialFunctionType * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
63422 
63424  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
63426  static void resetValidFreepointers(); //
63428  static unsigned long getNumberOfLastValidPointer(); //
63429 
63430 
63431 #if defined(INLINE_FUNCTIONS)
63432 
63433  inline void *operator new (size_t size);
63434 #else
63435 
63436  void *operator new (size_t size);
63437 #endif
63438 
63439  void operator delete (void* pointer, size_t size);
63440 
63441  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
63442  void operator delete (void* pointer)
63443  {
63444  // This is the generated delete operator...
63445  SgPartialFunctionType::operator delete (pointer,sizeof(SgPartialFunctionType));
63446  }
63447 
63449  static size_t numberOfNodes();
63450 
63452  static size_t memoryUsage();
63453 
63454  // End of scope which started in IR nodes specific code
63455  /* */
63456 
63457  /* name Internal Functions
63458  \brief Internal functions ... incomplete-documentation
63459 
63460  These functions have been made public as part of the design, but they are suggested for internal use
63461  or by particularly knowledgeable users for specialized tools or applications.
63462 
63463  \internal We could not make these private because they are required by user for special purposes. And
63464  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
63465 
63466  */
63467 
63468  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
63469  // overridden in every class by *generated* implementation
63471  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
63472  // MS: 06/28/02 container of names of variables or container indices
63473  // used used in the traversal to access AST successor nodes
63474  // overridden in every class by *generated* implementation
63477  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
63478 
63479  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
63480  // than all the vector copies. The implementation for these functions is generated for each class.
63482  virtual size_t get_numberOfTraversalSuccessors() override;
63484  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
63486  virtual size_t get_childIndex(SgNode *child) override;
63487 
63488 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
63489  // MS: 08/16/2002 method for generating RTI information
63491  virtual RTIReturnType roseRTI() override;
63492 #endif
63493  /* */
63494 
63495 
63496 
63497  /* name Deprecated Functions
63498  \brief Deprecated functions ... incomplete-documentation
63499 
63500  These functions have been deprecated from use.
63501  */
63502  /* */
63503 
63505  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
63506 
63507  // JJW (10/16/2008): Changed to a single function in Node.code, and put
63508  // getVariant() in #if 0 block to prevent confusing Doxygen
63509 #if 0
63510 
63511  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
63513  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
63514 #endif
63515  /* */
63516 
63517 
63518 
63519 
63520  public:
63521  /* name Traversal Support Functions
63522  \brief Traversal support functions ... incomplete-documentation
63523 
63524  These functions have been made public as part of the design, but they are suggested for internal use
63525  or by particularly knowledgable users for specialized tools or applications.
63526  */
63527  /* */
63528 
63529  // DQ (11/26/2005): Support for visitor pattern mechanims
63530  // (inferior to ROSE traversal mechanism, experimental).
63534 
63535  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
63537  virtual void accept (ROSE_VisitorPattern & visitor) override;
63538 
63539  // DQ (12/26/2005): Support for traversal based on the memory pool
63542  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
63543 
63547 
63548  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
63549  // This traversal helps support internal tools that call static member functions.
63550  // note: this function operates on the memory pools.
63553  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
63554  /* */
63555 
63556 
63557  public:
63558  /* name Memory Allocation Functions
63559  \brief Memory allocations functions ... incomplete-documentation
63560 
63561  These functions have been made public as part of the design, but they are suggested for internal use
63562  or by particularly knowledgable users for specialized tools or applications.
63563  */
63564  /* */
63565 
63576  virtual bool isInMemoryPool() override;
63577 
63588  virtual void checkDataMemberPointersIfInMemoryPool() override;
63589 
63590  // DQ (4/30/2006): Modified to be a const function.
63605  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
63606 
63616  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
63617 
63629  virtual long getChildIndex( SgNode* childNode ) const override;
63630 
63631  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
63632  // comment here (changed to be a C style comment and not be a doxygen comment).
63633  /* \brief Constructor for use by AST File I/O Mechanism
63634 
63635  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
63636  which obtained via fast binary file I/O from disk.
63637  */
63638  // SgPartialFunctionType( SgPartialFunctionTypeStorageClass& source );
63639 
63640 
63641 
63642 
63643 
63644  // JH (10/24/2005): methods added to support the ast file IO
63645  private:
63646 
63647  /* name AST Memory Allocation Support Functions
63648  \brief Memory allocations support....
63649 
63650  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
63651  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
63652  and support the AST File I/O Mechanism.
63653  */
63654  /* */
63655 
63656  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
63657  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
63658  that I use the same type everywhere, if any changes are made. THe second one declares the type
63659  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
63660  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
63661  a correspinding one in the AST_FILE_IO class!
63662  */
63663  // DQ (9/2/2015): This typedef is no longer used, we can't define the
63664  // comment here (changed to be a C style comment and not be a doxygen comment).
63665  /* \brief Typedef used for low level memory access.
63666  */
63667  // typedef unsigned char* TestType;
63668 
63669  // DQ (9/2/2015): This typedef is no longer used, we can't define the
63670  // comment here (changed to be a C style comment and not be a doxygen comment).
63671  /* \brief Typedef used to hold memory addresses as values.
63672  */
63673  // typedef unsigned long AddressType;
63674 
63675 
63676 
63677  // necessary, to have direct access to the p_freepointer and the private methods !
63679  friend class AST_FILE_IO;
63680 
63682  friend class SgPartialFunctionTypeStorageClass;
63683 
63685  friend class AstSpecificDataManagingClass;
63686 
63688  friend class AstSpecificDataManagingClassStorageClass;
63689 
63690  public:
63692  SgPartialFunctionType( const SgPartialFunctionTypeStorageClass& source );
63693 
63694  // private: // JJW hack
63695  /*
63696  name AST Memory Allocation Support Variables
63697  Memory allocations support variables
63698 
63699  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
63700  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
63701  and support the AST File I/O Mechanism.
63702  */
63703  /* */
63704 
63705  public:
63706 
63707  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
63708  // to current node (so that it will work cleanly with build functions to specify patterns).
63709  // virtual SgNode* addRegExpAttribute();
63716 
63717 // *** COMMON CODE SECTION ENDS HERE ***
63718 
63719 
63720 // End of memberFunctionString
63721 // Start of memberFunctionString
63722 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
63723 
63724  // the generated cast function
63725  // friend ROSE_DLL_API SgPartialFunctionType* isSgPartialFunctionType ( SgNode* s );
63726 
63728 
63729 
63730 // End of memberFunctionString
63731 
63732 
63733  public:
63734  virtual ~SgPartialFunctionType();
63735 
63736 
63737  public:
63738  SgPartialFunctionType(SgType* return_type = NULL, bool has_ellipses = true, SgType* class_type = NULL, unsigned int mfunc_specifier = 0, unsigned int ref_qualifiers = 0);
63739 
63740  protected:
63741 
63742 
63743 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
63744 
63745 
63746  };
63747 #endif
63748 
63749 // postdeclarations for SgPartialFunctionType
63750 
63751 /* #line 63752 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
63752 
63753 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
63754 
63755 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
63756 
63757 
63758 /* #line 63759 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
63759 
63760 
63761 
63762 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
63763 
63764 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
63765 // This code is automatically generated for each
63766 // terminal and non-terminal within the defined
63767 // grammar. There is a simple way to change the
63768 // code to fix bugs etc. See the ROSE README file
63769 // for directions.
63770 
63771 // tps: (02/22/2010): Adding DLL export requirements
63772 #include "rosedll.h"
63773 
63774 // predeclarations for SgPartialFunctionModifierType
63775 
63776 /* #line 63777 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
63777 
63778 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
63779 
63780 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
63781 
63782 #if 1
63783 // Class Definition for SgPartialFunctionModifierType
63785  {
63786  public:
63787 
63788 
63789 /* #line 63790 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
63790 
63791  virtual SgNode* copy ( SgCopyHelp& help) const override;
63792 // Start of memberFunctionString
63793 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
63794 
63795 // *** COMMON CODE SECTION BEGINS HERE ***
63796 
63797  public:
63798 
63799  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
63800  // and not required which is required to match the other aspects of the copy mechanism code generation.
63801  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
63802  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
63803  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
63804  // virtual SgNode* copy ( const SgCopyHelp & help) const;
63805 
63807  virtual std::string class_name() const override;
63808 
63810  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
63811 
63813  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
63814  // static const VariantT static_variant = V_SgPartialFunctionModifierType;
63815  enum { static_variant = V_SgPartialFunctionModifierType };
63816 
63817  /* the generated cast function */
63819  ROSE_DLL_API friend SgPartialFunctionModifierType* isSgPartialFunctionModifierType( SgNode * s );
63820 
63822  ROSE_DLL_API friend const SgPartialFunctionModifierType* isSgPartialFunctionModifierType( const SgNode * s );
63823 
63824  // ******************************************
63825  // * Memory Pool / New / Delete
63826  // ******************************************
63827 
63828  public:
63830  static const unsigned pool_size; //
63832  static std::vector<unsigned char *> pools; //
63834  static SgPartialFunctionModifierType * next_node; //
63835 
63837  static unsigned long initializeStorageClassArray(SgPartialFunctionModifierTypeStorageClass *); //
63838 
63840  static void clearMemoryPool(); //
63841  static void deleteMemoryPool(); //
63842 
63844  static void extendMemoryPoolForFileIO(); //
63845 
63847  static SgPartialFunctionModifierType * getPointerFromGlobalIndex(unsigned long); //
63849  static SgPartialFunctionModifierType * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
63850 
63852  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
63854  static void resetValidFreepointers(); //
63856  static unsigned long getNumberOfLastValidPointer(); //
63857 
63858 
63859 #if defined(INLINE_FUNCTIONS)
63860 
63861  inline void *operator new (size_t size);
63862 #else
63863 
63864  void *operator new (size_t size);
63865 #endif
63866 
63867  void operator delete (void* pointer, size_t size);
63868 
63869  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
63870  void operator delete (void* pointer)
63871  {
63872  // This is the generated delete operator...
63873  SgPartialFunctionModifierType::operator delete (pointer,sizeof(SgPartialFunctionModifierType));
63874  }
63875 
63877  static size_t numberOfNodes();
63878 
63880  static size_t memoryUsage();
63881 
63882  // End of scope which started in IR nodes specific code
63883  /* */
63884 
63885  /* name Internal Functions
63886  \brief Internal functions ... incomplete-documentation
63887 
63888  These functions have been made public as part of the design, but they are suggested for internal use
63889  or by particularly knowledgeable users for specialized tools or applications.
63890 
63891  \internal We could not make these private because they are required by user for special purposes. And
63892  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
63893 
63894  */
63895 
63896  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
63897  // overridden in every class by *generated* implementation
63899  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
63900  // MS: 06/28/02 container of names of variables or container indices
63901  // used used in the traversal to access AST successor nodes
63902  // overridden in every class by *generated* implementation
63905  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
63906 
63907  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
63908  // than all the vector copies. The implementation for these functions is generated for each class.
63910  virtual size_t get_numberOfTraversalSuccessors() override;
63912  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
63914  virtual size_t get_childIndex(SgNode *child) override;
63915 
63916 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
63917  // MS: 08/16/2002 method for generating RTI information
63919  virtual RTIReturnType roseRTI() override;
63920 #endif
63921  /* */
63922 
63923 
63924 
63925  /* name Deprecated Functions
63926  \brief Deprecated functions ... incomplete-documentation
63927 
63928  These functions have been deprecated from use.
63929  */
63930  /* */
63931 
63933  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
63934 
63935  // JJW (10/16/2008): Changed to a single function in Node.code, and put
63936  // getVariant() in #if 0 block to prevent confusing Doxygen
63937 #if 0
63938 
63939  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
63941  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
63942 #endif
63943  /* */
63944 
63945 
63946 
63947 
63948  public:
63949  /* name Traversal Support Functions
63950  \brief Traversal support functions ... incomplete-documentation
63951 
63952  These functions have been made public as part of the design, but they are suggested for internal use
63953  or by particularly knowledgable users for specialized tools or applications.
63954  */
63955  /* */
63956 
63957  // DQ (11/26/2005): Support for visitor pattern mechanims
63958  // (inferior to ROSE traversal mechanism, experimental).
63962 
63963  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
63965  virtual void accept (ROSE_VisitorPattern & visitor) override;
63966 
63967  // DQ (12/26/2005): Support for traversal based on the memory pool
63970  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
63971 
63975 
63976  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
63977  // This traversal helps support internal tools that call static member functions.
63978  // note: this function operates on the memory pools.
63981  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
63982  /* */
63983 
63984 
63985  public:
63986  /* name Memory Allocation Functions
63987  \brief Memory allocations functions ... incomplete-documentation
63988 
63989  These functions have been made public as part of the design, but they are suggested for internal use
63990  or by particularly knowledgable users for specialized tools or applications.
63991  */
63992  /* */
63993 
64004  virtual bool isInMemoryPool() override;
64005 
64016  virtual void checkDataMemberPointersIfInMemoryPool() override;
64017 
64018  // DQ (4/30/2006): Modified to be a const function.
64033  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
64034 
64044  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
64045 
64057  virtual long getChildIndex( SgNode* childNode ) const override;
64058 
64059  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
64060  // comment here (changed to be a C style comment and not be a doxygen comment).
64061  /* \brief Constructor for use by AST File I/O Mechanism
64062 
64063  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
64064  which obtained via fast binary file I/O from disk.
64065  */
64066  // SgPartialFunctionModifierType( SgPartialFunctionModifierTypeStorageClass& source );
64067 
64068 
64069 
64070 
64071 
64072  // JH (10/24/2005): methods added to support the ast file IO
64073  private:
64074 
64075  /* name AST Memory Allocation Support Functions
64076  \brief Memory allocations support....
64077 
64078  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
64079  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
64080  and support the AST File I/O Mechanism.
64081  */
64082  /* */
64083 
64084  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
64085  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
64086  that I use the same type everywhere, if any changes are made. THe second one declares the type
64087  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
64088  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
64089  a correspinding one in the AST_FILE_IO class!
64090  */
64091  // DQ (9/2/2015): This typedef is no longer used, we can't define the
64092  // comment here (changed to be a C style comment and not be a doxygen comment).
64093  /* \brief Typedef used for low level memory access.
64094  */
64095  // typedef unsigned char* TestType;
64096 
64097  // DQ (9/2/2015): This typedef is no longer used, we can't define the
64098  // comment here (changed to be a C style comment and not be a doxygen comment).
64099  /* \brief Typedef used to hold memory addresses as values.
64100  */
64101  // typedef unsigned long AddressType;
64102 
64103 
64104 
64105  // necessary, to have direct access to the p_freepointer and the private methods !
64107  friend class AST_FILE_IO;
64108 
64110  friend class SgPartialFunctionModifierTypeStorageClass;
64111 
64113  friend class AstSpecificDataManagingClass;
64114 
64116  friend class AstSpecificDataManagingClassStorageClass;
64117 
64118  public:
64120  SgPartialFunctionModifierType( const SgPartialFunctionModifierTypeStorageClass& source );
64121 
64122  // private: // JJW hack
64123  /*
64124  name AST Memory Allocation Support Variables
64125  Memory allocations support variables
64126 
64127  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
64128  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
64129  and support the AST File I/O Mechanism.
64130  */
64131  /* */
64132 
64133  public:
64134 
64135  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
64136  // to current node (so that it will work cleanly with build functions to specify patterns).
64137  // virtual SgNode* addRegExpAttribute();
64144 
64145 // *** COMMON CODE SECTION ENDS HERE ***
64146 
64147 
64148 // End of memberFunctionString
64149 // Start of memberFunctionString
64150 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
64151 
64152  // the generated cast function
64153  // friend ROSE_DLL_API SgPartialFunctionModifierType* isSgPartialFunctionModifierType ( SgNode* s );
64154 
64156 
64157 
64158 // End of memberFunctionString
64159 // Start of memberFunctionString
64160 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
64161 
64162  // SgName get_mangled ( SgUnparse_Info & info );
64163 
64165  // SgName get_mangled ( SgUnparse_Info & info );
64166  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
64167  virtual SgName get_mangled (void) const override;
64168 
64169 
64170 
64171 // End of memberFunctionString
64172 // Start of memberFunctionString
64173 /* #line 267 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
64174 
64176  // DQ (1/31/2006): Modified to build all types in the memory pools
64177  // static SgPartialFunctionModifierType builtin_type;
64178  // static SgPartialFunctionModifierType* builtin_type;
64179 
64180  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
64181  // since we don't store the type explicitly anymore except in a few IR nodes which have there
64182  // own data member and associated access function.
64183  // static SgPartialFunctionModifierType* get_builtin_type();
64184 
64185  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
64186  // since we don't store the type explicitly anymore except in a few IR nodes which have there
64187  // own data member and associated access function.
64188  // static void set_builtin_type(SgPartialFunctionModifierType* builtin_type);
64189 
64191  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
64192  // static SgPartialFunctionModifierType* createType(void);
64193  static SgPartialFunctionModifierType* createType(SgExpression* optional_fortran_type_kind = NULL);
64194 
64195 
64196 // End of memberFunctionString
64197 
64198 
64199 
64200  public:
64201  virtual ~SgPartialFunctionModifierType();
64202 
64203 
64204  public:
64205  SgPartialFunctionModifierType(SgType* return_type = NULL, bool has_ellipses = true, SgType* class_type = NULL, unsigned int mfunc_specifier = 0, unsigned int ref_qualifiers = 0);
64206 
64207  protected:
64208 // Start of memberFunctionString
64209 static SgPartialFunctionModifierType* p_builtin_type;
64210 
64211 // End of memberFunctionString
64212 
64213 
64214 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
64215 
64216 
64217  };
64218 #endif
64219 
64220 // postdeclarations for SgPartialFunctionModifierType
64221 
64222 /* #line 64223 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
64223 
64224 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
64225 
64226 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
64227 
64228 
64229 /* #line 64230 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
64230 
64231 
64232 
64233 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
64234 
64235 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
64236 // This code is automatically generated for each
64237 // terminal and non-terminal within the defined
64238 // grammar. There is a simple way to change the
64239 // code to fix bugs etc. See the ROSE README file
64240 // for directions.
64241 
64242 // tps: (02/22/2010): Adding DLL export requirements
64243 #include "rosedll.h"
64244 
64245 // predeclarations for SgArrayType
64246 
64247 /* #line 64248 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
64248 
64249 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
64250 
64251 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
64252 
64253 #if 1
64254 // Class Definition for SgArrayType
64255 class ROSE_DLL_API SgArrayType : public SgType
64256  {
64257  public:
64258 
64259 
64260 /* #line 64261 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
64261 
64262  virtual SgNode* copy ( SgCopyHelp& help) const override;
64263 // Start of memberFunctionString
64264 /* #line 290 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
64265 
64266  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
64267  // since we don't store the type explicitly anymore except in a few IR nodes which have there
64268  // own data member and associated access function.
64269  // static SgArrayType* get_builtin_type();
64270 
64271  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
64272  // since we don't store the type explicitly anymore except in a few IR nodes which have there
64273  // own data member and associated access function.
64274  // static void set_builtin_type(SgArrayType* builtin_type);
64275 
64277  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
64278  // static SgArrayType* createType(SgType* type = NULL, SgExpression* expr = NULL);
64279  static SgArrayType* createType(SgType* type = NULL, SgExpression* expr = NULL, SgExpression* optional_fortran_type_kind = NULL);
64280 
64281 
64282 // End of memberFunctionString
64283 // Start of memberFunctionString
64284 /* #line 991 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
64285 
64286 
64287  // DQ (3/22/2017): I would like to remove this function if possible.
64288  // DQ (3/22/2017): Added the get_name() function prototype directly so that
64289  // it could be differentiated from where it is a virtual function.
64290  SgName get_name() const;
64291 
64292 
64293 
64294 // End of memberFunctionString
64295 // Start of memberFunctionString
64296 /* #line 379 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
64297 
64299  SgName get_qualified_name() const;
64300 
64301 
64302 // End of memberFunctionString
64303 // Start of memberFunctionString
64304 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
64305 
64306 // *** COMMON CODE SECTION BEGINS HERE ***
64307 
64308  public:
64309 
64310  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
64311  // and not required which is required to match the other aspects of the copy mechanism code generation.
64312  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
64313  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
64314  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
64315  // virtual SgNode* copy ( const SgCopyHelp & help) const;
64316 
64318  virtual std::string class_name() const override;
64319 
64321  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
64322 
64324  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
64325  // static const VariantT static_variant = V_SgArrayType;
64326  enum { static_variant = V_SgArrayType };
64327 
64328  /* the generated cast function */
64330  ROSE_DLL_API friend SgArrayType* isSgArrayType( SgNode * s );
64331 
64333  ROSE_DLL_API friend const SgArrayType* isSgArrayType( const SgNode * s );
64334 
64335  // ******************************************
64336  // * Memory Pool / New / Delete
64337  // ******************************************
64338 
64339  public:
64341  static const unsigned pool_size; //
64343  static std::vector<unsigned char *> pools; //
64345  static SgArrayType * next_node; //
64346 
64348  static unsigned long initializeStorageClassArray(SgArrayTypeStorageClass *); //
64349 
64351  static void clearMemoryPool(); //
64352  static void deleteMemoryPool(); //
64353 
64355  static void extendMemoryPoolForFileIO(); //
64356 
64358  static SgArrayType * getPointerFromGlobalIndex(unsigned long); //
64360  static SgArrayType * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
64361 
64363  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
64365  static void resetValidFreepointers(); //
64367  static unsigned long getNumberOfLastValidPointer(); //
64368 
64369 
64370 #if defined(INLINE_FUNCTIONS)
64371 
64372  inline void *operator new (size_t size);
64373 #else
64374 
64375  void *operator new (size_t size);
64376 #endif
64377 
64378  void operator delete (void* pointer, size_t size);
64379 
64380  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
64381  void operator delete (void* pointer)
64382  {
64383  // This is the generated delete operator...
64384  SgArrayType::operator delete (pointer,sizeof(SgArrayType));
64385  }
64386 
64388  static size_t numberOfNodes();
64389 
64391  static size_t memoryUsage();
64392 
64393  // End of scope which started in IR nodes specific code
64394  /* */
64395 
64396  /* name Internal Functions
64397  \brief Internal functions ... incomplete-documentation
64398 
64399  These functions have been made public as part of the design, but they are suggested for internal use
64400  or by particularly knowledgeable users for specialized tools or applications.
64401 
64402  \internal We could not make these private because they are required by user for special purposes. And
64403  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
64404 
64405  */
64406 
64407  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
64408  // overridden in every class by *generated* implementation
64410  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
64411  // MS: 06/28/02 container of names of variables or container indices
64412  // used used in the traversal to access AST successor nodes
64413  // overridden in every class by *generated* implementation
64416  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
64417 
64418  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
64419  // than all the vector copies. The implementation for these functions is generated for each class.
64421  virtual size_t get_numberOfTraversalSuccessors() override;
64423  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
64425  virtual size_t get_childIndex(SgNode *child) override;
64426 
64427 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
64428  // MS: 08/16/2002 method for generating RTI information
64430  virtual RTIReturnType roseRTI() override;
64431 #endif
64432  /* */
64433 
64434 
64435 
64436  /* name Deprecated Functions
64437  \brief Deprecated functions ... incomplete-documentation
64438 
64439  These functions have been deprecated from use.
64440  */
64441  /* */
64442 
64444  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
64445 
64446  // JJW (10/16/2008): Changed to a single function in Node.code, and put
64447  // getVariant() in #if 0 block to prevent confusing Doxygen
64448 #if 0
64449 
64450  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
64452  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
64453 #endif
64454  /* */
64455 
64456 
64457 
64458 
64459  public:
64460  /* name Traversal Support Functions
64461  \brief Traversal support functions ... incomplete-documentation
64462 
64463  These functions have been made public as part of the design, but they are suggested for internal use
64464  or by particularly knowledgable users for specialized tools or applications.
64465  */
64466  /* */
64467 
64468  // DQ (11/26/2005): Support for visitor pattern mechanims
64469  // (inferior to ROSE traversal mechanism, experimental).
64473 
64474  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
64476  virtual void accept (ROSE_VisitorPattern & visitor) override;
64477 
64478  // DQ (12/26/2005): Support for traversal based on the memory pool
64481  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
64482 
64486 
64487  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
64488  // This traversal helps support internal tools that call static member functions.
64489  // note: this function operates on the memory pools.
64492  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
64493  /* */
64494 
64495 
64496  public:
64497  /* name Memory Allocation Functions
64498  \brief Memory allocations functions ... incomplete-documentation
64499 
64500  These functions have been made public as part of the design, but they are suggested for internal use
64501  or by particularly knowledgable users for specialized tools or applications.
64502  */
64503  /* */
64504 
64515  virtual bool isInMemoryPool() override;
64516 
64527  virtual void checkDataMemberPointersIfInMemoryPool() override;
64528 
64529  // DQ (4/30/2006): Modified to be a const function.
64544  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
64545 
64555  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
64556 
64568  virtual long getChildIndex( SgNode* childNode ) const override;
64569 
64570  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
64571  // comment here (changed to be a C style comment and not be a doxygen comment).
64572  /* \brief Constructor for use by AST File I/O Mechanism
64573 
64574  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
64575  which obtained via fast binary file I/O from disk.
64576  */
64577  // SgArrayType( SgArrayTypeStorageClass& source );
64578 
64579 
64580 
64581 
64582 
64583  // JH (10/24/2005): methods added to support the ast file IO
64584  private:
64585 
64586  /* name AST Memory Allocation Support Functions
64587  \brief Memory allocations support....
64588 
64589  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
64590  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
64591  and support the AST File I/O Mechanism.
64592  */
64593  /* */
64594 
64595  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
64596  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
64597  that I use the same type everywhere, if any changes are made. THe second one declares the type
64598  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
64599  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
64600  a correspinding one in the AST_FILE_IO class!
64601  */
64602  // DQ (9/2/2015): This typedef is no longer used, we can't define the
64603  // comment here (changed to be a C style comment and not be a doxygen comment).
64604  /* \brief Typedef used for low level memory access.
64605  */
64606  // typedef unsigned char* TestType;
64607 
64608  // DQ (9/2/2015): This typedef is no longer used, we can't define the
64609  // comment here (changed to be a C style comment and not be a doxygen comment).
64610  /* \brief Typedef used to hold memory addresses as values.
64611  */
64612  // typedef unsigned long AddressType;
64613 
64614 
64615 
64616  // necessary, to have direct access to the p_freepointer and the private methods !
64618  friend class AST_FILE_IO;
64619 
64621  friend class SgArrayTypeStorageClass;
64622 
64624  friend class AstSpecificDataManagingClass;
64625 
64627  friend class AstSpecificDataManagingClassStorageClass;
64628 
64629  public:
64631  SgArrayType( const SgArrayTypeStorageClass& source );
64632 
64633  // private: // JJW hack
64634  /*
64635  name AST Memory Allocation Support Variables
64636  Memory allocations support variables
64637 
64638  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
64639  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
64640  and support the AST File I/O Mechanism.
64641  */
64642  /* */
64643 
64644  public:
64645 
64646  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
64647  // to current node (so that it will work cleanly with build functions to specify patterns).
64648  // virtual SgNode* addRegExpAttribute();
64654  SgArrayType* addRegExpAttribute(std::string s, AstRegExAttribute* a);
64655 
64656 // *** COMMON CODE SECTION ENDS HERE ***
64657 
64658 
64659 // End of memberFunctionString
64660 // Start of memberFunctionString
64661 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
64662 
64663  // the generated cast function
64664  // friend ROSE_DLL_API SgArrayType* isSgArrayType ( SgNode* s );
64665 
64666  typedef SgType base_node_type;
64667 
64668 
64669 // End of memberFunctionString
64670 // Start of memberFunctionString
64671 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
64672 
64673  // SgName get_mangled ( SgUnparse_Info & info );
64674 
64676  // SgName get_mangled ( SgUnparse_Info & info );
64677  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
64678  virtual SgName get_mangled (void) const override;
64679 
64680 
64681 
64682 // End of memberFunctionString
64683 
64684  public:
64685  SgType* get_base_type() const;
64686  void set_base_type(SgType* base_type);
64687 
64688  public:
64689  SgExpression* get_index() const;
64690  void set_index(SgExpression* index);
64691 
64692  public:
64693  SgExprListExp* get_dim_info() const;
64694  void set_dim_info(SgExprListExp* dim_info);
64695 
64696  public:
64697  int get_rank() const;
64698  void set_rank(int rank);
64699 
64700  public:
64701  int get_number_of_elements() const;
64702  void set_number_of_elements(int number_of_elements);
64703 
64704  public:
64705  bool get_is_variable_length_array() const;
64706  void set_is_variable_length_array(bool is_variable_length_array);
64707 
64708 
64709  public:
64710  virtual ~SgArrayType();
64711 
64712 
64713  public:
64714  SgArrayType(SgType* base_type = NULL, SgExpression* index = NULL);
64715 
64716  protected:
64717 // Start of memberFunctionString
64718 SgType* p_base_type;
64719 
64720 // End of memberFunctionString
64721 // Start of memberFunctionString
64722 SgExpression* p_index;
64723 
64724 // End of memberFunctionString
64725 // Start of memberFunctionString
64726 SgExprListExp* p_dim_info;
64727 
64728 // End of memberFunctionString
64729 // Start of memberFunctionString
64730 int p_rank;
64731 
64732 // End of memberFunctionString
64733 // Start of memberFunctionString
64734 int p_number_of_elements;
64735 
64736 // End of memberFunctionString
64737 // Start of memberFunctionString
64738 bool p_is_variable_length_array;
64739 
64740 // End of memberFunctionString
64741 
64742 
64743 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
64744 
64745 
64746  };
64747 #endif
64748 
64749 // postdeclarations for SgArrayType
64750 
64751 /* #line 64752 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
64752 
64753 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
64754 
64755 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
64756 
64757 
64758 /* #line 64759 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
64759 
64760 
64761 
64762 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
64763 
64764 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
64765 // This code is automatically generated for each
64766 // terminal and non-terminal within the defined
64767 // grammar. There is a simple way to change the
64768 // code to fix bugs etc. See the ROSE README file
64769 // for directions.
64770 
64771 // tps: (02/22/2010): Adding DLL export requirements
64772 #include "rosedll.h"
64773 
64774 // predeclarations for SgTypeEllipse
64775 
64776 /* #line 64777 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
64777 
64778 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
64779 
64780 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
64781 
64782 #if 1
64783 // Class Definition for SgTypeEllipse
64784 class ROSE_DLL_API SgTypeEllipse : public SgType
64785  {
64786  public:
64787 
64788 
64789 /* #line 64790 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
64790 
64791  virtual SgNode* copy ( SgCopyHelp& help) const override;
64792 // Start of memberFunctionString
64793 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
64794 
64795 // *** COMMON CODE SECTION BEGINS HERE ***
64796 
64797  public:
64798 
64799  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
64800  // and not required which is required to match the other aspects of the copy mechanism code generation.
64801  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
64802  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
64803  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
64804  // virtual SgNode* copy ( const SgCopyHelp & help) const;
64805 
64807  virtual std::string class_name() const override;
64808 
64810  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
64811 
64813  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
64814  // static const VariantT static_variant = V_SgTypeEllipse;
64815  enum { static_variant = V_SgTypeEllipse };
64816 
64817  /* the generated cast function */
64819  ROSE_DLL_API friend SgTypeEllipse* isSgTypeEllipse( SgNode * s );
64820 
64822  ROSE_DLL_API friend const SgTypeEllipse* isSgTypeEllipse( const SgNode * s );
64823 
64824  // ******************************************
64825  // * Memory Pool / New / Delete
64826  // ******************************************
64827 
64828  public:
64830  static const unsigned pool_size; //
64832  static std::vector<unsigned char *> pools; //
64834  static SgTypeEllipse * next_node; //
64835 
64837  static unsigned long initializeStorageClassArray(SgTypeEllipseStorageClass *); //
64838 
64840  static void clearMemoryPool(); //
64841  static void deleteMemoryPool(); //
64842 
64844  static void extendMemoryPoolForFileIO(); //
64845 
64847  static SgTypeEllipse * getPointerFromGlobalIndex(unsigned long); //
64849  static SgTypeEllipse * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
64850 
64852  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
64854  static void resetValidFreepointers(); //
64856  static unsigned long getNumberOfLastValidPointer(); //
64857 
64858 
64859 #if defined(INLINE_FUNCTIONS)
64860 
64861  inline void *operator new (size_t size);
64862 #else
64863 
64864  void *operator new (size_t size);
64865 #endif
64866 
64867  void operator delete (void* pointer, size_t size);
64868 
64869  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
64870  void operator delete (void* pointer)
64871  {
64872  // This is the generated delete operator...
64873  SgTypeEllipse::operator delete (pointer,sizeof(SgTypeEllipse));
64874  }
64875 
64877  static size_t numberOfNodes();
64878 
64880  static size_t memoryUsage();
64881 
64882  // End of scope which started in IR nodes specific code
64883  /* */
64884 
64885  /* name Internal Functions
64886  \brief Internal functions ... incomplete-documentation
64887 
64888  These functions have been made public as part of the design, but they are suggested for internal use
64889  or by particularly knowledgeable users for specialized tools or applications.
64890 
64891  \internal We could not make these private because they are required by user for special purposes. And
64892  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
64893 
64894  */
64895 
64896  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
64897  // overridden in every class by *generated* implementation
64899  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
64900  // MS: 06/28/02 container of names of variables or container indices
64901  // used used in the traversal to access AST successor nodes
64902  // overridden in every class by *generated* implementation
64905  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
64906 
64907  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
64908  // than all the vector copies. The implementation for these functions is generated for each class.
64910  virtual size_t get_numberOfTraversalSuccessors() override;
64912  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
64914  virtual size_t get_childIndex(SgNode *child) override;
64915 
64916 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
64917  // MS: 08/16/2002 method for generating RTI information
64919  virtual RTIReturnType roseRTI() override;
64920 #endif
64921  /* */
64922 
64923 
64924 
64925  /* name Deprecated Functions
64926  \brief Deprecated functions ... incomplete-documentation
64927 
64928  These functions have been deprecated from use.
64929  */
64930  /* */
64931 
64933  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
64934 
64935  // JJW (10/16/2008): Changed to a single function in Node.code, and put
64936  // getVariant() in #if 0 block to prevent confusing Doxygen
64937 #if 0
64938 
64939  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
64941  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
64942 #endif
64943  /* */
64944 
64945 
64946 
64947 
64948  public:
64949  /* name Traversal Support Functions
64950  \brief Traversal support functions ... incomplete-documentation
64951 
64952  These functions have been made public as part of the design, but they are suggested for internal use
64953  or by particularly knowledgable users for specialized tools or applications.
64954  */
64955  /* */
64956 
64957  // DQ (11/26/2005): Support for visitor pattern mechanims
64958  // (inferior to ROSE traversal mechanism, experimental).
64962 
64963  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
64965  virtual void accept (ROSE_VisitorPattern & visitor) override;
64966 
64967  // DQ (12/26/2005): Support for traversal based on the memory pool
64970  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
64971 
64975 
64976  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
64977  // This traversal helps support internal tools that call static member functions.
64978  // note: this function operates on the memory pools.
64981  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
64982  /* */
64983 
64984 
64985  public:
64986  /* name Memory Allocation Functions
64987  \brief Memory allocations functions ... incomplete-documentation
64988 
64989  These functions have been made public as part of the design, but they are suggested for internal use
64990  or by particularly knowledgable users for specialized tools or applications.
64991  */
64992  /* */
64993 
65004  virtual bool isInMemoryPool() override;
65005 
65016  virtual void checkDataMemberPointersIfInMemoryPool() override;
65017 
65018  // DQ (4/30/2006): Modified to be a const function.
65033  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
65034 
65044  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
65045 
65057  virtual long getChildIndex( SgNode* childNode ) const override;
65058 
65059  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
65060  // comment here (changed to be a C style comment and not be a doxygen comment).
65061  /* \brief Constructor for use by AST File I/O Mechanism
65062 
65063  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
65064  which obtained via fast binary file I/O from disk.
65065  */
65066  // SgTypeEllipse( SgTypeEllipseStorageClass& source );
65067 
65068 
65069 
65070 
65071 
65072  // JH (10/24/2005): methods added to support the ast file IO
65073  private:
65074 
65075  /* name AST Memory Allocation Support Functions
65076  \brief Memory allocations support....
65077 
65078  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
65079  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
65080  and support the AST File I/O Mechanism.
65081  */
65082  /* */
65083 
65084  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
65085  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
65086  that I use the same type everywhere, if any changes are made. THe second one declares the type
65087  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
65088  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
65089  a correspinding one in the AST_FILE_IO class!
65090  */
65091  // DQ (9/2/2015): This typedef is no longer used, we can't define the
65092  // comment here (changed to be a C style comment and not be a doxygen comment).
65093  /* \brief Typedef used for low level memory access.
65094  */
65095  // typedef unsigned char* TestType;
65096 
65097  // DQ (9/2/2015): This typedef is no longer used, we can't define the
65098  // comment here (changed to be a C style comment and not be a doxygen comment).
65099  /* \brief Typedef used to hold memory addresses as values.
65100  */
65101  // typedef unsigned long AddressType;
65102 
65103 
65104 
65105  // necessary, to have direct access to the p_freepointer and the private methods !
65107  friend class AST_FILE_IO;
65108 
65110  friend class SgTypeEllipseStorageClass;
65111 
65113  friend class AstSpecificDataManagingClass;
65114 
65116  friend class AstSpecificDataManagingClassStorageClass;
65117 
65118  public:
65120  SgTypeEllipse( const SgTypeEllipseStorageClass& source );
65121 
65122  // private: // JJW hack
65123  /*
65124  name AST Memory Allocation Support Variables
65125  Memory allocations support variables
65126 
65127  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
65128  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
65129  and support the AST File I/O Mechanism.
65130  */
65131  /* */
65132 
65133  public:
65134 
65135  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
65136  // to current node (so that it will work cleanly with build functions to specify patterns).
65137  // virtual SgNode* addRegExpAttribute();
65144 
65145 // *** COMMON CODE SECTION ENDS HERE ***
65146 
65147 
65148 // End of memberFunctionString
65149 // Start of memberFunctionString
65150 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
65151 
65152  // the generated cast function
65153  // friend ROSE_DLL_API SgTypeEllipse* isSgTypeEllipse ( SgNode* s );
65154 
65155  typedef SgType base_node_type;
65156 
65157 
65158 // End of memberFunctionString
65159 // Start of memberFunctionString
65160 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
65161 
65162  // SgName get_mangled ( SgUnparse_Info & info );
65163 
65165  // SgName get_mangled ( SgUnparse_Info & info );
65166  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
65167  virtual SgName get_mangled (void) const override;
65168 
65169 
65170 
65171 // End of memberFunctionString
65172 // Start of memberFunctionString
65173 /* #line 267 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
65174 
65176  // DQ (1/31/2006): Modified to build all types in the memory pools
65177  // static SgTypeEllipse builtin_type;
65178  // static SgTypeEllipse* builtin_type;
65179 
65180  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
65181  // since we don't store the type explicitly anymore except in a few IR nodes which have there
65182  // own data member and associated access function.
65183  // static SgTypeEllipse* get_builtin_type();
65184 
65185  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
65186  // since we don't store the type explicitly anymore except in a few IR nodes which have there
65187  // own data member and associated access function.
65188  // static void set_builtin_type(SgTypeEllipse* builtin_type);
65189 
65191  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
65192  // static SgTypeEllipse* createType(void);
65193  static SgTypeEllipse* createType(SgExpression* optional_fortran_type_kind = NULL);
65194 
65195 
65196 // End of memberFunctionString
65197 
65198 
65199 
65200  public:
65201  virtual ~SgTypeEllipse();
65202 
65203 
65204  public:
65205  SgTypeEllipse();
65206 
65207  protected:
65208 // Start of memberFunctionString
65209 static SgTypeEllipse* p_builtin_type;
65210 
65211 // End of memberFunctionString
65212 
65213 
65214 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
65215 
65216 
65217  };
65218 #endif
65219 
65220 // postdeclarations for SgTypeEllipse
65221 
65222 /* #line 65223 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
65223 
65224 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
65225 
65226 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
65227 
65228 
65229 /* #line 65230 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
65230 
65231 
65232 
65233 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
65234 
65235 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
65236 // This code is automatically generated for each
65237 // terminal and non-terminal within the defined
65238 // grammar. There is a simple way to change the
65239 // code to fix bugs etc. See the ROSE README file
65240 // for directions.
65241 
65242 // tps: (02/22/2010): Adding DLL export requirements
65243 #include "rosedll.h"
65244 
65245 // predeclarations for SgTemplateType
65246 
65247 /* #line 65248 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
65248 
65249 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
65250 
65251 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
65252 
65253 #if 1
65254 // Class Definition for SgTemplateType
65255 class ROSE_DLL_API SgTemplateType : public SgType
65256  {
65257  public:
65258 
65259 
65260 /* #line 65261 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
65261 
65262  virtual SgNode* copy ( SgCopyHelp& help) const override;
65263 // Start of memberFunctionString
65264 /* #line 290 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
65265 
65266  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
65267  // since we don't store the type explicitly anymore except in a few IR nodes which have there
65268  // own data member and associated access function.
65269  // static SgTemplateType* get_builtin_type();
65270 
65271  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
65272  // since we don't store the type explicitly anymore except in a few IR nodes which have there
65273  // own data member and associated access function.
65274  // static void set_builtin_type(SgTemplateType* builtin_type);
65275 
65277  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
65278  // static SgTemplateType* createType(SgTemplateDeclaration* decl = NULL);
65279  static SgTemplateType* createType(SgTemplateDeclaration* decl = NULL, SgExpression* optional_fortran_type_kind = NULL);
65280 
65281 
65282 // End of memberFunctionString
65283 // Start of memberFunctionString
65284 /* #line 413 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
65285 
65286 
65287 
65288 // End of memberFunctionString
65289 // Start of memberFunctionString
65290 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
65291 
65292 // *** COMMON CODE SECTION BEGINS HERE ***
65293 
65294  public:
65295 
65296  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
65297  // and not required which is required to match the other aspects of the copy mechanism code generation.
65298  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
65299  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
65300  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
65301  // virtual SgNode* copy ( const SgCopyHelp & help) const;
65302 
65304  virtual std::string class_name() const override;
65305 
65307  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
65308 
65310  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
65311  // static const VariantT static_variant = V_SgTemplateType;
65312  enum { static_variant = V_SgTemplateType };
65313 
65314  /* the generated cast function */
65316  ROSE_DLL_API friend SgTemplateType* isSgTemplateType( SgNode * s );
65317 
65319  ROSE_DLL_API friend const SgTemplateType* isSgTemplateType( const SgNode * s );
65320 
65321  // ******************************************
65322  // * Memory Pool / New / Delete
65323  // ******************************************
65324 
65325  public:
65327  static const unsigned pool_size; //
65329  static std::vector<unsigned char *> pools; //
65331  static SgTemplateType * next_node; //
65332 
65334  static unsigned long initializeStorageClassArray(SgTemplateTypeStorageClass *); //
65335 
65337  static void clearMemoryPool(); //
65338  static void deleteMemoryPool(); //
65339 
65341  static void extendMemoryPoolForFileIO(); //
65342 
65344  static SgTemplateType * getPointerFromGlobalIndex(unsigned long); //
65346  static SgTemplateType * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
65347 
65349  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
65351  static void resetValidFreepointers(); //
65353  static unsigned long getNumberOfLastValidPointer(); //
65354 
65355 
65356 #if defined(INLINE_FUNCTIONS)
65357 
65358  inline void *operator new (size_t size);
65359 #else
65360 
65361  void *operator new (size_t size);
65362 #endif
65363 
65364  void operator delete (void* pointer, size_t size);
65365 
65366  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
65367  void operator delete (void* pointer)
65368  {
65369  // This is the generated delete operator...
65370  SgTemplateType::operator delete (pointer,sizeof(SgTemplateType));
65371  }
65372 
65374  static size_t numberOfNodes();
65375 
65377  static size_t memoryUsage();
65378 
65379  // End of scope which started in IR nodes specific code
65380  /* */
65381 
65382  /* name Internal Functions
65383  \brief Internal functions ... incomplete-documentation
65384 
65385  These functions have been made public as part of the design, but they are suggested for internal use
65386  or by particularly knowledgeable users for specialized tools or applications.
65387 
65388  \internal We could not make these private because they are required by user for special purposes. And
65389  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
65390 
65391  */
65392 
65393  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
65394  // overridden in every class by *generated* implementation
65396  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
65397  // MS: 06/28/02 container of names of variables or container indices
65398  // used used in the traversal to access AST successor nodes
65399  // overridden in every class by *generated* implementation
65402  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
65403 
65404  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
65405  // than all the vector copies. The implementation for these functions is generated for each class.
65407  virtual size_t get_numberOfTraversalSuccessors() override;
65409  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
65411  virtual size_t get_childIndex(SgNode *child) override;
65412 
65413 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
65414  // MS: 08/16/2002 method for generating RTI information
65416  virtual RTIReturnType roseRTI() override;
65417 #endif
65418  /* */
65419 
65420 
65421 
65422  /* name Deprecated Functions
65423  \brief Deprecated functions ... incomplete-documentation
65424 
65425  These functions have been deprecated from use.
65426  */
65427  /* */
65428 
65430  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
65431 
65432  // JJW (10/16/2008): Changed to a single function in Node.code, and put
65433  // getVariant() in #if 0 block to prevent confusing Doxygen
65434 #if 0
65435 
65436  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
65438  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
65439 #endif
65440  /* */
65441 
65442 
65443 
65444 
65445  public:
65446  /* name Traversal Support Functions
65447  \brief Traversal support functions ... incomplete-documentation
65448 
65449  These functions have been made public as part of the design, but they are suggested for internal use
65450  or by particularly knowledgable users for specialized tools or applications.
65451  */
65452  /* */
65453 
65454  // DQ (11/26/2005): Support for visitor pattern mechanims
65455  // (inferior to ROSE traversal mechanism, experimental).
65459 
65460  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
65462  virtual void accept (ROSE_VisitorPattern & visitor) override;
65463 
65464  // DQ (12/26/2005): Support for traversal based on the memory pool
65467  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
65468 
65472 
65473  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
65474  // This traversal helps support internal tools that call static member functions.
65475  // note: this function operates on the memory pools.
65478  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
65479  /* */
65480 
65481 
65482  public:
65483  /* name Memory Allocation Functions
65484  \brief Memory allocations functions ... incomplete-documentation
65485 
65486  These functions have been made public as part of the design, but they are suggested for internal use
65487  or by particularly knowledgable users for specialized tools or applications.
65488  */
65489  /* */
65490 
65501  virtual bool isInMemoryPool() override;
65502 
65513  virtual void checkDataMemberPointersIfInMemoryPool() override;
65514 
65515  // DQ (4/30/2006): Modified to be a const function.
65530  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
65531 
65541  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
65542 
65554  virtual long getChildIndex( SgNode* childNode ) const override;
65555 
65556  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
65557  // comment here (changed to be a C style comment and not be a doxygen comment).
65558  /* \brief Constructor for use by AST File I/O Mechanism
65559 
65560  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
65561  which obtained via fast binary file I/O from disk.
65562  */
65563  // SgTemplateType( SgTemplateTypeStorageClass& source );
65564 
65565 
65566 
65567 
65568 
65569  // JH (10/24/2005): methods added to support the ast file IO
65570  private:
65571 
65572  /* name AST Memory Allocation Support Functions
65573  \brief Memory allocations support....
65574 
65575  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
65576  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
65577  and support the AST File I/O Mechanism.
65578  */
65579  /* */
65580 
65581  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
65582  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
65583  that I use the same type everywhere, if any changes are made. THe second one declares the type
65584  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
65585  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
65586  a correspinding one in the AST_FILE_IO class!
65587  */
65588  // DQ (9/2/2015): This typedef is no longer used, we can't define the
65589  // comment here (changed to be a C style comment and not be a doxygen comment).
65590  /* \brief Typedef used for low level memory access.
65591  */
65592  // typedef unsigned char* TestType;
65593 
65594  // DQ (9/2/2015): This typedef is no longer used, we can't define the
65595  // comment here (changed to be a C style comment and not be a doxygen comment).
65596  /* \brief Typedef used to hold memory addresses as values.
65597  */
65598  // typedef unsigned long AddressType;
65599 
65600 
65601 
65602  // necessary, to have direct access to the p_freepointer and the private methods !
65604  friend class AST_FILE_IO;
65605 
65607  friend class SgTemplateTypeStorageClass;
65608 
65610  friend class AstSpecificDataManagingClass;
65611 
65613  friend class AstSpecificDataManagingClassStorageClass;
65614 
65615  public:
65617  SgTemplateType( const SgTemplateTypeStorageClass& source );
65618 
65619  // private: // JJW hack
65620  /*
65621  name AST Memory Allocation Support Variables
65622  Memory allocations support variables
65623 
65624  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
65625  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
65626  and support the AST File I/O Mechanism.
65627  */
65628  /* */
65629 
65630  public:
65631 
65632  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
65633  // to current node (so that it will work cleanly with build functions to specify patterns).
65634  // virtual SgNode* addRegExpAttribute();
65641 
65642 // *** COMMON CODE SECTION ENDS HERE ***
65643 
65644 
65645 // End of memberFunctionString
65646 // Start of memberFunctionString
65647 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
65648 
65649  // the generated cast function
65650  // friend ROSE_DLL_API SgTemplateType* isSgTemplateType ( SgNode* s );
65651 
65652  typedef SgType base_node_type;
65653 
65654 
65655 // End of memberFunctionString
65656 // Start of memberFunctionString
65657 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
65658 
65659  // SgName get_mangled ( SgUnparse_Info & info );
65660 
65662  // SgName get_mangled ( SgUnparse_Info & info );
65663  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
65664  virtual SgName get_mangled (void) const override;
65665 
65666 
65667 
65668 // End of memberFunctionString
65669 
65670  public:
65671  SgName get_name() const /* (getDataAccessFunctionPrototypeString) */;
65672  void set_name(SgName name) /* (getDataAccessFunctionPrototypeString) */;
65673 
65674  public:
65675  int get_template_parameter_position() const;
65676  void set_template_parameter_position(int template_parameter_position);
65677 
65678  public:
65679  int get_template_parameter_depth() const;
65680  void set_template_parameter_depth(int template_parameter_depth);
65681 
65682  public:
65683  SgType * get_class_type() const;
65684  void set_class_type(SgType * class_type);
65685 
65686  public:
65687  SgType * get_parent_class_type() const;
65688  void set_parent_class_type(SgType * parent_class_type);
65689 
65690  public:
65691  SgTemplateParameter * get_template_parameter() const;
65692  void set_template_parameter(SgTemplateParameter * template_parameter);
65693 
65694  public:
65695  const SgTemplateArgumentPtrList& get_tpl_args() const;
65696  SgTemplateArgumentPtrList& get_tpl_args();
65697 
65698  public:
65699  const SgTemplateArgumentPtrList& get_part_spec_tpl_args() const;
65700  SgTemplateArgumentPtrList& get_part_spec_tpl_args();
65701 
65702  public:
65703  bool get_packed() const;
65704  void set_packed(bool packed);
65705 
65706 
65707  public:
65708  virtual ~SgTemplateType();
65709 
65710 
65711  public:
65712  SgTemplateType(SgName name = "");
65713 
65714  protected:
65715 // Start of memberFunctionString
65716 SgName p_name;
65717 
65718 // End of memberFunctionString
65719 // Start of memberFunctionString
65720 int p_template_parameter_position;
65721 
65722 // End of memberFunctionString
65723 // Start of memberFunctionString
65724 int p_template_parameter_depth;
65725 
65726 // End of memberFunctionString
65727 // Start of memberFunctionString
65728 SgType * p_class_type;
65729 
65730 // End of memberFunctionString
65731 // Start of memberFunctionString
65732 SgType * p_parent_class_type;
65733 
65734 // End of memberFunctionString
65735 // Start of memberFunctionString
65736 SgTemplateParameter * p_template_parameter;
65737 
65738 // End of memberFunctionString
65739 // Start of memberFunctionString
65740 SgTemplateArgumentPtrList p_tpl_args;
65741 
65742 // End of memberFunctionString
65743 // Start of memberFunctionString
65744 SgTemplateArgumentPtrList p_part_spec_tpl_args;
65745 
65746 // End of memberFunctionString
65747 // Start of memberFunctionString
65748 bool p_packed;
65749 
65750 // End of memberFunctionString
65751 
65752 
65753 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
65754 
65755 
65756  };
65757 #endif
65758 
65759 // postdeclarations for SgTemplateType
65760 
65761 /* #line 65762 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
65762 
65763 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
65764 
65765 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
65766 
65767 
65768 /* #line 65769 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
65769 
65770 
65771 
65772 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
65773 
65774 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
65775 // This code is automatically generated for each
65776 // terminal and non-terminal within the defined
65777 // grammar. There is a simple way to change the
65778 // code to fix bugs etc. See the ROSE README file
65779 // for directions.
65780 
65781 // tps: (02/22/2010): Adding DLL export requirements
65782 #include "rosedll.h"
65783 
65784 // predeclarations for SgQualifiedNameType
65785 
65786 /* #line 65787 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
65787 
65788 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
65789 
65790 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
65791 
65792 #if 1
65793 // Class Definition for SgQualifiedNameType
65794 class ROSE_DLL_API SgQualifiedNameType : public SgType
65795  {
65796  public:
65797 
65798 
65799 /* #line 65800 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
65800 
65801  virtual SgNode* copy ( SgCopyHelp& help) const override;
65802 // Start of memberFunctionString
65803 /* #line 290 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
65804 
65805  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
65806  // since we don't store the type explicitly anymore except in a few IR nodes which have there
65807  // own data member and associated access function.
65808  // static SgQualifiedNameType* get_builtin_type();
65809 
65810  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
65811  // since we don't store the type explicitly anymore except in a few IR nodes which have there
65812  // own data member and associated access function.
65813  // static void set_builtin_type(SgQualifiedNameType* builtin_type);
65814 
65816  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
65817  // static SgQualifiedNameType* createType(SgType* type = NULL, unsigned int x = 0);
65818  static SgQualifiedNameType* createType(SgType* type = NULL, unsigned int x = 0, SgExpression* optional_fortran_type_kind = NULL);
65819 
65820 
65821 // End of memberFunctionString
65822 // Start of memberFunctionString
65823 /* #line 732 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
65824 
65825  SgName get_prefix() const;
65826 
65827  // SgName get_mangled (void) const;
65828 
65829  // DQ (10/10/2006): Handle qualified name list at the declarations directly, instead of at the types.
65830  // At present these are useful for SgVariableDeclaration and SgTypedefDeclaration, but likely others
65831  // at some point.
65832  SgQualifiedNamePtrList & get_qualifiedNameList();
65833  const SgQualifiedNamePtrList & get_qualifiedNameList() const;
65834  void set_qualifiedNameList( const SgQualifiedNamePtrList & x );
65835 
65836 
65837 
65838 // End of memberFunctionString
65839 // Start of memberFunctionString
65840 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
65841 
65842 // *** COMMON CODE SECTION BEGINS HERE ***
65843 
65844  public:
65845 
65846  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
65847  // and not required which is required to match the other aspects of the copy mechanism code generation.
65848  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
65849  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
65850  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
65851  // virtual SgNode* copy ( const SgCopyHelp & help) const;
65852 
65854  virtual std::string class_name() const override;
65855 
65857  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
65858 
65860  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
65861  // static const VariantT static_variant = V_SgQualifiedNameType;
65862  enum { static_variant = V_SgQualifiedNameType };
65863 
65864  /* the generated cast function */
65866  ROSE_DLL_API friend SgQualifiedNameType* isSgQualifiedNameType( SgNode * s );
65867 
65869  ROSE_DLL_API friend const SgQualifiedNameType* isSgQualifiedNameType( const SgNode * s );
65870 
65871  // ******************************************
65872  // * Memory Pool / New / Delete
65873  // ******************************************
65874 
65875  public:
65877  static const unsigned pool_size; //
65879  static std::vector<unsigned char *> pools; //
65881  static SgQualifiedNameType * next_node; //
65882 
65884  static unsigned long initializeStorageClassArray(SgQualifiedNameTypeStorageClass *); //
65885 
65887  static void clearMemoryPool(); //
65888  static void deleteMemoryPool(); //
65889 
65891  static void extendMemoryPoolForFileIO(); //
65892 
65894  static SgQualifiedNameType * getPointerFromGlobalIndex(unsigned long); //
65896  static SgQualifiedNameType * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
65897 
65899  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
65901  static void resetValidFreepointers(); //
65903  static unsigned long getNumberOfLastValidPointer(); //
65904 
65905 
65906 #if defined(INLINE_FUNCTIONS)
65907 
65908  inline void *operator new (size_t size);
65909 #else
65910 
65911  void *operator new (size_t size);
65912 #endif
65913 
65914  void operator delete (void* pointer, size_t size);
65915 
65916  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
65917  void operator delete (void* pointer)
65918  {
65919  // This is the generated delete operator...
65920  SgQualifiedNameType::operator delete (pointer,sizeof(SgQualifiedNameType));
65921  }
65922 
65924  static size_t numberOfNodes();
65925 
65927  static size_t memoryUsage();
65928 
65929  // End of scope which started in IR nodes specific code
65930  /* */
65931 
65932  /* name Internal Functions
65933  \brief Internal functions ... incomplete-documentation
65934 
65935  These functions have been made public as part of the design, but they are suggested for internal use
65936  or by particularly knowledgeable users for specialized tools or applications.
65937 
65938  \internal We could not make these private because they are required by user for special purposes. And
65939  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
65940 
65941  */
65942 
65943  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
65944  // overridden in every class by *generated* implementation
65946  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
65947  // MS: 06/28/02 container of names of variables or container indices
65948  // used used in the traversal to access AST successor nodes
65949  // overridden in every class by *generated* implementation
65952  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
65953 
65954  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
65955  // than all the vector copies. The implementation for these functions is generated for each class.
65957  virtual size_t get_numberOfTraversalSuccessors() override;
65959  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
65961  virtual size_t get_childIndex(SgNode *child) override;
65962 
65963 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
65964  // MS: 08/16/2002 method for generating RTI information
65966  virtual RTIReturnType roseRTI() override;
65967 #endif
65968  /* */
65969 
65970 
65971 
65972  /* name Deprecated Functions
65973  \brief Deprecated functions ... incomplete-documentation
65974 
65975  These functions have been deprecated from use.
65976  */
65977  /* */
65978 
65980  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
65981 
65982  // JJW (10/16/2008): Changed to a single function in Node.code, and put
65983  // getVariant() in #if 0 block to prevent confusing Doxygen
65984 #if 0
65985 
65986  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
65988  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
65989 #endif
65990  /* */
65991 
65992 
65993 
65994 
65995  public:
65996  /* name Traversal Support Functions
65997  \brief Traversal support functions ... incomplete-documentation
65998 
65999  These functions have been made public as part of the design, but they are suggested for internal use
66000  or by particularly knowledgable users for specialized tools or applications.
66001  */
66002  /* */
66003 
66004  // DQ (11/26/2005): Support for visitor pattern mechanims
66005  // (inferior to ROSE traversal mechanism, experimental).
66009 
66010  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
66012  virtual void accept (ROSE_VisitorPattern & visitor) override;
66013 
66014  // DQ (12/26/2005): Support for traversal based on the memory pool
66017  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
66018 
66022 
66023  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
66024  // This traversal helps support internal tools that call static member functions.
66025  // note: this function operates on the memory pools.
66028  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
66029  /* */
66030 
66031 
66032  public:
66033  /* name Memory Allocation Functions
66034  \brief Memory allocations functions ... incomplete-documentation
66035 
66036  These functions have been made public as part of the design, but they are suggested for internal use
66037  or by particularly knowledgable users for specialized tools or applications.
66038  */
66039  /* */
66040 
66051  virtual bool isInMemoryPool() override;
66052 
66063  virtual void checkDataMemberPointersIfInMemoryPool() override;
66064 
66065  // DQ (4/30/2006): Modified to be a const function.
66080  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
66081 
66091  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
66092 
66104  virtual long getChildIndex( SgNode* childNode ) const override;
66105 
66106  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
66107  // comment here (changed to be a C style comment and not be a doxygen comment).
66108  /* \brief Constructor for use by AST File I/O Mechanism
66109 
66110  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
66111  which obtained via fast binary file I/O from disk.
66112  */
66113  // SgQualifiedNameType( SgQualifiedNameTypeStorageClass& source );
66114 
66115 
66116 
66117 
66118 
66119  // JH (10/24/2005): methods added to support the ast file IO
66120  private:
66121 
66122  /* name AST Memory Allocation Support Functions
66123  \brief Memory allocations support....
66124 
66125  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
66126  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
66127  and support the AST File I/O Mechanism.
66128  */
66129  /* */
66130 
66131  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
66132  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
66133  that I use the same type everywhere, if any changes are made. THe second one declares the type
66134  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
66135  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
66136  a correspinding one in the AST_FILE_IO class!
66137  */
66138  // DQ (9/2/2015): This typedef is no longer used, we can't define the
66139  // comment here (changed to be a C style comment and not be a doxygen comment).
66140  /* \brief Typedef used for low level memory access.
66141  */
66142  // typedef unsigned char* TestType;
66143 
66144  // DQ (9/2/2015): This typedef is no longer used, we can't define the
66145  // comment here (changed to be a C style comment and not be a doxygen comment).
66146  /* \brief Typedef used to hold memory addresses as values.
66147  */
66148  // typedef unsigned long AddressType;
66149 
66150 
66151 
66152  // necessary, to have direct access to the p_freepointer and the private methods !
66154  friend class AST_FILE_IO;
66155 
66157  friend class SgQualifiedNameTypeStorageClass;
66158 
66160  friend class AstSpecificDataManagingClass;
66161 
66163  friend class AstSpecificDataManagingClassStorageClass;
66164 
66165  public:
66167  SgQualifiedNameType( const SgQualifiedNameTypeStorageClass& source );
66168 
66169  // private: // JJW hack
66170  /*
66171  name AST Memory Allocation Support Variables
66172  Memory allocations support variables
66173 
66174  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
66175  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
66176  and support the AST File I/O Mechanism.
66177  */
66178  /* */
66179 
66180  public:
66181 
66182  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
66183  // to current node (so that it will work cleanly with build functions to specify patterns).
66184  // virtual SgNode* addRegExpAttribute();
66191 
66192 // *** COMMON CODE SECTION ENDS HERE ***
66193 
66194 
66195 // End of memberFunctionString
66196 // Start of memberFunctionString
66197 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
66198 
66199  // the generated cast function
66200  // friend ROSE_DLL_API SgQualifiedNameType* isSgQualifiedNameType ( SgNode* s );
66201 
66202  typedef SgType base_node_type;
66203 
66204 
66205 // End of memberFunctionString
66206 // Start of memberFunctionString
66207 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
66208 
66209  // SgName get_mangled ( SgUnparse_Info & info );
66210 
66212  // SgName get_mangled ( SgUnparse_Info & info );
66213  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
66214  virtual SgName get_mangled (void) const override;
66215 
66216 
66217 
66218 // End of memberFunctionString
66219 
66220  public:
66221  SgType* get_base_type() const;
66222  void set_base_type(SgType* base_type);
66223 
66224 
66225 
66226  public:
66227  virtual ~SgQualifiedNameType();
66228 
66229 
66230  public:
66231  SgQualifiedNameType(SgType* base_type = NULL);
66232 
66233  protected:
66234 // Start of memberFunctionString
66235 SgType* p_base_type;
66236 
66237 // End of memberFunctionString
66238 // Start of memberFunctionString
66239 SgQualifiedNamePtrList p_qualifiedNameList;
66240 
66241 // End of memberFunctionString
66242 
66243 
66244 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
66245 
66246 
66247  };
66248 #endif
66249 
66250 // postdeclarations for SgQualifiedNameType
66251 
66252 /* #line 66253 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
66253 
66254 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
66255 
66256 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
66257 
66258 
66259 /* #line 66260 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
66260 
66261 
66262 
66263 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
66264 
66265 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
66266 // This code is automatically generated for each
66267 // terminal and non-terminal within the defined
66268 // grammar. There is a simple way to change the
66269 // code to fix bugs etc. See the ROSE README file
66270 // for directions.
66271 
66272 // tps: (02/22/2010): Adding DLL export requirements
66273 #include "rosedll.h"
66274 
66275 // predeclarations for SgTypeComplex
66276 
66277 /* #line 66278 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
66278 
66279 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
66280 
66281 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
66282 
66283 #if 1
66284 // Class Definition for SgTypeComplex
66285 class ROSE_DLL_API SgTypeComplex : public SgType
66286  {
66287  public:
66288 
66289 
66290 /* #line 66291 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
66291 
66292  virtual SgNode* copy ( SgCopyHelp& help) const override;
66293 // Start of memberFunctionString
66294 /* #line 907 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
66295 
66297  // static SgTypeComplex* createType(SgType* base_type);
66298  static SgTypeComplex* createType(SgType* base_type, SgExpression* optional_fortran_type_kind = NULL);
66299  // SKW (3/1/2011): Added these explicit declarations since we no longer build them automatically
66300  virtual SgExpression* get_type_kind () const override;
66301  virtual void set_type_kind ( SgExpression* type_kind ) override;
66302 
66303 
66304 // End of memberFunctionString
66305 // Start of memberFunctionString
66306 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
66307 
66308 // *** COMMON CODE SECTION BEGINS HERE ***
66309 
66310  public:
66311 
66312  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
66313  // and not required which is required to match the other aspects of the copy mechanism code generation.
66314  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
66315  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
66316  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
66317  // virtual SgNode* copy ( const SgCopyHelp & help) const;
66318 
66320  virtual std::string class_name() const override;
66321 
66323  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
66324 
66326  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
66327  // static const VariantT static_variant = V_SgTypeComplex;
66328  enum { static_variant = V_SgTypeComplex };
66329 
66330  /* the generated cast function */
66332  ROSE_DLL_API friend SgTypeComplex* isSgTypeComplex( SgNode * s );
66333 
66335  ROSE_DLL_API friend const SgTypeComplex* isSgTypeComplex( const SgNode * s );
66336 
66337  // ******************************************
66338  // * Memory Pool / New / Delete
66339  // ******************************************
66340 
66341  public:
66343  static const unsigned pool_size; //
66345  static std::vector<unsigned char *> pools; //
66347  static SgTypeComplex * next_node; //
66348 
66350  static unsigned long initializeStorageClassArray(SgTypeComplexStorageClass *); //
66351 
66353  static void clearMemoryPool(); //
66354  static void deleteMemoryPool(); //
66355 
66357  static void extendMemoryPoolForFileIO(); //
66358 
66360  static SgTypeComplex * getPointerFromGlobalIndex(unsigned long); //
66362  static SgTypeComplex * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
66363 
66365  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
66367  static void resetValidFreepointers(); //
66369  static unsigned long getNumberOfLastValidPointer(); //
66370 
66371 
66372 #if defined(INLINE_FUNCTIONS)
66373 
66374  inline void *operator new (size_t size);
66375 #else
66376 
66377  void *operator new (size_t size);
66378 #endif
66379 
66380  void operator delete (void* pointer, size_t size);
66381 
66382  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
66383  void operator delete (void* pointer)
66384  {
66385  // This is the generated delete operator...
66386  SgTypeComplex::operator delete (pointer,sizeof(SgTypeComplex));
66387  }
66388 
66390  static size_t numberOfNodes();
66391 
66393  static size_t memoryUsage();
66394 
66395  // End of scope which started in IR nodes specific code
66396  /* */
66397 
66398  /* name Internal Functions
66399  \brief Internal functions ... incomplete-documentation
66400 
66401  These functions have been made public as part of the design, but they are suggested for internal use
66402  or by particularly knowledgeable users for specialized tools or applications.
66403 
66404  \internal We could not make these private because they are required by user for special purposes. And
66405  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
66406 
66407  */
66408 
66409  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
66410  // overridden in every class by *generated* implementation
66412  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
66413  // MS: 06/28/02 container of names of variables or container indices
66414  // used used in the traversal to access AST successor nodes
66415  // overridden in every class by *generated* implementation
66418  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
66419 
66420  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
66421  // than all the vector copies. The implementation for these functions is generated for each class.
66423  virtual size_t get_numberOfTraversalSuccessors() override;
66425  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
66427  virtual size_t get_childIndex(SgNode *child) override;
66428 
66429 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
66430  // MS: 08/16/2002 method for generating RTI information
66432  virtual RTIReturnType roseRTI() override;
66433 #endif
66434  /* */
66435 
66436 
66437 
66438  /* name Deprecated Functions
66439  \brief Deprecated functions ... incomplete-documentation
66440 
66441  These functions have been deprecated from use.
66442  */
66443  /* */
66444 
66446  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
66447 
66448  // JJW (10/16/2008): Changed to a single function in Node.code, and put
66449  // getVariant() in #if 0 block to prevent confusing Doxygen
66450 #if 0
66451 
66452  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
66454  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
66455 #endif
66456  /* */
66457 
66458 
66459 
66460 
66461  public:
66462  /* name Traversal Support Functions
66463  \brief Traversal support functions ... incomplete-documentation
66464 
66465  These functions have been made public as part of the design, but they are suggested for internal use
66466  or by particularly knowledgable users for specialized tools or applications.
66467  */
66468  /* */
66469 
66470  // DQ (11/26/2005): Support for visitor pattern mechanims
66471  // (inferior to ROSE traversal mechanism, experimental).
66475 
66476  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
66478  virtual void accept (ROSE_VisitorPattern & visitor) override;
66479 
66480  // DQ (12/26/2005): Support for traversal based on the memory pool
66483  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
66484 
66488 
66489  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
66490  // This traversal helps support internal tools that call static member functions.
66491  // note: this function operates on the memory pools.
66494  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
66495  /* */
66496 
66497 
66498  public:
66499  /* name Memory Allocation Functions
66500  \brief Memory allocations functions ... incomplete-documentation
66501 
66502  These functions have been made public as part of the design, but they are suggested for internal use
66503  or by particularly knowledgable users for specialized tools or applications.
66504  */
66505  /* */
66506 
66517  virtual bool isInMemoryPool() override;
66518 
66529  virtual void checkDataMemberPointersIfInMemoryPool() override;
66530 
66531  // DQ (4/30/2006): Modified to be a const function.
66546  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
66547 
66557  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
66558 
66570  virtual long getChildIndex( SgNode* childNode ) const override;
66571 
66572  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
66573  // comment here (changed to be a C style comment and not be a doxygen comment).
66574  /* \brief Constructor for use by AST File I/O Mechanism
66575 
66576  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
66577  which obtained via fast binary file I/O from disk.
66578  */
66579  // SgTypeComplex( SgTypeComplexStorageClass& source );
66580 
66581 
66582 
66583 
66584 
66585  // JH (10/24/2005): methods added to support the ast file IO
66586  private:
66587 
66588  /* name AST Memory Allocation Support Functions
66589  \brief Memory allocations support....
66590 
66591  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
66592  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
66593  and support the AST File I/O Mechanism.
66594  */
66595  /* */
66596 
66597  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
66598  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
66599  that I use the same type everywhere, if any changes are made. THe second one declares the type
66600  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
66601  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
66602  a correspinding one in the AST_FILE_IO class!
66603  */
66604  // DQ (9/2/2015): This typedef is no longer used, we can't define the
66605  // comment here (changed to be a C style comment and not be a doxygen comment).
66606  /* \brief Typedef used for low level memory access.
66607  */
66608  // typedef unsigned char* TestType;
66609 
66610  // DQ (9/2/2015): This typedef is no longer used, we can't define the
66611  // comment here (changed to be a C style comment and not be a doxygen comment).
66612  /* \brief Typedef used to hold memory addresses as values.
66613  */
66614  // typedef unsigned long AddressType;
66615 
66616 
66617 
66618  // necessary, to have direct access to the p_freepointer and the private methods !
66620  friend class AST_FILE_IO;
66621 
66623  friend class SgTypeComplexStorageClass;
66624 
66626  friend class AstSpecificDataManagingClass;
66627 
66629  friend class AstSpecificDataManagingClassStorageClass;
66630 
66631  public:
66633  SgTypeComplex( const SgTypeComplexStorageClass& source );
66634 
66635  // private: // JJW hack
66636  /*
66637  name AST Memory Allocation Support Variables
66638  Memory allocations support variables
66639 
66640  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
66641  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
66642  and support the AST File I/O Mechanism.
66643  */
66644  /* */
66645 
66646  public:
66647 
66648  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
66649  // to current node (so that it will work cleanly with build functions to specify patterns).
66650  // virtual SgNode* addRegExpAttribute();
66657 
66658 // *** COMMON CODE SECTION ENDS HERE ***
66659 
66660 
66661 // End of memberFunctionString
66662 // Start of memberFunctionString
66663 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
66664 
66665  // the generated cast function
66666  // friend ROSE_DLL_API SgTypeComplex* isSgTypeComplex ( SgNode* s );
66667 
66668  typedef SgType base_node_type;
66669 
66670 
66671 // End of memberFunctionString
66672 // Start of memberFunctionString
66673 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
66674 
66675  // SgName get_mangled ( SgUnparse_Info & info );
66676 
66678  // SgName get_mangled ( SgUnparse_Info & info );
66679  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
66680  virtual SgName get_mangled (void) const override;
66681 
66682 
66683 
66684 // End of memberFunctionString
66685 
66686  public:
66687  SgType* get_base_type() const;
66688  void set_base_type(SgType* base_type);
66689 
66690 
66691  public:
66692  virtual ~SgTypeComplex();
66693 
66694 
66695  public:
66696  SgTypeComplex(SgType* base_type = NULL);
66697 
66698  protected:
66699 // Start of memberFunctionString
66700 SgType* p_base_type;
66701 
66702 // End of memberFunctionString
66703 
66704 
66705 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
66706 
66707 
66708  };
66709 #endif
66710 
66711 // postdeclarations for SgTypeComplex
66712 
66713 /* #line 66714 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
66714 
66715 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
66716 
66717 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
66718 
66719 
66720 /* #line 66721 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
66721 
66722 
66723 
66724 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
66725 
66726 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
66727 // This code is automatically generated for each
66728 // terminal and non-terminal within the defined
66729 // grammar. There is a simple way to change the
66730 // code to fix bugs etc. See the ROSE README file
66731 // for directions.
66732 
66733 // tps: (02/22/2010): Adding DLL export requirements
66734 #include "rosedll.h"
66735 
66736 // predeclarations for SgTypeImaginary
66737 
66738 /* #line 66739 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
66739 
66740 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
66741 
66742 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
66743 
66744 #if 1
66745 // Class Definition for SgTypeImaginary
66746 class ROSE_DLL_API SgTypeImaginary : public SgType
66747  {
66748  public:
66749 
66750 
66751 /* #line 66752 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
66752 
66753  virtual SgNode* copy ( SgCopyHelp& help) const override;
66754 // Start of memberFunctionString
66755 /* #line 907 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
66756 
66758  // static SgTypeImaginary* createType(SgType* base_type);
66759  static SgTypeImaginary* createType(SgType* base_type, SgExpression* optional_fortran_type_kind = NULL);
66760  // SKW (3/1/2011): Added these explicit declarations since we no longer build them automatically
66761  virtual SgExpression* get_type_kind () const override;
66762  virtual void set_type_kind ( SgExpression* type_kind ) override;
66763 
66764 
66765 // End of memberFunctionString
66766 // Start of memberFunctionString
66767 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
66768 
66769 // *** COMMON CODE SECTION BEGINS HERE ***
66770 
66771  public:
66772 
66773  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
66774  // and not required which is required to match the other aspects of the copy mechanism code generation.
66775  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
66776  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
66777  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
66778  // virtual SgNode* copy ( const SgCopyHelp & help) const;
66779 
66781  virtual std::string class_name() const override;
66782 
66784  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
66785 
66787  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
66788  // static const VariantT static_variant = V_SgTypeImaginary;
66789  enum { static_variant = V_SgTypeImaginary };
66790 
66791  /* the generated cast function */
66793  ROSE_DLL_API friend SgTypeImaginary* isSgTypeImaginary( SgNode * s );
66794 
66796  ROSE_DLL_API friend const SgTypeImaginary* isSgTypeImaginary( const SgNode * s );
66797 
66798  // ******************************************
66799  // * Memory Pool / New / Delete
66800  // ******************************************
66801 
66802  public:
66804  static const unsigned pool_size; //
66806  static std::vector<unsigned char *> pools; //
66808  static SgTypeImaginary * next_node; //
66809 
66811  static unsigned long initializeStorageClassArray(SgTypeImaginaryStorageClass *); //
66812 
66814  static void clearMemoryPool(); //
66815  static void deleteMemoryPool(); //
66816 
66818  static void extendMemoryPoolForFileIO(); //
66819 
66821  static SgTypeImaginary * getPointerFromGlobalIndex(unsigned long); //
66823  static SgTypeImaginary * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
66824 
66826  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
66828  static void resetValidFreepointers(); //
66830  static unsigned long getNumberOfLastValidPointer(); //
66831 
66832 
66833 #if defined(INLINE_FUNCTIONS)
66834 
66835  inline void *operator new (size_t size);
66836 #else
66837 
66838  void *operator new (size_t size);
66839 #endif
66840 
66841  void operator delete (void* pointer, size_t size);
66842 
66843  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
66844  void operator delete (void* pointer)
66845  {
66846  // This is the generated delete operator...
66847  SgTypeImaginary::operator delete (pointer,sizeof(SgTypeImaginary));
66848  }
66849 
66851  static size_t numberOfNodes();
66852 
66854  static size_t memoryUsage();
66855 
66856  // End of scope which started in IR nodes specific code
66857  /* */
66858 
66859  /* name Internal Functions
66860  \brief Internal functions ... incomplete-documentation
66861 
66862  These functions have been made public as part of the design, but they are suggested for internal use
66863  or by particularly knowledgeable users for specialized tools or applications.
66864 
66865  \internal We could not make these private because they are required by user for special purposes. And
66866  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
66867 
66868  */
66869 
66870  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
66871  // overridden in every class by *generated* implementation
66873  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
66874  // MS: 06/28/02 container of names of variables or container indices
66875  // used used in the traversal to access AST successor nodes
66876  // overridden in every class by *generated* implementation
66879  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
66880 
66881  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
66882  // than all the vector copies. The implementation for these functions is generated for each class.
66884  virtual size_t get_numberOfTraversalSuccessors() override;
66886  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
66888  virtual size_t get_childIndex(SgNode *child) override;
66889 
66890 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
66891  // MS: 08/16/2002 method for generating RTI information
66893  virtual RTIReturnType roseRTI() override;
66894 #endif
66895  /* */
66896 
66897 
66898 
66899  /* name Deprecated Functions
66900  \brief Deprecated functions ... incomplete-documentation
66901 
66902  These functions have been deprecated from use.
66903  */
66904  /* */
66905 
66907  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
66908 
66909  // JJW (10/16/2008): Changed to a single function in Node.code, and put
66910  // getVariant() in #if 0 block to prevent confusing Doxygen
66911 #if 0
66912 
66913  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
66915  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
66916 #endif
66917  /* */
66918 
66919 
66920 
66921 
66922  public:
66923  /* name Traversal Support Functions
66924  \brief Traversal support functions ... incomplete-documentation
66925 
66926  These functions have been made public as part of the design, but they are suggested for internal use
66927  or by particularly knowledgable users for specialized tools or applications.
66928  */
66929  /* */
66930 
66931  // DQ (11/26/2005): Support for visitor pattern mechanims
66932  // (inferior to ROSE traversal mechanism, experimental).
66936 
66937  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
66939  virtual void accept (ROSE_VisitorPattern & visitor) override;
66940 
66941  // DQ (12/26/2005): Support for traversal based on the memory pool
66944  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
66945 
66949 
66950  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
66951  // This traversal helps support internal tools that call static member functions.
66952  // note: this function operates on the memory pools.
66955  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
66956  /* */
66957 
66958 
66959  public:
66960  /* name Memory Allocation Functions
66961  \brief Memory allocations functions ... incomplete-documentation
66962 
66963  These functions have been made public as part of the design, but they are suggested for internal use
66964  or by particularly knowledgable users for specialized tools or applications.
66965  */
66966  /* */
66967 
66978  virtual bool isInMemoryPool() override;
66979 
66990  virtual void checkDataMemberPointersIfInMemoryPool() override;
66991 
66992  // DQ (4/30/2006): Modified to be a const function.
67007  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
67008 
67018  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
67019 
67031  virtual long getChildIndex( SgNode* childNode ) const override;
67032 
67033  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
67034  // comment here (changed to be a C style comment and not be a doxygen comment).
67035  /* \brief Constructor for use by AST File I/O Mechanism
67036 
67037  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
67038  which obtained via fast binary file I/O from disk.
67039  */
67040  // SgTypeImaginary( SgTypeImaginaryStorageClass& source );
67041 
67042 
67043 
67044 
67045 
67046  // JH (10/24/2005): methods added to support the ast file IO
67047  private:
67048 
67049  /* name AST Memory Allocation Support Functions
67050  \brief Memory allocations support....
67051 
67052  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
67053  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
67054  and support the AST File I/O Mechanism.
67055  */
67056  /* */
67057 
67058  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
67059  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
67060  that I use the same type everywhere, if any changes are made. THe second one declares the type
67061  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
67062  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
67063  a correspinding one in the AST_FILE_IO class!
67064  */
67065  // DQ (9/2/2015): This typedef is no longer used, we can't define the
67066  // comment here (changed to be a C style comment and not be a doxygen comment).
67067  /* \brief Typedef used for low level memory access.
67068  */
67069  // typedef unsigned char* TestType;
67070 
67071  // DQ (9/2/2015): This typedef is no longer used, we can't define the
67072  // comment here (changed to be a C style comment and not be a doxygen comment).
67073  /* \brief Typedef used to hold memory addresses as values.
67074  */
67075  // typedef unsigned long AddressType;
67076 
67077 
67078 
67079  // necessary, to have direct access to the p_freepointer and the private methods !
67081  friend class AST_FILE_IO;
67082 
67084  friend class SgTypeImaginaryStorageClass;
67085 
67087  friend class AstSpecificDataManagingClass;
67088 
67090  friend class AstSpecificDataManagingClassStorageClass;
67091 
67092  public:
67094  SgTypeImaginary( const SgTypeImaginaryStorageClass& source );
67095 
67096  // private: // JJW hack
67097  /*
67098  name AST Memory Allocation Support Variables
67099  Memory allocations support variables
67100 
67101  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
67102  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
67103  and support the AST File I/O Mechanism.
67104  */
67105  /* */
67106 
67107  public:
67108 
67109  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
67110  // to current node (so that it will work cleanly with build functions to specify patterns).
67111  // virtual SgNode* addRegExpAttribute();
67118 
67119 // *** COMMON CODE SECTION ENDS HERE ***
67120 
67121 
67122 // End of memberFunctionString
67123 // Start of memberFunctionString
67124 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
67125 
67126  // the generated cast function
67127  // friend ROSE_DLL_API SgTypeImaginary* isSgTypeImaginary ( SgNode* s );
67128 
67129  typedef SgType base_node_type;
67130 
67131 
67132 // End of memberFunctionString
67133 // Start of memberFunctionString
67134 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
67135 
67136  // SgName get_mangled ( SgUnparse_Info & info );
67137 
67139  // SgName get_mangled ( SgUnparse_Info & info );
67140  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
67141  virtual SgName get_mangled (void) const override;
67142 
67143 
67144 
67145 // End of memberFunctionString
67146 
67147  public:
67148  SgType* get_base_type() const;
67149  void set_base_type(SgType* base_type);
67150 
67151 
67152  public:
67153  virtual ~SgTypeImaginary();
67154 
67155 
67156  public:
67157  SgTypeImaginary(SgType* base_type = NULL);
67158 
67159  protected:
67160 // Start of memberFunctionString
67161 SgType* p_base_type;
67162 
67163 // End of memberFunctionString
67164 
67165 
67166 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
67167 
67168 
67169  };
67170 #endif
67171 
67172 // postdeclarations for SgTypeImaginary
67173 
67174 /* #line 67175 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
67175 
67176 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
67177 
67178 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
67179 
67180 
67181 /* #line 67182 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
67182 
67183 
67184 
67185 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
67186 
67187 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
67188 // This code is automatically generated for each
67189 // terminal and non-terminal within the defined
67190 // grammar. There is a simple way to change the
67191 // code to fix bugs etc. See the ROSE README file
67192 // for directions.
67193 
67194 // tps: (02/22/2010): Adding DLL export requirements
67195 #include "rosedll.h"
67196 
67197 // predeclarations for SgTypeDefault
67198 
67199 /* #line 67200 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
67200 
67201 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
67202 
67203 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
67204 
67205 #if 1
67206 // Class Definition for SgTypeDefault
67207 class ROSE_DLL_API SgTypeDefault : public SgType
67208  {
67209  public:
67210 
67211 
67212 /* #line 67213 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
67213 
67214  virtual SgNode* copy ( SgCopyHelp& help) const override;
67215 // Start of memberFunctionString
67216 /* #line 954 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
67217 
67218 
67219  // Generated a mangled name that accounts for the stored name internally.
67220  // SgName get_mangled (void) const;
67221 
67223  static SgTypeDefault* createType ( const SgName & nameOfType );
67224 
67225 
67226 
67227 // End of memberFunctionString
67228 // Start of memberFunctionString
67229 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
67230 
67231 // *** COMMON CODE SECTION BEGINS HERE ***
67232 
67233  public:
67234 
67235  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
67236  // and not required which is required to match the other aspects of the copy mechanism code generation.
67237  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
67238  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
67239  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
67240  // virtual SgNode* copy ( const SgCopyHelp & help) const;
67241 
67243  virtual std::string class_name() const override;
67244 
67246  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
67247 
67249  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
67250  // static const VariantT static_variant = V_SgTypeDefault;
67251  enum { static_variant = V_SgTypeDefault };
67252 
67253  /* the generated cast function */
67255  ROSE_DLL_API friend SgTypeDefault* isSgTypeDefault( SgNode * s );
67256 
67258  ROSE_DLL_API friend const SgTypeDefault* isSgTypeDefault( const SgNode * s );
67259 
67260  // ******************************************
67261  // * Memory Pool / New / Delete
67262  // ******************************************
67263 
67264  public:
67266  static const unsigned pool_size; //
67268  static std::vector<unsigned char *> pools; //
67270  static SgTypeDefault * next_node; //
67271 
67273  static unsigned long initializeStorageClassArray(SgTypeDefaultStorageClass *); //
67274 
67276  static void clearMemoryPool(); //
67277  static void deleteMemoryPool(); //
67278 
67280  static void extendMemoryPoolForFileIO(); //
67281 
67283  static SgTypeDefault * getPointerFromGlobalIndex(unsigned long); //
67285  static SgTypeDefault * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
67286 
67288  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
67290  static void resetValidFreepointers(); //
67292  static unsigned long getNumberOfLastValidPointer(); //
67293 
67294 
67295 #if defined(INLINE_FUNCTIONS)
67296 
67297  inline void *operator new (size_t size);
67298 #else
67299 
67300  void *operator new (size_t size);
67301 #endif
67302 
67303  void operator delete (void* pointer, size_t size);
67304 
67305  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
67306  void operator delete (void* pointer)
67307  {
67308  // This is the generated delete operator...
67309  SgTypeDefault::operator delete (pointer,sizeof(SgTypeDefault));
67310  }
67311 
67313  static size_t numberOfNodes();
67314 
67316  static size_t memoryUsage();
67317 
67318  // End of scope which started in IR nodes specific code
67319  /* */
67320 
67321  /* name Internal Functions
67322  \brief Internal functions ... incomplete-documentation
67323 
67324  These functions have been made public as part of the design, but they are suggested for internal use
67325  or by particularly knowledgeable users for specialized tools or applications.
67326 
67327  \internal We could not make these private because they are required by user for special purposes. And
67328  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
67329 
67330  */
67331 
67332  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
67333  // overridden in every class by *generated* implementation
67335  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
67336  // MS: 06/28/02 container of names of variables or container indices
67337  // used used in the traversal to access AST successor nodes
67338  // overridden in every class by *generated* implementation
67341  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
67342 
67343  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
67344  // than all the vector copies. The implementation for these functions is generated for each class.
67346  virtual size_t get_numberOfTraversalSuccessors() override;
67348  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
67350  virtual size_t get_childIndex(SgNode *child) override;
67351 
67352 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
67353  // MS: 08/16/2002 method for generating RTI information
67355  virtual RTIReturnType roseRTI() override;
67356 #endif
67357  /* */
67358 
67359 
67360 
67361  /* name Deprecated Functions
67362  \brief Deprecated functions ... incomplete-documentation
67363 
67364  These functions have been deprecated from use.
67365  */
67366  /* */
67367 
67369  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
67370 
67371  // JJW (10/16/2008): Changed to a single function in Node.code, and put
67372  // getVariant() in #if 0 block to prevent confusing Doxygen
67373 #if 0
67374 
67375  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
67377  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
67378 #endif
67379  /* */
67380 
67381 
67382 
67383 
67384  public:
67385  /* name Traversal Support Functions
67386  \brief Traversal support functions ... incomplete-documentation
67387 
67388  These functions have been made public as part of the design, but they are suggested for internal use
67389  or by particularly knowledgable users for specialized tools or applications.
67390  */
67391  /* */
67392 
67393  // DQ (11/26/2005): Support for visitor pattern mechanims
67394  // (inferior to ROSE traversal mechanism, experimental).
67398 
67399  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
67401  virtual void accept (ROSE_VisitorPattern & visitor) override;
67402 
67403  // DQ (12/26/2005): Support for traversal based on the memory pool
67406  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
67407 
67411 
67412  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
67413  // This traversal helps support internal tools that call static member functions.
67414  // note: this function operates on the memory pools.
67417  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
67418  /* */
67419 
67420 
67421  public:
67422  /* name Memory Allocation Functions
67423  \brief Memory allocations functions ... incomplete-documentation
67424 
67425  These functions have been made public as part of the design, but they are suggested for internal use
67426  or by particularly knowledgable users for specialized tools or applications.
67427  */
67428  /* */
67429 
67440  virtual bool isInMemoryPool() override;
67441 
67452  virtual void checkDataMemberPointersIfInMemoryPool() override;
67453 
67454  // DQ (4/30/2006): Modified to be a const function.
67469  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
67470 
67480  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
67481 
67493  virtual long getChildIndex( SgNode* childNode ) const override;
67494 
67495  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
67496  // comment here (changed to be a C style comment and not be a doxygen comment).
67497  /* \brief Constructor for use by AST File I/O Mechanism
67498 
67499  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
67500  which obtained via fast binary file I/O from disk.
67501  */
67502  // SgTypeDefault( SgTypeDefaultStorageClass& source );
67503 
67504 
67505 
67506 
67507 
67508  // JH (10/24/2005): methods added to support the ast file IO
67509  private:
67510 
67511  /* name AST Memory Allocation Support Functions
67512  \brief Memory allocations support....
67513 
67514  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
67515  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
67516  and support the AST File I/O Mechanism.
67517  */
67518  /* */
67519 
67520  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
67521  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
67522  that I use the same type everywhere, if any changes are made. THe second one declares the type
67523  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
67524  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
67525  a correspinding one in the AST_FILE_IO class!
67526  */
67527  // DQ (9/2/2015): This typedef is no longer used, we can't define the
67528  // comment here (changed to be a C style comment and not be a doxygen comment).
67529  /* \brief Typedef used for low level memory access.
67530  */
67531  // typedef unsigned char* TestType;
67532 
67533  // DQ (9/2/2015): This typedef is no longer used, we can't define the
67534  // comment here (changed to be a C style comment and not be a doxygen comment).
67535  /* \brief Typedef used to hold memory addresses as values.
67536  */
67537  // typedef unsigned long AddressType;
67538 
67539 
67540 
67541  // necessary, to have direct access to the p_freepointer and the private methods !
67543  friend class AST_FILE_IO;
67544 
67546  friend class SgTypeDefaultStorageClass;
67547 
67549  friend class AstSpecificDataManagingClass;
67550 
67552  friend class AstSpecificDataManagingClassStorageClass;
67553 
67554  public:
67556  SgTypeDefault( const SgTypeDefaultStorageClass& source );
67557 
67558  // private: // JJW hack
67559  /*
67560  name AST Memory Allocation Support Variables
67561  Memory allocations support variables
67562 
67563  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
67564  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
67565  and support the AST File I/O Mechanism.
67566  */
67567  /* */
67568 
67569  public:
67570 
67571  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
67572  // to current node (so that it will work cleanly with build functions to specify patterns).
67573  // virtual SgNode* addRegExpAttribute();
67580 
67581 // *** COMMON CODE SECTION ENDS HERE ***
67582 
67583 
67584 // End of memberFunctionString
67585 // Start of memberFunctionString
67586 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
67587 
67588  // the generated cast function
67589  // friend ROSE_DLL_API SgTypeDefault* isSgTypeDefault ( SgNode* s );
67590 
67591  typedef SgType base_node_type;
67592 
67593 
67594 // End of memberFunctionString
67595 // Start of memberFunctionString
67596 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
67597 
67598  // SgName get_mangled ( SgUnparse_Info & info );
67599 
67601  // SgName get_mangled ( SgUnparse_Info & info );
67602  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
67603  virtual SgName get_mangled (void) const override;
67604 
67605 
67606 
67607 // End of memberFunctionString
67608 // Start of memberFunctionString
67609 /* #line 267 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
67610 
67612  // DQ (1/31/2006): Modified to build all types in the memory pools
67613  // static SgTypeDefault builtin_type;
67614  // static SgTypeDefault* builtin_type;
67615 
67616  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
67617  // since we don't store the type explicitly anymore except in a few IR nodes which have there
67618  // own data member and associated access function.
67619  // static SgTypeDefault* get_builtin_type();
67620 
67621  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
67622  // since we don't store the type explicitly anymore except in a few IR nodes which have there
67623  // own data member and associated access function.
67624  // static void set_builtin_type(SgTypeDefault* builtin_type);
67625 
67627  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
67628  // static SgTypeDefault* createType(void);
67629  static SgTypeDefault* createType(SgExpression* optional_fortran_type_kind = NULL);
67630 
67631 
67632 // End of memberFunctionString
67633 
67634 
67635  public:
67636  SgName get_name() const /* (getDataAccessFunctionPrototypeString) */;
67637  void set_name(SgName name) /* (getDataAccessFunctionPrototypeString) */;
67638 
67639 
67640  public:
67641  virtual ~SgTypeDefault();
67642 
67643 
67644  public:
67645  SgTypeDefault();
67646 
67647  protected:
67648 // Start of memberFunctionString
67649 static SgTypeDefault* p_builtin_type;
67650 
67651 // End of memberFunctionString
67652 // Start of memberFunctionString
67653 SgName p_name;
67654 
67655 // End of memberFunctionString
67656 
67657 
67658 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
67659 
67660 
67661  };
67662 #endif
67663 
67664 // postdeclarations for SgTypeDefault
67665 
67666 /* #line 67667 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
67667 
67668 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
67669 
67670 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
67671 
67672 
67673 /* #line 67674 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
67674 
67675 
67676 
67677 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
67678 
67679 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
67680 // This code is automatically generated for each
67681 // terminal and non-terminal within the defined
67682 // grammar. There is a simple way to change the
67683 // code to fix bugs etc. See the ROSE README file
67684 // for directions.
67685 
67686 // tps: (02/22/2010): Adding DLL export requirements
67687 #include "rosedll.h"
67688 
67689 // predeclarations for SgTypeCAFTeam
67690 
67691 /* #line 67692 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
67692 
67693 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
67694 
67695 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
67696 
67697 #if 1
67698 // Class Definition for SgTypeCAFTeam
67699 class ROSE_DLL_API SgTypeCAFTeam : public SgType
67700  {
67701  public:
67702 
67703 
67704 /* #line 67705 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
67705 
67706  virtual SgNode* copy ( SgCopyHelp& help) const override;
67707 // Start of memberFunctionString
67708 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
67709 
67710 // *** COMMON CODE SECTION BEGINS HERE ***
67711 
67712  public:
67713 
67714  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
67715  // and not required which is required to match the other aspects of the copy mechanism code generation.
67716  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
67717  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
67718  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
67719  // virtual SgNode* copy ( const SgCopyHelp & help) const;
67720 
67722  virtual std::string class_name() const override;
67723 
67725  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
67726 
67728  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
67729  // static const VariantT static_variant = V_SgTypeCAFTeam;
67730  enum { static_variant = V_SgTypeCAFTeam };
67731 
67732  /* the generated cast function */
67734  ROSE_DLL_API friend SgTypeCAFTeam* isSgTypeCAFTeam( SgNode * s );
67735 
67737  ROSE_DLL_API friend const SgTypeCAFTeam* isSgTypeCAFTeam( const SgNode * s );
67738 
67739  // ******************************************
67740  // * Memory Pool / New / Delete
67741  // ******************************************
67742 
67743  public:
67745  static const unsigned pool_size; //
67747  static std::vector<unsigned char *> pools; //
67749  static SgTypeCAFTeam * next_node; //
67750 
67752  static unsigned long initializeStorageClassArray(SgTypeCAFTeamStorageClass *); //
67753 
67755  static void clearMemoryPool(); //
67756  static void deleteMemoryPool(); //
67757 
67759  static void extendMemoryPoolForFileIO(); //
67760 
67762  static SgTypeCAFTeam * getPointerFromGlobalIndex(unsigned long); //
67764  static SgTypeCAFTeam * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
67765 
67767  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
67769  static void resetValidFreepointers(); //
67771  static unsigned long getNumberOfLastValidPointer(); //
67772 
67773 
67774 #if defined(INLINE_FUNCTIONS)
67775 
67776  inline void *operator new (size_t size);
67777 #else
67778 
67779  void *operator new (size_t size);
67780 #endif
67781 
67782  void operator delete (void* pointer, size_t size);
67783 
67784  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
67785  void operator delete (void* pointer)
67786  {
67787  // This is the generated delete operator...
67788  SgTypeCAFTeam::operator delete (pointer,sizeof(SgTypeCAFTeam));
67789  }
67790 
67792  static size_t numberOfNodes();
67793 
67795  static size_t memoryUsage();
67796 
67797  // End of scope which started in IR nodes specific code
67798  /* */
67799 
67800  /* name Internal Functions
67801  \brief Internal functions ... incomplete-documentation
67802 
67803  These functions have been made public as part of the design, but they are suggested for internal use
67804  or by particularly knowledgeable users for specialized tools or applications.
67805 
67806  \internal We could not make these private because they are required by user for special purposes. And
67807  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
67808 
67809  */
67810 
67811  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
67812  // overridden in every class by *generated* implementation
67814  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
67815  // MS: 06/28/02 container of names of variables or container indices
67816  // used used in the traversal to access AST successor nodes
67817  // overridden in every class by *generated* implementation
67820  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
67821 
67822  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
67823  // than all the vector copies. The implementation for these functions is generated for each class.
67825  virtual size_t get_numberOfTraversalSuccessors() override;
67827  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
67829  virtual size_t get_childIndex(SgNode *child) override;
67830 
67831 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
67832  // MS: 08/16/2002 method for generating RTI information
67834  virtual RTIReturnType roseRTI() override;
67835 #endif
67836  /* */
67837 
67838 
67839 
67840  /* name Deprecated Functions
67841  \brief Deprecated functions ... incomplete-documentation
67842 
67843  These functions have been deprecated from use.
67844  */
67845  /* */
67846 
67848  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
67849 
67850  // JJW (10/16/2008): Changed to a single function in Node.code, and put
67851  // getVariant() in #if 0 block to prevent confusing Doxygen
67852 #if 0
67853 
67854  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
67856  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
67857 #endif
67858  /* */
67859 
67860 
67861 
67862 
67863  public:
67864  /* name Traversal Support Functions
67865  \brief Traversal support functions ... incomplete-documentation
67866 
67867  These functions have been made public as part of the design, but they are suggested for internal use
67868  or by particularly knowledgable users for specialized tools or applications.
67869  */
67870  /* */
67871 
67872  // DQ (11/26/2005): Support for visitor pattern mechanims
67873  // (inferior to ROSE traversal mechanism, experimental).
67877 
67878  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
67880  virtual void accept (ROSE_VisitorPattern & visitor) override;
67881 
67882  // DQ (12/26/2005): Support for traversal based on the memory pool
67885  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
67886 
67890 
67891  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
67892  // This traversal helps support internal tools that call static member functions.
67893  // note: this function operates on the memory pools.
67896  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
67897  /* */
67898 
67899 
67900  public:
67901  /* name Memory Allocation Functions
67902  \brief Memory allocations functions ... incomplete-documentation
67903 
67904  These functions have been made public as part of the design, but they are suggested for internal use
67905  or by particularly knowledgable users for specialized tools or applications.
67906  */
67907  /* */
67908 
67919  virtual bool isInMemoryPool() override;
67920 
67931  virtual void checkDataMemberPointersIfInMemoryPool() override;
67932 
67933  // DQ (4/30/2006): Modified to be a const function.
67948  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
67949 
67959  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
67960 
67972  virtual long getChildIndex( SgNode* childNode ) const override;
67973 
67974  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
67975  // comment here (changed to be a C style comment and not be a doxygen comment).
67976  /* \brief Constructor for use by AST File I/O Mechanism
67977 
67978  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
67979  which obtained via fast binary file I/O from disk.
67980  */
67981  // SgTypeCAFTeam( SgTypeCAFTeamStorageClass& source );
67982 
67983 
67984 
67985 
67986 
67987  // JH (10/24/2005): methods added to support the ast file IO
67988  private:
67989 
67990  /* name AST Memory Allocation Support Functions
67991  \brief Memory allocations support....
67992 
67993  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
67994  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
67995  and support the AST File I/O Mechanism.
67996  */
67997  /* */
67998 
67999  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
68000  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
68001  that I use the same type everywhere, if any changes are made. THe second one declares the type
68002  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
68003  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
68004  a correspinding one in the AST_FILE_IO class!
68005  */
68006  // DQ (9/2/2015): This typedef is no longer used, we can't define the
68007  // comment here (changed to be a C style comment and not be a doxygen comment).
68008  /* \brief Typedef used for low level memory access.
68009  */
68010  // typedef unsigned char* TestType;
68011 
68012  // DQ (9/2/2015): This typedef is no longer used, we can't define the
68013  // comment here (changed to be a C style comment and not be a doxygen comment).
68014  /* \brief Typedef used to hold memory addresses as values.
68015  */
68016  // typedef unsigned long AddressType;
68017 
68018 
68019 
68020  // necessary, to have direct access to the p_freepointer and the private methods !
68022  friend class AST_FILE_IO;
68023 
68025  friend class SgTypeCAFTeamStorageClass;
68026 
68028  friend class AstSpecificDataManagingClass;
68029 
68031  friend class AstSpecificDataManagingClassStorageClass;
68032 
68033  public:
68035  SgTypeCAFTeam( const SgTypeCAFTeamStorageClass& source );
68036 
68037  // private: // JJW hack
68038  /*
68039  name AST Memory Allocation Support Variables
68040  Memory allocations support variables
68041 
68042  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
68043  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
68044  and support the AST File I/O Mechanism.
68045  */
68046  /* */
68047 
68048  public:
68049 
68050  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
68051  // to current node (so that it will work cleanly with build functions to specify patterns).
68052  // virtual SgNode* addRegExpAttribute();
68059 
68060 // *** COMMON CODE SECTION ENDS HERE ***
68061 
68062 
68063 // End of memberFunctionString
68064 // Start of memberFunctionString
68065 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
68066 
68067  // the generated cast function
68068  // friend ROSE_DLL_API SgTypeCAFTeam* isSgTypeCAFTeam ( SgNode* s );
68069 
68070  typedef SgType base_node_type;
68071 
68072 
68073 // End of memberFunctionString
68074 // Start of memberFunctionString
68075 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
68076 
68077  // SgName get_mangled ( SgUnparse_Info & info );
68078 
68080  // SgName get_mangled ( SgUnparse_Info & info );
68081  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
68082  virtual SgName get_mangled (void) const override;
68083 
68084 
68085 
68086 // End of memberFunctionString
68087 // Start of memberFunctionString
68088 /* #line 267 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
68089 
68091  // DQ (1/31/2006): Modified to build all types in the memory pools
68092  // static SgTypeCAFTeam builtin_type;
68093  // static SgTypeCAFTeam* builtin_type;
68094 
68095  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
68096  // since we don't store the type explicitly anymore except in a few IR nodes which have there
68097  // own data member and associated access function.
68098  // static SgTypeCAFTeam* get_builtin_type();
68099 
68100  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
68101  // since we don't store the type explicitly anymore except in a few IR nodes which have there
68102  // own data member and associated access function.
68103  // static void set_builtin_type(SgTypeCAFTeam* builtin_type);
68104 
68106  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
68107  // static SgTypeCAFTeam* createType(void);
68108  static SgTypeCAFTeam* createType(SgExpression* optional_fortran_type_kind = NULL);
68109 
68110 
68111 // End of memberFunctionString
68112 
68113 
68114 
68115  public:
68116  virtual ~SgTypeCAFTeam();
68117 
68118 
68119  public:
68120  SgTypeCAFTeam();
68121 
68122  protected:
68123 // Start of memberFunctionString
68124 static SgTypeCAFTeam* p_builtin_type;
68125 
68126 // End of memberFunctionString
68127 
68128 
68129 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
68130 
68131 
68132  };
68133 #endif
68134 
68135 // postdeclarations for SgTypeCAFTeam
68136 
68137 /* #line 68138 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
68138 
68139 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
68140 
68141 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
68142 
68143 
68144 /* #line 68145 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
68145 
68146 
68147 
68148 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
68149 
68150 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
68151 // This code is automatically generated for each
68152 // terminal and non-terminal within the defined
68153 // grammar. There is a simple way to change the
68154 // code to fix bugs etc. See the ROSE README file
68155 // for directions.
68156 
68157 // tps: (02/22/2010): Adding DLL export requirements
68158 #include "rosedll.h"
68159 
68160 // predeclarations for SgTypeCrayPointer
68161 
68162 /* #line 68163 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
68163 
68164 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
68165 
68166 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
68167 
68168 #if 1
68169 // Class Definition for SgTypeCrayPointer
68170 class ROSE_DLL_API SgTypeCrayPointer : public SgType
68171  {
68172  public:
68173 
68174 
68175 /* #line 68176 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
68176 
68177  virtual SgNode* copy ( SgCopyHelp& help) const override;
68178 // Start of memberFunctionString
68179 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
68180 
68181 // *** COMMON CODE SECTION BEGINS HERE ***
68182 
68183  public:
68184 
68185  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
68186  // and not required which is required to match the other aspects of the copy mechanism code generation.
68187  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
68188  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
68189  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
68190  // virtual SgNode* copy ( const SgCopyHelp & help) const;
68191 
68193  virtual std::string class_name() const override;
68194 
68196  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
68197 
68199  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
68200  // static const VariantT static_variant = V_SgTypeCrayPointer;
68201  enum { static_variant = V_SgTypeCrayPointer };
68202 
68203  /* the generated cast function */
68205  ROSE_DLL_API friend SgTypeCrayPointer* isSgTypeCrayPointer( SgNode * s );
68206 
68208  ROSE_DLL_API friend const SgTypeCrayPointer* isSgTypeCrayPointer( const SgNode * s );
68209 
68210  // ******************************************
68211  // * Memory Pool / New / Delete
68212  // ******************************************
68213 
68214  public:
68216  static const unsigned pool_size; //
68218  static std::vector<unsigned char *> pools; //
68220  static SgTypeCrayPointer * next_node; //
68221 
68223  static unsigned long initializeStorageClassArray(SgTypeCrayPointerStorageClass *); //
68224 
68226  static void clearMemoryPool(); //
68227  static void deleteMemoryPool(); //
68228 
68230  static void extendMemoryPoolForFileIO(); //
68231 
68233  static SgTypeCrayPointer * getPointerFromGlobalIndex(unsigned long); //
68235  static SgTypeCrayPointer * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
68236 
68238  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
68240  static void resetValidFreepointers(); //
68242  static unsigned long getNumberOfLastValidPointer(); //
68243 
68244 
68245 #if defined(INLINE_FUNCTIONS)
68246 
68247  inline void *operator new (size_t size);
68248 #else
68249 
68250  void *operator new (size_t size);
68251 #endif
68252 
68253  void operator delete (void* pointer, size_t size);
68254 
68255  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
68256  void operator delete (void* pointer)
68257  {
68258  // This is the generated delete operator...
68259  SgTypeCrayPointer::operator delete (pointer,sizeof(SgTypeCrayPointer));
68260  }
68261 
68263  static size_t numberOfNodes();
68264 
68266  static size_t memoryUsage();
68267 
68268  // End of scope which started in IR nodes specific code
68269  /* */
68270 
68271  /* name Internal Functions
68272  \brief Internal functions ... incomplete-documentation
68273 
68274  These functions have been made public as part of the design, but they are suggested for internal use
68275  or by particularly knowledgeable users for specialized tools or applications.
68276 
68277  \internal We could not make these private because they are required by user for special purposes. And
68278  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
68279 
68280  */
68281 
68282  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
68283  // overridden in every class by *generated* implementation
68285  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
68286  // MS: 06/28/02 container of names of variables or container indices
68287  // used used in the traversal to access AST successor nodes
68288  // overridden in every class by *generated* implementation
68291  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
68292 
68293  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
68294  // than all the vector copies. The implementation for these functions is generated for each class.
68296  virtual size_t get_numberOfTraversalSuccessors() override;
68298  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
68300  virtual size_t get_childIndex(SgNode *child) override;
68301 
68302 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
68303  // MS: 08/16/2002 method for generating RTI information
68305  virtual RTIReturnType roseRTI() override;
68306 #endif
68307  /* */
68308 
68309 
68310 
68311  /* name Deprecated Functions
68312  \brief Deprecated functions ... incomplete-documentation
68313 
68314  These functions have been deprecated from use.
68315  */
68316  /* */
68317 
68319  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
68320 
68321  // JJW (10/16/2008): Changed to a single function in Node.code, and put
68322  // getVariant() in #if 0 block to prevent confusing Doxygen
68323 #if 0
68324 
68325  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
68327  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
68328 #endif
68329  /* */
68330 
68331 
68332 
68333 
68334  public:
68335  /* name Traversal Support Functions
68336  \brief Traversal support functions ... incomplete-documentation
68337 
68338  These functions have been made public as part of the design, but they are suggested for internal use
68339  or by particularly knowledgable users for specialized tools or applications.
68340  */
68341  /* */
68342 
68343  // DQ (11/26/2005): Support for visitor pattern mechanims
68344  // (inferior to ROSE traversal mechanism, experimental).
68348 
68349  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
68351  virtual void accept (ROSE_VisitorPattern & visitor) override;
68352 
68353  // DQ (12/26/2005): Support for traversal based on the memory pool
68356  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
68357 
68361 
68362  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
68363  // This traversal helps support internal tools that call static member functions.
68364  // note: this function operates on the memory pools.
68367  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
68368  /* */
68369 
68370 
68371  public:
68372  /* name Memory Allocation Functions
68373  \brief Memory allocations functions ... incomplete-documentation
68374 
68375  These functions have been made public as part of the design, but they are suggested for internal use
68376  or by particularly knowledgable users for specialized tools or applications.
68377  */
68378  /* */
68379 
68390  virtual bool isInMemoryPool() override;
68391 
68402  virtual void checkDataMemberPointersIfInMemoryPool() override;
68403 
68404  // DQ (4/30/2006): Modified to be a const function.
68419  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
68420 
68430  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
68431 
68443  virtual long getChildIndex( SgNode* childNode ) const override;
68444 
68445  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
68446  // comment here (changed to be a C style comment and not be a doxygen comment).
68447  /* \brief Constructor for use by AST File I/O Mechanism
68448 
68449  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
68450  which obtained via fast binary file I/O from disk.
68451  */
68452  // SgTypeCrayPointer( SgTypeCrayPointerStorageClass& source );
68453 
68454 
68455 
68456 
68457 
68458  // JH (10/24/2005): methods added to support the ast file IO
68459  private:
68460 
68461  /* name AST Memory Allocation Support Functions
68462  \brief Memory allocations support....
68463 
68464  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
68465  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
68466  and support the AST File I/O Mechanism.
68467  */
68468  /* */
68469 
68470  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
68471  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
68472  that I use the same type everywhere, if any changes are made. THe second one declares the type
68473  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
68474  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
68475  a correspinding one in the AST_FILE_IO class!
68476  */
68477  // DQ (9/2/2015): This typedef is no longer used, we can't define the
68478  // comment here (changed to be a C style comment and not be a doxygen comment).
68479  /* \brief Typedef used for low level memory access.
68480  */
68481  // typedef unsigned char* TestType;
68482 
68483  // DQ (9/2/2015): This typedef is no longer used, we can't define the
68484  // comment here (changed to be a C style comment and not be a doxygen comment).
68485  /* \brief Typedef used to hold memory addresses as values.
68486  */
68487  // typedef unsigned long AddressType;
68488 
68489 
68490 
68491  // necessary, to have direct access to the p_freepointer and the private methods !
68493  friend class AST_FILE_IO;
68494 
68496  friend class SgTypeCrayPointerStorageClass;
68497 
68499  friend class AstSpecificDataManagingClass;
68500 
68502  friend class AstSpecificDataManagingClassStorageClass;
68503 
68504  public:
68506  SgTypeCrayPointer( const SgTypeCrayPointerStorageClass& source );
68507 
68508  // private: // JJW hack
68509  /*
68510  name AST Memory Allocation Support Variables
68511  Memory allocations support variables
68512 
68513  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
68514  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
68515  and support the AST File I/O Mechanism.
68516  */
68517  /* */
68518 
68519  public:
68520 
68521  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
68522  // to current node (so that it will work cleanly with build functions to specify patterns).
68523  // virtual SgNode* addRegExpAttribute();
68530 
68531 // *** COMMON CODE SECTION ENDS HERE ***
68532 
68533 
68534 // End of memberFunctionString
68535 // Start of memberFunctionString
68536 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
68537 
68538  // the generated cast function
68539  // friend ROSE_DLL_API SgTypeCrayPointer* isSgTypeCrayPointer ( SgNode* s );
68540 
68541  typedef SgType base_node_type;
68542 
68543 
68544 // End of memberFunctionString
68545 // Start of memberFunctionString
68546 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
68547 
68548  // SgName get_mangled ( SgUnparse_Info & info );
68549 
68551  // SgName get_mangled ( SgUnparse_Info & info );
68552  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
68553  virtual SgName get_mangled (void) const override;
68554 
68555 
68556 
68557 // End of memberFunctionString
68558 // Start of memberFunctionString
68559 /* #line 267 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
68560 
68562  // DQ (1/31/2006): Modified to build all types in the memory pools
68563  // static SgTypeCrayPointer builtin_type;
68564  // static SgTypeCrayPointer* builtin_type;
68565 
68566  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
68567  // since we don't store the type explicitly anymore except in a few IR nodes which have there
68568  // own data member and associated access function.
68569  // static SgTypeCrayPointer* get_builtin_type();
68570 
68571  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
68572  // since we don't store the type explicitly anymore except in a few IR nodes which have there
68573  // own data member and associated access function.
68574  // static void set_builtin_type(SgTypeCrayPointer* builtin_type);
68575 
68577  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
68578  // static SgTypeCrayPointer* createType(void);
68579  static SgTypeCrayPointer* createType(SgExpression* optional_fortran_type_kind = NULL);
68580 
68581 
68582 // End of memberFunctionString
68583 
68584 
68585 
68586  public:
68587  virtual ~SgTypeCrayPointer();
68588 
68589 
68590  public:
68591  SgTypeCrayPointer();
68592 
68593  protected:
68594 // Start of memberFunctionString
68595 static SgTypeCrayPointer* p_builtin_type;
68596 
68597 // End of memberFunctionString
68598 
68599 
68600 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
68601 
68602 
68603  };
68604 #endif
68605 
68606 // postdeclarations for SgTypeCrayPointer
68607 
68608 /* #line 68609 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
68609 
68610 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
68611 
68612 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
68613 
68614 
68615 /* #line 68616 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
68616 
68617 
68618 
68619 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
68620 
68621 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
68622 // This code is automatically generated for each
68623 // terminal and non-terminal within the defined
68624 // grammar. There is a simple way to change the
68625 // code to fix bugs etc. See the ROSE README file
68626 // for directions.
68627 
68628 // tps: (02/22/2010): Adding DLL export requirements
68629 #include "rosedll.h"
68630 
68631 // predeclarations for SgTypeLabel
68632 
68633 /* #line 68634 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
68634 
68635 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
68636 
68637 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
68638 
68639 #if 1
68640 // Class Definition for SgTypeLabel
68641 class ROSE_DLL_API SgTypeLabel : public SgType
68642  {
68643  public:
68644 
68645 
68646 /* #line 68647 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
68647 
68648  virtual SgNode* copy ( SgCopyHelp& help) const override;
68649 // Start of memberFunctionString
68650 /* #line 964 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
68651 
68652 
68653  // Generated a mangled name that accounts for the stored name internally.
68654  // SgName get_mangled (void) const;
68655 
68657  static SgTypeLabel* createType ( const SgName & nameOfType );
68658 
68659 
68660 
68661 // End of memberFunctionString
68662 // Start of memberFunctionString
68663 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
68664 
68665 // *** COMMON CODE SECTION BEGINS HERE ***
68666 
68667  public:
68668 
68669  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
68670  // and not required which is required to match the other aspects of the copy mechanism code generation.
68671  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
68672  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
68673  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
68674  // virtual SgNode* copy ( const SgCopyHelp & help) const;
68675 
68677  virtual std::string class_name() const override;
68678 
68680  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
68681 
68683  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
68684  // static const VariantT static_variant = V_SgTypeLabel;
68685  enum { static_variant = V_SgTypeLabel };
68686 
68687  /* the generated cast function */
68689  ROSE_DLL_API friend SgTypeLabel* isSgTypeLabel( SgNode * s );
68690 
68692  ROSE_DLL_API friend const SgTypeLabel* isSgTypeLabel( const SgNode * s );
68693 
68694  // ******************************************
68695  // * Memory Pool / New / Delete
68696  // ******************************************
68697 
68698  public:
68700  static const unsigned pool_size; //
68702  static std::vector<unsigned char *> pools; //
68704  static SgTypeLabel * next_node; //
68705 
68707  static unsigned long initializeStorageClassArray(SgTypeLabelStorageClass *); //
68708 
68710  static void clearMemoryPool(); //
68711  static void deleteMemoryPool(); //
68712 
68714  static void extendMemoryPoolForFileIO(); //
68715 
68717  static SgTypeLabel * getPointerFromGlobalIndex(unsigned long); //
68719  static SgTypeLabel * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
68720 
68722  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
68724  static void resetValidFreepointers(); //
68726  static unsigned long getNumberOfLastValidPointer(); //
68727 
68728 
68729 #if defined(INLINE_FUNCTIONS)
68730 
68731  inline void *operator new (size_t size);
68732 #else
68733 
68734  void *operator new (size_t size);
68735 #endif
68736 
68737  void operator delete (void* pointer, size_t size);
68738 
68739  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
68740  void operator delete (void* pointer)
68741  {
68742  // This is the generated delete operator...
68743  SgTypeLabel::operator delete (pointer,sizeof(SgTypeLabel));
68744  }
68745 
68747  static size_t numberOfNodes();
68748 
68750  static size_t memoryUsage();
68751 
68752  // End of scope which started in IR nodes specific code
68753  /* */
68754 
68755  /* name Internal Functions
68756  \brief Internal functions ... incomplete-documentation
68757 
68758  These functions have been made public as part of the design, but they are suggested for internal use
68759  or by particularly knowledgeable users for specialized tools or applications.
68760 
68761  \internal We could not make these private because they are required by user for special purposes. And
68762  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
68763 
68764  */
68765 
68766  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
68767  // overridden in every class by *generated* implementation
68769  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
68770  // MS: 06/28/02 container of names of variables or container indices
68771  // used used in the traversal to access AST successor nodes
68772  // overridden in every class by *generated* implementation
68775  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
68776 
68777  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
68778  // than all the vector copies. The implementation for these functions is generated for each class.
68780  virtual size_t get_numberOfTraversalSuccessors() override;
68782  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
68784  virtual size_t get_childIndex(SgNode *child) override;
68785 
68786 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
68787  // MS: 08/16/2002 method for generating RTI information
68789  virtual RTIReturnType roseRTI() override;
68790 #endif
68791  /* */
68792 
68793 
68794 
68795  /* name Deprecated Functions
68796  \brief Deprecated functions ... incomplete-documentation
68797 
68798  These functions have been deprecated from use.
68799  */
68800  /* */
68801 
68803  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
68804 
68805  // JJW (10/16/2008): Changed to a single function in Node.code, and put
68806  // getVariant() in #if 0 block to prevent confusing Doxygen
68807 #if 0
68808 
68809  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
68811  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
68812 #endif
68813  /* */
68814 
68815 
68816 
68817 
68818  public:
68819  /* name Traversal Support Functions
68820  \brief Traversal support functions ... incomplete-documentation
68821 
68822  These functions have been made public as part of the design, but they are suggested for internal use
68823  or by particularly knowledgable users for specialized tools or applications.
68824  */
68825  /* */
68826 
68827  // DQ (11/26/2005): Support for visitor pattern mechanims
68828  // (inferior to ROSE traversal mechanism, experimental).
68832 
68833  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
68835  virtual void accept (ROSE_VisitorPattern & visitor) override;
68836 
68837  // DQ (12/26/2005): Support for traversal based on the memory pool
68840  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
68841 
68845 
68846  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
68847  // This traversal helps support internal tools that call static member functions.
68848  // note: this function operates on the memory pools.
68851  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
68852  /* */
68853 
68854 
68855  public:
68856  /* name Memory Allocation Functions
68857  \brief Memory allocations functions ... incomplete-documentation
68858 
68859  These functions have been made public as part of the design, but they are suggested for internal use
68860  or by particularly knowledgable users for specialized tools or applications.
68861  */
68862  /* */
68863 
68874  virtual bool isInMemoryPool() override;
68875 
68886  virtual void checkDataMemberPointersIfInMemoryPool() override;
68887 
68888  // DQ (4/30/2006): Modified to be a const function.
68903  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
68904 
68914  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
68915 
68927  virtual long getChildIndex( SgNode* childNode ) const override;
68928 
68929  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
68930  // comment here (changed to be a C style comment and not be a doxygen comment).
68931  /* \brief Constructor for use by AST File I/O Mechanism
68932 
68933  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
68934  which obtained via fast binary file I/O from disk.
68935  */
68936  // SgTypeLabel( SgTypeLabelStorageClass& source );
68937 
68938 
68939 
68940 
68941 
68942  // JH (10/24/2005): methods added to support the ast file IO
68943  private:
68944 
68945  /* name AST Memory Allocation Support Functions
68946  \brief Memory allocations support....
68947 
68948  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
68949  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
68950  and support the AST File I/O Mechanism.
68951  */
68952  /* */
68953 
68954  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
68955  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
68956  that I use the same type everywhere, if any changes are made. THe second one declares the type
68957  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
68958  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
68959  a correspinding one in the AST_FILE_IO class!
68960  */
68961  // DQ (9/2/2015): This typedef is no longer used, we can't define the
68962  // comment here (changed to be a C style comment and not be a doxygen comment).
68963  /* \brief Typedef used for low level memory access.
68964  */
68965  // typedef unsigned char* TestType;
68966 
68967  // DQ (9/2/2015): This typedef is no longer used, we can't define the
68968  // comment here (changed to be a C style comment and not be a doxygen comment).
68969  /* \brief Typedef used to hold memory addresses as values.
68970  */
68971  // typedef unsigned long AddressType;
68972 
68973 
68974 
68975  // necessary, to have direct access to the p_freepointer and the private methods !
68977  friend class AST_FILE_IO;
68978 
68980  friend class SgTypeLabelStorageClass;
68981 
68983  friend class AstSpecificDataManagingClass;
68984 
68986  friend class AstSpecificDataManagingClassStorageClass;
68987 
68988  public:
68990  SgTypeLabel( const SgTypeLabelStorageClass& source );
68991 
68992  // private: // JJW hack
68993  /*
68994  name AST Memory Allocation Support Variables
68995  Memory allocations support variables
68996 
68997  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
68998  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
68999  and support the AST File I/O Mechanism.
69000  */
69001  /* */
69002 
69003  public:
69004 
69005  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
69006  // to current node (so that it will work cleanly with build functions to specify patterns).
69007  // virtual SgNode* addRegExpAttribute();
69013  SgTypeLabel* addRegExpAttribute(std::string s, AstRegExAttribute* a);
69014 
69015 // *** COMMON CODE SECTION ENDS HERE ***
69016 
69017 
69018 // End of memberFunctionString
69019 // Start of memberFunctionString
69020 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
69021 
69022  // the generated cast function
69023  // friend ROSE_DLL_API SgTypeLabel* isSgTypeLabel ( SgNode* s );
69024 
69025  typedef SgType base_node_type;
69026 
69027 
69028 // End of memberFunctionString
69029 // Start of memberFunctionString
69030 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
69031 
69032  // SgName get_mangled ( SgUnparse_Info & info );
69033 
69035  // SgName get_mangled ( SgUnparse_Info & info );
69036  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
69037  virtual SgName get_mangled (void) const override;
69038 
69039 
69040 
69041 // End of memberFunctionString
69042 // Start of memberFunctionString
69043 /* #line 267 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
69044 
69046  // DQ (1/31/2006): Modified to build all types in the memory pools
69047  // static SgTypeLabel builtin_type;
69048  // static SgTypeLabel* builtin_type;
69049 
69050  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
69051  // since we don't store the type explicitly anymore except in a few IR nodes which have there
69052  // own data member and associated access function.
69053  // static SgTypeLabel* get_builtin_type();
69054 
69055  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
69056  // since we don't store the type explicitly anymore except in a few IR nodes which have there
69057  // own data member and associated access function.
69058  // static void set_builtin_type(SgTypeLabel* builtin_type);
69059 
69061  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
69062  // static SgTypeLabel* createType(void);
69063  static SgTypeLabel* createType(SgExpression* optional_fortran_type_kind = NULL);
69064 
69065 
69066 // End of memberFunctionString
69067 
69068 
69069  public:
69070  SgName get_name() const /* (getDataAccessFunctionPrototypeString) */;
69071  void set_name(SgName name) /* (getDataAccessFunctionPrototypeString) */;
69072 
69073 
69074  public:
69075  virtual ~SgTypeLabel();
69076 
69077 
69078  public:
69079  SgTypeLabel();
69080 
69081  protected:
69082 // Start of memberFunctionString
69083 static SgTypeLabel* p_builtin_type;
69084 
69085 // End of memberFunctionString
69086 // Start of memberFunctionString
69087 SgName p_name;
69088 
69089 // End of memberFunctionString
69090 
69091 
69092 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
69093 
69094 
69095  };
69096 #endif
69097 
69098 // postdeclarations for SgTypeLabel
69099 
69100 /* #line 69101 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
69101 
69102 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
69103 
69104 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
69105 
69106 
69107 /* #line 69108 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
69108 
69109 
69110 
69111 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
69112 
69113 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
69114 // This code is automatically generated for each
69115 // terminal and non-terminal within the defined
69116 // grammar. There is a simple way to change the
69117 // code to fix bugs etc. See the ROSE README file
69118 // for directions.
69119 
69120 // tps: (02/22/2010): Adding DLL export requirements
69121 #include "rosedll.h"
69122 
69123 // predeclarations for SgRvalueReferenceType
69124 
69125 /* #line 69126 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
69126 
69127 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
69128 
69129 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
69130 
69131 #if 1
69132 // Class Definition for SgRvalueReferenceType
69133 class ROSE_DLL_API SgRvalueReferenceType : public SgType
69134  {
69135  public:
69136 
69137 
69138 /* #line 69139 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
69139 
69140  virtual SgNode* copy ( SgCopyHelp& help) const override;
69141 // Start of memberFunctionString
69142 /* #line 290 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
69143 
69144  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
69145  // since we don't store the type explicitly anymore except in a few IR nodes which have there
69146  // own data member and associated access function.
69147  // static SgRvalueReferenceType* get_builtin_type();
69148 
69149  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
69150  // since we don't store the type explicitly anymore except in a few IR nodes which have there
69151  // own data member and associated access function.
69152  // static void set_builtin_type(SgRvalueReferenceType* builtin_type);
69153 
69155  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
69156  // static SgRvalueReferenceType* createType(SgType* type = NULL);
69157  static SgRvalueReferenceType* createType(SgType* type = NULL, SgExpression* optional_fortran_type_kind = NULL);
69158 
69159 
69160 // End of memberFunctionString
69161 // Start of memberFunctionString
69162 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
69163 
69164 // *** COMMON CODE SECTION BEGINS HERE ***
69165 
69166  public:
69167 
69168  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
69169  // and not required which is required to match the other aspects of the copy mechanism code generation.
69170  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
69171  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
69172  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
69173  // virtual SgNode* copy ( const SgCopyHelp & help) const;
69174 
69176  virtual std::string class_name() const override;
69177 
69179  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
69180 
69182  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
69183  // static const VariantT static_variant = V_SgRvalueReferenceType;
69184  enum { static_variant = V_SgRvalueReferenceType };
69185 
69186  /* the generated cast function */
69188  ROSE_DLL_API friend SgRvalueReferenceType* isSgRvalueReferenceType( SgNode * s );
69189 
69191  ROSE_DLL_API friend const SgRvalueReferenceType* isSgRvalueReferenceType( const SgNode * s );
69192 
69193  // ******************************************
69194  // * Memory Pool / New / Delete
69195  // ******************************************
69196 
69197  public:
69199  static const unsigned pool_size; //
69201  static std::vector<unsigned char *> pools; //
69203  static SgRvalueReferenceType * next_node; //
69204 
69206  static unsigned long initializeStorageClassArray(SgRvalueReferenceTypeStorageClass *); //
69207 
69209  static void clearMemoryPool(); //
69210  static void deleteMemoryPool(); //
69211 
69213  static void extendMemoryPoolForFileIO(); //
69214 
69216  static SgRvalueReferenceType * getPointerFromGlobalIndex(unsigned long); //
69218  static SgRvalueReferenceType * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
69219 
69221  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
69223  static void resetValidFreepointers(); //
69225  static unsigned long getNumberOfLastValidPointer(); //
69226 
69227 
69228 #if defined(INLINE_FUNCTIONS)
69229 
69230  inline void *operator new (size_t size);
69231 #else
69232 
69233  void *operator new (size_t size);
69234 #endif
69235 
69236  void operator delete (void* pointer, size_t size);
69237 
69238  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
69239  void operator delete (void* pointer)
69240  {
69241  // This is the generated delete operator...
69242  SgRvalueReferenceType::operator delete (pointer,sizeof(SgRvalueReferenceType));
69243  }
69244 
69246  static size_t numberOfNodes();
69247 
69249  static size_t memoryUsage();
69250 
69251  // End of scope which started in IR nodes specific code
69252  /* */
69253 
69254  /* name Internal Functions
69255  \brief Internal functions ... incomplete-documentation
69256 
69257  These functions have been made public as part of the design, but they are suggested for internal use
69258  or by particularly knowledgeable users for specialized tools or applications.
69259 
69260  \internal We could not make these private because they are required by user for special purposes. And
69261  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
69262 
69263  */
69264 
69265  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
69266  // overridden in every class by *generated* implementation
69268  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
69269  // MS: 06/28/02 container of names of variables or container indices
69270  // used used in the traversal to access AST successor nodes
69271  // overridden in every class by *generated* implementation
69274  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
69275 
69276  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
69277  // than all the vector copies. The implementation for these functions is generated for each class.
69279  virtual size_t get_numberOfTraversalSuccessors() override;
69281  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
69283  virtual size_t get_childIndex(SgNode *child) override;
69284 
69285 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
69286  // MS: 08/16/2002 method for generating RTI information
69288  virtual RTIReturnType roseRTI() override;
69289 #endif
69290  /* */
69291 
69292 
69293 
69294  /* name Deprecated Functions
69295  \brief Deprecated functions ... incomplete-documentation
69296 
69297  These functions have been deprecated from use.
69298  */
69299  /* */
69300 
69302  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
69303 
69304  // JJW (10/16/2008): Changed to a single function in Node.code, and put
69305  // getVariant() in #if 0 block to prevent confusing Doxygen
69306 #if 0
69307 
69308  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
69310  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
69311 #endif
69312  /* */
69313 
69314 
69315 
69316 
69317  public:
69318  /* name Traversal Support Functions
69319  \brief Traversal support functions ... incomplete-documentation
69320 
69321  These functions have been made public as part of the design, but they are suggested for internal use
69322  or by particularly knowledgable users for specialized tools or applications.
69323  */
69324  /* */
69325 
69326  // DQ (11/26/2005): Support for visitor pattern mechanims
69327  // (inferior to ROSE traversal mechanism, experimental).
69331 
69332  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
69334  virtual void accept (ROSE_VisitorPattern & visitor) override;
69335 
69336  // DQ (12/26/2005): Support for traversal based on the memory pool
69339  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
69340 
69344 
69345  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
69346  // This traversal helps support internal tools that call static member functions.
69347  // note: this function operates on the memory pools.
69350  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
69351  /* */
69352 
69353 
69354  public:
69355  /* name Memory Allocation Functions
69356  \brief Memory allocations functions ... incomplete-documentation
69357 
69358  These functions have been made public as part of the design, but they are suggested for internal use
69359  or by particularly knowledgable users for specialized tools or applications.
69360  */
69361  /* */
69362 
69373  virtual bool isInMemoryPool() override;
69374 
69385  virtual void checkDataMemberPointersIfInMemoryPool() override;
69386 
69387  // DQ (4/30/2006): Modified to be a const function.
69402  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
69403 
69413  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
69414 
69426  virtual long getChildIndex( SgNode* childNode ) const override;
69427 
69428  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
69429  // comment here (changed to be a C style comment and not be a doxygen comment).
69430  /* \brief Constructor for use by AST File I/O Mechanism
69431 
69432  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
69433  which obtained via fast binary file I/O from disk.
69434  */
69435  // SgRvalueReferenceType( SgRvalueReferenceTypeStorageClass& source );
69436 
69437 
69438 
69439 
69440 
69441  // JH (10/24/2005): methods added to support the ast file IO
69442  private:
69443 
69444  /* name AST Memory Allocation Support Functions
69445  \brief Memory allocations support....
69446 
69447  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
69448  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
69449  and support the AST File I/O Mechanism.
69450  */
69451  /* */
69452 
69453  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
69454  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
69455  that I use the same type everywhere, if any changes are made. THe second one declares the type
69456  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
69457  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
69458  a correspinding one in the AST_FILE_IO class!
69459  */
69460  // DQ (9/2/2015): This typedef is no longer used, we can't define the
69461  // comment here (changed to be a C style comment and not be a doxygen comment).
69462  /* \brief Typedef used for low level memory access.
69463  */
69464  // typedef unsigned char* TestType;
69465 
69466  // DQ (9/2/2015): This typedef is no longer used, we can't define the
69467  // comment here (changed to be a C style comment and not be a doxygen comment).
69468  /* \brief Typedef used to hold memory addresses as values.
69469  */
69470  // typedef unsigned long AddressType;
69471 
69472 
69473 
69474  // necessary, to have direct access to the p_freepointer and the private methods !
69476  friend class AST_FILE_IO;
69477 
69479  friend class SgRvalueReferenceTypeStorageClass;
69480 
69482  friend class AstSpecificDataManagingClass;
69483 
69485  friend class AstSpecificDataManagingClassStorageClass;
69486 
69487  public:
69489  SgRvalueReferenceType( const SgRvalueReferenceTypeStorageClass& source );
69490 
69491  // private: // JJW hack
69492  /*
69493  name AST Memory Allocation Support Variables
69494  Memory allocations support variables
69495 
69496  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
69497  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
69498  and support the AST File I/O Mechanism.
69499  */
69500  /* */
69501 
69502  public:
69503 
69504  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
69505  // to current node (so that it will work cleanly with build functions to specify patterns).
69506  // virtual SgNode* addRegExpAttribute();
69513 
69514 // *** COMMON CODE SECTION ENDS HERE ***
69515 
69516 
69517 // End of memberFunctionString
69518 // Start of memberFunctionString
69519 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
69520 
69521  // the generated cast function
69522  // friend ROSE_DLL_API SgRvalueReferenceType* isSgRvalueReferenceType ( SgNode* s );
69523 
69524  typedef SgType base_node_type;
69525 
69526 
69527 // End of memberFunctionString
69528 // Start of memberFunctionString
69529 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
69530 
69531  // SgName get_mangled ( SgUnparse_Info & info );
69532 
69534  // SgName get_mangled ( SgUnparse_Info & info );
69535  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
69536  virtual SgName get_mangled (void) const override;
69537 
69538 
69539 
69540 // End of memberFunctionString
69541 
69542  public:
69543  SgType* get_base_type() const;
69544  void set_base_type(SgType* base_type);
69545 
69546 
69547  public:
69548  virtual ~SgRvalueReferenceType();
69549 
69550 
69551  public:
69552  SgRvalueReferenceType(SgType* base_type = NULL);
69553 
69554  protected:
69555 // Start of memberFunctionString
69556 SgType* p_base_type;
69557 
69558 // End of memberFunctionString
69559 
69560 
69561 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
69562 
69563 
69564  };
69565 #endif
69566 
69567 // postdeclarations for SgRvalueReferenceType
69568 
69569 /* #line 69570 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
69570 
69571 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
69572 
69573 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
69574 
69575 
69576 /* #line 69577 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
69577 
69578 
69579 
69580 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
69581 
69582 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
69583 // This code is automatically generated for each
69584 // terminal and non-terminal within the defined
69585 // grammar. There is a simple way to change the
69586 // code to fix bugs etc. See the ROSE README file
69587 // for directions.
69588 
69589 // tps: (02/22/2010): Adding DLL export requirements
69590 #include "rosedll.h"
69591 
69592 // predeclarations for SgTypeNullptr
69593 
69594 /* #line 69595 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
69595 
69596 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
69597 
69598 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
69599 
69600 #if 1
69601 // Class Definition for SgTypeNullptr
69602 class ROSE_DLL_API SgTypeNullptr : public SgType
69603  {
69604  public:
69605 
69606 
69607 /* #line 69608 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
69608 
69609  virtual SgNode* copy ( SgCopyHelp& help) const override;
69610 // Start of memberFunctionString
69611 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
69612 
69613 // *** COMMON CODE SECTION BEGINS HERE ***
69614 
69615  public:
69616 
69617  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
69618  // and not required which is required to match the other aspects of the copy mechanism code generation.
69619  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
69620  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
69621  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
69622  // virtual SgNode* copy ( const SgCopyHelp & help) const;
69623 
69625  virtual std::string class_name() const override;
69626 
69628  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
69629 
69631  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
69632  // static const VariantT static_variant = V_SgTypeNullptr;
69633  enum { static_variant = V_SgTypeNullptr };
69634 
69635  /* the generated cast function */
69637  ROSE_DLL_API friend SgTypeNullptr* isSgTypeNullptr( SgNode * s );
69638 
69640  ROSE_DLL_API friend const SgTypeNullptr* isSgTypeNullptr( const SgNode * s );
69641 
69642  // ******************************************
69643  // * Memory Pool / New / Delete
69644  // ******************************************
69645 
69646  public:
69648  static const unsigned pool_size; //
69650  static std::vector<unsigned char *> pools; //
69652  static SgTypeNullptr * next_node; //
69653 
69655  static unsigned long initializeStorageClassArray(SgTypeNullptrStorageClass *); //
69656 
69658  static void clearMemoryPool(); //
69659  static void deleteMemoryPool(); //
69660 
69662  static void extendMemoryPoolForFileIO(); //
69663 
69665  static SgTypeNullptr * getPointerFromGlobalIndex(unsigned long); //
69667  static SgTypeNullptr * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
69668 
69670  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
69672  static void resetValidFreepointers(); //
69674  static unsigned long getNumberOfLastValidPointer(); //
69675 
69676 
69677 #if defined(INLINE_FUNCTIONS)
69678 
69679  inline void *operator new (size_t size);
69680 #else
69681 
69682  void *operator new (size_t size);
69683 #endif
69684 
69685  void operator delete (void* pointer, size_t size);
69686 
69687  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
69688  void operator delete (void* pointer)
69689  {
69690  // This is the generated delete operator...
69691  SgTypeNullptr::operator delete (pointer,sizeof(SgTypeNullptr));
69692  }
69693 
69695  static size_t numberOfNodes();
69696 
69698  static size_t memoryUsage();
69699 
69700  // End of scope which started in IR nodes specific code
69701  /* */
69702 
69703  /* name Internal Functions
69704  \brief Internal functions ... incomplete-documentation
69705 
69706  These functions have been made public as part of the design, but they are suggested for internal use
69707  or by particularly knowledgeable users for specialized tools or applications.
69708 
69709  \internal We could not make these private because they are required by user for special purposes. And
69710  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
69711 
69712  */
69713 
69714  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
69715  // overridden in every class by *generated* implementation
69717  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
69718  // MS: 06/28/02 container of names of variables or container indices
69719  // used used in the traversal to access AST successor nodes
69720  // overridden in every class by *generated* implementation
69723  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
69724 
69725  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
69726  // than all the vector copies. The implementation for these functions is generated for each class.
69728  virtual size_t get_numberOfTraversalSuccessors() override;
69730  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
69732  virtual size_t get_childIndex(SgNode *child) override;
69733 
69734 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
69735  // MS: 08/16/2002 method for generating RTI information
69737  virtual RTIReturnType roseRTI() override;
69738 #endif
69739  /* */
69740 
69741 
69742 
69743  /* name Deprecated Functions
69744  \brief Deprecated functions ... incomplete-documentation
69745 
69746  These functions have been deprecated from use.
69747  */
69748  /* */
69749 
69751  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
69752 
69753  // JJW (10/16/2008): Changed to a single function in Node.code, and put
69754  // getVariant() in #if 0 block to prevent confusing Doxygen
69755 #if 0
69756 
69757  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
69759  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
69760 #endif
69761  /* */
69762 
69763 
69764 
69765 
69766  public:
69767  /* name Traversal Support Functions
69768  \brief Traversal support functions ... incomplete-documentation
69769 
69770  These functions have been made public as part of the design, but they are suggested for internal use
69771  or by particularly knowledgable users for specialized tools or applications.
69772  */
69773  /* */
69774 
69775  // DQ (11/26/2005): Support for visitor pattern mechanims
69776  // (inferior to ROSE traversal mechanism, experimental).
69780 
69781  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
69783  virtual void accept (ROSE_VisitorPattern & visitor) override;
69784 
69785  // DQ (12/26/2005): Support for traversal based on the memory pool
69788  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
69789 
69793 
69794  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
69795  // This traversal helps support internal tools that call static member functions.
69796  // note: this function operates on the memory pools.
69799  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
69800  /* */
69801 
69802 
69803  public:
69804  /* name Memory Allocation Functions
69805  \brief Memory allocations functions ... incomplete-documentation
69806 
69807  These functions have been made public as part of the design, but they are suggested for internal use
69808  or by particularly knowledgable users for specialized tools or applications.
69809  */
69810  /* */
69811 
69822  virtual bool isInMemoryPool() override;
69823 
69834  virtual void checkDataMemberPointersIfInMemoryPool() override;
69835 
69836  // DQ (4/30/2006): Modified to be a const function.
69851  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
69852 
69862  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
69863 
69875  virtual long getChildIndex( SgNode* childNode ) const override;
69876 
69877  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
69878  // comment here (changed to be a C style comment and not be a doxygen comment).
69879  /* \brief Constructor for use by AST File I/O Mechanism
69880 
69881  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
69882  which obtained via fast binary file I/O from disk.
69883  */
69884  // SgTypeNullptr( SgTypeNullptrStorageClass& source );
69885 
69886 
69887 
69888 
69889 
69890  // JH (10/24/2005): methods added to support the ast file IO
69891  private:
69892 
69893  /* name AST Memory Allocation Support Functions
69894  \brief Memory allocations support....
69895 
69896  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
69897  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
69898  and support the AST File I/O Mechanism.
69899  */
69900  /* */
69901 
69902  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
69903  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
69904  that I use the same type everywhere, if any changes are made. THe second one declares the type
69905  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
69906  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
69907  a correspinding one in the AST_FILE_IO class!
69908  */
69909  // DQ (9/2/2015): This typedef is no longer used, we can't define the
69910  // comment here (changed to be a C style comment and not be a doxygen comment).
69911  /* \brief Typedef used for low level memory access.
69912  */
69913  // typedef unsigned char* TestType;
69914 
69915  // DQ (9/2/2015): This typedef is no longer used, we can't define the
69916  // comment here (changed to be a C style comment and not be a doxygen comment).
69917  /* \brief Typedef used to hold memory addresses as values.
69918  */
69919  // typedef unsigned long AddressType;
69920 
69921 
69922 
69923  // necessary, to have direct access to the p_freepointer and the private methods !
69925  friend class AST_FILE_IO;
69926 
69928  friend class SgTypeNullptrStorageClass;
69929 
69931  friend class AstSpecificDataManagingClass;
69932 
69934  friend class AstSpecificDataManagingClassStorageClass;
69935 
69936  public:
69938  SgTypeNullptr( const SgTypeNullptrStorageClass& source );
69939 
69940  // private: // JJW hack
69941  /*
69942  name AST Memory Allocation Support Variables
69943  Memory allocations support variables
69944 
69945  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
69946  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
69947  and support the AST File I/O Mechanism.
69948  */
69949  /* */
69950 
69951  public:
69952 
69953  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
69954  // to current node (so that it will work cleanly with build functions to specify patterns).
69955  // virtual SgNode* addRegExpAttribute();
69962 
69963 // *** COMMON CODE SECTION ENDS HERE ***
69964 
69965 
69966 // End of memberFunctionString
69967 // Start of memberFunctionString
69968 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
69969 
69970  // the generated cast function
69971  // friend ROSE_DLL_API SgTypeNullptr* isSgTypeNullptr ( SgNode* s );
69972 
69973  typedef SgType base_node_type;
69974 
69975 
69976 // End of memberFunctionString
69977 // Start of memberFunctionString
69978 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
69979 
69980  // SgName get_mangled ( SgUnparse_Info & info );
69981 
69983  // SgName get_mangled ( SgUnparse_Info & info );
69984  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
69985  virtual SgName get_mangled (void) const override;
69986 
69987 
69988 
69989 // End of memberFunctionString
69990 // Start of memberFunctionString
69991 /* #line 267 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
69992 
69994  // DQ (1/31/2006): Modified to build all types in the memory pools
69995  // static SgTypeNullptr builtin_type;
69996  // static SgTypeNullptr* builtin_type;
69997 
69998  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
69999  // since we don't store the type explicitly anymore except in a few IR nodes which have there
70000  // own data member and associated access function.
70001  // static SgTypeNullptr* get_builtin_type();
70002 
70003  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
70004  // since we don't store the type explicitly anymore except in a few IR nodes which have there
70005  // own data member and associated access function.
70006  // static void set_builtin_type(SgTypeNullptr* builtin_type);
70007 
70009  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
70010  // static SgTypeNullptr* createType(void);
70011  static SgTypeNullptr* createType(SgExpression* optional_fortran_type_kind = NULL);
70012 
70013 
70014 // End of memberFunctionString
70015 
70016 
70017 
70018  public:
70019  virtual ~SgTypeNullptr();
70020 
70021 
70022  public:
70023  SgTypeNullptr();
70024 
70025  protected:
70026 // Start of memberFunctionString
70027 static SgTypeNullptr* p_builtin_type;
70028 
70029 // End of memberFunctionString
70030 
70031 
70032 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
70033 
70034 
70035  };
70036 #endif
70037 
70038 // postdeclarations for SgTypeNullptr
70039 
70040 /* #line 70041 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
70041 
70042 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
70043 
70044 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
70045 
70046 
70047 /* #line 70048 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
70048 
70049 
70050 
70051 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
70052 
70053 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
70054 // This code is automatically generated for each
70055 // terminal and non-terminal within the defined
70056 // grammar. There is a simple way to change the
70057 // code to fix bugs etc. See the ROSE README file
70058 // for directions.
70059 
70060 // tps: (02/22/2010): Adding DLL export requirements
70061 #include "rosedll.h"
70062 
70063 // predeclarations for SgDeclType
70064 
70065 /* #line 70066 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
70066 
70067 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
70068 
70069 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
70070 
70071 #if 1
70072 // Class Definition for SgDeclType
70073 class ROSE_DLL_API SgDeclType : public SgType
70074  {
70075  public:
70076 
70077 
70078 /* #line 70079 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
70079 
70080  virtual SgNode* copy ( SgCopyHelp& help) const override;
70081 // Start of memberFunctionString
70082 /* #line 290 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
70083 
70084  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
70085  // since we don't store the type explicitly anymore except in a few IR nodes which have there
70086  // own data member and associated access function.
70087  // static SgDeclType* get_builtin_type();
70088 
70089  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
70090  // since we don't store the type explicitly anymore except in a few IR nodes which have there
70091  // own data member and associated access function.
70092  // static void set_builtin_type(SgDeclType* builtin_type);
70093 
70095  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
70096  // static SgDeclType* createType(SgExpression* expr = NULL);
70097  static SgDeclType* createType(SgExpression* expr = NULL, SgExpression* optional_fortran_type_kind = NULL);
70098 
70099 
70100 // End of memberFunctionString
70101 // Start of memberFunctionString
70102 /* #line 975 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
70103 
70104 
70105  void set_base_type(SgType* base_type);
70106 
70107 
70108 
70109 // End of memberFunctionString
70110 // Start of memberFunctionString
70111 /* #line 385 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
70112 
70114  SgType* get_base_type() const;
70115 
70116 
70117 // End of memberFunctionString
70118 // Start of memberFunctionString
70119 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
70120 
70121 // *** COMMON CODE SECTION BEGINS HERE ***
70122 
70123  public:
70124 
70125  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
70126  // and not required which is required to match the other aspects of the copy mechanism code generation.
70127  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
70128  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
70129  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
70130  // virtual SgNode* copy ( const SgCopyHelp & help) const;
70131 
70133  virtual std::string class_name() const override;
70134 
70136  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
70137 
70139  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
70140  // static const VariantT static_variant = V_SgDeclType;
70141  enum { static_variant = V_SgDeclType };
70142 
70143  /* the generated cast function */
70145  ROSE_DLL_API friend SgDeclType* isSgDeclType( SgNode * s );
70146 
70148  ROSE_DLL_API friend const SgDeclType* isSgDeclType( const SgNode * s );
70149 
70150  // ******************************************
70151  // * Memory Pool / New / Delete
70152  // ******************************************
70153 
70154  public:
70156  static const unsigned pool_size; //
70158  static std::vector<unsigned char *> pools; //
70160  static SgDeclType * next_node; //
70161 
70163  static unsigned long initializeStorageClassArray(SgDeclTypeStorageClass *); //
70164 
70166  static void clearMemoryPool(); //
70167  static void deleteMemoryPool(); //
70168 
70170  static void extendMemoryPoolForFileIO(); //
70171 
70173  static SgDeclType * getPointerFromGlobalIndex(unsigned long); //
70175  static SgDeclType * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
70176 
70178  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
70180  static void resetValidFreepointers(); //
70182  static unsigned long getNumberOfLastValidPointer(); //
70183 
70184 
70185 #if defined(INLINE_FUNCTIONS)
70186 
70187  inline void *operator new (size_t size);
70188 #else
70189 
70190  void *operator new (size_t size);
70191 #endif
70192 
70193  void operator delete (void* pointer, size_t size);
70194 
70195  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
70196  void operator delete (void* pointer)
70197  {
70198  // This is the generated delete operator...
70199  SgDeclType::operator delete (pointer,sizeof(SgDeclType));
70200  }
70201 
70203  static size_t numberOfNodes();
70204 
70206  static size_t memoryUsage();
70207 
70208  // End of scope which started in IR nodes specific code
70209  /* */
70210 
70211  /* name Internal Functions
70212  \brief Internal functions ... incomplete-documentation
70213 
70214  These functions have been made public as part of the design, but they are suggested for internal use
70215  or by particularly knowledgeable users for specialized tools or applications.
70216 
70217  \internal We could not make these private because they are required by user for special purposes. And
70218  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
70219 
70220  */
70221 
70222  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
70223  // overridden in every class by *generated* implementation
70225  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
70226  // MS: 06/28/02 container of names of variables or container indices
70227  // used used in the traversal to access AST successor nodes
70228  // overridden in every class by *generated* implementation
70231  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
70232 
70233  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
70234  // than all the vector copies. The implementation for these functions is generated for each class.
70236  virtual size_t get_numberOfTraversalSuccessors() override;
70238  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
70240  virtual size_t get_childIndex(SgNode *child) override;
70241 
70242 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
70243  // MS: 08/16/2002 method for generating RTI information
70245  virtual RTIReturnType roseRTI() override;
70246 #endif
70247  /* */
70248 
70249 
70250 
70251  /* name Deprecated Functions
70252  \brief Deprecated functions ... incomplete-documentation
70253 
70254  These functions have been deprecated from use.
70255  */
70256  /* */
70257 
70259  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
70260 
70261  // JJW (10/16/2008): Changed to a single function in Node.code, and put
70262  // getVariant() in #if 0 block to prevent confusing Doxygen
70263 #if 0
70264 
70265  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
70267  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
70268 #endif
70269  /* */
70270 
70271 
70272 
70273 
70274  public:
70275  /* name Traversal Support Functions
70276  \brief Traversal support functions ... incomplete-documentation
70277 
70278  These functions have been made public as part of the design, but they are suggested for internal use
70279  or by particularly knowledgable users for specialized tools or applications.
70280  */
70281  /* */
70282 
70283  // DQ (11/26/2005): Support for visitor pattern mechanims
70284  // (inferior to ROSE traversal mechanism, experimental).
70288 
70289  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
70291  virtual void accept (ROSE_VisitorPattern & visitor) override;
70292 
70293  // DQ (12/26/2005): Support for traversal based on the memory pool
70296  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
70297 
70301 
70302  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
70303  // This traversal helps support internal tools that call static member functions.
70304  // note: this function operates on the memory pools.
70307  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
70308  /* */
70309 
70310 
70311  public:
70312  /* name Memory Allocation Functions
70313  \brief Memory allocations functions ... incomplete-documentation
70314 
70315  These functions have been made public as part of the design, but they are suggested for internal use
70316  or by particularly knowledgable users for specialized tools or applications.
70317  */
70318  /* */
70319 
70330  virtual bool isInMemoryPool() override;
70331 
70342  virtual void checkDataMemberPointersIfInMemoryPool() override;
70343 
70344  // DQ (4/30/2006): Modified to be a const function.
70359  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
70360 
70370  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
70371 
70383  virtual long getChildIndex( SgNode* childNode ) const override;
70384 
70385  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
70386  // comment here (changed to be a C style comment and not be a doxygen comment).
70387  /* \brief Constructor for use by AST File I/O Mechanism
70388 
70389  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
70390  which obtained via fast binary file I/O from disk.
70391  */
70392  // SgDeclType( SgDeclTypeStorageClass& source );
70393 
70394 
70395 
70396 
70397 
70398  // JH (10/24/2005): methods added to support the ast file IO
70399  private:
70400 
70401  /* name AST Memory Allocation Support Functions
70402  \brief Memory allocations support....
70403 
70404  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
70405  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
70406  and support the AST File I/O Mechanism.
70407  */
70408  /* */
70409 
70410  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
70411  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
70412  that I use the same type everywhere, if any changes are made. THe second one declares the type
70413  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
70414  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
70415  a correspinding one in the AST_FILE_IO class!
70416  */
70417  // DQ (9/2/2015): This typedef is no longer used, we can't define the
70418  // comment here (changed to be a C style comment and not be a doxygen comment).
70419  /* \brief Typedef used for low level memory access.
70420  */
70421  // typedef unsigned char* TestType;
70422 
70423  // DQ (9/2/2015): This typedef is no longer used, we can't define the
70424  // comment here (changed to be a C style comment and not be a doxygen comment).
70425  /* \brief Typedef used to hold memory addresses as values.
70426  */
70427  // typedef unsigned long AddressType;
70428 
70429 
70430 
70431  // necessary, to have direct access to the p_freepointer and the private methods !
70433  friend class AST_FILE_IO;
70434 
70436  friend class SgDeclTypeStorageClass;
70437 
70439  friend class AstSpecificDataManagingClass;
70440 
70442  friend class AstSpecificDataManagingClassStorageClass;
70443 
70444  public:
70446  SgDeclType( const SgDeclTypeStorageClass& source );
70447 
70448  // private: // JJW hack
70449  /*
70450  name AST Memory Allocation Support Variables
70451  Memory allocations support variables
70452 
70453  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
70454  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
70455  and support the AST File I/O Mechanism.
70456  */
70457  /* */
70458 
70459  public:
70460 
70461  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
70462  // to current node (so that it will work cleanly with build functions to specify patterns).
70463  // virtual SgNode* addRegExpAttribute();
70469  SgDeclType* addRegExpAttribute(std::string s, AstRegExAttribute* a);
70470 
70471 // *** COMMON CODE SECTION ENDS HERE ***
70472 
70473 
70474 // End of memberFunctionString
70475 // Start of memberFunctionString
70476 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
70477 
70478  // the generated cast function
70479  // friend ROSE_DLL_API SgDeclType* isSgDeclType ( SgNode* s );
70480 
70481  typedef SgType base_node_type;
70482 
70483 
70484 // End of memberFunctionString
70485 // Start of memberFunctionString
70486 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
70487 
70488  // SgName get_mangled ( SgUnparse_Info & info );
70489 
70491  // SgName get_mangled ( SgUnparse_Info & info );
70492  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
70493  virtual SgName get_mangled (void) const override;
70494 
70495 
70496 
70497 // End of memberFunctionString
70498 
70499  public:
70500  SgExpression* get_base_expression() const;
70501  void set_base_expression(SgExpression* base_expression);
70502 
70503 
70504 
70505  public:
70506  virtual ~SgDeclType();
70507 
70508 
70509  public:
70510  SgDeclType(SgExpression* base_expression = NULL, SgType* base_type = NULL);
70511 
70512  protected:
70513 // Start of memberFunctionString
70514 SgExpression* p_base_expression;
70515 
70516 // End of memberFunctionString
70517 // Start of memberFunctionString
70518 SgType* p_base_type;
70519 
70520 // End of memberFunctionString
70521 
70522 
70523 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
70524 
70525 
70526  };
70527 #endif
70528 
70529 // postdeclarations for SgDeclType
70530 
70531 /* #line 70532 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
70532 
70533 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
70534 
70535 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
70536 
70537 
70538 /* #line 70539 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
70539 
70540 
70541 
70542 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
70543 
70544 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
70545 // This code is automatically generated for each
70546 // terminal and non-terminal within the defined
70547 // grammar. There is a simple way to change the
70548 // code to fix bugs etc. See the ROSE README file
70549 // for directions.
70550 
70551 // tps: (02/22/2010): Adding DLL export requirements
70552 #include "rosedll.h"
70553 
70554 // predeclarations for SgTypeOfType
70555 
70556 /* #line 70557 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
70557 
70558 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
70559 
70560 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
70561 
70562 #if 1
70563 // Class Definition for SgTypeOfType
70564 class ROSE_DLL_API SgTypeOfType : public SgType
70565  {
70566  public:
70567 
70568 
70569 /* #line 70570 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
70570 
70571  virtual SgNode* copy ( SgCopyHelp& help) const override;
70572 // Start of memberFunctionString
70573 /* #line 290 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
70574 
70575  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
70576  // since we don't store the type explicitly anymore except in a few IR nodes which have there
70577  // own data member and associated access function.
70578  // static SgTypeOfType* get_builtin_type();
70579 
70580  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
70581  // since we don't store the type explicitly anymore except in a few IR nodes which have there
70582  // own data member and associated access function.
70583  // static void set_builtin_type(SgTypeOfType* builtin_type);
70584 
70586  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
70587  // static SgTypeOfType* createType(SgExpression* expr = NULL);
70588  static SgTypeOfType* createType(SgExpression* expr = NULL, SgExpression* optional_fortran_type_kind = NULL);
70589 
70590 
70591 // End of memberFunctionString
70592 // Start of memberFunctionString
70593 /* #line 982 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
70594 
70595 
70596  static SgTypeOfType* createType(SgType* base_type, SgExpression* optional_fortran_type_kind = NULL);
70597 
70598  void set_base_type(SgType* base_type);
70599 
70600 
70601 
70602 // End of memberFunctionString
70603 // Start of memberFunctionString
70604 /* #line 385 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
70605 
70607  SgType* get_base_type() const;
70608 
70609 
70610 // End of memberFunctionString
70611 // Start of memberFunctionString
70612 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
70613 
70614 // *** COMMON CODE SECTION BEGINS HERE ***
70615 
70616  public:
70617 
70618  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
70619  // and not required which is required to match the other aspects of the copy mechanism code generation.
70620  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
70621  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
70622  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
70623  // virtual SgNode* copy ( const SgCopyHelp & help) const;
70624 
70626  virtual std::string class_name() const override;
70627 
70629  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
70630 
70632  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
70633  // static const VariantT static_variant = V_SgTypeOfType;
70634  enum { static_variant = V_SgTypeOfType };
70635 
70636  /* the generated cast function */
70638  ROSE_DLL_API friend SgTypeOfType* isSgTypeOfType( SgNode * s );
70639 
70641  ROSE_DLL_API friend const SgTypeOfType* isSgTypeOfType( const SgNode * s );
70642 
70643  // ******************************************
70644  // * Memory Pool / New / Delete
70645  // ******************************************
70646 
70647  public:
70649  static const unsigned pool_size; //
70651  static std::vector<unsigned char *> pools; //
70653  static SgTypeOfType * next_node; //
70654 
70656  static unsigned long initializeStorageClassArray(SgTypeOfTypeStorageClass *); //
70657 
70659  static void clearMemoryPool(); //
70660  static void deleteMemoryPool(); //
70661 
70663  static void extendMemoryPoolForFileIO(); //
70664 
70666  static SgTypeOfType * getPointerFromGlobalIndex(unsigned long); //
70668  static SgTypeOfType * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
70669 
70671  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
70673  static void resetValidFreepointers(); //
70675  static unsigned long getNumberOfLastValidPointer(); //
70676 
70677 
70678 #if defined(INLINE_FUNCTIONS)
70679 
70680  inline void *operator new (size_t size);
70681 #else
70682 
70683  void *operator new (size_t size);
70684 #endif
70685 
70686  void operator delete (void* pointer, size_t size);
70687 
70688  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
70689  void operator delete (void* pointer)
70690  {
70691  // This is the generated delete operator...
70692  SgTypeOfType::operator delete (pointer,sizeof(SgTypeOfType));
70693  }
70694 
70696  static size_t numberOfNodes();
70697 
70699  static size_t memoryUsage();
70700 
70701  // End of scope which started in IR nodes specific code
70702  /* */
70703 
70704  /* name Internal Functions
70705  \brief Internal functions ... incomplete-documentation
70706 
70707  These functions have been made public as part of the design, but they are suggested for internal use
70708  or by particularly knowledgeable users for specialized tools or applications.
70709 
70710  \internal We could not make these private because they are required by user for special purposes. And
70711  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
70712 
70713  */
70714 
70715  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
70716  // overridden in every class by *generated* implementation
70718  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
70719  // MS: 06/28/02 container of names of variables or container indices
70720  // used used in the traversal to access AST successor nodes
70721  // overridden in every class by *generated* implementation
70724  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
70725 
70726  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
70727  // than all the vector copies. The implementation for these functions is generated for each class.
70729  virtual size_t get_numberOfTraversalSuccessors() override;
70731  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
70733  virtual size_t get_childIndex(SgNode *child) override;
70734 
70735 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
70736  // MS: 08/16/2002 method for generating RTI information
70738  virtual RTIReturnType roseRTI() override;
70739 #endif
70740  /* */
70741 
70742 
70743 
70744  /* name Deprecated Functions
70745  \brief Deprecated functions ... incomplete-documentation
70746 
70747  These functions have been deprecated from use.
70748  */
70749  /* */
70750 
70752  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
70753 
70754  // JJW (10/16/2008): Changed to a single function in Node.code, and put
70755  // getVariant() in #if 0 block to prevent confusing Doxygen
70756 #if 0
70757 
70758  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
70760  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
70761 #endif
70762  /* */
70763 
70764 
70765 
70766 
70767  public:
70768  /* name Traversal Support Functions
70769  \brief Traversal support functions ... incomplete-documentation
70770 
70771  These functions have been made public as part of the design, but they are suggested for internal use
70772  or by particularly knowledgable users for specialized tools or applications.
70773  */
70774  /* */
70775 
70776  // DQ (11/26/2005): Support for visitor pattern mechanims
70777  // (inferior to ROSE traversal mechanism, experimental).
70781 
70782  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
70784  virtual void accept (ROSE_VisitorPattern & visitor) override;
70785 
70786  // DQ (12/26/2005): Support for traversal based on the memory pool
70789  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
70790 
70794 
70795  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
70796  // This traversal helps support internal tools that call static member functions.
70797  // note: this function operates on the memory pools.
70800  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
70801  /* */
70802 
70803 
70804  public:
70805  /* name Memory Allocation Functions
70806  \brief Memory allocations functions ... incomplete-documentation
70807 
70808  These functions have been made public as part of the design, but they are suggested for internal use
70809  or by particularly knowledgable users for specialized tools or applications.
70810  */
70811  /* */
70812 
70823  virtual bool isInMemoryPool() override;
70824 
70835  virtual void checkDataMemberPointersIfInMemoryPool() override;
70836 
70837  // DQ (4/30/2006): Modified to be a const function.
70852  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
70853 
70863  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
70864 
70876  virtual long getChildIndex( SgNode* childNode ) const override;
70877 
70878  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
70879  // comment here (changed to be a C style comment and not be a doxygen comment).
70880  /* \brief Constructor for use by AST File I/O Mechanism
70881 
70882  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
70883  which obtained via fast binary file I/O from disk.
70884  */
70885  // SgTypeOfType( SgTypeOfTypeStorageClass& source );
70886 
70887 
70888 
70889 
70890 
70891  // JH (10/24/2005): methods added to support the ast file IO
70892  private:
70893 
70894  /* name AST Memory Allocation Support Functions
70895  \brief Memory allocations support....
70896 
70897  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
70898  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
70899  and support the AST File I/O Mechanism.
70900  */
70901  /* */
70902 
70903  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
70904  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
70905  that I use the same type everywhere, if any changes are made. THe second one declares the type
70906  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
70907  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
70908  a correspinding one in the AST_FILE_IO class!
70909  */
70910  // DQ (9/2/2015): This typedef is no longer used, we can't define the
70911  // comment here (changed to be a C style comment and not be a doxygen comment).
70912  /* \brief Typedef used for low level memory access.
70913  */
70914  // typedef unsigned char* TestType;
70915 
70916  // DQ (9/2/2015): This typedef is no longer used, we can't define the
70917  // comment here (changed to be a C style comment and not be a doxygen comment).
70918  /* \brief Typedef used to hold memory addresses as values.
70919  */
70920  // typedef unsigned long AddressType;
70921 
70922 
70923 
70924  // necessary, to have direct access to the p_freepointer and the private methods !
70926  friend class AST_FILE_IO;
70927 
70929  friend class SgTypeOfTypeStorageClass;
70930 
70932  friend class AstSpecificDataManagingClass;
70933 
70935  friend class AstSpecificDataManagingClassStorageClass;
70936 
70937  public:
70939  SgTypeOfType( const SgTypeOfTypeStorageClass& source );
70940 
70941  // private: // JJW hack
70942  /*
70943  name AST Memory Allocation Support Variables
70944  Memory allocations support variables
70945 
70946  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
70947  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
70948  and support the AST File I/O Mechanism.
70949  */
70950  /* */
70951 
70952  public:
70953 
70954  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
70955  // to current node (so that it will work cleanly with build functions to specify patterns).
70956  // virtual SgNode* addRegExpAttribute();
70963 
70964 // *** COMMON CODE SECTION ENDS HERE ***
70965 
70966 
70967 // End of memberFunctionString
70968 // Start of memberFunctionString
70969 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
70970 
70971  // the generated cast function
70972  // friend ROSE_DLL_API SgTypeOfType* isSgTypeOfType ( SgNode* s );
70973 
70974  typedef SgType base_node_type;
70975 
70976 
70977 // End of memberFunctionString
70978 // Start of memberFunctionString
70979 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
70980 
70981  // SgName get_mangled ( SgUnparse_Info & info );
70982 
70984  // SgName get_mangled ( SgUnparse_Info & info );
70985  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
70986  virtual SgName get_mangled (void) const override;
70987 
70988 
70989 
70990 // End of memberFunctionString
70991 
70992  public:
70993  SgExpression* get_base_expression() const;
70994  void set_base_expression(SgExpression* base_expression);
70995 
70996 
70997 
70998  public:
70999  virtual ~SgTypeOfType();
71000 
71001 
71002  public:
71003  SgTypeOfType(SgExpression* base_expression = NULL, SgType* base_type = NULL);
71004 
71005  protected:
71006 // Start of memberFunctionString
71007 SgExpression* p_base_expression;
71008 
71009 // End of memberFunctionString
71010 // Start of memberFunctionString
71011 SgType* p_base_type;
71012 
71013 // End of memberFunctionString
71014 
71015 
71016 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
71017 
71018 
71019  };
71020 #endif
71021 
71022 // postdeclarations for SgTypeOfType
71023 
71024 /* #line 71025 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
71025 
71026 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
71027 
71028 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
71029 
71030 
71031 /* #line 71032 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
71032 
71033 
71034 
71035 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
71036 
71037 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
71038 // This code is automatically generated for each
71039 // terminal and non-terminal within the defined
71040 // grammar. There is a simple way to change the
71041 // code to fix bugs etc. See the ROSE README file
71042 // for directions.
71043 
71044 // tps: (02/22/2010): Adding DLL export requirements
71045 #include "rosedll.h"
71046 
71047 // predeclarations for SgTypeMatrix
71048 
71049 /* #line 71050 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
71050 
71051 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
71052 
71053 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
71054 
71055 #if 1
71056 // Class Definition for SgTypeMatrix
71057 class ROSE_DLL_API SgTypeMatrix : public SgType
71058  {
71059  public:
71060 
71061 
71062 /* #line 71063 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
71063 
71064  virtual SgNode* copy ( SgCopyHelp& help) const override;
71065 // Start of memberFunctionString
71066 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
71067 
71068 // *** COMMON CODE SECTION BEGINS HERE ***
71069 
71070  public:
71071 
71072  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
71073  // and not required which is required to match the other aspects of the copy mechanism code generation.
71074  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
71075  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
71076  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
71077  // virtual SgNode* copy ( const SgCopyHelp & help) const;
71078 
71080  virtual std::string class_name() const override;
71081 
71083  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
71084 
71086  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
71087  // static const VariantT static_variant = V_SgTypeMatrix;
71088  enum { static_variant = V_SgTypeMatrix };
71089 
71090  /* the generated cast function */
71092  ROSE_DLL_API friend SgTypeMatrix* isSgTypeMatrix( SgNode * s );
71093 
71095  ROSE_DLL_API friend const SgTypeMatrix* isSgTypeMatrix( const SgNode * s );
71096 
71097  // ******************************************
71098  // * Memory Pool / New / Delete
71099  // ******************************************
71100 
71101  public:
71103  static const unsigned pool_size; //
71105  static std::vector<unsigned char *> pools; //
71107  static SgTypeMatrix * next_node; //
71108 
71110  static unsigned long initializeStorageClassArray(SgTypeMatrixStorageClass *); //
71111 
71113  static void clearMemoryPool(); //
71114  static void deleteMemoryPool(); //
71115 
71117  static void extendMemoryPoolForFileIO(); //
71118 
71120  static SgTypeMatrix * getPointerFromGlobalIndex(unsigned long); //
71122  static SgTypeMatrix * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
71123 
71125  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
71127  static void resetValidFreepointers(); //
71129  static unsigned long getNumberOfLastValidPointer(); //
71130 
71131 
71132 #if defined(INLINE_FUNCTIONS)
71133 
71134  inline void *operator new (size_t size);
71135 #else
71136 
71137  void *operator new (size_t size);
71138 #endif
71139 
71140  void operator delete (void* pointer, size_t size);
71141 
71142  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
71143  void operator delete (void* pointer)
71144  {
71145  // This is the generated delete operator...
71146  SgTypeMatrix::operator delete (pointer,sizeof(SgTypeMatrix));
71147  }
71148 
71150  static size_t numberOfNodes();
71151 
71153  static size_t memoryUsage();
71154 
71155  // End of scope which started in IR nodes specific code
71156  /* */
71157 
71158  /* name Internal Functions
71159  \brief Internal functions ... incomplete-documentation
71160 
71161  These functions have been made public as part of the design, but they are suggested for internal use
71162  or by particularly knowledgeable users for specialized tools or applications.
71163 
71164  \internal We could not make these private because they are required by user for special purposes. And
71165  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
71166 
71167  */
71168 
71169  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
71170  // overridden in every class by *generated* implementation
71172  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
71173  // MS: 06/28/02 container of names of variables or container indices
71174  // used used in the traversal to access AST successor nodes
71175  // overridden in every class by *generated* implementation
71178  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
71179 
71180  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
71181  // than all the vector copies. The implementation for these functions is generated for each class.
71183  virtual size_t get_numberOfTraversalSuccessors() override;
71185  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
71187  virtual size_t get_childIndex(SgNode *child) override;
71188 
71189 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
71190  // MS: 08/16/2002 method for generating RTI information
71192  virtual RTIReturnType roseRTI() override;
71193 #endif
71194  /* */
71195 
71196 
71197 
71198  /* name Deprecated Functions
71199  \brief Deprecated functions ... incomplete-documentation
71200 
71201  These functions have been deprecated from use.
71202  */
71203  /* */
71204 
71206  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
71207 
71208  // JJW (10/16/2008): Changed to a single function in Node.code, and put
71209  // getVariant() in #if 0 block to prevent confusing Doxygen
71210 #if 0
71211 
71212  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
71214  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
71215 #endif
71216  /* */
71217 
71218 
71219 
71220 
71221  public:
71222  /* name Traversal Support Functions
71223  \brief Traversal support functions ... incomplete-documentation
71224 
71225  These functions have been made public as part of the design, but they are suggested for internal use
71226  or by particularly knowledgable users for specialized tools or applications.
71227  */
71228  /* */
71229 
71230  // DQ (11/26/2005): Support for visitor pattern mechanims
71231  // (inferior to ROSE traversal mechanism, experimental).
71235 
71236  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
71238  virtual void accept (ROSE_VisitorPattern & visitor) override;
71239 
71240  // DQ (12/26/2005): Support for traversal based on the memory pool
71243  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
71244 
71248 
71249  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
71250  // This traversal helps support internal tools that call static member functions.
71251  // note: this function operates on the memory pools.
71254  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
71255  /* */
71256 
71257 
71258  public:
71259  /* name Memory Allocation Functions
71260  \brief Memory allocations functions ... incomplete-documentation
71261 
71262  These functions have been made public as part of the design, but they are suggested for internal use
71263  or by particularly knowledgable users for specialized tools or applications.
71264  */
71265  /* */
71266 
71277  virtual bool isInMemoryPool() override;
71278 
71289  virtual void checkDataMemberPointersIfInMemoryPool() override;
71290 
71291  // DQ (4/30/2006): Modified to be a const function.
71306  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
71307 
71317  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
71318 
71330  virtual long getChildIndex( SgNode* childNode ) const override;
71331 
71332  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
71333  // comment here (changed to be a C style comment and not be a doxygen comment).
71334  /* \brief Constructor for use by AST File I/O Mechanism
71335 
71336  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
71337  which obtained via fast binary file I/O from disk.
71338  */
71339  // SgTypeMatrix( SgTypeMatrixStorageClass& source );
71340 
71341 
71342 
71343 
71344 
71345  // JH (10/24/2005): methods added to support the ast file IO
71346  private:
71347 
71348  /* name AST Memory Allocation Support Functions
71349  \brief Memory allocations support....
71350 
71351  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
71352  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
71353  and support the AST File I/O Mechanism.
71354  */
71355  /* */
71356 
71357  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
71358  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
71359  that I use the same type everywhere, if any changes are made. THe second one declares the type
71360  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
71361  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
71362  a correspinding one in the AST_FILE_IO class!
71363  */
71364  // DQ (9/2/2015): This typedef is no longer used, we can't define the
71365  // comment here (changed to be a C style comment and not be a doxygen comment).
71366  /* \brief Typedef used for low level memory access.
71367  */
71368  // typedef unsigned char* TestType;
71369 
71370  // DQ (9/2/2015): This typedef is no longer used, we can't define the
71371  // comment here (changed to be a C style comment and not be a doxygen comment).
71372  /* \brief Typedef used to hold memory addresses as values.
71373  */
71374  // typedef unsigned long AddressType;
71375 
71376 
71377 
71378  // necessary, to have direct access to the p_freepointer and the private methods !
71380  friend class AST_FILE_IO;
71381 
71383  friend class SgTypeMatrixStorageClass;
71384 
71386  friend class AstSpecificDataManagingClass;
71387 
71389  friend class AstSpecificDataManagingClassStorageClass;
71390 
71391  public:
71393  SgTypeMatrix( const SgTypeMatrixStorageClass& source );
71394 
71395  // private: // JJW hack
71396  /*
71397  name AST Memory Allocation Support Variables
71398  Memory allocations support variables
71399 
71400  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
71401  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
71402  and support the AST File I/O Mechanism.
71403  */
71404  /* */
71405 
71406  public:
71407 
71408  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
71409  // to current node (so that it will work cleanly with build functions to specify patterns).
71410  // virtual SgNode* addRegExpAttribute();
71417 
71418 // *** COMMON CODE SECTION ENDS HERE ***
71419 
71420 
71421 // End of memberFunctionString
71422 // Start of memberFunctionString
71423 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
71424 
71425  // the generated cast function
71426  // friend ROSE_DLL_API SgTypeMatrix* isSgTypeMatrix ( SgNode* s );
71427 
71428  typedef SgType base_node_type;
71429 
71430 
71431 // End of memberFunctionString
71432 // Start of memberFunctionString
71433 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
71434 
71435  // SgName get_mangled ( SgUnparse_Info & info );
71436 
71438  // SgName get_mangled ( SgUnparse_Info & info );
71439  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
71440  virtual SgName get_mangled (void) const override;
71441 
71442 
71443 
71444 // End of memberFunctionString
71445 // Start of memberFunctionString
71446 /* #line 267 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
71447 
71449  // DQ (1/31/2006): Modified to build all types in the memory pools
71450  // static SgTypeMatrix builtin_type;
71451  // static SgTypeMatrix* builtin_type;
71452 
71453  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
71454  // since we don't store the type explicitly anymore except in a few IR nodes which have there
71455  // own data member and associated access function.
71456  // static SgTypeMatrix* get_builtin_type();
71457 
71458  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
71459  // since we don't store the type explicitly anymore except in a few IR nodes which have there
71460  // own data member and associated access function.
71461  // static void set_builtin_type(SgTypeMatrix* builtin_type);
71462 
71464  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
71465  // static SgTypeMatrix* createType(void);
71466  static SgTypeMatrix* createType(SgExpression* optional_fortran_type_kind = NULL);
71467 
71468 
71469 // End of memberFunctionString
71470 
71471 
71472  public:
71473  SgType* get_base_type() const;
71474  void set_base_type(SgType* base_type);
71475 
71476 
71477  public:
71478  virtual ~SgTypeMatrix();
71479 
71480 
71481  public:
71482  SgTypeMatrix();
71483 
71484  protected:
71485 // Start of memberFunctionString
71486 static SgTypeMatrix* p_builtin_type;
71487 
71488 // End of memberFunctionString
71489 // Start of memberFunctionString
71490 SgType* p_base_type;
71491 
71492 // End of memberFunctionString
71493 
71494 
71495 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
71496 
71497 
71498  };
71499 #endif
71500 
71501 // postdeclarations for SgTypeMatrix
71502 
71503 /* #line 71504 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
71504 
71505 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
71506 
71507 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
71508 
71509 
71510 /* #line 71511 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
71511 
71512 
71513 
71514 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
71515 
71516 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
71517 // This code is automatically generated for each
71518 // terminal and non-terminal within the defined
71519 // grammar. There is a simple way to change the
71520 // code to fix bugs etc. See the ROSE README file
71521 // for directions.
71522 
71523 // tps: (02/22/2010): Adding DLL export requirements
71524 #include "rosedll.h"
71525 
71526 // predeclarations for SgTypeTuple
71527 
71528 /* #line 71529 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
71529 
71530 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
71531 
71532 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
71533 
71534 #if 1
71535 // Class Definition for SgTypeTuple
71536 class ROSE_DLL_API SgTypeTuple : public SgType
71537  {
71538  public:
71539 
71540 
71541 /* #line 71542 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
71542 
71543  virtual SgNode* copy ( SgCopyHelp& help) const override;
71544 // Start of memberFunctionString
71545 /* #line 917 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
71546 
71547  SgTypePtrList& get_types();
71548  const SgTypePtrList& get_types() const;
71549 
71550  void prepend_type(SgType *what);
71551  void append_type(SgType *what);
71552 
71553 
71554 
71555 // End of memberFunctionString
71556 // Start of memberFunctionString
71557 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
71558 
71559 // *** COMMON CODE SECTION BEGINS HERE ***
71560 
71561  public:
71562 
71563  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
71564  // and not required which is required to match the other aspects of the copy mechanism code generation.
71565  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
71566  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
71567  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
71568  // virtual SgNode* copy ( const SgCopyHelp & help) const;
71569 
71571  virtual std::string class_name() const override;
71572 
71574  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
71575 
71577  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
71578  // static const VariantT static_variant = V_SgTypeTuple;
71579  enum { static_variant = V_SgTypeTuple };
71580 
71581  /* the generated cast function */
71583  ROSE_DLL_API friend SgTypeTuple* isSgTypeTuple( SgNode * s );
71584 
71586  ROSE_DLL_API friend const SgTypeTuple* isSgTypeTuple( const SgNode * s );
71587 
71588  // ******************************************
71589  // * Memory Pool / New / Delete
71590  // ******************************************
71591 
71592  public:
71594  static const unsigned pool_size; //
71596  static std::vector<unsigned char *> pools; //
71598  static SgTypeTuple * next_node; //
71599 
71601  static unsigned long initializeStorageClassArray(SgTypeTupleStorageClass *); //
71602 
71604  static void clearMemoryPool(); //
71605  static void deleteMemoryPool(); //
71606 
71608  static void extendMemoryPoolForFileIO(); //
71609 
71611  static SgTypeTuple * getPointerFromGlobalIndex(unsigned long); //
71613  static SgTypeTuple * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
71614 
71616  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
71618  static void resetValidFreepointers(); //
71620  static unsigned long getNumberOfLastValidPointer(); //
71621 
71622 
71623 #if defined(INLINE_FUNCTIONS)
71624 
71625  inline void *operator new (size_t size);
71626 #else
71627 
71628  void *operator new (size_t size);
71629 #endif
71630 
71631  void operator delete (void* pointer, size_t size);
71632 
71633  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
71634  void operator delete (void* pointer)
71635  {
71636  // This is the generated delete operator...
71637  SgTypeTuple::operator delete (pointer,sizeof(SgTypeTuple));
71638  }
71639 
71641  static size_t numberOfNodes();
71642 
71644  static size_t memoryUsage();
71645 
71646  // End of scope which started in IR nodes specific code
71647  /* */
71648 
71649  /* name Internal Functions
71650  \brief Internal functions ... incomplete-documentation
71651 
71652  These functions have been made public as part of the design, but they are suggested for internal use
71653  or by particularly knowledgeable users for specialized tools or applications.
71654 
71655  \internal We could not make these private because they are required by user for special purposes. And
71656  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
71657 
71658  */
71659 
71660  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
71661  // overridden in every class by *generated* implementation
71663  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
71664  // MS: 06/28/02 container of names of variables or container indices
71665  // used used in the traversal to access AST successor nodes
71666  // overridden in every class by *generated* implementation
71669  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
71670 
71671  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
71672  // than all the vector copies. The implementation for these functions is generated for each class.
71674  virtual size_t get_numberOfTraversalSuccessors() override;
71676  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
71678  virtual size_t get_childIndex(SgNode *child) override;
71679 
71680 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
71681  // MS: 08/16/2002 method for generating RTI information
71683  virtual RTIReturnType roseRTI() override;
71684 #endif
71685  /* */
71686 
71687 
71688 
71689  /* name Deprecated Functions
71690  \brief Deprecated functions ... incomplete-documentation
71691 
71692  These functions have been deprecated from use.
71693  */
71694  /* */
71695 
71697  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
71698 
71699  // JJW (10/16/2008): Changed to a single function in Node.code, and put
71700  // getVariant() in #if 0 block to prevent confusing Doxygen
71701 #if 0
71702 
71703  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
71705  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
71706 #endif
71707  /* */
71708 
71709 
71710 
71711 
71712  public:
71713  /* name Traversal Support Functions
71714  \brief Traversal support functions ... incomplete-documentation
71715 
71716  These functions have been made public as part of the design, but they are suggested for internal use
71717  or by particularly knowledgable users for specialized tools or applications.
71718  */
71719  /* */
71720 
71721  // DQ (11/26/2005): Support for visitor pattern mechanims
71722  // (inferior to ROSE traversal mechanism, experimental).
71726 
71727  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
71729  virtual void accept (ROSE_VisitorPattern & visitor) override;
71730 
71731  // DQ (12/26/2005): Support for traversal based on the memory pool
71734  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
71735 
71739 
71740  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
71741  // This traversal helps support internal tools that call static member functions.
71742  // note: this function operates on the memory pools.
71745  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
71746  /* */
71747 
71748 
71749  public:
71750  /* name Memory Allocation Functions
71751  \brief Memory allocations functions ... incomplete-documentation
71752 
71753  These functions have been made public as part of the design, but they are suggested for internal use
71754  or by particularly knowledgable users for specialized tools or applications.
71755  */
71756  /* */
71757 
71768  virtual bool isInMemoryPool() override;
71769 
71780  virtual void checkDataMemberPointersIfInMemoryPool() override;
71781 
71782  // DQ (4/30/2006): Modified to be a const function.
71797  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
71798 
71808  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
71809 
71821  virtual long getChildIndex( SgNode* childNode ) const override;
71822 
71823  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
71824  // comment here (changed to be a C style comment and not be a doxygen comment).
71825  /* \brief Constructor for use by AST File I/O Mechanism
71826 
71827  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
71828  which obtained via fast binary file I/O from disk.
71829  */
71830  // SgTypeTuple( SgTypeTupleStorageClass& source );
71831 
71832 
71833 
71834 
71835 
71836  // JH (10/24/2005): methods added to support the ast file IO
71837  private:
71838 
71839  /* name AST Memory Allocation Support Functions
71840  \brief Memory allocations support....
71841 
71842  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
71843  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
71844  and support the AST File I/O Mechanism.
71845  */
71846  /* */
71847 
71848  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
71849  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
71850  that I use the same type everywhere, if any changes are made. THe second one declares the type
71851  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
71852  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
71853  a correspinding one in the AST_FILE_IO class!
71854  */
71855  // DQ (9/2/2015): This typedef is no longer used, we can't define the
71856  // comment here (changed to be a C style comment and not be a doxygen comment).
71857  /* \brief Typedef used for low level memory access.
71858  */
71859  // typedef unsigned char* TestType;
71860 
71861  // DQ (9/2/2015): This typedef is no longer used, we can't define the
71862  // comment here (changed to be a C style comment and not be a doxygen comment).
71863  /* \brief Typedef used to hold memory addresses as values.
71864  */
71865  // typedef unsigned long AddressType;
71866 
71867 
71868 
71869  // necessary, to have direct access to the p_freepointer and the private methods !
71871  friend class AST_FILE_IO;
71872 
71874  friend class SgTypeTupleStorageClass;
71875 
71877  friend class AstSpecificDataManagingClass;
71878 
71880  friend class AstSpecificDataManagingClassStorageClass;
71881 
71882  public:
71884  SgTypeTuple( const SgTypeTupleStorageClass& source );
71885 
71886  // private: // JJW hack
71887  /*
71888  name AST Memory Allocation Support Variables
71889  Memory allocations support variables
71890 
71891  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
71892  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
71893  and support the AST File I/O Mechanism.
71894  */
71895  /* */
71896 
71897  public:
71898 
71899  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
71900  // to current node (so that it will work cleanly with build functions to specify patterns).
71901  // virtual SgNode* addRegExpAttribute();
71907  SgTypeTuple* addRegExpAttribute(std::string s, AstRegExAttribute* a);
71908 
71909 // *** COMMON CODE SECTION ENDS HERE ***
71910 
71911 
71912 // End of memberFunctionString
71913 // Start of memberFunctionString
71914 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
71915 
71916  // the generated cast function
71917  // friend ROSE_DLL_API SgTypeTuple* isSgTypeTuple ( SgNode* s );
71918 
71919  typedef SgType base_node_type;
71920 
71921 
71922 // End of memberFunctionString
71923 // Start of memberFunctionString
71924 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
71925 
71926  // SgName get_mangled ( SgUnparse_Info & info );
71927 
71929  // SgName get_mangled ( SgUnparse_Info & info );
71930  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
71931  virtual SgName get_mangled (void) const override;
71932 
71933 
71934 
71935 // End of memberFunctionString
71936 // Start of memberFunctionString
71937 /* #line 267 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
71938 
71940  // DQ (1/31/2006): Modified to build all types in the memory pools
71941  // static SgTypeTuple builtin_type;
71942  // static SgTypeTuple* builtin_type;
71943 
71944  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
71945  // since we don't store the type explicitly anymore except in a few IR nodes which have there
71946  // own data member and associated access function.
71947  // static SgTypeTuple* get_builtin_type();
71948 
71949  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
71950  // since we don't store the type explicitly anymore except in a few IR nodes which have there
71951  // own data member and associated access function.
71952  // static void set_builtin_type(SgTypeTuple* builtin_type);
71953 
71955  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
71956  // static SgTypeTuple* createType(void);
71957  static SgTypeTuple* createType(SgExpression* optional_fortran_type_kind = NULL);
71958 
71959 
71960 // End of memberFunctionString
71961 
71962 
71963 
71964 
71965  public:
71966  virtual ~SgTypeTuple();
71967 
71968 
71969  public:
71970  SgTypeTuple();
71971 
71972  protected:
71973 // Start of memberFunctionString
71974 static SgTypeTuple* p_builtin_type;
71975 
71976 // End of memberFunctionString
71977 // Start of memberFunctionString
71978 SgTypePtrList p_types;
71979 
71980 // End of memberFunctionString
71981 
71982 
71983 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
71984 
71985 
71986  };
71987 #endif
71988 
71989 // postdeclarations for SgTypeTuple
71990 
71991 /* #line 71992 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
71992 
71993 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
71994 
71995 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
71996 
71997 
71998 /* #line 71999 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
71999 
72000 
72001 
72002 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
72003 
72004 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
72005 // This code is automatically generated for each
72006 // terminal and non-terminal within the defined
72007 // grammar. There is a simple way to change the
72008 // code to fix bugs etc. See the ROSE README file
72009 // for directions.
72010 
72011 // tps: (02/22/2010): Adding DLL export requirements
72012 #include "rosedll.h"
72013 
72014 // predeclarations for SgTypeChar16
72015 
72016 /* #line 72017 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
72017 
72018 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
72019 
72020 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
72021 
72022 #if 1
72023 // Class Definition for SgTypeChar16
72024 class ROSE_DLL_API SgTypeChar16 : public SgType
72025  {
72026  public:
72027 
72028 
72029 /* #line 72030 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
72030 
72031  virtual SgNode* copy ( SgCopyHelp& help) const override;
72032 // Start of memberFunctionString
72033 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
72034 
72035 // *** COMMON CODE SECTION BEGINS HERE ***
72036 
72037  public:
72038 
72039  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
72040  // and not required which is required to match the other aspects of the copy mechanism code generation.
72041  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
72042  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
72043  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
72044  // virtual SgNode* copy ( const SgCopyHelp & help) const;
72045 
72047  virtual std::string class_name() const override;
72048 
72050  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
72051 
72053  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
72054  // static const VariantT static_variant = V_SgTypeChar16;
72055  enum { static_variant = V_SgTypeChar16 };
72056 
72057  /* the generated cast function */
72059  ROSE_DLL_API friend SgTypeChar16* isSgTypeChar16( SgNode * s );
72060 
72062  ROSE_DLL_API friend const SgTypeChar16* isSgTypeChar16( const SgNode * s );
72063 
72064  // ******************************************
72065  // * Memory Pool / New / Delete
72066  // ******************************************
72067 
72068  public:
72070  static const unsigned pool_size; //
72072  static std::vector<unsigned char *> pools; //
72074  static SgTypeChar16 * next_node; //
72075 
72077  static unsigned long initializeStorageClassArray(SgTypeChar16StorageClass *); //
72078 
72080  static void clearMemoryPool(); //
72081  static void deleteMemoryPool(); //
72082 
72084  static void extendMemoryPoolForFileIO(); //
72085 
72087  static SgTypeChar16 * getPointerFromGlobalIndex(unsigned long); //
72089  static SgTypeChar16 * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
72090 
72092  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
72094  static void resetValidFreepointers(); //
72096  static unsigned long getNumberOfLastValidPointer(); //
72097 
72098 
72099 #if defined(INLINE_FUNCTIONS)
72100 
72101  inline void *operator new (size_t size);
72102 #else
72103 
72104  void *operator new (size_t size);
72105 #endif
72106 
72107  void operator delete (void* pointer, size_t size);
72108 
72109  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
72110  void operator delete (void* pointer)
72111  {
72112  // This is the generated delete operator...
72113  SgTypeChar16::operator delete (pointer,sizeof(SgTypeChar16));
72114  }
72115 
72117  static size_t numberOfNodes();
72118 
72120  static size_t memoryUsage();
72121 
72122  // End of scope which started in IR nodes specific code
72123  /* */
72124 
72125  /* name Internal Functions
72126  \brief Internal functions ... incomplete-documentation
72127 
72128  These functions have been made public as part of the design, but they are suggested for internal use
72129  or by particularly knowledgeable users for specialized tools or applications.
72130 
72131  \internal We could not make these private because they are required by user for special purposes. And
72132  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
72133 
72134  */
72135 
72136  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
72137  // overridden in every class by *generated* implementation
72139  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
72140  // MS: 06/28/02 container of names of variables or container indices
72141  // used used in the traversal to access AST successor nodes
72142  // overridden in every class by *generated* implementation
72145  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
72146 
72147  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
72148  // than all the vector copies. The implementation for these functions is generated for each class.
72150  virtual size_t get_numberOfTraversalSuccessors() override;
72152  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
72154  virtual size_t get_childIndex(SgNode *child) override;
72155 
72156 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
72157  // MS: 08/16/2002 method for generating RTI information
72159  virtual RTIReturnType roseRTI() override;
72160 #endif
72161  /* */
72162 
72163 
72164 
72165  /* name Deprecated Functions
72166  \brief Deprecated functions ... incomplete-documentation
72167 
72168  These functions have been deprecated from use.
72169  */
72170  /* */
72171 
72173  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
72174 
72175  // JJW (10/16/2008): Changed to a single function in Node.code, and put
72176  // getVariant() in #if 0 block to prevent confusing Doxygen
72177 #if 0
72178 
72179  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
72181  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
72182 #endif
72183  /* */
72184 
72185 
72186 
72187 
72188  public:
72189  /* name Traversal Support Functions
72190  \brief Traversal support functions ... incomplete-documentation
72191 
72192  These functions have been made public as part of the design, but they are suggested for internal use
72193  or by particularly knowledgable users for specialized tools or applications.
72194  */
72195  /* */
72196 
72197  // DQ (11/26/2005): Support for visitor pattern mechanims
72198  // (inferior to ROSE traversal mechanism, experimental).
72202 
72203  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
72205  virtual void accept (ROSE_VisitorPattern & visitor) override;
72206 
72207  // DQ (12/26/2005): Support for traversal based on the memory pool
72210  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
72211 
72215 
72216  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
72217  // This traversal helps support internal tools that call static member functions.
72218  // note: this function operates on the memory pools.
72221  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
72222  /* */
72223 
72224 
72225  public:
72226  /* name Memory Allocation Functions
72227  \brief Memory allocations functions ... incomplete-documentation
72228 
72229  These functions have been made public as part of the design, but they are suggested for internal use
72230  or by particularly knowledgable users for specialized tools or applications.
72231  */
72232  /* */
72233 
72244  virtual bool isInMemoryPool() override;
72245 
72256  virtual void checkDataMemberPointersIfInMemoryPool() override;
72257 
72258  // DQ (4/30/2006): Modified to be a const function.
72273  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
72274 
72284  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
72285 
72297  virtual long getChildIndex( SgNode* childNode ) const override;
72298 
72299  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
72300  // comment here (changed to be a C style comment and not be a doxygen comment).
72301  /* \brief Constructor for use by AST File I/O Mechanism
72302 
72303  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
72304  which obtained via fast binary file I/O from disk.
72305  */
72306  // SgTypeChar16( SgTypeChar16StorageClass& source );
72307 
72308 
72309 
72310 
72311 
72312  // JH (10/24/2005): methods added to support the ast file IO
72313  private:
72314 
72315  /* name AST Memory Allocation Support Functions
72316  \brief Memory allocations support....
72317 
72318  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
72319  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
72320  and support the AST File I/O Mechanism.
72321  */
72322  /* */
72323 
72324  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
72325  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
72326  that I use the same type everywhere, if any changes are made. THe second one declares the type
72327  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
72328  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
72329  a correspinding one in the AST_FILE_IO class!
72330  */
72331  // DQ (9/2/2015): This typedef is no longer used, we can't define the
72332  // comment here (changed to be a C style comment and not be a doxygen comment).
72333  /* \brief Typedef used for low level memory access.
72334  */
72335  // typedef unsigned char* TestType;
72336 
72337  // DQ (9/2/2015): This typedef is no longer used, we can't define the
72338  // comment here (changed to be a C style comment and not be a doxygen comment).
72339  /* \brief Typedef used to hold memory addresses as values.
72340  */
72341  // typedef unsigned long AddressType;
72342 
72343 
72344 
72345  // necessary, to have direct access to the p_freepointer and the private methods !
72347  friend class AST_FILE_IO;
72348 
72350  friend class SgTypeChar16StorageClass;
72351 
72353  friend class AstSpecificDataManagingClass;
72354 
72356  friend class AstSpecificDataManagingClassStorageClass;
72357 
72358  public:
72360  SgTypeChar16( const SgTypeChar16StorageClass& source );
72361 
72362  // private: // JJW hack
72363  /*
72364  name AST Memory Allocation Support Variables
72365  Memory allocations support variables
72366 
72367  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
72368  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
72369  and support the AST File I/O Mechanism.
72370  */
72371  /* */
72372 
72373  public:
72374 
72375  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
72376  // to current node (so that it will work cleanly with build functions to specify patterns).
72377  // virtual SgNode* addRegExpAttribute();
72384 
72385 // *** COMMON CODE SECTION ENDS HERE ***
72386 
72387 
72388 // End of memberFunctionString
72389 // Start of memberFunctionString
72390 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
72391 
72392  // the generated cast function
72393  // friend ROSE_DLL_API SgTypeChar16* isSgTypeChar16 ( SgNode* s );
72394 
72395  typedef SgType base_node_type;
72396 
72397 
72398 // End of memberFunctionString
72399 // Start of memberFunctionString
72400 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
72401 
72402  // SgName get_mangled ( SgUnparse_Info & info );
72403 
72405  // SgName get_mangled ( SgUnparse_Info & info );
72406  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
72407  virtual SgName get_mangled (void) const override;
72408 
72409 
72410 
72411 // End of memberFunctionString
72412 // Start of memberFunctionString
72413 /* #line 267 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
72414 
72416  // DQ (1/31/2006): Modified to build all types in the memory pools
72417  // static SgTypeChar16 builtin_type;
72418  // static SgTypeChar16* builtin_type;
72419 
72420  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
72421  // since we don't store the type explicitly anymore except in a few IR nodes which have there
72422  // own data member and associated access function.
72423  // static SgTypeChar16* get_builtin_type();
72424 
72425  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
72426  // since we don't store the type explicitly anymore except in a few IR nodes which have there
72427  // own data member and associated access function.
72428  // static void set_builtin_type(SgTypeChar16* builtin_type);
72429 
72431  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
72432  // static SgTypeChar16* createType(void);
72433  static SgTypeChar16* createType(SgExpression* optional_fortran_type_kind = NULL);
72434 
72435 
72436 // End of memberFunctionString
72437 
72438 
72439 
72440  public:
72441  virtual ~SgTypeChar16();
72442 
72443 
72444  public:
72445  SgTypeChar16();
72446 
72447  protected:
72448 // Start of memberFunctionString
72449 static SgTypeChar16* p_builtin_type;
72450 
72451 // End of memberFunctionString
72452 
72453 
72454 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
72455 
72456 
72457  };
72458 #endif
72459 
72460 // postdeclarations for SgTypeChar16
72461 
72462 /* #line 72463 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
72463 
72464 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
72465 
72466 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
72467 
72468 
72469 /* #line 72470 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
72470 
72471 
72472 
72473 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
72474 
72475 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
72476 // This code is automatically generated for each
72477 // terminal and non-terminal within the defined
72478 // grammar. There is a simple way to change the
72479 // code to fix bugs etc. See the ROSE README file
72480 // for directions.
72481 
72482 // tps: (02/22/2010): Adding DLL export requirements
72483 #include "rosedll.h"
72484 
72485 // predeclarations for SgTypeChar32
72486 
72487 /* #line 72488 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
72488 
72489 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
72490 
72491 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
72492 
72493 #if 1
72494 // Class Definition for SgTypeChar32
72495 class ROSE_DLL_API SgTypeChar32 : public SgType
72496  {
72497  public:
72498 
72499 
72500 /* #line 72501 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
72501 
72502  virtual SgNode* copy ( SgCopyHelp& help) const override;
72503 // Start of memberFunctionString
72504 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
72505 
72506 // *** COMMON CODE SECTION BEGINS HERE ***
72507 
72508  public:
72509 
72510  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
72511  // and not required which is required to match the other aspects of the copy mechanism code generation.
72512  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
72513  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
72514  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
72515  // virtual SgNode* copy ( const SgCopyHelp & help) const;
72516 
72518  virtual std::string class_name() const override;
72519 
72521  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
72522 
72524  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
72525  // static const VariantT static_variant = V_SgTypeChar32;
72526  enum { static_variant = V_SgTypeChar32 };
72527 
72528  /* the generated cast function */
72530  ROSE_DLL_API friend SgTypeChar32* isSgTypeChar32( SgNode * s );
72531 
72533  ROSE_DLL_API friend const SgTypeChar32* isSgTypeChar32( const SgNode * s );
72534 
72535  // ******************************************
72536  // * Memory Pool / New / Delete
72537  // ******************************************
72538 
72539  public:
72541  static const unsigned pool_size; //
72543  static std::vector<unsigned char *> pools; //
72545  static SgTypeChar32 * next_node; //
72546 
72548  static unsigned long initializeStorageClassArray(SgTypeChar32StorageClass *); //
72549 
72551  static void clearMemoryPool(); //
72552  static void deleteMemoryPool(); //
72553 
72555  static void extendMemoryPoolForFileIO(); //
72556 
72558  static SgTypeChar32 * getPointerFromGlobalIndex(unsigned long); //
72560  static SgTypeChar32 * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
72561 
72563  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
72565  static void resetValidFreepointers(); //
72567  static unsigned long getNumberOfLastValidPointer(); //
72568 
72569 
72570 #if defined(INLINE_FUNCTIONS)
72571 
72572  inline void *operator new (size_t size);
72573 #else
72574 
72575  void *operator new (size_t size);
72576 #endif
72577 
72578  void operator delete (void* pointer, size_t size);
72579 
72580  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
72581  void operator delete (void* pointer)
72582  {
72583  // This is the generated delete operator...
72584  SgTypeChar32::operator delete (pointer,sizeof(SgTypeChar32));
72585  }
72586 
72588  static size_t numberOfNodes();
72589 
72591  static size_t memoryUsage();
72592 
72593  // End of scope which started in IR nodes specific code
72594  /* */
72595 
72596  /* name Internal Functions
72597  \brief Internal functions ... incomplete-documentation
72598 
72599  These functions have been made public as part of the design, but they are suggested for internal use
72600  or by particularly knowledgeable users for specialized tools or applications.
72601 
72602  \internal We could not make these private because they are required by user for special purposes. And
72603  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
72604 
72605  */
72606 
72607  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
72608  // overridden in every class by *generated* implementation
72610  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
72611  // MS: 06/28/02 container of names of variables or container indices
72612  // used used in the traversal to access AST successor nodes
72613  // overridden in every class by *generated* implementation
72616  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
72617 
72618  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
72619  // than all the vector copies. The implementation for these functions is generated for each class.
72621  virtual size_t get_numberOfTraversalSuccessors() override;
72623  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
72625  virtual size_t get_childIndex(SgNode *child) override;
72626 
72627 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
72628  // MS: 08/16/2002 method for generating RTI information
72630  virtual RTIReturnType roseRTI() override;
72631 #endif
72632  /* */
72633 
72634 
72635 
72636  /* name Deprecated Functions
72637  \brief Deprecated functions ... incomplete-documentation
72638 
72639  These functions have been deprecated from use.
72640  */
72641  /* */
72642 
72644  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
72645 
72646  // JJW (10/16/2008): Changed to a single function in Node.code, and put
72647  // getVariant() in #if 0 block to prevent confusing Doxygen
72648 #if 0
72649 
72650  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
72652  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
72653 #endif
72654  /* */
72655 
72656 
72657 
72658 
72659  public:
72660  /* name Traversal Support Functions
72661  \brief Traversal support functions ... incomplete-documentation
72662 
72663  These functions have been made public as part of the design, but they are suggested for internal use
72664  or by particularly knowledgable users for specialized tools or applications.
72665  */
72666  /* */
72667 
72668  // DQ (11/26/2005): Support for visitor pattern mechanims
72669  // (inferior to ROSE traversal mechanism, experimental).
72673 
72674  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
72676  virtual void accept (ROSE_VisitorPattern & visitor) override;
72677 
72678  // DQ (12/26/2005): Support for traversal based on the memory pool
72681  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
72682 
72686 
72687  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
72688  // This traversal helps support internal tools that call static member functions.
72689  // note: this function operates on the memory pools.
72692  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
72693  /* */
72694 
72695 
72696  public:
72697  /* name Memory Allocation Functions
72698  \brief Memory allocations functions ... incomplete-documentation
72699 
72700  These functions have been made public as part of the design, but they are suggested for internal use
72701  or by particularly knowledgable users for specialized tools or applications.
72702  */
72703  /* */
72704 
72715  virtual bool isInMemoryPool() override;
72716 
72727  virtual void checkDataMemberPointersIfInMemoryPool() override;
72728 
72729  // DQ (4/30/2006): Modified to be a const function.
72744  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
72745 
72755  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
72756 
72768  virtual long getChildIndex( SgNode* childNode ) const override;
72769 
72770  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
72771  // comment here (changed to be a C style comment and not be a doxygen comment).
72772  /* \brief Constructor for use by AST File I/O Mechanism
72773 
72774  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
72775  which obtained via fast binary file I/O from disk.
72776  */
72777  // SgTypeChar32( SgTypeChar32StorageClass& source );
72778 
72779 
72780 
72781 
72782 
72783  // JH (10/24/2005): methods added to support the ast file IO
72784  private:
72785 
72786  /* name AST Memory Allocation Support Functions
72787  \brief Memory allocations support....
72788 
72789  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
72790  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
72791  and support the AST File I/O Mechanism.
72792  */
72793  /* */
72794 
72795  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
72796  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
72797  that I use the same type everywhere, if any changes are made. THe second one declares the type
72798  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
72799  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
72800  a correspinding one in the AST_FILE_IO class!
72801  */
72802  // DQ (9/2/2015): This typedef is no longer used, we can't define the
72803  // comment here (changed to be a C style comment and not be a doxygen comment).
72804  /* \brief Typedef used for low level memory access.
72805  */
72806  // typedef unsigned char* TestType;
72807 
72808  // DQ (9/2/2015): This typedef is no longer used, we can't define the
72809  // comment here (changed to be a C style comment and not be a doxygen comment).
72810  /* \brief Typedef used to hold memory addresses as values.
72811  */
72812  // typedef unsigned long AddressType;
72813 
72814 
72815 
72816  // necessary, to have direct access to the p_freepointer and the private methods !
72818  friend class AST_FILE_IO;
72819 
72821  friend class SgTypeChar32StorageClass;
72822 
72824  friend class AstSpecificDataManagingClass;
72825 
72827  friend class AstSpecificDataManagingClassStorageClass;
72828 
72829  public:
72831  SgTypeChar32( const SgTypeChar32StorageClass& source );
72832 
72833  // private: // JJW hack
72834  /*
72835  name AST Memory Allocation Support Variables
72836  Memory allocations support variables
72837 
72838  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
72839  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
72840  and support the AST File I/O Mechanism.
72841  */
72842  /* */
72843 
72844  public:
72845 
72846  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
72847  // to current node (so that it will work cleanly with build functions to specify patterns).
72848  // virtual SgNode* addRegExpAttribute();
72855 
72856 // *** COMMON CODE SECTION ENDS HERE ***
72857 
72858 
72859 // End of memberFunctionString
72860 // Start of memberFunctionString
72861 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
72862 
72863  // the generated cast function
72864  // friend ROSE_DLL_API SgTypeChar32* isSgTypeChar32 ( SgNode* s );
72865 
72866  typedef SgType base_node_type;
72867 
72868 
72869 // End of memberFunctionString
72870 // Start of memberFunctionString
72871 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
72872 
72873  // SgName get_mangled ( SgUnparse_Info & info );
72874 
72876  // SgName get_mangled ( SgUnparse_Info & info );
72877  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
72878  virtual SgName get_mangled (void) const override;
72879 
72880 
72881 
72882 // End of memberFunctionString
72883 // Start of memberFunctionString
72884 /* #line 267 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
72885 
72887  // DQ (1/31/2006): Modified to build all types in the memory pools
72888  // static SgTypeChar32 builtin_type;
72889  // static SgTypeChar32* builtin_type;
72890 
72891  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
72892  // since we don't store the type explicitly anymore except in a few IR nodes which have there
72893  // own data member and associated access function.
72894  // static SgTypeChar32* get_builtin_type();
72895 
72896  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
72897  // since we don't store the type explicitly anymore except in a few IR nodes which have there
72898  // own data member and associated access function.
72899  // static void set_builtin_type(SgTypeChar32* builtin_type);
72900 
72902  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
72903  // static SgTypeChar32* createType(void);
72904  static SgTypeChar32* createType(SgExpression* optional_fortran_type_kind = NULL);
72905 
72906 
72907 // End of memberFunctionString
72908 
72909 
72910 
72911  public:
72912  virtual ~SgTypeChar32();
72913 
72914 
72915  public:
72916  SgTypeChar32();
72917 
72918  protected:
72919 // Start of memberFunctionString
72920 static SgTypeChar32* p_builtin_type;
72921 
72922 // End of memberFunctionString
72923 
72924 
72925 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
72926 
72927 
72928  };
72929 #endif
72930 
72931 // postdeclarations for SgTypeChar32
72932 
72933 /* #line 72934 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
72934 
72935 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
72936 
72937 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
72938 
72939 
72940 /* #line 72941 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
72941 
72942 
72943 
72944 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
72945 
72946 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
72947 // This code is automatically generated for each
72948 // terminal and non-terminal within the defined
72949 // grammar. There is a simple way to change the
72950 // code to fix bugs etc. See the ROSE README file
72951 // for directions.
72952 
72953 // tps: (02/22/2010): Adding DLL export requirements
72954 #include "rosedll.h"
72955 
72956 // predeclarations for SgTypeFloat128
72957 
72958 /* #line 72959 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
72959 
72960 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
72961 
72962 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
72963 
72964 #if 1
72965 // Class Definition for SgTypeFloat128
72966 class ROSE_DLL_API SgTypeFloat128 : public SgType
72967  {
72968  public:
72969 
72970 
72971 /* #line 72972 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
72972 
72973  virtual SgNode* copy ( SgCopyHelp& help) const override;
72974 // Start of memberFunctionString
72975 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
72976 
72977 // *** COMMON CODE SECTION BEGINS HERE ***
72978 
72979  public:
72980 
72981  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
72982  // and not required which is required to match the other aspects of the copy mechanism code generation.
72983  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
72984  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
72985  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
72986  // virtual SgNode* copy ( const SgCopyHelp & help) const;
72987 
72989  virtual std::string class_name() const override;
72990 
72992  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
72993 
72995  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
72996  // static const VariantT static_variant = V_SgTypeFloat128;
72997  enum { static_variant = V_SgTypeFloat128 };
72998 
72999  /* the generated cast function */
73001  ROSE_DLL_API friend SgTypeFloat128* isSgTypeFloat128( SgNode * s );
73002 
73004  ROSE_DLL_API friend const SgTypeFloat128* isSgTypeFloat128( const SgNode * s );
73005 
73006  // ******************************************
73007  // * Memory Pool / New / Delete
73008  // ******************************************
73009 
73010  public:
73012  static const unsigned pool_size; //
73014  static std::vector<unsigned char *> pools; //
73016  static SgTypeFloat128 * next_node; //
73017 
73019  static unsigned long initializeStorageClassArray(SgTypeFloat128StorageClass *); //
73020 
73022  static void clearMemoryPool(); //
73023  static void deleteMemoryPool(); //
73024 
73026  static void extendMemoryPoolForFileIO(); //
73027 
73029  static SgTypeFloat128 * getPointerFromGlobalIndex(unsigned long); //
73031  static SgTypeFloat128 * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
73032 
73034  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
73036  static void resetValidFreepointers(); //
73038  static unsigned long getNumberOfLastValidPointer(); //
73039 
73040 
73041 #if defined(INLINE_FUNCTIONS)
73042 
73043  inline void *operator new (size_t size);
73044 #else
73045 
73046  void *operator new (size_t size);
73047 #endif
73048 
73049  void operator delete (void* pointer, size_t size);
73050 
73051  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
73052  void operator delete (void* pointer)
73053  {
73054  // This is the generated delete operator...
73055  SgTypeFloat128::operator delete (pointer,sizeof(SgTypeFloat128));
73056  }
73057 
73059  static size_t numberOfNodes();
73060 
73062  static size_t memoryUsage();
73063 
73064  // End of scope which started in IR nodes specific code
73065  /* */
73066 
73067  /* name Internal Functions
73068  \brief Internal functions ... incomplete-documentation
73069 
73070  These functions have been made public as part of the design, but they are suggested for internal use
73071  or by particularly knowledgeable users for specialized tools or applications.
73072 
73073  \internal We could not make these private because they are required by user for special purposes. And
73074  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
73075 
73076  */
73077 
73078  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
73079  // overridden in every class by *generated* implementation
73081  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
73082  // MS: 06/28/02 container of names of variables or container indices
73083  // used used in the traversal to access AST successor nodes
73084  // overridden in every class by *generated* implementation
73087  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
73088 
73089  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
73090  // than all the vector copies. The implementation for these functions is generated for each class.
73092  virtual size_t get_numberOfTraversalSuccessors() override;
73094  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
73096  virtual size_t get_childIndex(SgNode *child) override;
73097 
73098 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
73099  // MS: 08/16/2002 method for generating RTI information
73101  virtual RTIReturnType roseRTI() override;
73102 #endif
73103  /* */
73104 
73105 
73106 
73107  /* name Deprecated Functions
73108  \brief Deprecated functions ... incomplete-documentation
73109 
73110  These functions have been deprecated from use.
73111  */
73112  /* */
73113 
73115  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
73116 
73117  // JJW (10/16/2008): Changed to a single function in Node.code, and put
73118  // getVariant() in #if 0 block to prevent confusing Doxygen
73119 #if 0
73120 
73121  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
73123  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
73124 #endif
73125  /* */
73126 
73127 
73128 
73129 
73130  public:
73131  /* name Traversal Support Functions
73132  \brief Traversal support functions ... incomplete-documentation
73133 
73134  These functions have been made public as part of the design, but they are suggested for internal use
73135  or by particularly knowledgable users for specialized tools or applications.
73136  */
73137  /* */
73138 
73139  // DQ (11/26/2005): Support for visitor pattern mechanims
73140  // (inferior to ROSE traversal mechanism, experimental).
73144 
73145  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
73147  virtual void accept (ROSE_VisitorPattern & visitor) override;
73148 
73149  // DQ (12/26/2005): Support for traversal based on the memory pool
73152  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
73153 
73157 
73158  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
73159  // This traversal helps support internal tools that call static member functions.
73160  // note: this function operates on the memory pools.
73163  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
73164  /* */
73165 
73166 
73167  public:
73168  /* name Memory Allocation Functions
73169  \brief Memory allocations functions ... incomplete-documentation
73170 
73171  These functions have been made public as part of the design, but they are suggested for internal use
73172  or by particularly knowledgable users for specialized tools or applications.
73173  */
73174  /* */
73175 
73186  virtual bool isInMemoryPool() override;
73187 
73198  virtual void checkDataMemberPointersIfInMemoryPool() override;
73199 
73200  // DQ (4/30/2006): Modified to be a const function.
73215  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
73216 
73226  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
73227 
73239  virtual long getChildIndex( SgNode* childNode ) const override;
73240 
73241  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
73242  // comment here (changed to be a C style comment and not be a doxygen comment).
73243  /* \brief Constructor for use by AST File I/O Mechanism
73244 
73245  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
73246  which obtained via fast binary file I/O from disk.
73247  */
73248  // SgTypeFloat128( SgTypeFloat128StorageClass& source );
73249 
73250 
73251 
73252 
73253 
73254  // JH (10/24/2005): methods added to support the ast file IO
73255  private:
73256 
73257  /* name AST Memory Allocation Support Functions
73258  \brief Memory allocations support....
73259 
73260  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
73261  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
73262  and support the AST File I/O Mechanism.
73263  */
73264  /* */
73265 
73266  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
73267  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
73268  that I use the same type everywhere, if any changes are made. THe second one declares the type
73269  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
73270  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
73271  a correspinding one in the AST_FILE_IO class!
73272  */
73273  // DQ (9/2/2015): This typedef is no longer used, we can't define the
73274  // comment here (changed to be a C style comment and not be a doxygen comment).
73275  /* \brief Typedef used for low level memory access.
73276  */
73277  // typedef unsigned char* TestType;
73278 
73279  // DQ (9/2/2015): This typedef is no longer used, we can't define the
73280  // comment here (changed to be a C style comment and not be a doxygen comment).
73281  /* \brief Typedef used to hold memory addresses as values.
73282  */
73283  // typedef unsigned long AddressType;
73284 
73285 
73286 
73287  // necessary, to have direct access to the p_freepointer and the private methods !
73289  friend class AST_FILE_IO;
73290 
73292  friend class SgTypeFloat128StorageClass;
73293 
73295  friend class AstSpecificDataManagingClass;
73296 
73298  friend class AstSpecificDataManagingClassStorageClass;
73299 
73300  public:
73302  SgTypeFloat128( const SgTypeFloat128StorageClass& source );
73303 
73304  // private: // JJW hack
73305  /*
73306  name AST Memory Allocation Support Variables
73307  Memory allocations support variables
73308 
73309  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
73310  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
73311  and support the AST File I/O Mechanism.
73312  */
73313  /* */
73314 
73315  public:
73316 
73317  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
73318  // to current node (so that it will work cleanly with build functions to specify patterns).
73319  // virtual SgNode* addRegExpAttribute();
73326 
73327 // *** COMMON CODE SECTION ENDS HERE ***
73328 
73329 
73330 // End of memberFunctionString
73331 // Start of memberFunctionString
73332 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
73333 
73334  // the generated cast function
73335  // friend ROSE_DLL_API SgTypeFloat128* isSgTypeFloat128 ( SgNode* s );
73336 
73337  typedef SgType base_node_type;
73338 
73339 
73340 // End of memberFunctionString
73341 // Start of memberFunctionString
73342 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
73343 
73344  // SgName get_mangled ( SgUnparse_Info & info );
73345 
73347  // SgName get_mangled ( SgUnparse_Info & info );
73348  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
73349  virtual SgName get_mangled (void) const override;
73350 
73351 
73352 
73353 // End of memberFunctionString
73354 // Start of memberFunctionString
73355 /* #line 267 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
73356 
73358  // DQ (1/31/2006): Modified to build all types in the memory pools
73359  // static SgTypeFloat128 builtin_type;
73360  // static SgTypeFloat128* builtin_type;
73361 
73362  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
73363  // since we don't store the type explicitly anymore except in a few IR nodes which have there
73364  // own data member and associated access function.
73365  // static SgTypeFloat128* get_builtin_type();
73366 
73367  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
73368  // since we don't store the type explicitly anymore except in a few IR nodes which have there
73369  // own data member and associated access function.
73370  // static void set_builtin_type(SgTypeFloat128* builtin_type);
73371 
73373  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
73374  // static SgTypeFloat128* createType(void);
73375  static SgTypeFloat128* createType(SgExpression* optional_fortran_type_kind = NULL);
73376 
73377 
73378 // End of memberFunctionString
73379 
73380 
73381 
73382  public:
73383  virtual ~SgTypeFloat128();
73384 
73385 
73386  public:
73387  SgTypeFloat128();
73388 
73389  protected:
73390 // Start of memberFunctionString
73391 static SgTypeFloat128* p_builtin_type;
73392 
73393 // End of memberFunctionString
73394 
73395 
73396 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
73397 
73398 
73399  };
73400 #endif
73401 
73402 // postdeclarations for SgTypeFloat128
73403 
73404 /* #line 73405 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
73405 
73406 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
73407 
73408 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
73409 
73410 
73411 /* #line 73412 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
73412 
73413 
73414 
73415 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
73416 
73417 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
73418 // This code is automatically generated for each
73419 // terminal and non-terminal within the defined
73420 // grammar. There is a simple way to change the
73421 // code to fix bugs etc. See the ROSE README file
73422 // for directions.
73423 
73424 // tps: (02/22/2010): Adding DLL export requirements
73425 #include "rosedll.h"
73426 
73427 // predeclarations for SgTypeFixed
73428 
73429 /* #line 73430 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
73430 
73431 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
73432 
73433 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
73434 
73435 #if 1
73436 // Class Definition for SgTypeFixed
73437 class ROSE_DLL_API SgTypeFixed : public SgType
73438  {
73439  public:
73440 
73441 
73442 /* #line 73443 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
73443 
73444  virtual SgNode* copy ( SgCopyHelp& help) const override;
73445 // Start of memberFunctionString
73446 /* #line 290 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
73447 
73448  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
73449  // since we don't store the type explicitly anymore except in a few IR nodes which have there
73450  // own data member and associated access function.
73451  // static SgTypeFixed* get_builtin_type();
73452 
73453  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
73454  // since we don't store the type explicitly anymore except in a few IR nodes which have there
73455  // own data member and associated access function.
73456  // static void set_builtin_type(SgTypeFixed* builtin_type);
73457 
73459  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
73460  // static SgTypeFixed* createType(SgExpression* scale = NULL, SgExpression* fraction = NULL);
73461  static SgTypeFixed* createType(SgExpression* scale = NULL, SgExpression* fraction = NULL, SgExpression* optional_fortran_type_kind = NULL);
73462 
73463 
73464 // End of memberFunctionString
73465 // Start of memberFunctionString
73466 /* #line 1001 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
73467 
73468  // SgName get_name() const;
73469 
73470 
73471 // End of memberFunctionString
73472 // Start of memberFunctionString
73473 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
73474 
73475 // *** COMMON CODE SECTION BEGINS HERE ***
73476 
73477  public:
73478 
73479  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
73480  // and not required which is required to match the other aspects of the copy mechanism code generation.
73481  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
73482  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
73483  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
73484  // virtual SgNode* copy ( const SgCopyHelp & help) const;
73485 
73487  virtual std::string class_name() const override;
73488 
73490  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
73491 
73493  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
73494  // static const VariantT static_variant = V_SgTypeFixed;
73495  enum { static_variant = V_SgTypeFixed };
73496 
73497  /* the generated cast function */
73499  ROSE_DLL_API friend SgTypeFixed* isSgTypeFixed( SgNode * s );
73500 
73502  ROSE_DLL_API friend const SgTypeFixed* isSgTypeFixed( const SgNode * s );
73503 
73504  // ******************************************
73505  // * Memory Pool / New / Delete
73506  // ******************************************
73507 
73508  public:
73510  static const unsigned pool_size; //
73512  static std::vector<unsigned char *> pools; //
73514  static SgTypeFixed * next_node; //
73515 
73517  static unsigned long initializeStorageClassArray(SgTypeFixedStorageClass *); //
73518 
73520  static void clearMemoryPool(); //
73521  static void deleteMemoryPool(); //
73522 
73524  static void extendMemoryPoolForFileIO(); //
73525 
73527  static SgTypeFixed * getPointerFromGlobalIndex(unsigned long); //
73529  static SgTypeFixed * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
73530 
73532  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
73534  static void resetValidFreepointers(); //
73536  static unsigned long getNumberOfLastValidPointer(); //
73537 
73538 
73539 #if defined(INLINE_FUNCTIONS)
73540 
73541  inline void *operator new (size_t size);
73542 #else
73543 
73544  void *operator new (size_t size);
73545 #endif
73546 
73547  void operator delete (void* pointer, size_t size);
73548 
73549  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
73550  void operator delete (void* pointer)
73551  {
73552  // This is the generated delete operator...
73553  SgTypeFixed::operator delete (pointer,sizeof(SgTypeFixed));
73554  }
73555 
73557  static size_t numberOfNodes();
73558 
73560  static size_t memoryUsage();
73561 
73562  // End of scope which started in IR nodes specific code
73563  /* */
73564 
73565  /* name Internal Functions
73566  \brief Internal functions ... incomplete-documentation
73567 
73568  These functions have been made public as part of the design, but they are suggested for internal use
73569  or by particularly knowledgeable users for specialized tools or applications.
73570 
73571  \internal We could not make these private because they are required by user for special purposes. And
73572  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
73573 
73574  */
73575 
73576  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
73577  // overridden in every class by *generated* implementation
73579  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
73580  // MS: 06/28/02 container of names of variables or container indices
73581  // used used in the traversal to access AST successor nodes
73582  // overridden in every class by *generated* implementation
73585  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
73586 
73587  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
73588  // than all the vector copies. The implementation for these functions is generated for each class.
73590  virtual size_t get_numberOfTraversalSuccessors() override;
73592  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
73594  virtual size_t get_childIndex(SgNode *child) override;
73595 
73596 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
73597  // MS: 08/16/2002 method for generating RTI information
73599  virtual RTIReturnType roseRTI() override;
73600 #endif
73601  /* */
73602 
73603 
73604 
73605  /* name Deprecated Functions
73606  \brief Deprecated functions ... incomplete-documentation
73607 
73608  These functions have been deprecated from use.
73609  */
73610  /* */
73611 
73613  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
73614 
73615  // JJW (10/16/2008): Changed to a single function in Node.code, and put
73616  // getVariant() in #if 0 block to prevent confusing Doxygen
73617 #if 0
73618 
73619  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
73621  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
73622 #endif
73623  /* */
73624 
73625 
73626 
73627 
73628  public:
73629  /* name Traversal Support Functions
73630  \brief Traversal support functions ... incomplete-documentation
73631 
73632  These functions have been made public as part of the design, but they are suggested for internal use
73633  or by particularly knowledgable users for specialized tools or applications.
73634  */
73635  /* */
73636 
73637  // DQ (11/26/2005): Support for visitor pattern mechanims
73638  // (inferior to ROSE traversal mechanism, experimental).
73642 
73643  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
73645  virtual void accept (ROSE_VisitorPattern & visitor) override;
73646 
73647  // DQ (12/26/2005): Support for traversal based on the memory pool
73650  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
73651 
73655 
73656  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
73657  // This traversal helps support internal tools that call static member functions.
73658  // note: this function operates on the memory pools.
73661  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
73662  /* */
73663 
73664 
73665  public:
73666  /* name Memory Allocation Functions
73667  \brief Memory allocations functions ... incomplete-documentation
73668 
73669  These functions have been made public as part of the design, but they are suggested for internal use
73670  or by particularly knowledgable users for specialized tools or applications.
73671  */
73672  /* */
73673 
73684  virtual bool isInMemoryPool() override;
73685 
73696  virtual void checkDataMemberPointersIfInMemoryPool() override;
73697 
73698  // DQ (4/30/2006): Modified to be a const function.
73713  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
73714 
73724  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
73725 
73737  virtual long getChildIndex( SgNode* childNode ) const override;
73738 
73739  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
73740  // comment here (changed to be a C style comment and not be a doxygen comment).
73741  /* \brief Constructor for use by AST File I/O Mechanism
73742 
73743  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
73744  which obtained via fast binary file I/O from disk.
73745  */
73746  // SgTypeFixed( SgTypeFixedStorageClass& source );
73747 
73748 
73749 
73750 
73751 
73752  // JH (10/24/2005): methods added to support the ast file IO
73753  private:
73754 
73755  /* name AST Memory Allocation Support Functions
73756  \brief Memory allocations support....
73757 
73758  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
73759  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
73760  and support the AST File I/O Mechanism.
73761  */
73762  /* */
73763 
73764  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
73765  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
73766  that I use the same type everywhere, if any changes are made. THe second one declares the type
73767  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
73768  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
73769  a correspinding one in the AST_FILE_IO class!
73770  */
73771  // DQ (9/2/2015): This typedef is no longer used, we can't define the
73772  // comment here (changed to be a C style comment and not be a doxygen comment).
73773  /* \brief Typedef used for low level memory access.
73774  */
73775  // typedef unsigned char* TestType;
73776 
73777  // DQ (9/2/2015): This typedef is no longer used, we can't define the
73778  // comment here (changed to be a C style comment and not be a doxygen comment).
73779  /* \brief Typedef used to hold memory addresses as values.
73780  */
73781  // typedef unsigned long AddressType;
73782 
73783 
73784 
73785  // necessary, to have direct access to the p_freepointer and the private methods !
73787  friend class AST_FILE_IO;
73788 
73790  friend class SgTypeFixedStorageClass;
73791 
73793  friend class AstSpecificDataManagingClass;
73794 
73796  friend class AstSpecificDataManagingClassStorageClass;
73797 
73798  public:
73800  SgTypeFixed( const SgTypeFixedStorageClass& source );
73801 
73802  // private: // JJW hack
73803  /*
73804  name AST Memory Allocation Support Variables
73805  Memory allocations support variables
73806 
73807  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
73808  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
73809  and support the AST File I/O Mechanism.
73810  */
73811  /* */
73812 
73813  public:
73814 
73815  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
73816  // to current node (so that it will work cleanly with build functions to specify patterns).
73817  // virtual SgNode* addRegExpAttribute();
73823  SgTypeFixed* addRegExpAttribute(std::string s, AstRegExAttribute* a);
73824 
73825 // *** COMMON CODE SECTION ENDS HERE ***
73826 
73827 
73828 // End of memberFunctionString
73829 // Start of memberFunctionString
73830 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
73831 
73832  // the generated cast function
73833  // friend ROSE_DLL_API SgTypeFixed* isSgTypeFixed ( SgNode* s );
73834 
73835  typedef SgType base_node_type;
73836 
73837 
73838 // End of memberFunctionString
73839 // Start of memberFunctionString
73840 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
73841 
73842  // SgName get_mangled ( SgUnparse_Info & info );
73843 
73845  // SgName get_mangled ( SgUnparse_Info & info );
73846  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
73847  virtual SgName get_mangled (void) const override;
73848 
73849 
73850 
73851 // End of memberFunctionString
73852 
73853  public:
73854  SgExpression* get_scale() const;
73855  void set_scale(SgExpression* scale);
73856 
73857  public:
73858  SgExpression* get_fraction() const;
73859  void set_fraction(SgExpression* fraction);
73860 
73861 
73862  public:
73863  virtual ~SgTypeFixed();
73864 
73865 
73866  public:
73867  SgTypeFixed(SgExpression* scale = NULL, SgExpression* fraction = NULL);
73868 
73869  protected:
73870 // Start of memberFunctionString
73871 SgExpression* p_scale;
73872 
73873 // End of memberFunctionString
73874 // Start of memberFunctionString
73875 SgExpression* p_fraction;
73876 
73877 // End of memberFunctionString
73878 
73879 
73880 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
73881 
73882 
73883  };
73884 #endif
73885 
73886 // postdeclarations for SgTypeFixed
73887 
73888 /* #line 73889 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
73889 
73890 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
73891 
73892 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
73893 
73894 
73895 /* #line 73896 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
73896 
73897 
73898 
73899 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
73900 
73901 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
73902 // This code is automatically generated for each
73903 // terminal and non-terminal within the defined
73904 // grammar. There is a simple way to change the
73905 // code to fix bugs etc. See the ROSE README file
73906 // for directions.
73907 
73908 // tps: (02/22/2010): Adding DLL export requirements
73909 #include "rosedll.h"
73910 
73911 // predeclarations for SgAutoType
73912 
73913 /* #line 73914 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
73914 
73915 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
73916 
73917 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
73918 
73919 #if 1
73920 // Class Definition for SgAutoType
73921 class ROSE_DLL_API SgAutoType : public SgType
73922  {
73923  public:
73924 
73925 
73926 /* #line 73927 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
73927 
73928  virtual SgNode* copy ( SgCopyHelp& help) const override;
73929 // Start of memberFunctionString
73930 /* #line 290 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
73931 
73932  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
73933  // since we don't store the type explicitly anymore except in a few IR nodes which have there
73934  // own data member and associated access function.
73935  // static SgAutoType* get_builtin_type();
73936 
73937  // DQ (6/18/2007): This does not appear to be used anywhere in ROSE. It is no longer required
73938  // since we don't store the type explicitly anymore except in a few IR nodes which have there
73939  // own data member and associated access function.
73940  // static void set_builtin_type(SgAutoType* builtin_type);
73941 
73943  // DQ (10/4/2010): Added support for optional Fotran type_kind specification.
73944  // static SgAutoType* createType(SgNode* node = NULL);
73945  static SgAutoType* createType(SgNode* node = NULL, SgExpression* optional_fortran_type_kind = NULL);
73946 
73947 
73948 // End of memberFunctionString
73949 // Start of memberFunctionString
73950 /* #line 401 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
73951 
73952  SgAutoType ( const SgAutoType & X );
73953 // virtual SgName get_mangled(void) const;
73954 // virtual SgName get_name() const;
73955 
73956 
73957 // End of memberFunctionString
73958 // Start of memberFunctionString
73959 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
73960 
73961 // *** COMMON CODE SECTION BEGINS HERE ***
73962 
73963  public:
73964 
73965  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
73966  // and not required which is required to match the other aspects of the copy mechanism code generation.
73967  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
73968  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
73969  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
73970  // virtual SgNode* copy ( const SgCopyHelp & help) const;
73971 
73973  virtual std::string class_name() const override;
73974 
73976  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
73977 
73979  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
73980  // static const VariantT static_variant = V_SgAutoType;
73981  enum { static_variant = V_SgAutoType };
73982 
73983  /* the generated cast function */
73985  ROSE_DLL_API friend SgAutoType* isSgAutoType( SgNode * s );
73986 
73988  ROSE_DLL_API friend const SgAutoType* isSgAutoType( const SgNode * s );
73989 
73990  // ******************************************
73991  // * Memory Pool / New / Delete
73992  // ******************************************
73993 
73994  public:
73996  static const unsigned pool_size; //
73998  static std::vector<unsigned char *> pools; //
74000  static SgAutoType * next_node; //
74001 
74003  static unsigned long initializeStorageClassArray(SgAutoTypeStorageClass *); //
74004 
74006  static void clearMemoryPool(); //
74007  static void deleteMemoryPool(); //
74008 
74010  static void extendMemoryPoolForFileIO(); //
74011 
74013  static SgAutoType * getPointerFromGlobalIndex(unsigned long); //
74015  static SgAutoType * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
74016 
74018  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
74020  static void resetValidFreepointers(); //
74022  static unsigned long getNumberOfLastValidPointer(); //
74023 
74024 
74025 #if defined(INLINE_FUNCTIONS)
74026 
74027  inline void *operator new (size_t size);
74028 #else
74029 
74030  void *operator new (size_t size);
74031 #endif
74032 
74033  void operator delete (void* pointer, size_t size);
74034 
74035  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
74036  void operator delete (void* pointer)
74037  {
74038  // This is the generated delete operator...
74039  SgAutoType::operator delete (pointer,sizeof(SgAutoType));
74040  }
74041 
74043  static size_t numberOfNodes();
74044 
74046  static size_t memoryUsage();
74047 
74048  // End of scope which started in IR nodes specific code
74049  /* */
74050 
74051  /* name Internal Functions
74052  \brief Internal functions ... incomplete-documentation
74053 
74054  These functions have been made public as part of the design, but they are suggested for internal use
74055  or by particularly knowledgeable users for specialized tools or applications.
74056 
74057  \internal We could not make these private because they are required by user for special purposes. And
74058  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
74059 
74060  */
74061 
74062  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
74063  // overridden in every class by *generated* implementation
74065  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
74066  // MS: 06/28/02 container of names of variables or container indices
74067  // used used in the traversal to access AST successor nodes
74068  // overridden in every class by *generated* implementation
74071  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
74072 
74073  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
74074  // than all the vector copies. The implementation for these functions is generated for each class.
74076  virtual size_t get_numberOfTraversalSuccessors() override;
74078  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
74080  virtual size_t get_childIndex(SgNode *child) override;
74081 
74082 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
74083  // MS: 08/16/2002 method for generating RTI information
74085  virtual RTIReturnType roseRTI() override;
74086 #endif
74087  /* */
74088 
74089 
74090 
74091  /* name Deprecated Functions
74092  \brief Deprecated functions ... incomplete-documentation
74093 
74094  These functions have been deprecated from use.
74095  */
74096  /* */
74097 
74099  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
74100 
74101  // JJW (10/16/2008): Changed to a single function in Node.code, and put
74102  // getVariant() in #if 0 block to prevent confusing Doxygen
74103 #if 0
74104 
74105  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
74107  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
74108 #endif
74109  /* */
74110 
74111 
74112 
74113 
74114  public:
74115  /* name Traversal Support Functions
74116  \brief Traversal support functions ... incomplete-documentation
74117 
74118  These functions have been made public as part of the design, but they are suggested for internal use
74119  or by particularly knowledgable users for specialized tools or applications.
74120  */
74121  /* */
74122 
74123  // DQ (11/26/2005): Support for visitor pattern mechanims
74124  // (inferior to ROSE traversal mechanism, experimental).
74128 
74129  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
74131  virtual void accept (ROSE_VisitorPattern & visitor) override;
74132 
74133  // DQ (12/26/2005): Support for traversal based on the memory pool
74136  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
74137 
74141 
74142  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
74143  // This traversal helps support internal tools that call static member functions.
74144  // note: this function operates on the memory pools.
74147  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
74148  /* */
74149 
74150 
74151  public:
74152  /* name Memory Allocation Functions
74153  \brief Memory allocations functions ... incomplete-documentation
74154 
74155  These functions have been made public as part of the design, but they are suggested for internal use
74156  or by particularly knowledgable users for specialized tools or applications.
74157  */
74158  /* */
74159 
74170  virtual bool isInMemoryPool() override;
74171 
74182  virtual void checkDataMemberPointersIfInMemoryPool() override;
74183 
74184  // DQ (4/30/2006): Modified to be a const function.
74199  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
74200 
74210  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
74211 
74223  virtual long getChildIndex( SgNode* childNode ) const override;
74224 
74225  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
74226  // comment here (changed to be a C style comment and not be a doxygen comment).
74227  /* \brief Constructor for use by AST File I/O Mechanism
74228 
74229  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
74230  which obtained via fast binary file I/O from disk.
74231  */
74232  // SgAutoType( SgAutoTypeStorageClass& source );
74233 
74234 
74235 
74236 
74237 
74238  // JH (10/24/2005): methods added to support the ast file IO
74239  private:
74240 
74241  /* name AST Memory Allocation Support Functions
74242  \brief Memory allocations support....
74243 
74244  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
74245  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
74246  and support the AST File I/O Mechanism.
74247  */
74248  /* */
74249 
74250  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
74251  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
74252  that I use the same type everywhere, if any changes are made. THe second one declares the type
74253  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
74254  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
74255  a correspinding one in the AST_FILE_IO class!
74256  */
74257  // DQ (9/2/2015): This typedef is no longer used, we can't define the
74258  // comment here (changed to be a C style comment and not be a doxygen comment).
74259  /* \brief Typedef used for low level memory access.
74260  */
74261  // typedef unsigned char* TestType;
74262 
74263  // DQ (9/2/2015): This typedef is no longer used, we can't define the
74264  // comment here (changed to be a C style comment and not be a doxygen comment).
74265  /* \brief Typedef used to hold memory addresses as values.
74266  */
74267  // typedef unsigned long AddressType;
74268 
74269 
74270 
74271  // necessary, to have direct access to the p_freepointer and the private methods !
74273  friend class AST_FILE_IO;
74274 
74276  friend class SgAutoTypeStorageClass;
74277 
74279  friend class AstSpecificDataManagingClass;
74280 
74282  friend class AstSpecificDataManagingClassStorageClass;
74283 
74284  public:
74286  SgAutoType( const SgAutoTypeStorageClass& source );
74287 
74288  // private: // JJW hack
74289  /*
74290  name AST Memory Allocation Support Variables
74291  Memory allocations support variables
74292 
74293  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
74294  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
74295  and support the AST File I/O Mechanism.
74296  */
74297  /* */
74298 
74299  public:
74300 
74301  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
74302  // to current node (so that it will work cleanly with build functions to specify patterns).
74303  // virtual SgNode* addRegExpAttribute();
74309  SgAutoType* addRegExpAttribute(std::string s, AstRegExAttribute* a);
74310 
74311 // *** COMMON CODE SECTION ENDS HERE ***
74312 
74313 
74314 // End of memberFunctionString
74315 // Start of memberFunctionString
74316 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
74317 
74318  // the generated cast function
74319  // friend ROSE_DLL_API SgAutoType* isSgAutoType ( SgNode* s );
74320 
74321  typedef SgType base_node_type;
74322 
74323 
74324 // End of memberFunctionString
74325 // Start of memberFunctionString
74326 /* #line 338 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Type.code" */
74327 
74328  // SgName get_mangled ( SgUnparse_Info & info );
74329 
74331  // SgName get_mangled ( SgUnparse_Info & info );
74332  // RV (1/31/2006): Removed dependence on SgUnparse_Info.
74333  virtual SgName get_mangled (void) const override;
74334 
74335 
74336 
74337 // End of memberFunctionString
74338 
74339 
74340  public:
74341  virtual ~SgAutoType();
74342 
74343 
74344  public:
74345  SgAutoType();
74346 
74347  protected:
74348 
74349 
74350 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
74351 
74352 
74353  };
74354 #endif
74355 
74356 // postdeclarations for SgAutoType
74357 
74358 /* #line 74359 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
74359 
74360 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
74361 
74362 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
74363 
74364 
74365 /* #line 74366 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
74366 
74367 
74368 
74369 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
74370 
74371 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
74372 // This code is automatically generated for each
74373 // terminal and non-terminal within the defined
74374 // grammar. There is a simple way to change the
74375 // code to fix bugs etc. See the ROSE README file
74376 // for directions.
74377 
74378 // tps: (02/22/2010): Adding DLL export requirements
74379 #include "rosedll.h"
74380 
74381 // predeclarations for SgLocatedNode
74382 
74383 /* #line 74384 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
74384 
74385 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
74386 
74387 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
74388 
74389 #if 1
74390 // Class Definition for SgLocatedNode
74391 class ROSE_DLL_API SgLocatedNode : public SgNode
74392  {
74393  public:
74394 
74395 
74396 /* #line 74397 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
74397 
74398  virtual SgNode* copy ( SgCopyHelp& help) const override;
74399 // Start of memberFunctionString
74400 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/LocatedNode.code" */
74401 
74402  public:
74403 
74404 #if 0
74405  enum PositionOfPreprocessingInfoInListType
74409  {
74410  defaultValue = 0, // let the zero value be an error value
74411  prependPreprocessingInfoToList = 1, // Prepend the new PreprocessingInfo object to the list
74412  appendPreprocessingInfoToList = 2 // Append the new PreprocessingInfo object to the list
74413  };
74414 #endif
74415 
74416  // ~SgLocatedNode();
74417 
74418  // void setlineNumber(unsigned long new_line);
74419 
74420  // virtual bool _print(int depth) const; /* prints file info */
74421 
74422  // DQ (8/20/2004): Make this depricated since we should remove this (or should we?)
74423  // If we want to preserve it we should make it a member function of SgNode?
74424  // Function added by DQ (7/22/2001)
74425  // const char* getFileName() ROSE_DEPRECATED_FUNCTION;
74426  const std::string & getFilenameString() const;
74427 
74428  protected:
74429  // void delete_file_info();
74430  // void directives(ostream& os);
74431  void post_construction_initialization() override;
74432 
74433  private:
74434  SgLocatedNode( const SgLocatedNode & X ); /* until we know what to do with it */
74435 
74436  public:
74437  // [MK] Member function to
74438  // ! attach PreprocessingInfo object to the node. It can only prepend or append the info. to the existing list of preprocessing info.
74439  // void addToAttachedPreprocessingInfo(PreprocessingInfo *prepInfoPtr);
74440  void addToAttachedPreprocessingInfo( PreprocessingInfo *prepInfoPtr, PreprocessingInfo::RelativePositionType locationInList = PreprocessingInfo::after );
74441 
74442  // Liao 1/27/2015
74444  void insertToAttachedPreprocessingInfo( PreprocessingInfo *prepInfoPtr, PreprocessingInfo* anchorInfoPtr, bool insertAfter = true);
74445 
74446  // DQ (2/6/2003):
74455  virtual Sg_File_Info* get_file_info() const override;
74456 
74458  virtual void set_file_info(Sg_File_Info* X);
74459 
74469  void setCompilerGenerated ();
74470  void unsetCompilerGenerated ();
74471 
74472  // DQ (7/5/2014): Added interface function to simplify code.
74479  bool isCompilerGenerated () const;
74480 
74490  void setTransformation ();
74491  void unsetTransformation ();
74492 
74493  // DQ (12/4/2014): Added interface function to simplify code.
74500  bool isTransformation () const;
74501 
74511  void setFrontendSpecific ();
74512  void unsetFrontendSpecific ();
74513 
74514  // DQ (12/21/2019): Added interface function to simplify code.
74521  bool isFrontendSpecific () const;
74522 
74532  void setShared();
74533  void unsetShared();
74534 
74535  // DQ (12/21/2019): Added interface function to simplify code.
74542  bool isShared () const;
74543 
74553  void setSourcePositionUnavailableInFrontend();
74554  void unsetSourcePositionUnavailableInFrontend();
74555 
74565  void setOutputInCodeGeneration();
74566  void unsetOutputInCodeGeneration();
74567 
74577  int get_physical_file_id();
74578 
74579 #if ALT_FIXUP_COPY
74580  // DQ (11/7/2007): These need to be called separately (see documentation)
74581  virtual void fixupCopy_scopes (SgNode* copy, SgCopyHelp & help) const override;
74582  virtual void fixupCopy_symbols (SgNode* copy, SgCopyHelp & help) const override;
74583  virtual void fixupCopy_references (SgNode* copy, SgCopyHelp & help) const override;
74584 #else
74585  // DQ (11/1/2007): Added fixup function to set scopes not set properly by the ROSETTA generated copy!
74586  virtual void fixupCopy(SgNode* copy, SgCopyHelp & help) const;
74587 #endif
74588 
74593  // PC (7/9/2009): This function is not defined.
74594  // size_t numberOfNodesInSubtree();
74595 
74596  public:
74597 
74598 // #ifndef ROSE_USE_SWIG_SUPPORT
74599 #ifndef SWIG
74600  // [MK] Member function to access attached preprocessing info
74601  AttachedPreprocessingInfoType*& getAttachedPreprocessingInfo(void);
74602 #endif
74603 
74604  // DQ (4/10/2006): This is replaced by a better interface for attributes.
74605  // DQ (1/2/2006): Added attribute mechanism to SgLocatedNode
74606  // AstAttributeMechanism & attribute();
74607 
74608  // DQ (12/30/2009): This is moved to be a member function instead of a local inlined
74609  // function in global scope. This implementation better supports the optional use
74610  // of smaller separate files generated by ROSETTA. The name is changed to both be
74611  // more clear and match the naming convention in ROSE.
74612  // inline Sg_File_Info* New_File_Info( SgLocatedNode *p)
74613  // Sg_File_Info* New_File_Info( SgLocatedNode *p);
74614  Sg_File_Info* generateMatchingFileInfo();
74615 
74616 
74617 
74618 // End of memberFunctionString
74619 // Start of memberFunctionString
74620 /* #line 2317 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
74621 
74622 
74623  /* name Persistant Attribute Mechanism
74624 
74625  This is the persistant attribute mechanism for attaching attributes to IR nodes across
74626  multiple passes. Note that these attributes are persistant in that they are preserved
74627  if the AST is written out to a file and read in from a file. However, virtual function
74628  in the user-defined class derived from the AstAttribute must be defined for the attribute
74629  to be defined across the boundary of File I/O (simple pack and unpack functions). More
74630  sophisticated mechanisms are available within the AstAttributeMechanism object
74631  (e.g iterating though attributes, etc; get_attributeMechanism() is available if direct
74632  access is required, however mostly only internal tools use this lower level support).
74633 
74634  \internal This used to be a public data member, but has been changed to be a protected
74635  pointer instead. The functional interface of the AstAttributeMechanism is presevered
74636  but some of the names and the syntax for calling the interface have changed. The
74637  pointer to the AstAttributeMechanism is now generated by ROSETTA.
74638  */
74639  /* */
74641  virtual void addNewAttribute(std::string s,AstAttribute* a) override;
74643  virtual AstAttribute* getAttribute(std::string s) const override;
74645  virtual void updateAttribute(std::string s,AstAttribute* a) override; // formerly called: replace in AstAttributeMechanism
74650  virtual void setAttribute(std::string s,AstAttribute* a) override;
74652  virtual void removeAttribute(std::string s) override;
74654  virtual bool attributeExists(std::string s) const override;
74656  virtual int numberOfAttributes() const override;
74657 
74672  /* */
74673 
74674 
74675 
74676 
74677 // End of memberFunctionString
74678 // Start of memberFunctionString
74679 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
74680 
74681 // *** COMMON CODE SECTION BEGINS HERE ***
74682 
74683  public:
74684 
74685  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
74686  // and not required which is required to match the other aspects of the copy mechanism code generation.
74687  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
74688  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
74689  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
74690  // virtual SgNode* copy ( const SgCopyHelp & help) const;
74691 
74693  virtual std::string class_name() const override;
74694 
74696  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
74697 
74699  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
74700  // static const VariantT static_variant = V_SgLocatedNode;
74701  enum { static_variant = V_SgLocatedNode };
74702 
74703  /* the generated cast function */
74705  ROSE_DLL_API friend SgLocatedNode* isSgLocatedNode( SgNode * s );
74706 
74708  ROSE_DLL_API friend const SgLocatedNode* isSgLocatedNode( const SgNode * s );
74709 
74710  // ******************************************
74711  // * Memory Pool / New / Delete
74712  // ******************************************
74713 
74714  public:
74716  static const unsigned pool_size; //
74718  static std::vector<unsigned char *> pools; //
74720  static SgLocatedNode * next_node; //
74721 
74723  static unsigned long initializeStorageClassArray(SgLocatedNodeStorageClass *); //
74724 
74726  static void clearMemoryPool(); //
74727  static void deleteMemoryPool(); //
74728 
74730  static void extendMemoryPoolForFileIO(); //
74731 
74733  static SgLocatedNode * getPointerFromGlobalIndex(unsigned long); //
74735  static SgLocatedNode * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
74736 
74738  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
74740  static void resetValidFreepointers(); //
74742  static unsigned long getNumberOfLastValidPointer(); //
74743 
74744 
74745 #if defined(INLINE_FUNCTIONS)
74746 
74747  inline void *operator new (size_t size);
74748 #else
74749 
74750  void *operator new (size_t size);
74751 #endif
74752 
74753  void operator delete (void* pointer, size_t size);
74754 
74755  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
74756  void operator delete (void* pointer)
74757  {
74758  // This is the generated delete operator...
74759  SgLocatedNode::operator delete (pointer,sizeof(SgLocatedNode));
74760  }
74761 
74763  static size_t numberOfNodes();
74764 
74766  static size_t memoryUsage();
74767 
74768  // End of scope which started in IR nodes specific code
74769  /* */
74770 
74771  /* name Internal Functions
74772  \brief Internal functions ... incomplete-documentation
74773 
74774  These functions have been made public as part of the design, but they are suggested for internal use
74775  or by particularly knowledgeable users for specialized tools or applications.
74776 
74777  \internal We could not make these private because they are required by user for special purposes. And
74778  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
74779 
74780  */
74781 
74782  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
74783  // overridden in every class by *generated* implementation
74785  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
74786  // MS: 06/28/02 container of names of variables or container indices
74787  // used used in the traversal to access AST successor nodes
74788  // overridden in every class by *generated* implementation
74791  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
74792 
74793  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
74794  // than all the vector copies. The implementation for these functions is generated for each class.
74796  virtual size_t get_numberOfTraversalSuccessors() override;
74798  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
74800  virtual size_t get_childIndex(SgNode *child) override;
74801 
74802 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
74803  // MS: 08/16/2002 method for generating RTI information
74805  virtual RTIReturnType roseRTI() override;
74806 #endif
74807  /* */
74808 
74809 
74810 
74811  /* name Deprecated Functions
74812  \brief Deprecated functions ... incomplete-documentation
74813 
74814  These functions have been deprecated from use.
74815  */
74816  /* */
74817 
74819  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
74820 
74821  // JJW (10/16/2008): Changed to a single function in Node.code, and put
74822  // getVariant() in #if 0 block to prevent confusing Doxygen
74823 #if 0
74824 
74825  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
74827  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
74828 #endif
74829  /* */
74830 
74831 
74832 
74833 
74834  public:
74835  /* name Traversal Support Functions
74836  \brief Traversal support functions ... incomplete-documentation
74837 
74838  These functions have been made public as part of the design, but they are suggested for internal use
74839  or by particularly knowledgable users for specialized tools or applications.
74840  */
74841  /* */
74842 
74843  // DQ (11/26/2005): Support for visitor pattern mechanims
74844  // (inferior to ROSE traversal mechanism, experimental).
74848 
74849  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
74851  virtual void accept (ROSE_VisitorPattern & visitor) override;
74852 
74853  // DQ (12/26/2005): Support for traversal based on the memory pool
74856  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
74857 
74861 
74862  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
74863  // This traversal helps support internal tools that call static member functions.
74864  // note: this function operates on the memory pools.
74867  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
74868  /* */
74869 
74870 
74871  public:
74872  /* name Memory Allocation Functions
74873  \brief Memory allocations functions ... incomplete-documentation
74874 
74875  These functions have been made public as part of the design, but they are suggested for internal use
74876  or by particularly knowledgable users for specialized tools or applications.
74877  */
74878  /* */
74879 
74890  virtual bool isInMemoryPool() override;
74891 
74902  virtual void checkDataMemberPointersIfInMemoryPool() override;
74903 
74904  // DQ (4/30/2006): Modified to be a const function.
74919  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
74920 
74930  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
74931 
74943  virtual long getChildIndex( SgNode* childNode ) const override;
74944 
74945  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
74946  // comment here (changed to be a C style comment and not be a doxygen comment).
74947  /* \brief Constructor for use by AST File I/O Mechanism
74948 
74949  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
74950  which obtained via fast binary file I/O from disk.
74951  */
74952  // SgLocatedNode( SgLocatedNodeStorageClass& source );
74953 
74954 
74955 
74956 
74957 
74958  // JH (10/24/2005): methods added to support the ast file IO
74959  private:
74960 
74961  /* name AST Memory Allocation Support Functions
74962  \brief Memory allocations support....
74963 
74964  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
74965  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
74966  and support the AST File I/O Mechanism.
74967  */
74968  /* */
74969 
74970  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
74971  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
74972  that I use the same type everywhere, if any changes are made. THe second one declares the type
74973  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
74974  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
74975  a correspinding one in the AST_FILE_IO class!
74976  */
74977  // DQ (9/2/2015): This typedef is no longer used, we can't define the
74978  // comment here (changed to be a C style comment and not be a doxygen comment).
74979  /* \brief Typedef used for low level memory access.
74980  */
74981  // typedef unsigned char* TestType;
74982 
74983  // DQ (9/2/2015): This typedef is no longer used, we can't define the
74984  // comment here (changed to be a C style comment and not be a doxygen comment).
74985  /* \brief Typedef used to hold memory addresses as values.
74986  */
74987  // typedef unsigned long AddressType;
74988 
74989 
74990 
74991  // necessary, to have direct access to the p_freepointer and the private methods !
74993  friend class AST_FILE_IO;
74994 
74996  friend class SgLocatedNodeStorageClass;
74997 
74999  friend class AstSpecificDataManagingClass;
75000 
75002  friend class AstSpecificDataManagingClassStorageClass;
75003 
75004  public:
75006  SgLocatedNode( const SgLocatedNodeStorageClass& source );
75007 
75008  // private: // JJW hack
75009  /*
75010  name AST Memory Allocation Support Variables
75011  Memory allocations support variables
75012 
75013  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
75014  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
75015  and support the AST File I/O Mechanism.
75016  */
75017  /* */
75018 
75019  public:
75020 
75021  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
75022  // to current node (so that it will work cleanly with build functions to specify patterns).
75023  // virtual SgNode* addRegExpAttribute();
75030 
75031 // *** COMMON CODE SECTION ENDS HERE ***
75032 
75033 
75034 // End of memberFunctionString
75035 // Start of memberFunctionString
75036 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
75037 
75038  // the generated cast function
75039  // friend ROSE_DLL_API SgLocatedNode* isSgLocatedNode ( SgNode* s );
75040 
75041  typedef SgNode base_node_type;
75042 
75043 
75044 // End of memberFunctionString
75045 
75046  public:
75047  Sg_File_Info* get_startOfConstruct() const override /* (getDataAccessFunctionPrototypeString) */;
75048  void set_startOfConstruct(Sg_File_Info* startOfConstruct) /* (getDataAccessFunctionPrototypeString) */;
75049 
75050  public:
75051  Sg_File_Info* get_endOfConstruct() const override /* (getDataAccessFunctionPrototypeString) */;
75052  void set_endOfConstruct(Sg_File_Info* endOfConstruct) /* (getDataAccessFunctionPrototypeString) */;
75053 
75054  public:
75055  AttachedPreprocessingInfoType* get_attachedPreprocessingInfoPtr() const;
75056  void set_attachedPreprocessingInfoPtr(AttachedPreprocessingInfoType* attachedPreprocessingInfoPtr);
75057 
75058  public:
75059  AstAttributeMechanism* get_attributeMechanism() const override /* (getDataAccessFunctionPrototypeString) */;
75060  void set_attributeMechanism(AstAttributeMechanism* attributeMechanism) override /* (getDataAccessFunctionPrototypeString) */;
75061 
75062  public:
75063  bool get_containsTransformationToSurroundingWhitespace() const;
75064  void set_containsTransformationToSurroundingWhitespace(bool containsTransformationToSurroundingWhitespace);
75065 
75066 
75067  public:
75068  virtual ~SgLocatedNode();
75069 
75070 
75071  public:
75072  SgLocatedNode(Sg_File_Info* startOfConstruct = NULL);
75073 
75074  protected:
75075 // Start of memberFunctionString
75076 Sg_File_Info* p_startOfConstruct;
75077 
75078 // End of memberFunctionString
75079 // Start of memberFunctionString
75080 Sg_File_Info* p_endOfConstruct;
75081 
75082 // End of memberFunctionString
75083 // Start of memberFunctionString
75084 AttachedPreprocessingInfoType* p_attachedPreprocessingInfoPtr;
75085 
75086 // End of memberFunctionString
75087 // Start of memberFunctionString
75088 AstAttributeMechanism* p_attributeMechanism;
75089 
75090 // End of memberFunctionString
75091 // Start of memberFunctionString
75092 bool p_containsTransformationToSurroundingWhitespace;
75093 
75094 // End of memberFunctionString
75095 
75096 
75097 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
75098 
75099 
75100  };
75101 #endif
75102 
75103 // postdeclarations for SgLocatedNode
75104 
75105 /* #line 75106 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
75106 
75107 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
75108 
75109 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
75110 
75111 
75112 /* #line 75113 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
75113 
75114 
75115 
75116 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
75117 
75118 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
75119 // This code is automatically generated for each
75120 // terminal and non-terminal within the defined
75121 // grammar. There is a simple way to change the
75122 // code to fix bugs etc. See the ROSE README file
75123 // for directions.
75124 
75125 // tps: (02/22/2010): Adding DLL export requirements
75126 #include "rosedll.h"
75127 
75128 // predeclarations for SgToken
75129 
75130 /* #line 75131 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
75131 
75132 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
75133 
75134 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
75135 
75136 #if 1
75137 // Class Definition for SgToken
75138 class ROSE_DLL_API SgToken : public SgLocatedNode
75139  {
75140  public:
75141 
75142 
75143 /* #line 75144 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
75144 
75145  virtual SgNode* copy ( SgCopyHelp& help) const override;
75146 // Start of memberFunctionString
75147 /* #line 218 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/LocatedNode.code" */
75148 
75149 // DQ (3/24/2007): These are added from Rama's
75150 // work on the lexical analysis of Fortran. There will
75151 // be similar values for C and C++ (and Python at some point).
75152 
75153 // DQ (3/24/2007): We should put this in a namespace or rename it.
75155  {
75156  std::string token_lexeme;
75157  int token_id;
75158  };
75159 
75160 // DQ (4/14/2007): New enum values are language specific to clarity.
75161 // The "index + language_specific_offset" permits IR node enum values
75162 // that will be grouped appropriately.
75163 // DQ (3/24/2007): first versions of tokens using "ROSE_" prefix was judged overdone.
75164 // Language specific enum values for Fortran 2003 tokens
75165 // enum ROSE_Fortran_Identifiers
75166 enum ROSE_Fortran_Keywords
75167  {
75168  FORTRAN_ABSTRACT = 0 + 0,
75169  FORTRAN_ACCESS = 1 + 0,
75170  FORTRAN_ACTION = 2 + 0,
75171  FORTRAN_ALLOCATE = 3 + 0,
75172  FORTRAN_ALLOCATABLE = 4 + 0,
75173  FORTRAN_ASSIGN = 5 + 0,
75174  FORTRAN_ASSOCIATE = 6 + 0,
75175  FORTRAN_ASYNCHRONOUS = 7 + 0,
75176  FORTRAN_BACKSPACE = 8 + 0,
75177  FORTRAN_BIND = 9 + 0,
75178  FORTRAN_BLANK = 10 + 0,
75179  FORTRAN_BLOCK_DATA = 11 + 0,
75180  FORTRAN_CALL = 12 + 0,
75181  FORTRAN_CHARACTER = 13 + 0,
75182  FORTRAN_CLASS = 14 + 0,
75183  FORTRAN_CLOSE = 15 + 0,
75184  FORTRAN_CONTINUE = 16 + 0,
75185  FORTRAN_CYCLE = 17 + 0,
75186  FORTRAN_CASE = 18 + 0,
75187  FORTRAN_COMMON = 19 + 0,
75188  FORTRAN_COMPLEX = 20 + 0,
75189  FORTRAN_CONTAINS = 21 + 0,
75190  FORTRAN_DEALLOCATE = 22 + 0,
75191  FORTRAN_DATA = 23 + 0,
75192  FORTRAN_DEFERRED = 24 + 0,
75193  FORTRAN_DELIM = 25 + 0,
75194  FORTRAN_DIMENSION = 26 + 0,
75195  FORTRAN_DO = 27 + 0,
75196  FORTRAN_DT = 28 + 0,
75197  FORTRAN_DOUBLEPRECISION = 29 + 0,
75198  FORTRAN_ENCODING = 30 + 0,
75199  FORTRAN_END_CASE = 31 + 0,
75200  FORTRAN_ENDDO = 32 + 0,
75201  FORTRAN_END_FILE = 33 + 0,
75202  FORTRAN_END_ENUM = 34 + 0,
75203  FORTRAN_END_INTERFACE = 35 + 0,
75204  FORTRAN_END_TYPE = 36 + 0,
75205  FORTRAN_ERR = 37 + 0,
75206  FORTRAN_ERRMSG = 38 + 0,
75207  FORTRAN_EXIT = 39 + 0,
75208  FORTRAN_ELSE = 40 + 0,
75209  FORTRAN_ELSEWHERE = 41 + 0,
75210  FORTRAN_ELSEIF = 42 + 0,
75211  FORTRAN_ENDIF = 43 + 0,
75212  FORTRAN_ENTRY = 44 + 0,
75213  FORTRAN_END = 45 + 0,
75214  FORTRAN_ENUM = 46 + 0,
75215  FORTRAN_ENUMERATOR = 47 + 0,
75216  FORTRAN_EQUIVALENCE = 48 + 0,
75217  FORTRAN_EXTERNAL = 49 + 0,
75218  FORTRAN_EXTENDS = 50 + 0,
75219  FORTRAN_FILE = 51 + 0,
75220  FORTRAN_FINAL = 52 + 0,
75221  FORTRAN_FMT = 53 + 0,
75222  FORTRAN_FORALL = 54 + 0,
75223  FORTRAN_FORM = 55 + 0,
75224  FORTRAN_FORMATTED = 56 + 0,
75225  FORTRAN_FORMAT = 57 + 0,
75226  FORTRAN_FLUSH = 58 + 0,
75227  FORTRAN_FUNCTION = 59 + 0,
75228  FORTRAN_GENERIC = 60 + 0,
75229  FORTRAN_GOTO = 61 + 0,
75230  FORTRAN_ID = 62 + 0,
75231  FORTRAN_IF = 63 + 0,
75232  FORTRAN_INQUIRE = 64 + 0,
75233  FORTRAN_INTEGER = 65 + 0,
75234  FORTRAN_IOMSG = 66 + 0,
75235  FORTRAN_IOSTAT = 67 + 0,
75236  FORTRAN_IMPLICIT = 68 + 0,
75237  FORTRAN_IMPLICIT_NONE = 69 + 0,
75238  FORTRAN_IMPORT = 70 + 0,
75239  FORTRAN_INTERFACE = 71 + 0,
75240  FORTRAN_INTENT = 72 + 0,
75241  FORTRAN_INTRINSIC = 73 + 0,
75242  FORTRAN_LEN = 74 + 0,
75243  FORTRAN_LOGICAL = 75 + 0,
75244  FORTRAN_KIND = 76 + 0,
75245  FORTRAN_MODULE_PROC = 77 + 0,
75246  FORTRAN_MODULE = 78 + 0,
75247  FORTRAN_NON_INTRINSIC = 79 + 0,
75248  FORTRAN_NON_OVERRIDABLE = 80 + 0,
75249  FORTRAN_NULL = 81 + 0,
75250  FORTRAN_NULLIFY = 82 + 0,
75251  FORTRAN_NAMELIST = 83 + 0,
75252  FORTRAN_NML = 84 + 0,
75253  FORTRAN_NONE = 85 + 0,
75254  FORTRAN_NOPASS = 86 + 0,
75255  FORTRAN_ONLY = 87 + 0,
75256  FORTRAN_OPEN = 88 + 0,
75257  FORTRAN_OPTIONAL = 89 + 0,
75258  FORTRAN_PARAMETER = 90 + 0,
75259  FORTRAN_PASS = 91 + 0,
75260  FORTRAN_PAUSE = 92 + 0,
75261  FORTRAN_POINTER = 93 + 0,
75262  FORTRAN_PRINT = 94 + 0,
75263  FORTRAN_PRIVATE = 95 + 0,
75264  FORTRAN_PROCEDURE = 96 + 0,
75265  FORTRAN_PROGRAM = 97 + 0,
75266  FORTRAN_PROTECTED = 98 + 0,
75267  FORTRAN_READ = 99 + 0,
75268  FORTRAN_REAL = 100 + 0,
75269  FORTRAN_RETURN = 101 + 0,
75270  FORTRAN_REWIND = 102 + 0,
75271  FORTRAN_ROUND = 103 + 0,
75272  FORTRAN_SELECTCASE = 104 + 0,
75273  FORTRAN_SELECTTYPE = 105 + 0,
75274  FORTRAN_SEQUENCE = 106 + 0,
75275  FORTRAN_SAVE = 107 + 0,
75276  FORTRAN_SIGN = 108 + 0,
75277  FORTRAN_SIZE = 109 + 0,
75278  FORTRAN_SOURCE = 110 + 0,
75279  FORTRAN_STAT = 111 + 0,
75280  FORTRAN_STOP = 112 + 0,
75281  FORTRAN_SUBROUTINE = 113 + 0,
75282  FORTRAN_TARGET = 114 + 0,
75283  FORTRAN_THEN = 115 + 0,
75284  FORTRAN_DERIVED_DECL = 116 + 0,
75285  FORTRAN_TYPEIS = 117 + 0,
75286  FORTRAN_UNFORMATTED = 118 + 0,
75287  FORTRAN_UNIT = 119 + 0,
75288  FORTRAN_USE = 120 + 0,
75289  FORTRAN_VALUE = 121 + 0,
75290  FORTRAN_VOLATILE = 122 + 0,
75291  FORTRAN_WAIT = 123 + 0,
75292  FORTRAN_WHERE = 124 + 0,
75293  FORTRAN_WRITE = 125 + 0,
75294 
75295  // DQ (11/27/2013): Added missing entries.
75296  FORTRAN_END_PROGRAM = 126 + 0,
75297  FORTRAN_END_FUNCTION = 127 + 0,
75298  FORTRAN_END_SUBROUTINE = 128 + 0,
75299  FORTRAN_END_MODULE = 129 + 0,
75300  FORTRAN_END_BLOCK_DATA = 130 + 0,
75301  FORTRAN_SUBMODULE = 131 + 0,
75302  FORTRAN_END_SUBMODULE = 132 + 0,
75303  FORTRAN_DOUBLE_COMPLEX = 133 + 0,
75304  FORTRAN_TYPE = 134 + 0,
75305  FORTRAN_ABSTRACT_INTERFACE = 135 + 0,
75306  FORTRAN_ERROR_STOP = 136 + 0,
75307  FORTRAN_CONTIGUOUS = 137 + 0,
75308  FORTRAN_PUBLIC = 138 + 0,
75309 
75310  // Function prefix keywords (Module keyword created above)
75311  FORTRAN_ELEMENTAL = 139 + 0,
75312  FORTRAN_IMPURE = 140 + 0,
75313  FORTRAN_PURE = 141 + 0,
75314  FORTRAN_RECURSIVE = 142 + 0,
75315 
75316  // IntentSpec keywords (these are combined keywords, perhaps should be done differently)
75317  FORTRAN_INTENT_IN = 143 + 0,
75318  FORTRAN_INTENT_OUT = 144 + 0,
75319  FORTRAN_INTENT_INOUT = 145 + 0,
75320 
75321  FORTRAN_ASSIGNMENT = 146 + 0,
75322  FORTRAN_OPERATOR = 147 + 0,
75323 
75324  FORTRAN_READ_FORMATTED = 148 + 0,
75325  FORTRAN_READ_UNFORMATTED = 149 + 0,
75326  FORTRAN_WRITE_FORMATTED = 150 + 0,
75327  FORTRAN_WRITE_UNFORMATTED = 151 + 0,
75328 
75329  FORTRAN_UNKNOWN = 152 + 0
75330  };
75331 
75332 // Language specific enum values for C and C++ tokens
75333 enum ROSE_C_CXX_keywords
75334  {
75335  C_CXX_ASM = 0 + 500,
75336  C_CXX_AUTO = 1 + 500,
75337  C_CXX_BOOL = 2 + 500,
75338  C_CXX_BREAK = 3 + 500,
75339  C_CXX_CASE = 4 + 500,
75340  C_CXX_CATCH = 5 + 500,
75341  C_CXX_CHAR = 6 + 500,
75342  C_CXX_CLASS = 7 + 500,
75343  C_CXX_CONST = 8 + 500,
75344  C_CXX_CONSTCAST = 9 + 500,
75345  C_CXX_CONTINUE = 10 + 500,
75346  C_CXX_DEFAULT = 11 + 500,
75347  C_CXX_DEFINED = 12 + 500,
75348  C_CXX_DELETE = 13 + 500,
75349  C_CXX_DO = 14 + 500,
75350  C_CXX_DOUBLE = 15 + 500,
75351  C_CXX_DYNAMICCAST = 16 + 500,
75352  C_CXX_ELSE = 17 + 500,
75353  C_CXX_ENUM = 18 + 500,
75354  C_CXX_EXPLICIT = 19 + 500,
75355  C_CXX_EXPORT = 20 + 500,
75356  C_CXX_EXTERN = 21 + 500,
75357  C_CXX_FALSE = 22 + 500,
75358  C_CXX_FLOAT = 23 + 500,
75359  C_CXX_FOR = 24 + 500,
75360  C_CXX_FRIEND = 25 + 500,
75361  C_CXX_GOTO = 26 + 500,
75362  C_CXX_IF = 27 + 500,
75363  C_CXX_INLINE = 28 + 500,
75364  C_CXX_INT = 29 + 500,
75365  C_CXX_LONG = 30 + 500,
75366  C_CXX_MUTABLE = 31 + 500,
75367  C_CXX_NAMESPACE = 32 + 500,
75368  C_CXX_NEW = 33 + 500,
75369  C_CXX_OPERATOR = 34 + 500,
75370  C_CXX_PRIVATE = 35 + 500,
75371  C_CXX_PROTECTED = 36 + 500,
75372  C_CXX_PUBLIC = 37 + 500,
75373  C_CXX_REGISTER = 38 + 500,
75374  C_CXX_REINTERPRETCAST = 39 + 500,
75375  C_CXX_RETURN = 40 + 500,
75376  C_CXX_SHORT = 41 + 500,
75377  C_CXX_SIGNED = 42 + 500,
75378  C_CXX_SIZEOF = 43 + 500,
75379  C_CXX_STATIC = 44 + 500,
75380  C_CXX_STATICCAST = 45 + 500,
75381  C_CXX_STRUCT = 46 + 500,
75382  C_CXX_SWITCH = 47 + 500,
75383  C_CXX_TEMPLATE = 48 + 500,
75384  C_CXX_THIS = 49 + 500,
75385  C_CXX_THROW = 50 + 500,
75386  C_CXX_TRY = 51 + 500,
75387  C_CXX_TRUE = 52 + 500,
75388  C_CXX_TYPEDEF = 53 + 500,
75389  C_CXX_TYPEID = 54 + 500,
75390  C_CXX_TYPENAME = 55 + 500,
75391  C_CXX_UNION = 56 + 500,
75392  C_CXX_UNSIGNED = 57 + 500,
75393  C_CXX_USING = 58 + 500,
75394  C_CXX_VIRTUAL = 59 + 500,
75395  C_CXX_VOID = 60 + 500,
75396  C_CXX_VOLATILE = 61 + 500,
75397  C_CXX_WCHART = 62 + 500,
75398  C_CXX_WHILE = 63 + 500
75399  };
75400 
75401 // Language specific token enums for Fortran intrinsic operators
75403  {
75404  FORTRAN_INTRINSIC_PLUS = 0 + 10000,
75405  FORTRAN_INTRINSIC_MINUS = 1 + 10000,
75406  FORTRAN_INTRINSIC_POWER = 2 + 10000,
75407  FORTRAN_INTRINSIC_CONCAT = 3 + 10000,
75408  FORTRAN_INTRINSIC_TIMES = 4 + 10000,
75409  FORTRAN_INTRINSIC_DIVIDE = 5 + 10000,
75410  FORTRAN_INTRINSIC_AND = 6 + 10000,
75411  FORTRAN_INTRINSIC_OR = 7 + 10000,
75412  FORTRAN_INTRINSIC_EQV = 8 + 10000,
75413  FORTRAN_INTRINSIC_NEQV = 9 + 10000,
75414  FORTRAN_INTRINSIC_EQ = 10 + 10000,
75415  FORTRAN_INTRINSIC_NE = 11 + 10000,
75416  FORTRAN_INTRINSIC_GE = 12 + 10000,
75417  FORTRAN_INTRINSIC_LE = 13 + 10000,
75418  FORTRAN_INTRINSIC_LT = 14 + 10000,
75419  FORTRAN_INTRINSIC_GT = 15 + 10000,
75420  FORTRAN_INTRINSIC_NOT = 16 + 10000,
75421  FORTRAN_INTRINSIC_OLDEQ = 17 + 10000,
75422  FORTRAN_INTRINSIC_OLDNE = 18 + 10000,
75423  FORTRAN_INTRINSIC_OLDGE = 19 + 10000,
75424  FORTRAN_INTRINSIC_OLDLE = 20 + 10000,
75425  FORTRAN_INTRINSIC_OLDLT = 21 + 10000,
75426  FORTRAN_INTRINSIC_OLDGT = 22 + 10000
75427  };
75428 
75430  {
75431  C_CXX_AND = 0 + 50000,
75432  C_CXX_ANDAND = 1 + 50000,
75433  C_CXX_ASSIGN = 2 + 50000,
75434  C_CXX_ANDASSIGN = 3 + 50000,
75435  C_CXX_OR = 4 + 50000,
75436  C_CXX_ORASSIGN = 5 + 50000,
75437  C_CXX_XOR = 6 + 50000,
75438  C_CXX_XORASSIGN = 7 + 50000,
75439  C_CXX_COMMA = 8 + 50000,
75440  C_CXX_COLON = 9 + 50000,
75441  C_CXX_DIVIDE = 10 + 50000,
75442  C_CXX_DIVIDEASSIGN = 11 + 50000,
75443  C_CXX_DOT = 12 + 50000,
75444  C_CXX_DOTSTAR = 13 + 50000,
75445  C_CXX_ELLIPSIS = 14 + 50000,
75446  C_CXX_EQUAL = 15 + 50000,
75447  C_CXX_GREATER = 16 + 50000,
75448  C_CXX_GREATEREQUAL = 17 + 50000,
75449  C_CXX_LEFTBRACE = 18 + 50000,
75450  C_CXX_LESS = 19 + 50000,
75451  C_CXX_LESSEQUAL = 20 + 50000,
75452  C_CXX_LEFTPAREN = 21 + 50000,
75453  C_CXX_LEFTBRACKET = 22 + 50000,
75454  C_CXX_MINUS = 23 + 50000,
75455  C_CXX_MINUSASSIGN = 24 + 50000,
75456  C_CXX_MINUSMINUS = 25 + 50000,
75457  C_CXX_PERCENT = 26 + 50000,
75458  C_CXX_PERCENTASSIGN = 27 + 50000,
75459  C_CXX_NOT = 28 + 50000,
75460  C_CXX_NOTEQUAL = 29 + 50000,
75461  C_CXX_OROR = 30 + 50000,
75462  C_CXX_PLUS = 31 + 50000,
75463  C_CXX_PLUSASSIGN = 32 + 50000,
75464  C_CXX_PLUSPLUS = 33 + 50000,
75465  C_CXX_ARROW = 34 + 50000,
75466  C_CXX_ARROWSTAR = 35 + 50000,
75467  C_CXX_QUESTION_MARK = 36 + 50000,
75468  C_CXX_RIGHTBRACE = 37 + 50000,
75469  C_CXX_RIGHTPAREN = 38 + 50000,
75470  C_CXX_RIGHTBRACKET = 39 + 50000,
75471  C_CXX_COLON_COLON = 40 + 50000,
75472  C_CXX_SEMICOLON = 41 + 50000,
75473  C_CXX_SHIFTLEFT = 42 + 50000,
75474  C_CXX_SHIFTLEFTASSIGN = 43 + 50000,
75475  C_CXX_SHIFTRIGHT = 44 + 50000,
75476  C_CXX_SHIFTRIGHTASSIGN = 45 + 50000,
75477  C_CXX_STAR = 46 + 50000,
75478  C_CXX_COMPL = 47 + 50000,
75479  C_CXX_STARASSIGN = 48 + 50000,
75480  C_CXX_POUND_POUND = 49 + 50000,
75481  C_CXX_POUND = 50 + 50000,
75482  C_CXX_AND_ALT = 51 + 50000,
75483  C_CXX_ANDASSIGN_ALT = 52 + 50000,
75484  C_CXX_OR_ALT = 53 + 50000,
75485  C_CXX_ORASSIGN_ALT = 54 + 50000,
75486  C_CXX_XOR_ALT = 55 + 50000,
75487  C_CXX_XORASSIGN_ALT = 56 + 50000,
75488  C_CXX_LEFTBRACE_ALT = 57 + 50000,
75489  C_CXX_LEFTBRACKET_ALT = 58 + 50000,
75490  C_CXX_NOT_ALT = 59 + 50000,
75491  C_CXX_NOTEQUAL_ALT = 60 + 50000,
75492  C_CXX_RIGHTBRACE_ALT = 61 + 50000,
75493  C_CXX_RIGHTBRACKET_ALT = 62 + 50000,
75494  C_CXX_COMPL_ALT = 63 + 50000,
75495  C_CXX_POUND_POUND_ALT = 64 + 50000,
75496  C_CXX_POUND_ALT = 65 + 50000,
75497  C_CXX_OR_TRIGRAPH = 66 + 50000,
75498  C_CXX_XOR_TRIGRAPH = 67 + 50000,
75499  C_CXX_LEFTBRACE_TRIGRAPH = 68 + 50000,
75500  C_CXX_LEFTBRACKET_TRIGRAPH = 69 + 50000,
75501  C_CXX_RIGHTBRACE_TRIGRAPH = 70 + 50000,
75502  C_CXX_RIGHTBRACKET_TRIGRAPH = 71 + 50000,
75503  C_CXX_COMPL_TRIGRAPH = 72 + 50000,
75504  C_CXX_POUND_POUND_TRIGRAPH = 73 + 50000,
75505  C_CXX_POUND_TRIGRAPH = 74 + 50000
75506  };
75507 
75508 // Fortran specific additional token classifications
75510  {
75511  FORTRAN_COMMENTS = 0 + 100000,
75512  FORTRAN_STRING_LITERALS = 1 + 100000,
75513  FORTRAN_IDENTIFIER = 2 + 100000,
75514  FORTRAN_UNIDENTIFIED_TOKEN = 3 + 100000,
75515  FORTRAN_ERROR = 4 + 100000
75516  };
75517 
75518  public:
75519  // DQ (4/14/2007): Modified to make this a const array
75520  static const token_element ROSE_Fortran_keyword_map[127];
75521 
75522  // DQ (11/20/2015): Added function to detect CR to support unparsing of whitespace defined up to an including only the first CR.
75523  bool isCarriageReturn() const;
75524 
75525 
75526 
75527 // End of memberFunctionString
75528 // Start of memberFunctionString
75529 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
75530 
75531 // *** COMMON CODE SECTION BEGINS HERE ***
75532 
75533  public:
75534 
75535  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
75536  // and not required which is required to match the other aspects of the copy mechanism code generation.
75537  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
75538  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
75539  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
75540  // virtual SgNode* copy ( const SgCopyHelp & help) const;
75541 
75543  virtual std::string class_name() const override;
75544 
75546  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
75547 
75549  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
75550  // static const VariantT static_variant = V_SgToken;
75551  enum { static_variant = V_SgToken };
75552 
75553  /* the generated cast function */
75555  ROSE_DLL_API friend SgToken* isSgToken( SgNode * s );
75556 
75558  ROSE_DLL_API friend const SgToken* isSgToken( const SgNode * s );
75559 
75560  // ******************************************
75561  // * Memory Pool / New / Delete
75562  // ******************************************
75563 
75564  public:
75566  static const unsigned pool_size; //
75568  static std::vector<unsigned char *> pools; //
75570  static SgToken * next_node; //
75571 
75573  static unsigned long initializeStorageClassArray(SgTokenStorageClass *); //
75574 
75576  static void clearMemoryPool(); //
75577  static void deleteMemoryPool(); //
75578 
75580  static void extendMemoryPoolForFileIO(); //
75581 
75583  static SgToken * getPointerFromGlobalIndex(unsigned long); //
75585  static SgToken * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
75586 
75588  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
75590  static void resetValidFreepointers(); //
75592  static unsigned long getNumberOfLastValidPointer(); //
75593 
75594 
75595 #if defined(INLINE_FUNCTIONS)
75596 
75597  inline void *operator new (size_t size);
75598 #else
75599 
75600  void *operator new (size_t size);
75601 #endif
75602 
75603  void operator delete (void* pointer, size_t size);
75604 
75605  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
75606  void operator delete (void* pointer)
75607  {
75608  // This is the generated delete operator...
75609  SgToken::operator delete (pointer,sizeof(SgToken));
75610  }
75611 
75613  static size_t numberOfNodes();
75614 
75616  static size_t memoryUsage();
75617 
75618  // End of scope which started in IR nodes specific code
75619  /* */
75620 
75621  /* name Internal Functions
75622  \brief Internal functions ... incomplete-documentation
75623 
75624  These functions have been made public as part of the design, but they are suggested for internal use
75625  or by particularly knowledgeable users for specialized tools or applications.
75626 
75627  \internal We could not make these private because they are required by user for special purposes. And
75628  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
75629 
75630  */
75631 
75632  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
75633  // overridden in every class by *generated* implementation
75635  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
75636  // MS: 06/28/02 container of names of variables or container indices
75637  // used used in the traversal to access AST successor nodes
75638  // overridden in every class by *generated* implementation
75641  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
75642 
75643  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
75644  // than all the vector copies. The implementation for these functions is generated for each class.
75646  virtual size_t get_numberOfTraversalSuccessors() override;
75648  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
75650  virtual size_t get_childIndex(SgNode *child) override;
75651 
75652 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
75653  // MS: 08/16/2002 method for generating RTI information
75655  virtual RTIReturnType roseRTI() override;
75656 #endif
75657  /* */
75658 
75659 
75660 
75661  /* name Deprecated Functions
75662  \brief Deprecated functions ... incomplete-documentation
75663 
75664  These functions have been deprecated from use.
75665  */
75666  /* */
75667 
75669  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
75670 
75671  // JJW (10/16/2008): Changed to a single function in Node.code, and put
75672  // getVariant() in #if 0 block to prevent confusing Doxygen
75673 #if 0
75674 
75675  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
75677  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
75678 #endif
75679  /* */
75680 
75681 
75682 
75683 
75684  public:
75685  /* name Traversal Support Functions
75686  \brief Traversal support functions ... incomplete-documentation
75687 
75688  These functions have been made public as part of the design, but they are suggested for internal use
75689  or by particularly knowledgable users for specialized tools or applications.
75690  */
75691  /* */
75692 
75693  // DQ (11/26/2005): Support for visitor pattern mechanims
75694  // (inferior to ROSE traversal mechanism, experimental).
75698 
75699  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
75701  virtual void accept (ROSE_VisitorPattern & visitor) override;
75702 
75703  // DQ (12/26/2005): Support for traversal based on the memory pool
75706  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
75707 
75711 
75712  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
75713  // This traversal helps support internal tools that call static member functions.
75714  // note: this function operates on the memory pools.
75717  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
75718  /* */
75719 
75720 
75721  public:
75722  /* name Memory Allocation Functions
75723  \brief Memory allocations functions ... incomplete-documentation
75724 
75725  These functions have been made public as part of the design, but they are suggested for internal use
75726  or by particularly knowledgable users for specialized tools or applications.
75727  */
75728  /* */
75729 
75740  virtual bool isInMemoryPool() override;
75741 
75752  virtual void checkDataMemberPointersIfInMemoryPool() override;
75753 
75754  // DQ (4/30/2006): Modified to be a const function.
75769  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
75770 
75780  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
75781 
75793  virtual long getChildIndex( SgNode* childNode ) const override;
75794 
75795  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
75796  // comment here (changed to be a C style comment and not be a doxygen comment).
75797  /* \brief Constructor for use by AST File I/O Mechanism
75798 
75799  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
75800  which obtained via fast binary file I/O from disk.
75801  */
75802  // SgToken( SgTokenStorageClass& source );
75803 
75804 
75805 
75806 
75807 
75808  // JH (10/24/2005): methods added to support the ast file IO
75809  private:
75810 
75811  /* name AST Memory Allocation Support Functions
75812  \brief Memory allocations support....
75813 
75814  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
75815  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
75816  and support the AST File I/O Mechanism.
75817  */
75818  /* */
75819 
75820  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
75821  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
75822  that I use the same type everywhere, if any changes are made. THe second one declares the type
75823  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
75824  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
75825  a correspinding one in the AST_FILE_IO class!
75826  */
75827  // DQ (9/2/2015): This typedef is no longer used, we can't define the
75828  // comment here (changed to be a C style comment and not be a doxygen comment).
75829  /* \brief Typedef used for low level memory access.
75830  */
75831  // typedef unsigned char* TestType;
75832 
75833  // DQ (9/2/2015): This typedef is no longer used, we can't define the
75834  // comment here (changed to be a C style comment and not be a doxygen comment).
75835  /* \brief Typedef used to hold memory addresses as values.
75836  */
75837  // typedef unsigned long AddressType;
75838 
75839 
75840 
75841  // necessary, to have direct access to the p_freepointer and the private methods !
75843  friend class AST_FILE_IO;
75844 
75846  friend class SgTokenStorageClass;
75847 
75849  friend class AstSpecificDataManagingClass;
75850 
75852  friend class AstSpecificDataManagingClassStorageClass;
75853 
75854  public:
75856  SgToken( const SgTokenStorageClass& source );
75857 
75858  // private: // JJW hack
75859  /*
75860  name AST Memory Allocation Support Variables
75861  Memory allocations support variables
75862 
75863  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
75864  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
75865  and support the AST File I/O Mechanism.
75866  */
75867  /* */
75868 
75869  public:
75870 
75871  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
75872  // to current node (so that it will work cleanly with build functions to specify patterns).
75873  // virtual SgNode* addRegExpAttribute();
75879  SgToken* addRegExpAttribute(std::string s, AstRegExAttribute* a);
75880 
75881 // *** COMMON CODE SECTION ENDS HERE ***
75882 
75883 
75884 // End of memberFunctionString
75885 // Start of memberFunctionString
75886 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
75887 
75888  // the generated cast function
75889  // friend ROSE_DLL_API SgToken* isSgToken ( SgNode* s );
75890 
75891  typedef SgLocatedNode base_node_type;
75892 
75893 
75894 // End of memberFunctionString
75895 
75896  public:
75897  std::string get_lexeme_string() const;
75898  void set_lexeme_string(std::string lexeme_string);
75899 
75900  public:
75901  unsigned int get_classification_code() const;
75902  void set_classification_code(unsigned int classification_code);
75903 
75904 
75905  public:
75906  virtual ~SgToken();
75907 
75908 
75909  public:
75910  SgToken(Sg_File_Info* startOfConstruct , std::string lexeme_string = "", unsigned int classification_code = 0);
75911  SgToken(std::string lexeme_string, unsigned int classification_code);
75912 
75913  protected:
75914 // Start of memberFunctionString
75915 std::string p_lexeme_string;
75916 
75917 // End of memberFunctionString
75918 // Start of memberFunctionString
75919 unsigned int p_classification_code;
75920 
75921 // End of memberFunctionString
75922 
75923 
75924 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
75925 
75926 
75927  };
75928 #endif
75929 
75930 // postdeclarations for SgToken
75931 
75932 /* #line 75933 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
75933 
75934 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
75935 
75936 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
75937 
75938 
75939 /* #line 75940 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
75940 
75941 
75942 
75943 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
75944 
75945 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
75946 // This code is automatically generated for each
75947 // terminal and non-terminal within the defined
75948 // grammar. There is a simple way to change the
75949 // code to fix bugs etc. See the ROSE README file
75950 // for directions.
75951 
75952 // tps: (02/22/2010): Adding DLL export requirements
75953 #include "rosedll.h"
75954 
75955 // predeclarations for SgLocatedNodeSupport
75956 
75957 /* #line 75958 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
75958 
75959 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
75960 
75961 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
75962 
75963 #if 1
75964 // Class Definition for SgLocatedNodeSupport
75965 class ROSE_DLL_API SgLocatedNodeSupport : public SgLocatedNode
75966  {
75967  public:
75968 
75969 
75970 /* #line 75971 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
75971 
75972  virtual SgNode* copy ( SgCopyHelp& help) const override;
75973 // Start of memberFunctionString
75974 /* #line 598 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/LocatedNode.code" */
75975 
75976 
75977 
75978 // End of memberFunctionString
75979 // Start of memberFunctionString
75980 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
75981 
75982 // *** COMMON CODE SECTION BEGINS HERE ***
75983 
75984  public:
75985 
75986  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
75987  // and not required which is required to match the other aspects of the copy mechanism code generation.
75988  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
75989  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
75990  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
75991  // virtual SgNode* copy ( const SgCopyHelp & help) const;
75992 
75994  virtual std::string class_name() const override;
75995 
75997  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
75998 
76000  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
76001  // static const VariantT static_variant = V_SgLocatedNodeSupport;
76002  enum { static_variant = V_SgLocatedNodeSupport };
76003 
76004  /* the generated cast function */
76006  ROSE_DLL_API friend SgLocatedNodeSupport* isSgLocatedNodeSupport( SgNode * s );
76007 
76009  ROSE_DLL_API friend const SgLocatedNodeSupport* isSgLocatedNodeSupport( const SgNode * s );
76010 
76011  // ******************************************
76012  // * Memory Pool / New / Delete
76013  // ******************************************
76014 
76015  public:
76017  static const unsigned pool_size; //
76019  static std::vector<unsigned char *> pools; //
76021  static SgLocatedNodeSupport * next_node; //
76022 
76024  static unsigned long initializeStorageClassArray(SgLocatedNodeSupportStorageClass *); //
76025 
76027  static void clearMemoryPool(); //
76028  static void deleteMemoryPool(); //
76029 
76031  static void extendMemoryPoolForFileIO(); //
76032 
76034  static SgLocatedNodeSupport * getPointerFromGlobalIndex(unsigned long); //
76036  static SgLocatedNodeSupport * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
76037 
76039  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
76041  static void resetValidFreepointers(); //
76043  static unsigned long getNumberOfLastValidPointer(); //
76044 
76045 
76046 #if defined(INLINE_FUNCTIONS)
76047 
76048  inline void *operator new (size_t size);
76049 #else
76050 
76051  void *operator new (size_t size);
76052 #endif
76053 
76054  void operator delete (void* pointer, size_t size);
76055 
76056  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
76057  void operator delete (void* pointer)
76058  {
76059  // This is the generated delete operator...
76060  SgLocatedNodeSupport::operator delete (pointer,sizeof(SgLocatedNodeSupport));
76061  }
76062 
76064  static size_t numberOfNodes();
76065 
76067  static size_t memoryUsage();
76068 
76069  // End of scope which started in IR nodes specific code
76070  /* */
76071 
76072  /* name Internal Functions
76073  \brief Internal functions ... incomplete-documentation
76074 
76075  These functions have been made public as part of the design, but they are suggested for internal use
76076  or by particularly knowledgeable users for specialized tools or applications.
76077 
76078  \internal We could not make these private because they are required by user for special purposes. And
76079  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
76080 
76081  */
76082 
76083  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
76084  // overridden in every class by *generated* implementation
76086  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
76087  // MS: 06/28/02 container of names of variables or container indices
76088  // used used in the traversal to access AST successor nodes
76089  // overridden in every class by *generated* implementation
76092  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
76093 
76094  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
76095  // than all the vector copies. The implementation for these functions is generated for each class.
76097  virtual size_t get_numberOfTraversalSuccessors() override;
76099  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
76101  virtual size_t get_childIndex(SgNode *child) override;
76102 
76103 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
76104  // MS: 08/16/2002 method for generating RTI information
76106  virtual RTIReturnType roseRTI() override;
76107 #endif
76108  /* */
76109 
76110 
76111 
76112  /* name Deprecated Functions
76113  \brief Deprecated functions ... incomplete-documentation
76114 
76115  These functions have been deprecated from use.
76116  */
76117  /* */
76118 
76120  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
76121 
76122  // JJW (10/16/2008): Changed to a single function in Node.code, and put
76123  // getVariant() in #if 0 block to prevent confusing Doxygen
76124 #if 0
76125 
76126  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
76128  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
76129 #endif
76130  /* */
76131 
76132 
76133 
76134 
76135  public:
76136  /* name Traversal Support Functions
76137  \brief Traversal support functions ... incomplete-documentation
76138 
76139  These functions have been made public as part of the design, but they are suggested for internal use
76140  or by particularly knowledgable users for specialized tools or applications.
76141  */
76142  /* */
76143 
76144  // DQ (11/26/2005): Support for visitor pattern mechanims
76145  // (inferior to ROSE traversal mechanism, experimental).
76149 
76150  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
76152  virtual void accept (ROSE_VisitorPattern & visitor) override;
76153 
76154  // DQ (12/26/2005): Support for traversal based on the memory pool
76157  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
76158 
76162 
76163  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
76164  // This traversal helps support internal tools that call static member functions.
76165  // note: this function operates on the memory pools.
76168  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
76169  /* */
76170 
76171 
76172  public:
76173  /* name Memory Allocation Functions
76174  \brief Memory allocations functions ... incomplete-documentation
76175 
76176  These functions have been made public as part of the design, but they are suggested for internal use
76177  or by particularly knowledgable users for specialized tools or applications.
76178  */
76179  /* */
76180 
76191  virtual bool isInMemoryPool() override;
76192 
76203  virtual void checkDataMemberPointersIfInMemoryPool() override;
76204 
76205  // DQ (4/30/2006): Modified to be a const function.
76220  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
76221 
76231  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
76232 
76244  virtual long getChildIndex( SgNode* childNode ) const override;
76245 
76246  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
76247  // comment here (changed to be a C style comment and not be a doxygen comment).
76248  /* \brief Constructor for use by AST File I/O Mechanism
76249 
76250  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
76251  which obtained via fast binary file I/O from disk.
76252  */
76253  // SgLocatedNodeSupport( SgLocatedNodeSupportStorageClass& source );
76254 
76255 
76256 
76257 
76258 
76259  // JH (10/24/2005): methods added to support the ast file IO
76260  private:
76261 
76262  /* name AST Memory Allocation Support Functions
76263  \brief Memory allocations support....
76264 
76265  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
76266  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
76267  and support the AST File I/O Mechanism.
76268  */
76269  /* */
76270 
76271  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
76272  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
76273  that I use the same type everywhere, if any changes are made. THe second one declares the type
76274  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
76275  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
76276  a correspinding one in the AST_FILE_IO class!
76277  */
76278  // DQ (9/2/2015): This typedef is no longer used, we can't define the
76279  // comment here (changed to be a C style comment and not be a doxygen comment).
76280  /* \brief Typedef used for low level memory access.
76281  */
76282  // typedef unsigned char* TestType;
76283 
76284  // DQ (9/2/2015): This typedef is no longer used, we can't define the
76285  // comment here (changed to be a C style comment and not be a doxygen comment).
76286  /* \brief Typedef used to hold memory addresses as values.
76287  */
76288  // typedef unsigned long AddressType;
76289 
76290 
76291 
76292  // necessary, to have direct access to the p_freepointer and the private methods !
76294  friend class AST_FILE_IO;
76295 
76297  friend class SgLocatedNodeSupportStorageClass;
76298 
76300  friend class AstSpecificDataManagingClass;
76301 
76303  friend class AstSpecificDataManagingClassStorageClass;
76304 
76305  public:
76307  SgLocatedNodeSupport( const SgLocatedNodeSupportStorageClass& source );
76308 
76309  // private: // JJW hack
76310  /*
76311  name AST Memory Allocation Support Variables
76312  Memory allocations support variables
76313 
76314  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
76315  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
76316  and support the AST File I/O Mechanism.
76317  */
76318  /* */
76319 
76320  public:
76321 
76322  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
76323  // to current node (so that it will work cleanly with build functions to specify patterns).
76324  // virtual SgNode* addRegExpAttribute();
76331 
76332 // *** COMMON CODE SECTION ENDS HERE ***
76333 
76334 
76335 // End of memberFunctionString
76336 // Start of memberFunctionString
76337 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
76338 
76339  // the generated cast function
76340  // friend ROSE_DLL_API SgLocatedNodeSupport* isSgLocatedNodeSupport ( SgNode* s );
76341 
76342  typedef SgLocatedNode base_node_type;
76343 
76344 
76345 // End of memberFunctionString
76346 
76347 
76348  public:
76349  virtual ~SgLocatedNodeSupport();
76350 
76351 
76352  public:
76353  SgLocatedNodeSupport(Sg_File_Info* startOfConstruct );
76355 
76356  protected:
76357 
76358 
76359 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
76360 
76361 
76362  };
76363 #endif
76364 
76365 // postdeclarations for SgLocatedNodeSupport
76366 
76367 /* #line 76368 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
76368 
76369 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
76370 
76371 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
76372 
76373 
76374 /* #line 76375 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
76375 
76376 
76377 
76378 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
76379 
76380 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
76381 // This code is automatically generated for each
76382 // terminal and non-terminal within the defined
76383 // grammar. There is a simple way to change the
76384 // code to fix bugs etc. See the ROSE README file
76385 // for directions.
76386 
76387 // tps: (02/22/2010): Adding DLL export requirements
76388 #include "rosedll.h"
76389 
76390 // predeclarations for SgCommonBlockObject
76391 
76392 /* #line 76393 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
76393 
76394 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
76395 
76396 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
76397 
76398 #if 1
76399 // Class Definition for SgCommonBlockObject
76400 class ROSE_DLL_API SgCommonBlockObject : public SgLocatedNodeSupport
76401  {
76402  public:
76403 
76404 
76405 /* #line 76406 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
76406 
76407  virtual SgNode* copy ( SgCopyHelp& help) const override;
76408 // Start of memberFunctionString
76409 /* #line 2380 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
76410 
76411 
76412 
76413 // End of memberFunctionString
76414 // Start of memberFunctionString
76415 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
76416 
76417 // *** COMMON CODE SECTION BEGINS HERE ***
76418 
76419  public:
76420 
76421  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
76422  // and not required which is required to match the other aspects of the copy mechanism code generation.
76423  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
76424  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
76425  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
76426  // virtual SgNode* copy ( const SgCopyHelp & help) const;
76427 
76429  virtual std::string class_name() const override;
76430 
76432  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
76433 
76435  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
76436  // static const VariantT static_variant = V_SgCommonBlockObject;
76437  enum { static_variant = V_SgCommonBlockObject };
76438 
76439  /* the generated cast function */
76441  ROSE_DLL_API friend SgCommonBlockObject* isSgCommonBlockObject( SgNode * s );
76442 
76444  ROSE_DLL_API friend const SgCommonBlockObject* isSgCommonBlockObject( const SgNode * s );
76445 
76446  // ******************************************
76447  // * Memory Pool / New / Delete
76448  // ******************************************
76449 
76450  public:
76452  static const unsigned pool_size; //
76454  static std::vector<unsigned char *> pools; //
76456  static SgCommonBlockObject * next_node; //
76457 
76459  static unsigned long initializeStorageClassArray(SgCommonBlockObjectStorageClass *); //
76460 
76462  static void clearMemoryPool(); //
76463  static void deleteMemoryPool(); //
76464 
76466  static void extendMemoryPoolForFileIO(); //
76467 
76469  static SgCommonBlockObject * getPointerFromGlobalIndex(unsigned long); //
76471  static SgCommonBlockObject * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
76472 
76474  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
76476  static void resetValidFreepointers(); //
76478  static unsigned long getNumberOfLastValidPointer(); //
76479 
76480 
76481 #if defined(INLINE_FUNCTIONS)
76482 
76483  inline void *operator new (size_t size);
76484 #else
76485 
76486  void *operator new (size_t size);
76487 #endif
76488 
76489  void operator delete (void* pointer, size_t size);
76490 
76491  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
76492  void operator delete (void* pointer)
76493  {
76494  // This is the generated delete operator...
76495  SgCommonBlockObject::operator delete (pointer,sizeof(SgCommonBlockObject));
76496  }
76497 
76499  static size_t numberOfNodes();
76500 
76502  static size_t memoryUsage();
76503 
76504  // End of scope which started in IR nodes specific code
76505  /* */
76506 
76507  /* name Internal Functions
76508  \brief Internal functions ... incomplete-documentation
76509 
76510  These functions have been made public as part of the design, but they are suggested for internal use
76511  or by particularly knowledgeable users for specialized tools or applications.
76512 
76513  \internal We could not make these private because they are required by user for special purposes. And
76514  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
76515 
76516  */
76517 
76518  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
76519  // overridden in every class by *generated* implementation
76521  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
76522  // MS: 06/28/02 container of names of variables or container indices
76523  // used used in the traversal to access AST successor nodes
76524  // overridden in every class by *generated* implementation
76527  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
76528 
76529  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
76530  // than all the vector copies. The implementation for these functions is generated for each class.
76532  virtual size_t get_numberOfTraversalSuccessors() override;
76534  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
76536  virtual size_t get_childIndex(SgNode *child) override;
76537 
76538 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
76539  // MS: 08/16/2002 method for generating RTI information
76541  virtual RTIReturnType roseRTI() override;
76542 #endif
76543  /* */
76544 
76545 
76546 
76547  /* name Deprecated Functions
76548  \brief Deprecated functions ... incomplete-documentation
76549 
76550  These functions have been deprecated from use.
76551  */
76552  /* */
76553 
76555  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
76556 
76557  // JJW (10/16/2008): Changed to a single function in Node.code, and put
76558  // getVariant() in #if 0 block to prevent confusing Doxygen
76559 #if 0
76560 
76561  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
76563  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
76564 #endif
76565  /* */
76566 
76567 
76568 
76569 
76570  public:
76571  /* name Traversal Support Functions
76572  \brief Traversal support functions ... incomplete-documentation
76573 
76574  These functions have been made public as part of the design, but they are suggested for internal use
76575  or by particularly knowledgable users for specialized tools or applications.
76576  */
76577  /* */
76578 
76579  // DQ (11/26/2005): Support for visitor pattern mechanims
76580  // (inferior to ROSE traversal mechanism, experimental).
76584 
76585  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
76587  virtual void accept (ROSE_VisitorPattern & visitor) override;
76588 
76589  // DQ (12/26/2005): Support for traversal based on the memory pool
76592  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
76593 
76597 
76598  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
76599  // This traversal helps support internal tools that call static member functions.
76600  // note: this function operates on the memory pools.
76603  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
76604  /* */
76605 
76606 
76607  public:
76608  /* name Memory Allocation Functions
76609  \brief Memory allocations functions ... incomplete-documentation
76610 
76611  These functions have been made public as part of the design, but they are suggested for internal use
76612  or by particularly knowledgable users for specialized tools or applications.
76613  */
76614  /* */
76615 
76626  virtual bool isInMemoryPool() override;
76627 
76638  virtual void checkDataMemberPointersIfInMemoryPool() override;
76639 
76640  // DQ (4/30/2006): Modified to be a const function.
76655  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
76656 
76666  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
76667 
76679  virtual long getChildIndex( SgNode* childNode ) const override;
76680 
76681  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
76682  // comment here (changed to be a C style comment and not be a doxygen comment).
76683  /* \brief Constructor for use by AST File I/O Mechanism
76684 
76685  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
76686  which obtained via fast binary file I/O from disk.
76687  */
76688  // SgCommonBlockObject( SgCommonBlockObjectStorageClass& source );
76689 
76690 
76691 
76692 
76693 
76694  // JH (10/24/2005): methods added to support the ast file IO
76695  private:
76696 
76697  /* name AST Memory Allocation Support Functions
76698  \brief Memory allocations support....
76699 
76700  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
76701  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
76702  and support the AST File I/O Mechanism.
76703  */
76704  /* */
76705 
76706  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
76707  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
76708  that I use the same type everywhere, if any changes are made. THe second one declares the type
76709  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
76710  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
76711  a correspinding one in the AST_FILE_IO class!
76712  */
76713  // DQ (9/2/2015): This typedef is no longer used, we can't define the
76714  // comment here (changed to be a C style comment and not be a doxygen comment).
76715  /* \brief Typedef used for low level memory access.
76716  */
76717  // typedef unsigned char* TestType;
76718 
76719  // DQ (9/2/2015): This typedef is no longer used, we can't define the
76720  // comment here (changed to be a C style comment and not be a doxygen comment).
76721  /* \brief Typedef used to hold memory addresses as values.
76722  */
76723  // typedef unsigned long AddressType;
76724 
76725 
76726 
76727  // necessary, to have direct access to the p_freepointer and the private methods !
76729  friend class AST_FILE_IO;
76730 
76732  friend class SgCommonBlockObjectStorageClass;
76733 
76735  friend class AstSpecificDataManagingClass;
76736 
76738  friend class AstSpecificDataManagingClassStorageClass;
76739 
76740  public:
76742  SgCommonBlockObject( const SgCommonBlockObjectStorageClass& source );
76743 
76744  // private: // JJW hack
76745  /*
76746  name AST Memory Allocation Support Variables
76747  Memory allocations support variables
76748 
76749  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
76750  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
76751  and support the AST File I/O Mechanism.
76752  */
76753  /* */
76754 
76755  public:
76756 
76757  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
76758  // to current node (so that it will work cleanly with build functions to specify patterns).
76759  // virtual SgNode* addRegExpAttribute();
76766 
76767 // *** COMMON CODE SECTION ENDS HERE ***
76768 
76769 
76770 // End of memberFunctionString
76771 // Start of memberFunctionString
76772 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
76773 
76774  // the generated cast function
76775  // friend ROSE_DLL_API SgCommonBlockObject* isSgCommonBlockObject ( SgNode* s );
76776 
76778 
76779 
76780 // End of memberFunctionString
76781 
76782  public:
76783  std::string get_block_name() const;
76784  void set_block_name(std::string block_name);
76785 
76786  public:
76787  SgExprListExp* get_variable_reference_list() const;
76788  void set_variable_reference_list(SgExprListExp* variable_reference_list);
76789 
76790 
76791  public:
76792  virtual ~SgCommonBlockObject();
76793 
76794 
76795  public:
76796  SgCommonBlockObject(Sg_File_Info* startOfConstruct );
76798 
76799  protected:
76800 // Start of memberFunctionString
76801 std::string p_block_name;
76802 
76803 // End of memberFunctionString
76804 // Start of memberFunctionString
76805 SgExprListExp* p_variable_reference_list;
76806 
76807 // End of memberFunctionString
76808 
76809 
76810 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
76811 
76812 
76813  };
76814 #endif
76815 
76816 // postdeclarations for SgCommonBlockObject
76817 
76818 /* #line 76819 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
76819 
76820 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
76821 
76822 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
76823 
76824 
76825 /* #line 76826 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
76826 
76827 
76828 
76829 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
76830 
76831 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
76832 // This code is automatically generated for each
76833 // terminal and non-terminal within the defined
76834 // grammar. There is a simple way to change the
76835 // code to fix bugs etc. See the ROSE README file
76836 // for directions.
76837 
76838 // tps: (02/22/2010): Adding DLL export requirements
76839 #include "rosedll.h"
76840 
76841 // predeclarations for SgInitializedName
76842 
76843 /* #line 76844 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
76844 
76845 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
76846 
76847 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
76848 
76849 #if 1
76850 // Class Definition for SgInitializedName
76851 class ROSE_DLL_API SgInitializedName : public SgLocatedNodeSupport
76852  {
76853  public:
76854 
76855 
76856 /* #line 76857 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
76857 
76858  virtual SgNode* copy ( SgCopyHelp& help) const override;
76859 // Start of memberFunctionString
76860 /* #line 5178 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
76861 
76862 
76863  public:
76864 
76872  {
76873  // When used as entries in the preinitialization list we record extra data require to reset instantiated template names
76874  e_unknown_preinitialization = 0,
76875  e_virtual_base_class = 1,
76876  e_nonvirtual_base_class = 2,
76877  e_data_member = 3,
76878  e_delegation_constructor = 4,
76879  e_last_preinitialization
76880  };
76881 
76887  {
76888  e_invalid_register = 0,
76890  e_register_a,
76891  e_register_b,
76892  e_register_c,
76894  e_register_si,
76895  e_register_di,
76896  e_register_bp,
76898  e_register_r8,
76899  e_register_r9,
76900  e_register_r10,
76902  e_register_r12,
76903  e_register_r13,
76904  e_register_r14,
76905  e_register_r15,
76906  e_register_st0,
76907  e_register_st1,
76908  e_register_st2,
76910  e_register_st4,
76911  e_register_st5,
76912  e_register_st6,
76913  e_register_st7,
76914  e_register_mm0,
76915  e_register_mm1,
76916  e_register_mm2,
76918  e_register_mm4,
76919  e_register_mm5,
76920  e_register_mm6,
76921  e_register_mm7,
76922  e_register_f0,
76923  e_register_f1,
76924  e_register_f2,
76926  e_register_f4,
76927  e_register_f5,
76928  e_register_f6,
76929  e_register_f7,
76930  e_register_f8,
76931  e_register_f9,
76932  e_register_f10,
76934  e_register_f12,
76935  e_register_f13,
76936  e_register_f14,
76937  e_register_f15,
76938  e_register_flags,
76939  e_register_fpsr,
76941  e_register_f16,
76942  e_register_f17,
76943  e_register_f18,
76944  e_register_f19,
76945  e_register_f20,
76947  e_last_register
76948  };
76949 
76950  // DQ (1/3/2009): This might imply that we need a variable modifier (SgVariableModifier
76951  // (as a new IR node, but for now implement these directly since they are GNU specific
76952  // attributes (extensions)).
76954  {
76955  // DQ (12/4/2007): Added support for GNU specific attributes
76956  e_gnu_attribute__weak__ = 0,
76957  e_gnu_attribute__unused__ = 1,
76958  e_gnu_attribute__used__ = 2,
76959  e_gnu_attribute__deprecated__ = 3,
76960  e_gnu_attribute__nocommon__ = 4,
76961  e_gnu_attribute__transparent_union__ = 5,
76962  e_gnu_attribute__weakref__ = 6,
76964  // DQ (12/30/2013): Added support fo packing for variables (e.g. field values), instead of just there types.
76965  // Also, fixed bug where packed was same enum value as weakref
76966  e_gnu_attribute__packed__ = 7,
76968  // DQ (1/6/2014): Added support for GNU noreturn attribute
76969  e_gnu_attribute__noreturn__ = 8,
76970  e_gnu_attribute__noreorder__ = 9,
76972  e_ms_declspec_parameter_appdomain = 10,
76973  e_ms_declspec_parameter_deprecated = 11,
76974  e_ms_declspec_parameter_dllimport = 12,
76975  e_ms_declspec_parameter_dllexport = 13,
76976  e_ms_declspec_parameter_novtable = 14,
76977  e_ms_declspec_parameter_process = 15,
76978  e_ms_declspec_parameter_property = 16,
76979  e_ms_declspec_parameter_restrict = 17,
76980  e_ms_declspec_parameter_selectany = 18,
76981  e_ms_declspec_parameter_thread = 19,
76982  e_ms_declspec_parameter_uuid = 20,
76984  e_last_gnu_variable_attribute
76985  };
76986 
76987  // driscoll6 (8/4/11): support for excess specifiers in python (*args and **kwargs)
76988  enum excess_specifier_enum
76989  {
76990  e_excess_specifier_none = 0,
76991  e_excess_specifier_positionals,
76992  e_excess_specifier_keywords,
76993  e_excess_specifier_last /* sentry */
76994  };
76995 
76996  bool checkBit ( unsigned int bit ) const;
76997  void setBit ( unsigned int bit );
76998  void unsetBit ( unsigned int bit );
76999 
77000  bool isGnuAttributeWeak() const;
77001  void setGnuAttributeWeak();
77002  void unsetGnuAttributeWeak();
77003 
77004  bool isGnuAttributeUnused() const;
77005  void setGnuAttributeUnused();
77006  void unsetGnuAttributeUnused();
77007 
77008  bool isGnuAttributeUsed() const;
77009  void setGnuAttributeUsed();
77010  void unsetGnuAttributeUsed();
77011 
77012  bool isGnuAttributeDeprecated() const;
77013  void setGnuAttributeDeprecated();
77014  void unsetGnuAttributeDeprecated();
77015 
77016  bool isGnuAttributeNoCommon() const;
77017  void setGnuAttributeNoCommon();
77018  void unsetGnuAttributeNoCommon();
77019 
77020  bool isGnuAttributeTransparentUnion() const;
77021  void setGnuAttributeTransparentUnion();
77022  void unsetGnuAttributeTransparentUnion();
77023 
77024  bool isGnuAttributeWeakReference() const;
77025  void setGnuAttributeWeakReference();
77026  void unsetGnuAttributeWeakReference();
77027 
77028  // DQ (12/30/2013): Added support fo packing for variables (e.g. field values), instead of just there types.
77029  // The differences are represented in test codes: test2013_104.c and test2013_113.c.
77030  bool isGnuAttributePacked() const;
77031  void setGnuAttributePacked();
77032  void unsetGnuAttributePacked();
77033 
77034  // DQ (1/6/2014): Added support for noreturn attribute on function parameters (appies only for function pointers used as function parameters).
77035  bool isGnuAttributeNoReturn() const;
77036  void setGnuAttributeNoReturn();
77037  void unsetGnuAttributeNoReturn();
77038 
77039  bool isGnuAttributeNoReorder() const;
77040  void setGnuAttributeNoReorder();
77041  void unsetGnuAttributeNoReorder();
77042 
77043 #if 0
77044  // DQ (8/17/2014): Associated Microsoft attributes that are valid in a function parameter.
77045  appdomain
77046  deprecated
77047  dllimport
77048  dllexport
77049  novtable
77050  process
77051  restrict
77052  selectany
77053  thread
77054  uuid(" ComObjectGUID ")
77055 #endif
77056 
77057  bool is_ms_declspec_parameter_appdomain() const;
77058  void set_ms_declspec_parameter_appdomain();
77059  void unset_ms_declspec_parameter_appdomain();
77060 
77061  bool is_ms_declspec_parameter_deprecated() const;
77062  void set_ms_declspec_parameter_deprecated();
77063  void unset_ms_declspec_parameter_deprecated();
77064 
77065  bool is_ms_declspec_parameter_dllimport() const;
77066  void set_ms_declspec_parameter_dllimport();
77067  void unset_ms_declspec_parameter_dllimport();
77068 
77069  bool is_ms_declspec_parameter_dllexport() const;
77070  void set_ms_declspec_parameter_dllexport();
77071  void unset_ms_declspec_parameter_dllexport();
77072 
77073  bool is_ms_declspec_parameter_novtable() const;
77074  void set_ms_declspec_parameter_novtable();
77075  void unset_ms_declspec_parameter_novtable();
77076 
77077  bool is_ms_declspec_parameter_process() const;
77078  void set_ms_declspec_parameter_process();
77079  void unset_ms_declspec_parameter_process();
77080 
77081  bool is_ms_declspec_parameter_restrict() const;
77082  void set_ms_declspec_parameter_restrict();
77083  void unset_ms_declspec_parameter_restrict();
77084 
77085  bool is_ms_declspec_parameter_selectany() const;
77086  void set_ms_declspec_parameter_selectany();
77087  void unset_ms_declspec_parameter_selectany();
77088 
77089  bool is_ms_declspec_parameter_thread() const;
77090  void set_ms_declspec_parameter_thread();
77091  void unset_ms_declspec_parameter_thread();
77092 
77093  bool is_ms_declspec_parameter_uuid() const;
77094  void set_ms_declspec_parameter_uuid();
77095  void unset_ms_declspec_parameter_uuid();
77096 
77097  void post_construction_initialization() override;
77098 
77099 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
77100  // Overriding SgNode versions of these
77101  virtual unsigned int cfgIndexForEnd() const override;
77102  virtual bool cfgIsIndexInteresting(unsigned int index) const override;
77103  virtual unsigned int cfgFindChildIndex(SgNode* n) override;
77104  virtual unsigned int cfgFindNextChildIndex(SgNode* n) override;
77105  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
77106  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
77107 #endif
77108 
77109  SgStorageModifier & get_storageModifier();
77110 
77111  // DQ (8/10/2010): Added const version of this function!
77112  const SgStorageModifier & get_storageModifier() const;
77113 
77114  // These are automatically generated! (not an option currently)
77115  // SgInitializedName();
77116  // ~SgInitializedName();
77118  const SgName& name,
77119  SgType *typeptr,
77120  SgInitializer* iptr = 0,
77121  SgDeclarationStatement *declptr = 0,
77122 // QY 11/2/04 removed itemptr
77123 // SgInitializedName *itemptr = 0,
77124  SgInitializedName *prev_decl_item = 0 ) ROSE_DEPRECATED_FUNCTION;
77125 
77126  // DQ (8/4/2006): New constructor that explicitly includes the Sg_File_Info and SgScopeStatement (recently added data members)
77127  SgInitializedName ( Sg_File_Info* fileInfo, const SgName& name, SgType *typeptr, SgInitializer* iptr,
77128  SgDeclarationStatement *declptr, SgScopeStatement* scope, SgInitializedName *prev_itemptr );
77129 
77130 #ifdef BUILD_X_VERSION_TERMINALS
77132  const SgName& name,
77133  SgType *typeptr,
77134  SgInitializer* iptr = 0,
77135  SgX_DeclarationStatement *declptr = 0,
77136 // SgInitializedName *itemptr = 0,
77137  SgInitializedName *prev_decl_item = 0 );
77138 #endif
77139 
77140  // DQ (10/13/2014): Adding a default constructor for compatability with what was previously the API before the newer aterm support.
77141  SgInitializedName() ROSE_DEPRECATED_FUNCTION;
77142 
77144 
77145  SgInitializedName& operator= (const SgInitializedName& ptr);
77146 
77147  bool operator== (const SgInitializedName& ) const;
77148  bool operator< (const SgInitializedName&) const;
77149 
77150  // DQ (10/9/2007): Use the ROSETTA generated version to test failure
77151  // DQ (10/5/2007): This custom function to match the version that would be automatically by ROSETTA, but we
77152  // want to have a custom version of set_name(SgName name) that permits names to be reset (unloaded from the
77153  // symbol table are reloaded into the symbol table).
77154  // SgName get_name() const;
77155 
77156  // DQ (10/9/2007): Use the ROSETTA generated version to test failure
77157  // DQ (10/5/2007): Put back into place afterhaving been removed by accident in 12/xx/2004
77158  // AJ (10/21/2004): Added function to support changing names of symbols, note that void set_name(SgName name)
77159  // would be the automatically generated function.
77160  // void set_name(SgName name);
77161  // int set_name(SgName new_name);
77162 
77163  SgType *get_type() const;
77164  void set_type(SgType *t);
77165 
77166  SgInitializer *get_initializer() const;
77167  void set_initializer(SgInitializer* i);
77168 
77169 #ifdef BUILD_X_VERSION_TERMINALS
77170  // Modified from SAGE (added access functions for X version of DeclarationStatement data member
77171  SgX_DeclarationStatement *get_X_declaration() const;
77172  void set_X_declaration(SgX_DeclarationStatement* decl);
77173 #endif
77174 
77175  SgDeclarationStatement *get_declaration() const;
77176  // void set_declaration(SgDeclarationStatement* decl);
77177 
77178  SgDeclarationStatement *get_definition() const;
77179  void set_definition(SgDeclarationStatement* def);
77180 
77181  // DQ (8/2/2004): Force an explicit function matching the virtual function defined in SgNode
77182  // Sg_File_Info* get_file_info() const;
77183 
77185  SgName get_qualified_name() const;
77186 
77187  // DQ (2/18/2006): Added general name mangling for all declarations (and some other IR nodes).
77188  virtual SgName get_mangled_name(void) const;
77189 
77190  // DQ (11/6/2006): use this to return the startOfConstruct source position.
77191  // virtual Sg_File_Info* get_file_info(void) const;
77192  // virtual void set_file_info(Sg_File_Info* X);
77193 
77194  // DQ (2/6/2007): Added support to get the symbol from the declaration (via the symbol table in the scope)
77196  SgSymbol* get_symbol_from_symbol_table() const;
77197 
77198  // PC (10/1/2009): Added support to get the symbol from the correct associated declaration
77200  SgSymbol* search_for_symbol_from_symbol_table() const;
77201 
77202 #if ALT_FIXUP_COPY
77203  // DQ (11/7/2007): These need to be called separately (see documentation)
77204  virtual void fixupCopy_scopes (SgNode* copy, SgCopyHelp & help) const override;
77205  virtual void fixupCopy_symbols (SgNode* copy, SgCopyHelp & help) const override;
77206  virtual void fixupCopy_references (SgNode* copy, SgCopyHelp & help) const override;
77207 #else
77208  // DQ (10/5/2007): Added fixup function to set scopes not set properly by the ROSETTA generated copy!
77209  virtual void fixupCopy(SgNode* copy, SgCopyHelp & help) const;
77210 #endif
77211 
77212  // DQ (12/16/2013): Added support for name qualification on SgInitializedName for use in preinitialization lists.
77213  SgName get_qualified_name_prefix() const;
77214 
77215  // DQ (3/21/2019): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
77216  int get_name_qualification_length() const;
77217  void set_name_qualification_length(int name_qualification_length_for_type);
77218 
77219  // DQ (3/31/2019): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
77220  bool get_type_elaboration_required() const;
77221  void set_type_elaboration_required(bool type_elaboration_required_for_type);
77222 
77223  // DQ (3/31/2019): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
77224  bool get_global_qualification_required() const;
77225  void set_global_qualification_required(bool global_qualification_required_for_type);
77226 
77227  // DQ (5/29/2011): Added to support for new qualified name generation
77229  SgName get_qualified_name_prefix_for_type() const;
77230 
77231  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
77232  int get_name_qualification_length_for_type() const;
77233  void set_name_qualification_length_for_type(int name_qualification_length_for_type);
77234 
77235  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
77236  bool get_type_elaboration_required_for_type() const;
77237  void set_type_elaboration_required_for_type(bool type_elaboration_required_for_type);
77238 
77239  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
77240  bool get_global_qualification_required_for_type() const;
77241  void set_global_qualification_required_for_type(bool global_qualification_required_for_type);
77242 
77243 
77244 
77245 // End of memberFunctionString
77246 // Start of memberFunctionString
77247 /* #line 2317 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
77248 
77249 
77250  /* name Persistant Attribute Mechanism
77251 
77252  This is the persistant attribute mechanism for attaching attributes to IR nodes across
77253  multiple passes. Note that these attributes are persistant in that they are preserved
77254  if the AST is written out to a file and read in from a file. However, virtual function
77255  in the user-defined class derived from the AstAttribute must be defined for the attribute
77256  to be defined across the boundary of File I/O (simple pack and unpack functions). More
77257  sophisticated mechanisms are available within the AstAttributeMechanism object
77258  (e.g iterating though attributes, etc; get_attributeMechanism() is available if direct
77259  access is required, however mostly only internal tools use this lower level support).
77260 
77261  \internal This used to be a public data member, but has been changed to be a protected
77262  pointer instead. The functional interface of the AstAttributeMechanism is presevered
77263  but some of the names and the syntax for calling the interface have changed. The
77264  pointer to the AstAttributeMechanism is now generated by ROSETTA.
77265  */
77266  /* */
77268  virtual void addNewAttribute(std::string s,AstAttribute* a) override;
77270  virtual AstAttribute* getAttribute(std::string s) const override;
77272  virtual void updateAttribute(std::string s,AstAttribute* a) override; // formerly called: replace in AstAttributeMechanism
77277  virtual void setAttribute(std::string s,AstAttribute* a) override;
77279  virtual void removeAttribute(std::string s) override;
77281  virtual bool attributeExists(std::string s) const override;
77283  virtual int numberOfAttributes() const override;
77284 
77299  /* */
77300 
77301 
77302 
77303 
77304 // End of memberFunctionString
77305 // Start of memberFunctionString
77306 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
77307 
77308 // *** COMMON CODE SECTION BEGINS HERE ***
77309 
77310  public:
77311 
77312  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
77313  // and not required which is required to match the other aspects of the copy mechanism code generation.
77314  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
77315  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
77316  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
77317  // virtual SgNode* copy ( const SgCopyHelp & help) const;
77318 
77320  virtual std::string class_name() const override;
77321 
77323  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
77324 
77326  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
77327  // static const VariantT static_variant = V_SgInitializedName;
77328  enum { static_variant = V_SgInitializedName };
77329 
77330  /* the generated cast function */
77332  ROSE_DLL_API friend SgInitializedName* isSgInitializedName( SgNode * s );
77333 
77335  ROSE_DLL_API friend const SgInitializedName* isSgInitializedName( const SgNode * s );
77336 
77337  // ******************************************
77338  // * Memory Pool / New / Delete
77339  // ******************************************
77340 
77341  public:
77343  static const unsigned pool_size; //
77345  static std::vector<unsigned char *> pools; //
77347  static SgInitializedName * next_node; //
77348 
77350  static unsigned long initializeStorageClassArray(SgInitializedNameStorageClass *); //
77351 
77353  static void clearMemoryPool(); //
77354  static void deleteMemoryPool(); //
77355 
77357  static void extendMemoryPoolForFileIO(); //
77358 
77360  static SgInitializedName * getPointerFromGlobalIndex(unsigned long); //
77362  static SgInitializedName * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
77363 
77365  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
77367  static void resetValidFreepointers(); //
77369  static unsigned long getNumberOfLastValidPointer(); //
77370 
77371 
77372 #if defined(INLINE_FUNCTIONS)
77373 
77374  inline void *operator new (size_t size);
77375 #else
77376 
77377  void *operator new (size_t size);
77378 #endif
77379 
77380  void operator delete (void* pointer, size_t size);
77381 
77382  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
77383  void operator delete (void* pointer)
77384  {
77385  // This is the generated delete operator...
77386  SgInitializedName::operator delete (pointer,sizeof(SgInitializedName));
77387  }
77388 
77390  static size_t numberOfNodes();
77391 
77393  static size_t memoryUsage();
77394 
77395  // End of scope which started in IR nodes specific code
77396  /* */
77397 
77398  /* name Internal Functions
77399  \brief Internal functions ... incomplete-documentation
77400 
77401  These functions have been made public as part of the design, but they are suggested for internal use
77402  or by particularly knowledgeable users for specialized tools or applications.
77403 
77404  \internal We could not make these private because they are required by user for special purposes. And
77405  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
77406 
77407  */
77408 
77409  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
77410  // overridden in every class by *generated* implementation
77412  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
77413  // MS: 06/28/02 container of names of variables or container indices
77414  // used used in the traversal to access AST successor nodes
77415  // overridden in every class by *generated* implementation
77418  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
77419 
77420  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
77421  // than all the vector copies. The implementation for these functions is generated for each class.
77423  virtual size_t get_numberOfTraversalSuccessors() override;
77425  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
77427  virtual size_t get_childIndex(SgNode *child) override;
77428 
77429 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
77430  // MS: 08/16/2002 method for generating RTI information
77432  virtual RTIReturnType roseRTI() override;
77433 #endif
77434  /* */
77435 
77436 
77437 
77438  /* name Deprecated Functions
77439  \brief Deprecated functions ... incomplete-documentation
77440 
77441  These functions have been deprecated from use.
77442  */
77443  /* */
77444 
77446  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
77447 
77448  // JJW (10/16/2008): Changed to a single function in Node.code, and put
77449  // getVariant() in #if 0 block to prevent confusing Doxygen
77450 #if 0
77451 
77452  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
77454  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
77455 #endif
77456  /* */
77457 
77458 
77459 
77460 
77461  public:
77462  /* name Traversal Support Functions
77463  \brief Traversal support functions ... incomplete-documentation
77464 
77465  These functions have been made public as part of the design, but they are suggested for internal use
77466  or by particularly knowledgable users for specialized tools or applications.
77467  */
77468  /* */
77469 
77470  // DQ (11/26/2005): Support for visitor pattern mechanims
77471  // (inferior to ROSE traversal mechanism, experimental).
77475 
77476  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
77478  virtual void accept (ROSE_VisitorPattern & visitor) override;
77479 
77480  // DQ (12/26/2005): Support for traversal based on the memory pool
77483  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
77484 
77488 
77489  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
77490  // This traversal helps support internal tools that call static member functions.
77491  // note: this function operates on the memory pools.
77494  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
77495  /* */
77496 
77497 
77498  public:
77499  /* name Memory Allocation Functions
77500  \brief Memory allocations functions ... incomplete-documentation
77501 
77502  These functions have been made public as part of the design, but they are suggested for internal use
77503  or by particularly knowledgable users for specialized tools or applications.
77504  */
77505  /* */
77506 
77517  virtual bool isInMemoryPool() override;
77518 
77529  virtual void checkDataMemberPointersIfInMemoryPool() override;
77530 
77531  // DQ (4/30/2006): Modified to be a const function.
77546  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
77547 
77557  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
77558 
77570  virtual long getChildIndex( SgNode* childNode ) const override;
77571 
77572  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
77573  // comment here (changed to be a C style comment and not be a doxygen comment).
77574  /* \brief Constructor for use by AST File I/O Mechanism
77575 
77576  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
77577  which obtained via fast binary file I/O from disk.
77578  */
77579  // SgInitializedName( SgInitializedNameStorageClass& source );
77580 
77581 
77582 
77583 
77584 
77585  // JH (10/24/2005): methods added to support the ast file IO
77586  private:
77587 
77588  /* name AST Memory Allocation Support Functions
77589  \brief Memory allocations support....
77590 
77591  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
77592  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
77593  and support the AST File I/O Mechanism.
77594  */
77595  /* */
77596 
77597  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
77598  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
77599  that I use the same type everywhere, if any changes are made. THe second one declares the type
77600  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
77601  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
77602  a correspinding one in the AST_FILE_IO class!
77603  */
77604  // DQ (9/2/2015): This typedef is no longer used, we can't define the
77605  // comment here (changed to be a C style comment and not be a doxygen comment).
77606  /* \brief Typedef used for low level memory access.
77607  */
77608  // typedef unsigned char* TestType;
77609 
77610  // DQ (9/2/2015): This typedef is no longer used, we can't define the
77611  // comment here (changed to be a C style comment and not be a doxygen comment).
77612  /* \brief Typedef used to hold memory addresses as values.
77613  */
77614  // typedef unsigned long AddressType;
77615 
77616 
77617 
77618  // necessary, to have direct access to the p_freepointer and the private methods !
77620  friend class AST_FILE_IO;
77621 
77623  friend class SgInitializedNameStorageClass;
77624 
77626  friend class AstSpecificDataManagingClass;
77627 
77629  friend class AstSpecificDataManagingClassStorageClass;
77630 
77631  public:
77633  SgInitializedName( const SgInitializedNameStorageClass& source );
77634 
77635  // private: // JJW hack
77636  /*
77637  name AST Memory Allocation Support Variables
77638  Memory allocations support variables
77639 
77640  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
77641  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
77642  and support the AST File I/O Mechanism.
77643  */
77644  /* */
77645 
77646  public:
77647 
77648  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
77649  // to current node (so that it will work cleanly with build functions to specify patterns).
77650  // virtual SgNode* addRegExpAttribute();
77657 
77658 // *** COMMON CODE SECTION ENDS HERE ***
77659 
77660 
77661 // End of memberFunctionString
77662 // Start of memberFunctionString
77663 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
77664 
77665  // the generated cast function
77666  // friend ROSE_DLL_API SgInitializedName* isSgInitializedName ( SgNode* s );
77667 
77669 
77670 
77671 // End of memberFunctionString
77672 
77673  public:
77674  SgName get_name() const /* (getDataAccessFunctionPrototypeString) */;
77675  void set_name(SgName name) /* (getDataAccessFunctionPrototypeString) */;
77676 
77677  public:
77678  std::string get_microsoft_uuid_string() const;
77679  void set_microsoft_uuid_string(std::string microsoft_uuid_string);
77680 
77681  public:
77682  SgType* get_typeptr() const;
77683  void set_typeptr(SgType* typeptr);
77684 
77685  public:
77686  SgInitializer* get_initptr() const;
77687  void set_initptr(SgInitializer* initptr);
77688 
77689  public:
77690  SgInitializedName* get_prev_decl_item() const;
77691  void set_prev_decl_item(SgInitializedName* prev_decl_item);
77692 
77693 
77694  public:
77695  SgDeclarationStatement* get_declptr() const;
77696  void set_declptr(SgDeclarationStatement* declptr);
77697 
77698 
77699  public:
77700  SgScopeStatement* get_scope() const /* (getDataAccessFunctionPrototypeString) */;
77701  void set_scope(SgScopeStatement* scope) /* (getDataAccessFunctionPrototypeString) */;
77702 
77703  public:
77704  SgInitializedName::preinitialization_enum get_preinitialization() const;
77705  void set_preinitialization(SgInitializedName::preinitialization_enum preinitialization);
77706 
77707  public:
77708  bool get_isCoArray() const;
77709  void set_isCoArray(bool isCoArray);
77710 
77711  public:
77712  SgInitializedName::asm_register_name_enum get_register_name_code() const;
77713  void set_register_name_code(SgInitializedName::asm_register_name_enum register_name_code);
77714 
77715  public:
77716  SgInitializedName::excess_specifier_enum get_excess_specifier() const;
77717  void set_excess_specifier(SgInitializedName::excess_specifier_enum excess_specifier);
77718 
77719  public:
77720  std::string get_register_name_string() const;
77721  void set_register_name_string(std::string register_name_string);
77722 
77723  public:
77724  bool get_requiresGlobalNameQualificationOnType() const;
77725  void set_requiresGlobalNameQualificationOnType(bool requiresGlobalNameQualificationOnType);
77726 
77727  public:
77728  bool get_shapeDeferred() const;
77729  void set_shapeDeferred(bool shapeDeferred);
77730 
77731  public:
77732  bool get_initializationDeferred() const;
77733  void set_initializationDeferred(bool initializationDeferred);
77734 
77735  public:
77736  SgBitVector get_gnu_attribute_modifierVector() const;
77737  void set_gnu_attribute_modifierVector(SgBitVector gnu_attribute_modifierVector);
77738 
77739  public:
77740  unsigned long int get_gnu_attribute_initialization_priority() const;
77741  void set_gnu_attribute_initialization_priority(unsigned long int gnu_attribute_initialization_priority);
77742 
77743  public:
77744  std::string get_gnu_attribute_named_weak_reference() const;
77745  void set_gnu_attribute_named_weak_reference(std::string gnu_attribute_named_weak_reference);
77746 
77747  public:
77748  std::string get_gnu_attribute_named_alias() const;
77749  void set_gnu_attribute_named_alias(std::string gnu_attribute_named_alias);
77750 
77751  public:
77752  std::string get_gnu_attribute_cleanup_function() const;
77753  void set_gnu_attribute_cleanup_function(std::string gnu_attribute_cleanup_function);
77754 
77755  public:
77756  std::string get_gnu_attribute_section_name() const;
77757  void set_gnu_attribute_section_name(std::string gnu_attribute_section_name);
77758 
77759  public:
77760  int get_gnu_attribute_alignment() const;
77761  void set_gnu_attribute_alignment(int gnu_attribute_alignment);
77762 
77763  public:
77764  SgDeclarationModifier::gnu_declaration_visability_enum get_gnu_attribute_visability() const;
77765  void set_gnu_attribute_visability(SgDeclarationModifier::gnu_declaration_visability_enum gnu_attribute_visability);
77766 
77767  public:
77768  bool get_protected_declaration() const;
77769  void set_protected_declaration(bool protected_declaration);
77770 
77771 
77772 
77773 
77774 
77775 
77776 
77777  public:
77778  bool get_hasArrayTypeWithEmptyBracketSyntax() const;
77779  void set_hasArrayTypeWithEmptyBracketSyntax(bool hasArrayTypeWithEmptyBracketSyntax);
77780 
77781  public:
77782  bool get_using_C11_Alignas_keyword() const;
77783  void set_using_C11_Alignas_keyword(bool using_C11_Alignas_keyword);
77784 
77785  public:
77786  SgNode* get_constant_or_type_argument_for_Alignas_keyword() const;
77787  void set_constant_or_type_argument_for_Alignas_keyword(SgNode* constant_or_type_argument_for_Alignas_keyword);
77788 
77789  public:
77790  bool get_using_auto_keyword() const;
77791  void set_using_auto_keyword(bool using_auto_keyword);
77792 
77793  public:
77794  SgType * get_auto_decltype() const;
77795  void set_auto_decltype(SgType * auto_decltype);
77796 
77797  public:
77798  bool get_using_device_keyword() const;
77799  void set_using_device_keyword(bool using_device_keyword);
77800 
77801  public:
77802  bool get_is_braced_initialized() const;
77803  void set_is_braced_initialized(bool is_braced_initialized);
77804 
77805  public:
77806  bool get_using_assignment_copy_constructor_syntax() const;
77807  void set_using_assignment_copy_constructor_syntax(bool using_assignment_copy_constructor_syntax);
77808 
77809  public:
77810  bool get_needs_definitions() const;
77811  void set_needs_definitions(bool needs_definitions);
77812 
77813  public:
77814  bool get_is_parameter_pack() const;
77815  void set_is_parameter_pack(bool is_parameter_pack);
77816 
77817  public:
77818  bool get_is_pack_element() const;
77819  void set_is_pack_element(bool is_pack_element);
77820 
77821 
77822  public:
77823  virtual ~SgInitializedName();
77824 
77825 
77826  public:
77827  SgInitializedName(Sg_File_Info* startOfConstruct , SgName name = NULL, SgType* typeptr = NULL);
77828  SgInitializedName(SgName name, SgType* typeptr);
77829 
77830  protected:
77831 // Start of memberFunctionString
77832 SgName p_name;
77833 
77834 // End of memberFunctionString
77835 // Start of memberFunctionString
77836 std::string p_microsoft_uuid_string;
77837 
77838 // End of memberFunctionString
77839 // Start of memberFunctionString
77840 SgType* p_typeptr;
77841 
77842 // End of memberFunctionString
77843 // Start of memberFunctionString
77844 SgInitializer* p_initptr;
77845 
77846 // End of memberFunctionString
77847 // Start of memberFunctionString
77848 SgInitializedName* p_prev_decl_item;
77849 
77850 // End of memberFunctionString
77851 // Start of memberFunctionString
77852 bool p_is_initializer;
77853 
77854 // End of memberFunctionString
77855 // Start of memberFunctionString
77857 
77858 // End of memberFunctionString
77859 // Start of memberFunctionString
77860 SgStorageModifier* p_storageModifier;
77861 
77862 // End of memberFunctionString
77863 // Start of memberFunctionString
77865 
77866 // End of memberFunctionString
77867 // Start of memberFunctionString
77869 
77870 // End of memberFunctionString
77871 // Start of memberFunctionString
77872 bool p_isCoArray;
77873 
77874 // End of memberFunctionString
77875 // Start of memberFunctionString
77877 
77878 // End of memberFunctionString
77879 // Start of memberFunctionString
77880 SgInitializedName::excess_specifier_enum p_excess_specifier;
77881 
77882 // End of memberFunctionString
77883 // Start of memberFunctionString
77884 std::string p_register_name_string;
77885 
77886 // End of memberFunctionString
77887 // Start of memberFunctionString
77888 bool p_requiresGlobalNameQualificationOnType;
77889 
77890 // End of memberFunctionString
77891 // Start of memberFunctionString
77892 bool p_shapeDeferred;
77893 
77894 // End of memberFunctionString
77895 // Start of memberFunctionString
77896 bool p_initializationDeferred;
77897 
77898 // End of memberFunctionString
77899 // Start of memberFunctionString
77900 SgBitVector p_gnu_attribute_modifierVector;
77901 
77902 // End of memberFunctionString
77903 // Start of memberFunctionString
77904 unsigned long int p_gnu_attribute_initialization_priority;
77905 
77906 // End of memberFunctionString
77907 // Start of memberFunctionString
77908 std::string p_gnu_attribute_named_weak_reference;
77909 
77910 // End of memberFunctionString
77911 // Start of memberFunctionString
77912 std::string p_gnu_attribute_named_alias;
77913 
77914 // End of memberFunctionString
77915 // Start of memberFunctionString
77916 std::string p_gnu_attribute_cleanup_function;
77917 
77918 // End of memberFunctionString
77919 // Start of memberFunctionString
77920 std::string p_gnu_attribute_section_name;
77921 
77922 // End of memberFunctionString
77923 // Start of memberFunctionString
77924 int p_gnu_attribute_alignment;
77925 
77926 // End of memberFunctionString
77927 // Start of memberFunctionString
77928 SgDeclarationModifier::gnu_declaration_visability_enum p_gnu_attribute_visability;
77929 
77930 // End of memberFunctionString
77931 // Start of memberFunctionString
77932 bool p_protected_declaration;
77933 
77934 // End of memberFunctionString
77935 // Start of memberFunctionString
77936 int p_name_qualification_length;
77937 
77938 // End of memberFunctionString
77939 // Start of memberFunctionString
77940 bool p_type_elaboration_required;
77941 
77942 // End of memberFunctionString
77943 // Start of memberFunctionString
77944 bool p_global_qualification_required;
77945 
77946 // End of memberFunctionString
77947 // Start of memberFunctionString
77948 int p_name_qualification_length_for_type;
77949 
77950 // End of memberFunctionString
77951 // Start of memberFunctionString
77952 bool p_type_elaboration_required_for_type;
77953 
77954 // End of memberFunctionString
77955 // Start of memberFunctionString
77956 bool p_global_qualification_required_for_type;
77957 
77958 // End of memberFunctionString
77959 // Start of memberFunctionString
77960 bool p_hasArrayTypeWithEmptyBracketSyntax;
77961 
77962 // End of memberFunctionString
77963 // Start of memberFunctionString
77964 bool p_using_C11_Alignas_keyword;
77965 
77966 // End of memberFunctionString
77967 // Start of memberFunctionString
77968 SgNode* p_constant_or_type_argument_for_Alignas_keyword;
77969 
77970 // End of memberFunctionString
77971 // Start of memberFunctionString
77972 bool p_using_auto_keyword;
77973 
77974 // End of memberFunctionString
77975 // Start of memberFunctionString
77976 SgType * p_auto_decltype;
77977 
77978 // End of memberFunctionString
77979 // Start of memberFunctionString
77980 bool p_using_device_keyword;
77981 
77982 // End of memberFunctionString
77983 // Start of memberFunctionString
77984 bool p_is_braced_initialized;
77985 
77986 // End of memberFunctionString
77987 // Start of memberFunctionString
77988 bool p_using_assignment_copy_constructor_syntax;
77989 
77990 // End of memberFunctionString
77991 // Start of memberFunctionString
77992 bool p_needs_definitions;
77993 
77994 // End of memberFunctionString
77995 // Start of memberFunctionString
77996 bool p_is_parameter_pack;
77997 
77998 // End of memberFunctionString
77999 // Start of memberFunctionString
78000 bool p_is_pack_element;
78001 
78002 // End of memberFunctionString
78003 
78004 
78005 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
78006 
78007 
78008  };
78009 #endif
78010 
78011 // postdeclarations for SgInitializedName
78012 
78013 /* #line 78014 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
78014 
78015 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
78016 
78017 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
78018 
78019 
78020 /* #line 78021 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
78021 
78022 
78023 
78024 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
78025 
78026 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
78027 // This code is automatically generated for each
78028 // terminal and non-terminal within the defined
78029 // grammar. There is a simple way to change the
78030 // code to fix bugs etc. See the ROSE README file
78031 // for directions.
78032 
78033 // tps: (02/22/2010): Adding DLL export requirements
78034 #include "rosedll.h"
78035 
78036 // predeclarations for SgInterfaceBody
78037 
78038 /* #line 78039 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
78039 
78040 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
78041 
78042 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
78043 
78044 #if 1
78045 // Class Definition for SgInterfaceBody
78046 class ROSE_DLL_API SgInterfaceBody : public SgLocatedNodeSupport
78047  {
78048  public:
78049 
78050 
78051 /* #line 78052 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
78052 
78053  virtual SgNode* copy ( SgCopyHelp& help) const override;
78054 // Start of memberFunctionString
78055 /* #line 607 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/LocatedNode.code" */
78056 
78057 
78058 
78059 
78060 // End of memberFunctionString
78061 // Start of memberFunctionString
78062 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
78063 
78064 // *** COMMON CODE SECTION BEGINS HERE ***
78065 
78066  public:
78067 
78068  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
78069  // and not required which is required to match the other aspects of the copy mechanism code generation.
78070  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
78071  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
78072  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
78073  // virtual SgNode* copy ( const SgCopyHelp & help) const;
78074 
78076  virtual std::string class_name() const override;
78077 
78079  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
78080 
78082  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
78083  // static const VariantT static_variant = V_SgInterfaceBody;
78084  enum { static_variant = V_SgInterfaceBody };
78085 
78086  /* the generated cast function */
78088  ROSE_DLL_API friend SgInterfaceBody* isSgInterfaceBody( SgNode * s );
78089 
78091  ROSE_DLL_API friend const SgInterfaceBody* isSgInterfaceBody( const SgNode * s );
78092 
78093  // ******************************************
78094  // * Memory Pool / New / Delete
78095  // ******************************************
78096 
78097  public:
78099  static const unsigned pool_size; //
78101  static std::vector<unsigned char *> pools; //
78103  static SgInterfaceBody * next_node; //
78104 
78106  static unsigned long initializeStorageClassArray(SgInterfaceBodyStorageClass *); //
78107 
78109  static void clearMemoryPool(); //
78110  static void deleteMemoryPool(); //
78111 
78113  static void extendMemoryPoolForFileIO(); //
78114 
78116  static SgInterfaceBody * getPointerFromGlobalIndex(unsigned long); //
78118  static SgInterfaceBody * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
78119 
78121  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
78123  static void resetValidFreepointers(); //
78125  static unsigned long getNumberOfLastValidPointer(); //
78126 
78127 
78128 #if defined(INLINE_FUNCTIONS)
78129 
78130  inline void *operator new (size_t size);
78131 #else
78132 
78133  void *operator new (size_t size);
78134 #endif
78135 
78136  void operator delete (void* pointer, size_t size);
78137 
78138  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
78139  void operator delete (void* pointer)
78140  {
78141  // This is the generated delete operator...
78142  SgInterfaceBody::operator delete (pointer,sizeof(SgInterfaceBody));
78143  }
78144 
78146  static size_t numberOfNodes();
78147 
78149  static size_t memoryUsage();
78150 
78151  // End of scope which started in IR nodes specific code
78152  /* */
78153 
78154  /* name Internal Functions
78155  \brief Internal functions ... incomplete-documentation
78156 
78157  These functions have been made public as part of the design, but they are suggested for internal use
78158  or by particularly knowledgeable users for specialized tools or applications.
78159 
78160  \internal We could not make these private because they are required by user for special purposes. And
78161  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
78162 
78163  */
78164 
78165  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
78166  // overridden in every class by *generated* implementation
78168  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
78169  // MS: 06/28/02 container of names of variables or container indices
78170  // used used in the traversal to access AST successor nodes
78171  // overridden in every class by *generated* implementation
78174  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
78175 
78176  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
78177  // than all the vector copies. The implementation for these functions is generated for each class.
78179  virtual size_t get_numberOfTraversalSuccessors() override;
78181  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
78183  virtual size_t get_childIndex(SgNode *child) override;
78184 
78185 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
78186  // MS: 08/16/2002 method for generating RTI information
78188  virtual RTIReturnType roseRTI() override;
78189 #endif
78190  /* */
78191 
78192 
78193 
78194  /* name Deprecated Functions
78195  \brief Deprecated functions ... incomplete-documentation
78196 
78197  These functions have been deprecated from use.
78198  */
78199  /* */
78200 
78202  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
78203 
78204  // JJW (10/16/2008): Changed to a single function in Node.code, and put
78205  // getVariant() in #if 0 block to prevent confusing Doxygen
78206 #if 0
78207 
78208  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
78210  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
78211 #endif
78212  /* */
78213 
78214 
78215 
78216 
78217  public:
78218  /* name Traversal Support Functions
78219  \brief Traversal support functions ... incomplete-documentation
78220 
78221  These functions have been made public as part of the design, but they are suggested for internal use
78222  or by particularly knowledgable users for specialized tools or applications.
78223  */
78224  /* */
78225 
78226  // DQ (11/26/2005): Support for visitor pattern mechanims
78227  // (inferior to ROSE traversal mechanism, experimental).
78231 
78232  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
78234  virtual void accept (ROSE_VisitorPattern & visitor) override;
78235 
78236  // DQ (12/26/2005): Support for traversal based on the memory pool
78239  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
78240 
78244 
78245  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
78246  // This traversal helps support internal tools that call static member functions.
78247  // note: this function operates on the memory pools.
78250  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
78251  /* */
78252 
78253 
78254  public:
78255  /* name Memory Allocation Functions
78256  \brief Memory allocations functions ... incomplete-documentation
78257 
78258  These functions have been made public as part of the design, but they are suggested for internal use
78259  or by particularly knowledgable users for specialized tools or applications.
78260  */
78261  /* */
78262 
78273  virtual bool isInMemoryPool() override;
78274 
78285  virtual void checkDataMemberPointersIfInMemoryPool() override;
78286 
78287  // DQ (4/30/2006): Modified to be a const function.
78302  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
78303 
78313  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
78314 
78326  virtual long getChildIndex( SgNode* childNode ) const override;
78327 
78328  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
78329  // comment here (changed to be a C style comment and not be a doxygen comment).
78330  /* \brief Constructor for use by AST File I/O Mechanism
78331 
78332  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
78333  which obtained via fast binary file I/O from disk.
78334  */
78335  // SgInterfaceBody( SgInterfaceBodyStorageClass& source );
78336 
78337 
78338 
78339 
78340 
78341  // JH (10/24/2005): methods added to support the ast file IO
78342  private:
78343 
78344  /* name AST Memory Allocation Support Functions
78345  \brief Memory allocations support....
78346 
78347  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
78348  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
78349  and support the AST File I/O Mechanism.
78350  */
78351  /* */
78352 
78353  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
78354  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
78355  that I use the same type everywhere, if any changes are made. THe second one declares the type
78356  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
78357  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
78358  a correspinding one in the AST_FILE_IO class!
78359  */
78360  // DQ (9/2/2015): This typedef is no longer used, we can't define the
78361  // comment here (changed to be a C style comment and not be a doxygen comment).
78362  /* \brief Typedef used for low level memory access.
78363  */
78364  // typedef unsigned char* TestType;
78365 
78366  // DQ (9/2/2015): This typedef is no longer used, we can't define the
78367  // comment here (changed to be a C style comment and not be a doxygen comment).
78368  /* \brief Typedef used to hold memory addresses as values.
78369  */
78370  // typedef unsigned long AddressType;
78371 
78372 
78373 
78374  // necessary, to have direct access to the p_freepointer and the private methods !
78376  friend class AST_FILE_IO;
78377 
78379  friend class SgInterfaceBodyStorageClass;
78380 
78382  friend class AstSpecificDataManagingClass;
78383 
78385  friend class AstSpecificDataManagingClassStorageClass;
78386 
78387  public:
78389  SgInterfaceBody( const SgInterfaceBodyStorageClass& source );
78390 
78391  // private: // JJW hack
78392  /*
78393  name AST Memory Allocation Support Variables
78394  Memory allocations support variables
78395 
78396  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
78397  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
78398  and support the AST File I/O Mechanism.
78399  */
78400  /* */
78401 
78402  public:
78403 
78404  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
78405  // to current node (so that it will work cleanly with build functions to specify patterns).
78406  // virtual SgNode* addRegExpAttribute();
78413 
78414 // *** COMMON CODE SECTION ENDS HERE ***
78415 
78416 
78417 // End of memberFunctionString
78418 // Start of memberFunctionString
78419 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
78420 
78421  // the generated cast function
78422  // friend ROSE_DLL_API SgInterfaceBody* isSgInterfaceBody ( SgNode* s );
78423 
78425 
78426 
78427 // End of memberFunctionString
78428 
78429  public:
78430  SgName get_function_name() const;
78431  void set_function_name(SgName function_name);
78432 
78433  public:
78434  SgFunctionDeclaration* get_functionDeclaration() const;
78435  void set_functionDeclaration(SgFunctionDeclaration* functionDeclaration);
78436 
78437  public:
78438  bool get_use_function_name() const;
78439  void set_use_function_name(bool use_function_name);
78440 
78441 
78442  public:
78443  virtual ~SgInterfaceBody();
78444 
78445 
78446  public:
78447  SgInterfaceBody(Sg_File_Info* startOfConstruct , SgName function_name = "", SgFunctionDeclaration* functionDeclaration = NULL, bool use_function_name = false);
78448  SgInterfaceBody(SgName function_name, SgFunctionDeclaration* functionDeclaration, bool use_function_name);
78449 
78450  protected:
78451 // Start of memberFunctionString
78452 SgName p_function_name;
78453 
78454 // End of memberFunctionString
78455 // Start of memberFunctionString
78456 SgFunctionDeclaration* p_functionDeclaration;
78457 
78458 // End of memberFunctionString
78459 // Start of memberFunctionString
78460 bool p_use_function_name;
78461 
78462 // End of memberFunctionString
78463 
78464 
78465 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
78466 
78467 
78468  };
78469 #endif
78470 
78471 // postdeclarations for SgInterfaceBody
78472 
78473 /* #line 78474 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
78474 
78475 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
78476 
78477 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
78478 
78479 
78480 /* #line 78481 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
78481 
78482 
78483 
78484 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
78485 
78486 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
78487 // This code is automatically generated for each
78488 // terminal and non-terminal within the defined
78489 // grammar. There is a simple way to change the
78490 // code to fix bugs etc. See the ROSE README file
78491 // for directions.
78492 
78493 // tps: (02/22/2010): Adding DLL export requirements
78494 #include "rosedll.h"
78495 
78496 // predeclarations for SgHeaderFileBody
78497 
78498 /* #line 78499 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
78499 
78500 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
78501 
78502 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
78503 
78504 #if 1
78505 // Class Definition for SgHeaderFileBody
78506 class ROSE_DLL_API SgHeaderFileBody : public SgLocatedNodeSupport
78507  {
78508  public:
78509 
78510 
78511 /* #line 78512 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
78512 
78513  virtual SgNode* copy ( SgCopyHelp& help) const override;
78514 // Start of memberFunctionString
78515 /* #line 611 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/LocatedNode.code" */
78516 
78517 
78518 
78519 
78520 // End of memberFunctionString
78521 // Start of memberFunctionString
78522 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
78523 
78524 // *** COMMON CODE SECTION BEGINS HERE ***
78525 
78526  public:
78527 
78528  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
78529  // and not required which is required to match the other aspects of the copy mechanism code generation.
78530  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
78531  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
78532  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
78533  // virtual SgNode* copy ( const SgCopyHelp & help) const;
78534 
78536  virtual std::string class_name() const override;
78537 
78539  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
78540 
78542  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
78543  // static const VariantT static_variant = V_SgHeaderFileBody;
78544  enum { static_variant = V_SgHeaderFileBody };
78545 
78546  /* the generated cast function */
78548  ROSE_DLL_API friend SgHeaderFileBody* isSgHeaderFileBody( SgNode * s );
78549 
78551  ROSE_DLL_API friend const SgHeaderFileBody* isSgHeaderFileBody( const SgNode * s );
78552 
78553  // ******************************************
78554  // * Memory Pool / New / Delete
78555  // ******************************************
78556 
78557  public:
78559  static const unsigned pool_size; //
78561  static std::vector<unsigned char *> pools; //
78563  static SgHeaderFileBody * next_node; //
78564 
78566  static unsigned long initializeStorageClassArray(SgHeaderFileBodyStorageClass *); //
78567 
78569  static void clearMemoryPool(); //
78570  static void deleteMemoryPool(); //
78571 
78573  static void extendMemoryPoolForFileIO(); //
78574 
78576  static SgHeaderFileBody * getPointerFromGlobalIndex(unsigned long); //
78578  static SgHeaderFileBody * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
78579 
78581  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
78583  static void resetValidFreepointers(); //
78585  static unsigned long getNumberOfLastValidPointer(); //
78586 
78587 
78588 #if defined(INLINE_FUNCTIONS)
78589 
78590  inline void *operator new (size_t size);
78591 #else
78592 
78593  void *operator new (size_t size);
78594 #endif
78595 
78596  void operator delete (void* pointer, size_t size);
78597 
78598  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
78599  void operator delete (void* pointer)
78600  {
78601  // This is the generated delete operator...
78602  SgHeaderFileBody::operator delete (pointer,sizeof(SgHeaderFileBody));
78603  }
78604 
78606  static size_t numberOfNodes();
78607 
78609  static size_t memoryUsage();
78610 
78611  // End of scope which started in IR nodes specific code
78612  /* */
78613 
78614  /* name Internal Functions
78615  \brief Internal functions ... incomplete-documentation
78616 
78617  These functions have been made public as part of the design, but they are suggested for internal use
78618  or by particularly knowledgeable users for specialized tools or applications.
78619 
78620  \internal We could not make these private because they are required by user for special purposes. And
78621  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
78622 
78623  */
78624 
78625  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
78626  // overridden in every class by *generated* implementation
78628  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
78629  // MS: 06/28/02 container of names of variables or container indices
78630  // used used in the traversal to access AST successor nodes
78631  // overridden in every class by *generated* implementation
78634  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
78635 
78636  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
78637  // than all the vector copies. The implementation for these functions is generated for each class.
78639  virtual size_t get_numberOfTraversalSuccessors() override;
78641  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
78643  virtual size_t get_childIndex(SgNode *child) override;
78644 
78645 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
78646  // MS: 08/16/2002 method for generating RTI information
78648  virtual RTIReturnType roseRTI() override;
78649 #endif
78650  /* */
78651 
78652 
78653 
78654  /* name Deprecated Functions
78655  \brief Deprecated functions ... incomplete-documentation
78656 
78657  These functions have been deprecated from use.
78658  */
78659  /* */
78660 
78662  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
78663 
78664  // JJW (10/16/2008): Changed to a single function in Node.code, and put
78665  // getVariant() in #if 0 block to prevent confusing Doxygen
78666 #if 0
78667 
78668  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
78670  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
78671 #endif
78672  /* */
78673 
78674 
78675 
78676 
78677  public:
78678  /* name Traversal Support Functions
78679  \brief Traversal support functions ... incomplete-documentation
78680 
78681  These functions have been made public as part of the design, but they are suggested for internal use
78682  or by particularly knowledgable users for specialized tools or applications.
78683  */
78684  /* */
78685 
78686  // DQ (11/26/2005): Support for visitor pattern mechanims
78687  // (inferior to ROSE traversal mechanism, experimental).
78691 
78692  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
78694  virtual void accept (ROSE_VisitorPattern & visitor) override;
78695 
78696  // DQ (12/26/2005): Support for traversal based on the memory pool
78699  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
78700 
78704 
78705  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
78706  // This traversal helps support internal tools that call static member functions.
78707  // note: this function operates on the memory pools.
78710  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
78711  /* */
78712 
78713 
78714  public:
78715  /* name Memory Allocation Functions
78716  \brief Memory allocations functions ... incomplete-documentation
78717 
78718  These functions have been made public as part of the design, but they are suggested for internal use
78719  or by particularly knowledgable users for specialized tools or applications.
78720  */
78721  /* */
78722 
78733  virtual bool isInMemoryPool() override;
78734 
78745  virtual void checkDataMemberPointersIfInMemoryPool() override;
78746 
78747  // DQ (4/30/2006): Modified to be a const function.
78762  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
78763 
78773  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
78774 
78786  virtual long getChildIndex( SgNode* childNode ) const override;
78787 
78788  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
78789  // comment here (changed to be a C style comment and not be a doxygen comment).
78790  /* \brief Constructor for use by AST File I/O Mechanism
78791 
78792  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
78793  which obtained via fast binary file I/O from disk.
78794  */
78795  // SgHeaderFileBody( SgHeaderFileBodyStorageClass& source );
78796 
78797 
78798 
78799 
78800 
78801  // JH (10/24/2005): methods added to support the ast file IO
78802  private:
78803 
78804  /* name AST Memory Allocation Support Functions
78805  \brief Memory allocations support....
78806 
78807  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
78808  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
78809  and support the AST File I/O Mechanism.
78810  */
78811  /* */
78812 
78813  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
78814  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
78815  that I use the same type everywhere, if any changes are made. THe second one declares the type
78816  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
78817  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
78818  a correspinding one in the AST_FILE_IO class!
78819  */
78820  // DQ (9/2/2015): This typedef is no longer used, we can't define the
78821  // comment here (changed to be a C style comment and not be a doxygen comment).
78822  /* \brief Typedef used for low level memory access.
78823  */
78824  // typedef unsigned char* TestType;
78825 
78826  // DQ (9/2/2015): This typedef is no longer used, we can't define the
78827  // comment here (changed to be a C style comment and not be a doxygen comment).
78828  /* \brief Typedef used to hold memory addresses as values.
78829  */
78830  // typedef unsigned long AddressType;
78831 
78832 
78833 
78834  // necessary, to have direct access to the p_freepointer and the private methods !
78836  friend class AST_FILE_IO;
78837 
78839  friend class SgHeaderFileBodyStorageClass;
78840 
78842  friend class AstSpecificDataManagingClass;
78843 
78845  friend class AstSpecificDataManagingClassStorageClass;
78846 
78847  public:
78849  SgHeaderFileBody( const SgHeaderFileBodyStorageClass& source );
78850 
78851  // private: // JJW hack
78852  /*
78853  name AST Memory Allocation Support Variables
78854  Memory allocations support variables
78855 
78856  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
78857  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
78858  and support the AST File I/O Mechanism.
78859  */
78860  /* */
78861 
78862  public:
78863 
78864  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
78865  // to current node (so that it will work cleanly with build functions to specify patterns).
78866  // virtual SgNode* addRegExpAttribute();
78873 
78874 // *** COMMON CODE SECTION ENDS HERE ***
78875 
78876 
78877 // End of memberFunctionString
78878 // Start of memberFunctionString
78879 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
78880 
78881  // the generated cast function
78882  // friend ROSE_DLL_API SgHeaderFileBody* isSgHeaderFileBody ( SgNode* s );
78883 
78885 
78886 
78887 // End of memberFunctionString
78888 
78889  public:
78890  SgSourceFile* get_include_file() const;
78891  void set_include_file(SgSourceFile* include_file);
78892 
78893 
78894  public:
78895  virtual ~SgHeaderFileBody();
78896 
78897 
78898  public:
78899  SgHeaderFileBody(Sg_File_Info* startOfConstruct );
78900  SgHeaderFileBody();
78901 
78902  protected:
78903 // Start of memberFunctionString
78904 SgSourceFile* p_include_file;
78905 
78906 // End of memberFunctionString
78907 
78908 
78909 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
78910 
78911 
78912  };
78913 #endif
78914 
78915 // postdeclarations for SgHeaderFileBody
78916 
78917 /* #line 78918 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
78918 
78919 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
78920 
78921 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
78922 
78923 
78924 /* #line 78925 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
78925 
78926 
78927 
78928 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
78929 
78930 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
78931 // This code is automatically generated for each
78932 // terminal and non-terminal within the defined
78933 // grammar. There is a simple way to change the
78934 // code to fix bugs etc. See the ROSE README file
78935 // for directions.
78936 
78937 // tps: (02/22/2010): Adding DLL export requirements
78938 #include "rosedll.h"
78939 
78940 // predeclarations for SgRenamePair
78941 
78942 /* #line 78943 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
78943 
78944 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
78945 
78946 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
78947 
78948 #if 1
78949 // Class Definition for SgRenamePair
78950 class ROSE_DLL_API SgRenamePair : public SgLocatedNodeSupport
78951  {
78952  public:
78953 
78954 
78955 /* #line 78956 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
78956 
78957  virtual SgNode* copy ( SgCopyHelp& help) const override;
78958 // Start of memberFunctionString
78959 /* #line 601 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/LocatedNode.code" */
78960 
78961 
78962  bool isRename() const;
78963 
78964 
78965 
78966 // End of memberFunctionString
78967 // Start of memberFunctionString
78968 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
78969 
78970 // *** COMMON CODE SECTION BEGINS HERE ***
78971 
78972  public:
78973 
78974  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
78975  // and not required which is required to match the other aspects of the copy mechanism code generation.
78976  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
78977  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
78978  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
78979  // virtual SgNode* copy ( const SgCopyHelp & help) const;
78980 
78982  virtual std::string class_name() const override;
78983 
78985  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
78986 
78988  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
78989  // static const VariantT static_variant = V_SgRenamePair;
78990  enum { static_variant = V_SgRenamePair };
78991 
78992  /* the generated cast function */
78994  ROSE_DLL_API friend SgRenamePair* isSgRenamePair( SgNode * s );
78995 
78997  ROSE_DLL_API friend const SgRenamePair* isSgRenamePair( const SgNode * s );
78998 
78999  // ******************************************
79000  // * Memory Pool / New / Delete
79001  // ******************************************
79002 
79003  public:
79005  static const unsigned pool_size; //
79007  static std::vector<unsigned char *> pools; //
79009  static SgRenamePair * next_node; //
79010 
79012  static unsigned long initializeStorageClassArray(SgRenamePairStorageClass *); //
79013 
79015  static void clearMemoryPool(); //
79016  static void deleteMemoryPool(); //
79017 
79019  static void extendMemoryPoolForFileIO(); //
79020 
79022  static SgRenamePair * getPointerFromGlobalIndex(unsigned long); //
79024  static SgRenamePair * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
79025 
79027  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
79029  static void resetValidFreepointers(); //
79031  static unsigned long getNumberOfLastValidPointer(); //
79032 
79033 
79034 #if defined(INLINE_FUNCTIONS)
79035 
79036  inline void *operator new (size_t size);
79037 #else
79038 
79039  void *operator new (size_t size);
79040 #endif
79041 
79042  void operator delete (void* pointer, size_t size);
79043 
79044  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
79045  void operator delete (void* pointer)
79046  {
79047  // This is the generated delete operator...
79048  SgRenamePair::operator delete (pointer,sizeof(SgRenamePair));
79049  }
79050 
79052  static size_t numberOfNodes();
79053 
79055  static size_t memoryUsage();
79056 
79057  // End of scope which started in IR nodes specific code
79058  /* */
79059 
79060  /* name Internal Functions
79061  \brief Internal functions ... incomplete-documentation
79062 
79063  These functions have been made public as part of the design, but they are suggested for internal use
79064  or by particularly knowledgeable users for specialized tools or applications.
79065 
79066  \internal We could not make these private because they are required by user for special purposes. And
79067  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
79068 
79069  */
79070 
79071  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
79072  // overridden in every class by *generated* implementation
79074  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
79075  // MS: 06/28/02 container of names of variables or container indices
79076  // used used in the traversal to access AST successor nodes
79077  // overridden in every class by *generated* implementation
79080  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
79081 
79082  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
79083  // than all the vector copies. The implementation for these functions is generated for each class.
79085  virtual size_t get_numberOfTraversalSuccessors() override;
79087  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
79089  virtual size_t get_childIndex(SgNode *child) override;
79090 
79091 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
79092  // MS: 08/16/2002 method for generating RTI information
79094  virtual RTIReturnType roseRTI() override;
79095 #endif
79096  /* */
79097 
79098 
79099 
79100  /* name Deprecated Functions
79101  \brief Deprecated functions ... incomplete-documentation
79102 
79103  These functions have been deprecated from use.
79104  */
79105  /* */
79106 
79108  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
79109 
79110  // JJW (10/16/2008): Changed to a single function in Node.code, and put
79111  // getVariant() in #if 0 block to prevent confusing Doxygen
79112 #if 0
79113 
79114  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
79116  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
79117 #endif
79118  /* */
79119 
79120 
79121 
79122 
79123  public:
79124  /* name Traversal Support Functions
79125  \brief Traversal support functions ... incomplete-documentation
79126 
79127  These functions have been made public as part of the design, but they are suggested for internal use
79128  or by particularly knowledgable users for specialized tools or applications.
79129  */
79130  /* */
79131 
79132  // DQ (11/26/2005): Support for visitor pattern mechanims
79133  // (inferior to ROSE traversal mechanism, experimental).
79137 
79138  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
79140  virtual void accept (ROSE_VisitorPattern & visitor) override;
79141 
79142  // DQ (12/26/2005): Support for traversal based on the memory pool
79145  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
79146 
79150 
79151  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
79152  // This traversal helps support internal tools that call static member functions.
79153  // note: this function operates on the memory pools.
79156  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
79157  /* */
79158 
79159 
79160  public:
79161  /* name Memory Allocation Functions
79162  \brief Memory allocations functions ... incomplete-documentation
79163 
79164  These functions have been made public as part of the design, but they are suggested for internal use
79165  or by particularly knowledgable users for specialized tools or applications.
79166  */
79167  /* */
79168 
79179  virtual bool isInMemoryPool() override;
79180 
79191  virtual void checkDataMemberPointersIfInMemoryPool() override;
79192 
79193  // DQ (4/30/2006): Modified to be a const function.
79208  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
79209 
79219  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
79220 
79232  virtual long getChildIndex( SgNode* childNode ) const override;
79233 
79234  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
79235  // comment here (changed to be a C style comment and not be a doxygen comment).
79236  /* \brief Constructor for use by AST File I/O Mechanism
79237 
79238  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
79239  which obtained via fast binary file I/O from disk.
79240  */
79241  // SgRenamePair( SgRenamePairStorageClass& source );
79242 
79243 
79244 
79245 
79246 
79247  // JH (10/24/2005): methods added to support the ast file IO
79248  private:
79249 
79250  /* name AST Memory Allocation Support Functions
79251  \brief Memory allocations support....
79252 
79253  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
79254  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
79255  and support the AST File I/O Mechanism.
79256  */
79257  /* */
79258 
79259  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
79260  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
79261  that I use the same type everywhere, if any changes are made. THe second one declares the type
79262  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
79263  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
79264  a correspinding one in the AST_FILE_IO class!
79265  */
79266  // DQ (9/2/2015): This typedef is no longer used, we can't define the
79267  // comment here (changed to be a C style comment and not be a doxygen comment).
79268  /* \brief Typedef used for low level memory access.
79269  */
79270  // typedef unsigned char* TestType;
79271 
79272  // DQ (9/2/2015): This typedef is no longer used, we can't define the
79273  // comment here (changed to be a C style comment and not be a doxygen comment).
79274  /* \brief Typedef used to hold memory addresses as values.
79275  */
79276  // typedef unsigned long AddressType;
79277 
79278 
79279 
79280  // necessary, to have direct access to the p_freepointer and the private methods !
79282  friend class AST_FILE_IO;
79283 
79285  friend class SgRenamePairStorageClass;
79286 
79288  friend class AstSpecificDataManagingClass;
79289 
79291  friend class AstSpecificDataManagingClassStorageClass;
79292 
79293  public:
79295  SgRenamePair( const SgRenamePairStorageClass& source );
79296 
79297  // private: // JJW hack
79298  /*
79299  name AST Memory Allocation Support Variables
79300  Memory allocations support variables
79301 
79302  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
79303  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
79304  and support the AST File I/O Mechanism.
79305  */
79306  /* */
79307 
79308  public:
79309 
79310  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
79311  // to current node (so that it will work cleanly with build functions to specify patterns).
79312  // virtual SgNode* addRegExpAttribute();
79319 
79320 // *** COMMON CODE SECTION ENDS HERE ***
79321 
79322 
79323 // End of memberFunctionString
79324 // Start of memberFunctionString
79325 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
79326 
79327  // the generated cast function
79328  // friend ROSE_DLL_API SgRenamePair* isSgRenamePair ( SgNode* s );
79329 
79331 
79332 
79333 // End of memberFunctionString
79334 
79335  public:
79336  SgName get_local_name() const;
79337  void set_local_name(SgName local_name);
79338 
79339  public:
79340  SgName get_use_name() const;
79341  void set_use_name(SgName use_name);
79342 
79343 
79344  public:
79345  virtual ~SgRenamePair();
79346 
79347 
79348  public:
79349  SgRenamePair(Sg_File_Info* startOfConstruct , SgName local_name = "", SgName use_name = "");
79350  SgRenamePair(SgName local_name, SgName use_name);
79351 
79352  protected:
79353 // Start of memberFunctionString
79354 SgName p_local_name;
79355 
79356 // End of memberFunctionString
79357 // Start of memberFunctionString
79358 SgName p_use_name;
79359 
79360 // End of memberFunctionString
79361 
79362 
79363 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
79364 
79365 
79366  };
79367 #endif
79368 
79369 // postdeclarations for SgRenamePair
79370 
79371 /* #line 79372 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
79372 
79373 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
79374 
79375 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
79376 
79377 
79378 /* #line 79379 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
79379 
79380 
79381 
79382 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
79383 
79384 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
79385 // This code is automatically generated for each
79386 // terminal and non-terminal within the defined
79387 // grammar. There is a simple way to change the
79388 // code to fix bugs etc. See the ROSE README file
79389 // for directions.
79390 
79391 // tps: (02/22/2010): Adding DLL export requirements
79392 #include "rosedll.h"
79393 
79394 // predeclarations for SgOmpClause
79395 
79396 /* #line 79397 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
79397 
79398 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
79399 
79400 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
79401 
79402 #if 1
79403 // Class Definition for SgOmpClause
79404 class ROSE_DLL_API SgOmpClause : public SgLocatedNodeSupport
79405  {
79406  public:
79407 
79408 
79409 /* #line 79410 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
79410 
79411  virtual SgNode* copy ( SgCopyHelp& help) const override;
79412 // Start of memberFunctionString
79413 /* #line 42 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
79414 
79418  // Liao (5/30/2009): Added support for reduction clauses within an OpenMP directive
79420  e_omp_default_unknown =0,
79421  e_omp_default_variant,
79422  //4 values for default clause
79423  //C/C++ default values
79424  e_omp_default_none,
79425  e_omp_default_shared,
79426  //Fortran default values
79427  e_omp_default_private,
79428  e_omp_default_firstprivate,
79429  e_omp_default_last
79430  };
79431 
79432  enum omp_schedule_kind_enum{
79433  e_omp_schedule_kind_unspecified,
79434  e_omp_schedule_kind_static,
79435  e_omp_schedule_kind_dynamic,
79436  e_omp_schedule_kind_guided,
79437  e_omp_schedule_kind_auto,
79438  e_omp_schedule_kind_runtime
79439  };
79440 
79442  e_omp_schedule_modifier_unspecified,
79443  e_omp_schedule_modifier_monotonic,
79444  e_omp_schedule_modifier_nonmonotonic,
79445  e_omp_schedule_modifier_simd
79446  };
79447 
79449  {
79450  e_omp_in_reduction_identifier_unspecified,
79451  e_omp_in_reduction_identifier_plus, //+
79452  e_omp_in_reduction_identifier_mul, //*
79453  e_omp_in_reduction_identifier_minus, // -
79454 
79455  e_omp_in_reduction_identifier_bitand, // &
79456  e_omp_in_reduction_identifier_bitor, // |
79457  e_omp_in_reduction_identifier_bitxor, // ^
79458  e_omp_in_reduction_identifier_logand, // &&
79459  e_omp_in_reduction_identifier_logor, // ||
79460 
79461  e_omp_in_reduction_identifier_and, // .and.
79462  e_omp_in_reduction_identifier_or, // .or.
79463  e_omp_in_reduction_identifier_eqv, // fortran .eqv.
79464  e_omp_in_reduction_identifier_neqv, // fortran .neqv.
79465  e_omp_in_reduction_identifier_max,
79466  e_omp_in_reduction_identifier_min,
79467  e_omp_in_reduction_identifier_iand,
79468  e_omp_in_reduction_identifier_ior,
79469  e_omp_in_reduction_identifier_ieor,
79470  e_omp_in_reduction_user_defined_identifier,
79471  e_omp_in_reduction_identifier_last
79472 
79473  };
79474 
79476  {
79477  e_omp_task_reduction_identifier_unspecified,
79478  e_omp_task_reduction_identifier_plus, //+
79479  e_omp_task_reduction_identifier_mul, //*
79480  e_omp_task_reduction_identifier_minus, // -
79481 
79482  e_omp_task_reduction_identifier_bitand, // &
79483  e_omp_task_reduction_identifier_bitor, // |
79484  e_omp_task_reduction_identifier_bitxor, // ^
79485  e_omp_task_reduction_identifier_logand, // &&
79486  e_omp_task_reduction_identifier_logor, // ||
79487 
79488  e_omp_task_reduction_identifier_and, // .and.
79489  e_omp_task_reduction_identifier_or, // .or.
79490  e_omp_task_reduction_identifier_eqv, // fortran .eqv.
79491  e_omp_task_reduction_identifier_neqv, // fortran .neqv.
79492  e_omp_task_reduction_identifier_max,
79493  e_omp_task_reduction_identifier_min,
79494  e_omp_task_reduction_identifier_iand,
79495  e_omp_task_reduction_identifier_ior,
79496  e_omp_task_reduction_identifier_ieor,
79497  e_omp_task_reduction_user_defined_identifier,
79498  e_omp_task_reduction_identifier_last
79499 
79500  };
79501 
79503  {
79504  e_omp_defaultmap_behavior_unspecified,
79505  e_omp_defaultmap_behavior_alloc,
79506  e_omp_defaultmap_behavior_to,
79507  e_omp_defaultmap_behavior_from,
79508  e_omp_defaultmap_behavior_tofrom,
79509  e_omp_defaultmap_behavior_firstprivate,
79510  e_omp_defaultmap_behavior_none,
79511  e_omp_defaultmap_behavior_default
79512  };
79513 
79515  {
79516  e_omp_defaultmap_category_unspecified,
79517  e_omp_defaultmap_category_scalar,
79518  e_omp_defaultmap_category_aggregate,
79519  e_omp_defaultmap_category_pointer,
79520  e_omp_defaultmap_category_allocatable
79521  };
79522 
79524  {
79525  e_omp_reduction_unknown,
79526  // reduction operations
79527  //8 operand for C/C++
79528  // shared 3 common operators for both C and Fortran
79529  e_omp_reduction_plus, //+
79530  e_omp_reduction_mul, //*
79531  e_omp_reduction_minus, // -
79532 
79533  e_omp_reduction_bitand, // &
79534  e_omp_reduction_bitor, // |
79535  e_omp_reduction_bitxor, // ^
79536  e_omp_reduction_logand, // &&
79537  e_omp_reduction_logor, // ||
79538 
79539  e_omp_reduction_and, // .and.
79540  e_omp_reduction_or, // .or.
79541  e_omp_reduction_eqv, // fortran .eqv.
79542  e_omp_reduction_neqv, // fortran .neqv.
79543  e_omp_reduction_max,
79544  e_omp_reduction_min,
79545  e_omp_reduction_iand,
79546  e_omp_reduction_ior,
79547  e_omp_reduction_ieor,
79548  e_omp_reduction_user_defined_identifier,
79549  e_omp_reduction_last
79550 
79551  };
79552 
79554  {
79555  e_omp_reduction_modifier_unknown,
79556  e_omp_reduction_inscan,
79557  e_omp_reduction_task,
79558  e_omp_reduction_default
79559  };
79560 
79562  {
79563  e_omp_linear_modifier_unspecified,
79564  e_omp_linear_modifier_ref,
79565  e_omp_linear_modifier_val,
79566  e_omp_linear_modifier_uval
79567  };
79568 
79570  {
79571  e_omp_device_modifier_unspecified,
79572  e_omp_device_modifier_ancestor,
79573  e_omp_device_modifier_device_num
79574  };
79575 
79577  {
79578  e_omp_lastprivate_modifier_unspecified,
79579  e_omp_lastprivate_conditional
79580  };
79581 
79583  {
79584  e_omp_when_context_kind_unknown = 0,
79585  e_omp_when_context_kind_host,
79586  e_omp_when_context_kind_nohost,
79587  e_omp_when_context_kind_any,
79588  e_omp_when_context_kind_cpu,
79589  e_omp_when_context_kind_gpu,
79590  e_omp_when_context_kind_fpga
79591  };
79592 
79594  {
79595  e_omp_when_context_vendor_unspecified = 0,
79596  e_omp_when_context_vendor_amd,
79597  e_omp_when_context_vendor_arm,
79598  e_omp_when_context_vendor_bsc,
79599  e_omp_when_context_vendor_cray,
79600  e_omp_when_context_vendor_fujitsu,
79601  e_omp_when_context_vendor_gnu,
79602  e_omp_when_context_vendor_ibm,
79603  e_omp_when_context_vendor_intel,
79604  e_omp_when_context_vendor_llvm,
79605  e_omp_when_context_vendor_pgi,
79606  e_omp_when_context_vendor_ti,
79607  e_omp_when_context_vendor_unknown
79608  };
79609 
79611  {
79612  e_omp_allocate_modifier_unknown,
79613 
79614  e_omp_allocate_default_mem_alloc,
79615  e_omp_allocate_large_cap_mem_alloc,
79616  e_omp_allocate_const_mem_alloc,
79617  e_omp_allocate_high_bw_mem_alloc,
79618  e_omp_allocate_low_lat_mem_alloc,
79619  e_omp_allocate_cgroup_mem_alloc,
79620  e_omp_allocate_pteam_mem_alloc,
79621  e_omp_allocate_thread_mem_alloc,
79622 
79623  e_omp_allocate_user_defined_modifier
79624  };
79625 
79627  {
79628  e_omp_allocator_modifier_unknown,
79629 
79630  e_omp_allocator_default_mem_alloc,
79631  e_omp_allocator_large_cap_mem_alloc,
79632  e_omp_allocator_const_mem_alloc,
79633  e_omp_allocator_high_bw_mem_alloc,
79634  e_omp_allocator_low_lat_mem_alloc,
79635  e_omp_allocator_cgroup_mem_alloc,
79636  e_omp_allocator_pteam_mem_alloc,
79637  e_omp_allocator_thread_mem_alloc,
79638 
79639  e_omp_allocator_user_defined_modifier
79640  };
79641 
79643  {
79644  e_omp_uses_allocators_allocator_unknown,
79645 
79646  e_omp_uses_allocators_allocator_default_mem_alloc,
79647  e_omp_uses_allocators_allocator_large_cap_mem_alloc,
79648  e_omp_uses_allocators_allocator_const_mem_alloc,
79649  e_omp_uses_allocators_allocator_high_bw_mem_alloc,
79650  e_omp_uses_allocators_allocator_low_lat_mem_alloc,
79651  e_omp_uses_allocators_allocator_cgroup_mem_alloc,
79652  e_omp_uses_allocators_allocator_pteam_mem_alloc,
79653  e_omp_uses_allocators_allocator_thread_mem_alloc,
79654 
79655  e_omp_uses_allocators_allocator_user_defined
79656  };
79657 
79658  enum omp_to_kind_enum
79659  {
79660  e_omp_to_kind_unknown,
79661  e_omp_to_kind_mapper
79662  };
79663 
79664  enum omp_from_kind_enum
79665  {
79666  e_omp_from_kind_unknown,
79667  e_omp_from_kind_mapper
79668  };
79669 
79671  {
79672  e_omp_depend_unspecified,
79673  e_omp_depend_in,
79674  e_omp_depend_out,
79675  e_omp_depend_inout,
79676  e_omp_depend_mutexinoutset,
79677  e_omp_depend_depobj,
79678  e_omp_depend_source,
79679  e_omp_depend_sink
79680  };
79681 
79683  {
79684  e_omp_depend_modifier_unspecified,
79685  e_omp_depend_modifier_iterator
79686  };
79687 
79689  {
79690  e_omp_affinity_modifier_unspecified,
79691  e_omp_affinity_modifier_iterator
79692  };
79693 
79695  {
79696  e_upir_target_unspecified,
79697  e_upir_target_cpu,
79698  e_upir_target_gpu,
79699  e_upir_target_cluster
79700  };
79701 
79703  {
79704  e_upir_data_sharing_unspecified,
79705  e_upir_data_sharing_shared,
79706  e_upir_data_sharing_private,
79707  e_upir_data_sharing_firstprivate,
79708  e_upir_data_sharing_lastprivate,
79709  e_upir_data_sharing_reduction
79710  };
79711 
79713  {
79714  e_upir_data_mapping_unspecified,
79715  e_upir_data_mapping_to,
79716  e_upir_data_mapping_from,
79717  e_upir_data_mapping_tofrom,
79718  e_upir_data_mapping_allocate,
79719  e_upir_data_mapping_none
79720  };
79721 
79723  {
79724  e_upir_property_visibility_unspecified,
79725  e_upir_property_visibility_implicit,
79726  e_upir_property_visibility_explicit
79727  };
79728 
79730  {
79731  e_upir_data_access_unspecified,
79732  e_upir_data_access_read_only,
79733  e_upir_data_access_write_only,
79734  e_upir_data_access_read_write
79735  };
79736 
79738  {
79739  e_upir_data_distribution_pattern_unspecified,
79740  e_upir_data_distribution_pattern_block,
79741  e_upir_data_distribution_pattern_cyclic,
79742  e_upir_data_distribution_pattern_linear,
79743  e_upir_data_distribution_pattern_loop
79744  };
79745 
79747  {
79748  e_upir_data_allocator_unspecified,
79749  e_upir_data_allocator_default_mem_alloc,
79750  e_upir_data_allocator_large_cap_mem_alloc
79751  };
79752 
79754  {
79755  e_upir_data_deallocator_unspecified,
79756  e_upir_data_deallocator_default_mem_dealloc,
79757  e_upir_data_deallocator_large_cap_mem_dealloc
79758  };
79759 
79760  // Liao 1/22/2012: experimental support for OpenMP Accelerator model
79762  {
79763  e_omp_map_unknown,
79764  e_omp_map_alloc,
79765  e_omp_map_to,
79766  e_omp_map_from,
79767  e_omp_map_tofrom,
79768  e_omp_map_last
79769  };
79770 
79771  // Liao, 11/11/2015: experimental support for data distribution policies
79773  {
79774  e_omp_map_dist_data_unknown,
79775  e_omp_map_dist_data_duplicate,
79776  e_omp_map_dist_data_block,
79777  e_omp_map_dist_data_cyclic,
79778  e_omp_map_dist_data_last
79779  };
79780 
79781  // Support thread affinity clause proc_bind(master|close|spread)
79783  {
79784  e_omp_proc_bind_policy_unknown,
79785  e_omp_proc_bind_policy_master,
79786  e_omp_proc_bind_policy_close,
79787  e_omp_proc_bind_policy_spread,
79788  e_omp_proc_bind_policy_last
79789  };
79790 
79792  {
79793  e_omp_bind_binding_unspecified,
79794  e_omp_bind_binding_teams,
79795  e_omp_bind_binding_parallel,
79796  e_omp_bind_binding_thread
79797  };
79798 
79800  {
79801  e_omp_atomic_default_mem_order_kind_unspecified,
79802  e_omp_atomic_default_mem_order_kind_seq_cst,
79803  e_omp_atomic_default_mem_order_kind_acq_rel,
79804  e_omp_atomic_default_mem_order_kind_relaxed
79805  };
79806 
79807  enum omp_order_kind_enum
79808  {
79809  e_omp_order_kind_unspecified,
79810  e_omp_order_kind_concurrent,
79811  };
79812 
79814  {
79815  e_omp_dist_schedule_kind_unspecified,
79816  e_omp_dist_schedule_kind_static,
79817  };
79818 
79820  {
79821  e_omp_atomic_clause_unknown,
79822  e_omp_atomic_clause_read,
79823  e_omp_atomic_clause_write,
79824  e_omp_atomic_clause_update,
79825  e_omp_atomic_clause_capture
79826  };
79827 
79829  {
79830  e_omp_if_modifier_unknown,
79831  e_omp_if_parallel,
79832  e_omp_if_simd,
79833  e_omp_if_target,
79834  e_omp_if_cancel,
79835  e_omp_if_taskloop,
79836  e_omp_if_target_data,
79837  e_omp_if_target_enter_data,
79838  e_omp_if_target_exit_data,
79839  e_omp_if_task,
79840  e_omp_if_target_update
79841  };
79842 
79844  {
79845  e_omp_depobj_modifier_unknown,
79846  e_omp_depobj_modifier_in,
79847  e_omp_depobj_modifier_out,
79848  e_omp_depobj_modifier_inout,
79849  e_omp_depobj_modifier_mutexinoutset,
79850  e_omp_depobj_modifier_depobj,
79851  e_omp_depobj_modifier_sink,
79852  e_omp_depobj_modifier_source
79853  };
79854 
79855 
79856 
79857 
79858 // End of memberFunctionString
79859 // Start of memberFunctionString
79860 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
79861 
79862 // *** COMMON CODE SECTION BEGINS HERE ***
79863 
79864  public:
79865 
79866  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
79867  // and not required which is required to match the other aspects of the copy mechanism code generation.
79868  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
79869  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
79870  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
79871  // virtual SgNode* copy ( const SgCopyHelp & help) const;
79872 
79874  virtual std::string class_name() const override;
79875 
79877  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
79878 
79880  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
79881  // static const VariantT static_variant = V_SgOmpClause;
79882  enum { static_variant = V_SgOmpClause };
79883 
79884  /* the generated cast function */
79886  ROSE_DLL_API friend SgOmpClause* isSgOmpClause( SgNode * s );
79887 
79889  ROSE_DLL_API friend const SgOmpClause* isSgOmpClause( const SgNode * s );
79890 
79891  // ******************************************
79892  // * Memory Pool / New / Delete
79893  // ******************************************
79894 
79895  public:
79897  static const unsigned pool_size; //
79899  static std::vector<unsigned char *> pools; //
79901  static SgOmpClause * next_node; //
79902 
79904  static unsigned long initializeStorageClassArray(SgOmpClauseStorageClass *); //
79905 
79907  static void clearMemoryPool(); //
79908  static void deleteMemoryPool(); //
79909 
79911  static void extendMemoryPoolForFileIO(); //
79912 
79914  static SgOmpClause * getPointerFromGlobalIndex(unsigned long); //
79916  static SgOmpClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
79917 
79919  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
79921  static void resetValidFreepointers(); //
79923  static unsigned long getNumberOfLastValidPointer(); //
79924 
79925 
79926 #if defined(INLINE_FUNCTIONS)
79927 
79928  inline void *operator new (size_t size);
79929 #else
79930 
79931  void *operator new (size_t size);
79932 #endif
79933 
79934  void operator delete (void* pointer, size_t size);
79935 
79936  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
79937  void operator delete (void* pointer)
79938  {
79939  // This is the generated delete operator...
79940  SgOmpClause::operator delete (pointer,sizeof(SgOmpClause));
79941  }
79942 
79944  static size_t numberOfNodes();
79945 
79947  static size_t memoryUsage();
79948 
79949  // End of scope which started in IR nodes specific code
79950  /* */
79951 
79952  /* name Internal Functions
79953  \brief Internal functions ... incomplete-documentation
79954 
79955  These functions have been made public as part of the design, but they are suggested for internal use
79956  or by particularly knowledgeable users for specialized tools or applications.
79957 
79958  \internal We could not make these private because they are required by user for special purposes. And
79959  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
79960 
79961  */
79962 
79963  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
79964  // overridden in every class by *generated* implementation
79966  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
79967  // MS: 06/28/02 container of names of variables or container indices
79968  // used used in the traversal to access AST successor nodes
79969  // overridden in every class by *generated* implementation
79972  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
79973 
79974  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
79975  // than all the vector copies. The implementation for these functions is generated for each class.
79977  virtual size_t get_numberOfTraversalSuccessors() override;
79979  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
79981  virtual size_t get_childIndex(SgNode *child) override;
79982 
79983 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
79984  // MS: 08/16/2002 method for generating RTI information
79986  virtual RTIReturnType roseRTI() override;
79987 #endif
79988  /* */
79989 
79990 
79991 
79992  /* name Deprecated Functions
79993  \brief Deprecated functions ... incomplete-documentation
79994 
79995  These functions have been deprecated from use.
79996  */
79997  /* */
79998 
80000  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
80001 
80002  // JJW (10/16/2008): Changed to a single function in Node.code, and put
80003  // getVariant() in #if 0 block to prevent confusing Doxygen
80004 #if 0
80005 
80006  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
80008  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
80009 #endif
80010  /* */
80011 
80012 
80013 
80014 
80015  public:
80016  /* name Traversal Support Functions
80017  \brief Traversal support functions ... incomplete-documentation
80018 
80019  These functions have been made public as part of the design, but they are suggested for internal use
80020  or by particularly knowledgable users for specialized tools or applications.
80021  */
80022  /* */
80023 
80024  // DQ (11/26/2005): Support for visitor pattern mechanims
80025  // (inferior to ROSE traversal mechanism, experimental).
80029 
80030  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
80032  virtual void accept (ROSE_VisitorPattern & visitor) override;
80033 
80034  // DQ (12/26/2005): Support for traversal based on the memory pool
80037  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
80038 
80042 
80043  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
80044  // This traversal helps support internal tools that call static member functions.
80045  // note: this function operates on the memory pools.
80048  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
80049  /* */
80050 
80051 
80052  public:
80053  /* name Memory Allocation Functions
80054  \brief Memory allocations functions ... incomplete-documentation
80055 
80056  These functions have been made public as part of the design, but they are suggested for internal use
80057  or by particularly knowledgable users for specialized tools or applications.
80058  */
80059  /* */
80060 
80071  virtual bool isInMemoryPool() override;
80072 
80083  virtual void checkDataMemberPointersIfInMemoryPool() override;
80084 
80085  // DQ (4/30/2006): Modified to be a const function.
80100  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
80101 
80111  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
80112 
80124  virtual long getChildIndex( SgNode* childNode ) const override;
80125 
80126  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
80127  // comment here (changed to be a C style comment and not be a doxygen comment).
80128  /* \brief Constructor for use by AST File I/O Mechanism
80129 
80130  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
80131  which obtained via fast binary file I/O from disk.
80132  */
80133  // SgOmpClause( SgOmpClauseStorageClass& source );
80134 
80135 
80136 
80137 
80138 
80139  // JH (10/24/2005): methods added to support the ast file IO
80140  private:
80141 
80142  /* name AST Memory Allocation Support Functions
80143  \brief Memory allocations support....
80144 
80145  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
80146  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
80147  and support the AST File I/O Mechanism.
80148  */
80149  /* */
80150 
80151  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
80152  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
80153  that I use the same type everywhere, if any changes are made. THe second one declares the type
80154  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
80155  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
80156  a correspinding one in the AST_FILE_IO class!
80157  */
80158  // DQ (9/2/2015): This typedef is no longer used, we can't define the
80159  // comment here (changed to be a C style comment and not be a doxygen comment).
80160  /* \brief Typedef used for low level memory access.
80161  */
80162  // typedef unsigned char* TestType;
80163 
80164  // DQ (9/2/2015): This typedef is no longer used, we can't define the
80165  // comment here (changed to be a C style comment and not be a doxygen comment).
80166  /* \brief Typedef used to hold memory addresses as values.
80167  */
80168  // typedef unsigned long AddressType;
80169 
80170 
80171 
80172  // necessary, to have direct access to the p_freepointer and the private methods !
80174  friend class AST_FILE_IO;
80175 
80177  friend class SgOmpClauseStorageClass;
80178 
80180  friend class AstSpecificDataManagingClass;
80181 
80183  friend class AstSpecificDataManagingClassStorageClass;
80184 
80185  public:
80187  SgOmpClause( const SgOmpClauseStorageClass& source );
80188 
80189  // private: // JJW hack
80190  /*
80191  name AST Memory Allocation Support Variables
80192  Memory allocations support variables
80193 
80194  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
80195  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
80196  and support the AST File I/O Mechanism.
80197  */
80198  /* */
80199 
80200  public:
80201 
80202  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
80203  // to current node (so that it will work cleanly with build functions to specify patterns).
80204  // virtual SgNode* addRegExpAttribute();
80210  SgOmpClause* addRegExpAttribute(std::string s, AstRegExAttribute* a);
80211 
80212 // *** COMMON CODE SECTION ENDS HERE ***
80213 
80214 
80215 // End of memberFunctionString
80216 // Start of memberFunctionString
80217 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
80218 
80219  // the generated cast function
80220  // friend ROSE_DLL_API SgOmpClause* isSgOmpClause ( SgNode* s );
80221 
80223 
80224 
80225 // End of memberFunctionString
80226 
80227 
80228  public:
80229  virtual ~SgOmpClause();
80230 
80231 
80232  public:
80233  SgOmpClause(Sg_File_Info* startOfConstruct );
80234  SgOmpClause();
80235 
80236  protected:
80237 
80238 
80239 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
80240 
80241 
80242  };
80243 #endif
80244 
80245 // postdeclarations for SgOmpClause
80246 
80247 /* #line 80248 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
80248 
80249 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
80250 
80251 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
80252 
80253 
80254 /* #line 80255 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
80255 
80256 
80257 
80258 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
80259 
80260 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
80261 // This code is automatically generated for each
80262 // terminal and non-terminal within the defined
80263 // grammar. There is a simple way to change the
80264 // code to fix bugs etc. See the ROSE README file
80265 // for directions.
80266 
80267 // tps: (02/22/2010): Adding DLL export requirements
80268 #include "rosedll.h"
80269 
80270 // predeclarations for SgOmpNowaitClause
80271 
80272 /* #line 80273 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
80273 
80274 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
80275 
80276 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
80277 
80278 #if 1
80279 // Class Definition for SgOmpNowaitClause
80280 class ROSE_DLL_API SgOmpNowaitClause : public SgOmpClause
80281  {
80282  public:
80283 
80284 
80285 /* #line 80286 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
80286 
80287  virtual SgNode* copy ( SgCopyHelp& help) const override;
80288 // Start of memberFunctionString
80289 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
80290 
80291 // *** COMMON CODE SECTION BEGINS HERE ***
80292 
80293  public:
80294 
80295  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
80296  // and not required which is required to match the other aspects of the copy mechanism code generation.
80297  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
80298  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
80299  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
80300  // virtual SgNode* copy ( const SgCopyHelp & help) const;
80301 
80303  virtual std::string class_name() const override;
80304 
80306  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
80307 
80309  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
80310  // static const VariantT static_variant = V_SgOmpNowaitClause;
80311  enum { static_variant = V_SgOmpNowaitClause };
80312 
80313  /* the generated cast function */
80315  ROSE_DLL_API friend SgOmpNowaitClause* isSgOmpNowaitClause( SgNode * s );
80316 
80318  ROSE_DLL_API friend const SgOmpNowaitClause* isSgOmpNowaitClause( const SgNode * s );
80319 
80320  // ******************************************
80321  // * Memory Pool / New / Delete
80322  // ******************************************
80323 
80324  public:
80326  static const unsigned pool_size; //
80328  static std::vector<unsigned char *> pools; //
80330  static SgOmpNowaitClause * next_node; //
80331 
80333  static unsigned long initializeStorageClassArray(SgOmpNowaitClauseStorageClass *); //
80334 
80336  static void clearMemoryPool(); //
80337  static void deleteMemoryPool(); //
80338 
80340  static void extendMemoryPoolForFileIO(); //
80341 
80343  static SgOmpNowaitClause * getPointerFromGlobalIndex(unsigned long); //
80345  static SgOmpNowaitClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
80346 
80348  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
80350  static void resetValidFreepointers(); //
80352  static unsigned long getNumberOfLastValidPointer(); //
80353 
80354 
80355 #if defined(INLINE_FUNCTIONS)
80356 
80357  inline void *operator new (size_t size);
80358 #else
80359 
80360  void *operator new (size_t size);
80361 #endif
80362 
80363  void operator delete (void* pointer, size_t size);
80364 
80365  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
80366  void operator delete (void* pointer)
80367  {
80368  // This is the generated delete operator...
80369  SgOmpNowaitClause::operator delete (pointer,sizeof(SgOmpNowaitClause));
80370  }
80371 
80373  static size_t numberOfNodes();
80374 
80376  static size_t memoryUsage();
80377 
80378  // End of scope which started in IR nodes specific code
80379  /* */
80380 
80381  /* name Internal Functions
80382  \brief Internal functions ... incomplete-documentation
80383 
80384  These functions have been made public as part of the design, but they are suggested for internal use
80385  or by particularly knowledgeable users for specialized tools or applications.
80386 
80387  \internal We could not make these private because they are required by user for special purposes. And
80388  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
80389 
80390  */
80391 
80392  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
80393  // overridden in every class by *generated* implementation
80395  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
80396  // MS: 06/28/02 container of names of variables or container indices
80397  // used used in the traversal to access AST successor nodes
80398  // overridden in every class by *generated* implementation
80401  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
80402 
80403  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
80404  // than all the vector copies. The implementation for these functions is generated for each class.
80406  virtual size_t get_numberOfTraversalSuccessors() override;
80408  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
80410  virtual size_t get_childIndex(SgNode *child) override;
80411 
80412 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
80413  // MS: 08/16/2002 method for generating RTI information
80415  virtual RTIReturnType roseRTI() override;
80416 #endif
80417  /* */
80418 
80419 
80420 
80421  /* name Deprecated Functions
80422  \brief Deprecated functions ... incomplete-documentation
80423 
80424  These functions have been deprecated from use.
80425  */
80426  /* */
80427 
80429  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
80430 
80431  // JJW (10/16/2008): Changed to a single function in Node.code, and put
80432  // getVariant() in #if 0 block to prevent confusing Doxygen
80433 #if 0
80434 
80435  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
80437  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
80438 #endif
80439  /* */
80440 
80441 
80442 
80443 
80444  public:
80445  /* name Traversal Support Functions
80446  \brief Traversal support functions ... incomplete-documentation
80447 
80448  These functions have been made public as part of the design, but they are suggested for internal use
80449  or by particularly knowledgable users for specialized tools or applications.
80450  */
80451  /* */
80452 
80453  // DQ (11/26/2005): Support for visitor pattern mechanims
80454  // (inferior to ROSE traversal mechanism, experimental).
80458 
80459  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
80461  virtual void accept (ROSE_VisitorPattern & visitor) override;
80462 
80463  // DQ (12/26/2005): Support for traversal based on the memory pool
80466  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
80467 
80471 
80472  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
80473  // This traversal helps support internal tools that call static member functions.
80474  // note: this function operates on the memory pools.
80477  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
80478  /* */
80479 
80480 
80481  public:
80482  /* name Memory Allocation Functions
80483  \brief Memory allocations functions ... incomplete-documentation
80484 
80485  These functions have been made public as part of the design, but they are suggested for internal use
80486  or by particularly knowledgable users for specialized tools or applications.
80487  */
80488  /* */
80489 
80500  virtual bool isInMemoryPool() override;
80501 
80512  virtual void checkDataMemberPointersIfInMemoryPool() override;
80513 
80514  // DQ (4/30/2006): Modified to be a const function.
80529  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
80530 
80540  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
80541 
80553  virtual long getChildIndex( SgNode* childNode ) const override;
80554 
80555  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
80556  // comment here (changed to be a C style comment and not be a doxygen comment).
80557  /* \brief Constructor for use by AST File I/O Mechanism
80558 
80559  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
80560  which obtained via fast binary file I/O from disk.
80561  */
80562  // SgOmpNowaitClause( SgOmpNowaitClauseStorageClass& source );
80563 
80564 
80565 
80566 
80567 
80568  // JH (10/24/2005): methods added to support the ast file IO
80569  private:
80570 
80571  /* name AST Memory Allocation Support Functions
80572  \brief Memory allocations support....
80573 
80574  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
80575  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
80576  and support the AST File I/O Mechanism.
80577  */
80578  /* */
80579 
80580  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
80581  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
80582  that I use the same type everywhere, if any changes are made. THe second one declares the type
80583  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
80584  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
80585  a correspinding one in the AST_FILE_IO class!
80586  */
80587  // DQ (9/2/2015): This typedef is no longer used, we can't define the
80588  // comment here (changed to be a C style comment and not be a doxygen comment).
80589  /* \brief Typedef used for low level memory access.
80590  */
80591  // typedef unsigned char* TestType;
80592 
80593  // DQ (9/2/2015): This typedef is no longer used, we can't define the
80594  // comment here (changed to be a C style comment and not be a doxygen comment).
80595  /* \brief Typedef used to hold memory addresses as values.
80596  */
80597  // typedef unsigned long AddressType;
80598 
80599 
80600 
80601  // necessary, to have direct access to the p_freepointer and the private methods !
80603  friend class AST_FILE_IO;
80604 
80606  friend class SgOmpNowaitClauseStorageClass;
80607 
80609  friend class AstSpecificDataManagingClass;
80610 
80612  friend class AstSpecificDataManagingClassStorageClass;
80613 
80614  public:
80616  SgOmpNowaitClause( const SgOmpNowaitClauseStorageClass& source );
80617 
80618  // private: // JJW hack
80619  /*
80620  name AST Memory Allocation Support Variables
80621  Memory allocations support variables
80622 
80623  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
80624  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
80625  and support the AST File I/O Mechanism.
80626  */
80627  /* */
80628 
80629  public:
80630 
80631  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
80632  // to current node (so that it will work cleanly with build functions to specify patterns).
80633  // virtual SgNode* addRegExpAttribute();
80640 
80641 // *** COMMON CODE SECTION ENDS HERE ***
80642 
80643 
80644 // End of memberFunctionString
80645 // Start of memberFunctionString
80646 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
80647 
80648  // the generated cast function
80649  // friend ROSE_DLL_API SgOmpNowaitClause* isSgOmpNowaitClause ( SgNode* s );
80650 
80651  typedef SgOmpClause base_node_type;
80652 
80653 
80654 // End of memberFunctionString
80655 
80656 
80657  public:
80658  virtual ~SgOmpNowaitClause();
80659 
80660 
80661  public:
80662  SgOmpNowaitClause(Sg_File_Info* startOfConstruct );
80663  SgOmpNowaitClause();
80664 
80665  protected:
80666 
80667 
80668 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
80669 
80670 
80671  };
80672 #endif
80673 
80674 // postdeclarations for SgOmpNowaitClause
80675 
80676 /* #line 80677 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
80677 
80678 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
80679 
80680 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
80681 
80682 
80683 /* #line 80684 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
80684 
80685 
80686 
80687 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
80688 
80689 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
80690 // This code is automatically generated for each
80691 // terminal and non-terminal within the defined
80692 // grammar. There is a simple way to change the
80693 // code to fix bugs etc. See the ROSE README file
80694 // for directions.
80695 
80696 // tps: (02/22/2010): Adding DLL export requirements
80697 #include "rosedll.h"
80698 
80699 // predeclarations for SgOmpReadClause
80700 
80701 /* #line 80702 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
80702 
80703 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
80704 
80705 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
80706 
80707 #if 1
80708 // Class Definition for SgOmpReadClause
80709 class ROSE_DLL_API SgOmpReadClause : public SgOmpClause
80710  {
80711  public:
80712 
80713 
80714 /* #line 80715 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
80715 
80716  virtual SgNode* copy ( SgCopyHelp& help) const override;
80717 // Start of memberFunctionString
80718 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
80719 
80720 // *** COMMON CODE SECTION BEGINS HERE ***
80721 
80722  public:
80723 
80724  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
80725  // and not required which is required to match the other aspects of the copy mechanism code generation.
80726  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
80727  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
80728  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
80729  // virtual SgNode* copy ( const SgCopyHelp & help) const;
80730 
80732  virtual std::string class_name() const override;
80733 
80735  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
80736 
80738  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
80739  // static const VariantT static_variant = V_SgOmpReadClause;
80740  enum { static_variant = V_SgOmpReadClause };
80741 
80742  /* the generated cast function */
80744  ROSE_DLL_API friend SgOmpReadClause* isSgOmpReadClause( SgNode * s );
80745 
80747  ROSE_DLL_API friend const SgOmpReadClause* isSgOmpReadClause( const SgNode * s );
80748 
80749  // ******************************************
80750  // * Memory Pool / New / Delete
80751  // ******************************************
80752 
80753  public:
80755  static const unsigned pool_size; //
80757  static std::vector<unsigned char *> pools; //
80759  static SgOmpReadClause * next_node; //
80760 
80762  static unsigned long initializeStorageClassArray(SgOmpReadClauseStorageClass *); //
80763 
80765  static void clearMemoryPool(); //
80766  static void deleteMemoryPool(); //
80767 
80769  static void extendMemoryPoolForFileIO(); //
80770 
80772  static SgOmpReadClause * getPointerFromGlobalIndex(unsigned long); //
80774  static SgOmpReadClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
80775 
80777  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
80779  static void resetValidFreepointers(); //
80781  static unsigned long getNumberOfLastValidPointer(); //
80782 
80783 
80784 #if defined(INLINE_FUNCTIONS)
80785 
80786  inline void *operator new (size_t size);
80787 #else
80788 
80789  void *operator new (size_t size);
80790 #endif
80791 
80792  void operator delete (void* pointer, size_t size);
80793 
80794  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
80795  void operator delete (void* pointer)
80796  {
80797  // This is the generated delete operator...
80798  SgOmpReadClause::operator delete (pointer,sizeof(SgOmpReadClause));
80799  }
80800 
80802  static size_t numberOfNodes();
80803 
80805  static size_t memoryUsage();
80806 
80807  // End of scope which started in IR nodes specific code
80808  /* */
80809 
80810  /* name Internal Functions
80811  \brief Internal functions ... incomplete-documentation
80812 
80813  These functions have been made public as part of the design, but they are suggested for internal use
80814  or by particularly knowledgeable users for specialized tools or applications.
80815 
80816  \internal We could not make these private because they are required by user for special purposes. And
80817  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
80818 
80819  */
80820 
80821  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
80822  // overridden in every class by *generated* implementation
80824  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
80825  // MS: 06/28/02 container of names of variables or container indices
80826  // used used in the traversal to access AST successor nodes
80827  // overridden in every class by *generated* implementation
80830  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
80831 
80832  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
80833  // than all the vector copies. The implementation for these functions is generated for each class.
80835  virtual size_t get_numberOfTraversalSuccessors() override;
80837  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
80839  virtual size_t get_childIndex(SgNode *child) override;
80840 
80841 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
80842  // MS: 08/16/2002 method for generating RTI information
80844  virtual RTIReturnType roseRTI() override;
80845 #endif
80846  /* */
80847 
80848 
80849 
80850  /* name Deprecated Functions
80851  \brief Deprecated functions ... incomplete-documentation
80852 
80853  These functions have been deprecated from use.
80854  */
80855  /* */
80856 
80858  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
80859 
80860  // JJW (10/16/2008): Changed to a single function in Node.code, and put
80861  // getVariant() in #if 0 block to prevent confusing Doxygen
80862 #if 0
80863 
80864  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
80866  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
80867 #endif
80868  /* */
80869 
80870 
80871 
80872 
80873  public:
80874  /* name Traversal Support Functions
80875  \brief Traversal support functions ... incomplete-documentation
80876 
80877  These functions have been made public as part of the design, but they are suggested for internal use
80878  or by particularly knowledgable users for specialized tools or applications.
80879  */
80880  /* */
80881 
80882  // DQ (11/26/2005): Support for visitor pattern mechanims
80883  // (inferior to ROSE traversal mechanism, experimental).
80887 
80888  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
80890  virtual void accept (ROSE_VisitorPattern & visitor) override;
80891 
80892  // DQ (12/26/2005): Support for traversal based on the memory pool
80895  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
80896 
80900 
80901  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
80902  // This traversal helps support internal tools that call static member functions.
80903  // note: this function operates on the memory pools.
80906  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
80907  /* */
80908 
80909 
80910  public:
80911  /* name Memory Allocation Functions
80912  \brief Memory allocations functions ... incomplete-documentation
80913 
80914  These functions have been made public as part of the design, but they are suggested for internal use
80915  or by particularly knowledgable users for specialized tools or applications.
80916  */
80917  /* */
80918 
80929  virtual bool isInMemoryPool() override;
80930 
80941  virtual void checkDataMemberPointersIfInMemoryPool() override;
80942 
80943  // DQ (4/30/2006): Modified to be a const function.
80958  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
80959 
80969  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
80970 
80982  virtual long getChildIndex( SgNode* childNode ) const override;
80983 
80984  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
80985  // comment here (changed to be a C style comment and not be a doxygen comment).
80986  /* \brief Constructor for use by AST File I/O Mechanism
80987 
80988  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
80989  which obtained via fast binary file I/O from disk.
80990  */
80991  // SgOmpReadClause( SgOmpReadClauseStorageClass& source );
80992 
80993 
80994 
80995 
80996 
80997  // JH (10/24/2005): methods added to support the ast file IO
80998  private:
80999 
81000  /* name AST Memory Allocation Support Functions
81001  \brief Memory allocations support....
81002 
81003  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
81004  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
81005  and support the AST File I/O Mechanism.
81006  */
81007  /* */
81008 
81009  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
81010  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
81011  that I use the same type everywhere, if any changes are made. THe second one declares the type
81012  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
81013  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
81014  a correspinding one in the AST_FILE_IO class!
81015  */
81016  // DQ (9/2/2015): This typedef is no longer used, we can't define the
81017  // comment here (changed to be a C style comment and not be a doxygen comment).
81018  /* \brief Typedef used for low level memory access.
81019  */
81020  // typedef unsigned char* TestType;
81021 
81022  // DQ (9/2/2015): This typedef is no longer used, we can't define the
81023  // comment here (changed to be a C style comment and not be a doxygen comment).
81024  /* \brief Typedef used to hold memory addresses as values.
81025  */
81026  // typedef unsigned long AddressType;
81027 
81028 
81029 
81030  // necessary, to have direct access to the p_freepointer and the private methods !
81032  friend class AST_FILE_IO;
81033 
81035  friend class SgOmpReadClauseStorageClass;
81036 
81038  friend class AstSpecificDataManagingClass;
81039 
81041  friend class AstSpecificDataManagingClassStorageClass;
81042 
81043  public:
81045  SgOmpReadClause( const SgOmpReadClauseStorageClass& source );
81046 
81047  // private: // JJW hack
81048  /*
81049  name AST Memory Allocation Support Variables
81050  Memory allocations support variables
81051 
81052  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
81053  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
81054  and support the AST File I/O Mechanism.
81055  */
81056  /* */
81057 
81058  public:
81059 
81060  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
81061  // to current node (so that it will work cleanly with build functions to specify patterns).
81062  // virtual SgNode* addRegExpAttribute();
81069 
81070 // *** COMMON CODE SECTION ENDS HERE ***
81071 
81072 
81073 // End of memberFunctionString
81074 // Start of memberFunctionString
81075 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
81076 
81077  // the generated cast function
81078  // friend ROSE_DLL_API SgOmpReadClause* isSgOmpReadClause ( SgNode* s );
81079 
81080  typedef SgOmpClause base_node_type;
81081 
81082 
81083 // End of memberFunctionString
81084 
81085 
81086  public:
81087  virtual ~SgOmpReadClause();
81088 
81089 
81090  public:
81091  SgOmpReadClause(Sg_File_Info* startOfConstruct );
81092  SgOmpReadClause();
81093 
81094  protected:
81095 
81096 
81097 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
81098 
81099 
81100  };
81101 #endif
81102 
81103 // postdeclarations for SgOmpReadClause
81104 
81105 /* #line 81106 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
81106 
81107 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
81108 
81109 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
81110 
81111 
81112 /* #line 81113 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
81113 
81114 
81115 
81116 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
81117 
81118 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
81119 // This code is automatically generated for each
81120 // terminal and non-terminal within the defined
81121 // grammar. There is a simple way to change the
81122 // code to fix bugs etc. See the ROSE README file
81123 // for directions.
81124 
81125 // tps: (02/22/2010): Adding DLL export requirements
81126 #include "rosedll.h"
81127 
81128 // predeclarations for SgOmpThreadsClause
81129 
81130 /* #line 81131 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
81131 
81132 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
81133 
81134 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
81135 
81136 #if 1
81137 // Class Definition for SgOmpThreadsClause
81138 class ROSE_DLL_API SgOmpThreadsClause : public SgOmpClause
81139  {
81140  public:
81141 
81142 
81143 /* #line 81144 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
81144 
81145  virtual SgNode* copy ( SgCopyHelp& help) const override;
81146 // Start of memberFunctionString
81147 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
81148 
81149 // *** COMMON CODE SECTION BEGINS HERE ***
81150 
81151  public:
81152 
81153  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
81154  // and not required which is required to match the other aspects of the copy mechanism code generation.
81155  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
81156  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
81157  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
81158  // virtual SgNode* copy ( const SgCopyHelp & help) const;
81159 
81161  virtual std::string class_name() const override;
81162 
81164  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
81165 
81167  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
81168  // static const VariantT static_variant = V_SgOmpThreadsClause;
81169  enum { static_variant = V_SgOmpThreadsClause };
81170 
81171  /* the generated cast function */
81173  ROSE_DLL_API friend SgOmpThreadsClause* isSgOmpThreadsClause( SgNode * s );
81174 
81176  ROSE_DLL_API friend const SgOmpThreadsClause* isSgOmpThreadsClause( const SgNode * s );
81177 
81178  // ******************************************
81179  // * Memory Pool / New / Delete
81180  // ******************************************
81181 
81182  public:
81184  static const unsigned pool_size; //
81186  static std::vector<unsigned char *> pools; //
81188  static SgOmpThreadsClause * next_node; //
81189 
81191  static unsigned long initializeStorageClassArray(SgOmpThreadsClauseStorageClass *); //
81192 
81194  static void clearMemoryPool(); //
81195  static void deleteMemoryPool(); //
81196 
81198  static void extendMemoryPoolForFileIO(); //
81199 
81201  static SgOmpThreadsClause * getPointerFromGlobalIndex(unsigned long); //
81203  static SgOmpThreadsClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
81204 
81206  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
81208  static void resetValidFreepointers(); //
81210  static unsigned long getNumberOfLastValidPointer(); //
81211 
81212 
81213 #if defined(INLINE_FUNCTIONS)
81214 
81215  inline void *operator new (size_t size);
81216 #else
81217 
81218  void *operator new (size_t size);
81219 #endif
81220 
81221  void operator delete (void* pointer, size_t size);
81222 
81223  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
81224  void operator delete (void* pointer)
81225  {
81226  // This is the generated delete operator...
81227  SgOmpThreadsClause::operator delete (pointer,sizeof(SgOmpThreadsClause));
81228  }
81229 
81231  static size_t numberOfNodes();
81232 
81234  static size_t memoryUsage();
81235 
81236  // End of scope which started in IR nodes specific code
81237  /* */
81238 
81239  /* name Internal Functions
81240  \brief Internal functions ... incomplete-documentation
81241 
81242  These functions have been made public as part of the design, but they are suggested for internal use
81243  or by particularly knowledgeable users for specialized tools or applications.
81244 
81245  \internal We could not make these private because they are required by user for special purposes. And
81246  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
81247 
81248  */
81249 
81250  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
81251  // overridden in every class by *generated* implementation
81253  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
81254  // MS: 06/28/02 container of names of variables or container indices
81255  // used used in the traversal to access AST successor nodes
81256  // overridden in every class by *generated* implementation
81259  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
81260 
81261  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
81262  // than all the vector copies. The implementation for these functions is generated for each class.
81264  virtual size_t get_numberOfTraversalSuccessors() override;
81266  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
81268  virtual size_t get_childIndex(SgNode *child) override;
81269 
81270 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
81271  // MS: 08/16/2002 method for generating RTI information
81273  virtual RTIReturnType roseRTI() override;
81274 #endif
81275  /* */
81276 
81277 
81278 
81279  /* name Deprecated Functions
81280  \brief Deprecated functions ... incomplete-documentation
81281 
81282  These functions have been deprecated from use.
81283  */
81284  /* */
81285 
81287  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
81288 
81289  // JJW (10/16/2008): Changed to a single function in Node.code, and put
81290  // getVariant() in #if 0 block to prevent confusing Doxygen
81291 #if 0
81292 
81293  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
81295  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
81296 #endif
81297  /* */
81298 
81299 
81300 
81301 
81302  public:
81303  /* name Traversal Support Functions
81304  \brief Traversal support functions ... incomplete-documentation
81305 
81306  These functions have been made public as part of the design, but they are suggested for internal use
81307  or by particularly knowledgable users for specialized tools or applications.
81308  */
81309  /* */
81310 
81311  // DQ (11/26/2005): Support for visitor pattern mechanims
81312  // (inferior to ROSE traversal mechanism, experimental).
81316 
81317  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
81319  virtual void accept (ROSE_VisitorPattern & visitor) override;
81320 
81321  // DQ (12/26/2005): Support for traversal based on the memory pool
81324  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
81325 
81329 
81330  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
81331  // This traversal helps support internal tools that call static member functions.
81332  // note: this function operates on the memory pools.
81335  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
81336  /* */
81337 
81338 
81339  public:
81340  /* name Memory Allocation Functions
81341  \brief Memory allocations functions ... incomplete-documentation
81342 
81343  These functions have been made public as part of the design, but they are suggested for internal use
81344  or by particularly knowledgable users for specialized tools or applications.
81345  */
81346  /* */
81347 
81358  virtual bool isInMemoryPool() override;
81359 
81370  virtual void checkDataMemberPointersIfInMemoryPool() override;
81371 
81372  // DQ (4/30/2006): Modified to be a const function.
81387  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
81388 
81398  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
81399 
81411  virtual long getChildIndex( SgNode* childNode ) const override;
81412 
81413  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
81414  // comment here (changed to be a C style comment and not be a doxygen comment).
81415  /* \brief Constructor for use by AST File I/O Mechanism
81416 
81417  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
81418  which obtained via fast binary file I/O from disk.
81419  */
81420  // SgOmpThreadsClause( SgOmpThreadsClauseStorageClass& source );
81421 
81422 
81423 
81424 
81425 
81426  // JH (10/24/2005): methods added to support the ast file IO
81427  private:
81428 
81429  /* name AST Memory Allocation Support Functions
81430  \brief Memory allocations support....
81431 
81432  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
81433  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
81434  and support the AST File I/O Mechanism.
81435  */
81436  /* */
81437 
81438  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
81439  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
81440  that I use the same type everywhere, if any changes are made. THe second one declares the type
81441  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
81442  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
81443  a correspinding one in the AST_FILE_IO class!
81444  */
81445  // DQ (9/2/2015): This typedef is no longer used, we can't define the
81446  // comment here (changed to be a C style comment and not be a doxygen comment).
81447  /* \brief Typedef used for low level memory access.
81448  */
81449  // typedef unsigned char* TestType;
81450 
81451  // DQ (9/2/2015): This typedef is no longer used, we can't define the
81452  // comment here (changed to be a C style comment and not be a doxygen comment).
81453  /* \brief Typedef used to hold memory addresses as values.
81454  */
81455  // typedef unsigned long AddressType;
81456 
81457 
81458 
81459  // necessary, to have direct access to the p_freepointer and the private methods !
81461  friend class AST_FILE_IO;
81462 
81464  friend class SgOmpThreadsClauseStorageClass;
81465 
81467  friend class AstSpecificDataManagingClass;
81468 
81470  friend class AstSpecificDataManagingClassStorageClass;
81471 
81472  public:
81474  SgOmpThreadsClause( const SgOmpThreadsClauseStorageClass& source );
81475 
81476  // private: // JJW hack
81477  /*
81478  name AST Memory Allocation Support Variables
81479  Memory allocations support variables
81480 
81481  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
81482  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
81483  and support the AST File I/O Mechanism.
81484  */
81485  /* */
81486 
81487  public:
81488 
81489  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
81490  // to current node (so that it will work cleanly with build functions to specify patterns).
81491  // virtual SgNode* addRegExpAttribute();
81498 
81499 // *** COMMON CODE SECTION ENDS HERE ***
81500 
81501 
81502 // End of memberFunctionString
81503 // Start of memberFunctionString
81504 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
81505 
81506  // the generated cast function
81507  // friend ROSE_DLL_API SgOmpThreadsClause* isSgOmpThreadsClause ( SgNode* s );
81508 
81509  typedef SgOmpClause base_node_type;
81510 
81511 
81512 // End of memberFunctionString
81513 
81514 
81515  public:
81516  virtual ~SgOmpThreadsClause();
81517 
81518 
81519  public:
81520  SgOmpThreadsClause(Sg_File_Info* startOfConstruct );
81521  SgOmpThreadsClause();
81522 
81523  protected:
81524 
81525 
81526 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
81527 
81528 
81529  };
81530 #endif
81531 
81532 // postdeclarations for SgOmpThreadsClause
81533 
81534 /* #line 81535 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
81535 
81536 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
81537 
81538 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
81539 
81540 
81541 /* #line 81542 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
81542 
81543 
81544 
81545 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
81546 
81547 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
81548 // This code is automatically generated for each
81549 // terminal and non-terminal within the defined
81550 // grammar. There is a simple way to change the
81551 // code to fix bugs etc. See the ROSE README file
81552 // for directions.
81553 
81554 // tps: (02/22/2010): Adding DLL export requirements
81555 #include "rosedll.h"
81556 
81557 // predeclarations for SgOmpSimdClause
81558 
81559 /* #line 81560 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
81560 
81561 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
81562 
81563 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
81564 
81565 #if 1
81566 // Class Definition for SgOmpSimdClause
81567 class ROSE_DLL_API SgOmpSimdClause : public SgOmpClause
81568  {
81569  public:
81570 
81571 
81572 /* #line 81573 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
81573 
81574  virtual SgNode* copy ( SgCopyHelp& help) const override;
81575 // Start of memberFunctionString
81576 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
81577 
81578 // *** COMMON CODE SECTION BEGINS HERE ***
81579 
81580  public:
81581 
81582  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
81583  // and not required which is required to match the other aspects of the copy mechanism code generation.
81584  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
81585  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
81586  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
81587  // virtual SgNode* copy ( const SgCopyHelp & help) const;
81588 
81590  virtual std::string class_name() const override;
81591 
81593  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
81594 
81596  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
81597  // static const VariantT static_variant = V_SgOmpSimdClause;
81598  enum { static_variant = V_SgOmpSimdClause };
81599 
81600  /* the generated cast function */
81602  ROSE_DLL_API friend SgOmpSimdClause* isSgOmpSimdClause( SgNode * s );
81603 
81605  ROSE_DLL_API friend const SgOmpSimdClause* isSgOmpSimdClause( const SgNode * s );
81606 
81607  // ******************************************
81608  // * Memory Pool / New / Delete
81609  // ******************************************
81610 
81611  public:
81613  static const unsigned pool_size; //
81615  static std::vector<unsigned char *> pools; //
81617  static SgOmpSimdClause * next_node; //
81618 
81620  static unsigned long initializeStorageClassArray(SgOmpSimdClauseStorageClass *); //
81621 
81623  static void clearMemoryPool(); //
81624  static void deleteMemoryPool(); //
81625 
81627  static void extendMemoryPoolForFileIO(); //
81628 
81630  static SgOmpSimdClause * getPointerFromGlobalIndex(unsigned long); //
81632  static SgOmpSimdClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
81633 
81635  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
81637  static void resetValidFreepointers(); //
81639  static unsigned long getNumberOfLastValidPointer(); //
81640 
81641 
81642 #if defined(INLINE_FUNCTIONS)
81643 
81644  inline void *operator new (size_t size);
81645 #else
81646 
81647  void *operator new (size_t size);
81648 #endif
81649 
81650  void operator delete (void* pointer, size_t size);
81651 
81652  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
81653  void operator delete (void* pointer)
81654  {
81655  // This is the generated delete operator...
81656  SgOmpSimdClause::operator delete (pointer,sizeof(SgOmpSimdClause));
81657  }
81658 
81660  static size_t numberOfNodes();
81661 
81663  static size_t memoryUsage();
81664 
81665  // End of scope which started in IR nodes specific code
81666  /* */
81667 
81668  /* name Internal Functions
81669  \brief Internal functions ... incomplete-documentation
81670 
81671  These functions have been made public as part of the design, but they are suggested for internal use
81672  or by particularly knowledgeable users for specialized tools or applications.
81673 
81674  \internal We could not make these private because they are required by user for special purposes. And
81675  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
81676 
81677  */
81678 
81679  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
81680  // overridden in every class by *generated* implementation
81682  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
81683  // MS: 06/28/02 container of names of variables or container indices
81684  // used used in the traversal to access AST successor nodes
81685  // overridden in every class by *generated* implementation
81688  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
81689 
81690  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
81691  // than all the vector copies. The implementation for these functions is generated for each class.
81693  virtual size_t get_numberOfTraversalSuccessors() override;
81695  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
81697  virtual size_t get_childIndex(SgNode *child) override;
81698 
81699 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
81700  // MS: 08/16/2002 method for generating RTI information
81702  virtual RTIReturnType roseRTI() override;
81703 #endif
81704  /* */
81705 
81706 
81707 
81708  /* name Deprecated Functions
81709  \brief Deprecated functions ... incomplete-documentation
81710 
81711  These functions have been deprecated from use.
81712  */
81713  /* */
81714 
81716  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
81717 
81718  // JJW (10/16/2008): Changed to a single function in Node.code, and put
81719  // getVariant() in #if 0 block to prevent confusing Doxygen
81720 #if 0
81721 
81722  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
81724  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
81725 #endif
81726  /* */
81727 
81728 
81729 
81730 
81731  public:
81732  /* name Traversal Support Functions
81733  \brief Traversal support functions ... incomplete-documentation
81734 
81735  These functions have been made public as part of the design, but they are suggested for internal use
81736  or by particularly knowledgable users for specialized tools or applications.
81737  */
81738  /* */
81739 
81740  // DQ (11/26/2005): Support for visitor pattern mechanims
81741  // (inferior to ROSE traversal mechanism, experimental).
81745 
81746  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
81748  virtual void accept (ROSE_VisitorPattern & visitor) override;
81749 
81750  // DQ (12/26/2005): Support for traversal based on the memory pool
81753  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
81754 
81758 
81759  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
81760  // This traversal helps support internal tools that call static member functions.
81761  // note: this function operates on the memory pools.
81764  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
81765  /* */
81766 
81767 
81768  public:
81769  /* name Memory Allocation Functions
81770  \brief Memory allocations functions ... incomplete-documentation
81771 
81772  These functions have been made public as part of the design, but they are suggested for internal use
81773  or by particularly knowledgable users for specialized tools or applications.
81774  */
81775  /* */
81776 
81787  virtual bool isInMemoryPool() override;
81788 
81799  virtual void checkDataMemberPointersIfInMemoryPool() override;
81800 
81801  // DQ (4/30/2006): Modified to be a const function.
81816  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
81817 
81827  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
81828 
81840  virtual long getChildIndex( SgNode* childNode ) const override;
81841 
81842  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
81843  // comment here (changed to be a C style comment and not be a doxygen comment).
81844  /* \brief Constructor for use by AST File I/O Mechanism
81845 
81846  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
81847  which obtained via fast binary file I/O from disk.
81848  */
81849  // SgOmpSimdClause( SgOmpSimdClauseStorageClass& source );
81850 
81851 
81852 
81853 
81854 
81855  // JH (10/24/2005): methods added to support the ast file IO
81856  private:
81857 
81858  /* name AST Memory Allocation Support Functions
81859  \brief Memory allocations support....
81860 
81861  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
81862  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
81863  and support the AST File I/O Mechanism.
81864  */
81865  /* */
81866 
81867  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
81868  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
81869  that I use the same type everywhere, if any changes are made. THe second one declares the type
81870  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
81871  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
81872  a correspinding one in the AST_FILE_IO class!
81873  */
81874  // DQ (9/2/2015): This typedef is no longer used, we can't define the
81875  // comment here (changed to be a C style comment and not be a doxygen comment).
81876  /* \brief Typedef used for low level memory access.
81877  */
81878  // typedef unsigned char* TestType;
81879 
81880  // DQ (9/2/2015): This typedef is no longer used, we can't define the
81881  // comment here (changed to be a C style comment and not be a doxygen comment).
81882  /* \brief Typedef used to hold memory addresses as values.
81883  */
81884  // typedef unsigned long AddressType;
81885 
81886 
81887 
81888  // necessary, to have direct access to the p_freepointer and the private methods !
81890  friend class AST_FILE_IO;
81891 
81893  friend class SgOmpSimdClauseStorageClass;
81894 
81896  friend class AstSpecificDataManagingClass;
81897 
81899  friend class AstSpecificDataManagingClassStorageClass;
81900 
81901  public:
81903  SgOmpSimdClause( const SgOmpSimdClauseStorageClass& source );
81904 
81905  // private: // JJW hack
81906  /*
81907  name AST Memory Allocation Support Variables
81908  Memory allocations support variables
81909 
81910  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
81911  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
81912  and support the AST File I/O Mechanism.
81913  */
81914  /* */
81915 
81916  public:
81917 
81918  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
81919  // to current node (so that it will work cleanly with build functions to specify patterns).
81920  // virtual SgNode* addRegExpAttribute();
81927 
81928 // *** COMMON CODE SECTION ENDS HERE ***
81929 
81930 
81931 // End of memberFunctionString
81932 // Start of memberFunctionString
81933 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
81934 
81935  // the generated cast function
81936  // friend ROSE_DLL_API SgOmpSimdClause* isSgOmpSimdClause ( SgNode* s );
81937 
81938  typedef SgOmpClause base_node_type;
81939 
81940 
81941 // End of memberFunctionString
81942 
81943 
81944  public:
81945  virtual ~SgOmpSimdClause();
81946 
81947 
81948  public:
81949  SgOmpSimdClause(Sg_File_Info* startOfConstruct );
81950  SgOmpSimdClause();
81951 
81952  protected:
81953 
81954 
81955 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
81956 
81957 
81958  };
81959 #endif
81960 
81961 // postdeclarations for SgOmpSimdClause
81962 
81963 /* #line 81964 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
81964 
81965 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
81966 
81967 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
81968 
81969 
81970 /* #line 81971 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
81971 
81972 
81973 
81974 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
81975 
81976 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
81977 // This code is automatically generated for each
81978 // terminal and non-terminal within the defined
81979 // grammar. There is a simple way to change the
81980 // code to fix bugs etc. See the ROSE README file
81981 // for directions.
81982 
81983 // tps: (02/22/2010): Adding DLL export requirements
81984 #include "rosedll.h"
81985 
81986 // predeclarations for SgOmpWriteClause
81987 
81988 /* #line 81989 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
81989 
81990 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
81991 
81992 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
81993 
81994 #if 1
81995 // Class Definition for SgOmpWriteClause
81996 class ROSE_DLL_API SgOmpWriteClause : public SgOmpClause
81997  {
81998  public:
81999 
82000 
82001 /* #line 82002 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
82002 
82003  virtual SgNode* copy ( SgCopyHelp& help) const override;
82004 // Start of memberFunctionString
82005 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
82006 
82007 // *** COMMON CODE SECTION BEGINS HERE ***
82008 
82009  public:
82010 
82011  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
82012  // and not required which is required to match the other aspects of the copy mechanism code generation.
82013  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
82014  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
82015  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
82016  // virtual SgNode* copy ( const SgCopyHelp & help) const;
82017 
82019  virtual std::string class_name() const override;
82020 
82022  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
82023 
82025  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
82026  // static const VariantT static_variant = V_SgOmpWriteClause;
82027  enum { static_variant = V_SgOmpWriteClause };
82028 
82029  /* the generated cast function */
82031  ROSE_DLL_API friend SgOmpWriteClause* isSgOmpWriteClause( SgNode * s );
82032 
82034  ROSE_DLL_API friend const SgOmpWriteClause* isSgOmpWriteClause( const SgNode * s );
82035 
82036  // ******************************************
82037  // * Memory Pool / New / Delete
82038  // ******************************************
82039 
82040  public:
82042  static const unsigned pool_size; //
82044  static std::vector<unsigned char *> pools; //
82046  static SgOmpWriteClause * next_node; //
82047 
82049  static unsigned long initializeStorageClassArray(SgOmpWriteClauseStorageClass *); //
82050 
82052  static void clearMemoryPool(); //
82053  static void deleteMemoryPool(); //
82054 
82056  static void extendMemoryPoolForFileIO(); //
82057 
82059  static SgOmpWriteClause * getPointerFromGlobalIndex(unsigned long); //
82061  static SgOmpWriteClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
82062 
82064  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
82066  static void resetValidFreepointers(); //
82068  static unsigned long getNumberOfLastValidPointer(); //
82069 
82070 
82071 #if defined(INLINE_FUNCTIONS)
82072 
82073  inline void *operator new (size_t size);
82074 #else
82075 
82076  void *operator new (size_t size);
82077 #endif
82078 
82079  void operator delete (void* pointer, size_t size);
82080 
82081  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
82082  void operator delete (void* pointer)
82083  {
82084  // This is the generated delete operator...
82085  SgOmpWriteClause::operator delete (pointer,sizeof(SgOmpWriteClause));
82086  }
82087 
82089  static size_t numberOfNodes();
82090 
82092  static size_t memoryUsage();
82093 
82094  // End of scope which started in IR nodes specific code
82095  /* */
82096 
82097  /* name Internal Functions
82098  \brief Internal functions ... incomplete-documentation
82099 
82100  These functions have been made public as part of the design, but they are suggested for internal use
82101  or by particularly knowledgeable users for specialized tools or applications.
82102 
82103  \internal We could not make these private because they are required by user for special purposes. And
82104  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
82105 
82106  */
82107 
82108  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
82109  // overridden in every class by *generated* implementation
82111  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
82112  // MS: 06/28/02 container of names of variables or container indices
82113  // used used in the traversal to access AST successor nodes
82114  // overridden in every class by *generated* implementation
82117  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
82118 
82119  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
82120  // than all the vector copies. The implementation for these functions is generated for each class.
82122  virtual size_t get_numberOfTraversalSuccessors() override;
82124  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
82126  virtual size_t get_childIndex(SgNode *child) override;
82127 
82128 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
82129  // MS: 08/16/2002 method for generating RTI information
82131  virtual RTIReturnType roseRTI() override;
82132 #endif
82133  /* */
82134 
82135 
82136 
82137  /* name Deprecated Functions
82138  \brief Deprecated functions ... incomplete-documentation
82139 
82140  These functions have been deprecated from use.
82141  */
82142  /* */
82143 
82145  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
82146 
82147  // JJW (10/16/2008): Changed to a single function in Node.code, and put
82148  // getVariant() in #if 0 block to prevent confusing Doxygen
82149 #if 0
82150 
82151  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
82153  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
82154 #endif
82155  /* */
82156 
82157 
82158 
82159 
82160  public:
82161  /* name Traversal Support Functions
82162  \brief Traversal support functions ... incomplete-documentation
82163 
82164  These functions have been made public as part of the design, but they are suggested for internal use
82165  or by particularly knowledgable users for specialized tools or applications.
82166  */
82167  /* */
82168 
82169  // DQ (11/26/2005): Support for visitor pattern mechanims
82170  // (inferior to ROSE traversal mechanism, experimental).
82174 
82175  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
82177  virtual void accept (ROSE_VisitorPattern & visitor) override;
82178 
82179  // DQ (12/26/2005): Support for traversal based on the memory pool
82182  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
82183 
82187 
82188  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
82189  // This traversal helps support internal tools that call static member functions.
82190  // note: this function operates on the memory pools.
82193  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
82194  /* */
82195 
82196 
82197  public:
82198  /* name Memory Allocation Functions
82199  \brief Memory allocations functions ... incomplete-documentation
82200 
82201  These functions have been made public as part of the design, but they are suggested for internal use
82202  or by particularly knowledgable users for specialized tools or applications.
82203  */
82204  /* */
82205 
82216  virtual bool isInMemoryPool() override;
82217 
82228  virtual void checkDataMemberPointersIfInMemoryPool() override;
82229 
82230  // DQ (4/30/2006): Modified to be a const function.
82245  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
82246 
82256  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
82257 
82269  virtual long getChildIndex( SgNode* childNode ) const override;
82270 
82271  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
82272  // comment here (changed to be a C style comment and not be a doxygen comment).
82273  /* \brief Constructor for use by AST File I/O Mechanism
82274 
82275  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
82276  which obtained via fast binary file I/O from disk.
82277  */
82278  // SgOmpWriteClause( SgOmpWriteClauseStorageClass& source );
82279 
82280 
82281 
82282 
82283 
82284  // JH (10/24/2005): methods added to support the ast file IO
82285  private:
82286 
82287  /* name AST Memory Allocation Support Functions
82288  \brief Memory allocations support....
82289 
82290  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
82291  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
82292  and support the AST File I/O Mechanism.
82293  */
82294  /* */
82295 
82296  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
82297  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
82298  that I use the same type everywhere, if any changes are made. THe second one declares the type
82299  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
82300  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
82301  a correspinding one in the AST_FILE_IO class!
82302  */
82303  // DQ (9/2/2015): This typedef is no longer used, we can't define the
82304  // comment here (changed to be a C style comment and not be a doxygen comment).
82305  /* \brief Typedef used for low level memory access.
82306  */
82307  // typedef unsigned char* TestType;
82308 
82309  // DQ (9/2/2015): This typedef is no longer used, we can't define the
82310  // comment here (changed to be a C style comment and not be a doxygen comment).
82311  /* \brief Typedef used to hold memory addresses as values.
82312  */
82313  // typedef unsigned long AddressType;
82314 
82315 
82316 
82317  // necessary, to have direct access to the p_freepointer and the private methods !
82319  friend class AST_FILE_IO;
82320 
82322  friend class SgOmpWriteClauseStorageClass;
82323 
82325  friend class AstSpecificDataManagingClass;
82326 
82328  friend class AstSpecificDataManagingClassStorageClass;
82329 
82330  public:
82332  SgOmpWriteClause( const SgOmpWriteClauseStorageClass& source );
82333 
82334  // private: // JJW hack
82335  /*
82336  name AST Memory Allocation Support Variables
82337  Memory allocations support variables
82338 
82339  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
82340  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
82341  and support the AST File I/O Mechanism.
82342  */
82343  /* */
82344 
82345  public:
82346 
82347  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
82348  // to current node (so that it will work cleanly with build functions to specify patterns).
82349  // virtual SgNode* addRegExpAttribute();
82356 
82357 // *** COMMON CODE SECTION ENDS HERE ***
82358 
82359 
82360 // End of memberFunctionString
82361 // Start of memberFunctionString
82362 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
82363 
82364  // the generated cast function
82365  // friend ROSE_DLL_API SgOmpWriteClause* isSgOmpWriteClause ( SgNode* s );
82366 
82367  typedef SgOmpClause base_node_type;
82368 
82369 
82370 // End of memberFunctionString
82371 
82372 
82373  public:
82374  virtual ~SgOmpWriteClause();
82375 
82376 
82377  public:
82378  SgOmpWriteClause(Sg_File_Info* startOfConstruct );
82379  SgOmpWriteClause();
82380 
82381  protected:
82382 
82383 
82384 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
82385 
82386 
82387  };
82388 #endif
82389 
82390 // postdeclarations for SgOmpWriteClause
82391 
82392 /* #line 82393 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
82393 
82394 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
82395 
82396 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
82397 
82398 
82399 /* #line 82400 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
82400 
82401 
82402 
82403 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
82404 
82405 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
82406 // This code is automatically generated for each
82407 // terminal and non-terminal within the defined
82408 // grammar. There is a simple way to change the
82409 // code to fix bugs etc. See the ROSE README file
82410 // for directions.
82411 
82412 // tps: (02/22/2010): Adding DLL export requirements
82413 #include "rosedll.h"
82414 
82415 // predeclarations for SgOmpUpdateClause
82416 
82417 /* #line 82418 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
82418 
82419 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
82420 
82421 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
82422 
82423 #if 1
82424 // Class Definition for SgOmpUpdateClause
82425 class ROSE_DLL_API SgOmpUpdateClause : public SgOmpClause
82426  {
82427  public:
82428 
82429 
82430 /* #line 82431 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
82431 
82432  virtual SgNode* copy ( SgCopyHelp& help) const override;
82433 // Start of memberFunctionString
82434 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
82435 
82436 // *** COMMON CODE SECTION BEGINS HERE ***
82437 
82438  public:
82439 
82440  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
82441  // and not required which is required to match the other aspects of the copy mechanism code generation.
82442  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
82443  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
82444  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
82445  // virtual SgNode* copy ( const SgCopyHelp & help) const;
82446 
82448  virtual std::string class_name() const override;
82449 
82451  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
82452 
82454  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
82455  // static const VariantT static_variant = V_SgOmpUpdateClause;
82456  enum { static_variant = V_SgOmpUpdateClause };
82457 
82458  /* the generated cast function */
82460  ROSE_DLL_API friend SgOmpUpdateClause* isSgOmpUpdateClause( SgNode * s );
82461 
82463  ROSE_DLL_API friend const SgOmpUpdateClause* isSgOmpUpdateClause( const SgNode * s );
82464 
82465  // ******************************************
82466  // * Memory Pool / New / Delete
82467  // ******************************************
82468 
82469  public:
82471  static const unsigned pool_size; //
82473  static std::vector<unsigned char *> pools; //
82475  static SgOmpUpdateClause * next_node; //
82476 
82478  static unsigned long initializeStorageClassArray(SgOmpUpdateClauseStorageClass *); //
82479 
82481  static void clearMemoryPool(); //
82482  static void deleteMemoryPool(); //
82483 
82485  static void extendMemoryPoolForFileIO(); //
82486 
82488  static SgOmpUpdateClause * getPointerFromGlobalIndex(unsigned long); //
82490  static SgOmpUpdateClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
82491 
82493  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
82495  static void resetValidFreepointers(); //
82497  static unsigned long getNumberOfLastValidPointer(); //
82498 
82499 
82500 #if defined(INLINE_FUNCTIONS)
82501 
82502  inline void *operator new (size_t size);
82503 #else
82504 
82505  void *operator new (size_t size);
82506 #endif
82507 
82508  void operator delete (void* pointer, size_t size);
82509 
82510  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
82511  void operator delete (void* pointer)
82512  {
82513  // This is the generated delete operator...
82514  SgOmpUpdateClause::operator delete (pointer,sizeof(SgOmpUpdateClause));
82515  }
82516 
82518  static size_t numberOfNodes();
82519 
82521  static size_t memoryUsage();
82522 
82523  // End of scope which started in IR nodes specific code
82524  /* */
82525 
82526  /* name Internal Functions
82527  \brief Internal functions ... incomplete-documentation
82528 
82529  These functions have been made public as part of the design, but they are suggested for internal use
82530  or by particularly knowledgeable users for specialized tools or applications.
82531 
82532  \internal We could not make these private because they are required by user for special purposes. And
82533  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
82534 
82535  */
82536 
82537  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
82538  // overridden in every class by *generated* implementation
82540  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
82541  // MS: 06/28/02 container of names of variables or container indices
82542  // used used in the traversal to access AST successor nodes
82543  // overridden in every class by *generated* implementation
82546  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
82547 
82548  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
82549  // than all the vector copies. The implementation for these functions is generated for each class.
82551  virtual size_t get_numberOfTraversalSuccessors() override;
82553  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
82555  virtual size_t get_childIndex(SgNode *child) override;
82556 
82557 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
82558  // MS: 08/16/2002 method for generating RTI information
82560  virtual RTIReturnType roseRTI() override;
82561 #endif
82562  /* */
82563 
82564 
82565 
82566  /* name Deprecated Functions
82567  \brief Deprecated functions ... incomplete-documentation
82568 
82569  These functions have been deprecated from use.
82570  */
82571  /* */
82572 
82574  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
82575 
82576  // JJW (10/16/2008): Changed to a single function in Node.code, and put
82577  // getVariant() in #if 0 block to prevent confusing Doxygen
82578 #if 0
82579 
82580  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
82582  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
82583 #endif
82584  /* */
82585 
82586 
82587 
82588 
82589  public:
82590  /* name Traversal Support Functions
82591  \brief Traversal support functions ... incomplete-documentation
82592 
82593  These functions have been made public as part of the design, but they are suggested for internal use
82594  or by particularly knowledgable users for specialized tools or applications.
82595  */
82596  /* */
82597 
82598  // DQ (11/26/2005): Support for visitor pattern mechanims
82599  // (inferior to ROSE traversal mechanism, experimental).
82603 
82604  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
82606  virtual void accept (ROSE_VisitorPattern & visitor) override;
82607 
82608  // DQ (12/26/2005): Support for traversal based on the memory pool
82611  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
82612 
82616 
82617  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
82618  // This traversal helps support internal tools that call static member functions.
82619  // note: this function operates on the memory pools.
82622  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
82623  /* */
82624 
82625 
82626  public:
82627  /* name Memory Allocation Functions
82628  \brief Memory allocations functions ... incomplete-documentation
82629 
82630  These functions have been made public as part of the design, but they are suggested for internal use
82631  or by particularly knowledgable users for specialized tools or applications.
82632  */
82633  /* */
82634 
82645  virtual bool isInMemoryPool() override;
82646 
82657  virtual void checkDataMemberPointersIfInMemoryPool() override;
82658 
82659  // DQ (4/30/2006): Modified to be a const function.
82674  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
82675 
82685  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
82686 
82698  virtual long getChildIndex( SgNode* childNode ) const override;
82699 
82700  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
82701  // comment here (changed to be a C style comment and not be a doxygen comment).
82702  /* \brief Constructor for use by AST File I/O Mechanism
82703 
82704  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
82705  which obtained via fast binary file I/O from disk.
82706  */
82707  // SgOmpUpdateClause( SgOmpUpdateClauseStorageClass& source );
82708 
82709 
82710 
82711 
82712 
82713  // JH (10/24/2005): methods added to support the ast file IO
82714  private:
82715 
82716  /* name AST Memory Allocation Support Functions
82717  \brief Memory allocations support....
82718 
82719  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
82720  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
82721  and support the AST File I/O Mechanism.
82722  */
82723  /* */
82724 
82725  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
82726  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
82727  that I use the same type everywhere, if any changes are made. THe second one declares the type
82728  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
82729  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
82730  a correspinding one in the AST_FILE_IO class!
82731  */
82732  // DQ (9/2/2015): This typedef is no longer used, we can't define the
82733  // comment here (changed to be a C style comment and not be a doxygen comment).
82734  /* \brief Typedef used for low level memory access.
82735  */
82736  // typedef unsigned char* TestType;
82737 
82738  // DQ (9/2/2015): This typedef is no longer used, we can't define the
82739  // comment here (changed to be a C style comment and not be a doxygen comment).
82740  /* \brief Typedef used to hold memory addresses as values.
82741  */
82742  // typedef unsigned long AddressType;
82743 
82744 
82745 
82746  // necessary, to have direct access to the p_freepointer and the private methods !
82748  friend class AST_FILE_IO;
82749 
82751  friend class SgOmpUpdateClauseStorageClass;
82752 
82754  friend class AstSpecificDataManagingClass;
82755 
82757  friend class AstSpecificDataManagingClassStorageClass;
82758 
82759  public:
82761  SgOmpUpdateClause( const SgOmpUpdateClauseStorageClass& source );
82762 
82763  // private: // JJW hack
82764  /*
82765  name AST Memory Allocation Support Variables
82766  Memory allocations support variables
82767 
82768  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
82769  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
82770  and support the AST File I/O Mechanism.
82771  */
82772  /* */
82773 
82774  public:
82775 
82776  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
82777  // to current node (so that it will work cleanly with build functions to specify patterns).
82778  // virtual SgNode* addRegExpAttribute();
82785 
82786 // *** COMMON CODE SECTION ENDS HERE ***
82787 
82788 
82789 // End of memberFunctionString
82790 // Start of memberFunctionString
82791 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
82792 
82793  // the generated cast function
82794  // friend ROSE_DLL_API SgOmpUpdateClause* isSgOmpUpdateClause ( SgNode* s );
82795 
82796  typedef SgOmpClause base_node_type;
82797 
82798 
82799 // End of memberFunctionString
82800 
82801 
82802  public:
82803  virtual ~SgOmpUpdateClause();
82804 
82805 
82806  public:
82807  SgOmpUpdateClause(Sg_File_Info* startOfConstruct );
82808  SgOmpUpdateClause();
82809 
82810  protected:
82811 
82812 
82813 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
82814 
82815 
82816  };
82817 #endif
82818 
82819 // postdeclarations for SgOmpUpdateClause
82820 
82821 /* #line 82822 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
82822 
82823 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
82824 
82825 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
82826 
82827 
82828 /* #line 82829 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
82829 
82830 
82831 
82832 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
82833 
82834 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
82835 // This code is automatically generated for each
82836 // terminal and non-terminal within the defined
82837 // grammar. There is a simple way to change the
82838 // code to fix bugs etc. See the ROSE README file
82839 // for directions.
82840 
82841 // tps: (02/22/2010): Adding DLL export requirements
82842 #include "rosedll.h"
82843 
82844 // predeclarations for SgOmpDepobjUpdateClause
82845 
82846 /* #line 82847 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
82847 
82848 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
82849 
82850 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
82851 
82852 #if 1
82853 // Class Definition for SgOmpDepobjUpdateClause
82854 class ROSE_DLL_API SgOmpDepobjUpdateClause : public SgOmpClause
82855  {
82856  public:
82857 
82858 
82859 /* #line 82860 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
82860 
82861  virtual SgNode* copy ( SgCopyHelp& help) const override;
82862 // Start of memberFunctionString
82863 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
82864 
82865 // *** COMMON CODE SECTION BEGINS HERE ***
82866 
82867  public:
82868 
82869  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
82870  // and not required which is required to match the other aspects of the copy mechanism code generation.
82871  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
82872  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
82873  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
82874  // virtual SgNode* copy ( const SgCopyHelp & help) const;
82875 
82877  virtual std::string class_name() const override;
82878 
82880  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
82881 
82883  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
82884  // static const VariantT static_variant = V_SgOmpDepobjUpdateClause;
82885  enum { static_variant = V_SgOmpDepobjUpdateClause };
82886 
82887  /* the generated cast function */
82889  ROSE_DLL_API friend SgOmpDepobjUpdateClause* isSgOmpDepobjUpdateClause( SgNode * s );
82890 
82892  ROSE_DLL_API friend const SgOmpDepobjUpdateClause* isSgOmpDepobjUpdateClause( const SgNode * s );
82893 
82894  // ******************************************
82895  // * Memory Pool / New / Delete
82896  // ******************************************
82897 
82898  public:
82900  static const unsigned pool_size; //
82902  static std::vector<unsigned char *> pools; //
82904  static SgOmpDepobjUpdateClause * next_node; //
82905 
82907  static unsigned long initializeStorageClassArray(SgOmpDepobjUpdateClauseStorageClass *); //
82908 
82910  static void clearMemoryPool(); //
82911  static void deleteMemoryPool(); //
82912 
82914  static void extendMemoryPoolForFileIO(); //
82915 
82917  static SgOmpDepobjUpdateClause * getPointerFromGlobalIndex(unsigned long); //
82919  static SgOmpDepobjUpdateClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
82920 
82922  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
82924  static void resetValidFreepointers(); //
82926  static unsigned long getNumberOfLastValidPointer(); //
82927 
82928 
82929 #if defined(INLINE_FUNCTIONS)
82930 
82931  inline void *operator new (size_t size);
82932 #else
82933 
82934  void *operator new (size_t size);
82935 #endif
82936 
82937  void operator delete (void* pointer, size_t size);
82938 
82939  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
82940  void operator delete (void* pointer)
82941  {
82942  // This is the generated delete operator...
82943  SgOmpDepobjUpdateClause::operator delete (pointer,sizeof(SgOmpDepobjUpdateClause));
82944  }
82945 
82947  static size_t numberOfNodes();
82948 
82950  static size_t memoryUsage();
82951 
82952  // End of scope which started in IR nodes specific code
82953  /* */
82954 
82955  /* name Internal Functions
82956  \brief Internal functions ... incomplete-documentation
82957 
82958  These functions have been made public as part of the design, but they are suggested for internal use
82959  or by particularly knowledgeable users for specialized tools or applications.
82960 
82961  \internal We could not make these private because they are required by user for special purposes. And
82962  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
82963 
82964  */
82965 
82966  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
82967  // overridden in every class by *generated* implementation
82969  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
82970  // MS: 06/28/02 container of names of variables or container indices
82971  // used used in the traversal to access AST successor nodes
82972  // overridden in every class by *generated* implementation
82975  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
82976 
82977  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
82978  // than all the vector copies. The implementation for these functions is generated for each class.
82980  virtual size_t get_numberOfTraversalSuccessors() override;
82982  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
82984  virtual size_t get_childIndex(SgNode *child) override;
82985 
82986 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
82987  // MS: 08/16/2002 method for generating RTI information
82989  virtual RTIReturnType roseRTI() override;
82990 #endif
82991  /* */
82992 
82993 
82994 
82995  /* name Deprecated Functions
82996  \brief Deprecated functions ... incomplete-documentation
82997 
82998  These functions have been deprecated from use.
82999  */
83000  /* */
83001 
83003  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
83004 
83005  // JJW (10/16/2008): Changed to a single function in Node.code, and put
83006  // getVariant() in #if 0 block to prevent confusing Doxygen
83007 #if 0
83008 
83009  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
83011  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
83012 #endif
83013  /* */
83014 
83015 
83016 
83017 
83018  public:
83019  /* name Traversal Support Functions
83020  \brief Traversal support functions ... incomplete-documentation
83021 
83022  These functions have been made public as part of the design, but they are suggested for internal use
83023  or by particularly knowledgable users for specialized tools or applications.
83024  */
83025  /* */
83026 
83027  // DQ (11/26/2005): Support for visitor pattern mechanims
83028  // (inferior to ROSE traversal mechanism, experimental).
83032 
83033  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
83035  virtual void accept (ROSE_VisitorPattern & visitor) override;
83036 
83037  // DQ (12/26/2005): Support for traversal based on the memory pool
83040  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
83041 
83045 
83046  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
83047  // This traversal helps support internal tools that call static member functions.
83048  // note: this function operates on the memory pools.
83051  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
83052  /* */
83053 
83054 
83055  public:
83056  /* name Memory Allocation Functions
83057  \brief Memory allocations functions ... incomplete-documentation
83058 
83059  These functions have been made public as part of the design, but they are suggested for internal use
83060  or by particularly knowledgable users for specialized tools or applications.
83061  */
83062  /* */
83063 
83074  virtual bool isInMemoryPool() override;
83075 
83086  virtual void checkDataMemberPointersIfInMemoryPool() override;
83087 
83088  // DQ (4/30/2006): Modified to be a const function.
83103  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
83104 
83114  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
83115 
83127  virtual long getChildIndex( SgNode* childNode ) const override;
83128 
83129  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
83130  // comment here (changed to be a C style comment and not be a doxygen comment).
83131  /* \brief Constructor for use by AST File I/O Mechanism
83132 
83133  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
83134  which obtained via fast binary file I/O from disk.
83135  */
83136  // SgOmpDepobjUpdateClause( SgOmpDepobjUpdateClauseStorageClass& source );
83137 
83138 
83139 
83140 
83141 
83142  // JH (10/24/2005): methods added to support the ast file IO
83143  private:
83144 
83145  /* name AST Memory Allocation Support Functions
83146  \brief Memory allocations support....
83147 
83148  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
83149  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
83150  and support the AST File I/O Mechanism.
83151  */
83152  /* */
83153 
83154  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
83155  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
83156  that I use the same type everywhere, if any changes are made. THe second one declares the type
83157  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
83158  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
83159  a correspinding one in the AST_FILE_IO class!
83160  */
83161  // DQ (9/2/2015): This typedef is no longer used, we can't define the
83162  // comment here (changed to be a C style comment and not be a doxygen comment).
83163  /* \brief Typedef used for low level memory access.
83164  */
83165  // typedef unsigned char* TestType;
83166 
83167  // DQ (9/2/2015): This typedef is no longer used, we can't define the
83168  // comment here (changed to be a C style comment and not be a doxygen comment).
83169  /* \brief Typedef used to hold memory addresses as values.
83170  */
83171  // typedef unsigned long AddressType;
83172 
83173 
83174 
83175  // necessary, to have direct access to the p_freepointer and the private methods !
83177  friend class AST_FILE_IO;
83178 
83180  friend class SgOmpDepobjUpdateClauseStorageClass;
83181 
83183  friend class AstSpecificDataManagingClass;
83184 
83186  friend class AstSpecificDataManagingClassStorageClass;
83187 
83188  public:
83190  SgOmpDepobjUpdateClause( const SgOmpDepobjUpdateClauseStorageClass& source );
83191 
83192  // private: // JJW hack
83193  /*
83194  name AST Memory Allocation Support Variables
83195  Memory allocations support variables
83196 
83197  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
83198  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
83199  and support the AST File I/O Mechanism.
83200  */
83201  /* */
83202 
83203  public:
83204 
83205  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
83206  // to current node (so that it will work cleanly with build functions to specify patterns).
83207  // virtual SgNode* addRegExpAttribute();
83214 
83215 // *** COMMON CODE SECTION ENDS HERE ***
83216 
83217 
83218 // End of memberFunctionString
83219 // Start of memberFunctionString
83220 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
83221 
83222  // the generated cast function
83223  // friend ROSE_DLL_API SgOmpDepobjUpdateClause* isSgOmpDepobjUpdateClause ( SgNode* s );
83224 
83225  typedef SgOmpClause base_node_type;
83226 
83227 
83228 // End of memberFunctionString
83229 
83230  public:
83231  SgOmpClause::omp_depobj_modifier_enum get_modifier() const;
83232  void set_modifier(SgOmpClause::omp_depobj_modifier_enum modifier);
83233 
83234 
83235  public:
83236  virtual ~SgOmpDepobjUpdateClause();
83237 
83238 
83239  public:
83240  SgOmpDepobjUpdateClause(Sg_File_Info* startOfConstruct , SgOmpClause::omp_depobj_modifier_enum modifier =e_omp_depobj_modifier_unknown);
83241  SgOmpDepobjUpdateClause(SgOmpClause::omp_depobj_modifier_enum modifier);
83242 
83243  protected:
83244 // Start of memberFunctionString
83245 SgOmpClause::omp_depobj_modifier_enum p_modifier;
83246 
83247 // End of memberFunctionString
83248 
83249 
83250 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
83251 
83252 
83253  };
83254 #endif
83255 
83256 // postdeclarations for SgOmpDepobjUpdateClause
83257 
83258 /* #line 83259 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
83259 
83260 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
83261 
83262 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
83263 
83264 
83265 /* #line 83266 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
83266 
83267 
83268 
83269 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
83270 
83271 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
83272 // This code is automatically generated for each
83273 // terminal and non-terminal within the defined
83274 // grammar. There is a simple way to change the
83275 // code to fix bugs etc. See the ROSE README file
83276 // for directions.
83277 
83278 // tps: (02/22/2010): Adding DLL export requirements
83279 #include "rosedll.h"
83280 
83281 // predeclarations for SgOmpDestroyClause
83282 
83283 /* #line 83284 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
83284 
83285 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
83286 
83287 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
83288 
83289 #if 1
83290 // Class Definition for SgOmpDestroyClause
83291 class ROSE_DLL_API SgOmpDestroyClause : public SgOmpClause
83292  {
83293  public:
83294 
83295 
83296 /* #line 83297 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
83297 
83298  virtual SgNode* copy ( SgCopyHelp& help) const override;
83299 // Start of memberFunctionString
83300 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
83301 
83302 // *** COMMON CODE SECTION BEGINS HERE ***
83303 
83304  public:
83305 
83306  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
83307  // and not required which is required to match the other aspects of the copy mechanism code generation.
83308  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
83309  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
83310  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
83311  // virtual SgNode* copy ( const SgCopyHelp & help) const;
83312 
83314  virtual std::string class_name() const override;
83315 
83317  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
83318 
83320  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
83321  // static const VariantT static_variant = V_SgOmpDestroyClause;
83322  enum { static_variant = V_SgOmpDestroyClause };
83323 
83324  /* the generated cast function */
83326  ROSE_DLL_API friend SgOmpDestroyClause* isSgOmpDestroyClause( SgNode * s );
83327 
83329  ROSE_DLL_API friend const SgOmpDestroyClause* isSgOmpDestroyClause( const SgNode * s );
83330 
83331  // ******************************************
83332  // * Memory Pool / New / Delete
83333  // ******************************************
83334 
83335  public:
83337  static const unsigned pool_size; //
83339  static std::vector<unsigned char *> pools; //
83341  static SgOmpDestroyClause * next_node; //
83342 
83344  static unsigned long initializeStorageClassArray(SgOmpDestroyClauseStorageClass *); //
83345 
83347  static void clearMemoryPool(); //
83348  static void deleteMemoryPool(); //
83349 
83351  static void extendMemoryPoolForFileIO(); //
83352 
83354  static SgOmpDestroyClause * getPointerFromGlobalIndex(unsigned long); //
83356  static SgOmpDestroyClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
83357 
83359  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
83361  static void resetValidFreepointers(); //
83363  static unsigned long getNumberOfLastValidPointer(); //
83364 
83365 
83366 #if defined(INLINE_FUNCTIONS)
83367 
83368  inline void *operator new (size_t size);
83369 #else
83370 
83371  void *operator new (size_t size);
83372 #endif
83373 
83374  void operator delete (void* pointer, size_t size);
83375 
83376  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
83377  void operator delete (void* pointer)
83378  {
83379  // This is the generated delete operator...
83380  SgOmpDestroyClause::operator delete (pointer,sizeof(SgOmpDestroyClause));
83381  }
83382 
83384  static size_t numberOfNodes();
83385 
83387  static size_t memoryUsage();
83388 
83389  // End of scope which started in IR nodes specific code
83390  /* */
83391 
83392  /* name Internal Functions
83393  \brief Internal functions ... incomplete-documentation
83394 
83395  These functions have been made public as part of the design, but they are suggested for internal use
83396  or by particularly knowledgeable users for specialized tools or applications.
83397 
83398  \internal We could not make these private because they are required by user for special purposes. And
83399  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
83400 
83401  */
83402 
83403  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
83404  // overridden in every class by *generated* implementation
83406  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
83407  // MS: 06/28/02 container of names of variables or container indices
83408  // used used in the traversal to access AST successor nodes
83409  // overridden in every class by *generated* implementation
83412  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
83413 
83414  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
83415  // than all the vector copies. The implementation for these functions is generated for each class.
83417  virtual size_t get_numberOfTraversalSuccessors() override;
83419  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
83421  virtual size_t get_childIndex(SgNode *child) override;
83422 
83423 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
83424  // MS: 08/16/2002 method for generating RTI information
83426  virtual RTIReturnType roseRTI() override;
83427 #endif
83428  /* */
83429 
83430 
83431 
83432  /* name Deprecated Functions
83433  \brief Deprecated functions ... incomplete-documentation
83434 
83435  These functions have been deprecated from use.
83436  */
83437  /* */
83438 
83440  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
83441 
83442  // JJW (10/16/2008): Changed to a single function in Node.code, and put
83443  // getVariant() in #if 0 block to prevent confusing Doxygen
83444 #if 0
83445 
83446  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
83448  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
83449 #endif
83450  /* */
83451 
83452 
83453 
83454 
83455  public:
83456  /* name Traversal Support Functions
83457  \brief Traversal support functions ... incomplete-documentation
83458 
83459  These functions have been made public as part of the design, but they are suggested for internal use
83460  or by particularly knowledgable users for specialized tools or applications.
83461  */
83462  /* */
83463 
83464  // DQ (11/26/2005): Support for visitor pattern mechanims
83465  // (inferior to ROSE traversal mechanism, experimental).
83469 
83470  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
83472  virtual void accept (ROSE_VisitorPattern & visitor) override;
83473 
83474  // DQ (12/26/2005): Support for traversal based on the memory pool
83477  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
83478 
83482 
83483  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
83484  // This traversal helps support internal tools that call static member functions.
83485  // note: this function operates on the memory pools.
83488  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
83489  /* */
83490 
83491 
83492  public:
83493  /* name Memory Allocation Functions
83494  \brief Memory allocations functions ... incomplete-documentation
83495 
83496  These functions have been made public as part of the design, but they are suggested for internal use
83497  or by particularly knowledgable users for specialized tools or applications.
83498  */
83499  /* */
83500 
83511  virtual bool isInMemoryPool() override;
83512 
83523  virtual void checkDataMemberPointersIfInMemoryPool() override;
83524 
83525  // DQ (4/30/2006): Modified to be a const function.
83540  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
83541 
83551  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
83552 
83564  virtual long getChildIndex( SgNode* childNode ) const override;
83565 
83566  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
83567  // comment here (changed to be a C style comment and not be a doxygen comment).
83568  /* \brief Constructor for use by AST File I/O Mechanism
83569 
83570  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
83571  which obtained via fast binary file I/O from disk.
83572  */
83573  // SgOmpDestroyClause( SgOmpDestroyClauseStorageClass& source );
83574 
83575 
83576 
83577 
83578 
83579  // JH (10/24/2005): methods added to support the ast file IO
83580  private:
83581 
83582  /* name AST Memory Allocation Support Functions
83583  \brief Memory allocations support....
83584 
83585  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
83586  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
83587  and support the AST File I/O Mechanism.
83588  */
83589  /* */
83590 
83591  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
83592  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
83593  that I use the same type everywhere, if any changes are made. THe second one declares the type
83594  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
83595  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
83596  a correspinding one in the AST_FILE_IO class!
83597  */
83598  // DQ (9/2/2015): This typedef is no longer used, we can't define the
83599  // comment here (changed to be a C style comment and not be a doxygen comment).
83600  /* \brief Typedef used for low level memory access.
83601  */
83602  // typedef unsigned char* TestType;
83603 
83604  // DQ (9/2/2015): This typedef is no longer used, we can't define the
83605  // comment here (changed to be a C style comment and not be a doxygen comment).
83606  /* \brief Typedef used to hold memory addresses as values.
83607  */
83608  // typedef unsigned long AddressType;
83609 
83610 
83611 
83612  // necessary, to have direct access to the p_freepointer and the private methods !
83614  friend class AST_FILE_IO;
83615 
83617  friend class SgOmpDestroyClauseStorageClass;
83618 
83620  friend class AstSpecificDataManagingClass;
83621 
83623  friend class AstSpecificDataManagingClassStorageClass;
83624 
83625  public:
83627  SgOmpDestroyClause( const SgOmpDestroyClauseStorageClass& source );
83628 
83629  // private: // JJW hack
83630  /*
83631  name AST Memory Allocation Support Variables
83632  Memory allocations support variables
83633 
83634  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
83635  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
83636  and support the AST File I/O Mechanism.
83637  */
83638  /* */
83639 
83640  public:
83641 
83642  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
83643  // to current node (so that it will work cleanly with build functions to specify patterns).
83644  // virtual SgNode* addRegExpAttribute();
83651 
83652 // *** COMMON CODE SECTION ENDS HERE ***
83653 
83654 
83655 // End of memberFunctionString
83656 // Start of memberFunctionString
83657 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
83658 
83659  // the generated cast function
83660  // friend ROSE_DLL_API SgOmpDestroyClause* isSgOmpDestroyClause ( SgNode* s );
83661 
83662  typedef SgOmpClause base_node_type;
83663 
83664 
83665 // End of memberFunctionString
83666 
83667 
83668  public:
83669  virtual ~SgOmpDestroyClause();
83670 
83671 
83672  public:
83673  SgOmpDestroyClause(Sg_File_Info* startOfConstruct );
83674  SgOmpDestroyClause();
83675 
83676  protected:
83677 
83678 
83679 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
83680 
83681 
83682  };
83683 #endif
83684 
83685 // postdeclarations for SgOmpDestroyClause
83686 
83687 /* #line 83688 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
83688 
83689 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
83690 
83691 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
83692 
83693 
83694 /* #line 83695 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
83695 
83696 
83697 
83698 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
83699 
83700 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
83701 // This code is automatically generated for each
83702 // terminal and non-terminal within the defined
83703 // grammar. There is a simple way to change the
83704 // code to fix bugs etc. See the ROSE README file
83705 // for directions.
83706 
83707 // tps: (02/22/2010): Adding DLL export requirements
83708 #include "rosedll.h"
83709 
83710 // predeclarations for SgOmpCaptureClause
83711 
83712 /* #line 83713 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
83713 
83714 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
83715 
83716 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
83717 
83718 #if 1
83719 // Class Definition for SgOmpCaptureClause
83720 class ROSE_DLL_API SgOmpCaptureClause : public SgOmpClause
83721  {
83722  public:
83723 
83724 
83725 /* #line 83726 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
83726 
83727  virtual SgNode* copy ( SgCopyHelp& help) const override;
83728 // Start of memberFunctionString
83729 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
83730 
83731 // *** COMMON CODE SECTION BEGINS HERE ***
83732 
83733  public:
83734 
83735  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
83736  // and not required which is required to match the other aspects of the copy mechanism code generation.
83737  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
83738  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
83739  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
83740  // virtual SgNode* copy ( const SgCopyHelp & help) const;
83741 
83743  virtual std::string class_name() const override;
83744 
83746  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
83747 
83749  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
83750  // static const VariantT static_variant = V_SgOmpCaptureClause;
83751  enum { static_variant = V_SgOmpCaptureClause };
83752 
83753  /* the generated cast function */
83755  ROSE_DLL_API friend SgOmpCaptureClause* isSgOmpCaptureClause( SgNode * s );
83756 
83758  ROSE_DLL_API friend const SgOmpCaptureClause* isSgOmpCaptureClause( const SgNode * s );
83759 
83760  // ******************************************
83761  // * Memory Pool / New / Delete
83762  // ******************************************
83763 
83764  public:
83766  static const unsigned pool_size; //
83768  static std::vector<unsigned char *> pools; //
83770  static SgOmpCaptureClause * next_node; //
83771 
83773  static unsigned long initializeStorageClassArray(SgOmpCaptureClauseStorageClass *); //
83774 
83776  static void clearMemoryPool(); //
83777  static void deleteMemoryPool(); //
83778 
83780  static void extendMemoryPoolForFileIO(); //
83781 
83783  static SgOmpCaptureClause * getPointerFromGlobalIndex(unsigned long); //
83785  static SgOmpCaptureClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
83786 
83788  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
83790  static void resetValidFreepointers(); //
83792  static unsigned long getNumberOfLastValidPointer(); //
83793 
83794 
83795 #if defined(INLINE_FUNCTIONS)
83796 
83797  inline void *operator new (size_t size);
83798 #else
83799 
83800  void *operator new (size_t size);
83801 #endif
83802 
83803  void operator delete (void* pointer, size_t size);
83804 
83805  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
83806  void operator delete (void* pointer)
83807  {
83808  // This is the generated delete operator...
83809  SgOmpCaptureClause::operator delete (pointer,sizeof(SgOmpCaptureClause));
83810  }
83811 
83813  static size_t numberOfNodes();
83814 
83816  static size_t memoryUsage();
83817 
83818  // End of scope which started in IR nodes specific code
83819  /* */
83820 
83821  /* name Internal Functions
83822  \brief Internal functions ... incomplete-documentation
83823 
83824  These functions have been made public as part of the design, but they are suggested for internal use
83825  or by particularly knowledgeable users for specialized tools or applications.
83826 
83827  \internal We could not make these private because they are required by user for special purposes. And
83828  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
83829 
83830  */
83831 
83832  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
83833  // overridden in every class by *generated* implementation
83835  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
83836  // MS: 06/28/02 container of names of variables or container indices
83837  // used used in the traversal to access AST successor nodes
83838  // overridden in every class by *generated* implementation
83841  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
83842 
83843  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
83844  // than all the vector copies. The implementation for these functions is generated for each class.
83846  virtual size_t get_numberOfTraversalSuccessors() override;
83848  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
83850  virtual size_t get_childIndex(SgNode *child) override;
83851 
83852 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
83853  // MS: 08/16/2002 method for generating RTI information
83855  virtual RTIReturnType roseRTI() override;
83856 #endif
83857  /* */
83858 
83859 
83860 
83861  /* name Deprecated Functions
83862  \brief Deprecated functions ... incomplete-documentation
83863 
83864  These functions have been deprecated from use.
83865  */
83866  /* */
83867 
83869  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
83870 
83871  // JJW (10/16/2008): Changed to a single function in Node.code, and put
83872  // getVariant() in #if 0 block to prevent confusing Doxygen
83873 #if 0
83874 
83875  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
83877  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
83878 #endif
83879  /* */
83880 
83881 
83882 
83883 
83884  public:
83885  /* name Traversal Support Functions
83886  \brief Traversal support functions ... incomplete-documentation
83887 
83888  These functions have been made public as part of the design, but they are suggested for internal use
83889  or by particularly knowledgable users for specialized tools or applications.
83890  */
83891  /* */
83892 
83893  // DQ (11/26/2005): Support for visitor pattern mechanims
83894  // (inferior to ROSE traversal mechanism, experimental).
83898 
83899  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
83901  virtual void accept (ROSE_VisitorPattern & visitor) override;
83902 
83903  // DQ (12/26/2005): Support for traversal based on the memory pool
83906  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
83907 
83911 
83912  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
83913  // This traversal helps support internal tools that call static member functions.
83914  // note: this function operates on the memory pools.
83917  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
83918  /* */
83919 
83920 
83921  public:
83922  /* name Memory Allocation Functions
83923  \brief Memory allocations functions ... incomplete-documentation
83924 
83925  These functions have been made public as part of the design, but they are suggested for internal use
83926  or by particularly knowledgable users for specialized tools or applications.
83927  */
83928  /* */
83929 
83940  virtual bool isInMemoryPool() override;
83941 
83952  virtual void checkDataMemberPointersIfInMemoryPool() override;
83953 
83954  // DQ (4/30/2006): Modified to be a const function.
83969  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
83970 
83980  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
83981 
83993  virtual long getChildIndex( SgNode* childNode ) const override;
83994 
83995  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
83996  // comment here (changed to be a C style comment and not be a doxygen comment).
83997  /* \brief Constructor for use by AST File I/O Mechanism
83998 
83999  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
84000  which obtained via fast binary file I/O from disk.
84001  */
84002  // SgOmpCaptureClause( SgOmpCaptureClauseStorageClass& source );
84003 
84004 
84005 
84006 
84007 
84008  // JH (10/24/2005): methods added to support the ast file IO
84009  private:
84010 
84011  /* name AST Memory Allocation Support Functions
84012  \brief Memory allocations support....
84013 
84014  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
84015  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
84016  and support the AST File I/O Mechanism.
84017  */
84018  /* */
84019 
84020  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
84021  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
84022  that I use the same type everywhere, if any changes are made. THe second one declares the type
84023  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
84024  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
84025  a correspinding one in the AST_FILE_IO class!
84026  */
84027  // DQ (9/2/2015): This typedef is no longer used, we can't define the
84028  // comment here (changed to be a C style comment and not be a doxygen comment).
84029  /* \brief Typedef used for low level memory access.
84030  */
84031  // typedef unsigned char* TestType;
84032 
84033  // DQ (9/2/2015): This typedef is no longer used, we can't define the
84034  // comment here (changed to be a C style comment and not be a doxygen comment).
84035  /* \brief Typedef used to hold memory addresses as values.
84036  */
84037  // typedef unsigned long AddressType;
84038 
84039 
84040 
84041  // necessary, to have direct access to the p_freepointer and the private methods !
84043  friend class AST_FILE_IO;
84044 
84046  friend class SgOmpCaptureClauseStorageClass;
84047 
84049  friend class AstSpecificDataManagingClass;
84050 
84052  friend class AstSpecificDataManagingClassStorageClass;
84053 
84054  public:
84056  SgOmpCaptureClause( const SgOmpCaptureClauseStorageClass& source );
84057 
84058  // private: // JJW hack
84059  /*
84060  name AST Memory Allocation Support Variables
84061  Memory allocations support variables
84062 
84063  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
84064  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
84065  and support the AST File I/O Mechanism.
84066  */
84067  /* */
84068 
84069  public:
84070 
84071  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
84072  // to current node (so that it will work cleanly with build functions to specify patterns).
84073  // virtual SgNode* addRegExpAttribute();
84080 
84081 // *** COMMON CODE SECTION ENDS HERE ***
84082 
84083 
84084 // End of memberFunctionString
84085 // Start of memberFunctionString
84086 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
84087 
84088  // the generated cast function
84089  // friend ROSE_DLL_API SgOmpCaptureClause* isSgOmpCaptureClause ( SgNode* s );
84090 
84091  typedef SgOmpClause base_node_type;
84092 
84093 
84094 // End of memberFunctionString
84095 
84096 
84097  public:
84098  virtual ~SgOmpCaptureClause();
84099 
84100 
84101  public:
84102  SgOmpCaptureClause(Sg_File_Info* startOfConstruct );
84103  SgOmpCaptureClause();
84104 
84105  protected:
84106 
84107 
84108 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
84109 
84110 
84111  };
84112 #endif
84113 
84114 // postdeclarations for SgOmpCaptureClause
84115 
84116 /* #line 84117 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
84117 
84118 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
84119 
84120 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
84121 
84122 
84123 /* #line 84124 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
84124 
84125 
84126 
84127 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
84128 
84129 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
84130 // This code is automatically generated for each
84131 // terminal and non-terminal within the defined
84132 // grammar. There is a simple way to change the
84133 // code to fix bugs etc. See the ROSE README file
84134 // for directions.
84135 
84136 // tps: (02/22/2010): Adding DLL export requirements
84137 #include "rosedll.h"
84138 
84139 // predeclarations for SgOmpBeginClause
84140 
84141 /* #line 84142 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
84142 
84143 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
84144 
84145 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
84146 
84147 #if 1
84148 // Class Definition for SgOmpBeginClause
84149 class ROSE_DLL_API SgOmpBeginClause : public SgOmpClause
84150  {
84151  public:
84152 
84153 
84154 /* #line 84155 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
84155 
84156  virtual SgNode* copy ( SgCopyHelp& help) const override;
84157 // Start of memberFunctionString
84158 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
84159 
84160 // *** COMMON CODE SECTION BEGINS HERE ***
84161 
84162  public:
84163 
84164  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
84165  // and not required which is required to match the other aspects of the copy mechanism code generation.
84166  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
84167  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
84168  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
84169  // virtual SgNode* copy ( const SgCopyHelp & help) const;
84170 
84172  virtual std::string class_name() const override;
84173 
84175  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
84176 
84178  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
84179  // static const VariantT static_variant = V_SgOmpBeginClause;
84180  enum { static_variant = V_SgOmpBeginClause };
84181 
84182  /* the generated cast function */
84184  ROSE_DLL_API friend SgOmpBeginClause* isSgOmpBeginClause( SgNode * s );
84185 
84187  ROSE_DLL_API friend const SgOmpBeginClause* isSgOmpBeginClause( const SgNode * s );
84188 
84189  // ******************************************
84190  // * Memory Pool / New / Delete
84191  // ******************************************
84192 
84193  public:
84195  static const unsigned pool_size; //
84197  static std::vector<unsigned char *> pools; //
84199  static SgOmpBeginClause * next_node; //
84200 
84202  static unsigned long initializeStorageClassArray(SgOmpBeginClauseStorageClass *); //
84203 
84205  static void clearMemoryPool(); //
84206  static void deleteMemoryPool(); //
84207 
84209  static void extendMemoryPoolForFileIO(); //
84210 
84212  static SgOmpBeginClause * getPointerFromGlobalIndex(unsigned long); //
84214  static SgOmpBeginClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
84215 
84217  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
84219  static void resetValidFreepointers(); //
84221  static unsigned long getNumberOfLastValidPointer(); //
84222 
84223 
84224 #if defined(INLINE_FUNCTIONS)
84225 
84226  inline void *operator new (size_t size);
84227 #else
84228 
84229  void *operator new (size_t size);
84230 #endif
84231 
84232  void operator delete (void* pointer, size_t size);
84233 
84234  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
84235  void operator delete (void* pointer)
84236  {
84237  // This is the generated delete operator...
84238  SgOmpBeginClause::operator delete (pointer,sizeof(SgOmpBeginClause));
84239  }
84240 
84242  static size_t numberOfNodes();
84243 
84245  static size_t memoryUsage();
84246 
84247  // End of scope which started in IR nodes specific code
84248  /* */
84249 
84250  /* name Internal Functions
84251  \brief Internal functions ... incomplete-documentation
84252 
84253  These functions have been made public as part of the design, but they are suggested for internal use
84254  or by particularly knowledgeable users for specialized tools or applications.
84255 
84256  \internal We could not make these private because they are required by user for special purposes. And
84257  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
84258 
84259  */
84260 
84261  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
84262  // overridden in every class by *generated* implementation
84264  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
84265  // MS: 06/28/02 container of names of variables or container indices
84266  // used used in the traversal to access AST successor nodes
84267  // overridden in every class by *generated* implementation
84270  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
84271 
84272  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
84273  // than all the vector copies. The implementation for these functions is generated for each class.
84275  virtual size_t get_numberOfTraversalSuccessors() override;
84277  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
84279  virtual size_t get_childIndex(SgNode *child) override;
84280 
84281 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
84282  // MS: 08/16/2002 method for generating RTI information
84284  virtual RTIReturnType roseRTI() override;
84285 #endif
84286  /* */
84287 
84288 
84289 
84290  /* name Deprecated Functions
84291  \brief Deprecated functions ... incomplete-documentation
84292 
84293  These functions have been deprecated from use.
84294  */
84295  /* */
84296 
84298  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
84299 
84300  // JJW (10/16/2008): Changed to a single function in Node.code, and put
84301  // getVariant() in #if 0 block to prevent confusing Doxygen
84302 #if 0
84303 
84304  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
84306  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
84307 #endif
84308  /* */
84309 
84310 
84311 
84312 
84313  public:
84314  /* name Traversal Support Functions
84315  \brief Traversal support functions ... incomplete-documentation
84316 
84317  These functions have been made public as part of the design, but they are suggested for internal use
84318  or by particularly knowledgable users for specialized tools or applications.
84319  */
84320  /* */
84321 
84322  // DQ (11/26/2005): Support for visitor pattern mechanims
84323  // (inferior to ROSE traversal mechanism, experimental).
84327 
84328  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
84330  virtual void accept (ROSE_VisitorPattern & visitor) override;
84331 
84332  // DQ (12/26/2005): Support for traversal based on the memory pool
84335  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
84336 
84340 
84341  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
84342  // This traversal helps support internal tools that call static member functions.
84343  // note: this function operates on the memory pools.
84346  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
84347  /* */
84348 
84349 
84350  public:
84351  /* name Memory Allocation Functions
84352  \brief Memory allocations functions ... incomplete-documentation
84353 
84354  These functions have been made public as part of the design, but they are suggested for internal use
84355  or by particularly knowledgable users for specialized tools or applications.
84356  */
84357  /* */
84358 
84369  virtual bool isInMemoryPool() override;
84370 
84381  virtual void checkDataMemberPointersIfInMemoryPool() override;
84382 
84383  // DQ (4/30/2006): Modified to be a const function.
84398  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
84399 
84409  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
84410 
84422  virtual long getChildIndex( SgNode* childNode ) const override;
84423 
84424  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
84425  // comment here (changed to be a C style comment and not be a doxygen comment).
84426  /* \brief Constructor for use by AST File I/O Mechanism
84427 
84428  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
84429  which obtained via fast binary file I/O from disk.
84430  */
84431  // SgOmpBeginClause( SgOmpBeginClauseStorageClass& source );
84432 
84433 
84434 
84435 
84436 
84437  // JH (10/24/2005): methods added to support the ast file IO
84438  private:
84439 
84440  /* name AST Memory Allocation Support Functions
84441  \brief Memory allocations support....
84442 
84443  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
84444  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
84445  and support the AST File I/O Mechanism.
84446  */
84447  /* */
84448 
84449  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
84450  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
84451  that I use the same type everywhere, if any changes are made. THe second one declares the type
84452  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
84453  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
84454  a correspinding one in the AST_FILE_IO class!
84455  */
84456  // DQ (9/2/2015): This typedef is no longer used, we can't define the
84457  // comment here (changed to be a C style comment and not be a doxygen comment).
84458  /* \brief Typedef used for low level memory access.
84459  */
84460  // typedef unsigned char* TestType;
84461 
84462  // DQ (9/2/2015): This typedef is no longer used, we can't define the
84463  // comment here (changed to be a C style comment and not be a doxygen comment).
84464  /* \brief Typedef used to hold memory addresses as values.
84465  */
84466  // typedef unsigned long AddressType;
84467 
84468 
84469 
84470  // necessary, to have direct access to the p_freepointer and the private methods !
84472  friend class AST_FILE_IO;
84473 
84475  friend class SgOmpBeginClauseStorageClass;
84476 
84478  friend class AstSpecificDataManagingClass;
84479 
84481  friend class AstSpecificDataManagingClassStorageClass;
84482 
84483  public:
84485  SgOmpBeginClause( const SgOmpBeginClauseStorageClass& source );
84486 
84487  // private: // JJW hack
84488  /*
84489  name AST Memory Allocation Support Variables
84490  Memory allocations support variables
84491 
84492  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
84493  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
84494  and support the AST File I/O Mechanism.
84495  */
84496  /* */
84497 
84498  public:
84499 
84500  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
84501  // to current node (so that it will work cleanly with build functions to specify patterns).
84502  // virtual SgNode* addRegExpAttribute();
84509 
84510 // *** COMMON CODE SECTION ENDS HERE ***
84511 
84512 
84513 // End of memberFunctionString
84514 // Start of memberFunctionString
84515 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
84516 
84517  // the generated cast function
84518  // friend ROSE_DLL_API SgOmpBeginClause* isSgOmpBeginClause ( SgNode* s );
84519 
84520  typedef SgOmpClause base_node_type;
84521 
84522 
84523 // End of memberFunctionString
84524 
84525 
84526  public:
84527  virtual ~SgOmpBeginClause();
84528 
84529 
84530  public:
84531  SgOmpBeginClause(Sg_File_Info* startOfConstruct );
84532  SgOmpBeginClause();
84533 
84534  protected:
84535 
84536 
84537 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
84538 
84539 
84540  };
84541 #endif
84542 
84543 // postdeclarations for SgOmpBeginClause
84544 
84545 /* #line 84546 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
84546 
84547 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
84548 
84549 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
84550 
84551 
84552 /* #line 84553 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
84553 
84554 
84555 
84556 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
84557 
84558 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
84559 // This code is automatically generated for each
84560 // terminal and non-terminal within the defined
84561 // grammar. There is a simple way to change the
84562 // code to fix bugs etc. See the ROSE README file
84563 // for directions.
84564 
84565 // tps: (02/22/2010): Adding DLL export requirements
84566 #include "rosedll.h"
84567 
84568 // predeclarations for SgOmpEndClause
84569 
84570 /* #line 84571 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
84571 
84572 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
84573 
84574 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
84575 
84576 #if 1
84577 // Class Definition for SgOmpEndClause
84578 class ROSE_DLL_API SgOmpEndClause : public SgOmpClause
84579  {
84580  public:
84581 
84582 
84583 /* #line 84584 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
84584 
84585  virtual SgNode* copy ( SgCopyHelp& help) const override;
84586 // Start of memberFunctionString
84587 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
84588 
84589 // *** COMMON CODE SECTION BEGINS HERE ***
84590 
84591  public:
84592 
84593  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
84594  // and not required which is required to match the other aspects of the copy mechanism code generation.
84595  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
84596  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
84597  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
84598  // virtual SgNode* copy ( const SgCopyHelp & help) const;
84599 
84601  virtual std::string class_name() const override;
84602 
84604  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
84605 
84607  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
84608  // static const VariantT static_variant = V_SgOmpEndClause;
84609  enum { static_variant = V_SgOmpEndClause };
84610 
84611  /* the generated cast function */
84613  ROSE_DLL_API friend SgOmpEndClause* isSgOmpEndClause( SgNode * s );
84614 
84616  ROSE_DLL_API friend const SgOmpEndClause* isSgOmpEndClause( const SgNode * s );
84617 
84618  // ******************************************
84619  // * Memory Pool / New / Delete
84620  // ******************************************
84621 
84622  public:
84624  static const unsigned pool_size; //
84626  static std::vector<unsigned char *> pools; //
84628  static SgOmpEndClause * next_node; //
84629 
84631  static unsigned long initializeStorageClassArray(SgOmpEndClauseStorageClass *); //
84632 
84634  static void clearMemoryPool(); //
84635  static void deleteMemoryPool(); //
84636 
84638  static void extendMemoryPoolForFileIO(); //
84639 
84641  static SgOmpEndClause * getPointerFromGlobalIndex(unsigned long); //
84643  static SgOmpEndClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
84644 
84646  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
84648  static void resetValidFreepointers(); //
84650  static unsigned long getNumberOfLastValidPointer(); //
84651 
84652 
84653 #if defined(INLINE_FUNCTIONS)
84654 
84655  inline void *operator new (size_t size);
84656 #else
84657 
84658  void *operator new (size_t size);
84659 #endif
84660 
84661  void operator delete (void* pointer, size_t size);
84662 
84663  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
84664  void operator delete (void* pointer)
84665  {
84666  // This is the generated delete operator...
84667  SgOmpEndClause::operator delete (pointer,sizeof(SgOmpEndClause));
84668  }
84669 
84671  static size_t numberOfNodes();
84672 
84674  static size_t memoryUsage();
84675 
84676  // End of scope which started in IR nodes specific code
84677  /* */
84678 
84679  /* name Internal Functions
84680  \brief Internal functions ... incomplete-documentation
84681 
84682  These functions have been made public as part of the design, but they are suggested for internal use
84683  or by particularly knowledgeable users for specialized tools or applications.
84684 
84685  \internal We could not make these private because they are required by user for special purposes. And
84686  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
84687 
84688  */
84689 
84690  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
84691  // overridden in every class by *generated* implementation
84693  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
84694  // MS: 06/28/02 container of names of variables or container indices
84695  // used used in the traversal to access AST successor nodes
84696  // overridden in every class by *generated* implementation
84699  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
84700 
84701  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
84702  // than all the vector copies. The implementation for these functions is generated for each class.
84704  virtual size_t get_numberOfTraversalSuccessors() override;
84706  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
84708  virtual size_t get_childIndex(SgNode *child) override;
84709 
84710 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
84711  // MS: 08/16/2002 method for generating RTI information
84713  virtual RTIReturnType roseRTI() override;
84714 #endif
84715  /* */
84716 
84717 
84718 
84719  /* name Deprecated Functions
84720  \brief Deprecated functions ... incomplete-documentation
84721 
84722  These functions have been deprecated from use.
84723  */
84724  /* */
84725 
84727  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
84728 
84729  // JJW (10/16/2008): Changed to a single function in Node.code, and put
84730  // getVariant() in #if 0 block to prevent confusing Doxygen
84731 #if 0
84732 
84733  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
84735  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
84736 #endif
84737  /* */
84738 
84739 
84740 
84741 
84742  public:
84743  /* name Traversal Support Functions
84744  \brief Traversal support functions ... incomplete-documentation
84745 
84746  These functions have been made public as part of the design, but they are suggested for internal use
84747  or by particularly knowledgable users for specialized tools or applications.
84748  */
84749  /* */
84750 
84751  // DQ (11/26/2005): Support for visitor pattern mechanims
84752  // (inferior to ROSE traversal mechanism, experimental).
84756 
84757  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
84759  virtual void accept (ROSE_VisitorPattern & visitor) override;
84760 
84761  // DQ (12/26/2005): Support for traversal based on the memory pool
84764  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
84765 
84769 
84770  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
84771  // This traversal helps support internal tools that call static member functions.
84772  // note: this function operates on the memory pools.
84775  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
84776  /* */
84777 
84778 
84779  public:
84780  /* name Memory Allocation Functions
84781  \brief Memory allocations functions ... incomplete-documentation
84782 
84783  These functions have been made public as part of the design, but they are suggested for internal use
84784  or by particularly knowledgable users for specialized tools or applications.
84785  */
84786  /* */
84787 
84798  virtual bool isInMemoryPool() override;
84799 
84810  virtual void checkDataMemberPointersIfInMemoryPool() override;
84811 
84812  // DQ (4/30/2006): Modified to be a const function.
84827  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
84828 
84838  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
84839 
84851  virtual long getChildIndex( SgNode* childNode ) const override;
84852 
84853  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
84854  // comment here (changed to be a C style comment and not be a doxygen comment).
84855  /* \brief Constructor for use by AST File I/O Mechanism
84856 
84857  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
84858  which obtained via fast binary file I/O from disk.
84859  */
84860  // SgOmpEndClause( SgOmpEndClauseStorageClass& source );
84861 
84862 
84863 
84864 
84865 
84866  // JH (10/24/2005): methods added to support the ast file IO
84867  private:
84868 
84869  /* name AST Memory Allocation Support Functions
84870  \brief Memory allocations support....
84871 
84872  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
84873  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
84874  and support the AST File I/O Mechanism.
84875  */
84876  /* */
84877 
84878  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
84879  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
84880  that I use the same type everywhere, if any changes are made. THe second one declares the type
84881  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
84882  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
84883  a correspinding one in the AST_FILE_IO class!
84884  */
84885  // DQ (9/2/2015): This typedef is no longer used, we can't define the
84886  // comment here (changed to be a C style comment and not be a doxygen comment).
84887  /* \brief Typedef used for low level memory access.
84888  */
84889  // typedef unsigned char* TestType;
84890 
84891  // DQ (9/2/2015): This typedef is no longer used, we can't define the
84892  // comment here (changed to be a C style comment and not be a doxygen comment).
84893  /* \brief Typedef used to hold memory addresses as values.
84894  */
84895  // typedef unsigned long AddressType;
84896 
84897 
84898 
84899  // necessary, to have direct access to the p_freepointer and the private methods !
84901  friend class AST_FILE_IO;
84902 
84904  friend class SgOmpEndClauseStorageClass;
84905 
84907  friend class AstSpecificDataManagingClass;
84908 
84910  friend class AstSpecificDataManagingClassStorageClass;
84911 
84912  public:
84914  SgOmpEndClause( const SgOmpEndClauseStorageClass& source );
84915 
84916  // private: // JJW hack
84917  /*
84918  name AST Memory Allocation Support Variables
84919  Memory allocations support variables
84920 
84921  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
84922  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
84923  and support the AST File I/O Mechanism.
84924  */
84925  /* */
84926 
84927  public:
84928 
84929  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
84930  // to current node (so that it will work cleanly with build functions to specify patterns).
84931  // virtual SgNode* addRegExpAttribute();
84938 
84939 // *** COMMON CODE SECTION ENDS HERE ***
84940 
84941 
84942 // End of memberFunctionString
84943 // Start of memberFunctionString
84944 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
84945 
84946  // the generated cast function
84947  // friend ROSE_DLL_API SgOmpEndClause* isSgOmpEndClause ( SgNode* s );
84948 
84949  typedef SgOmpClause base_node_type;
84950 
84951 
84952 // End of memberFunctionString
84953 
84954 
84955  public:
84956  virtual ~SgOmpEndClause();
84957 
84958 
84959  public:
84960  SgOmpEndClause(Sg_File_Info* startOfConstruct );
84961  SgOmpEndClause();
84962 
84963  protected:
84964 
84965 
84966 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
84967 
84968 
84969  };
84970 #endif
84971 
84972 // postdeclarations for SgOmpEndClause
84973 
84974 /* #line 84975 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
84975 
84976 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
84977 
84978 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
84979 
84980 
84981 /* #line 84982 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
84982 
84983 
84984 
84985 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
84986 
84987 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
84988 // This code is automatically generated for each
84989 // terminal and non-terminal within the defined
84990 // grammar. There is a simple way to change the
84991 // code to fix bugs etc. See the ROSE README file
84992 // for directions.
84993 
84994 // tps: (02/22/2010): Adding DLL export requirements
84995 #include "rosedll.h"
84996 
84997 // predeclarations for SgOmpUntiedClause
84998 
84999 /* #line 85000 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
85000 
85001 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
85002 
85003 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
85004 
85005 #if 1
85006 // Class Definition for SgOmpUntiedClause
85007 class ROSE_DLL_API SgOmpUntiedClause : public SgOmpClause
85008  {
85009  public:
85010 
85011 
85012 /* #line 85013 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
85013 
85014  virtual SgNode* copy ( SgCopyHelp& help) const override;
85015 // Start of memberFunctionString
85016 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
85017 
85018 // *** COMMON CODE SECTION BEGINS HERE ***
85019 
85020  public:
85021 
85022  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
85023  // and not required which is required to match the other aspects of the copy mechanism code generation.
85024  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
85025  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
85026  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
85027  // virtual SgNode* copy ( const SgCopyHelp & help) const;
85028 
85030  virtual std::string class_name() const override;
85031 
85033  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
85034 
85036  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
85037  // static const VariantT static_variant = V_SgOmpUntiedClause;
85038  enum { static_variant = V_SgOmpUntiedClause };
85039 
85040  /* the generated cast function */
85042  ROSE_DLL_API friend SgOmpUntiedClause* isSgOmpUntiedClause( SgNode * s );
85043 
85045  ROSE_DLL_API friend const SgOmpUntiedClause* isSgOmpUntiedClause( const SgNode * s );
85046 
85047  // ******************************************
85048  // * Memory Pool / New / Delete
85049  // ******************************************
85050 
85051  public:
85053  static const unsigned pool_size; //
85055  static std::vector<unsigned char *> pools; //
85057  static SgOmpUntiedClause * next_node; //
85058 
85060  static unsigned long initializeStorageClassArray(SgOmpUntiedClauseStorageClass *); //
85061 
85063  static void clearMemoryPool(); //
85064  static void deleteMemoryPool(); //
85065 
85067  static void extendMemoryPoolForFileIO(); //
85068 
85070  static SgOmpUntiedClause * getPointerFromGlobalIndex(unsigned long); //
85072  static SgOmpUntiedClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
85073 
85075  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
85077  static void resetValidFreepointers(); //
85079  static unsigned long getNumberOfLastValidPointer(); //
85080 
85081 
85082 #if defined(INLINE_FUNCTIONS)
85083 
85084  inline void *operator new (size_t size);
85085 #else
85086 
85087  void *operator new (size_t size);
85088 #endif
85089 
85090  void operator delete (void* pointer, size_t size);
85091 
85092  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
85093  void operator delete (void* pointer)
85094  {
85095  // This is the generated delete operator...
85096  SgOmpUntiedClause::operator delete (pointer,sizeof(SgOmpUntiedClause));
85097  }
85098 
85100  static size_t numberOfNodes();
85101 
85103  static size_t memoryUsage();
85104 
85105  // End of scope which started in IR nodes specific code
85106  /* */
85107 
85108  /* name Internal Functions
85109  \brief Internal functions ... incomplete-documentation
85110 
85111  These functions have been made public as part of the design, but they are suggested for internal use
85112  or by particularly knowledgeable users for specialized tools or applications.
85113 
85114  \internal We could not make these private because they are required by user for special purposes. And
85115  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
85116 
85117  */
85118 
85119  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
85120  // overridden in every class by *generated* implementation
85122  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
85123  // MS: 06/28/02 container of names of variables or container indices
85124  // used used in the traversal to access AST successor nodes
85125  // overridden in every class by *generated* implementation
85128  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
85129 
85130  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
85131  // than all the vector copies. The implementation for these functions is generated for each class.
85133  virtual size_t get_numberOfTraversalSuccessors() override;
85135  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
85137  virtual size_t get_childIndex(SgNode *child) override;
85138 
85139 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
85140  // MS: 08/16/2002 method for generating RTI information
85142  virtual RTIReturnType roseRTI() override;
85143 #endif
85144  /* */
85145 
85146 
85147 
85148  /* name Deprecated Functions
85149  \brief Deprecated functions ... incomplete-documentation
85150 
85151  These functions have been deprecated from use.
85152  */
85153  /* */
85154 
85156  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
85157 
85158  // JJW (10/16/2008): Changed to a single function in Node.code, and put
85159  // getVariant() in #if 0 block to prevent confusing Doxygen
85160 #if 0
85161 
85162  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
85164  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
85165 #endif
85166  /* */
85167 
85168 
85169 
85170 
85171  public:
85172  /* name Traversal Support Functions
85173  \brief Traversal support functions ... incomplete-documentation
85174 
85175  These functions have been made public as part of the design, but they are suggested for internal use
85176  or by particularly knowledgable users for specialized tools or applications.
85177  */
85178  /* */
85179 
85180  // DQ (11/26/2005): Support for visitor pattern mechanims
85181  // (inferior to ROSE traversal mechanism, experimental).
85185 
85186  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
85188  virtual void accept (ROSE_VisitorPattern & visitor) override;
85189 
85190  // DQ (12/26/2005): Support for traversal based on the memory pool
85193  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
85194 
85198 
85199  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
85200  // This traversal helps support internal tools that call static member functions.
85201  // note: this function operates on the memory pools.
85204  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
85205  /* */
85206 
85207 
85208  public:
85209  /* name Memory Allocation Functions
85210  \brief Memory allocations functions ... incomplete-documentation
85211 
85212  These functions have been made public as part of the design, but they are suggested for internal use
85213  or by particularly knowledgable users for specialized tools or applications.
85214  */
85215  /* */
85216 
85227  virtual bool isInMemoryPool() override;
85228 
85239  virtual void checkDataMemberPointersIfInMemoryPool() override;
85240 
85241  // DQ (4/30/2006): Modified to be a const function.
85256  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
85257 
85267  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
85268 
85280  virtual long getChildIndex( SgNode* childNode ) const override;
85281 
85282  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
85283  // comment here (changed to be a C style comment and not be a doxygen comment).
85284  /* \brief Constructor for use by AST File I/O Mechanism
85285 
85286  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
85287  which obtained via fast binary file I/O from disk.
85288  */
85289  // SgOmpUntiedClause( SgOmpUntiedClauseStorageClass& source );
85290 
85291 
85292 
85293 
85294 
85295  // JH (10/24/2005): methods added to support the ast file IO
85296  private:
85297 
85298  /* name AST Memory Allocation Support Functions
85299  \brief Memory allocations support....
85300 
85301  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
85302  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
85303  and support the AST File I/O Mechanism.
85304  */
85305  /* */
85306 
85307  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
85308  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
85309  that I use the same type everywhere, if any changes are made. THe second one declares the type
85310  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
85311  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
85312  a correspinding one in the AST_FILE_IO class!
85313  */
85314  // DQ (9/2/2015): This typedef is no longer used, we can't define the
85315  // comment here (changed to be a C style comment and not be a doxygen comment).
85316  /* \brief Typedef used for low level memory access.
85317  */
85318  // typedef unsigned char* TestType;
85319 
85320  // DQ (9/2/2015): This typedef is no longer used, we can't define the
85321  // comment here (changed to be a C style comment and not be a doxygen comment).
85322  /* \brief Typedef used to hold memory addresses as values.
85323  */
85324  // typedef unsigned long AddressType;
85325 
85326 
85327 
85328  // necessary, to have direct access to the p_freepointer and the private methods !
85330  friend class AST_FILE_IO;
85331 
85333  friend class SgOmpUntiedClauseStorageClass;
85334 
85336  friend class AstSpecificDataManagingClass;
85337 
85339  friend class AstSpecificDataManagingClassStorageClass;
85340 
85341  public:
85343  SgOmpUntiedClause( const SgOmpUntiedClauseStorageClass& source );
85344 
85345  // private: // JJW hack
85346  /*
85347  name AST Memory Allocation Support Variables
85348  Memory allocations support variables
85349 
85350  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
85351  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
85352  and support the AST File I/O Mechanism.
85353  */
85354  /* */
85355 
85356  public:
85357 
85358  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
85359  // to current node (so that it will work cleanly with build functions to specify patterns).
85360  // virtual SgNode* addRegExpAttribute();
85367 
85368 // *** COMMON CODE SECTION ENDS HERE ***
85369 
85370 
85371 // End of memberFunctionString
85372 // Start of memberFunctionString
85373 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
85374 
85375  // the generated cast function
85376  // friend ROSE_DLL_API SgOmpUntiedClause* isSgOmpUntiedClause ( SgNode* s );
85377 
85378  typedef SgOmpClause base_node_type;
85379 
85380 
85381 // End of memberFunctionString
85382 
85383 
85384  public:
85385  virtual ~SgOmpUntiedClause();
85386 
85387 
85388  public:
85389  SgOmpUntiedClause(Sg_File_Info* startOfConstruct );
85390  SgOmpUntiedClause();
85391 
85392  protected:
85393 
85394 
85395 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
85396 
85397 
85398  };
85399 #endif
85400 
85401 // postdeclarations for SgOmpUntiedClause
85402 
85403 /* #line 85404 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
85404 
85405 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
85406 
85407 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
85408 
85409 
85410 /* #line 85411 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
85411 
85412 
85413 
85414 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
85415 
85416 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
85417 // This code is automatically generated for each
85418 // terminal and non-terminal within the defined
85419 // grammar. There is a simple way to change the
85420 // code to fix bugs etc. See the ROSE README file
85421 // for directions.
85422 
85423 // tps: (02/22/2010): Adding DLL export requirements
85424 #include "rosedll.h"
85425 
85426 // predeclarations for SgOmpSeqCstClause
85427 
85428 /* #line 85429 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
85429 
85430 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
85431 
85432 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
85433 
85434 #if 1
85435 // Class Definition for SgOmpSeqCstClause
85436 class ROSE_DLL_API SgOmpSeqCstClause : public SgOmpClause
85437  {
85438  public:
85439 
85440 
85441 /* #line 85442 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
85442 
85443  virtual SgNode* copy ( SgCopyHelp& help) const override;
85444 // Start of memberFunctionString
85445 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
85446 
85447 // *** COMMON CODE SECTION BEGINS HERE ***
85448 
85449  public:
85450 
85451  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
85452  // and not required which is required to match the other aspects of the copy mechanism code generation.
85453  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
85454  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
85455  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
85456  // virtual SgNode* copy ( const SgCopyHelp & help) const;
85457 
85459  virtual std::string class_name() const override;
85460 
85462  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
85463 
85465  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
85466  // static const VariantT static_variant = V_SgOmpSeqCstClause;
85467  enum { static_variant = V_SgOmpSeqCstClause };
85468 
85469  /* the generated cast function */
85471  ROSE_DLL_API friend SgOmpSeqCstClause* isSgOmpSeqCstClause( SgNode * s );
85472 
85474  ROSE_DLL_API friend const SgOmpSeqCstClause* isSgOmpSeqCstClause( const SgNode * s );
85475 
85476  // ******************************************
85477  // * Memory Pool / New / Delete
85478  // ******************************************
85479 
85480  public:
85482  static const unsigned pool_size; //
85484  static std::vector<unsigned char *> pools; //
85486  static SgOmpSeqCstClause * next_node; //
85487 
85489  static unsigned long initializeStorageClassArray(SgOmpSeqCstClauseStorageClass *); //
85490 
85492  static void clearMemoryPool(); //
85493  static void deleteMemoryPool(); //
85494 
85496  static void extendMemoryPoolForFileIO(); //
85497 
85499  static SgOmpSeqCstClause * getPointerFromGlobalIndex(unsigned long); //
85501  static SgOmpSeqCstClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
85502 
85504  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
85506  static void resetValidFreepointers(); //
85508  static unsigned long getNumberOfLastValidPointer(); //
85509 
85510 
85511 #if defined(INLINE_FUNCTIONS)
85512 
85513  inline void *operator new (size_t size);
85514 #else
85515 
85516  void *operator new (size_t size);
85517 #endif
85518 
85519  void operator delete (void* pointer, size_t size);
85520 
85521  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
85522  void operator delete (void* pointer)
85523  {
85524  // This is the generated delete operator...
85525  SgOmpSeqCstClause::operator delete (pointer,sizeof(SgOmpSeqCstClause));
85526  }
85527 
85529  static size_t numberOfNodes();
85530 
85532  static size_t memoryUsage();
85533 
85534  // End of scope which started in IR nodes specific code
85535  /* */
85536 
85537  /* name Internal Functions
85538  \brief Internal functions ... incomplete-documentation
85539 
85540  These functions have been made public as part of the design, but they are suggested for internal use
85541  or by particularly knowledgeable users for specialized tools or applications.
85542 
85543  \internal We could not make these private because they are required by user for special purposes. And
85544  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
85545 
85546  */
85547 
85548  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
85549  // overridden in every class by *generated* implementation
85551  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
85552  // MS: 06/28/02 container of names of variables or container indices
85553  // used used in the traversal to access AST successor nodes
85554  // overridden in every class by *generated* implementation
85557  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
85558 
85559  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
85560  // than all the vector copies. The implementation for these functions is generated for each class.
85562  virtual size_t get_numberOfTraversalSuccessors() override;
85564  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
85566  virtual size_t get_childIndex(SgNode *child) override;
85567 
85568 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
85569  // MS: 08/16/2002 method for generating RTI information
85571  virtual RTIReturnType roseRTI() override;
85572 #endif
85573  /* */
85574 
85575 
85576 
85577  /* name Deprecated Functions
85578  \brief Deprecated functions ... incomplete-documentation
85579 
85580  These functions have been deprecated from use.
85581  */
85582  /* */
85583 
85585  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
85586 
85587  // JJW (10/16/2008): Changed to a single function in Node.code, and put
85588  // getVariant() in #if 0 block to prevent confusing Doxygen
85589 #if 0
85590 
85591  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
85593  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
85594 #endif
85595  /* */
85596 
85597 
85598 
85599 
85600  public:
85601  /* name Traversal Support Functions
85602  \brief Traversal support functions ... incomplete-documentation
85603 
85604  These functions have been made public as part of the design, but they are suggested for internal use
85605  or by particularly knowledgable users for specialized tools or applications.
85606  */
85607  /* */
85608 
85609  // DQ (11/26/2005): Support for visitor pattern mechanims
85610  // (inferior to ROSE traversal mechanism, experimental).
85614 
85615  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
85617  virtual void accept (ROSE_VisitorPattern & visitor) override;
85618 
85619  // DQ (12/26/2005): Support for traversal based on the memory pool
85622  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
85623 
85627 
85628  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
85629  // This traversal helps support internal tools that call static member functions.
85630  // note: this function operates on the memory pools.
85633  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
85634  /* */
85635 
85636 
85637  public:
85638  /* name Memory Allocation Functions
85639  \brief Memory allocations functions ... incomplete-documentation
85640 
85641  These functions have been made public as part of the design, but they are suggested for internal use
85642  or by particularly knowledgable users for specialized tools or applications.
85643  */
85644  /* */
85645 
85656  virtual bool isInMemoryPool() override;
85657 
85668  virtual void checkDataMemberPointersIfInMemoryPool() override;
85669 
85670  // DQ (4/30/2006): Modified to be a const function.
85685  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
85686 
85696  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
85697 
85709  virtual long getChildIndex( SgNode* childNode ) const override;
85710 
85711  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
85712  // comment here (changed to be a C style comment and not be a doxygen comment).
85713  /* \brief Constructor for use by AST File I/O Mechanism
85714 
85715  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
85716  which obtained via fast binary file I/O from disk.
85717  */
85718  // SgOmpSeqCstClause( SgOmpSeqCstClauseStorageClass& source );
85719 
85720 
85721 
85722 
85723 
85724  // JH (10/24/2005): methods added to support the ast file IO
85725  private:
85726 
85727  /* name AST Memory Allocation Support Functions
85728  \brief Memory allocations support....
85729 
85730  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
85731  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
85732  and support the AST File I/O Mechanism.
85733  */
85734  /* */
85735 
85736  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
85737  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
85738  that I use the same type everywhere, if any changes are made. THe second one declares the type
85739  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
85740  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
85741  a correspinding one in the AST_FILE_IO class!
85742  */
85743  // DQ (9/2/2015): This typedef is no longer used, we can't define the
85744  // comment here (changed to be a C style comment and not be a doxygen comment).
85745  /* \brief Typedef used for low level memory access.
85746  */
85747  // typedef unsigned char* TestType;
85748 
85749  // DQ (9/2/2015): This typedef is no longer used, we can't define the
85750  // comment here (changed to be a C style comment and not be a doxygen comment).
85751  /* \brief Typedef used to hold memory addresses as values.
85752  */
85753  // typedef unsigned long AddressType;
85754 
85755 
85756 
85757  // necessary, to have direct access to the p_freepointer and the private methods !
85759  friend class AST_FILE_IO;
85760 
85762  friend class SgOmpSeqCstClauseStorageClass;
85763 
85765  friend class AstSpecificDataManagingClass;
85766 
85768  friend class AstSpecificDataManagingClassStorageClass;
85769 
85770  public:
85772  SgOmpSeqCstClause( const SgOmpSeqCstClauseStorageClass& source );
85773 
85774  // private: // JJW hack
85775  /*
85776  name AST Memory Allocation Support Variables
85777  Memory allocations support variables
85778 
85779  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
85780  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
85781  and support the AST File I/O Mechanism.
85782  */
85783  /* */
85784 
85785  public:
85786 
85787  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
85788  // to current node (so that it will work cleanly with build functions to specify patterns).
85789  // virtual SgNode* addRegExpAttribute();
85796 
85797 // *** COMMON CODE SECTION ENDS HERE ***
85798 
85799 
85800 // End of memberFunctionString
85801 // Start of memberFunctionString
85802 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
85803 
85804  // the generated cast function
85805  // friend ROSE_DLL_API SgOmpSeqCstClause* isSgOmpSeqCstClause ( SgNode* s );
85806 
85807  typedef SgOmpClause base_node_type;
85808 
85809 
85810 // End of memberFunctionString
85811 
85812 
85813  public:
85814  virtual ~SgOmpSeqCstClause();
85815 
85816 
85817  public:
85818  SgOmpSeqCstClause(Sg_File_Info* startOfConstruct );
85819  SgOmpSeqCstClause();
85820 
85821  protected:
85822 
85823 
85824 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
85825 
85826 
85827  };
85828 #endif
85829 
85830 // postdeclarations for SgOmpSeqCstClause
85831 
85832 /* #line 85833 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
85833 
85834 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
85835 
85836 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
85837 
85838 
85839 /* #line 85840 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
85840 
85841 
85842 
85843 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
85844 
85845 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
85846 // This code is automatically generated for each
85847 // terminal and non-terminal within the defined
85848 // grammar. There is a simple way to change the
85849 // code to fix bugs etc. See the ROSE README file
85850 // for directions.
85851 
85852 // tps: (02/22/2010): Adding DLL export requirements
85853 #include "rosedll.h"
85854 
85855 // predeclarations for SgOmpAcqRelClause
85856 
85857 /* #line 85858 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
85858 
85859 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
85860 
85861 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
85862 
85863 #if 1
85864 // Class Definition for SgOmpAcqRelClause
85865 class ROSE_DLL_API SgOmpAcqRelClause : public SgOmpClause
85866  {
85867  public:
85868 
85869 
85870 /* #line 85871 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
85871 
85872  virtual SgNode* copy ( SgCopyHelp& help) const override;
85873 // Start of memberFunctionString
85874 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
85875 
85876 // *** COMMON CODE SECTION BEGINS HERE ***
85877 
85878  public:
85879 
85880  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
85881  // and not required which is required to match the other aspects of the copy mechanism code generation.
85882  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
85883  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
85884  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
85885  // virtual SgNode* copy ( const SgCopyHelp & help) const;
85886 
85888  virtual std::string class_name() const override;
85889 
85891  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
85892 
85894  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
85895  // static const VariantT static_variant = V_SgOmpAcqRelClause;
85896  enum { static_variant = V_SgOmpAcqRelClause };
85897 
85898  /* the generated cast function */
85900  ROSE_DLL_API friend SgOmpAcqRelClause* isSgOmpAcqRelClause( SgNode * s );
85901 
85903  ROSE_DLL_API friend const SgOmpAcqRelClause* isSgOmpAcqRelClause( const SgNode * s );
85904 
85905  // ******************************************
85906  // * Memory Pool / New / Delete
85907  // ******************************************
85908 
85909  public:
85911  static const unsigned pool_size; //
85913  static std::vector<unsigned char *> pools; //
85915  static SgOmpAcqRelClause * next_node; //
85916 
85918  static unsigned long initializeStorageClassArray(SgOmpAcqRelClauseStorageClass *); //
85919 
85921  static void clearMemoryPool(); //
85922  static void deleteMemoryPool(); //
85923 
85925  static void extendMemoryPoolForFileIO(); //
85926 
85928  static SgOmpAcqRelClause * getPointerFromGlobalIndex(unsigned long); //
85930  static SgOmpAcqRelClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
85931 
85933  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
85935  static void resetValidFreepointers(); //
85937  static unsigned long getNumberOfLastValidPointer(); //
85938 
85939 
85940 #if defined(INLINE_FUNCTIONS)
85941 
85942  inline void *operator new (size_t size);
85943 #else
85944 
85945  void *operator new (size_t size);
85946 #endif
85947 
85948  void operator delete (void* pointer, size_t size);
85949 
85950  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
85951  void operator delete (void* pointer)
85952  {
85953  // This is the generated delete operator...
85954  SgOmpAcqRelClause::operator delete (pointer,sizeof(SgOmpAcqRelClause));
85955  }
85956 
85958  static size_t numberOfNodes();
85959 
85961  static size_t memoryUsage();
85962 
85963  // End of scope which started in IR nodes specific code
85964  /* */
85965 
85966  /* name Internal Functions
85967  \brief Internal functions ... incomplete-documentation
85968 
85969  These functions have been made public as part of the design, but they are suggested for internal use
85970  or by particularly knowledgeable users for specialized tools or applications.
85971 
85972  \internal We could not make these private because they are required by user for special purposes. And
85973  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
85974 
85975  */
85976 
85977  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
85978  // overridden in every class by *generated* implementation
85980  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
85981  // MS: 06/28/02 container of names of variables or container indices
85982  // used used in the traversal to access AST successor nodes
85983  // overridden in every class by *generated* implementation
85986  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
85987 
85988  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
85989  // than all the vector copies. The implementation for these functions is generated for each class.
85991  virtual size_t get_numberOfTraversalSuccessors() override;
85993  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
85995  virtual size_t get_childIndex(SgNode *child) override;
85996 
85997 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
85998  // MS: 08/16/2002 method for generating RTI information
86000  virtual RTIReturnType roseRTI() override;
86001 #endif
86002  /* */
86003 
86004 
86005 
86006  /* name Deprecated Functions
86007  \brief Deprecated functions ... incomplete-documentation
86008 
86009  These functions have been deprecated from use.
86010  */
86011  /* */
86012 
86014  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
86015 
86016  // JJW (10/16/2008): Changed to a single function in Node.code, and put
86017  // getVariant() in #if 0 block to prevent confusing Doxygen
86018 #if 0
86019 
86020  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
86022  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
86023 #endif
86024  /* */
86025 
86026 
86027 
86028 
86029  public:
86030  /* name Traversal Support Functions
86031  \brief Traversal support functions ... incomplete-documentation
86032 
86033  These functions have been made public as part of the design, but they are suggested for internal use
86034  or by particularly knowledgable users for specialized tools or applications.
86035  */
86036  /* */
86037 
86038  // DQ (11/26/2005): Support for visitor pattern mechanims
86039  // (inferior to ROSE traversal mechanism, experimental).
86043 
86044  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
86046  virtual void accept (ROSE_VisitorPattern & visitor) override;
86047 
86048  // DQ (12/26/2005): Support for traversal based on the memory pool
86051  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
86052 
86056 
86057  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
86058  // This traversal helps support internal tools that call static member functions.
86059  // note: this function operates on the memory pools.
86062  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
86063  /* */
86064 
86065 
86066  public:
86067  /* name Memory Allocation Functions
86068  \brief Memory allocations functions ... incomplete-documentation
86069 
86070  These functions have been made public as part of the design, but they are suggested for internal use
86071  or by particularly knowledgable users for specialized tools or applications.
86072  */
86073  /* */
86074 
86085  virtual bool isInMemoryPool() override;
86086 
86097  virtual void checkDataMemberPointersIfInMemoryPool() override;
86098 
86099  // DQ (4/30/2006): Modified to be a const function.
86114  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
86115 
86125  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
86126 
86138  virtual long getChildIndex( SgNode* childNode ) const override;
86139 
86140  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
86141  // comment here (changed to be a C style comment and not be a doxygen comment).
86142  /* \brief Constructor for use by AST File I/O Mechanism
86143 
86144  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
86145  which obtained via fast binary file I/O from disk.
86146  */
86147  // SgOmpAcqRelClause( SgOmpAcqRelClauseStorageClass& source );
86148 
86149 
86150 
86151 
86152 
86153  // JH (10/24/2005): methods added to support the ast file IO
86154  private:
86155 
86156  /* name AST Memory Allocation Support Functions
86157  \brief Memory allocations support....
86158 
86159  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
86160  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
86161  and support the AST File I/O Mechanism.
86162  */
86163  /* */
86164 
86165  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
86166  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
86167  that I use the same type everywhere, if any changes are made. THe second one declares the type
86168  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
86169  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
86170  a correspinding one in the AST_FILE_IO class!
86171  */
86172  // DQ (9/2/2015): This typedef is no longer used, we can't define the
86173  // comment here (changed to be a C style comment and not be a doxygen comment).
86174  /* \brief Typedef used for low level memory access.
86175  */
86176  // typedef unsigned char* TestType;
86177 
86178  // DQ (9/2/2015): This typedef is no longer used, we can't define the
86179  // comment here (changed to be a C style comment and not be a doxygen comment).
86180  /* \brief Typedef used to hold memory addresses as values.
86181  */
86182  // typedef unsigned long AddressType;
86183 
86184 
86185 
86186  // necessary, to have direct access to the p_freepointer and the private methods !
86188  friend class AST_FILE_IO;
86189 
86191  friend class SgOmpAcqRelClauseStorageClass;
86192 
86194  friend class AstSpecificDataManagingClass;
86195 
86197  friend class AstSpecificDataManagingClassStorageClass;
86198 
86199  public:
86201  SgOmpAcqRelClause( const SgOmpAcqRelClauseStorageClass& source );
86202 
86203  // private: // JJW hack
86204  /*
86205  name AST Memory Allocation Support Variables
86206  Memory allocations support variables
86207 
86208  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
86209  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
86210  and support the AST File I/O Mechanism.
86211  */
86212  /* */
86213 
86214  public:
86215 
86216  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
86217  // to current node (so that it will work cleanly with build functions to specify patterns).
86218  // virtual SgNode* addRegExpAttribute();
86225 
86226 // *** COMMON CODE SECTION ENDS HERE ***
86227 
86228 
86229 // End of memberFunctionString
86230 // Start of memberFunctionString
86231 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
86232 
86233  // the generated cast function
86234  // friend ROSE_DLL_API SgOmpAcqRelClause* isSgOmpAcqRelClause ( SgNode* s );
86235 
86236  typedef SgOmpClause base_node_type;
86237 
86238 
86239 // End of memberFunctionString
86240 
86241 
86242  public:
86243  virtual ~SgOmpAcqRelClause();
86244 
86245 
86246  public:
86247  SgOmpAcqRelClause(Sg_File_Info* startOfConstruct );
86248  SgOmpAcqRelClause();
86249 
86250  protected:
86251 
86252 
86253 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
86254 
86255 
86256  };
86257 #endif
86258 
86259 // postdeclarations for SgOmpAcqRelClause
86260 
86261 /* #line 86262 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
86262 
86263 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
86264 
86265 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
86266 
86267 
86268 /* #line 86269 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
86269 
86270 
86271 
86272 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
86273 
86274 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
86275 // This code is automatically generated for each
86276 // terminal and non-terminal within the defined
86277 // grammar. There is a simple way to change the
86278 // code to fix bugs etc. See the ROSE README file
86279 // for directions.
86280 
86281 // tps: (02/22/2010): Adding DLL export requirements
86282 #include "rosedll.h"
86283 
86284 // predeclarations for SgOmpReleaseClause
86285 
86286 /* #line 86287 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
86287 
86288 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
86289 
86290 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
86291 
86292 #if 1
86293 // Class Definition for SgOmpReleaseClause
86294 class ROSE_DLL_API SgOmpReleaseClause : public SgOmpClause
86295  {
86296  public:
86297 
86298 
86299 /* #line 86300 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
86300 
86301  virtual SgNode* copy ( SgCopyHelp& help) const override;
86302 // Start of memberFunctionString
86303 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
86304 
86305 // *** COMMON CODE SECTION BEGINS HERE ***
86306 
86307  public:
86308 
86309  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
86310  // and not required which is required to match the other aspects of the copy mechanism code generation.
86311  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
86312  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
86313  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
86314  // virtual SgNode* copy ( const SgCopyHelp & help) const;
86315 
86317  virtual std::string class_name() const override;
86318 
86320  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
86321 
86323  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
86324  // static const VariantT static_variant = V_SgOmpReleaseClause;
86325  enum { static_variant = V_SgOmpReleaseClause };
86326 
86327  /* the generated cast function */
86329  ROSE_DLL_API friend SgOmpReleaseClause* isSgOmpReleaseClause( SgNode * s );
86330 
86332  ROSE_DLL_API friend const SgOmpReleaseClause* isSgOmpReleaseClause( const SgNode * s );
86333 
86334  // ******************************************
86335  // * Memory Pool / New / Delete
86336  // ******************************************
86337 
86338  public:
86340  static const unsigned pool_size; //
86342  static std::vector<unsigned char *> pools; //
86344  static SgOmpReleaseClause * next_node; //
86345 
86347  static unsigned long initializeStorageClassArray(SgOmpReleaseClauseStorageClass *); //
86348 
86350  static void clearMemoryPool(); //
86351  static void deleteMemoryPool(); //
86352 
86354  static void extendMemoryPoolForFileIO(); //
86355 
86357  static SgOmpReleaseClause * getPointerFromGlobalIndex(unsigned long); //
86359  static SgOmpReleaseClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
86360 
86362  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
86364  static void resetValidFreepointers(); //
86366  static unsigned long getNumberOfLastValidPointer(); //
86367 
86368 
86369 #if defined(INLINE_FUNCTIONS)
86370 
86371  inline void *operator new (size_t size);
86372 #else
86373 
86374  void *operator new (size_t size);
86375 #endif
86376 
86377  void operator delete (void* pointer, size_t size);
86378 
86379  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
86380  void operator delete (void* pointer)
86381  {
86382  // This is the generated delete operator...
86383  SgOmpReleaseClause::operator delete (pointer,sizeof(SgOmpReleaseClause));
86384  }
86385 
86387  static size_t numberOfNodes();
86388 
86390  static size_t memoryUsage();
86391 
86392  // End of scope which started in IR nodes specific code
86393  /* */
86394 
86395  /* name Internal Functions
86396  \brief Internal functions ... incomplete-documentation
86397 
86398  These functions have been made public as part of the design, but they are suggested for internal use
86399  or by particularly knowledgeable users for specialized tools or applications.
86400 
86401  \internal We could not make these private because they are required by user for special purposes. And
86402  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
86403 
86404  */
86405 
86406  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
86407  // overridden in every class by *generated* implementation
86409  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
86410  // MS: 06/28/02 container of names of variables or container indices
86411  // used used in the traversal to access AST successor nodes
86412  // overridden in every class by *generated* implementation
86415  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
86416 
86417  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
86418  // than all the vector copies. The implementation for these functions is generated for each class.
86420  virtual size_t get_numberOfTraversalSuccessors() override;
86422  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
86424  virtual size_t get_childIndex(SgNode *child) override;
86425 
86426 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
86427  // MS: 08/16/2002 method for generating RTI information
86429  virtual RTIReturnType roseRTI() override;
86430 #endif
86431  /* */
86432 
86433 
86434 
86435  /* name Deprecated Functions
86436  \brief Deprecated functions ... incomplete-documentation
86437 
86438  These functions have been deprecated from use.
86439  */
86440  /* */
86441 
86443  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
86444 
86445  // JJW (10/16/2008): Changed to a single function in Node.code, and put
86446  // getVariant() in #if 0 block to prevent confusing Doxygen
86447 #if 0
86448 
86449  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
86451  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
86452 #endif
86453  /* */
86454 
86455 
86456 
86457 
86458  public:
86459  /* name Traversal Support Functions
86460  \brief Traversal support functions ... incomplete-documentation
86461 
86462  These functions have been made public as part of the design, but they are suggested for internal use
86463  or by particularly knowledgable users for specialized tools or applications.
86464  */
86465  /* */
86466 
86467  // DQ (11/26/2005): Support for visitor pattern mechanims
86468  // (inferior to ROSE traversal mechanism, experimental).
86472 
86473  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
86475  virtual void accept (ROSE_VisitorPattern & visitor) override;
86476 
86477  // DQ (12/26/2005): Support for traversal based on the memory pool
86480  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
86481 
86485 
86486  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
86487  // This traversal helps support internal tools that call static member functions.
86488  // note: this function operates on the memory pools.
86491  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
86492  /* */
86493 
86494 
86495  public:
86496  /* name Memory Allocation Functions
86497  \brief Memory allocations functions ... incomplete-documentation
86498 
86499  These functions have been made public as part of the design, but they are suggested for internal use
86500  or by particularly knowledgable users for specialized tools or applications.
86501  */
86502  /* */
86503 
86514  virtual bool isInMemoryPool() override;
86515 
86526  virtual void checkDataMemberPointersIfInMemoryPool() override;
86527 
86528  // DQ (4/30/2006): Modified to be a const function.
86543  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
86544 
86554  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
86555 
86567  virtual long getChildIndex( SgNode* childNode ) const override;
86568 
86569  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
86570  // comment here (changed to be a C style comment and not be a doxygen comment).
86571  /* \brief Constructor for use by AST File I/O Mechanism
86572 
86573  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
86574  which obtained via fast binary file I/O from disk.
86575  */
86576  // SgOmpReleaseClause( SgOmpReleaseClauseStorageClass& source );
86577 
86578 
86579 
86580 
86581 
86582  // JH (10/24/2005): methods added to support the ast file IO
86583  private:
86584 
86585  /* name AST Memory Allocation Support Functions
86586  \brief Memory allocations support....
86587 
86588  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
86589  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
86590  and support the AST File I/O Mechanism.
86591  */
86592  /* */
86593 
86594  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
86595  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
86596  that I use the same type everywhere, if any changes are made. THe second one declares the type
86597  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
86598  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
86599  a correspinding one in the AST_FILE_IO class!
86600  */
86601  // DQ (9/2/2015): This typedef is no longer used, we can't define the
86602  // comment here (changed to be a C style comment and not be a doxygen comment).
86603  /* \brief Typedef used for low level memory access.
86604  */
86605  // typedef unsigned char* TestType;
86606 
86607  // DQ (9/2/2015): This typedef is no longer used, we can't define the
86608  // comment here (changed to be a C style comment and not be a doxygen comment).
86609  /* \brief Typedef used to hold memory addresses as values.
86610  */
86611  // typedef unsigned long AddressType;
86612 
86613 
86614 
86615  // necessary, to have direct access to the p_freepointer and the private methods !
86617  friend class AST_FILE_IO;
86618 
86620  friend class SgOmpReleaseClauseStorageClass;
86621 
86623  friend class AstSpecificDataManagingClass;
86624 
86626  friend class AstSpecificDataManagingClassStorageClass;
86627 
86628  public:
86630  SgOmpReleaseClause( const SgOmpReleaseClauseStorageClass& source );
86631 
86632  // private: // JJW hack
86633  /*
86634  name AST Memory Allocation Support Variables
86635  Memory allocations support variables
86636 
86637  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
86638  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
86639  and support the AST File I/O Mechanism.
86640  */
86641  /* */
86642 
86643  public:
86644 
86645  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
86646  // to current node (so that it will work cleanly with build functions to specify patterns).
86647  // virtual SgNode* addRegExpAttribute();
86654 
86655 // *** COMMON CODE SECTION ENDS HERE ***
86656 
86657 
86658 // End of memberFunctionString
86659 // Start of memberFunctionString
86660 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
86661 
86662  // the generated cast function
86663  // friend ROSE_DLL_API SgOmpReleaseClause* isSgOmpReleaseClause ( SgNode* s );
86664 
86665  typedef SgOmpClause base_node_type;
86666 
86667 
86668 // End of memberFunctionString
86669 
86670 
86671  public:
86672  virtual ~SgOmpReleaseClause();
86673 
86674 
86675  public:
86676  SgOmpReleaseClause(Sg_File_Info* startOfConstruct );
86677  SgOmpReleaseClause();
86678 
86679  protected:
86680 
86681 
86682 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
86683 
86684 
86685  };
86686 #endif
86687 
86688 // postdeclarations for SgOmpReleaseClause
86689 
86690 /* #line 86691 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
86691 
86692 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
86693 
86694 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
86695 
86696 
86697 /* #line 86698 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
86698 
86699 
86700 
86701 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
86702 
86703 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
86704 // This code is automatically generated for each
86705 // terminal and non-terminal within the defined
86706 // grammar. There is a simple way to change the
86707 // code to fix bugs etc. See the ROSE README file
86708 // for directions.
86709 
86710 // tps: (02/22/2010): Adding DLL export requirements
86711 #include "rosedll.h"
86712 
86713 // predeclarations for SgOmpAcquireClause
86714 
86715 /* #line 86716 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
86716 
86717 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
86718 
86719 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
86720 
86721 #if 1
86722 // Class Definition for SgOmpAcquireClause
86723 class ROSE_DLL_API SgOmpAcquireClause : public SgOmpClause
86724  {
86725  public:
86726 
86727 
86728 /* #line 86729 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
86729 
86730  virtual SgNode* copy ( SgCopyHelp& help) const override;
86731 // Start of memberFunctionString
86732 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
86733 
86734 // *** COMMON CODE SECTION BEGINS HERE ***
86735 
86736  public:
86737 
86738  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
86739  // and not required which is required to match the other aspects of the copy mechanism code generation.
86740  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
86741  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
86742  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
86743  // virtual SgNode* copy ( const SgCopyHelp & help) const;
86744 
86746  virtual std::string class_name() const override;
86747 
86749  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
86750 
86752  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
86753  // static const VariantT static_variant = V_SgOmpAcquireClause;
86754  enum { static_variant = V_SgOmpAcquireClause };
86755 
86756  /* the generated cast function */
86758  ROSE_DLL_API friend SgOmpAcquireClause* isSgOmpAcquireClause( SgNode * s );
86759 
86761  ROSE_DLL_API friend const SgOmpAcquireClause* isSgOmpAcquireClause( const SgNode * s );
86762 
86763  // ******************************************
86764  // * Memory Pool / New / Delete
86765  // ******************************************
86766 
86767  public:
86769  static const unsigned pool_size; //
86771  static std::vector<unsigned char *> pools; //
86773  static SgOmpAcquireClause * next_node; //
86774 
86776  static unsigned long initializeStorageClassArray(SgOmpAcquireClauseStorageClass *); //
86777 
86779  static void clearMemoryPool(); //
86780  static void deleteMemoryPool(); //
86781 
86783  static void extendMemoryPoolForFileIO(); //
86784 
86786  static SgOmpAcquireClause * getPointerFromGlobalIndex(unsigned long); //
86788  static SgOmpAcquireClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
86789 
86791  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
86793  static void resetValidFreepointers(); //
86795  static unsigned long getNumberOfLastValidPointer(); //
86796 
86797 
86798 #if defined(INLINE_FUNCTIONS)
86799 
86800  inline void *operator new (size_t size);
86801 #else
86802 
86803  void *operator new (size_t size);
86804 #endif
86805 
86806  void operator delete (void* pointer, size_t size);
86807 
86808  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
86809  void operator delete (void* pointer)
86810  {
86811  // This is the generated delete operator...
86812  SgOmpAcquireClause::operator delete (pointer,sizeof(SgOmpAcquireClause));
86813  }
86814 
86816  static size_t numberOfNodes();
86817 
86819  static size_t memoryUsage();
86820 
86821  // End of scope which started in IR nodes specific code
86822  /* */
86823 
86824  /* name Internal Functions
86825  \brief Internal functions ... incomplete-documentation
86826 
86827  These functions have been made public as part of the design, but they are suggested for internal use
86828  or by particularly knowledgeable users for specialized tools or applications.
86829 
86830  \internal We could not make these private because they are required by user for special purposes. And
86831  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
86832 
86833  */
86834 
86835  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
86836  // overridden in every class by *generated* implementation
86838  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
86839  // MS: 06/28/02 container of names of variables or container indices
86840  // used used in the traversal to access AST successor nodes
86841  // overridden in every class by *generated* implementation
86844  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
86845 
86846  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
86847  // than all the vector copies. The implementation for these functions is generated for each class.
86849  virtual size_t get_numberOfTraversalSuccessors() override;
86851  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
86853  virtual size_t get_childIndex(SgNode *child) override;
86854 
86855 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
86856  // MS: 08/16/2002 method for generating RTI information
86858  virtual RTIReturnType roseRTI() override;
86859 #endif
86860  /* */
86861 
86862 
86863 
86864  /* name Deprecated Functions
86865  \brief Deprecated functions ... incomplete-documentation
86866 
86867  These functions have been deprecated from use.
86868  */
86869  /* */
86870 
86872  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
86873 
86874  // JJW (10/16/2008): Changed to a single function in Node.code, and put
86875  // getVariant() in #if 0 block to prevent confusing Doxygen
86876 #if 0
86877 
86878  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
86880  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
86881 #endif
86882  /* */
86883 
86884 
86885 
86886 
86887  public:
86888  /* name Traversal Support Functions
86889  \brief Traversal support functions ... incomplete-documentation
86890 
86891  These functions have been made public as part of the design, but they are suggested for internal use
86892  or by particularly knowledgable users for specialized tools or applications.
86893  */
86894  /* */
86895 
86896  // DQ (11/26/2005): Support for visitor pattern mechanims
86897  // (inferior to ROSE traversal mechanism, experimental).
86901 
86902  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
86904  virtual void accept (ROSE_VisitorPattern & visitor) override;
86905 
86906  // DQ (12/26/2005): Support for traversal based on the memory pool
86909  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
86910 
86914 
86915  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
86916  // This traversal helps support internal tools that call static member functions.
86917  // note: this function operates on the memory pools.
86920  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
86921  /* */
86922 
86923 
86924  public:
86925  /* name Memory Allocation Functions
86926  \brief Memory allocations functions ... incomplete-documentation
86927 
86928  These functions have been made public as part of the design, but they are suggested for internal use
86929  or by particularly knowledgable users for specialized tools or applications.
86930  */
86931  /* */
86932 
86943  virtual bool isInMemoryPool() override;
86944 
86955  virtual void checkDataMemberPointersIfInMemoryPool() override;
86956 
86957  // DQ (4/30/2006): Modified to be a const function.
86972  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
86973 
86983  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
86984 
86996  virtual long getChildIndex( SgNode* childNode ) const override;
86997 
86998  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
86999  // comment here (changed to be a C style comment and not be a doxygen comment).
87000  /* \brief Constructor for use by AST File I/O Mechanism
87001 
87002  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
87003  which obtained via fast binary file I/O from disk.
87004  */
87005  // SgOmpAcquireClause( SgOmpAcquireClauseStorageClass& source );
87006 
87007 
87008 
87009 
87010 
87011  // JH (10/24/2005): methods added to support the ast file IO
87012  private:
87013 
87014  /* name AST Memory Allocation Support Functions
87015  \brief Memory allocations support....
87016 
87017  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
87018  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
87019  and support the AST File I/O Mechanism.
87020  */
87021  /* */
87022 
87023  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
87024  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
87025  that I use the same type everywhere, if any changes are made. THe second one declares the type
87026  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
87027  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
87028  a correspinding one in the AST_FILE_IO class!
87029  */
87030  // DQ (9/2/2015): This typedef is no longer used, we can't define the
87031  // comment here (changed to be a C style comment and not be a doxygen comment).
87032  /* \brief Typedef used for low level memory access.
87033  */
87034  // typedef unsigned char* TestType;
87035 
87036  // DQ (9/2/2015): This typedef is no longer used, we can't define the
87037  // comment here (changed to be a C style comment and not be a doxygen comment).
87038  /* \brief Typedef used to hold memory addresses as values.
87039  */
87040  // typedef unsigned long AddressType;
87041 
87042 
87043 
87044  // necessary, to have direct access to the p_freepointer and the private methods !
87046  friend class AST_FILE_IO;
87047 
87049  friend class SgOmpAcquireClauseStorageClass;
87050 
87052  friend class AstSpecificDataManagingClass;
87053 
87055  friend class AstSpecificDataManagingClassStorageClass;
87056 
87057  public:
87059  SgOmpAcquireClause( const SgOmpAcquireClauseStorageClass& source );
87060 
87061  // private: // JJW hack
87062  /*
87063  name AST Memory Allocation Support Variables
87064  Memory allocations support variables
87065 
87066  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
87067  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
87068  and support the AST File I/O Mechanism.
87069  */
87070  /* */
87071 
87072  public:
87073 
87074  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
87075  // to current node (so that it will work cleanly with build functions to specify patterns).
87076  // virtual SgNode* addRegExpAttribute();
87083 
87084 // *** COMMON CODE SECTION ENDS HERE ***
87085 
87086 
87087 // End of memberFunctionString
87088 // Start of memberFunctionString
87089 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
87090 
87091  // the generated cast function
87092  // friend ROSE_DLL_API SgOmpAcquireClause* isSgOmpAcquireClause ( SgNode* s );
87093 
87094  typedef SgOmpClause base_node_type;
87095 
87096 
87097 // End of memberFunctionString
87098 
87099 
87100  public:
87101  virtual ~SgOmpAcquireClause();
87102 
87103 
87104  public:
87105  SgOmpAcquireClause(Sg_File_Info* startOfConstruct );
87106  SgOmpAcquireClause();
87107 
87108  protected:
87109 
87110 
87111 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
87112 
87113 
87114  };
87115 #endif
87116 
87117 // postdeclarations for SgOmpAcquireClause
87118 
87119 /* #line 87120 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
87120 
87121 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
87122 
87123 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
87124 
87125 
87126 /* #line 87127 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
87127 
87128 
87129 
87130 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
87131 
87132 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
87133 // This code is automatically generated for each
87134 // terminal and non-terminal within the defined
87135 // grammar. There is a simple way to change the
87136 // code to fix bugs etc. See the ROSE README file
87137 // for directions.
87138 
87139 // tps: (02/22/2010): Adding DLL export requirements
87140 #include "rosedll.h"
87141 
87142 // predeclarations for SgOmpRelaxedClause
87143 
87144 /* #line 87145 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
87145 
87146 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
87147 
87148 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
87149 
87150 #if 1
87151 // Class Definition for SgOmpRelaxedClause
87152 class ROSE_DLL_API SgOmpRelaxedClause : public SgOmpClause
87153  {
87154  public:
87155 
87156 
87157 /* #line 87158 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
87158 
87159  virtual SgNode* copy ( SgCopyHelp& help) const override;
87160 // Start of memberFunctionString
87161 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
87162 
87163 // *** COMMON CODE SECTION BEGINS HERE ***
87164 
87165  public:
87166 
87167  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
87168  // and not required which is required to match the other aspects of the copy mechanism code generation.
87169  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
87170  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
87171  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
87172  // virtual SgNode* copy ( const SgCopyHelp & help) const;
87173 
87175  virtual std::string class_name() const override;
87176 
87178  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
87179 
87181  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
87182  // static const VariantT static_variant = V_SgOmpRelaxedClause;
87183  enum { static_variant = V_SgOmpRelaxedClause };
87184 
87185  /* the generated cast function */
87187  ROSE_DLL_API friend SgOmpRelaxedClause* isSgOmpRelaxedClause( SgNode * s );
87188 
87190  ROSE_DLL_API friend const SgOmpRelaxedClause* isSgOmpRelaxedClause( const SgNode * s );
87191 
87192  // ******************************************
87193  // * Memory Pool / New / Delete
87194  // ******************************************
87195 
87196  public:
87198  static const unsigned pool_size; //
87200  static std::vector<unsigned char *> pools; //
87202  static SgOmpRelaxedClause * next_node; //
87203 
87205  static unsigned long initializeStorageClassArray(SgOmpRelaxedClauseStorageClass *); //
87206 
87208  static void clearMemoryPool(); //
87209  static void deleteMemoryPool(); //
87210 
87212  static void extendMemoryPoolForFileIO(); //
87213 
87215  static SgOmpRelaxedClause * getPointerFromGlobalIndex(unsigned long); //
87217  static SgOmpRelaxedClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
87218 
87220  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
87222  static void resetValidFreepointers(); //
87224  static unsigned long getNumberOfLastValidPointer(); //
87225 
87226 
87227 #if defined(INLINE_FUNCTIONS)
87228 
87229  inline void *operator new (size_t size);
87230 #else
87231 
87232  void *operator new (size_t size);
87233 #endif
87234 
87235  void operator delete (void* pointer, size_t size);
87236 
87237  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
87238  void operator delete (void* pointer)
87239  {
87240  // This is the generated delete operator...
87241  SgOmpRelaxedClause::operator delete (pointer,sizeof(SgOmpRelaxedClause));
87242  }
87243 
87245  static size_t numberOfNodes();
87246 
87248  static size_t memoryUsage();
87249 
87250  // End of scope which started in IR nodes specific code
87251  /* */
87252 
87253  /* name Internal Functions
87254  \brief Internal functions ... incomplete-documentation
87255 
87256  These functions have been made public as part of the design, but they are suggested for internal use
87257  or by particularly knowledgeable users for specialized tools or applications.
87258 
87259  \internal We could not make these private because they are required by user for special purposes. And
87260  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
87261 
87262  */
87263 
87264  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
87265  // overridden in every class by *generated* implementation
87267  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
87268  // MS: 06/28/02 container of names of variables or container indices
87269  // used used in the traversal to access AST successor nodes
87270  // overridden in every class by *generated* implementation
87273  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
87274 
87275  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
87276  // than all the vector copies. The implementation for these functions is generated for each class.
87278  virtual size_t get_numberOfTraversalSuccessors() override;
87280  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
87282  virtual size_t get_childIndex(SgNode *child) override;
87283 
87284 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
87285  // MS: 08/16/2002 method for generating RTI information
87287  virtual RTIReturnType roseRTI() override;
87288 #endif
87289  /* */
87290 
87291 
87292 
87293  /* name Deprecated Functions
87294  \brief Deprecated functions ... incomplete-documentation
87295 
87296  These functions have been deprecated from use.
87297  */
87298  /* */
87299 
87301  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
87302 
87303  // JJW (10/16/2008): Changed to a single function in Node.code, and put
87304  // getVariant() in #if 0 block to prevent confusing Doxygen
87305 #if 0
87306 
87307  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
87309  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
87310 #endif
87311  /* */
87312 
87313 
87314 
87315 
87316  public:
87317  /* name Traversal Support Functions
87318  \brief Traversal support functions ... incomplete-documentation
87319 
87320  These functions have been made public as part of the design, but they are suggested for internal use
87321  or by particularly knowledgable users for specialized tools or applications.
87322  */
87323  /* */
87324 
87325  // DQ (11/26/2005): Support for visitor pattern mechanims
87326  // (inferior to ROSE traversal mechanism, experimental).
87330 
87331  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
87333  virtual void accept (ROSE_VisitorPattern & visitor) override;
87334 
87335  // DQ (12/26/2005): Support for traversal based on the memory pool
87338  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
87339 
87343 
87344  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
87345  // This traversal helps support internal tools that call static member functions.
87346  // note: this function operates on the memory pools.
87349  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
87350  /* */
87351 
87352 
87353  public:
87354  /* name Memory Allocation Functions
87355  \brief Memory allocations functions ... incomplete-documentation
87356 
87357  These functions have been made public as part of the design, but they are suggested for internal use
87358  or by particularly knowledgable users for specialized tools or applications.
87359  */
87360  /* */
87361 
87372  virtual bool isInMemoryPool() override;
87373 
87384  virtual void checkDataMemberPointersIfInMemoryPool() override;
87385 
87386  // DQ (4/30/2006): Modified to be a const function.
87401  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
87402 
87412  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
87413 
87425  virtual long getChildIndex( SgNode* childNode ) const override;
87426 
87427  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
87428  // comment here (changed to be a C style comment and not be a doxygen comment).
87429  /* \brief Constructor for use by AST File I/O Mechanism
87430 
87431  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
87432  which obtained via fast binary file I/O from disk.
87433  */
87434  // SgOmpRelaxedClause( SgOmpRelaxedClauseStorageClass& source );
87435 
87436 
87437 
87438 
87439 
87440  // JH (10/24/2005): methods added to support the ast file IO
87441  private:
87442 
87443  /* name AST Memory Allocation Support Functions
87444  \brief Memory allocations support....
87445 
87446  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
87447  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
87448  and support the AST File I/O Mechanism.
87449  */
87450  /* */
87451 
87452  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
87453  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
87454  that I use the same type everywhere, if any changes are made. THe second one declares the type
87455  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
87456  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
87457  a correspinding one in the AST_FILE_IO class!
87458  */
87459  // DQ (9/2/2015): This typedef is no longer used, we can't define the
87460  // comment here (changed to be a C style comment and not be a doxygen comment).
87461  /* \brief Typedef used for low level memory access.
87462  */
87463  // typedef unsigned char* TestType;
87464 
87465  // DQ (9/2/2015): This typedef is no longer used, we can't define the
87466  // comment here (changed to be a C style comment and not be a doxygen comment).
87467  /* \brief Typedef used to hold memory addresses as values.
87468  */
87469  // typedef unsigned long AddressType;
87470 
87471 
87472 
87473  // necessary, to have direct access to the p_freepointer and the private methods !
87475  friend class AST_FILE_IO;
87476 
87478  friend class SgOmpRelaxedClauseStorageClass;
87479 
87481  friend class AstSpecificDataManagingClass;
87482 
87484  friend class AstSpecificDataManagingClassStorageClass;
87485 
87486  public:
87488  SgOmpRelaxedClause( const SgOmpRelaxedClauseStorageClass& source );
87489 
87490  // private: // JJW hack
87491  /*
87492  name AST Memory Allocation Support Variables
87493  Memory allocations support variables
87494 
87495  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
87496  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
87497  and support the AST File I/O Mechanism.
87498  */
87499  /* */
87500 
87501  public:
87502 
87503  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
87504  // to current node (so that it will work cleanly with build functions to specify patterns).
87505  // virtual SgNode* addRegExpAttribute();
87512 
87513 // *** COMMON CODE SECTION ENDS HERE ***
87514 
87515 
87516 // End of memberFunctionString
87517 // Start of memberFunctionString
87518 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
87519 
87520  // the generated cast function
87521  // friend ROSE_DLL_API SgOmpRelaxedClause* isSgOmpRelaxedClause ( SgNode* s );
87522 
87523  typedef SgOmpClause base_node_type;
87524 
87525 
87526 // End of memberFunctionString
87527 
87528 
87529  public:
87530  virtual ~SgOmpRelaxedClause();
87531 
87532 
87533  public:
87534  SgOmpRelaxedClause(Sg_File_Info* startOfConstruct );
87535  SgOmpRelaxedClause();
87536 
87537  protected:
87538 
87539 
87540 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
87541 
87542 
87543  };
87544 #endif
87545 
87546 // postdeclarations for SgOmpRelaxedClause
87547 
87548 /* #line 87549 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
87549 
87550 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
87551 
87552 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
87553 
87554 
87555 /* #line 87556 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
87556 
87557 
87558 
87559 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
87560 
87561 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
87562 // This code is automatically generated for each
87563 // terminal and non-terminal within the defined
87564 // grammar. There is a simple way to change the
87565 // code to fix bugs etc. See the ROSE README file
87566 // for directions.
87567 
87568 // tps: (02/22/2010): Adding DLL export requirements
87569 #include "rosedll.h"
87570 
87571 // predeclarations for SgOmpReverseOffloadClause
87572 
87573 /* #line 87574 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
87574 
87575 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
87576 
87577 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
87578 
87579 #if 1
87580 // Class Definition for SgOmpReverseOffloadClause
87581 class ROSE_DLL_API SgOmpReverseOffloadClause : public SgOmpClause
87582  {
87583  public:
87584 
87585 
87586 /* #line 87587 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
87587 
87588  virtual SgNode* copy ( SgCopyHelp& help) const override;
87589 // Start of memberFunctionString
87590 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
87591 
87592 // *** COMMON CODE SECTION BEGINS HERE ***
87593 
87594  public:
87595 
87596  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
87597  // and not required which is required to match the other aspects of the copy mechanism code generation.
87598  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
87599  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
87600  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
87601  // virtual SgNode* copy ( const SgCopyHelp & help) const;
87602 
87604  virtual std::string class_name() const override;
87605 
87607  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
87608 
87610  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
87611  // static const VariantT static_variant = V_SgOmpReverseOffloadClause;
87612  enum { static_variant = V_SgOmpReverseOffloadClause };
87613 
87614  /* the generated cast function */
87616  ROSE_DLL_API friend SgOmpReverseOffloadClause* isSgOmpReverseOffloadClause( SgNode * s );
87617 
87619  ROSE_DLL_API friend const SgOmpReverseOffloadClause* isSgOmpReverseOffloadClause( const SgNode * s );
87620 
87621  // ******************************************
87622  // * Memory Pool / New / Delete
87623  // ******************************************
87624 
87625  public:
87627  static const unsigned pool_size; //
87629  static std::vector<unsigned char *> pools; //
87631  static SgOmpReverseOffloadClause * next_node; //
87632 
87634  static unsigned long initializeStorageClassArray(SgOmpReverseOffloadClauseStorageClass *); //
87635 
87637  static void clearMemoryPool(); //
87638  static void deleteMemoryPool(); //
87639 
87641  static void extendMemoryPoolForFileIO(); //
87642 
87644  static SgOmpReverseOffloadClause * getPointerFromGlobalIndex(unsigned long); //
87646  static SgOmpReverseOffloadClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
87647 
87649  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
87651  static void resetValidFreepointers(); //
87653  static unsigned long getNumberOfLastValidPointer(); //
87654 
87655 
87656 #if defined(INLINE_FUNCTIONS)
87657 
87658  inline void *operator new (size_t size);
87659 #else
87660 
87661  void *operator new (size_t size);
87662 #endif
87663 
87664  void operator delete (void* pointer, size_t size);
87665 
87666  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
87667  void operator delete (void* pointer)
87668  {
87669  // This is the generated delete operator...
87670  SgOmpReverseOffloadClause::operator delete (pointer,sizeof(SgOmpReverseOffloadClause));
87671  }
87672 
87674  static size_t numberOfNodes();
87675 
87677  static size_t memoryUsage();
87678 
87679  // End of scope which started in IR nodes specific code
87680  /* */
87681 
87682  /* name Internal Functions
87683  \brief Internal functions ... incomplete-documentation
87684 
87685  These functions have been made public as part of the design, but they are suggested for internal use
87686  or by particularly knowledgeable users for specialized tools or applications.
87687 
87688  \internal We could not make these private because they are required by user for special purposes. And
87689  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
87690 
87691  */
87692 
87693  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
87694  // overridden in every class by *generated* implementation
87696  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
87697  // MS: 06/28/02 container of names of variables or container indices
87698  // used used in the traversal to access AST successor nodes
87699  // overridden in every class by *generated* implementation
87702  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
87703 
87704  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
87705  // than all the vector copies. The implementation for these functions is generated for each class.
87707  virtual size_t get_numberOfTraversalSuccessors() override;
87709  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
87711  virtual size_t get_childIndex(SgNode *child) override;
87712 
87713 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
87714  // MS: 08/16/2002 method for generating RTI information
87716  virtual RTIReturnType roseRTI() override;
87717 #endif
87718  /* */
87719 
87720 
87721 
87722  /* name Deprecated Functions
87723  \brief Deprecated functions ... incomplete-documentation
87724 
87725  These functions have been deprecated from use.
87726  */
87727  /* */
87728 
87730  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
87731 
87732  // JJW (10/16/2008): Changed to a single function in Node.code, and put
87733  // getVariant() in #if 0 block to prevent confusing Doxygen
87734 #if 0
87735 
87736  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
87738  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
87739 #endif
87740  /* */
87741 
87742 
87743 
87744 
87745  public:
87746  /* name Traversal Support Functions
87747  \brief Traversal support functions ... incomplete-documentation
87748 
87749  These functions have been made public as part of the design, but they are suggested for internal use
87750  or by particularly knowledgable users for specialized tools or applications.
87751  */
87752  /* */
87753 
87754  // DQ (11/26/2005): Support for visitor pattern mechanims
87755  // (inferior to ROSE traversal mechanism, experimental).
87759 
87760  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
87762  virtual void accept (ROSE_VisitorPattern & visitor) override;
87763 
87764  // DQ (12/26/2005): Support for traversal based on the memory pool
87767  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
87768 
87772 
87773  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
87774  // This traversal helps support internal tools that call static member functions.
87775  // note: this function operates on the memory pools.
87778  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
87779  /* */
87780 
87781 
87782  public:
87783  /* name Memory Allocation Functions
87784  \brief Memory allocations functions ... incomplete-documentation
87785 
87786  These functions have been made public as part of the design, but they are suggested for internal use
87787  or by particularly knowledgable users for specialized tools or applications.
87788  */
87789  /* */
87790 
87801  virtual bool isInMemoryPool() override;
87802 
87813  virtual void checkDataMemberPointersIfInMemoryPool() override;
87814 
87815  // DQ (4/30/2006): Modified to be a const function.
87830  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
87831 
87841  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
87842 
87854  virtual long getChildIndex( SgNode* childNode ) const override;
87855 
87856  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
87857  // comment here (changed to be a C style comment and not be a doxygen comment).
87858  /* \brief Constructor for use by AST File I/O Mechanism
87859 
87860  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
87861  which obtained via fast binary file I/O from disk.
87862  */
87863  // SgOmpReverseOffloadClause( SgOmpReverseOffloadClauseStorageClass& source );
87864 
87865 
87866 
87867 
87868 
87869  // JH (10/24/2005): methods added to support the ast file IO
87870  private:
87871 
87872  /* name AST Memory Allocation Support Functions
87873  \brief Memory allocations support....
87874 
87875  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
87876  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
87877  and support the AST File I/O Mechanism.
87878  */
87879  /* */
87880 
87881  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
87882  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
87883  that I use the same type everywhere, if any changes are made. THe second one declares the type
87884  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
87885  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
87886  a correspinding one in the AST_FILE_IO class!
87887  */
87888  // DQ (9/2/2015): This typedef is no longer used, we can't define the
87889  // comment here (changed to be a C style comment and not be a doxygen comment).
87890  /* \brief Typedef used for low level memory access.
87891  */
87892  // typedef unsigned char* TestType;
87893 
87894  // DQ (9/2/2015): This typedef is no longer used, we can't define the
87895  // comment here (changed to be a C style comment and not be a doxygen comment).
87896  /* \brief Typedef used to hold memory addresses as values.
87897  */
87898  // typedef unsigned long AddressType;
87899 
87900 
87901 
87902  // necessary, to have direct access to the p_freepointer and the private methods !
87904  friend class AST_FILE_IO;
87905 
87907  friend class SgOmpReverseOffloadClauseStorageClass;
87908 
87910  friend class AstSpecificDataManagingClass;
87911 
87913  friend class AstSpecificDataManagingClassStorageClass;
87914 
87915  public:
87917  SgOmpReverseOffloadClause( const SgOmpReverseOffloadClauseStorageClass& source );
87918 
87919  // private: // JJW hack
87920  /*
87921  name AST Memory Allocation Support Variables
87922  Memory allocations support variables
87923 
87924  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
87925  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
87926  and support the AST File I/O Mechanism.
87927  */
87928  /* */
87929 
87930  public:
87931 
87932  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
87933  // to current node (so that it will work cleanly with build functions to specify patterns).
87934  // virtual SgNode* addRegExpAttribute();
87941 
87942 // *** COMMON CODE SECTION ENDS HERE ***
87943 
87944 
87945 // End of memberFunctionString
87946 // Start of memberFunctionString
87947 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
87948 
87949  // the generated cast function
87950  // friend ROSE_DLL_API SgOmpReverseOffloadClause* isSgOmpReverseOffloadClause ( SgNode* s );
87951 
87952  typedef SgOmpClause base_node_type;
87953 
87954 
87955 // End of memberFunctionString
87956 
87957 
87958  public:
87959  virtual ~SgOmpReverseOffloadClause();
87960 
87961 
87962  public:
87963  SgOmpReverseOffloadClause(Sg_File_Info* startOfConstruct );
87965 
87966  protected:
87967 
87968 
87969 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
87970 
87971 
87972  };
87973 #endif
87974 
87975 // postdeclarations for SgOmpReverseOffloadClause
87976 
87977 /* #line 87978 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
87978 
87979 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
87980 
87981 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
87982 
87983 
87984 /* #line 87985 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
87985 
87986 
87987 
87988 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
87989 
87990 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
87991 // This code is automatically generated for each
87992 // terminal and non-terminal within the defined
87993 // grammar. There is a simple way to change the
87994 // code to fix bugs etc. See the ROSE README file
87995 // for directions.
87996 
87997 // tps: (02/22/2010): Adding DLL export requirements
87998 #include "rosedll.h"
87999 
88000 // predeclarations for SgOmpUnifiedAddressClause
88001 
88002 /* #line 88003 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
88003 
88004 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
88005 
88006 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
88007 
88008 #if 1
88009 // Class Definition for SgOmpUnifiedAddressClause
88010 class ROSE_DLL_API SgOmpUnifiedAddressClause : public SgOmpClause
88011  {
88012  public:
88013 
88014 
88015 /* #line 88016 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
88016 
88017  virtual SgNode* copy ( SgCopyHelp& help) const override;
88018 // Start of memberFunctionString
88019 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
88020 
88021 // *** COMMON CODE SECTION BEGINS HERE ***
88022 
88023  public:
88024 
88025  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
88026  // and not required which is required to match the other aspects of the copy mechanism code generation.
88027  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
88028  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
88029  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
88030  // virtual SgNode* copy ( const SgCopyHelp & help) const;
88031 
88033  virtual std::string class_name() const override;
88034 
88036  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
88037 
88039  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
88040  // static const VariantT static_variant = V_SgOmpUnifiedAddressClause;
88041  enum { static_variant = V_SgOmpUnifiedAddressClause };
88042 
88043  /* the generated cast function */
88045  ROSE_DLL_API friend SgOmpUnifiedAddressClause* isSgOmpUnifiedAddressClause( SgNode * s );
88046 
88048  ROSE_DLL_API friend const SgOmpUnifiedAddressClause* isSgOmpUnifiedAddressClause( const SgNode * s );
88049 
88050  // ******************************************
88051  // * Memory Pool / New / Delete
88052  // ******************************************
88053 
88054  public:
88056  static const unsigned pool_size; //
88058  static std::vector<unsigned char *> pools; //
88060  static SgOmpUnifiedAddressClause * next_node; //
88061 
88063  static unsigned long initializeStorageClassArray(SgOmpUnifiedAddressClauseStorageClass *); //
88064 
88066  static void clearMemoryPool(); //
88067  static void deleteMemoryPool(); //
88068 
88070  static void extendMemoryPoolForFileIO(); //
88071 
88073  static SgOmpUnifiedAddressClause * getPointerFromGlobalIndex(unsigned long); //
88075  static SgOmpUnifiedAddressClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
88076 
88078  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
88080  static void resetValidFreepointers(); //
88082  static unsigned long getNumberOfLastValidPointer(); //
88083 
88084 
88085 #if defined(INLINE_FUNCTIONS)
88086 
88087  inline void *operator new (size_t size);
88088 #else
88089 
88090  void *operator new (size_t size);
88091 #endif
88092 
88093  void operator delete (void* pointer, size_t size);
88094 
88095  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
88096  void operator delete (void* pointer)
88097  {
88098  // This is the generated delete operator...
88099  SgOmpUnifiedAddressClause::operator delete (pointer,sizeof(SgOmpUnifiedAddressClause));
88100  }
88101 
88103  static size_t numberOfNodes();
88104 
88106  static size_t memoryUsage();
88107 
88108  // End of scope which started in IR nodes specific code
88109  /* */
88110 
88111  /* name Internal Functions
88112  \brief Internal functions ... incomplete-documentation
88113 
88114  These functions have been made public as part of the design, but they are suggested for internal use
88115  or by particularly knowledgeable users for specialized tools or applications.
88116 
88117  \internal We could not make these private because they are required by user for special purposes. And
88118  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
88119 
88120  */
88121 
88122  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
88123  // overridden in every class by *generated* implementation
88125  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
88126  // MS: 06/28/02 container of names of variables or container indices
88127  // used used in the traversal to access AST successor nodes
88128  // overridden in every class by *generated* implementation
88131  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
88132 
88133  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
88134  // than all the vector copies. The implementation for these functions is generated for each class.
88136  virtual size_t get_numberOfTraversalSuccessors() override;
88138  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
88140  virtual size_t get_childIndex(SgNode *child) override;
88141 
88142 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
88143  // MS: 08/16/2002 method for generating RTI information
88145  virtual RTIReturnType roseRTI() override;
88146 #endif
88147  /* */
88148 
88149 
88150 
88151  /* name Deprecated Functions
88152  \brief Deprecated functions ... incomplete-documentation
88153 
88154  These functions have been deprecated from use.
88155  */
88156  /* */
88157 
88159  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
88160 
88161  // JJW (10/16/2008): Changed to a single function in Node.code, and put
88162  // getVariant() in #if 0 block to prevent confusing Doxygen
88163 #if 0
88164 
88165  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
88167  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
88168 #endif
88169  /* */
88170 
88171 
88172 
88173 
88174  public:
88175  /* name Traversal Support Functions
88176  \brief Traversal support functions ... incomplete-documentation
88177 
88178  These functions have been made public as part of the design, but they are suggested for internal use
88179  or by particularly knowledgable users for specialized tools or applications.
88180  */
88181  /* */
88182 
88183  // DQ (11/26/2005): Support for visitor pattern mechanims
88184  // (inferior to ROSE traversal mechanism, experimental).
88188 
88189  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
88191  virtual void accept (ROSE_VisitorPattern & visitor) override;
88192 
88193  // DQ (12/26/2005): Support for traversal based on the memory pool
88196  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
88197 
88201 
88202  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
88203  // This traversal helps support internal tools that call static member functions.
88204  // note: this function operates on the memory pools.
88207  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
88208  /* */
88209 
88210 
88211  public:
88212  /* name Memory Allocation Functions
88213  \brief Memory allocations functions ... incomplete-documentation
88214 
88215  These functions have been made public as part of the design, but they are suggested for internal use
88216  or by particularly knowledgable users for specialized tools or applications.
88217  */
88218  /* */
88219 
88230  virtual bool isInMemoryPool() override;
88231 
88242  virtual void checkDataMemberPointersIfInMemoryPool() override;
88243 
88244  // DQ (4/30/2006): Modified to be a const function.
88259  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
88260 
88270  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
88271 
88283  virtual long getChildIndex( SgNode* childNode ) const override;
88284 
88285  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
88286  // comment here (changed to be a C style comment and not be a doxygen comment).
88287  /* \brief Constructor for use by AST File I/O Mechanism
88288 
88289  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
88290  which obtained via fast binary file I/O from disk.
88291  */
88292  // SgOmpUnifiedAddressClause( SgOmpUnifiedAddressClauseStorageClass& source );
88293 
88294 
88295 
88296 
88297 
88298  // JH (10/24/2005): methods added to support the ast file IO
88299  private:
88300 
88301  /* name AST Memory Allocation Support Functions
88302  \brief Memory allocations support....
88303 
88304  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
88305  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
88306  and support the AST File I/O Mechanism.
88307  */
88308  /* */
88309 
88310  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
88311  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
88312  that I use the same type everywhere, if any changes are made. THe second one declares the type
88313  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
88314  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
88315  a correspinding one in the AST_FILE_IO class!
88316  */
88317  // DQ (9/2/2015): This typedef is no longer used, we can't define the
88318  // comment here (changed to be a C style comment and not be a doxygen comment).
88319  /* \brief Typedef used for low level memory access.
88320  */
88321  // typedef unsigned char* TestType;
88322 
88323  // DQ (9/2/2015): This typedef is no longer used, we can't define the
88324  // comment here (changed to be a C style comment and not be a doxygen comment).
88325  /* \brief Typedef used to hold memory addresses as values.
88326  */
88327  // typedef unsigned long AddressType;
88328 
88329 
88330 
88331  // necessary, to have direct access to the p_freepointer and the private methods !
88333  friend class AST_FILE_IO;
88334 
88336  friend class SgOmpUnifiedAddressClauseStorageClass;
88337 
88339  friend class AstSpecificDataManagingClass;
88340 
88342  friend class AstSpecificDataManagingClassStorageClass;
88343 
88344  public:
88346  SgOmpUnifiedAddressClause( const SgOmpUnifiedAddressClauseStorageClass& source );
88347 
88348  // private: // JJW hack
88349  /*
88350  name AST Memory Allocation Support Variables
88351  Memory allocations support variables
88352 
88353  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
88354  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
88355  and support the AST File I/O Mechanism.
88356  */
88357  /* */
88358 
88359  public:
88360 
88361  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
88362  // to current node (so that it will work cleanly with build functions to specify patterns).
88363  // virtual SgNode* addRegExpAttribute();
88370 
88371 // *** COMMON CODE SECTION ENDS HERE ***
88372 
88373 
88374 // End of memberFunctionString
88375 // Start of memberFunctionString
88376 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
88377 
88378  // the generated cast function
88379  // friend ROSE_DLL_API SgOmpUnifiedAddressClause* isSgOmpUnifiedAddressClause ( SgNode* s );
88380 
88381  typedef SgOmpClause base_node_type;
88382 
88383 
88384 // End of memberFunctionString
88385 
88386 
88387  public:
88388  virtual ~SgOmpUnifiedAddressClause();
88389 
88390 
88391  public:
88392  SgOmpUnifiedAddressClause(Sg_File_Info* startOfConstruct );
88394 
88395  protected:
88396 
88397 
88398 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
88399 
88400 
88401  };
88402 #endif
88403 
88404 // postdeclarations for SgOmpUnifiedAddressClause
88405 
88406 /* #line 88407 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
88407 
88408 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
88409 
88410 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
88411 
88412 
88413 /* #line 88414 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
88414 
88415 
88416 
88417 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
88418 
88419 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
88420 // This code is automatically generated for each
88421 // terminal and non-terminal within the defined
88422 // grammar. There is a simple way to change the
88423 // code to fix bugs etc. See the ROSE README file
88424 // for directions.
88425 
88426 // tps: (02/22/2010): Adding DLL export requirements
88427 #include "rosedll.h"
88428 
88429 // predeclarations for SgOmpUnifiedSharedMemoryClause
88430 
88431 /* #line 88432 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
88432 
88433 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
88434 
88435 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
88436 
88437 #if 1
88438 // Class Definition for SgOmpUnifiedSharedMemoryClause
88439 class ROSE_DLL_API SgOmpUnifiedSharedMemoryClause : public SgOmpClause
88440  {
88441  public:
88442 
88443 
88444 /* #line 88445 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
88445 
88446  virtual SgNode* copy ( SgCopyHelp& help) const override;
88447 // Start of memberFunctionString
88448 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
88449 
88450 // *** COMMON CODE SECTION BEGINS HERE ***
88451 
88452  public:
88453 
88454  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
88455  // and not required which is required to match the other aspects of the copy mechanism code generation.
88456  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
88457  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
88458  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
88459  // virtual SgNode* copy ( const SgCopyHelp & help) const;
88460 
88462  virtual std::string class_name() const override;
88463 
88465  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
88466 
88468  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
88469  // static const VariantT static_variant = V_SgOmpUnifiedSharedMemoryClause;
88470  enum { static_variant = V_SgOmpUnifiedSharedMemoryClause };
88471 
88472  /* the generated cast function */
88474  ROSE_DLL_API friend SgOmpUnifiedSharedMemoryClause* isSgOmpUnifiedSharedMemoryClause( SgNode * s );
88475 
88477  ROSE_DLL_API friend const SgOmpUnifiedSharedMemoryClause* isSgOmpUnifiedSharedMemoryClause( const SgNode * s );
88478 
88479  // ******************************************
88480  // * Memory Pool / New / Delete
88481  // ******************************************
88482 
88483  public:
88485  static const unsigned pool_size; //
88487  static std::vector<unsigned char *> pools; //
88489  static SgOmpUnifiedSharedMemoryClause * next_node; //
88490 
88492  static unsigned long initializeStorageClassArray(SgOmpUnifiedSharedMemoryClauseStorageClass *); //
88493 
88495  static void clearMemoryPool(); //
88496  static void deleteMemoryPool(); //
88497 
88499  static void extendMemoryPoolForFileIO(); //
88500 
88502  static SgOmpUnifiedSharedMemoryClause * getPointerFromGlobalIndex(unsigned long); //
88504  static SgOmpUnifiedSharedMemoryClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
88505 
88507  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
88509  static void resetValidFreepointers(); //
88511  static unsigned long getNumberOfLastValidPointer(); //
88512 
88513 
88514 #if defined(INLINE_FUNCTIONS)
88515 
88516  inline void *operator new (size_t size);
88517 #else
88518 
88519  void *operator new (size_t size);
88520 #endif
88521 
88522  void operator delete (void* pointer, size_t size);
88523 
88524  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
88525  void operator delete (void* pointer)
88526  {
88527  // This is the generated delete operator...
88528  SgOmpUnifiedSharedMemoryClause::operator delete (pointer,sizeof(SgOmpUnifiedSharedMemoryClause));
88529  }
88530 
88532  static size_t numberOfNodes();
88533 
88535  static size_t memoryUsage();
88536 
88537  // End of scope which started in IR nodes specific code
88538  /* */
88539 
88540  /* name Internal Functions
88541  \brief Internal functions ... incomplete-documentation
88542 
88543  These functions have been made public as part of the design, but they are suggested for internal use
88544  or by particularly knowledgeable users for specialized tools or applications.
88545 
88546  \internal We could not make these private because they are required by user for special purposes. And
88547  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
88548 
88549  */
88550 
88551  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
88552  // overridden in every class by *generated* implementation
88554  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
88555  // MS: 06/28/02 container of names of variables or container indices
88556  // used used in the traversal to access AST successor nodes
88557  // overridden in every class by *generated* implementation
88560  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
88561 
88562  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
88563  // than all the vector copies. The implementation for these functions is generated for each class.
88565  virtual size_t get_numberOfTraversalSuccessors() override;
88567  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
88569  virtual size_t get_childIndex(SgNode *child) override;
88570 
88571 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
88572  // MS: 08/16/2002 method for generating RTI information
88574  virtual RTIReturnType roseRTI() override;
88575 #endif
88576  /* */
88577 
88578 
88579 
88580  /* name Deprecated Functions
88581  \brief Deprecated functions ... incomplete-documentation
88582 
88583  These functions have been deprecated from use.
88584  */
88585  /* */
88586 
88588  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
88589 
88590  // JJW (10/16/2008): Changed to a single function in Node.code, and put
88591  // getVariant() in #if 0 block to prevent confusing Doxygen
88592 #if 0
88593 
88594  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
88596  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
88597 #endif
88598  /* */
88599 
88600 
88601 
88602 
88603  public:
88604  /* name Traversal Support Functions
88605  \brief Traversal support functions ... incomplete-documentation
88606 
88607  These functions have been made public as part of the design, but they are suggested for internal use
88608  or by particularly knowledgable users for specialized tools or applications.
88609  */
88610  /* */
88611 
88612  // DQ (11/26/2005): Support for visitor pattern mechanims
88613  // (inferior to ROSE traversal mechanism, experimental).
88617 
88618  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
88620  virtual void accept (ROSE_VisitorPattern & visitor) override;
88621 
88622  // DQ (12/26/2005): Support for traversal based on the memory pool
88625  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
88626 
88630 
88631  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
88632  // This traversal helps support internal tools that call static member functions.
88633  // note: this function operates on the memory pools.
88636  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
88637  /* */
88638 
88639 
88640  public:
88641  /* name Memory Allocation Functions
88642  \brief Memory allocations functions ... incomplete-documentation
88643 
88644  These functions have been made public as part of the design, but they are suggested for internal use
88645  or by particularly knowledgable users for specialized tools or applications.
88646  */
88647  /* */
88648 
88659  virtual bool isInMemoryPool() override;
88660 
88671  virtual void checkDataMemberPointersIfInMemoryPool() override;
88672 
88673  // DQ (4/30/2006): Modified to be a const function.
88688  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
88689 
88699  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
88700 
88712  virtual long getChildIndex( SgNode* childNode ) const override;
88713 
88714  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
88715  // comment here (changed to be a C style comment and not be a doxygen comment).
88716  /* \brief Constructor for use by AST File I/O Mechanism
88717 
88718  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
88719  which obtained via fast binary file I/O from disk.
88720  */
88721  // SgOmpUnifiedSharedMemoryClause( SgOmpUnifiedSharedMemoryClauseStorageClass& source );
88722 
88723 
88724 
88725 
88726 
88727  // JH (10/24/2005): methods added to support the ast file IO
88728  private:
88729 
88730  /* name AST Memory Allocation Support Functions
88731  \brief Memory allocations support....
88732 
88733  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
88734  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
88735  and support the AST File I/O Mechanism.
88736  */
88737  /* */
88738 
88739  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
88740  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
88741  that I use the same type everywhere, if any changes are made. THe second one declares the type
88742  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
88743  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
88744  a correspinding one in the AST_FILE_IO class!
88745  */
88746  // DQ (9/2/2015): This typedef is no longer used, we can't define the
88747  // comment here (changed to be a C style comment and not be a doxygen comment).
88748  /* \brief Typedef used for low level memory access.
88749  */
88750  // typedef unsigned char* TestType;
88751 
88752  // DQ (9/2/2015): This typedef is no longer used, we can't define the
88753  // comment here (changed to be a C style comment and not be a doxygen comment).
88754  /* \brief Typedef used to hold memory addresses as values.
88755  */
88756  // typedef unsigned long AddressType;
88757 
88758 
88759 
88760  // necessary, to have direct access to the p_freepointer and the private methods !
88762  friend class AST_FILE_IO;
88763 
88765  friend class SgOmpUnifiedSharedMemoryClauseStorageClass;
88766 
88768  friend class AstSpecificDataManagingClass;
88769 
88771  friend class AstSpecificDataManagingClassStorageClass;
88772 
88773  public:
88775  SgOmpUnifiedSharedMemoryClause( const SgOmpUnifiedSharedMemoryClauseStorageClass& source );
88776 
88777  // private: // JJW hack
88778  /*
88779  name AST Memory Allocation Support Variables
88780  Memory allocations support variables
88781 
88782  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
88783  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
88784  and support the AST File I/O Mechanism.
88785  */
88786  /* */
88787 
88788  public:
88789 
88790  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
88791  // to current node (so that it will work cleanly with build functions to specify patterns).
88792  // virtual SgNode* addRegExpAttribute();
88799 
88800 // *** COMMON CODE SECTION ENDS HERE ***
88801 
88802 
88803 // End of memberFunctionString
88804 // Start of memberFunctionString
88805 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
88806 
88807  // the generated cast function
88808  // friend ROSE_DLL_API SgOmpUnifiedSharedMemoryClause* isSgOmpUnifiedSharedMemoryClause ( SgNode* s );
88809 
88810  typedef SgOmpClause base_node_type;
88811 
88812 
88813 // End of memberFunctionString
88814 
88815 
88816  public:
88817  virtual ~SgOmpUnifiedSharedMemoryClause();
88818 
88819 
88820  public:
88821  SgOmpUnifiedSharedMemoryClause(Sg_File_Info* startOfConstruct );
88823 
88824  protected:
88825 
88826 
88827 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
88828 
88829 
88830  };
88831 #endif
88832 
88833 // postdeclarations for SgOmpUnifiedSharedMemoryClause
88834 
88835 /* #line 88836 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
88836 
88837 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
88838 
88839 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
88840 
88841 
88842 /* #line 88843 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
88843 
88844 
88845 
88846 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
88847 
88848 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
88849 // This code is automatically generated for each
88850 // terminal and non-terminal within the defined
88851 // grammar. There is a simple way to change the
88852 // code to fix bugs etc. See the ROSE README file
88853 // for directions.
88854 
88855 // tps: (02/22/2010): Adding DLL export requirements
88856 #include "rosedll.h"
88857 
88858 // predeclarations for SgOmpDynamicAllocatorsClause
88859 
88860 /* #line 88861 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
88861 
88862 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
88863 
88864 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
88865 
88866 #if 1
88867 // Class Definition for SgOmpDynamicAllocatorsClause
88868 class ROSE_DLL_API SgOmpDynamicAllocatorsClause : public SgOmpClause
88869  {
88870  public:
88871 
88872 
88873 /* #line 88874 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
88874 
88875  virtual SgNode* copy ( SgCopyHelp& help) const override;
88876 // Start of memberFunctionString
88877 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
88878 
88879 // *** COMMON CODE SECTION BEGINS HERE ***
88880 
88881  public:
88882 
88883  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
88884  // and not required which is required to match the other aspects of the copy mechanism code generation.
88885  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
88886  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
88887  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
88888  // virtual SgNode* copy ( const SgCopyHelp & help) const;
88889 
88891  virtual std::string class_name() const override;
88892 
88894  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
88895 
88897  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
88898  // static const VariantT static_variant = V_SgOmpDynamicAllocatorsClause;
88899  enum { static_variant = V_SgOmpDynamicAllocatorsClause };
88900 
88901  /* the generated cast function */
88903  ROSE_DLL_API friend SgOmpDynamicAllocatorsClause* isSgOmpDynamicAllocatorsClause( SgNode * s );
88904 
88906  ROSE_DLL_API friend const SgOmpDynamicAllocatorsClause* isSgOmpDynamicAllocatorsClause( const SgNode * s );
88907 
88908  // ******************************************
88909  // * Memory Pool / New / Delete
88910  // ******************************************
88911 
88912  public:
88914  static const unsigned pool_size; //
88916  static std::vector<unsigned char *> pools; //
88918  static SgOmpDynamicAllocatorsClause * next_node; //
88919 
88921  static unsigned long initializeStorageClassArray(SgOmpDynamicAllocatorsClauseStorageClass *); //
88922 
88924  static void clearMemoryPool(); //
88925  static void deleteMemoryPool(); //
88926 
88928  static void extendMemoryPoolForFileIO(); //
88929 
88931  static SgOmpDynamicAllocatorsClause * getPointerFromGlobalIndex(unsigned long); //
88933  static SgOmpDynamicAllocatorsClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
88934 
88936  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
88938  static void resetValidFreepointers(); //
88940  static unsigned long getNumberOfLastValidPointer(); //
88941 
88942 
88943 #if defined(INLINE_FUNCTIONS)
88944 
88945  inline void *operator new (size_t size);
88946 #else
88947 
88948  void *operator new (size_t size);
88949 #endif
88950 
88951  void operator delete (void* pointer, size_t size);
88952 
88953  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
88954  void operator delete (void* pointer)
88955  {
88956  // This is the generated delete operator...
88957  SgOmpDynamicAllocatorsClause::operator delete (pointer,sizeof(SgOmpDynamicAllocatorsClause));
88958  }
88959 
88961  static size_t numberOfNodes();
88962 
88964  static size_t memoryUsage();
88965 
88966  // End of scope which started in IR nodes specific code
88967  /* */
88968 
88969  /* name Internal Functions
88970  \brief Internal functions ... incomplete-documentation
88971 
88972  These functions have been made public as part of the design, but they are suggested for internal use
88973  or by particularly knowledgeable users for specialized tools or applications.
88974 
88975  \internal We could not make these private because they are required by user for special purposes. And
88976  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
88977 
88978  */
88979 
88980  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
88981  // overridden in every class by *generated* implementation
88983  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
88984  // MS: 06/28/02 container of names of variables or container indices
88985  // used used in the traversal to access AST successor nodes
88986  // overridden in every class by *generated* implementation
88989  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
88990 
88991  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
88992  // than all the vector copies. The implementation for these functions is generated for each class.
88994  virtual size_t get_numberOfTraversalSuccessors() override;
88996  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
88998  virtual size_t get_childIndex(SgNode *child) override;
88999 
89000 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
89001  // MS: 08/16/2002 method for generating RTI information
89003  virtual RTIReturnType roseRTI() override;
89004 #endif
89005  /* */
89006 
89007 
89008 
89009  /* name Deprecated Functions
89010  \brief Deprecated functions ... incomplete-documentation
89011 
89012  These functions have been deprecated from use.
89013  */
89014  /* */
89015 
89017  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
89018 
89019  // JJW (10/16/2008): Changed to a single function in Node.code, and put
89020  // getVariant() in #if 0 block to prevent confusing Doxygen
89021 #if 0
89022 
89023  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
89025  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
89026 #endif
89027  /* */
89028 
89029 
89030 
89031 
89032  public:
89033  /* name Traversal Support Functions
89034  \brief Traversal support functions ... incomplete-documentation
89035 
89036  These functions have been made public as part of the design, but they are suggested for internal use
89037  or by particularly knowledgable users for specialized tools or applications.
89038  */
89039  /* */
89040 
89041  // DQ (11/26/2005): Support for visitor pattern mechanims
89042  // (inferior to ROSE traversal mechanism, experimental).
89046 
89047  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
89049  virtual void accept (ROSE_VisitorPattern & visitor) override;
89050 
89051  // DQ (12/26/2005): Support for traversal based on the memory pool
89054  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
89055 
89059 
89060  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
89061  // This traversal helps support internal tools that call static member functions.
89062  // note: this function operates on the memory pools.
89065  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
89066  /* */
89067 
89068 
89069  public:
89070  /* name Memory Allocation Functions
89071  \brief Memory allocations functions ... incomplete-documentation
89072 
89073  These functions have been made public as part of the design, but they are suggested for internal use
89074  or by particularly knowledgable users for specialized tools or applications.
89075  */
89076  /* */
89077 
89088  virtual bool isInMemoryPool() override;
89089 
89100  virtual void checkDataMemberPointersIfInMemoryPool() override;
89101 
89102  // DQ (4/30/2006): Modified to be a const function.
89117  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
89118 
89128  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
89129 
89141  virtual long getChildIndex( SgNode* childNode ) const override;
89142 
89143  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
89144  // comment here (changed to be a C style comment and not be a doxygen comment).
89145  /* \brief Constructor for use by AST File I/O Mechanism
89146 
89147  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
89148  which obtained via fast binary file I/O from disk.
89149  */
89150  // SgOmpDynamicAllocatorsClause( SgOmpDynamicAllocatorsClauseStorageClass& source );
89151 
89152 
89153 
89154 
89155 
89156  // JH (10/24/2005): methods added to support the ast file IO
89157  private:
89158 
89159  /* name AST Memory Allocation Support Functions
89160  \brief Memory allocations support....
89161 
89162  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
89163  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
89164  and support the AST File I/O Mechanism.
89165  */
89166  /* */
89167 
89168  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
89169  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
89170  that I use the same type everywhere, if any changes are made. THe second one declares the type
89171  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
89172  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
89173  a correspinding one in the AST_FILE_IO class!
89174  */
89175  // DQ (9/2/2015): This typedef is no longer used, we can't define the
89176  // comment here (changed to be a C style comment and not be a doxygen comment).
89177  /* \brief Typedef used for low level memory access.
89178  */
89179  // typedef unsigned char* TestType;
89180 
89181  // DQ (9/2/2015): This typedef is no longer used, we can't define the
89182  // comment here (changed to be a C style comment and not be a doxygen comment).
89183  /* \brief Typedef used to hold memory addresses as values.
89184  */
89185  // typedef unsigned long AddressType;
89186 
89187 
89188 
89189  // necessary, to have direct access to the p_freepointer and the private methods !
89191  friend class AST_FILE_IO;
89192 
89194  friend class SgOmpDynamicAllocatorsClauseStorageClass;
89195 
89197  friend class AstSpecificDataManagingClass;
89198 
89200  friend class AstSpecificDataManagingClassStorageClass;
89201 
89202  public:
89204  SgOmpDynamicAllocatorsClause( const SgOmpDynamicAllocatorsClauseStorageClass& source );
89205 
89206  // private: // JJW hack
89207  /*
89208  name AST Memory Allocation Support Variables
89209  Memory allocations support variables
89210 
89211  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
89212  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
89213  and support the AST File I/O Mechanism.
89214  */
89215  /* */
89216 
89217  public:
89218 
89219  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
89220  // to current node (so that it will work cleanly with build functions to specify patterns).
89221  // virtual SgNode* addRegExpAttribute();
89228 
89229 // *** COMMON CODE SECTION ENDS HERE ***
89230 
89231 
89232 // End of memberFunctionString
89233 // Start of memberFunctionString
89234 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
89235 
89236  // the generated cast function
89237  // friend ROSE_DLL_API SgOmpDynamicAllocatorsClause* isSgOmpDynamicAllocatorsClause ( SgNode* s );
89238 
89239  typedef SgOmpClause base_node_type;
89240 
89241 
89242 // End of memberFunctionString
89243 
89244 
89245  public:
89246  virtual ~SgOmpDynamicAllocatorsClause();
89247 
89248 
89249  public:
89250  SgOmpDynamicAllocatorsClause(Sg_File_Info* startOfConstruct );
89252 
89253  protected:
89254 
89255 
89256 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
89257 
89258 
89259  };
89260 #endif
89261 
89262 // postdeclarations for SgOmpDynamicAllocatorsClause
89263 
89264 /* #line 89265 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
89265 
89266 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
89267 
89268 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
89269 
89270 
89271 /* #line 89272 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
89272 
89273 
89274 
89275 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
89276 
89277 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
89278 // This code is automatically generated for each
89279 // terminal and non-terminal within the defined
89280 // grammar. There is a simple way to change the
89281 // code to fix bugs etc. See the ROSE README file
89282 // for directions.
89283 
89284 // tps: (02/22/2010): Adding DLL export requirements
89285 #include "rosedll.h"
89286 
89287 // predeclarations for SgOmpParallelClause
89288 
89289 /* #line 89290 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
89290 
89291 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
89292 
89293 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
89294 
89295 #if 1
89296 // Class Definition for SgOmpParallelClause
89297 class ROSE_DLL_API SgOmpParallelClause : public SgOmpClause
89298  {
89299  public:
89300 
89301 
89302 /* #line 89303 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
89303 
89304  virtual SgNode* copy ( SgCopyHelp& help) const override;
89305 // Start of memberFunctionString
89306 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
89307 
89308 // *** COMMON CODE SECTION BEGINS HERE ***
89309 
89310  public:
89311 
89312  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
89313  // and not required which is required to match the other aspects of the copy mechanism code generation.
89314  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
89315  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
89316  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
89317  // virtual SgNode* copy ( const SgCopyHelp & help) const;
89318 
89320  virtual std::string class_name() const override;
89321 
89323  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
89324 
89326  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
89327  // static const VariantT static_variant = V_SgOmpParallelClause;
89328  enum { static_variant = V_SgOmpParallelClause };
89329 
89330  /* the generated cast function */
89332  ROSE_DLL_API friend SgOmpParallelClause* isSgOmpParallelClause( SgNode * s );
89333 
89335  ROSE_DLL_API friend const SgOmpParallelClause* isSgOmpParallelClause( const SgNode * s );
89336 
89337  // ******************************************
89338  // * Memory Pool / New / Delete
89339  // ******************************************
89340 
89341  public:
89343  static const unsigned pool_size; //
89345  static std::vector<unsigned char *> pools; //
89347  static SgOmpParallelClause * next_node; //
89348 
89350  static unsigned long initializeStorageClassArray(SgOmpParallelClauseStorageClass *); //
89351 
89353  static void clearMemoryPool(); //
89354  static void deleteMemoryPool(); //
89355 
89357  static void extendMemoryPoolForFileIO(); //
89358 
89360  static SgOmpParallelClause * getPointerFromGlobalIndex(unsigned long); //
89362  static SgOmpParallelClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
89363 
89365  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
89367  static void resetValidFreepointers(); //
89369  static unsigned long getNumberOfLastValidPointer(); //
89370 
89371 
89372 #if defined(INLINE_FUNCTIONS)
89373 
89374  inline void *operator new (size_t size);
89375 #else
89376 
89377  void *operator new (size_t size);
89378 #endif
89379 
89380  void operator delete (void* pointer, size_t size);
89381 
89382  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
89383  void operator delete (void* pointer)
89384  {
89385  // This is the generated delete operator...
89386  SgOmpParallelClause::operator delete (pointer,sizeof(SgOmpParallelClause));
89387  }
89388 
89390  static size_t numberOfNodes();
89391 
89393  static size_t memoryUsage();
89394 
89395  // End of scope which started in IR nodes specific code
89396  /* */
89397 
89398  /* name Internal Functions
89399  \brief Internal functions ... incomplete-documentation
89400 
89401  These functions have been made public as part of the design, but they are suggested for internal use
89402  or by particularly knowledgeable users for specialized tools or applications.
89403 
89404  \internal We could not make these private because they are required by user for special purposes. And
89405  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
89406 
89407  */
89408 
89409  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
89410  // overridden in every class by *generated* implementation
89412  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
89413  // MS: 06/28/02 container of names of variables or container indices
89414  // used used in the traversal to access AST successor nodes
89415  // overridden in every class by *generated* implementation
89418  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
89419 
89420  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
89421  // than all the vector copies. The implementation for these functions is generated for each class.
89423  virtual size_t get_numberOfTraversalSuccessors() override;
89425  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
89427  virtual size_t get_childIndex(SgNode *child) override;
89428 
89429 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
89430  // MS: 08/16/2002 method for generating RTI information
89432  virtual RTIReturnType roseRTI() override;
89433 #endif
89434  /* */
89435 
89436 
89437 
89438  /* name Deprecated Functions
89439  \brief Deprecated functions ... incomplete-documentation
89440 
89441  These functions have been deprecated from use.
89442  */
89443  /* */
89444 
89446  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
89447 
89448  // JJW (10/16/2008): Changed to a single function in Node.code, and put
89449  // getVariant() in #if 0 block to prevent confusing Doxygen
89450 #if 0
89451 
89452  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
89454  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
89455 #endif
89456  /* */
89457 
89458 
89459 
89460 
89461  public:
89462  /* name Traversal Support Functions
89463  \brief Traversal support functions ... incomplete-documentation
89464 
89465  These functions have been made public as part of the design, but they are suggested for internal use
89466  or by particularly knowledgable users for specialized tools or applications.
89467  */
89468  /* */
89469 
89470  // DQ (11/26/2005): Support for visitor pattern mechanims
89471  // (inferior to ROSE traversal mechanism, experimental).
89475 
89476  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
89478  virtual void accept (ROSE_VisitorPattern & visitor) override;
89479 
89480  // DQ (12/26/2005): Support for traversal based on the memory pool
89483  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
89484 
89488 
89489  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
89490  // This traversal helps support internal tools that call static member functions.
89491  // note: this function operates on the memory pools.
89494  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
89495  /* */
89496 
89497 
89498  public:
89499  /* name Memory Allocation Functions
89500  \brief Memory allocations functions ... incomplete-documentation
89501 
89502  These functions have been made public as part of the design, but they are suggested for internal use
89503  or by particularly knowledgable users for specialized tools or applications.
89504  */
89505  /* */
89506 
89517  virtual bool isInMemoryPool() override;
89518 
89529  virtual void checkDataMemberPointersIfInMemoryPool() override;
89530 
89531  // DQ (4/30/2006): Modified to be a const function.
89546  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
89547 
89557  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
89558 
89570  virtual long getChildIndex( SgNode* childNode ) const override;
89571 
89572  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
89573  // comment here (changed to be a C style comment and not be a doxygen comment).
89574  /* \brief Constructor for use by AST File I/O Mechanism
89575 
89576  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
89577  which obtained via fast binary file I/O from disk.
89578  */
89579  // SgOmpParallelClause( SgOmpParallelClauseStorageClass& source );
89580 
89581 
89582 
89583 
89584 
89585  // JH (10/24/2005): methods added to support the ast file IO
89586  private:
89587 
89588  /* name AST Memory Allocation Support Functions
89589  \brief Memory allocations support....
89590 
89591  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
89592  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
89593  and support the AST File I/O Mechanism.
89594  */
89595  /* */
89596 
89597  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
89598  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
89599  that I use the same type everywhere, if any changes are made. THe second one declares the type
89600  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
89601  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
89602  a correspinding one in the AST_FILE_IO class!
89603  */
89604  // DQ (9/2/2015): This typedef is no longer used, we can't define the
89605  // comment here (changed to be a C style comment and not be a doxygen comment).
89606  /* \brief Typedef used for low level memory access.
89607  */
89608  // typedef unsigned char* TestType;
89609 
89610  // DQ (9/2/2015): This typedef is no longer used, we can't define the
89611  // comment here (changed to be a C style comment and not be a doxygen comment).
89612  /* \brief Typedef used to hold memory addresses as values.
89613  */
89614  // typedef unsigned long AddressType;
89615 
89616 
89617 
89618  // necessary, to have direct access to the p_freepointer and the private methods !
89620  friend class AST_FILE_IO;
89621 
89623  friend class SgOmpParallelClauseStorageClass;
89624 
89626  friend class AstSpecificDataManagingClass;
89627 
89629  friend class AstSpecificDataManagingClassStorageClass;
89630 
89631  public:
89633  SgOmpParallelClause( const SgOmpParallelClauseStorageClass& source );
89634 
89635  // private: // JJW hack
89636  /*
89637  name AST Memory Allocation Support Variables
89638  Memory allocations support variables
89639 
89640  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
89641  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
89642  and support the AST File I/O Mechanism.
89643  */
89644  /* */
89645 
89646  public:
89647 
89648  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
89649  // to current node (so that it will work cleanly with build functions to specify patterns).
89650  // virtual SgNode* addRegExpAttribute();
89657 
89658 // *** COMMON CODE SECTION ENDS HERE ***
89659 
89660 
89661 // End of memberFunctionString
89662 // Start of memberFunctionString
89663 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
89664 
89665  // the generated cast function
89666  // friend ROSE_DLL_API SgOmpParallelClause* isSgOmpParallelClause ( SgNode* s );
89667 
89668  typedef SgOmpClause base_node_type;
89669 
89670 
89671 // End of memberFunctionString
89672 
89673 
89674  public:
89675  virtual ~SgOmpParallelClause();
89676 
89677 
89678  public:
89679  SgOmpParallelClause(Sg_File_Info* startOfConstruct );
89681 
89682  protected:
89683 
89684 
89685 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
89686 
89687 
89688  };
89689 #endif
89690 
89691 // postdeclarations for SgOmpParallelClause
89692 
89693 /* #line 89694 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
89694 
89695 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
89696 
89697 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
89698 
89699 
89700 /* #line 89701 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
89701 
89702 
89703 
89704 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
89705 
89706 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
89707 // This code is automatically generated for each
89708 // terminal and non-terminal within the defined
89709 // grammar. There is a simple way to change the
89710 // code to fix bugs etc. See the ROSE README file
89711 // for directions.
89712 
89713 // tps: (02/22/2010): Adding DLL export requirements
89714 #include "rosedll.h"
89715 
89716 // predeclarations for SgOmpSectionsClause
89717 
89718 /* #line 89719 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
89719 
89720 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
89721 
89722 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
89723 
89724 #if 1
89725 // Class Definition for SgOmpSectionsClause
89726 class ROSE_DLL_API SgOmpSectionsClause : public SgOmpClause
89727  {
89728  public:
89729 
89730 
89731 /* #line 89732 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
89732 
89733  virtual SgNode* copy ( SgCopyHelp& help) const override;
89734 // Start of memberFunctionString
89735 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
89736 
89737 // *** COMMON CODE SECTION BEGINS HERE ***
89738 
89739  public:
89740 
89741  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
89742  // and not required which is required to match the other aspects of the copy mechanism code generation.
89743  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
89744  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
89745  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
89746  // virtual SgNode* copy ( const SgCopyHelp & help) const;
89747 
89749  virtual std::string class_name() const override;
89750 
89752  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
89753 
89755  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
89756  // static const VariantT static_variant = V_SgOmpSectionsClause;
89757  enum { static_variant = V_SgOmpSectionsClause };
89758 
89759  /* the generated cast function */
89761  ROSE_DLL_API friend SgOmpSectionsClause* isSgOmpSectionsClause( SgNode * s );
89762 
89764  ROSE_DLL_API friend const SgOmpSectionsClause* isSgOmpSectionsClause( const SgNode * s );
89765 
89766  // ******************************************
89767  // * Memory Pool / New / Delete
89768  // ******************************************
89769 
89770  public:
89772  static const unsigned pool_size; //
89774  static std::vector<unsigned char *> pools; //
89776  static SgOmpSectionsClause * next_node; //
89777 
89779  static unsigned long initializeStorageClassArray(SgOmpSectionsClauseStorageClass *); //
89780 
89782  static void clearMemoryPool(); //
89783  static void deleteMemoryPool(); //
89784 
89786  static void extendMemoryPoolForFileIO(); //
89787 
89789  static SgOmpSectionsClause * getPointerFromGlobalIndex(unsigned long); //
89791  static SgOmpSectionsClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
89792 
89794  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
89796  static void resetValidFreepointers(); //
89798  static unsigned long getNumberOfLastValidPointer(); //
89799 
89800 
89801 #if defined(INLINE_FUNCTIONS)
89802 
89803  inline void *operator new (size_t size);
89804 #else
89805 
89806  void *operator new (size_t size);
89807 #endif
89808 
89809  void operator delete (void* pointer, size_t size);
89810 
89811  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
89812  void operator delete (void* pointer)
89813  {
89814  // This is the generated delete operator...
89815  SgOmpSectionsClause::operator delete (pointer,sizeof(SgOmpSectionsClause));
89816  }
89817 
89819  static size_t numberOfNodes();
89820 
89822  static size_t memoryUsage();
89823 
89824  // End of scope which started in IR nodes specific code
89825  /* */
89826 
89827  /* name Internal Functions
89828  \brief Internal functions ... incomplete-documentation
89829 
89830  These functions have been made public as part of the design, but they are suggested for internal use
89831  or by particularly knowledgeable users for specialized tools or applications.
89832 
89833  \internal We could not make these private because they are required by user for special purposes. And
89834  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
89835 
89836  */
89837 
89838  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
89839  // overridden in every class by *generated* implementation
89841  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
89842  // MS: 06/28/02 container of names of variables or container indices
89843  // used used in the traversal to access AST successor nodes
89844  // overridden in every class by *generated* implementation
89847  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
89848 
89849  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
89850  // than all the vector copies. The implementation for these functions is generated for each class.
89852  virtual size_t get_numberOfTraversalSuccessors() override;
89854  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
89856  virtual size_t get_childIndex(SgNode *child) override;
89857 
89858 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
89859  // MS: 08/16/2002 method for generating RTI information
89861  virtual RTIReturnType roseRTI() override;
89862 #endif
89863  /* */
89864 
89865 
89866 
89867  /* name Deprecated Functions
89868  \brief Deprecated functions ... incomplete-documentation
89869 
89870  These functions have been deprecated from use.
89871  */
89872  /* */
89873 
89875  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
89876 
89877  // JJW (10/16/2008): Changed to a single function in Node.code, and put
89878  // getVariant() in #if 0 block to prevent confusing Doxygen
89879 #if 0
89880 
89881  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
89883  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
89884 #endif
89885  /* */
89886 
89887 
89888 
89889 
89890  public:
89891  /* name Traversal Support Functions
89892  \brief Traversal support functions ... incomplete-documentation
89893 
89894  These functions have been made public as part of the design, but they are suggested for internal use
89895  or by particularly knowledgable users for specialized tools or applications.
89896  */
89897  /* */
89898 
89899  // DQ (11/26/2005): Support for visitor pattern mechanims
89900  // (inferior to ROSE traversal mechanism, experimental).
89904 
89905  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
89907  virtual void accept (ROSE_VisitorPattern & visitor) override;
89908 
89909  // DQ (12/26/2005): Support for traversal based on the memory pool
89912  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
89913 
89917 
89918  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
89919  // This traversal helps support internal tools that call static member functions.
89920  // note: this function operates on the memory pools.
89923  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
89924  /* */
89925 
89926 
89927  public:
89928  /* name Memory Allocation Functions
89929  \brief Memory allocations functions ... incomplete-documentation
89930 
89931  These functions have been made public as part of the design, but they are suggested for internal use
89932  or by particularly knowledgable users for specialized tools or applications.
89933  */
89934  /* */
89935 
89946  virtual bool isInMemoryPool() override;
89947 
89958  virtual void checkDataMemberPointersIfInMemoryPool() override;
89959 
89960  // DQ (4/30/2006): Modified to be a const function.
89975  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
89976 
89986  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
89987 
89999  virtual long getChildIndex( SgNode* childNode ) const override;
90000 
90001  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
90002  // comment here (changed to be a C style comment and not be a doxygen comment).
90003  /* \brief Constructor for use by AST File I/O Mechanism
90004 
90005  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
90006  which obtained via fast binary file I/O from disk.
90007  */
90008  // SgOmpSectionsClause( SgOmpSectionsClauseStorageClass& source );
90009 
90010 
90011 
90012 
90013 
90014  // JH (10/24/2005): methods added to support the ast file IO
90015  private:
90016 
90017  /* name AST Memory Allocation Support Functions
90018  \brief Memory allocations support....
90019 
90020  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
90021  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
90022  and support the AST File I/O Mechanism.
90023  */
90024  /* */
90025 
90026  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
90027  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
90028  that I use the same type everywhere, if any changes are made. THe second one declares the type
90029  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
90030  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
90031  a correspinding one in the AST_FILE_IO class!
90032  */
90033  // DQ (9/2/2015): This typedef is no longer used, we can't define the
90034  // comment here (changed to be a C style comment and not be a doxygen comment).
90035  /* \brief Typedef used for low level memory access.
90036  */
90037  // typedef unsigned char* TestType;
90038 
90039  // DQ (9/2/2015): This typedef is no longer used, we can't define the
90040  // comment here (changed to be a C style comment and not be a doxygen comment).
90041  /* \brief Typedef used to hold memory addresses as values.
90042  */
90043  // typedef unsigned long AddressType;
90044 
90045 
90046 
90047  // necessary, to have direct access to the p_freepointer and the private methods !
90049  friend class AST_FILE_IO;
90050 
90052  friend class SgOmpSectionsClauseStorageClass;
90053 
90055  friend class AstSpecificDataManagingClass;
90056 
90058  friend class AstSpecificDataManagingClassStorageClass;
90059 
90060  public:
90062  SgOmpSectionsClause( const SgOmpSectionsClauseStorageClass& source );
90063 
90064  // private: // JJW hack
90065  /*
90066  name AST Memory Allocation Support Variables
90067  Memory allocations support variables
90068 
90069  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
90070  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
90071  and support the AST File I/O Mechanism.
90072  */
90073  /* */
90074 
90075  public:
90076 
90077  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
90078  // to current node (so that it will work cleanly with build functions to specify patterns).
90079  // virtual SgNode* addRegExpAttribute();
90086 
90087 // *** COMMON CODE SECTION ENDS HERE ***
90088 
90089 
90090 // End of memberFunctionString
90091 // Start of memberFunctionString
90092 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
90093 
90094  // the generated cast function
90095  // friend ROSE_DLL_API SgOmpSectionsClause* isSgOmpSectionsClause ( SgNode* s );
90096 
90097  typedef SgOmpClause base_node_type;
90098 
90099 
90100 // End of memberFunctionString
90101 
90102 
90103  public:
90104  virtual ~SgOmpSectionsClause();
90105 
90106 
90107  public:
90108  SgOmpSectionsClause(Sg_File_Info* startOfConstruct );
90110 
90111  protected:
90112 
90113 
90114 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
90115 
90116 
90117  };
90118 #endif
90119 
90120 // postdeclarations for SgOmpSectionsClause
90121 
90122 /* #line 90123 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
90123 
90124 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
90125 
90126 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
90127 
90128 
90129 /* #line 90130 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
90130 
90131 
90132 
90133 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
90134 
90135 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
90136 // This code is automatically generated for each
90137 // terminal and non-terminal within the defined
90138 // grammar. There is a simple way to change the
90139 // code to fix bugs etc. See the ROSE README file
90140 // for directions.
90141 
90142 // tps: (02/22/2010): Adding DLL export requirements
90143 #include "rosedll.h"
90144 
90145 // predeclarations for SgOmpForClause
90146 
90147 /* #line 90148 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
90148 
90149 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
90150 
90151 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
90152 
90153 #if 1
90154 // Class Definition for SgOmpForClause
90155 class ROSE_DLL_API SgOmpForClause : public SgOmpClause
90156  {
90157  public:
90158 
90159 
90160 /* #line 90161 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
90161 
90162  virtual SgNode* copy ( SgCopyHelp& help) const override;
90163 // Start of memberFunctionString
90164 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
90165 
90166 // *** COMMON CODE SECTION BEGINS HERE ***
90167 
90168  public:
90169 
90170  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
90171  // and not required which is required to match the other aspects of the copy mechanism code generation.
90172  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
90173  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
90174  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
90175  // virtual SgNode* copy ( const SgCopyHelp & help) const;
90176 
90178  virtual std::string class_name() const override;
90179 
90181  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
90182 
90184  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
90185  // static const VariantT static_variant = V_SgOmpForClause;
90186  enum { static_variant = V_SgOmpForClause };
90187 
90188  /* the generated cast function */
90190  ROSE_DLL_API friend SgOmpForClause* isSgOmpForClause( SgNode * s );
90191 
90193  ROSE_DLL_API friend const SgOmpForClause* isSgOmpForClause( const SgNode * s );
90194 
90195  // ******************************************
90196  // * Memory Pool / New / Delete
90197  // ******************************************
90198 
90199  public:
90201  static const unsigned pool_size; //
90203  static std::vector<unsigned char *> pools; //
90205  static SgOmpForClause * next_node; //
90206 
90208  static unsigned long initializeStorageClassArray(SgOmpForClauseStorageClass *); //
90209 
90211  static void clearMemoryPool(); //
90212  static void deleteMemoryPool(); //
90213 
90215  static void extendMemoryPoolForFileIO(); //
90216 
90218  static SgOmpForClause * getPointerFromGlobalIndex(unsigned long); //
90220  static SgOmpForClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
90221 
90223  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
90225  static void resetValidFreepointers(); //
90227  static unsigned long getNumberOfLastValidPointer(); //
90228 
90229 
90230 #if defined(INLINE_FUNCTIONS)
90231 
90232  inline void *operator new (size_t size);
90233 #else
90234 
90235  void *operator new (size_t size);
90236 #endif
90237 
90238  void operator delete (void* pointer, size_t size);
90239 
90240  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
90241  void operator delete (void* pointer)
90242  {
90243  // This is the generated delete operator...
90244  SgOmpForClause::operator delete (pointer,sizeof(SgOmpForClause));
90245  }
90246 
90248  static size_t numberOfNodes();
90249 
90251  static size_t memoryUsage();
90252 
90253  // End of scope which started in IR nodes specific code
90254  /* */
90255 
90256  /* name Internal Functions
90257  \brief Internal functions ... incomplete-documentation
90258 
90259  These functions have been made public as part of the design, but they are suggested for internal use
90260  or by particularly knowledgeable users for specialized tools or applications.
90261 
90262  \internal We could not make these private because they are required by user for special purposes. And
90263  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
90264 
90265  */
90266 
90267  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
90268  // overridden in every class by *generated* implementation
90270  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
90271  // MS: 06/28/02 container of names of variables or container indices
90272  // used used in the traversal to access AST successor nodes
90273  // overridden in every class by *generated* implementation
90276  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
90277 
90278  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
90279  // than all the vector copies. The implementation for these functions is generated for each class.
90281  virtual size_t get_numberOfTraversalSuccessors() override;
90283  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
90285  virtual size_t get_childIndex(SgNode *child) override;
90286 
90287 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
90288  // MS: 08/16/2002 method for generating RTI information
90290  virtual RTIReturnType roseRTI() override;
90291 #endif
90292  /* */
90293 
90294 
90295 
90296  /* name Deprecated Functions
90297  \brief Deprecated functions ... incomplete-documentation
90298 
90299  These functions have been deprecated from use.
90300  */
90301  /* */
90302 
90304  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
90305 
90306  // JJW (10/16/2008): Changed to a single function in Node.code, and put
90307  // getVariant() in #if 0 block to prevent confusing Doxygen
90308 #if 0
90309 
90310  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
90312  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
90313 #endif
90314  /* */
90315 
90316 
90317 
90318 
90319  public:
90320  /* name Traversal Support Functions
90321  \brief Traversal support functions ... incomplete-documentation
90322 
90323  These functions have been made public as part of the design, but they are suggested for internal use
90324  or by particularly knowledgable users for specialized tools or applications.
90325  */
90326  /* */
90327 
90328  // DQ (11/26/2005): Support for visitor pattern mechanims
90329  // (inferior to ROSE traversal mechanism, experimental).
90333 
90334  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
90336  virtual void accept (ROSE_VisitorPattern & visitor) override;
90337 
90338  // DQ (12/26/2005): Support for traversal based on the memory pool
90341  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
90342 
90346 
90347  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
90348  // This traversal helps support internal tools that call static member functions.
90349  // note: this function operates on the memory pools.
90352  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
90353  /* */
90354 
90355 
90356  public:
90357  /* name Memory Allocation Functions
90358  \brief Memory allocations functions ... incomplete-documentation
90359 
90360  These functions have been made public as part of the design, but they are suggested for internal use
90361  or by particularly knowledgable users for specialized tools or applications.
90362  */
90363  /* */
90364 
90375  virtual bool isInMemoryPool() override;
90376 
90387  virtual void checkDataMemberPointersIfInMemoryPool() override;
90388 
90389  // DQ (4/30/2006): Modified to be a const function.
90404  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
90405 
90415  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
90416 
90428  virtual long getChildIndex( SgNode* childNode ) const override;
90429 
90430  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
90431  // comment here (changed to be a C style comment and not be a doxygen comment).
90432  /* \brief Constructor for use by AST File I/O Mechanism
90433 
90434  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
90435  which obtained via fast binary file I/O from disk.
90436  */
90437  // SgOmpForClause( SgOmpForClauseStorageClass& source );
90438 
90439 
90440 
90441 
90442 
90443  // JH (10/24/2005): methods added to support the ast file IO
90444  private:
90445 
90446  /* name AST Memory Allocation Support Functions
90447  \brief Memory allocations support....
90448 
90449  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
90450  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
90451  and support the AST File I/O Mechanism.
90452  */
90453  /* */
90454 
90455  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
90456  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
90457  that I use the same type everywhere, if any changes are made. THe second one declares the type
90458  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
90459  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
90460  a correspinding one in the AST_FILE_IO class!
90461  */
90462  // DQ (9/2/2015): This typedef is no longer used, we can't define the
90463  // comment here (changed to be a C style comment and not be a doxygen comment).
90464  /* \brief Typedef used for low level memory access.
90465  */
90466  // typedef unsigned char* TestType;
90467 
90468  // DQ (9/2/2015): This typedef is no longer used, we can't define the
90469  // comment here (changed to be a C style comment and not be a doxygen comment).
90470  /* \brief Typedef used to hold memory addresses as values.
90471  */
90472  // typedef unsigned long AddressType;
90473 
90474 
90475 
90476  // necessary, to have direct access to the p_freepointer and the private methods !
90478  friend class AST_FILE_IO;
90479 
90481  friend class SgOmpForClauseStorageClass;
90482 
90484  friend class AstSpecificDataManagingClass;
90485 
90487  friend class AstSpecificDataManagingClassStorageClass;
90488 
90489  public:
90491  SgOmpForClause( const SgOmpForClauseStorageClass& source );
90492 
90493  // private: // JJW hack
90494  /*
90495  name AST Memory Allocation Support Variables
90496  Memory allocations support variables
90497 
90498  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
90499  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
90500  and support the AST File I/O Mechanism.
90501  */
90502  /* */
90503 
90504  public:
90505 
90506  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
90507  // to current node (so that it will work cleanly with build functions to specify patterns).
90508  // virtual SgNode* addRegExpAttribute();
90515 
90516 // *** COMMON CODE SECTION ENDS HERE ***
90517 
90518 
90519 // End of memberFunctionString
90520 // Start of memberFunctionString
90521 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
90522 
90523  // the generated cast function
90524  // friend ROSE_DLL_API SgOmpForClause* isSgOmpForClause ( SgNode* s );
90525 
90526  typedef SgOmpClause base_node_type;
90527 
90528 
90529 // End of memberFunctionString
90530 
90531 
90532  public:
90533  virtual ~SgOmpForClause();
90534 
90535 
90536  public:
90537  SgOmpForClause(Sg_File_Info* startOfConstruct );
90538  SgOmpForClause();
90539 
90540  protected:
90541 
90542 
90543 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
90544 
90545 
90546  };
90547 #endif
90548 
90549 // postdeclarations for SgOmpForClause
90550 
90551 /* #line 90552 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
90552 
90553 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
90554 
90555 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
90556 
90557 
90558 /* #line 90559 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
90559 
90560 
90561 
90562 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
90563 
90564 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
90565 // This code is automatically generated for each
90566 // terminal and non-terminal within the defined
90567 // grammar. There is a simple way to change the
90568 // code to fix bugs etc. See the ROSE README file
90569 // for directions.
90570 
90571 // tps: (02/22/2010): Adding DLL export requirements
90572 #include "rosedll.h"
90573 
90574 // predeclarations for SgOmpTaskgroupClause
90575 
90576 /* #line 90577 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
90577 
90578 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
90579 
90580 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
90581 
90582 #if 1
90583 // Class Definition for SgOmpTaskgroupClause
90584 class ROSE_DLL_API SgOmpTaskgroupClause : public SgOmpClause
90585  {
90586  public:
90587 
90588 
90589 /* #line 90590 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
90590 
90591  virtual SgNode* copy ( SgCopyHelp& help) const override;
90592 // Start of memberFunctionString
90593 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
90594 
90595 // *** COMMON CODE SECTION BEGINS HERE ***
90596 
90597  public:
90598 
90599  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
90600  // and not required which is required to match the other aspects of the copy mechanism code generation.
90601  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
90602  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
90603  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
90604  // virtual SgNode* copy ( const SgCopyHelp & help) const;
90605 
90607  virtual std::string class_name() const override;
90608 
90610  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
90611 
90613  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
90614  // static const VariantT static_variant = V_SgOmpTaskgroupClause;
90615  enum { static_variant = V_SgOmpTaskgroupClause };
90616 
90617  /* the generated cast function */
90619  ROSE_DLL_API friend SgOmpTaskgroupClause* isSgOmpTaskgroupClause( SgNode * s );
90620 
90622  ROSE_DLL_API friend const SgOmpTaskgroupClause* isSgOmpTaskgroupClause( const SgNode * s );
90623 
90624  // ******************************************
90625  // * Memory Pool / New / Delete
90626  // ******************************************
90627 
90628  public:
90630  static const unsigned pool_size; //
90632  static std::vector<unsigned char *> pools; //
90634  static SgOmpTaskgroupClause * next_node; //
90635 
90637  static unsigned long initializeStorageClassArray(SgOmpTaskgroupClauseStorageClass *); //
90638 
90640  static void clearMemoryPool(); //
90641  static void deleteMemoryPool(); //
90642 
90644  static void extendMemoryPoolForFileIO(); //
90645 
90647  static SgOmpTaskgroupClause * getPointerFromGlobalIndex(unsigned long); //
90649  static SgOmpTaskgroupClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
90650 
90652  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
90654  static void resetValidFreepointers(); //
90656  static unsigned long getNumberOfLastValidPointer(); //
90657 
90658 
90659 #if defined(INLINE_FUNCTIONS)
90660 
90661  inline void *operator new (size_t size);
90662 #else
90663 
90664  void *operator new (size_t size);
90665 #endif
90666 
90667  void operator delete (void* pointer, size_t size);
90668 
90669  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
90670  void operator delete (void* pointer)
90671  {
90672  // This is the generated delete operator...
90673  SgOmpTaskgroupClause::operator delete (pointer,sizeof(SgOmpTaskgroupClause));
90674  }
90675 
90677  static size_t numberOfNodes();
90678 
90680  static size_t memoryUsage();
90681 
90682  // End of scope which started in IR nodes specific code
90683  /* */
90684 
90685  /* name Internal Functions
90686  \brief Internal functions ... incomplete-documentation
90687 
90688  These functions have been made public as part of the design, but they are suggested for internal use
90689  or by particularly knowledgeable users for specialized tools or applications.
90690 
90691  \internal We could not make these private because they are required by user for special purposes. And
90692  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
90693 
90694  */
90695 
90696  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
90697  // overridden in every class by *generated* implementation
90699  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
90700  // MS: 06/28/02 container of names of variables or container indices
90701  // used used in the traversal to access AST successor nodes
90702  // overridden in every class by *generated* implementation
90705  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
90706 
90707  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
90708  // than all the vector copies. The implementation for these functions is generated for each class.
90710  virtual size_t get_numberOfTraversalSuccessors() override;
90712  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
90714  virtual size_t get_childIndex(SgNode *child) override;
90715 
90716 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
90717  // MS: 08/16/2002 method for generating RTI information
90719  virtual RTIReturnType roseRTI() override;
90720 #endif
90721  /* */
90722 
90723 
90724 
90725  /* name Deprecated Functions
90726  \brief Deprecated functions ... incomplete-documentation
90727 
90728  These functions have been deprecated from use.
90729  */
90730  /* */
90731 
90733  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
90734 
90735  // JJW (10/16/2008): Changed to a single function in Node.code, and put
90736  // getVariant() in #if 0 block to prevent confusing Doxygen
90737 #if 0
90738 
90739  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
90741  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
90742 #endif
90743  /* */
90744 
90745 
90746 
90747 
90748  public:
90749  /* name Traversal Support Functions
90750  \brief Traversal support functions ... incomplete-documentation
90751 
90752  These functions have been made public as part of the design, but they are suggested for internal use
90753  or by particularly knowledgable users for specialized tools or applications.
90754  */
90755  /* */
90756 
90757  // DQ (11/26/2005): Support for visitor pattern mechanims
90758  // (inferior to ROSE traversal mechanism, experimental).
90762 
90763  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
90765  virtual void accept (ROSE_VisitorPattern & visitor) override;
90766 
90767  // DQ (12/26/2005): Support for traversal based on the memory pool
90770  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
90771 
90775 
90776  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
90777  // This traversal helps support internal tools that call static member functions.
90778  // note: this function operates on the memory pools.
90781  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
90782  /* */
90783 
90784 
90785  public:
90786  /* name Memory Allocation Functions
90787  \brief Memory allocations functions ... incomplete-documentation
90788 
90789  These functions have been made public as part of the design, but they are suggested for internal use
90790  or by particularly knowledgable users for specialized tools or applications.
90791  */
90792  /* */
90793 
90804  virtual bool isInMemoryPool() override;
90805 
90816  virtual void checkDataMemberPointersIfInMemoryPool() override;
90817 
90818  // DQ (4/30/2006): Modified to be a const function.
90833  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
90834 
90844  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
90845 
90857  virtual long getChildIndex( SgNode* childNode ) const override;
90858 
90859  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
90860  // comment here (changed to be a C style comment and not be a doxygen comment).
90861  /* \brief Constructor for use by AST File I/O Mechanism
90862 
90863  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
90864  which obtained via fast binary file I/O from disk.
90865  */
90866  // SgOmpTaskgroupClause( SgOmpTaskgroupClauseStorageClass& source );
90867 
90868 
90869 
90870 
90871 
90872  // JH (10/24/2005): methods added to support the ast file IO
90873  private:
90874 
90875  /* name AST Memory Allocation Support Functions
90876  \brief Memory allocations support....
90877 
90878  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
90879  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
90880  and support the AST File I/O Mechanism.
90881  */
90882  /* */
90883 
90884  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
90885  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
90886  that I use the same type everywhere, if any changes are made. THe second one declares the type
90887  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
90888  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
90889  a correspinding one in the AST_FILE_IO class!
90890  */
90891  // DQ (9/2/2015): This typedef is no longer used, we can't define the
90892  // comment here (changed to be a C style comment and not be a doxygen comment).
90893  /* \brief Typedef used for low level memory access.
90894  */
90895  // typedef unsigned char* TestType;
90896 
90897  // DQ (9/2/2015): This typedef is no longer used, we can't define the
90898  // comment here (changed to be a C style comment and not be a doxygen comment).
90899  /* \brief Typedef used to hold memory addresses as values.
90900  */
90901  // typedef unsigned long AddressType;
90902 
90903 
90904 
90905  // necessary, to have direct access to the p_freepointer and the private methods !
90907  friend class AST_FILE_IO;
90908 
90910  friend class SgOmpTaskgroupClauseStorageClass;
90911 
90913  friend class AstSpecificDataManagingClass;
90914 
90916  friend class AstSpecificDataManagingClassStorageClass;
90917 
90918  public:
90920  SgOmpTaskgroupClause( const SgOmpTaskgroupClauseStorageClass& source );
90921 
90922  // private: // JJW hack
90923  /*
90924  name AST Memory Allocation Support Variables
90925  Memory allocations support variables
90926 
90927  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
90928  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
90929  and support the AST File I/O Mechanism.
90930  */
90931  /* */
90932 
90933  public:
90934 
90935  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
90936  // to current node (so that it will work cleanly with build functions to specify patterns).
90937  // virtual SgNode* addRegExpAttribute();
90944 
90945 // *** COMMON CODE SECTION ENDS HERE ***
90946 
90947 
90948 // End of memberFunctionString
90949 // Start of memberFunctionString
90950 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
90951 
90952  // the generated cast function
90953  // friend ROSE_DLL_API SgOmpTaskgroupClause* isSgOmpTaskgroupClause ( SgNode* s );
90954 
90955  typedef SgOmpClause base_node_type;
90956 
90957 
90958 // End of memberFunctionString
90959 
90960 
90961  public:
90962  virtual ~SgOmpTaskgroupClause();
90963 
90964 
90965  public:
90966  SgOmpTaskgroupClause(Sg_File_Info* startOfConstruct );
90968 
90969  protected:
90970 
90971 
90972 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
90973 
90974 
90975  };
90976 #endif
90977 
90978 // postdeclarations for SgOmpTaskgroupClause
90979 
90980 /* #line 90981 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
90981 
90982 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
90983 
90984 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
90985 
90986 
90987 /* #line 90988 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
90988 
90989 
90990 
90991 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
90992 
90993 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
90994 // This code is automatically generated for each
90995 // terminal and non-terminal within the defined
90996 // grammar. There is a simple way to change the
90997 // code to fix bugs etc. See the ROSE README file
90998 // for directions.
90999 
91000 // tps: (02/22/2010): Adding DLL export requirements
91001 #include "rosedll.h"
91002 
91003 // predeclarations for SgOmpNogroupClause
91004 
91005 /* #line 91006 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
91006 
91007 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
91008 
91009 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
91010 
91011 #if 1
91012 // Class Definition for SgOmpNogroupClause
91013 class ROSE_DLL_API SgOmpNogroupClause : public SgOmpClause
91014  {
91015  public:
91016 
91017 
91018 /* #line 91019 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
91019 
91020  virtual SgNode* copy ( SgCopyHelp& help) const override;
91021 // Start of memberFunctionString
91022 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
91023 
91024 // *** COMMON CODE SECTION BEGINS HERE ***
91025 
91026  public:
91027 
91028  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
91029  // and not required which is required to match the other aspects of the copy mechanism code generation.
91030  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
91031  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
91032  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
91033  // virtual SgNode* copy ( const SgCopyHelp & help) const;
91034 
91036  virtual std::string class_name() const override;
91037 
91039  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
91040 
91042  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
91043  // static const VariantT static_variant = V_SgOmpNogroupClause;
91044  enum { static_variant = V_SgOmpNogroupClause };
91045 
91046  /* the generated cast function */
91048  ROSE_DLL_API friend SgOmpNogroupClause* isSgOmpNogroupClause( SgNode * s );
91049 
91051  ROSE_DLL_API friend const SgOmpNogroupClause* isSgOmpNogroupClause( const SgNode * s );
91052 
91053  // ******************************************
91054  // * Memory Pool / New / Delete
91055  // ******************************************
91056 
91057  public:
91059  static const unsigned pool_size; //
91061  static std::vector<unsigned char *> pools; //
91063  static SgOmpNogroupClause * next_node; //
91064 
91066  static unsigned long initializeStorageClassArray(SgOmpNogroupClauseStorageClass *); //
91067 
91069  static void clearMemoryPool(); //
91070  static void deleteMemoryPool(); //
91071 
91073  static void extendMemoryPoolForFileIO(); //
91074 
91076  static SgOmpNogroupClause * getPointerFromGlobalIndex(unsigned long); //
91078  static SgOmpNogroupClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
91079 
91081  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
91083  static void resetValidFreepointers(); //
91085  static unsigned long getNumberOfLastValidPointer(); //
91086 
91087 
91088 #if defined(INLINE_FUNCTIONS)
91089 
91090  inline void *operator new (size_t size);
91091 #else
91092 
91093  void *operator new (size_t size);
91094 #endif
91095 
91096  void operator delete (void* pointer, size_t size);
91097 
91098  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
91099  void operator delete (void* pointer)
91100  {
91101  // This is the generated delete operator...
91102  SgOmpNogroupClause::operator delete (pointer,sizeof(SgOmpNogroupClause));
91103  }
91104 
91106  static size_t numberOfNodes();
91107 
91109  static size_t memoryUsage();
91110 
91111  // End of scope which started in IR nodes specific code
91112  /* */
91113 
91114  /* name Internal Functions
91115  \brief Internal functions ... incomplete-documentation
91116 
91117  These functions have been made public as part of the design, but they are suggested for internal use
91118  or by particularly knowledgeable users for specialized tools or applications.
91119 
91120  \internal We could not make these private because they are required by user for special purposes. And
91121  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
91122 
91123  */
91124 
91125  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
91126  // overridden in every class by *generated* implementation
91128  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
91129  // MS: 06/28/02 container of names of variables or container indices
91130  // used used in the traversal to access AST successor nodes
91131  // overridden in every class by *generated* implementation
91134  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
91135 
91136  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
91137  // than all the vector copies. The implementation for these functions is generated for each class.
91139  virtual size_t get_numberOfTraversalSuccessors() override;
91141  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
91143  virtual size_t get_childIndex(SgNode *child) override;
91144 
91145 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
91146  // MS: 08/16/2002 method for generating RTI information
91148  virtual RTIReturnType roseRTI() override;
91149 #endif
91150  /* */
91151 
91152 
91153 
91154  /* name Deprecated Functions
91155  \brief Deprecated functions ... incomplete-documentation
91156 
91157  These functions have been deprecated from use.
91158  */
91159  /* */
91160 
91162  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
91163 
91164  // JJW (10/16/2008): Changed to a single function in Node.code, and put
91165  // getVariant() in #if 0 block to prevent confusing Doxygen
91166 #if 0
91167 
91168  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
91170  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
91171 #endif
91172  /* */
91173 
91174 
91175 
91176 
91177  public:
91178  /* name Traversal Support Functions
91179  \brief Traversal support functions ... incomplete-documentation
91180 
91181  These functions have been made public as part of the design, but they are suggested for internal use
91182  or by particularly knowledgable users for specialized tools or applications.
91183  */
91184  /* */
91185 
91186  // DQ (11/26/2005): Support for visitor pattern mechanims
91187  // (inferior to ROSE traversal mechanism, experimental).
91191 
91192  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
91194  virtual void accept (ROSE_VisitorPattern & visitor) override;
91195 
91196  // DQ (12/26/2005): Support for traversal based on the memory pool
91199  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
91200 
91204 
91205  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
91206  // This traversal helps support internal tools that call static member functions.
91207  // note: this function operates on the memory pools.
91210  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
91211  /* */
91212 
91213 
91214  public:
91215  /* name Memory Allocation Functions
91216  \brief Memory allocations functions ... incomplete-documentation
91217 
91218  These functions have been made public as part of the design, but they are suggested for internal use
91219  or by particularly knowledgable users for specialized tools or applications.
91220  */
91221  /* */
91222 
91233  virtual bool isInMemoryPool() override;
91234 
91245  virtual void checkDataMemberPointersIfInMemoryPool() override;
91246 
91247  // DQ (4/30/2006): Modified to be a const function.
91262  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
91263 
91273  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
91274 
91286  virtual long getChildIndex( SgNode* childNode ) const override;
91287 
91288  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
91289  // comment here (changed to be a C style comment and not be a doxygen comment).
91290  /* \brief Constructor for use by AST File I/O Mechanism
91291 
91292  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
91293  which obtained via fast binary file I/O from disk.
91294  */
91295  // SgOmpNogroupClause( SgOmpNogroupClauseStorageClass& source );
91296 
91297 
91298 
91299 
91300 
91301  // JH (10/24/2005): methods added to support the ast file IO
91302  private:
91303 
91304  /* name AST Memory Allocation Support Functions
91305  \brief Memory allocations support....
91306 
91307  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
91308  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
91309  and support the AST File I/O Mechanism.
91310  */
91311  /* */
91312 
91313  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
91314  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
91315  that I use the same type everywhere, if any changes are made. THe second one declares the type
91316  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
91317  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
91318  a correspinding one in the AST_FILE_IO class!
91319  */
91320  // DQ (9/2/2015): This typedef is no longer used, we can't define the
91321  // comment here (changed to be a C style comment and not be a doxygen comment).
91322  /* \brief Typedef used for low level memory access.
91323  */
91324  // typedef unsigned char* TestType;
91325 
91326  // DQ (9/2/2015): This typedef is no longer used, we can't define the
91327  // comment here (changed to be a C style comment and not be a doxygen comment).
91328  /* \brief Typedef used to hold memory addresses as values.
91329  */
91330  // typedef unsigned long AddressType;
91331 
91332 
91333 
91334  // necessary, to have direct access to the p_freepointer and the private methods !
91336  friend class AST_FILE_IO;
91337 
91339  friend class SgOmpNogroupClauseStorageClass;
91340 
91342  friend class AstSpecificDataManagingClass;
91343 
91345  friend class AstSpecificDataManagingClassStorageClass;
91346 
91347  public:
91349  SgOmpNogroupClause( const SgOmpNogroupClauseStorageClass& source );
91350 
91351  // private: // JJW hack
91352  /*
91353  name AST Memory Allocation Support Variables
91354  Memory allocations support variables
91355 
91356  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
91357  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
91358  and support the AST File I/O Mechanism.
91359  */
91360  /* */
91361 
91362  public:
91363 
91364  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
91365  // to current node (so that it will work cleanly with build functions to specify patterns).
91366  // virtual SgNode* addRegExpAttribute();
91373 
91374 // *** COMMON CODE SECTION ENDS HERE ***
91375 
91376 
91377 // End of memberFunctionString
91378 // Start of memberFunctionString
91379 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
91380 
91381  // the generated cast function
91382  // friend ROSE_DLL_API SgOmpNogroupClause* isSgOmpNogroupClause ( SgNode* s );
91383 
91384  typedef SgOmpClause base_node_type;
91385 
91386 
91387 // End of memberFunctionString
91388 
91389 
91390  public:
91391  virtual ~SgOmpNogroupClause();
91392 
91393 
91394  public:
91395  SgOmpNogroupClause(Sg_File_Info* startOfConstruct );
91396  SgOmpNogroupClause();
91397 
91398  protected:
91399 
91400 
91401 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
91402 
91403 
91404  };
91405 #endif
91406 
91407 // postdeclarations for SgOmpNogroupClause
91408 
91409 /* #line 91410 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
91410 
91411 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
91412 
91413 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
91414 
91415 
91416 /* #line 91417 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
91417 
91418 
91419 
91420 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
91421 
91422 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
91423 // This code is automatically generated for each
91424 // terminal and non-terminal within the defined
91425 // grammar. There is a simple way to change the
91426 // code to fix bugs etc. See the ROSE README file
91427 // for directions.
91428 
91429 // tps: (02/22/2010): Adding DLL export requirements
91430 #include "rosedll.h"
91431 
91432 // predeclarations for SgOmpDefaultClause
91433 
91434 /* #line 91435 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
91435 
91436 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
91437 
91438 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
91439 
91440 #if 1
91441 // Class Definition for SgOmpDefaultClause
91442 class ROSE_DLL_API SgOmpDefaultClause : public SgOmpClause
91443  {
91444  public:
91445 
91446 
91447 /* #line 91448 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
91448 
91449  virtual SgNode* copy ( SgCopyHelp& help) const override;
91450 // Start of memberFunctionString
91451 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
91452 
91453 // *** COMMON CODE SECTION BEGINS HERE ***
91454 
91455  public:
91456 
91457  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
91458  // and not required which is required to match the other aspects of the copy mechanism code generation.
91459  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
91460  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
91461  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
91462  // virtual SgNode* copy ( const SgCopyHelp & help) const;
91463 
91465  virtual std::string class_name() const override;
91466 
91468  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
91469 
91471  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
91472  // static const VariantT static_variant = V_SgOmpDefaultClause;
91473  enum { static_variant = V_SgOmpDefaultClause };
91474 
91475  /* the generated cast function */
91477  ROSE_DLL_API friend SgOmpDefaultClause* isSgOmpDefaultClause( SgNode * s );
91478 
91480  ROSE_DLL_API friend const SgOmpDefaultClause* isSgOmpDefaultClause( const SgNode * s );
91481 
91482  // ******************************************
91483  // * Memory Pool / New / Delete
91484  // ******************************************
91485 
91486  public:
91488  static const unsigned pool_size; //
91490  static std::vector<unsigned char *> pools; //
91492  static SgOmpDefaultClause * next_node; //
91493 
91495  static unsigned long initializeStorageClassArray(SgOmpDefaultClauseStorageClass *); //
91496 
91498  static void clearMemoryPool(); //
91499  static void deleteMemoryPool(); //
91500 
91502  static void extendMemoryPoolForFileIO(); //
91503 
91505  static SgOmpDefaultClause * getPointerFromGlobalIndex(unsigned long); //
91507  static SgOmpDefaultClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
91508 
91510  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
91512  static void resetValidFreepointers(); //
91514  static unsigned long getNumberOfLastValidPointer(); //
91515 
91516 
91517 #if defined(INLINE_FUNCTIONS)
91518 
91519  inline void *operator new (size_t size);
91520 #else
91521 
91522  void *operator new (size_t size);
91523 #endif
91524 
91525  void operator delete (void* pointer, size_t size);
91526 
91527  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
91528  void operator delete (void* pointer)
91529  {
91530  // This is the generated delete operator...
91531  SgOmpDefaultClause::operator delete (pointer,sizeof(SgOmpDefaultClause));
91532  }
91533 
91535  static size_t numberOfNodes();
91536 
91538  static size_t memoryUsage();
91539 
91540  // End of scope which started in IR nodes specific code
91541  /* */
91542 
91543  /* name Internal Functions
91544  \brief Internal functions ... incomplete-documentation
91545 
91546  These functions have been made public as part of the design, but they are suggested for internal use
91547  or by particularly knowledgeable users for specialized tools or applications.
91548 
91549  \internal We could not make these private because they are required by user for special purposes. And
91550  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
91551 
91552  */
91553 
91554  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
91555  // overridden in every class by *generated* implementation
91557  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
91558  // MS: 06/28/02 container of names of variables or container indices
91559  // used used in the traversal to access AST successor nodes
91560  // overridden in every class by *generated* implementation
91563  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
91564 
91565  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
91566  // than all the vector copies. The implementation for these functions is generated for each class.
91568  virtual size_t get_numberOfTraversalSuccessors() override;
91570  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
91572  virtual size_t get_childIndex(SgNode *child) override;
91573 
91574 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
91575  // MS: 08/16/2002 method for generating RTI information
91577  virtual RTIReturnType roseRTI() override;
91578 #endif
91579  /* */
91580 
91581 
91582 
91583  /* name Deprecated Functions
91584  \brief Deprecated functions ... incomplete-documentation
91585 
91586  These functions have been deprecated from use.
91587  */
91588  /* */
91589 
91591  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
91592 
91593  // JJW (10/16/2008): Changed to a single function in Node.code, and put
91594  // getVariant() in #if 0 block to prevent confusing Doxygen
91595 #if 0
91596 
91597  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
91599  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
91600 #endif
91601  /* */
91602 
91603 
91604 
91605 
91606  public:
91607  /* name Traversal Support Functions
91608  \brief Traversal support functions ... incomplete-documentation
91609 
91610  These functions have been made public as part of the design, but they are suggested for internal use
91611  or by particularly knowledgable users for specialized tools or applications.
91612  */
91613  /* */
91614 
91615  // DQ (11/26/2005): Support for visitor pattern mechanims
91616  // (inferior to ROSE traversal mechanism, experimental).
91620 
91621  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
91623  virtual void accept (ROSE_VisitorPattern & visitor) override;
91624 
91625  // DQ (12/26/2005): Support for traversal based on the memory pool
91628  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
91629 
91633 
91634  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
91635  // This traversal helps support internal tools that call static member functions.
91636  // note: this function operates on the memory pools.
91639  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
91640  /* */
91641 
91642 
91643  public:
91644  /* name Memory Allocation Functions
91645  \brief Memory allocations functions ... incomplete-documentation
91646 
91647  These functions have been made public as part of the design, but they are suggested for internal use
91648  or by particularly knowledgable users for specialized tools or applications.
91649  */
91650  /* */
91651 
91662  virtual bool isInMemoryPool() override;
91663 
91674  virtual void checkDataMemberPointersIfInMemoryPool() override;
91675 
91676  // DQ (4/30/2006): Modified to be a const function.
91691  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
91692 
91702  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
91703 
91715  virtual long getChildIndex( SgNode* childNode ) const override;
91716 
91717  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
91718  // comment here (changed to be a C style comment and not be a doxygen comment).
91719  /* \brief Constructor for use by AST File I/O Mechanism
91720 
91721  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
91722  which obtained via fast binary file I/O from disk.
91723  */
91724  // SgOmpDefaultClause( SgOmpDefaultClauseStorageClass& source );
91725 
91726 
91727 
91728 
91729 
91730  // JH (10/24/2005): methods added to support the ast file IO
91731  private:
91732 
91733  /* name AST Memory Allocation Support Functions
91734  \brief Memory allocations support....
91735 
91736  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
91737  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
91738  and support the AST File I/O Mechanism.
91739  */
91740  /* */
91741 
91742  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
91743  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
91744  that I use the same type everywhere, if any changes are made. THe second one declares the type
91745  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
91746  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
91747  a correspinding one in the AST_FILE_IO class!
91748  */
91749  // DQ (9/2/2015): This typedef is no longer used, we can't define the
91750  // comment here (changed to be a C style comment and not be a doxygen comment).
91751  /* \brief Typedef used for low level memory access.
91752  */
91753  // typedef unsigned char* TestType;
91754 
91755  // DQ (9/2/2015): This typedef is no longer used, we can't define the
91756  // comment here (changed to be a C style comment and not be a doxygen comment).
91757  /* \brief Typedef used to hold memory addresses as values.
91758  */
91759  // typedef unsigned long AddressType;
91760 
91761 
91762 
91763  // necessary, to have direct access to the p_freepointer and the private methods !
91765  friend class AST_FILE_IO;
91766 
91768  friend class SgOmpDefaultClauseStorageClass;
91769 
91771  friend class AstSpecificDataManagingClass;
91772 
91774  friend class AstSpecificDataManagingClassStorageClass;
91775 
91776  public:
91778  SgOmpDefaultClause( const SgOmpDefaultClauseStorageClass& source );
91779 
91780  // private: // JJW hack
91781  /*
91782  name AST Memory Allocation Support Variables
91783  Memory allocations support variables
91784 
91785  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
91786  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
91787  and support the AST File I/O Mechanism.
91788  */
91789  /* */
91790 
91791  public:
91792 
91793  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
91794  // to current node (so that it will work cleanly with build functions to specify patterns).
91795  // virtual SgNode* addRegExpAttribute();
91802 
91803 // *** COMMON CODE SECTION ENDS HERE ***
91804 
91805 
91806 // End of memberFunctionString
91807 // Start of memberFunctionString
91808 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
91809 
91810  // the generated cast function
91811  // friend ROSE_DLL_API SgOmpDefaultClause* isSgOmpDefaultClause ( SgNode* s );
91812 
91813  typedef SgOmpClause base_node_type;
91814 
91815 
91816 // End of memberFunctionString
91817 
91818  public:
91819  SgOmpClause::omp_default_option_enum get_data_sharing() const;
91820  void set_data_sharing(SgOmpClause::omp_default_option_enum data_sharing);
91821 
91822  public:
91823  SgStatement* get_variant_directive() const;
91824  void set_variant_directive(SgStatement* variant_directive);
91825 
91826 
91827  public:
91828  virtual ~SgOmpDefaultClause();
91829 
91830 
91831  public:
91832  SgOmpDefaultClause(Sg_File_Info* startOfConstruct , SgOmpClause::omp_default_option_enum data_sharing =e_omp_default_unknown, SgStatement* variant_directive = NULL);
91833  SgOmpDefaultClause(SgOmpClause::omp_default_option_enum data_sharing, SgStatement* variant_directive);
91834 
91835  protected:
91836 // Start of memberFunctionString
91838 
91839 // End of memberFunctionString
91840 // Start of memberFunctionString
91841 SgStatement* p_variant_directive;
91842 
91843 // End of memberFunctionString
91844 
91845 
91846 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
91847 
91848 
91849  };
91850 #endif
91851 
91852 // postdeclarations for SgOmpDefaultClause
91853 
91854 /* #line 91855 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
91855 
91856 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
91857 
91858 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
91859 
91860 
91861 /* #line 91862 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
91862 
91863 
91864 
91865 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
91866 
91867 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
91868 // This code is automatically generated for each
91869 // terminal and non-terminal within the defined
91870 // grammar. There is a simple way to change the
91871 // code to fix bugs etc. See the ROSE README file
91872 // for directions.
91873 
91874 // tps: (02/22/2010): Adding DLL export requirements
91875 #include "rosedll.h"
91876 
91877 // predeclarations for SgOmpAllocatorClause
91878 
91879 /* #line 91880 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
91880 
91881 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
91882 
91883 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
91884 
91885 #if 1
91886 // Class Definition for SgOmpAllocatorClause
91887 class ROSE_DLL_API SgOmpAllocatorClause : public SgOmpClause
91888  {
91889  public:
91890 
91891 
91892 /* #line 91893 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
91893 
91894  virtual SgNode* copy ( SgCopyHelp& help) const override;
91895 // Start of memberFunctionString
91896 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
91897 
91898 // *** COMMON CODE SECTION BEGINS HERE ***
91899 
91900  public:
91901 
91902  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
91903  // and not required which is required to match the other aspects of the copy mechanism code generation.
91904  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
91905  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
91906  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
91907  // virtual SgNode* copy ( const SgCopyHelp & help) const;
91908 
91910  virtual std::string class_name() const override;
91911 
91913  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
91914 
91916  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
91917  // static const VariantT static_variant = V_SgOmpAllocatorClause;
91918  enum { static_variant = V_SgOmpAllocatorClause };
91919 
91920  /* the generated cast function */
91922  ROSE_DLL_API friend SgOmpAllocatorClause* isSgOmpAllocatorClause( SgNode * s );
91923 
91925  ROSE_DLL_API friend const SgOmpAllocatorClause* isSgOmpAllocatorClause( const SgNode * s );
91926 
91927  // ******************************************
91928  // * Memory Pool / New / Delete
91929  // ******************************************
91930 
91931  public:
91933  static const unsigned pool_size; //
91935  static std::vector<unsigned char *> pools; //
91937  static SgOmpAllocatorClause * next_node; //
91938 
91940  static unsigned long initializeStorageClassArray(SgOmpAllocatorClauseStorageClass *); //
91941 
91943  static void clearMemoryPool(); //
91944  static void deleteMemoryPool(); //
91945 
91947  static void extendMemoryPoolForFileIO(); //
91948 
91950  static SgOmpAllocatorClause * getPointerFromGlobalIndex(unsigned long); //
91952  static SgOmpAllocatorClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
91953 
91955  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
91957  static void resetValidFreepointers(); //
91959  static unsigned long getNumberOfLastValidPointer(); //
91960 
91961 
91962 #if defined(INLINE_FUNCTIONS)
91963 
91964  inline void *operator new (size_t size);
91965 #else
91966 
91967  void *operator new (size_t size);
91968 #endif
91969 
91970  void operator delete (void* pointer, size_t size);
91971 
91972  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
91973  void operator delete (void* pointer)
91974  {
91975  // This is the generated delete operator...
91976  SgOmpAllocatorClause::operator delete (pointer,sizeof(SgOmpAllocatorClause));
91977  }
91978 
91980  static size_t numberOfNodes();
91981 
91983  static size_t memoryUsage();
91984 
91985  // End of scope which started in IR nodes specific code
91986  /* */
91987 
91988  /* name Internal Functions
91989  \brief Internal functions ... incomplete-documentation
91990 
91991  These functions have been made public as part of the design, but they are suggested for internal use
91992  or by particularly knowledgeable users for specialized tools or applications.
91993 
91994  \internal We could not make these private because they are required by user for special purposes. And
91995  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
91996 
91997  */
91998 
91999  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
92000  // overridden in every class by *generated* implementation
92002  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
92003  // MS: 06/28/02 container of names of variables or container indices
92004  // used used in the traversal to access AST successor nodes
92005  // overridden in every class by *generated* implementation
92008  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
92009 
92010  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
92011  // than all the vector copies. The implementation for these functions is generated for each class.
92013  virtual size_t get_numberOfTraversalSuccessors() override;
92015  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
92017  virtual size_t get_childIndex(SgNode *child) override;
92018 
92019 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
92020  // MS: 08/16/2002 method for generating RTI information
92022  virtual RTIReturnType roseRTI() override;
92023 #endif
92024  /* */
92025 
92026 
92027 
92028  /* name Deprecated Functions
92029  \brief Deprecated functions ... incomplete-documentation
92030 
92031  These functions have been deprecated from use.
92032  */
92033  /* */
92034 
92036  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
92037 
92038  // JJW (10/16/2008): Changed to a single function in Node.code, and put
92039  // getVariant() in #if 0 block to prevent confusing Doxygen
92040 #if 0
92041 
92042  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
92044  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
92045 #endif
92046  /* */
92047 
92048 
92049 
92050 
92051  public:
92052  /* name Traversal Support Functions
92053  \brief Traversal support functions ... incomplete-documentation
92054 
92055  These functions have been made public as part of the design, but they are suggested for internal use
92056  or by particularly knowledgable users for specialized tools or applications.
92057  */
92058  /* */
92059 
92060  // DQ (11/26/2005): Support for visitor pattern mechanims
92061  // (inferior to ROSE traversal mechanism, experimental).
92065 
92066  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
92068  virtual void accept (ROSE_VisitorPattern & visitor) override;
92069 
92070  // DQ (12/26/2005): Support for traversal based on the memory pool
92073  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
92074 
92078 
92079  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
92080  // This traversal helps support internal tools that call static member functions.
92081  // note: this function operates on the memory pools.
92084  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
92085  /* */
92086 
92087 
92088  public:
92089  /* name Memory Allocation Functions
92090  \brief Memory allocations functions ... incomplete-documentation
92091 
92092  These functions have been made public as part of the design, but they are suggested for internal use
92093  or by particularly knowledgable users for specialized tools or applications.
92094  */
92095  /* */
92096 
92107  virtual bool isInMemoryPool() override;
92108 
92119  virtual void checkDataMemberPointersIfInMemoryPool() override;
92120 
92121  // DQ (4/30/2006): Modified to be a const function.
92136  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
92137 
92147  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
92148 
92160  virtual long getChildIndex( SgNode* childNode ) const override;
92161 
92162  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
92163  // comment here (changed to be a C style comment and not be a doxygen comment).
92164  /* \brief Constructor for use by AST File I/O Mechanism
92165 
92166  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
92167  which obtained via fast binary file I/O from disk.
92168  */
92169  // SgOmpAllocatorClause( SgOmpAllocatorClauseStorageClass& source );
92170 
92171 
92172 
92173 
92174 
92175  // JH (10/24/2005): methods added to support the ast file IO
92176  private:
92177 
92178  /* name AST Memory Allocation Support Functions
92179  \brief Memory allocations support....
92180 
92181  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
92182  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
92183  and support the AST File I/O Mechanism.
92184  */
92185  /* */
92186 
92187  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
92188  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
92189  that I use the same type everywhere, if any changes are made. THe second one declares the type
92190  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
92191  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
92192  a correspinding one in the AST_FILE_IO class!
92193  */
92194  // DQ (9/2/2015): This typedef is no longer used, we can't define the
92195  // comment here (changed to be a C style comment and not be a doxygen comment).
92196  /* \brief Typedef used for low level memory access.
92197  */
92198  // typedef unsigned char* TestType;
92199 
92200  // DQ (9/2/2015): This typedef is no longer used, we can't define the
92201  // comment here (changed to be a C style comment and not be a doxygen comment).
92202  /* \brief Typedef used to hold memory addresses as values.
92203  */
92204  // typedef unsigned long AddressType;
92205 
92206 
92207 
92208  // necessary, to have direct access to the p_freepointer and the private methods !
92210  friend class AST_FILE_IO;
92211 
92213  friend class SgOmpAllocatorClauseStorageClass;
92214 
92216  friend class AstSpecificDataManagingClass;
92217 
92219  friend class AstSpecificDataManagingClassStorageClass;
92220 
92221  public:
92223  SgOmpAllocatorClause( const SgOmpAllocatorClauseStorageClass& source );
92224 
92225  // private: // JJW hack
92226  /*
92227  name AST Memory Allocation Support Variables
92228  Memory allocations support variables
92229 
92230  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
92231  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
92232  and support the AST File I/O Mechanism.
92233  */
92234  /* */
92235 
92236  public:
92237 
92238  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
92239  // to current node (so that it will work cleanly with build functions to specify patterns).
92240  // virtual SgNode* addRegExpAttribute();
92247 
92248 // *** COMMON CODE SECTION ENDS HERE ***
92249 
92250 
92251 // End of memberFunctionString
92252 // Start of memberFunctionString
92253 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
92254 
92255  // the generated cast function
92256  // friend ROSE_DLL_API SgOmpAllocatorClause* isSgOmpAllocatorClause ( SgNode* s );
92257 
92258  typedef SgOmpClause base_node_type;
92259 
92260 
92261 // End of memberFunctionString
92262 
92263  public:
92264  SgOmpClause::omp_allocator_modifier_enum get_modifier() const;
92265  void set_modifier(SgOmpClause::omp_allocator_modifier_enum modifier);
92266 
92267  public:
92268  SgExpression* get_user_defined_modifier() const;
92269  void set_user_defined_modifier(SgExpression* user_defined_modifier);
92270 
92271 
92272  public:
92273  virtual ~SgOmpAllocatorClause();
92274 
92275 
92276  public:
92277  SgOmpAllocatorClause(Sg_File_Info* startOfConstruct , SgOmpClause::omp_allocator_modifier_enum modifier =e_omp_allocator_modifier_unknown, SgExpression* user_defined_modifier = NULL);
92278  SgOmpAllocatorClause(SgOmpClause::omp_allocator_modifier_enum modifier, SgExpression* user_defined_modifier);
92279 
92280  protected:
92281 // Start of memberFunctionString
92282 SgOmpClause::omp_allocator_modifier_enum p_modifier;
92283 
92284 // End of memberFunctionString
92285 // Start of memberFunctionString
92286 SgExpression* p_user_defined_modifier;
92287 
92288 // End of memberFunctionString
92289 
92290 
92291 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
92292 
92293 
92294  };
92295 #endif
92296 
92297 // postdeclarations for SgOmpAllocatorClause
92298 
92299 /* #line 92300 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
92300 
92301 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
92302 
92303 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
92304 
92305 
92306 /* #line 92307 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
92307 
92308 
92309 
92310 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
92311 
92312 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
92313 // This code is automatically generated for each
92314 // terminal and non-terminal within the defined
92315 // grammar. There is a simple way to change the
92316 // code to fix bugs etc. See the ROSE README file
92317 // for directions.
92318 
92319 // tps: (02/22/2010): Adding DLL export requirements
92320 #include "rosedll.h"
92321 
92322 // predeclarations for SgOmpAtomicClause
92323 
92324 /* #line 92325 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
92325 
92326 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
92327 
92328 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
92329 
92330 #if 1
92331 // Class Definition for SgOmpAtomicClause
92332 class ROSE_DLL_API SgOmpAtomicClause : public SgOmpClause
92333  {
92334  public:
92335 
92336 
92337 /* #line 92338 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
92338 
92339  virtual SgNode* copy ( SgCopyHelp& help) const override;
92340 // Start of memberFunctionString
92341 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
92342 
92343 // *** COMMON CODE SECTION BEGINS HERE ***
92344 
92345  public:
92346 
92347  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
92348  // and not required which is required to match the other aspects of the copy mechanism code generation.
92349  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
92350  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
92351  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
92352  // virtual SgNode* copy ( const SgCopyHelp & help) const;
92353 
92355  virtual std::string class_name() const override;
92356 
92358  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
92359 
92361  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
92362  // static const VariantT static_variant = V_SgOmpAtomicClause;
92363  enum { static_variant = V_SgOmpAtomicClause };
92364 
92365  /* the generated cast function */
92367  ROSE_DLL_API friend SgOmpAtomicClause* isSgOmpAtomicClause( SgNode * s );
92368 
92370  ROSE_DLL_API friend const SgOmpAtomicClause* isSgOmpAtomicClause( const SgNode * s );
92371 
92372  // ******************************************
92373  // * Memory Pool / New / Delete
92374  // ******************************************
92375 
92376  public:
92378  static const unsigned pool_size; //
92380  static std::vector<unsigned char *> pools; //
92382  static SgOmpAtomicClause * next_node; //
92383 
92385  static unsigned long initializeStorageClassArray(SgOmpAtomicClauseStorageClass *); //
92386 
92388  static void clearMemoryPool(); //
92389  static void deleteMemoryPool(); //
92390 
92392  static void extendMemoryPoolForFileIO(); //
92393 
92395  static SgOmpAtomicClause * getPointerFromGlobalIndex(unsigned long); //
92397  static SgOmpAtomicClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
92398 
92400  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
92402  static void resetValidFreepointers(); //
92404  static unsigned long getNumberOfLastValidPointer(); //
92405 
92406 
92407 #if defined(INLINE_FUNCTIONS)
92408 
92409  inline void *operator new (size_t size);
92410 #else
92411 
92412  void *operator new (size_t size);
92413 #endif
92414 
92415  void operator delete (void* pointer, size_t size);
92416 
92417  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
92418  void operator delete (void* pointer)
92419  {
92420  // This is the generated delete operator...
92421  SgOmpAtomicClause::operator delete (pointer,sizeof(SgOmpAtomicClause));
92422  }
92423 
92425  static size_t numberOfNodes();
92426 
92428  static size_t memoryUsage();
92429 
92430  // End of scope which started in IR nodes specific code
92431  /* */
92432 
92433  /* name Internal Functions
92434  \brief Internal functions ... incomplete-documentation
92435 
92436  These functions have been made public as part of the design, but they are suggested for internal use
92437  or by particularly knowledgeable users for specialized tools or applications.
92438 
92439  \internal We could not make these private because they are required by user for special purposes. And
92440  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
92441 
92442  */
92443 
92444  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
92445  // overridden in every class by *generated* implementation
92447  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
92448  // MS: 06/28/02 container of names of variables or container indices
92449  // used used in the traversal to access AST successor nodes
92450  // overridden in every class by *generated* implementation
92453  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
92454 
92455  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
92456  // than all the vector copies. The implementation for these functions is generated for each class.
92458  virtual size_t get_numberOfTraversalSuccessors() override;
92460  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
92462  virtual size_t get_childIndex(SgNode *child) override;
92463 
92464 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
92465  // MS: 08/16/2002 method for generating RTI information
92467  virtual RTIReturnType roseRTI() override;
92468 #endif
92469  /* */
92470 
92471 
92472 
92473  /* name Deprecated Functions
92474  \brief Deprecated functions ... incomplete-documentation
92475 
92476  These functions have been deprecated from use.
92477  */
92478  /* */
92479 
92481  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
92482 
92483  // JJW (10/16/2008): Changed to a single function in Node.code, and put
92484  // getVariant() in #if 0 block to prevent confusing Doxygen
92485 #if 0
92486 
92487  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
92489  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
92490 #endif
92491  /* */
92492 
92493 
92494 
92495 
92496  public:
92497  /* name Traversal Support Functions
92498  \brief Traversal support functions ... incomplete-documentation
92499 
92500  These functions have been made public as part of the design, but they are suggested for internal use
92501  or by particularly knowledgable users for specialized tools or applications.
92502  */
92503  /* */
92504 
92505  // DQ (11/26/2005): Support for visitor pattern mechanims
92506  // (inferior to ROSE traversal mechanism, experimental).
92510 
92511  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
92513  virtual void accept (ROSE_VisitorPattern & visitor) override;
92514 
92515  // DQ (12/26/2005): Support for traversal based on the memory pool
92518  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
92519 
92523 
92524  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
92525  // This traversal helps support internal tools that call static member functions.
92526  // note: this function operates on the memory pools.
92529  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
92530  /* */
92531 
92532 
92533  public:
92534  /* name Memory Allocation Functions
92535  \brief Memory allocations functions ... incomplete-documentation
92536 
92537  These functions have been made public as part of the design, but they are suggested for internal use
92538  or by particularly knowledgable users for specialized tools or applications.
92539  */
92540  /* */
92541 
92552  virtual bool isInMemoryPool() override;
92553 
92564  virtual void checkDataMemberPointersIfInMemoryPool() override;
92565 
92566  // DQ (4/30/2006): Modified to be a const function.
92581  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
92582 
92592  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
92593 
92605  virtual long getChildIndex( SgNode* childNode ) const override;
92606 
92607  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
92608  // comment here (changed to be a C style comment and not be a doxygen comment).
92609  /* \brief Constructor for use by AST File I/O Mechanism
92610 
92611  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
92612  which obtained via fast binary file I/O from disk.
92613  */
92614  // SgOmpAtomicClause( SgOmpAtomicClauseStorageClass& source );
92615 
92616 
92617 
92618 
92619 
92620  // JH (10/24/2005): methods added to support the ast file IO
92621  private:
92622 
92623  /* name AST Memory Allocation Support Functions
92624  \brief Memory allocations support....
92625 
92626  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
92627  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
92628  and support the AST File I/O Mechanism.
92629  */
92630  /* */
92631 
92632  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
92633  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
92634  that I use the same type everywhere, if any changes are made. THe second one declares the type
92635  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
92636  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
92637  a correspinding one in the AST_FILE_IO class!
92638  */
92639  // DQ (9/2/2015): This typedef is no longer used, we can't define the
92640  // comment here (changed to be a C style comment and not be a doxygen comment).
92641  /* \brief Typedef used for low level memory access.
92642  */
92643  // typedef unsigned char* TestType;
92644 
92645  // DQ (9/2/2015): This typedef is no longer used, we can't define the
92646  // comment here (changed to be a C style comment and not be a doxygen comment).
92647  /* \brief Typedef used to hold memory addresses as values.
92648  */
92649  // typedef unsigned long AddressType;
92650 
92651 
92652 
92653  // necessary, to have direct access to the p_freepointer and the private methods !
92655  friend class AST_FILE_IO;
92656 
92658  friend class SgOmpAtomicClauseStorageClass;
92659 
92661  friend class AstSpecificDataManagingClass;
92662 
92664  friend class AstSpecificDataManagingClassStorageClass;
92665 
92666  public:
92668  SgOmpAtomicClause( const SgOmpAtomicClauseStorageClass& source );
92669 
92670  // private: // JJW hack
92671  /*
92672  name AST Memory Allocation Support Variables
92673  Memory allocations support variables
92674 
92675  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
92676  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
92677  and support the AST File I/O Mechanism.
92678  */
92679  /* */
92680 
92681  public:
92682 
92683  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
92684  // to current node (so that it will work cleanly with build functions to specify patterns).
92685  // virtual SgNode* addRegExpAttribute();
92692 
92693 // *** COMMON CODE SECTION ENDS HERE ***
92694 
92695 
92696 // End of memberFunctionString
92697 // Start of memberFunctionString
92698 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
92699 
92700  // the generated cast function
92701  // friend ROSE_DLL_API SgOmpAtomicClause* isSgOmpAtomicClause ( SgNode* s );
92702 
92703  typedef SgOmpClause base_node_type;
92704 
92705 
92706 // End of memberFunctionString
92707 
92708  public:
92709  SgOmpClause::omp_atomic_clause_enum get_atomicity() const;
92710  void set_atomicity(SgOmpClause::omp_atomic_clause_enum atomicity);
92711 
92712 
92713  public:
92714  virtual ~SgOmpAtomicClause();
92715 
92716 
92717  public:
92718  SgOmpAtomicClause(Sg_File_Info* startOfConstruct , SgOmpClause::omp_atomic_clause_enum atomicity =e_omp_atomic_clause_unknown);
92719  SgOmpAtomicClause(SgOmpClause::omp_atomic_clause_enum atomicity);
92720 
92721  protected:
92722 // Start of memberFunctionString
92723 SgOmpClause::omp_atomic_clause_enum p_atomicity;
92724 
92725 // End of memberFunctionString
92726 
92727 
92728 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
92729 
92730 
92731  };
92732 #endif
92733 
92734 // postdeclarations for SgOmpAtomicClause
92735 
92736 /* #line 92737 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
92737 
92738 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
92739 
92740 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
92741 
92742 
92743 /* #line 92744 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
92744 
92745 
92746 
92747 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
92748 
92749 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
92750 // This code is automatically generated for each
92751 // terminal and non-terminal within the defined
92752 // grammar. There is a simple way to change the
92753 // code to fix bugs etc. See the ROSE README file
92754 // for directions.
92755 
92756 // tps: (02/22/2010): Adding DLL export requirements
92757 #include "rosedll.h"
92758 
92759 // predeclarations for SgOmpProcBindClause
92760 
92761 /* #line 92762 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
92762 
92763 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
92764 
92765 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
92766 
92767 #if 1
92768 // Class Definition for SgOmpProcBindClause
92769 class ROSE_DLL_API SgOmpProcBindClause : public SgOmpClause
92770  {
92771  public:
92772 
92773 
92774 /* #line 92775 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
92775 
92776  virtual SgNode* copy ( SgCopyHelp& help) const override;
92777 // Start of memberFunctionString
92778 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
92779 
92780 // *** COMMON CODE SECTION BEGINS HERE ***
92781 
92782  public:
92783 
92784  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
92785  // and not required which is required to match the other aspects of the copy mechanism code generation.
92786  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
92787  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
92788  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
92789  // virtual SgNode* copy ( const SgCopyHelp & help) const;
92790 
92792  virtual std::string class_name() const override;
92793 
92795  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
92796 
92798  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
92799  // static const VariantT static_variant = V_SgOmpProcBindClause;
92800  enum { static_variant = V_SgOmpProcBindClause };
92801 
92802  /* the generated cast function */
92804  ROSE_DLL_API friend SgOmpProcBindClause* isSgOmpProcBindClause( SgNode * s );
92805 
92807  ROSE_DLL_API friend const SgOmpProcBindClause* isSgOmpProcBindClause( const SgNode * s );
92808 
92809  // ******************************************
92810  // * Memory Pool / New / Delete
92811  // ******************************************
92812 
92813  public:
92815  static const unsigned pool_size; //
92817  static std::vector<unsigned char *> pools; //
92819  static SgOmpProcBindClause * next_node; //
92820 
92822  static unsigned long initializeStorageClassArray(SgOmpProcBindClauseStorageClass *); //
92823 
92825  static void clearMemoryPool(); //
92826  static void deleteMemoryPool(); //
92827 
92829  static void extendMemoryPoolForFileIO(); //
92830 
92832  static SgOmpProcBindClause * getPointerFromGlobalIndex(unsigned long); //
92834  static SgOmpProcBindClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
92835 
92837  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
92839  static void resetValidFreepointers(); //
92841  static unsigned long getNumberOfLastValidPointer(); //
92842 
92843 
92844 #if defined(INLINE_FUNCTIONS)
92845 
92846  inline void *operator new (size_t size);
92847 #else
92848 
92849  void *operator new (size_t size);
92850 #endif
92851 
92852  void operator delete (void* pointer, size_t size);
92853 
92854  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
92855  void operator delete (void* pointer)
92856  {
92857  // This is the generated delete operator...
92858  SgOmpProcBindClause::operator delete (pointer,sizeof(SgOmpProcBindClause));
92859  }
92860 
92862  static size_t numberOfNodes();
92863 
92865  static size_t memoryUsage();
92866 
92867  // End of scope which started in IR nodes specific code
92868  /* */
92869 
92870  /* name Internal Functions
92871  \brief Internal functions ... incomplete-documentation
92872 
92873  These functions have been made public as part of the design, but they are suggested for internal use
92874  or by particularly knowledgeable users for specialized tools or applications.
92875 
92876  \internal We could not make these private because they are required by user for special purposes. And
92877  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
92878 
92879  */
92880 
92881  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
92882  // overridden in every class by *generated* implementation
92884  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
92885  // MS: 06/28/02 container of names of variables or container indices
92886  // used used in the traversal to access AST successor nodes
92887  // overridden in every class by *generated* implementation
92890  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
92891 
92892  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
92893  // than all the vector copies. The implementation for these functions is generated for each class.
92895  virtual size_t get_numberOfTraversalSuccessors() override;
92897  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
92899  virtual size_t get_childIndex(SgNode *child) override;
92900 
92901 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
92902  // MS: 08/16/2002 method for generating RTI information
92904  virtual RTIReturnType roseRTI() override;
92905 #endif
92906  /* */
92907 
92908 
92909 
92910  /* name Deprecated Functions
92911  \brief Deprecated functions ... incomplete-documentation
92912 
92913  These functions have been deprecated from use.
92914  */
92915  /* */
92916 
92918  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
92919 
92920  // JJW (10/16/2008): Changed to a single function in Node.code, and put
92921  // getVariant() in #if 0 block to prevent confusing Doxygen
92922 #if 0
92923 
92924  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
92926  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
92927 #endif
92928  /* */
92929 
92930 
92931 
92932 
92933  public:
92934  /* name Traversal Support Functions
92935  \brief Traversal support functions ... incomplete-documentation
92936 
92937  These functions have been made public as part of the design, but they are suggested for internal use
92938  or by particularly knowledgable users for specialized tools or applications.
92939  */
92940  /* */
92941 
92942  // DQ (11/26/2005): Support for visitor pattern mechanims
92943  // (inferior to ROSE traversal mechanism, experimental).
92947 
92948  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
92950  virtual void accept (ROSE_VisitorPattern & visitor) override;
92951 
92952  // DQ (12/26/2005): Support for traversal based on the memory pool
92955  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
92956 
92960 
92961  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
92962  // This traversal helps support internal tools that call static member functions.
92963  // note: this function operates on the memory pools.
92966  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
92967  /* */
92968 
92969 
92970  public:
92971  /* name Memory Allocation Functions
92972  \brief Memory allocations functions ... incomplete-documentation
92973 
92974  These functions have been made public as part of the design, but they are suggested for internal use
92975  or by particularly knowledgable users for specialized tools or applications.
92976  */
92977  /* */
92978 
92989  virtual bool isInMemoryPool() override;
92990 
93001  virtual void checkDataMemberPointersIfInMemoryPool() override;
93002 
93003  // DQ (4/30/2006): Modified to be a const function.
93018  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
93019 
93029  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
93030 
93042  virtual long getChildIndex( SgNode* childNode ) const override;
93043 
93044  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
93045  // comment here (changed to be a C style comment and not be a doxygen comment).
93046  /* \brief Constructor for use by AST File I/O Mechanism
93047 
93048  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
93049  which obtained via fast binary file I/O from disk.
93050  */
93051  // SgOmpProcBindClause( SgOmpProcBindClauseStorageClass& source );
93052 
93053 
93054 
93055 
93056 
93057  // JH (10/24/2005): methods added to support the ast file IO
93058  private:
93059 
93060  /* name AST Memory Allocation Support Functions
93061  \brief Memory allocations support....
93062 
93063  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
93064  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
93065  and support the AST File I/O Mechanism.
93066  */
93067  /* */
93068 
93069  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
93070  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
93071  that I use the same type everywhere, if any changes are made. THe second one declares the type
93072  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
93073  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
93074  a correspinding one in the AST_FILE_IO class!
93075  */
93076  // DQ (9/2/2015): This typedef is no longer used, we can't define the
93077  // comment here (changed to be a C style comment and not be a doxygen comment).
93078  /* \brief Typedef used for low level memory access.
93079  */
93080  // typedef unsigned char* TestType;
93081 
93082  // DQ (9/2/2015): This typedef is no longer used, we can't define the
93083  // comment here (changed to be a C style comment and not be a doxygen comment).
93084  /* \brief Typedef used to hold memory addresses as values.
93085  */
93086  // typedef unsigned long AddressType;
93087 
93088 
93089 
93090  // necessary, to have direct access to the p_freepointer and the private methods !
93092  friend class AST_FILE_IO;
93093 
93095  friend class SgOmpProcBindClauseStorageClass;
93096 
93098  friend class AstSpecificDataManagingClass;
93099 
93101  friend class AstSpecificDataManagingClassStorageClass;
93102 
93103  public:
93105  SgOmpProcBindClause( const SgOmpProcBindClauseStorageClass& source );
93106 
93107  // private: // JJW hack
93108  /*
93109  name AST Memory Allocation Support Variables
93110  Memory allocations support variables
93111 
93112  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
93113  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
93114  and support the AST File I/O Mechanism.
93115  */
93116  /* */
93117 
93118  public:
93119 
93120  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
93121  // to current node (so that it will work cleanly with build functions to specify patterns).
93122  // virtual SgNode* addRegExpAttribute();
93129 
93130 // *** COMMON CODE SECTION ENDS HERE ***
93131 
93132 
93133 // End of memberFunctionString
93134 // Start of memberFunctionString
93135 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
93136 
93137  // the generated cast function
93138  // friend ROSE_DLL_API SgOmpProcBindClause* isSgOmpProcBindClause ( SgNode* s );
93139 
93140  typedef SgOmpClause base_node_type;
93141 
93142 
93143 // End of memberFunctionString
93144 
93145  public:
93146  SgOmpClause::omp_proc_bind_policy_enum get_policy() const;
93147  void set_policy(SgOmpClause::omp_proc_bind_policy_enum policy);
93148 
93149 
93150  public:
93151  virtual ~SgOmpProcBindClause();
93152 
93153 
93154  public:
93155  SgOmpProcBindClause(Sg_File_Info* startOfConstruct , SgOmpClause::omp_proc_bind_policy_enum policy =e_omp_proc_bind_policy_unknown);
93156  SgOmpProcBindClause(SgOmpClause::omp_proc_bind_policy_enum policy);
93157 
93158  protected:
93159 // Start of memberFunctionString
93160 SgOmpClause::omp_proc_bind_policy_enum p_policy;
93161 
93162 // End of memberFunctionString
93163 
93164 
93165 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
93166 
93167 
93168  };
93169 #endif
93170 
93171 // postdeclarations for SgOmpProcBindClause
93172 
93173 /* #line 93174 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
93174 
93175 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
93176 
93177 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
93178 
93179 
93180 /* #line 93181 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
93181 
93182 
93183 
93184 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
93185 
93186 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
93187 // This code is automatically generated for each
93188 // terminal and non-terminal within the defined
93189 // grammar. There is a simple way to change the
93190 // code to fix bugs etc. See the ROSE README file
93191 // for directions.
93192 
93193 // tps: (02/22/2010): Adding DLL export requirements
93194 #include "rosedll.h"
93195 
93196 // predeclarations for SgOmpBindClause
93197 
93198 /* #line 93199 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
93199 
93200 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
93201 
93202 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
93203 
93204 #if 1
93205 // Class Definition for SgOmpBindClause
93206 class ROSE_DLL_API SgOmpBindClause : public SgOmpClause
93207  {
93208  public:
93209 
93210 
93211 /* #line 93212 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
93212 
93213  virtual SgNode* copy ( SgCopyHelp& help) const override;
93214 // Start of memberFunctionString
93215 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
93216 
93217 // *** COMMON CODE SECTION BEGINS HERE ***
93218 
93219  public:
93220 
93221  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
93222  // and not required which is required to match the other aspects of the copy mechanism code generation.
93223  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
93224  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
93225  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
93226  // virtual SgNode* copy ( const SgCopyHelp & help) const;
93227 
93229  virtual std::string class_name() const override;
93230 
93232  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
93233 
93235  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
93236  // static const VariantT static_variant = V_SgOmpBindClause;
93237  enum { static_variant = V_SgOmpBindClause };
93238 
93239  /* the generated cast function */
93241  ROSE_DLL_API friend SgOmpBindClause* isSgOmpBindClause( SgNode * s );
93242 
93244  ROSE_DLL_API friend const SgOmpBindClause* isSgOmpBindClause( const SgNode * s );
93245 
93246  // ******************************************
93247  // * Memory Pool / New / Delete
93248  // ******************************************
93249 
93250  public:
93252  static const unsigned pool_size; //
93254  static std::vector<unsigned char *> pools; //
93256  static SgOmpBindClause * next_node; //
93257 
93259  static unsigned long initializeStorageClassArray(SgOmpBindClauseStorageClass *); //
93260 
93262  static void clearMemoryPool(); //
93263  static void deleteMemoryPool(); //
93264 
93266  static void extendMemoryPoolForFileIO(); //
93267 
93269  static SgOmpBindClause * getPointerFromGlobalIndex(unsigned long); //
93271  static SgOmpBindClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
93272 
93274  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
93276  static void resetValidFreepointers(); //
93278  static unsigned long getNumberOfLastValidPointer(); //
93279 
93280 
93281 #if defined(INLINE_FUNCTIONS)
93282 
93283  inline void *operator new (size_t size);
93284 #else
93285 
93286  void *operator new (size_t size);
93287 #endif
93288 
93289  void operator delete (void* pointer, size_t size);
93290 
93291  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
93292  void operator delete (void* pointer)
93293  {
93294  // This is the generated delete operator...
93295  SgOmpBindClause::operator delete (pointer,sizeof(SgOmpBindClause));
93296  }
93297 
93299  static size_t numberOfNodes();
93300 
93302  static size_t memoryUsage();
93303 
93304  // End of scope which started in IR nodes specific code
93305  /* */
93306 
93307  /* name Internal Functions
93308  \brief Internal functions ... incomplete-documentation
93309 
93310  These functions have been made public as part of the design, but they are suggested for internal use
93311  or by particularly knowledgeable users for specialized tools or applications.
93312 
93313  \internal We could not make these private because they are required by user for special purposes. And
93314  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
93315 
93316  */
93317 
93318  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
93319  // overridden in every class by *generated* implementation
93321  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
93322  // MS: 06/28/02 container of names of variables or container indices
93323  // used used in the traversal to access AST successor nodes
93324  // overridden in every class by *generated* implementation
93327  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
93328 
93329  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
93330  // than all the vector copies. The implementation for these functions is generated for each class.
93332  virtual size_t get_numberOfTraversalSuccessors() override;
93334  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
93336  virtual size_t get_childIndex(SgNode *child) override;
93337 
93338 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
93339  // MS: 08/16/2002 method for generating RTI information
93341  virtual RTIReturnType roseRTI() override;
93342 #endif
93343  /* */
93344 
93345 
93346 
93347  /* name Deprecated Functions
93348  \brief Deprecated functions ... incomplete-documentation
93349 
93350  These functions have been deprecated from use.
93351  */
93352  /* */
93353 
93355  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
93356 
93357  // JJW (10/16/2008): Changed to a single function in Node.code, and put
93358  // getVariant() in #if 0 block to prevent confusing Doxygen
93359 #if 0
93360 
93361  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
93363  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
93364 #endif
93365  /* */
93366 
93367 
93368 
93369 
93370  public:
93371  /* name Traversal Support Functions
93372  \brief Traversal support functions ... incomplete-documentation
93373 
93374  These functions have been made public as part of the design, but they are suggested for internal use
93375  or by particularly knowledgable users for specialized tools or applications.
93376  */
93377  /* */
93378 
93379  // DQ (11/26/2005): Support for visitor pattern mechanims
93380  // (inferior to ROSE traversal mechanism, experimental).
93384 
93385  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
93387  virtual void accept (ROSE_VisitorPattern & visitor) override;
93388 
93389  // DQ (12/26/2005): Support for traversal based on the memory pool
93392  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
93393 
93397 
93398  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
93399  // This traversal helps support internal tools that call static member functions.
93400  // note: this function operates on the memory pools.
93403  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
93404  /* */
93405 
93406 
93407  public:
93408  /* name Memory Allocation Functions
93409  \brief Memory allocations functions ... incomplete-documentation
93410 
93411  These functions have been made public as part of the design, but they are suggested for internal use
93412  or by particularly knowledgable users for specialized tools or applications.
93413  */
93414  /* */
93415 
93426  virtual bool isInMemoryPool() override;
93427 
93438  virtual void checkDataMemberPointersIfInMemoryPool() override;
93439 
93440  // DQ (4/30/2006): Modified to be a const function.
93455  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
93456 
93466  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
93467 
93479  virtual long getChildIndex( SgNode* childNode ) const override;
93480 
93481  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
93482  // comment here (changed to be a C style comment and not be a doxygen comment).
93483  /* \brief Constructor for use by AST File I/O Mechanism
93484 
93485  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
93486  which obtained via fast binary file I/O from disk.
93487  */
93488  // SgOmpBindClause( SgOmpBindClauseStorageClass& source );
93489 
93490 
93491 
93492 
93493 
93494  // JH (10/24/2005): methods added to support the ast file IO
93495  private:
93496 
93497  /* name AST Memory Allocation Support Functions
93498  \brief Memory allocations support....
93499 
93500  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
93501  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
93502  and support the AST File I/O Mechanism.
93503  */
93504  /* */
93505 
93506  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
93507  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
93508  that I use the same type everywhere, if any changes are made. THe second one declares the type
93509  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
93510  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
93511  a correspinding one in the AST_FILE_IO class!
93512  */
93513  // DQ (9/2/2015): This typedef is no longer used, we can't define the
93514  // comment here (changed to be a C style comment and not be a doxygen comment).
93515  /* \brief Typedef used for low level memory access.
93516  */
93517  // typedef unsigned char* TestType;
93518 
93519  // DQ (9/2/2015): This typedef is no longer used, we can't define the
93520  // comment here (changed to be a C style comment and not be a doxygen comment).
93521  /* \brief Typedef used to hold memory addresses as values.
93522  */
93523  // typedef unsigned long AddressType;
93524 
93525 
93526 
93527  // necessary, to have direct access to the p_freepointer and the private methods !
93529  friend class AST_FILE_IO;
93530 
93532  friend class SgOmpBindClauseStorageClass;
93533 
93535  friend class AstSpecificDataManagingClass;
93536 
93538  friend class AstSpecificDataManagingClassStorageClass;
93539 
93540  public:
93542  SgOmpBindClause( const SgOmpBindClauseStorageClass& source );
93543 
93544  // private: // JJW hack
93545  /*
93546  name AST Memory Allocation Support Variables
93547  Memory allocations support variables
93548 
93549  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
93550  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
93551  and support the AST File I/O Mechanism.
93552  */
93553  /* */
93554 
93555  public:
93556 
93557  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
93558  // to current node (so that it will work cleanly with build functions to specify patterns).
93559  // virtual SgNode* addRegExpAttribute();
93566 
93567 // *** COMMON CODE SECTION ENDS HERE ***
93568 
93569 
93570 // End of memberFunctionString
93571 // Start of memberFunctionString
93572 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
93573 
93574  // the generated cast function
93575  // friend ROSE_DLL_API SgOmpBindClause* isSgOmpBindClause ( SgNode* s );
93576 
93577  typedef SgOmpClause base_node_type;
93578 
93579 
93580 // End of memberFunctionString
93581 
93582  public:
93583  SgOmpClause::omp_bind_binding_enum get_binding() const;
93584  void set_binding(SgOmpClause::omp_bind_binding_enum binding);
93585 
93586 
93587  public:
93588  virtual ~SgOmpBindClause();
93589 
93590 
93591  public:
93592  SgOmpBindClause(Sg_File_Info* startOfConstruct , SgOmpClause::omp_bind_binding_enum binding =e_omp_bind_binding_unspecified);
93593  SgOmpBindClause(SgOmpClause::omp_bind_binding_enum binding);
93594 
93595  protected:
93596 // Start of memberFunctionString
93597 SgOmpClause::omp_bind_binding_enum p_binding;
93598 
93599 // End of memberFunctionString
93600 
93601 
93602 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
93603 
93604 
93605  };
93606 #endif
93607 
93608 // postdeclarations for SgOmpBindClause
93609 
93610 /* #line 93611 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
93611 
93612 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
93613 
93614 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
93615 
93616 
93617 /* #line 93618 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
93618 
93619 
93620 
93621 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
93622 
93623 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
93624 // This code is automatically generated for each
93625 // terminal and non-terminal within the defined
93626 // grammar. There is a simple way to change the
93627 // code to fix bugs etc. See the ROSE README file
93628 // for directions.
93629 
93630 // tps: (02/22/2010): Adding DLL export requirements
93631 #include "rosedll.h"
93632 
93633 // predeclarations for SgOmpOrderClause
93634 
93635 /* #line 93636 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
93636 
93637 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
93638 
93639 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
93640 
93641 #if 1
93642 // Class Definition for SgOmpOrderClause
93643 class ROSE_DLL_API SgOmpOrderClause : public SgOmpClause
93644  {
93645  public:
93646 
93647 
93648 /* #line 93649 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
93649 
93650  virtual SgNode* copy ( SgCopyHelp& help) const override;
93651 // Start of memberFunctionString
93652 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
93653 
93654 // *** COMMON CODE SECTION BEGINS HERE ***
93655 
93656  public:
93657 
93658  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
93659  // and not required which is required to match the other aspects of the copy mechanism code generation.
93660  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
93661  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
93662  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
93663  // virtual SgNode* copy ( const SgCopyHelp & help) const;
93664 
93666  virtual std::string class_name() const override;
93667 
93669  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
93670 
93672  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
93673  // static const VariantT static_variant = V_SgOmpOrderClause;
93674  enum { static_variant = V_SgOmpOrderClause };
93675 
93676  /* the generated cast function */
93678  ROSE_DLL_API friend SgOmpOrderClause* isSgOmpOrderClause( SgNode * s );
93679 
93681  ROSE_DLL_API friend const SgOmpOrderClause* isSgOmpOrderClause( const SgNode * s );
93682 
93683  // ******************************************
93684  // * Memory Pool / New / Delete
93685  // ******************************************
93686 
93687  public:
93689  static const unsigned pool_size; //
93691  static std::vector<unsigned char *> pools; //
93693  static SgOmpOrderClause * next_node; //
93694 
93696  static unsigned long initializeStorageClassArray(SgOmpOrderClauseStorageClass *); //
93697 
93699  static void clearMemoryPool(); //
93700  static void deleteMemoryPool(); //
93701 
93703  static void extendMemoryPoolForFileIO(); //
93704 
93706  static SgOmpOrderClause * getPointerFromGlobalIndex(unsigned long); //
93708  static SgOmpOrderClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
93709 
93711  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
93713  static void resetValidFreepointers(); //
93715  static unsigned long getNumberOfLastValidPointer(); //
93716 
93717 
93718 #if defined(INLINE_FUNCTIONS)
93719 
93720  inline void *operator new (size_t size);
93721 #else
93722 
93723  void *operator new (size_t size);
93724 #endif
93725 
93726  void operator delete (void* pointer, size_t size);
93727 
93728  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
93729  void operator delete (void* pointer)
93730  {
93731  // This is the generated delete operator...
93732  SgOmpOrderClause::operator delete (pointer,sizeof(SgOmpOrderClause));
93733  }
93734 
93736  static size_t numberOfNodes();
93737 
93739  static size_t memoryUsage();
93740 
93741  // End of scope which started in IR nodes specific code
93742  /* */
93743 
93744  /* name Internal Functions
93745  \brief Internal functions ... incomplete-documentation
93746 
93747  These functions have been made public as part of the design, but they are suggested for internal use
93748  or by particularly knowledgeable users for specialized tools or applications.
93749 
93750  \internal We could not make these private because they are required by user for special purposes. And
93751  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
93752 
93753  */
93754 
93755  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
93756  // overridden in every class by *generated* implementation
93758  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
93759  // MS: 06/28/02 container of names of variables or container indices
93760  // used used in the traversal to access AST successor nodes
93761  // overridden in every class by *generated* implementation
93764  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
93765 
93766  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
93767  // than all the vector copies. The implementation for these functions is generated for each class.
93769  virtual size_t get_numberOfTraversalSuccessors() override;
93771  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
93773  virtual size_t get_childIndex(SgNode *child) override;
93774 
93775 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
93776  // MS: 08/16/2002 method for generating RTI information
93778  virtual RTIReturnType roseRTI() override;
93779 #endif
93780  /* */
93781 
93782 
93783 
93784  /* name Deprecated Functions
93785  \brief Deprecated functions ... incomplete-documentation
93786 
93787  These functions have been deprecated from use.
93788  */
93789  /* */
93790 
93792  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
93793 
93794  // JJW (10/16/2008): Changed to a single function in Node.code, and put
93795  // getVariant() in #if 0 block to prevent confusing Doxygen
93796 #if 0
93797 
93798  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
93800  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
93801 #endif
93802  /* */
93803 
93804 
93805 
93806 
93807  public:
93808  /* name Traversal Support Functions
93809  \brief Traversal support functions ... incomplete-documentation
93810 
93811  These functions have been made public as part of the design, but they are suggested for internal use
93812  or by particularly knowledgable users for specialized tools or applications.
93813  */
93814  /* */
93815 
93816  // DQ (11/26/2005): Support for visitor pattern mechanims
93817  // (inferior to ROSE traversal mechanism, experimental).
93821 
93822  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
93824  virtual void accept (ROSE_VisitorPattern & visitor) override;
93825 
93826  // DQ (12/26/2005): Support for traversal based on the memory pool
93829  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
93830 
93834 
93835  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
93836  // This traversal helps support internal tools that call static member functions.
93837  // note: this function operates on the memory pools.
93840  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
93841  /* */
93842 
93843 
93844  public:
93845  /* name Memory Allocation Functions
93846  \brief Memory allocations functions ... incomplete-documentation
93847 
93848  These functions have been made public as part of the design, but they are suggested for internal use
93849  or by particularly knowledgable users for specialized tools or applications.
93850  */
93851  /* */
93852 
93863  virtual bool isInMemoryPool() override;
93864 
93875  virtual void checkDataMemberPointersIfInMemoryPool() override;
93876 
93877  // DQ (4/30/2006): Modified to be a const function.
93892  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
93893 
93903  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
93904 
93916  virtual long getChildIndex( SgNode* childNode ) const override;
93917 
93918  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
93919  // comment here (changed to be a C style comment and not be a doxygen comment).
93920  /* \brief Constructor for use by AST File I/O Mechanism
93921 
93922  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
93923  which obtained via fast binary file I/O from disk.
93924  */
93925  // SgOmpOrderClause( SgOmpOrderClauseStorageClass& source );
93926 
93927 
93928 
93929 
93930 
93931  // JH (10/24/2005): methods added to support the ast file IO
93932  private:
93933 
93934  /* name AST Memory Allocation Support Functions
93935  \brief Memory allocations support....
93936 
93937  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
93938  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
93939  and support the AST File I/O Mechanism.
93940  */
93941  /* */
93942 
93943  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
93944  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
93945  that I use the same type everywhere, if any changes are made. THe second one declares the type
93946  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
93947  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
93948  a correspinding one in the AST_FILE_IO class!
93949  */
93950  // DQ (9/2/2015): This typedef is no longer used, we can't define the
93951  // comment here (changed to be a C style comment and not be a doxygen comment).
93952  /* \brief Typedef used for low level memory access.
93953  */
93954  // typedef unsigned char* TestType;
93955 
93956  // DQ (9/2/2015): This typedef is no longer used, we can't define the
93957  // comment here (changed to be a C style comment and not be a doxygen comment).
93958  /* \brief Typedef used to hold memory addresses as values.
93959  */
93960  // typedef unsigned long AddressType;
93961 
93962 
93963 
93964  // necessary, to have direct access to the p_freepointer and the private methods !
93966  friend class AST_FILE_IO;
93967 
93969  friend class SgOmpOrderClauseStorageClass;
93970 
93972  friend class AstSpecificDataManagingClass;
93973 
93975  friend class AstSpecificDataManagingClassStorageClass;
93976 
93977  public:
93979  SgOmpOrderClause( const SgOmpOrderClauseStorageClass& source );
93980 
93981  // private: // JJW hack
93982  /*
93983  name AST Memory Allocation Support Variables
93984  Memory allocations support variables
93985 
93986  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
93987  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
93988  and support the AST File I/O Mechanism.
93989  */
93990  /* */
93991 
93992  public:
93993 
93994  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
93995  // to current node (so that it will work cleanly with build functions to specify patterns).
93996  // virtual SgNode* addRegExpAttribute();
94003 
94004 // *** COMMON CODE SECTION ENDS HERE ***
94005 
94006 
94007 // End of memberFunctionString
94008 // Start of memberFunctionString
94009 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
94010 
94011  // the generated cast function
94012  // friend ROSE_DLL_API SgOmpOrderClause* isSgOmpOrderClause ( SgNode* s );
94013 
94014  typedef SgOmpClause base_node_type;
94015 
94016 
94017 // End of memberFunctionString
94018 
94019  public:
94020  SgOmpClause::omp_order_kind_enum get_kind() const;
94021  void set_kind(SgOmpClause::omp_order_kind_enum kind);
94022 
94023 
94024  public:
94025  virtual ~SgOmpOrderClause();
94026 
94027 
94028  public:
94029  SgOmpOrderClause(Sg_File_Info* startOfConstruct , SgOmpClause::omp_order_kind_enum kind =e_omp_order_kind_unspecified);
94030  SgOmpOrderClause(SgOmpClause::omp_order_kind_enum kind);
94031 
94032  protected:
94033 // Start of memberFunctionString
94034 SgOmpClause::omp_order_kind_enum p_kind;
94035 
94036 // End of memberFunctionString
94037 
94038 
94039 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
94040 
94041 
94042  };
94043 #endif
94044 
94045 // postdeclarations for SgOmpOrderClause
94046 
94047 /* #line 94048 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
94048 
94049 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
94050 
94051 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
94052 
94053 
94054 /* #line 94055 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
94055 
94056 
94057 
94058 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
94059 
94060 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
94061 // This code is automatically generated for each
94062 // terminal and non-terminal within the defined
94063 // grammar. There is a simple way to change the
94064 // code to fix bugs etc. See the ROSE README file
94065 // for directions.
94066 
94067 // tps: (02/22/2010): Adding DLL export requirements
94068 #include "rosedll.h"
94069 
94070 // predeclarations for SgOmpDistScheduleClause
94071 
94072 /* #line 94073 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
94073 
94074 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
94075 
94076 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
94077 
94078 #if 1
94079 // Class Definition for SgOmpDistScheduleClause
94080 class ROSE_DLL_API SgOmpDistScheduleClause : public SgOmpClause
94081  {
94082  public:
94083 
94084 
94085 /* #line 94086 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
94086 
94087  virtual SgNode* copy ( SgCopyHelp& help) const override;
94088 // Start of memberFunctionString
94089 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
94090 
94091 // *** COMMON CODE SECTION BEGINS HERE ***
94092 
94093  public:
94094 
94095  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
94096  // and not required which is required to match the other aspects of the copy mechanism code generation.
94097  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
94098  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
94099  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
94100  // virtual SgNode* copy ( const SgCopyHelp & help) const;
94101 
94103  virtual std::string class_name() const override;
94104 
94106  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
94107 
94109  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
94110  // static const VariantT static_variant = V_SgOmpDistScheduleClause;
94111  enum { static_variant = V_SgOmpDistScheduleClause };
94112 
94113  /* the generated cast function */
94115  ROSE_DLL_API friend SgOmpDistScheduleClause* isSgOmpDistScheduleClause( SgNode * s );
94116 
94118  ROSE_DLL_API friend const SgOmpDistScheduleClause* isSgOmpDistScheduleClause( const SgNode * s );
94119 
94120  // ******************************************
94121  // * Memory Pool / New / Delete
94122  // ******************************************
94123 
94124  public:
94126  static const unsigned pool_size; //
94128  static std::vector<unsigned char *> pools; //
94130  static SgOmpDistScheduleClause * next_node; //
94131 
94133  static unsigned long initializeStorageClassArray(SgOmpDistScheduleClauseStorageClass *); //
94134 
94136  static void clearMemoryPool(); //
94137  static void deleteMemoryPool(); //
94138 
94140  static void extendMemoryPoolForFileIO(); //
94141 
94143  static SgOmpDistScheduleClause * getPointerFromGlobalIndex(unsigned long); //
94145  static SgOmpDistScheduleClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
94146 
94148  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
94150  static void resetValidFreepointers(); //
94152  static unsigned long getNumberOfLastValidPointer(); //
94153 
94154 
94155 #if defined(INLINE_FUNCTIONS)
94156 
94157  inline void *operator new (size_t size);
94158 #else
94159 
94160  void *operator new (size_t size);
94161 #endif
94162 
94163  void operator delete (void* pointer, size_t size);
94164 
94165  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
94166  void operator delete (void* pointer)
94167  {
94168  // This is the generated delete operator...
94169  SgOmpDistScheduleClause::operator delete (pointer,sizeof(SgOmpDistScheduleClause));
94170  }
94171 
94173  static size_t numberOfNodes();
94174 
94176  static size_t memoryUsage();
94177 
94178  // End of scope which started in IR nodes specific code
94179  /* */
94180 
94181  /* name Internal Functions
94182  \brief Internal functions ... incomplete-documentation
94183 
94184  These functions have been made public as part of the design, but they are suggested for internal use
94185  or by particularly knowledgeable users for specialized tools or applications.
94186 
94187  \internal We could not make these private because they are required by user for special purposes. And
94188  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
94189 
94190  */
94191 
94192  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
94193  // overridden in every class by *generated* implementation
94195  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
94196  // MS: 06/28/02 container of names of variables or container indices
94197  // used used in the traversal to access AST successor nodes
94198  // overridden in every class by *generated* implementation
94201  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
94202 
94203  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
94204  // than all the vector copies. The implementation for these functions is generated for each class.
94206  virtual size_t get_numberOfTraversalSuccessors() override;
94208  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
94210  virtual size_t get_childIndex(SgNode *child) override;
94211 
94212 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
94213  // MS: 08/16/2002 method for generating RTI information
94215  virtual RTIReturnType roseRTI() override;
94216 #endif
94217  /* */
94218 
94219 
94220 
94221  /* name Deprecated Functions
94222  \brief Deprecated functions ... incomplete-documentation
94223 
94224  These functions have been deprecated from use.
94225  */
94226  /* */
94227 
94229  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
94230 
94231  // JJW (10/16/2008): Changed to a single function in Node.code, and put
94232  // getVariant() in #if 0 block to prevent confusing Doxygen
94233 #if 0
94234 
94235  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
94237  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
94238 #endif
94239  /* */
94240 
94241 
94242 
94243 
94244  public:
94245  /* name Traversal Support Functions
94246  \brief Traversal support functions ... incomplete-documentation
94247 
94248  These functions have been made public as part of the design, but they are suggested for internal use
94249  or by particularly knowledgable users for specialized tools or applications.
94250  */
94251  /* */
94252 
94253  // DQ (11/26/2005): Support for visitor pattern mechanims
94254  // (inferior to ROSE traversal mechanism, experimental).
94258 
94259  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
94261  virtual void accept (ROSE_VisitorPattern & visitor) override;
94262 
94263  // DQ (12/26/2005): Support for traversal based on the memory pool
94266  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
94267 
94271 
94272  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
94273  // This traversal helps support internal tools that call static member functions.
94274  // note: this function operates on the memory pools.
94277  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
94278  /* */
94279 
94280 
94281  public:
94282  /* name Memory Allocation Functions
94283  \brief Memory allocations functions ... incomplete-documentation
94284 
94285  These functions have been made public as part of the design, but they are suggested for internal use
94286  or by particularly knowledgable users for specialized tools or applications.
94287  */
94288  /* */
94289 
94300  virtual bool isInMemoryPool() override;
94301 
94312  virtual void checkDataMemberPointersIfInMemoryPool() override;
94313 
94314  // DQ (4/30/2006): Modified to be a const function.
94329  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
94330 
94340  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
94341 
94353  virtual long getChildIndex( SgNode* childNode ) const override;
94354 
94355  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
94356  // comment here (changed to be a C style comment and not be a doxygen comment).
94357  /* \brief Constructor for use by AST File I/O Mechanism
94358 
94359  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
94360  which obtained via fast binary file I/O from disk.
94361  */
94362  // SgOmpDistScheduleClause( SgOmpDistScheduleClauseStorageClass& source );
94363 
94364 
94365 
94366 
94367 
94368  // JH (10/24/2005): methods added to support the ast file IO
94369  private:
94370 
94371  /* name AST Memory Allocation Support Functions
94372  \brief Memory allocations support....
94373 
94374  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
94375  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
94376  and support the AST File I/O Mechanism.
94377  */
94378  /* */
94379 
94380  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
94381  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
94382  that I use the same type everywhere, if any changes are made. THe second one declares the type
94383  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
94384  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
94385  a correspinding one in the AST_FILE_IO class!
94386  */
94387  // DQ (9/2/2015): This typedef is no longer used, we can't define the
94388  // comment here (changed to be a C style comment and not be a doxygen comment).
94389  /* \brief Typedef used for low level memory access.
94390  */
94391  // typedef unsigned char* TestType;
94392 
94393  // DQ (9/2/2015): This typedef is no longer used, we can't define the
94394  // comment here (changed to be a C style comment and not be a doxygen comment).
94395  /* \brief Typedef used to hold memory addresses as values.
94396  */
94397  // typedef unsigned long AddressType;
94398 
94399 
94400 
94401  // necessary, to have direct access to the p_freepointer and the private methods !
94403  friend class AST_FILE_IO;
94404 
94406  friend class SgOmpDistScheduleClauseStorageClass;
94407 
94409  friend class AstSpecificDataManagingClass;
94410 
94412  friend class AstSpecificDataManagingClassStorageClass;
94413 
94414  public:
94416  SgOmpDistScheduleClause( const SgOmpDistScheduleClauseStorageClass& source );
94417 
94418  // private: // JJW hack
94419  /*
94420  name AST Memory Allocation Support Variables
94421  Memory allocations support variables
94422 
94423  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
94424  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
94425  and support the AST File I/O Mechanism.
94426  */
94427  /* */
94428 
94429  public:
94430 
94431  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
94432  // to current node (so that it will work cleanly with build functions to specify patterns).
94433  // virtual SgNode* addRegExpAttribute();
94440 
94441 // *** COMMON CODE SECTION ENDS HERE ***
94442 
94443 
94444 // End of memberFunctionString
94445 // Start of memberFunctionString
94446 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
94447 
94448  // the generated cast function
94449  // friend ROSE_DLL_API SgOmpDistScheduleClause* isSgOmpDistScheduleClause ( SgNode* s );
94450 
94451  typedef SgOmpClause base_node_type;
94452 
94453 
94454 // End of memberFunctionString
94455 
94456  public:
94457  SgOmpClause::omp_dist_schedule_kind_enum get_kind() const;
94458  void set_kind(SgOmpClause::omp_dist_schedule_kind_enum kind);
94459 
94460  public:
94461  SgExpression* get_chunk_size() const;
94462  void set_chunk_size(SgExpression* chunk_size);
94463 
94464 
94465  public:
94466  virtual ~SgOmpDistScheduleClause();
94467 
94468 
94469  public:
94470  SgOmpDistScheduleClause(Sg_File_Info* startOfConstruct , SgOmpClause::omp_dist_schedule_kind_enum kind =e_omp_dist_schedule_kind_unspecified, SgExpression* chunk_size = NULL);
94471  SgOmpDistScheduleClause(SgOmpClause::omp_dist_schedule_kind_enum kind, SgExpression* chunk_size);
94472 
94473  protected:
94474 // Start of memberFunctionString
94475 SgOmpClause::omp_dist_schedule_kind_enum p_kind;
94476 
94477 // End of memberFunctionString
94478 // Start of memberFunctionString
94479 SgExpression* p_chunk_size;
94480 
94481 // End of memberFunctionString
94482 
94483 
94484 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
94485 
94486 
94487  };
94488 #endif
94489 
94490 // postdeclarations for SgOmpDistScheduleClause
94491 
94492 /* #line 94493 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
94493 
94494 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
94495 
94496 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
94497 
94498 
94499 /* #line 94500 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
94500 
94501 
94502 
94503 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
94504 
94505 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
94506 // This code is automatically generated for each
94507 // terminal and non-terminal within the defined
94508 // grammar. There is a simple way to change the
94509 // code to fix bugs etc. See the ROSE README file
94510 // for directions.
94511 
94512 // tps: (02/22/2010): Adding DLL export requirements
94513 #include "rosedll.h"
94514 
94515 // predeclarations for SgOmpExpressionClause
94516 
94517 /* #line 94518 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
94518 
94519 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
94520 
94521 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
94522 
94523 #if 1
94524 // Class Definition for SgOmpExpressionClause
94525 class ROSE_DLL_API SgOmpExpressionClause : public SgOmpClause
94526  {
94527  public:
94528 
94529 
94530 /* #line 94531 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
94531 
94532  virtual SgNode* copy ( SgCopyHelp& help) const override;
94533 // Start of memberFunctionString
94534 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
94535 
94536 // *** COMMON CODE SECTION BEGINS HERE ***
94537 
94538  public:
94539 
94540  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
94541  // and not required which is required to match the other aspects of the copy mechanism code generation.
94542  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
94543  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
94544  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
94545  // virtual SgNode* copy ( const SgCopyHelp & help) const;
94546 
94548  virtual std::string class_name() const override;
94549 
94551  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
94552 
94554  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
94555  // static const VariantT static_variant = V_SgOmpExpressionClause;
94556  enum { static_variant = V_SgOmpExpressionClause };
94557 
94558  /* the generated cast function */
94560  ROSE_DLL_API friend SgOmpExpressionClause* isSgOmpExpressionClause( SgNode * s );
94561 
94563  ROSE_DLL_API friend const SgOmpExpressionClause* isSgOmpExpressionClause( const SgNode * s );
94564 
94565  // ******************************************
94566  // * Memory Pool / New / Delete
94567  // ******************************************
94568 
94569  public:
94571  static const unsigned pool_size; //
94573  static std::vector<unsigned char *> pools; //
94575  static SgOmpExpressionClause * next_node; //
94576 
94578  static unsigned long initializeStorageClassArray(SgOmpExpressionClauseStorageClass *); //
94579 
94581  static void clearMemoryPool(); //
94582  static void deleteMemoryPool(); //
94583 
94585  static void extendMemoryPoolForFileIO(); //
94586 
94588  static SgOmpExpressionClause * getPointerFromGlobalIndex(unsigned long); //
94590  static SgOmpExpressionClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
94591 
94593  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
94595  static void resetValidFreepointers(); //
94597  static unsigned long getNumberOfLastValidPointer(); //
94598 
94599 
94600 #if defined(INLINE_FUNCTIONS)
94601 
94602  inline void *operator new (size_t size);
94603 #else
94604 
94605  void *operator new (size_t size);
94606 #endif
94607 
94608  void operator delete (void* pointer, size_t size);
94609 
94610  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
94611  void operator delete (void* pointer)
94612  {
94613  // This is the generated delete operator...
94614  SgOmpExpressionClause::operator delete (pointer,sizeof(SgOmpExpressionClause));
94615  }
94616 
94618  static size_t numberOfNodes();
94619 
94621  static size_t memoryUsage();
94622 
94623  // End of scope which started in IR nodes specific code
94624  /* */
94625 
94626  /* name Internal Functions
94627  \brief Internal functions ... incomplete-documentation
94628 
94629  These functions have been made public as part of the design, but they are suggested for internal use
94630  or by particularly knowledgeable users for specialized tools or applications.
94631 
94632  \internal We could not make these private because they are required by user for special purposes. And
94633  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
94634 
94635  */
94636 
94637  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
94638  // overridden in every class by *generated* implementation
94640  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
94641  // MS: 06/28/02 container of names of variables or container indices
94642  // used used in the traversal to access AST successor nodes
94643  // overridden in every class by *generated* implementation
94646  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
94647 
94648  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
94649  // than all the vector copies. The implementation for these functions is generated for each class.
94651  virtual size_t get_numberOfTraversalSuccessors() override;
94653  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
94655  virtual size_t get_childIndex(SgNode *child) override;
94656 
94657 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
94658  // MS: 08/16/2002 method for generating RTI information
94660  virtual RTIReturnType roseRTI() override;
94661 #endif
94662  /* */
94663 
94664 
94665 
94666  /* name Deprecated Functions
94667  \brief Deprecated functions ... incomplete-documentation
94668 
94669  These functions have been deprecated from use.
94670  */
94671  /* */
94672 
94674  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
94675 
94676  // JJW (10/16/2008): Changed to a single function in Node.code, and put
94677  // getVariant() in #if 0 block to prevent confusing Doxygen
94678 #if 0
94679 
94680  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
94682  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
94683 #endif
94684  /* */
94685 
94686 
94687 
94688 
94689  public:
94690  /* name Traversal Support Functions
94691  \brief Traversal support functions ... incomplete-documentation
94692 
94693  These functions have been made public as part of the design, but they are suggested for internal use
94694  or by particularly knowledgable users for specialized tools or applications.
94695  */
94696  /* */
94697 
94698  // DQ (11/26/2005): Support for visitor pattern mechanims
94699  // (inferior to ROSE traversal mechanism, experimental).
94703 
94704  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
94706  virtual void accept (ROSE_VisitorPattern & visitor) override;
94707 
94708  // DQ (12/26/2005): Support for traversal based on the memory pool
94711  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
94712 
94716 
94717  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
94718  // This traversal helps support internal tools that call static member functions.
94719  // note: this function operates on the memory pools.
94722  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
94723  /* */
94724 
94725 
94726  public:
94727  /* name Memory Allocation Functions
94728  \brief Memory allocations functions ... incomplete-documentation
94729 
94730  These functions have been made public as part of the design, but they are suggested for internal use
94731  or by particularly knowledgable users for specialized tools or applications.
94732  */
94733  /* */
94734 
94745  virtual bool isInMemoryPool() override;
94746 
94757  virtual void checkDataMemberPointersIfInMemoryPool() override;
94758 
94759  // DQ (4/30/2006): Modified to be a const function.
94774  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
94775 
94785  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
94786 
94798  virtual long getChildIndex( SgNode* childNode ) const override;
94799 
94800  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
94801  // comment here (changed to be a C style comment and not be a doxygen comment).
94802  /* \brief Constructor for use by AST File I/O Mechanism
94803 
94804  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
94805  which obtained via fast binary file I/O from disk.
94806  */
94807  // SgOmpExpressionClause( SgOmpExpressionClauseStorageClass& source );
94808 
94809 
94810 
94811 
94812 
94813  // JH (10/24/2005): methods added to support the ast file IO
94814  private:
94815 
94816  /* name AST Memory Allocation Support Functions
94817  \brief Memory allocations support....
94818 
94819  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
94820  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
94821  and support the AST File I/O Mechanism.
94822  */
94823  /* */
94824 
94825  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
94826  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
94827  that I use the same type everywhere, if any changes are made. THe second one declares the type
94828  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
94829  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
94830  a correspinding one in the AST_FILE_IO class!
94831  */
94832  // DQ (9/2/2015): This typedef is no longer used, we can't define the
94833  // comment here (changed to be a C style comment and not be a doxygen comment).
94834  /* \brief Typedef used for low level memory access.
94835  */
94836  // typedef unsigned char* TestType;
94837 
94838  // DQ (9/2/2015): This typedef is no longer used, we can't define the
94839  // comment here (changed to be a C style comment and not be a doxygen comment).
94840  /* \brief Typedef used to hold memory addresses as values.
94841  */
94842  // typedef unsigned long AddressType;
94843 
94844 
94845 
94846  // necessary, to have direct access to the p_freepointer and the private methods !
94848  friend class AST_FILE_IO;
94849 
94851  friend class SgOmpExpressionClauseStorageClass;
94852 
94854  friend class AstSpecificDataManagingClass;
94855 
94857  friend class AstSpecificDataManagingClassStorageClass;
94858 
94859  public:
94861  SgOmpExpressionClause( const SgOmpExpressionClauseStorageClass& source );
94862 
94863  // private: // JJW hack
94864  /*
94865  name AST Memory Allocation Support Variables
94866  Memory allocations support variables
94867 
94868  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
94869  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
94870  and support the AST File I/O Mechanism.
94871  */
94872  /* */
94873 
94874  public:
94875 
94876  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
94877  // to current node (so that it will work cleanly with build functions to specify patterns).
94878  // virtual SgNode* addRegExpAttribute();
94885 
94886 // *** COMMON CODE SECTION ENDS HERE ***
94887 
94888 
94889 // End of memberFunctionString
94890 // Start of memberFunctionString
94891 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
94892 
94893  // the generated cast function
94894  // friend ROSE_DLL_API SgOmpExpressionClause* isSgOmpExpressionClause ( SgNode* s );
94895 
94896  typedef SgOmpClause base_node_type;
94897 
94898 
94899 // End of memberFunctionString
94900 
94901  public:
94902  SgExpression* get_expression() const;
94903  void set_expression(SgExpression* expression);
94904 
94905 
94906  public:
94907  virtual ~SgOmpExpressionClause();
94908 
94909 
94910  public:
94911  SgOmpExpressionClause(Sg_File_Info* startOfConstruct , SgExpression* expression = NULL);
94912  SgOmpExpressionClause(SgExpression* expression);
94913 
94914  protected:
94915 // Start of memberFunctionString
94916 SgExpression* p_expression;
94917 
94918 // End of memberFunctionString
94919 
94920 
94921 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
94922 
94923 
94924  };
94925 #endif
94926 
94927 // postdeclarations for SgOmpExpressionClause
94928 
94929 /* #line 94930 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
94930 
94931 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
94932 
94933 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
94934 
94935 
94936 /* #line 94937 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
94937 
94938 
94939 
94940 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
94941 
94942 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
94943 // This code is automatically generated for each
94944 // terminal and non-terminal within the defined
94945 // grammar. There is a simple way to change the
94946 // code to fix bugs etc. See the ROSE README file
94947 // for directions.
94948 
94949 // tps: (02/22/2010): Adding DLL export requirements
94950 #include "rosedll.h"
94951 
94952 // predeclarations for SgOmpOrderedClause
94953 
94954 /* #line 94955 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
94955 
94956 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
94957 
94958 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
94959 
94960 #if 1
94961 // Class Definition for SgOmpOrderedClause
94962 class ROSE_DLL_API SgOmpOrderedClause : public SgOmpExpressionClause
94963  {
94964  public:
94965 
94966 
94967 /* #line 94968 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
94968 
94969  virtual SgNode* copy ( SgCopyHelp& help) const override;
94970 // Start of memberFunctionString
94971 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
94972 
94973 // *** COMMON CODE SECTION BEGINS HERE ***
94974 
94975  public:
94976 
94977  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
94978  // and not required which is required to match the other aspects of the copy mechanism code generation.
94979  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
94980  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
94981  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
94982  // virtual SgNode* copy ( const SgCopyHelp & help) const;
94983 
94985  virtual std::string class_name() const override;
94986 
94988  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
94989 
94991  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
94992  // static const VariantT static_variant = V_SgOmpOrderedClause;
94993  enum { static_variant = V_SgOmpOrderedClause };
94994 
94995  /* the generated cast function */
94997  ROSE_DLL_API friend SgOmpOrderedClause* isSgOmpOrderedClause( SgNode * s );
94998 
95000  ROSE_DLL_API friend const SgOmpOrderedClause* isSgOmpOrderedClause( const SgNode * s );
95001 
95002  // ******************************************
95003  // * Memory Pool / New / Delete
95004  // ******************************************
95005 
95006  public:
95008  static const unsigned pool_size; //
95010  static std::vector<unsigned char *> pools; //
95012  static SgOmpOrderedClause * next_node; //
95013 
95015  static unsigned long initializeStorageClassArray(SgOmpOrderedClauseStorageClass *); //
95016 
95018  static void clearMemoryPool(); //
95019  static void deleteMemoryPool(); //
95020 
95022  static void extendMemoryPoolForFileIO(); //
95023 
95025  static SgOmpOrderedClause * getPointerFromGlobalIndex(unsigned long); //
95027  static SgOmpOrderedClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
95028 
95030  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
95032  static void resetValidFreepointers(); //
95034  static unsigned long getNumberOfLastValidPointer(); //
95035 
95036 
95037 #if defined(INLINE_FUNCTIONS)
95038 
95039  inline void *operator new (size_t size);
95040 #else
95041 
95042  void *operator new (size_t size);
95043 #endif
95044 
95045  void operator delete (void* pointer, size_t size);
95046 
95047  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
95048  void operator delete (void* pointer)
95049  {
95050  // This is the generated delete operator...
95051  SgOmpOrderedClause::operator delete (pointer,sizeof(SgOmpOrderedClause));
95052  }
95053 
95055  static size_t numberOfNodes();
95056 
95058  static size_t memoryUsage();
95059 
95060  // End of scope which started in IR nodes specific code
95061  /* */
95062 
95063  /* name Internal Functions
95064  \brief Internal functions ... incomplete-documentation
95065 
95066  These functions have been made public as part of the design, but they are suggested for internal use
95067  or by particularly knowledgeable users for specialized tools or applications.
95068 
95069  \internal We could not make these private because they are required by user for special purposes. And
95070  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
95071 
95072  */
95073 
95074  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
95075  // overridden in every class by *generated* implementation
95077  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
95078  // MS: 06/28/02 container of names of variables or container indices
95079  // used used in the traversal to access AST successor nodes
95080  // overridden in every class by *generated* implementation
95083  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
95084 
95085  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
95086  // than all the vector copies. The implementation for these functions is generated for each class.
95088  virtual size_t get_numberOfTraversalSuccessors() override;
95090  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
95092  virtual size_t get_childIndex(SgNode *child) override;
95093 
95094 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
95095  // MS: 08/16/2002 method for generating RTI information
95097  virtual RTIReturnType roseRTI() override;
95098 #endif
95099  /* */
95100 
95101 
95102 
95103  /* name Deprecated Functions
95104  \brief Deprecated functions ... incomplete-documentation
95105 
95106  These functions have been deprecated from use.
95107  */
95108  /* */
95109 
95111  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
95112 
95113  // JJW (10/16/2008): Changed to a single function in Node.code, and put
95114  // getVariant() in #if 0 block to prevent confusing Doxygen
95115 #if 0
95116 
95117  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
95119  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
95120 #endif
95121  /* */
95122 
95123 
95124 
95125 
95126  public:
95127  /* name Traversal Support Functions
95128  \brief Traversal support functions ... incomplete-documentation
95129 
95130  These functions have been made public as part of the design, but they are suggested for internal use
95131  or by particularly knowledgable users for specialized tools or applications.
95132  */
95133  /* */
95134 
95135  // DQ (11/26/2005): Support for visitor pattern mechanims
95136  // (inferior to ROSE traversal mechanism, experimental).
95140 
95141  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
95143  virtual void accept (ROSE_VisitorPattern & visitor) override;
95144 
95145  // DQ (12/26/2005): Support for traversal based on the memory pool
95148  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
95149 
95153 
95154  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
95155  // This traversal helps support internal tools that call static member functions.
95156  // note: this function operates on the memory pools.
95159  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
95160  /* */
95161 
95162 
95163  public:
95164  /* name Memory Allocation Functions
95165  \brief Memory allocations functions ... incomplete-documentation
95166 
95167  These functions have been made public as part of the design, but they are suggested for internal use
95168  or by particularly knowledgable users for specialized tools or applications.
95169  */
95170  /* */
95171 
95182  virtual bool isInMemoryPool() override;
95183 
95194  virtual void checkDataMemberPointersIfInMemoryPool() override;
95195 
95196  // DQ (4/30/2006): Modified to be a const function.
95211  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
95212 
95222  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
95223 
95235  virtual long getChildIndex( SgNode* childNode ) const override;
95236 
95237  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
95238  // comment here (changed to be a C style comment and not be a doxygen comment).
95239  /* \brief Constructor for use by AST File I/O Mechanism
95240 
95241  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
95242  which obtained via fast binary file I/O from disk.
95243  */
95244  // SgOmpOrderedClause( SgOmpOrderedClauseStorageClass& source );
95245 
95246 
95247 
95248 
95249 
95250  // JH (10/24/2005): methods added to support the ast file IO
95251  private:
95252 
95253  /* name AST Memory Allocation Support Functions
95254  \brief Memory allocations support....
95255 
95256  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
95257  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
95258  and support the AST File I/O Mechanism.
95259  */
95260  /* */
95261 
95262  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
95263  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
95264  that I use the same type everywhere, if any changes are made. THe second one declares the type
95265  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
95266  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
95267  a correspinding one in the AST_FILE_IO class!
95268  */
95269  // DQ (9/2/2015): This typedef is no longer used, we can't define the
95270  // comment here (changed to be a C style comment and not be a doxygen comment).
95271  /* \brief Typedef used for low level memory access.
95272  */
95273  // typedef unsigned char* TestType;
95274 
95275  // DQ (9/2/2015): This typedef is no longer used, we can't define the
95276  // comment here (changed to be a C style comment and not be a doxygen comment).
95277  /* \brief Typedef used to hold memory addresses as values.
95278  */
95279  // typedef unsigned long AddressType;
95280 
95281 
95282 
95283  // necessary, to have direct access to the p_freepointer and the private methods !
95285  friend class AST_FILE_IO;
95286 
95288  friend class SgOmpOrderedClauseStorageClass;
95289 
95291  friend class AstSpecificDataManagingClass;
95292 
95294  friend class AstSpecificDataManagingClassStorageClass;
95295 
95296  public:
95298  SgOmpOrderedClause( const SgOmpOrderedClauseStorageClass& source );
95299 
95300  // private: // JJW hack
95301  /*
95302  name AST Memory Allocation Support Variables
95303  Memory allocations support variables
95304 
95305  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
95306  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
95307  and support the AST File I/O Mechanism.
95308  */
95309  /* */
95310 
95311  public:
95312 
95313  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
95314  // to current node (so that it will work cleanly with build functions to specify patterns).
95315  // virtual SgNode* addRegExpAttribute();
95322 
95323 // *** COMMON CODE SECTION ENDS HERE ***
95324 
95325 
95326 // End of memberFunctionString
95327 // Start of memberFunctionString
95328 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
95329 
95330  // the generated cast function
95331  // friend ROSE_DLL_API SgOmpOrderedClause* isSgOmpOrderedClause ( SgNode* s );
95332 
95334 
95335 
95336 // End of memberFunctionString
95337 
95338 
95339  public:
95340  virtual ~SgOmpOrderedClause();
95341 
95342 
95343  public:
95344  SgOmpOrderedClause(Sg_File_Info* startOfConstruct , SgExpression* expression = NULL);
95345  SgOmpOrderedClause(SgExpression* expression);
95346 
95347  protected:
95348 
95349 
95350 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
95351 
95352 
95353  };
95354 #endif
95355 
95356 // postdeclarations for SgOmpOrderedClause
95357 
95358 /* #line 95359 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
95359 
95360 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
95361 
95362 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
95363 
95364 
95365 /* #line 95366 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
95366 
95367 
95368 
95369 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
95370 
95371 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
95372 // This code is automatically generated for each
95373 // terminal and non-terminal within the defined
95374 // grammar. There is a simple way to change the
95375 // code to fix bugs etc. See the ROSE README file
95376 // for directions.
95377 
95378 // tps: (02/22/2010): Adding DLL export requirements
95379 #include "rosedll.h"
95380 
95381 // predeclarations for SgOmpCollapseClause
95382 
95383 /* #line 95384 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
95384 
95385 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
95386 
95387 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
95388 
95389 #if 1
95390 // Class Definition for SgOmpCollapseClause
95391 class ROSE_DLL_API SgOmpCollapseClause : public SgOmpExpressionClause
95392  {
95393  public:
95394 
95395 
95396 /* #line 95397 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
95397 
95398  virtual SgNode* copy ( SgCopyHelp& help) const override;
95399 // Start of memberFunctionString
95400 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
95401 
95402 // *** COMMON CODE SECTION BEGINS HERE ***
95403 
95404  public:
95405 
95406  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
95407  // and not required which is required to match the other aspects of the copy mechanism code generation.
95408  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
95409  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
95410  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
95411  // virtual SgNode* copy ( const SgCopyHelp & help) const;
95412 
95414  virtual std::string class_name() const override;
95415 
95417  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
95418 
95420  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
95421  // static const VariantT static_variant = V_SgOmpCollapseClause;
95422  enum { static_variant = V_SgOmpCollapseClause };
95423 
95424  /* the generated cast function */
95426  ROSE_DLL_API friend SgOmpCollapseClause* isSgOmpCollapseClause( SgNode * s );
95427 
95429  ROSE_DLL_API friend const SgOmpCollapseClause* isSgOmpCollapseClause( const SgNode * s );
95430 
95431  // ******************************************
95432  // * Memory Pool / New / Delete
95433  // ******************************************
95434 
95435  public:
95437  static const unsigned pool_size; //
95439  static std::vector<unsigned char *> pools; //
95441  static SgOmpCollapseClause * next_node; //
95442 
95444  static unsigned long initializeStorageClassArray(SgOmpCollapseClauseStorageClass *); //
95445 
95447  static void clearMemoryPool(); //
95448  static void deleteMemoryPool(); //
95449 
95451  static void extendMemoryPoolForFileIO(); //
95452 
95454  static SgOmpCollapseClause * getPointerFromGlobalIndex(unsigned long); //
95456  static SgOmpCollapseClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
95457 
95459  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
95461  static void resetValidFreepointers(); //
95463  static unsigned long getNumberOfLastValidPointer(); //
95464 
95465 
95466 #if defined(INLINE_FUNCTIONS)
95467 
95468  inline void *operator new (size_t size);
95469 #else
95470 
95471  void *operator new (size_t size);
95472 #endif
95473 
95474  void operator delete (void* pointer, size_t size);
95475 
95476  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
95477  void operator delete (void* pointer)
95478  {
95479  // This is the generated delete operator...
95480  SgOmpCollapseClause::operator delete (pointer,sizeof(SgOmpCollapseClause));
95481  }
95482 
95484  static size_t numberOfNodes();
95485 
95487  static size_t memoryUsage();
95488 
95489  // End of scope which started in IR nodes specific code
95490  /* */
95491 
95492  /* name Internal Functions
95493  \brief Internal functions ... incomplete-documentation
95494 
95495  These functions have been made public as part of the design, but they are suggested for internal use
95496  or by particularly knowledgeable users for specialized tools or applications.
95497 
95498  \internal We could not make these private because they are required by user for special purposes. And
95499  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
95500 
95501  */
95502 
95503  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
95504  // overridden in every class by *generated* implementation
95506  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
95507  // MS: 06/28/02 container of names of variables or container indices
95508  // used used in the traversal to access AST successor nodes
95509  // overridden in every class by *generated* implementation
95512  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
95513 
95514  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
95515  // than all the vector copies. The implementation for these functions is generated for each class.
95517  virtual size_t get_numberOfTraversalSuccessors() override;
95519  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
95521  virtual size_t get_childIndex(SgNode *child) override;
95522 
95523 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
95524  // MS: 08/16/2002 method for generating RTI information
95526  virtual RTIReturnType roseRTI() override;
95527 #endif
95528  /* */
95529 
95530 
95531 
95532  /* name Deprecated Functions
95533  \brief Deprecated functions ... incomplete-documentation
95534 
95535  These functions have been deprecated from use.
95536  */
95537  /* */
95538 
95540  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
95541 
95542  // JJW (10/16/2008): Changed to a single function in Node.code, and put
95543  // getVariant() in #if 0 block to prevent confusing Doxygen
95544 #if 0
95545 
95546  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
95548  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
95549 #endif
95550  /* */
95551 
95552 
95553 
95554 
95555  public:
95556  /* name Traversal Support Functions
95557  \brief Traversal support functions ... incomplete-documentation
95558 
95559  These functions have been made public as part of the design, but they are suggested for internal use
95560  or by particularly knowledgable users for specialized tools or applications.
95561  */
95562  /* */
95563 
95564  // DQ (11/26/2005): Support for visitor pattern mechanims
95565  // (inferior to ROSE traversal mechanism, experimental).
95569 
95570  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
95572  virtual void accept (ROSE_VisitorPattern & visitor) override;
95573 
95574  // DQ (12/26/2005): Support for traversal based on the memory pool
95577  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
95578 
95582 
95583  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
95584  // This traversal helps support internal tools that call static member functions.
95585  // note: this function operates on the memory pools.
95588  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
95589  /* */
95590 
95591 
95592  public:
95593  /* name Memory Allocation Functions
95594  \brief Memory allocations functions ... incomplete-documentation
95595 
95596  These functions have been made public as part of the design, but they are suggested for internal use
95597  or by particularly knowledgable users for specialized tools or applications.
95598  */
95599  /* */
95600 
95611  virtual bool isInMemoryPool() override;
95612 
95623  virtual void checkDataMemberPointersIfInMemoryPool() override;
95624 
95625  // DQ (4/30/2006): Modified to be a const function.
95640  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
95641 
95651  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
95652 
95664  virtual long getChildIndex( SgNode* childNode ) const override;
95665 
95666  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
95667  // comment here (changed to be a C style comment and not be a doxygen comment).
95668  /* \brief Constructor for use by AST File I/O Mechanism
95669 
95670  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
95671  which obtained via fast binary file I/O from disk.
95672  */
95673  // SgOmpCollapseClause( SgOmpCollapseClauseStorageClass& source );
95674 
95675 
95676 
95677 
95678 
95679  // JH (10/24/2005): methods added to support the ast file IO
95680  private:
95681 
95682  /* name AST Memory Allocation Support Functions
95683  \brief Memory allocations support....
95684 
95685  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
95686  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
95687  and support the AST File I/O Mechanism.
95688  */
95689  /* */
95690 
95691  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
95692  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
95693  that I use the same type everywhere, if any changes are made. THe second one declares the type
95694  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
95695  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
95696  a correspinding one in the AST_FILE_IO class!
95697  */
95698  // DQ (9/2/2015): This typedef is no longer used, we can't define the
95699  // comment here (changed to be a C style comment and not be a doxygen comment).
95700  /* \brief Typedef used for low level memory access.
95701  */
95702  // typedef unsigned char* TestType;
95703 
95704  // DQ (9/2/2015): This typedef is no longer used, we can't define the
95705  // comment here (changed to be a C style comment and not be a doxygen comment).
95706  /* \brief Typedef used to hold memory addresses as values.
95707  */
95708  // typedef unsigned long AddressType;
95709 
95710 
95711 
95712  // necessary, to have direct access to the p_freepointer and the private methods !
95714  friend class AST_FILE_IO;
95715 
95717  friend class SgOmpCollapseClauseStorageClass;
95718 
95720  friend class AstSpecificDataManagingClass;
95721 
95723  friend class AstSpecificDataManagingClassStorageClass;
95724 
95725  public:
95727  SgOmpCollapseClause( const SgOmpCollapseClauseStorageClass& source );
95728 
95729  // private: // JJW hack
95730  /*
95731  name AST Memory Allocation Support Variables
95732  Memory allocations support variables
95733 
95734  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
95735  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
95736  and support the AST File I/O Mechanism.
95737  */
95738  /* */
95739 
95740  public:
95741 
95742  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
95743  // to current node (so that it will work cleanly with build functions to specify patterns).
95744  // virtual SgNode* addRegExpAttribute();
95751 
95752 // *** COMMON CODE SECTION ENDS HERE ***
95753 
95754 
95755 // End of memberFunctionString
95756 // Start of memberFunctionString
95757 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
95758 
95759  // the generated cast function
95760  // friend ROSE_DLL_API SgOmpCollapseClause* isSgOmpCollapseClause ( SgNode* s );
95761 
95763 
95764 
95765 // End of memberFunctionString
95766 
95767 
95768  public:
95769  virtual ~SgOmpCollapseClause();
95770 
95771 
95772  public:
95773  SgOmpCollapseClause(Sg_File_Info* startOfConstruct , SgExpression* expression = NULL);
95774  SgOmpCollapseClause(SgExpression* expression);
95775 
95776  protected:
95777 
95778 
95779 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
95780 
95781 
95782  };
95783 #endif
95784 
95785 // postdeclarations for SgOmpCollapseClause
95786 
95787 /* #line 95788 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
95788 
95789 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
95790 
95791 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
95792 
95793 
95794 /* #line 95795 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
95795 
95796 
95797 
95798 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
95799 
95800 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
95801 // This code is automatically generated for each
95802 // terminal and non-terminal within the defined
95803 // grammar. There is a simple way to change the
95804 // code to fix bugs etc. See the ROSE README file
95805 // for directions.
95806 
95807 // tps: (02/22/2010): Adding DLL export requirements
95808 #include "rosedll.h"
95809 
95810 // predeclarations for SgOmpIfClause
95811 
95812 /* #line 95813 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
95813 
95814 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
95815 
95816 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
95817 
95818 #if 1
95819 // Class Definition for SgOmpIfClause
95820 class ROSE_DLL_API SgOmpIfClause : public SgOmpExpressionClause
95821  {
95822  public:
95823 
95824 
95825 /* #line 95826 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
95826 
95827  virtual SgNode* copy ( SgCopyHelp& help) const override;
95828 // Start of memberFunctionString
95829 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
95830 
95831 // *** COMMON CODE SECTION BEGINS HERE ***
95832 
95833  public:
95834 
95835  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
95836  // and not required which is required to match the other aspects of the copy mechanism code generation.
95837  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
95838  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
95839  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
95840  // virtual SgNode* copy ( const SgCopyHelp & help) const;
95841 
95843  virtual std::string class_name() const override;
95844 
95846  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
95847 
95849  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
95850  // static const VariantT static_variant = V_SgOmpIfClause;
95851  enum { static_variant = V_SgOmpIfClause };
95852 
95853  /* the generated cast function */
95855  ROSE_DLL_API friend SgOmpIfClause* isSgOmpIfClause( SgNode * s );
95856 
95858  ROSE_DLL_API friend const SgOmpIfClause* isSgOmpIfClause( const SgNode * s );
95859 
95860  // ******************************************
95861  // * Memory Pool / New / Delete
95862  // ******************************************
95863 
95864  public:
95866  static const unsigned pool_size; //
95868  static std::vector<unsigned char *> pools; //
95870  static SgOmpIfClause * next_node; //
95871 
95873  static unsigned long initializeStorageClassArray(SgOmpIfClauseStorageClass *); //
95874 
95876  static void clearMemoryPool(); //
95877  static void deleteMemoryPool(); //
95878 
95880  static void extendMemoryPoolForFileIO(); //
95881 
95883  static SgOmpIfClause * getPointerFromGlobalIndex(unsigned long); //
95885  static SgOmpIfClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
95886 
95888  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
95890  static void resetValidFreepointers(); //
95892  static unsigned long getNumberOfLastValidPointer(); //
95893 
95894 
95895 #if defined(INLINE_FUNCTIONS)
95896 
95897  inline void *operator new (size_t size);
95898 #else
95899 
95900  void *operator new (size_t size);
95901 #endif
95902 
95903  void operator delete (void* pointer, size_t size);
95904 
95905  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
95906  void operator delete (void* pointer)
95907  {
95908  // This is the generated delete operator...
95909  SgOmpIfClause::operator delete (pointer,sizeof(SgOmpIfClause));
95910  }
95911 
95913  static size_t numberOfNodes();
95914 
95916  static size_t memoryUsage();
95917 
95918  // End of scope which started in IR nodes specific code
95919  /* */
95920 
95921  /* name Internal Functions
95922  \brief Internal functions ... incomplete-documentation
95923 
95924  These functions have been made public as part of the design, but they are suggested for internal use
95925  or by particularly knowledgeable users for specialized tools or applications.
95926 
95927  \internal We could not make these private because they are required by user for special purposes. And
95928  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
95929 
95930  */
95931 
95932  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
95933  // overridden in every class by *generated* implementation
95935  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
95936  // MS: 06/28/02 container of names of variables or container indices
95937  // used used in the traversal to access AST successor nodes
95938  // overridden in every class by *generated* implementation
95941  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
95942 
95943  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
95944  // than all the vector copies. The implementation for these functions is generated for each class.
95946  virtual size_t get_numberOfTraversalSuccessors() override;
95948  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
95950  virtual size_t get_childIndex(SgNode *child) override;
95951 
95952 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
95953  // MS: 08/16/2002 method for generating RTI information
95955  virtual RTIReturnType roseRTI() override;
95956 #endif
95957  /* */
95958 
95959 
95960 
95961  /* name Deprecated Functions
95962  \brief Deprecated functions ... incomplete-documentation
95963 
95964  These functions have been deprecated from use.
95965  */
95966  /* */
95967 
95969  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
95970 
95971  // JJW (10/16/2008): Changed to a single function in Node.code, and put
95972  // getVariant() in #if 0 block to prevent confusing Doxygen
95973 #if 0
95974 
95975  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
95977  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
95978 #endif
95979  /* */
95980 
95981 
95982 
95983 
95984  public:
95985  /* name Traversal Support Functions
95986  \brief Traversal support functions ... incomplete-documentation
95987 
95988  These functions have been made public as part of the design, but they are suggested for internal use
95989  or by particularly knowledgable users for specialized tools or applications.
95990  */
95991  /* */
95992 
95993  // DQ (11/26/2005): Support for visitor pattern mechanims
95994  // (inferior to ROSE traversal mechanism, experimental).
95998 
95999  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
96001  virtual void accept (ROSE_VisitorPattern & visitor) override;
96002 
96003  // DQ (12/26/2005): Support for traversal based on the memory pool
96006  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
96007 
96011 
96012  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
96013  // This traversal helps support internal tools that call static member functions.
96014  // note: this function operates on the memory pools.
96017  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
96018  /* */
96019 
96020 
96021  public:
96022  /* name Memory Allocation Functions
96023  \brief Memory allocations functions ... incomplete-documentation
96024 
96025  These functions have been made public as part of the design, but they are suggested for internal use
96026  or by particularly knowledgable users for specialized tools or applications.
96027  */
96028  /* */
96029 
96040  virtual bool isInMemoryPool() override;
96041 
96052  virtual void checkDataMemberPointersIfInMemoryPool() override;
96053 
96054  // DQ (4/30/2006): Modified to be a const function.
96069  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
96070 
96080  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
96081 
96093  virtual long getChildIndex( SgNode* childNode ) const override;
96094 
96095  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
96096  // comment here (changed to be a C style comment and not be a doxygen comment).
96097  /* \brief Constructor for use by AST File I/O Mechanism
96098 
96099  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
96100  which obtained via fast binary file I/O from disk.
96101  */
96102  // SgOmpIfClause( SgOmpIfClauseStorageClass& source );
96103 
96104 
96105 
96106 
96107 
96108  // JH (10/24/2005): methods added to support the ast file IO
96109  private:
96110 
96111  /* name AST Memory Allocation Support Functions
96112  \brief Memory allocations support....
96113 
96114  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
96115  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
96116  and support the AST File I/O Mechanism.
96117  */
96118  /* */
96119 
96120  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
96121  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
96122  that I use the same type everywhere, if any changes are made. THe second one declares the type
96123  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
96124  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
96125  a correspinding one in the AST_FILE_IO class!
96126  */
96127  // DQ (9/2/2015): This typedef is no longer used, we can't define the
96128  // comment here (changed to be a C style comment and not be a doxygen comment).
96129  /* \brief Typedef used for low level memory access.
96130  */
96131  // typedef unsigned char* TestType;
96132 
96133  // DQ (9/2/2015): This typedef is no longer used, we can't define the
96134  // comment here (changed to be a C style comment and not be a doxygen comment).
96135  /* \brief Typedef used to hold memory addresses as values.
96136  */
96137  // typedef unsigned long AddressType;
96138 
96139 
96140 
96141  // necessary, to have direct access to the p_freepointer and the private methods !
96143  friend class AST_FILE_IO;
96144 
96146  friend class SgOmpIfClauseStorageClass;
96147 
96149  friend class AstSpecificDataManagingClass;
96150 
96152  friend class AstSpecificDataManagingClassStorageClass;
96153 
96154  public:
96156  SgOmpIfClause( const SgOmpIfClauseStorageClass& source );
96157 
96158  // private: // JJW hack
96159  /*
96160  name AST Memory Allocation Support Variables
96161  Memory allocations support variables
96162 
96163  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
96164  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
96165  and support the AST File I/O Mechanism.
96166  */
96167  /* */
96168 
96169  public:
96170 
96171  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
96172  // to current node (so that it will work cleanly with build functions to specify patterns).
96173  // virtual SgNode* addRegExpAttribute();
96180 
96181 // *** COMMON CODE SECTION ENDS HERE ***
96182 
96183 
96184 // End of memberFunctionString
96185 // Start of memberFunctionString
96186 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
96187 
96188  // the generated cast function
96189  // friend ROSE_DLL_API SgOmpIfClause* isSgOmpIfClause ( SgNode* s );
96190 
96192 
96193 
96194 // End of memberFunctionString
96195 
96196  public:
96197  SgOmpClause::omp_if_modifier_enum get_modifier() const;
96198  void set_modifier(SgOmpClause::omp_if_modifier_enum modifier);
96199 
96200 
96201  public:
96202  virtual ~SgOmpIfClause();
96203 
96204 
96205  public:
96206  SgOmpIfClause(Sg_File_Info* startOfConstruct , SgExpression* expression = NULL, SgOmpClause::omp_if_modifier_enum modifier =e_omp_if_modifier_unknown);
96207  SgOmpIfClause(SgExpression* expression, SgOmpClause::omp_if_modifier_enum modifier);
96208 
96209  protected:
96210 // Start of memberFunctionString
96211 SgOmpClause::omp_if_modifier_enum p_modifier;
96212 
96213 // End of memberFunctionString
96214 
96215 
96216 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
96217 
96218 
96219  };
96220 #endif
96221 
96222 // postdeclarations for SgOmpIfClause
96223 
96224 /* #line 96225 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
96225 
96226 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
96227 
96228 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
96229 
96230 
96231 /* #line 96232 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
96232 
96233 
96234 
96235 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
96236 
96237 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
96238 // This code is automatically generated for each
96239 // terminal and non-terminal within the defined
96240 // grammar. There is a simple way to change the
96241 // code to fix bugs etc. See the ROSE README file
96242 // for directions.
96243 
96244 // tps: (02/22/2010): Adding DLL export requirements
96245 #include "rosedll.h"
96246 
96247 // predeclarations for SgUpirNumUnitsField
96248 
96249 /* #line 96250 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
96250 
96251 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
96252 
96253 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
96254 
96255 #if 1
96256 // Class Definition for SgUpirNumUnitsField
96257 class ROSE_DLL_API SgUpirNumUnitsField : public SgOmpExpressionClause
96258  {
96259  public:
96260 
96261 
96262 /* #line 96263 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
96263 
96264  virtual SgNode* copy ( SgCopyHelp& help) const override;
96265 // Start of memberFunctionString
96266 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
96267 
96268 // *** COMMON CODE SECTION BEGINS HERE ***
96269 
96270  public:
96271 
96272  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
96273  // and not required which is required to match the other aspects of the copy mechanism code generation.
96274  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
96275  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
96276  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
96277  // virtual SgNode* copy ( const SgCopyHelp & help) const;
96278 
96280  virtual std::string class_name() const override;
96281 
96283  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
96284 
96286  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
96287  // static const VariantT static_variant = V_SgUpirNumUnitsField;
96288  enum { static_variant = V_SgUpirNumUnitsField };
96289 
96290  /* the generated cast function */
96292  ROSE_DLL_API friend SgUpirNumUnitsField* isSgUpirNumUnitsField( SgNode * s );
96293 
96295  ROSE_DLL_API friend const SgUpirNumUnitsField* isSgUpirNumUnitsField( const SgNode * s );
96296 
96297  // ******************************************
96298  // * Memory Pool / New / Delete
96299  // ******************************************
96300 
96301  public:
96303  static const unsigned pool_size; //
96305  static std::vector<unsigned char *> pools; //
96307  static SgUpirNumUnitsField * next_node; //
96308 
96310  static unsigned long initializeStorageClassArray(SgUpirNumUnitsFieldStorageClass *); //
96311 
96313  static void clearMemoryPool(); //
96314  static void deleteMemoryPool(); //
96315 
96317  static void extendMemoryPoolForFileIO(); //
96318 
96320  static SgUpirNumUnitsField * getPointerFromGlobalIndex(unsigned long); //
96322  static SgUpirNumUnitsField * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
96323 
96325  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
96327  static void resetValidFreepointers(); //
96329  static unsigned long getNumberOfLastValidPointer(); //
96330 
96331 
96332 #if defined(INLINE_FUNCTIONS)
96333 
96334  inline void *operator new (size_t size);
96335 #else
96336 
96337  void *operator new (size_t size);
96338 #endif
96339 
96340  void operator delete (void* pointer, size_t size);
96341 
96342  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
96343  void operator delete (void* pointer)
96344  {
96345  // This is the generated delete operator...
96346  SgUpirNumUnitsField::operator delete (pointer,sizeof(SgUpirNumUnitsField));
96347  }
96348 
96350  static size_t numberOfNodes();
96351 
96353  static size_t memoryUsage();
96354 
96355  // End of scope which started in IR nodes specific code
96356  /* */
96357 
96358  /* name Internal Functions
96359  \brief Internal functions ... incomplete-documentation
96360 
96361  These functions have been made public as part of the design, but they are suggested for internal use
96362  or by particularly knowledgeable users for specialized tools or applications.
96363 
96364  \internal We could not make these private because they are required by user for special purposes. And
96365  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
96366 
96367  */
96368 
96369  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
96370  // overridden in every class by *generated* implementation
96372  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
96373  // MS: 06/28/02 container of names of variables or container indices
96374  // used used in the traversal to access AST successor nodes
96375  // overridden in every class by *generated* implementation
96378  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
96379 
96380  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
96381  // than all the vector copies. The implementation for these functions is generated for each class.
96383  virtual size_t get_numberOfTraversalSuccessors() override;
96385  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
96387  virtual size_t get_childIndex(SgNode *child) override;
96388 
96389 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
96390  // MS: 08/16/2002 method for generating RTI information
96392  virtual RTIReturnType roseRTI() override;
96393 #endif
96394  /* */
96395 
96396 
96397 
96398  /* name Deprecated Functions
96399  \brief Deprecated functions ... incomplete-documentation
96400 
96401  These functions have been deprecated from use.
96402  */
96403  /* */
96404 
96406  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
96407 
96408  // JJW (10/16/2008): Changed to a single function in Node.code, and put
96409  // getVariant() in #if 0 block to prevent confusing Doxygen
96410 #if 0
96411 
96412  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
96414  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
96415 #endif
96416  /* */
96417 
96418 
96419 
96420 
96421  public:
96422  /* name Traversal Support Functions
96423  \brief Traversal support functions ... incomplete-documentation
96424 
96425  These functions have been made public as part of the design, but they are suggested for internal use
96426  or by particularly knowledgable users for specialized tools or applications.
96427  */
96428  /* */
96429 
96430  // DQ (11/26/2005): Support for visitor pattern mechanims
96431  // (inferior to ROSE traversal mechanism, experimental).
96435 
96436  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
96438  virtual void accept (ROSE_VisitorPattern & visitor) override;
96439 
96440  // DQ (12/26/2005): Support for traversal based on the memory pool
96443  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
96444 
96448 
96449  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
96450  // This traversal helps support internal tools that call static member functions.
96451  // note: this function operates on the memory pools.
96454  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
96455  /* */
96456 
96457 
96458  public:
96459  /* name Memory Allocation Functions
96460  \brief Memory allocations functions ... incomplete-documentation
96461 
96462  These functions have been made public as part of the design, but they are suggested for internal use
96463  or by particularly knowledgable users for specialized tools or applications.
96464  */
96465  /* */
96466 
96477  virtual bool isInMemoryPool() override;
96478 
96489  virtual void checkDataMemberPointersIfInMemoryPool() override;
96490 
96491  // DQ (4/30/2006): Modified to be a const function.
96506  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
96507 
96517  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
96518 
96530  virtual long getChildIndex( SgNode* childNode ) const override;
96531 
96532  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
96533  // comment here (changed to be a C style comment and not be a doxygen comment).
96534  /* \brief Constructor for use by AST File I/O Mechanism
96535 
96536  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
96537  which obtained via fast binary file I/O from disk.
96538  */
96539  // SgUpirNumUnitsField( SgUpirNumUnitsFieldStorageClass& source );
96540 
96541 
96542 
96543 
96544 
96545  // JH (10/24/2005): methods added to support the ast file IO
96546  private:
96547 
96548  /* name AST Memory Allocation Support Functions
96549  \brief Memory allocations support....
96550 
96551  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
96552  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
96553  and support the AST File I/O Mechanism.
96554  */
96555  /* */
96556 
96557  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
96558  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
96559  that I use the same type everywhere, if any changes are made. THe second one declares the type
96560  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
96561  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
96562  a correspinding one in the AST_FILE_IO class!
96563  */
96564  // DQ (9/2/2015): This typedef is no longer used, we can't define the
96565  // comment here (changed to be a C style comment and not be a doxygen comment).
96566  /* \brief Typedef used for low level memory access.
96567  */
96568  // typedef unsigned char* TestType;
96569 
96570  // DQ (9/2/2015): This typedef is no longer used, we can't define the
96571  // comment here (changed to be a C style comment and not be a doxygen comment).
96572  /* \brief Typedef used to hold memory addresses as values.
96573  */
96574  // typedef unsigned long AddressType;
96575 
96576 
96577 
96578  // necessary, to have direct access to the p_freepointer and the private methods !
96580  friend class AST_FILE_IO;
96581 
96583  friend class SgUpirNumUnitsFieldStorageClass;
96584 
96586  friend class AstSpecificDataManagingClass;
96587 
96589  friend class AstSpecificDataManagingClassStorageClass;
96590 
96591  public:
96593  SgUpirNumUnitsField( const SgUpirNumUnitsFieldStorageClass& source );
96594 
96595  // private: // JJW hack
96596  /*
96597  name AST Memory Allocation Support Variables
96598  Memory allocations support variables
96599 
96600  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
96601  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
96602  and support the AST File I/O Mechanism.
96603  */
96604  /* */
96605 
96606  public:
96607 
96608  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
96609  // to current node (so that it will work cleanly with build functions to specify patterns).
96610  // virtual SgNode* addRegExpAttribute();
96617 
96618 // *** COMMON CODE SECTION ENDS HERE ***
96619 
96620 
96621 // End of memberFunctionString
96622 // Start of memberFunctionString
96623 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
96624 
96625  // the generated cast function
96626  // friend ROSE_DLL_API SgUpirNumUnitsField* isSgUpirNumUnitsField ( SgNode* s );
96627 
96629 
96630 
96631 // End of memberFunctionString
96632 
96633 
96634  public:
96635  virtual ~SgUpirNumUnitsField();
96636 
96637 
96638  public:
96639  SgUpirNumUnitsField(Sg_File_Info* startOfConstruct , SgExpression* expression = NULL);
96640  SgUpirNumUnitsField(SgExpression* expression);
96641 
96642  protected:
96643 
96644 
96645 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
96646 
96647 
96648  };
96649 #endif
96650 
96651 // postdeclarations for SgUpirNumUnitsField
96652 
96653 /* #line 96654 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
96654 
96655 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
96656 
96657 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
96658 
96659 
96660 /* #line 96661 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
96661 
96662 
96663 
96664 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
96665 
96666 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
96667 // This code is automatically generated for each
96668 // terminal and non-terminal within the defined
96669 // grammar. There is a simple way to change the
96670 // code to fix bugs etc. See the ROSE README file
96671 // for directions.
96672 
96673 // tps: (02/22/2010): Adding DLL export requirements
96674 #include "rosedll.h"
96675 
96676 // predeclarations for SgOmpNumTeamsClause
96677 
96678 /* #line 96679 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
96679 
96680 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
96681 
96682 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
96683 
96684 #if 1
96685 // Class Definition for SgOmpNumTeamsClause
96686 class ROSE_DLL_API SgOmpNumTeamsClause : public SgOmpExpressionClause
96687  {
96688  public:
96689 
96690 
96691 /* #line 96692 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
96692 
96693  virtual SgNode* copy ( SgCopyHelp& help) const override;
96694 // Start of memberFunctionString
96695 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
96696 
96697 // *** COMMON CODE SECTION BEGINS HERE ***
96698 
96699  public:
96700 
96701  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
96702  // and not required which is required to match the other aspects of the copy mechanism code generation.
96703  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
96704  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
96705  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
96706  // virtual SgNode* copy ( const SgCopyHelp & help) const;
96707 
96709  virtual std::string class_name() const override;
96710 
96712  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
96713 
96715  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
96716  // static const VariantT static_variant = V_SgOmpNumTeamsClause;
96717  enum { static_variant = V_SgOmpNumTeamsClause };
96718 
96719  /* the generated cast function */
96721  ROSE_DLL_API friend SgOmpNumTeamsClause* isSgOmpNumTeamsClause( SgNode * s );
96722 
96724  ROSE_DLL_API friend const SgOmpNumTeamsClause* isSgOmpNumTeamsClause( const SgNode * s );
96725 
96726  // ******************************************
96727  // * Memory Pool / New / Delete
96728  // ******************************************
96729 
96730  public:
96732  static const unsigned pool_size; //
96734  static std::vector<unsigned char *> pools; //
96736  static SgOmpNumTeamsClause * next_node; //
96737 
96739  static unsigned long initializeStorageClassArray(SgOmpNumTeamsClauseStorageClass *); //
96740 
96742  static void clearMemoryPool(); //
96743  static void deleteMemoryPool(); //
96744 
96746  static void extendMemoryPoolForFileIO(); //
96747 
96749  static SgOmpNumTeamsClause * getPointerFromGlobalIndex(unsigned long); //
96751  static SgOmpNumTeamsClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
96752 
96754  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
96756  static void resetValidFreepointers(); //
96758  static unsigned long getNumberOfLastValidPointer(); //
96759 
96760 
96761 #if defined(INLINE_FUNCTIONS)
96762 
96763  inline void *operator new (size_t size);
96764 #else
96765 
96766  void *operator new (size_t size);
96767 #endif
96768 
96769  void operator delete (void* pointer, size_t size);
96770 
96771  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
96772  void operator delete (void* pointer)
96773  {
96774  // This is the generated delete operator...
96775  SgOmpNumTeamsClause::operator delete (pointer,sizeof(SgOmpNumTeamsClause));
96776  }
96777 
96779  static size_t numberOfNodes();
96780 
96782  static size_t memoryUsage();
96783 
96784  // End of scope which started in IR nodes specific code
96785  /* */
96786 
96787  /* name Internal Functions
96788  \brief Internal functions ... incomplete-documentation
96789 
96790  These functions have been made public as part of the design, but they are suggested for internal use
96791  or by particularly knowledgeable users for specialized tools or applications.
96792 
96793  \internal We could not make these private because they are required by user for special purposes. And
96794  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
96795 
96796  */
96797 
96798  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
96799  // overridden in every class by *generated* implementation
96801  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
96802  // MS: 06/28/02 container of names of variables or container indices
96803  // used used in the traversal to access AST successor nodes
96804  // overridden in every class by *generated* implementation
96807  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
96808 
96809  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
96810  // than all the vector copies. The implementation for these functions is generated for each class.
96812  virtual size_t get_numberOfTraversalSuccessors() override;
96814  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
96816  virtual size_t get_childIndex(SgNode *child) override;
96817 
96818 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
96819  // MS: 08/16/2002 method for generating RTI information
96821  virtual RTIReturnType roseRTI() override;
96822 #endif
96823  /* */
96824 
96825 
96826 
96827  /* name Deprecated Functions
96828  \brief Deprecated functions ... incomplete-documentation
96829 
96830  These functions have been deprecated from use.
96831  */
96832  /* */
96833 
96835  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
96836 
96837  // JJW (10/16/2008): Changed to a single function in Node.code, and put
96838  // getVariant() in #if 0 block to prevent confusing Doxygen
96839 #if 0
96840 
96841  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
96843  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
96844 #endif
96845  /* */
96846 
96847 
96848 
96849 
96850  public:
96851  /* name Traversal Support Functions
96852  \brief Traversal support functions ... incomplete-documentation
96853 
96854  These functions have been made public as part of the design, but they are suggested for internal use
96855  or by particularly knowledgable users for specialized tools or applications.
96856  */
96857  /* */
96858 
96859  // DQ (11/26/2005): Support for visitor pattern mechanims
96860  // (inferior to ROSE traversal mechanism, experimental).
96864 
96865  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
96867  virtual void accept (ROSE_VisitorPattern & visitor) override;
96868 
96869  // DQ (12/26/2005): Support for traversal based on the memory pool
96872  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
96873 
96877 
96878  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
96879  // This traversal helps support internal tools that call static member functions.
96880  // note: this function operates on the memory pools.
96883  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
96884  /* */
96885 
96886 
96887  public:
96888  /* name Memory Allocation Functions
96889  \brief Memory allocations functions ... incomplete-documentation
96890 
96891  These functions have been made public as part of the design, but they are suggested for internal use
96892  or by particularly knowledgable users for specialized tools or applications.
96893  */
96894  /* */
96895 
96906  virtual bool isInMemoryPool() override;
96907 
96918  virtual void checkDataMemberPointersIfInMemoryPool() override;
96919 
96920  // DQ (4/30/2006): Modified to be a const function.
96935  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
96936 
96946  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
96947 
96959  virtual long getChildIndex( SgNode* childNode ) const override;
96960 
96961  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
96962  // comment here (changed to be a C style comment and not be a doxygen comment).
96963  /* \brief Constructor for use by AST File I/O Mechanism
96964 
96965  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
96966  which obtained via fast binary file I/O from disk.
96967  */
96968  // SgOmpNumTeamsClause( SgOmpNumTeamsClauseStorageClass& source );
96969 
96970 
96971 
96972 
96973 
96974  // JH (10/24/2005): methods added to support the ast file IO
96975  private:
96976 
96977  /* name AST Memory Allocation Support Functions
96978  \brief Memory allocations support....
96979 
96980  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
96981  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
96982  and support the AST File I/O Mechanism.
96983  */
96984  /* */
96985 
96986  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
96987  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
96988  that I use the same type everywhere, if any changes are made. THe second one declares the type
96989  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
96990  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
96991  a correspinding one in the AST_FILE_IO class!
96992  */
96993  // DQ (9/2/2015): This typedef is no longer used, we can't define the
96994  // comment here (changed to be a C style comment and not be a doxygen comment).
96995  /* \brief Typedef used for low level memory access.
96996  */
96997  // typedef unsigned char* TestType;
96998 
96999  // DQ (9/2/2015): This typedef is no longer used, we can't define the
97000  // comment here (changed to be a C style comment and not be a doxygen comment).
97001  /* \brief Typedef used to hold memory addresses as values.
97002  */
97003  // typedef unsigned long AddressType;
97004 
97005 
97006 
97007  // necessary, to have direct access to the p_freepointer and the private methods !
97009  friend class AST_FILE_IO;
97010 
97012  friend class SgOmpNumTeamsClauseStorageClass;
97013 
97015  friend class AstSpecificDataManagingClass;
97016 
97018  friend class AstSpecificDataManagingClassStorageClass;
97019 
97020  public:
97022  SgOmpNumTeamsClause( const SgOmpNumTeamsClauseStorageClass& source );
97023 
97024  // private: // JJW hack
97025  /*
97026  name AST Memory Allocation Support Variables
97027  Memory allocations support variables
97028 
97029  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
97030  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
97031  and support the AST File I/O Mechanism.
97032  */
97033  /* */
97034 
97035  public:
97036 
97037  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
97038  // to current node (so that it will work cleanly with build functions to specify patterns).
97039  // virtual SgNode* addRegExpAttribute();
97046 
97047 // *** COMMON CODE SECTION ENDS HERE ***
97048 
97049 
97050 // End of memberFunctionString
97051 // Start of memberFunctionString
97052 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
97053 
97054  // the generated cast function
97055  // friend ROSE_DLL_API SgOmpNumTeamsClause* isSgOmpNumTeamsClause ( SgNode* s );
97056 
97058 
97059 
97060 // End of memberFunctionString
97061 
97062 
97063  public:
97064  virtual ~SgOmpNumTeamsClause();
97065 
97066 
97067  public:
97068  SgOmpNumTeamsClause(Sg_File_Info* startOfConstruct , SgExpression* expression = NULL);
97069  SgOmpNumTeamsClause(SgExpression* expression);
97070 
97071  protected:
97072 
97073 
97074 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
97075 
97076 
97077  };
97078 #endif
97079 
97080 // postdeclarations for SgOmpNumTeamsClause
97081 
97082 /* #line 97083 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
97083 
97084 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
97085 
97086 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
97087 
97088 
97089 /* #line 97090 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
97090 
97091 
97092 
97093 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
97094 
97095 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
97096 // This code is automatically generated for each
97097 // terminal and non-terminal within the defined
97098 // grammar. There is a simple way to change the
97099 // code to fix bugs etc. See the ROSE README file
97100 // for directions.
97101 
97102 // tps: (02/22/2010): Adding DLL export requirements
97103 #include "rosedll.h"
97104 
97105 // predeclarations for SgOmpThreadLimitClause
97106 
97107 /* #line 97108 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
97108 
97109 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
97110 
97111 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
97112 
97113 #if 1
97114 // Class Definition for SgOmpThreadLimitClause
97116  {
97117  public:
97118 
97119 
97120 /* #line 97121 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
97121 
97122  virtual SgNode* copy ( SgCopyHelp& help) const override;
97123 // Start of memberFunctionString
97124 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
97125 
97126 // *** COMMON CODE SECTION BEGINS HERE ***
97127 
97128  public:
97129 
97130  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
97131  // and not required which is required to match the other aspects of the copy mechanism code generation.
97132  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
97133  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
97134  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
97135  // virtual SgNode* copy ( const SgCopyHelp & help) const;
97136 
97138  virtual std::string class_name() const override;
97139 
97141  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
97142 
97144  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
97145  // static const VariantT static_variant = V_SgOmpThreadLimitClause;
97146  enum { static_variant = V_SgOmpThreadLimitClause };
97147 
97148  /* the generated cast function */
97150  ROSE_DLL_API friend SgOmpThreadLimitClause* isSgOmpThreadLimitClause( SgNode * s );
97151 
97153  ROSE_DLL_API friend const SgOmpThreadLimitClause* isSgOmpThreadLimitClause( const SgNode * s );
97154 
97155  // ******************************************
97156  // * Memory Pool / New / Delete
97157  // ******************************************
97158 
97159  public:
97161  static const unsigned pool_size; //
97163  static std::vector<unsigned char *> pools; //
97165  static SgOmpThreadLimitClause * next_node; //
97166 
97168  static unsigned long initializeStorageClassArray(SgOmpThreadLimitClauseStorageClass *); //
97169 
97171  static void clearMemoryPool(); //
97172  static void deleteMemoryPool(); //
97173 
97175  static void extendMemoryPoolForFileIO(); //
97176 
97178  static SgOmpThreadLimitClause * getPointerFromGlobalIndex(unsigned long); //
97180  static SgOmpThreadLimitClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
97181 
97183  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
97185  static void resetValidFreepointers(); //
97187  static unsigned long getNumberOfLastValidPointer(); //
97188 
97189 
97190 #if defined(INLINE_FUNCTIONS)
97191 
97192  inline void *operator new (size_t size);
97193 #else
97194 
97195  void *operator new (size_t size);
97196 #endif
97197 
97198  void operator delete (void* pointer, size_t size);
97199 
97200  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
97201  void operator delete (void* pointer)
97202  {
97203  // This is the generated delete operator...
97204  SgOmpThreadLimitClause::operator delete (pointer,sizeof(SgOmpThreadLimitClause));
97205  }
97206 
97208  static size_t numberOfNodes();
97209 
97211  static size_t memoryUsage();
97212 
97213  // End of scope which started in IR nodes specific code
97214  /* */
97215 
97216  /* name Internal Functions
97217  \brief Internal functions ... incomplete-documentation
97218 
97219  These functions have been made public as part of the design, but they are suggested for internal use
97220  or by particularly knowledgeable users for specialized tools or applications.
97221 
97222  \internal We could not make these private because they are required by user for special purposes. And
97223  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
97224 
97225  */
97226 
97227  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
97228  // overridden in every class by *generated* implementation
97230  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
97231  // MS: 06/28/02 container of names of variables or container indices
97232  // used used in the traversal to access AST successor nodes
97233  // overridden in every class by *generated* implementation
97236  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
97237 
97238  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
97239  // than all the vector copies. The implementation for these functions is generated for each class.
97241  virtual size_t get_numberOfTraversalSuccessors() override;
97243  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
97245  virtual size_t get_childIndex(SgNode *child) override;
97246 
97247 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
97248  // MS: 08/16/2002 method for generating RTI information
97250  virtual RTIReturnType roseRTI() override;
97251 #endif
97252  /* */
97253 
97254 
97255 
97256  /* name Deprecated Functions
97257  \brief Deprecated functions ... incomplete-documentation
97258 
97259  These functions have been deprecated from use.
97260  */
97261  /* */
97262 
97264  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
97265 
97266  // JJW (10/16/2008): Changed to a single function in Node.code, and put
97267  // getVariant() in #if 0 block to prevent confusing Doxygen
97268 #if 0
97269 
97270  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
97272  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
97273 #endif
97274  /* */
97275 
97276 
97277 
97278 
97279  public:
97280  /* name Traversal Support Functions
97281  \brief Traversal support functions ... incomplete-documentation
97282 
97283  These functions have been made public as part of the design, but they are suggested for internal use
97284  or by particularly knowledgable users for specialized tools or applications.
97285  */
97286  /* */
97287 
97288  // DQ (11/26/2005): Support for visitor pattern mechanims
97289  // (inferior to ROSE traversal mechanism, experimental).
97293 
97294  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
97296  virtual void accept (ROSE_VisitorPattern & visitor) override;
97297 
97298  // DQ (12/26/2005): Support for traversal based on the memory pool
97301  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
97302 
97306 
97307  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
97308  // This traversal helps support internal tools that call static member functions.
97309  // note: this function operates on the memory pools.
97312  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
97313  /* */
97314 
97315 
97316  public:
97317  /* name Memory Allocation Functions
97318  \brief Memory allocations functions ... incomplete-documentation
97319 
97320  These functions have been made public as part of the design, but they are suggested for internal use
97321  or by particularly knowledgable users for specialized tools or applications.
97322  */
97323  /* */
97324 
97335  virtual bool isInMemoryPool() override;
97336 
97347  virtual void checkDataMemberPointersIfInMemoryPool() override;
97348 
97349  // DQ (4/30/2006): Modified to be a const function.
97364  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
97365 
97375  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
97376 
97388  virtual long getChildIndex( SgNode* childNode ) const override;
97389 
97390  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
97391  // comment here (changed to be a C style comment and not be a doxygen comment).
97392  /* \brief Constructor for use by AST File I/O Mechanism
97393 
97394  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
97395  which obtained via fast binary file I/O from disk.
97396  */
97397  // SgOmpThreadLimitClause( SgOmpThreadLimitClauseStorageClass& source );
97398 
97399 
97400 
97401 
97402 
97403  // JH (10/24/2005): methods added to support the ast file IO
97404  private:
97405 
97406  /* name AST Memory Allocation Support Functions
97407  \brief Memory allocations support....
97408 
97409  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
97410  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
97411  and support the AST File I/O Mechanism.
97412  */
97413  /* */
97414 
97415  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
97416  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
97417  that I use the same type everywhere, if any changes are made. THe second one declares the type
97418  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
97419  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
97420  a correspinding one in the AST_FILE_IO class!
97421  */
97422  // DQ (9/2/2015): This typedef is no longer used, we can't define the
97423  // comment here (changed to be a C style comment and not be a doxygen comment).
97424  /* \brief Typedef used for low level memory access.
97425  */
97426  // typedef unsigned char* TestType;
97427 
97428  // DQ (9/2/2015): This typedef is no longer used, we can't define the
97429  // comment here (changed to be a C style comment and not be a doxygen comment).
97430  /* \brief Typedef used to hold memory addresses as values.
97431  */
97432  // typedef unsigned long AddressType;
97433 
97434 
97435 
97436  // necessary, to have direct access to the p_freepointer and the private methods !
97438  friend class AST_FILE_IO;
97439 
97441  friend class SgOmpThreadLimitClauseStorageClass;
97442 
97444  friend class AstSpecificDataManagingClass;
97445 
97447  friend class AstSpecificDataManagingClassStorageClass;
97448 
97449  public:
97451  SgOmpThreadLimitClause( const SgOmpThreadLimitClauseStorageClass& source );
97452 
97453  // private: // JJW hack
97454  /*
97455  name AST Memory Allocation Support Variables
97456  Memory allocations support variables
97457 
97458  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
97459  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
97460  and support the AST File I/O Mechanism.
97461  */
97462  /* */
97463 
97464  public:
97465 
97466  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
97467  // to current node (so that it will work cleanly with build functions to specify patterns).
97468  // virtual SgNode* addRegExpAttribute();
97475 
97476 // *** COMMON CODE SECTION ENDS HERE ***
97477 
97478 
97479 // End of memberFunctionString
97480 // Start of memberFunctionString
97481 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
97482 
97483  // the generated cast function
97484  // friend ROSE_DLL_API SgOmpThreadLimitClause* isSgOmpThreadLimitClause ( SgNode* s );
97485 
97487 
97488 
97489 // End of memberFunctionString
97490 
97491 
97492  public:
97493  virtual ~SgOmpThreadLimitClause();
97494 
97495 
97496  public:
97497  SgOmpThreadLimitClause(Sg_File_Info* startOfConstruct , SgExpression* expression = NULL);
97498  SgOmpThreadLimitClause(SgExpression* expression);
97499 
97500  protected:
97501 
97502 
97503 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
97504 
97505 
97506  };
97507 #endif
97508 
97509 // postdeclarations for SgOmpThreadLimitClause
97510 
97511 /* #line 97512 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
97512 
97513 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
97514 
97515 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
97516 
97517 
97518 /* #line 97519 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
97519 
97520 
97521 
97522 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
97523 
97524 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
97525 // This code is automatically generated for each
97526 // terminal and non-terminal within the defined
97527 // grammar. There is a simple way to change the
97528 // code to fix bugs etc. See the ROSE README file
97529 // for directions.
97530 
97531 // tps: (02/22/2010): Adding DLL export requirements
97532 #include "rosedll.h"
97533 
97534 // predeclarations for SgOmpDeviceClause
97535 
97536 /* #line 97537 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
97537 
97538 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
97539 
97540 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
97541 
97542 #if 1
97543 // Class Definition for SgOmpDeviceClause
97544 class ROSE_DLL_API SgOmpDeviceClause : public SgOmpExpressionClause
97545  {
97546  public:
97547 
97548 
97549 /* #line 97550 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
97550 
97551  virtual SgNode* copy ( SgCopyHelp& help) const override;
97552 // Start of memberFunctionString
97553 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
97554 
97555 // *** COMMON CODE SECTION BEGINS HERE ***
97556 
97557  public:
97558 
97559  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
97560  // and not required which is required to match the other aspects of the copy mechanism code generation.
97561  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
97562  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
97563  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
97564  // virtual SgNode* copy ( const SgCopyHelp & help) const;
97565 
97567  virtual std::string class_name() const override;
97568 
97570  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
97571 
97573  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
97574  // static const VariantT static_variant = V_SgOmpDeviceClause;
97575  enum { static_variant = V_SgOmpDeviceClause };
97576 
97577  /* the generated cast function */
97579  ROSE_DLL_API friend SgOmpDeviceClause* isSgOmpDeviceClause( SgNode * s );
97580 
97582  ROSE_DLL_API friend const SgOmpDeviceClause* isSgOmpDeviceClause( const SgNode * s );
97583 
97584  // ******************************************
97585  // * Memory Pool / New / Delete
97586  // ******************************************
97587 
97588  public:
97590  static const unsigned pool_size; //
97592  static std::vector<unsigned char *> pools; //
97594  static SgOmpDeviceClause * next_node; //
97595 
97597  static unsigned long initializeStorageClassArray(SgOmpDeviceClauseStorageClass *); //
97598 
97600  static void clearMemoryPool(); //
97601  static void deleteMemoryPool(); //
97602 
97604  static void extendMemoryPoolForFileIO(); //
97605 
97607  static SgOmpDeviceClause * getPointerFromGlobalIndex(unsigned long); //
97609  static SgOmpDeviceClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
97610 
97612  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
97614  static void resetValidFreepointers(); //
97616  static unsigned long getNumberOfLastValidPointer(); //
97617 
97618 
97619 #if defined(INLINE_FUNCTIONS)
97620 
97621  inline void *operator new (size_t size);
97622 #else
97623 
97624  void *operator new (size_t size);
97625 #endif
97626 
97627  void operator delete (void* pointer, size_t size);
97628 
97629  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
97630  void operator delete (void* pointer)
97631  {
97632  // This is the generated delete operator...
97633  SgOmpDeviceClause::operator delete (pointer,sizeof(SgOmpDeviceClause));
97634  }
97635 
97637  static size_t numberOfNodes();
97638 
97640  static size_t memoryUsage();
97641 
97642  // End of scope which started in IR nodes specific code
97643  /* */
97644 
97645  /* name Internal Functions
97646  \brief Internal functions ... incomplete-documentation
97647 
97648  These functions have been made public as part of the design, but they are suggested for internal use
97649  or by particularly knowledgeable users for specialized tools or applications.
97650 
97651  \internal We could not make these private because they are required by user for special purposes. And
97652  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
97653 
97654  */
97655 
97656  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
97657  // overridden in every class by *generated* implementation
97659  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
97660  // MS: 06/28/02 container of names of variables or container indices
97661  // used used in the traversal to access AST successor nodes
97662  // overridden in every class by *generated* implementation
97665  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
97666 
97667  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
97668  // than all the vector copies. The implementation for these functions is generated for each class.
97670  virtual size_t get_numberOfTraversalSuccessors() override;
97672  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
97674  virtual size_t get_childIndex(SgNode *child) override;
97675 
97676 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
97677  // MS: 08/16/2002 method for generating RTI information
97679  virtual RTIReturnType roseRTI() override;
97680 #endif
97681  /* */
97682 
97683 
97684 
97685  /* name Deprecated Functions
97686  \brief Deprecated functions ... incomplete-documentation
97687 
97688  These functions have been deprecated from use.
97689  */
97690  /* */
97691 
97693  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
97694 
97695  // JJW (10/16/2008): Changed to a single function in Node.code, and put
97696  // getVariant() in #if 0 block to prevent confusing Doxygen
97697 #if 0
97698 
97699  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
97701  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
97702 #endif
97703  /* */
97704 
97705 
97706 
97707 
97708  public:
97709  /* name Traversal Support Functions
97710  \brief Traversal support functions ... incomplete-documentation
97711 
97712  These functions have been made public as part of the design, but they are suggested for internal use
97713  or by particularly knowledgable users for specialized tools or applications.
97714  */
97715  /* */
97716 
97717  // DQ (11/26/2005): Support for visitor pattern mechanims
97718  // (inferior to ROSE traversal mechanism, experimental).
97722 
97723  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
97725  virtual void accept (ROSE_VisitorPattern & visitor) override;
97726 
97727  // DQ (12/26/2005): Support for traversal based on the memory pool
97730  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
97731 
97735 
97736  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
97737  // This traversal helps support internal tools that call static member functions.
97738  // note: this function operates on the memory pools.
97741  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
97742  /* */
97743 
97744 
97745  public:
97746  /* name Memory Allocation Functions
97747  \brief Memory allocations functions ... incomplete-documentation
97748 
97749  These functions have been made public as part of the design, but they are suggested for internal use
97750  or by particularly knowledgable users for specialized tools or applications.
97751  */
97752  /* */
97753 
97764  virtual bool isInMemoryPool() override;
97765 
97776  virtual void checkDataMemberPointersIfInMemoryPool() override;
97777 
97778  // DQ (4/30/2006): Modified to be a const function.
97793  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
97794 
97804  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
97805 
97817  virtual long getChildIndex( SgNode* childNode ) const override;
97818 
97819  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
97820  // comment here (changed to be a C style comment and not be a doxygen comment).
97821  /* \brief Constructor for use by AST File I/O Mechanism
97822 
97823  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
97824  which obtained via fast binary file I/O from disk.
97825  */
97826  // SgOmpDeviceClause( SgOmpDeviceClauseStorageClass& source );
97827 
97828 
97829 
97830 
97831 
97832  // JH (10/24/2005): methods added to support the ast file IO
97833  private:
97834 
97835  /* name AST Memory Allocation Support Functions
97836  \brief Memory allocations support....
97837 
97838  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
97839  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
97840  and support the AST File I/O Mechanism.
97841  */
97842  /* */
97843 
97844  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
97845  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
97846  that I use the same type everywhere, if any changes are made. THe second one declares the type
97847  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
97848  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
97849  a correspinding one in the AST_FILE_IO class!
97850  */
97851  // DQ (9/2/2015): This typedef is no longer used, we can't define the
97852  // comment here (changed to be a C style comment and not be a doxygen comment).
97853  /* \brief Typedef used for low level memory access.
97854  */
97855  // typedef unsigned char* TestType;
97856 
97857  // DQ (9/2/2015): This typedef is no longer used, we can't define the
97858  // comment here (changed to be a C style comment and not be a doxygen comment).
97859  /* \brief Typedef used to hold memory addresses as values.
97860  */
97861  // typedef unsigned long AddressType;
97862 
97863 
97864 
97865  // necessary, to have direct access to the p_freepointer and the private methods !
97867  friend class AST_FILE_IO;
97868 
97870  friend class SgOmpDeviceClauseStorageClass;
97871 
97873  friend class AstSpecificDataManagingClass;
97874 
97876  friend class AstSpecificDataManagingClassStorageClass;
97877 
97878  public:
97880  SgOmpDeviceClause( const SgOmpDeviceClauseStorageClass& source );
97881 
97882  // private: // JJW hack
97883  /*
97884  name AST Memory Allocation Support Variables
97885  Memory allocations support variables
97886 
97887  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
97888  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
97889  and support the AST File I/O Mechanism.
97890  */
97891  /* */
97892 
97893  public:
97894 
97895  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
97896  // to current node (so that it will work cleanly with build functions to specify patterns).
97897  // virtual SgNode* addRegExpAttribute();
97904 
97905 // *** COMMON CODE SECTION ENDS HERE ***
97906 
97907 
97908 // End of memberFunctionString
97909 // Start of memberFunctionString
97910 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
97911 
97912  // the generated cast function
97913  // friend ROSE_DLL_API SgOmpDeviceClause* isSgOmpDeviceClause ( SgNode* s );
97914 
97916 
97917 
97918 // End of memberFunctionString
97919 
97920  public:
97921  SgOmpClause::omp_device_modifier_enum get_modifier() const;
97922  void set_modifier(SgOmpClause::omp_device_modifier_enum modifier);
97923 
97924 
97925  public:
97926  virtual ~SgOmpDeviceClause();
97927 
97928 
97929  public:
97930  SgOmpDeviceClause(Sg_File_Info* startOfConstruct , SgExpression* expression = NULL, SgOmpClause::omp_device_modifier_enum modifier =e_omp_device_modifier_unspecified);
97931  SgOmpDeviceClause(SgExpression* expression, SgOmpClause::omp_device_modifier_enum modifier);
97932 
97933  protected:
97934 // Start of memberFunctionString
97935 SgOmpClause::omp_device_modifier_enum p_modifier;
97936 
97937 // End of memberFunctionString
97938 
97939 
97940 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
97941 
97942 
97943  };
97944 #endif
97945 
97946 // postdeclarations for SgOmpDeviceClause
97947 
97948 /* #line 97949 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
97949 
97950 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
97951 
97952 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
97953 
97954 
97955 /* #line 97956 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
97956 
97957 
97958 
97959 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
97960 
97961 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
97962 // This code is automatically generated for each
97963 // terminal and non-terminal within the defined
97964 // grammar. There is a simple way to change the
97965 // code to fix bugs etc. See the ROSE README file
97966 // for directions.
97967 
97968 // tps: (02/22/2010): Adding DLL export requirements
97969 #include "rosedll.h"
97970 
97971 // predeclarations for SgOmpHintClause
97972 
97973 /* #line 97974 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
97974 
97975 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
97976 
97977 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
97978 
97979 #if 1
97980 // Class Definition for SgOmpHintClause
97981 class ROSE_DLL_API SgOmpHintClause : public SgOmpExpressionClause
97982  {
97983  public:
97984 
97985 
97986 /* #line 97987 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
97987 
97988  virtual SgNode* copy ( SgCopyHelp& help) const override;
97989 // Start of memberFunctionString
97990 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
97991 
97992 // *** COMMON CODE SECTION BEGINS HERE ***
97993 
97994  public:
97995 
97996  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
97997  // and not required which is required to match the other aspects of the copy mechanism code generation.
97998  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
97999  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
98000  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
98001  // virtual SgNode* copy ( const SgCopyHelp & help) const;
98002 
98004  virtual std::string class_name() const override;
98005 
98007  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
98008 
98010  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
98011  // static const VariantT static_variant = V_SgOmpHintClause;
98012  enum { static_variant = V_SgOmpHintClause };
98013 
98014  /* the generated cast function */
98016  ROSE_DLL_API friend SgOmpHintClause* isSgOmpHintClause( SgNode * s );
98017 
98019  ROSE_DLL_API friend const SgOmpHintClause* isSgOmpHintClause( const SgNode * s );
98020 
98021  // ******************************************
98022  // * Memory Pool / New / Delete
98023  // ******************************************
98024 
98025  public:
98027  static const unsigned pool_size; //
98029  static std::vector<unsigned char *> pools; //
98031  static SgOmpHintClause * next_node; //
98032 
98034  static unsigned long initializeStorageClassArray(SgOmpHintClauseStorageClass *); //
98035 
98037  static void clearMemoryPool(); //
98038  static void deleteMemoryPool(); //
98039 
98041  static void extendMemoryPoolForFileIO(); //
98042 
98044  static SgOmpHintClause * getPointerFromGlobalIndex(unsigned long); //
98046  static SgOmpHintClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
98047 
98049  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
98051  static void resetValidFreepointers(); //
98053  static unsigned long getNumberOfLastValidPointer(); //
98054 
98055 
98056 #if defined(INLINE_FUNCTIONS)
98057 
98058  inline void *operator new (size_t size);
98059 #else
98060 
98061  void *operator new (size_t size);
98062 #endif
98063 
98064  void operator delete (void* pointer, size_t size);
98065 
98066  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
98067  void operator delete (void* pointer)
98068  {
98069  // This is the generated delete operator...
98070  SgOmpHintClause::operator delete (pointer,sizeof(SgOmpHintClause));
98071  }
98072 
98074  static size_t numberOfNodes();
98075 
98077  static size_t memoryUsage();
98078 
98079  // End of scope which started in IR nodes specific code
98080  /* */
98081 
98082  /* name Internal Functions
98083  \brief Internal functions ... incomplete-documentation
98084 
98085  These functions have been made public as part of the design, but they are suggested for internal use
98086  or by particularly knowledgeable users for specialized tools or applications.
98087 
98088  \internal We could not make these private because they are required by user for special purposes. And
98089  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
98090 
98091  */
98092 
98093  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
98094  // overridden in every class by *generated* implementation
98096  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
98097  // MS: 06/28/02 container of names of variables or container indices
98098  // used used in the traversal to access AST successor nodes
98099  // overridden in every class by *generated* implementation
98102  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
98103 
98104  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
98105  // than all the vector copies. The implementation for these functions is generated for each class.
98107  virtual size_t get_numberOfTraversalSuccessors() override;
98109  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
98111  virtual size_t get_childIndex(SgNode *child) override;
98112 
98113 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
98114  // MS: 08/16/2002 method for generating RTI information
98116  virtual RTIReturnType roseRTI() override;
98117 #endif
98118  /* */
98119 
98120 
98121 
98122  /* name Deprecated Functions
98123  \brief Deprecated functions ... incomplete-documentation
98124 
98125  These functions have been deprecated from use.
98126  */
98127  /* */
98128 
98130  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
98131 
98132  // JJW (10/16/2008): Changed to a single function in Node.code, and put
98133  // getVariant() in #if 0 block to prevent confusing Doxygen
98134 #if 0
98135 
98136  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
98138  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
98139 #endif
98140  /* */
98141 
98142 
98143 
98144 
98145  public:
98146  /* name Traversal Support Functions
98147  \brief Traversal support functions ... incomplete-documentation
98148 
98149  These functions have been made public as part of the design, but they are suggested for internal use
98150  or by particularly knowledgable users for specialized tools or applications.
98151  */
98152  /* */
98153 
98154  // DQ (11/26/2005): Support for visitor pattern mechanims
98155  // (inferior to ROSE traversal mechanism, experimental).
98159 
98160  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
98162  virtual void accept (ROSE_VisitorPattern & visitor) override;
98163 
98164  // DQ (12/26/2005): Support for traversal based on the memory pool
98167  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
98168 
98172 
98173  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
98174  // This traversal helps support internal tools that call static member functions.
98175  // note: this function operates on the memory pools.
98178  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
98179  /* */
98180 
98181 
98182  public:
98183  /* name Memory Allocation Functions
98184  \brief Memory allocations functions ... incomplete-documentation
98185 
98186  These functions have been made public as part of the design, but they are suggested for internal use
98187  or by particularly knowledgable users for specialized tools or applications.
98188  */
98189  /* */
98190 
98201  virtual bool isInMemoryPool() override;
98202 
98213  virtual void checkDataMemberPointersIfInMemoryPool() override;
98214 
98215  // DQ (4/30/2006): Modified to be a const function.
98230  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
98231 
98241  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
98242 
98254  virtual long getChildIndex( SgNode* childNode ) const override;
98255 
98256  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
98257  // comment here (changed to be a C style comment and not be a doxygen comment).
98258  /* \brief Constructor for use by AST File I/O Mechanism
98259 
98260  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
98261  which obtained via fast binary file I/O from disk.
98262  */
98263  // SgOmpHintClause( SgOmpHintClauseStorageClass& source );
98264 
98265 
98266 
98267 
98268 
98269  // JH (10/24/2005): methods added to support the ast file IO
98270  private:
98271 
98272  /* name AST Memory Allocation Support Functions
98273  \brief Memory allocations support....
98274 
98275  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
98276  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
98277  and support the AST File I/O Mechanism.
98278  */
98279  /* */
98280 
98281  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
98282  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
98283  that I use the same type everywhere, if any changes are made. THe second one declares the type
98284  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
98285  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
98286  a correspinding one in the AST_FILE_IO class!
98287  */
98288  // DQ (9/2/2015): This typedef is no longer used, we can't define the
98289  // comment here (changed to be a C style comment and not be a doxygen comment).
98290  /* \brief Typedef used for low level memory access.
98291  */
98292  // typedef unsigned char* TestType;
98293 
98294  // DQ (9/2/2015): This typedef is no longer used, we can't define the
98295  // comment here (changed to be a C style comment and not be a doxygen comment).
98296  /* \brief Typedef used to hold memory addresses as values.
98297  */
98298  // typedef unsigned long AddressType;
98299 
98300 
98301 
98302  // necessary, to have direct access to the p_freepointer and the private methods !
98304  friend class AST_FILE_IO;
98305 
98307  friend class SgOmpHintClauseStorageClass;
98308 
98310  friend class AstSpecificDataManagingClass;
98311 
98313  friend class AstSpecificDataManagingClassStorageClass;
98314 
98315  public:
98317  SgOmpHintClause( const SgOmpHintClauseStorageClass& source );
98318 
98319  // private: // JJW hack
98320  /*
98321  name AST Memory Allocation Support Variables
98322  Memory allocations support variables
98323 
98324  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
98325  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
98326  and support the AST File I/O Mechanism.
98327  */
98328  /* */
98329 
98330  public:
98331 
98332  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
98333  // to current node (so that it will work cleanly with build functions to specify patterns).
98334  // virtual SgNode* addRegExpAttribute();
98341 
98342 // *** COMMON CODE SECTION ENDS HERE ***
98343 
98344 
98345 // End of memberFunctionString
98346 // Start of memberFunctionString
98347 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
98348 
98349  // the generated cast function
98350  // friend ROSE_DLL_API SgOmpHintClause* isSgOmpHintClause ( SgNode* s );
98351 
98353 
98354 
98355 // End of memberFunctionString
98356 
98357 
98358  public:
98359  virtual ~SgOmpHintClause();
98360 
98361 
98362  public:
98363  SgOmpHintClause(Sg_File_Info* startOfConstruct , SgExpression* expression = NULL);
98364  SgOmpHintClause(SgExpression* expression);
98365 
98366  protected:
98367 
98368 
98369 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
98370 
98371 
98372  };
98373 #endif
98374 
98375 // postdeclarations for SgOmpHintClause
98376 
98377 /* #line 98378 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
98378 
98379 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
98380 
98381 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
98382 
98383 
98384 /* #line 98385 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
98385 
98386 
98387 
98388 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
98389 
98390 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
98391 // This code is automatically generated for each
98392 // terminal and non-terminal within the defined
98393 // grammar. There is a simple way to change the
98394 // code to fix bugs etc. See the ROSE README file
98395 // for directions.
98396 
98397 // tps: (02/22/2010): Adding DLL export requirements
98398 #include "rosedll.h"
98399 
98400 // predeclarations for SgOmpGrainsizeClause
98401 
98402 /* #line 98403 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
98403 
98404 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
98405 
98406 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
98407 
98408 #if 1
98409 // Class Definition for SgOmpGrainsizeClause
98410 class ROSE_DLL_API SgOmpGrainsizeClause : public SgOmpExpressionClause
98411  {
98412  public:
98413 
98414 
98415 /* #line 98416 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
98416 
98417  virtual SgNode* copy ( SgCopyHelp& help) const override;
98418 // Start of memberFunctionString
98419 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
98420 
98421 // *** COMMON CODE SECTION BEGINS HERE ***
98422 
98423  public:
98424 
98425  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
98426  // and not required which is required to match the other aspects of the copy mechanism code generation.
98427  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
98428  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
98429  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
98430  // virtual SgNode* copy ( const SgCopyHelp & help) const;
98431 
98433  virtual std::string class_name() const override;
98434 
98436  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
98437 
98439  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
98440  // static const VariantT static_variant = V_SgOmpGrainsizeClause;
98441  enum { static_variant = V_SgOmpGrainsizeClause };
98442 
98443  /* the generated cast function */
98445  ROSE_DLL_API friend SgOmpGrainsizeClause* isSgOmpGrainsizeClause( SgNode * s );
98446 
98448  ROSE_DLL_API friend const SgOmpGrainsizeClause* isSgOmpGrainsizeClause( const SgNode * s );
98449 
98450  // ******************************************
98451  // * Memory Pool / New / Delete
98452  // ******************************************
98453 
98454  public:
98456  static const unsigned pool_size; //
98458  static std::vector<unsigned char *> pools; //
98460  static SgOmpGrainsizeClause * next_node; //
98461 
98463  static unsigned long initializeStorageClassArray(SgOmpGrainsizeClauseStorageClass *); //
98464 
98466  static void clearMemoryPool(); //
98467  static void deleteMemoryPool(); //
98468 
98470  static void extendMemoryPoolForFileIO(); //
98471 
98473  static SgOmpGrainsizeClause * getPointerFromGlobalIndex(unsigned long); //
98475  static SgOmpGrainsizeClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
98476 
98478  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
98480  static void resetValidFreepointers(); //
98482  static unsigned long getNumberOfLastValidPointer(); //
98483 
98484 
98485 #if defined(INLINE_FUNCTIONS)
98486 
98487  inline void *operator new (size_t size);
98488 #else
98489 
98490  void *operator new (size_t size);
98491 #endif
98492 
98493  void operator delete (void* pointer, size_t size);
98494 
98495  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
98496  void operator delete (void* pointer)
98497  {
98498  // This is the generated delete operator...
98499  SgOmpGrainsizeClause::operator delete (pointer,sizeof(SgOmpGrainsizeClause));
98500  }
98501 
98503  static size_t numberOfNodes();
98504 
98506  static size_t memoryUsage();
98507 
98508  // End of scope which started in IR nodes specific code
98509  /* */
98510 
98511  /* name Internal Functions
98512  \brief Internal functions ... incomplete-documentation
98513 
98514  These functions have been made public as part of the design, but they are suggested for internal use
98515  or by particularly knowledgeable users for specialized tools or applications.
98516 
98517  \internal We could not make these private because they are required by user for special purposes. And
98518  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
98519 
98520  */
98521 
98522  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
98523  // overridden in every class by *generated* implementation
98525  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
98526  // MS: 06/28/02 container of names of variables or container indices
98527  // used used in the traversal to access AST successor nodes
98528  // overridden in every class by *generated* implementation
98531  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
98532 
98533  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
98534  // than all the vector copies. The implementation for these functions is generated for each class.
98536  virtual size_t get_numberOfTraversalSuccessors() override;
98538  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
98540  virtual size_t get_childIndex(SgNode *child) override;
98541 
98542 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
98543  // MS: 08/16/2002 method for generating RTI information
98545  virtual RTIReturnType roseRTI() override;
98546 #endif
98547  /* */
98548 
98549 
98550 
98551  /* name Deprecated Functions
98552  \brief Deprecated functions ... incomplete-documentation
98553 
98554  These functions have been deprecated from use.
98555  */
98556  /* */
98557 
98559  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
98560 
98561  // JJW (10/16/2008): Changed to a single function in Node.code, and put
98562  // getVariant() in #if 0 block to prevent confusing Doxygen
98563 #if 0
98564 
98565  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
98567  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
98568 #endif
98569  /* */
98570 
98571 
98572 
98573 
98574  public:
98575  /* name Traversal Support Functions
98576  \brief Traversal support functions ... incomplete-documentation
98577 
98578  These functions have been made public as part of the design, but they are suggested for internal use
98579  or by particularly knowledgable users for specialized tools or applications.
98580  */
98581  /* */
98582 
98583  // DQ (11/26/2005): Support for visitor pattern mechanims
98584  // (inferior to ROSE traversal mechanism, experimental).
98588 
98589  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
98591  virtual void accept (ROSE_VisitorPattern & visitor) override;
98592 
98593  // DQ (12/26/2005): Support for traversal based on the memory pool
98596  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
98597 
98601 
98602  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
98603  // This traversal helps support internal tools that call static member functions.
98604  // note: this function operates on the memory pools.
98607  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
98608  /* */
98609 
98610 
98611  public:
98612  /* name Memory Allocation Functions
98613  \brief Memory allocations functions ... incomplete-documentation
98614 
98615  These functions have been made public as part of the design, but they are suggested for internal use
98616  or by particularly knowledgable users for specialized tools or applications.
98617  */
98618  /* */
98619 
98630  virtual bool isInMemoryPool() override;
98631 
98642  virtual void checkDataMemberPointersIfInMemoryPool() override;
98643 
98644  // DQ (4/30/2006): Modified to be a const function.
98659  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
98660 
98670  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
98671 
98683  virtual long getChildIndex( SgNode* childNode ) const override;
98684 
98685  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
98686  // comment here (changed to be a C style comment and not be a doxygen comment).
98687  /* \brief Constructor for use by AST File I/O Mechanism
98688 
98689  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
98690  which obtained via fast binary file I/O from disk.
98691  */
98692  // SgOmpGrainsizeClause( SgOmpGrainsizeClauseStorageClass& source );
98693 
98694 
98695 
98696 
98697 
98698  // JH (10/24/2005): methods added to support the ast file IO
98699  private:
98700 
98701  /* name AST Memory Allocation Support Functions
98702  \brief Memory allocations support....
98703 
98704  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
98705  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
98706  and support the AST File I/O Mechanism.
98707  */
98708  /* */
98709 
98710  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
98711  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
98712  that I use the same type everywhere, if any changes are made. THe second one declares the type
98713  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
98714  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
98715  a correspinding one in the AST_FILE_IO class!
98716  */
98717  // DQ (9/2/2015): This typedef is no longer used, we can't define the
98718  // comment here (changed to be a C style comment and not be a doxygen comment).
98719  /* \brief Typedef used for low level memory access.
98720  */
98721  // typedef unsigned char* TestType;
98722 
98723  // DQ (9/2/2015): This typedef is no longer used, we can't define the
98724  // comment here (changed to be a C style comment and not be a doxygen comment).
98725  /* \brief Typedef used to hold memory addresses as values.
98726  */
98727  // typedef unsigned long AddressType;
98728 
98729 
98730 
98731  // necessary, to have direct access to the p_freepointer and the private methods !
98733  friend class AST_FILE_IO;
98734 
98736  friend class SgOmpGrainsizeClauseStorageClass;
98737 
98739  friend class AstSpecificDataManagingClass;
98740 
98742  friend class AstSpecificDataManagingClassStorageClass;
98743 
98744  public:
98746  SgOmpGrainsizeClause( const SgOmpGrainsizeClauseStorageClass& source );
98747 
98748  // private: // JJW hack
98749  /*
98750  name AST Memory Allocation Support Variables
98751  Memory allocations support variables
98752 
98753  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
98754  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
98755  and support the AST File I/O Mechanism.
98756  */
98757  /* */
98758 
98759  public:
98760 
98761  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
98762  // to current node (so that it will work cleanly with build functions to specify patterns).
98763  // virtual SgNode* addRegExpAttribute();
98770 
98771 // *** COMMON CODE SECTION ENDS HERE ***
98772 
98773 
98774 // End of memberFunctionString
98775 // Start of memberFunctionString
98776 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
98777 
98778  // the generated cast function
98779  // friend ROSE_DLL_API SgOmpGrainsizeClause* isSgOmpGrainsizeClause ( SgNode* s );
98780 
98782 
98783 
98784 // End of memberFunctionString
98785 
98786 
98787  public:
98788  virtual ~SgOmpGrainsizeClause();
98789 
98790 
98791  public:
98792  SgOmpGrainsizeClause(Sg_File_Info* startOfConstruct , SgExpression* expression = NULL);
98793  SgOmpGrainsizeClause(SgExpression* expression);
98794 
98795  protected:
98796 
98797 
98798 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
98799 
98800 
98801  };
98802 #endif
98803 
98804 // postdeclarations for SgOmpGrainsizeClause
98805 
98806 /* #line 98807 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
98807 
98808 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
98809 
98810 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
98811 
98812 
98813 /* #line 98814 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
98814 
98815 
98816 
98817 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
98818 
98819 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
98820 // This code is automatically generated for each
98821 // terminal and non-terminal within the defined
98822 // grammar. There is a simple way to change the
98823 // code to fix bugs etc. See the ROSE README file
98824 // for directions.
98825 
98826 // tps: (02/22/2010): Adding DLL export requirements
98827 #include "rosedll.h"
98828 
98829 // predeclarations for SgOmpNumTasksClause
98830 
98831 /* #line 98832 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
98832 
98833 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
98834 
98835 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
98836 
98837 #if 1
98838 // Class Definition for SgOmpNumTasksClause
98839 class ROSE_DLL_API SgOmpNumTasksClause : public SgOmpExpressionClause
98840  {
98841  public:
98842 
98843 
98844 /* #line 98845 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
98845 
98846  virtual SgNode* copy ( SgCopyHelp& help) const override;
98847 // Start of memberFunctionString
98848 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
98849 
98850 // *** COMMON CODE SECTION BEGINS HERE ***
98851 
98852  public:
98853 
98854  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
98855  // and not required which is required to match the other aspects of the copy mechanism code generation.
98856  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
98857  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
98858  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
98859  // virtual SgNode* copy ( const SgCopyHelp & help) const;
98860 
98862  virtual std::string class_name() const override;
98863 
98865  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
98866 
98868  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
98869  // static const VariantT static_variant = V_SgOmpNumTasksClause;
98870  enum { static_variant = V_SgOmpNumTasksClause };
98871 
98872  /* the generated cast function */
98874  ROSE_DLL_API friend SgOmpNumTasksClause* isSgOmpNumTasksClause( SgNode * s );
98875 
98877  ROSE_DLL_API friend const SgOmpNumTasksClause* isSgOmpNumTasksClause( const SgNode * s );
98878 
98879  // ******************************************
98880  // * Memory Pool / New / Delete
98881  // ******************************************
98882 
98883  public:
98885  static const unsigned pool_size; //
98887  static std::vector<unsigned char *> pools; //
98889  static SgOmpNumTasksClause * next_node; //
98890 
98892  static unsigned long initializeStorageClassArray(SgOmpNumTasksClauseStorageClass *); //
98893 
98895  static void clearMemoryPool(); //
98896  static void deleteMemoryPool(); //
98897 
98899  static void extendMemoryPoolForFileIO(); //
98900 
98902  static SgOmpNumTasksClause * getPointerFromGlobalIndex(unsigned long); //
98904  static SgOmpNumTasksClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
98905 
98907  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
98909  static void resetValidFreepointers(); //
98911  static unsigned long getNumberOfLastValidPointer(); //
98912 
98913 
98914 #if defined(INLINE_FUNCTIONS)
98915 
98916  inline void *operator new (size_t size);
98917 #else
98918 
98919  void *operator new (size_t size);
98920 #endif
98921 
98922  void operator delete (void* pointer, size_t size);
98923 
98924  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
98925  void operator delete (void* pointer)
98926  {
98927  // This is the generated delete operator...
98928  SgOmpNumTasksClause::operator delete (pointer,sizeof(SgOmpNumTasksClause));
98929  }
98930 
98932  static size_t numberOfNodes();
98933 
98935  static size_t memoryUsage();
98936 
98937  // End of scope which started in IR nodes specific code
98938  /* */
98939 
98940  /* name Internal Functions
98941  \brief Internal functions ... incomplete-documentation
98942 
98943  These functions have been made public as part of the design, but they are suggested for internal use
98944  or by particularly knowledgeable users for specialized tools or applications.
98945 
98946  \internal We could not make these private because they are required by user for special purposes. And
98947  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
98948 
98949  */
98950 
98951  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
98952  // overridden in every class by *generated* implementation
98954  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
98955  // MS: 06/28/02 container of names of variables or container indices
98956  // used used in the traversal to access AST successor nodes
98957  // overridden in every class by *generated* implementation
98960  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
98961 
98962  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
98963  // than all the vector copies. The implementation for these functions is generated for each class.
98965  virtual size_t get_numberOfTraversalSuccessors() override;
98967  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
98969  virtual size_t get_childIndex(SgNode *child) override;
98970 
98971 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
98972  // MS: 08/16/2002 method for generating RTI information
98974  virtual RTIReturnType roseRTI() override;
98975 #endif
98976  /* */
98977 
98978 
98979 
98980  /* name Deprecated Functions
98981  \brief Deprecated functions ... incomplete-documentation
98982 
98983  These functions have been deprecated from use.
98984  */
98985  /* */
98986 
98988  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
98989 
98990  // JJW (10/16/2008): Changed to a single function in Node.code, and put
98991  // getVariant() in #if 0 block to prevent confusing Doxygen
98992 #if 0
98993 
98994  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
98996  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
98997 #endif
98998  /* */
98999 
99000 
99001 
99002 
99003  public:
99004  /* name Traversal Support Functions
99005  \brief Traversal support functions ... incomplete-documentation
99006 
99007  These functions have been made public as part of the design, but they are suggested for internal use
99008  or by particularly knowledgable users for specialized tools or applications.
99009  */
99010  /* */
99011 
99012  // DQ (11/26/2005): Support for visitor pattern mechanims
99013  // (inferior to ROSE traversal mechanism, experimental).
99017 
99018  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
99020  virtual void accept (ROSE_VisitorPattern & visitor) override;
99021 
99022  // DQ (12/26/2005): Support for traversal based on the memory pool
99025  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
99026 
99030 
99031  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
99032  // This traversal helps support internal tools that call static member functions.
99033  // note: this function operates on the memory pools.
99036  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
99037  /* */
99038 
99039 
99040  public:
99041  /* name Memory Allocation Functions
99042  \brief Memory allocations functions ... incomplete-documentation
99043 
99044  These functions have been made public as part of the design, but they are suggested for internal use
99045  or by particularly knowledgable users for specialized tools or applications.
99046  */
99047  /* */
99048 
99059  virtual bool isInMemoryPool() override;
99060 
99071  virtual void checkDataMemberPointersIfInMemoryPool() override;
99072 
99073  // DQ (4/30/2006): Modified to be a const function.
99088  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
99089 
99099  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
99100 
99112  virtual long getChildIndex( SgNode* childNode ) const override;
99113 
99114  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
99115  // comment here (changed to be a C style comment and not be a doxygen comment).
99116  /* \brief Constructor for use by AST File I/O Mechanism
99117 
99118  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
99119  which obtained via fast binary file I/O from disk.
99120  */
99121  // SgOmpNumTasksClause( SgOmpNumTasksClauseStorageClass& source );
99122 
99123 
99124 
99125 
99126 
99127  // JH (10/24/2005): methods added to support the ast file IO
99128  private:
99129 
99130  /* name AST Memory Allocation Support Functions
99131  \brief Memory allocations support....
99132 
99133  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
99134  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
99135  and support the AST File I/O Mechanism.
99136  */
99137  /* */
99138 
99139  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
99140  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
99141  that I use the same type everywhere, if any changes are made. THe second one declares the type
99142  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
99143  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
99144  a correspinding one in the AST_FILE_IO class!
99145  */
99146  // DQ (9/2/2015): This typedef is no longer used, we can't define the
99147  // comment here (changed to be a C style comment and not be a doxygen comment).
99148  /* \brief Typedef used for low level memory access.
99149  */
99150  // typedef unsigned char* TestType;
99151 
99152  // DQ (9/2/2015): This typedef is no longer used, we can't define the
99153  // comment here (changed to be a C style comment and not be a doxygen comment).
99154  /* \brief Typedef used to hold memory addresses as values.
99155  */
99156  // typedef unsigned long AddressType;
99157 
99158 
99159 
99160  // necessary, to have direct access to the p_freepointer and the private methods !
99162  friend class AST_FILE_IO;
99163 
99165  friend class SgOmpNumTasksClauseStorageClass;
99166 
99168  friend class AstSpecificDataManagingClass;
99169 
99171  friend class AstSpecificDataManagingClassStorageClass;
99172 
99173  public:
99175  SgOmpNumTasksClause( const SgOmpNumTasksClauseStorageClass& source );
99176 
99177  // private: // JJW hack
99178  /*
99179  name AST Memory Allocation Support Variables
99180  Memory allocations support variables
99181 
99182  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
99183  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
99184  and support the AST File I/O Mechanism.
99185  */
99186  /* */
99187 
99188  public:
99189 
99190  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
99191  // to current node (so that it will work cleanly with build functions to specify patterns).
99192  // virtual SgNode* addRegExpAttribute();
99199 
99200 // *** COMMON CODE SECTION ENDS HERE ***
99201 
99202 
99203 // End of memberFunctionString
99204 // Start of memberFunctionString
99205 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
99206 
99207  // the generated cast function
99208  // friend ROSE_DLL_API SgOmpNumTasksClause* isSgOmpNumTasksClause ( SgNode* s );
99209 
99211 
99212 
99213 // End of memberFunctionString
99214 
99215 
99216  public:
99217  virtual ~SgOmpNumTasksClause();
99218 
99219 
99220  public:
99221  SgOmpNumTasksClause(Sg_File_Info* startOfConstruct , SgExpression* expression = NULL);
99222  SgOmpNumTasksClause(SgExpression* expression);
99223 
99224  protected:
99225 
99226 
99227 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
99228 
99229 
99230  };
99231 #endif
99232 
99233 // postdeclarations for SgOmpNumTasksClause
99234 
99235 /* #line 99236 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
99236 
99237 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
99238 
99239 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
99240 
99241 
99242 /* #line 99243 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
99243 
99244 
99245 
99246 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
99247 
99248 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
99249 // This code is automatically generated for each
99250 // terminal and non-terminal within the defined
99251 // grammar. There is a simple way to change the
99252 // code to fix bugs etc. See the ROSE README file
99253 // for directions.
99254 
99255 // tps: (02/22/2010): Adding DLL export requirements
99256 #include "rosedll.h"
99257 
99258 // predeclarations for SgOmpDetachClause
99259 
99260 /* #line 99261 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
99261 
99262 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
99263 
99264 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
99265 
99266 #if 1
99267 // Class Definition for SgOmpDetachClause
99268 class ROSE_DLL_API SgOmpDetachClause : public SgOmpExpressionClause
99269  {
99270  public:
99271 
99272 
99273 /* #line 99274 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
99274 
99275  virtual SgNode* copy ( SgCopyHelp& help) const override;
99276 // Start of memberFunctionString
99277 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
99278 
99279 // *** COMMON CODE SECTION BEGINS HERE ***
99280 
99281  public:
99282 
99283  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
99284  // and not required which is required to match the other aspects of the copy mechanism code generation.
99285  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
99286  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
99287  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
99288  // virtual SgNode* copy ( const SgCopyHelp & help) const;
99289 
99291  virtual std::string class_name() const override;
99292 
99294  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
99295 
99297  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
99298  // static const VariantT static_variant = V_SgOmpDetachClause;
99299  enum { static_variant = V_SgOmpDetachClause };
99300 
99301  /* the generated cast function */
99303  ROSE_DLL_API friend SgOmpDetachClause* isSgOmpDetachClause( SgNode * s );
99304 
99306  ROSE_DLL_API friend const SgOmpDetachClause* isSgOmpDetachClause( const SgNode * s );
99307 
99308  // ******************************************
99309  // * Memory Pool / New / Delete
99310  // ******************************************
99311 
99312  public:
99314  static const unsigned pool_size; //
99316  static std::vector<unsigned char *> pools; //
99318  static SgOmpDetachClause * next_node; //
99319 
99321  static unsigned long initializeStorageClassArray(SgOmpDetachClauseStorageClass *); //
99322 
99324  static void clearMemoryPool(); //
99325  static void deleteMemoryPool(); //
99326 
99328  static void extendMemoryPoolForFileIO(); //
99329 
99331  static SgOmpDetachClause * getPointerFromGlobalIndex(unsigned long); //
99333  static SgOmpDetachClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
99334 
99336  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
99338  static void resetValidFreepointers(); //
99340  static unsigned long getNumberOfLastValidPointer(); //
99341 
99342 
99343 #if defined(INLINE_FUNCTIONS)
99344 
99345  inline void *operator new (size_t size);
99346 #else
99347 
99348  void *operator new (size_t size);
99349 #endif
99350 
99351  void operator delete (void* pointer, size_t size);
99352 
99353  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
99354  void operator delete (void* pointer)
99355  {
99356  // This is the generated delete operator...
99357  SgOmpDetachClause::operator delete (pointer,sizeof(SgOmpDetachClause));
99358  }
99359 
99361  static size_t numberOfNodes();
99362 
99364  static size_t memoryUsage();
99365 
99366  // End of scope which started in IR nodes specific code
99367  /* */
99368 
99369  /* name Internal Functions
99370  \brief Internal functions ... incomplete-documentation
99371 
99372  These functions have been made public as part of the design, but they are suggested for internal use
99373  or by particularly knowledgeable users for specialized tools or applications.
99374 
99375  \internal We could not make these private because they are required by user for special purposes. And
99376  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
99377 
99378  */
99379 
99380  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
99381  // overridden in every class by *generated* implementation
99383  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
99384  // MS: 06/28/02 container of names of variables or container indices
99385  // used used in the traversal to access AST successor nodes
99386  // overridden in every class by *generated* implementation
99389  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
99390 
99391  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
99392  // than all the vector copies. The implementation for these functions is generated for each class.
99394  virtual size_t get_numberOfTraversalSuccessors() override;
99396  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
99398  virtual size_t get_childIndex(SgNode *child) override;
99399 
99400 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
99401  // MS: 08/16/2002 method for generating RTI information
99403  virtual RTIReturnType roseRTI() override;
99404 #endif
99405  /* */
99406 
99407 
99408 
99409  /* name Deprecated Functions
99410  \brief Deprecated functions ... incomplete-documentation
99411 
99412  These functions have been deprecated from use.
99413  */
99414  /* */
99415 
99417  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
99418 
99419  // JJW (10/16/2008): Changed to a single function in Node.code, and put
99420  // getVariant() in #if 0 block to prevent confusing Doxygen
99421 #if 0
99422 
99423  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
99425  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
99426 #endif
99427  /* */
99428 
99429 
99430 
99431 
99432  public:
99433  /* name Traversal Support Functions
99434  \brief Traversal support functions ... incomplete-documentation
99435 
99436  These functions have been made public as part of the design, but they are suggested for internal use
99437  or by particularly knowledgable users for specialized tools or applications.
99438  */
99439  /* */
99440 
99441  // DQ (11/26/2005): Support for visitor pattern mechanims
99442  // (inferior to ROSE traversal mechanism, experimental).
99446 
99447  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
99449  virtual void accept (ROSE_VisitorPattern & visitor) override;
99450 
99451  // DQ (12/26/2005): Support for traversal based on the memory pool
99454  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
99455 
99459 
99460  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
99461  // This traversal helps support internal tools that call static member functions.
99462  // note: this function operates on the memory pools.
99465  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
99466  /* */
99467 
99468 
99469  public:
99470  /* name Memory Allocation Functions
99471  \brief Memory allocations functions ... incomplete-documentation
99472 
99473  These functions have been made public as part of the design, but they are suggested for internal use
99474  or by particularly knowledgable users for specialized tools or applications.
99475  */
99476  /* */
99477 
99488  virtual bool isInMemoryPool() override;
99489 
99500  virtual void checkDataMemberPointersIfInMemoryPool() override;
99501 
99502  // DQ (4/30/2006): Modified to be a const function.
99517  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
99518 
99528  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
99529 
99541  virtual long getChildIndex( SgNode* childNode ) const override;
99542 
99543  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
99544  // comment here (changed to be a C style comment and not be a doxygen comment).
99545  /* \brief Constructor for use by AST File I/O Mechanism
99546 
99547  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
99548  which obtained via fast binary file I/O from disk.
99549  */
99550  // SgOmpDetachClause( SgOmpDetachClauseStorageClass& source );
99551 
99552 
99553 
99554 
99555 
99556  // JH (10/24/2005): methods added to support the ast file IO
99557  private:
99558 
99559  /* name AST Memory Allocation Support Functions
99560  \brief Memory allocations support....
99561 
99562  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
99563  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
99564  and support the AST File I/O Mechanism.
99565  */
99566  /* */
99567 
99568  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
99569  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
99570  that I use the same type everywhere, if any changes are made. THe second one declares the type
99571  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
99572  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
99573  a correspinding one in the AST_FILE_IO class!
99574  */
99575  // DQ (9/2/2015): This typedef is no longer used, we can't define the
99576  // comment here (changed to be a C style comment and not be a doxygen comment).
99577  /* \brief Typedef used for low level memory access.
99578  */
99579  // typedef unsigned char* TestType;
99580 
99581  // DQ (9/2/2015): This typedef is no longer used, we can't define the
99582  // comment here (changed to be a C style comment and not be a doxygen comment).
99583  /* \brief Typedef used to hold memory addresses as values.
99584  */
99585  // typedef unsigned long AddressType;
99586 
99587 
99588 
99589  // necessary, to have direct access to the p_freepointer and the private methods !
99591  friend class AST_FILE_IO;
99592 
99594  friend class SgOmpDetachClauseStorageClass;
99595 
99597  friend class AstSpecificDataManagingClass;
99598 
99600  friend class AstSpecificDataManagingClassStorageClass;
99601 
99602  public:
99604  SgOmpDetachClause( const SgOmpDetachClauseStorageClass& source );
99605 
99606  // private: // JJW hack
99607  /*
99608  name AST Memory Allocation Support Variables
99609  Memory allocations support variables
99610 
99611  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
99612  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
99613  and support the AST File I/O Mechanism.
99614  */
99615  /* */
99616 
99617  public:
99618 
99619  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
99620  // to current node (so that it will work cleanly with build functions to specify patterns).
99621  // virtual SgNode* addRegExpAttribute();
99628 
99629 // *** COMMON CODE SECTION ENDS HERE ***
99630 
99631 
99632 // End of memberFunctionString
99633 // Start of memberFunctionString
99634 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
99635 
99636  // the generated cast function
99637  // friend ROSE_DLL_API SgOmpDetachClause* isSgOmpDetachClause ( SgNode* s );
99638 
99640 
99641 
99642 // End of memberFunctionString
99643 
99644 
99645  public:
99646  virtual ~SgOmpDetachClause();
99647 
99648 
99649  public:
99650  SgOmpDetachClause(Sg_File_Info* startOfConstruct , SgExpression* expression = NULL);
99651  SgOmpDetachClause(SgExpression* expression);
99652 
99653  protected:
99654 
99655 
99656 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
99657 
99658 
99659  };
99660 #endif
99661 
99662 // postdeclarations for SgOmpDetachClause
99663 
99664 /* #line 99665 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
99665 
99666 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
99667 
99668 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
99669 
99670 
99671 /* #line 99672 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
99672 
99673 
99674 
99675 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
99676 
99677 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
99678 // This code is automatically generated for each
99679 // terminal and non-terminal within the defined
99680 // grammar. There is a simple way to change the
99681 // code to fix bugs etc. See the ROSE README file
99682 // for directions.
99683 
99684 // tps: (02/22/2010): Adding DLL export requirements
99685 #include "rosedll.h"
99686 
99687 // predeclarations for SgOmpSafelenClause
99688 
99689 /* #line 99690 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
99690 
99691 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
99692 
99693 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
99694 
99695 #if 1
99696 // Class Definition for SgOmpSafelenClause
99697 class ROSE_DLL_API SgOmpSafelenClause : public SgOmpExpressionClause
99698  {
99699  public:
99700 
99701 
99702 /* #line 99703 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
99703 
99704  virtual SgNode* copy ( SgCopyHelp& help) const override;
99705 // Start of memberFunctionString
99706 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
99707 
99708 // *** COMMON CODE SECTION BEGINS HERE ***
99709 
99710  public:
99711 
99712  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
99713  // and not required which is required to match the other aspects of the copy mechanism code generation.
99714  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
99715  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
99716  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
99717  // virtual SgNode* copy ( const SgCopyHelp & help) const;
99718 
99720  virtual std::string class_name() const override;
99721 
99723  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
99724 
99726  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
99727  // static const VariantT static_variant = V_SgOmpSafelenClause;
99728  enum { static_variant = V_SgOmpSafelenClause };
99729 
99730  /* the generated cast function */
99732  ROSE_DLL_API friend SgOmpSafelenClause* isSgOmpSafelenClause( SgNode * s );
99733 
99735  ROSE_DLL_API friend const SgOmpSafelenClause* isSgOmpSafelenClause( const SgNode * s );
99736 
99737  // ******************************************
99738  // * Memory Pool / New / Delete
99739  // ******************************************
99740 
99741  public:
99743  static const unsigned pool_size; //
99745  static std::vector<unsigned char *> pools; //
99747  static SgOmpSafelenClause * next_node; //
99748 
99750  static unsigned long initializeStorageClassArray(SgOmpSafelenClauseStorageClass *); //
99751 
99753  static void clearMemoryPool(); //
99754  static void deleteMemoryPool(); //
99755 
99757  static void extendMemoryPoolForFileIO(); //
99758 
99760  static SgOmpSafelenClause * getPointerFromGlobalIndex(unsigned long); //
99762  static SgOmpSafelenClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
99763 
99765  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
99767  static void resetValidFreepointers(); //
99769  static unsigned long getNumberOfLastValidPointer(); //
99770 
99771 
99772 #if defined(INLINE_FUNCTIONS)
99773 
99774  inline void *operator new (size_t size);
99775 #else
99776 
99777  void *operator new (size_t size);
99778 #endif
99779 
99780  void operator delete (void* pointer, size_t size);
99781 
99782  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
99783  void operator delete (void* pointer)
99784  {
99785  // This is the generated delete operator...
99786  SgOmpSafelenClause::operator delete (pointer,sizeof(SgOmpSafelenClause));
99787  }
99788 
99790  static size_t numberOfNodes();
99791 
99793  static size_t memoryUsage();
99794 
99795  // End of scope which started in IR nodes specific code
99796  /* */
99797 
99798  /* name Internal Functions
99799  \brief Internal functions ... incomplete-documentation
99800 
99801  These functions have been made public as part of the design, but they are suggested for internal use
99802  or by particularly knowledgeable users for specialized tools or applications.
99803 
99804  \internal We could not make these private because they are required by user for special purposes. And
99805  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
99806 
99807  */
99808 
99809  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
99810  // overridden in every class by *generated* implementation
99812  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
99813  // MS: 06/28/02 container of names of variables or container indices
99814  // used used in the traversal to access AST successor nodes
99815  // overridden in every class by *generated* implementation
99818  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
99819 
99820  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
99821  // than all the vector copies. The implementation for these functions is generated for each class.
99823  virtual size_t get_numberOfTraversalSuccessors() override;
99825  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
99827  virtual size_t get_childIndex(SgNode *child) override;
99828 
99829 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
99830  // MS: 08/16/2002 method for generating RTI information
99832  virtual RTIReturnType roseRTI() override;
99833 #endif
99834  /* */
99835 
99836 
99837 
99838  /* name Deprecated Functions
99839  \brief Deprecated functions ... incomplete-documentation
99840 
99841  These functions have been deprecated from use.
99842  */
99843  /* */
99844 
99846  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
99847 
99848  // JJW (10/16/2008): Changed to a single function in Node.code, and put
99849  // getVariant() in #if 0 block to prevent confusing Doxygen
99850 #if 0
99851 
99852  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
99854  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
99855 #endif
99856  /* */
99857 
99858 
99859 
99860 
99861  public:
99862  /* name Traversal Support Functions
99863  \brief Traversal support functions ... incomplete-documentation
99864 
99865  These functions have been made public as part of the design, but they are suggested for internal use
99866  or by particularly knowledgable users for specialized tools or applications.
99867  */
99868  /* */
99869 
99870  // DQ (11/26/2005): Support for visitor pattern mechanims
99871  // (inferior to ROSE traversal mechanism, experimental).
99875 
99876  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
99878  virtual void accept (ROSE_VisitorPattern & visitor) override;
99879 
99880  // DQ (12/26/2005): Support for traversal based on the memory pool
99883  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
99884 
99888 
99889  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
99890  // This traversal helps support internal tools that call static member functions.
99891  // note: this function operates on the memory pools.
99894  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
99895  /* */
99896 
99897 
99898  public:
99899  /* name Memory Allocation Functions
99900  \brief Memory allocations functions ... incomplete-documentation
99901 
99902  These functions have been made public as part of the design, but they are suggested for internal use
99903  or by particularly knowledgable users for specialized tools or applications.
99904  */
99905  /* */
99906 
99917  virtual bool isInMemoryPool() override;
99918 
99929  virtual void checkDataMemberPointersIfInMemoryPool() override;
99930 
99931  // DQ (4/30/2006): Modified to be a const function.
99946  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
99947 
99957  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
99958 
99970  virtual long getChildIndex( SgNode* childNode ) const override;
99971 
99972  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
99973  // comment here (changed to be a C style comment and not be a doxygen comment).
99974  /* \brief Constructor for use by AST File I/O Mechanism
99975 
99976  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
99977  which obtained via fast binary file I/O from disk.
99978  */
99979  // SgOmpSafelenClause( SgOmpSafelenClauseStorageClass& source );
99980 
99981 
99982 
99983 
99984 
99985  // JH (10/24/2005): methods added to support the ast file IO
99986  private:
99987 
99988  /* name AST Memory Allocation Support Functions
99989  \brief Memory allocations support....
99990 
99991  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
99992  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
99993  and support the AST File I/O Mechanism.
99994  */
99995  /* */
99996 
99997  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
99998  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
99999  that I use the same type everywhere, if any changes are made. THe second one declares the type
100000  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
100001  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
100002  a correspinding one in the AST_FILE_IO class!
100003  */
100004  // DQ (9/2/2015): This typedef is no longer used, we can't define the
100005  // comment here (changed to be a C style comment and not be a doxygen comment).
100006  /* \brief Typedef used for low level memory access.
100007  */
100008  // typedef unsigned char* TestType;
100009 
100010  // DQ (9/2/2015): This typedef is no longer used, we can't define the
100011  // comment here (changed to be a C style comment and not be a doxygen comment).
100012  /* \brief Typedef used to hold memory addresses as values.
100013  */
100014  // typedef unsigned long AddressType;
100015 
100016 
100017 
100018  // necessary, to have direct access to the p_freepointer and the private methods !
100020  friend class AST_FILE_IO;
100021 
100023  friend class SgOmpSafelenClauseStorageClass;
100024 
100026  friend class AstSpecificDataManagingClass;
100027 
100029  friend class AstSpecificDataManagingClassStorageClass;
100030 
100031  public:
100033  SgOmpSafelenClause( const SgOmpSafelenClauseStorageClass& source );
100034 
100035  // private: // JJW hack
100036  /*
100037  name AST Memory Allocation Support Variables
100038  Memory allocations support variables
100039 
100040  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
100041  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
100042  and support the AST File I/O Mechanism.
100043  */
100044  /* */
100045 
100046  public:
100047 
100048  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
100049  // to current node (so that it will work cleanly with build functions to specify patterns).
100050  // virtual SgNode* addRegExpAttribute();
100057 
100058 // *** COMMON CODE SECTION ENDS HERE ***
100059 
100060 
100061 // End of memberFunctionString
100062 // Start of memberFunctionString
100063 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
100064 
100065  // the generated cast function
100066  // friend ROSE_DLL_API SgOmpSafelenClause* isSgOmpSafelenClause ( SgNode* s );
100067 
100069 
100070 
100071 // End of memberFunctionString
100072 
100073 
100074  public:
100075  virtual ~SgOmpSafelenClause();
100076 
100077 
100078  public:
100079  SgOmpSafelenClause(Sg_File_Info* startOfConstruct , SgExpression* expression = NULL);
100080  SgOmpSafelenClause(SgExpression* expression);
100081 
100082  protected:
100083 
100084 
100085 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
100086 
100087 
100088  };
100089 #endif
100090 
100091 // postdeclarations for SgOmpSafelenClause
100092 
100093 /* #line 100094 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
100094 
100095 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
100096 
100097 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
100098 
100099 
100100 /* #line 100101 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
100101 
100102 
100103 
100104 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
100105 
100106 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
100107 // This code is automatically generated for each
100108 // terminal and non-terminal within the defined
100109 // grammar. There is a simple way to change the
100110 // code to fix bugs etc. See the ROSE README file
100111 // for directions.
100112 
100113 // tps: (02/22/2010): Adding DLL export requirements
100114 #include "rosedll.h"
100115 
100116 // predeclarations for SgOmpSimdlenClause
100117 
100118 /* #line 100119 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
100119 
100120 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
100121 
100122 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
100123 
100124 #if 1
100125 // Class Definition for SgOmpSimdlenClause
100126 class ROSE_DLL_API SgOmpSimdlenClause : public SgOmpExpressionClause
100127  {
100128  public:
100129 
100130 
100131 /* #line 100132 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
100132 
100133  virtual SgNode* copy ( SgCopyHelp& help) const override;
100134 // Start of memberFunctionString
100135 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
100136 
100137 // *** COMMON CODE SECTION BEGINS HERE ***
100138 
100139  public:
100140 
100141  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
100142  // and not required which is required to match the other aspects of the copy mechanism code generation.
100143  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
100144  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
100145  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
100146  // virtual SgNode* copy ( const SgCopyHelp & help) const;
100147 
100149  virtual std::string class_name() const override;
100150 
100152  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
100153 
100155  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
100156  // static const VariantT static_variant = V_SgOmpSimdlenClause;
100157  enum { static_variant = V_SgOmpSimdlenClause };
100158 
100159  /* the generated cast function */
100161  ROSE_DLL_API friend SgOmpSimdlenClause* isSgOmpSimdlenClause( SgNode * s );
100162 
100164  ROSE_DLL_API friend const SgOmpSimdlenClause* isSgOmpSimdlenClause( const SgNode * s );
100165 
100166  // ******************************************
100167  // * Memory Pool / New / Delete
100168  // ******************************************
100169 
100170  public:
100172  static const unsigned pool_size; //
100174  static std::vector<unsigned char *> pools; //
100176  static SgOmpSimdlenClause * next_node; //
100177 
100179  static unsigned long initializeStorageClassArray(SgOmpSimdlenClauseStorageClass *); //
100180 
100182  static void clearMemoryPool(); //
100183  static void deleteMemoryPool(); //
100184 
100186  static void extendMemoryPoolForFileIO(); //
100187 
100189  static SgOmpSimdlenClause * getPointerFromGlobalIndex(unsigned long); //
100191  static SgOmpSimdlenClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
100192 
100194  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
100196  static void resetValidFreepointers(); //
100198  static unsigned long getNumberOfLastValidPointer(); //
100199 
100200 
100201 #if defined(INLINE_FUNCTIONS)
100202 
100203  inline void *operator new (size_t size);
100204 #else
100205 
100206  void *operator new (size_t size);
100207 #endif
100208 
100209  void operator delete (void* pointer, size_t size);
100210 
100211  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
100212  void operator delete (void* pointer)
100213  {
100214  // This is the generated delete operator...
100215  SgOmpSimdlenClause::operator delete (pointer,sizeof(SgOmpSimdlenClause));
100216  }
100217 
100219  static size_t numberOfNodes();
100220 
100222  static size_t memoryUsage();
100223 
100224  // End of scope which started in IR nodes specific code
100225  /* */
100226 
100227  /* name Internal Functions
100228  \brief Internal functions ... incomplete-documentation
100229 
100230  These functions have been made public as part of the design, but they are suggested for internal use
100231  or by particularly knowledgeable users for specialized tools or applications.
100232 
100233  \internal We could not make these private because they are required by user for special purposes. And
100234  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
100235 
100236  */
100237 
100238  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
100239  // overridden in every class by *generated* implementation
100241  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
100242  // MS: 06/28/02 container of names of variables or container indices
100243  // used used in the traversal to access AST successor nodes
100244  // overridden in every class by *generated* implementation
100247  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
100248 
100249  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
100250  // than all the vector copies. The implementation for these functions is generated for each class.
100252  virtual size_t get_numberOfTraversalSuccessors() override;
100254  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
100256  virtual size_t get_childIndex(SgNode *child) override;
100257 
100258 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
100259  // MS: 08/16/2002 method for generating RTI information
100261  virtual RTIReturnType roseRTI() override;
100262 #endif
100263  /* */
100264 
100265 
100266 
100267  /* name Deprecated Functions
100268  \brief Deprecated functions ... incomplete-documentation
100269 
100270  These functions have been deprecated from use.
100271  */
100272  /* */
100273 
100275  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
100276 
100277  // JJW (10/16/2008): Changed to a single function in Node.code, and put
100278  // getVariant() in #if 0 block to prevent confusing Doxygen
100279 #if 0
100280 
100281  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
100283  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
100284 #endif
100285  /* */
100286 
100287 
100288 
100289 
100290  public:
100291  /* name Traversal Support Functions
100292  \brief Traversal support functions ... incomplete-documentation
100293 
100294  These functions have been made public as part of the design, but they are suggested for internal use
100295  or by particularly knowledgable users for specialized tools or applications.
100296  */
100297  /* */
100298 
100299  // DQ (11/26/2005): Support for visitor pattern mechanims
100300  // (inferior to ROSE traversal mechanism, experimental).
100304 
100305  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
100307  virtual void accept (ROSE_VisitorPattern & visitor) override;
100308 
100309  // DQ (12/26/2005): Support for traversal based on the memory pool
100312  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
100313 
100316  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
100317 
100318  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
100319  // This traversal helps support internal tools that call static member functions.
100320  // note: this function operates on the memory pools.
100323  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
100324  /* */
100325 
100326 
100327  public:
100328  /* name Memory Allocation Functions
100329  \brief Memory allocations functions ... incomplete-documentation
100330 
100331  These functions have been made public as part of the design, but they are suggested for internal use
100332  or by particularly knowledgable users for specialized tools or applications.
100333  */
100334  /* */
100335 
100346  virtual bool isInMemoryPool() override;
100347 
100358  virtual void checkDataMemberPointersIfInMemoryPool() override;
100359 
100360  // DQ (4/30/2006): Modified to be a const function.
100375  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
100376 
100386  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
100387 
100399  virtual long getChildIndex( SgNode* childNode ) const override;
100400 
100401  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
100402  // comment here (changed to be a C style comment and not be a doxygen comment).
100403  /* \brief Constructor for use by AST File I/O Mechanism
100404 
100405  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
100406  which obtained via fast binary file I/O from disk.
100407  */
100408  // SgOmpSimdlenClause( SgOmpSimdlenClauseStorageClass& source );
100409 
100410 
100411 
100412 
100413 
100414  // JH (10/24/2005): methods added to support the ast file IO
100415  private:
100416 
100417  /* name AST Memory Allocation Support Functions
100418  \brief Memory allocations support....
100419 
100420  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
100421  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
100422  and support the AST File I/O Mechanism.
100423  */
100424  /* */
100425 
100426  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
100427  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
100428  that I use the same type everywhere, if any changes are made. THe second one declares the type
100429  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
100430  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
100431  a correspinding one in the AST_FILE_IO class!
100432  */
100433  // DQ (9/2/2015): This typedef is no longer used, we can't define the
100434  // comment here (changed to be a C style comment and not be a doxygen comment).
100435  /* \brief Typedef used for low level memory access.
100436  */
100437  // typedef unsigned char* TestType;
100438 
100439  // DQ (9/2/2015): This typedef is no longer used, we can't define the
100440  // comment here (changed to be a C style comment and not be a doxygen comment).
100441  /* \brief Typedef used to hold memory addresses as values.
100442  */
100443  // typedef unsigned long AddressType;
100444 
100445 
100446 
100447  // necessary, to have direct access to the p_freepointer and the private methods !
100449  friend class AST_FILE_IO;
100450 
100452  friend class SgOmpSimdlenClauseStorageClass;
100453 
100455  friend class AstSpecificDataManagingClass;
100456 
100458  friend class AstSpecificDataManagingClassStorageClass;
100459 
100460  public:
100462  SgOmpSimdlenClause( const SgOmpSimdlenClauseStorageClass& source );
100463 
100464  // private: // JJW hack
100465  /*
100466  name AST Memory Allocation Support Variables
100467  Memory allocations support variables
100468 
100469  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
100470  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
100471  and support the AST File I/O Mechanism.
100472  */
100473  /* */
100474 
100475  public:
100476 
100477  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
100478  // to current node (so that it will work cleanly with build functions to specify patterns).
100479  // virtual SgNode* addRegExpAttribute();
100486 
100487 // *** COMMON CODE SECTION ENDS HERE ***
100488 
100489 
100490 // End of memberFunctionString
100491 // Start of memberFunctionString
100492 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
100493 
100494  // the generated cast function
100495  // friend ROSE_DLL_API SgOmpSimdlenClause* isSgOmpSimdlenClause ( SgNode* s );
100496 
100498 
100499 
100500 // End of memberFunctionString
100501 
100502 
100503  public:
100504  virtual ~SgOmpSimdlenClause();
100505 
100506 
100507  public:
100508  SgOmpSimdlenClause(Sg_File_Info* startOfConstruct , SgExpression* expression = NULL);
100509  SgOmpSimdlenClause(SgExpression* expression);
100510 
100511  protected:
100512 
100513 
100514 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
100515 
100516 
100517  };
100518 #endif
100519 
100520 // postdeclarations for SgOmpSimdlenClause
100521 
100522 /* #line 100523 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
100523 
100524 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
100525 
100526 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
100527 
100528 
100529 /* #line 100530 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
100530 
100531 
100532 
100533 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
100534 
100535 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
100536 // This code is automatically generated for each
100537 // terminal and non-terminal within the defined
100538 // grammar. There is a simple way to change the
100539 // code to fix bugs etc. See the ROSE README file
100540 // for directions.
100541 
100542 // tps: (02/22/2010): Adding DLL export requirements
100543 #include "rosedll.h"
100544 
100545 // predeclarations for SgOmpFinalClause
100546 
100547 /* #line 100548 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
100548 
100549 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
100550 
100551 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
100552 
100553 #if 1
100554 // Class Definition for SgOmpFinalClause
100555 class ROSE_DLL_API SgOmpFinalClause : public SgOmpExpressionClause
100556  {
100557  public:
100558 
100559 
100560 /* #line 100561 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
100561 
100562  virtual SgNode* copy ( SgCopyHelp& help) const override;
100563 // Start of memberFunctionString
100564 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
100565 
100566 // *** COMMON CODE SECTION BEGINS HERE ***
100567 
100568  public:
100569 
100570  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
100571  // and not required which is required to match the other aspects of the copy mechanism code generation.
100572  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
100573  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
100574  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
100575  // virtual SgNode* copy ( const SgCopyHelp & help) const;
100576 
100578  virtual std::string class_name() const override;
100579 
100581  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
100582 
100584  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
100585  // static const VariantT static_variant = V_SgOmpFinalClause;
100586  enum { static_variant = V_SgOmpFinalClause };
100587 
100588  /* the generated cast function */
100590  ROSE_DLL_API friend SgOmpFinalClause* isSgOmpFinalClause( SgNode * s );
100591 
100593  ROSE_DLL_API friend const SgOmpFinalClause* isSgOmpFinalClause( const SgNode * s );
100594 
100595  // ******************************************
100596  // * Memory Pool / New / Delete
100597  // ******************************************
100598 
100599  public:
100601  static const unsigned pool_size; //
100603  static std::vector<unsigned char *> pools; //
100605  static SgOmpFinalClause * next_node; //
100606 
100608  static unsigned long initializeStorageClassArray(SgOmpFinalClauseStorageClass *); //
100609 
100611  static void clearMemoryPool(); //
100612  static void deleteMemoryPool(); //
100613 
100615  static void extendMemoryPoolForFileIO(); //
100616 
100618  static SgOmpFinalClause * getPointerFromGlobalIndex(unsigned long); //
100620  static SgOmpFinalClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
100621 
100623  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
100625  static void resetValidFreepointers(); //
100627  static unsigned long getNumberOfLastValidPointer(); //
100628 
100629 
100630 #if defined(INLINE_FUNCTIONS)
100631 
100632  inline void *operator new (size_t size);
100633 #else
100634 
100635  void *operator new (size_t size);
100636 #endif
100637 
100638  void operator delete (void* pointer, size_t size);
100639 
100640  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
100641  void operator delete (void* pointer)
100642  {
100643  // This is the generated delete operator...
100644  SgOmpFinalClause::operator delete (pointer,sizeof(SgOmpFinalClause));
100645  }
100646 
100648  static size_t numberOfNodes();
100649 
100651  static size_t memoryUsage();
100652 
100653  // End of scope which started in IR nodes specific code
100654  /* */
100655 
100656  /* name Internal Functions
100657  \brief Internal functions ... incomplete-documentation
100658 
100659  These functions have been made public as part of the design, but they are suggested for internal use
100660  or by particularly knowledgeable users for specialized tools or applications.
100661 
100662  \internal We could not make these private because they are required by user for special purposes. And
100663  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
100664 
100665  */
100666 
100667  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
100668  // overridden in every class by *generated* implementation
100670  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
100671  // MS: 06/28/02 container of names of variables or container indices
100672  // used used in the traversal to access AST successor nodes
100673  // overridden in every class by *generated* implementation
100676  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
100677 
100678  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
100679  // than all the vector copies. The implementation for these functions is generated for each class.
100681  virtual size_t get_numberOfTraversalSuccessors() override;
100683  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
100685  virtual size_t get_childIndex(SgNode *child) override;
100686 
100687 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
100688  // MS: 08/16/2002 method for generating RTI information
100690  virtual RTIReturnType roseRTI() override;
100691 #endif
100692  /* */
100693 
100694 
100695 
100696  /* name Deprecated Functions
100697  \brief Deprecated functions ... incomplete-documentation
100698 
100699  These functions have been deprecated from use.
100700  */
100701  /* */
100702 
100704  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
100705 
100706  // JJW (10/16/2008): Changed to a single function in Node.code, and put
100707  // getVariant() in #if 0 block to prevent confusing Doxygen
100708 #if 0
100709 
100710  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
100712  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
100713 #endif
100714  /* */
100715 
100716 
100717 
100718 
100719  public:
100720  /* name Traversal Support Functions
100721  \brief Traversal support functions ... incomplete-documentation
100722 
100723  These functions have been made public as part of the design, but they are suggested for internal use
100724  or by particularly knowledgable users for specialized tools or applications.
100725  */
100726  /* */
100727 
100728  // DQ (11/26/2005): Support for visitor pattern mechanims
100729  // (inferior to ROSE traversal mechanism, experimental).
100733 
100734  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
100736  virtual void accept (ROSE_VisitorPattern & visitor) override;
100737 
100738  // DQ (12/26/2005): Support for traversal based on the memory pool
100741  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
100742 
100745  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
100746 
100747  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
100748  // This traversal helps support internal tools that call static member functions.
100749  // note: this function operates on the memory pools.
100752  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
100753  /* */
100754 
100755 
100756  public:
100757  /* name Memory Allocation Functions
100758  \brief Memory allocations functions ... incomplete-documentation
100759 
100760  These functions have been made public as part of the design, but they are suggested for internal use
100761  or by particularly knowledgable users for specialized tools or applications.
100762  */
100763  /* */
100764 
100775  virtual bool isInMemoryPool() override;
100776 
100787  virtual void checkDataMemberPointersIfInMemoryPool() override;
100788 
100789  // DQ (4/30/2006): Modified to be a const function.
100804  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
100805 
100815  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
100816 
100828  virtual long getChildIndex( SgNode* childNode ) const override;
100829 
100830  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
100831  // comment here (changed to be a C style comment and not be a doxygen comment).
100832  /* \brief Constructor for use by AST File I/O Mechanism
100833 
100834  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
100835  which obtained via fast binary file I/O from disk.
100836  */
100837  // SgOmpFinalClause( SgOmpFinalClauseStorageClass& source );
100838 
100839 
100840 
100841 
100842 
100843  // JH (10/24/2005): methods added to support the ast file IO
100844  private:
100845 
100846  /* name AST Memory Allocation Support Functions
100847  \brief Memory allocations support....
100848 
100849  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
100850  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
100851  and support the AST File I/O Mechanism.
100852  */
100853  /* */
100854 
100855  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
100856  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
100857  that I use the same type everywhere, if any changes are made. THe second one declares the type
100858  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
100859  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
100860  a correspinding one in the AST_FILE_IO class!
100861  */
100862  // DQ (9/2/2015): This typedef is no longer used, we can't define the
100863  // comment here (changed to be a C style comment and not be a doxygen comment).
100864  /* \brief Typedef used for low level memory access.
100865  */
100866  // typedef unsigned char* TestType;
100867 
100868  // DQ (9/2/2015): This typedef is no longer used, we can't define the
100869  // comment here (changed to be a C style comment and not be a doxygen comment).
100870  /* \brief Typedef used to hold memory addresses as values.
100871  */
100872  // typedef unsigned long AddressType;
100873 
100874 
100875 
100876  // necessary, to have direct access to the p_freepointer and the private methods !
100878  friend class AST_FILE_IO;
100879 
100881  friend class SgOmpFinalClauseStorageClass;
100882 
100884  friend class AstSpecificDataManagingClass;
100885 
100887  friend class AstSpecificDataManagingClassStorageClass;
100888 
100889  public:
100891  SgOmpFinalClause( const SgOmpFinalClauseStorageClass& source );
100892 
100893  // private: // JJW hack
100894  /*
100895  name AST Memory Allocation Support Variables
100896  Memory allocations support variables
100897 
100898  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
100899  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
100900  and support the AST File I/O Mechanism.
100901  */
100902  /* */
100903 
100904  public:
100905 
100906  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
100907  // to current node (so that it will work cleanly with build functions to specify patterns).
100908  // virtual SgNode* addRegExpAttribute();
100915 
100916 // *** COMMON CODE SECTION ENDS HERE ***
100917 
100918 
100919 // End of memberFunctionString
100920 // Start of memberFunctionString
100921 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
100922 
100923  // the generated cast function
100924  // friend ROSE_DLL_API SgOmpFinalClause* isSgOmpFinalClause ( SgNode* s );
100925 
100927 
100928 
100929 // End of memberFunctionString
100930 
100931 
100932  public:
100933  virtual ~SgOmpFinalClause();
100934 
100935 
100936  public:
100937  SgOmpFinalClause(Sg_File_Info* startOfConstruct , SgExpression* expression = NULL);
100938  SgOmpFinalClause(SgExpression* expression);
100939 
100940  protected:
100941 
100942 
100943 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
100944 
100945 
100946  };
100947 #endif
100948 
100949 // postdeclarations for SgOmpFinalClause
100950 
100951 /* #line 100952 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
100952 
100953 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
100954 
100955 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
100956 
100957 
100958 /* #line 100959 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
100959 
100960 
100961 
100962 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
100963 
100964 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
100965 // This code is automatically generated for each
100966 // terminal and non-terminal within the defined
100967 // grammar. There is a simple way to change the
100968 // code to fix bugs etc. See the ROSE README file
100969 // for directions.
100970 
100971 // tps: (02/22/2010): Adding DLL export requirements
100972 #include "rosedll.h"
100973 
100974 // predeclarations for SgOmpPriorityClause
100975 
100976 /* #line 100977 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
100977 
100978 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
100979 
100980 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
100981 
100982 #if 1
100983 // Class Definition for SgOmpPriorityClause
100984 class ROSE_DLL_API SgOmpPriorityClause : public SgOmpExpressionClause
100985  {
100986  public:
100987 
100988 
100989 /* #line 100990 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
100990 
100991  virtual SgNode* copy ( SgCopyHelp& help) const override;
100992 // Start of memberFunctionString
100993 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
100994 
100995 // *** COMMON CODE SECTION BEGINS HERE ***
100996 
100997  public:
100998 
100999  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
101000  // and not required which is required to match the other aspects of the copy mechanism code generation.
101001  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
101002  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
101003  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
101004  // virtual SgNode* copy ( const SgCopyHelp & help) const;
101005 
101007  virtual std::string class_name() const override;
101008 
101010  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
101011 
101013  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
101014  // static const VariantT static_variant = V_SgOmpPriorityClause;
101015  enum { static_variant = V_SgOmpPriorityClause };
101016 
101017  /* the generated cast function */
101019  ROSE_DLL_API friend SgOmpPriorityClause* isSgOmpPriorityClause( SgNode * s );
101020 
101022  ROSE_DLL_API friend const SgOmpPriorityClause* isSgOmpPriorityClause( const SgNode * s );
101023 
101024  // ******************************************
101025  // * Memory Pool / New / Delete
101026  // ******************************************
101027 
101028  public:
101030  static const unsigned pool_size; //
101032  static std::vector<unsigned char *> pools; //
101034  static SgOmpPriorityClause * next_node; //
101035 
101037  static unsigned long initializeStorageClassArray(SgOmpPriorityClauseStorageClass *); //
101038 
101040  static void clearMemoryPool(); //
101041  static void deleteMemoryPool(); //
101042 
101044  static void extendMemoryPoolForFileIO(); //
101045 
101047  static SgOmpPriorityClause * getPointerFromGlobalIndex(unsigned long); //
101049  static SgOmpPriorityClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
101050 
101052  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
101054  static void resetValidFreepointers(); //
101056  static unsigned long getNumberOfLastValidPointer(); //
101057 
101058 
101059 #if defined(INLINE_FUNCTIONS)
101060 
101061  inline void *operator new (size_t size);
101062 #else
101063 
101064  void *operator new (size_t size);
101065 #endif
101066 
101067  void operator delete (void* pointer, size_t size);
101068 
101069  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
101070  void operator delete (void* pointer)
101071  {
101072  // This is the generated delete operator...
101073  SgOmpPriorityClause::operator delete (pointer,sizeof(SgOmpPriorityClause));
101074  }
101075 
101077  static size_t numberOfNodes();
101078 
101080  static size_t memoryUsage();
101081 
101082  // End of scope which started in IR nodes specific code
101083  /* */
101084 
101085  /* name Internal Functions
101086  \brief Internal functions ... incomplete-documentation
101087 
101088  These functions have been made public as part of the design, but they are suggested for internal use
101089  or by particularly knowledgeable users for specialized tools or applications.
101090 
101091  \internal We could not make these private because they are required by user for special purposes. And
101092  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
101093 
101094  */
101095 
101096  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
101097  // overridden in every class by *generated* implementation
101099  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
101100  // MS: 06/28/02 container of names of variables or container indices
101101  // used used in the traversal to access AST successor nodes
101102  // overridden in every class by *generated* implementation
101105  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
101106 
101107  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
101108  // than all the vector copies. The implementation for these functions is generated for each class.
101110  virtual size_t get_numberOfTraversalSuccessors() override;
101112  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
101114  virtual size_t get_childIndex(SgNode *child) override;
101115 
101116 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
101117  // MS: 08/16/2002 method for generating RTI information
101119  virtual RTIReturnType roseRTI() override;
101120 #endif
101121  /* */
101122 
101123 
101124 
101125  /* name Deprecated Functions
101126  \brief Deprecated functions ... incomplete-documentation
101127 
101128  These functions have been deprecated from use.
101129  */
101130  /* */
101131 
101133  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
101134 
101135  // JJW (10/16/2008): Changed to a single function in Node.code, and put
101136  // getVariant() in #if 0 block to prevent confusing Doxygen
101137 #if 0
101138 
101139  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
101141  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
101142 #endif
101143  /* */
101144 
101145 
101146 
101147 
101148  public:
101149  /* name Traversal Support Functions
101150  \brief Traversal support functions ... incomplete-documentation
101151 
101152  These functions have been made public as part of the design, but they are suggested for internal use
101153  or by particularly knowledgable users for specialized tools or applications.
101154  */
101155  /* */
101156 
101157  // DQ (11/26/2005): Support for visitor pattern mechanims
101158  // (inferior to ROSE traversal mechanism, experimental).
101162 
101163  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
101165  virtual void accept (ROSE_VisitorPattern & visitor) override;
101166 
101167  // DQ (12/26/2005): Support for traversal based on the memory pool
101170  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
101171 
101174  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
101175 
101176  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
101177  // This traversal helps support internal tools that call static member functions.
101178  // note: this function operates on the memory pools.
101181  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
101182  /* */
101183 
101184 
101185  public:
101186  /* name Memory Allocation Functions
101187  \brief Memory allocations functions ... incomplete-documentation
101188 
101189  These functions have been made public as part of the design, but they are suggested for internal use
101190  or by particularly knowledgable users for specialized tools or applications.
101191  */
101192  /* */
101193 
101204  virtual bool isInMemoryPool() override;
101205 
101216  virtual void checkDataMemberPointersIfInMemoryPool() override;
101217 
101218  // DQ (4/30/2006): Modified to be a const function.
101233  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
101234 
101244  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
101245 
101257  virtual long getChildIndex( SgNode* childNode ) const override;
101258 
101259  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
101260  // comment here (changed to be a C style comment and not be a doxygen comment).
101261  /* \brief Constructor for use by AST File I/O Mechanism
101262 
101263  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
101264  which obtained via fast binary file I/O from disk.
101265  */
101266  // SgOmpPriorityClause( SgOmpPriorityClauseStorageClass& source );
101267 
101268 
101269 
101270 
101271 
101272  // JH (10/24/2005): methods added to support the ast file IO
101273  private:
101274 
101275  /* name AST Memory Allocation Support Functions
101276  \brief Memory allocations support....
101277 
101278  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
101279  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
101280  and support the AST File I/O Mechanism.
101281  */
101282  /* */
101283 
101284  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
101285  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
101286  that I use the same type everywhere, if any changes are made. THe second one declares the type
101287  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
101288  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
101289  a correspinding one in the AST_FILE_IO class!
101290  */
101291  // DQ (9/2/2015): This typedef is no longer used, we can't define the
101292  // comment here (changed to be a C style comment and not be a doxygen comment).
101293  /* \brief Typedef used for low level memory access.
101294  */
101295  // typedef unsigned char* TestType;
101296 
101297  // DQ (9/2/2015): This typedef is no longer used, we can't define the
101298  // comment here (changed to be a C style comment and not be a doxygen comment).
101299  /* \brief Typedef used to hold memory addresses as values.
101300  */
101301  // typedef unsigned long AddressType;
101302 
101303 
101304 
101305  // necessary, to have direct access to the p_freepointer and the private methods !
101307  friend class AST_FILE_IO;
101308 
101310  friend class SgOmpPriorityClauseStorageClass;
101311 
101313  friend class AstSpecificDataManagingClass;
101314 
101316  friend class AstSpecificDataManagingClassStorageClass;
101317 
101318  public:
101320  SgOmpPriorityClause( const SgOmpPriorityClauseStorageClass& source );
101321 
101322  // private: // JJW hack
101323  /*
101324  name AST Memory Allocation Support Variables
101325  Memory allocations support variables
101326 
101327  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
101328  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
101329  and support the AST File I/O Mechanism.
101330  */
101331  /* */
101332 
101333  public:
101334 
101335  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
101336  // to current node (so that it will work cleanly with build functions to specify patterns).
101337  // virtual SgNode* addRegExpAttribute();
101344 
101345 // *** COMMON CODE SECTION ENDS HERE ***
101346 
101347 
101348 // End of memberFunctionString
101349 // Start of memberFunctionString
101350 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
101351 
101352  // the generated cast function
101353  // friend ROSE_DLL_API SgOmpPriorityClause* isSgOmpPriorityClause ( SgNode* s );
101354 
101356 
101357 
101358 // End of memberFunctionString
101359 
101360 
101361  public:
101362  virtual ~SgOmpPriorityClause();
101363 
101364 
101365  public:
101366  SgOmpPriorityClause(Sg_File_Info* startOfConstruct , SgExpression* expression = NULL);
101367  SgOmpPriorityClause(SgExpression* expression);
101368 
101369  protected:
101370 
101371 
101372 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
101373 
101374 
101375  };
101376 #endif
101377 
101378 // postdeclarations for SgOmpPriorityClause
101379 
101380 /* #line 101381 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
101381 
101382 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
101383 
101384 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
101385 
101386 
101387 /* #line 101388 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
101388 
101389 
101390 
101391 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
101392 
101393 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
101394 // This code is automatically generated for each
101395 // terminal and non-terminal within the defined
101396 // grammar. There is a simple way to change the
101397 // code to fix bugs etc. See the ROSE README file
101398 // for directions.
101399 
101400 // tps: (02/22/2010): Adding DLL export requirements
101401 #include "rosedll.h"
101402 
101403 // predeclarations for SgOmpPartialClause
101404 
101405 /* #line 101406 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
101406 
101407 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
101408 
101409 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
101410 
101411 #if 1
101412 // Class Definition for SgOmpPartialClause
101413 class ROSE_DLL_API SgOmpPartialClause : public SgOmpExpressionClause
101414  {
101415  public:
101416 
101417 
101418 /* #line 101419 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
101419 
101420  virtual SgNode* copy ( SgCopyHelp& help) const override;
101421 // Start of memberFunctionString
101422 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
101423 
101424 // *** COMMON CODE SECTION BEGINS HERE ***
101425 
101426  public:
101427 
101428  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
101429  // and not required which is required to match the other aspects of the copy mechanism code generation.
101430  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
101431  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
101432  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
101433  // virtual SgNode* copy ( const SgCopyHelp & help) const;
101434 
101436  virtual std::string class_name() const override;
101437 
101439  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
101440 
101442  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
101443  // static const VariantT static_variant = V_SgOmpPartialClause;
101444  enum { static_variant = V_SgOmpPartialClause };
101445 
101446  /* the generated cast function */
101448  ROSE_DLL_API friend SgOmpPartialClause* isSgOmpPartialClause( SgNode * s );
101449 
101451  ROSE_DLL_API friend const SgOmpPartialClause* isSgOmpPartialClause( const SgNode * s );
101452 
101453  // ******************************************
101454  // * Memory Pool / New / Delete
101455  // ******************************************
101456 
101457  public:
101459  static const unsigned pool_size; //
101461  static std::vector<unsigned char *> pools; //
101463  static SgOmpPartialClause * next_node; //
101464 
101466  static unsigned long initializeStorageClassArray(SgOmpPartialClauseStorageClass *); //
101467 
101469  static void clearMemoryPool(); //
101470  static void deleteMemoryPool(); //
101471 
101473  static void extendMemoryPoolForFileIO(); //
101474 
101476  static SgOmpPartialClause * getPointerFromGlobalIndex(unsigned long); //
101478  static SgOmpPartialClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
101479 
101481  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
101483  static void resetValidFreepointers(); //
101485  static unsigned long getNumberOfLastValidPointer(); //
101486 
101487 
101488 #if defined(INLINE_FUNCTIONS)
101489 
101490  inline void *operator new (size_t size);
101491 #else
101492 
101493  void *operator new (size_t size);
101494 #endif
101495 
101496  void operator delete (void* pointer, size_t size);
101497 
101498  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
101499  void operator delete (void* pointer)
101500  {
101501  // This is the generated delete operator...
101502  SgOmpPartialClause::operator delete (pointer,sizeof(SgOmpPartialClause));
101503  }
101504 
101506  static size_t numberOfNodes();
101507 
101509  static size_t memoryUsage();
101510 
101511  // End of scope which started in IR nodes specific code
101512  /* */
101513 
101514  /* name Internal Functions
101515  \brief Internal functions ... incomplete-documentation
101516 
101517  These functions have been made public as part of the design, but they are suggested for internal use
101518  or by particularly knowledgeable users for specialized tools or applications.
101519 
101520  \internal We could not make these private because they are required by user for special purposes. And
101521  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
101522 
101523  */
101524 
101525  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
101526  // overridden in every class by *generated* implementation
101528  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
101529  // MS: 06/28/02 container of names of variables or container indices
101530  // used used in the traversal to access AST successor nodes
101531  // overridden in every class by *generated* implementation
101534  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
101535 
101536  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
101537  // than all the vector copies. The implementation for these functions is generated for each class.
101539  virtual size_t get_numberOfTraversalSuccessors() override;
101541  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
101543  virtual size_t get_childIndex(SgNode *child) override;
101544 
101545 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
101546  // MS: 08/16/2002 method for generating RTI information
101548  virtual RTIReturnType roseRTI() override;
101549 #endif
101550  /* */
101551 
101552 
101553 
101554  /* name Deprecated Functions
101555  \brief Deprecated functions ... incomplete-documentation
101556 
101557  These functions have been deprecated from use.
101558  */
101559  /* */
101560 
101562  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
101563 
101564  // JJW (10/16/2008): Changed to a single function in Node.code, and put
101565  // getVariant() in #if 0 block to prevent confusing Doxygen
101566 #if 0
101567 
101568  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
101570  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
101571 #endif
101572  /* */
101573 
101574 
101575 
101576 
101577  public:
101578  /* name Traversal Support Functions
101579  \brief Traversal support functions ... incomplete-documentation
101580 
101581  These functions have been made public as part of the design, but they are suggested for internal use
101582  or by particularly knowledgable users for specialized tools or applications.
101583  */
101584  /* */
101585 
101586  // DQ (11/26/2005): Support for visitor pattern mechanims
101587  // (inferior to ROSE traversal mechanism, experimental).
101591 
101592  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
101594  virtual void accept (ROSE_VisitorPattern & visitor) override;
101595 
101596  // DQ (12/26/2005): Support for traversal based on the memory pool
101599  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
101600 
101603  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
101604 
101605  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
101606  // This traversal helps support internal tools that call static member functions.
101607  // note: this function operates on the memory pools.
101610  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
101611  /* */
101612 
101613 
101614  public:
101615  /* name Memory Allocation Functions
101616  \brief Memory allocations functions ... incomplete-documentation
101617 
101618  These functions have been made public as part of the design, but they are suggested for internal use
101619  or by particularly knowledgable users for specialized tools or applications.
101620  */
101621  /* */
101622 
101633  virtual bool isInMemoryPool() override;
101634 
101645  virtual void checkDataMemberPointersIfInMemoryPool() override;
101646 
101647  // DQ (4/30/2006): Modified to be a const function.
101662  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
101663 
101673  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
101674 
101686  virtual long getChildIndex( SgNode* childNode ) const override;
101687 
101688  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
101689  // comment here (changed to be a C style comment and not be a doxygen comment).
101690  /* \brief Constructor for use by AST File I/O Mechanism
101691 
101692  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
101693  which obtained via fast binary file I/O from disk.
101694  */
101695  // SgOmpPartialClause( SgOmpPartialClauseStorageClass& source );
101696 
101697 
101698 
101699 
101700 
101701  // JH (10/24/2005): methods added to support the ast file IO
101702  private:
101703 
101704  /* name AST Memory Allocation Support Functions
101705  \brief Memory allocations support....
101706 
101707  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
101708  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
101709  and support the AST File I/O Mechanism.
101710  */
101711  /* */
101712 
101713  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
101714  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
101715  that I use the same type everywhere, if any changes are made. THe second one declares the type
101716  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
101717  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
101718  a correspinding one in the AST_FILE_IO class!
101719  */
101720  // DQ (9/2/2015): This typedef is no longer used, we can't define the
101721  // comment here (changed to be a C style comment and not be a doxygen comment).
101722  /* \brief Typedef used for low level memory access.
101723  */
101724  // typedef unsigned char* TestType;
101725 
101726  // DQ (9/2/2015): This typedef is no longer used, we can't define the
101727  // comment here (changed to be a C style comment and not be a doxygen comment).
101728  /* \brief Typedef used to hold memory addresses as values.
101729  */
101730  // typedef unsigned long AddressType;
101731 
101732 
101733 
101734  // necessary, to have direct access to the p_freepointer and the private methods !
101736  friend class AST_FILE_IO;
101737 
101739  friend class SgOmpPartialClauseStorageClass;
101740 
101742  friend class AstSpecificDataManagingClass;
101743 
101745  friend class AstSpecificDataManagingClassStorageClass;
101746 
101747  public:
101749  SgOmpPartialClause( const SgOmpPartialClauseStorageClass& source );
101750 
101751  // private: // JJW hack
101752  /*
101753  name AST Memory Allocation Support Variables
101754  Memory allocations support variables
101755 
101756  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
101757  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
101758  and support the AST File I/O Mechanism.
101759  */
101760  /* */
101761 
101762  public:
101763 
101764  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
101765  // to current node (so that it will work cleanly with build functions to specify patterns).
101766  // virtual SgNode* addRegExpAttribute();
101773 
101774 // *** COMMON CODE SECTION ENDS HERE ***
101775 
101776 
101777 // End of memberFunctionString
101778 // Start of memberFunctionString
101779 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
101780 
101781  // the generated cast function
101782  // friend ROSE_DLL_API SgOmpPartialClause* isSgOmpPartialClause ( SgNode* s );
101783 
101785 
101786 
101787 // End of memberFunctionString
101788 
101789 
101790  public:
101791  virtual ~SgOmpPartialClause();
101792 
101793 
101794  public:
101795  SgOmpPartialClause(Sg_File_Info* startOfConstruct , SgExpression* expression = NULL);
101796  SgOmpPartialClause(SgExpression* expression);
101797 
101798  protected:
101799 
101800 
101801 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
101802 
101803 
101804  };
101805 #endif
101806 
101807 // postdeclarations for SgOmpPartialClause
101808 
101809 /* #line 101810 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
101810 
101811 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
101812 
101813 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
101814 
101815 
101816 /* #line 101817 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
101817 
101818 
101819 
101820 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
101821 
101822 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
101823 // This code is automatically generated for each
101824 // terminal and non-terminal within the defined
101825 // grammar. There is a simple way to change the
101826 // code to fix bugs etc. See the ROSE README file
101827 // for directions.
101828 
101829 // tps: (02/22/2010): Adding DLL export requirements
101830 #include "rosedll.h"
101831 
101832 // predeclarations for SgOmpSizesClause
101833 
101834 /* #line 101835 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
101835 
101836 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
101837 
101838 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
101839 
101840 #if 1
101841 // Class Definition for SgOmpSizesClause
101842 class ROSE_DLL_API SgOmpSizesClause : public SgOmpExpressionClause
101843  {
101844  public:
101845 
101846 
101847 /* #line 101848 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
101848 
101849  virtual SgNode* copy ( SgCopyHelp& help) const override;
101850 // Start of memberFunctionString
101851 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
101852 
101853 // *** COMMON CODE SECTION BEGINS HERE ***
101854 
101855  public:
101856 
101857  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
101858  // and not required which is required to match the other aspects of the copy mechanism code generation.
101859  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
101860  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
101861  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
101862  // virtual SgNode* copy ( const SgCopyHelp & help) const;
101863 
101865  virtual std::string class_name() const override;
101866 
101868  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
101869 
101871  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
101872  // static const VariantT static_variant = V_SgOmpSizesClause;
101873  enum { static_variant = V_SgOmpSizesClause };
101874 
101875  /* the generated cast function */
101877  ROSE_DLL_API friend SgOmpSizesClause* isSgOmpSizesClause( SgNode * s );
101878 
101880  ROSE_DLL_API friend const SgOmpSizesClause* isSgOmpSizesClause( const SgNode * s );
101881 
101882  // ******************************************
101883  // * Memory Pool / New / Delete
101884  // ******************************************
101885 
101886  public:
101888  static const unsigned pool_size; //
101890  static std::vector<unsigned char *> pools; //
101892  static SgOmpSizesClause * next_node; //
101893 
101895  static unsigned long initializeStorageClassArray(SgOmpSizesClauseStorageClass *); //
101896 
101898  static void clearMemoryPool(); //
101899  static void deleteMemoryPool(); //
101900 
101902  static void extendMemoryPoolForFileIO(); //
101903 
101905  static SgOmpSizesClause * getPointerFromGlobalIndex(unsigned long); //
101907  static SgOmpSizesClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
101908 
101910  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
101912  static void resetValidFreepointers(); //
101914  static unsigned long getNumberOfLastValidPointer(); //
101915 
101916 
101917 #if defined(INLINE_FUNCTIONS)
101918 
101919  inline void *operator new (size_t size);
101920 #else
101921 
101922  void *operator new (size_t size);
101923 #endif
101924 
101925  void operator delete (void* pointer, size_t size);
101926 
101927  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
101928  void operator delete (void* pointer)
101929  {
101930  // This is the generated delete operator...
101931  SgOmpSizesClause::operator delete (pointer,sizeof(SgOmpSizesClause));
101932  }
101933 
101935  static size_t numberOfNodes();
101936 
101938  static size_t memoryUsage();
101939 
101940  // End of scope which started in IR nodes specific code
101941  /* */
101942 
101943  /* name Internal Functions
101944  \brief Internal functions ... incomplete-documentation
101945 
101946  These functions have been made public as part of the design, but they are suggested for internal use
101947  or by particularly knowledgeable users for specialized tools or applications.
101948 
101949  \internal We could not make these private because they are required by user for special purposes. And
101950  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
101951 
101952  */
101953 
101954  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
101955  // overridden in every class by *generated* implementation
101957  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
101958  // MS: 06/28/02 container of names of variables or container indices
101959  // used used in the traversal to access AST successor nodes
101960  // overridden in every class by *generated* implementation
101963  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
101964 
101965  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
101966  // than all the vector copies. The implementation for these functions is generated for each class.
101968  virtual size_t get_numberOfTraversalSuccessors() override;
101970  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
101972  virtual size_t get_childIndex(SgNode *child) override;
101973 
101974 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
101975  // MS: 08/16/2002 method for generating RTI information
101977  virtual RTIReturnType roseRTI() override;
101978 #endif
101979  /* */
101980 
101981 
101982 
101983  /* name Deprecated Functions
101984  \brief Deprecated functions ... incomplete-documentation
101985 
101986  These functions have been deprecated from use.
101987  */
101988  /* */
101989 
101991  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
101992 
101993  // JJW (10/16/2008): Changed to a single function in Node.code, and put
101994  // getVariant() in #if 0 block to prevent confusing Doxygen
101995 #if 0
101996 
101997  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
101999  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
102000 #endif
102001  /* */
102002 
102003 
102004 
102005 
102006  public:
102007  /* name Traversal Support Functions
102008  \brief Traversal support functions ... incomplete-documentation
102009 
102010  These functions have been made public as part of the design, but they are suggested for internal use
102011  or by particularly knowledgable users for specialized tools or applications.
102012  */
102013  /* */
102014 
102015  // DQ (11/26/2005): Support for visitor pattern mechanims
102016  // (inferior to ROSE traversal mechanism, experimental).
102020 
102021  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
102023  virtual void accept (ROSE_VisitorPattern & visitor) override;
102024 
102025  // DQ (12/26/2005): Support for traversal based on the memory pool
102028  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
102029 
102032  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
102033 
102034  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
102035  // This traversal helps support internal tools that call static member functions.
102036  // note: this function operates on the memory pools.
102039  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
102040  /* */
102041 
102042 
102043  public:
102044  /* name Memory Allocation Functions
102045  \brief Memory allocations functions ... incomplete-documentation
102046 
102047  These functions have been made public as part of the design, but they are suggested for internal use
102048  or by particularly knowledgable users for specialized tools or applications.
102049  */
102050  /* */
102051 
102062  virtual bool isInMemoryPool() override;
102063 
102074  virtual void checkDataMemberPointersIfInMemoryPool() override;
102075 
102076  // DQ (4/30/2006): Modified to be a const function.
102091  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
102092 
102102  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
102103 
102115  virtual long getChildIndex( SgNode* childNode ) const override;
102116 
102117  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
102118  // comment here (changed to be a C style comment and not be a doxygen comment).
102119  /* \brief Constructor for use by AST File I/O Mechanism
102120 
102121  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
102122  which obtained via fast binary file I/O from disk.
102123  */
102124  // SgOmpSizesClause( SgOmpSizesClauseStorageClass& source );
102125 
102126 
102127 
102128 
102129 
102130  // JH (10/24/2005): methods added to support the ast file IO
102131  private:
102132 
102133  /* name AST Memory Allocation Support Functions
102134  \brief Memory allocations support....
102135 
102136  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
102137  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
102138  and support the AST File I/O Mechanism.
102139  */
102140  /* */
102141 
102142  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
102143  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
102144  that I use the same type everywhere, if any changes are made. THe second one declares the type
102145  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
102146  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
102147  a correspinding one in the AST_FILE_IO class!
102148  */
102149  // DQ (9/2/2015): This typedef is no longer used, we can't define the
102150  // comment here (changed to be a C style comment and not be a doxygen comment).
102151  /* \brief Typedef used for low level memory access.
102152  */
102153  // typedef unsigned char* TestType;
102154 
102155  // DQ (9/2/2015): This typedef is no longer used, we can't define the
102156  // comment here (changed to be a C style comment and not be a doxygen comment).
102157  /* \brief Typedef used to hold memory addresses as values.
102158  */
102159  // typedef unsigned long AddressType;
102160 
102161 
102162 
102163  // necessary, to have direct access to the p_freepointer and the private methods !
102165  friend class AST_FILE_IO;
102166 
102168  friend class SgOmpSizesClauseStorageClass;
102169 
102171  friend class AstSpecificDataManagingClass;
102172 
102174  friend class AstSpecificDataManagingClassStorageClass;
102175 
102176  public:
102178  SgOmpSizesClause( const SgOmpSizesClauseStorageClass& source );
102179 
102180  // private: // JJW hack
102181  /*
102182  name AST Memory Allocation Support Variables
102183  Memory allocations support variables
102184 
102185  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
102186  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
102187  and support the AST File I/O Mechanism.
102188  */
102189  /* */
102190 
102191  public:
102192 
102193  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
102194  // to current node (so that it will work cleanly with build functions to specify patterns).
102195  // virtual SgNode* addRegExpAttribute();
102202 
102203 // *** COMMON CODE SECTION ENDS HERE ***
102204 
102205 
102206 // End of memberFunctionString
102207 // Start of memberFunctionString
102208 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
102209 
102210  // the generated cast function
102211  // friend ROSE_DLL_API SgOmpSizesClause* isSgOmpSizesClause ( SgNode* s );
102212 
102214 
102215 
102216 // End of memberFunctionString
102217 
102218 
102219  public:
102220  virtual ~SgOmpSizesClause();
102221 
102222 
102223  public:
102224  SgOmpSizesClause(Sg_File_Info* startOfConstruct , SgExpression* expression = NULL);
102225  SgOmpSizesClause(SgExpression* expression);
102226 
102227  protected:
102228 
102229 
102230 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
102231 
102232 
102233  };
102234 #endif
102235 
102236 // postdeclarations for SgOmpSizesClause
102237 
102238 /* #line 102239 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
102239 
102240 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
102241 
102242 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
102243 
102244 
102245 /* #line 102246 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
102246 
102247 
102248 
102249 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
102250 
102251 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
102252 // This code is automatically generated for each
102253 // terminal and non-terminal within the defined
102254 // grammar. There is a simple way to change the
102255 // code to fix bugs etc. See the ROSE README file
102256 // for directions.
102257 
102258 // tps: (02/22/2010): Adding DLL export requirements
102259 #include "rosedll.h"
102260 
102261 // predeclarations for SgOmpInbranchClause
102262 
102263 /* #line 102264 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
102264 
102265 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
102266 
102267 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
102268 
102269 #if 1
102270 // Class Definition for SgOmpInbranchClause
102271 class ROSE_DLL_API SgOmpInbranchClause : public SgOmpClause
102272  {
102273  public:
102274 
102275 
102276 /* #line 102277 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
102277 
102278  virtual SgNode* copy ( SgCopyHelp& help) const override;
102279 // Start of memberFunctionString
102280 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
102281 
102282 // *** COMMON CODE SECTION BEGINS HERE ***
102283 
102284  public:
102285 
102286  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
102287  // and not required which is required to match the other aspects of the copy mechanism code generation.
102288  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
102289  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
102290  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
102291  // virtual SgNode* copy ( const SgCopyHelp & help) const;
102292 
102294  virtual std::string class_name() const override;
102295 
102297  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
102298 
102300  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
102301  // static const VariantT static_variant = V_SgOmpInbranchClause;
102302  enum { static_variant = V_SgOmpInbranchClause };
102303 
102304  /* the generated cast function */
102306  ROSE_DLL_API friend SgOmpInbranchClause* isSgOmpInbranchClause( SgNode * s );
102307 
102309  ROSE_DLL_API friend const SgOmpInbranchClause* isSgOmpInbranchClause( const SgNode * s );
102310 
102311  // ******************************************
102312  // * Memory Pool / New / Delete
102313  // ******************************************
102314 
102315  public:
102317  static const unsigned pool_size; //
102319  static std::vector<unsigned char *> pools; //
102321  static SgOmpInbranchClause * next_node; //
102322 
102324  static unsigned long initializeStorageClassArray(SgOmpInbranchClauseStorageClass *); //
102325 
102327  static void clearMemoryPool(); //
102328  static void deleteMemoryPool(); //
102329 
102331  static void extendMemoryPoolForFileIO(); //
102332 
102334  static SgOmpInbranchClause * getPointerFromGlobalIndex(unsigned long); //
102336  static SgOmpInbranchClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
102337 
102339  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
102341  static void resetValidFreepointers(); //
102343  static unsigned long getNumberOfLastValidPointer(); //
102344 
102345 
102346 #if defined(INLINE_FUNCTIONS)
102347 
102348  inline void *operator new (size_t size);
102349 #else
102350 
102351  void *operator new (size_t size);
102352 #endif
102353 
102354  void operator delete (void* pointer, size_t size);
102355 
102356  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
102357  void operator delete (void* pointer)
102358  {
102359  // This is the generated delete operator...
102360  SgOmpInbranchClause::operator delete (pointer,sizeof(SgOmpInbranchClause));
102361  }
102362 
102364  static size_t numberOfNodes();
102365 
102367  static size_t memoryUsage();
102368 
102369  // End of scope which started in IR nodes specific code
102370  /* */
102371 
102372  /* name Internal Functions
102373  \brief Internal functions ... incomplete-documentation
102374 
102375  These functions have been made public as part of the design, but they are suggested for internal use
102376  or by particularly knowledgeable users for specialized tools or applications.
102377 
102378  \internal We could not make these private because they are required by user for special purposes. And
102379  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
102380 
102381  */
102382 
102383  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
102384  // overridden in every class by *generated* implementation
102386  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
102387  // MS: 06/28/02 container of names of variables or container indices
102388  // used used in the traversal to access AST successor nodes
102389  // overridden in every class by *generated* implementation
102392  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
102393 
102394  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
102395  // than all the vector copies. The implementation for these functions is generated for each class.
102397  virtual size_t get_numberOfTraversalSuccessors() override;
102399  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
102401  virtual size_t get_childIndex(SgNode *child) override;
102402 
102403 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
102404  // MS: 08/16/2002 method for generating RTI information
102406  virtual RTIReturnType roseRTI() override;
102407 #endif
102408  /* */
102409 
102410 
102411 
102412  /* name Deprecated Functions
102413  \brief Deprecated functions ... incomplete-documentation
102414 
102415  These functions have been deprecated from use.
102416  */
102417  /* */
102418 
102420  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
102421 
102422  // JJW (10/16/2008): Changed to a single function in Node.code, and put
102423  // getVariant() in #if 0 block to prevent confusing Doxygen
102424 #if 0
102425 
102426  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
102428  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
102429 #endif
102430  /* */
102431 
102432 
102433 
102434 
102435  public:
102436  /* name Traversal Support Functions
102437  \brief Traversal support functions ... incomplete-documentation
102438 
102439  These functions have been made public as part of the design, but they are suggested for internal use
102440  or by particularly knowledgable users for specialized tools or applications.
102441  */
102442  /* */
102443 
102444  // DQ (11/26/2005): Support for visitor pattern mechanims
102445  // (inferior to ROSE traversal mechanism, experimental).
102449 
102450  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
102452  virtual void accept (ROSE_VisitorPattern & visitor) override;
102453 
102454  // DQ (12/26/2005): Support for traversal based on the memory pool
102457  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
102458 
102461  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
102462 
102463  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
102464  // This traversal helps support internal tools that call static member functions.
102465  // note: this function operates on the memory pools.
102468  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
102469  /* */
102470 
102471 
102472  public:
102473  /* name Memory Allocation Functions
102474  \brief Memory allocations functions ... incomplete-documentation
102475 
102476  These functions have been made public as part of the design, but they are suggested for internal use
102477  or by particularly knowledgable users for specialized tools or applications.
102478  */
102479  /* */
102480 
102491  virtual bool isInMemoryPool() override;
102492 
102503  virtual void checkDataMemberPointersIfInMemoryPool() override;
102504 
102505  // DQ (4/30/2006): Modified to be a const function.
102520  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
102521 
102531  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
102532 
102544  virtual long getChildIndex( SgNode* childNode ) const override;
102545 
102546  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
102547  // comment here (changed to be a C style comment and not be a doxygen comment).
102548  /* \brief Constructor for use by AST File I/O Mechanism
102549 
102550  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
102551  which obtained via fast binary file I/O from disk.
102552  */
102553  // SgOmpInbranchClause( SgOmpInbranchClauseStorageClass& source );
102554 
102555 
102556 
102557 
102558 
102559  // JH (10/24/2005): methods added to support the ast file IO
102560  private:
102561 
102562  /* name AST Memory Allocation Support Functions
102563  \brief Memory allocations support....
102564 
102565  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
102566  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
102567  and support the AST File I/O Mechanism.
102568  */
102569  /* */
102570 
102571  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
102572  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
102573  that I use the same type everywhere, if any changes are made. THe second one declares the type
102574  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
102575  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
102576  a correspinding one in the AST_FILE_IO class!
102577  */
102578  // DQ (9/2/2015): This typedef is no longer used, we can't define the
102579  // comment here (changed to be a C style comment and not be a doxygen comment).
102580  /* \brief Typedef used for low level memory access.
102581  */
102582  // typedef unsigned char* TestType;
102583 
102584  // DQ (9/2/2015): This typedef is no longer used, we can't define the
102585  // comment here (changed to be a C style comment and not be a doxygen comment).
102586  /* \brief Typedef used to hold memory addresses as values.
102587  */
102588  // typedef unsigned long AddressType;
102589 
102590 
102591 
102592  // necessary, to have direct access to the p_freepointer and the private methods !
102594  friend class AST_FILE_IO;
102595 
102597  friend class SgOmpInbranchClauseStorageClass;
102598 
102600  friend class AstSpecificDataManagingClass;
102601 
102603  friend class AstSpecificDataManagingClassStorageClass;
102604 
102605  public:
102607  SgOmpInbranchClause( const SgOmpInbranchClauseStorageClass& source );
102608 
102609  // private: // JJW hack
102610  /*
102611  name AST Memory Allocation Support Variables
102612  Memory allocations support variables
102613 
102614  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
102615  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
102616  and support the AST File I/O Mechanism.
102617  */
102618  /* */
102619 
102620  public:
102621 
102622  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
102623  // to current node (so that it will work cleanly with build functions to specify patterns).
102624  // virtual SgNode* addRegExpAttribute();
102631 
102632 // *** COMMON CODE SECTION ENDS HERE ***
102633 
102634 
102635 // End of memberFunctionString
102636 // Start of memberFunctionString
102637 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
102638 
102639  // the generated cast function
102640  // friend ROSE_DLL_API SgOmpInbranchClause* isSgOmpInbranchClause ( SgNode* s );
102641 
102642  typedef SgOmpClause base_node_type;
102643 
102644 
102645 // End of memberFunctionString
102646 
102647 
102648  public:
102649  virtual ~SgOmpInbranchClause();
102650 
102651 
102652  public:
102653  SgOmpInbranchClause(Sg_File_Info* startOfConstruct );
102654  SgOmpInbranchClause();
102655 
102656  protected:
102657 
102658 
102659 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
102660 
102661 
102662  };
102663 #endif
102664 
102665 // postdeclarations for SgOmpInbranchClause
102666 
102667 /* #line 102668 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
102668 
102669 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
102670 
102671 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
102672 
102673 
102674 /* #line 102675 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
102675 
102676 
102677 
102678 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
102679 
102680 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
102681 // This code is automatically generated for each
102682 // terminal and non-terminal within the defined
102683 // grammar. There is a simple way to change the
102684 // code to fix bugs etc. See the ROSE README file
102685 // for directions.
102686 
102687 // tps: (02/22/2010): Adding DLL export requirements
102688 #include "rosedll.h"
102689 
102690 // predeclarations for SgOmpNotinbranchClause
102691 
102692 /* #line 102693 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
102693 
102694 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
102695 
102696 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
102697 
102698 #if 1
102699 // Class Definition for SgOmpNotinbranchClause
102700 class ROSE_DLL_API SgOmpNotinbranchClause : public SgOmpClause
102701  {
102702  public:
102703 
102704 
102705 /* #line 102706 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
102706 
102707  virtual SgNode* copy ( SgCopyHelp& help) const override;
102708 // Start of memberFunctionString
102709 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
102710 
102711 // *** COMMON CODE SECTION BEGINS HERE ***
102712 
102713  public:
102714 
102715  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
102716  // and not required which is required to match the other aspects of the copy mechanism code generation.
102717  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
102718  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
102719  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
102720  // virtual SgNode* copy ( const SgCopyHelp & help) const;
102721 
102723  virtual std::string class_name() const override;
102724 
102726  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
102727 
102729  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
102730  // static const VariantT static_variant = V_SgOmpNotinbranchClause;
102731  enum { static_variant = V_SgOmpNotinbranchClause };
102732 
102733  /* the generated cast function */
102735  ROSE_DLL_API friend SgOmpNotinbranchClause* isSgOmpNotinbranchClause( SgNode * s );
102736 
102738  ROSE_DLL_API friend const SgOmpNotinbranchClause* isSgOmpNotinbranchClause( const SgNode * s );
102739 
102740  // ******************************************
102741  // * Memory Pool / New / Delete
102742  // ******************************************
102743 
102744  public:
102746  static const unsigned pool_size; //
102748  static std::vector<unsigned char *> pools; //
102750  static SgOmpNotinbranchClause * next_node; //
102751 
102753  static unsigned long initializeStorageClassArray(SgOmpNotinbranchClauseStorageClass *); //
102754 
102756  static void clearMemoryPool(); //
102757  static void deleteMemoryPool(); //
102758 
102760  static void extendMemoryPoolForFileIO(); //
102761 
102763  static SgOmpNotinbranchClause * getPointerFromGlobalIndex(unsigned long); //
102765  static SgOmpNotinbranchClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
102766 
102768  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
102770  static void resetValidFreepointers(); //
102772  static unsigned long getNumberOfLastValidPointer(); //
102773 
102774 
102775 #if defined(INLINE_FUNCTIONS)
102776 
102777  inline void *operator new (size_t size);
102778 #else
102779 
102780  void *operator new (size_t size);
102781 #endif
102782 
102783  void operator delete (void* pointer, size_t size);
102784 
102785  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
102786  void operator delete (void* pointer)
102787  {
102788  // This is the generated delete operator...
102789  SgOmpNotinbranchClause::operator delete (pointer,sizeof(SgOmpNotinbranchClause));
102790  }
102791 
102793  static size_t numberOfNodes();
102794 
102796  static size_t memoryUsage();
102797 
102798  // End of scope which started in IR nodes specific code
102799  /* */
102800 
102801  /* name Internal Functions
102802  \brief Internal functions ... incomplete-documentation
102803 
102804  These functions have been made public as part of the design, but they are suggested for internal use
102805  or by particularly knowledgeable users for specialized tools or applications.
102806 
102807  \internal We could not make these private because they are required by user for special purposes. And
102808  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
102809 
102810  */
102811 
102812  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
102813  // overridden in every class by *generated* implementation
102815  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
102816  // MS: 06/28/02 container of names of variables or container indices
102817  // used used in the traversal to access AST successor nodes
102818  // overridden in every class by *generated* implementation
102821  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
102822 
102823  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
102824  // than all the vector copies. The implementation for these functions is generated for each class.
102826  virtual size_t get_numberOfTraversalSuccessors() override;
102828  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
102830  virtual size_t get_childIndex(SgNode *child) override;
102831 
102832 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
102833  // MS: 08/16/2002 method for generating RTI information
102835  virtual RTIReturnType roseRTI() override;
102836 #endif
102837  /* */
102838 
102839 
102840 
102841  /* name Deprecated Functions
102842  \brief Deprecated functions ... incomplete-documentation
102843 
102844  These functions have been deprecated from use.
102845  */
102846  /* */
102847 
102849  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
102850 
102851  // JJW (10/16/2008): Changed to a single function in Node.code, and put
102852  // getVariant() in #if 0 block to prevent confusing Doxygen
102853 #if 0
102854 
102855  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
102857  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
102858 #endif
102859  /* */
102860 
102861 
102862 
102863 
102864  public:
102865  /* name Traversal Support Functions
102866  \brief Traversal support functions ... incomplete-documentation
102867 
102868  These functions have been made public as part of the design, but they are suggested for internal use
102869  or by particularly knowledgable users for specialized tools or applications.
102870  */
102871  /* */
102872 
102873  // DQ (11/26/2005): Support for visitor pattern mechanims
102874  // (inferior to ROSE traversal mechanism, experimental).
102878 
102879  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
102881  virtual void accept (ROSE_VisitorPattern & visitor) override;
102882 
102883  // DQ (12/26/2005): Support for traversal based on the memory pool
102886  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
102887 
102890  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
102891 
102892  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
102893  // This traversal helps support internal tools that call static member functions.
102894  // note: this function operates on the memory pools.
102897  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
102898  /* */
102899 
102900 
102901  public:
102902  /* name Memory Allocation Functions
102903  \brief Memory allocations functions ... incomplete-documentation
102904 
102905  These functions have been made public as part of the design, but they are suggested for internal use
102906  or by particularly knowledgable users for specialized tools or applications.
102907  */
102908  /* */
102909 
102920  virtual bool isInMemoryPool() override;
102921 
102932  virtual void checkDataMemberPointersIfInMemoryPool() override;
102933 
102934  // DQ (4/30/2006): Modified to be a const function.
102949  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
102950 
102960  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
102961 
102973  virtual long getChildIndex( SgNode* childNode ) const override;
102974 
102975  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
102976  // comment here (changed to be a C style comment and not be a doxygen comment).
102977  /* \brief Constructor for use by AST File I/O Mechanism
102978 
102979  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
102980  which obtained via fast binary file I/O from disk.
102981  */
102982  // SgOmpNotinbranchClause( SgOmpNotinbranchClauseStorageClass& source );
102983 
102984 
102985 
102986 
102987 
102988  // JH (10/24/2005): methods added to support the ast file IO
102989  private:
102990 
102991  /* name AST Memory Allocation Support Functions
102992  \brief Memory allocations support....
102993 
102994  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
102995  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
102996  and support the AST File I/O Mechanism.
102997  */
102998  /* */
102999 
103000  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
103001  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
103002  that I use the same type everywhere, if any changes are made. THe second one declares the type
103003  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
103004  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
103005  a correspinding one in the AST_FILE_IO class!
103006  */
103007  // DQ (9/2/2015): This typedef is no longer used, we can't define the
103008  // comment here (changed to be a C style comment and not be a doxygen comment).
103009  /* \brief Typedef used for low level memory access.
103010  */
103011  // typedef unsigned char* TestType;
103012 
103013  // DQ (9/2/2015): This typedef is no longer used, we can't define the
103014  // comment here (changed to be a C style comment and not be a doxygen comment).
103015  /* \brief Typedef used to hold memory addresses as values.
103016  */
103017  // typedef unsigned long AddressType;
103018 
103019 
103020 
103021  // necessary, to have direct access to the p_freepointer and the private methods !
103023  friend class AST_FILE_IO;
103024 
103026  friend class SgOmpNotinbranchClauseStorageClass;
103027 
103029  friend class AstSpecificDataManagingClass;
103030 
103032  friend class AstSpecificDataManagingClassStorageClass;
103033 
103034  public:
103036  SgOmpNotinbranchClause( const SgOmpNotinbranchClauseStorageClass& source );
103037 
103038  // private: // JJW hack
103039  /*
103040  name AST Memory Allocation Support Variables
103041  Memory allocations support variables
103042 
103043  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
103044  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
103045  and support the AST File I/O Mechanism.
103046  */
103047  /* */
103048 
103049  public:
103050 
103051  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
103052  // to current node (so that it will work cleanly with build functions to specify patterns).
103053  // virtual SgNode* addRegExpAttribute();
103060 
103061 // *** COMMON CODE SECTION ENDS HERE ***
103062 
103063 
103064 // End of memberFunctionString
103065 // Start of memberFunctionString
103066 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
103067 
103068  // the generated cast function
103069  // friend ROSE_DLL_API SgOmpNotinbranchClause* isSgOmpNotinbranchClause ( SgNode* s );
103070 
103071  typedef SgOmpClause base_node_type;
103072 
103073 
103074 // End of memberFunctionString
103075 
103076 
103077  public:
103078  virtual ~SgOmpNotinbranchClause();
103079 
103080 
103081  public:
103082  SgOmpNotinbranchClause(Sg_File_Info* startOfConstruct );
103084 
103085  protected:
103086 
103087 
103088 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
103089 
103090 
103091  };
103092 #endif
103093 
103094 // postdeclarations for SgOmpNotinbranchClause
103095 
103096 /* #line 103097 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
103097 
103098 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
103099 
103100 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
103101 
103102 
103103 /* #line 103104 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
103104 
103105 
103106 
103107 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
103108 
103109 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
103110 // This code is automatically generated for each
103111 // terminal and non-terminal within the defined
103112 // grammar. There is a simple way to change the
103113 // code to fix bugs etc. See the ROSE README file
103114 // for directions.
103115 
103116 // tps: (02/22/2010): Adding DLL export requirements
103117 #include "rosedll.h"
103118 
103119 // predeclarations for SgOmpDefaultmapClause
103120 
103121 /* #line 103122 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
103122 
103123 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
103124 
103125 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
103126 
103127 #if 1
103128 // Class Definition for SgOmpDefaultmapClause
103129 class ROSE_DLL_API SgOmpDefaultmapClause : public SgOmpClause
103130  {
103131  public:
103132 
103133 
103134 /* #line 103135 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
103135 
103136  virtual SgNode* copy ( SgCopyHelp& help) const override;
103137 // Start of memberFunctionString
103138 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
103139 
103140 // *** COMMON CODE SECTION BEGINS HERE ***
103141 
103142  public:
103143 
103144  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
103145  // and not required which is required to match the other aspects of the copy mechanism code generation.
103146  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
103147  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
103148  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
103149  // virtual SgNode* copy ( const SgCopyHelp & help) const;
103150 
103152  virtual std::string class_name() const override;
103153 
103155  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
103156 
103158  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
103159  // static const VariantT static_variant = V_SgOmpDefaultmapClause;
103160  enum { static_variant = V_SgOmpDefaultmapClause };
103161 
103162  /* the generated cast function */
103164  ROSE_DLL_API friend SgOmpDefaultmapClause* isSgOmpDefaultmapClause( SgNode * s );
103165 
103167  ROSE_DLL_API friend const SgOmpDefaultmapClause* isSgOmpDefaultmapClause( const SgNode * s );
103168 
103169  // ******************************************
103170  // * Memory Pool / New / Delete
103171  // ******************************************
103172 
103173  public:
103175  static const unsigned pool_size; //
103177  static std::vector<unsigned char *> pools; //
103179  static SgOmpDefaultmapClause * next_node; //
103180 
103182  static unsigned long initializeStorageClassArray(SgOmpDefaultmapClauseStorageClass *); //
103183 
103185  static void clearMemoryPool(); //
103186  static void deleteMemoryPool(); //
103187 
103189  static void extendMemoryPoolForFileIO(); //
103190 
103192  static SgOmpDefaultmapClause * getPointerFromGlobalIndex(unsigned long); //
103194  static SgOmpDefaultmapClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
103195 
103197  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
103199  static void resetValidFreepointers(); //
103201  static unsigned long getNumberOfLastValidPointer(); //
103202 
103203 
103204 #if defined(INLINE_FUNCTIONS)
103205 
103206  inline void *operator new (size_t size);
103207 #else
103208 
103209  void *operator new (size_t size);
103210 #endif
103211 
103212  void operator delete (void* pointer, size_t size);
103213 
103214  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
103215  void operator delete (void* pointer)
103216  {
103217  // This is the generated delete operator...
103218  SgOmpDefaultmapClause::operator delete (pointer,sizeof(SgOmpDefaultmapClause));
103219  }
103220 
103222  static size_t numberOfNodes();
103223 
103225  static size_t memoryUsage();
103226 
103227  // End of scope which started in IR nodes specific code
103228  /* */
103229 
103230  /* name Internal Functions
103231  \brief Internal functions ... incomplete-documentation
103232 
103233  These functions have been made public as part of the design, but they are suggested for internal use
103234  or by particularly knowledgeable users for specialized tools or applications.
103235 
103236  \internal We could not make these private because they are required by user for special purposes. And
103237  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
103238 
103239  */
103240 
103241  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
103242  // overridden in every class by *generated* implementation
103244  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
103245  // MS: 06/28/02 container of names of variables or container indices
103246  // used used in the traversal to access AST successor nodes
103247  // overridden in every class by *generated* implementation
103250  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
103251 
103252  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
103253  // than all the vector copies. The implementation for these functions is generated for each class.
103255  virtual size_t get_numberOfTraversalSuccessors() override;
103257  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
103259  virtual size_t get_childIndex(SgNode *child) override;
103260 
103261 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
103262  // MS: 08/16/2002 method for generating RTI information
103264  virtual RTIReturnType roseRTI() override;
103265 #endif
103266  /* */
103267 
103268 
103269 
103270  /* name Deprecated Functions
103271  \brief Deprecated functions ... incomplete-documentation
103272 
103273  These functions have been deprecated from use.
103274  */
103275  /* */
103276 
103278  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
103279 
103280  // JJW (10/16/2008): Changed to a single function in Node.code, and put
103281  // getVariant() in #if 0 block to prevent confusing Doxygen
103282 #if 0
103283 
103284  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
103286  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
103287 #endif
103288  /* */
103289 
103290 
103291 
103292 
103293  public:
103294  /* name Traversal Support Functions
103295  \brief Traversal support functions ... incomplete-documentation
103296 
103297  These functions have been made public as part of the design, but they are suggested for internal use
103298  or by particularly knowledgable users for specialized tools or applications.
103299  */
103300  /* */
103301 
103302  // DQ (11/26/2005): Support for visitor pattern mechanims
103303  // (inferior to ROSE traversal mechanism, experimental).
103307 
103308  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
103310  virtual void accept (ROSE_VisitorPattern & visitor) override;
103311 
103312  // DQ (12/26/2005): Support for traversal based on the memory pool
103315  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
103316 
103319  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
103320 
103321  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
103322  // This traversal helps support internal tools that call static member functions.
103323  // note: this function operates on the memory pools.
103326  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
103327  /* */
103328 
103329 
103330  public:
103331  /* name Memory Allocation Functions
103332  \brief Memory allocations functions ... incomplete-documentation
103333 
103334  These functions have been made public as part of the design, but they are suggested for internal use
103335  or by particularly knowledgable users for specialized tools or applications.
103336  */
103337  /* */
103338 
103349  virtual bool isInMemoryPool() override;
103350 
103361  virtual void checkDataMemberPointersIfInMemoryPool() override;
103362 
103363  // DQ (4/30/2006): Modified to be a const function.
103378  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
103379 
103389  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
103390 
103402  virtual long getChildIndex( SgNode* childNode ) const override;
103403 
103404  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
103405  // comment here (changed to be a C style comment and not be a doxygen comment).
103406  /* \brief Constructor for use by AST File I/O Mechanism
103407 
103408  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
103409  which obtained via fast binary file I/O from disk.
103410  */
103411  // SgOmpDefaultmapClause( SgOmpDefaultmapClauseStorageClass& source );
103412 
103413 
103414 
103415 
103416 
103417  // JH (10/24/2005): methods added to support the ast file IO
103418  private:
103419 
103420  /* name AST Memory Allocation Support Functions
103421  \brief Memory allocations support....
103422 
103423  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
103424  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
103425  and support the AST File I/O Mechanism.
103426  */
103427  /* */
103428 
103429  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
103430  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
103431  that I use the same type everywhere, if any changes are made. THe second one declares the type
103432  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
103433  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
103434  a correspinding one in the AST_FILE_IO class!
103435  */
103436  // DQ (9/2/2015): This typedef is no longer used, we can't define the
103437  // comment here (changed to be a C style comment and not be a doxygen comment).
103438  /* \brief Typedef used for low level memory access.
103439  */
103440  // typedef unsigned char* TestType;
103441 
103442  // DQ (9/2/2015): This typedef is no longer used, we can't define the
103443  // comment here (changed to be a C style comment and not be a doxygen comment).
103444  /* \brief Typedef used to hold memory addresses as values.
103445  */
103446  // typedef unsigned long AddressType;
103447 
103448 
103449 
103450  // necessary, to have direct access to the p_freepointer and the private methods !
103452  friend class AST_FILE_IO;
103453 
103455  friend class SgOmpDefaultmapClauseStorageClass;
103456 
103458  friend class AstSpecificDataManagingClass;
103459 
103461  friend class AstSpecificDataManagingClassStorageClass;
103462 
103463  public:
103465  SgOmpDefaultmapClause( const SgOmpDefaultmapClauseStorageClass& source );
103466 
103467  // private: // JJW hack
103468  /*
103469  name AST Memory Allocation Support Variables
103470  Memory allocations support variables
103471 
103472  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
103473  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
103474  and support the AST File I/O Mechanism.
103475  */
103476  /* */
103477 
103478  public:
103479 
103480  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
103481  // to current node (so that it will work cleanly with build functions to specify patterns).
103482  // virtual SgNode* addRegExpAttribute();
103489 
103490 // *** COMMON CODE SECTION ENDS HERE ***
103491 
103492 
103493 // End of memberFunctionString
103494 // Start of memberFunctionString
103495 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
103496 
103497  // the generated cast function
103498  // friend ROSE_DLL_API SgOmpDefaultmapClause* isSgOmpDefaultmapClause ( SgNode* s );
103499 
103500  typedef SgOmpClause base_node_type;
103501 
103502 
103503 // End of memberFunctionString
103504 
103505  public:
103506  SgOmpClause::omp_defaultmap_behavior_enum get_behavior() const;
103507  void set_behavior(SgOmpClause::omp_defaultmap_behavior_enum behavior);
103508 
103509  public:
103510  SgOmpClause::omp_defaultmap_category_enum get_category() const;
103511  void set_category(SgOmpClause::omp_defaultmap_category_enum category);
103512 
103513 
103514  public:
103515  virtual ~SgOmpDefaultmapClause();
103516 
103517 
103518  public:
103519  SgOmpDefaultmapClause(Sg_File_Info* startOfConstruct , SgOmpClause::omp_defaultmap_behavior_enum behavior =e_omp_defaultmap_behavior_unspecified, SgOmpClause::omp_defaultmap_category_enum category =e_omp_defaultmap_category_unspecified);
103520  SgOmpDefaultmapClause(SgOmpClause::omp_defaultmap_behavior_enum behavior, SgOmpClause::omp_defaultmap_category_enum category);
103521 
103522  protected:
103523 // Start of memberFunctionString
103524 SgOmpClause::omp_defaultmap_behavior_enum p_behavior;
103525 
103526 // End of memberFunctionString
103527 // Start of memberFunctionString
103528 SgOmpClause::omp_defaultmap_category_enum p_category;
103529 
103530 // End of memberFunctionString
103531 
103532 
103533 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
103534 
103535 
103536  };
103537 #endif
103538 
103539 // postdeclarations for SgOmpDefaultmapClause
103540 
103541 /* #line 103542 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
103542 
103543 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
103544 
103545 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
103546 
103547 
103548 /* #line 103549 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
103549 
103550 
103551 
103552 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
103553 
103554 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
103555 // This code is automatically generated for each
103556 // terminal and non-terminal within the defined
103557 // grammar. There is a simple way to change the
103558 // code to fix bugs etc. See the ROSE README file
103559 // for directions.
103560 
103561 // tps: (02/22/2010): Adding DLL export requirements
103562 #include "rosedll.h"
103563 
103564 // predeclarations for SgOmpAtomicDefaultMemOrderClause
103565 
103566 /* #line 103567 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
103567 
103568 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
103569 
103570 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
103571 
103572 #if 1
103573 // Class Definition for SgOmpAtomicDefaultMemOrderClause
103575  {
103576  public:
103577 
103578 
103579 /* #line 103580 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
103580 
103581  virtual SgNode* copy ( SgCopyHelp& help) const override;
103582 // Start of memberFunctionString
103583 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
103584 
103585 // *** COMMON CODE SECTION BEGINS HERE ***
103586 
103587  public:
103588 
103589  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
103590  // and not required which is required to match the other aspects of the copy mechanism code generation.
103591  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
103592  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
103593  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
103594  // virtual SgNode* copy ( const SgCopyHelp & help) const;
103595 
103597  virtual std::string class_name() const override;
103598 
103600  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
103601 
103603  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
103604  // static const VariantT static_variant = V_SgOmpAtomicDefaultMemOrderClause;
103605  enum { static_variant = V_SgOmpAtomicDefaultMemOrderClause };
103606 
103607  /* the generated cast function */
103609  ROSE_DLL_API friend SgOmpAtomicDefaultMemOrderClause* isSgOmpAtomicDefaultMemOrderClause( SgNode * s );
103610 
103612  ROSE_DLL_API friend const SgOmpAtomicDefaultMemOrderClause* isSgOmpAtomicDefaultMemOrderClause( const SgNode * s );
103613 
103614  // ******************************************
103615  // * Memory Pool / New / Delete
103616  // ******************************************
103617 
103618  public:
103620  static const unsigned pool_size; //
103622  static std::vector<unsigned char *> pools; //
103624  static SgOmpAtomicDefaultMemOrderClause * next_node; //
103625 
103627  static unsigned long initializeStorageClassArray(SgOmpAtomicDefaultMemOrderClauseStorageClass *); //
103628 
103630  static void clearMemoryPool(); //
103631  static void deleteMemoryPool(); //
103632 
103634  static void extendMemoryPoolForFileIO(); //
103635 
103637  static SgOmpAtomicDefaultMemOrderClause * getPointerFromGlobalIndex(unsigned long); //
103639  static SgOmpAtomicDefaultMemOrderClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
103640 
103642  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
103644  static void resetValidFreepointers(); //
103646  static unsigned long getNumberOfLastValidPointer(); //
103647 
103648 
103649 #if defined(INLINE_FUNCTIONS)
103650 
103651  inline void *operator new (size_t size);
103652 #else
103653 
103654  void *operator new (size_t size);
103655 #endif
103656 
103657  void operator delete (void* pointer, size_t size);
103658 
103659  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
103660  void operator delete (void* pointer)
103661  {
103662  // This is the generated delete operator...
103663  SgOmpAtomicDefaultMemOrderClause::operator delete (pointer,sizeof(SgOmpAtomicDefaultMemOrderClause));
103664  }
103665 
103667  static size_t numberOfNodes();
103668 
103670  static size_t memoryUsage();
103671 
103672  // End of scope which started in IR nodes specific code
103673  /* */
103674 
103675  /* name Internal Functions
103676  \brief Internal functions ... incomplete-documentation
103677 
103678  These functions have been made public as part of the design, but they are suggested for internal use
103679  or by particularly knowledgeable users for specialized tools or applications.
103680 
103681  \internal We could not make these private because they are required by user for special purposes. And
103682  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
103683 
103684  */
103685 
103686  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
103687  // overridden in every class by *generated* implementation
103689  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
103690  // MS: 06/28/02 container of names of variables or container indices
103691  // used used in the traversal to access AST successor nodes
103692  // overridden in every class by *generated* implementation
103695  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
103696 
103697  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
103698  // than all the vector copies. The implementation for these functions is generated for each class.
103700  virtual size_t get_numberOfTraversalSuccessors() override;
103702  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
103704  virtual size_t get_childIndex(SgNode *child) override;
103705 
103706 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
103707  // MS: 08/16/2002 method for generating RTI information
103709  virtual RTIReturnType roseRTI() override;
103710 #endif
103711  /* */
103712 
103713 
103714 
103715  /* name Deprecated Functions
103716  \brief Deprecated functions ... incomplete-documentation
103717 
103718  These functions have been deprecated from use.
103719  */
103720  /* */
103721 
103723  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
103724 
103725  // JJW (10/16/2008): Changed to a single function in Node.code, and put
103726  // getVariant() in #if 0 block to prevent confusing Doxygen
103727 #if 0
103728 
103729  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
103731  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
103732 #endif
103733  /* */
103734 
103735 
103736 
103737 
103738  public:
103739  /* name Traversal Support Functions
103740  \brief Traversal support functions ... incomplete-documentation
103741 
103742  These functions have been made public as part of the design, but they are suggested for internal use
103743  or by particularly knowledgable users for specialized tools or applications.
103744  */
103745  /* */
103746 
103747  // DQ (11/26/2005): Support for visitor pattern mechanims
103748  // (inferior to ROSE traversal mechanism, experimental).
103752 
103753  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
103755  virtual void accept (ROSE_VisitorPattern & visitor) override;
103756 
103757  // DQ (12/26/2005): Support for traversal based on the memory pool
103760  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
103761 
103764  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
103765 
103766  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
103767  // This traversal helps support internal tools that call static member functions.
103768  // note: this function operates on the memory pools.
103771  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
103772  /* */
103773 
103774 
103775  public:
103776  /* name Memory Allocation Functions
103777  \brief Memory allocations functions ... incomplete-documentation
103778 
103779  These functions have been made public as part of the design, but they are suggested for internal use
103780  or by particularly knowledgable users for specialized tools or applications.
103781  */
103782  /* */
103783 
103794  virtual bool isInMemoryPool() override;
103795 
103806  virtual void checkDataMemberPointersIfInMemoryPool() override;
103807 
103808  // DQ (4/30/2006): Modified to be a const function.
103823  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
103824 
103834  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
103835 
103847  virtual long getChildIndex( SgNode* childNode ) const override;
103848 
103849  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
103850  // comment here (changed to be a C style comment and not be a doxygen comment).
103851  /* \brief Constructor for use by AST File I/O Mechanism
103852 
103853  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
103854  which obtained via fast binary file I/O from disk.
103855  */
103856  // SgOmpAtomicDefaultMemOrderClause( SgOmpAtomicDefaultMemOrderClauseStorageClass& source );
103857 
103858 
103859 
103860 
103861 
103862  // JH (10/24/2005): methods added to support the ast file IO
103863  private:
103864 
103865  /* name AST Memory Allocation Support Functions
103866  \brief Memory allocations support....
103867 
103868  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
103869  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
103870  and support the AST File I/O Mechanism.
103871  */
103872  /* */
103873 
103874  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
103875  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
103876  that I use the same type everywhere, if any changes are made. THe second one declares the type
103877  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
103878  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
103879  a correspinding one in the AST_FILE_IO class!
103880  */
103881  // DQ (9/2/2015): This typedef is no longer used, we can't define the
103882  // comment here (changed to be a C style comment and not be a doxygen comment).
103883  /* \brief Typedef used for low level memory access.
103884  */
103885  // typedef unsigned char* TestType;
103886 
103887  // DQ (9/2/2015): This typedef is no longer used, we can't define the
103888  // comment here (changed to be a C style comment and not be a doxygen comment).
103889  /* \brief Typedef used to hold memory addresses as values.
103890  */
103891  // typedef unsigned long AddressType;
103892 
103893 
103894 
103895  // necessary, to have direct access to the p_freepointer and the private methods !
103897  friend class AST_FILE_IO;
103898 
103900  friend class SgOmpAtomicDefaultMemOrderClauseStorageClass;
103901 
103903  friend class AstSpecificDataManagingClass;
103904 
103906  friend class AstSpecificDataManagingClassStorageClass;
103907 
103908  public:
103910  SgOmpAtomicDefaultMemOrderClause( const SgOmpAtomicDefaultMemOrderClauseStorageClass& source );
103911 
103912  // private: // JJW hack
103913  /*
103914  name AST Memory Allocation Support Variables
103915  Memory allocations support variables
103916 
103917  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
103918  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
103919  and support the AST File I/O Mechanism.
103920  */
103921  /* */
103922 
103923  public:
103924 
103925  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
103926  // to current node (so that it will work cleanly with build functions to specify patterns).
103927  // virtual SgNode* addRegExpAttribute();
103934 
103935 // *** COMMON CODE SECTION ENDS HERE ***
103936 
103937 
103938 // End of memberFunctionString
103939 // Start of memberFunctionString
103940 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
103941 
103942  // the generated cast function
103943  // friend ROSE_DLL_API SgOmpAtomicDefaultMemOrderClause* isSgOmpAtomicDefaultMemOrderClause ( SgNode* s );
103944 
103945  typedef SgOmpClause base_node_type;
103946 
103947 
103948 // End of memberFunctionString
103949 
103950  public:
103951  SgOmpClause::omp_atomic_default_mem_order_kind_enum get_kind() const;
103952  void set_kind(SgOmpClause::omp_atomic_default_mem_order_kind_enum kind);
103953 
103954 
103955  public:
103957 
103958 
103959  public:
103960  SgOmpAtomicDefaultMemOrderClause(Sg_File_Info* startOfConstruct , SgOmpClause::omp_atomic_default_mem_order_kind_enum kind =e_omp_atomic_default_mem_order_kind_unspecified);
103961  SgOmpAtomicDefaultMemOrderClause(SgOmpClause::omp_atomic_default_mem_order_kind_enum kind);
103962 
103963  protected:
103964 // Start of memberFunctionString
103965 SgOmpClause::omp_atomic_default_mem_order_kind_enum p_kind;
103966 
103967 // End of memberFunctionString
103968 
103969 
103970 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
103971 
103972 
103973  };
103974 #endif
103975 
103976 // postdeclarations for SgOmpAtomicDefaultMemOrderClause
103977 
103978 /* #line 103979 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
103979 
103980 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
103981 
103982 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
103983 
103984 
103985 /* #line 103986 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
103986 
103987 
103988 
103989 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
103990 
103991 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
103992 // This code is automatically generated for each
103993 // terminal and non-terminal within the defined
103994 // grammar. There is a simple way to change the
103995 // code to fix bugs etc. See the ROSE README file
103996 // for directions.
103997 
103998 // tps: (02/22/2010): Adding DLL export requirements
103999 #include "rosedll.h"
104000 
104001 // predeclarations for SgOmpExtImplementationDefinedRequirementClause
104002 
104003 /* #line 104004 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
104004 
104005 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
104006 
104007 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
104008 
104009 #if 1
104010 // Class Definition for SgOmpExtImplementationDefinedRequirementClause
104012  {
104013  public:
104014 
104015 
104016 /* #line 104017 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
104017 
104018  virtual SgNode* copy ( SgCopyHelp& help) const override;
104019 // Start of memberFunctionString
104020 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
104021 
104022 // *** COMMON CODE SECTION BEGINS HERE ***
104023 
104024  public:
104025 
104026  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
104027  // and not required which is required to match the other aspects of the copy mechanism code generation.
104028  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
104029  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
104030  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
104031  // virtual SgNode* copy ( const SgCopyHelp & help) const;
104032 
104034  virtual std::string class_name() const override;
104035 
104037  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
104038 
104040  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
104041  // static const VariantT static_variant = V_SgOmpExtImplementationDefinedRequirementClause;
104042  enum { static_variant = V_SgOmpExtImplementationDefinedRequirementClause };
104043 
104044  /* the generated cast function */
104046  ROSE_DLL_API friend SgOmpExtImplementationDefinedRequirementClause* isSgOmpExtImplementationDefinedRequirementClause( SgNode * s );
104047 
104049  ROSE_DLL_API friend const SgOmpExtImplementationDefinedRequirementClause* isSgOmpExtImplementationDefinedRequirementClause( const SgNode * s );
104050 
104051  // ******************************************
104052  // * Memory Pool / New / Delete
104053  // ******************************************
104054 
104055  public:
104057  static const unsigned pool_size; //
104059  static std::vector<unsigned char *> pools; //
104061  static SgOmpExtImplementationDefinedRequirementClause * next_node; //
104062 
104064  static unsigned long initializeStorageClassArray(SgOmpExtImplementationDefinedRequirementClauseStorageClass *); //
104065 
104067  static void clearMemoryPool(); //
104068  static void deleteMemoryPool(); //
104069 
104071  static void extendMemoryPoolForFileIO(); //
104072 
104074  static SgOmpExtImplementationDefinedRequirementClause * getPointerFromGlobalIndex(unsigned long); //
104076  static SgOmpExtImplementationDefinedRequirementClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
104077 
104079  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
104081  static void resetValidFreepointers(); //
104083  static unsigned long getNumberOfLastValidPointer(); //
104084 
104085 
104086 #if defined(INLINE_FUNCTIONS)
104087 
104088  inline void *operator new (size_t size);
104089 #else
104090 
104091  void *operator new (size_t size);
104092 #endif
104093 
104094  void operator delete (void* pointer, size_t size);
104095 
104096  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
104097  void operator delete (void* pointer)
104098  {
104099  // This is the generated delete operator...
104100  SgOmpExtImplementationDefinedRequirementClause::operator delete (pointer,sizeof(SgOmpExtImplementationDefinedRequirementClause));
104101  }
104102 
104104  static size_t numberOfNodes();
104105 
104107  static size_t memoryUsage();
104108 
104109  // End of scope which started in IR nodes specific code
104110  /* */
104111 
104112  /* name Internal Functions
104113  \brief Internal functions ... incomplete-documentation
104114 
104115  These functions have been made public as part of the design, but they are suggested for internal use
104116  or by particularly knowledgeable users for specialized tools or applications.
104117 
104118  \internal We could not make these private because they are required by user for special purposes. And
104119  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
104120 
104121  */
104122 
104123  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
104124  // overridden in every class by *generated* implementation
104126  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
104127  // MS: 06/28/02 container of names of variables or container indices
104128  // used used in the traversal to access AST successor nodes
104129  // overridden in every class by *generated* implementation
104132  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
104133 
104134  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
104135  // than all the vector copies. The implementation for these functions is generated for each class.
104137  virtual size_t get_numberOfTraversalSuccessors() override;
104139  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
104141  virtual size_t get_childIndex(SgNode *child) override;
104142 
104143 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
104144  // MS: 08/16/2002 method for generating RTI information
104146  virtual RTIReturnType roseRTI() override;
104147 #endif
104148  /* */
104149 
104150 
104151 
104152  /* name Deprecated Functions
104153  \brief Deprecated functions ... incomplete-documentation
104154 
104155  These functions have been deprecated from use.
104156  */
104157  /* */
104158 
104160  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
104161 
104162  // JJW (10/16/2008): Changed to a single function in Node.code, and put
104163  // getVariant() in #if 0 block to prevent confusing Doxygen
104164 #if 0
104165 
104166  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
104168  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
104169 #endif
104170  /* */
104171 
104172 
104173 
104174 
104175  public:
104176  /* name Traversal Support Functions
104177  \brief Traversal support functions ... incomplete-documentation
104178 
104179  These functions have been made public as part of the design, but they are suggested for internal use
104180  or by particularly knowledgable users for specialized tools or applications.
104181  */
104182  /* */
104183 
104184  // DQ (11/26/2005): Support for visitor pattern mechanims
104185  // (inferior to ROSE traversal mechanism, experimental).
104189 
104190  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
104192  virtual void accept (ROSE_VisitorPattern & visitor) override;
104193 
104194  // DQ (12/26/2005): Support for traversal based on the memory pool
104197  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
104198 
104201  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
104202 
104203  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
104204  // This traversal helps support internal tools that call static member functions.
104205  // note: this function operates on the memory pools.
104208  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
104209  /* */
104210 
104211 
104212  public:
104213  /* name Memory Allocation Functions
104214  \brief Memory allocations functions ... incomplete-documentation
104215 
104216  These functions have been made public as part of the design, but they are suggested for internal use
104217  or by particularly knowledgable users for specialized tools or applications.
104218  */
104219  /* */
104220 
104231  virtual bool isInMemoryPool() override;
104232 
104243  virtual void checkDataMemberPointersIfInMemoryPool() override;
104244 
104245  // DQ (4/30/2006): Modified to be a const function.
104260  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
104261 
104271  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
104272 
104284  virtual long getChildIndex( SgNode* childNode ) const override;
104285 
104286  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
104287  // comment here (changed to be a C style comment and not be a doxygen comment).
104288  /* \brief Constructor for use by AST File I/O Mechanism
104289 
104290  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
104291  which obtained via fast binary file I/O from disk.
104292  */
104293  // SgOmpExtImplementationDefinedRequirementClause( SgOmpExtImplementationDefinedRequirementClauseStorageClass& source );
104294 
104295 
104296 
104297 
104298 
104299  // JH (10/24/2005): methods added to support the ast file IO
104300  private:
104301 
104302  /* name AST Memory Allocation Support Functions
104303  \brief Memory allocations support....
104304 
104305  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
104306  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
104307  and support the AST File I/O Mechanism.
104308  */
104309  /* */
104310 
104311  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
104312  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
104313  that I use the same type everywhere, if any changes are made. THe second one declares the type
104314  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
104315  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
104316  a correspinding one in the AST_FILE_IO class!
104317  */
104318  // DQ (9/2/2015): This typedef is no longer used, we can't define the
104319  // comment here (changed to be a C style comment and not be a doxygen comment).
104320  /* \brief Typedef used for low level memory access.
104321  */
104322  // typedef unsigned char* TestType;
104323 
104324  // DQ (9/2/2015): This typedef is no longer used, we can't define the
104325  // comment here (changed to be a C style comment and not be a doxygen comment).
104326  /* \brief Typedef used to hold memory addresses as values.
104327  */
104328  // typedef unsigned long AddressType;
104329 
104330 
104331 
104332  // necessary, to have direct access to the p_freepointer and the private methods !
104334  friend class AST_FILE_IO;
104335 
104337  friend class SgOmpExtImplementationDefinedRequirementClauseStorageClass;
104338 
104340  friend class AstSpecificDataManagingClass;
104341 
104343  friend class AstSpecificDataManagingClassStorageClass;
104344 
104345  public:
104347  SgOmpExtImplementationDefinedRequirementClause( const SgOmpExtImplementationDefinedRequirementClauseStorageClass& source );
104348 
104349  // private: // JJW hack
104350  /*
104351  name AST Memory Allocation Support Variables
104352  Memory allocations support variables
104353 
104354  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
104355  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
104356  and support the AST File I/O Mechanism.
104357  */
104358  /* */
104359 
104360  public:
104361 
104362  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
104363  // to current node (so that it will work cleanly with build functions to specify patterns).
104364  // virtual SgNode* addRegExpAttribute();
104371 
104372 // *** COMMON CODE SECTION ENDS HERE ***
104373 
104374 
104375 // End of memberFunctionString
104376 // Start of memberFunctionString
104377 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
104378 
104379  // the generated cast function
104380  // friend ROSE_DLL_API SgOmpExtImplementationDefinedRequirementClause* isSgOmpExtImplementationDefinedRequirementClause ( SgNode* s );
104381 
104382  typedef SgOmpClause base_node_type;
104383 
104384 
104385 // End of memberFunctionString
104386 
104387  public:
104388  SgExpression* get_implementation_defined_requirement() const;
104389  void set_implementation_defined_requirement(SgExpression* implementation_defined_requirement);
104390 
104391 
104392  public:
104394 
104395 
104396  public:
104397  SgOmpExtImplementationDefinedRequirementClause(Sg_File_Info* startOfConstruct , SgExpression* implementation_defined_requirement = NULL);
104398  SgOmpExtImplementationDefinedRequirementClause(SgExpression* implementation_defined_requirement);
104399 
104400  protected:
104401 // Start of memberFunctionString
104402 SgExpression* p_implementation_defined_requirement;
104403 
104404 // End of memberFunctionString
104405 
104406 
104407 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
104408 
104409 
104410  };
104411 #endif
104412 
104413 // postdeclarations for SgOmpExtImplementationDefinedRequirementClause
104414 
104415 /* #line 104416 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
104416 
104417 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
104418 
104419 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
104420 
104421 
104422 /* #line 104423 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
104423 
104424 
104425 
104426 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
104427 
104428 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
104429 // This code is automatically generated for each
104430 // terminal and non-terminal within the defined
104431 // grammar. There is a simple way to change the
104432 // code to fix bugs etc. See the ROSE README file
104433 // for directions.
104434 
104435 // tps: (02/22/2010): Adding DLL export requirements
104436 #include "rosedll.h"
104437 
104438 // predeclarations for SgOmpUsesAllocatorsDefination
104439 
104440 /* #line 104441 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
104441 
104442 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
104443 
104444 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
104445 
104446 #if 1
104447 // Class Definition for SgOmpUsesAllocatorsDefination
104448 class ROSE_DLL_API SgOmpUsesAllocatorsDefination : public SgOmpClause
104449  {
104450  public:
104451 
104452 
104453 /* #line 104454 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
104454 
104455  virtual SgNode* copy ( SgCopyHelp& help) const override;
104456 // Start of memberFunctionString
104457 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
104458 
104459 // *** COMMON CODE SECTION BEGINS HERE ***
104460 
104461  public:
104462 
104463  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
104464  // and not required which is required to match the other aspects of the copy mechanism code generation.
104465  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
104466  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
104467  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
104468  // virtual SgNode* copy ( const SgCopyHelp & help) const;
104469 
104471  virtual std::string class_name() const override;
104472 
104474  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
104475 
104477  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
104478  // static const VariantT static_variant = V_SgOmpUsesAllocatorsDefination;
104479  enum { static_variant = V_SgOmpUsesAllocatorsDefination };
104480 
104481  /* the generated cast function */
104483  ROSE_DLL_API friend SgOmpUsesAllocatorsDefination* isSgOmpUsesAllocatorsDefination( SgNode * s );
104484 
104486  ROSE_DLL_API friend const SgOmpUsesAllocatorsDefination* isSgOmpUsesAllocatorsDefination( const SgNode * s );
104487 
104488  // ******************************************
104489  // * Memory Pool / New / Delete
104490  // ******************************************
104491 
104492  public:
104494  static const unsigned pool_size; //
104496  static std::vector<unsigned char *> pools; //
104498  static SgOmpUsesAllocatorsDefination * next_node; //
104499 
104501  static unsigned long initializeStorageClassArray(SgOmpUsesAllocatorsDefinationStorageClass *); //
104502 
104504  static void clearMemoryPool(); //
104505  static void deleteMemoryPool(); //
104506 
104508  static void extendMemoryPoolForFileIO(); //
104509 
104511  static SgOmpUsesAllocatorsDefination * getPointerFromGlobalIndex(unsigned long); //
104513  static SgOmpUsesAllocatorsDefination * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
104514 
104516  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
104518  static void resetValidFreepointers(); //
104520  static unsigned long getNumberOfLastValidPointer(); //
104521 
104522 
104523 #if defined(INLINE_FUNCTIONS)
104524 
104525  inline void *operator new (size_t size);
104526 #else
104527 
104528  void *operator new (size_t size);
104529 #endif
104530 
104531  void operator delete (void* pointer, size_t size);
104532 
104533  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
104534  void operator delete (void* pointer)
104535  {
104536  // This is the generated delete operator...
104537  SgOmpUsesAllocatorsDefination::operator delete (pointer,sizeof(SgOmpUsesAllocatorsDefination));
104538  }
104539 
104541  static size_t numberOfNodes();
104542 
104544  static size_t memoryUsage();
104545 
104546  // End of scope which started in IR nodes specific code
104547  /* */
104548 
104549  /* name Internal Functions
104550  \brief Internal functions ... incomplete-documentation
104551 
104552  These functions have been made public as part of the design, but they are suggested for internal use
104553  or by particularly knowledgeable users for specialized tools or applications.
104554 
104555  \internal We could not make these private because they are required by user for special purposes. And
104556  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
104557 
104558  */
104559 
104560  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
104561  // overridden in every class by *generated* implementation
104563  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
104564  // MS: 06/28/02 container of names of variables or container indices
104565  // used used in the traversal to access AST successor nodes
104566  // overridden in every class by *generated* implementation
104569  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
104570 
104571  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
104572  // than all the vector copies. The implementation for these functions is generated for each class.
104574  virtual size_t get_numberOfTraversalSuccessors() override;
104576  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
104578  virtual size_t get_childIndex(SgNode *child) override;
104579 
104580 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
104581  // MS: 08/16/2002 method for generating RTI information
104583  virtual RTIReturnType roseRTI() override;
104584 #endif
104585  /* */
104586 
104587 
104588 
104589  /* name Deprecated Functions
104590  \brief Deprecated functions ... incomplete-documentation
104591 
104592  These functions have been deprecated from use.
104593  */
104594  /* */
104595 
104597  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
104598 
104599  // JJW (10/16/2008): Changed to a single function in Node.code, and put
104600  // getVariant() in #if 0 block to prevent confusing Doxygen
104601 #if 0
104602 
104603  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
104605  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
104606 #endif
104607  /* */
104608 
104609 
104610 
104611 
104612  public:
104613  /* name Traversal Support Functions
104614  \brief Traversal support functions ... incomplete-documentation
104615 
104616  These functions have been made public as part of the design, but they are suggested for internal use
104617  or by particularly knowledgable users for specialized tools or applications.
104618  */
104619  /* */
104620 
104621  // DQ (11/26/2005): Support for visitor pattern mechanims
104622  // (inferior to ROSE traversal mechanism, experimental).
104626 
104627  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
104629  virtual void accept (ROSE_VisitorPattern & visitor) override;
104630 
104631  // DQ (12/26/2005): Support for traversal based on the memory pool
104634  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
104635 
104638  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
104639 
104640  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
104641  // This traversal helps support internal tools that call static member functions.
104642  // note: this function operates on the memory pools.
104645  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
104646  /* */
104647 
104648 
104649  public:
104650  /* name Memory Allocation Functions
104651  \brief Memory allocations functions ... incomplete-documentation
104652 
104653  These functions have been made public as part of the design, but they are suggested for internal use
104654  or by particularly knowledgable users for specialized tools or applications.
104655  */
104656  /* */
104657 
104668  virtual bool isInMemoryPool() override;
104669 
104680  virtual void checkDataMemberPointersIfInMemoryPool() override;
104681 
104682  // DQ (4/30/2006): Modified to be a const function.
104697  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
104698 
104708  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
104709 
104721  virtual long getChildIndex( SgNode* childNode ) const override;
104722 
104723  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
104724  // comment here (changed to be a C style comment and not be a doxygen comment).
104725  /* \brief Constructor for use by AST File I/O Mechanism
104726 
104727  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
104728  which obtained via fast binary file I/O from disk.
104729  */
104730  // SgOmpUsesAllocatorsDefination( SgOmpUsesAllocatorsDefinationStorageClass& source );
104731 
104732 
104733 
104734 
104735 
104736  // JH (10/24/2005): methods added to support the ast file IO
104737  private:
104738 
104739  /* name AST Memory Allocation Support Functions
104740  \brief Memory allocations support....
104741 
104742  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
104743  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
104744  and support the AST File I/O Mechanism.
104745  */
104746  /* */
104747 
104748  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
104749  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
104750  that I use the same type everywhere, if any changes are made. THe second one declares the type
104751  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
104752  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
104753  a correspinding one in the AST_FILE_IO class!
104754  */
104755  // DQ (9/2/2015): This typedef is no longer used, we can't define the
104756  // comment here (changed to be a C style comment and not be a doxygen comment).
104757  /* \brief Typedef used for low level memory access.
104758  */
104759  // typedef unsigned char* TestType;
104760 
104761  // DQ (9/2/2015): This typedef is no longer used, we can't define the
104762  // comment here (changed to be a C style comment and not be a doxygen comment).
104763  /* \brief Typedef used to hold memory addresses as values.
104764  */
104765  // typedef unsigned long AddressType;
104766 
104767 
104768 
104769  // necessary, to have direct access to the p_freepointer and the private methods !
104771  friend class AST_FILE_IO;
104772 
104774  friend class SgOmpUsesAllocatorsDefinationStorageClass;
104775 
104777  friend class AstSpecificDataManagingClass;
104778 
104780  friend class AstSpecificDataManagingClassStorageClass;
104781 
104782  public:
104784  SgOmpUsesAllocatorsDefination( const SgOmpUsesAllocatorsDefinationStorageClass& source );
104785 
104786  // private: // JJW hack
104787  /*
104788  name AST Memory Allocation Support Variables
104789  Memory allocations support variables
104790 
104791  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
104792  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
104793  and support the AST File I/O Mechanism.
104794  */
104795  /* */
104796 
104797  public:
104798 
104799  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
104800  // to current node (so that it will work cleanly with build functions to specify patterns).
104801  // virtual SgNode* addRegExpAttribute();
104808 
104809 // *** COMMON CODE SECTION ENDS HERE ***
104810 
104811 
104812 // End of memberFunctionString
104813 // Start of memberFunctionString
104814 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
104815 
104816  // the generated cast function
104817  // friend ROSE_DLL_API SgOmpUsesAllocatorsDefination* isSgOmpUsesAllocatorsDefination ( SgNode* s );
104818 
104819  typedef SgOmpClause base_node_type;
104820 
104821 
104822 // End of memberFunctionString
104823 
104824  public:
104825  SgOmpClause::omp_uses_allocators_allocator_enum get_allocator() const;
104826  void set_allocator(SgOmpClause::omp_uses_allocators_allocator_enum allocator);
104827 
104828  public:
104829  SgExpression* get_user_defined_allocator() const;
104830  void set_user_defined_allocator(SgExpression* user_defined_allocator);
104831 
104832  public:
104833  SgExpression* get_allocator_traits_array() const;
104834  void set_allocator_traits_array(SgExpression* allocator_traits_array);
104835 
104836 
104837  public:
104838  virtual ~SgOmpUsesAllocatorsDefination();
104839 
104840 
104841  public:
104842  SgOmpUsesAllocatorsDefination(Sg_File_Info* startOfConstruct );
104844 
104845  protected:
104846 // Start of memberFunctionString
104847 SgOmpClause::omp_uses_allocators_allocator_enum p_allocator;
104848 
104849 // End of memberFunctionString
104850 // Start of memberFunctionString
104851 SgExpression* p_user_defined_allocator;
104852 
104853 // End of memberFunctionString
104854 // Start of memberFunctionString
104855 SgExpression* p_allocator_traits_array;
104856 
104857 // End of memberFunctionString
104858 
104859 
104860 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
104861 
104862 
104863  };
104864 #endif
104865 
104866 // postdeclarations for SgOmpUsesAllocatorsDefination
104867 
104868 /* #line 104869 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
104869 
104870 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
104871 
104872 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
104873 
104874 
104875 /* #line 104876 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
104876 
104877 
104878 
104879 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
104880 
104881 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
104882 // This code is automatically generated for each
104883 // terminal and non-terminal within the defined
104884 // grammar. There is a simple way to change the
104885 // code to fix bugs etc. See the ROSE README file
104886 // for directions.
104887 
104888 // tps: (02/22/2010): Adding DLL export requirements
104889 #include "rosedll.h"
104890 
104891 // predeclarations for SgOmpVariablesClause
104892 
104893 /* #line 104894 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
104894 
104895 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
104896 
104897 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
104898 
104899 #if 1
104900 // Class Definition for SgOmpVariablesClause
104901 class ROSE_DLL_API SgOmpVariablesClause : public SgOmpClause
104902  {
104903  public:
104904 
104905 
104906 /* #line 104907 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
104907 
104908  virtual SgNode* copy ( SgCopyHelp& help) const override;
104909 // Start of memberFunctionString
104910 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
104911 
104912 // *** COMMON CODE SECTION BEGINS HERE ***
104913 
104914  public:
104915 
104916  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
104917  // and not required which is required to match the other aspects of the copy mechanism code generation.
104918  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
104919  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
104920  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
104921  // virtual SgNode* copy ( const SgCopyHelp & help) const;
104922 
104924  virtual std::string class_name() const override;
104925 
104927  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
104928 
104930  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
104931  // static const VariantT static_variant = V_SgOmpVariablesClause;
104932  enum { static_variant = V_SgOmpVariablesClause };
104933 
104934  /* the generated cast function */
104936  ROSE_DLL_API friend SgOmpVariablesClause* isSgOmpVariablesClause( SgNode * s );
104937 
104939  ROSE_DLL_API friend const SgOmpVariablesClause* isSgOmpVariablesClause( const SgNode * s );
104940 
104941  // ******************************************
104942  // * Memory Pool / New / Delete
104943  // ******************************************
104944 
104945  public:
104947  static const unsigned pool_size; //
104949  static std::vector<unsigned char *> pools; //
104951  static SgOmpVariablesClause * next_node; //
104952 
104954  static unsigned long initializeStorageClassArray(SgOmpVariablesClauseStorageClass *); //
104955 
104957  static void clearMemoryPool(); //
104958  static void deleteMemoryPool(); //
104959 
104961  static void extendMemoryPoolForFileIO(); //
104962 
104964  static SgOmpVariablesClause * getPointerFromGlobalIndex(unsigned long); //
104966  static SgOmpVariablesClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
104967 
104969  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
104971  static void resetValidFreepointers(); //
104973  static unsigned long getNumberOfLastValidPointer(); //
104974 
104975 
104976 #if defined(INLINE_FUNCTIONS)
104977 
104978  inline void *operator new (size_t size);
104979 #else
104980 
104981  void *operator new (size_t size);
104982 #endif
104983 
104984  void operator delete (void* pointer, size_t size);
104985 
104986  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
104987  void operator delete (void* pointer)
104988  {
104989  // This is the generated delete operator...
104990  SgOmpVariablesClause::operator delete (pointer,sizeof(SgOmpVariablesClause));
104991  }
104992 
104994  static size_t numberOfNodes();
104995 
104997  static size_t memoryUsage();
104998 
104999  // End of scope which started in IR nodes specific code
105000  /* */
105001 
105002  /* name Internal Functions
105003  \brief Internal functions ... incomplete-documentation
105004 
105005  These functions have been made public as part of the design, but they are suggested for internal use
105006  or by particularly knowledgeable users for specialized tools or applications.
105007 
105008  \internal We could not make these private because they are required by user for special purposes. And
105009  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
105010 
105011  */
105012 
105013  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
105014  // overridden in every class by *generated* implementation
105016  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
105017  // MS: 06/28/02 container of names of variables or container indices
105018  // used used in the traversal to access AST successor nodes
105019  // overridden in every class by *generated* implementation
105022  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
105023 
105024  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
105025  // than all the vector copies. The implementation for these functions is generated for each class.
105027  virtual size_t get_numberOfTraversalSuccessors() override;
105029  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
105031  virtual size_t get_childIndex(SgNode *child) override;
105032 
105033 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
105034  // MS: 08/16/2002 method for generating RTI information
105036  virtual RTIReturnType roseRTI() override;
105037 #endif
105038  /* */
105039 
105040 
105041 
105042  /* name Deprecated Functions
105043  \brief Deprecated functions ... incomplete-documentation
105044 
105045  These functions have been deprecated from use.
105046  */
105047  /* */
105048 
105050  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
105051 
105052  // JJW (10/16/2008): Changed to a single function in Node.code, and put
105053  // getVariant() in #if 0 block to prevent confusing Doxygen
105054 #if 0
105055 
105056  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
105058  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
105059 #endif
105060  /* */
105061 
105062 
105063 
105064 
105065  public:
105066  /* name Traversal Support Functions
105067  \brief Traversal support functions ... incomplete-documentation
105068 
105069  These functions have been made public as part of the design, but they are suggested for internal use
105070  or by particularly knowledgable users for specialized tools or applications.
105071  */
105072  /* */
105073 
105074  // DQ (11/26/2005): Support for visitor pattern mechanims
105075  // (inferior to ROSE traversal mechanism, experimental).
105079 
105080  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
105082  virtual void accept (ROSE_VisitorPattern & visitor) override;
105083 
105084  // DQ (12/26/2005): Support for traversal based on the memory pool
105087  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
105088 
105091  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
105092 
105093  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
105094  // This traversal helps support internal tools that call static member functions.
105095  // note: this function operates on the memory pools.
105098  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
105099  /* */
105100 
105101 
105102  public:
105103  /* name Memory Allocation Functions
105104  \brief Memory allocations functions ... incomplete-documentation
105105 
105106  These functions have been made public as part of the design, but they are suggested for internal use
105107  or by particularly knowledgable users for specialized tools or applications.
105108  */
105109  /* */
105110 
105121  virtual bool isInMemoryPool() override;
105122 
105133  virtual void checkDataMemberPointersIfInMemoryPool() override;
105134 
105135  // DQ (4/30/2006): Modified to be a const function.
105150  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
105151 
105161  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
105162 
105174  virtual long getChildIndex( SgNode* childNode ) const override;
105175 
105176  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
105177  // comment here (changed to be a C style comment and not be a doxygen comment).
105178  /* \brief Constructor for use by AST File I/O Mechanism
105179 
105180  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
105181  which obtained via fast binary file I/O from disk.
105182  */
105183  // SgOmpVariablesClause( SgOmpVariablesClauseStorageClass& source );
105184 
105185 
105186 
105187 
105188 
105189  // JH (10/24/2005): methods added to support the ast file IO
105190  private:
105191 
105192  /* name AST Memory Allocation Support Functions
105193  \brief Memory allocations support....
105194 
105195  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
105196  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
105197  and support the AST File I/O Mechanism.
105198  */
105199  /* */
105200 
105201  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
105202  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
105203  that I use the same type everywhere, if any changes are made. THe second one declares the type
105204  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
105205  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
105206  a correspinding one in the AST_FILE_IO class!
105207  */
105208  // DQ (9/2/2015): This typedef is no longer used, we can't define the
105209  // comment here (changed to be a C style comment and not be a doxygen comment).
105210  /* \brief Typedef used for low level memory access.
105211  */
105212  // typedef unsigned char* TestType;
105213 
105214  // DQ (9/2/2015): This typedef is no longer used, we can't define the
105215  // comment here (changed to be a C style comment and not be a doxygen comment).
105216  /* \brief Typedef used to hold memory addresses as values.
105217  */
105218  // typedef unsigned long AddressType;
105219 
105220 
105221 
105222  // necessary, to have direct access to the p_freepointer and the private methods !
105224  friend class AST_FILE_IO;
105225 
105227  friend class SgOmpVariablesClauseStorageClass;
105228 
105230  friend class AstSpecificDataManagingClass;
105231 
105233  friend class AstSpecificDataManagingClassStorageClass;
105234 
105235  public:
105237  SgOmpVariablesClause( const SgOmpVariablesClauseStorageClass& source );
105238 
105239  // private: // JJW hack
105240  /*
105241  name AST Memory Allocation Support Variables
105242  Memory allocations support variables
105243 
105244  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
105245  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
105246  and support the AST File I/O Mechanism.
105247  */
105248  /* */
105249 
105250  public:
105251 
105252  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
105253  // to current node (so that it will work cleanly with build functions to specify patterns).
105254  // virtual SgNode* addRegExpAttribute();
105261 
105262 // *** COMMON CODE SECTION ENDS HERE ***
105263 
105264 
105265 // End of memberFunctionString
105266 // Start of memberFunctionString
105267 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
105268 
105269  // the generated cast function
105270  // friend ROSE_DLL_API SgOmpVariablesClause* isSgOmpVariablesClause ( SgNode* s );
105271 
105272  typedef SgOmpClause base_node_type;
105273 
105274 
105275 // End of memberFunctionString
105276 
105277  public:
105278  SgExprListExp* get_variables() const;
105279  void set_variables(SgExprListExp* variables);
105280 
105281 
105282  public:
105283  virtual ~SgOmpVariablesClause();
105284 
105285 
105286  public:
105287  SgOmpVariablesClause(Sg_File_Info* startOfConstruct , SgExprListExp* variables = NULL);
105288  SgOmpVariablesClause(SgExprListExp* variables);
105289 
105290  protected:
105291 // Start of memberFunctionString
105292 SgExprListExp* p_variables;
105293 
105294 // End of memberFunctionString
105295 
105296 
105297 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
105298 
105299 
105300  };
105301 #endif
105302 
105303 // postdeclarations for SgOmpVariablesClause
105304 
105305 /* #line 105306 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
105306 
105307 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
105308 
105309 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
105310 
105311 
105312 /* #line 105313 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
105313 
105314 
105315 
105316 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
105317 
105318 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
105319 // This code is automatically generated for each
105320 // terminal and non-terminal within the defined
105321 // grammar. There is a simple way to change the
105322 // code to fix bugs etc. See the ROSE README file
105323 // for directions.
105324 
105325 // tps: (02/22/2010): Adding DLL export requirements
105326 #include "rosedll.h"
105327 
105328 // predeclarations for SgOmpCopyprivateClause
105329 
105330 /* #line 105331 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
105331 
105332 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
105333 
105334 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
105335 
105336 #if 1
105337 // Class Definition for SgOmpCopyprivateClause
105339  {
105340  public:
105341 
105342 
105343 /* #line 105344 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
105344 
105345  virtual SgNode* copy ( SgCopyHelp& help) const override;
105346 // Start of memberFunctionString
105347 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
105348 
105349 // *** COMMON CODE SECTION BEGINS HERE ***
105350 
105351  public:
105352 
105353  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
105354  // and not required which is required to match the other aspects of the copy mechanism code generation.
105355  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
105356  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
105357  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
105358  // virtual SgNode* copy ( const SgCopyHelp & help) const;
105359 
105361  virtual std::string class_name() const override;
105362 
105364  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
105365 
105367  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
105368  // static const VariantT static_variant = V_SgOmpCopyprivateClause;
105369  enum { static_variant = V_SgOmpCopyprivateClause };
105370 
105371  /* the generated cast function */
105373  ROSE_DLL_API friend SgOmpCopyprivateClause* isSgOmpCopyprivateClause( SgNode * s );
105374 
105376  ROSE_DLL_API friend const SgOmpCopyprivateClause* isSgOmpCopyprivateClause( const SgNode * s );
105377 
105378  // ******************************************
105379  // * Memory Pool / New / Delete
105380  // ******************************************
105381 
105382  public:
105384  static const unsigned pool_size; //
105386  static std::vector<unsigned char *> pools; //
105388  static SgOmpCopyprivateClause * next_node; //
105389 
105391  static unsigned long initializeStorageClassArray(SgOmpCopyprivateClauseStorageClass *); //
105392 
105394  static void clearMemoryPool(); //
105395  static void deleteMemoryPool(); //
105396 
105398  static void extendMemoryPoolForFileIO(); //
105399 
105401  static SgOmpCopyprivateClause * getPointerFromGlobalIndex(unsigned long); //
105403  static SgOmpCopyprivateClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
105404 
105406  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
105408  static void resetValidFreepointers(); //
105410  static unsigned long getNumberOfLastValidPointer(); //
105411 
105412 
105413 #if defined(INLINE_FUNCTIONS)
105414 
105415  inline void *operator new (size_t size);
105416 #else
105417 
105418  void *operator new (size_t size);
105419 #endif
105420 
105421  void operator delete (void* pointer, size_t size);
105422 
105423  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
105424  void operator delete (void* pointer)
105425  {
105426  // This is the generated delete operator...
105427  SgOmpCopyprivateClause::operator delete (pointer,sizeof(SgOmpCopyprivateClause));
105428  }
105429 
105431  static size_t numberOfNodes();
105432 
105434  static size_t memoryUsage();
105435 
105436  // End of scope which started in IR nodes specific code
105437  /* */
105438 
105439  /* name Internal Functions
105440  \brief Internal functions ... incomplete-documentation
105441 
105442  These functions have been made public as part of the design, but they are suggested for internal use
105443  or by particularly knowledgeable users for specialized tools or applications.
105444 
105445  \internal We could not make these private because they are required by user for special purposes. And
105446  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
105447 
105448  */
105449 
105450  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
105451  // overridden in every class by *generated* implementation
105453  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
105454  // MS: 06/28/02 container of names of variables or container indices
105455  // used used in the traversal to access AST successor nodes
105456  // overridden in every class by *generated* implementation
105459  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
105460 
105461  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
105462  // than all the vector copies. The implementation for these functions is generated for each class.
105464  virtual size_t get_numberOfTraversalSuccessors() override;
105466  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
105468  virtual size_t get_childIndex(SgNode *child) override;
105469 
105470 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
105471  // MS: 08/16/2002 method for generating RTI information
105473  virtual RTIReturnType roseRTI() override;
105474 #endif
105475  /* */
105476 
105477 
105478 
105479  /* name Deprecated Functions
105480  \brief Deprecated functions ... incomplete-documentation
105481 
105482  These functions have been deprecated from use.
105483  */
105484  /* */
105485 
105487  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
105488 
105489  // JJW (10/16/2008): Changed to a single function in Node.code, and put
105490  // getVariant() in #if 0 block to prevent confusing Doxygen
105491 #if 0
105492 
105493  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
105495  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
105496 #endif
105497  /* */
105498 
105499 
105500 
105501 
105502  public:
105503  /* name Traversal Support Functions
105504  \brief Traversal support functions ... incomplete-documentation
105505 
105506  These functions have been made public as part of the design, but they are suggested for internal use
105507  or by particularly knowledgable users for specialized tools or applications.
105508  */
105509  /* */
105510 
105511  // DQ (11/26/2005): Support for visitor pattern mechanims
105512  // (inferior to ROSE traversal mechanism, experimental).
105516 
105517  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
105519  virtual void accept (ROSE_VisitorPattern & visitor) override;
105520 
105521  // DQ (12/26/2005): Support for traversal based on the memory pool
105524  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
105525 
105528  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
105529 
105530  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
105531  // This traversal helps support internal tools that call static member functions.
105532  // note: this function operates on the memory pools.
105535  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
105536  /* */
105537 
105538 
105539  public:
105540  /* name Memory Allocation Functions
105541  \brief Memory allocations functions ... incomplete-documentation
105542 
105543  These functions have been made public as part of the design, but they are suggested for internal use
105544  or by particularly knowledgable users for specialized tools or applications.
105545  */
105546  /* */
105547 
105558  virtual bool isInMemoryPool() override;
105559 
105570  virtual void checkDataMemberPointersIfInMemoryPool() override;
105571 
105572  // DQ (4/30/2006): Modified to be a const function.
105587  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
105588 
105598  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
105599 
105611  virtual long getChildIndex( SgNode* childNode ) const override;
105612 
105613  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
105614  // comment here (changed to be a C style comment and not be a doxygen comment).
105615  /* \brief Constructor for use by AST File I/O Mechanism
105616 
105617  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
105618  which obtained via fast binary file I/O from disk.
105619  */
105620  // SgOmpCopyprivateClause( SgOmpCopyprivateClauseStorageClass& source );
105621 
105622 
105623 
105624 
105625 
105626  // JH (10/24/2005): methods added to support the ast file IO
105627  private:
105628 
105629  /* name AST Memory Allocation Support Functions
105630  \brief Memory allocations support....
105631 
105632  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
105633  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
105634  and support the AST File I/O Mechanism.
105635  */
105636  /* */
105637 
105638  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
105639  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
105640  that I use the same type everywhere, if any changes are made. THe second one declares the type
105641  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
105642  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
105643  a correspinding one in the AST_FILE_IO class!
105644  */
105645  // DQ (9/2/2015): This typedef is no longer used, we can't define the
105646  // comment here (changed to be a C style comment and not be a doxygen comment).
105647  /* \brief Typedef used for low level memory access.
105648  */
105649  // typedef unsigned char* TestType;
105650 
105651  // DQ (9/2/2015): This typedef is no longer used, we can't define the
105652  // comment here (changed to be a C style comment and not be a doxygen comment).
105653  /* \brief Typedef used to hold memory addresses as values.
105654  */
105655  // typedef unsigned long AddressType;
105656 
105657 
105658 
105659  // necessary, to have direct access to the p_freepointer and the private methods !
105661  friend class AST_FILE_IO;
105662 
105664  friend class SgOmpCopyprivateClauseStorageClass;
105665 
105667  friend class AstSpecificDataManagingClass;
105668 
105670  friend class AstSpecificDataManagingClassStorageClass;
105671 
105672  public:
105674  SgOmpCopyprivateClause( const SgOmpCopyprivateClauseStorageClass& source );
105675 
105676  // private: // JJW hack
105677  /*
105678  name AST Memory Allocation Support Variables
105679  Memory allocations support variables
105680 
105681  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
105682  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
105683  and support the AST File I/O Mechanism.
105684  */
105685  /* */
105686 
105687  public:
105688 
105689  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
105690  // to current node (so that it will work cleanly with build functions to specify patterns).
105691  // virtual SgNode* addRegExpAttribute();
105698 
105699 // *** COMMON CODE SECTION ENDS HERE ***
105700 
105701 
105702 // End of memberFunctionString
105703 // Start of memberFunctionString
105704 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
105705 
105706  // the generated cast function
105707  // friend ROSE_DLL_API SgOmpCopyprivateClause* isSgOmpCopyprivateClause ( SgNode* s );
105708 
105710 
105711 
105712 // End of memberFunctionString
105713 
105714 
105715  public:
105716  virtual ~SgOmpCopyprivateClause();
105717 
105718 
105719  public:
105720  SgOmpCopyprivateClause(Sg_File_Info* startOfConstruct , SgExprListExp* variables = NULL);
105721  SgOmpCopyprivateClause(SgExprListExp* variables);
105722 
105723  protected:
105724 
105725 
105726 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
105727 
105728 
105729  };
105730 #endif
105731 
105732 // postdeclarations for SgOmpCopyprivateClause
105733 
105734 /* #line 105735 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
105735 
105736 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
105737 
105738 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
105739 
105740 
105741 /* #line 105742 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
105742 
105743 
105744 
105745 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
105746 
105747 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
105748 // This code is automatically generated for each
105749 // terminal and non-terminal within the defined
105750 // grammar. There is a simple way to change the
105751 // code to fix bugs etc. See the ROSE README file
105752 // for directions.
105753 
105754 // tps: (02/22/2010): Adding DLL export requirements
105755 #include "rosedll.h"
105756 
105757 // predeclarations for SgOmpPrivateClause
105758 
105759 /* #line 105760 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
105760 
105761 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
105762 
105763 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
105764 
105765 #if 1
105766 // Class Definition for SgOmpPrivateClause
105767 class ROSE_DLL_API SgOmpPrivateClause : public SgOmpVariablesClause
105768  {
105769  public:
105770 
105771 
105772 /* #line 105773 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
105773 
105774  virtual SgNode* copy ( SgCopyHelp& help) const override;
105775 // Start of memberFunctionString
105776 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
105777 
105778 // *** COMMON CODE SECTION BEGINS HERE ***
105779 
105780  public:
105781 
105782  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
105783  // and not required which is required to match the other aspects of the copy mechanism code generation.
105784  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
105785  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
105786  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
105787  // virtual SgNode* copy ( const SgCopyHelp & help) const;
105788 
105790  virtual std::string class_name() const override;
105791 
105793  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
105794 
105796  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
105797  // static const VariantT static_variant = V_SgOmpPrivateClause;
105798  enum { static_variant = V_SgOmpPrivateClause };
105799 
105800  /* the generated cast function */
105802  ROSE_DLL_API friend SgOmpPrivateClause* isSgOmpPrivateClause( SgNode * s );
105803 
105805  ROSE_DLL_API friend const SgOmpPrivateClause* isSgOmpPrivateClause( const SgNode * s );
105806 
105807  // ******************************************
105808  // * Memory Pool / New / Delete
105809  // ******************************************
105810 
105811  public:
105813  static const unsigned pool_size; //
105815  static std::vector<unsigned char *> pools; //
105817  static SgOmpPrivateClause * next_node; //
105818 
105820  static unsigned long initializeStorageClassArray(SgOmpPrivateClauseStorageClass *); //
105821 
105823  static void clearMemoryPool(); //
105824  static void deleteMemoryPool(); //
105825 
105827  static void extendMemoryPoolForFileIO(); //
105828 
105830  static SgOmpPrivateClause * getPointerFromGlobalIndex(unsigned long); //
105832  static SgOmpPrivateClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
105833 
105835  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
105837  static void resetValidFreepointers(); //
105839  static unsigned long getNumberOfLastValidPointer(); //
105840 
105841 
105842 #if defined(INLINE_FUNCTIONS)
105843 
105844  inline void *operator new (size_t size);
105845 #else
105846 
105847  void *operator new (size_t size);
105848 #endif
105849 
105850  void operator delete (void* pointer, size_t size);
105851 
105852  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
105853  void operator delete (void* pointer)
105854  {
105855  // This is the generated delete operator...
105856  SgOmpPrivateClause::operator delete (pointer,sizeof(SgOmpPrivateClause));
105857  }
105858 
105860  static size_t numberOfNodes();
105861 
105863  static size_t memoryUsage();
105864 
105865  // End of scope which started in IR nodes specific code
105866  /* */
105867 
105868  /* name Internal Functions
105869  \brief Internal functions ... incomplete-documentation
105870 
105871  These functions have been made public as part of the design, but they are suggested for internal use
105872  or by particularly knowledgeable users for specialized tools or applications.
105873 
105874  \internal We could not make these private because they are required by user for special purposes. And
105875  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
105876 
105877  */
105878 
105879  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
105880  // overridden in every class by *generated* implementation
105882  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
105883  // MS: 06/28/02 container of names of variables or container indices
105884  // used used in the traversal to access AST successor nodes
105885  // overridden in every class by *generated* implementation
105888  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
105889 
105890  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
105891  // than all the vector copies. The implementation for these functions is generated for each class.
105893  virtual size_t get_numberOfTraversalSuccessors() override;
105895  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
105897  virtual size_t get_childIndex(SgNode *child) override;
105898 
105899 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
105900  // MS: 08/16/2002 method for generating RTI information
105902  virtual RTIReturnType roseRTI() override;
105903 #endif
105904  /* */
105905 
105906 
105907 
105908  /* name Deprecated Functions
105909  \brief Deprecated functions ... incomplete-documentation
105910 
105911  These functions have been deprecated from use.
105912  */
105913  /* */
105914 
105916  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
105917 
105918  // JJW (10/16/2008): Changed to a single function in Node.code, and put
105919  // getVariant() in #if 0 block to prevent confusing Doxygen
105920 #if 0
105921 
105922  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
105924  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
105925 #endif
105926  /* */
105927 
105928 
105929 
105930 
105931  public:
105932  /* name Traversal Support Functions
105933  \brief Traversal support functions ... incomplete-documentation
105934 
105935  These functions have been made public as part of the design, but they are suggested for internal use
105936  or by particularly knowledgable users for specialized tools or applications.
105937  */
105938  /* */
105939 
105940  // DQ (11/26/2005): Support for visitor pattern mechanims
105941  // (inferior to ROSE traversal mechanism, experimental).
105945 
105946  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
105948  virtual void accept (ROSE_VisitorPattern & visitor) override;
105949 
105950  // DQ (12/26/2005): Support for traversal based on the memory pool
105953  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
105954 
105957  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
105958 
105959  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
105960  // This traversal helps support internal tools that call static member functions.
105961  // note: this function operates on the memory pools.
105964  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
105965  /* */
105966 
105967 
105968  public:
105969  /* name Memory Allocation Functions
105970  \brief Memory allocations functions ... incomplete-documentation
105971 
105972  These functions have been made public as part of the design, but they are suggested for internal use
105973  or by particularly knowledgable users for specialized tools or applications.
105974  */
105975  /* */
105976 
105987  virtual bool isInMemoryPool() override;
105988 
105999  virtual void checkDataMemberPointersIfInMemoryPool() override;
106000 
106001  // DQ (4/30/2006): Modified to be a const function.
106016  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
106017 
106027  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
106028 
106040  virtual long getChildIndex( SgNode* childNode ) const override;
106041 
106042  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
106043  // comment here (changed to be a C style comment and not be a doxygen comment).
106044  /* \brief Constructor for use by AST File I/O Mechanism
106045 
106046  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
106047  which obtained via fast binary file I/O from disk.
106048  */
106049  // SgOmpPrivateClause( SgOmpPrivateClauseStorageClass& source );
106050 
106051 
106052 
106053 
106054 
106055  // JH (10/24/2005): methods added to support the ast file IO
106056  private:
106057 
106058  /* name AST Memory Allocation Support Functions
106059  \brief Memory allocations support....
106060 
106061  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
106062  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
106063  and support the AST File I/O Mechanism.
106064  */
106065  /* */
106066 
106067  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
106068  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
106069  that I use the same type everywhere, if any changes are made. THe second one declares the type
106070  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
106071  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
106072  a correspinding one in the AST_FILE_IO class!
106073  */
106074  // DQ (9/2/2015): This typedef is no longer used, we can't define the
106075  // comment here (changed to be a C style comment and not be a doxygen comment).
106076  /* \brief Typedef used for low level memory access.
106077  */
106078  // typedef unsigned char* TestType;
106079 
106080  // DQ (9/2/2015): This typedef is no longer used, we can't define the
106081  // comment here (changed to be a C style comment and not be a doxygen comment).
106082  /* \brief Typedef used to hold memory addresses as values.
106083  */
106084  // typedef unsigned long AddressType;
106085 
106086 
106087 
106088  // necessary, to have direct access to the p_freepointer and the private methods !
106090  friend class AST_FILE_IO;
106091 
106093  friend class SgOmpPrivateClauseStorageClass;
106094 
106096  friend class AstSpecificDataManagingClass;
106097 
106099  friend class AstSpecificDataManagingClassStorageClass;
106100 
106101  public:
106103  SgOmpPrivateClause( const SgOmpPrivateClauseStorageClass& source );
106104 
106105  // private: // JJW hack
106106  /*
106107  name AST Memory Allocation Support Variables
106108  Memory allocations support variables
106109 
106110  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
106111  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
106112  and support the AST File I/O Mechanism.
106113  */
106114  /* */
106115 
106116  public:
106117 
106118  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
106119  // to current node (so that it will work cleanly with build functions to specify patterns).
106120  // virtual SgNode* addRegExpAttribute();
106127 
106128 // *** COMMON CODE SECTION ENDS HERE ***
106129 
106130 
106131 // End of memberFunctionString
106132 // Start of memberFunctionString
106133 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
106134 
106135  // the generated cast function
106136  // friend ROSE_DLL_API SgOmpPrivateClause* isSgOmpPrivateClause ( SgNode* s );
106137 
106139 
106140 
106141 // End of memberFunctionString
106142 
106143 
106144  public:
106145  virtual ~SgOmpPrivateClause();
106146 
106147 
106148  public:
106149  SgOmpPrivateClause(Sg_File_Info* startOfConstruct , SgExprListExp* variables = NULL);
106150  SgOmpPrivateClause(SgExprListExp* variables);
106151 
106152  protected:
106153 
106154 
106155 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
106156 
106157 
106158  };
106159 #endif
106160 
106161 // postdeclarations for SgOmpPrivateClause
106162 
106163 /* #line 106164 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
106164 
106165 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
106166 
106167 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
106168 
106169 
106170 /* #line 106171 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
106171 
106172 
106173 
106174 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
106175 
106176 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
106177 // This code is automatically generated for each
106178 // terminal and non-terminal within the defined
106179 // grammar. There is a simple way to change the
106180 // code to fix bugs etc. See the ROSE README file
106181 // for directions.
106182 
106183 // tps: (02/22/2010): Adding DLL export requirements
106184 #include "rosedll.h"
106185 
106186 // predeclarations for SgOmpFirstprivateClause
106187 
106188 /* #line 106189 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
106189 
106190 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
106191 
106192 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
106193 
106194 #if 1
106195 // Class Definition for SgOmpFirstprivateClause
106197  {
106198  public:
106199 
106200 
106201 /* #line 106202 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
106202 
106203  virtual SgNode* copy ( SgCopyHelp& help) const override;
106204 // Start of memberFunctionString
106205 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
106206 
106207 // *** COMMON CODE SECTION BEGINS HERE ***
106208 
106209  public:
106210 
106211  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
106212  // and not required which is required to match the other aspects of the copy mechanism code generation.
106213  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
106214  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
106215  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
106216  // virtual SgNode* copy ( const SgCopyHelp & help) const;
106217 
106219  virtual std::string class_name() const override;
106220 
106222  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
106223 
106225  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
106226  // static const VariantT static_variant = V_SgOmpFirstprivateClause;
106227  enum { static_variant = V_SgOmpFirstprivateClause };
106228 
106229  /* the generated cast function */
106231  ROSE_DLL_API friend SgOmpFirstprivateClause* isSgOmpFirstprivateClause( SgNode * s );
106232 
106234  ROSE_DLL_API friend const SgOmpFirstprivateClause* isSgOmpFirstprivateClause( const SgNode * s );
106235 
106236  // ******************************************
106237  // * Memory Pool / New / Delete
106238  // ******************************************
106239 
106240  public:
106242  static const unsigned pool_size; //
106244  static std::vector<unsigned char *> pools; //
106246  static SgOmpFirstprivateClause * next_node; //
106247 
106249  static unsigned long initializeStorageClassArray(SgOmpFirstprivateClauseStorageClass *); //
106250 
106252  static void clearMemoryPool(); //
106253  static void deleteMemoryPool(); //
106254 
106256  static void extendMemoryPoolForFileIO(); //
106257 
106259  static SgOmpFirstprivateClause * getPointerFromGlobalIndex(unsigned long); //
106261  static SgOmpFirstprivateClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
106262 
106264  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
106266  static void resetValidFreepointers(); //
106268  static unsigned long getNumberOfLastValidPointer(); //
106269 
106270 
106271 #if defined(INLINE_FUNCTIONS)
106272 
106273  inline void *operator new (size_t size);
106274 #else
106275 
106276  void *operator new (size_t size);
106277 #endif
106278 
106279  void operator delete (void* pointer, size_t size);
106280 
106281  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
106282  void operator delete (void* pointer)
106283  {
106284  // This is the generated delete operator...
106285  SgOmpFirstprivateClause::operator delete (pointer,sizeof(SgOmpFirstprivateClause));
106286  }
106287 
106289  static size_t numberOfNodes();
106290 
106292  static size_t memoryUsage();
106293 
106294  // End of scope which started in IR nodes specific code
106295  /* */
106296 
106297  /* name Internal Functions
106298  \brief Internal functions ... incomplete-documentation
106299 
106300  These functions have been made public as part of the design, but they are suggested for internal use
106301  or by particularly knowledgeable users for specialized tools or applications.
106302 
106303  \internal We could not make these private because they are required by user for special purposes. And
106304  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
106305 
106306  */
106307 
106308  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
106309  // overridden in every class by *generated* implementation
106311  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
106312  // MS: 06/28/02 container of names of variables or container indices
106313  // used used in the traversal to access AST successor nodes
106314  // overridden in every class by *generated* implementation
106317  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
106318 
106319  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
106320  // than all the vector copies. The implementation for these functions is generated for each class.
106322  virtual size_t get_numberOfTraversalSuccessors() override;
106324  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
106326  virtual size_t get_childIndex(SgNode *child) override;
106327 
106328 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
106329  // MS: 08/16/2002 method for generating RTI information
106331  virtual RTIReturnType roseRTI() override;
106332 #endif
106333  /* */
106334 
106335 
106336 
106337  /* name Deprecated Functions
106338  \brief Deprecated functions ... incomplete-documentation
106339 
106340  These functions have been deprecated from use.
106341  */
106342  /* */
106343 
106345  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
106346 
106347  // JJW (10/16/2008): Changed to a single function in Node.code, and put
106348  // getVariant() in #if 0 block to prevent confusing Doxygen
106349 #if 0
106350 
106351  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
106353  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
106354 #endif
106355  /* */
106356 
106357 
106358 
106359 
106360  public:
106361  /* name Traversal Support Functions
106362  \brief Traversal support functions ... incomplete-documentation
106363 
106364  These functions have been made public as part of the design, but they are suggested for internal use
106365  or by particularly knowledgable users for specialized tools or applications.
106366  */
106367  /* */
106368 
106369  // DQ (11/26/2005): Support for visitor pattern mechanims
106370  // (inferior to ROSE traversal mechanism, experimental).
106374 
106375  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
106377  virtual void accept (ROSE_VisitorPattern & visitor) override;
106378 
106379  // DQ (12/26/2005): Support for traversal based on the memory pool
106382  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
106383 
106386  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
106387 
106388  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
106389  // This traversal helps support internal tools that call static member functions.
106390  // note: this function operates on the memory pools.
106393  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
106394  /* */
106395 
106396 
106397  public:
106398  /* name Memory Allocation Functions
106399  \brief Memory allocations functions ... incomplete-documentation
106400 
106401  These functions have been made public as part of the design, but they are suggested for internal use
106402  or by particularly knowledgable users for specialized tools or applications.
106403  */
106404  /* */
106405 
106416  virtual bool isInMemoryPool() override;
106417 
106428  virtual void checkDataMemberPointersIfInMemoryPool() override;
106429 
106430  // DQ (4/30/2006): Modified to be a const function.
106445  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
106446 
106456  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
106457 
106469  virtual long getChildIndex( SgNode* childNode ) const override;
106470 
106471  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
106472  // comment here (changed to be a C style comment and not be a doxygen comment).
106473  /* \brief Constructor for use by AST File I/O Mechanism
106474 
106475  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
106476  which obtained via fast binary file I/O from disk.
106477  */
106478  // SgOmpFirstprivateClause( SgOmpFirstprivateClauseStorageClass& source );
106479 
106480 
106481 
106482 
106483 
106484  // JH (10/24/2005): methods added to support the ast file IO
106485  private:
106486 
106487  /* name AST Memory Allocation Support Functions
106488  \brief Memory allocations support....
106489 
106490  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
106491  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
106492  and support the AST File I/O Mechanism.
106493  */
106494  /* */
106495 
106496  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
106497  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
106498  that I use the same type everywhere, if any changes are made. THe second one declares the type
106499  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
106500  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
106501  a correspinding one in the AST_FILE_IO class!
106502  */
106503  // DQ (9/2/2015): This typedef is no longer used, we can't define the
106504  // comment here (changed to be a C style comment and not be a doxygen comment).
106505  /* \brief Typedef used for low level memory access.
106506  */
106507  // typedef unsigned char* TestType;
106508 
106509  // DQ (9/2/2015): This typedef is no longer used, we can't define the
106510  // comment here (changed to be a C style comment and not be a doxygen comment).
106511  /* \brief Typedef used to hold memory addresses as values.
106512  */
106513  // typedef unsigned long AddressType;
106514 
106515 
106516 
106517  // necessary, to have direct access to the p_freepointer and the private methods !
106519  friend class AST_FILE_IO;
106520 
106522  friend class SgOmpFirstprivateClauseStorageClass;
106523 
106525  friend class AstSpecificDataManagingClass;
106526 
106528  friend class AstSpecificDataManagingClassStorageClass;
106529 
106530  public:
106532  SgOmpFirstprivateClause( const SgOmpFirstprivateClauseStorageClass& source );
106533 
106534  // private: // JJW hack
106535  /*
106536  name AST Memory Allocation Support Variables
106537  Memory allocations support variables
106538 
106539  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
106540  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
106541  and support the AST File I/O Mechanism.
106542  */
106543  /* */
106544 
106545  public:
106546 
106547  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
106548  // to current node (so that it will work cleanly with build functions to specify patterns).
106549  // virtual SgNode* addRegExpAttribute();
106556 
106557 // *** COMMON CODE SECTION ENDS HERE ***
106558 
106559 
106560 // End of memberFunctionString
106561 // Start of memberFunctionString
106562 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
106563 
106564  // the generated cast function
106565  // friend ROSE_DLL_API SgOmpFirstprivateClause* isSgOmpFirstprivateClause ( SgNode* s );
106566 
106568 
106569 
106570 // End of memberFunctionString
106571 
106572 
106573  public:
106574  virtual ~SgOmpFirstprivateClause();
106575 
106576 
106577  public:
106578  SgOmpFirstprivateClause(Sg_File_Info* startOfConstruct , SgExprListExp* variables = NULL);
106579  SgOmpFirstprivateClause(SgExprListExp* variables);
106580 
106581  protected:
106582 
106583 
106584 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
106585 
106586 
106587  };
106588 #endif
106589 
106590 // postdeclarations for SgOmpFirstprivateClause
106591 
106592 /* #line 106593 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
106593 
106594 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
106595 
106596 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
106597 
106598 
106599 /* #line 106600 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
106600 
106601 
106602 
106603 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
106604 
106605 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
106606 // This code is automatically generated for each
106607 // terminal and non-terminal within the defined
106608 // grammar. There is a simple way to change the
106609 // code to fix bugs etc. See the ROSE README file
106610 // for directions.
106611 
106612 // tps: (02/22/2010): Adding DLL export requirements
106613 #include "rosedll.h"
106614 
106615 // predeclarations for SgOmpNontemporalClause
106616 
106617 /* #line 106618 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
106618 
106619 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
106620 
106621 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
106622 
106623 #if 1
106624 // Class Definition for SgOmpNontemporalClause
106626  {
106627  public:
106628 
106629 
106630 /* #line 106631 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
106631 
106632  virtual SgNode* copy ( SgCopyHelp& help) const override;
106633 // Start of memberFunctionString
106634 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
106635 
106636 // *** COMMON CODE SECTION BEGINS HERE ***
106637 
106638  public:
106639 
106640  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
106641  // and not required which is required to match the other aspects of the copy mechanism code generation.
106642  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
106643  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
106644  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
106645  // virtual SgNode* copy ( const SgCopyHelp & help) const;
106646 
106648  virtual std::string class_name() const override;
106649 
106651  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
106652 
106654  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
106655  // static const VariantT static_variant = V_SgOmpNontemporalClause;
106656  enum { static_variant = V_SgOmpNontemporalClause };
106657 
106658  /* the generated cast function */
106660  ROSE_DLL_API friend SgOmpNontemporalClause* isSgOmpNontemporalClause( SgNode * s );
106661 
106663  ROSE_DLL_API friend const SgOmpNontemporalClause* isSgOmpNontemporalClause( const SgNode * s );
106664 
106665  // ******************************************
106666  // * Memory Pool / New / Delete
106667  // ******************************************
106668 
106669  public:
106671  static const unsigned pool_size; //
106673  static std::vector<unsigned char *> pools; //
106675  static SgOmpNontemporalClause * next_node; //
106676 
106678  static unsigned long initializeStorageClassArray(SgOmpNontemporalClauseStorageClass *); //
106679 
106681  static void clearMemoryPool(); //
106682  static void deleteMemoryPool(); //
106683 
106685  static void extendMemoryPoolForFileIO(); //
106686 
106688  static SgOmpNontemporalClause * getPointerFromGlobalIndex(unsigned long); //
106690  static SgOmpNontemporalClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
106691 
106693  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
106695  static void resetValidFreepointers(); //
106697  static unsigned long getNumberOfLastValidPointer(); //
106698 
106699 
106700 #if defined(INLINE_FUNCTIONS)
106701 
106702  inline void *operator new (size_t size);
106703 #else
106704 
106705  void *operator new (size_t size);
106706 #endif
106707 
106708  void operator delete (void* pointer, size_t size);
106709 
106710  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
106711  void operator delete (void* pointer)
106712  {
106713  // This is the generated delete operator...
106714  SgOmpNontemporalClause::operator delete (pointer,sizeof(SgOmpNontemporalClause));
106715  }
106716 
106718  static size_t numberOfNodes();
106719 
106721  static size_t memoryUsage();
106722 
106723  // End of scope which started in IR nodes specific code
106724  /* */
106725 
106726  /* name Internal Functions
106727  \brief Internal functions ... incomplete-documentation
106728 
106729  These functions have been made public as part of the design, but they are suggested for internal use
106730  or by particularly knowledgeable users for specialized tools or applications.
106731 
106732  \internal We could not make these private because they are required by user for special purposes. And
106733  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
106734 
106735  */
106736 
106737  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
106738  // overridden in every class by *generated* implementation
106740  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
106741  // MS: 06/28/02 container of names of variables or container indices
106742  // used used in the traversal to access AST successor nodes
106743  // overridden in every class by *generated* implementation
106746  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
106747 
106748  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
106749  // than all the vector copies. The implementation for these functions is generated for each class.
106751  virtual size_t get_numberOfTraversalSuccessors() override;
106753  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
106755  virtual size_t get_childIndex(SgNode *child) override;
106756 
106757 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
106758  // MS: 08/16/2002 method for generating RTI information
106760  virtual RTIReturnType roseRTI() override;
106761 #endif
106762  /* */
106763 
106764 
106765 
106766  /* name Deprecated Functions
106767  \brief Deprecated functions ... incomplete-documentation
106768 
106769  These functions have been deprecated from use.
106770  */
106771  /* */
106772 
106774  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
106775 
106776  // JJW (10/16/2008): Changed to a single function in Node.code, and put
106777  // getVariant() in #if 0 block to prevent confusing Doxygen
106778 #if 0
106779 
106780  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
106782  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
106783 #endif
106784  /* */
106785 
106786 
106787 
106788 
106789  public:
106790  /* name Traversal Support Functions
106791  \brief Traversal support functions ... incomplete-documentation
106792 
106793  These functions have been made public as part of the design, but they are suggested for internal use
106794  or by particularly knowledgable users for specialized tools or applications.
106795  */
106796  /* */
106797 
106798  // DQ (11/26/2005): Support for visitor pattern mechanims
106799  // (inferior to ROSE traversal mechanism, experimental).
106803 
106804  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
106806  virtual void accept (ROSE_VisitorPattern & visitor) override;
106807 
106808  // DQ (12/26/2005): Support for traversal based on the memory pool
106811  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
106812 
106815  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
106816 
106817  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
106818  // This traversal helps support internal tools that call static member functions.
106819  // note: this function operates on the memory pools.
106822  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
106823  /* */
106824 
106825 
106826  public:
106827  /* name Memory Allocation Functions
106828  \brief Memory allocations functions ... incomplete-documentation
106829 
106830  These functions have been made public as part of the design, but they are suggested for internal use
106831  or by particularly knowledgable users for specialized tools or applications.
106832  */
106833  /* */
106834 
106845  virtual bool isInMemoryPool() override;
106846 
106857  virtual void checkDataMemberPointersIfInMemoryPool() override;
106858 
106859  // DQ (4/30/2006): Modified to be a const function.
106874  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
106875 
106885  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
106886 
106898  virtual long getChildIndex( SgNode* childNode ) const override;
106899 
106900  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
106901  // comment here (changed to be a C style comment and not be a doxygen comment).
106902  /* \brief Constructor for use by AST File I/O Mechanism
106903 
106904  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
106905  which obtained via fast binary file I/O from disk.
106906  */
106907  // SgOmpNontemporalClause( SgOmpNontemporalClauseStorageClass& source );
106908 
106909 
106910 
106911 
106912 
106913  // JH (10/24/2005): methods added to support the ast file IO
106914  private:
106915 
106916  /* name AST Memory Allocation Support Functions
106917  \brief Memory allocations support....
106918 
106919  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
106920  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
106921  and support the AST File I/O Mechanism.
106922  */
106923  /* */
106924 
106925  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
106926  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
106927  that I use the same type everywhere, if any changes are made. THe second one declares the type
106928  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
106929  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
106930  a correspinding one in the AST_FILE_IO class!
106931  */
106932  // DQ (9/2/2015): This typedef is no longer used, we can't define the
106933  // comment here (changed to be a C style comment and not be a doxygen comment).
106934  /* \brief Typedef used for low level memory access.
106935  */
106936  // typedef unsigned char* TestType;
106937 
106938  // DQ (9/2/2015): This typedef is no longer used, we can't define the
106939  // comment here (changed to be a C style comment and not be a doxygen comment).
106940  /* \brief Typedef used to hold memory addresses as values.
106941  */
106942  // typedef unsigned long AddressType;
106943 
106944 
106945 
106946  // necessary, to have direct access to the p_freepointer and the private methods !
106948  friend class AST_FILE_IO;
106949 
106951  friend class SgOmpNontemporalClauseStorageClass;
106952 
106954  friend class AstSpecificDataManagingClass;
106955 
106957  friend class AstSpecificDataManagingClassStorageClass;
106958 
106959  public:
106961  SgOmpNontemporalClause( const SgOmpNontemporalClauseStorageClass& source );
106962 
106963  // private: // JJW hack
106964  /*
106965  name AST Memory Allocation Support Variables
106966  Memory allocations support variables
106967 
106968  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
106969  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
106970  and support the AST File I/O Mechanism.
106971  */
106972  /* */
106973 
106974  public:
106975 
106976  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
106977  // to current node (so that it will work cleanly with build functions to specify patterns).
106978  // virtual SgNode* addRegExpAttribute();
106985 
106986 // *** COMMON CODE SECTION ENDS HERE ***
106987 
106988 
106989 // End of memberFunctionString
106990 // Start of memberFunctionString
106991 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
106992 
106993  // the generated cast function
106994  // friend ROSE_DLL_API SgOmpNontemporalClause* isSgOmpNontemporalClause ( SgNode* s );
106995 
106997 
106998 
106999 // End of memberFunctionString
107000 
107001 
107002  public:
107003  virtual ~SgOmpNontemporalClause();
107004 
107005 
107006  public:
107007  SgOmpNontemporalClause(Sg_File_Info* startOfConstruct , SgExprListExp* variables = NULL);
107008  SgOmpNontemporalClause(SgExprListExp* variables);
107009 
107010  protected:
107011 
107012 
107013 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
107014 
107015 
107016  };
107017 #endif
107018 
107019 // postdeclarations for SgOmpNontemporalClause
107020 
107021 /* #line 107022 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
107022 
107023 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
107024 
107025 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
107026 
107027 
107028 /* #line 107029 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
107029 
107030 
107031 
107032 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
107033 
107034 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
107035 // This code is automatically generated for each
107036 // terminal and non-terminal within the defined
107037 // grammar. There is a simple way to change the
107038 // code to fix bugs etc. See the ROSE README file
107039 // for directions.
107040 
107041 // tps: (02/22/2010): Adding DLL export requirements
107042 #include "rosedll.h"
107043 
107044 // predeclarations for SgOmpInclusiveClause
107045 
107046 /* #line 107047 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
107047 
107048 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
107049 
107050 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
107051 
107052 #if 1
107053 // Class Definition for SgOmpInclusiveClause
107054 class ROSE_DLL_API SgOmpInclusiveClause : public SgOmpVariablesClause
107055  {
107056  public:
107057 
107058 
107059 /* #line 107060 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
107060 
107061  virtual SgNode* copy ( SgCopyHelp& help) const override;
107062 // Start of memberFunctionString
107063 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
107064 
107065 // *** COMMON CODE SECTION BEGINS HERE ***
107066 
107067  public:
107068 
107069  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
107070  // and not required which is required to match the other aspects of the copy mechanism code generation.
107071  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
107072  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
107073  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
107074  // virtual SgNode* copy ( const SgCopyHelp & help) const;
107075 
107077  virtual std::string class_name() const override;
107078 
107080  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
107081 
107083  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
107084  // static const VariantT static_variant = V_SgOmpInclusiveClause;
107085  enum { static_variant = V_SgOmpInclusiveClause };
107086 
107087  /* the generated cast function */
107089  ROSE_DLL_API friend SgOmpInclusiveClause* isSgOmpInclusiveClause( SgNode * s );
107090 
107092  ROSE_DLL_API friend const SgOmpInclusiveClause* isSgOmpInclusiveClause( const SgNode * s );
107093 
107094  // ******************************************
107095  // * Memory Pool / New / Delete
107096  // ******************************************
107097 
107098  public:
107100  static const unsigned pool_size; //
107102  static std::vector<unsigned char *> pools; //
107104  static SgOmpInclusiveClause * next_node; //
107105 
107107  static unsigned long initializeStorageClassArray(SgOmpInclusiveClauseStorageClass *); //
107108 
107110  static void clearMemoryPool(); //
107111  static void deleteMemoryPool(); //
107112 
107114  static void extendMemoryPoolForFileIO(); //
107115 
107117  static SgOmpInclusiveClause * getPointerFromGlobalIndex(unsigned long); //
107119  static SgOmpInclusiveClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
107120 
107122  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
107124  static void resetValidFreepointers(); //
107126  static unsigned long getNumberOfLastValidPointer(); //
107127 
107128 
107129 #if defined(INLINE_FUNCTIONS)
107130 
107131  inline void *operator new (size_t size);
107132 #else
107133 
107134  void *operator new (size_t size);
107135 #endif
107136 
107137  void operator delete (void* pointer, size_t size);
107138 
107139  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
107140  void operator delete (void* pointer)
107141  {
107142  // This is the generated delete operator...
107143  SgOmpInclusiveClause::operator delete (pointer,sizeof(SgOmpInclusiveClause));
107144  }
107145 
107147  static size_t numberOfNodes();
107148 
107150  static size_t memoryUsage();
107151 
107152  // End of scope which started in IR nodes specific code
107153  /* */
107154 
107155  /* name Internal Functions
107156  \brief Internal functions ... incomplete-documentation
107157 
107158  These functions have been made public as part of the design, but they are suggested for internal use
107159  or by particularly knowledgeable users for specialized tools or applications.
107160 
107161  \internal We could not make these private because they are required by user for special purposes. And
107162  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
107163 
107164  */
107165 
107166  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
107167  // overridden in every class by *generated* implementation
107169  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
107170  // MS: 06/28/02 container of names of variables or container indices
107171  // used used in the traversal to access AST successor nodes
107172  // overridden in every class by *generated* implementation
107175  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
107176 
107177  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
107178  // than all the vector copies. The implementation for these functions is generated for each class.
107180  virtual size_t get_numberOfTraversalSuccessors() override;
107182  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
107184  virtual size_t get_childIndex(SgNode *child) override;
107185 
107186 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
107187  // MS: 08/16/2002 method for generating RTI information
107189  virtual RTIReturnType roseRTI() override;
107190 #endif
107191  /* */
107192 
107193 
107194 
107195  /* name Deprecated Functions
107196  \brief Deprecated functions ... incomplete-documentation
107197 
107198  These functions have been deprecated from use.
107199  */
107200  /* */
107201 
107203  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
107204 
107205  // JJW (10/16/2008): Changed to a single function in Node.code, and put
107206  // getVariant() in #if 0 block to prevent confusing Doxygen
107207 #if 0
107208 
107209  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
107211  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
107212 #endif
107213  /* */
107214 
107215 
107216 
107217 
107218  public:
107219  /* name Traversal Support Functions
107220  \brief Traversal support functions ... incomplete-documentation
107221 
107222  These functions have been made public as part of the design, but they are suggested for internal use
107223  or by particularly knowledgable users for specialized tools or applications.
107224  */
107225  /* */
107226 
107227  // DQ (11/26/2005): Support for visitor pattern mechanims
107228  // (inferior to ROSE traversal mechanism, experimental).
107232 
107233  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
107235  virtual void accept (ROSE_VisitorPattern & visitor) override;
107236 
107237  // DQ (12/26/2005): Support for traversal based on the memory pool
107240  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
107241 
107244  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
107245 
107246  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
107247  // This traversal helps support internal tools that call static member functions.
107248  // note: this function operates on the memory pools.
107251  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
107252  /* */
107253 
107254 
107255  public:
107256  /* name Memory Allocation Functions
107257  \brief Memory allocations functions ... incomplete-documentation
107258 
107259  These functions have been made public as part of the design, but they are suggested for internal use
107260  or by particularly knowledgable users for specialized tools or applications.
107261  */
107262  /* */
107263 
107274  virtual bool isInMemoryPool() override;
107275 
107286  virtual void checkDataMemberPointersIfInMemoryPool() override;
107287 
107288  // DQ (4/30/2006): Modified to be a const function.
107303  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
107304 
107314  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
107315 
107327  virtual long getChildIndex( SgNode* childNode ) const override;
107328 
107329  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
107330  // comment here (changed to be a C style comment and not be a doxygen comment).
107331  /* \brief Constructor for use by AST File I/O Mechanism
107332 
107333  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
107334  which obtained via fast binary file I/O from disk.
107335  */
107336  // SgOmpInclusiveClause( SgOmpInclusiveClauseStorageClass& source );
107337 
107338 
107339 
107340 
107341 
107342  // JH (10/24/2005): methods added to support the ast file IO
107343  private:
107344 
107345  /* name AST Memory Allocation Support Functions
107346  \brief Memory allocations support....
107347 
107348  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
107349  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
107350  and support the AST File I/O Mechanism.
107351  */
107352  /* */
107353 
107354  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
107355  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
107356  that I use the same type everywhere, if any changes are made. THe second one declares the type
107357  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
107358  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
107359  a correspinding one in the AST_FILE_IO class!
107360  */
107361  // DQ (9/2/2015): This typedef is no longer used, we can't define the
107362  // comment here (changed to be a C style comment and not be a doxygen comment).
107363  /* \brief Typedef used for low level memory access.
107364  */
107365  // typedef unsigned char* TestType;
107366 
107367  // DQ (9/2/2015): This typedef is no longer used, we can't define the
107368  // comment here (changed to be a C style comment and not be a doxygen comment).
107369  /* \brief Typedef used to hold memory addresses as values.
107370  */
107371  // typedef unsigned long AddressType;
107372 
107373 
107374 
107375  // necessary, to have direct access to the p_freepointer and the private methods !
107377  friend class AST_FILE_IO;
107378 
107380  friend class SgOmpInclusiveClauseStorageClass;
107381 
107383  friend class AstSpecificDataManagingClass;
107384 
107386  friend class AstSpecificDataManagingClassStorageClass;
107387 
107388  public:
107390  SgOmpInclusiveClause( const SgOmpInclusiveClauseStorageClass& source );
107391 
107392  // private: // JJW hack
107393  /*
107394  name AST Memory Allocation Support Variables
107395  Memory allocations support variables
107396 
107397  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
107398  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
107399  and support the AST File I/O Mechanism.
107400  */
107401  /* */
107402 
107403  public:
107404 
107405  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
107406  // to current node (so that it will work cleanly with build functions to specify patterns).
107407  // virtual SgNode* addRegExpAttribute();
107414 
107415 // *** COMMON CODE SECTION ENDS HERE ***
107416 
107417 
107418 // End of memberFunctionString
107419 // Start of memberFunctionString
107420 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
107421 
107422  // the generated cast function
107423  // friend ROSE_DLL_API SgOmpInclusiveClause* isSgOmpInclusiveClause ( SgNode* s );
107424 
107426 
107427 
107428 // End of memberFunctionString
107429 
107430 
107431  public:
107432  virtual ~SgOmpInclusiveClause();
107433 
107434 
107435  public:
107436  SgOmpInclusiveClause(Sg_File_Info* startOfConstruct , SgExprListExp* variables = NULL);
107437  SgOmpInclusiveClause(SgExprListExp* variables);
107438 
107439  protected:
107440 
107441 
107442 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
107443 
107444 
107445  };
107446 #endif
107447 
107448 // postdeclarations for SgOmpInclusiveClause
107449 
107450 /* #line 107451 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
107451 
107452 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
107453 
107454 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
107455 
107456 
107457 /* #line 107458 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
107458 
107459 
107460 
107461 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
107462 
107463 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
107464 // This code is automatically generated for each
107465 // terminal and non-terminal within the defined
107466 // grammar. There is a simple way to change the
107467 // code to fix bugs etc. See the ROSE README file
107468 // for directions.
107469 
107470 // tps: (02/22/2010): Adding DLL export requirements
107471 #include "rosedll.h"
107472 
107473 // predeclarations for SgOmpExclusiveClause
107474 
107475 /* #line 107476 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
107476 
107477 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
107478 
107479 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
107480 
107481 #if 1
107482 // Class Definition for SgOmpExclusiveClause
107483 class ROSE_DLL_API SgOmpExclusiveClause : public SgOmpVariablesClause
107484  {
107485  public:
107486 
107487 
107488 /* #line 107489 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
107489 
107490  virtual SgNode* copy ( SgCopyHelp& help) const override;
107491 // Start of memberFunctionString
107492 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
107493 
107494 // *** COMMON CODE SECTION BEGINS HERE ***
107495 
107496  public:
107497 
107498  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
107499  // and not required which is required to match the other aspects of the copy mechanism code generation.
107500  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
107501  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
107502  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
107503  // virtual SgNode* copy ( const SgCopyHelp & help) const;
107504 
107506  virtual std::string class_name() const override;
107507 
107509  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
107510 
107512  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
107513  // static const VariantT static_variant = V_SgOmpExclusiveClause;
107514  enum { static_variant = V_SgOmpExclusiveClause };
107515 
107516  /* the generated cast function */
107518  ROSE_DLL_API friend SgOmpExclusiveClause* isSgOmpExclusiveClause( SgNode * s );
107519 
107521  ROSE_DLL_API friend const SgOmpExclusiveClause* isSgOmpExclusiveClause( const SgNode * s );
107522 
107523  // ******************************************
107524  // * Memory Pool / New / Delete
107525  // ******************************************
107526 
107527  public:
107529  static const unsigned pool_size; //
107531  static std::vector<unsigned char *> pools; //
107533  static SgOmpExclusiveClause * next_node; //
107534 
107536  static unsigned long initializeStorageClassArray(SgOmpExclusiveClauseStorageClass *); //
107537 
107539  static void clearMemoryPool(); //
107540  static void deleteMemoryPool(); //
107541 
107543  static void extendMemoryPoolForFileIO(); //
107544 
107546  static SgOmpExclusiveClause * getPointerFromGlobalIndex(unsigned long); //
107548  static SgOmpExclusiveClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
107549 
107551  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
107553  static void resetValidFreepointers(); //
107555  static unsigned long getNumberOfLastValidPointer(); //
107556 
107557 
107558 #if defined(INLINE_FUNCTIONS)
107559 
107560  inline void *operator new (size_t size);
107561 #else
107562 
107563  void *operator new (size_t size);
107564 #endif
107565 
107566  void operator delete (void* pointer, size_t size);
107567 
107568  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
107569  void operator delete (void* pointer)
107570  {
107571  // This is the generated delete operator...
107572  SgOmpExclusiveClause::operator delete (pointer,sizeof(SgOmpExclusiveClause));
107573  }
107574 
107576  static size_t numberOfNodes();
107577 
107579  static size_t memoryUsage();
107580 
107581  // End of scope which started in IR nodes specific code
107582  /* */
107583 
107584  /* name Internal Functions
107585  \brief Internal functions ... incomplete-documentation
107586 
107587  These functions have been made public as part of the design, but they are suggested for internal use
107588  or by particularly knowledgeable users for specialized tools or applications.
107589 
107590  \internal We could not make these private because they are required by user for special purposes. And
107591  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
107592 
107593  */
107594 
107595  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
107596  // overridden in every class by *generated* implementation
107598  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
107599  // MS: 06/28/02 container of names of variables or container indices
107600  // used used in the traversal to access AST successor nodes
107601  // overridden in every class by *generated* implementation
107604  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
107605 
107606  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
107607  // than all the vector copies. The implementation for these functions is generated for each class.
107609  virtual size_t get_numberOfTraversalSuccessors() override;
107611  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
107613  virtual size_t get_childIndex(SgNode *child) override;
107614 
107615 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
107616  // MS: 08/16/2002 method for generating RTI information
107618  virtual RTIReturnType roseRTI() override;
107619 #endif
107620  /* */
107621 
107622 
107623 
107624  /* name Deprecated Functions
107625  \brief Deprecated functions ... incomplete-documentation
107626 
107627  These functions have been deprecated from use.
107628  */
107629  /* */
107630 
107632  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
107633 
107634  // JJW (10/16/2008): Changed to a single function in Node.code, and put
107635  // getVariant() in #if 0 block to prevent confusing Doxygen
107636 #if 0
107637 
107638  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
107640  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
107641 #endif
107642  /* */
107643 
107644 
107645 
107646 
107647  public:
107648  /* name Traversal Support Functions
107649  \brief Traversal support functions ... incomplete-documentation
107650 
107651  These functions have been made public as part of the design, but they are suggested for internal use
107652  or by particularly knowledgable users for specialized tools or applications.
107653  */
107654  /* */
107655 
107656  // DQ (11/26/2005): Support for visitor pattern mechanims
107657  // (inferior to ROSE traversal mechanism, experimental).
107661 
107662  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
107664  virtual void accept (ROSE_VisitorPattern & visitor) override;
107665 
107666  // DQ (12/26/2005): Support for traversal based on the memory pool
107669  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
107670 
107673  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
107674 
107675  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
107676  // This traversal helps support internal tools that call static member functions.
107677  // note: this function operates on the memory pools.
107680  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
107681  /* */
107682 
107683 
107684  public:
107685  /* name Memory Allocation Functions
107686  \brief Memory allocations functions ... incomplete-documentation
107687 
107688  These functions have been made public as part of the design, but they are suggested for internal use
107689  or by particularly knowledgable users for specialized tools or applications.
107690  */
107691  /* */
107692 
107703  virtual bool isInMemoryPool() override;
107704 
107715  virtual void checkDataMemberPointersIfInMemoryPool() override;
107716 
107717  // DQ (4/30/2006): Modified to be a const function.
107732  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
107733 
107743  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
107744 
107756  virtual long getChildIndex( SgNode* childNode ) const override;
107757 
107758  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
107759  // comment here (changed to be a C style comment and not be a doxygen comment).
107760  /* \brief Constructor for use by AST File I/O Mechanism
107761 
107762  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
107763  which obtained via fast binary file I/O from disk.
107764  */
107765  // SgOmpExclusiveClause( SgOmpExclusiveClauseStorageClass& source );
107766 
107767 
107768 
107769 
107770 
107771  // JH (10/24/2005): methods added to support the ast file IO
107772  private:
107773 
107774  /* name AST Memory Allocation Support Functions
107775  \brief Memory allocations support....
107776 
107777  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
107778  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
107779  and support the AST File I/O Mechanism.
107780  */
107781  /* */
107782 
107783  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
107784  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
107785  that I use the same type everywhere, if any changes are made. THe second one declares the type
107786  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
107787  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
107788  a correspinding one in the AST_FILE_IO class!
107789  */
107790  // DQ (9/2/2015): This typedef is no longer used, we can't define the
107791  // comment here (changed to be a C style comment and not be a doxygen comment).
107792  /* \brief Typedef used for low level memory access.
107793  */
107794  // typedef unsigned char* TestType;
107795 
107796  // DQ (9/2/2015): This typedef is no longer used, we can't define the
107797  // comment here (changed to be a C style comment and not be a doxygen comment).
107798  /* \brief Typedef used to hold memory addresses as values.
107799  */
107800  // typedef unsigned long AddressType;
107801 
107802 
107803 
107804  // necessary, to have direct access to the p_freepointer and the private methods !
107806  friend class AST_FILE_IO;
107807 
107809  friend class SgOmpExclusiveClauseStorageClass;
107810 
107812  friend class AstSpecificDataManagingClass;
107813 
107815  friend class AstSpecificDataManagingClassStorageClass;
107816 
107817  public:
107819  SgOmpExclusiveClause( const SgOmpExclusiveClauseStorageClass& source );
107820 
107821  // private: // JJW hack
107822  /*
107823  name AST Memory Allocation Support Variables
107824  Memory allocations support variables
107825 
107826  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
107827  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
107828  and support the AST File I/O Mechanism.
107829  */
107830  /* */
107831 
107832  public:
107833 
107834  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
107835  // to current node (so that it will work cleanly with build functions to specify patterns).
107836  // virtual SgNode* addRegExpAttribute();
107843 
107844 // *** COMMON CODE SECTION ENDS HERE ***
107845 
107846 
107847 // End of memberFunctionString
107848 // Start of memberFunctionString
107849 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
107850 
107851  // the generated cast function
107852  // friend ROSE_DLL_API SgOmpExclusiveClause* isSgOmpExclusiveClause ( SgNode* s );
107853 
107855 
107856 
107857 // End of memberFunctionString
107858 
107859 
107860  public:
107861  virtual ~SgOmpExclusiveClause();
107862 
107863 
107864  public:
107865  SgOmpExclusiveClause(Sg_File_Info* startOfConstruct , SgExprListExp* variables = NULL);
107866  SgOmpExclusiveClause(SgExprListExp* variables);
107867 
107868  protected:
107869 
107870 
107871 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
107872 
107873 
107874  };
107875 #endif
107876 
107877 // postdeclarations for SgOmpExclusiveClause
107878 
107879 /* #line 107880 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
107880 
107881 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
107882 
107883 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
107884 
107885 
107886 /* #line 107887 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
107887 
107888 
107889 
107890 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
107891 
107892 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
107893 // This code is automatically generated for each
107894 // terminal and non-terminal within the defined
107895 // grammar. There is a simple way to change the
107896 // code to fix bugs etc. See the ROSE README file
107897 // for directions.
107898 
107899 // tps: (02/22/2010): Adding DLL export requirements
107900 #include "rosedll.h"
107901 
107902 // predeclarations for SgOmpIsDevicePtrClause
107903 
107904 /* #line 107905 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
107905 
107906 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
107907 
107908 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
107909 
107910 #if 1
107911 // Class Definition for SgOmpIsDevicePtrClause
107913  {
107914  public:
107915 
107916 
107917 /* #line 107918 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
107918 
107919  virtual SgNode* copy ( SgCopyHelp& help) const override;
107920 // Start of memberFunctionString
107921 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
107922 
107923 // *** COMMON CODE SECTION BEGINS HERE ***
107924 
107925  public:
107926 
107927  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
107928  // and not required which is required to match the other aspects of the copy mechanism code generation.
107929  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
107930  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
107931  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
107932  // virtual SgNode* copy ( const SgCopyHelp & help) const;
107933 
107935  virtual std::string class_name() const override;
107936 
107938  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
107939 
107941  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
107942  // static const VariantT static_variant = V_SgOmpIsDevicePtrClause;
107943  enum { static_variant = V_SgOmpIsDevicePtrClause };
107944 
107945  /* the generated cast function */
107947  ROSE_DLL_API friend SgOmpIsDevicePtrClause* isSgOmpIsDevicePtrClause( SgNode * s );
107948 
107950  ROSE_DLL_API friend const SgOmpIsDevicePtrClause* isSgOmpIsDevicePtrClause( const SgNode * s );
107951 
107952  // ******************************************
107953  // * Memory Pool / New / Delete
107954  // ******************************************
107955 
107956  public:
107958  static const unsigned pool_size; //
107960  static std::vector<unsigned char *> pools; //
107962  static SgOmpIsDevicePtrClause * next_node; //
107963 
107965  static unsigned long initializeStorageClassArray(SgOmpIsDevicePtrClauseStorageClass *); //
107966 
107968  static void clearMemoryPool(); //
107969  static void deleteMemoryPool(); //
107970 
107972  static void extendMemoryPoolForFileIO(); //
107973 
107975  static SgOmpIsDevicePtrClause * getPointerFromGlobalIndex(unsigned long); //
107977  static SgOmpIsDevicePtrClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
107978 
107980  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
107982  static void resetValidFreepointers(); //
107984  static unsigned long getNumberOfLastValidPointer(); //
107985 
107986 
107987 #if defined(INLINE_FUNCTIONS)
107988 
107989  inline void *operator new (size_t size);
107990 #else
107991 
107992  void *operator new (size_t size);
107993 #endif
107994 
107995  void operator delete (void* pointer, size_t size);
107996 
107997  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
107998  void operator delete (void* pointer)
107999  {
108000  // This is the generated delete operator...
108001  SgOmpIsDevicePtrClause::operator delete (pointer,sizeof(SgOmpIsDevicePtrClause));
108002  }
108003 
108005  static size_t numberOfNodes();
108006 
108008  static size_t memoryUsage();
108009 
108010  // End of scope which started in IR nodes specific code
108011  /* */
108012 
108013  /* name Internal Functions
108014  \brief Internal functions ... incomplete-documentation
108015 
108016  These functions have been made public as part of the design, but they are suggested for internal use
108017  or by particularly knowledgeable users for specialized tools or applications.
108018 
108019  \internal We could not make these private because they are required by user for special purposes. And
108020  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
108021 
108022  */
108023 
108024  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
108025  // overridden in every class by *generated* implementation
108027  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
108028  // MS: 06/28/02 container of names of variables or container indices
108029  // used used in the traversal to access AST successor nodes
108030  // overridden in every class by *generated* implementation
108033  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
108034 
108035  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
108036  // than all the vector copies. The implementation for these functions is generated for each class.
108038  virtual size_t get_numberOfTraversalSuccessors() override;
108040  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
108042  virtual size_t get_childIndex(SgNode *child) override;
108043 
108044 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
108045  // MS: 08/16/2002 method for generating RTI information
108047  virtual RTIReturnType roseRTI() override;
108048 #endif
108049  /* */
108050 
108051 
108052 
108053  /* name Deprecated Functions
108054  \brief Deprecated functions ... incomplete-documentation
108055 
108056  These functions have been deprecated from use.
108057  */
108058  /* */
108059 
108061  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
108062 
108063  // JJW (10/16/2008): Changed to a single function in Node.code, and put
108064  // getVariant() in #if 0 block to prevent confusing Doxygen
108065 #if 0
108066 
108067  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
108069  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
108070 #endif
108071  /* */
108072 
108073 
108074 
108075 
108076  public:
108077  /* name Traversal Support Functions
108078  \brief Traversal support functions ... incomplete-documentation
108079 
108080  These functions have been made public as part of the design, but they are suggested for internal use
108081  or by particularly knowledgable users for specialized tools or applications.
108082  */
108083  /* */
108084 
108085  // DQ (11/26/2005): Support for visitor pattern mechanims
108086  // (inferior to ROSE traversal mechanism, experimental).
108090 
108091  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
108093  virtual void accept (ROSE_VisitorPattern & visitor) override;
108094 
108095  // DQ (12/26/2005): Support for traversal based on the memory pool
108098  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
108099 
108102  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
108103 
108104  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
108105  // This traversal helps support internal tools that call static member functions.
108106  // note: this function operates on the memory pools.
108109  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
108110  /* */
108111 
108112 
108113  public:
108114  /* name Memory Allocation Functions
108115  \brief Memory allocations functions ... incomplete-documentation
108116 
108117  These functions have been made public as part of the design, but they are suggested for internal use
108118  or by particularly knowledgable users for specialized tools or applications.
108119  */
108120  /* */
108121 
108132  virtual bool isInMemoryPool() override;
108133 
108144  virtual void checkDataMemberPointersIfInMemoryPool() override;
108145 
108146  // DQ (4/30/2006): Modified to be a const function.
108161  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
108162 
108172  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
108173 
108185  virtual long getChildIndex( SgNode* childNode ) const override;
108186 
108187  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
108188  // comment here (changed to be a C style comment and not be a doxygen comment).
108189  /* \brief Constructor for use by AST File I/O Mechanism
108190 
108191  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
108192  which obtained via fast binary file I/O from disk.
108193  */
108194  // SgOmpIsDevicePtrClause( SgOmpIsDevicePtrClauseStorageClass& source );
108195 
108196 
108197 
108198 
108199 
108200  // JH (10/24/2005): methods added to support the ast file IO
108201  private:
108202 
108203  /* name AST Memory Allocation Support Functions
108204  \brief Memory allocations support....
108205 
108206  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
108207  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
108208  and support the AST File I/O Mechanism.
108209  */
108210  /* */
108211 
108212  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
108213  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
108214  that I use the same type everywhere, if any changes are made. THe second one declares the type
108215  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
108216  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
108217  a correspinding one in the AST_FILE_IO class!
108218  */
108219  // DQ (9/2/2015): This typedef is no longer used, we can't define the
108220  // comment here (changed to be a C style comment and not be a doxygen comment).
108221  /* \brief Typedef used for low level memory access.
108222  */
108223  // typedef unsigned char* TestType;
108224 
108225  // DQ (9/2/2015): This typedef is no longer used, we can't define the
108226  // comment here (changed to be a C style comment and not be a doxygen comment).
108227  /* \brief Typedef used to hold memory addresses as values.
108228  */
108229  // typedef unsigned long AddressType;
108230 
108231 
108232 
108233  // necessary, to have direct access to the p_freepointer and the private methods !
108235  friend class AST_FILE_IO;
108236 
108238  friend class SgOmpIsDevicePtrClauseStorageClass;
108239 
108241  friend class AstSpecificDataManagingClass;
108242 
108244  friend class AstSpecificDataManagingClassStorageClass;
108245 
108246  public:
108248  SgOmpIsDevicePtrClause( const SgOmpIsDevicePtrClauseStorageClass& source );
108249 
108250  // private: // JJW hack
108251  /*
108252  name AST Memory Allocation Support Variables
108253  Memory allocations support variables
108254 
108255  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
108256  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
108257  and support the AST File I/O Mechanism.
108258  */
108259  /* */
108260 
108261  public:
108262 
108263  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
108264  // to current node (so that it will work cleanly with build functions to specify patterns).
108265  // virtual SgNode* addRegExpAttribute();
108272 
108273 // *** COMMON CODE SECTION ENDS HERE ***
108274 
108275 
108276 // End of memberFunctionString
108277 // Start of memberFunctionString
108278 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
108279 
108280  // the generated cast function
108281  // friend ROSE_DLL_API SgOmpIsDevicePtrClause* isSgOmpIsDevicePtrClause ( SgNode* s );
108282 
108284 
108285 
108286 // End of memberFunctionString
108287 
108288 
108289  public:
108290  virtual ~SgOmpIsDevicePtrClause();
108291 
108292 
108293  public:
108294  SgOmpIsDevicePtrClause(Sg_File_Info* startOfConstruct , SgExprListExp* variables = NULL);
108295  SgOmpIsDevicePtrClause(SgExprListExp* variables);
108296 
108297  protected:
108298 
108299 
108300 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
108301 
108302 
108303  };
108304 #endif
108305 
108306 // postdeclarations for SgOmpIsDevicePtrClause
108307 
108308 /* #line 108309 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
108309 
108310 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
108311 
108312 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
108313 
108314 
108315 /* #line 108316 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
108316 
108317 
108318 
108319 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
108320 
108321 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
108322 // This code is automatically generated for each
108323 // terminal and non-terminal within the defined
108324 // grammar. There is a simple way to change the
108325 // code to fix bugs etc. See the ROSE README file
108326 // for directions.
108327 
108328 // tps: (02/22/2010): Adding DLL export requirements
108329 #include "rosedll.h"
108330 
108331 // predeclarations for SgOmpUseDevicePtrClause
108332 
108333 /* #line 108334 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
108334 
108335 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
108336 
108337 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
108338 
108339 #if 1
108340 // Class Definition for SgOmpUseDevicePtrClause
108342  {
108343  public:
108344 
108345 
108346 /* #line 108347 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
108347 
108348  virtual SgNode* copy ( SgCopyHelp& help) const override;
108349 // Start of memberFunctionString
108350 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
108351 
108352 // *** COMMON CODE SECTION BEGINS HERE ***
108353 
108354  public:
108355 
108356  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
108357  // and not required which is required to match the other aspects of the copy mechanism code generation.
108358  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
108359  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
108360  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
108361  // virtual SgNode* copy ( const SgCopyHelp & help) const;
108362 
108364  virtual std::string class_name() const override;
108365 
108367  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
108368 
108370  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
108371  // static const VariantT static_variant = V_SgOmpUseDevicePtrClause;
108372  enum { static_variant = V_SgOmpUseDevicePtrClause };
108373 
108374  /* the generated cast function */
108376  ROSE_DLL_API friend SgOmpUseDevicePtrClause* isSgOmpUseDevicePtrClause( SgNode * s );
108377 
108379  ROSE_DLL_API friend const SgOmpUseDevicePtrClause* isSgOmpUseDevicePtrClause( const SgNode * s );
108380 
108381  // ******************************************
108382  // * Memory Pool / New / Delete
108383  // ******************************************
108384 
108385  public:
108387  static const unsigned pool_size; //
108389  static std::vector<unsigned char *> pools; //
108391  static SgOmpUseDevicePtrClause * next_node; //
108392 
108394  static unsigned long initializeStorageClassArray(SgOmpUseDevicePtrClauseStorageClass *); //
108395 
108397  static void clearMemoryPool(); //
108398  static void deleteMemoryPool(); //
108399 
108401  static void extendMemoryPoolForFileIO(); //
108402 
108404  static SgOmpUseDevicePtrClause * getPointerFromGlobalIndex(unsigned long); //
108406  static SgOmpUseDevicePtrClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
108407 
108409  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
108411  static void resetValidFreepointers(); //
108413  static unsigned long getNumberOfLastValidPointer(); //
108414 
108415 
108416 #if defined(INLINE_FUNCTIONS)
108417 
108418  inline void *operator new (size_t size);
108419 #else
108420 
108421  void *operator new (size_t size);
108422 #endif
108423 
108424  void operator delete (void* pointer, size_t size);
108425 
108426  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
108427  void operator delete (void* pointer)
108428  {
108429  // This is the generated delete operator...
108430  SgOmpUseDevicePtrClause::operator delete (pointer,sizeof(SgOmpUseDevicePtrClause));
108431  }
108432 
108434  static size_t numberOfNodes();
108435 
108437  static size_t memoryUsage();
108438 
108439  // End of scope which started in IR nodes specific code
108440  /* */
108441 
108442  /* name Internal Functions
108443  \brief Internal functions ... incomplete-documentation
108444 
108445  These functions have been made public as part of the design, but they are suggested for internal use
108446  or by particularly knowledgeable users for specialized tools or applications.
108447 
108448  \internal We could not make these private because they are required by user for special purposes. And
108449  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
108450 
108451  */
108452 
108453  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
108454  // overridden in every class by *generated* implementation
108456  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
108457  // MS: 06/28/02 container of names of variables or container indices
108458  // used used in the traversal to access AST successor nodes
108459  // overridden in every class by *generated* implementation
108462  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
108463 
108464  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
108465  // than all the vector copies. The implementation for these functions is generated for each class.
108467  virtual size_t get_numberOfTraversalSuccessors() override;
108469  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
108471  virtual size_t get_childIndex(SgNode *child) override;
108472 
108473 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
108474  // MS: 08/16/2002 method for generating RTI information
108476  virtual RTIReturnType roseRTI() override;
108477 #endif
108478  /* */
108479 
108480 
108481 
108482  /* name Deprecated Functions
108483  \brief Deprecated functions ... incomplete-documentation
108484 
108485  These functions have been deprecated from use.
108486  */
108487  /* */
108488 
108490  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
108491 
108492  // JJW (10/16/2008): Changed to a single function in Node.code, and put
108493  // getVariant() in #if 0 block to prevent confusing Doxygen
108494 #if 0
108495 
108496  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
108498  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
108499 #endif
108500  /* */
108501 
108502 
108503 
108504 
108505  public:
108506  /* name Traversal Support Functions
108507  \brief Traversal support functions ... incomplete-documentation
108508 
108509  These functions have been made public as part of the design, but they are suggested for internal use
108510  or by particularly knowledgable users for specialized tools or applications.
108511  */
108512  /* */
108513 
108514  // DQ (11/26/2005): Support for visitor pattern mechanims
108515  // (inferior to ROSE traversal mechanism, experimental).
108519 
108520  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
108522  virtual void accept (ROSE_VisitorPattern & visitor) override;
108523 
108524  // DQ (12/26/2005): Support for traversal based on the memory pool
108527  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
108528 
108531  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
108532 
108533  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
108534  // This traversal helps support internal tools that call static member functions.
108535  // note: this function operates on the memory pools.
108538  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
108539  /* */
108540 
108541 
108542  public:
108543  /* name Memory Allocation Functions
108544  \brief Memory allocations functions ... incomplete-documentation
108545 
108546  These functions have been made public as part of the design, but they are suggested for internal use
108547  or by particularly knowledgable users for specialized tools or applications.
108548  */
108549  /* */
108550 
108561  virtual bool isInMemoryPool() override;
108562 
108573  virtual void checkDataMemberPointersIfInMemoryPool() override;
108574 
108575  // DQ (4/30/2006): Modified to be a const function.
108590  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
108591 
108601  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
108602 
108614  virtual long getChildIndex( SgNode* childNode ) const override;
108615 
108616  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
108617  // comment here (changed to be a C style comment and not be a doxygen comment).
108618  /* \brief Constructor for use by AST File I/O Mechanism
108619 
108620  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
108621  which obtained via fast binary file I/O from disk.
108622  */
108623  // SgOmpUseDevicePtrClause( SgOmpUseDevicePtrClauseStorageClass& source );
108624 
108625 
108626 
108627 
108628 
108629  // JH (10/24/2005): methods added to support the ast file IO
108630  private:
108631 
108632  /* name AST Memory Allocation Support Functions
108633  \brief Memory allocations support....
108634 
108635  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
108636  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
108637  and support the AST File I/O Mechanism.
108638  */
108639  /* */
108640 
108641  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
108642  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
108643  that I use the same type everywhere, if any changes are made. THe second one declares the type
108644  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
108645  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
108646  a correspinding one in the AST_FILE_IO class!
108647  */
108648  // DQ (9/2/2015): This typedef is no longer used, we can't define the
108649  // comment here (changed to be a C style comment and not be a doxygen comment).
108650  /* \brief Typedef used for low level memory access.
108651  */
108652  // typedef unsigned char* TestType;
108653 
108654  // DQ (9/2/2015): This typedef is no longer used, we can't define the
108655  // comment here (changed to be a C style comment and not be a doxygen comment).
108656  /* \brief Typedef used to hold memory addresses as values.
108657  */
108658  // typedef unsigned long AddressType;
108659 
108660 
108661 
108662  // necessary, to have direct access to the p_freepointer and the private methods !
108664  friend class AST_FILE_IO;
108665 
108667  friend class SgOmpUseDevicePtrClauseStorageClass;
108668 
108670  friend class AstSpecificDataManagingClass;
108671 
108673  friend class AstSpecificDataManagingClassStorageClass;
108674 
108675  public:
108677  SgOmpUseDevicePtrClause( const SgOmpUseDevicePtrClauseStorageClass& source );
108678 
108679  // private: // JJW hack
108680  /*
108681  name AST Memory Allocation Support Variables
108682  Memory allocations support variables
108683 
108684  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
108685  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
108686  and support the AST File I/O Mechanism.
108687  */
108688  /* */
108689 
108690  public:
108691 
108692  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
108693  // to current node (so that it will work cleanly with build functions to specify patterns).
108694  // virtual SgNode* addRegExpAttribute();
108701 
108702 // *** COMMON CODE SECTION ENDS HERE ***
108703 
108704 
108705 // End of memberFunctionString
108706 // Start of memberFunctionString
108707 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
108708 
108709  // the generated cast function
108710  // friend ROSE_DLL_API SgOmpUseDevicePtrClause* isSgOmpUseDevicePtrClause ( SgNode* s );
108711 
108713 
108714 
108715 // End of memberFunctionString
108716 
108717 
108718  public:
108719  virtual ~SgOmpUseDevicePtrClause();
108720 
108721 
108722  public:
108723  SgOmpUseDevicePtrClause(Sg_File_Info* startOfConstruct , SgExprListExp* variables = NULL);
108724  SgOmpUseDevicePtrClause(SgExprListExp* variables);
108725 
108726  protected:
108727 
108728 
108729 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
108730 
108731 
108732  };
108733 #endif
108734 
108735 // postdeclarations for SgOmpUseDevicePtrClause
108736 
108737 /* #line 108738 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
108738 
108739 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
108740 
108741 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
108742 
108743 
108744 /* #line 108745 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
108745 
108746 
108747 
108748 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
108749 
108750 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
108751 // This code is automatically generated for each
108752 // terminal and non-terminal within the defined
108753 // grammar. There is a simple way to change the
108754 // code to fix bugs etc. See the ROSE README file
108755 // for directions.
108756 
108757 // tps: (02/22/2010): Adding DLL export requirements
108758 #include "rosedll.h"
108759 
108760 // predeclarations for SgOmpUseDeviceAddrClause
108761 
108762 /* #line 108763 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
108763 
108764 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
108765 
108766 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
108767 
108768 #if 1
108769 // Class Definition for SgOmpUseDeviceAddrClause
108771  {
108772  public:
108773 
108774 
108775 /* #line 108776 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
108776 
108777  virtual SgNode* copy ( SgCopyHelp& help) const override;
108778 // Start of memberFunctionString
108779 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
108780 
108781 // *** COMMON CODE SECTION BEGINS HERE ***
108782 
108783  public:
108784 
108785  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
108786  // and not required which is required to match the other aspects of the copy mechanism code generation.
108787  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
108788  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
108789  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
108790  // virtual SgNode* copy ( const SgCopyHelp & help) const;
108791 
108793  virtual std::string class_name() const override;
108794 
108796  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
108797 
108799  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
108800  // static const VariantT static_variant = V_SgOmpUseDeviceAddrClause;
108801  enum { static_variant = V_SgOmpUseDeviceAddrClause };
108802 
108803  /* the generated cast function */
108805  ROSE_DLL_API friend SgOmpUseDeviceAddrClause* isSgOmpUseDeviceAddrClause( SgNode * s );
108806 
108808  ROSE_DLL_API friend const SgOmpUseDeviceAddrClause* isSgOmpUseDeviceAddrClause( const SgNode * s );
108809 
108810  // ******************************************
108811  // * Memory Pool / New / Delete
108812  // ******************************************
108813 
108814  public:
108816  static const unsigned pool_size; //
108818  static std::vector<unsigned char *> pools; //
108820  static SgOmpUseDeviceAddrClause * next_node; //
108821 
108823  static unsigned long initializeStorageClassArray(SgOmpUseDeviceAddrClauseStorageClass *); //
108824 
108826  static void clearMemoryPool(); //
108827  static void deleteMemoryPool(); //
108828 
108830  static void extendMemoryPoolForFileIO(); //
108831 
108833  static SgOmpUseDeviceAddrClause * getPointerFromGlobalIndex(unsigned long); //
108835  static SgOmpUseDeviceAddrClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
108836 
108838  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
108840  static void resetValidFreepointers(); //
108842  static unsigned long getNumberOfLastValidPointer(); //
108843 
108844 
108845 #if defined(INLINE_FUNCTIONS)
108846 
108847  inline void *operator new (size_t size);
108848 #else
108849 
108850  void *operator new (size_t size);
108851 #endif
108852 
108853  void operator delete (void* pointer, size_t size);
108854 
108855  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
108856  void operator delete (void* pointer)
108857  {
108858  // This is the generated delete operator...
108859  SgOmpUseDeviceAddrClause::operator delete (pointer,sizeof(SgOmpUseDeviceAddrClause));
108860  }
108861 
108863  static size_t numberOfNodes();
108864 
108866  static size_t memoryUsage();
108867 
108868  // End of scope which started in IR nodes specific code
108869  /* */
108870 
108871  /* name Internal Functions
108872  \brief Internal functions ... incomplete-documentation
108873 
108874  These functions have been made public as part of the design, but they are suggested for internal use
108875  or by particularly knowledgeable users for specialized tools or applications.
108876 
108877  \internal We could not make these private because they are required by user for special purposes. And
108878  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
108879 
108880  */
108881 
108882  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
108883  // overridden in every class by *generated* implementation
108885  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
108886  // MS: 06/28/02 container of names of variables or container indices
108887  // used used in the traversal to access AST successor nodes
108888  // overridden in every class by *generated* implementation
108891  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
108892 
108893  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
108894  // than all the vector copies. The implementation for these functions is generated for each class.
108896  virtual size_t get_numberOfTraversalSuccessors() override;
108898  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
108900  virtual size_t get_childIndex(SgNode *child) override;
108901 
108902 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
108903  // MS: 08/16/2002 method for generating RTI information
108905  virtual RTIReturnType roseRTI() override;
108906 #endif
108907  /* */
108908 
108909 
108910 
108911  /* name Deprecated Functions
108912  \brief Deprecated functions ... incomplete-documentation
108913 
108914  These functions have been deprecated from use.
108915  */
108916  /* */
108917 
108919  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
108920 
108921  // JJW (10/16/2008): Changed to a single function in Node.code, and put
108922  // getVariant() in #if 0 block to prevent confusing Doxygen
108923 #if 0
108924 
108925  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
108927  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
108928 #endif
108929  /* */
108930 
108931 
108932 
108933 
108934  public:
108935  /* name Traversal Support Functions
108936  \brief Traversal support functions ... incomplete-documentation
108937 
108938  These functions have been made public as part of the design, but they are suggested for internal use
108939  or by particularly knowledgable users for specialized tools or applications.
108940  */
108941  /* */
108942 
108943  // DQ (11/26/2005): Support for visitor pattern mechanims
108944  // (inferior to ROSE traversal mechanism, experimental).
108948 
108949  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
108951  virtual void accept (ROSE_VisitorPattern & visitor) override;
108952 
108953  // DQ (12/26/2005): Support for traversal based on the memory pool
108956  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
108957 
108960  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
108961 
108962  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
108963  // This traversal helps support internal tools that call static member functions.
108964  // note: this function operates on the memory pools.
108967  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
108968  /* */
108969 
108970 
108971  public:
108972  /* name Memory Allocation Functions
108973  \brief Memory allocations functions ... incomplete-documentation
108974 
108975  These functions have been made public as part of the design, but they are suggested for internal use
108976  or by particularly knowledgable users for specialized tools or applications.
108977  */
108978  /* */
108979 
108990  virtual bool isInMemoryPool() override;
108991 
109002  virtual void checkDataMemberPointersIfInMemoryPool() override;
109003 
109004  // DQ (4/30/2006): Modified to be a const function.
109019  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
109020 
109030  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
109031 
109043  virtual long getChildIndex( SgNode* childNode ) const override;
109044 
109045  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
109046  // comment here (changed to be a C style comment and not be a doxygen comment).
109047  /* \brief Constructor for use by AST File I/O Mechanism
109048 
109049  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
109050  which obtained via fast binary file I/O from disk.
109051  */
109052  // SgOmpUseDeviceAddrClause( SgOmpUseDeviceAddrClauseStorageClass& source );
109053 
109054 
109055 
109056 
109057 
109058  // JH (10/24/2005): methods added to support the ast file IO
109059  private:
109060 
109061  /* name AST Memory Allocation Support Functions
109062  \brief Memory allocations support....
109063 
109064  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
109065  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
109066  and support the AST File I/O Mechanism.
109067  */
109068  /* */
109069 
109070  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
109071  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
109072  that I use the same type everywhere, if any changes are made. THe second one declares the type
109073  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
109074  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
109075  a correspinding one in the AST_FILE_IO class!
109076  */
109077  // DQ (9/2/2015): This typedef is no longer used, we can't define the
109078  // comment here (changed to be a C style comment and not be a doxygen comment).
109079  /* \brief Typedef used for low level memory access.
109080  */
109081  // typedef unsigned char* TestType;
109082 
109083  // DQ (9/2/2015): This typedef is no longer used, we can't define the
109084  // comment here (changed to be a C style comment and not be a doxygen comment).
109085  /* \brief Typedef used to hold memory addresses as values.
109086  */
109087  // typedef unsigned long AddressType;
109088 
109089 
109090 
109091  // necessary, to have direct access to the p_freepointer and the private methods !
109093  friend class AST_FILE_IO;
109094 
109096  friend class SgOmpUseDeviceAddrClauseStorageClass;
109097 
109099  friend class AstSpecificDataManagingClass;
109100 
109102  friend class AstSpecificDataManagingClassStorageClass;
109103 
109104  public:
109106  SgOmpUseDeviceAddrClause( const SgOmpUseDeviceAddrClauseStorageClass& source );
109107 
109108  // private: // JJW hack
109109  /*
109110  name AST Memory Allocation Support Variables
109111  Memory allocations support variables
109112 
109113  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
109114  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
109115  and support the AST File I/O Mechanism.
109116  */
109117  /* */
109118 
109119  public:
109120 
109121  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
109122  // to current node (so that it will work cleanly with build functions to specify patterns).
109123  // virtual SgNode* addRegExpAttribute();
109130 
109131 // *** COMMON CODE SECTION ENDS HERE ***
109132 
109133 
109134 // End of memberFunctionString
109135 // Start of memberFunctionString
109136 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
109137 
109138  // the generated cast function
109139  // friend ROSE_DLL_API SgOmpUseDeviceAddrClause* isSgOmpUseDeviceAddrClause ( SgNode* s );
109140 
109142 
109143 
109144 // End of memberFunctionString
109145 
109146 
109147  public:
109148  virtual ~SgOmpUseDeviceAddrClause();
109149 
109150 
109151  public:
109152  SgOmpUseDeviceAddrClause(Sg_File_Info* startOfConstruct , SgExprListExp* variables = NULL);
109154 
109155  protected:
109156 
109157 
109158 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
109159 
109160 
109161  };
109162 #endif
109163 
109164 // postdeclarations for SgOmpUseDeviceAddrClause
109165 
109166 /* #line 109167 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
109167 
109168 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
109169 
109170 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
109171 
109172 
109173 /* #line 109174 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
109174 
109175 
109176 
109177 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
109178 
109179 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
109180 // This code is automatically generated for each
109181 // terminal and non-terminal within the defined
109182 // grammar. There is a simple way to change the
109183 // code to fix bugs etc. See the ROSE README file
109184 // for directions.
109185 
109186 // tps: (02/22/2010): Adding DLL export requirements
109187 #include "rosedll.h"
109188 
109189 // predeclarations for SgOmpSharedClause
109190 
109191 /* #line 109192 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
109192 
109193 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
109194 
109195 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
109196 
109197 #if 1
109198 // Class Definition for SgOmpSharedClause
109199 class ROSE_DLL_API SgOmpSharedClause : public SgOmpVariablesClause
109200  {
109201  public:
109202 
109203 
109204 /* #line 109205 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
109205 
109206  virtual SgNode* copy ( SgCopyHelp& help) const override;
109207 // Start of memberFunctionString
109208 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
109209 
109210 // *** COMMON CODE SECTION BEGINS HERE ***
109211 
109212  public:
109213 
109214  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
109215  // and not required which is required to match the other aspects of the copy mechanism code generation.
109216  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
109217  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
109218  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
109219  // virtual SgNode* copy ( const SgCopyHelp & help) const;
109220 
109222  virtual std::string class_name() const override;
109223 
109225  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
109226 
109228  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
109229  // static const VariantT static_variant = V_SgOmpSharedClause;
109230  enum { static_variant = V_SgOmpSharedClause };
109231 
109232  /* the generated cast function */
109234  ROSE_DLL_API friend SgOmpSharedClause* isSgOmpSharedClause( SgNode * s );
109235 
109237  ROSE_DLL_API friend const SgOmpSharedClause* isSgOmpSharedClause( const SgNode * s );
109238 
109239  // ******************************************
109240  // * Memory Pool / New / Delete
109241  // ******************************************
109242 
109243  public:
109245  static const unsigned pool_size; //
109247  static std::vector<unsigned char *> pools; //
109249  static SgOmpSharedClause * next_node; //
109250 
109252  static unsigned long initializeStorageClassArray(SgOmpSharedClauseStorageClass *); //
109253 
109255  static void clearMemoryPool(); //
109256  static void deleteMemoryPool(); //
109257 
109259  static void extendMemoryPoolForFileIO(); //
109260 
109262  static SgOmpSharedClause * getPointerFromGlobalIndex(unsigned long); //
109264  static SgOmpSharedClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
109265 
109267  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
109269  static void resetValidFreepointers(); //
109271  static unsigned long getNumberOfLastValidPointer(); //
109272 
109273 
109274 #if defined(INLINE_FUNCTIONS)
109275 
109276  inline void *operator new (size_t size);
109277 #else
109278 
109279  void *operator new (size_t size);
109280 #endif
109281 
109282  void operator delete (void* pointer, size_t size);
109283 
109284  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
109285  void operator delete (void* pointer)
109286  {
109287  // This is the generated delete operator...
109288  SgOmpSharedClause::operator delete (pointer,sizeof(SgOmpSharedClause));
109289  }
109290 
109292  static size_t numberOfNodes();
109293 
109295  static size_t memoryUsage();
109296 
109297  // End of scope which started in IR nodes specific code
109298  /* */
109299 
109300  /* name Internal Functions
109301  \brief Internal functions ... incomplete-documentation
109302 
109303  These functions have been made public as part of the design, but they are suggested for internal use
109304  or by particularly knowledgeable users for specialized tools or applications.
109305 
109306  \internal We could not make these private because they are required by user for special purposes. And
109307  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
109308 
109309  */
109310 
109311  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
109312  // overridden in every class by *generated* implementation
109314  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
109315  // MS: 06/28/02 container of names of variables or container indices
109316  // used used in the traversal to access AST successor nodes
109317  // overridden in every class by *generated* implementation
109320  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
109321 
109322  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
109323  // than all the vector copies. The implementation for these functions is generated for each class.
109325  virtual size_t get_numberOfTraversalSuccessors() override;
109327  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
109329  virtual size_t get_childIndex(SgNode *child) override;
109330 
109331 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
109332  // MS: 08/16/2002 method for generating RTI information
109334  virtual RTIReturnType roseRTI() override;
109335 #endif
109336  /* */
109337 
109338 
109339 
109340  /* name Deprecated Functions
109341  \brief Deprecated functions ... incomplete-documentation
109342 
109343  These functions have been deprecated from use.
109344  */
109345  /* */
109346 
109348  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
109349 
109350  // JJW (10/16/2008): Changed to a single function in Node.code, and put
109351  // getVariant() in #if 0 block to prevent confusing Doxygen
109352 #if 0
109353 
109354  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
109356  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
109357 #endif
109358  /* */
109359 
109360 
109361 
109362 
109363  public:
109364  /* name Traversal Support Functions
109365  \brief Traversal support functions ... incomplete-documentation
109366 
109367  These functions have been made public as part of the design, but they are suggested for internal use
109368  or by particularly knowledgable users for specialized tools or applications.
109369  */
109370  /* */
109371 
109372  // DQ (11/26/2005): Support for visitor pattern mechanims
109373  // (inferior to ROSE traversal mechanism, experimental).
109377 
109378  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
109380  virtual void accept (ROSE_VisitorPattern & visitor) override;
109381 
109382  // DQ (12/26/2005): Support for traversal based on the memory pool
109385  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
109386 
109389  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
109390 
109391  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
109392  // This traversal helps support internal tools that call static member functions.
109393  // note: this function operates on the memory pools.
109396  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
109397  /* */
109398 
109399 
109400  public:
109401  /* name Memory Allocation Functions
109402  \brief Memory allocations functions ... incomplete-documentation
109403 
109404  These functions have been made public as part of the design, but they are suggested for internal use
109405  or by particularly knowledgable users for specialized tools or applications.
109406  */
109407  /* */
109408 
109419  virtual bool isInMemoryPool() override;
109420 
109431  virtual void checkDataMemberPointersIfInMemoryPool() override;
109432 
109433  // DQ (4/30/2006): Modified to be a const function.
109448  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
109449 
109459  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
109460 
109472  virtual long getChildIndex( SgNode* childNode ) const override;
109473 
109474  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
109475  // comment here (changed to be a C style comment and not be a doxygen comment).
109476  /* \brief Constructor for use by AST File I/O Mechanism
109477 
109478  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
109479  which obtained via fast binary file I/O from disk.
109480  */
109481  // SgOmpSharedClause( SgOmpSharedClauseStorageClass& source );
109482 
109483 
109484 
109485 
109486 
109487  // JH (10/24/2005): methods added to support the ast file IO
109488  private:
109489 
109490  /* name AST Memory Allocation Support Functions
109491  \brief Memory allocations support....
109492 
109493  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
109494  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
109495  and support the AST File I/O Mechanism.
109496  */
109497  /* */
109498 
109499  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
109500  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
109501  that I use the same type everywhere, if any changes are made. THe second one declares the type
109502  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
109503  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
109504  a correspinding one in the AST_FILE_IO class!
109505  */
109506  // DQ (9/2/2015): This typedef is no longer used, we can't define the
109507  // comment here (changed to be a C style comment and not be a doxygen comment).
109508  /* \brief Typedef used for low level memory access.
109509  */
109510  // typedef unsigned char* TestType;
109511 
109512  // DQ (9/2/2015): This typedef is no longer used, we can't define the
109513  // comment here (changed to be a C style comment and not be a doxygen comment).
109514  /* \brief Typedef used to hold memory addresses as values.
109515  */
109516  // typedef unsigned long AddressType;
109517 
109518 
109519 
109520  // necessary, to have direct access to the p_freepointer and the private methods !
109522  friend class AST_FILE_IO;
109523 
109525  friend class SgOmpSharedClauseStorageClass;
109526 
109528  friend class AstSpecificDataManagingClass;
109529 
109531  friend class AstSpecificDataManagingClassStorageClass;
109532 
109533  public:
109535  SgOmpSharedClause( const SgOmpSharedClauseStorageClass& source );
109536 
109537  // private: // JJW hack
109538  /*
109539  name AST Memory Allocation Support Variables
109540  Memory allocations support variables
109541 
109542  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
109543  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
109544  and support the AST File I/O Mechanism.
109545  */
109546  /* */
109547 
109548  public:
109549 
109550  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
109551  // to current node (so that it will work cleanly with build functions to specify patterns).
109552  // virtual SgNode* addRegExpAttribute();
109559 
109560 // *** COMMON CODE SECTION ENDS HERE ***
109561 
109562 
109563 // End of memberFunctionString
109564 // Start of memberFunctionString
109565 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
109566 
109567  // the generated cast function
109568  // friend ROSE_DLL_API SgOmpSharedClause* isSgOmpSharedClause ( SgNode* s );
109569 
109571 
109572 
109573 // End of memberFunctionString
109574 
109575 
109576  public:
109577  virtual ~SgOmpSharedClause();
109578 
109579 
109580  public:
109581  SgOmpSharedClause(Sg_File_Info* startOfConstruct , SgExprListExp* variables = NULL);
109582  SgOmpSharedClause(SgExprListExp* variables);
109583 
109584  protected:
109585 
109586 
109587 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
109588 
109589 
109590  };
109591 #endif
109592 
109593 // postdeclarations for SgOmpSharedClause
109594 
109595 /* #line 109596 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
109596 
109597 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
109598 
109599 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
109600 
109601 
109602 /* #line 109603 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
109603 
109604 
109605 
109606 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
109607 
109608 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
109609 // This code is automatically generated for each
109610 // terminal and non-terminal within the defined
109611 // grammar. There is a simple way to change the
109612 // code to fix bugs etc. See the ROSE README file
109613 // for directions.
109614 
109615 // tps: (02/22/2010): Adding DLL export requirements
109616 #include "rosedll.h"
109617 
109618 // predeclarations for SgOmpCopyinClause
109619 
109620 /* #line 109621 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
109621 
109622 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
109623 
109624 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
109625 
109626 #if 1
109627 // Class Definition for SgOmpCopyinClause
109628 class ROSE_DLL_API SgOmpCopyinClause : public SgOmpVariablesClause
109629  {
109630  public:
109631 
109632 
109633 /* #line 109634 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
109634 
109635  virtual SgNode* copy ( SgCopyHelp& help) const override;
109636 // Start of memberFunctionString
109637 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
109638 
109639 // *** COMMON CODE SECTION BEGINS HERE ***
109640 
109641  public:
109642 
109643  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
109644  // and not required which is required to match the other aspects of the copy mechanism code generation.
109645  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
109646  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
109647  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
109648  // virtual SgNode* copy ( const SgCopyHelp & help) const;
109649 
109651  virtual std::string class_name() const override;
109652 
109654  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
109655 
109657  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
109658  // static const VariantT static_variant = V_SgOmpCopyinClause;
109659  enum { static_variant = V_SgOmpCopyinClause };
109660 
109661  /* the generated cast function */
109663  ROSE_DLL_API friend SgOmpCopyinClause* isSgOmpCopyinClause( SgNode * s );
109664 
109666  ROSE_DLL_API friend const SgOmpCopyinClause* isSgOmpCopyinClause( const SgNode * s );
109667 
109668  // ******************************************
109669  // * Memory Pool / New / Delete
109670  // ******************************************
109671 
109672  public:
109674  static const unsigned pool_size; //
109676  static std::vector<unsigned char *> pools; //
109678  static SgOmpCopyinClause * next_node; //
109679 
109681  static unsigned long initializeStorageClassArray(SgOmpCopyinClauseStorageClass *); //
109682 
109684  static void clearMemoryPool(); //
109685  static void deleteMemoryPool(); //
109686 
109688  static void extendMemoryPoolForFileIO(); //
109689 
109691  static SgOmpCopyinClause * getPointerFromGlobalIndex(unsigned long); //
109693  static SgOmpCopyinClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
109694 
109696  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
109698  static void resetValidFreepointers(); //
109700  static unsigned long getNumberOfLastValidPointer(); //
109701 
109702 
109703 #if defined(INLINE_FUNCTIONS)
109704 
109705  inline void *operator new (size_t size);
109706 #else
109707 
109708  void *operator new (size_t size);
109709 #endif
109710 
109711  void operator delete (void* pointer, size_t size);
109712 
109713  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
109714  void operator delete (void* pointer)
109715  {
109716  // This is the generated delete operator...
109717  SgOmpCopyinClause::operator delete (pointer,sizeof(SgOmpCopyinClause));
109718  }
109719 
109721  static size_t numberOfNodes();
109722 
109724  static size_t memoryUsage();
109725 
109726  // End of scope which started in IR nodes specific code
109727  /* */
109728 
109729  /* name Internal Functions
109730  \brief Internal functions ... incomplete-documentation
109731 
109732  These functions have been made public as part of the design, but they are suggested for internal use
109733  or by particularly knowledgeable users for specialized tools or applications.
109734 
109735  \internal We could not make these private because they are required by user for special purposes. And
109736  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
109737 
109738  */
109739 
109740  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
109741  // overridden in every class by *generated* implementation
109743  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
109744  // MS: 06/28/02 container of names of variables or container indices
109745  // used used in the traversal to access AST successor nodes
109746  // overridden in every class by *generated* implementation
109749  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
109750 
109751  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
109752  // than all the vector copies. The implementation for these functions is generated for each class.
109754  virtual size_t get_numberOfTraversalSuccessors() override;
109756  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
109758  virtual size_t get_childIndex(SgNode *child) override;
109759 
109760 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
109761  // MS: 08/16/2002 method for generating RTI information
109763  virtual RTIReturnType roseRTI() override;
109764 #endif
109765  /* */
109766 
109767 
109768 
109769  /* name Deprecated Functions
109770  \brief Deprecated functions ... incomplete-documentation
109771 
109772  These functions have been deprecated from use.
109773  */
109774  /* */
109775 
109777  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
109778 
109779  // JJW (10/16/2008): Changed to a single function in Node.code, and put
109780  // getVariant() in #if 0 block to prevent confusing Doxygen
109781 #if 0
109782 
109783  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
109785  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
109786 #endif
109787  /* */
109788 
109789 
109790 
109791 
109792  public:
109793  /* name Traversal Support Functions
109794  \brief Traversal support functions ... incomplete-documentation
109795 
109796  These functions have been made public as part of the design, but they are suggested for internal use
109797  or by particularly knowledgable users for specialized tools or applications.
109798  */
109799  /* */
109800 
109801  // DQ (11/26/2005): Support for visitor pattern mechanims
109802  // (inferior to ROSE traversal mechanism, experimental).
109806 
109807  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
109809  virtual void accept (ROSE_VisitorPattern & visitor) override;
109810 
109811  // DQ (12/26/2005): Support for traversal based on the memory pool
109814  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
109815 
109818  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
109819 
109820  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
109821  // This traversal helps support internal tools that call static member functions.
109822  // note: this function operates on the memory pools.
109825  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
109826  /* */
109827 
109828 
109829  public:
109830  /* name Memory Allocation Functions
109831  \brief Memory allocations functions ... incomplete-documentation
109832 
109833  These functions have been made public as part of the design, but they are suggested for internal use
109834  or by particularly knowledgable users for specialized tools or applications.
109835  */
109836  /* */
109837 
109848  virtual bool isInMemoryPool() override;
109849 
109860  virtual void checkDataMemberPointersIfInMemoryPool() override;
109861 
109862  // DQ (4/30/2006): Modified to be a const function.
109877  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
109878 
109888  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
109889 
109901  virtual long getChildIndex( SgNode* childNode ) const override;
109902 
109903  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
109904  // comment here (changed to be a C style comment and not be a doxygen comment).
109905  /* \brief Constructor for use by AST File I/O Mechanism
109906 
109907  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
109908  which obtained via fast binary file I/O from disk.
109909  */
109910  // SgOmpCopyinClause( SgOmpCopyinClauseStorageClass& source );
109911 
109912 
109913 
109914 
109915 
109916  // JH (10/24/2005): methods added to support the ast file IO
109917  private:
109918 
109919  /* name AST Memory Allocation Support Functions
109920  \brief Memory allocations support....
109921 
109922  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
109923  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
109924  and support the AST File I/O Mechanism.
109925  */
109926  /* */
109927 
109928  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
109929  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
109930  that I use the same type everywhere, if any changes are made. THe second one declares the type
109931  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
109932  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
109933  a correspinding one in the AST_FILE_IO class!
109934  */
109935  // DQ (9/2/2015): This typedef is no longer used, we can't define the
109936  // comment here (changed to be a C style comment and not be a doxygen comment).
109937  /* \brief Typedef used for low level memory access.
109938  */
109939  // typedef unsigned char* TestType;
109940 
109941  // DQ (9/2/2015): This typedef is no longer used, we can't define the
109942  // comment here (changed to be a C style comment and not be a doxygen comment).
109943  /* \brief Typedef used to hold memory addresses as values.
109944  */
109945  // typedef unsigned long AddressType;
109946 
109947 
109948 
109949  // necessary, to have direct access to the p_freepointer and the private methods !
109951  friend class AST_FILE_IO;
109952 
109954  friend class SgOmpCopyinClauseStorageClass;
109955 
109957  friend class AstSpecificDataManagingClass;
109958 
109960  friend class AstSpecificDataManagingClassStorageClass;
109961 
109962  public:
109964  SgOmpCopyinClause( const SgOmpCopyinClauseStorageClass& source );
109965 
109966  // private: // JJW hack
109967  /*
109968  name AST Memory Allocation Support Variables
109969  Memory allocations support variables
109970 
109971  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
109972  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
109973  and support the AST File I/O Mechanism.
109974  */
109975  /* */
109976 
109977  public:
109978 
109979  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
109980  // to current node (so that it will work cleanly with build functions to specify patterns).
109981  // virtual SgNode* addRegExpAttribute();
109988 
109989 // *** COMMON CODE SECTION ENDS HERE ***
109990 
109991 
109992 // End of memberFunctionString
109993 // Start of memberFunctionString
109994 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
109995 
109996  // the generated cast function
109997  // friend ROSE_DLL_API SgOmpCopyinClause* isSgOmpCopyinClause ( SgNode* s );
109998 
110000 
110001 
110002 // End of memberFunctionString
110003 
110004 
110005  public:
110006  virtual ~SgOmpCopyinClause();
110007 
110008 
110009  public:
110010  SgOmpCopyinClause(Sg_File_Info* startOfConstruct , SgExprListExp* variables = NULL);
110011  SgOmpCopyinClause(SgExprListExp* variables);
110012 
110013  protected:
110014 
110015 
110016 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
110017 
110018 
110019  };
110020 #endif
110021 
110022 // postdeclarations for SgOmpCopyinClause
110023 
110024 /* #line 110025 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
110025 
110026 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
110027 
110028 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
110029 
110030 
110031 /* #line 110032 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
110032 
110033 
110034 
110035 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
110036 
110037 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
110038 // This code is automatically generated for each
110039 // terminal and non-terminal within the defined
110040 // grammar. There is a simple way to change the
110041 // code to fix bugs etc. See the ROSE README file
110042 // for directions.
110043 
110044 // tps: (02/22/2010): Adding DLL export requirements
110045 #include "rosedll.h"
110046 
110047 // predeclarations for SgOmpLastprivateClause
110048 
110049 /* #line 110050 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
110050 
110051 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
110052 
110053 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
110054 
110055 #if 1
110056 // Class Definition for SgOmpLastprivateClause
110058  {
110059  public:
110060 
110061 
110062 /* #line 110063 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
110063 
110064  virtual SgNode* copy ( SgCopyHelp& help) const override;
110065 // Start of memberFunctionString
110066 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
110067 
110068 // *** COMMON CODE SECTION BEGINS HERE ***
110069 
110070  public:
110071 
110072  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
110073  // and not required which is required to match the other aspects of the copy mechanism code generation.
110074  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
110075  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
110076  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
110077  // virtual SgNode* copy ( const SgCopyHelp & help) const;
110078 
110080  virtual std::string class_name() const override;
110081 
110083  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
110084 
110086  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
110087  // static const VariantT static_variant = V_SgOmpLastprivateClause;
110088  enum { static_variant = V_SgOmpLastprivateClause };
110089 
110090  /* the generated cast function */
110092  ROSE_DLL_API friend SgOmpLastprivateClause* isSgOmpLastprivateClause( SgNode * s );
110093 
110095  ROSE_DLL_API friend const SgOmpLastprivateClause* isSgOmpLastprivateClause( const SgNode * s );
110096 
110097  // ******************************************
110098  // * Memory Pool / New / Delete
110099  // ******************************************
110100 
110101  public:
110103  static const unsigned pool_size; //
110105  static std::vector<unsigned char *> pools; //
110107  static SgOmpLastprivateClause * next_node; //
110108 
110110  static unsigned long initializeStorageClassArray(SgOmpLastprivateClauseStorageClass *); //
110111 
110113  static void clearMemoryPool(); //
110114  static void deleteMemoryPool(); //
110115 
110117  static void extendMemoryPoolForFileIO(); //
110118 
110120  static SgOmpLastprivateClause * getPointerFromGlobalIndex(unsigned long); //
110122  static SgOmpLastprivateClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
110123 
110125  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
110127  static void resetValidFreepointers(); //
110129  static unsigned long getNumberOfLastValidPointer(); //
110130 
110131 
110132 #if defined(INLINE_FUNCTIONS)
110133 
110134  inline void *operator new (size_t size);
110135 #else
110136 
110137  void *operator new (size_t size);
110138 #endif
110139 
110140  void operator delete (void* pointer, size_t size);
110141 
110142  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
110143  void operator delete (void* pointer)
110144  {
110145  // This is the generated delete operator...
110146  SgOmpLastprivateClause::operator delete (pointer,sizeof(SgOmpLastprivateClause));
110147  }
110148 
110150  static size_t numberOfNodes();
110151 
110153  static size_t memoryUsage();
110154 
110155  // End of scope which started in IR nodes specific code
110156  /* */
110157 
110158  /* name Internal Functions
110159  \brief Internal functions ... incomplete-documentation
110160 
110161  These functions have been made public as part of the design, but they are suggested for internal use
110162  or by particularly knowledgeable users for specialized tools or applications.
110163 
110164  \internal We could not make these private because they are required by user for special purposes. And
110165  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
110166 
110167  */
110168 
110169  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
110170  // overridden in every class by *generated* implementation
110172  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
110173  // MS: 06/28/02 container of names of variables or container indices
110174  // used used in the traversal to access AST successor nodes
110175  // overridden in every class by *generated* implementation
110178  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
110179 
110180  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
110181  // than all the vector copies. The implementation for these functions is generated for each class.
110183  virtual size_t get_numberOfTraversalSuccessors() override;
110185  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
110187  virtual size_t get_childIndex(SgNode *child) override;
110188 
110189 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
110190  // MS: 08/16/2002 method for generating RTI information
110192  virtual RTIReturnType roseRTI() override;
110193 #endif
110194  /* */
110195 
110196 
110197 
110198  /* name Deprecated Functions
110199  \brief Deprecated functions ... incomplete-documentation
110200 
110201  These functions have been deprecated from use.
110202  */
110203  /* */
110204 
110206  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
110207 
110208  // JJW (10/16/2008): Changed to a single function in Node.code, and put
110209  // getVariant() in #if 0 block to prevent confusing Doxygen
110210 #if 0
110211 
110212  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
110214  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
110215 #endif
110216  /* */
110217 
110218 
110219 
110220 
110221  public:
110222  /* name Traversal Support Functions
110223  \brief Traversal support functions ... incomplete-documentation
110224 
110225  These functions have been made public as part of the design, but they are suggested for internal use
110226  or by particularly knowledgable users for specialized tools or applications.
110227  */
110228  /* */
110229 
110230  // DQ (11/26/2005): Support for visitor pattern mechanims
110231  // (inferior to ROSE traversal mechanism, experimental).
110235 
110236  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
110238  virtual void accept (ROSE_VisitorPattern & visitor) override;
110239 
110240  // DQ (12/26/2005): Support for traversal based on the memory pool
110243  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
110244 
110247  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
110248 
110249  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
110250  // This traversal helps support internal tools that call static member functions.
110251  // note: this function operates on the memory pools.
110254  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
110255  /* */
110256 
110257 
110258  public:
110259  /* name Memory Allocation Functions
110260  \brief Memory allocations functions ... incomplete-documentation
110261 
110262  These functions have been made public as part of the design, but they are suggested for internal use
110263  or by particularly knowledgable users for specialized tools or applications.
110264  */
110265  /* */
110266 
110277  virtual bool isInMemoryPool() override;
110278 
110289  virtual void checkDataMemberPointersIfInMemoryPool() override;
110290 
110291  // DQ (4/30/2006): Modified to be a const function.
110306  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
110307 
110317  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
110318 
110330  virtual long getChildIndex( SgNode* childNode ) const override;
110331 
110332  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
110333  // comment here (changed to be a C style comment and not be a doxygen comment).
110334  /* \brief Constructor for use by AST File I/O Mechanism
110335 
110336  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
110337  which obtained via fast binary file I/O from disk.
110338  */
110339  // SgOmpLastprivateClause( SgOmpLastprivateClauseStorageClass& source );
110340 
110341 
110342 
110343 
110344 
110345  // JH (10/24/2005): methods added to support the ast file IO
110346  private:
110347 
110348  /* name AST Memory Allocation Support Functions
110349  \brief Memory allocations support....
110350 
110351  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
110352  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
110353  and support the AST File I/O Mechanism.
110354  */
110355  /* */
110356 
110357  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
110358  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
110359  that I use the same type everywhere, if any changes are made. THe second one declares the type
110360  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
110361  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
110362  a correspinding one in the AST_FILE_IO class!
110363  */
110364  // DQ (9/2/2015): This typedef is no longer used, we can't define the
110365  // comment here (changed to be a C style comment and not be a doxygen comment).
110366  /* \brief Typedef used for low level memory access.
110367  */
110368  // typedef unsigned char* TestType;
110369 
110370  // DQ (9/2/2015): This typedef is no longer used, we can't define the
110371  // comment here (changed to be a C style comment and not be a doxygen comment).
110372  /* \brief Typedef used to hold memory addresses as values.
110373  */
110374  // typedef unsigned long AddressType;
110375 
110376 
110377 
110378  // necessary, to have direct access to the p_freepointer and the private methods !
110380  friend class AST_FILE_IO;
110381 
110383  friend class SgOmpLastprivateClauseStorageClass;
110384 
110386  friend class AstSpecificDataManagingClass;
110387 
110389  friend class AstSpecificDataManagingClassStorageClass;
110390 
110391  public:
110393  SgOmpLastprivateClause( const SgOmpLastprivateClauseStorageClass& source );
110394 
110395  // private: // JJW hack
110396  /*
110397  name AST Memory Allocation Support Variables
110398  Memory allocations support variables
110399 
110400  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
110401  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
110402  and support the AST File I/O Mechanism.
110403  */
110404  /* */
110405 
110406  public:
110407 
110408  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
110409  // to current node (so that it will work cleanly with build functions to specify patterns).
110410  // virtual SgNode* addRegExpAttribute();
110417 
110418 // *** COMMON CODE SECTION ENDS HERE ***
110419 
110420 
110421 // End of memberFunctionString
110422 // Start of memberFunctionString
110423 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
110424 
110425  // the generated cast function
110426  // friend ROSE_DLL_API SgOmpLastprivateClause* isSgOmpLastprivateClause ( SgNode* s );
110427 
110429 
110430 
110431 // End of memberFunctionString
110432 
110433  public:
110434  SgOmpClause::omp_lastprivate_modifier_enum get_modifier() const;
110435  void set_modifier(SgOmpClause::omp_lastprivate_modifier_enum modifier);
110436 
110437 
110438  public:
110439  virtual ~SgOmpLastprivateClause();
110440 
110441 
110442  public:
110443  SgOmpLastprivateClause(Sg_File_Info* startOfConstruct , SgExprListExp* variables = NULL, SgOmpClause::omp_lastprivate_modifier_enum modifier =e_omp_lastprivate_modifier_unspecified);
110444  SgOmpLastprivateClause(SgExprListExp* variables, SgOmpClause::omp_lastprivate_modifier_enum modifier);
110445 
110446  protected:
110447 // Start of memberFunctionString
110448 SgOmpClause::omp_lastprivate_modifier_enum p_modifier;
110449 
110450 // End of memberFunctionString
110451 
110452 
110453 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
110454 
110455 
110456  };
110457 #endif
110458 
110459 // postdeclarations for SgOmpLastprivateClause
110460 
110461 /* #line 110462 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
110462 
110463 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
110464 
110465 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
110466 
110467 
110468 /* #line 110469 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
110469 
110470 
110471 
110472 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
110473 
110474 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
110475 // This code is automatically generated for each
110476 // terminal and non-terminal within the defined
110477 // grammar. There is a simple way to change the
110478 // code to fix bugs etc. See the ROSE README file
110479 // for directions.
110480 
110481 // tps: (02/22/2010): Adding DLL export requirements
110482 #include "rosedll.h"
110483 
110484 // predeclarations for SgOmpReductionClause
110485 
110486 /* #line 110487 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
110487 
110488 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
110489 
110490 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
110491 
110492 #if 1
110493 // Class Definition for SgOmpReductionClause
110494 class ROSE_DLL_API SgOmpReductionClause : public SgOmpVariablesClause
110495  {
110496  public:
110497 
110498 
110499 /* #line 110500 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
110500 
110501  virtual SgNode* copy ( SgCopyHelp& help) const override;
110502 // Start of memberFunctionString
110503 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
110504 
110505 // *** COMMON CODE SECTION BEGINS HERE ***
110506 
110507  public:
110508 
110509  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
110510  // and not required which is required to match the other aspects of the copy mechanism code generation.
110511  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
110512  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
110513  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
110514  // virtual SgNode* copy ( const SgCopyHelp & help) const;
110515 
110517  virtual std::string class_name() const override;
110518 
110520  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
110521 
110523  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
110524  // static const VariantT static_variant = V_SgOmpReductionClause;
110525  enum { static_variant = V_SgOmpReductionClause };
110526 
110527  /* the generated cast function */
110529  ROSE_DLL_API friend SgOmpReductionClause* isSgOmpReductionClause( SgNode * s );
110530 
110532  ROSE_DLL_API friend const SgOmpReductionClause* isSgOmpReductionClause( const SgNode * s );
110533 
110534  // ******************************************
110535  // * Memory Pool / New / Delete
110536  // ******************************************
110537 
110538  public:
110540  static const unsigned pool_size; //
110542  static std::vector<unsigned char *> pools; //
110544  static SgOmpReductionClause * next_node; //
110545 
110547  static unsigned long initializeStorageClassArray(SgOmpReductionClauseStorageClass *); //
110548 
110550  static void clearMemoryPool(); //
110551  static void deleteMemoryPool(); //
110552 
110554  static void extendMemoryPoolForFileIO(); //
110555 
110557  static SgOmpReductionClause * getPointerFromGlobalIndex(unsigned long); //
110559  static SgOmpReductionClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
110560 
110562  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
110564  static void resetValidFreepointers(); //
110566  static unsigned long getNumberOfLastValidPointer(); //
110567 
110568 
110569 #if defined(INLINE_FUNCTIONS)
110570 
110571  inline void *operator new (size_t size);
110572 #else
110573 
110574  void *operator new (size_t size);
110575 #endif
110576 
110577  void operator delete (void* pointer, size_t size);
110578 
110579  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
110580  void operator delete (void* pointer)
110581  {
110582  // This is the generated delete operator...
110583  SgOmpReductionClause::operator delete (pointer,sizeof(SgOmpReductionClause));
110584  }
110585 
110587  static size_t numberOfNodes();
110588 
110590  static size_t memoryUsage();
110591 
110592  // End of scope which started in IR nodes specific code
110593  /* */
110594 
110595  /* name Internal Functions
110596  \brief Internal functions ... incomplete-documentation
110597 
110598  These functions have been made public as part of the design, but they are suggested for internal use
110599  or by particularly knowledgeable users for specialized tools or applications.
110600 
110601  \internal We could not make these private because they are required by user for special purposes. And
110602  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
110603 
110604  */
110605 
110606  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
110607  // overridden in every class by *generated* implementation
110609  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
110610  // MS: 06/28/02 container of names of variables or container indices
110611  // used used in the traversal to access AST successor nodes
110612  // overridden in every class by *generated* implementation
110615  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
110616 
110617  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
110618  // than all the vector copies. The implementation for these functions is generated for each class.
110620  virtual size_t get_numberOfTraversalSuccessors() override;
110622  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
110624  virtual size_t get_childIndex(SgNode *child) override;
110625 
110626 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
110627  // MS: 08/16/2002 method for generating RTI information
110629  virtual RTIReturnType roseRTI() override;
110630 #endif
110631  /* */
110632 
110633 
110634 
110635  /* name Deprecated Functions
110636  \brief Deprecated functions ... incomplete-documentation
110637 
110638  These functions have been deprecated from use.
110639  */
110640  /* */
110641 
110643  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
110644 
110645  // JJW (10/16/2008): Changed to a single function in Node.code, and put
110646  // getVariant() in #if 0 block to prevent confusing Doxygen
110647 #if 0
110648 
110649  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
110651  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
110652 #endif
110653  /* */
110654 
110655 
110656 
110657 
110658  public:
110659  /* name Traversal Support Functions
110660  \brief Traversal support functions ... incomplete-documentation
110661 
110662  These functions have been made public as part of the design, but they are suggested for internal use
110663  or by particularly knowledgable users for specialized tools or applications.
110664  */
110665  /* */
110666 
110667  // DQ (11/26/2005): Support for visitor pattern mechanims
110668  // (inferior to ROSE traversal mechanism, experimental).
110672 
110673  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
110675  virtual void accept (ROSE_VisitorPattern & visitor) override;
110676 
110677  // DQ (12/26/2005): Support for traversal based on the memory pool
110680  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
110681 
110684  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
110685 
110686  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
110687  // This traversal helps support internal tools that call static member functions.
110688  // note: this function operates on the memory pools.
110691  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
110692  /* */
110693 
110694 
110695  public:
110696  /* name Memory Allocation Functions
110697  \brief Memory allocations functions ... incomplete-documentation
110698 
110699  These functions have been made public as part of the design, but they are suggested for internal use
110700  or by particularly knowledgable users for specialized tools or applications.
110701  */
110702  /* */
110703 
110714  virtual bool isInMemoryPool() override;
110715 
110726  virtual void checkDataMemberPointersIfInMemoryPool() override;
110727 
110728  // DQ (4/30/2006): Modified to be a const function.
110743  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
110744 
110754  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
110755 
110767  virtual long getChildIndex( SgNode* childNode ) const override;
110768 
110769  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
110770  // comment here (changed to be a C style comment and not be a doxygen comment).
110771  /* \brief Constructor for use by AST File I/O Mechanism
110772 
110773  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
110774  which obtained via fast binary file I/O from disk.
110775  */
110776  // SgOmpReductionClause( SgOmpReductionClauseStorageClass& source );
110777 
110778 
110779 
110780 
110781 
110782  // JH (10/24/2005): methods added to support the ast file IO
110783  private:
110784 
110785  /* name AST Memory Allocation Support Functions
110786  \brief Memory allocations support....
110787 
110788  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
110789  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
110790  and support the AST File I/O Mechanism.
110791  */
110792  /* */
110793 
110794  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
110795  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
110796  that I use the same type everywhere, if any changes are made. THe second one declares the type
110797  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
110798  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
110799  a correspinding one in the AST_FILE_IO class!
110800  */
110801  // DQ (9/2/2015): This typedef is no longer used, we can't define the
110802  // comment here (changed to be a C style comment and not be a doxygen comment).
110803  /* \brief Typedef used for low level memory access.
110804  */
110805  // typedef unsigned char* TestType;
110806 
110807  // DQ (9/2/2015): This typedef is no longer used, we can't define the
110808  // comment here (changed to be a C style comment and not be a doxygen comment).
110809  /* \brief Typedef used to hold memory addresses as values.
110810  */
110811  // typedef unsigned long AddressType;
110812 
110813 
110814 
110815  // necessary, to have direct access to the p_freepointer and the private methods !
110817  friend class AST_FILE_IO;
110818 
110820  friend class SgOmpReductionClauseStorageClass;
110821 
110823  friend class AstSpecificDataManagingClass;
110824 
110826  friend class AstSpecificDataManagingClassStorageClass;
110827 
110828  public:
110830  SgOmpReductionClause( const SgOmpReductionClauseStorageClass& source );
110831 
110832  // private: // JJW hack
110833  /*
110834  name AST Memory Allocation Support Variables
110835  Memory allocations support variables
110836 
110837  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
110838  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
110839  and support the AST File I/O Mechanism.
110840  */
110841  /* */
110842 
110843  public:
110844 
110845  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
110846  // to current node (so that it will work cleanly with build functions to specify patterns).
110847  // virtual SgNode* addRegExpAttribute();
110854 
110855 // *** COMMON CODE SECTION ENDS HERE ***
110856 
110857 
110858 // End of memberFunctionString
110859 // Start of memberFunctionString
110860 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
110861 
110862  // the generated cast function
110863  // friend ROSE_DLL_API SgOmpReductionClause* isSgOmpReductionClause ( SgNode* s );
110864 
110866 
110867 
110868 // End of memberFunctionString
110869 
110870  public:
110871  SgOmpClause::omp_reduction_modifier_enum get_modifier() const;
110872  void set_modifier(SgOmpClause::omp_reduction_modifier_enum modifier);
110873 
110874  public:
110875  SgOmpClause::omp_reduction_identifier_enum get_identifier() const;
110876  void set_identifier(SgOmpClause::omp_reduction_identifier_enum identifier);
110877 
110878  public:
110879  SgExpression* get_user_defined_identifier() const;
110880  void set_user_defined_identifier(SgExpression* user_defined_identifier);
110881 
110882 
110883  public:
110884  virtual ~SgOmpReductionClause();
110885 
110886 
110887  public:
110888  SgOmpReductionClause(Sg_File_Info* startOfConstruct , SgExprListExp* variables = NULL, SgOmpClause::omp_reduction_modifier_enum modifier =e_omp_reduction_modifier_unknown, SgOmpClause::omp_reduction_identifier_enum identifier =e_omp_reduction_unknown, SgExpression* user_defined_identifier = NULL);
110889  SgOmpReductionClause(SgExprListExp* variables, SgOmpClause::omp_reduction_modifier_enum modifier, SgOmpClause::omp_reduction_identifier_enum identifier, SgExpression* user_defined_identifier);
110890 
110891  protected:
110892 // Start of memberFunctionString
110893 SgOmpClause::omp_reduction_modifier_enum p_modifier;
110894 
110895 // End of memberFunctionString
110896 // Start of memberFunctionString
110897 SgOmpClause::omp_reduction_identifier_enum p_identifier;
110898 
110899 // End of memberFunctionString
110900 // Start of memberFunctionString
110901 SgExpression* p_user_defined_identifier;
110902 
110903 // End of memberFunctionString
110904 
110905 
110906 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
110907 
110908 
110909  };
110910 #endif
110911 
110912 // postdeclarations for SgOmpReductionClause
110913 
110914 /* #line 110915 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
110915 
110916 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
110917 
110918 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
110919 
110920 
110921 /* #line 110922 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
110922 
110923 
110924 
110925 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
110926 
110927 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
110928 // This code is automatically generated for each
110929 // terminal and non-terminal within the defined
110930 // grammar. There is a simple way to change the
110931 // code to fix bugs etc. See the ROSE README file
110932 // for directions.
110933 
110934 // tps: (02/22/2010): Adding DLL export requirements
110935 #include "rosedll.h"
110936 
110937 // predeclarations for SgOmpInReductionClause
110938 
110939 /* #line 110940 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
110940 
110941 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
110942 
110943 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
110944 
110945 #if 1
110946 // Class Definition for SgOmpInReductionClause
110948  {
110949  public:
110950 
110951 
110952 /* #line 110953 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
110953 
110954  virtual SgNode* copy ( SgCopyHelp& help) const override;
110955 // Start of memberFunctionString
110956 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
110957 
110958 // *** COMMON CODE SECTION BEGINS HERE ***
110959 
110960  public:
110961 
110962  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
110963  // and not required which is required to match the other aspects of the copy mechanism code generation.
110964  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
110965  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
110966  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
110967  // virtual SgNode* copy ( const SgCopyHelp & help) const;
110968 
110970  virtual std::string class_name() const override;
110971 
110973  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
110974 
110976  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
110977  // static const VariantT static_variant = V_SgOmpInReductionClause;
110978  enum { static_variant = V_SgOmpInReductionClause };
110979 
110980  /* the generated cast function */
110982  ROSE_DLL_API friend SgOmpInReductionClause* isSgOmpInReductionClause( SgNode * s );
110983 
110985  ROSE_DLL_API friend const SgOmpInReductionClause* isSgOmpInReductionClause( const SgNode * s );
110986 
110987  // ******************************************
110988  // * Memory Pool / New / Delete
110989  // ******************************************
110990 
110991  public:
110993  static const unsigned pool_size; //
110995  static std::vector<unsigned char *> pools; //
110997  static SgOmpInReductionClause * next_node; //
110998 
111000  static unsigned long initializeStorageClassArray(SgOmpInReductionClauseStorageClass *); //
111001 
111003  static void clearMemoryPool(); //
111004  static void deleteMemoryPool(); //
111005 
111007  static void extendMemoryPoolForFileIO(); //
111008 
111010  static SgOmpInReductionClause * getPointerFromGlobalIndex(unsigned long); //
111012  static SgOmpInReductionClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
111013 
111015  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
111017  static void resetValidFreepointers(); //
111019  static unsigned long getNumberOfLastValidPointer(); //
111020 
111021 
111022 #if defined(INLINE_FUNCTIONS)
111023 
111024  inline void *operator new (size_t size);
111025 #else
111026 
111027  void *operator new (size_t size);
111028 #endif
111029 
111030  void operator delete (void* pointer, size_t size);
111031 
111032  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
111033  void operator delete (void* pointer)
111034  {
111035  // This is the generated delete operator...
111036  SgOmpInReductionClause::operator delete (pointer,sizeof(SgOmpInReductionClause));
111037  }
111038 
111040  static size_t numberOfNodes();
111041 
111043  static size_t memoryUsage();
111044 
111045  // End of scope which started in IR nodes specific code
111046  /* */
111047 
111048  /* name Internal Functions
111049  \brief Internal functions ... incomplete-documentation
111050 
111051  These functions have been made public as part of the design, but they are suggested for internal use
111052  or by particularly knowledgeable users for specialized tools or applications.
111053 
111054  \internal We could not make these private because they are required by user for special purposes. And
111055  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
111056 
111057  */
111058 
111059  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
111060  // overridden in every class by *generated* implementation
111062  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
111063  // MS: 06/28/02 container of names of variables or container indices
111064  // used used in the traversal to access AST successor nodes
111065  // overridden in every class by *generated* implementation
111068  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
111069 
111070  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
111071  // than all the vector copies. The implementation for these functions is generated for each class.
111073  virtual size_t get_numberOfTraversalSuccessors() override;
111075  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
111077  virtual size_t get_childIndex(SgNode *child) override;
111078 
111079 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
111080  // MS: 08/16/2002 method for generating RTI information
111082  virtual RTIReturnType roseRTI() override;
111083 #endif
111084  /* */
111085 
111086 
111087 
111088  /* name Deprecated Functions
111089  \brief Deprecated functions ... incomplete-documentation
111090 
111091  These functions have been deprecated from use.
111092  */
111093  /* */
111094 
111096  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
111097 
111098  // JJW (10/16/2008): Changed to a single function in Node.code, and put
111099  // getVariant() in #if 0 block to prevent confusing Doxygen
111100 #if 0
111101 
111102  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
111104  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
111105 #endif
111106  /* */
111107 
111108 
111109 
111110 
111111  public:
111112  /* name Traversal Support Functions
111113  \brief Traversal support functions ... incomplete-documentation
111114 
111115  These functions have been made public as part of the design, but they are suggested for internal use
111116  or by particularly knowledgable users for specialized tools or applications.
111117  */
111118  /* */
111119 
111120  // DQ (11/26/2005): Support for visitor pattern mechanims
111121  // (inferior to ROSE traversal mechanism, experimental).
111125 
111126  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
111128  virtual void accept (ROSE_VisitorPattern & visitor) override;
111129 
111130  // DQ (12/26/2005): Support for traversal based on the memory pool
111133  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
111134 
111137  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
111138 
111139  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
111140  // This traversal helps support internal tools that call static member functions.
111141  // note: this function operates on the memory pools.
111144  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
111145  /* */
111146 
111147 
111148  public:
111149  /* name Memory Allocation Functions
111150  \brief Memory allocations functions ... incomplete-documentation
111151 
111152  These functions have been made public as part of the design, but they are suggested for internal use
111153  or by particularly knowledgable users for specialized tools or applications.
111154  */
111155  /* */
111156 
111167  virtual bool isInMemoryPool() override;
111168 
111179  virtual void checkDataMemberPointersIfInMemoryPool() override;
111180 
111181  // DQ (4/30/2006): Modified to be a const function.
111196  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
111197 
111207  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
111208 
111220  virtual long getChildIndex( SgNode* childNode ) const override;
111221 
111222  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
111223  // comment here (changed to be a C style comment and not be a doxygen comment).
111224  /* \brief Constructor for use by AST File I/O Mechanism
111225 
111226  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
111227  which obtained via fast binary file I/O from disk.
111228  */
111229  // SgOmpInReductionClause( SgOmpInReductionClauseStorageClass& source );
111230 
111231 
111232 
111233 
111234 
111235  // JH (10/24/2005): methods added to support the ast file IO
111236  private:
111237 
111238  /* name AST Memory Allocation Support Functions
111239  \brief Memory allocations support....
111240 
111241  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
111242  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
111243  and support the AST File I/O Mechanism.
111244  */
111245  /* */
111246 
111247  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
111248  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
111249  that I use the same type everywhere, if any changes are made. THe second one declares the type
111250  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
111251  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
111252  a correspinding one in the AST_FILE_IO class!
111253  */
111254  // DQ (9/2/2015): This typedef is no longer used, we can't define the
111255  // comment here (changed to be a C style comment and not be a doxygen comment).
111256  /* \brief Typedef used for low level memory access.
111257  */
111258  // typedef unsigned char* TestType;
111259 
111260  // DQ (9/2/2015): This typedef is no longer used, we can't define the
111261  // comment here (changed to be a C style comment and not be a doxygen comment).
111262  /* \brief Typedef used to hold memory addresses as values.
111263  */
111264  // typedef unsigned long AddressType;
111265 
111266 
111267 
111268  // necessary, to have direct access to the p_freepointer and the private methods !
111270  friend class AST_FILE_IO;
111271 
111273  friend class SgOmpInReductionClauseStorageClass;
111274 
111276  friend class AstSpecificDataManagingClass;
111277 
111279  friend class AstSpecificDataManagingClassStorageClass;
111280 
111281  public:
111283  SgOmpInReductionClause( const SgOmpInReductionClauseStorageClass& source );
111284 
111285  // private: // JJW hack
111286  /*
111287  name AST Memory Allocation Support Variables
111288  Memory allocations support variables
111289 
111290  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
111291  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
111292  and support the AST File I/O Mechanism.
111293  */
111294  /* */
111295 
111296  public:
111297 
111298  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
111299  // to current node (so that it will work cleanly with build functions to specify patterns).
111300  // virtual SgNode* addRegExpAttribute();
111307 
111308 // *** COMMON CODE SECTION ENDS HERE ***
111309 
111310 
111311 // End of memberFunctionString
111312 // Start of memberFunctionString
111313 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
111314 
111315  // the generated cast function
111316  // friend ROSE_DLL_API SgOmpInReductionClause* isSgOmpInReductionClause ( SgNode* s );
111317 
111319 
111320 
111321 // End of memberFunctionString
111322 
111323  public:
111324  SgOmpClause::omp_in_reduction_identifier_enum get_identifier() const;
111325  void set_identifier(SgOmpClause::omp_in_reduction_identifier_enum identifier);
111326 
111327  public:
111328  SgExpression* get_user_defined_identifier() const;
111329  void set_user_defined_identifier(SgExpression* user_defined_identifier);
111330 
111331 
111332  public:
111333  virtual ~SgOmpInReductionClause();
111334 
111335 
111336  public:
111337  SgOmpInReductionClause(Sg_File_Info* startOfConstruct , SgExprListExp* variables = NULL, SgOmpClause::omp_in_reduction_identifier_enum identifier =e_omp_in_reduction_identifier_unspecified, SgExpression* user_defined_identifier = NULL);
111338  SgOmpInReductionClause(SgExprListExp* variables, SgOmpClause::omp_in_reduction_identifier_enum identifier, SgExpression* user_defined_identifier);
111339 
111340  protected:
111341 // Start of memberFunctionString
111342 SgOmpClause::omp_in_reduction_identifier_enum p_identifier;
111343 
111344 // End of memberFunctionString
111345 // Start of memberFunctionString
111346 SgExpression* p_user_defined_identifier;
111347 
111348 // End of memberFunctionString
111349 
111350 
111351 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
111352 
111353 
111354  };
111355 #endif
111356 
111357 // postdeclarations for SgOmpInReductionClause
111358 
111359 /* #line 111360 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
111360 
111361 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
111362 
111363 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
111364 
111365 
111366 /* #line 111367 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
111367 
111368 
111369 
111370 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
111371 
111372 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
111373 // This code is automatically generated for each
111374 // terminal and non-terminal within the defined
111375 // grammar. There is a simple way to change the
111376 // code to fix bugs etc. See the ROSE README file
111377 // for directions.
111378 
111379 // tps: (02/22/2010): Adding DLL export requirements
111380 #include "rosedll.h"
111381 
111382 // predeclarations for SgOmpTaskReductionClause
111383 
111384 /* #line 111385 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
111385 
111386 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
111387 
111388 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
111389 
111390 #if 1
111391 // Class Definition for SgOmpTaskReductionClause
111393  {
111394  public:
111395 
111396 
111397 /* #line 111398 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
111398 
111399  virtual SgNode* copy ( SgCopyHelp& help) const override;
111400 // Start of memberFunctionString
111401 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
111402 
111403 // *** COMMON CODE SECTION BEGINS HERE ***
111404 
111405  public:
111406 
111407  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
111408  // and not required which is required to match the other aspects of the copy mechanism code generation.
111409  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
111410  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
111411  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
111412  // virtual SgNode* copy ( const SgCopyHelp & help) const;
111413 
111415  virtual std::string class_name() const override;
111416 
111418  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
111419 
111421  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
111422  // static const VariantT static_variant = V_SgOmpTaskReductionClause;
111423  enum { static_variant = V_SgOmpTaskReductionClause };
111424 
111425  /* the generated cast function */
111427  ROSE_DLL_API friend SgOmpTaskReductionClause* isSgOmpTaskReductionClause( SgNode * s );
111428 
111430  ROSE_DLL_API friend const SgOmpTaskReductionClause* isSgOmpTaskReductionClause( const SgNode * s );
111431 
111432  // ******************************************
111433  // * Memory Pool / New / Delete
111434  // ******************************************
111435 
111436  public:
111438  static const unsigned pool_size; //
111440  static std::vector<unsigned char *> pools; //
111442  static SgOmpTaskReductionClause * next_node; //
111443 
111445  static unsigned long initializeStorageClassArray(SgOmpTaskReductionClauseStorageClass *); //
111446 
111448  static void clearMemoryPool(); //
111449  static void deleteMemoryPool(); //
111450 
111452  static void extendMemoryPoolForFileIO(); //
111453 
111455  static SgOmpTaskReductionClause * getPointerFromGlobalIndex(unsigned long); //
111457  static SgOmpTaskReductionClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
111458 
111460  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
111462  static void resetValidFreepointers(); //
111464  static unsigned long getNumberOfLastValidPointer(); //
111465 
111466 
111467 #if defined(INLINE_FUNCTIONS)
111468 
111469  inline void *operator new (size_t size);
111470 #else
111471 
111472  void *operator new (size_t size);
111473 #endif
111474 
111475  void operator delete (void* pointer, size_t size);
111476 
111477  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
111478  void operator delete (void* pointer)
111479  {
111480  // This is the generated delete operator...
111481  SgOmpTaskReductionClause::operator delete (pointer,sizeof(SgOmpTaskReductionClause));
111482  }
111483 
111485  static size_t numberOfNodes();
111486 
111488  static size_t memoryUsage();
111489 
111490  // End of scope which started in IR nodes specific code
111491  /* */
111492 
111493  /* name Internal Functions
111494  \brief Internal functions ... incomplete-documentation
111495 
111496  These functions have been made public as part of the design, but they are suggested for internal use
111497  or by particularly knowledgeable users for specialized tools or applications.
111498 
111499  \internal We could not make these private because they are required by user for special purposes. And
111500  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
111501 
111502  */
111503 
111504  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
111505  // overridden in every class by *generated* implementation
111507  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
111508  // MS: 06/28/02 container of names of variables or container indices
111509  // used used in the traversal to access AST successor nodes
111510  // overridden in every class by *generated* implementation
111513  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
111514 
111515  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
111516  // than all the vector copies. The implementation for these functions is generated for each class.
111518  virtual size_t get_numberOfTraversalSuccessors() override;
111520  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
111522  virtual size_t get_childIndex(SgNode *child) override;
111523 
111524 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
111525  // MS: 08/16/2002 method for generating RTI information
111527  virtual RTIReturnType roseRTI() override;
111528 #endif
111529  /* */
111530 
111531 
111532 
111533  /* name Deprecated Functions
111534  \brief Deprecated functions ... incomplete-documentation
111535 
111536  These functions have been deprecated from use.
111537  */
111538  /* */
111539 
111541  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
111542 
111543  // JJW (10/16/2008): Changed to a single function in Node.code, and put
111544  // getVariant() in #if 0 block to prevent confusing Doxygen
111545 #if 0
111546 
111547  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
111549  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
111550 #endif
111551  /* */
111552 
111553 
111554 
111555 
111556  public:
111557  /* name Traversal Support Functions
111558  \brief Traversal support functions ... incomplete-documentation
111559 
111560  These functions have been made public as part of the design, but they are suggested for internal use
111561  or by particularly knowledgable users for specialized tools or applications.
111562  */
111563  /* */
111564 
111565  // DQ (11/26/2005): Support for visitor pattern mechanims
111566  // (inferior to ROSE traversal mechanism, experimental).
111570 
111571  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
111573  virtual void accept (ROSE_VisitorPattern & visitor) override;
111574 
111575  // DQ (12/26/2005): Support for traversal based on the memory pool
111578  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
111579 
111582  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
111583 
111584  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
111585  // This traversal helps support internal tools that call static member functions.
111586  // note: this function operates on the memory pools.
111589  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
111590  /* */
111591 
111592 
111593  public:
111594  /* name Memory Allocation Functions
111595  \brief Memory allocations functions ... incomplete-documentation
111596 
111597  These functions have been made public as part of the design, but they are suggested for internal use
111598  or by particularly knowledgable users for specialized tools or applications.
111599  */
111600  /* */
111601 
111612  virtual bool isInMemoryPool() override;
111613 
111624  virtual void checkDataMemberPointersIfInMemoryPool() override;
111625 
111626  // DQ (4/30/2006): Modified to be a const function.
111641  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
111642 
111652  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
111653 
111665  virtual long getChildIndex( SgNode* childNode ) const override;
111666 
111667  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
111668  // comment here (changed to be a C style comment and not be a doxygen comment).
111669  /* \brief Constructor for use by AST File I/O Mechanism
111670 
111671  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
111672  which obtained via fast binary file I/O from disk.
111673  */
111674  // SgOmpTaskReductionClause( SgOmpTaskReductionClauseStorageClass& source );
111675 
111676 
111677 
111678 
111679 
111680  // JH (10/24/2005): methods added to support the ast file IO
111681  private:
111682 
111683  /* name AST Memory Allocation Support Functions
111684  \brief Memory allocations support....
111685 
111686  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
111687  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
111688  and support the AST File I/O Mechanism.
111689  */
111690  /* */
111691 
111692  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
111693  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
111694  that I use the same type everywhere, if any changes are made. THe second one declares the type
111695  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
111696  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
111697  a correspinding one in the AST_FILE_IO class!
111698  */
111699  // DQ (9/2/2015): This typedef is no longer used, we can't define the
111700  // comment here (changed to be a C style comment and not be a doxygen comment).
111701  /* \brief Typedef used for low level memory access.
111702  */
111703  // typedef unsigned char* TestType;
111704 
111705  // DQ (9/2/2015): This typedef is no longer used, we can't define the
111706  // comment here (changed to be a C style comment and not be a doxygen comment).
111707  /* \brief Typedef used to hold memory addresses as values.
111708  */
111709  // typedef unsigned long AddressType;
111710 
111711 
111712 
111713  // necessary, to have direct access to the p_freepointer and the private methods !
111715  friend class AST_FILE_IO;
111716 
111718  friend class SgOmpTaskReductionClauseStorageClass;
111719 
111721  friend class AstSpecificDataManagingClass;
111722 
111724  friend class AstSpecificDataManagingClassStorageClass;
111725 
111726  public:
111728  SgOmpTaskReductionClause( const SgOmpTaskReductionClauseStorageClass& source );
111729 
111730  // private: // JJW hack
111731  /*
111732  name AST Memory Allocation Support Variables
111733  Memory allocations support variables
111734 
111735  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
111736  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
111737  and support the AST File I/O Mechanism.
111738  */
111739  /* */
111740 
111741  public:
111742 
111743  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
111744  // to current node (so that it will work cleanly with build functions to specify patterns).
111745  // virtual SgNode* addRegExpAttribute();
111752 
111753 // *** COMMON CODE SECTION ENDS HERE ***
111754 
111755 
111756 // End of memberFunctionString
111757 // Start of memberFunctionString
111758 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
111759 
111760  // the generated cast function
111761  // friend ROSE_DLL_API SgOmpTaskReductionClause* isSgOmpTaskReductionClause ( SgNode* s );
111762 
111764 
111765 
111766 // End of memberFunctionString
111767 
111768  public:
111769  SgOmpClause::omp_task_reduction_identifier_enum get_identifier() const;
111770  void set_identifier(SgOmpClause::omp_task_reduction_identifier_enum identifier);
111771 
111772  public:
111773  SgExpression* get_user_defined_identifier() const;
111774  void set_user_defined_identifier(SgExpression* user_defined_identifier);
111775 
111776 
111777  public:
111778  virtual ~SgOmpTaskReductionClause();
111779 
111780 
111781  public:
111782  SgOmpTaskReductionClause(Sg_File_Info* startOfConstruct , SgExprListExp* variables = NULL, SgOmpClause::omp_task_reduction_identifier_enum identifier =e_omp_task_reduction_identifier_unspecified, SgExpression* user_defined_identifier = NULL);
111783  SgOmpTaskReductionClause(SgExprListExp* variables, SgOmpClause::omp_task_reduction_identifier_enum identifier, SgExpression* user_defined_identifier);
111784 
111785  protected:
111786 // Start of memberFunctionString
111787 SgOmpClause::omp_task_reduction_identifier_enum p_identifier;
111788 
111789 // End of memberFunctionString
111790 // Start of memberFunctionString
111791 SgExpression* p_user_defined_identifier;
111792 
111793 // End of memberFunctionString
111794 
111795 
111796 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
111797 
111798 
111799  };
111800 #endif
111801 
111802 // postdeclarations for SgOmpTaskReductionClause
111803 
111804 /* #line 111805 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
111805 
111806 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
111807 
111808 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
111809 
111810 
111811 /* #line 111812 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
111812 
111813 
111814 
111815 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
111816 
111817 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
111818 // This code is automatically generated for each
111819 // terminal and non-terminal within the defined
111820 // grammar. There is a simple way to change the
111821 // code to fix bugs etc. See the ROSE README file
111822 // for directions.
111823 
111824 // tps: (02/22/2010): Adding DLL export requirements
111825 #include "rosedll.h"
111826 
111827 // predeclarations for SgOmpMapClause
111828 
111829 /* #line 111830 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
111830 
111831 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
111832 
111833 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
111834 
111835 #if 1
111836 // Class Definition for SgOmpMapClause
111837 class ROSE_DLL_API SgOmpMapClause : public SgOmpVariablesClause
111838  {
111839  public:
111840 
111841 
111842 /* #line 111843 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
111843 
111844  virtual SgNode* copy ( SgCopyHelp& help) const override;
111845 // Start of memberFunctionString
111846 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
111847 
111848 // *** COMMON CODE SECTION BEGINS HERE ***
111849 
111850  public:
111851 
111852  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
111853  // and not required which is required to match the other aspects of the copy mechanism code generation.
111854  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
111855  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
111856  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
111857  // virtual SgNode* copy ( const SgCopyHelp & help) const;
111858 
111860  virtual std::string class_name() const override;
111861 
111863  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
111864 
111866  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
111867  // static const VariantT static_variant = V_SgOmpMapClause;
111868  enum { static_variant = V_SgOmpMapClause };
111869 
111870  /* the generated cast function */
111872  ROSE_DLL_API friend SgOmpMapClause* isSgOmpMapClause( SgNode * s );
111873 
111875  ROSE_DLL_API friend const SgOmpMapClause* isSgOmpMapClause( const SgNode * s );
111876 
111877  // ******************************************
111878  // * Memory Pool / New / Delete
111879  // ******************************************
111880 
111881  public:
111883  static const unsigned pool_size; //
111885  static std::vector<unsigned char *> pools; //
111887  static SgOmpMapClause * next_node; //
111888 
111890  static unsigned long initializeStorageClassArray(SgOmpMapClauseStorageClass *); //
111891 
111893  static void clearMemoryPool(); //
111894  static void deleteMemoryPool(); //
111895 
111897  static void extendMemoryPoolForFileIO(); //
111898 
111900  static SgOmpMapClause * getPointerFromGlobalIndex(unsigned long); //
111902  static SgOmpMapClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
111903 
111905  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
111907  static void resetValidFreepointers(); //
111909  static unsigned long getNumberOfLastValidPointer(); //
111910 
111911 
111912 #if defined(INLINE_FUNCTIONS)
111913 
111914  inline void *operator new (size_t size);
111915 #else
111916 
111917  void *operator new (size_t size);
111918 #endif
111919 
111920  void operator delete (void* pointer, size_t size);
111921 
111922  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
111923  void operator delete (void* pointer)
111924  {
111925  // This is the generated delete operator...
111926  SgOmpMapClause::operator delete (pointer,sizeof(SgOmpMapClause));
111927  }
111928 
111930  static size_t numberOfNodes();
111931 
111933  static size_t memoryUsage();
111934 
111935  // End of scope which started in IR nodes specific code
111936  /* */
111937 
111938  /* name Internal Functions
111939  \brief Internal functions ... incomplete-documentation
111940 
111941  These functions have been made public as part of the design, but they are suggested for internal use
111942  or by particularly knowledgeable users for specialized tools or applications.
111943 
111944  \internal We could not make these private because they are required by user for special purposes. And
111945  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
111946 
111947  */
111948 
111949  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
111950  // overridden in every class by *generated* implementation
111952  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
111953  // MS: 06/28/02 container of names of variables or container indices
111954  // used used in the traversal to access AST successor nodes
111955  // overridden in every class by *generated* implementation
111958  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
111959 
111960  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
111961  // than all the vector copies. The implementation for these functions is generated for each class.
111963  virtual size_t get_numberOfTraversalSuccessors() override;
111965  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
111967  virtual size_t get_childIndex(SgNode *child) override;
111968 
111969 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
111970  // MS: 08/16/2002 method for generating RTI information
111972  virtual RTIReturnType roseRTI() override;
111973 #endif
111974  /* */
111975 
111976 
111977 
111978  /* name Deprecated Functions
111979  \brief Deprecated functions ... incomplete-documentation
111980 
111981  These functions have been deprecated from use.
111982  */
111983  /* */
111984 
111986  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
111987 
111988  // JJW (10/16/2008): Changed to a single function in Node.code, and put
111989  // getVariant() in #if 0 block to prevent confusing Doxygen
111990 #if 0
111991 
111992  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
111994  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
111995 #endif
111996  /* */
111997 
111998 
111999 
112000 
112001  public:
112002  /* name Traversal Support Functions
112003  \brief Traversal support functions ... incomplete-documentation
112004 
112005  These functions have been made public as part of the design, but they are suggested for internal use
112006  or by particularly knowledgable users for specialized tools or applications.
112007  */
112008  /* */
112009 
112010  // DQ (11/26/2005): Support for visitor pattern mechanims
112011  // (inferior to ROSE traversal mechanism, experimental).
112015 
112016  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
112018  virtual void accept (ROSE_VisitorPattern & visitor) override;
112019 
112020  // DQ (12/26/2005): Support for traversal based on the memory pool
112023  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
112024 
112027  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
112028 
112029  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
112030  // This traversal helps support internal tools that call static member functions.
112031  // note: this function operates on the memory pools.
112034  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
112035  /* */
112036 
112037 
112038  public:
112039  /* name Memory Allocation Functions
112040  \brief Memory allocations functions ... incomplete-documentation
112041 
112042  These functions have been made public as part of the design, but they are suggested for internal use
112043  or by particularly knowledgable users for specialized tools or applications.
112044  */
112045  /* */
112046 
112057  virtual bool isInMemoryPool() override;
112058 
112069  virtual void checkDataMemberPointersIfInMemoryPool() override;
112070 
112071  // DQ (4/30/2006): Modified to be a const function.
112086  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
112087 
112097  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
112098 
112110  virtual long getChildIndex( SgNode* childNode ) const override;
112111 
112112  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
112113  // comment here (changed to be a C style comment and not be a doxygen comment).
112114  /* \brief Constructor for use by AST File I/O Mechanism
112115 
112116  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
112117  which obtained via fast binary file I/O from disk.
112118  */
112119  // SgOmpMapClause( SgOmpMapClauseStorageClass& source );
112120 
112121 
112122 
112123 
112124 
112125  // JH (10/24/2005): methods added to support the ast file IO
112126  private:
112127 
112128  /* name AST Memory Allocation Support Functions
112129  \brief Memory allocations support....
112130 
112131  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
112132  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
112133  and support the AST File I/O Mechanism.
112134  */
112135  /* */
112136 
112137  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
112138  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
112139  that I use the same type everywhere, if any changes are made. THe second one declares the type
112140  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
112141  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
112142  a correspinding one in the AST_FILE_IO class!
112143  */
112144  // DQ (9/2/2015): This typedef is no longer used, we can't define the
112145  // comment here (changed to be a C style comment and not be a doxygen comment).
112146  /* \brief Typedef used for low level memory access.
112147  */
112148  // typedef unsigned char* TestType;
112149 
112150  // DQ (9/2/2015): This typedef is no longer used, we can't define the
112151  // comment here (changed to be a C style comment and not be a doxygen comment).
112152  /* \brief Typedef used to hold memory addresses as values.
112153  */
112154  // typedef unsigned long AddressType;
112155 
112156 
112157 
112158  // necessary, to have direct access to the p_freepointer and the private methods !
112160  friend class AST_FILE_IO;
112161 
112163  friend class SgOmpMapClauseStorageClass;
112164 
112166  friend class AstSpecificDataManagingClass;
112167 
112169  friend class AstSpecificDataManagingClassStorageClass;
112170 
112171  public:
112173  SgOmpMapClause( const SgOmpMapClauseStorageClass& source );
112174 
112175  // private: // JJW hack
112176  /*
112177  name AST Memory Allocation Support Variables
112178  Memory allocations support variables
112179 
112180  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
112181  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
112182  and support the AST File I/O Mechanism.
112183  */
112184  /* */
112185 
112186  public:
112187 
112188  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
112189  // to current node (so that it will work cleanly with build functions to specify patterns).
112190  // virtual SgNode* addRegExpAttribute();
112197 
112198 // *** COMMON CODE SECTION ENDS HERE ***
112199 
112200 
112201 // End of memberFunctionString
112202 // Start of memberFunctionString
112203 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
112204 
112205  // the generated cast function
112206  // friend ROSE_DLL_API SgOmpMapClause* isSgOmpMapClause ( SgNode* s );
112207 
112209 
112210 
112211 // End of memberFunctionString
112212 
112213  public:
112214  SgOmpClause::omp_map_operator_enum get_operation() const;
112215  void set_operation(SgOmpClause::omp_map_operator_enum operation);
112216 
112217  public:
112218  std::map<SgSymbol*, std::vector < std::pair <SgExpression*, SgExpression*> > > get_array_dimensions() const;
112219  void set_array_dimensions(std::map<SgSymbol*, std::vector < std::pair <SgExpression*, SgExpression*> > > array_dimensions);
112220 
112221  public:
112222  std::map<SgSymbol*, std::vector < std::pair <SgOmpClause::omp_map_dist_data_enum, SgExpression*> > > get_dist_data_policies() const;
112223  void set_dist_data_policies(std::map<SgSymbol*, std::vector < std::pair <SgOmpClause::omp_map_dist_data_enum, SgExpression*> > > dist_data_policies);
112224 
112225 
112226  public:
112227  virtual ~SgOmpMapClause();
112228 
112229 
112230  public:
112231  SgOmpMapClause(Sg_File_Info* startOfConstruct , SgExprListExp* variables = NULL, SgOmpClause::omp_map_operator_enum operation =e_omp_map_unknown);
112232  SgOmpMapClause(SgExprListExp* variables, SgOmpClause::omp_map_operator_enum operation);
112233 
112234  protected:
112235 // Start of memberFunctionString
112236 SgOmpClause::omp_map_operator_enum p_operation;
112237 
112238 // End of memberFunctionString
112239 // Start of memberFunctionString
112240 std::map<SgSymbol*, std::vector < std::pair <SgExpression*, SgExpression*> > > p_array_dimensions;
112241 
112242 // End of memberFunctionString
112243 // Start of memberFunctionString
112244 std::map<SgSymbol*, std::vector < std::pair <SgOmpClause::omp_map_dist_data_enum, SgExpression*> > > p_dist_data_policies;
112245 
112246 // End of memberFunctionString
112247 
112248 
112249 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
112250 
112251 
112252  };
112253 #endif
112254 
112255 // postdeclarations for SgOmpMapClause
112256 
112257 /* #line 112258 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
112258 
112259 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
112260 
112261 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
112262 
112263 
112264 /* #line 112265 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
112265 
112266 
112267 
112268 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
112269 
112270 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
112271 // This code is automatically generated for each
112272 // terminal and non-terminal within the defined
112273 // grammar. There is a simple way to change the
112274 // code to fix bugs etc. See the ROSE README file
112275 // for directions.
112276 
112277 // tps: (02/22/2010): Adding DLL export requirements
112278 #include "rosedll.h"
112279 
112280 // predeclarations for SgOmpAllocateClause
112281 
112282 /* #line 112283 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
112283 
112284 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
112285 
112286 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
112287 
112288 #if 1
112289 // Class Definition for SgOmpAllocateClause
112290 class ROSE_DLL_API SgOmpAllocateClause : public SgOmpVariablesClause
112291  {
112292  public:
112293 
112294 
112295 /* #line 112296 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
112296 
112297  virtual SgNode* copy ( SgCopyHelp& help) const override;
112298 // Start of memberFunctionString
112299 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
112300 
112301 // *** COMMON CODE SECTION BEGINS HERE ***
112302 
112303  public:
112304 
112305  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
112306  // and not required which is required to match the other aspects of the copy mechanism code generation.
112307  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
112308  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
112309  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
112310  // virtual SgNode* copy ( const SgCopyHelp & help) const;
112311 
112313  virtual std::string class_name() const override;
112314 
112316  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
112317 
112319  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
112320  // static const VariantT static_variant = V_SgOmpAllocateClause;
112321  enum { static_variant = V_SgOmpAllocateClause };
112322 
112323  /* the generated cast function */
112325  ROSE_DLL_API friend SgOmpAllocateClause* isSgOmpAllocateClause( SgNode * s );
112326 
112328  ROSE_DLL_API friend const SgOmpAllocateClause* isSgOmpAllocateClause( const SgNode * s );
112329 
112330  // ******************************************
112331  // * Memory Pool / New / Delete
112332  // ******************************************
112333 
112334  public:
112336  static const unsigned pool_size; //
112338  static std::vector<unsigned char *> pools; //
112340  static SgOmpAllocateClause * next_node; //
112341 
112343  static unsigned long initializeStorageClassArray(SgOmpAllocateClauseStorageClass *); //
112344 
112346  static void clearMemoryPool(); //
112347  static void deleteMemoryPool(); //
112348 
112350  static void extendMemoryPoolForFileIO(); //
112351 
112353  static SgOmpAllocateClause * getPointerFromGlobalIndex(unsigned long); //
112355  static SgOmpAllocateClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
112356 
112358  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
112360  static void resetValidFreepointers(); //
112362  static unsigned long getNumberOfLastValidPointer(); //
112363 
112364 
112365 #if defined(INLINE_FUNCTIONS)
112366 
112367  inline void *operator new (size_t size);
112368 #else
112369 
112370  void *operator new (size_t size);
112371 #endif
112372 
112373  void operator delete (void* pointer, size_t size);
112374 
112375  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
112376  void operator delete (void* pointer)
112377  {
112378  // This is the generated delete operator...
112379  SgOmpAllocateClause::operator delete (pointer,sizeof(SgOmpAllocateClause));
112380  }
112381 
112383  static size_t numberOfNodes();
112384 
112386  static size_t memoryUsage();
112387 
112388  // End of scope which started in IR nodes specific code
112389  /* */
112390 
112391  /* name Internal Functions
112392  \brief Internal functions ... incomplete-documentation
112393 
112394  These functions have been made public as part of the design, but they are suggested for internal use
112395  or by particularly knowledgeable users for specialized tools or applications.
112396 
112397  \internal We could not make these private because they are required by user for special purposes. And
112398  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
112399 
112400  */
112401 
112402  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
112403  // overridden in every class by *generated* implementation
112405  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
112406  // MS: 06/28/02 container of names of variables or container indices
112407  // used used in the traversal to access AST successor nodes
112408  // overridden in every class by *generated* implementation
112411  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
112412 
112413  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
112414  // than all the vector copies. The implementation for these functions is generated for each class.
112416  virtual size_t get_numberOfTraversalSuccessors() override;
112418  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
112420  virtual size_t get_childIndex(SgNode *child) override;
112421 
112422 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
112423  // MS: 08/16/2002 method for generating RTI information
112425  virtual RTIReturnType roseRTI() override;
112426 #endif
112427  /* */
112428 
112429 
112430 
112431  /* name Deprecated Functions
112432  \brief Deprecated functions ... incomplete-documentation
112433 
112434  These functions have been deprecated from use.
112435  */
112436  /* */
112437 
112439  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
112440 
112441  // JJW (10/16/2008): Changed to a single function in Node.code, and put
112442  // getVariant() in #if 0 block to prevent confusing Doxygen
112443 #if 0
112444 
112445  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
112447  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
112448 #endif
112449  /* */
112450 
112451 
112452 
112453 
112454  public:
112455  /* name Traversal Support Functions
112456  \brief Traversal support functions ... incomplete-documentation
112457 
112458  These functions have been made public as part of the design, but they are suggested for internal use
112459  or by particularly knowledgable users for specialized tools or applications.
112460  */
112461  /* */
112462 
112463  // DQ (11/26/2005): Support for visitor pattern mechanims
112464  // (inferior to ROSE traversal mechanism, experimental).
112468 
112469  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
112471  virtual void accept (ROSE_VisitorPattern & visitor) override;
112472 
112473  // DQ (12/26/2005): Support for traversal based on the memory pool
112476  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
112477 
112480  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
112481 
112482  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
112483  // This traversal helps support internal tools that call static member functions.
112484  // note: this function operates on the memory pools.
112487  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
112488  /* */
112489 
112490 
112491  public:
112492  /* name Memory Allocation Functions
112493  \brief Memory allocations functions ... incomplete-documentation
112494 
112495  These functions have been made public as part of the design, but they are suggested for internal use
112496  or by particularly knowledgable users for specialized tools or applications.
112497  */
112498  /* */
112499 
112510  virtual bool isInMemoryPool() override;
112511 
112522  virtual void checkDataMemberPointersIfInMemoryPool() override;
112523 
112524  // DQ (4/30/2006): Modified to be a const function.
112539  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
112540 
112550  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
112551 
112563  virtual long getChildIndex( SgNode* childNode ) const override;
112564 
112565  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
112566  // comment here (changed to be a C style comment and not be a doxygen comment).
112567  /* \brief Constructor for use by AST File I/O Mechanism
112568 
112569  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
112570  which obtained via fast binary file I/O from disk.
112571  */
112572  // SgOmpAllocateClause( SgOmpAllocateClauseStorageClass& source );
112573 
112574 
112575 
112576 
112577 
112578  // JH (10/24/2005): methods added to support the ast file IO
112579  private:
112580 
112581  /* name AST Memory Allocation Support Functions
112582  \brief Memory allocations support....
112583 
112584  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
112585  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
112586  and support the AST File I/O Mechanism.
112587  */
112588  /* */
112589 
112590  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
112591  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
112592  that I use the same type everywhere, if any changes are made. THe second one declares the type
112593  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
112594  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
112595  a correspinding one in the AST_FILE_IO class!
112596  */
112597  // DQ (9/2/2015): This typedef is no longer used, we can't define the
112598  // comment here (changed to be a C style comment and not be a doxygen comment).
112599  /* \brief Typedef used for low level memory access.
112600  */
112601  // typedef unsigned char* TestType;
112602 
112603  // DQ (9/2/2015): This typedef is no longer used, we can't define the
112604  // comment here (changed to be a C style comment and not be a doxygen comment).
112605  /* \brief Typedef used to hold memory addresses as values.
112606  */
112607  // typedef unsigned long AddressType;
112608 
112609 
112610 
112611  // necessary, to have direct access to the p_freepointer and the private methods !
112613  friend class AST_FILE_IO;
112614 
112616  friend class SgOmpAllocateClauseStorageClass;
112617 
112619  friend class AstSpecificDataManagingClass;
112620 
112622  friend class AstSpecificDataManagingClassStorageClass;
112623 
112624  public:
112626  SgOmpAllocateClause( const SgOmpAllocateClauseStorageClass& source );
112627 
112628  // private: // JJW hack
112629  /*
112630  name AST Memory Allocation Support Variables
112631  Memory allocations support variables
112632 
112633  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
112634  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
112635  and support the AST File I/O Mechanism.
112636  */
112637  /* */
112638 
112639  public:
112640 
112641  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
112642  // to current node (so that it will work cleanly with build functions to specify patterns).
112643  // virtual SgNode* addRegExpAttribute();
112650 
112651 // *** COMMON CODE SECTION ENDS HERE ***
112652 
112653 
112654 // End of memberFunctionString
112655 // Start of memberFunctionString
112656 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
112657 
112658  // the generated cast function
112659  // friend ROSE_DLL_API SgOmpAllocateClause* isSgOmpAllocateClause ( SgNode* s );
112660 
112662 
112663 
112664 // End of memberFunctionString
112665 
112666  public:
112667  SgOmpClause::omp_allocate_modifier_enum get_modifier() const;
112668  void set_modifier(SgOmpClause::omp_allocate_modifier_enum modifier);
112669 
112670  public:
112671  SgExpression* get_user_defined_modifier() const;
112672  void set_user_defined_modifier(SgExpression* user_defined_modifier);
112673 
112674 
112675  public:
112676  virtual ~SgOmpAllocateClause();
112677 
112678 
112679  public:
112680  SgOmpAllocateClause(Sg_File_Info* startOfConstruct , SgExprListExp* variables = NULL, SgOmpClause::omp_allocate_modifier_enum modifier =e_omp_allocate_modifier_unknown, SgExpression* user_defined_modifier = NULL);
112681  SgOmpAllocateClause(SgExprListExp* variables, SgOmpClause::omp_allocate_modifier_enum modifier, SgExpression* user_defined_modifier);
112682 
112683  protected:
112684 // Start of memberFunctionString
112685 SgOmpClause::omp_allocate_modifier_enum p_modifier;
112686 
112687 // End of memberFunctionString
112688 // Start of memberFunctionString
112689 SgExpression* p_user_defined_modifier;
112690 
112691 // End of memberFunctionString
112692 
112693 
112694 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
112695 
112696 
112697  };
112698 #endif
112699 
112700 // postdeclarations for SgOmpAllocateClause
112701 
112702 /* #line 112703 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
112703 
112704 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
112705 
112706 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
112707 
112708 
112709 /* #line 112710 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
112710 
112711 
112712 
112713 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
112714 
112715 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
112716 // This code is automatically generated for each
112717 // terminal and non-terminal within the defined
112718 // grammar. There is a simple way to change the
112719 // code to fix bugs etc. See the ROSE README file
112720 // for directions.
112721 
112722 // tps: (02/22/2010): Adding DLL export requirements
112723 #include "rosedll.h"
112724 
112725 // predeclarations for SgOmpUniformClause
112726 
112727 /* #line 112728 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
112728 
112729 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
112730 
112731 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
112732 
112733 #if 1
112734 // Class Definition for SgOmpUniformClause
112735 class ROSE_DLL_API SgOmpUniformClause : public SgOmpVariablesClause
112736  {
112737  public:
112738 
112739 
112740 /* #line 112741 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
112741 
112742  virtual SgNode* copy ( SgCopyHelp& help) const override;
112743 // Start of memberFunctionString
112744 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
112745 
112746 // *** COMMON CODE SECTION BEGINS HERE ***
112747 
112748  public:
112749 
112750  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
112751  // and not required which is required to match the other aspects of the copy mechanism code generation.
112752  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
112753  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
112754  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
112755  // virtual SgNode* copy ( const SgCopyHelp & help) const;
112756 
112758  virtual std::string class_name() const override;
112759 
112761  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
112762 
112764  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
112765  // static const VariantT static_variant = V_SgOmpUniformClause;
112766  enum { static_variant = V_SgOmpUniformClause };
112767 
112768  /* the generated cast function */
112770  ROSE_DLL_API friend SgOmpUniformClause* isSgOmpUniformClause( SgNode * s );
112771 
112773  ROSE_DLL_API friend const SgOmpUniformClause* isSgOmpUniformClause( const SgNode * s );
112774 
112775  // ******************************************
112776  // * Memory Pool / New / Delete
112777  // ******************************************
112778 
112779  public:
112781  static const unsigned pool_size; //
112783  static std::vector<unsigned char *> pools; //
112785  static SgOmpUniformClause * next_node; //
112786 
112788  static unsigned long initializeStorageClassArray(SgOmpUniformClauseStorageClass *); //
112789 
112791  static void clearMemoryPool(); //
112792  static void deleteMemoryPool(); //
112793 
112795  static void extendMemoryPoolForFileIO(); //
112796 
112798  static SgOmpUniformClause * getPointerFromGlobalIndex(unsigned long); //
112800  static SgOmpUniformClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
112801 
112803  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
112805  static void resetValidFreepointers(); //
112807  static unsigned long getNumberOfLastValidPointer(); //
112808 
112809 
112810 #if defined(INLINE_FUNCTIONS)
112811 
112812  inline void *operator new (size_t size);
112813 #else
112814 
112815  void *operator new (size_t size);
112816 #endif
112817 
112818  void operator delete (void* pointer, size_t size);
112819 
112820  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
112821  void operator delete (void* pointer)
112822  {
112823  // This is the generated delete operator...
112824  SgOmpUniformClause::operator delete (pointer,sizeof(SgOmpUniformClause));
112825  }
112826 
112828  static size_t numberOfNodes();
112829 
112831  static size_t memoryUsage();
112832 
112833  // End of scope which started in IR nodes specific code
112834  /* */
112835 
112836  /* name Internal Functions
112837  \brief Internal functions ... incomplete-documentation
112838 
112839  These functions have been made public as part of the design, but they are suggested for internal use
112840  or by particularly knowledgeable users for specialized tools or applications.
112841 
112842  \internal We could not make these private because they are required by user for special purposes. And
112843  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
112844 
112845  */
112846 
112847  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
112848  // overridden in every class by *generated* implementation
112850  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
112851  // MS: 06/28/02 container of names of variables or container indices
112852  // used used in the traversal to access AST successor nodes
112853  // overridden in every class by *generated* implementation
112856  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
112857 
112858  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
112859  // than all the vector copies. The implementation for these functions is generated for each class.
112861  virtual size_t get_numberOfTraversalSuccessors() override;
112863  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
112865  virtual size_t get_childIndex(SgNode *child) override;
112866 
112867 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
112868  // MS: 08/16/2002 method for generating RTI information
112870  virtual RTIReturnType roseRTI() override;
112871 #endif
112872  /* */
112873 
112874 
112875 
112876  /* name Deprecated Functions
112877  \brief Deprecated functions ... incomplete-documentation
112878 
112879  These functions have been deprecated from use.
112880  */
112881  /* */
112882 
112884  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
112885 
112886  // JJW (10/16/2008): Changed to a single function in Node.code, and put
112887  // getVariant() in #if 0 block to prevent confusing Doxygen
112888 #if 0
112889 
112890  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
112892  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
112893 #endif
112894  /* */
112895 
112896 
112897 
112898 
112899  public:
112900  /* name Traversal Support Functions
112901  \brief Traversal support functions ... incomplete-documentation
112902 
112903  These functions have been made public as part of the design, but they are suggested for internal use
112904  or by particularly knowledgable users for specialized tools or applications.
112905  */
112906  /* */
112907 
112908  // DQ (11/26/2005): Support for visitor pattern mechanims
112909  // (inferior to ROSE traversal mechanism, experimental).
112913 
112914  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
112916  virtual void accept (ROSE_VisitorPattern & visitor) override;
112917 
112918  // DQ (12/26/2005): Support for traversal based on the memory pool
112921  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
112922 
112925  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
112926 
112927  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
112928  // This traversal helps support internal tools that call static member functions.
112929  // note: this function operates on the memory pools.
112932  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
112933  /* */
112934 
112935 
112936  public:
112937  /* name Memory Allocation Functions
112938  \brief Memory allocations functions ... incomplete-documentation
112939 
112940  These functions have been made public as part of the design, but they are suggested for internal use
112941  or by particularly knowledgable users for specialized tools or applications.
112942  */
112943  /* */
112944 
112955  virtual bool isInMemoryPool() override;
112956 
112967  virtual void checkDataMemberPointersIfInMemoryPool() override;
112968 
112969  // DQ (4/30/2006): Modified to be a const function.
112984  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
112985 
112995  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
112996 
113008  virtual long getChildIndex( SgNode* childNode ) const override;
113009 
113010  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
113011  // comment here (changed to be a C style comment and not be a doxygen comment).
113012  /* \brief Constructor for use by AST File I/O Mechanism
113013 
113014  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
113015  which obtained via fast binary file I/O from disk.
113016  */
113017  // SgOmpUniformClause( SgOmpUniformClauseStorageClass& source );
113018 
113019 
113020 
113021 
113022 
113023  // JH (10/24/2005): methods added to support the ast file IO
113024  private:
113025 
113026  /* name AST Memory Allocation Support Functions
113027  \brief Memory allocations support....
113028 
113029  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
113030  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
113031  and support the AST File I/O Mechanism.
113032  */
113033  /* */
113034 
113035  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
113036  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
113037  that I use the same type everywhere, if any changes are made. THe second one declares the type
113038  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
113039  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
113040  a correspinding one in the AST_FILE_IO class!
113041  */
113042  // DQ (9/2/2015): This typedef is no longer used, we can't define the
113043  // comment here (changed to be a C style comment and not be a doxygen comment).
113044  /* \brief Typedef used for low level memory access.
113045  */
113046  // typedef unsigned char* TestType;
113047 
113048  // DQ (9/2/2015): This typedef is no longer used, we can't define the
113049  // comment here (changed to be a C style comment and not be a doxygen comment).
113050  /* \brief Typedef used to hold memory addresses as values.
113051  */
113052  // typedef unsigned long AddressType;
113053 
113054 
113055 
113056  // necessary, to have direct access to the p_freepointer and the private methods !
113058  friend class AST_FILE_IO;
113059 
113061  friend class SgOmpUniformClauseStorageClass;
113062 
113064  friend class AstSpecificDataManagingClass;
113065 
113067  friend class AstSpecificDataManagingClassStorageClass;
113068 
113069  public:
113071  SgOmpUniformClause( const SgOmpUniformClauseStorageClass& source );
113072 
113073  // private: // JJW hack
113074  /*
113075  name AST Memory Allocation Support Variables
113076  Memory allocations support variables
113077 
113078  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
113079  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
113080  and support the AST File I/O Mechanism.
113081  */
113082  /* */
113083 
113084  public:
113085 
113086  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
113087  // to current node (so that it will work cleanly with build functions to specify patterns).
113088  // virtual SgNode* addRegExpAttribute();
113095 
113096 // *** COMMON CODE SECTION ENDS HERE ***
113097 
113098 
113099 // End of memberFunctionString
113100 // Start of memberFunctionString
113101 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
113102 
113103  // the generated cast function
113104  // friend ROSE_DLL_API SgOmpUniformClause* isSgOmpUniformClause ( SgNode* s );
113105 
113107 
113108 
113109 // End of memberFunctionString
113110 
113111 
113112  public:
113113  virtual ~SgOmpUniformClause();
113114 
113115 
113116  public:
113117  SgOmpUniformClause(Sg_File_Info* startOfConstruct , SgExprListExp* variables = NULL);
113118  SgOmpUniformClause(SgExprListExp* variables);
113119 
113120  protected:
113121 
113122 
113123 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
113124 
113125 
113126  };
113127 #endif
113128 
113129 // postdeclarations for SgOmpUniformClause
113130 
113131 /* #line 113132 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
113132 
113133 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
113134 
113135 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
113136 
113137 
113138 /* #line 113139 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
113139 
113140 
113141 
113142 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
113143 
113144 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
113145 // This code is automatically generated for each
113146 // terminal and non-terminal within the defined
113147 // grammar. There is a simple way to change the
113148 // code to fix bugs etc. See the ROSE README file
113149 // for directions.
113150 
113151 // tps: (02/22/2010): Adding DLL export requirements
113152 #include "rosedll.h"
113153 
113154 // predeclarations for SgOmpAlignedClause
113155 
113156 /* #line 113157 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
113157 
113158 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
113159 
113160 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
113161 
113162 #if 1
113163 // Class Definition for SgOmpAlignedClause
113164 class ROSE_DLL_API SgOmpAlignedClause : public SgOmpVariablesClause
113165  {
113166  public:
113167 
113168 
113169 /* #line 113170 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
113170 
113171  virtual SgNode* copy ( SgCopyHelp& help) const override;
113172 // Start of memberFunctionString
113173 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
113174 
113175 // *** COMMON CODE SECTION BEGINS HERE ***
113176 
113177  public:
113178 
113179  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
113180  // and not required which is required to match the other aspects of the copy mechanism code generation.
113181  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
113182  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
113183  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
113184  // virtual SgNode* copy ( const SgCopyHelp & help) const;
113185 
113187  virtual std::string class_name() const override;
113188 
113190  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
113191 
113193  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
113194  // static const VariantT static_variant = V_SgOmpAlignedClause;
113195  enum { static_variant = V_SgOmpAlignedClause };
113196 
113197  /* the generated cast function */
113199  ROSE_DLL_API friend SgOmpAlignedClause* isSgOmpAlignedClause( SgNode * s );
113200 
113202  ROSE_DLL_API friend const SgOmpAlignedClause* isSgOmpAlignedClause( const SgNode * s );
113203 
113204  // ******************************************
113205  // * Memory Pool / New / Delete
113206  // ******************************************
113207 
113208  public:
113210  static const unsigned pool_size; //
113212  static std::vector<unsigned char *> pools; //
113214  static SgOmpAlignedClause * next_node; //
113215 
113217  static unsigned long initializeStorageClassArray(SgOmpAlignedClauseStorageClass *); //
113218 
113220  static void clearMemoryPool(); //
113221  static void deleteMemoryPool(); //
113222 
113224  static void extendMemoryPoolForFileIO(); //
113225 
113227  static SgOmpAlignedClause * getPointerFromGlobalIndex(unsigned long); //
113229  static SgOmpAlignedClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
113230 
113232  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
113234  static void resetValidFreepointers(); //
113236  static unsigned long getNumberOfLastValidPointer(); //
113237 
113238 
113239 #if defined(INLINE_FUNCTIONS)
113240 
113241  inline void *operator new (size_t size);
113242 #else
113243 
113244  void *operator new (size_t size);
113245 #endif
113246 
113247  void operator delete (void* pointer, size_t size);
113248 
113249  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
113250  void operator delete (void* pointer)
113251  {
113252  // This is the generated delete operator...
113253  SgOmpAlignedClause::operator delete (pointer,sizeof(SgOmpAlignedClause));
113254  }
113255 
113257  static size_t numberOfNodes();
113258 
113260  static size_t memoryUsage();
113261 
113262  // End of scope which started in IR nodes specific code
113263  /* */
113264 
113265  /* name Internal Functions
113266  \brief Internal functions ... incomplete-documentation
113267 
113268  These functions have been made public as part of the design, but they are suggested for internal use
113269  or by particularly knowledgeable users for specialized tools or applications.
113270 
113271  \internal We could not make these private because they are required by user for special purposes. And
113272  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
113273 
113274  */
113275 
113276  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
113277  // overridden in every class by *generated* implementation
113279  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
113280  // MS: 06/28/02 container of names of variables or container indices
113281  // used used in the traversal to access AST successor nodes
113282  // overridden in every class by *generated* implementation
113285  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
113286 
113287  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
113288  // than all the vector copies. The implementation for these functions is generated for each class.
113290  virtual size_t get_numberOfTraversalSuccessors() override;
113292  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
113294  virtual size_t get_childIndex(SgNode *child) override;
113295 
113296 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
113297  // MS: 08/16/2002 method for generating RTI information
113299  virtual RTIReturnType roseRTI() override;
113300 #endif
113301  /* */
113302 
113303 
113304 
113305  /* name Deprecated Functions
113306  \brief Deprecated functions ... incomplete-documentation
113307 
113308  These functions have been deprecated from use.
113309  */
113310  /* */
113311 
113313  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
113314 
113315  // JJW (10/16/2008): Changed to a single function in Node.code, and put
113316  // getVariant() in #if 0 block to prevent confusing Doxygen
113317 #if 0
113318 
113319  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
113321  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
113322 #endif
113323  /* */
113324 
113325 
113326 
113327 
113328  public:
113329  /* name Traversal Support Functions
113330  \brief Traversal support functions ... incomplete-documentation
113331 
113332  These functions have been made public as part of the design, but they are suggested for internal use
113333  or by particularly knowledgable users for specialized tools or applications.
113334  */
113335  /* */
113336 
113337  // DQ (11/26/2005): Support for visitor pattern mechanims
113338  // (inferior to ROSE traversal mechanism, experimental).
113342 
113343  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
113345  virtual void accept (ROSE_VisitorPattern & visitor) override;
113346 
113347  // DQ (12/26/2005): Support for traversal based on the memory pool
113350  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
113351 
113354  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
113355 
113356  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
113357  // This traversal helps support internal tools that call static member functions.
113358  // note: this function operates on the memory pools.
113361  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
113362  /* */
113363 
113364 
113365  public:
113366  /* name Memory Allocation Functions
113367  \brief Memory allocations functions ... incomplete-documentation
113368 
113369  These functions have been made public as part of the design, but they are suggested for internal use
113370  or by particularly knowledgable users for specialized tools or applications.
113371  */
113372  /* */
113373 
113384  virtual bool isInMemoryPool() override;
113385 
113396  virtual void checkDataMemberPointersIfInMemoryPool() override;
113397 
113398  // DQ (4/30/2006): Modified to be a const function.
113413  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
113414 
113424  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
113425 
113437  virtual long getChildIndex( SgNode* childNode ) const override;
113438 
113439  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
113440  // comment here (changed to be a C style comment and not be a doxygen comment).
113441  /* \brief Constructor for use by AST File I/O Mechanism
113442 
113443  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
113444  which obtained via fast binary file I/O from disk.
113445  */
113446  // SgOmpAlignedClause( SgOmpAlignedClauseStorageClass& source );
113447 
113448 
113449 
113450 
113451 
113452  // JH (10/24/2005): methods added to support the ast file IO
113453  private:
113454 
113455  /* name AST Memory Allocation Support Functions
113456  \brief Memory allocations support....
113457 
113458  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
113459  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
113460  and support the AST File I/O Mechanism.
113461  */
113462  /* */
113463 
113464  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
113465  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
113466  that I use the same type everywhere, if any changes are made. THe second one declares the type
113467  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
113468  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
113469  a correspinding one in the AST_FILE_IO class!
113470  */
113471  // DQ (9/2/2015): This typedef is no longer used, we can't define the
113472  // comment here (changed to be a C style comment and not be a doxygen comment).
113473  /* \brief Typedef used for low level memory access.
113474  */
113475  // typedef unsigned char* TestType;
113476 
113477  // DQ (9/2/2015): This typedef is no longer used, we can't define the
113478  // comment here (changed to be a C style comment and not be a doxygen comment).
113479  /* \brief Typedef used to hold memory addresses as values.
113480  */
113481  // typedef unsigned long AddressType;
113482 
113483 
113484 
113485  // necessary, to have direct access to the p_freepointer and the private methods !
113487  friend class AST_FILE_IO;
113488 
113490  friend class SgOmpAlignedClauseStorageClass;
113491 
113493  friend class AstSpecificDataManagingClass;
113494 
113496  friend class AstSpecificDataManagingClassStorageClass;
113497 
113498  public:
113500  SgOmpAlignedClause( const SgOmpAlignedClauseStorageClass& source );
113501 
113502  // private: // JJW hack
113503  /*
113504  name AST Memory Allocation Support Variables
113505  Memory allocations support variables
113506 
113507  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
113508  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
113509  and support the AST File I/O Mechanism.
113510  */
113511  /* */
113512 
113513  public:
113514 
113515  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
113516  // to current node (so that it will work cleanly with build functions to specify patterns).
113517  // virtual SgNode* addRegExpAttribute();
113524 
113525 // *** COMMON CODE SECTION ENDS HERE ***
113526 
113527 
113528 // End of memberFunctionString
113529 // Start of memberFunctionString
113530 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
113531 
113532  // the generated cast function
113533  // friend ROSE_DLL_API SgOmpAlignedClause* isSgOmpAlignedClause ( SgNode* s );
113534 
113536 
113537 
113538 // End of memberFunctionString
113539 
113540  public:
113541  SgExpression* get_alignment() const;
113542  void set_alignment(SgExpression* alignment);
113543 
113544 
113545  public:
113546  virtual ~SgOmpAlignedClause();
113547 
113548 
113549  public:
113550  SgOmpAlignedClause(Sg_File_Info* startOfConstruct , SgExprListExp* variables = NULL, SgExpression* alignment = NULL);
113551  SgOmpAlignedClause(SgExprListExp* variables, SgExpression* alignment);
113552 
113553  protected:
113554 // Start of memberFunctionString
113555 SgExpression* p_alignment;
113556 
113557 // End of memberFunctionString
113558 
113559 
113560 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
113561 
113562 
113563  };
113564 #endif
113565 
113566 // postdeclarations for SgOmpAlignedClause
113567 
113568 /* #line 113569 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
113569 
113570 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
113571 
113572 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
113573 
113574 
113575 /* #line 113576 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
113576 
113577 
113578 
113579 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
113580 
113581 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
113582 // This code is automatically generated for each
113583 // terminal and non-terminal within the defined
113584 // grammar. There is a simple way to change the
113585 // code to fix bugs etc. See the ROSE README file
113586 // for directions.
113587 
113588 // tps: (02/22/2010): Adding DLL export requirements
113589 #include "rosedll.h"
113590 
113591 // predeclarations for SgOmpLinearClause
113592 
113593 /* #line 113594 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
113594 
113595 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
113596 
113597 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
113598 
113599 #if 1
113600 // Class Definition for SgOmpLinearClause
113601 class ROSE_DLL_API SgOmpLinearClause : public SgOmpVariablesClause
113602  {
113603  public:
113604 
113605 
113606 /* #line 113607 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
113607 
113608  virtual SgNode* copy ( SgCopyHelp& help) const override;
113609 // Start of memberFunctionString
113610 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
113611 
113612 // *** COMMON CODE SECTION BEGINS HERE ***
113613 
113614  public:
113615 
113616  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
113617  // and not required which is required to match the other aspects of the copy mechanism code generation.
113618  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
113619  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
113620  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
113621  // virtual SgNode* copy ( const SgCopyHelp & help) const;
113622 
113624  virtual std::string class_name() const override;
113625 
113627  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
113628 
113630  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
113631  // static const VariantT static_variant = V_SgOmpLinearClause;
113632  enum { static_variant = V_SgOmpLinearClause };
113633 
113634  /* the generated cast function */
113636  ROSE_DLL_API friend SgOmpLinearClause* isSgOmpLinearClause( SgNode * s );
113637 
113639  ROSE_DLL_API friend const SgOmpLinearClause* isSgOmpLinearClause( const SgNode * s );
113640 
113641  // ******************************************
113642  // * Memory Pool / New / Delete
113643  // ******************************************
113644 
113645  public:
113647  static const unsigned pool_size; //
113649  static std::vector<unsigned char *> pools; //
113651  static SgOmpLinearClause * next_node; //
113652 
113654  static unsigned long initializeStorageClassArray(SgOmpLinearClauseStorageClass *); //
113655 
113657  static void clearMemoryPool(); //
113658  static void deleteMemoryPool(); //
113659 
113661  static void extendMemoryPoolForFileIO(); //
113662 
113664  static SgOmpLinearClause * getPointerFromGlobalIndex(unsigned long); //
113666  static SgOmpLinearClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
113667 
113669  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
113671  static void resetValidFreepointers(); //
113673  static unsigned long getNumberOfLastValidPointer(); //
113674 
113675 
113676 #if defined(INLINE_FUNCTIONS)
113677 
113678  inline void *operator new (size_t size);
113679 #else
113680 
113681  void *operator new (size_t size);
113682 #endif
113683 
113684  void operator delete (void* pointer, size_t size);
113685 
113686  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
113687  void operator delete (void* pointer)
113688  {
113689  // This is the generated delete operator...
113690  SgOmpLinearClause::operator delete (pointer,sizeof(SgOmpLinearClause));
113691  }
113692 
113694  static size_t numberOfNodes();
113695 
113697  static size_t memoryUsage();
113698 
113699  // End of scope which started in IR nodes specific code
113700  /* */
113701 
113702  /* name Internal Functions
113703  \brief Internal functions ... incomplete-documentation
113704 
113705  These functions have been made public as part of the design, but they are suggested for internal use
113706  or by particularly knowledgeable users for specialized tools or applications.
113707 
113708  \internal We could not make these private because they are required by user for special purposes. And
113709  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
113710 
113711  */
113712 
113713  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
113714  // overridden in every class by *generated* implementation
113716  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
113717  // MS: 06/28/02 container of names of variables or container indices
113718  // used used in the traversal to access AST successor nodes
113719  // overridden in every class by *generated* implementation
113722  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
113723 
113724  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
113725  // than all the vector copies. The implementation for these functions is generated for each class.
113727  virtual size_t get_numberOfTraversalSuccessors() override;
113729  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
113731  virtual size_t get_childIndex(SgNode *child) override;
113732 
113733 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
113734  // MS: 08/16/2002 method for generating RTI information
113736  virtual RTIReturnType roseRTI() override;
113737 #endif
113738  /* */
113739 
113740 
113741 
113742  /* name Deprecated Functions
113743  \brief Deprecated functions ... incomplete-documentation
113744 
113745  These functions have been deprecated from use.
113746  */
113747  /* */
113748 
113750  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
113751 
113752  // JJW (10/16/2008): Changed to a single function in Node.code, and put
113753  // getVariant() in #if 0 block to prevent confusing Doxygen
113754 #if 0
113755 
113756  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
113758  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
113759 #endif
113760  /* */
113761 
113762 
113763 
113764 
113765  public:
113766  /* name Traversal Support Functions
113767  \brief Traversal support functions ... incomplete-documentation
113768 
113769  These functions have been made public as part of the design, but they are suggested for internal use
113770  or by particularly knowledgable users for specialized tools or applications.
113771  */
113772  /* */
113773 
113774  // DQ (11/26/2005): Support for visitor pattern mechanims
113775  // (inferior to ROSE traversal mechanism, experimental).
113779 
113780  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
113782  virtual void accept (ROSE_VisitorPattern & visitor) override;
113783 
113784  // DQ (12/26/2005): Support for traversal based on the memory pool
113787  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
113788 
113791  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
113792 
113793  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
113794  // This traversal helps support internal tools that call static member functions.
113795  // note: this function operates on the memory pools.
113798  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
113799  /* */
113800 
113801 
113802  public:
113803  /* name Memory Allocation Functions
113804  \brief Memory allocations functions ... incomplete-documentation
113805 
113806  These functions have been made public as part of the design, but they are suggested for internal use
113807  or by particularly knowledgable users for specialized tools or applications.
113808  */
113809  /* */
113810 
113821  virtual bool isInMemoryPool() override;
113822 
113833  virtual void checkDataMemberPointersIfInMemoryPool() override;
113834 
113835  // DQ (4/30/2006): Modified to be a const function.
113850  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
113851 
113861  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
113862 
113874  virtual long getChildIndex( SgNode* childNode ) const override;
113875 
113876  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
113877  // comment here (changed to be a C style comment and not be a doxygen comment).
113878  /* \brief Constructor for use by AST File I/O Mechanism
113879 
113880  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
113881  which obtained via fast binary file I/O from disk.
113882  */
113883  // SgOmpLinearClause( SgOmpLinearClauseStorageClass& source );
113884 
113885 
113886 
113887 
113888 
113889  // JH (10/24/2005): methods added to support the ast file IO
113890  private:
113891 
113892  /* name AST Memory Allocation Support Functions
113893  \brief Memory allocations support....
113894 
113895  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
113896  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
113897  and support the AST File I/O Mechanism.
113898  */
113899  /* */
113900 
113901  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
113902  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
113903  that I use the same type everywhere, if any changes are made. THe second one declares the type
113904  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
113905  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
113906  a correspinding one in the AST_FILE_IO class!
113907  */
113908  // DQ (9/2/2015): This typedef is no longer used, we can't define the
113909  // comment here (changed to be a C style comment and not be a doxygen comment).
113910  /* \brief Typedef used for low level memory access.
113911  */
113912  // typedef unsigned char* TestType;
113913 
113914  // DQ (9/2/2015): This typedef is no longer used, we can't define the
113915  // comment here (changed to be a C style comment and not be a doxygen comment).
113916  /* \brief Typedef used to hold memory addresses as values.
113917  */
113918  // typedef unsigned long AddressType;
113919 
113920 
113921 
113922  // necessary, to have direct access to the p_freepointer and the private methods !
113924  friend class AST_FILE_IO;
113925 
113927  friend class SgOmpLinearClauseStorageClass;
113928 
113930  friend class AstSpecificDataManagingClass;
113931 
113933  friend class AstSpecificDataManagingClassStorageClass;
113934 
113935  public:
113937  SgOmpLinearClause( const SgOmpLinearClauseStorageClass& source );
113938 
113939  // private: // JJW hack
113940  /*
113941  name AST Memory Allocation Support Variables
113942  Memory allocations support variables
113943 
113944  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
113945  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
113946  and support the AST File I/O Mechanism.
113947  */
113948  /* */
113949 
113950  public:
113951 
113952  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
113953  // to current node (so that it will work cleanly with build functions to specify patterns).
113954  // virtual SgNode* addRegExpAttribute();
113961 
113962 // *** COMMON CODE SECTION ENDS HERE ***
113963 
113964 
113965 // End of memberFunctionString
113966 // Start of memberFunctionString
113967 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
113968 
113969  // the generated cast function
113970  // friend ROSE_DLL_API SgOmpLinearClause* isSgOmpLinearClause ( SgNode* s );
113971 
113973 
113974 
113975 // End of memberFunctionString
113976 
113977  public:
113978  SgExpression* get_step() const;
113979  void set_step(SgExpression* step);
113980 
113981  public:
113982  SgOmpClause::omp_linear_modifier_enum get_modifier() const;
113983  void set_modifier(SgOmpClause::omp_linear_modifier_enum modifier);
113984 
113985 
113986  public:
113987  virtual ~SgOmpLinearClause();
113988 
113989 
113990  public:
113991  SgOmpLinearClause(Sg_File_Info* startOfConstruct , SgExprListExp* variables = NULL, SgExpression* step = NULL, SgOmpClause::omp_linear_modifier_enum modifier =e_omp_linear_modifier_unspecified);
113992  SgOmpLinearClause(SgExprListExp* variables, SgExpression* step, SgOmpClause::omp_linear_modifier_enum modifier);
113993 
113994  protected:
113995 // Start of memberFunctionString
113996 SgExpression* p_step;
113997 
113998 // End of memberFunctionString
113999 // Start of memberFunctionString
114000 SgOmpClause::omp_linear_modifier_enum p_modifier;
114001 
114002 // End of memberFunctionString
114003 
114004 
114005 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
114006 
114007 
114008  };
114009 #endif
114010 
114011 // postdeclarations for SgOmpLinearClause
114012 
114013 /* #line 114014 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
114014 
114015 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
114016 
114017 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
114018 
114019 
114020 /* #line 114021 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
114021 
114022 
114023 
114024 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
114025 
114026 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
114027 // This code is automatically generated for each
114028 // terminal and non-terminal within the defined
114029 // grammar. There is a simple way to change the
114030 // code to fix bugs etc. See the ROSE README file
114031 // for directions.
114032 
114033 // tps: (02/22/2010): Adding DLL export requirements
114034 #include "rosedll.h"
114035 
114036 // predeclarations for SgOmpDependClause
114037 
114038 /* #line 114039 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
114039 
114040 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
114041 
114042 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
114043 
114044 #if 1
114045 // Class Definition for SgOmpDependClause
114046 class ROSE_DLL_API SgOmpDependClause : public SgOmpVariablesClause
114047  {
114048  public:
114049 
114050 
114051 /* #line 114052 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
114052 
114053  virtual SgNode* copy ( SgCopyHelp& help) const override;
114054 // Start of memberFunctionString
114055 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
114056 
114057 // *** COMMON CODE SECTION BEGINS HERE ***
114058 
114059  public:
114060 
114061  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
114062  // and not required which is required to match the other aspects of the copy mechanism code generation.
114063  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
114064  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
114065  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
114066  // virtual SgNode* copy ( const SgCopyHelp & help) const;
114067 
114069  virtual std::string class_name() const override;
114070 
114072  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
114073 
114075  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
114076  // static const VariantT static_variant = V_SgOmpDependClause;
114077  enum { static_variant = V_SgOmpDependClause };
114078 
114079  /* the generated cast function */
114081  ROSE_DLL_API friend SgOmpDependClause* isSgOmpDependClause( SgNode * s );
114082 
114084  ROSE_DLL_API friend const SgOmpDependClause* isSgOmpDependClause( const SgNode * s );
114085 
114086  // ******************************************
114087  // * Memory Pool / New / Delete
114088  // ******************************************
114089 
114090  public:
114092  static const unsigned pool_size; //
114094  static std::vector<unsigned char *> pools; //
114096  static SgOmpDependClause * next_node; //
114097 
114099  static unsigned long initializeStorageClassArray(SgOmpDependClauseStorageClass *); //
114100 
114102  static void clearMemoryPool(); //
114103  static void deleteMemoryPool(); //
114104 
114106  static void extendMemoryPoolForFileIO(); //
114107 
114109  static SgOmpDependClause * getPointerFromGlobalIndex(unsigned long); //
114111  static SgOmpDependClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
114112 
114114  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
114116  static void resetValidFreepointers(); //
114118  static unsigned long getNumberOfLastValidPointer(); //
114119 
114120 
114121 #if defined(INLINE_FUNCTIONS)
114122 
114123  inline void *operator new (size_t size);
114124 #else
114125 
114126  void *operator new (size_t size);
114127 #endif
114128 
114129  void operator delete (void* pointer, size_t size);
114130 
114131  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
114132  void operator delete (void* pointer)
114133  {
114134  // This is the generated delete operator...
114135  SgOmpDependClause::operator delete (pointer,sizeof(SgOmpDependClause));
114136  }
114137 
114139  static size_t numberOfNodes();
114140 
114142  static size_t memoryUsage();
114143 
114144  // End of scope which started in IR nodes specific code
114145  /* */
114146 
114147  /* name Internal Functions
114148  \brief Internal functions ... incomplete-documentation
114149 
114150  These functions have been made public as part of the design, but they are suggested for internal use
114151  or by particularly knowledgeable users for specialized tools or applications.
114152 
114153  \internal We could not make these private because they are required by user for special purposes. And
114154  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
114155 
114156  */
114157 
114158  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
114159  // overridden in every class by *generated* implementation
114161  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
114162  // MS: 06/28/02 container of names of variables or container indices
114163  // used used in the traversal to access AST successor nodes
114164  // overridden in every class by *generated* implementation
114167  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
114168 
114169  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
114170  // than all the vector copies. The implementation for these functions is generated for each class.
114172  virtual size_t get_numberOfTraversalSuccessors() override;
114174  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
114176  virtual size_t get_childIndex(SgNode *child) override;
114177 
114178 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
114179  // MS: 08/16/2002 method for generating RTI information
114181  virtual RTIReturnType roseRTI() override;
114182 #endif
114183  /* */
114184 
114185 
114186 
114187  /* name Deprecated Functions
114188  \brief Deprecated functions ... incomplete-documentation
114189 
114190  These functions have been deprecated from use.
114191  */
114192  /* */
114193 
114195  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
114196 
114197  // JJW (10/16/2008): Changed to a single function in Node.code, and put
114198  // getVariant() in #if 0 block to prevent confusing Doxygen
114199 #if 0
114200 
114201  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
114203  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
114204 #endif
114205  /* */
114206 
114207 
114208 
114209 
114210  public:
114211  /* name Traversal Support Functions
114212  \brief Traversal support functions ... incomplete-documentation
114213 
114214  These functions have been made public as part of the design, but they are suggested for internal use
114215  or by particularly knowledgable users for specialized tools or applications.
114216  */
114217  /* */
114218 
114219  // DQ (11/26/2005): Support for visitor pattern mechanims
114220  // (inferior to ROSE traversal mechanism, experimental).
114224 
114225  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
114227  virtual void accept (ROSE_VisitorPattern & visitor) override;
114228 
114229  // DQ (12/26/2005): Support for traversal based on the memory pool
114232  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
114233 
114236  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
114237 
114238  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
114239  // This traversal helps support internal tools that call static member functions.
114240  // note: this function operates on the memory pools.
114243  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
114244  /* */
114245 
114246 
114247  public:
114248  /* name Memory Allocation Functions
114249  \brief Memory allocations functions ... incomplete-documentation
114250 
114251  These functions have been made public as part of the design, but they are suggested for internal use
114252  or by particularly knowledgable users for specialized tools or applications.
114253  */
114254  /* */
114255 
114266  virtual bool isInMemoryPool() override;
114267 
114278  virtual void checkDataMemberPointersIfInMemoryPool() override;
114279 
114280  // DQ (4/30/2006): Modified to be a const function.
114295  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
114296 
114306  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
114307 
114319  virtual long getChildIndex( SgNode* childNode ) const override;
114320 
114321  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
114322  // comment here (changed to be a C style comment and not be a doxygen comment).
114323  /* \brief Constructor for use by AST File I/O Mechanism
114324 
114325  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
114326  which obtained via fast binary file I/O from disk.
114327  */
114328  // SgOmpDependClause( SgOmpDependClauseStorageClass& source );
114329 
114330 
114331 
114332 
114333 
114334  // JH (10/24/2005): methods added to support the ast file IO
114335  private:
114336 
114337  /* name AST Memory Allocation Support Functions
114338  \brief Memory allocations support....
114339 
114340  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
114341  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
114342  and support the AST File I/O Mechanism.
114343  */
114344  /* */
114345 
114346  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
114347  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
114348  that I use the same type everywhere, if any changes are made. THe second one declares the type
114349  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
114350  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
114351  a correspinding one in the AST_FILE_IO class!
114352  */
114353  // DQ (9/2/2015): This typedef is no longer used, we can't define the
114354  // comment here (changed to be a C style comment and not be a doxygen comment).
114355  /* \brief Typedef used for low level memory access.
114356  */
114357  // typedef unsigned char* TestType;
114358 
114359  // DQ (9/2/2015): This typedef is no longer used, we can't define the
114360  // comment here (changed to be a C style comment and not be a doxygen comment).
114361  /* \brief Typedef used to hold memory addresses as values.
114362  */
114363  // typedef unsigned long AddressType;
114364 
114365 
114366 
114367  // necessary, to have direct access to the p_freepointer and the private methods !
114369  friend class AST_FILE_IO;
114370 
114372  friend class SgOmpDependClauseStorageClass;
114373 
114375  friend class AstSpecificDataManagingClass;
114376 
114378  friend class AstSpecificDataManagingClassStorageClass;
114379 
114380  public:
114382  SgOmpDependClause( const SgOmpDependClauseStorageClass& source );
114383 
114384  // private: // JJW hack
114385  /*
114386  name AST Memory Allocation Support Variables
114387  Memory allocations support variables
114388 
114389  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
114390  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
114391  and support the AST File I/O Mechanism.
114392  */
114393  /* */
114394 
114395  public:
114396 
114397  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
114398  // to current node (so that it will work cleanly with build functions to specify patterns).
114399  // virtual SgNode* addRegExpAttribute();
114406 
114407 // *** COMMON CODE SECTION ENDS HERE ***
114408 
114409 
114410 // End of memberFunctionString
114411 // Start of memberFunctionString
114412 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
114413 
114414  // the generated cast function
114415  // friend ROSE_DLL_API SgOmpDependClause* isSgOmpDependClause ( SgNode* s );
114416 
114418 
114419 
114420 // End of memberFunctionString
114421 
114422  public:
114423  SgOmpClause::omp_depend_modifier_enum get_depend_modifier() const;
114424  void set_depend_modifier(SgOmpClause::omp_depend_modifier_enum depend_modifier);
114425 
114426  public:
114427  SgOmpClause::omp_dependence_type_enum get_dependence_type() const;
114428  void set_dependence_type(SgOmpClause::omp_dependence_type_enum dependence_type);
114429 
114430  public:
114431  std::list<std::list<SgExpression*> > get_iterator() const;
114432  void set_iterator(std::list<std::list<SgExpression*> > iterator);
114433 
114434  public:
114435  std::map<SgSymbol*, std::vector < std::pair <SgExpression*, SgExpression*> > > get_array_dimensions() const;
114436  void set_array_dimensions(std::map<SgSymbol*, std::vector < std::pair <SgExpression*, SgExpression*> > > array_dimensions);
114437 
114438  public:
114439  std::list<SgExpression*> get_vec() const;
114440  void set_vec(std::list<SgExpression*> vec);
114441 
114442 
114443  public:
114444  virtual ~SgOmpDependClause();
114445 
114446 
114447  public:
114448  SgOmpDependClause(Sg_File_Info* startOfConstruct , SgExprListExp* variables = NULL, SgOmpClause::omp_depend_modifier_enum depend_modifier =e_omp_depend_modifier_unspecified, SgOmpClause::omp_dependence_type_enum dependence_type =e_omp_depend_unspecified);
114449  SgOmpDependClause(SgExprListExp* variables, SgOmpClause::omp_depend_modifier_enum depend_modifier, SgOmpClause::omp_dependence_type_enum dependence_type);
114450 
114451  protected:
114452 // Start of memberFunctionString
114453 SgOmpClause::omp_depend_modifier_enum p_depend_modifier;
114454 
114455 // End of memberFunctionString
114456 // Start of memberFunctionString
114457 SgOmpClause::omp_dependence_type_enum p_dependence_type;
114458 
114459 // End of memberFunctionString
114460 // Start of memberFunctionString
114461 std::list<std::list<SgExpression*> > p_iterator;
114462 
114463 // End of memberFunctionString
114464 // Start of memberFunctionString
114465 std::map<SgSymbol*, std::vector < std::pair <SgExpression*, SgExpression*> > > p_array_dimensions;
114466 
114467 // End of memberFunctionString
114468 // Start of memberFunctionString
114469 std::list<SgExpression*> p_vec;
114470 
114471 // End of memberFunctionString
114472 
114473 
114474 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
114475 
114476 
114477  };
114478 #endif
114479 
114480 // postdeclarations for SgOmpDependClause
114481 
114482 /* #line 114483 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
114483 
114484 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
114485 
114486 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
114487 
114488 
114489 /* #line 114490 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
114490 
114491 
114492 
114493 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
114494 
114495 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
114496 // This code is automatically generated for each
114497 // terminal and non-terminal within the defined
114498 // grammar. There is a simple way to change the
114499 // code to fix bugs etc. See the ROSE README file
114500 // for directions.
114501 
114502 // tps: (02/22/2010): Adding DLL export requirements
114503 #include "rosedll.h"
114504 
114505 // predeclarations for SgOmpAffinityClause
114506 
114507 /* #line 114508 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
114508 
114509 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
114510 
114511 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
114512 
114513 #if 1
114514 // Class Definition for SgOmpAffinityClause
114515 class ROSE_DLL_API SgOmpAffinityClause : public SgOmpVariablesClause
114516  {
114517  public:
114518 
114519 
114520 /* #line 114521 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
114521 
114522  virtual SgNode* copy ( SgCopyHelp& help) const override;
114523 // Start of memberFunctionString
114524 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
114525 
114526 // *** COMMON CODE SECTION BEGINS HERE ***
114527 
114528  public:
114529 
114530  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
114531  // and not required which is required to match the other aspects of the copy mechanism code generation.
114532  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
114533  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
114534  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
114535  // virtual SgNode* copy ( const SgCopyHelp & help) const;
114536 
114538  virtual std::string class_name() const override;
114539 
114541  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
114542 
114544  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
114545  // static const VariantT static_variant = V_SgOmpAffinityClause;
114546  enum { static_variant = V_SgOmpAffinityClause };
114547 
114548  /* the generated cast function */
114550  ROSE_DLL_API friend SgOmpAffinityClause* isSgOmpAffinityClause( SgNode * s );
114551 
114553  ROSE_DLL_API friend const SgOmpAffinityClause* isSgOmpAffinityClause( const SgNode * s );
114554 
114555  // ******************************************
114556  // * Memory Pool / New / Delete
114557  // ******************************************
114558 
114559  public:
114561  static const unsigned pool_size; //
114563  static std::vector<unsigned char *> pools; //
114565  static SgOmpAffinityClause * next_node; //
114566 
114568  static unsigned long initializeStorageClassArray(SgOmpAffinityClauseStorageClass *); //
114569 
114571  static void clearMemoryPool(); //
114572  static void deleteMemoryPool(); //
114573 
114575  static void extendMemoryPoolForFileIO(); //
114576 
114578  static SgOmpAffinityClause * getPointerFromGlobalIndex(unsigned long); //
114580  static SgOmpAffinityClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
114581 
114583  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
114585  static void resetValidFreepointers(); //
114587  static unsigned long getNumberOfLastValidPointer(); //
114588 
114589 
114590 #if defined(INLINE_FUNCTIONS)
114591 
114592  inline void *operator new (size_t size);
114593 #else
114594 
114595  void *operator new (size_t size);
114596 #endif
114597 
114598  void operator delete (void* pointer, size_t size);
114599 
114600  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
114601  void operator delete (void* pointer)
114602  {
114603  // This is the generated delete operator...
114604  SgOmpAffinityClause::operator delete (pointer,sizeof(SgOmpAffinityClause));
114605  }
114606 
114608  static size_t numberOfNodes();
114609 
114611  static size_t memoryUsage();
114612 
114613  // End of scope which started in IR nodes specific code
114614  /* */
114615 
114616  /* name Internal Functions
114617  \brief Internal functions ... incomplete-documentation
114618 
114619  These functions have been made public as part of the design, but they are suggested for internal use
114620  or by particularly knowledgeable users for specialized tools or applications.
114621 
114622  \internal We could not make these private because they are required by user for special purposes. And
114623  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
114624 
114625  */
114626 
114627  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
114628  // overridden in every class by *generated* implementation
114630  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
114631  // MS: 06/28/02 container of names of variables or container indices
114632  // used used in the traversal to access AST successor nodes
114633  // overridden in every class by *generated* implementation
114636  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
114637 
114638  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
114639  // than all the vector copies. The implementation for these functions is generated for each class.
114641  virtual size_t get_numberOfTraversalSuccessors() override;
114643  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
114645  virtual size_t get_childIndex(SgNode *child) override;
114646 
114647 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
114648  // MS: 08/16/2002 method for generating RTI information
114650  virtual RTIReturnType roseRTI() override;
114651 #endif
114652  /* */
114653 
114654 
114655 
114656  /* name Deprecated Functions
114657  \brief Deprecated functions ... incomplete-documentation
114658 
114659  These functions have been deprecated from use.
114660  */
114661  /* */
114662 
114664  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
114665 
114666  // JJW (10/16/2008): Changed to a single function in Node.code, and put
114667  // getVariant() in #if 0 block to prevent confusing Doxygen
114668 #if 0
114669 
114670  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
114672  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
114673 #endif
114674  /* */
114675 
114676 
114677 
114678 
114679  public:
114680  /* name Traversal Support Functions
114681  \brief Traversal support functions ... incomplete-documentation
114682 
114683  These functions have been made public as part of the design, but they are suggested for internal use
114684  or by particularly knowledgable users for specialized tools or applications.
114685  */
114686  /* */
114687 
114688  // DQ (11/26/2005): Support for visitor pattern mechanims
114689  // (inferior to ROSE traversal mechanism, experimental).
114693 
114694  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
114696  virtual void accept (ROSE_VisitorPattern & visitor) override;
114697 
114698  // DQ (12/26/2005): Support for traversal based on the memory pool
114701  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
114702 
114705  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
114706 
114707  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
114708  // This traversal helps support internal tools that call static member functions.
114709  // note: this function operates on the memory pools.
114712  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
114713  /* */
114714 
114715 
114716  public:
114717  /* name Memory Allocation Functions
114718  \brief Memory allocations functions ... incomplete-documentation
114719 
114720  These functions have been made public as part of the design, but they are suggested for internal use
114721  or by particularly knowledgable users for specialized tools or applications.
114722  */
114723  /* */
114724 
114735  virtual bool isInMemoryPool() override;
114736 
114747  virtual void checkDataMemberPointersIfInMemoryPool() override;
114748 
114749  // DQ (4/30/2006): Modified to be a const function.
114764  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
114765 
114775  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
114776 
114788  virtual long getChildIndex( SgNode* childNode ) const override;
114789 
114790  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
114791  // comment here (changed to be a C style comment and not be a doxygen comment).
114792  /* \brief Constructor for use by AST File I/O Mechanism
114793 
114794  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
114795  which obtained via fast binary file I/O from disk.
114796  */
114797  // SgOmpAffinityClause( SgOmpAffinityClauseStorageClass& source );
114798 
114799 
114800 
114801 
114802 
114803  // JH (10/24/2005): methods added to support the ast file IO
114804  private:
114805 
114806  /* name AST Memory Allocation Support Functions
114807  \brief Memory allocations support....
114808 
114809  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
114810  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
114811  and support the AST File I/O Mechanism.
114812  */
114813  /* */
114814 
114815  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
114816  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
114817  that I use the same type everywhere, if any changes are made. THe second one declares the type
114818  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
114819  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
114820  a correspinding one in the AST_FILE_IO class!
114821  */
114822  // DQ (9/2/2015): This typedef is no longer used, we can't define the
114823  // comment here (changed to be a C style comment and not be a doxygen comment).
114824  /* \brief Typedef used for low level memory access.
114825  */
114826  // typedef unsigned char* TestType;
114827 
114828  // DQ (9/2/2015): This typedef is no longer used, we can't define the
114829  // comment here (changed to be a C style comment and not be a doxygen comment).
114830  /* \brief Typedef used to hold memory addresses as values.
114831  */
114832  // typedef unsigned long AddressType;
114833 
114834 
114835 
114836  // necessary, to have direct access to the p_freepointer and the private methods !
114838  friend class AST_FILE_IO;
114839 
114841  friend class SgOmpAffinityClauseStorageClass;
114842 
114844  friend class AstSpecificDataManagingClass;
114845 
114847  friend class AstSpecificDataManagingClassStorageClass;
114848 
114849  public:
114851  SgOmpAffinityClause( const SgOmpAffinityClauseStorageClass& source );
114852 
114853  // private: // JJW hack
114854  /*
114855  name AST Memory Allocation Support Variables
114856  Memory allocations support variables
114857 
114858  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
114859  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
114860  and support the AST File I/O Mechanism.
114861  */
114862  /* */
114863 
114864  public:
114865 
114866  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
114867  // to current node (so that it will work cleanly with build functions to specify patterns).
114868  // virtual SgNode* addRegExpAttribute();
114875 
114876 // *** COMMON CODE SECTION ENDS HERE ***
114877 
114878 
114879 // End of memberFunctionString
114880 // Start of memberFunctionString
114881 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
114882 
114883  // the generated cast function
114884  // friend ROSE_DLL_API SgOmpAffinityClause* isSgOmpAffinityClause ( SgNode* s );
114885 
114887 
114888 
114889 // End of memberFunctionString
114890 
114891  public:
114892  SgOmpClause::omp_affinity_modifier_enum get_affinity_modifier() const;
114893  void set_affinity_modifier(SgOmpClause::omp_affinity_modifier_enum affinity_modifier);
114894 
114895  public:
114896  std::list<std::list<SgExpression*> > get_iterator() const;
114897  void set_iterator(std::list<std::list<SgExpression*> > iterator);
114898 
114899  public:
114900  std::map<SgSymbol*, std::vector < std::pair <SgExpression*, SgExpression*> > > get_array_dimensions() const;
114901  void set_array_dimensions(std::map<SgSymbol*, std::vector < std::pair <SgExpression*, SgExpression*> > > array_dimensions);
114902 
114903 
114904  public:
114905  virtual ~SgOmpAffinityClause();
114906 
114907 
114908  public:
114909  SgOmpAffinityClause(Sg_File_Info* startOfConstruct , SgExprListExp* variables = NULL, SgOmpClause::omp_affinity_modifier_enum affinity_modifier =e_omp_affinity_modifier_unspecified);
114910  SgOmpAffinityClause(SgExprListExp* variables, SgOmpClause::omp_affinity_modifier_enum affinity_modifier);
114911 
114912  protected:
114913 // Start of memberFunctionString
114914 SgOmpClause::omp_affinity_modifier_enum p_affinity_modifier;
114915 
114916 // End of memberFunctionString
114917 // Start of memberFunctionString
114918 std::list<std::list<SgExpression*> > p_iterator;
114919 
114920 // End of memberFunctionString
114921 // Start of memberFunctionString
114922 std::map<SgSymbol*, std::vector < std::pair <SgExpression*, SgExpression*> > > p_array_dimensions;
114923 
114924 // End of memberFunctionString
114925 
114926 
114927 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
114928 
114929 
114930  };
114931 #endif
114932 
114933 // postdeclarations for SgOmpAffinityClause
114934 
114935 /* #line 114936 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
114936 
114937 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
114938 
114939 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
114940 
114941 
114942 /* #line 114943 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
114943 
114944 
114945 
114946 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
114947 
114948 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
114949 // This code is automatically generated for each
114950 // terminal and non-terminal within the defined
114951 // grammar. There is a simple way to change the
114952 // code to fix bugs etc. See the ROSE README file
114953 // for directions.
114954 
114955 // tps: (02/22/2010): Adding DLL export requirements
114956 #include "rosedll.h"
114957 
114958 // predeclarations for SgOmpToClause
114959 
114960 /* #line 114961 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
114961 
114962 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
114963 
114964 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
114965 
114966 #if 1
114967 // Class Definition for SgOmpToClause
114968 class ROSE_DLL_API SgOmpToClause : public SgOmpVariablesClause
114969  {
114970  public:
114971 
114972 
114973 /* #line 114974 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
114974 
114975  virtual SgNode* copy ( SgCopyHelp& help) const override;
114976 // Start of memberFunctionString
114977 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
114978 
114979 // *** COMMON CODE SECTION BEGINS HERE ***
114980 
114981  public:
114982 
114983  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
114984  // and not required which is required to match the other aspects of the copy mechanism code generation.
114985  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
114986  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
114987  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
114988  // virtual SgNode* copy ( const SgCopyHelp & help) const;
114989 
114991  virtual std::string class_name() const override;
114992 
114994  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
114995 
114997  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
114998  // static const VariantT static_variant = V_SgOmpToClause;
114999  enum { static_variant = V_SgOmpToClause };
115000 
115001  /* the generated cast function */
115003  ROSE_DLL_API friend SgOmpToClause* isSgOmpToClause( SgNode * s );
115004 
115006  ROSE_DLL_API friend const SgOmpToClause* isSgOmpToClause( const SgNode * s );
115007 
115008  // ******************************************
115009  // * Memory Pool / New / Delete
115010  // ******************************************
115011 
115012  public:
115014  static const unsigned pool_size; //
115016  static std::vector<unsigned char *> pools; //
115018  static SgOmpToClause * next_node; //
115019 
115021  static unsigned long initializeStorageClassArray(SgOmpToClauseStorageClass *); //
115022 
115024  static void clearMemoryPool(); //
115025  static void deleteMemoryPool(); //
115026 
115028  static void extendMemoryPoolForFileIO(); //
115029 
115031  static SgOmpToClause * getPointerFromGlobalIndex(unsigned long); //
115033  static SgOmpToClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
115034 
115036  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
115038  static void resetValidFreepointers(); //
115040  static unsigned long getNumberOfLastValidPointer(); //
115041 
115042 
115043 #if defined(INLINE_FUNCTIONS)
115044 
115045  inline void *operator new (size_t size);
115046 #else
115047 
115048  void *operator new (size_t size);
115049 #endif
115050 
115051  void operator delete (void* pointer, size_t size);
115052 
115053  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
115054  void operator delete (void* pointer)
115055  {
115056  // This is the generated delete operator...
115057  SgOmpToClause::operator delete (pointer,sizeof(SgOmpToClause));
115058  }
115059 
115061  static size_t numberOfNodes();
115062 
115064  static size_t memoryUsage();
115065 
115066  // End of scope which started in IR nodes specific code
115067  /* */
115068 
115069  /* name Internal Functions
115070  \brief Internal functions ... incomplete-documentation
115071 
115072  These functions have been made public as part of the design, but they are suggested for internal use
115073  or by particularly knowledgeable users for specialized tools or applications.
115074 
115075  \internal We could not make these private because they are required by user for special purposes. And
115076  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
115077 
115078  */
115079 
115080  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
115081  // overridden in every class by *generated* implementation
115083  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
115084  // MS: 06/28/02 container of names of variables or container indices
115085  // used used in the traversal to access AST successor nodes
115086  // overridden in every class by *generated* implementation
115089  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
115090 
115091  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
115092  // than all the vector copies. The implementation for these functions is generated for each class.
115094  virtual size_t get_numberOfTraversalSuccessors() override;
115096  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
115098  virtual size_t get_childIndex(SgNode *child) override;
115099 
115100 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
115101  // MS: 08/16/2002 method for generating RTI information
115103  virtual RTIReturnType roseRTI() override;
115104 #endif
115105  /* */
115106 
115107 
115108 
115109  /* name Deprecated Functions
115110  \brief Deprecated functions ... incomplete-documentation
115111 
115112  These functions have been deprecated from use.
115113  */
115114  /* */
115115 
115117  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
115118 
115119  // JJW (10/16/2008): Changed to a single function in Node.code, and put
115120  // getVariant() in #if 0 block to prevent confusing Doxygen
115121 #if 0
115122 
115123  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
115125  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
115126 #endif
115127  /* */
115128 
115129 
115130 
115131 
115132  public:
115133  /* name Traversal Support Functions
115134  \brief Traversal support functions ... incomplete-documentation
115135 
115136  These functions have been made public as part of the design, but they are suggested for internal use
115137  or by particularly knowledgable users for specialized tools or applications.
115138  */
115139  /* */
115140 
115141  // DQ (11/26/2005): Support for visitor pattern mechanims
115142  // (inferior to ROSE traversal mechanism, experimental).
115146 
115147  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
115149  virtual void accept (ROSE_VisitorPattern & visitor) override;
115150 
115151  // DQ (12/26/2005): Support for traversal based on the memory pool
115154  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
115155 
115158  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
115159 
115160  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
115161  // This traversal helps support internal tools that call static member functions.
115162  // note: this function operates on the memory pools.
115165  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
115166  /* */
115167 
115168 
115169  public:
115170  /* name Memory Allocation Functions
115171  \brief Memory allocations functions ... incomplete-documentation
115172 
115173  These functions have been made public as part of the design, but they are suggested for internal use
115174  or by particularly knowledgable users for specialized tools or applications.
115175  */
115176  /* */
115177 
115188  virtual bool isInMemoryPool() override;
115189 
115200  virtual void checkDataMemberPointersIfInMemoryPool() override;
115201 
115202  // DQ (4/30/2006): Modified to be a const function.
115217  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
115218 
115228  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
115229 
115241  virtual long getChildIndex( SgNode* childNode ) const override;
115242 
115243  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
115244  // comment here (changed to be a C style comment and not be a doxygen comment).
115245  /* \brief Constructor for use by AST File I/O Mechanism
115246 
115247  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
115248  which obtained via fast binary file I/O from disk.
115249  */
115250  // SgOmpToClause( SgOmpToClauseStorageClass& source );
115251 
115252 
115253 
115254 
115255 
115256  // JH (10/24/2005): methods added to support the ast file IO
115257  private:
115258 
115259  /* name AST Memory Allocation Support Functions
115260  \brief Memory allocations support....
115261 
115262  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
115263  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
115264  and support the AST File I/O Mechanism.
115265  */
115266  /* */
115267 
115268  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
115269  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
115270  that I use the same type everywhere, if any changes are made. THe second one declares the type
115271  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
115272  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
115273  a correspinding one in the AST_FILE_IO class!
115274  */
115275  // DQ (9/2/2015): This typedef is no longer used, we can't define the
115276  // comment here (changed to be a C style comment and not be a doxygen comment).
115277  /* \brief Typedef used for low level memory access.
115278  */
115279  // typedef unsigned char* TestType;
115280 
115281  // DQ (9/2/2015): This typedef is no longer used, we can't define the
115282  // comment here (changed to be a C style comment and not be a doxygen comment).
115283  /* \brief Typedef used to hold memory addresses as values.
115284  */
115285  // typedef unsigned long AddressType;
115286 
115287 
115288 
115289  // necessary, to have direct access to the p_freepointer and the private methods !
115291  friend class AST_FILE_IO;
115292 
115294  friend class SgOmpToClauseStorageClass;
115295 
115297  friend class AstSpecificDataManagingClass;
115298 
115300  friend class AstSpecificDataManagingClassStorageClass;
115301 
115302  public:
115304  SgOmpToClause( const SgOmpToClauseStorageClass& source );
115305 
115306  // private: // JJW hack
115307  /*
115308  name AST Memory Allocation Support Variables
115309  Memory allocations support variables
115310 
115311  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
115312  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
115313  and support the AST File I/O Mechanism.
115314  */
115315  /* */
115316 
115317  public:
115318 
115319  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
115320  // to current node (so that it will work cleanly with build functions to specify patterns).
115321  // virtual SgNode* addRegExpAttribute();
115327  SgOmpToClause* addRegExpAttribute(std::string s, AstRegExAttribute* a);
115328 
115329 // *** COMMON CODE SECTION ENDS HERE ***
115330 
115331 
115332 // End of memberFunctionString
115333 // Start of memberFunctionString
115334 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
115335 
115336  // the generated cast function
115337  // friend ROSE_DLL_API SgOmpToClause* isSgOmpToClause ( SgNode* s );
115338 
115340 
115341 
115342 // End of memberFunctionString
115343 
115344  public:
115345  SgOmpClause::omp_to_kind_enum get_kind() const;
115346  void set_kind(SgOmpClause::omp_to_kind_enum kind);
115347 
115348  public:
115349  SgExpression* get_mapper_identifier() const;
115350  void set_mapper_identifier(SgExpression* mapper_identifier);
115351 
115352  public:
115353  std::map<SgSymbol*, std::vector < std::pair <SgExpression*, SgExpression*> > > get_array_dimensions() const;
115354  void set_array_dimensions(std::map<SgSymbol*, std::vector < std::pair <SgExpression*, SgExpression*> > > array_dimensions);
115355 
115356 
115357  public:
115358  virtual ~SgOmpToClause();
115359 
115360 
115361  public:
115362  SgOmpToClause(Sg_File_Info* startOfConstruct , SgExprListExp* variables = NULL, SgOmpClause::omp_to_kind_enum kind =e_omp_to_kind_unknown);
115363  SgOmpToClause(SgExprListExp* variables, SgOmpClause::omp_to_kind_enum kind);
115364 
115365  protected:
115366 // Start of memberFunctionString
115367 SgOmpClause::omp_to_kind_enum p_kind;
115368 
115369 // End of memberFunctionString
115370 // Start of memberFunctionString
115371 SgExpression* p_mapper_identifier;
115372 
115373 // End of memberFunctionString
115374 // Start of memberFunctionString
115375 std::map<SgSymbol*, std::vector < std::pair <SgExpression*, SgExpression*> > > p_array_dimensions;
115376 
115377 // End of memberFunctionString
115378 
115379 
115380 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
115381 
115382 
115383  };
115384 #endif
115385 
115386 // postdeclarations for SgOmpToClause
115387 
115388 /* #line 115389 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
115389 
115390 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
115391 
115392 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
115393 
115394 
115395 /* #line 115396 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
115396 
115397 
115398 
115399 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
115400 
115401 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
115402 // This code is automatically generated for each
115403 // terminal and non-terminal within the defined
115404 // grammar. There is a simple way to change the
115405 // code to fix bugs etc. See the ROSE README file
115406 // for directions.
115407 
115408 // tps: (02/22/2010): Adding DLL export requirements
115409 #include "rosedll.h"
115410 
115411 // predeclarations for SgOmpFromClause
115412 
115413 /* #line 115414 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
115414 
115415 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
115416 
115417 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
115418 
115419 #if 1
115420 // Class Definition for SgOmpFromClause
115421 class ROSE_DLL_API SgOmpFromClause : public SgOmpVariablesClause
115422  {
115423  public:
115424 
115425 
115426 /* #line 115427 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
115427 
115428  virtual SgNode* copy ( SgCopyHelp& help) const override;
115429 // Start of memberFunctionString
115430 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
115431 
115432 // *** COMMON CODE SECTION BEGINS HERE ***
115433 
115434  public:
115435 
115436  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
115437  // and not required which is required to match the other aspects of the copy mechanism code generation.
115438  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
115439  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
115440  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
115441  // virtual SgNode* copy ( const SgCopyHelp & help) const;
115442 
115444  virtual std::string class_name() const override;
115445 
115447  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
115448 
115450  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
115451  // static const VariantT static_variant = V_SgOmpFromClause;
115452  enum { static_variant = V_SgOmpFromClause };
115453 
115454  /* the generated cast function */
115456  ROSE_DLL_API friend SgOmpFromClause* isSgOmpFromClause( SgNode * s );
115457 
115459  ROSE_DLL_API friend const SgOmpFromClause* isSgOmpFromClause( const SgNode * s );
115460 
115461  // ******************************************
115462  // * Memory Pool / New / Delete
115463  // ******************************************
115464 
115465  public:
115467  static const unsigned pool_size; //
115469  static std::vector<unsigned char *> pools; //
115471  static SgOmpFromClause * next_node; //
115472 
115474  static unsigned long initializeStorageClassArray(SgOmpFromClauseStorageClass *); //
115475 
115477  static void clearMemoryPool(); //
115478  static void deleteMemoryPool(); //
115479 
115481  static void extendMemoryPoolForFileIO(); //
115482 
115484  static SgOmpFromClause * getPointerFromGlobalIndex(unsigned long); //
115486  static SgOmpFromClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
115487 
115489  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
115491  static void resetValidFreepointers(); //
115493  static unsigned long getNumberOfLastValidPointer(); //
115494 
115495 
115496 #if defined(INLINE_FUNCTIONS)
115497 
115498  inline void *operator new (size_t size);
115499 #else
115500 
115501  void *operator new (size_t size);
115502 #endif
115503 
115504  void operator delete (void* pointer, size_t size);
115505 
115506  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
115507  void operator delete (void* pointer)
115508  {
115509  // This is the generated delete operator...
115510  SgOmpFromClause::operator delete (pointer,sizeof(SgOmpFromClause));
115511  }
115512 
115514  static size_t numberOfNodes();
115515 
115517  static size_t memoryUsage();
115518 
115519  // End of scope which started in IR nodes specific code
115520  /* */
115521 
115522  /* name Internal Functions
115523  \brief Internal functions ... incomplete-documentation
115524 
115525  These functions have been made public as part of the design, but they are suggested for internal use
115526  or by particularly knowledgeable users for specialized tools or applications.
115527 
115528  \internal We could not make these private because they are required by user for special purposes. And
115529  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
115530 
115531  */
115532 
115533  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
115534  // overridden in every class by *generated* implementation
115536  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
115537  // MS: 06/28/02 container of names of variables or container indices
115538  // used used in the traversal to access AST successor nodes
115539  // overridden in every class by *generated* implementation
115542  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
115543 
115544  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
115545  // than all the vector copies. The implementation for these functions is generated for each class.
115547  virtual size_t get_numberOfTraversalSuccessors() override;
115549  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
115551  virtual size_t get_childIndex(SgNode *child) override;
115552 
115553 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
115554  // MS: 08/16/2002 method for generating RTI information
115556  virtual RTIReturnType roseRTI() override;
115557 #endif
115558  /* */
115559 
115560 
115561 
115562  /* name Deprecated Functions
115563  \brief Deprecated functions ... incomplete-documentation
115564 
115565  These functions have been deprecated from use.
115566  */
115567  /* */
115568 
115570  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
115571 
115572  // JJW (10/16/2008): Changed to a single function in Node.code, and put
115573  // getVariant() in #if 0 block to prevent confusing Doxygen
115574 #if 0
115575 
115576  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
115578  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
115579 #endif
115580  /* */
115581 
115582 
115583 
115584 
115585  public:
115586  /* name Traversal Support Functions
115587  \brief Traversal support functions ... incomplete-documentation
115588 
115589  These functions have been made public as part of the design, but they are suggested for internal use
115590  or by particularly knowledgable users for specialized tools or applications.
115591  */
115592  /* */
115593 
115594  // DQ (11/26/2005): Support for visitor pattern mechanims
115595  // (inferior to ROSE traversal mechanism, experimental).
115599 
115600  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
115602  virtual void accept (ROSE_VisitorPattern & visitor) override;
115603 
115604  // DQ (12/26/2005): Support for traversal based on the memory pool
115607  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
115608 
115611  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
115612 
115613  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
115614  // This traversal helps support internal tools that call static member functions.
115615  // note: this function operates on the memory pools.
115618  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
115619  /* */
115620 
115621 
115622  public:
115623  /* name Memory Allocation Functions
115624  \brief Memory allocations functions ... incomplete-documentation
115625 
115626  These functions have been made public as part of the design, but they are suggested for internal use
115627  or by particularly knowledgable users for specialized tools or applications.
115628  */
115629  /* */
115630 
115641  virtual bool isInMemoryPool() override;
115642 
115653  virtual void checkDataMemberPointersIfInMemoryPool() override;
115654 
115655  // DQ (4/30/2006): Modified to be a const function.
115670  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
115671 
115681  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
115682 
115694  virtual long getChildIndex( SgNode* childNode ) const override;
115695 
115696  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
115697  // comment here (changed to be a C style comment and not be a doxygen comment).
115698  /* \brief Constructor for use by AST File I/O Mechanism
115699 
115700  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
115701  which obtained via fast binary file I/O from disk.
115702  */
115703  // SgOmpFromClause( SgOmpFromClauseStorageClass& source );
115704 
115705 
115706 
115707 
115708 
115709  // JH (10/24/2005): methods added to support the ast file IO
115710  private:
115711 
115712  /* name AST Memory Allocation Support Functions
115713  \brief Memory allocations support....
115714 
115715  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
115716  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
115717  and support the AST File I/O Mechanism.
115718  */
115719  /* */
115720 
115721  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
115722  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
115723  that I use the same type everywhere, if any changes are made. THe second one declares the type
115724  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
115725  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
115726  a correspinding one in the AST_FILE_IO class!
115727  */
115728  // DQ (9/2/2015): This typedef is no longer used, we can't define the
115729  // comment here (changed to be a C style comment and not be a doxygen comment).
115730  /* \brief Typedef used for low level memory access.
115731  */
115732  // typedef unsigned char* TestType;
115733 
115734  // DQ (9/2/2015): This typedef is no longer used, we can't define the
115735  // comment here (changed to be a C style comment and not be a doxygen comment).
115736  /* \brief Typedef used to hold memory addresses as values.
115737  */
115738  // typedef unsigned long AddressType;
115739 
115740 
115741 
115742  // necessary, to have direct access to the p_freepointer and the private methods !
115744  friend class AST_FILE_IO;
115745 
115747  friend class SgOmpFromClauseStorageClass;
115748 
115750  friend class AstSpecificDataManagingClass;
115751 
115753  friend class AstSpecificDataManagingClassStorageClass;
115754 
115755  public:
115757  SgOmpFromClause( const SgOmpFromClauseStorageClass& source );
115758 
115759  // private: // JJW hack
115760  /*
115761  name AST Memory Allocation Support Variables
115762  Memory allocations support variables
115763 
115764  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
115765  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
115766  and support the AST File I/O Mechanism.
115767  */
115768  /* */
115769 
115770  public:
115771 
115772  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
115773  // to current node (so that it will work cleanly with build functions to specify patterns).
115774  // virtual SgNode* addRegExpAttribute();
115781 
115782 // *** COMMON CODE SECTION ENDS HERE ***
115783 
115784 
115785 // End of memberFunctionString
115786 // Start of memberFunctionString
115787 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
115788 
115789  // the generated cast function
115790  // friend ROSE_DLL_API SgOmpFromClause* isSgOmpFromClause ( SgNode* s );
115791 
115793 
115794 
115795 // End of memberFunctionString
115796 
115797  public:
115798  SgOmpClause::omp_from_kind_enum get_kind() const;
115799  void set_kind(SgOmpClause::omp_from_kind_enum kind);
115800 
115801  public:
115802  SgExpression* get_mapper_identifier() const;
115803  void set_mapper_identifier(SgExpression* mapper_identifier);
115804 
115805  public:
115806  std::map<SgSymbol*, std::vector < std::pair <SgExpression*, SgExpression*> > > get_array_dimensions() const;
115807  void set_array_dimensions(std::map<SgSymbol*, std::vector < std::pair <SgExpression*, SgExpression*> > > array_dimensions);
115808 
115809 
115810  public:
115811  virtual ~SgOmpFromClause();
115812 
115813 
115814  public:
115815  SgOmpFromClause(Sg_File_Info* startOfConstruct , SgExprListExp* variables = NULL, SgOmpClause::omp_from_kind_enum kind =e_omp_from_kind_unknown);
115816  SgOmpFromClause(SgExprListExp* variables, SgOmpClause::omp_from_kind_enum kind);
115817 
115818  protected:
115819 // Start of memberFunctionString
115820 SgOmpClause::omp_from_kind_enum p_kind;
115821 
115822 // End of memberFunctionString
115823 // Start of memberFunctionString
115824 SgExpression* p_mapper_identifier;
115825 
115826 // End of memberFunctionString
115827 // Start of memberFunctionString
115828 std::map<SgSymbol*, std::vector < std::pair <SgExpression*, SgExpression*> > > p_array_dimensions;
115829 
115830 // End of memberFunctionString
115831 
115832 
115833 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
115834 
115835 
115836  };
115837 #endif
115838 
115839 // postdeclarations for SgOmpFromClause
115840 
115841 /* #line 115842 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
115842 
115843 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
115844 
115845 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
115846 
115847 
115848 /* #line 115849 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
115849 
115850 
115851 
115852 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
115853 
115854 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
115855 // This code is automatically generated for each
115856 // terminal and non-terminal within the defined
115857 // grammar. There is a simple way to change the
115858 // code to fix bugs etc. See the ROSE README file
115859 // for directions.
115860 
115861 // tps: (02/22/2010): Adding DLL export requirements
115862 #include "rosedll.h"
115863 
115864 // predeclarations for SgOmpScheduleClause
115865 
115866 /* #line 115867 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
115867 
115868 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
115869 
115870 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
115871 
115872 #if 1
115873 // Class Definition for SgOmpScheduleClause
115874 class ROSE_DLL_API SgOmpScheduleClause : public SgOmpClause
115875  {
115876  public:
115877 
115878 
115879 /* #line 115880 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
115880 
115881  virtual SgNode* copy ( SgCopyHelp& help) const override;
115882 // Start of memberFunctionString
115883 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
115884 
115885 // *** COMMON CODE SECTION BEGINS HERE ***
115886 
115887  public:
115888 
115889  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
115890  // and not required which is required to match the other aspects of the copy mechanism code generation.
115891  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
115892  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
115893  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
115894  // virtual SgNode* copy ( const SgCopyHelp & help) const;
115895 
115897  virtual std::string class_name() const override;
115898 
115900  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
115901 
115903  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
115904  // static const VariantT static_variant = V_SgOmpScheduleClause;
115905  enum { static_variant = V_SgOmpScheduleClause };
115906 
115907  /* the generated cast function */
115909  ROSE_DLL_API friend SgOmpScheduleClause* isSgOmpScheduleClause( SgNode * s );
115910 
115912  ROSE_DLL_API friend const SgOmpScheduleClause* isSgOmpScheduleClause( const SgNode * s );
115913 
115914  // ******************************************
115915  // * Memory Pool / New / Delete
115916  // ******************************************
115917 
115918  public:
115920  static const unsigned pool_size; //
115922  static std::vector<unsigned char *> pools; //
115924  static SgOmpScheduleClause * next_node; //
115925 
115927  static unsigned long initializeStorageClassArray(SgOmpScheduleClauseStorageClass *); //
115928 
115930  static void clearMemoryPool(); //
115931  static void deleteMemoryPool(); //
115932 
115934  static void extendMemoryPoolForFileIO(); //
115935 
115937  static SgOmpScheduleClause * getPointerFromGlobalIndex(unsigned long); //
115939  static SgOmpScheduleClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
115940 
115942  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
115944  static void resetValidFreepointers(); //
115946  static unsigned long getNumberOfLastValidPointer(); //
115947 
115948 
115949 #if defined(INLINE_FUNCTIONS)
115950 
115951  inline void *operator new (size_t size);
115952 #else
115953 
115954  void *operator new (size_t size);
115955 #endif
115956 
115957  void operator delete (void* pointer, size_t size);
115958 
115959  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
115960  void operator delete (void* pointer)
115961  {
115962  // This is the generated delete operator...
115963  SgOmpScheduleClause::operator delete (pointer,sizeof(SgOmpScheduleClause));
115964  }
115965 
115967  static size_t numberOfNodes();
115968 
115970  static size_t memoryUsage();
115971 
115972  // End of scope which started in IR nodes specific code
115973  /* */
115974 
115975  /* name Internal Functions
115976  \brief Internal functions ... incomplete-documentation
115977 
115978  These functions have been made public as part of the design, but they are suggested for internal use
115979  or by particularly knowledgeable users for specialized tools or applications.
115980 
115981  \internal We could not make these private because they are required by user for special purposes. And
115982  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
115983 
115984  */
115985 
115986  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
115987  // overridden in every class by *generated* implementation
115989  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
115990  // MS: 06/28/02 container of names of variables or container indices
115991  // used used in the traversal to access AST successor nodes
115992  // overridden in every class by *generated* implementation
115995  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
115996 
115997  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
115998  // than all the vector copies. The implementation for these functions is generated for each class.
116000  virtual size_t get_numberOfTraversalSuccessors() override;
116002  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
116004  virtual size_t get_childIndex(SgNode *child) override;
116005 
116006 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
116007  // MS: 08/16/2002 method for generating RTI information
116009  virtual RTIReturnType roseRTI() override;
116010 #endif
116011  /* */
116012 
116013 
116014 
116015  /* name Deprecated Functions
116016  \brief Deprecated functions ... incomplete-documentation
116017 
116018  These functions have been deprecated from use.
116019  */
116020  /* */
116021 
116023  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
116024 
116025  // JJW (10/16/2008): Changed to a single function in Node.code, and put
116026  // getVariant() in #if 0 block to prevent confusing Doxygen
116027 #if 0
116028 
116029  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
116031  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
116032 #endif
116033  /* */
116034 
116035 
116036 
116037 
116038  public:
116039  /* name Traversal Support Functions
116040  \brief Traversal support functions ... incomplete-documentation
116041 
116042  These functions have been made public as part of the design, but they are suggested for internal use
116043  or by particularly knowledgable users for specialized tools or applications.
116044  */
116045  /* */
116046 
116047  // DQ (11/26/2005): Support for visitor pattern mechanims
116048  // (inferior to ROSE traversal mechanism, experimental).
116052 
116053  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
116055  virtual void accept (ROSE_VisitorPattern & visitor) override;
116056 
116057  // DQ (12/26/2005): Support for traversal based on the memory pool
116060  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
116061 
116064  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
116065 
116066  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
116067  // This traversal helps support internal tools that call static member functions.
116068  // note: this function operates on the memory pools.
116071  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
116072  /* */
116073 
116074 
116075  public:
116076  /* name Memory Allocation Functions
116077  \brief Memory allocations functions ... incomplete-documentation
116078 
116079  These functions have been made public as part of the design, but they are suggested for internal use
116080  or by particularly knowledgable users for specialized tools or applications.
116081  */
116082  /* */
116083 
116094  virtual bool isInMemoryPool() override;
116095 
116106  virtual void checkDataMemberPointersIfInMemoryPool() override;
116107 
116108  // DQ (4/30/2006): Modified to be a const function.
116123  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
116124 
116134  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
116135 
116147  virtual long getChildIndex( SgNode* childNode ) const override;
116148 
116149  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
116150  // comment here (changed to be a C style comment and not be a doxygen comment).
116151  /* \brief Constructor for use by AST File I/O Mechanism
116152 
116153  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
116154  which obtained via fast binary file I/O from disk.
116155  */
116156  // SgOmpScheduleClause( SgOmpScheduleClauseStorageClass& source );
116157 
116158 
116159 
116160 
116161 
116162  // JH (10/24/2005): methods added to support the ast file IO
116163  private:
116164 
116165  /* name AST Memory Allocation Support Functions
116166  \brief Memory allocations support....
116167 
116168  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
116169  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
116170  and support the AST File I/O Mechanism.
116171  */
116172  /* */
116173 
116174  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
116175  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
116176  that I use the same type everywhere, if any changes are made. THe second one declares the type
116177  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
116178  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
116179  a correspinding one in the AST_FILE_IO class!
116180  */
116181  // DQ (9/2/2015): This typedef is no longer used, we can't define the
116182  // comment here (changed to be a C style comment and not be a doxygen comment).
116183  /* \brief Typedef used for low level memory access.
116184  */
116185  // typedef unsigned char* TestType;
116186 
116187  // DQ (9/2/2015): This typedef is no longer used, we can't define the
116188  // comment here (changed to be a C style comment and not be a doxygen comment).
116189  /* \brief Typedef used to hold memory addresses as values.
116190  */
116191  // typedef unsigned long AddressType;
116192 
116193 
116194 
116195  // necessary, to have direct access to the p_freepointer and the private methods !
116197  friend class AST_FILE_IO;
116198 
116200  friend class SgOmpScheduleClauseStorageClass;
116201 
116203  friend class AstSpecificDataManagingClass;
116204 
116206  friend class AstSpecificDataManagingClassStorageClass;
116207 
116208  public:
116210  SgOmpScheduleClause( const SgOmpScheduleClauseStorageClass& source );
116211 
116212  // private: // JJW hack
116213  /*
116214  name AST Memory Allocation Support Variables
116215  Memory allocations support variables
116216 
116217  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
116218  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
116219  and support the AST File I/O Mechanism.
116220  */
116221  /* */
116222 
116223  public:
116224 
116225  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
116226  // to current node (so that it will work cleanly with build functions to specify patterns).
116227  // virtual SgNode* addRegExpAttribute();
116234 
116235 // *** COMMON CODE SECTION ENDS HERE ***
116236 
116237 
116238 // End of memberFunctionString
116239 // Start of memberFunctionString
116240 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
116241 
116242  // the generated cast function
116243  // friend ROSE_DLL_API SgOmpScheduleClause* isSgOmpScheduleClause ( SgNode* s );
116244 
116245  typedef SgOmpClause base_node_type;
116246 
116247 
116248 // End of memberFunctionString
116249 
116250  public:
116251  SgOmpClause::omp_schedule_modifier_enum get_modifier() const;
116252  void set_modifier(SgOmpClause::omp_schedule_modifier_enum modifier);
116253 
116254  public:
116255  SgOmpClause::omp_schedule_modifier_enum get_modifier1() const;
116256  void set_modifier1(SgOmpClause::omp_schedule_modifier_enum modifier1);
116257 
116258  public:
116259  SgOmpClause::omp_schedule_kind_enum get_kind() const;
116260  void set_kind(SgOmpClause::omp_schedule_kind_enum kind);
116261 
116262  public:
116263  SgExpression* get_chunk_size() const;
116264  void set_chunk_size(SgExpression* chunk_size);
116265 
116266 
116267  public:
116268  virtual ~SgOmpScheduleClause();
116269 
116270 
116271  public:
116272  SgOmpScheduleClause(Sg_File_Info* startOfConstruct , SgOmpClause::omp_schedule_modifier_enum modifier =e_omp_schedule_modifier_unspecified, SgOmpClause::omp_schedule_modifier_enum modifier1 =e_omp_schedule_modifier_unspecified, SgOmpClause::omp_schedule_kind_enum kind =e_omp_schedule_kind_unspecified, SgExpression* chunk_size = NULL);
116273  SgOmpScheduleClause(SgOmpClause::omp_schedule_modifier_enum modifier, SgOmpClause::omp_schedule_modifier_enum modifier1, SgOmpClause::omp_schedule_kind_enum kind, SgExpression* chunk_size);
116274 
116275  protected:
116276 // Start of memberFunctionString
116277 SgOmpClause::omp_schedule_modifier_enum p_modifier;
116278 
116279 // End of memberFunctionString
116280 // Start of memberFunctionString
116281 SgOmpClause::omp_schedule_modifier_enum p_modifier1;
116282 
116283 // End of memberFunctionString
116284 // Start of memberFunctionString
116285 SgOmpClause::omp_schedule_kind_enum p_kind;
116286 
116287 // End of memberFunctionString
116288 // Start of memberFunctionString
116289 SgExpression* p_chunk_size;
116290 
116291 // End of memberFunctionString
116292 
116293 
116294 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
116295 
116296 
116297  };
116298 #endif
116299 
116300 // postdeclarations for SgOmpScheduleClause
116301 
116302 /* #line 116303 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
116303 
116304 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
116305 
116306 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
116307 
116308 
116309 /* #line 116310 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
116310 
116311 
116312 
116313 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
116314 
116315 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
116316 // This code is automatically generated for each
116317 // terminal and non-terminal within the defined
116318 // grammar. There is a simple way to change the
116319 // code to fix bugs etc. See the ROSE README file
116320 // for directions.
116321 
116322 // tps: (02/22/2010): Adding DLL export requirements
116323 #include "rosedll.h"
116324 
116325 // predeclarations for SgOmpMergeableClause
116326 
116327 /* #line 116328 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
116328 
116329 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
116330 
116331 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
116332 
116333 #if 1
116334 // Class Definition for SgOmpMergeableClause
116335 class ROSE_DLL_API SgOmpMergeableClause : public SgOmpClause
116336  {
116337  public:
116338 
116339 
116340 /* #line 116341 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
116341 
116342  virtual SgNode* copy ( SgCopyHelp& help) const override;
116343 // Start of memberFunctionString
116344 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
116345 
116346 // *** COMMON CODE SECTION BEGINS HERE ***
116347 
116348  public:
116349 
116350  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
116351  // and not required which is required to match the other aspects of the copy mechanism code generation.
116352  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
116353  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
116354  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
116355  // virtual SgNode* copy ( const SgCopyHelp & help) const;
116356 
116358  virtual std::string class_name() const override;
116359 
116361  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
116362 
116364  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
116365  // static const VariantT static_variant = V_SgOmpMergeableClause;
116366  enum { static_variant = V_SgOmpMergeableClause };
116367 
116368  /* the generated cast function */
116370  ROSE_DLL_API friend SgOmpMergeableClause* isSgOmpMergeableClause( SgNode * s );
116371 
116373  ROSE_DLL_API friend const SgOmpMergeableClause* isSgOmpMergeableClause( const SgNode * s );
116374 
116375  // ******************************************
116376  // * Memory Pool / New / Delete
116377  // ******************************************
116378 
116379  public:
116381  static const unsigned pool_size; //
116383  static std::vector<unsigned char *> pools; //
116385  static SgOmpMergeableClause * next_node; //
116386 
116388  static unsigned long initializeStorageClassArray(SgOmpMergeableClauseStorageClass *); //
116389 
116391  static void clearMemoryPool(); //
116392  static void deleteMemoryPool(); //
116393 
116395  static void extendMemoryPoolForFileIO(); //
116396 
116398  static SgOmpMergeableClause * getPointerFromGlobalIndex(unsigned long); //
116400  static SgOmpMergeableClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
116401 
116403  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
116405  static void resetValidFreepointers(); //
116407  static unsigned long getNumberOfLastValidPointer(); //
116408 
116409 
116410 #if defined(INLINE_FUNCTIONS)
116411 
116412  inline void *operator new (size_t size);
116413 #else
116414 
116415  void *operator new (size_t size);
116416 #endif
116417 
116418  void operator delete (void* pointer, size_t size);
116419 
116420  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
116421  void operator delete (void* pointer)
116422  {
116423  // This is the generated delete operator...
116424  SgOmpMergeableClause::operator delete (pointer,sizeof(SgOmpMergeableClause));
116425  }
116426 
116428  static size_t numberOfNodes();
116429 
116431  static size_t memoryUsage();
116432 
116433  // End of scope which started in IR nodes specific code
116434  /* */
116435 
116436  /* name Internal Functions
116437  \brief Internal functions ... incomplete-documentation
116438 
116439  These functions have been made public as part of the design, but they are suggested for internal use
116440  or by particularly knowledgeable users for specialized tools or applications.
116441 
116442  \internal We could not make these private because they are required by user for special purposes. And
116443  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
116444 
116445  */
116446 
116447  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
116448  // overridden in every class by *generated* implementation
116450  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
116451  // MS: 06/28/02 container of names of variables or container indices
116452  // used used in the traversal to access AST successor nodes
116453  // overridden in every class by *generated* implementation
116456  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
116457 
116458  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
116459  // than all the vector copies. The implementation for these functions is generated for each class.
116461  virtual size_t get_numberOfTraversalSuccessors() override;
116463  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
116465  virtual size_t get_childIndex(SgNode *child) override;
116466 
116467 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
116468  // MS: 08/16/2002 method for generating RTI information
116470  virtual RTIReturnType roseRTI() override;
116471 #endif
116472  /* */
116473 
116474 
116475 
116476  /* name Deprecated Functions
116477  \brief Deprecated functions ... incomplete-documentation
116478 
116479  These functions have been deprecated from use.
116480  */
116481  /* */
116482 
116484  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
116485 
116486  // JJW (10/16/2008): Changed to a single function in Node.code, and put
116487  // getVariant() in #if 0 block to prevent confusing Doxygen
116488 #if 0
116489 
116490  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
116492  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
116493 #endif
116494  /* */
116495 
116496 
116497 
116498 
116499  public:
116500  /* name Traversal Support Functions
116501  \brief Traversal support functions ... incomplete-documentation
116502 
116503  These functions have been made public as part of the design, but they are suggested for internal use
116504  or by particularly knowledgable users for specialized tools or applications.
116505  */
116506  /* */
116507 
116508  // DQ (11/26/2005): Support for visitor pattern mechanims
116509  // (inferior to ROSE traversal mechanism, experimental).
116513 
116514  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
116516  virtual void accept (ROSE_VisitorPattern & visitor) override;
116517 
116518  // DQ (12/26/2005): Support for traversal based on the memory pool
116521  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
116522 
116525  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
116526 
116527  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
116528  // This traversal helps support internal tools that call static member functions.
116529  // note: this function operates on the memory pools.
116532  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
116533  /* */
116534 
116535 
116536  public:
116537  /* name Memory Allocation Functions
116538  \brief Memory allocations functions ... incomplete-documentation
116539 
116540  These functions have been made public as part of the design, but they are suggested for internal use
116541  or by particularly knowledgable users for specialized tools or applications.
116542  */
116543  /* */
116544 
116555  virtual bool isInMemoryPool() override;
116556 
116567  virtual void checkDataMemberPointersIfInMemoryPool() override;
116568 
116569  // DQ (4/30/2006): Modified to be a const function.
116584  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
116585 
116595  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
116596 
116608  virtual long getChildIndex( SgNode* childNode ) const override;
116609 
116610  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
116611  // comment here (changed to be a C style comment and not be a doxygen comment).
116612  /* \brief Constructor for use by AST File I/O Mechanism
116613 
116614  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
116615  which obtained via fast binary file I/O from disk.
116616  */
116617  // SgOmpMergeableClause( SgOmpMergeableClauseStorageClass& source );
116618 
116619 
116620 
116621 
116622 
116623  // JH (10/24/2005): methods added to support the ast file IO
116624  private:
116625 
116626  /* name AST Memory Allocation Support Functions
116627  \brief Memory allocations support....
116628 
116629  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
116630  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
116631  and support the AST File I/O Mechanism.
116632  */
116633  /* */
116634 
116635  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
116636  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
116637  that I use the same type everywhere, if any changes are made. THe second one declares the type
116638  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
116639  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
116640  a correspinding one in the AST_FILE_IO class!
116641  */
116642  // DQ (9/2/2015): This typedef is no longer used, we can't define the
116643  // comment here (changed to be a C style comment and not be a doxygen comment).
116644  /* \brief Typedef used for low level memory access.
116645  */
116646  // typedef unsigned char* TestType;
116647 
116648  // DQ (9/2/2015): This typedef is no longer used, we can't define the
116649  // comment here (changed to be a C style comment and not be a doxygen comment).
116650  /* \brief Typedef used to hold memory addresses as values.
116651  */
116652  // typedef unsigned long AddressType;
116653 
116654 
116655 
116656  // necessary, to have direct access to the p_freepointer and the private methods !
116658  friend class AST_FILE_IO;
116659 
116661  friend class SgOmpMergeableClauseStorageClass;
116662 
116664  friend class AstSpecificDataManagingClass;
116665 
116667  friend class AstSpecificDataManagingClassStorageClass;
116668 
116669  public:
116671  SgOmpMergeableClause( const SgOmpMergeableClauseStorageClass& source );
116672 
116673  // private: // JJW hack
116674  /*
116675  name AST Memory Allocation Support Variables
116676  Memory allocations support variables
116677 
116678  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
116679  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
116680  and support the AST File I/O Mechanism.
116681  */
116682  /* */
116683 
116684  public:
116685 
116686  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
116687  // to current node (so that it will work cleanly with build functions to specify patterns).
116688  // virtual SgNode* addRegExpAttribute();
116695 
116696 // *** COMMON CODE SECTION ENDS HERE ***
116697 
116698 
116699 // End of memberFunctionString
116700 // Start of memberFunctionString
116701 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
116702 
116703  // the generated cast function
116704  // friend ROSE_DLL_API SgOmpMergeableClause* isSgOmpMergeableClause ( SgNode* s );
116705 
116706  typedef SgOmpClause base_node_type;
116707 
116708 
116709 // End of memberFunctionString
116710 
116711 
116712  public:
116713  virtual ~SgOmpMergeableClause();
116714 
116715 
116716  public:
116717  SgOmpMergeableClause(Sg_File_Info* startOfConstruct );
116719 
116720  protected:
116721 
116722 
116723 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
116724 
116725 
116726  };
116727 #endif
116728 
116729 // postdeclarations for SgOmpMergeableClause
116730 
116731 /* #line 116732 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
116732 
116733 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
116734 
116735 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
116736 
116737 
116738 /* #line 116739 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
116739 
116740 
116741 
116742 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
116743 
116744 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
116745 // This code is automatically generated for each
116746 // terminal and non-terminal within the defined
116747 // grammar. There is a simple way to change the
116748 // code to fix bugs etc. See the ROSE README file
116749 // for directions.
116750 
116751 // tps: (02/22/2010): Adding DLL export requirements
116752 #include "rosedll.h"
116753 
116754 // predeclarations for SgOmpWhenClause
116755 
116756 /* #line 116757 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
116757 
116758 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
116759 
116760 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
116761 
116762 #if 1
116763 // Class Definition for SgOmpWhenClause
116764 class ROSE_DLL_API SgOmpWhenClause : public SgOmpClause
116765  {
116766  public:
116767 
116768 
116769 /* #line 116770 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
116770 
116771  virtual SgNode* copy ( SgCopyHelp& help) const override;
116772 // Start of memberFunctionString
116773 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
116774 
116775 // *** COMMON CODE SECTION BEGINS HERE ***
116776 
116777  public:
116778 
116779  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
116780  // and not required which is required to match the other aspects of the copy mechanism code generation.
116781  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
116782  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
116783  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
116784  // virtual SgNode* copy ( const SgCopyHelp & help) const;
116785 
116787  virtual std::string class_name() const override;
116788 
116790  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
116791 
116793  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
116794  // static const VariantT static_variant = V_SgOmpWhenClause;
116795  enum { static_variant = V_SgOmpWhenClause };
116796 
116797  /* the generated cast function */
116799  ROSE_DLL_API friend SgOmpWhenClause* isSgOmpWhenClause( SgNode * s );
116800 
116802  ROSE_DLL_API friend const SgOmpWhenClause* isSgOmpWhenClause( const SgNode * s );
116803 
116804  // ******************************************
116805  // * Memory Pool / New / Delete
116806  // ******************************************
116807 
116808  public:
116810  static const unsigned pool_size; //
116812  static std::vector<unsigned char *> pools; //
116814  static SgOmpWhenClause * next_node; //
116815 
116817  static unsigned long initializeStorageClassArray(SgOmpWhenClauseStorageClass *); //
116818 
116820  static void clearMemoryPool(); //
116821  static void deleteMemoryPool(); //
116822 
116824  static void extendMemoryPoolForFileIO(); //
116825 
116827  static SgOmpWhenClause * getPointerFromGlobalIndex(unsigned long); //
116829  static SgOmpWhenClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
116830 
116832  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
116834  static void resetValidFreepointers(); //
116836  static unsigned long getNumberOfLastValidPointer(); //
116837 
116838 
116839 #if defined(INLINE_FUNCTIONS)
116840 
116841  inline void *operator new (size_t size);
116842 #else
116843 
116844  void *operator new (size_t size);
116845 #endif
116846 
116847  void operator delete (void* pointer, size_t size);
116848 
116849  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
116850  void operator delete (void* pointer)
116851  {
116852  // This is the generated delete operator...
116853  SgOmpWhenClause::operator delete (pointer,sizeof(SgOmpWhenClause));
116854  }
116855 
116857  static size_t numberOfNodes();
116858 
116860  static size_t memoryUsage();
116861 
116862  // End of scope which started in IR nodes specific code
116863  /* */
116864 
116865  /* name Internal Functions
116866  \brief Internal functions ... incomplete-documentation
116867 
116868  These functions have been made public as part of the design, but they are suggested for internal use
116869  or by particularly knowledgeable users for specialized tools or applications.
116870 
116871  \internal We could not make these private because they are required by user for special purposes. And
116872  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
116873 
116874  */
116875 
116876  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
116877  // overridden in every class by *generated* implementation
116879  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
116880  // MS: 06/28/02 container of names of variables or container indices
116881  // used used in the traversal to access AST successor nodes
116882  // overridden in every class by *generated* implementation
116885  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
116886 
116887  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
116888  // than all the vector copies. The implementation for these functions is generated for each class.
116890  virtual size_t get_numberOfTraversalSuccessors() override;
116892  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
116894  virtual size_t get_childIndex(SgNode *child) override;
116895 
116896 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
116897  // MS: 08/16/2002 method for generating RTI information
116899  virtual RTIReturnType roseRTI() override;
116900 #endif
116901  /* */
116902 
116903 
116904 
116905  /* name Deprecated Functions
116906  \brief Deprecated functions ... incomplete-documentation
116907 
116908  These functions have been deprecated from use.
116909  */
116910  /* */
116911 
116913  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
116914 
116915  // JJW (10/16/2008): Changed to a single function in Node.code, and put
116916  // getVariant() in #if 0 block to prevent confusing Doxygen
116917 #if 0
116918 
116919  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
116921  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
116922 #endif
116923  /* */
116924 
116925 
116926 
116927 
116928  public:
116929  /* name Traversal Support Functions
116930  \brief Traversal support functions ... incomplete-documentation
116931 
116932  These functions have been made public as part of the design, but they are suggested for internal use
116933  or by particularly knowledgable users for specialized tools or applications.
116934  */
116935  /* */
116936 
116937  // DQ (11/26/2005): Support for visitor pattern mechanims
116938  // (inferior to ROSE traversal mechanism, experimental).
116942 
116943  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
116945  virtual void accept (ROSE_VisitorPattern & visitor) override;
116946 
116947  // DQ (12/26/2005): Support for traversal based on the memory pool
116950  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
116951 
116954  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
116955 
116956  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
116957  // This traversal helps support internal tools that call static member functions.
116958  // note: this function operates on the memory pools.
116961  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
116962  /* */
116963 
116964 
116965  public:
116966  /* name Memory Allocation Functions
116967  \brief Memory allocations functions ... incomplete-documentation
116968 
116969  These functions have been made public as part of the design, but they are suggested for internal use
116970  or by particularly knowledgable users for specialized tools or applications.
116971  */
116972  /* */
116973 
116984  virtual bool isInMemoryPool() override;
116985 
116996  virtual void checkDataMemberPointersIfInMemoryPool() override;
116997 
116998  // DQ (4/30/2006): Modified to be a const function.
117013  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
117014 
117024  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
117025 
117037  virtual long getChildIndex( SgNode* childNode ) const override;
117038 
117039  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
117040  // comment here (changed to be a C style comment and not be a doxygen comment).
117041  /* \brief Constructor for use by AST File I/O Mechanism
117042 
117043  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
117044  which obtained via fast binary file I/O from disk.
117045  */
117046  // SgOmpWhenClause( SgOmpWhenClauseStorageClass& source );
117047 
117048 
117049 
117050 
117051 
117052  // JH (10/24/2005): methods added to support the ast file IO
117053  private:
117054 
117055  /* name AST Memory Allocation Support Functions
117056  \brief Memory allocations support....
117057 
117058  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
117059  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
117060  and support the AST File I/O Mechanism.
117061  */
117062  /* */
117063 
117064  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
117065  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
117066  that I use the same type everywhere, if any changes are made. THe second one declares the type
117067  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
117068  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
117069  a correspinding one in the AST_FILE_IO class!
117070  */
117071  // DQ (9/2/2015): This typedef is no longer used, we can't define the
117072  // comment here (changed to be a C style comment and not be a doxygen comment).
117073  /* \brief Typedef used for low level memory access.
117074  */
117075  // typedef unsigned char* TestType;
117076 
117077  // DQ (9/2/2015): This typedef is no longer used, we can't define the
117078  // comment here (changed to be a C style comment and not be a doxygen comment).
117079  /* \brief Typedef used to hold memory addresses as values.
117080  */
117081  // typedef unsigned long AddressType;
117082 
117083 
117084 
117085  // necessary, to have direct access to the p_freepointer and the private methods !
117087  friend class AST_FILE_IO;
117088 
117090  friend class SgOmpWhenClauseStorageClass;
117091 
117093  friend class AstSpecificDataManagingClass;
117094 
117096  friend class AstSpecificDataManagingClassStorageClass;
117097 
117098  public:
117100  SgOmpWhenClause( const SgOmpWhenClauseStorageClass& source );
117101 
117102  // private: // JJW hack
117103  /*
117104  name AST Memory Allocation Support Variables
117105  Memory allocations support variables
117106 
117107  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
117108  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
117109  and support the AST File I/O Mechanism.
117110  */
117111  /* */
117112 
117113  public:
117114 
117115  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
117116  // to current node (so that it will work cleanly with build functions to specify patterns).
117117  // virtual SgNode* addRegExpAttribute();
117124 
117125 // *** COMMON CODE SECTION ENDS HERE ***
117126 
117127 
117128 // End of memberFunctionString
117129 // Start of memberFunctionString
117130 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
117131 
117132  // the generated cast function
117133  // friend ROSE_DLL_API SgOmpWhenClause* isSgOmpWhenClause ( SgNode* s );
117134 
117135  typedef SgOmpClause base_node_type;
117136 
117137 
117138 // End of memberFunctionString
117139 
117140  public:
117141  SgExpression* get_user_condition() const;
117142  void set_user_condition(SgExpression* user_condition);
117143 
117144  public:
117145  SgExpression* get_user_condition_score() const;
117146  void set_user_condition_score(SgExpression* user_condition_score);
117147 
117148  public:
117149  std::list<SgStatement*> get_construct_directives() const;
117150  void set_construct_directives(std::list<SgStatement*> construct_directives);
117151 
117152  public:
117153  SgExpression* get_device_arch() const;
117154  void set_device_arch(SgExpression* device_arch);
117155 
117156  public:
117157  SgExpression* get_device_isa() const;
117158  void set_device_isa(SgExpression* device_isa);
117159 
117160  public:
117161  SgOmpClause::omp_when_context_kind_enum get_device_kind() const;
117162  void set_device_kind(SgOmpClause::omp_when_context_kind_enum device_kind);
117163 
117164  public:
117165  SgOmpClause::omp_when_context_vendor_enum get_implementation_vendor() const;
117166  void set_implementation_vendor(SgOmpClause::omp_when_context_vendor_enum implementation_vendor);
117167 
117168  public:
117169  SgExpression* get_implementation_user_defined() const;
117170  void set_implementation_user_defined(SgExpression* implementation_user_defined);
117171 
117172  public:
117173  SgExpression* get_implementation_extension() const;
117174  void set_implementation_extension(SgExpression* implementation_extension);
117175 
117176  public:
117177  SgStatement* get_variant_directive() const;
117178  void set_variant_directive(SgStatement* variant_directive);
117179 
117180 
117181  public:
117182  virtual ~SgOmpWhenClause();
117183 
117184 
117185  public:
117186  SgOmpWhenClause(Sg_File_Info* startOfConstruct , SgExpression* user_condition = NULL, SgExpression* user_condition_score = NULL, SgExpression* device_arch = NULL, SgExpression* device_isa = NULL, SgOmpClause::omp_when_context_kind_enum device_kind = e_omp_when_context_kind_unknown, SgOmpClause::omp_when_context_vendor_enum implementation_vendor = e_omp_when_context_vendor_unspecified, SgExpression* implementation_user_defined = NULL, SgExpression* implementation_extension = NULL, SgStatement* variant_directive = NULL);
117187  SgOmpWhenClause(SgExpression* user_condition, SgExpression* user_condition_score, SgExpression* device_arch, SgExpression* device_isa, SgOmpClause::omp_when_context_kind_enum device_kind, SgOmpClause::omp_when_context_vendor_enum implementation_vendor, SgExpression* implementation_user_defined, SgExpression* implementation_extension, SgStatement* variant_directive);
117188 
117189  protected:
117190 // Start of memberFunctionString
117191 SgExpression* p_user_condition;
117192 
117193 // End of memberFunctionString
117194 // Start of memberFunctionString
117195 SgExpression* p_user_condition_score;
117196 
117197 // End of memberFunctionString
117198 // Start of memberFunctionString
117199 std::list<SgStatement*> p_construct_directives;
117200 
117201 // End of memberFunctionString
117202 // Start of memberFunctionString
117203 SgExpression* p_device_arch;
117204 
117205 // End of memberFunctionString
117206 // Start of memberFunctionString
117207 SgExpression* p_device_isa;
117208 
117209 // End of memberFunctionString
117210 // Start of memberFunctionString
117211 SgOmpClause::omp_when_context_kind_enum p_device_kind;
117212 
117213 // End of memberFunctionString
117214 // Start of memberFunctionString
117215 SgOmpClause::omp_when_context_vendor_enum p_implementation_vendor;
117216 
117217 // End of memberFunctionString
117218 // Start of memberFunctionString
117219 SgExpression* p_implementation_user_defined;
117220 
117221 // End of memberFunctionString
117222 // Start of memberFunctionString
117223 SgExpression* p_implementation_extension;
117224 
117225 // End of memberFunctionString
117226 // Start of memberFunctionString
117227 SgStatement* p_variant_directive;
117228 
117229 // End of memberFunctionString
117230 
117231 
117232 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
117233 
117234 
117235  };
117236 #endif
117237 
117238 // postdeclarations for SgOmpWhenClause
117239 
117240 /* #line 117241 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
117241 
117242 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
117243 
117244 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
117245 
117246 
117247 /* #line 117248 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
117248 
117249 
117250 
117251 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
117252 
117253 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
117254 // This code is automatically generated for each
117255 // terminal and non-terminal within the defined
117256 // grammar. There is a simple way to change the
117257 // code to fix bugs etc. See the ROSE README file
117258 // for directions.
117259 
117260 // tps: (02/22/2010): Adding DLL export requirements
117261 #include "rosedll.h"
117262 
117263 // predeclarations for SgOmpUsesAllocatorsClause
117264 
117265 /* #line 117266 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
117266 
117267 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
117268 
117269 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
117270 
117271 #if 1
117272 // Class Definition for SgOmpUsesAllocatorsClause
117273 class ROSE_DLL_API SgOmpUsesAllocatorsClause : public SgOmpClause
117274  {
117275  public:
117276 
117277 
117278 /* #line 117279 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
117279 
117280  virtual SgNode* copy ( SgCopyHelp& help) const override;
117281 // Start of memberFunctionString
117282 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
117283 
117284 // *** COMMON CODE SECTION BEGINS HERE ***
117285 
117286  public:
117287 
117288  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
117289  // and not required which is required to match the other aspects of the copy mechanism code generation.
117290  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
117291  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
117292  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
117293  // virtual SgNode* copy ( const SgCopyHelp & help) const;
117294 
117296  virtual std::string class_name() const override;
117297 
117299  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
117300 
117302  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
117303  // static const VariantT static_variant = V_SgOmpUsesAllocatorsClause;
117304  enum { static_variant = V_SgOmpUsesAllocatorsClause };
117305 
117306  /* the generated cast function */
117308  ROSE_DLL_API friend SgOmpUsesAllocatorsClause* isSgOmpUsesAllocatorsClause( SgNode * s );
117309 
117311  ROSE_DLL_API friend const SgOmpUsesAllocatorsClause* isSgOmpUsesAllocatorsClause( const SgNode * s );
117312 
117313  // ******************************************
117314  // * Memory Pool / New / Delete
117315  // ******************************************
117316 
117317  public:
117319  static const unsigned pool_size; //
117321  static std::vector<unsigned char *> pools; //
117323  static SgOmpUsesAllocatorsClause * next_node; //
117324 
117326  static unsigned long initializeStorageClassArray(SgOmpUsesAllocatorsClauseStorageClass *); //
117327 
117329  static void clearMemoryPool(); //
117330  static void deleteMemoryPool(); //
117331 
117333  static void extendMemoryPoolForFileIO(); //
117334 
117336  static SgOmpUsesAllocatorsClause * getPointerFromGlobalIndex(unsigned long); //
117338  static SgOmpUsesAllocatorsClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
117339 
117341  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
117343  static void resetValidFreepointers(); //
117345  static unsigned long getNumberOfLastValidPointer(); //
117346 
117347 
117348 #if defined(INLINE_FUNCTIONS)
117349 
117350  inline void *operator new (size_t size);
117351 #else
117352 
117353  void *operator new (size_t size);
117354 #endif
117355 
117356  void operator delete (void* pointer, size_t size);
117357 
117358  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
117359  void operator delete (void* pointer)
117360  {
117361  // This is the generated delete operator...
117362  SgOmpUsesAllocatorsClause::operator delete (pointer,sizeof(SgOmpUsesAllocatorsClause));
117363  }
117364 
117366  static size_t numberOfNodes();
117367 
117369  static size_t memoryUsage();
117370 
117371  // End of scope which started in IR nodes specific code
117372  /* */
117373 
117374  /* name Internal Functions
117375  \brief Internal functions ... incomplete-documentation
117376 
117377  These functions have been made public as part of the design, but they are suggested for internal use
117378  or by particularly knowledgeable users for specialized tools or applications.
117379 
117380  \internal We could not make these private because they are required by user for special purposes. And
117381  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
117382 
117383  */
117384 
117385  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
117386  // overridden in every class by *generated* implementation
117388  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
117389  // MS: 06/28/02 container of names of variables or container indices
117390  // used used in the traversal to access AST successor nodes
117391  // overridden in every class by *generated* implementation
117394  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
117395 
117396  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
117397  // than all the vector copies. The implementation for these functions is generated for each class.
117399  virtual size_t get_numberOfTraversalSuccessors() override;
117401  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
117403  virtual size_t get_childIndex(SgNode *child) override;
117404 
117405 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
117406  // MS: 08/16/2002 method for generating RTI information
117408  virtual RTIReturnType roseRTI() override;
117409 #endif
117410  /* */
117411 
117412 
117413 
117414  /* name Deprecated Functions
117415  \brief Deprecated functions ... incomplete-documentation
117416 
117417  These functions have been deprecated from use.
117418  */
117419  /* */
117420 
117422  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
117423 
117424  // JJW (10/16/2008): Changed to a single function in Node.code, and put
117425  // getVariant() in #if 0 block to prevent confusing Doxygen
117426 #if 0
117427 
117428  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
117430  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
117431 #endif
117432  /* */
117433 
117434 
117435 
117436 
117437  public:
117438  /* name Traversal Support Functions
117439  \brief Traversal support functions ... incomplete-documentation
117440 
117441  These functions have been made public as part of the design, but they are suggested for internal use
117442  or by particularly knowledgable users for specialized tools or applications.
117443  */
117444  /* */
117445 
117446  // DQ (11/26/2005): Support for visitor pattern mechanims
117447  // (inferior to ROSE traversal mechanism, experimental).
117451 
117452  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
117454  virtual void accept (ROSE_VisitorPattern & visitor) override;
117455 
117456  // DQ (12/26/2005): Support for traversal based on the memory pool
117459  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
117460 
117463  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
117464 
117465  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
117466  // This traversal helps support internal tools that call static member functions.
117467  // note: this function operates on the memory pools.
117470  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
117471  /* */
117472 
117473 
117474  public:
117475  /* name Memory Allocation Functions
117476  \brief Memory allocations functions ... incomplete-documentation
117477 
117478  These functions have been made public as part of the design, but they are suggested for internal use
117479  or by particularly knowledgable users for specialized tools or applications.
117480  */
117481  /* */
117482 
117493  virtual bool isInMemoryPool() override;
117494 
117505  virtual void checkDataMemberPointersIfInMemoryPool() override;
117506 
117507  // DQ (4/30/2006): Modified to be a const function.
117522  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
117523 
117533  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
117534 
117546  virtual long getChildIndex( SgNode* childNode ) const override;
117547 
117548  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
117549  // comment here (changed to be a C style comment and not be a doxygen comment).
117550  /* \brief Constructor for use by AST File I/O Mechanism
117551 
117552  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
117553  which obtained via fast binary file I/O from disk.
117554  */
117555  // SgOmpUsesAllocatorsClause( SgOmpUsesAllocatorsClauseStorageClass& source );
117556 
117557 
117558 
117559 
117560 
117561  // JH (10/24/2005): methods added to support the ast file IO
117562  private:
117563 
117564  /* name AST Memory Allocation Support Functions
117565  \brief Memory allocations support....
117566 
117567  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
117568  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
117569  and support the AST File I/O Mechanism.
117570  */
117571  /* */
117572 
117573  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
117574  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
117575  that I use the same type everywhere, if any changes are made. THe second one declares the type
117576  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
117577  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
117578  a correspinding one in the AST_FILE_IO class!
117579  */
117580  // DQ (9/2/2015): This typedef is no longer used, we can't define the
117581  // comment here (changed to be a C style comment and not be a doxygen comment).
117582  /* \brief Typedef used for low level memory access.
117583  */
117584  // typedef unsigned char* TestType;
117585 
117586  // DQ (9/2/2015): This typedef is no longer used, we can't define the
117587  // comment here (changed to be a C style comment and not be a doxygen comment).
117588  /* \brief Typedef used to hold memory addresses as values.
117589  */
117590  // typedef unsigned long AddressType;
117591 
117592 
117593 
117594  // necessary, to have direct access to the p_freepointer and the private methods !
117596  friend class AST_FILE_IO;
117597 
117599  friend class SgOmpUsesAllocatorsClauseStorageClass;
117600 
117602  friend class AstSpecificDataManagingClass;
117603 
117605  friend class AstSpecificDataManagingClassStorageClass;
117606 
117607  public:
117609  SgOmpUsesAllocatorsClause( const SgOmpUsesAllocatorsClauseStorageClass& source );
117610 
117611  // private: // JJW hack
117612  /*
117613  name AST Memory Allocation Support Variables
117614  Memory allocations support variables
117615 
117616  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
117617  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
117618  and support the AST File I/O Mechanism.
117619  */
117620  /* */
117621 
117622  public:
117623 
117624  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
117625  // to current node (so that it will work cleanly with build functions to specify patterns).
117626  // virtual SgNode* addRegExpAttribute();
117633 
117634 // *** COMMON CODE SECTION ENDS HERE ***
117635 
117636 
117637 // End of memberFunctionString
117638 // Start of memberFunctionString
117639 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
117640 
117641  // the generated cast function
117642  // friend ROSE_DLL_API SgOmpUsesAllocatorsClause* isSgOmpUsesAllocatorsClause ( SgNode* s );
117643 
117644  typedef SgOmpClause base_node_type;
117645 
117646 
117647 // End of memberFunctionString
117648 
117649  public:
117650  std::list<SgOmpUsesAllocatorsDefination*> get_uses_allocators_defination() const;
117651  void set_uses_allocators_defination(std::list<SgOmpUsesAllocatorsDefination*> uses_allocators_defination);
117652 
117653 
117654  public:
117655  virtual ~SgOmpUsesAllocatorsClause();
117656 
117657 
117658  public:
117659  SgOmpUsesAllocatorsClause(Sg_File_Info* startOfConstruct );
117661 
117662  protected:
117663 // Start of memberFunctionString
117664 std::list<SgOmpUsesAllocatorsDefination*> p_uses_allocators_defination;
117665 
117666 // End of memberFunctionString
117667 
117668 
117669 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
117670 
117671 
117672  };
117673 #endif
117674 
117675 // postdeclarations for SgOmpUsesAllocatorsClause
117676 
117677 /* #line 117678 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
117678 
117679 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
117680 
117681 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
117682 
117683 
117684 /* #line 117685 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
117685 
117686 
117687 
117688 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
117689 
117690 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
117691 // This code is automatically generated for each
117692 // terminal and non-terminal within the defined
117693 // grammar. There is a simple way to change the
117694 // code to fix bugs etc. See the ROSE README file
117695 // for directions.
117696 
117697 // tps: (02/22/2010): Adding DLL export requirements
117698 #include "rosedll.h"
117699 
117700 // predeclarations for SgOmpFullClause
117701 
117702 /* #line 117703 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
117703 
117704 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
117705 
117706 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
117707 
117708 #if 1
117709 // Class Definition for SgOmpFullClause
117710 class ROSE_DLL_API SgOmpFullClause : public SgOmpClause
117711  {
117712  public:
117713 
117714 
117715 /* #line 117716 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
117716 
117717  virtual SgNode* copy ( SgCopyHelp& help) const override;
117718 // Start of memberFunctionString
117719 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
117720 
117721 // *** COMMON CODE SECTION BEGINS HERE ***
117722 
117723  public:
117724 
117725  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
117726  // and not required which is required to match the other aspects of the copy mechanism code generation.
117727  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
117728  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
117729  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
117730  // virtual SgNode* copy ( const SgCopyHelp & help) const;
117731 
117733  virtual std::string class_name() const override;
117734 
117736  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
117737 
117739  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
117740  // static const VariantT static_variant = V_SgOmpFullClause;
117741  enum { static_variant = V_SgOmpFullClause };
117742 
117743  /* the generated cast function */
117745  ROSE_DLL_API friend SgOmpFullClause* isSgOmpFullClause( SgNode * s );
117746 
117748  ROSE_DLL_API friend const SgOmpFullClause* isSgOmpFullClause( const SgNode * s );
117749 
117750  // ******************************************
117751  // * Memory Pool / New / Delete
117752  // ******************************************
117753 
117754  public:
117756  static const unsigned pool_size; //
117758  static std::vector<unsigned char *> pools; //
117760  static SgOmpFullClause * next_node; //
117761 
117763  static unsigned long initializeStorageClassArray(SgOmpFullClauseStorageClass *); //
117764 
117766  static void clearMemoryPool(); //
117767  static void deleteMemoryPool(); //
117768 
117770  static void extendMemoryPoolForFileIO(); //
117771 
117773  static SgOmpFullClause * getPointerFromGlobalIndex(unsigned long); //
117775  static SgOmpFullClause * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
117776 
117778  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
117780  static void resetValidFreepointers(); //
117782  static unsigned long getNumberOfLastValidPointer(); //
117783 
117784 
117785 #if defined(INLINE_FUNCTIONS)
117786 
117787  inline void *operator new (size_t size);
117788 #else
117789 
117790  void *operator new (size_t size);
117791 #endif
117792 
117793  void operator delete (void* pointer, size_t size);
117794 
117795  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
117796  void operator delete (void* pointer)
117797  {
117798  // This is the generated delete operator...
117799  SgOmpFullClause::operator delete (pointer,sizeof(SgOmpFullClause));
117800  }
117801 
117803  static size_t numberOfNodes();
117804 
117806  static size_t memoryUsage();
117807 
117808  // End of scope which started in IR nodes specific code
117809  /* */
117810 
117811  /* name Internal Functions
117812  \brief Internal functions ... incomplete-documentation
117813 
117814  These functions have been made public as part of the design, but they are suggested for internal use
117815  or by particularly knowledgeable users for specialized tools or applications.
117816 
117817  \internal We could not make these private because they are required by user for special purposes. And
117818  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
117819 
117820  */
117821 
117822  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
117823  // overridden in every class by *generated* implementation
117825  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
117826  // MS: 06/28/02 container of names of variables or container indices
117827  // used used in the traversal to access AST successor nodes
117828  // overridden in every class by *generated* implementation
117831  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
117832 
117833  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
117834  // than all the vector copies. The implementation for these functions is generated for each class.
117836  virtual size_t get_numberOfTraversalSuccessors() override;
117838  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
117840  virtual size_t get_childIndex(SgNode *child) override;
117841 
117842 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
117843  // MS: 08/16/2002 method for generating RTI information
117845  virtual RTIReturnType roseRTI() override;
117846 #endif
117847  /* */
117848 
117849 
117850 
117851  /* name Deprecated Functions
117852  \brief Deprecated functions ... incomplete-documentation
117853 
117854  These functions have been deprecated from use.
117855  */
117856  /* */
117857 
117859  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
117860 
117861  // JJW (10/16/2008): Changed to a single function in Node.code, and put
117862  // getVariant() in #if 0 block to prevent confusing Doxygen
117863 #if 0
117864 
117865  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
117867  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
117868 #endif
117869  /* */
117870 
117871 
117872 
117873 
117874  public:
117875  /* name Traversal Support Functions
117876  \brief Traversal support functions ... incomplete-documentation
117877 
117878  These functions have been made public as part of the design, but they are suggested for internal use
117879  or by particularly knowledgable users for specialized tools or applications.
117880  */
117881  /* */
117882 
117883  // DQ (11/26/2005): Support for visitor pattern mechanims
117884  // (inferior to ROSE traversal mechanism, experimental).
117888 
117889  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
117891  virtual void accept (ROSE_VisitorPattern & visitor) override;
117892 
117893  // DQ (12/26/2005): Support for traversal based on the memory pool
117896  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
117897 
117900  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
117901 
117902  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
117903  // This traversal helps support internal tools that call static member functions.
117904  // note: this function operates on the memory pools.
117907  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
117908  /* */
117909 
117910 
117911  public:
117912  /* name Memory Allocation Functions
117913  \brief Memory allocations functions ... incomplete-documentation
117914 
117915  These functions have been made public as part of the design, but they are suggested for internal use
117916  or by particularly knowledgable users for specialized tools or applications.
117917  */
117918  /* */
117919 
117930  virtual bool isInMemoryPool() override;
117931 
117942  virtual void checkDataMemberPointersIfInMemoryPool() override;
117943 
117944  // DQ (4/30/2006): Modified to be a const function.
117959  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
117960 
117970  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
117971 
117983  virtual long getChildIndex( SgNode* childNode ) const override;
117984 
117985  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
117986  // comment here (changed to be a C style comment and not be a doxygen comment).
117987  /* \brief Constructor for use by AST File I/O Mechanism
117988 
117989  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
117990  which obtained via fast binary file I/O from disk.
117991  */
117992  // SgOmpFullClause( SgOmpFullClauseStorageClass& source );
117993 
117994 
117995 
117996 
117997 
117998  // JH (10/24/2005): methods added to support the ast file IO
117999  private:
118000 
118001  /* name AST Memory Allocation Support Functions
118002  \brief Memory allocations support....
118003 
118004  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
118005  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
118006  and support the AST File I/O Mechanism.
118007  */
118008  /* */
118009 
118010  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
118011  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
118012  that I use the same type everywhere, if any changes are made. THe second one declares the type
118013  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
118014  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
118015  a correspinding one in the AST_FILE_IO class!
118016  */
118017  // DQ (9/2/2015): This typedef is no longer used, we can't define the
118018  // comment here (changed to be a C style comment and not be a doxygen comment).
118019  /* \brief Typedef used for low level memory access.
118020  */
118021  // typedef unsigned char* TestType;
118022 
118023  // DQ (9/2/2015): This typedef is no longer used, we can't define the
118024  // comment here (changed to be a C style comment and not be a doxygen comment).
118025  /* \brief Typedef used to hold memory addresses as values.
118026  */
118027  // typedef unsigned long AddressType;
118028 
118029 
118030 
118031  // necessary, to have direct access to the p_freepointer and the private methods !
118033  friend class AST_FILE_IO;
118034 
118036  friend class SgOmpFullClauseStorageClass;
118037 
118039  friend class AstSpecificDataManagingClass;
118040 
118042  friend class AstSpecificDataManagingClassStorageClass;
118043 
118044  public:
118046  SgOmpFullClause( const SgOmpFullClauseStorageClass& source );
118047 
118048  // private: // JJW hack
118049  /*
118050  name AST Memory Allocation Support Variables
118051  Memory allocations support variables
118052 
118053  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
118054  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
118055  and support the AST File I/O Mechanism.
118056  */
118057  /* */
118058 
118059  public:
118060 
118061  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
118062  // to current node (so that it will work cleanly with build functions to specify patterns).
118063  // virtual SgNode* addRegExpAttribute();
118070 
118071 // *** COMMON CODE SECTION ENDS HERE ***
118072 
118073 
118074 // End of memberFunctionString
118075 // Start of memberFunctionString
118076 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
118077 
118078  // the generated cast function
118079  // friend ROSE_DLL_API SgOmpFullClause* isSgOmpFullClause ( SgNode* s );
118080 
118081  typedef SgOmpClause base_node_type;
118082 
118083 
118084 // End of memberFunctionString
118085 
118086 
118087  public:
118088  virtual ~SgOmpFullClause();
118089 
118090 
118091  public:
118092  SgOmpFullClause(Sg_File_Info* startOfConstruct );
118093  SgOmpFullClause();
118094 
118095  protected:
118096 
118097 
118098 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
118099 
118100 
118101  };
118102 #endif
118103 
118104 // postdeclarations for SgOmpFullClause
118105 
118106 /* #line 118107 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
118107 
118108 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
118109 
118110 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
118111 
118112 
118113 /* #line 118114 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
118114 
118115 
118116 
118117 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
118118 
118119 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
118120 // This code is automatically generated for each
118121 // terminal and non-terminal within the defined
118122 // grammar. There is a simple way to change the
118123 // code to fix bugs etc. See the ROSE README file
118124 // for directions.
118125 
118126 // tps: (02/22/2010): Adding DLL export requirements
118127 #include "rosedll.h"
118128 
118129 // predeclarations for SgUpirBranchField
118130 
118131 /* #line 118132 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
118132 
118133 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
118134 
118135 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
118136 
118137 #if 1
118138 // Class Definition for SgUpirBranchField
118139 class ROSE_DLL_API SgUpirBranchField : public SgOmpClause
118140  {
118141  public:
118142 
118143 
118144 /* #line 118145 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
118145 
118146  virtual SgNode* copy ( SgCopyHelp& help) const override;
118147 // Start of memberFunctionString
118148 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
118149 
118150 // *** COMMON CODE SECTION BEGINS HERE ***
118151 
118152  public:
118153 
118154  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
118155  // and not required which is required to match the other aspects of the copy mechanism code generation.
118156  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
118157  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
118158  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
118159  // virtual SgNode* copy ( const SgCopyHelp & help) const;
118160 
118162  virtual std::string class_name() const override;
118163 
118165  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
118166 
118168  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
118169  // static const VariantT static_variant = V_SgUpirBranchField;
118170  enum { static_variant = V_SgUpirBranchField };
118171 
118172  /* the generated cast function */
118174  ROSE_DLL_API friend SgUpirBranchField* isSgUpirBranchField( SgNode * s );
118175 
118177  ROSE_DLL_API friend const SgUpirBranchField* isSgUpirBranchField( const SgNode * s );
118178 
118179  // ******************************************
118180  // * Memory Pool / New / Delete
118181  // ******************************************
118182 
118183  public:
118185  static const unsigned pool_size; //
118187  static std::vector<unsigned char *> pools; //
118189  static SgUpirBranchField * next_node; //
118190 
118192  static unsigned long initializeStorageClassArray(SgUpirBranchFieldStorageClass *); //
118193 
118195  static void clearMemoryPool(); //
118196  static void deleteMemoryPool(); //
118197 
118199  static void extendMemoryPoolForFileIO(); //
118200 
118202  static SgUpirBranchField * getPointerFromGlobalIndex(unsigned long); //
118204  static SgUpirBranchField * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
118205 
118207  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
118209  static void resetValidFreepointers(); //
118211  static unsigned long getNumberOfLastValidPointer(); //
118212 
118213 
118214 #if defined(INLINE_FUNCTIONS)
118215 
118216  inline void *operator new (size_t size);
118217 #else
118218 
118219  void *operator new (size_t size);
118220 #endif
118221 
118222  void operator delete (void* pointer, size_t size);
118223 
118224  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
118225  void operator delete (void* pointer)
118226  {
118227  // This is the generated delete operator...
118228  SgUpirBranchField::operator delete (pointer,sizeof(SgUpirBranchField));
118229  }
118230 
118232  static size_t numberOfNodes();
118233 
118235  static size_t memoryUsage();
118236 
118237  // End of scope which started in IR nodes specific code
118238  /* */
118239 
118240  /* name Internal Functions
118241  \brief Internal functions ... incomplete-documentation
118242 
118243  These functions have been made public as part of the design, but they are suggested for internal use
118244  or by particularly knowledgeable users for specialized tools or applications.
118245 
118246  \internal We could not make these private because they are required by user for special purposes. And
118247  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
118248 
118249  */
118250 
118251  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
118252  // overridden in every class by *generated* implementation
118254  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
118255  // MS: 06/28/02 container of names of variables or container indices
118256  // used used in the traversal to access AST successor nodes
118257  // overridden in every class by *generated* implementation
118260  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
118261 
118262  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
118263  // than all the vector copies. The implementation for these functions is generated for each class.
118265  virtual size_t get_numberOfTraversalSuccessors() override;
118267  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
118269  virtual size_t get_childIndex(SgNode *child) override;
118270 
118271 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
118272  // MS: 08/16/2002 method for generating RTI information
118274  virtual RTIReturnType roseRTI() override;
118275 #endif
118276  /* */
118277 
118278 
118279 
118280  /* name Deprecated Functions
118281  \brief Deprecated functions ... incomplete-documentation
118282 
118283  These functions have been deprecated from use.
118284  */
118285  /* */
118286 
118288  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
118289 
118290  // JJW (10/16/2008): Changed to a single function in Node.code, and put
118291  // getVariant() in #if 0 block to prevent confusing Doxygen
118292 #if 0
118293 
118294  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
118296  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
118297 #endif
118298  /* */
118299 
118300 
118301 
118302 
118303  public:
118304  /* name Traversal Support Functions
118305  \brief Traversal support functions ... incomplete-documentation
118306 
118307  These functions have been made public as part of the design, but they are suggested for internal use
118308  or by particularly knowledgable users for specialized tools or applications.
118309  */
118310  /* */
118311 
118312  // DQ (11/26/2005): Support for visitor pattern mechanims
118313  // (inferior to ROSE traversal mechanism, experimental).
118317 
118318  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
118320  virtual void accept (ROSE_VisitorPattern & visitor) override;
118321 
118322  // DQ (12/26/2005): Support for traversal based on the memory pool
118325  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
118326 
118329  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
118330 
118331  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
118332  // This traversal helps support internal tools that call static member functions.
118333  // note: this function operates on the memory pools.
118336  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
118337  /* */
118338 
118339 
118340  public:
118341  /* name Memory Allocation Functions
118342  \brief Memory allocations functions ... incomplete-documentation
118343 
118344  These functions have been made public as part of the design, but they are suggested for internal use
118345  or by particularly knowledgable users for specialized tools or applications.
118346  */
118347  /* */
118348 
118359  virtual bool isInMemoryPool() override;
118360 
118371  virtual void checkDataMemberPointersIfInMemoryPool() override;
118372 
118373  // DQ (4/30/2006): Modified to be a const function.
118388  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
118389 
118399  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
118400 
118412  virtual long getChildIndex( SgNode* childNode ) const override;
118413 
118414  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
118415  // comment here (changed to be a C style comment and not be a doxygen comment).
118416  /* \brief Constructor for use by AST File I/O Mechanism
118417 
118418  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
118419  which obtained via fast binary file I/O from disk.
118420  */
118421  // SgUpirBranchField( SgUpirBranchFieldStorageClass& source );
118422 
118423 
118424 
118425 
118426 
118427  // JH (10/24/2005): methods added to support the ast file IO
118428  private:
118429 
118430  /* name AST Memory Allocation Support Functions
118431  \brief Memory allocations support....
118432 
118433  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
118434  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
118435  and support the AST File I/O Mechanism.
118436  */
118437  /* */
118438 
118439  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
118440  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
118441  that I use the same type everywhere, if any changes are made. THe second one declares the type
118442  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
118443  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
118444  a correspinding one in the AST_FILE_IO class!
118445  */
118446  // DQ (9/2/2015): This typedef is no longer used, we can't define the
118447  // comment here (changed to be a C style comment and not be a doxygen comment).
118448  /* \brief Typedef used for low level memory access.
118449  */
118450  // typedef unsigned char* TestType;
118451 
118452  // DQ (9/2/2015): This typedef is no longer used, we can't define the
118453  // comment here (changed to be a C style comment and not be a doxygen comment).
118454  /* \brief Typedef used to hold memory addresses as values.
118455  */
118456  // typedef unsigned long AddressType;
118457 
118458 
118459 
118460  // necessary, to have direct access to the p_freepointer and the private methods !
118462  friend class AST_FILE_IO;
118463 
118465  friend class SgUpirBranchFieldStorageClass;
118466 
118468  friend class AstSpecificDataManagingClass;
118469 
118471  friend class AstSpecificDataManagingClassStorageClass;
118472 
118473  public:
118475  SgUpirBranchField( const SgUpirBranchFieldStorageClass& source );
118476 
118477  // private: // JJW hack
118478  /*
118479  name AST Memory Allocation Support Variables
118480  Memory allocations support variables
118481 
118482  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
118483  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
118484  and support the AST File I/O Mechanism.
118485  */
118486  /* */
118487 
118488  public:
118489 
118490  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
118491  // to current node (so that it will work cleanly with build functions to specify patterns).
118492  // virtual SgNode* addRegExpAttribute();
118499 
118500 // *** COMMON CODE SECTION ENDS HERE ***
118501 
118502 
118503 // End of memberFunctionString
118504 // Start of memberFunctionString
118505 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
118506 
118507  // the generated cast function
118508  // friend ROSE_DLL_API SgUpirBranchField* isSgUpirBranchField ( SgNode* s );
118509 
118510  typedef SgOmpClause base_node_type;
118511 
118512 
118513 // End of memberFunctionString
118514 
118515  public:
118516  std::list<std::list<SgStatement*> > get_branches() const;
118517  void set_branches(std::list<std::list<SgStatement*> > branches);
118518 
118519 
118520  public:
118521  virtual ~SgUpirBranchField();
118522 
118523 
118524  public:
118525  SgUpirBranchField(Sg_File_Info* startOfConstruct );
118526  SgUpirBranchField();
118527 
118528  protected:
118529 // Start of memberFunctionString
118530 std::list<std::list<SgStatement*> > p_branches;
118531 
118532 // End of memberFunctionString
118533 
118534 
118535 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
118536 
118537 
118538  };
118539 #endif
118540 
118541 // postdeclarations for SgUpirBranchField
118542 
118543 /* #line 118544 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
118544 
118545 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
118546 
118547 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
118548 
118549 
118550 /* #line 118551 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
118551 
118552 
118553 
118554 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
118555 
118556 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
118557 // This code is automatically generated for each
118558 // terminal and non-terminal within the defined
118559 // grammar. There is a simple way to change the
118560 // code to fix bugs etc. See the ROSE README file
118561 // for directions.
118562 
118563 // tps: (02/22/2010): Adding DLL export requirements
118564 #include "rosedll.h"
118565 
118566 // predeclarations for SgUpirNestedLevelField
118567 
118568 /* #line 118569 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
118569 
118570 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
118571 
118572 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
118573 
118574 #if 1
118575 // Class Definition for SgUpirNestedLevelField
118576 class ROSE_DLL_API SgUpirNestedLevelField : public SgOmpClause
118577  {
118578  public:
118579 
118580 
118581 /* #line 118582 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
118582 
118583  virtual SgNode* copy ( SgCopyHelp& help) const override;
118584 // Start of memberFunctionString
118585 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
118586 
118587 // *** COMMON CODE SECTION BEGINS HERE ***
118588 
118589  public:
118590 
118591  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
118592  // and not required which is required to match the other aspects of the copy mechanism code generation.
118593  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
118594  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
118595  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
118596  // virtual SgNode* copy ( const SgCopyHelp & help) const;
118597 
118599  virtual std::string class_name() const override;
118600 
118602  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
118603 
118605  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
118606  // static const VariantT static_variant = V_SgUpirNestedLevelField;
118607  enum { static_variant = V_SgUpirNestedLevelField };
118608 
118609  /* the generated cast function */
118611  ROSE_DLL_API friend SgUpirNestedLevelField* isSgUpirNestedLevelField( SgNode * s );
118612 
118614  ROSE_DLL_API friend const SgUpirNestedLevelField* isSgUpirNestedLevelField( const SgNode * s );
118615 
118616  // ******************************************
118617  // * Memory Pool / New / Delete
118618  // ******************************************
118619 
118620  public:
118622  static const unsigned pool_size; //
118624  static std::vector<unsigned char *> pools; //
118626  static SgUpirNestedLevelField * next_node; //
118627 
118629  static unsigned long initializeStorageClassArray(SgUpirNestedLevelFieldStorageClass *); //
118630 
118632  static void clearMemoryPool(); //
118633  static void deleteMemoryPool(); //
118634 
118636  static void extendMemoryPoolForFileIO(); //
118637 
118639  static SgUpirNestedLevelField * getPointerFromGlobalIndex(unsigned long); //
118641  static SgUpirNestedLevelField * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
118642 
118644  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
118646  static void resetValidFreepointers(); //
118648  static unsigned long getNumberOfLastValidPointer(); //
118649 
118650 
118651 #if defined(INLINE_FUNCTIONS)
118652 
118653  inline void *operator new (size_t size);
118654 #else
118655 
118656  void *operator new (size_t size);
118657 #endif
118658 
118659  void operator delete (void* pointer, size_t size);
118660 
118661  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
118662  void operator delete (void* pointer)
118663  {
118664  // This is the generated delete operator...
118665  SgUpirNestedLevelField::operator delete (pointer,sizeof(SgUpirNestedLevelField));
118666  }
118667 
118669  static size_t numberOfNodes();
118670 
118672  static size_t memoryUsage();
118673 
118674  // End of scope which started in IR nodes specific code
118675  /* */
118676 
118677  /* name Internal Functions
118678  \brief Internal functions ... incomplete-documentation
118679 
118680  These functions have been made public as part of the design, but they are suggested for internal use
118681  or by particularly knowledgeable users for specialized tools or applications.
118682 
118683  \internal We could not make these private because they are required by user for special purposes. And
118684  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
118685 
118686  */
118687 
118688  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
118689  // overridden in every class by *generated* implementation
118691  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
118692  // MS: 06/28/02 container of names of variables or container indices
118693  // used used in the traversal to access AST successor nodes
118694  // overridden in every class by *generated* implementation
118697  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
118698 
118699  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
118700  // than all the vector copies. The implementation for these functions is generated for each class.
118702  virtual size_t get_numberOfTraversalSuccessors() override;
118704  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
118706  virtual size_t get_childIndex(SgNode *child) override;
118707 
118708 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
118709  // MS: 08/16/2002 method for generating RTI information
118711  virtual RTIReturnType roseRTI() override;
118712 #endif
118713  /* */
118714 
118715 
118716 
118717  /* name Deprecated Functions
118718  \brief Deprecated functions ... incomplete-documentation
118719 
118720  These functions have been deprecated from use.
118721  */
118722  /* */
118723 
118725  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
118726 
118727  // JJW (10/16/2008): Changed to a single function in Node.code, and put
118728  // getVariant() in #if 0 block to prevent confusing Doxygen
118729 #if 0
118730 
118731  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
118733  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
118734 #endif
118735  /* */
118736 
118737 
118738 
118739 
118740  public:
118741  /* name Traversal Support Functions
118742  \brief Traversal support functions ... incomplete-documentation
118743 
118744  These functions have been made public as part of the design, but they are suggested for internal use
118745  or by particularly knowledgable users for specialized tools or applications.
118746  */
118747  /* */
118748 
118749  // DQ (11/26/2005): Support for visitor pattern mechanims
118750  // (inferior to ROSE traversal mechanism, experimental).
118754 
118755  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
118757  virtual void accept (ROSE_VisitorPattern & visitor) override;
118758 
118759  // DQ (12/26/2005): Support for traversal based on the memory pool
118762  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
118763 
118766  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
118767 
118768  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
118769  // This traversal helps support internal tools that call static member functions.
118770  // note: this function operates on the memory pools.
118773  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
118774  /* */
118775 
118776 
118777  public:
118778  /* name Memory Allocation Functions
118779  \brief Memory allocations functions ... incomplete-documentation
118780 
118781  These functions have been made public as part of the design, but they are suggested for internal use
118782  or by particularly knowledgable users for specialized tools or applications.
118783  */
118784  /* */
118785 
118796  virtual bool isInMemoryPool() override;
118797 
118808  virtual void checkDataMemberPointersIfInMemoryPool() override;
118809 
118810  // DQ (4/30/2006): Modified to be a const function.
118825  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
118826 
118836  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
118837 
118849  virtual long getChildIndex( SgNode* childNode ) const override;
118850 
118851  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
118852  // comment here (changed to be a C style comment and not be a doxygen comment).
118853  /* \brief Constructor for use by AST File I/O Mechanism
118854 
118855  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
118856  which obtained via fast binary file I/O from disk.
118857  */
118858  // SgUpirNestedLevelField( SgUpirNestedLevelFieldStorageClass& source );
118859 
118860 
118861 
118862 
118863 
118864  // JH (10/24/2005): methods added to support the ast file IO
118865  private:
118866 
118867  /* name AST Memory Allocation Support Functions
118868  \brief Memory allocations support....
118869 
118870  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
118871  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
118872  and support the AST File I/O Mechanism.
118873  */
118874  /* */
118875 
118876  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
118877  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
118878  that I use the same type everywhere, if any changes are made. THe second one declares the type
118879  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
118880  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
118881  a correspinding one in the AST_FILE_IO class!
118882  */
118883  // DQ (9/2/2015): This typedef is no longer used, we can't define the
118884  // comment here (changed to be a C style comment and not be a doxygen comment).
118885  /* \brief Typedef used for low level memory access.
118886  */
118887  // typedef unsigned char* TestType;
118888 
118889  // DQ (9/2/2015): This typedef is no longer used, we can't define the
118890  // comment here (changed to be a C style comment and not be a doxygen comment).
118891  /* \brief Typedef used to hold memory addresses as values.
118892  */
118893  // typedef unsigned long AddressType;
118894 
118895 
118896 
118897  // necessary, to have direct access to the p_freepointer and the private methods !
118899  friend class AST_FILE_IO;
118900 
118902  friend class SgUpirNestedLevelFieldStorageClass;
118903 
118905  friend class AstSpecificDataManagingClass;
118906 
118908  friend class AstSpecificDataManagingClassStorageClass;
118909 
118910  public:
118912  SgUpirNestedLevelField( const SgUpirNestedLevelFieldStorageClass& source );
118913 
118914  // private: // JJW hack
118915  /*
118916  name AST Memory Allocation Support Variables
118917  Memory allocations support variables
118918 
118919  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
118920  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
118921  and support the AST File I/O Mechanism.
118922  */
118923  /* */
118924 
118925  public:
118926 
118927  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
118928  // to current node (so that it will work cleanly with build functions to specify patterns).
118929  // virtual SgNode* addRegExpAttribute();
118936 
118937 // *** COMMON CODE SECTION ENDS HERE ***
118938 
118939 
118940 // End of memberFunctionString
118941 // Start of memberFunctionString
118942 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
118943 
118944  // the generated cast function
118945  // friend ROSE_DLL_API SgUpirNestedLevelField* isSgUpirNestedLevelField ( SgNode* s );
118946 
118947  typedef SgOmpClause base_node_type;
118948 
118949 
118950 // End of memberFunctionString
118951 
118952  public:
118953  int get_nested_level() const;
118954  void set_nested_level(int nested_level);
118955 
118956 
118957  public:
118958  virtual ~SgUpirNestedLevelField();
118959 
118960 
118961  public:
118962  SgUpirNestedLevelField(Sg_File_Info* startOfConstruct );
118964 
118965  protected:
118966 // Start of memberFunctionString
118967 int p_nested_level;
118968 
118969 // End of memberFunctionString
118970 
118971 
118972 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
118973 
118974 
118975  };
118976 #endif
118977 
118978 // postdeclarations for SgUpirNestedLevelField
118979 
118980 /* #line 118981 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
118981 
118982 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
118983 
118984 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
118985 
118986 
118987 /* #line 118988 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
118988 
118989 
118990 
118991 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
118992 
118993 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
118994 // This code is automatically generated for each
118995 // terminal and non-terminal within the defined
118996 // grammar. There is a simple way to change the
118997 // code to fix bugs etc. See the ROSE README file
118998 // for directions.
118999 
119000 // tps: (02/22/2010): Adding DLL export requirements
119001 #include "rosedll.h"
119002 
119003 // predeclarations for SgUpirNestedParentField
119004 
119005 /* #line 119006 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
119006 
119007 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
119008 
119009 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
119010 
119011 #if 1
119012 // Class Definition for SgUpirNestedParentField
119013 class ROSE_DLL_API SgUpirNestedParentField : public SgOmpClause
119014  {
119015  public:
119016 
119017 
119018 /* #line 119019 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
119019 
119020  virtual SgNode* copy ( SgCopyHelp& help) const override;
119021 // Start of memberFunctionString
119022 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
119023 
119024 // *** COMMON CODE SECTION BEGINS HERE ***
119025 
119026  public:
119027 
119028  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
119029  // and not required which is required to match the other aspects of the copy mechanism code generation.
119030  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
119031  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
119032  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
119033  // virtual SgNode* copy ( const SgCopyHelp & help) const;
119034 
119036  virtual std::string class_name() const override;
119037 
119039  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
119040 
119042  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
119043  // static const VariantT static_variant = V_SgUpirNestedParentField;
119044  enum { static_variant = V_SgUpirNestedParentField };
119045 
119046  /* the generated cast function */
119048  ROSE_DLL_API friend SgUpirNestedParentField* isSgUpirNestedParentField( SgNode * s );
119049 
119051  ROSE_DLL_API friend const SgUpirNestedParentField* isSgUpirNestedParentField( const SgNode * s );
119052 
119053  // ******************************************
119054  // * Memory Pool / New / Delete
119055  // ******************************************
119056 
119057  public:
119059  static const unsigned pool_size; //
119061  static std::vector<unsigned char *> pools; //
119063  static SgUpirNestedParentField * next_node; //
119064 
119066  static unsigned long initializeStorageClassArray(SgUpirNestedParentFieldStorageClass *); //
119067 
119069  static void clearMemoryPool(); //
119070  static void deleteMemoryPool(); //
119071 
119073  static void extendMemoryPoolForFileIO(); //
119074 
119076  static SgUpirNestedParentField * getPointerFromGlobalIndex(unsigned long); //
119078  static SgUpirNestedParentField * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
119079 
119081  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
119083  static void resetValidFreepointers(); //
119085  static unsigned long getNumberOfLastValidPointer(); //
119086 
119087 
119088 #if defined(INLINE_FUNCTIONS)
119089 
119090  inline void *operator new (size_t size);
119091 #else
119092 
119093  void *operator new (size_t size);
119094 #endif
119095 
119096  void operator delete (void* pointer, size_t size);
119097 
119098  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
119099  void operator delete (void* pointer)
119100  {
119101  // This is the generated delete operator...
119102  SgUpirNestedParentField::operator delete (pointer,sizeof(SgUpirNestedParentField));
119103  }
119104 
119106  static size_t numberOfNodes();
119107 
119109  static size_t memoryUsage();
119110 
119111  // End of scope which started in IR nodes specific code
119112  /* */
119113 
119114  /* name Internal Functions
119115  \brief Internal functions ... incomplete-documentation
119116 
119117  These functions have been made public as part of the design, but they are suggested for internal use
119118  or by particularly knowledgeable users for specialized tools or applications.
119119 
119120  \internal We could not make these private because they are required by user for special purposes. And
119121  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
119122 
119123  */
119124 
119125  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
119126  // overridden in every class by *generated* implementation
119128  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
119129  // MS: 06/28/02 container of names of variables or container indices
119130  // used used in the traversal to access AST successor nodes
119131  // overridden in every class by *generated* implementation
119134  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
119135 
119136  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
119137  // than all the vector copies. The implementation for these functions is generated for each class.
119139  virtual size_t get_numberOfTraversalSuccessors() override;
119141  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
119143  virtual size_t get_childIndex(SgNode *child) override;
119144 
119145 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
119146  // MS: 08/16/2002 method for generating RTI information
119148  virtual RTIReturnType roseRTI() override;
119149 #endif
119150  /* */
119151 
119152 
119153 
119154  /* name Deprecated Functions
119155  \brief Deprecated functions ... incomplete-documentation
119156 
119157  These functions have been deprecated from use.
119158  */
119159  /* */
119160 
119162  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
119163 
119164  // JJW (10/16/2008): Changed to a single function in Node.code, and put
119165  // getVariant() in #if 0 block to prevent confusing Doxygen
119166 #if 0
119167 
119168  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
119170  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
119171 #endif
119172  /* */
119173 
119174 
119175 
119176 
119177  public:
119178  /* name Traversal Support Functions
119179  \brief Traversal support functions ... incomplete-documentation
119180 
119181  These functions have been made public as part of the design, but they are suggested for internal use
119182  or by particularly knowledgable users for specialized tools or applications.
119183  */
119184  /* */
119185 
119186  // DQ (11/26/2005): Support for visitor pattern mechanims
119187  // (inferior to ROSE traversal mechanism, experimental).
119191 
119192  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
119194  virtual void accept (ROSE_VisitorPattern & visitor) override;
119195 
119196  // DQ (12/26/2005): Support for traversal based on the memory pool
119199  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
119200 
119203  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
119204 
119205  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
119206  // This traversal helps support internal tools that call static member functions.
119207  // note: this function operates on the memory pools.
119210  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
119211  /* */
119212 
119213 
119214  public:
119215  /* name Memory Allocation Functions
119216  \brief Memory allocations functions ... incomplete-documentation
119217 
119218  These functions have been made public as part of the design, but they are suggested for internal use
119219  or by particularly knowledgable users for specialized tools or applications.
119220  */
119221  /* */
119222 
119233  virtual bool isInMemoryPool() override;
119234 
119245  virtual void checkDataMemberPointersIfInMemoryPool() override;
119246 
119247  // DQ (4/30/2006): Modified to be a const function.
119262  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
119263 
119273  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
119274 
119286  virtual long getChildIndex( SgNode* childNode ) const override;
119287 
119288  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
119289  // comment here (changed to be a C style comment and not be a doxygen comment).
119290  /* \brief Constructor for use by AST File I/O Mechanism
119291 
119292  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
119293  which obtained via fast binary file I/O from disk.
119294  */
119295  // SgUpirNestedParentField( SgUpirNestedParentFieldStorageClass& source );
119296 
119297 
119298 
119299 
119300 
119301  // JH (10/24/2005): methods added to support the ast file IO
119302  private:
119303 
119304  /* name AST Memory Allocation Support Functions
119305  \brief Memory allocations support....
119306 
119307  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
119308  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
119309  and support the AST File I/O Mechanism.
119310  */
119311  /* */
119312 
119313  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
119314  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
119315  that I use the same type everywhere, if any changes are made. THe second one declares the type
119316  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
119317  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
119318  a correspinding one in the AST_FILE_IO class!
119319  */
119320  // DQ (9/2/2015): This typedef is no longer used, we can't define the
119321  // comment here (changed to be a C style comment and not be a doxygen comment).
119322  /* \brief Typedef used for low level memory access.
119323  */
119324  // typedef unsigned char* TestType;
119325 
119326  // DQ (9/2/2015): This typedef is no longer used, we can't define the
119327  // comment here (changed to be a C style comment and not be a doxygen comment).
119328  /* \brief Typedef used to hold memory addresses as values.
119329  */
119330  // typedef unsigned long AddressType;
119331 
119332 
119333 
119334  // necessary, to have direct access to the p_freepointer and the private methods !
119336  friend class AST_FILE_IO;
119337 
119339  friend class SgUpirNestedParentFieldStorageClass;
119340 
119342  friend class AstSpecificDataManagingClass;
119343 
119345  friend class AstSpecificDataManagingClassStorageClass;
119346 
119347  public:
119349  SgUpirNestedParentField( const SgUpirNestedParentFieldStorageClass& source );
119350 
119351  // private: // JJW hack
119352  /*
119353  name AST Memory Allocation Support Variables
119354  Memory allocations support variables
119355 
119356  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
119357  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
119358  and support the AST File I/O Mechanism.
119359  */
119360  /* */
119361 
119362  public:
119363 
119364  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
119365  // to current node (so that it will work cleanly with build functions to specify patterns).
119366  // virtual SgNode* addRegExpAttribute();
119373 
119374 // *** COMMON CODE SECTION ENDS HERE ***
119375 
119376 
119377 // End of memberFunctionString
119378 // Start of memberFunctionString
119379 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
119380 
119381  // the generated cast function
119382  // friend ROSE_DLL_API SgUpirNestedParentField* isSgUpirNestedParentField ( SgNode* s );
119383 
119384  typedef SgOmpClause base_node_type;
119385 
119386 
119387 // End of memberFunctionString
119388 
119389  public:
119390  SgStatement* get_nested_parent() const;
119391  void set_nested_parent(SgStatement* nested_parent);
119392 
119393 
119394  public:
119395  virtual ~SgUpirNestedParentField();
119396 
119397 
119398  public:
119399  SgUpirNestedParentField(Sg_File_Info* startOfConstruct );
119401 
119402  protected:
119403 // Start of memberFunctionString
119404 SgStatement* p_nested_parent;
119405 
119406 // End of memberFunctionString
119407 
119408 
119409 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
119410 
119411 
119412  };
119413 #endif
119414 
119415 // postdeclarations for SgUpirNestedParentField
119416 
119417 /* #line 119418 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
119418 
119419 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
119420 
119421 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
119422 
119423 
119424 /* #line 119425 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
119425 
119426 
119427 
119428 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
119429 
119430 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
119431 // This code is automatically generated for each
119432 // terminal and non-terminal within the defined
119433 // grammar. There is a simple way to change the
119434 // code to fix bugs etc. See the ROSE README file
119435 // for directions.
119436 
119437 // tps: (02/22/2010): Adding DLL export requirements
119438 #include "rosedll.h"
119439 
119440 // predeclarations for SgUpirNestedChildField
119441 
119442 /* #line 119443 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
119443 
119444 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
119445 
119446 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
119447 
119448 #if 1
119449 // Class Definition for SgUpirNestedChildField
119450 class ROSE_DLL_API SgUpirNestedChildField : public SgOmpClause
119451  {
119452  public:
119453 
119454 
119455 /* #line 119456 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
119456 
119457  virtual SgNode* copy ( SgCopyHelp& help) const override;
119458 // Start of memberFunctionString
119459 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
119460 
119461 // *** COMMON CODE SECTION BEGINS HERE ***
119462 
119463  public:
119464 
119465  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
119466  // and not required which is required to match the other aspects of the copy mechanism code generation.
119467  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
119468  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
119469  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
119470  // virtual SgNode* copy ( const SgCopyHelp & help) const;
119471 
119473  virtual std::string class_name() const override;
119474 
119476  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
119477 
119479  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
119480  // static const VariantT static_variant = V_SgUpirNestedChildField;
119481  enum { static_variant = V_SgUpirNestedChildField };
119482 
119483  /* the generated cast function */
119485  ROSE_DLL_API friend SgUpirNestedChildField* isSgUpirNestedChildField( SgNode * s );
119486 
119488  ROSE_DLL_API friend const SgUpirNestedChildField* isSgUpirNestedChildField( const SgNode * s );
119489 
119490  // ******************************************
119491  // * Memory Pool / New / Delete
119492  // ******************************************
119493 
119494  public:
119496  static const unsigned pool_size; //
119498  static std::vector<unsigned char *> pools; //
119500  static SgUpirNestedChildField * next_node; //
119501 
119503  static unsigned long initializeStorageClassArray(SgUpirNestedChildFieldStorageClass *); //
119504 
119506  static void clearMemoryPool(); //
119507  static void deleteMemoryPool(); //
119508 
119510  static void extendMemoryPoolForFileIO(); //
119511 
119513  static SgUpirNestedChildField * getPointerFromGlobalIndex(unsigned long); //
119515  static SgUpirNestedChildField * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
119516 
119518  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
119520  static void resetValidFreepointers(); //
119522  static unsigned long getNumberOfLastValidPointer(); //
119523 
119524 
119525 #if defined(INLINE_FUNCTIONS)
119526 
119527  inline void *operator new (size_t size);
119528 #else
119529 
119530  void *operator new (size_t size);
119531 #endif
119532 
119533  void operator delete (void* pointer, size_t size);
119534 
119535  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
119536  void operator delete (void* pointer)
119537  {
119538  // This is the generated delete operator...
119539  SgUpirNestedChildField::operator delete (pointer,sizeof(SgUpirNestedChildField));
119540  }
119541 
119543  static size_t numberOfNodes();
119544 
119546  static size_t memoryUsage();
119547 
119548  // End of scope which started in IR nodes specific code
119549  /* */
119550 
119551  /* name Internal Functions
119552  \brief Internal functions ... incomplete-documentation
119553 
119554  These functions have been made public as part of the design, but they are suggested for internal use
119555  or by particularly knowledgeable users for specialized tools or applications.
119556 
119557  \internal We could not make these private because they are required by user for special purposes. And
119558  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
119559 
119560  */
119561 
119562  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
119563  // overridden in every class by *generated* implementation
119565  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
119566  // MS: 06/28/02 container of names of variables or container indices
119567  // used used in the traversal to access AST successor nodes
119568  // overridden in every class by *generated* implementation
119571  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
119572 
119573  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
119574  // than all the vector copies. The implementation for these functions is generated for each class.
119576  virtual size_t get_numberOfTraversalSuccessors() override;
119578  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
119580  virtual size_t get_childIndex(SgNode *child) override;
119581 
119582 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
119583  // MS: 08/16/2002 method for generating RTI information
119585  virtual RTIReturnType roseRTI() override;
119586 #endif
119587  /* */
119588 
119589 
119590 
119591  /* name Deprecated Functions
119592  \brief Deprecated functions ... incomplete-documentation
119593 
119594  These functions have been deprecated from use.
119595  */
119596  /* */
119597 
119599  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
119600 
119601  // JJW (10/16/2008): Changed to a single function in Node.code, and put
119602  // getVariant() in #if 0 block to prevent confusing Doxygen
119603 #if 0
119604 
119605  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
119607  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
119608 #endif
119609  /* */
119610 
119611 
119612 
119613 
119614  public:
119615  /* name Traversal Support Functions
119616  \brief Traversal support functions ... incomplete-documentation
119617 
119618  These functions have been made public as part of the design, but they are suggested for internal use
119619  or by particularly knowledgable users for specialized tools or applications.
119620  */
119621  /* */
119622 
119623  // DQ (11/26/2005): Support for visitor pattern mechanims
119624  // (inferior to ROSE traversal mechanism, experimental).
119628 
119629  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
119631  virtual void accept (ROSE_VisitorPattern & visitor) override;
119632 
119633  // DQ (12/26/2005): Support for traversal based on the memory pool
119636  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
119637 
119640  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
119641 
119642  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
119643  // This traversal helps support internal tools that call static member functions.
119644  // note: this function operates on the memory pools.
119647  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
119648  /* */
119649 
119650 
119651  public:
119652  /* name Memory Allocation Functions
119653  \brief Memory allocations functions ... incomplete-documentation
119654 
119655  These functions have been made public as part of the design, but they are suggested for internal use
119656  or by particularly knowledgable users for specialized tools or applications.
119657  */
119658  /* */
119659 
119670  virtual bool isInMemoryPool() override;
119671 
119682  virtual void checkDataMemberPointersIfInMemoryPool() override;
119683 
119684  // DQ (4/30/2006): Modified to be a const function.
119699  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
119700 
119710  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
119711 
119723  virtual long getChildIndex( SgNode* childNode ) const override;
119724 
119725  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
119726  // comment here (changed to be a C style comment and not be a doxygen comment).
119727  /* \brief Constructor for use by AST File I/O Mechanism
119728 
119729  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
119730  which obtained via fast binary file I/O from disk.
119731  */
119732  // SgUpirNestedChildField( SgUpirNestedChildFieldStorageClass& source );
119733 
119734 
119735 
119736 
119737 
119738  // JH (10/24/2005): methods added to support the ast file IO
119739  private:
119740 
119741  /* name AST Memory Allocation Support Functions
119742  \brief Memory allocations support....
119743 
119744  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
119745  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
119746  and support the AST File I/O Mechanism.
119747  */
119748  /* */
119749 
119750  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
119751  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
119752  that I use the same type everywhere, if any changes are made. THe second one declares the type
119753  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
119754  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
119755  a correspinding one in the AST_FILE_IO class!
119756  */
119757  // DQ (9/2/2015): This typedef is no longer used, we can't define the
119758  // comment here (changed to be a C style comment and not be a doxygen comment).
119759  /* \brief Typedef used for low level memory access.
119760  */
119761  // typedef unsigned char* TestType;
119762 
119763  // DQ (9/2/2015): This typedef is no longer used, we can't define the
119764  // comment here (changed to be a C style comment and not be a doxygen comment).
119765  /* \brief Typedef used to hold memory addresses as values.
119766  */
119767  // typedef unsigned long AddressType;
119768 
119769 
119770 
119771  // necessary, to have direct access to the p_freepointer and the private methods !
119773  friend class AST_FILE_IO;
119774 
119776  friend class SgUpirNestedChildFieldStorageClass;
119777 
119779  friend class AstSpecificDataManagingClass;
119780 
119782  friend class AstSpecificDataManagingClassStorageClass;
119783 
119784  public:
119786  SgUpirNestedChildField( const SgUpirNestedChildFieldStorageClass& source );
119787 
119788  // private: // JJW hack
119789  /*
119790  name AST Memory Allocation Support Variables
119791  Memory allocations support variables
119792 
119793  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
119794  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
119795  and support the AST File I/O Mechanism.
119796  */
119797  /* */
119798 
119799  public:
119800 
119801  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
119802  // to current node (so that it will work cleanly with build functions to specify patterns).
119803  // virtual SgNode* addRegExpAttribute();
119810 
119811 // *** COMMON CODE SECTION ENDS HERE ***
119812 
119813 
119814 // End of memberFunctionString
119815 // Start of memberFunctionString
119816 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
119817 
119818  // the generated cast function
119819  // friend ROSE_DLL_API SgUpirNestedChildField* isSgUpirNestedChildField ( SgNode* s );
119820 
119821  typedef SgOmpClause base_node_type;
119822 
119823 
119824 // End of memberFunctionString
119825 
119826  public:
119827  SgStatement* get_nested_child() const;
119828  void set_nested_child(SgStatement* nested_child);
119829 
119830 
119831  public:
119832  virtual ~SgUpirNestedChildField();
119833 
119834 
119835  public:
119836  SgUpirNestedChildField(Sg_File_Info* startOfConstruct );
119838 
119839  protected:
119840 // Start of memberFunctionString
119841 SgStatement* p_nested_child;
119842 
119843 // End of memberFunctionString
119844 
119845 
119846 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
119847 
119848 
119849  };
119850 #endif
119851 
119852 // postdeclarations for SgUpirNestedChildField
119853 
119854 /* #line 119855 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
119855 
119856 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
119857 
119858 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
119859 
119860 
119861 /* #line 119862 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
119862 
119863 
119864 
119865 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
119866 
119867 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
119868 // This code is automatically generated for each
119869 // terminal and non-terminal within the defined
119870 // grammar. There is a simple way to change the
119871 // code to fix bugs etc. See the ROSE README file
119872 // for directions.
119873 
119874 // tps: (02/22/2010): Adding DLL export requirements
119875 #include "rosedll.h"
119876 
119877 // predeclarations for SgUpirSyncField
119878 
119879 /* #line 119880 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
119880 
119881 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
119882 
119883 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
119884 
119885 #if 1
119886 // Class Definition for SgUpirSyncField
119887 class ROSE_DLL_API SgUpirSyncField : public SgOmpClause
119888  {
119889  public:
119890 
119891 
119892 /* #line 119893 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
119893 
119894  virtual SgNode* copy ( SgCopyHelp& help) const override;
119895 // Start of memberFunctionString
119896 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
119897 
119898 // *** COMMON CODE SECTION BEGINS HERE ***
119899 
119900  public:
119901 
119902  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
119903  // and not required which is required to match the other aspects of the copy mechanism code generation.
119904  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
119905  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
119906  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
119907  // virtual SgNode* copy ( const SgCopyHelp & help) const;
119908 
119910  virtual std::string class_name() const override;
119911 
119913  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
119914 
119916  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
119917  // static const VariantT static_variant = V_SgUpirSyncField;
119918  enum { static_variant = V_SgUpirSyncField };
119919 
119920  /* the generated cast function */
119922  ROSE_DLL_API friend SgUpirSyncField* isSgUpirSyncField( SgNode * s );
119923 
119925  ROSE_DLL_API friend const SgUpirSyncField* isSgUpirSyncField( const SgNode * s );
119926 
119927  // ******************************************
119928  // * Memory Pool / New / Delete
119929  // ******************************************
119930 
119931  public:
119933  static const unsigned pool_size; //
119935  static std::vector<unsigned char *> pools; //
119937  static SgUpirSyncField * next_node; //
119938 
119940  static unsigned long initializeStorageClassArray(SgUpirSyncFieldStorageClass *); //
119941 
119943  static void clearMemoryPool(); //
119944  static void deleteMemoryPool(); //
119945 
119947  static void extendMemoryPoolForFileIO(); //
119948 
119950  static SgUpirSyncField * getPointerFromGlobalIndex(unsigned long); //
119952  static SgUpirSyncField * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
119953 
119955  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
119957  static void resetValidFreepointers(); //
119959  static unsigned long getNumberOfLastValidPointer(); //
119960 
119961 
119962 #if defined(INLINE_FUNCTIONS)
119963 
119964  inline void *operator new (size_t size);
119965 #else
119966 
119967  void *operator new (size_t size);
119968 #endif
119969 
119970  void operator delete (void* pointer, size_t size);
119971 
119972  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
119973  void operator delete (void* pointer)
119974  {
119975  // This is the generated delete operator...
119976  SgUpirSyncField::operator delete (pointer,sizeof(SgUpirSyncField));
119977  }
119978 
119980  static size_t numberOfNodes();
119981 
119983  static size_t memoryUsage();
119984 
119985  // End of scope which started in IR nodes specific code
119986  /* */
119987 
119988  /* name Internal Functions
119989  \brief Internal functions ... incomplete-documentation
119990 
119991  These functions have been made public as part of the design, but they are suggested for internal use
119992  or by particularly knowledgeable users for specialized tools or applications.
119993 
119994  \internal We could not make these private because they are required by user for special purposes. And
119995  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
119996 
119997  */
119998 
119999  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
120000  // overridden in every class by *generated* implementation
120002  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
120003  // MS: 06/28/02 container of names of variables or container indices
120004  // used used in the traversal to access AST successor nodes
120005  // overridden in every class by *generated* implementation
120008  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
120009 
120010  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
120011  // than all the vector copies. The implementation for these functions is generated for each class.
120013  virtual size_t get_numberOfTraversalSuccessors() override;
120015  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
120017  virtual size_t get_childIndex(SgNode *child) override;
120018 
120019 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
120020  // MS: 08/16/2002 method for generating RTI information
120022  virtual RTIReturnType roseRTI() override;
120023 #endif
120024  /* */
120025 
120026 
120027 
120028  /* name Deprecated Functions
120029  \brief Deprecated functions ... incomplete-documentation
120030 
120031  These functions have been deprecated from use.
120032  */
120033  /* */
120034 
120036  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
120037 
120038  // JJW (10/16/2008): Changed to a single function in Node.code, and put
120039  // getVariant() in #if 0 block to prevent confusing Doxygen
120040 #if 0
120041 
120042  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
120044  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
120045 #endif
120046  /* */
120047 
120048 
120049 
120050 
120051  public:
120052  /* name Traversal Support Functions
120053  \brief Traversal support functions ... incomplete-documentation
120054 
120055  These functions have been made public as part of the design, but they are suggested for internal use
120056  or by particularly knowledgable users for specialized tools or applications.
120057  */
120058  /* */
120059 
120060  // DQ (11/26/2005): Support for visitor pattern mechanims
120061  // (inferior to ROSE traversal mechanism, experimental).
120065 
120066  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
120068  virtual void accept (ROSE_VisitorPattern & visitor) override;
120069 
120070  // DQ (12/26/2005): Support for traversal based on the memory pool
120073  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
120074 
120077  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
120078 
120079  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
120080  // This traversal helps support internal tools that call static member functions.
120081  // note: this function operates on the memory pools.
120084  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
120085  /* */
120086 
120087 
120088  public:
120089  /* name Memory Allocation Functions
120090  \brief Memory allocations functions ... incomplete-documentation
120091 
120092  These functions have been made public as part of the design, but they are suggested for internal use
120093  or by particularly knowledgable users for specialized tools or applications.
120094  */
120095  /* */
120096 
120107  virtual bool isInMemoryPool() override;
120108 
120119  virtual void checkDataMemberPointersIfInMemoryPool() override;
120120 
120121  // DQ (4/30/2006): Modified to be a const function.
120136  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
120137 
120147  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
120148 
120160  virtual long getChildIndex( SgNode* childNode ) const override;
120161 
120162  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
120163  // comment here (changed to be a C style comment and not be a doxygen comment).
120164  /* \brief Constructor for use by AST File I/O Mechanism
120165 
120166  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
120167  which obtained via fast binary file I/O from disk.
120168  */
120169  // SgUpirSyncField( SgUpirSyncFieldStorageClass& source );
120170 
120171 
120172 
120173 
120174 
120175  // JH (10/24/2005): methods added to support the ast file IO
120176  private:
120177 
120178  /* name AST Memory Allocation Support Functions
120179  \brief Memory allocations support....
120180 
120181  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
120182  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
120183  and support the AST File I/O Mechanism.
120184  */
120185  /* */
120186 
120187  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
120188  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
120189  that I use the same type everywhere, if any changes are made. THe second one declares the type
120190  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
120191  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
120192  a correspinding one in the AST_FILE_IO class!
120193  */
120194  // DQ (9/2/2015): This typedef is no longer used, we can't define the
120195  // comment here (changed to be a C style comment and not be a doxygen comment).
120196  /* \brief Typedef used for low level memory access.
120197  */
120198  // typedef unsigned char* TestType;
120199 
120200  // DQ (9/2/2015): This typedef is no longer used, we can't define the
120201  // comment here (changed to be a C style comment and not be a doxygen comment).
120202  /* \brief Typedef used to hold memory addresses as values.
120203  */
120204  // typedef unsigned long AddressType;
120205 
120206 
120207 
120208  // necessary, to have direct access to the p_freepointer and the private methods !
120210  friend class AST_FILE_IO;
120211 
120213  friend class SgUpirSyncFieldStorageClass;
120214 
120216  friend class AstSpecificDataManagingClass;
120217 
120219  friend class AstSpecificDataManagingClassStorageClass;
120220 
120221  public:
120223  SgUpirSyncField( const SgUpirSyncFieldStorageClass& source );
120224 
120225  // private: // JJW hack
120226  /*
120227  name AST Memory Allocation Support Variables
120228  Memory allocations support variables
120229 
120230  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
120231  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
120232  and support the AST File I/O Mechanism.
120233  */
120234  /* */
120235 
120236  public:
120237 
120238  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
120239  // to current node (so that it will work cleanly with build functions to specify patterns).
120240  // virtual SgNode* addRegExpAttribute();
120247 
120248 // *** COMMON CODE SECTION ENDS HERE ***
120249 
120250 
120251 // End of memberFunctionString
120252 // Start of memberFunctionString
120253 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
120254 
120255  // the generated cast function
120256  // friend ROSE_DLL_API SgUpirSyncField* isSgUpirSyncField ( SgNode* s );
120257 
120258  typedef SgOmpClause base_node_type;
120259 
120260 
120261 // End of memberFunctionString
120262 
120263  public:
120264  SgStatement* get_sync() const;
120265  void set_sync(SgStatement* sync);
120266 
120267 
120268  public:
120269  virtual ~SgUpirSyncField();
120270 
120271 
120272  public:
120273  SgUpirSyncField(Sg_File_Info* startOfConstruct );
120274  SgUpirSyncField();
120275 
120276  protected:
120277 // Start of memberFunctionString
120278 SgStatement* p_sync;
120279 
120280 // End of memberFunctionString
120281 
120282 
120283 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
120284 
120285 
120286  };
120287 #endif
120288 
120289 // postdeclarations for SgUpirSyncField
120290 
120291 /* #line 120292 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
120292 
120293 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
120294 
120295 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
120296 
120297 
120298 /* #line 120299 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
120299 
120300 
120301 
120302 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
120303 
120304 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
120305 // This code is automatically generated for each
120306 // terminal and non-terminal within the defined
120307 // grammar. There is a simple way to change the
120308 // code to fix bugs etc. See the ROSE README file
120309 // for directions.
120310 
120311 // tps: (02/22/2010): Adding DLL export requirements
120312 #include "rosedll.h"
120313 
120314 // predeclarations for SgUpirDataField
120315 
120316 /* #line 120317 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
120317 
120318 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
120319 
120320 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
120321 
120322 #if 1
120323 // Class Definition for SgUpirDataField
120324 class ROSE_DLL_API SgUpirDataField : public SgOmpClause
120325  {
120326  public:
120327 
120328 
120329 /* #line 120330 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
120330 
120331  virtual SgNode* copy ( SgCopyHelp& help) const override;
120332 // Start of memberFunctionString
120333 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
120334 
120335 // *** COMMON CODE SECTION BEGINS HERE ***
120336 
120337  public:
120338 
120339  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
120340  // and not required which is required to match the other aspects of the copy mechanism code generation.
120341  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
120342  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
120343  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
120344  // virtual SgNode* copy ( const SgCopyHelp & help) const;
120345 
120347  virtual std::string class_name() const override;
120348 
120350  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
120351 
120353  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
120354  // static const VariantT static_variant = V_SgUpirDataField;
120355  enum { static_variant = V_SgUpirDataField };
120356 
120357  /* the generated cast function */
120359  ROSE_DLL_API friend SgUpirDataField* isSgUpirDataField( SgNode * s );
120360 
120362  ROSE_DLL_API friend const SgUpirDataField* isSgUpirDataField( const SgNode * s );
120363 
120364  // ******************************************
120365  // * Memory Pool / New / Delete
120366  // ******************************************
120367 
120368  public:
120370  static const unsigned pool_size; //
120372  static std::vector<unsigned char *> pools; //
120374  static SgUpirDataField * next_node; //
120375 
120377  static unsigned long initializeStorageClassArray(SgUpirDataFieldStorageClass *); //
120378 
120380  static void clearMemoryPool(); //
120381  static void deleteMemoryPool(); //
120382 
120384  static void extendMemoryPoolForFileIO(); //
120385 
120387  static SgUpirDataField * getPointerFromGlobalIndex(unsigned long); //
120389  static SgUpirDataField * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
120390 
120392  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
120394  static void resetValidFreepointers(); //
120396  static unsigned long getNumberOfLastValidPointer(); //
120397 
120398 
120399 #if defined(INLINE_FUNCTIONS)
120400 
120401  inline void *operator new (size_t size);
120402 #else
120403 
120404  void *operator new (size_t size);
120405 #endif
120406 
120407  void operator delete (void* pointer, size_t size);
120408 
120409  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
120410  void operator delete (void* pointer)
120411  {
120412  // This is the generated delete operator...
120413  SgUpirDataField::operator delete (pointer,sizeof(SgUpirDataField));
120414  }
120415 
120417  static size_t numberOfNodes();
120418 
120420  static size_t memoryUsage();
120421 
120422  // End of scope which started in IR nodes specific code
120423  /* */
120424 
120425  /* name Internal Functions
120426  \brief Internal functions ... incomplete-documentation
120427 
120428  These functions have been made public as part of the design, but they are suggested for internal use
120429  or by particularly knowledgeable users for specialized tools or applications.
120430 
120431  \internal We could not make these private because they are required by user for special purposes. And
120432  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
120433 
120434  */
120435 
120436  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
120437  // overridden in every class by *generated* implementation
120439  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
120440  // MS: 06/28/02 container of names of variables or container indices
120441  // used used in the traversal to access AST successor nodes
120442  // overridden in every class by *generated* implementation
120445  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
120446 
120447  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
120448  // than all the vector copies. The implementation for these functions is generated for each class.
120450  virtual size_t get_numberOfTraversalSuccessors() override;
120452  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
120454  virtual size_t get_childIndex(SgNode *child) override;
120455 
120456 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
120457  // MS: 08/16/2002 method for generating RTI information
120459  virtual RTIReturnType roseRTI() override;
120460 #endif
120461  /* */
120462 
120463 
120464 
120465  /* name Deprecated Functions
120466  \brief Deprecated functions ... incomplete-documentation
120467 
120468  These functions have been deprecated from use.
120469  */
120470  /* */
120471 
120473  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
120474 
120475  // JJW (10/16/2008): Changed to a single function in Node.code, and put
120476  // getVariant() in #if 0 block to prevent confusing Doxygen
120477 #if 0
120478 
120479  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
120481  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
120482 #endif
120483  /* */
120484 
120485 
120486 
120487 
120488  public:
120489  /* name Traversal Support Functions
120490  \brief Traversal support functions ... incomplete-documentation
120491 
120492  These functions have been made public as part of the design, but they are suggested for internal use
120493  or by particularly knowledgable users for specialized tools or applications.
120494  */
120495  /* */
120496 
120497  // DQ (11/26/2005): Support for visitor pattern mechanims
120498  // (inferior to ROSE traversal mechanism, experimental).
120502 
120503  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
120505  virtual void accept (ROSE_VisitorPattern & visitor) override;
120506 
120507  // DQ (12/26/2005): Support for traversal based on the memory pool
120510  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
120511 
120514  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
120515 
120516  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
120517  // This traversal helps support internal tools that call static member functions.
120518  // note: this function operates on the memory pools.
120521  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
120522  /* */
120523 
120524 
120525  public:
120526  /* name Memory Allocation Functions
120527  \brief Memory allocations functions ... incomplete-documentation
120528 
120529  These functions have been made public as part of the design, but they are suggested for internal use
120530  or by particularly knowledgable users for specialized tools or applications.
120531  */
120532  /* */
120533 
120544  virtual bool isInMemoryPool() override;
120545 
120556  virtual void checkDataMemberPointersIfInMemoryPool() override;
120557 
120558  // DQ (4/30/2006): Modified to be a const function.
120573  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
120574 
120584  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
120585 
120597  virtual long getChildIndex( SgNode* childNode ) const override;
120598 
120599  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
120600  // comment here (changed to be a C style comment and not be a doxygen comment).
120601  /* \brief Constructor for use by AST File I/O Mechanism
120602 
120603  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
120604  which obtained via fast binary file I/O from disk.
120605  */
120606  // SgUpirDataField( SgUpirDataFieldStorageClass& source );
120607 
120608 
120609 
120610 
120611 
120612  // JH (10/24/2005): methods added to support the ast file IO
120613  private:
120614 
120615  /* name AST Memory Allocation Support Functions
120616  \brief Memory allocations support....
120617 
120618  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
120619  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
120620  and support the AST File I/O Mechanism.
120621  */
120622  /* */
120623 
120624  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
120625  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
120626  that I use the same type everywhere, if any changes are made. THe second one declares the type
120627  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
120628  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
120629  a correspinding one in the AST_FILE_IO class!
120630  */
120631  // DQ (9/2/2015): This typedef is no longer used, we can't define the
120632  // comment here (changed to be a C style comment and not be a doxygen comment).
120633  /* \brief Typedef used for low level memory access.
120634  */
120635  // typedef unsigned char* TestType;
120636 
120637  // DQ (9/2/2015): This typedef is no longer used, we can't define the
120638  // comment here (changed to be a C style comment and not be a doxygen comment).
120639  /* \brief Typedef used to hold memory addresses as values.
120640  */
120641  // typedef unsigned long AddressType;
120642 
120643 
120644 
120645  // necessary, to have direct access to the p_freepointer and the private methods !
120647  friend class AST_FILE_IO;
120648 
120650  friend class SgUpirDataFieldStorageClass;
120651 
120653  friend class AstSpecificDataManagingClass;
120654 
120656  friend class AstSpecificDataManagingClassStorageClass;
120657 
120658  public:
120660  SgUpirDataField( const SgUpirDataFieldStorageClass& source );
120661 
120662  // private: // JJW hack
120663  /*
120664  name AST Memory Allocation Support Variables
120665  Memory allocations support variables
120666 
120667  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
120668  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
120669  and support the AST File I/O Mechanism.
120670  */
120671  /* */
120672 
120673  public:
120674 
120675  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
120676  // to current node (so that it will work cleanly with build functions to specify patterns).
120677  // virtual SgNode* addRegExpAttribute();
120684 
120685 // *** COMMON CODE SECTION ENDS HERE ***
120686 
120687 
120688 // End of memberFunctionString
120689 // Start of memberFunctionString
120690 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
120691 
120692  // the generated cast function
120693  // friend ROSE_DLL_API SgUpirDataField* isSgUpirDataField ( SgNode* s );
120694 
120695  typedef SgOmpClause base_node_type;
120696 
120697 
120698 // End of memberFunctionString
120699 
120700  public:
120701  std::list<SgUpirDataItemField*> get_data() const;
120702  void set_data(std::list<SgUpirDataItemField*> data);
120703 
120704  public:
120705  std::list<SgUpirDataItemField*> get_shared_data() const;
120706  void set_shared_data(std::list<SgUpirDataItemField*> shared_data);
120707 
120708  public:
120709  std::list<SgUpirDataItemField*> get_private_data() const;
120710  void set_private_data(std::list<SgUpirDataItemField*> private_data);
120711 
120712  public:
120713  std::list<SgUpirDataItemField*> get_firstprivate_data() const;
120714  void set_firstprivate_data(std::list<SgUpirDataItemField*> firstprivate_data);
120715 
120716  public:
120717  std::list<SgUpirDataItemField*> get_lastprivate_data() const;
120718  void set_lastprivate_data(std::list<SgUpirDataItemField*> lastprivate_data);
120719 
120720  public:
120721  std::list<SgUpirDataItemField*> get_reduction_data() const;
120722  void set_reduction_data(std::list<SgUpirDataItemField*> reduction_data);
120723 
120724  public:
120725  std::list<SgUpirDataItemField*> get_map_to_data() const;
120726  void set_map_to_data(std::list<SgUpirDataItemField*> map_to_data);
120727 
120728  public:
120729  std::list<SgUpirDataItemField*> get_map_from_data() const;
120730  void set_map_from_data(std::list<SgUpirDataItemField*> map_from_data);
120731 
120732  public:
120733  std::list<SgUpirDataItemField*> get_map_tofrom_data() const;
120734  void set_map_tofrom_data(std::list<SgUpirDataItemField*> map_tofrom_data);
120735 
120736  public:
120737  std::list<SgUpirDataItemField*> get_map_alloc_data() const;
120738  void set_map_alloc_data(std::list<SgUpirDataItemField*> map_alloc_data);
120739 
120740 
120741  public:
120742  virtual ~SgUpirDataField();
120743 
120744 
120745  public:
120746  SgUpirDataField(Sg_File_Info* startOfConstruct );
120747  SgUpirDataField();
120748 
120749  protected:
120750 // Start of memberFunctionString
120751 std::list<SgUpirDataItemField*> p_data;
120752 
120753 // End of memberFunctionString
120754 // Start of memberFunctionString
120755 std::list<SgUpirDataItemField*> p_shared_data;
120756 
120757 // End of memberFunctionString
120758 // Start of memberFunctionString
120759 std::list<SgUpirDataItemField*> p_private_data;
120760 
120761 // End of memberFunctionString
120762 // Start of memberFunctionString
120763 std::list<SgUpirDataItemField*> p_firstprivate_data;
120764 
120765 // End of memberFunctionString
120766 // Start of memberFunctionString
120767 std::list<SgUpirDataItemField*> p_lastprivate_data;
120768 
120769 // End of memberFunctionString
120770 // Start of memberFunctionString
120771 std::list<SgUpirDataItemField*> p_reduction_data;
120772 
120773 // End of memberFunctionString
120774 // Start of memberFunctionString
120775 std::list<SgUpirDataItemField*> p_map_to_data;
120776 
120777 // End of memberFunctionString
120778 // Start of memberFunctionString
120779 std::list<SgUpirDataItemField*> p_map_from_data;
120780 
120781 // End of memberFunctionString
120782 // Start of memberFunctionString
120783 std::list<SgUpirDataItemField*> p_map_tofrom_data;
120784 
120785 // End of memberFunctionString
120786 // Start of memberFunctionString
120787 std::list<SgUpirDataItemField*> p_map_alloc_data;
120788 
120789 // End of memberFunctionString
120790 
120791 
120792 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
120793 
120794 
120795  };
120796 #endif
120797 
120798 // postdeclarations for SgUpirDataField
120799 
120800 /* #line 120801 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
120801 
120802 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
120803 
120804 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
120805 
120806 
120807 /* #line 120808 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
120808 
120809 
120810 
120811 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
120812 
120813 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
120814 // This code is automatically generated for each
120815 // terminal and non-terminal within the defined
120816 // grammar. There is a simple way to change the
120817 // code to fix bugs etc. See the ROSE README file
120818 // for directions.
120819 
120820 // tps: (02/22/2010): Adding DLL export requirements
120821 #include "rosedll.h"
120822 
120823 // predeclarations for SgUpirTargetField
120824 
120825 /* #line 120826 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
120826 
120827 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
120828 
120829 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
120830 
120831 #if 1
120832 // Class Definition for SgUpirTargetField
120833 class ROSE_DLL_API SgUpirTargetField : public SgOmpClause
120834  {
120835  public:
120836 
120837 
120838 /* #line 120839 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
120839 
120840  virtual SgNode* copy ( SgCopyHelp& help) const override;
120841 // Start of memberFunctionString
120842 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
120843 
120844 // *** COMMON CODE SECTION BEGINS HERE ***
120845 
120846  public:
120847 
120848  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
120849  // and not required which is required to match the other aspects of the copy mechanism code generation.
120850  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
120851  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
120852  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
120853  // virtual SgNode* copy ( const SgCopyHelp & help) const;
120854 
120856  virtual std::string class_name() const override;
120857 
120859  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
120860 
120862  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
120863  // static const VariantT static_variant = V_SgUpirTargetField;
120864  enum { static_variant = V_SgUpirTargetField };
120865 
120866  /* the generated cast function */
120868  ROSE_DLL_API friend SgUpirTargetField* isSgUpirTargetField( SgNode * s );
120869 
120871  ROSE_DLL_API friend const SgUpirTargetField* isSgUpirTargetField( const SgNode * s );
120872 
120873  // ******************************************
120874  // * Memory Pool / New / Delete
120875  // ******************************************
120876 
120877  public:
120879  static const unsigned pool_size; //
120881  static std::vector<unsigned char *> pools; //
120883  static SgUpirTargetField * next_node; //
120884 
120886  static unsigned long initializeStorageClassArray(SgUpirTargetFieldStorageClass *); //
120887 
120889  static void clearMemoryPool(); //
120890  static void deleteMemoryPool(); //
120891 
120893  static void extendMemoryPoolForFileIO(); //
120894 
120896  static SgUpirTargetField * getPointerFromGlobalIndex(unsigned long); //
120898  static SgUpirTargetField * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
120899 
120901  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
120903  static void resetValidFreepointers(); //
120905  static unsigned long getNumberOfLastValidPointer(); //
120906 
120907 
120908 #if defined(INLINE_FUNCTIONS)
120909 
120910  inline void *operator new (size_t size);
120911 #else
120912 
120913  void *operator new (size_t size);
120914 #endif
120915 
120916  void operator delete (void* pointer, size_t size);
120917 
120918  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
120919  void operator delete (void* pointer)
120920  {
120921  // This is the generated delete operator...
120922  SgUpirTargetField::operator delete (pointer,sizeof(SgUpirTargetField));
120923  }
120924 
120926  static size_t numberOfNodes();
120927 
120929  static size_t memoryUsage();
120930 
120931  // End of scope which started in IR nodes specific code
120932  /* */
120933 
120934  /* name Internal Functions
120935  \brief Internal functions ... incomplete-documentation
120936 
120937  These functions have been made public as part of the design, but they are suggested for internal use
120938  or by particularly knowledgeable users for specialized tools or applications.
120939 
120940  \internal We could not make these private because they are required by user for special purposes. And
120941  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
120942 
120943  */
120944 
120945  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
120946  // overridden in every class by *generated* implementation
120948  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
120949  // MS: 06/28/02 container of names of variables or container indices
120950  // used used in the traversal to access AST successor nodes
120951  // overridden in every class by *generated* implementation
120954  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
120955 
120956  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
120957  // than all the vector copies. The implementation for these functions is generated for each class.
120959  virtual size_t get_numberOfTraversalSuccessors() override;
120961  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
120963  virtual size_t get_childIndex(SgNode *child) override;
120964 
120965 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
120966  // MS: 08/16/2002 method for generating RTI information
120968  virtual RTIReturnType roseRTI() override;
120969 #endif
120970  /* */
120971 
120972 
120973 
120974  /* name Deprecated Functions
120975  \brief Deprecated functions ... incomplete-documentation
120976 
120977  These functions have been deprecated from use.
120978  */
120979  /* */
120980 
120982  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
120983 
120984  // JJW (10/16/2008): Changed to a single function in Node.code, and put
120985  // getVariant() in #if 0 block to prevent confusing Doxygen
120986 #if 0
120987 
120988  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
120990  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
120991 #endif
120992  /* */
120993 
120994 
120995 
120996 
120997  public:
120998  /* name Traversal Support Functions
120999  \brief Traversal support functions ... incomplete-documentation
121000 
121001  These functions have been made public as part of the design, but they are suggested for internal use
121002  or by particularly knowledgable users for specialized tools or applications.
121003  */
121004  /* */
121005 
121006  // DQ (11/26/2005): Support for visitor pattern mechanims
121007  // (inferior to ROSE traversal mechanism, experimental).
121011 
121012  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
121014  virtual void accept (ROSE_VisitorPattern & visitor) override;
121015 
121016  // DQ (12/26/2005): Support for traversal based on the memory pool
121019  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
121020 
121023  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
121024 
121025  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
121026  // This traversal helps support internal tools that call static member functions.
121027  // note: this function operates on the memory pools.
121030  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
121031  /* */
121032 
121033 
121034  public:
121035  /* name Memory Allocation Functions
121036  \brief Memory allocations functions ... incomplete-documentation
121037 
121038  These functions have been made public as part of the design, but they are suggested for internal use
121039  or by particularly knowledgable users for specialized tools or applications.
121040  */
121041  /* */
121042 
121053  virtual bool isInMemoryPool() override;
121054 
121065  virtual void checkDataMemberPointersIfInMemoryPool() override;
121066 
121067  // DQ (4/30/2006): Modified to be a const function.
121082  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
121083 
121093  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
121094 
121106  virtual long getChildIndex( SgNode* childNode ) const override;
121107 
121108  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
121109  // comment here (changed to be a C style comment and not be a doxygen comment).
121110  /* \brief Constructor for use by AST File I/O Mechanism
121111 
121112  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
121113  which obtained via fast binary file I/O from disk.
121114  */
121115  // SgUpirTargetField( SgUpirTargetFieldStorageClass& source );
121116 
121117 
121118 
121119 
121120 
121121  // JH (10/24/2005): methods added to support the ast file IO
121122  private:
121123 
121124  /* name AST Memory Allocation Support Functions
121125  \brief Memory allocations support....
121126 
121127  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
121128  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
121129  and support the AST File I/O Mechanism.
121130  */
121131  /* */
121132 
121133  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
121134  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
121135  that I use the same type everywhere, if any changes are made. THe second one declares the type
121136  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
121137  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
121138  a correspinding one in the AST_FILE_IO class!
121139  */
121140  // DQ (9/2/2015): This typedef is no longer used, we can't define the
121141  // comment here (changed to be a C style comment and not be a doxygen comment).
121142  /* \brief Typedef used for low level memory access.
121143  */
121144  // typedef unsigned char* TestType;
121145 
121146  // DQ (9/2/2015): This typedef is no longer used, we can't define the
121147  // comment here (changed to be a C style comment and not be a doxygen comment).
121148  /* \brief Typedef used to hold memory addresses as values.
121149  */
121150  // typedef unsigned long AddressType;
121151 
121152 
121153 
121154  // necessary, to have direct access to the p_freepointer and the private methods !
121156  friend class AST_FILE_IO;
121157 
121159  friend class SgUpirTargetFieldStorageClass;
121160 
121162  friend class AstSpecificDataManagingClass;
121163 
121165  friend class AstSpecificDataManagingClassStorageClass;
121166 
121167  public:
121169  SgUpirTargetField( const SgUpirTargetFieldStorageClass& source );
121170 
121171  // private: // JJW hack
121172  /*
121173  name AST Memory Allocation Support Variables
121174  Memory allocations support variables
121175 
121176  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
121177  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
121178  and support the AST File I/O Mechanism.
121179  */
121180  /* */
121181 
121182  public:
121183 
121184  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
121185  // to current node (so that it will work cleanly with build functions to specify patterns).
121186  // virtual SgNode* addRegExpAttribute();
121193 
121194 // *** COMMON CODE SECTION ENDS HERE ***
121195 
121196 
121197 // End of memberFunctionString
121198 // Start of memberFunctionString
121199 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
121200 
121201  // the generated cast function
121202  // friend ROSE_DLL_API SgUpirTargetField* isSgUpirTargetField ( SgNode* s );
121203 
121204  typedef SgOmpClause base_node_type;
121205 
121206 
121207 // End of memberFunctionString
121208 
121209  public:
121210  std::set<SgOmpClause::upir_target_type_enum> get_target_type() const;
121211  void set_target_type(std::set<SgOmpClause::upir_target_type_enum> target_type);
121212 
121213 
121214  public:
121215  virtual ~SgUpirTargetField();
121216 
121217 
121218  public:
121219  SgUpirTargetField(Sg_File_Info* startOfConstruct );
121220  SgUpirTargetField();
121221 
121222  protected:
121223 // Start of memberFunctionString
121224 std::set<SgOmpClause::upir_target_type_enum> p_target_type;
121225 
121226 // End of memberFunctionString
121227 
121228 
121229 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
121230 
121231 
121232  };
121233 #endif
121234 
121235 // postdeclarations for SgUpirTargetField
121236 
121237 /* #line 121238 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
121238 
121239 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
121240 
121241 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
121242 
121243 
121244 /* #line 121245 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
121245 
121246 
121247 
121248 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
121249 
121250 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
121251 // This code is automatically generated for each
121252 // terminal and non-terminal within the defined
121253 // grammar. There is a simple way to change the
121254 // code to fix bugs etc. See the ROSE README file
121255 // for directions.
121256 
121257 // tps: (02/22/2010): Adding DLL export requirements
121258 #include "rosedll.h"
121259 
121260 // predeclarations for SgUpirDataItemField
121261 
121262 /* #line 121263 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
121263 
121264 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
121265 
121266 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
121267 
121268 #if 1
121269 // Class Definition for SgUpirDataItemField
121270 class ROSE_DLL_API SgUpirDataItemField : public SgOmpClause
121271  {
121272  public:
121273 
121274 
121275 /* #line 121276 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
121276 
121277  virtual SgNode* copy ( SgCopyHelp& help) const override;
121278 // Start of memberFunctionString
121279 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
121280 
121281 // *** COMMON CODE SECTION BEGINS HERE ***
121282 
121283  public:
121284 
121285  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
121286  // and not required which is required to match the other aspects of the copy mechanism code generation.
121287  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
121288  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
121289  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
121290  // virtual SgNode* copy ( const SgCopyHelp & help) const;
121291 
121293  virtual std::string class_name() const override;
121294 
121296  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
121297 
121299  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
121300  // static const VariantT static_variant = V_SgUpirDataItemField;
121301  enum { static_variant = V_SgUpirDataItemField };
121302 
121303  /* the generated cast function */
121305  ROSE_DLL_API friend SgUpirDataItemField* isSgUpirDataItemField( SgNode * s );
121306 
121308  ROSE_DLL_API friend const SgUpirDataItemField* isSgUpirDataItemField( const SgNode * s );
121309 
121310  // ******************************************
121311  // * Memory Pool / New / Delete
121312  // ******************************************
121313 
121314  public:
121316  static const unsigned pool_size; //
121318  static std::vector<unsigned char *> pools; //
121320  static SgUpirDataItemField * next_node; //
121321 
121323  static unsigned long initializeStorageClassArray(SgUpirDataItemFieldStorageClass *); //
121324 
121326  static void clearMemoryPool(); //
121327  static void deleteMemoryPool(); //
121328 
121330  static void extendMemoryPoolForFileIO(); //
121331 
121333  static SgUpirDataItemField * getPointerFromGlobalIndex(unsigned long); //
121335  static SgUpirDataItemField * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
121336 
121338  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
121340  static void resetValidFreepointers(); //
121342  static unsigned long getNumberOfLastValidPointer(); //
121343 
121344 
121345 #if defined(INLINE_FUNCTIONS)
121346 
121347  inline void *operator new (size_t size);
121348 #else
121349 
121350  void *operator new (size_t size);
121351 #endif
121352 
121353  void operator delete (void* pointer, size_t size);
121354 
121355  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
121356  void operator delete (void* pointer)
121357  {
121358  // This is the generated delete operator...
121359  SgUpirDataItemField::operator delete (pointer,sizeof(SgUpirDataItemField));
121360  }
121361 
121363  static size_t numberOfNodes();
121364 
121366  static size_t memoryUsage();
121367 
121368  // End of scope which started in IR nodes specific code
121369  /* */
121370 
121371  /* name Internal Functions
121372  \brief Internal functions ... incomplete-documentation
121373 
121374  These functions have been made public as part of the design, but they are suggested for internal use
121375  or by particularly knowledgeable users for specialized tools or applications.
121376 
121377  \internal We could not make these private because they are required by user for special purposes. And
121378  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
121379 
121380  */
121381 
121382  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
121383  // overridden in every class by *generated* implementation
121385  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
121386  // MS: 06/28/02 container of names of variables or container indices
121387  // used used in the traversal to access AST successor nodes
121388  // overridden in every class by *generated* implementation
121391  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
121392 
121393  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
121394  // than all the vector copies. The implementation for these functions is generated for each class.
121396  virtual size_t get_numberOfTraversalSuccessors() override;
121398  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
121400  virtual size_t get_childIndex(SgNode *child) override;
121401 
121402 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
121403  // MS: 08/16/2002 method for generating RTI information
121405  virtual RTIReturnType roseRTI() override;
121406 #endif
121407  /* */
121408 
121409 
121410 
121411  /* name Deprecated Functions
121412  \brief Deprecated functions ... incomplete-documentation
121413 
121414  These functions have been deprecated from use.
121415  */
121416  /* */
121417 
121419  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
121420 
121421  // JJW (10/16/2008): Changed to a single function in Node.code, and put
121422  // getVariant() in #if 0 block to prevent confusing Doxygen
121423 #if 0
121424 
121425  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
121427  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
121428 #endif
121429  /* */
121430 
121431 
121432 
121433 
121434  public:
121435  /* name Traversal Support Functions
121436  \brief Traversal support functions ... incomplete-documentation
121437 
121438  These functions have been made public as part of the design, but they are suggested for internal use
121439  or by particularly knowledgable users for specialized tools or applications.
121440  */
121441  /* */
121442 
121443  // DQ (11/26/2005): Support for visitor pattern mechanims
121444  // (inferior to ROSE traversal mechanism, experimental).
121448 
121449  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
121451  virtual void accept (ROSE_VisitorPattern & visitor) override;
121452 
121453  // DQ (12/26/2005): Support for traversal based on the memory pool
121456  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
121457 
121460  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
121461 
121462  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
121463  // This traversal helps support internal tools that call static member functions.
121464  // note: this function operates on the memory pools.
121467  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
121468  /* */
121469 
121470 
121471  public:
121472  /* name Memory Allocation Functions
121473  \brief Memory allocations functions ... incomplete-documentation
121474 
121475  These functions have been made public as part of the design, but they are suggested for internal use
121476  or by particularly knowledgable users for specialized tools or applications.
121477  */
121478  /* */
121479 
121490  virtual bool isInMemoryPool() override;
121491 
121502  virtual void checkDataMemberPointersIfInMemoryPool() override;
121503 
121504  // DQ (4/30/2006): Modified to be a const function.
121519  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
121520 
121530  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
121531 
121543  virtual long getChildIndex( SgNode* childNode ) const override;
121544 
121545  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
121546  // comment here (changed to be a C style comment and not be a doxygen comment).
121547  /* \brief Constructor for use by AST File I/O Mechanism
121548 
121549  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
121550  which obtained via fast binary file I/O from disk.
121551  */
121552  // SgUpirDataItemField( SgUpirDataItemFieldStorageClass& source );
121553 
121554 
121555 
121556 
121557 
121558  // JH (10/24/2005): methods added to support the ast file IO
121559  private:
121560 
121561  /* name AST Memory Allocation Support Functions
121562  \brief Memory allocations support....
121563 
121564  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
121565  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
121566  and support the AST File I/O Mechanism.
121567  */
121568  /* */
121569 
121570  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
121571  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
121572  that I use the same type everywhere, if any changes are made. THe second one declares the type
121573  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
121574  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
121575  a correspinding one in the AST_FILE_IO class!
121576  */
121577  // DQ (9/2/2015): This typedef is no longer used, we can't define the
121578  // comment here (changed to be a C style comment and not be a doxygen comment).
121579  /* \brief Typedef used for low level memory access.
121580  */
121581  // typedef unsigned char* TestType;
121582 
121583  // DQ (9/2/2015): This typedef is no longer used, we can't define the
121584  // comment here (changed to be a C style comment and not be a doxygen comment).
121585  /* \brief Typedef used to hold memory addresses as values.
121586  */
121587  // typedef unsigned long AddressType;
121588 
121589 
121590 
121591  // necessary, to have direct access to the p_freepointer and the private methods !
121593  friend class AST_FILE_IO;
121594 
121596  friend class SgUpirDataItemFieldStorageClass;
121597 
121599  friend class AstSpecificDataManagingClass;
121600 
121602  friend class AstSpecificDataManagingClassStorageClass;
121603 
121604  public:
121606  SgUpirDataItemField( const SgUpirDataItemFieldStorageClass& source );
121607 
121608  // private: // JJW hack
121609  /*
121610  name AST Memory Allocation Support Variables
121611  Memory allocations support variables
121612 
121613  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
121614  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
121615  and support the AST File I/O Mechanism.
121616  */
121617  /* */
121618 
121619  public:
121620 
121621  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
121622  // to current node (so that it will work cleanly with build functions to specify patterns).
121623  // virtual SgNode* addRegExpAttribute();
121630 
121631 // *** COMMON CODE SECTION ENDS HERE ***
121632 
121633 
121634 // End of memberFunctionString
121635 // Start of memberFunctionString
121636 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
121637 
121638  // the generated cast function
121639  // friend ROSE_DLL_API SgUpirDataItemField* isSgUpirDataItemField ( SgNode* s );
121640 
121641  typedef SgOmpClause base_node_type;
121642 
121643 
121644 // End of memberFunctionString
121645 
121646  public:
121647  SgSymbol* get_symbol() const;
121648  void set_symbol(SgSymbol* symbol);
121649 
121650  public:
121651  SgOmpClause::upir_data_sharing_enum get_sharing_property() const;
121652  void set_sharing_property(SgOmpClause::upir_data_sharing_enum sharing_property);
121653 
121654  public:
121655  SgOmpClause::upir_property_visibility_enum get_sharing_visibility() const;
121656  void set_sharing_visibility(SgOmpClause::upir_property_visibility_enum sharing_visibility);
121657 
121658  public:
121659  SgOmpClause::upir_data_mapping_enum get_mapping_property() const;
121660  void set_mapping_property(SgOmpClause::upir_data_mapping_enum mapping_property);
121661 
121662  public:
121663  SgOmpClause::upir_property_visibility_enum get_mapping_visibility() const;
121664  void set_mapping_visibility(SgOmpClause::upir_property_visibility_enum mapping_visibility);
121665 
121666  public:
121667  SgExpression* get_mapper() const;
121668  void set_mapper(SgExpression* mapper);
121669 
121670  public:
121671  SgOmpClause::upir_data_access_enum get_access_property() const;
121672  void set_access_property(SgOmpClause::upir_data_access_enum access_property);
121673 
121674  public:
121675  SgExpression* get_unit_id() const;
121676  void set_unit_id(SgExpression* unit_id);
121677 
121678  public:
121679  SgOmpClause::upir_data_distribution_pattern_enum get_distribution_pattern() const;
121680  void set_distribution_pattern(SgOmpClause::upir_data_distribution_pattern_enum distribution_pattern);
121681 
121682  public:
121683  std::list<std::list<SgExpression*>> get_section() const;
121684  void set_section(std::list<std::list<SgExpression*>> section);
121685 
121686  public:
121687  SgOmpClause::upir_data_allocator_enum get_allocator() const;
121688  void set_allocator(SgOmpClause::upir_data_allocator_enum allocator);
121689 
121690  public:
121691  SgExpression* get_user_defined_allocator() const;
121692  void set_user_defined_allocator(SgExpression* user_defined_allocator);
121693 
121694  public:
121695  SgOmpClause::upir_data_deallocator_enum get_deallocator() const;
121696  void set_deallocator(SgOmpClause::upir_data_deallocator_enum deallocator);
121697 
121698  public:
121699  SgExpression* get_user_defined_deallocator() const;
121700  void set_user_defined_deallocator(SgExpression* user_defined_deallocator);
121701 
121702  public:
121703  SgExpression* get_memcpy_helper() const;
121704  void set_memcpy_helper(SgExpression* memcpy_helper);
121705 
121706 
121707  public:
121708  virtual ~SgUpirDataItemField();
121709 
121710 
121711  public:
121712  SgUpirDataItemField(Sg_File_Info* startOfConstruct , SgSymbol* symbol = NULL);
121713  SgUpirDataItemField(SgSymbol* symbol);
121714 
121715  protected:
121716 // Start of memberFunctionString
121717 SgSymbol* p_symbol;
121718 
121719 // End of memberFunctionString
121720 // Start of memberFunctionString
121721 SgOmpClause::upir_data_sharing_enum p_sharing_property;
121722 
121723 // End of memberFunctionString
121724 // Start of memberFunctionString
121725 SgOmpClause::upir_property_visibility_enum p_sharing_visibility;
121726 
121727 // End of memberFunctionString
121728 // Start of memberFunctionString
121729 SgOmpClause::upir_data_mapping_enum p_mapping_property;
121730 
121731 // End of memberFunctionString
121732 // Start of memberFunctionString
121733 SgOmpClause::upir_property_visibility_enum p_mapping_visibility;
121734 
121735 // End of memberFunctionString
121736 // Start of memberFunctionString
121737 SgExpression* p_mapper;
121738 
121739 // End of memberFunctionString
121740 // Start of memberFunctionString
121741 SgOmpClause::upir_data_access_enum p_access_property;
121742 
121743 // End of memberFunctionString
121744 // Start of memberFunctionString
121745 SgExpression* p_unit_id;
121746 
121747 // End of memberFunctionString
121748 // Start of memberFunctionString
121749 SgOmpClause::upir_data_distribution_pattern_enum p_distribution_pattern;
121750 
121751 // End of memberFunctionString
121752 // Start of memberFunctionString
121753 std::list<std::list<SgExpression*>> p_section;
121754 
121755 // End of memberFunctionString
121756 // Start of memberFunctionString
121757 SgOmpClause::upir_data_allocator_enum p_allocator;
121758 
121759 // End of memberFunctionString
121760 // Start of memberFunctionString
121761 SgExpression* p_user_defined_allocator;
121762 
121763 // End of memberFunctionString
121764 // Start of memberFunctionString
121765 SgOmpClause::upir_data_deallocator_enum p_deallocator;
121766 
121767 // End of memberFunctionString
121768 // Start of memberFunctionString
121769 SgExpression* p_user_defined_deallocator;
121770 
121771 // End of memberFunctionString
121772 // Start of memberFunctionString
121773 SgExpression* p_memcpy_helper;
121774 
121775 // End of memberFunctionString
121776 
121777 
121778 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
121779 
121780 
121781  };
121782 #endif
121783 
121784 // postdeclarations for SgUpirDataItemField
121785 
121786 /* #line 121787 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
121787 
121788 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
121789 
121790 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
121791 
121792 
121793 /* #line 121794 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
121794 
121795 
121796 
121797 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
121798 
121799 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
121800 // This code is automatically generated for each
121801 // terminal and non-terminal within the defined
121802 // grammar. There is a simple way to change the
121803 // code to fix bugs etc. See the ROSE README file
121804 // for directions.
121805 
121806 // tps: (02/22/2010): Adding DLL export requirements
121807 #include "rosedll.h"
121808 
121809 // predeclarations for SgLambdaCapture
121810 
121811 /* #line 121812 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
121812 
121813 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
121814 
121815 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
121816 
121817 #if 1
121818 // Class Definition for SgLambdaCapture
121819 class ROSE_DLL_API SgLambdaCapture : public SgLocatedNodeSupport
121820  {
121821  public:
121822 
121823 
121824 /* #line 121825 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
121825 
121826  virtual SgNode* copy ( SgCopyHelp& help) const override;
121827 // Start of memberFunctionString
121828 /* #line 615 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/LocatedNode.code" */
121829 
121830 // DQ (9/3/2014): Adding support for C++11 lambda expresions.
121831 
121832 
121833 // End of memberFunctionString
121834 // Start of memberFunctionString
121835 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
121836 
121837 // *** COMMON CODE SECTION BEGINS HERE ***
121838 
121839  public:
121840 
121841  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
121842  // and not required which is required to match the other aspects of the copy mechanism code generation.
121843  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
121844  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
121845  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
121846  // virtual SgNode* copy ( const SgCopyHelp & help) const;
121847 
121849  virtual std::string class_name() const override;
121850 
121852  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
121853 
121855  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
121856  // static const VariantT static_variant = V_SgLambdaCapture;
121857  enum { static_variant = V_SgLambdaCapture };
121858 
121859  /* the generated cast function */
121861  ROSE_DLL_API friend SgLambdaCapture* isSgLambdaCapture( SgNode * s );
121862 
121864  ROSE_DLL_API friend const SgLambdaCapture* isSgLambdaCapture( const SgNode * s );
121865 
121866  // ******************************************
121867  // * Memory Pool / New / Delete
121868  // ******************************************
121869 
121870  public:
121872  static const unsigned pool_size; //
121874  static std::vector<unsigned char *> pools; //
121876  static SgLambdaCapture * next_node; //
121877 
121879  static unsigned long initializeStorageClassArray(SgLambdaCaptureStorageClass *); //
121880 
121882  static void clearMemoryPool(); //
121883  static void deleteMemoryPool(); //
121884 
121886  static void extendMemoryPoolForFileIO(); //
121887 
121889  static SgLambdaCapture * getPointerFromGlobalIndex(unsigned long); //
121891  static SgLambdaCapture * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
121892 
121894  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
121896  static void resetValidFreepointers(); //
121898  static unsigned long getNumberOfLastValidPointer(); //
121899 
121900 
121901 #if defined(INLINE_FUNCTIONS)
121902 
121903  inline void *operator new (size_t size);
121904 #else
121905 
121906  void *operator new (size_t size);
121907 #endif
121908 
121909  void operator delete (void* pointer, size_t size);
121910 
121911  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
121912  void operator delete (void* pointer)
121913  {
121914  // This is the generated delete operator...
121915  SgLambdaCapture::operator delete (pointer,sizeof(SgLambdaCapture));
121916  }
121917 
121919  static size_t numberOfNodes();
121920 
121922  static size_t memoryUsage();
121923 
121924  // End of scope which started in IR nodes specific code
121925  /* */
121926 
121927  /* name Internal Functions
121928  \brief Internal functions ... incomplete-documentation
121929 
121930  These functions have been made public as part of the design, but they are suggested for internal use
121931  or by particularly knowledgeable users for specialized tools or applications.
121932 
121933  \internal We could not make these private because they are required by user for special purposes. And
121934  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
121935 
121936  */
121937 
121938  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
121939  // overridden in every class by *generated* implementation
121941  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
121942  // MS: 06/28/02 container of names of variables or container indices
121943  // used used in the traversal to access AST successor nodes
121944  // overridden in every class by *generated* implementation
121947  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
121948 
121949  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
121950  // than all the vector copies. The implementation for these functions is generated for each class.
121952  virtual size_t get_numberOfTraversalSuccessors() override;
121954  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
121956  virtual size_t get_childIndex(SgNode *child) override;
121957 
121958 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
121959  // MS: 08/16/2002 method for generating RTI information
121961  virtual RTIReturnType roseRTI() override;
121962 #endif
121963  /* */
121964 
121965 
121966 
121967  /* name Deprecated Functions
121968  \brief Deprecated functions ... incomplete-documentation
121969 
121970  These functions have been deprecated from use.
121971  */
121972  /* */
121973 
121975  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
121976 
121977  // JJW (10/16/2008): Changed to a single function in Node.code, and put
121978  // getVariant() in #if 0 block to prevent confusing Doxygen
121979 #if 0
121980 
121981  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
121983  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
121984 #endif
121985  /* */
121986 
121987 
121988 
121989 
121990  public:
121991  /* name Traversal Support Functions
121992  \brief Traversal support functions ... incomplete-documentation
121993 
121994  These functions have been made public as part of the design, but they are suggested for internal use
121995  or by particularly knowledgable users for specialized tools or applications.
121996  */
121997  /* */
121998 
121999  // DQ (11/26/2005): Support for visitor pattern mechanims
122000  // (inferior to ROSE traversal mechanism, experimental).
122004 
122005  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
122007  virtual void accept (ROSE_VisitorPattern & visitor) override;
122008 
122009  // DQ (12/26/2005): Support for traversal based on the memory pool
122012  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
122013 
122016  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
122017 
122018  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
122019  // This traversal helps support internal tools that call static member functions.
122020  // note: this function operates on the memory pools.
122023  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
122024  /* */
122025 
122026 
122027  public:
122028  /* name Memory Allocation Functions
122029  \brief Memory allocations functions ... incomplete-documentation
122030 
122031  These functions have been made public as part of the design, but they are suggested for internal use
122032  or by particularly knowledgable users for specialized tools or applications.
122033  */
122034  /* */
122035 
122046  virtual bool isInMemoryPool() override;
122047 
122058  virtual void checkDataMemberPointersIfInMemoryPool() override;
122059 
122060  // DQ (4/30/2006): Modified to be a const function.
122075  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
122076 
122086  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
122087 
122099  virtual long getChildIndex( SgNode* childNode ) const override;
122100 
122101  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
122102  // comment here (changed to be a C style comment and not be a doxygen comment).
122103  /* \brief Constructor for use by AST File I/O Mechanism
122104 
122105  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
122106  which obtained via fast binary file I/O from disk.
122107  */
122108  // SgLambdaCapture( SgLambdaCaptureStorageClass& source );
122109 
122110 
122111 
122112 
122113 
122114  // JH (10/24/2005): methods added to support the ast file IO
122115  private:
122116 
122117  /* name AST Memory Allocation Support Functions
122118  \brief Memory allocations support....
122119 
122120  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
122121  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
122122  and support the AST File I/O Mechanism.
122123  */
122124  /* */
122125 
122126  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
122127  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
122128  that I use the same type everywhere, if any changes are made. THe second one declares the type
122129  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
122130  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
122131  a correspinding one in the AST_FILE_IO class!
122132  */
122133  // DQ (9/2/2015): This typedef is no longer used, we can't define the
122134  // comment here (changed to be a C style comment and not be a doxygen comment).
122135  /* \brief Typedef used for low level memory access.
122136  */
122137  // typedef unsigned char* TestType;
122138 
122139  // DQ (9/2/2015): This typedef is no longer used, we can't define the
122140  // comment here (changed to be a C style comment and not be a doxygen comment).
122141  /* \brief Typedef used to hold memory addresses as values.
122142  */
122143  // typedef unsigned long AddressType;
122144 
122145 
122146 
122147  // necessary, to have direct access to the p_freepointer and the private methods !
122149  friend class AST_FILE_IO;
122150 
122152  friend class SgLambdaCaptureStorageClass;
122153 
122155  friend class AstSpecificDataManagingClass;
122156 
122158  friend class AstSpecificDataManagingClassStorageClass;
122159 
122160  public:
122162  SgLambdaCapture( const SgLambdaCaptureStorageClass& source );
122163 
122164  // private: // JJW hack
122165  /*
122166  name AST Memory Allocation Support Variables
122167  Memory allocations support variables
122168 
122169  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
122170  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
122171  and support the AST File I/O Mechanism.
122172  */
122173  /* */
122174 
122175  public:
122176 
122177  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
122178  // to current node (so that it will work cleanly with build functions to specify patterns).
122179  // virtual SgNode* addRegExpAttribute();
122186 
122187 // *** COMMON CODE SECTION ENDS HERE ***
122188 
122189 
122190 // End of memberFunctionString
122191 // Start of memberFunctionString
122192 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
122193 
122194  // the generated cast function
122195  // friend ROSE_DLL_API SgLambdaCapture* isSgLambdaCapture ( SgNode* s );
122196 
122198 
122199 
122200 // End of memberFunctionString
122201 
122202  public:
122203  SgExpression* get_capture_variable() const;
122204  void set_capture_variable(SgExpression* capture_variable);
122205 
122206  public:
122207  SgExpression* get_source_closure_variable() const;
122208  void set_source_closure_variable(SgExpression* source_closure_variable);
122209 
122210  public:
122211  SgExpression* get_closure_variable() const;
122212  void set_closure_variable(SgExpression* closure_variable);
122213 
122214  public:
122215  bool get_capture_by_reference() const;
122216  void set_capture_by_reference(bool capture_by_reference);
122217 
122218  public:
122219  bool get_implicit() const;
122220  void set_implicit(bool implicit);
122221 
122222  public:
122223  bool get_pack_expansion() const;
122224  void set_pack_expansion(bool pack_expansion);
122225 
122226 
122227  public:
122228  virtual ~SgLambdaCapture();
122229 
122230 
122231  public:
122232  SgLambdaCapture(Sg_File_Info* startOfConstruct , SgExpression* capture_variable = NULL, SgExpression* source_closure_variable = NULL, SgExpression* closure_variable = NULL, bool capture_by_reference = false, bool implicit = false, bool pack_expansion = false);
122233  SgLambdaCapture(SgExpression* capture_variable, SgExpression* source_closure_variable, SgExpression* closure_variable, bool capture_by_reference, bool implicit, bool pack_expansion);
122234 
122235  protected:
122236 // Start of memberFunctionString
122237 SgExpression* p_capture_variable;
122238 
122239 // End of memberFunctionString
122240 // Start of memberFunctionString
122241 SgExpression* p_source_closure_variable;
122242 
122243 // End of memberFunctionString
122244 // Start of memberFunctionString
122245 SgExpression* p_closure_variable;
122246 
122247 // End of memberFunctionString
122248 // Start of memberFunctionString
122249 bool p_capture_by_reference;
122250 
122251 // End of memberFunctionString
122252 // Start of memberFunctionString
122253 bool p_implicit;
122254 
122255 // End of memberFunctionString
122256 // Start of memberFunctionString
122257 bool p_pack_expansion;
122258 
122259 // End of memberFunctionString
122260 
122261 
122262 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
122263 
122264 
122265  };
122266 #endif
122267 
122268 // postdeclarations for SgLambdaCapture
122269 
122270 /* #line 122271 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
122271 
122272 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
122273 
122274 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
122275 
122276 
122277 /* #line 122278 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
122278 
122279 
122280 
122281 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
122282 
122283 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
122284 // This code is automatically generated for each
122285 // terminal and non-terminal within the defined
122286 // grammar. There is a simple way to change the
122287 // code to fix bugs etc. See the ROSE README file
122288 // for directions.
122289 
122290 // tps: (02/22/2010): Adding DLL export requirements
122291 #include "rosedll.h"
122292 
122293 // predeclarations for SgLambdaCaptureList
122294 
122295 /* #line 122296 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
122296 
122297 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
122298 
122299 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
122300 
122301 #if 1
122302 // Class Definition for SgLambdaCaptureList
122303 class ROSE_DLL_API SgLambdaCaptureList : public SgLocatedNodeSupport
122304  {
122305  public:
122306 
122307 
122308 /* #line 122309 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
122309 
122310  virtual SgNode* copy ( SgCopyHelp& help) const override;
122311 // Start of memberFunctionString
122312 /* #line 620 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/LocatedNode.code" */
122313 
122314 // DQ (9/3/2014): Adding support for C++11 lambda expresions.
122315 
122316 
122317 // End of memberFunctionString
122318 // Start of memberFunctionString
122319 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
122320 
122321 // *** COMMON CODE SECTION BEGINS HERE ***
122322 
122323  public:
122324 
122325  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
122326  // and not required which is required to match the other aspects of the copy mechanism code generation.
122327  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
122328  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
122329  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
122330  // virtual SgNode* copy ( const SgCopyHelp & help) const;
122331 
122333  virtual std::string class_name() const override;
122334 
122336  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
122337 
122339  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
122340  // static const VariantT static_variant = V_SgLambdaCaptureList;
122341  enum { static_variant = V_SgLambdaCaptureList };
122342 
122343  /* the generated cast function */
122345  ROSE_DLL_API friend SgLambdaCaptureList* isSgLambdaCaptureList( SgNode * s );
122346 
122348  ROSE_DLL_API friend const SgLambdaCaptureList* isSgLambdaCaptureList( const SgNode * s );
122349 
122350  // ******************************************
122351  // * Memory Pool / New / Delete
122352  // ******************************************
122353 
122354  public:
122356  static const unsigned pool_size; //
122358  static std::vector<unsigned char *> pools; //
122360  static SgLambdaCaptureList * next_node; //
122361 
122363  static unsigned long initializeStorageClassArray(SgLambdaCaptureListStorageClass *); //
122364 
122366  static void clearMemoryPool(); //
122367  static void deleteMemoryPool(); //
122368 
122370  static void extendMemoryPoolForFileIO(); //
122371 
122373  static SgLambdaCaptureList * getPointerFromGlobalIndex(unsigned long); //
122375  static SgLambdaCaptureList * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
122376 
122378  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
122380  static void resetValidFreepointers(); //
122382  static unsigned long getNumberOfLastValidPointer(); //
122383 
122384 
122385 #if defined(INLINE_FUNCTIONS)
122386 
122387  inline void *operator new (size_t size);
122388 #else
122389 
122390  void *operator new (size_t size);
122391 #endif
122392 
122393  void operator delete (void* pointer, size_t size);
122394 
122395  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
122396  void operator delete (void* pointer)
122397  {
122398  // This is the generated delete operator...
122399  SgLambdaCaptureList::operator delete (pointer,sizeof(SgLambdaCaptureList));
122400  }
122401 
122403  static size_t numberOfNodes();
122404 
122406  static size_t memoryUsage();
122407 
122408  // End of scope which started in IR nodes specific code
122409  /* */
122410 
122411  /* name Internal Functions
122412  \brief Internal functions ... incomplete-documentation
122413 
122414  These functions have been made public as part of the design, but they are suggested for internal use
122415  or by particularly knowledgeable users for specialized tools or applications.
122416 
122417  \internal We could not make these private because they are required by user for special purposes. And
122418  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
122419 
122420  */
122421 
122422  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
122423  // overridden in every class by *generated* implementation
122425  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
122426  // MS: 06/28/02 container of names of variables or container indices
122427  // used used in the traversal to access AST successor nodes
122428  // overridden in every class by *generated* implementation
122431  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
122432 
122433  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
122434  // than all the vector copies. The implementation for these functions is generated for each class.
122436  virtual size_t get_numberOfTraversalSuccessors() override;
122438  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
122440  virtual size_t get_childIndex(SgNode *child) override;
122441 
122442 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
122443  // MS: 08/16/2002 method for generating RTI information
122445  virtual RTIReturnType roseRTI() override;
122446 #endif
122447  /* */
122448 
122449 
122450 
122451  /* name Deprecated Functions
122452  \brief Deprecated functions ... incomplete-documentation
122453 
122454  These functions have been deprecated from use.
122455  */
122456  /* */
122457 
122459  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
122460 
122461  // JJW (10/16/2008): Changed to a single function in Node.code, and put
122462  // getVariant() in #if 0 block to prevent confusing Doxygen
122463 #if 0
122464 
122465  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
122467  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
122468 #endif
122469  /* */
122470 
122471 
122472 
122473 
122474  public:
122475  /* name Traversal Support Functions
122476  \brief Traversal support functions ... incomplete-documentation
122477 
122478  These functions have been made public as part of the design, but they are suggested for internal use
122479  or by particularly knowledgable users for specialized tools or applications.
122480  */
122481  /* */
122482 
122483  // DQ (11/26/2005): Support for visitor pattern mechanims
122484  // (inferior to ROSE traversal mechanism, experimental).
122488 
122489  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
122491  virtual void accept (ROSE_VisitorPattern & visitor) override;
122492 
122493  // DQ (12/26/2005): Support for traversal based on the memory pool
122496  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
122497 
122500  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
122501 
122502  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
122503  // This traversal helps support internal tools that call static member functions.
122504  // note: this function operates on the memory pools.
122507  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
122508  /* */
122509 
122510 
122511  public:
122512  /* name Memory Allocation Functions
122513  \brief Memory allocations functions ... incomplete-documentation
122514 
122515  These functions have been made public as part of the design, but they are suggested for internal use
122516  or by particularly knowledgable users for specialized tools or applications.
122517  */
122518  /* */
122519 
122530  virtual bool isInMemoryPool() override;
122531 
122542  virtual void checkDataMemberPointersIfInMemoryPool() override;
122543 
122544  // DQ (4/30/2006): Modified to be a const function.
122559  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
122560 
122570  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
122571 
122583  virtual long getChildIndex( SgNode* childNode ) const override;
122584 
122585  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
122586  // comment here (changed to be a C style comment and not be a doxygen comment).
122587  /* \brief Constructor for use by AST File I/O Mechanism
122588 
122589  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
122590  which obtained via fast binary file I/O from disk.
122591  */
122592  // SgLambdaCaptureList( SgLambdaCaptureListStorageClass& source );
122593 
122594 
122595 
122596 
122597 
122598  // JH (10/24/2005): methods added to support the ast file IO
122599  private:
122600 
122601  /* name AST Memory Allocation Support Functions
122602  \brief Memory allocations support....
122603 
122604  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
122605  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
122606  and support the AST File I/O Mechanism.
122607  */
122608  /* */
122609 
122610  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
122611  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
122612  that I use the same type everywhere, if any changes are made. THe second one declares the type
122613  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
122614  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
122615  a correspinding one in the AST_FILE_IO class!
122616  */
122617  // DQ (9/2/2015): This typedef is no longer used, we can't define the
122618  // comment here (changed to be a C style comment and not be a doxygen comment).
122619  /* \brief Typedef used for low level memory access.
122620  */
122621  // typedef unsigned char* TestType;
122622 
122623  // DQ (9/2/2015): This typedef is no longer used, we can't define the
122624  // comment here (changed to be a C style comment and not be a doxygen comment).
122625  /* \brief Typedef used to hold memory addresses as values.
122626  */
122627  // typedef unsigned long AddressType;
122628 
122629 
122630 
122631  // necessary, to have direct access to the p_freepointer and the private methods !
122633  friend class AST_FILE_IO;
122634 
122636  friend class SgLambdaCaptureListStorageClass;
122637 
122639  friend class AstSpecificDataManagingClass;
122640 
122642  friend class AstSpecificDataManagingClassStorageClass;
122643 
122644  public:
122646  SgLambdaCaptureList( const SgLambdaCaptureListStorageClass& source );
122647 
122648  // private: // JJW hack
122649  /*
122650  name AST Memory Allocation Support Variables
122651  Memory allocations support variables
122652 
122653  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
122654  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
122655  and support the AST File I/O Mechanism.
122656  */
122657  /* */
122658 
122659  public:
122660 
122661  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
122662  // to current node (so that it will work cleanly with build functions to specify patterns).
122663  // virtual SgNode* addRegExpAttribute();
122670 
122671 // *** COMMON CODE SECTION ENDS HERE ***
122672 
122673 
122674 // End of memberFunctionString
122675 // Start of memberFunctionString
122676 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
122677 
122678  // the generated cast function
122679  // friend ROSE_DLL_API SgLambdaCaptureList* isSgLambdaCaptureList ( SgNode* s );
122680 
122682 
122683 
122684 // End of memberFunctionString
122685 
122686  public:
122687  const SgLambdaCapturePtrList& get_capture_list() const;
122688  SgLambdaCapturePtrList& get_capture_list();
122689 
122690 
122691  public:
122692  virtual ~SgLambdaCaptureList();
122693 
122694 
122695  public:
122696  SgLambdaCaptureList(Sg_File_Info* startOfConstruct );
122697  SgLambdaCaptureList();
122698 
122699  protected:
122700 // Start of memberFunctionString
122701 SgLambdaCapturePtrList p_capture_list;
122702 
122703 // End of memberFunctionString
122704 
122705 
122706 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
122707 
122708 
122709  };
122710 #endif
122711 
122712 // postdeclarations for SgLambdaCaptureList
122713 
122714 /* #line 122715 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
122715 
122716 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
122717 
122718 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
122719 
122720 
122721 /* #line 122722 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
122722 
122723 
122724 
122725 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
122726 
122727 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
122728 // This code is automatically generated for each
122729 // terminal and non-terminal within the defined
122730 // grammar. There is a simple way to change the
122731 // code to fix bugs etc. See the ROSE README file
122732 // for directions.
122733 
122734 // tps: (02/22/2010): Adding DLL export requirements
122735 #include "rosedll.h"
122736 
122737 // predeclarations for SgStatement
122738 
122739 /* #line 122740 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
122740 
122741 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
122742 
122743 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
122744 
122745 #if 1
122746 // Class Definition for SgStatement
122747 class ROSE_DLL_API SgStatement : public SgLocatedNode
122748  {
122749  public:
122750 
122751 
122752 /* #line 122753 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
122753 
122754  virtual SgNode* copy ( SgCopyHelp& help) const override;
122755 // Start of memberFunctionString
122756 /* #line 7 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
122757 
122758  public:
122759  // DQ (8/19/2004): Remove old attribute mechanism
122760  // void output_pragma(ostream& os);
122761  // void set_pragma();
122762 
122763  // DQ (11/17/2004): Make this a virtual function since we have several different implementations
122764  // (e.g. where the scope is stored explicitly) Effected declarations:
122765  // class declarations (and derived classes (e.g. template instantiation declarations)
122766  // template declarations (which covers all forms of template declarations for classes, functions, and member functions)
122767  // function declarations (including member functions, template functions and template member functions)
122768  // variable declarations
122769  virtual SgScopeStatement *get_scope(void) const;
122770 
122771  virtual void setExtern() ROSE_DEPRECATED_FUNCTION;
122772  virtual void setStatic() ROSE_DEPRECATED_FUNCTION;
122773 
122774  protected:
122775  virtual bool replace_child(SgStatement *target,SgStatement * newStmt, bool extractListFromBasicBlock = false);
122776  virtual bool insert_child(SgStatement*, SgStatement*, bool inFront = true, bool extractListFromBasicBlock = false);
122777 
122778  public:
122779 
122780  /*
122781  name Low-Level Rewrite Support
122782  \brief Support for mutation of the AST.
122783 
122784  This is the lowest level of support for the mutation of the AST. From these
122785  primitives we have built more sophisticated mechanisms which are simpler to
122786  use and which automate many details (not handled within these functions):
122787  -# Preservation of attached comments
122788  -# Marking new IR nodes with correct file info position objects
122789  (often just the specification of the new code as a transformation).
122790  -# ...\n
122791 
122792  Higher level mechanism for the manipulation of the AST are available in the
122793  \ref ASTRewriteMechanism. These higher-level interfaces simplify the
122794  manipulation of the AST.
122795 
122796  \internal Need to document this section more fully.
122797  */
122798 
122812  void insert_statement(SgStatement* target, SgStatement* newstmt, bool inFront = true);
122826  void insert_statement(SgStatement* target, const SgStatementPtrList& newstmtList, bool inFront = true);
122836  void replace_statement(SgStatement* target, SgStatement* newstmt);
122847  void replace_statement(SgStatement* target, const SgStatementPtrList& newstmtList);
122859  void remove_statement(SgStatement *);
122860 
122879  void insert_statement_from_basicBlock(SgStatement* target, SgStatement* newstmt, bool inFront = true);
122880 
122896  void replace_statement_from_basicBlock(SgStatement* target, SgStatement* newstmt);
122897 
122898  // DQ (12/6/2006): Added to support general replace functions (used in statements that
122899  // directly contain SgExpression IR nodes, e.g. SgForStatement's increment expression).
122903  virtual int replace_expression(SgExpression* original_expression, SgExpression* new_expression );
122904 
122905  /* */
122906 
122907  // DQ (12/5/2004): Support for setting explicit scopes (where stored explicitly).
122909  virtual void set_scope ( SgScopeStatement* newScope );
122910 
122912  virtual bool hasExplicitScope() const;
122913 
122914  // DQ (2/6/2007): Added support for getting the symbol from the declaration (I think that Beata ask for this at some point).
122916  virtual SgSymbol* get_symbol_from_symbol_table() const;
122917 
122918 #if 0
122919  // Commented out by Dan Quinlan (while we worry about other main-line features)
122920  void set_purecc();
122921  void unset_purecc();
122922  int get_is_purecc() const;
122923  void add_pragma(int cnt, SgPragma** plist);
122924  SgPragma* add_pragma(char *nm) ;
122925  SgPragma* get_pragma(char *nm) const;
122926  int remove_pragma(char *nm) ;
122927 
122928  // get attribute,
122929  SgAttribute* get_user_attribute(char *nm) const;
122930  SgAttribute* add_user_attribute(char *nm,SgAttribute *attr);
122931  int remove_user_attribute(char *nm);
122932 #endif
122933 
122934 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
122935  // Overriding SgNode versions of these
122936  virtual unsigned int cfgIndexForEnd() const override;
122937  virtual bool cfgIsIndexInteresting(unsigned int index) const override;
122938  virtual unsigned int cfgFindChildIndex(SgNode* n) override;
122939  virtual unsigned int cfgFindNextChildIndex(SgNode* n) override;
122940  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
122941  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
122942 #endif
122943 
122944  // get lvalue
122945  virtual bool isChildUsedAsLValue(const SgExpression* child) const; // INTERNAL
122946 
122947 #if ALT_FIXUP_COPY
122948  // DQ (11/7/2007): These need to be called separately (see documentation)
122949  virtual void fixupCopy_scopes (SgNode* copy, SgCopyHelp & help) const override;
122950  virtual void fixupCopy_symbols (SgNode* copy, SgCopyHelp & help) const override;
122951  virtual void fixupCopy_references (SgNode* copy, SgCopyHelp & help) const override;
122952 #else
122953  // DQ (10/5/2007): Added fixup function to set scopes not set properly by the ROSETTA generated copy!
122954  virtual void fixupCopy(SgNode* copy, SgCopyHelp & help) const;
122955 #endif
122956 
122957  // DQ (12/16/2007): Added virtual function so that we could set the end_numeric_label on all relevant Fortran constructs
122958  // virtual void set_end_numeric_label(SgLabelSymbol* end_numeric_label);
122959  virtual void set_end_numeric_label(SgLabelRefExp* end_numeric_label);
122960 
122961  // Report if a construct has a concept of end_numeric_label
122962  virtual bool has_end_numeric_label() const;
122963 
122970  bool hasExplicitType();
122971 
122972 
122973 
122974 // End of memberFunctionString
122975 // Start of memberFunctionString
122976 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
122977 
122978  void post_construction_initialization() override;
122979 
122980 
122981 // End of memberFunctionString
122982 // Start of memberFunctionString
122983 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
122984 
122985 // *** COMMON CODE SECTION BEGINS HERE ***
122986 
122987  public:
122988 
122989  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
122990  // and not required which is required to match the other aspects of the copy mechanism code generation.
122991  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
122992  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
122993  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
122994  // virtual SgNode* copy ( const SgCopyHelp & help) const;
122995 
122997  virtual std::string class_name() const override;
122998 
123000  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
123001 
123003  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
123004  // static const VariantT static_variant = V_SgStatement;
123005  enum { static_variant = V_SgStatement };
123006 
123007  /* the generated cast function */
123009  ROSE_DLL_API friend SgStatement* isSgStatement( SgNode * s );
123010 
123012  ROSE_DLL_API friend const SgStatement* isSgStatement( const SgNode * s );
123013 
123014  // ******************************************
123015  // * Memory Pool / New / Delete
123016  // ******************************************
123017 
123018  public:
123020  static const unsigned pool_size; //
123022  static std::vector<unsigned char *> pools; //
123024  static SgStatement * next_node; //
123025 
123027  static unsigned long initializeStorageClassArray(SgStatementStorageClass *); //
123028 
123030  static void clearMemoryPool(); //
123031  static void deleteMemoryPool(); //
123032 
123034  static void extendMemoryPoolForFileIO(); //
123035 
123037  static SgStatement * getPointerFromGlobalIndex(unsigned long); //
123039  static SgStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
123040 
123042  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
123044  static void resetValidFreepointers(); //
123046  static unsigned long getNumberOfLastValidPointer(); //
123047 
123048 
123049 #if defined(INLINE_FUNCTIONS)
123050 
123051  inline void *operator new (size_t size);
123052 #else
123053 
123054  void *operator new (size_t size);
123055 #endif
123056 
123057  void operator delete (void* pointer, size_t size);
123058 
123059  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
123060  void operator delete (void* pointer)
123061  {
123062  // This is the generated delete operator...
123063  SgStatement::operator delete (pointer,sizeof(SgStatement));
123064  }
123065 
123067  static size_t numberOfNodes();
123068 
123070  static size_t memoryUsage();
123071 
123072  // End of scope which started in IR nodes specific code
123073  /* */
123074 
123075  /* name Internal Functions
123076  \brief Internal functions ... incomplete-documentation
123077 
123078  These functions have been made public as part of the design, but they are suggested for internal use
123079  or by particularly knowledgeable users for specialized tools or applications.
123080 
123081  \internal We could not make these private because they are required by user for special purposes. And
123082  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
123083 
123084  */
123085 
123086  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
123087  // overridden in every class by *generated* implementation
123089  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
123090  // MS: 06/28/02 container of names of variables or container indices
123091  // used used in the traversal to access AST successor nodes
123092  // overridden in every class by *generated* implementation
123095  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
123096 
123097  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
123098  // than all the vector copies. The implementation for these functions is generated for each class.
123100  virtual size_t get_numberOfTraversalSuccessors() override;
123102  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
123104  virtual size_t get_childIndex(SgNode *child) override;
123105 
123106 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
123107  // MS: 08/16/2002 method for generating RTI information
123109  virtual RTIReturnType roseRTI() override;
123110 #endif
123111  /* */
123112 
123113 
123114 
123115  /* name Deprecated Functions
123116  \brief Deprecated functions ... incomplete-documentation
123117 
123118  These functions have been deprecated from use.
123119  */
123120  /* */
123121 
123123  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
123124 
123125  // JJW (10/16/2008): Changed to a single function in Node.code, and put
123126  // getVariant() in #if 0 block to prevent confusing Doxygen
123127 #if 0
123128 
123129  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
123131  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
123132 #endif
123133  /* */
123134 
123135 
123136 
123137 
123138  public:
123139  /* name Traversal Support Functions
123140  \brief Traversal support functions ... incomplete-documentation
123141 
123142  These functions have been made public as part of the design, but they are suggested for internal use
123143  or by particularly knowledgable users for specialized tools or applications.
123144  */
123145  /* */
123146 
123147  // DQ (11/26/2005): Support for visitor pattern mechanims
123148  // (inferior to ROSE traversal mechanism, experimental).
123152 
123153  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
123155  virtual void accept (ROSE_VisitorPattern & visitor) override;
123156 
123157  // DQ (12/26/2005): Support for traversal based on the memory pool
123160  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
123161 
123164  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
123165 
123166  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
123167  // This traversal helps support internal tools that call static member functions.
123168  // note: this function operates on the memory pools.
123171  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
123172  /* */
123173 
123174 
123175  public:
123176  /* name Memory Allocation Functions
123177  \brief Memory allocations functions ... incomplete-documentation
123178 
123179  These functions have been made public as part of the design, but they are suggested for internal use
123180  or by particularly knowledgable users for specialized tools or applications.
123181  */
123182  /* */
123183 
123194  virtual bool isInMemoryPool() override;
123195 
123206  virtual void checkDataMemberPointersIfInMemoryPool() override;
123207 
123208  // DQ (4/30/2006): Modified to be a const function.
123223  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
123224 
123234  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
123235 
123247  virtual long getChildIndex( SgNode* childNode ) const override;
123248 
123249  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
123250  // comment here (changed to be a C style comment and not be a doxygen comment).
123251  /* \brief Constructor for use by AST File I/O Mechanism
123252 
123253  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
123254  which obtained via fast binary file I/O from disk.
123255  */
123256  // SgStatement( SgStatementStorageClass& source );
123257 
123258 
123259 
123260 
123261 
123262  // JH (10/24/2005): methods added to support the ast file IO
123263  private:
123264 
123265  /* name AST Memory Allocation Support Functions
123266  \brief Memory allocations support....
123267 
123268  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
123269  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
123270  and support the AST File I/O Mechanism.
123271  */
123272  /* */
123273 
123274  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
123275  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
123276  that I use the same type everywhere, if any changes are made. THe second one declares the type
123277  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
123278  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
123279  a correspinding one in the AST_FILE_IO class!
123280  */
123281  // DQ (9/2/2015): This typedef is no longer used, we can't define the
123282  // comment here (changed to be a C style comment and not be a doxygen comment).
123283  /* \brief Typedef used for low level memory access.
123284  */
123285  // typedef unsigned char* TestType;
123286 
123287  // DQ (9/2/2015): This typedef is no longer used, we can't define the
123288  // comment here (changed to be a C style comment and not be a doxygen comment).
123289  /* \brief Typedef used to hold memory addresses as values.
123290  */
123291  // typedef unsigned long AddressType;
123292 
123293 
123294 
123295  // necessary, to have direct access to the p_freepointer and the private methods !
123297  friend class AST_FILE_IO;
123298 
123300  friend class SgStatementStorageClass;
123301 
123303  friend class AstSpecificDataManagingClass;
123304 
123306  friend class AstSpecificDataManagingClassStorageClass;
123307 
123308  public:
123310  SgStatement( const SgStatementStorageClass& source );
123311 
123312  // private: // JJW hack
123313  /*
123314  name AST Memory Allocation Support Variables
123315  Memory allocations support variables
123316 
123317  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
123318  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
123319  and support the AST File I/O Mechanism.
123320  */
123321  /* */
123322 
123323  public:
123324 
123325  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
123326  // to current node (so that it will work cleanly with build functions to specify patterns).
123327  // virtual SgNode* addRegExpAttribute();
123333  SgStatement* addRegExpAttribute(std::string s, AstRegExAttribute* a);
123334 
123335 // *** COMMON CODE SECTION ENDS HERE ***
123336 
123337 
123338 // End of memberFunctionString
123339 // Start of memberFunctionString
123340 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
123341 
123342  // the generated cast function
123343  // friend ROSE_DLL_API SgStatement* isSgStatement ( SgNode* s );
123344 
123345  typedef SgLocatedNode base_node_type;
123346 
123347 
123348 // End of memberFunctionString
123349 
123350  public:
123351  SgLabelRefExp* get_numeric_label() const;
123352  void set_numeric_label(SgLabelRefExp* numeric_label);
123353 
123354  public:
123355  int get_source_sequence_value() const;
123356  void set_source_sequence_value(int source_sequence_value);
123357 
123358 
123359  public:
123360  virtual ~SgStatement();
123361 
123362 
123363  public:
123364  SgStatement(Sg_File_Info* startOfConstruct );
123365  SgStatement();
123366 
123367  protected:
123368 // Start of memberFunctionString
123369 SgLabelRefExp* p_numeric_label;
123370 
123371 // End of memberFunctionString
123372 // Start of memberFunctionString
123373 int p_source_sequence_value;
123374 
123375 // End of memberFunctionString
123376 
123377 
123378 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
123379 
123380 
123381  };
123382 #endif
123383 
123384 // postdeclarations for SgStatement
123385 
123386 /* #line 123387 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
123387 /* #line 605 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
123388 
123389 
123390 #if 0
123391  // DQ (5/23/2013): Put the get_symbol_table() function back to being public so that we can proceed with testing.
123392  // This fails for the GNU 4.4 compiler only. Sort it out later.
123393 
123394 // DQ (5/21/2013): Inserted forward namespace declaration, so that we can reference the namespace
123395 // in the friend functions of the SgScopeStatement. It appears hat this is not allowed.
123396 namespace SageInterface
123397  {
123398  class StatementGenerator;
123399  int set_name ( SgInitializedName *initializedNameNode, SgName new_name );
123400  void replaceExpressionWithStatement(SgExpression* from, StatementGenerator* to);
123401  void rebuildSymbolTable ( SgScopeStatement* scope );
123402  void fixupReferencesToSymbols( const SgScopeStatement* this_scope, SgScopeStatement* copy_scope, SgCopyHelp & help );
123403  int suggestNextNumericLabel(SgFunctionDefinition* func_def);
123404  void deleteAST ( SgNode* n );
123405  void moveStatementsBetweenBlocks ( SgBasicBlock* sourceBlock, SgBasicBlock* targetBlock );
123406  }
123407 
123408 namespace ASTtools
123409  {
123410  // struct VarSymSet_t;
123411  // typename VarSymSet_t;
123412  typedef std::set<const SgVariableSymbol *> VarSymSet_t;
123413  void moveStatements (SgBasicBlock* src, SgBasicBlock* dest);
123414  void collectLocalVisibleVarSyms (const SgStatement* root,const SgStatement* target,VarSymSet_t& syms);
123415  }
123416 #endif
123417 
123418 
123419 // DQ (12/30/2009): This has been moved from SOURCE_MAIN_STATEMENT to
123420 // here so that ic can be referenced from the separate source files
123421 // now optionally generated within ROSE to support smaller ROSETTA
123422 // generated files.
123423 
123424 #if 1
123425 // DQ (12/30/2009): This does not appear to be required to be a template function (base class will work just fine).
123426 
123427 // Replace target with newstmt if target matches 'cur'
123428 template <class Elemtype>
123429 inline bool
123430 StatementReplace (SgStatement *parent, Elemtype *& cur, SgStatement *target, SgStatement *newstmt)
123431  {
123432  if (cur == target)
123433  {
123434  // newstmt can be NULL or it must be compatible with cur's type
123435  // assert( newstmt == 0 || newstmt->variantT() == cur->variantT());
123436  ROSE_ASSERT (newstmt == 0 || dynamic_cast<Elemtype*>(newstmt));
123437 #ifndef REMOVE_SET_PARENT_FUNCTION
123438  // DQ (9/24/2004): Parent will be set in the AST fixup (in post-processing of the AST in AST Fixup)
123439  // Should not be set within EDG/Sage III connection code!
123440  printf ("Warning: Temporarily skipping set_parent in StatementReplace \n");
123441  // if (newstmt != 0)
123442  // newstmt->set_parent( parent);
123443 #endif
123444 
123445  cur = static_cast<Elemtype *>(newstmt);
123446 #if 0
123447  if (SgProject::get_verbose() >= 1)
123448  {
123449  printf ("In StatementReplace: test 1: Supress marking parent = %p = %s as isModified \n",parent,parent->class_name().c_str());
123450  }
123451 #endif
123452  // DQ (4/16/2015): Supress marking parent as isModified (we might want to mark this as containing a transformation).
123453  // parent->set_isModified(true);
123454 
123455  return true;
123456  }
123457  return false;
123458  }
123459 #else
123460 
123461 #error "DEAD CODE!"
123462 
123463 // DQ (12/30/2009): This is an attempt to build a more portable function to support new smaller ROSETTA generated files.
123464 // If we want to build this as a non-template function then we will have to reference "SgLocatedNode *& cur" as
123465 // "SgLocatedNode ** cur" (or perhaps using SgStatement), else the types prevent the function from working.
123466 inline bool
123467 StatementReplace (SgStatement *parent, SgStatement *& cur, SgStatement *target, SgStatement *newstmt)
123468 // StatementReplace (SgStatement *parent, SgLocatedNode *& cur, SgStatement *target, SgStatement *newstmt)
123469  {
123470  if (cur == target)
123471  {
123472  // newstmt can be NULL or it must be compatible with cur's type
123473  ROSE_ASSERT (newstmt == NULL || newstmt->variantT() == cur->variantT());
123474 
123475  // cur = static_cast<Elemtype *>(newstmt);
123476  // cur = static_cast<SgStatement*>(newstmt);
123477  cur = static_cast<SgLocatedNode*>(newstmt);
123478 
123479  parent->set_isModified(true);
123480  return true;
123481  }
123482  return false;
123483  }
123484 
123485 #error "DEAD CODE!"
123486 
123487 #endif
123488 
123489 #if 0
123490 // DQ (12/30/2009): This has been moved to the header file since it was a used in
123491 // several places and could not be supported in the source file now that we
123492 // support the generation of smaller and more numerous files by ROSETTA.
123493 inline Sg_File_Info* New_File_Info( SgLocatedNode *p)
123494  {
123495  // DQ (11/20/2004): Modified to provide more accurate information, use the
123496  // copy constructor instead of the constructor that takes a file name.
123497  // return new Sg_File_Info( p->get_file_info()->get_filename());
123498 
123499  // DQ (11/6/2006): startOfConstruct is the one Sg_File_Info that will always exist and must exist.
123500  // ROSE_ASSERT(p->get_file_info() != NULL);
123501  // Sg_File_Info* returnFileInfo = new Sg_File_Info( *( p->get_file_info() ) );
123502  // ROSE_ASSERT(returnFileInfo != NULL);
123503  ROSE_ASSERT(p->get_startOfConstruct() != NULL);
123504  Sg_File_Info* returnFileInfo = new Sg_File_Info( *( p->get_startOfConstruct() ) );
123505  ROSE_ASSERT(returnFileInfo != NULL);
123506 
123507  // printf ("In New_File_Info: returnFileInfo = %p \n",returnFileInfo);
123508 
123509  return returnFileInfo;
123510  }
123511 #else
123512 // Temporary while we move code to use generateMatchingFileInfo directly.
123513 inline Sg_File_Info* New_File_Info( SgLocatedNode *p)
123514  {
123515  ROSE_ASSERT(p != NULL);
123516  return p->generateMatchingFileInfo();
123517  }
123518 #endif
123519 
123520 
123521 
123522 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
123523 
123524 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
123525 
123526 
123527 /* #line 123528 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
123528 
123529 
123530 
123531 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
123532 
123533 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
123534 // This code is automatically generated for each
123535 // terminal and non-terminal within the defined
123536 // grammar. There is a simple way to change the
123537 // code to fix bugs etc. See the ROSE README file
123538 // for directions.
123539 
123540 // tps: (02/22/2010): Adding DLL export requirements
123541 #include "rosedll.h"
123542 
123543 // predeclarations for SgScopeStatement
123544 
123545 /* #line 123546 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
123546 
123547 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
123548 
123549 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
123550 
123551 #if 1
123552 // Class Definition for SgScopeStatement
123553 class ROSE_DLL_API SgScopeStatement : public SgStatement
123554  {
123555  public:
123556 
123557 
123558 /* #line 123559 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
123559 
123560  virtual SgNode* copy ( SgCopyHelp& help) const override;
123561 // Start of memberFunctionString
123562 /* #line 235 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
123563 
123564 
123565  public:
123566 
123567 #if 0
123568  // DQ (5/23/2013): Put the get_symbol_table() function back to being public so that we can proceed with testing.
123569  // This fails for the GNU 4.4 compiler only. Sort it out later.
123570 
123571  // DQ (5/21/2013): This class needs access because it rebuilds the symbol tables.
123572  friend class FixupAstSymbolTables;
123573 
123574  // DQ (5/21/2013): This class needs access because it rebuilds the parent child links in the symbol table (for symbols).
123575  friend class ResetParentPointersInMemoryPool;
123576  friend class FixupAstDefiningAndNondefiningDeclarations;
123577  friend class ResetEmptyNames;
123578  friend class FixupAstSymbolTablesToSupportAliasedSymbols;
123579 
123580  // DQ (5/21/2013): This is a static function in sageInterface.C (it required some specific access to the symbol table).
123581  friend SgVariableSymbol * addArg(SgFunctionParameterList *paraList, SgInitializedName* initName, bool isPrepend);
123582  friend int SageInterface::set_name ( SgInitializedName *initializedNameNode, SgName new_name );
123584  friend void SageInterface::rebuildSymbolTable ( SgScopeStatement* scope );
123585  friend void SageInterface::fixupReferencesToSymbols( const SgScopeStatement* this_scope, SgScopeStatement* copy_scope, SgCopyHelp & help );
123587  friend void SageInterface::deleteAST ( SgNode* n );
123588  friend void SageInterface::moveStatementsBetweenBlocks ( SgBasicBlock* sourceBlock, SgBasicBlock* targetBlock );
123589 
123590  // DQ (5/21/2013): From the AST consistancy tests.
123591  friend class TestAstSymbolTables;
123592 
123593  // DQ (5/21/2013): Support for the inliner.
123594  friend bool doInline(SgFunctionCallExp* funcall, bool allowRecursion);
123595  friend class FlattenBlocksVisitor;
123596  friend class RenameVariablesVisitor;
123597  friend class RenameLabelsVisitor;
123598 
123599  // DQ (5/21/2013): Support for the outliner.
123600  friend void ASTtools::moveStatements (SgBasicBlock* src, SgBasicBlock* dest);
123601  friend void ASTtools::collectLocalVisibleVarSyms (const SgStatement* root,const SgStatement* target,VarSymSet_t& syms);
123602 #endif
123603 
123604 
123605  // Since we suppress the generation of the constructors we have to declare them explicitly
123606  // SgScopeStatement ();
123607  SgScopeStatement ( Sg_File_Info* file_info = NULL );
123608 
123609  // DQ (9/8/2004): Added to support qualified name generation
123610  virtual SgName get_qualified_name() const;
123611 
123612  // DQ (2/22/2007): Added mangled name support for scopes so that the
123613  // mangled names for declarations could have better support!
123614  virtual SgName get_mangled_name() const;
123615 
123616  // DQ (2/10/2007): Added member function.
123619  size_t count_symbol(const SgName& n);
123620 
123621  // DQ (5/14/2011): Added count for alias symbols (used in name qualification, since alias symbols of a base class are added to the derived class).
123623  size_t count_alias_symbol(const SgName& n);
123624 
123626  size_t symbol_table_size();
123627 
123628  // Single interface for inserting symbol into symbol table
123629  void insert_symbol(const SgName& n, SgSymbol* s);
123630 
123631  // DQ (2/10/2007): I would like to deprecate this since it returns and integer and is not named well for such a return type!
123632  // see if this is in symbol table already
123633  int lookup_symbol( const SgName& n, SgSymbol* s) const ROSE_DEPRECATED_FUNCTION;
123634 
123635  // DQ (2/10/2007): Do we want an interface like this?
123636  // Note that these are relatively expensive functions since they do an exhaustive search of the symbol table.
123637  bool symbol_exists ( const SgName &, SgSymbol *sp ) const;
123638  bool symbol_exists ( const SgName & name ) const;
123639  bool symbol_exists ( const SgSymbol *sp ) const;
123640 
123641  // remove an existing symbol from the symbol table (does not call delete on the symbol)
123642  void remove_symbol ( SgSymbol* s );
123643 
123644  // DQ (1/30/2007): Many of these have been added back into ROSE, now we have examples showing they are
123645  // required to find the different types of symbols that can be placed into the same
123646  // scope using the same name.
123647 
123650  // SgSymbol* lookup_symbol (const SgName& n) const;
123651  // SgSymbol* lookup_symbol (const SgName& n, SgTemplateParameterPtrList* templateParameterList, SgTemplateArgumentPtrList* templateArgumentList) const;
123652  SgSymbol* lookup_symbol (const SgName& n, SgTemplateParameterPtrList* templateParameterList = NULL, SgTemplateArgumentPtrList* templateArgumentList = NULL) const;
123653 
123654  SgVariableSymbol* lookup_var_symbol (const SgName& n) const ROSE_DEPRECATED_FUNCTION;
123655  SgVariableSymbol* lookup_variable_symbol (const SgName& n) const;
123656 
123657  // DQ (8/21/2013): Nw that we permit the default parameter, this version of the function is ambiguous.
123658  // SgClassSymbol* lookup_class_symbol (const SgName& n) const;
123659 
123660  // DQ (8/22/2012): We need more information to disambiguate where template argument name qualification would be important. See test2012_195.C.
123661  SgClassSymbol* lookup_class_symbol (const SgName& n, SgTemplateArgumentPtrList* templateArgumentsList = NULL) const;
123662 
123663  SgNonrealSymbol* lookup_nonreal_symbol (const SgName& n, SgTemplateParameterPtrList* templateParameterList = NULL, SgTemplateArgumentPtrList* templateArgumentsList = NULL) const;
123664 
123665  SgFunctionSymbol* lookup_function_symbol (const SgName& n) const;
123666 
123667  // DQ (8/10/2013): Added to support function symbol lookup for template instantiations that would only be disambiguated by their template arguments.
123668  // SgFunctionSymbol* lookup_function_symbol (const SgName& n, const SgType* t) const;
123669  SgFunctionSymbol* lookup_function_symbol (const SgName& n, const SgType* t, SgTemplateArgumentPtrList* templateArgumentsList = NULL) const;
123670 
123671  SgTypedefSymbol* lookup_typedef_symbol (const SgName& n) const;
123672  SgEnumSymbol* lookup_enum_symbol (const SgName& n) const;
123673  // SgEnumFieldSymbol* lookup_enumfield_symbol (const SgName& n) const ROSE_DEPRECATED_FUNCTION;
123674  SgEnumFieldSymbol* lookup_enum_field_symbol (const SgName& n) const;
123675  SgLabelSymbol* lookup_label_symbol (const SgName& n) const;
123676  SgNamespaceSymbol* lookup_namespace_symbol (const SgName& n) const;
123677 
123678 #if 0
123679  // DQ (8/13/2013): Since function templates, member function templates, and class templates are symbols not derived from SgTemplateSymbol,
123680  // this function is not very useful since it returns a SgTemplateSymbol. This was a part of the older pre-EDG4x API.
123681 
123682  // A class template can have partial specialization, so we need to support both template parameter list and the
123683  // template argument list used for specialization as part of looking up symbols for template that could include
123684  // class templates, however, a template function can not have template partial specialization, so the template
123685  // argument list for partial specialization will not be used here (since specializations of template functions
123686  // are template instantiations, not templates and should use another symbol lookup function.
123687  // SgTemplateSymbol* lookup_template_symbol (const SgName& n) const;
123688  SgTemplateSymbol* lookup_template_symbol (const SgName& n, SgTemplateParameterPtrList* templateParameterList, SgTemplateArgumentPtrList* templateSpecializationArgumentList) const;
123689 #endif
123690 
123691  // DQ (12/12/2011): Added support for template declarations in the AST.
123692  // SgTemplateClassSymbol* lookup_template_class_symbol (const SgName& n) const;
123693  SgTemplateClassSymbol* lookup_template_class_symbol (const SgName& n, SgTemplateParameterPtrList* templateParameterList, SgTemplateArgumentPtrList* templateSpecializationArgumentList) const;
123694 
123695  // DQ (3/8/2017): Adding support for SgTemplateTypedefDeclaration IR nodes.
123696  SgTemplateTypedefSymbol* lookup_template_typedef_symbol (const SgName& n) const;
123697 
123698  // DQ (8/22/2012): If we have template arguments then we have a chance to disambiguate SgTemplateInstantiationDecl IR nodes based on the
123699  // arguments which would otherwise require qulified names (which are difficult to robustly support using as the AST is being constructed).
123700  SgClassSymbol* lookup_nontemplate_class_symbol (const SgName& n, SgTemplateArgumentPtrList* templateArgumentsList) const;
123701 
123702  // DQ (8/9/2013): Note that template functions can't be specialized, so we need to only handle SgTemplateParameterPtrList
123703  // DQ (12/27/2011): Added support for template declarations in the AST.
123704  // SgTemplateFunctionSymbol* lookup_template_function_symbol (const SgName& n, const SgType* t) const;
123705  SgTemplateFunctionSymbol* lookup_template_function_symbol (const SgName& n, const SgType* t, SgTemplateParameterPtrList* templateParameterList) const;
123706 
123707  SgTemplateVariableSymbol* lookup_template_variable_symbol (const SgName& n, SgTemplateParameterPtrList* templateParameterList, SgTemplateArgumentPtrList* templateArgumentsList) const;
123708 
123709  // DQ (8/10/2013): If there are template arguments then they are used to disambiguate template instantiations that might match existing non-template instantiations (normal functions).
123710  // SgFunctionSymbol* lookup_nontemplate_function_symbol (const SgName& n, const SgType* t) const;
123711  SgFunctionSymbol* lookup_nontemplate_function_symbol (const SgName& n, const SgType* t, SgTemplateArgumentPtrList* templateArgumentsList = NULL) const;
123712 
123713  // SgTemplateMemberFunctionSymbol* lookup_template_member_function_symbol (const SgName& n, const SgType* t) const;
123714  // SgTemplateMemberFunctionSymbol* lookup_template_member_function_symbol (const SgName& n, const SgType* t, SgTemplateParameterPtrList* templateParameterList, SgTemplateArgumentPtrList* templateSpecializationArgumentList) const;
123715  SgTemplateMemberFunctionSymbol* lookup_template_member_function_symbol (const SgName& n, const SgType* t, SgTemplateParameterPtrList* templateParameterList) const;
123716 
123717  // DQ (8/10/2013): If there are template arguments then they are used to disambiguate template instantiations that might match existing non-template instantiations (normal functions).
123718  // DQ (5/23/2013): Added API function so that we would not have to access the symbol tabel directly.
123719  // SgMemberFunctionSymbol* lookup_nontemplate_member_function_symbol (const SgName& n, const SgType* t) const;
123720  SgMemberFunctionSymbol* lookup_nontemplate_member_function_symbol (const SgName& n, const SgType* t, SgTemplateArgumentPtrList* templateArgumentsList = NULL) const;
123721 
123722  // DQ (1/23/2019): This function adds the support to find the SgAlias symbols of a given name.
123723  // This is important in handling the viability of symbols through base classes when private base
123724  // class derivation is used.
123725  SgAliasSymbol* lookup_alias_symbol(const SgName& n, SgSymbol* sp) const;
123726 
123727  // DQ (2/16/2019): Added to support detection of ambiguity that drives the generation of name qualification.
123728  bool hasAmbiguity(SgName & name, SgSymbol* symbol);
123729 
123731  SgSymbol* first_any_symbol () const;
123732  // SgVariableSymbol* first_var_symbol () const ROSE_DEPRECATED_FUNCTION;
123733  SgVariableSymbol* first_variable_symbol () const;
123734  SgClassSymbol* first_class_symbol () const;
123735  SgFunctionSymbol* first_function_symbol () const;
123736  SgTypedefSymbol* first_typedef_symbol () const;
123737  SgEnumSymbol* first_enum_symbol () const;
123738  // SgEnumFieldSymbol* first_enumfield_symbol () const ROSE_DEPRECATED_FUNCTION;
123739  SgEnumFieldSymbol* first_enum_field_symbol () const;
123740  SgLabelSymbol* first_label_symbol () const;
123741  SgNamespaceSymbol* first_namespace_symbol () const;
123742  SgTemplateSymbol* first_template_symbol () const;
123743 
123744  // Should we have a member function like this!
123745  // SgFunctionSymbol* first_function_symbol (const SgType* t) const;
123746 
123751  SgSymbol* next_any_symbol () const;
123752  // SgVariableSymbol* next_var_symbol () const ROSE_DEPRECATED_FUNCTION;
123753  SgVariableSymbol* next_variable_symbol () const;
123754  SgClassSymbol* next_class_symbol () const;
123755  SgFunctionSymbol* next_function_symbol () const;
123756  SgTypedefSymbol* next_typedef_symbol () const;
123757  SgEnumSymbol* next_enum_symbol () const;
123758  // SgEnumFieldSymbol* next_enumfield_symbol () const ROSE_DEPRECATED_FUNCTION;
123759  SgEnumFieldSymbol* next_enum_field_symbol () const;
123760  SgLabelSymbol* next_label_symbol () const;
123761  SgNamespaceSymbol* next_namespace_symbol () const;
123762  SgTemplateSymbol* next_template_symbol () const;
123763 
123764  // Should we have a member function like this!
123765  // SgFunctionSymbol* next_function_symbol (const SgType* t) const;
123766 
123767  /* some symbol table printing utility routines */
123768  // void print_symboltable(const std::string& str, std::ostream& os = std::cout);
123769  void print_symboltable(const std::string& str, std::ostream& os );
123770  void print_symboltable(const std::string & label, VariantT nodeType);
123771  void print_symboltable(const std::string & str);
123772 
123773 #if 0
123774  // DQ (9/7/2006): Previously removed functionality, restored by request from Beata at ANL.
123775  // The next for functions have been placed back into the Sage III interface.
123776  SgSymbol *first_any_symbol();
123777  SgVariableSymbol *first_variable_symbol();
123778  SgSymbol *next_any_symbol();
123779  SgVariableSymbol *next_variable_symbol();
123780 #endif
123781 
123782 #if 0
123783  // Not clear if we need more insert functions to support the X version terminals/nonterminals
123784  SgVariableSymbol *insert_symbol(const SgInitializedNamePtrList::iterator&);
123785  SgVariableSymbol *insert_symbol(SgVariableDeclaration *);
123786  SgFunctionSymbol *insert_symbol(SgFunctionDeclaration *);
123788  SgClassSymbol *insert_symbol(SgClassDeclaration *cdecl);
123789  SgEnumSymbol *insert_symbol(SgEnumDeclaration *cdecl);
123790  SgTypedefSymbol *insert_symbol(SgTypedefDeclaration *);
123791  SgLabelSymbol *insert_symbol(SgLabelStatement *);
123792 
123793  SgEnumFieldSymbol *insert_enum_symbol(const SgInitializedNamePtrList::iterator&);
123794 #endif
123795 
123796  // DQ (7/17/2002) Added to support rewrite mechanism some scopes can only contain
123797  // SgDeclarationStmt while others can contain any kind of SgStatement
123801  bool containsOnlyDeclarations() const;
123802  void insertStatementInScope ( SgStatement* newTransformationStatement, bool atTop );
123803  SgDeclarationStatementPtrList & getDeclarationList();
123804  SgStatementPtrList & getStatementList();
123805 
123806  // DQ (10/6/2007): Added to support const version of generateStatementList()
123807  const SgDeclarationStatementPtrList & getDeclarationList() const;
123808  const SgStatementPtrList & getStatementList() const;
123809 
123810  // DQ (2/1/2007): Made the return type const to reflect that the list is read-only.
123816  const SgStatementPtrList generateStatementList() const;
123817 
123818  // DQ (6/26/2013): Added function to test for existence of statement in scope.
123820  bool statementExistsInScope ( SgStatement* statement );
123821 
123822  // DQ (5/22/2006): Added function here so that it could be defined for all scopes (instead of just a few)
123823  // virtual SgName get_mangled_name (void) const;
123824 
123825  // DQ (10/18/2006): Not all scopes permit function declarations.
123832  bool supportsDefiningFunctionDeclaration();
123833 
123834  // DQ (2/20/2007): Added support for AST merge (which requires unique names for even un-named
123835  // constructs (we use the position in scope as part of the unique name generation). This has to
123836  // be non-const since it calls the non-const list functions. This could all be fixed, I think.
123838  unsigned int generateUniqueStatementNumberForScope( SgStatement* statement );
123839 
123844  bool generateUniqueStatementNumberForScopeHelper( unsigned int& counter, SgStatement* statement );
123845 
123846  // DQ (6/5/2007): Build special operator to return by reference
123849  std::set<SgSymbol*> & get_type_elaboration_list ();
123850 
123853  std::set<SgSymbol*> & get_hidden_type_list ();
123854 
123857  std::set<SgSymbol*> & get_hidden_declaration_list ();
123858 
123859  // DQ (6/5/2007): Build special operators set the hidden lists (not clear if these are used or required)
123860  void set_type_elaboration_list ( const std::set<SgSymbol*> & type_elaboration_list );
123861  void set_hidden_type_list ( const std::set<SgSymbol*> & hidden_type_list );
123862  void set_hidden_declaration_list ( const std::set<SgSymbol*> & hidden_declaration_list );
123863 
123864  // DQ (6/14/2007): Added to support simpler handling of general scopes (used in EDG/Sage translation).
123866  void append_statement ( SgStatement* stmt );
123867  void prepend_statement ( SgStatement* stmt );
123868 
123869  SgStatement* firstStatement() const;
123870  SgStatement* lastStatement() const;
123871 
123872  // protected:
123873 
123874 #if ALT_FIXUP_COPY
123875  // DQ (11/7/2007): These need to be called separately (see documentation)
123876  virtual void fixupCopy_scopes (SgNode* copy, SgCopyHelp & help) const override;
123877  virtual void fixupCopy_symbols (SgNode* copy, SgCopyHelp & help) const override;
123878  virtual void fixupCopy_references (SgNode* copy, SgCopyHelp & help) const override;
123879 #else
123880  // DQ (10/6/2007): Added fixup function to set scopes not set properly by the ROSETTA generated copy!
123881  virtual void fixupCopy(SgNode* copy, SgCopyHelp & help) const;
123882 #endif
123883 
123884  // DQ (11/28/2010): Added case sensitive/insensitive option to symbol table behavior.
123886  bool isCaseInsensitive() const;
123887  void setCaseInsensitive(bool b);
123888 
123889  // DQ (5/11/2011): Added support for new name qualification implementation.
123891  bool isNamedScope();
123892 
123893  // DQ (5/11/2011): Added support for new name qualification implementation.
123895  SgName associatedScopeName();
123896 
123897  // DQ (1/21/2013): Added test for equivalents (e.g. namespace definitions that might be different IR nodes, but for an equivalent namespace).
123898  static bool isEquivalentScope( SgScopeStatement* scope1, SgScopeStatement* scope2);
123899 #if 0
123900  // DQ (5/23/2013): We want to make this private, and this works for C/C++, but not yet for Fortran (at least).
123901  private:
123902 #else
123903  // DQ (5/23/2013): Restore this as public so that I can get the C/C++ work tested in Jenkins and fixup the Fortran support afterward.
123904  public:
123905 #endif
123906  // DQ (5/21/2013): This function is removed from the SgScopeStatement API as a public member function.
123907  // It is replaced in the SgScopeStatement as a soon to be private member function. This is done to
123908  // support hiding the namespace symbol table handling behind the SgScopeStatement level of support.
123909  // There is no reason for the symbol table to be directly accessible to users, if there is a problem
123910  // then the SgScopeStatement class API should be extended with the required functionality.
123911  SgSymbolTable* get_symbol_table () const;
123912  void set_symbol_table ( SgSymbolTable* symbol_table );
123913 
123914  public:
123915  // DQ (8/7/2013): Adding support for template function overloading using template parameters (info passed as template arguments for specialization).
123916  // DQ (5/21/2013): Added support for organizing how we match function declarations with function symbols.
123917  // This function was moved from the symbol table to the SgScopeStatement so that we could make the
123918  // symbol table access functions private as part of the new namespace symbol table handling.
123919  // template<class T> SgFunctionSymbol* find_symbol_by_type_of_function (const SgName & name, const SgType* func_type);
123920  // template<class T> SgFunctionSymbol* find_symbol_by_type_of_function (const SgName & name, const SgType* func_type, SgTemplateArgumentPtrList* templateArgumentList);
123921  // template<class T> SgFunctionSymbol* find_symbol_by_type_of_function (const SgName & name, const SgType* func_type, SgTemplateArgumentPtrList* templateArgumentList, SgTemplateParameterPtrList* templateParameterList);
123922  template<class T> SgFunctionSymbol* find_symbol_by_type_of_function (const SgName & name, const SgType* func_type, SgTemplateParameterPtrList* templateParameterList, SgTemplateArgumentPtrList* templateArgumentList);
123923 
123924  // DQ (5/21/2013): This function is used by the get_symbol_from_symbol_table() functions.
123925  template<class T> SgSymbol* find_symbol_from_declaration(const T* node) const;
123926 
123927  public:
123928 
123929 
123930 
123931 
123932 // End of memberFunctionString
123933 // Start of memberFunctionString
123934 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
123935 
123936 // *** COMMON CODE SECTION BEGINS HERE ***
123937 
123938  public:
123939 
123940  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
123941  // and not required which is required to match the other aspects of the copy mechanism code generation.
123942  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
123943  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
123944  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
123945  // virtual SgNode* copy ( const SgCopyHelp & help) const;
123946 
123948  virtual std::string class_name() const override;
123949 
123951  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
123952 
123954  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
123955  // static const VariantT static_variant = V_SgScopeStatement;
123956  enum { static_variant = V_SgScopeStatement };
123957 
123958  /* the generated cast function */
123960  ROSE_DLL_API friend SgScopeStatement* isSgScopeStatement( SgNode * s );
123961 
123963  ROSE_DLL_API friend const SgScopeStatement* isSgScopeStatement( const SgNode * s );
123964 
123965  // ******************************************
123966  // * Memory Pool / New / Delete
123967  // ******************************************
123968 
123969  public:
123971  static const unsigned pool_size; //
123973  static std::vector<unsigned char *> pools; //
123975  static SgScopeStatement * next_node; //
123976 
123978  static unsigned long initializeStorageClassArray(SgScopeStatementStorageClass *); //
123979 
123981  static void clearMemoryPool(); //
123982  static void deleteMemoryPool(); //
123983 
123985  static void extendMemoryPoolForFileIO(); //
123986 
123988  static SgScopeStatement * getPointerFromGlobalIndex(unsigned long); //
123990  static SgScopeStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
123991 
123993  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
123995  static void resetValidFreepointers(); //
123997  static unsigned long getNumberOfLastValidPointer(); //
123998 
123999 
124000 #if defined(INLINE_FUNCTIONS)
124001 
124002  inline void *operator new (size_t size);
124003 #else
124004 
124005  void *operator new (size_t size);
124006 #endif
124007 
124008  void operator delete (void* pointer, size_t size);
124009 
124010  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
124011  void operator delete (void* pointer)
124012  {
124013  // This is the generated delete operator...
124014  SgScopeStatement::operator delete (pointer,sizeof(SgScopeStatement));
124015  }
124016 
124018  static size_t numberOfNodes();
124019 
124021  static size_t memoryUsage();
124022 
124023  // End of scope which started in IR nodes specific code
124024  /* */
124025 
124026  /* name Internal Functions
124027  \brief Internal functions ... incomplete-documentation
124028 
124029  These functions have been made public as part of the design, but they are suggested for internal use
124030  or by particularly knowledgeable users for specialized tools or applications.
124031 
124032  \internal We could not make these private because they are required by user for special purposes. And
124033  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
124034 
124035  */
124036 
124037  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
124038  // overridden in every class by *generated* implementation
124040  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
124041  // MS: 06/28/02 container of names of variables or container indices
124042  // used used in the traversal to access AST successor nodes
124043  // overridden in every class by *generated* implementation
124046  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
124047 
124048  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
124049  // than all the vector copies. The implementation for these functions is generated for each class.
124051  virtual size_t get_numberOfTraversalSuccessors() override;
124053  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
124055  virtual size_t get_childIndex(SgNode *child) override;
124056 
124057 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
124058  // MS: 08/16/2002 method for generating RTI information
124060  virtual RTIReturnType roseRTI() override;
124061 #endif
124062  /* */
124063 
124064 
124065 
124066  /* name Deprecated Functions
124067  \brief Deprecated functions ... incomplete-documentation
124068 
124069  These functions have been deprecated from use.
124070  */
124071  /* */
124072 
124074  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
124075 
124076  // JJW (10/16/2008): Changed to a single function in Node.code, and put
124077  // getVariant() in #if 0 block to prevent confusing Doxygen
124078 #if 0
124079 
124080  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
124082  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
124083 #endif
124084  /* */
124085 
124086 
124087 
124088 
124089  public:
124090  /* name Traversal Support Functions
124091  \brief Traversal support functions ... incomplete-documentation
124092 
124093  These functions have been made public as part of the design, but they are suggested for internal use
124094  or by particularly knowledgable users for specialized tools or applications.
124095  */
124096  /* */
124097 
124098  // DQ (11/26/2005): Support for visitor pattern mechanims
124099  // (inferior to ROSE traversal mechanism, experimental).
124103 
124104  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
124106  virtual void accept (ROSE_VisitorPattern & visitor) override;
124107 
124108  // DQ (12/26/2005): Support for traversal based on the memory pool
124111  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
124112 
124115  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
124116 
124117  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
124118  // This traversal helps support internal tools that call static member functions.
124119  // note: this function operates on the memory pools.
124122  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
124123  /* */
124124 
124125 
124126  public:
124127  /* name Memory Allocation Functions
124128  \brief Memory allocations functions ... incomplete-documentation
124129 
124130  These functions have been made public as part of the design, but they are suggested for internal use
124131  or by particularly knowledgable users for specialized tools or applications.
124132  */
124133  /* */
124134 
124145  virtual bool isInMemoryPool() override;
124146 
124157  virtual void checkDataMemberPointersIfInMemoryPool() override;
124158 
124159  // DQ (4/30/2006): Modified to be a const function.
124174  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
124175 
124185  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
124186 
124198  virtual long getChildIndex( SgNode* childNode ) const override;
124199 
124200  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
124201  // comment here (changed to be a C style comment and not be a doxygen comment).
124202  /* \brief Constructor for use by AST File I/O Mechanism
124203 
124204  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
124205  which obtained via fast binary file I/O from disk.
124206  */
124207  // SgScopeStatement( SgScopeStatementStorageClass& source );
124208 
124209 
124210 
124211 
124212 
124213  // JH (10/24/2005): methods added to support the ast file IO
124214  private:
124215 
124216  /* name AST Memory Allocation Support Functions
124217  \brief Memory allocations support....
124218 
124219  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
124220  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
124221  and support the AST File I/O Mechanism.
124222  */
124223  /* */
124224 
124225  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
124226  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
124227  that I use the same type everywhere, if any changes are made. THe second one declares the type
124228  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
124229  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
124230  a correspinding one in the AST_FILE_IO class!
124231  */
124232  // DQ (9/2/2015): This typedef is no longer used, we can't define the
124233  // comment here (changed to be a C style comment and not be a doxygen comment).
124234  /* \brief Typedef used for low level memory access.
124235  */
124236  // typedef unsigned char* TestType;
124237 
124238  // DQ (9/2/2015): This typedef is no longer used, we can't define the
124239  // comment here (changed to be a C style comment and not be a doxygen comment).
124240  /* \brief Typedef used to hold memory addresses as values.
124241  */
124242  // typedef unsigned long AddressType;
124243 
124244 
124245 
124246  // necessary, to have direct access to the p_freepointer and the private methods !
124248  friend class AST_FILE_IO;
124249 
124251  friend class SgScopeStatementStorageClass;
124252 
124254  friend class AstSpecificDataManagingClass;
124255 
124257  friend class AstSpecificDataManagingClassStorageClass;
124258 
124259  public:
124261  SgScopeStatement( const SgScopeStatementStorageClass& source );
124262 
124263  // private: // JJW hack
124264  /*
124265  name AST Memory Allocation Support Variables
124266  Memory allocations support variables
124267 
124268  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
124269  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
124270  and support the AST File I/O Mechanism.
124271  */
124272  /* */
124273 
124274  public:
124275 
124276  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
124277  // to current node (so that it will work cleanly with build functions to specify patterns).
124278  // virtual SgNode* addRegExpAttribute();
124285 
124286 // *** COMMON CODE SECTION ENDS HERE ***
124287 
124288 
124289 // End of memberFunctionString
124290 // Start of memberFunctionString
124291 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
124292 
124293  // the generated cast function
124294  // friend ROSE_DLL_API SgScopeStatement* isSgScopeStatement ( SgNode* s );
124295 
124296  typedef SgStatement base_node_type;
124297 
124298 
124299 // End of memberFunctionString
124300 // Start of memberFunctionString
124301 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
124302 
124303  void post_construction_initialization() override;
124304 
124305 
124306 // End of memberFunctionString
124307 
124308 
124309  public:
124310  SgTypeTable* get_type_table() const;
124311  void set_type_table(SgTypeTable* type_table);
124312 
124313 
124314 
124315 
124316  public:
124317  SgPragma* get_pragma() const;
124318  void set_pragma(SgPragma* pragma);
124319 
124320 
124321  public:
124322  virtual ~SgScopeStatement();
124323 
124324  protected:
124325 // Start of memberFunctionString
124327 
124328 // End of memberFunctionString
124329 // Start of memberFunctionString
124330 SgTypeTable* p_type_table;
124331 
124332 // End of memberFunctionString
124333 // Start of memberFunctionString
124334 std::set<SgSymbol*> p_type_elaboration_list;
124335 
124336 // End of memberFunctionString
124337 // Start of memberFunctionString
124338 std::set<SgSymbol*> p_hidden_type_list;
124339 
124340 // End of memberFunctionString
124341 // Start of memberFunctionString
124342 std::set<SgSymbol*> p_hidden_declaration_list;
124343 
124344 // End of memberFunctionString
124345 // Start of memberFunctionString
124346 SgPragma* p_pragma;
124347 
124348 // End of memberFunctionString
124349 
124350 
124351 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
124352 
124353 
124354  };
124355 #endif
124356 
124357 // postdeclarations for SgScopeStatement
124358 
124359 /* #line 124360 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
124360 
124361 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
124362 
124363 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
124364 
124365 
124366 /* #line 124367 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
124367 
124368 
124369 
124370 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
124371 
124372 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
124373 // This code is automatically generated for each
124374 // terminal and non-terminal within the defined
124375 // grammar. There is a simple way to change the
124376 // code to fix bugs etc. See the ROSE README file
124377 // for directions.
124378 
124379 // tps: (02/22/2010): Adding DLL export requirements
124380 #include "rosedll.h"
124381 
124382 // predeclarations for SgGlobal
124383 
124384 /* #line 124385 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
124385 
124386 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
124387 
124388 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
124389 
124390 #if 1
124391 // Class Definition for SgGlobal
124392 class ROSE_DLL_API SgGlobal : public SgScopeStatement
124393  {
124394  public:
124395 
124396 
124397 /* #line 124398 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
124398 
124399  virtual SgNode* copy ( SgCopyHelp& help) const override;
124400 // Start of memberFunctionString
124401 /* #line 957 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
124402 
124403 
124404  // DQ (9/8/2004): Added to support general name qualification
124405  virtual SgName get_qualified_name() const override;
124406 
124407  // DQ (2/22/2007): Added support for mangled name of SgGlobal to better support generation of
124408  // mangled names which include the scope! Previously the mangled name of some declarations used
124409  // the qualified name of the scope which put "::" substrings into the mangled names! This is
124410  // inappropriate because the mangled names have to be able to be variable names and must follow
124411  // C/C++ standards for construction of variable names.
124412  virtual SgName get_mangled_name() const override;
124413 
124414  // DQ (10/6/2006): Support for mangle name caching (for better performance)
124415  // std::map<SgNode*,std::string> & get_mangledNameCache();
124416  // std::map<std::string, int> & get_shortMangledNameCache();
124417 
124418 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
124419  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
124420  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
124421  virtual bool cfgIsIndexInteresting(unsigned int idx) const override;
124422  virtual unsigned int cfgIndexForEnd() const override;
124423 #endif
124424 
124425 #if 1
124426  // DQ (10/1/2009): Adding support for new name qualification.
124427  void buildStatementNumbering();
124428 #endif
124429 
124430 /* #line 939 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
124431 
124432  public:
124433  virtual void append_declaration ( SgDeclarationStatement* element );
124434  virtual void prepend_declaration ( SgDeclarationStatement* element );
124435 
124436  public:
124437  // New functions added
124438  // void append_declaration ( const SgDeclarationStatementPtrList::iterator & list, SgDeclarationStatement* element );
124439  // void prepend_declaration ( const SgDeclarationStatementPtrList::iterator & list, SgDeclarationStatement* element );
124440 
124441  // void insert_declaration ( const SgDeclarationStatementPtrList::iterator & list, SgDeclarationStatement* element );
124442 
124443 
124444  public:
124445 
124446 
124447 
124448 
124449  protected:
124450  virtual bool insert_child(SgStatement*, SgStatement*, bool inFront = true, bool extractListFromBasicBlock = false) override;
124451  virtual bool replace_child(SgStatement *,SgStatement *, bool extractListFromBasicBlock = false) override;
124452 
124453  public:
124454 
124455 #if ALT_FIXUP_COPY
124456  // DQ (11/7/2007): These need to be called separately (see documentation)
124457  virtual void fixupCopy_scopes (SgNode* copy, SgCopyHelp & help) const override;
124458  virtual void fixupCopy_symbols (SgNode* copy, SgCopyHelp & help) const override;
124459  virtual void fixupCopy_references (SgNode* copy, SgCopyHelp & help) const override;
124460 #else
124461  // DQ (10/5/2007): Added fixup function to set scopes not set properly by the ROSETTA generated copy!
124462  virtual void fixupCopy(SgNode* copy, SgCopyHelp & help) const;
124463 #endif
124464 
124465 
124466 
124467 // End of memberFunctionString
124468 // Start of memberFunctionString
124469 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
124470 
124471 // *** COMMON CODE SECTION BEGINS HERE ***
124472 
124473  public:
124474 
124475  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
124476  // and not required which is required to match the other aspects of the copy mechanism code generation.
124477  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
124478  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
124479  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
124480  // virtual SgNode* copy ( const SgCopyHelp & help) const;
124481 
124483  virtual std::string class_name() const override;
124484 
124486  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
124487 
124489  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
124490  // static const VariantT static_variant = V_SgGlobal;
124491  enum { static_variant = V_SgGlobal };
124492 
124493  /* the generated cast function */
124495  ROSE_DLL_API friend SgGlobal* isSgGlobal( SgNode * s );
124496 
124498  ROSE_DLL_API friend const SgGlobal* isSgGlobal( const SgNode * s );
124499 
124500  // ******************************************
124501  // * Memory Pool / New / Delete
124502  // ******************************************
124503 
124504  public:
124506  static const unsigned pool_size; //
124508  static std::vector<unsigned char *> pools; //
124510  static SgGlobal * next_node; //
124511 
124513  static unsigned long initializeStorageClassArray(SgGlobalStorageClass *); //
124514 
124516  static void clearMemoryPool(); //
124517  static void deleteMemoryPool(); //
124518 
124520  static void extendMemoryPoolForFileIO(); //
124521 
124523  static SgGlobal * getPointerFromGlobalIndex(unsigned long); //
124525  static SgGlobal * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
124526 
124528  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
124530  static void resetValidFreepointers(); //
124532  static unsigned long getNumberOfLastValidPointer(); //
124533 
124534 
124535 #if defined(INLINE_FUNCTIONS)
124536 
124537  inline void *operator new (size_t size);
124538 #else
124539 
124540  void *operator new (size_t size);
124541 #endif
124542 
124543  void operator delete (void* pointer, size_t size);
124544 
124545  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
124546  void operator delete (void* pointer)
124547  {
124548  // This is the generated delete operator...
124549  SgGlobal::operator delete (pointer,sizeof(SgGlobal));
124550  }
124551 
124553  static size_t numberOfNodes();
124554 
124556  static size_t memoryUsage();
124557 
124558  // End of scope which started in IR nodes specific code
124559  /* */
124560 
124561  /* name Internal Functions
124562  \brief Internal functions ... incomplete-documentation
124563 
124564  These functions have been made public as part of the design, but they are suggested for internal use
124565  or by particularly knowledgeable users for specialized tools or applications.
124566 
124567  \internal We could not make these private because they are required by user for special purposes. And
124568  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
124569 
124570  */
124571 
124572  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
124573  // overridden in every class by *generated* implementation
124575  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
124576  // MS: 06/28/02 container of names of variables or container indices
124577  // used used in the traversal to access AST successor nodes
124578  // overridden in every class by *generated* implementation
124581  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
124582 
124583  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
124584  // than all the vector copies. The implementation for these functions is generated for each class.
124586  virtual size_t get_numberOfTraversalSuccessors() override;
124588  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
124590  virtual size_t get_childIndex(SgNode *child) override;
124591 
124592 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
124593  // MS: 08/16/2002 method for generating RTI information
124595  virtual RTIReturnType roseRTI() override;
124596 #endif
124597  /* */
124598 
124599 
124600 
124601  /* name Deprecated Functions
124602  \brief Deprecated functions ... incomplete-documentation
124603 
124604  These functions have been deprecated from use.
124605  */
124606  /* */
124607 
124609  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
124610 
124611  // JJW (10/16/2008): Changed to a single function in Node.code, and put
124612  // getVariant() in #if 0 block to prevent confusing Doxygen
124613 #if 0
124614 
124615  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
124617  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
124618 #endif
124619  /* */
124620 
124621 
124622 
124623 
124624  public:
124625  /* name Traversal Support Functions
124626  \brief Traversal support functions ... incomplete-documentation
124627 
124628  These functions have been made public as part of the design, but they are suggested for internal use
124629  or by particularly knowledgable users for specialized tools or applications.
124630  */
124631  /* */
124632 
124633  // DQ (11/26/2005): Support for visitor pattern mechanims
124634  // (inferior to ROSE traversal mechanism, experimental).
124638 
124639  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
124641  virtual void accept (ROSE_VisitorPattern & visitor) override;
124642 
124643  // DQ (12/26/2005): Support for traversal based on the memory pool
124646  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
124647 
124650  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
124651 
124652  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
124653  // This traversal helps support internal tools that call static member functions.
124654  // note: this function operates on the memory pools.
124657  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
124658  /* */
124659 
124660 
124661  public:
124662  /* name Memory Allocation Functions
124663  \brief Memory allocations functions ... incomplete-documentation
124664 
124665  These functions have been made public as part of the design, but they are suggested for internal use
124666  or by particularly knowledgable users for specialized tools or applications.
124667  */
124668  /* */
124669 
124680  virtual bool isInMemoryPool() override;
124681 
124692  virtual void checkDataMemberPointersIfInMemoryPool() override;
124693 
124694  // DQ (4/30/2006): Modified to be a const function.
124709  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
124710 
124720  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
124721 
124733  virtual long getChildIndex( SgNode* childNode ) const override;
124734 
124735  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
124736  // comment here (changed to be a C style comment and not be a doxygen comment).
124737  /* \brief Constructor for use by AST File I/O Mechanism
124738 
124739  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
124740  which obtained via fast binary file I/O from disk.
124741  */
124742  // SgGlobal( SgGlobalStorageClass& source );
124743 
124744 
124745 
124746 
124747 
124748  // JH (10/24/2005): methods added to support the ast file IO
124749  private:
124750 
124751  /* name AST Memory Allocation Support Functions
124752  \brief Memory allocations support....
124753 
124754  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
124755  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
124756  and support the AST File I/O Mechanism.
124757  */
124758  /* */
124759 
124760  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
124761  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
124762  that I use the same type everywhere, if any changes are made. THe second one declares the type
124763  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
124764  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
124765  a correspinding one in the AST_FILE_IO class!
124766  */
124767  // DQ (9/2/2015): This typedef is no longer used, we can't define the
124768  // comment here (changed to be a C style comment and not be a doxygen comment).
124769  /* \brief Typedef used for low level memory access.
124770  */
124771  // typedef unsigned char* TestType;
124772 
124773  // DQ (9/2/2015): This typedef is no longer used, we can't define the
124774  // comment here (changed to be a C style comment and not be a doxygen comment).
124775  /* \brief Typedef used to hold memory addresses as values.
124776  */
124777  // typedef unsigned long AddressType;
124778 
124779 
124780 
124781  // necessary, to have direct access to the p_freepointer and the private methods !
124783  friend class AST_FILE_IO;
124784 
124786  friend class SgGlobalStorageClass;
124787 
124789  friend class AstSpecificDataManagingClass;
124790 
124792  friend class AstSpecificDataManagingClassStorageClass;
124793 
124794  public:
124796  SgGlobal( const SgGlobalStorageClass& source );
124797 
124798  // private: // JJW hack
124799  /*
124800  name AST Memory Allocation Support Variables
124801  Memory allocations support variables
124802 
124803  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
124804  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
124805  and support the AST File I/O Mechanism.
124806  */
124807  /* */
124808 
124809  public:
124810 
124811  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
124812  // to current node (so that it will work cleanly with build functions to specify patterns).
124813  // virtual SgNode* addRegExpAttribute();
124819  SgGlobal* addRegExpAttribute(std::string s, AstRegExAttribute* a);
124820 
124821 // *** COMMON CODE SECTION ENDS HERE ***
124822 
124823 
124824 // End of memberFunctionString
124825 // Start of memberFunctionString
124826 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
124827 
124828  // the generated cast function
124829  // friend ROSE_DLL_API SgGlobal* isSgGlobal ( SgNode* s );
124830 
124832 
124833 
124834 // End of memberFunctionString
124835 // Start of memberFunctionString
124836 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
124837 
124838  void post_construction_initialization() override;
124839 
124840 
124841 // End of memberFunctionString
124842 
124843  public:
124844  const SgDeclarationStatementPtrList& get_declarations() const;
124845  SgDeclarationStatementPtrList& get_declarations();
124846 
124847 
124848  public:
124849  virtual ~SgGlobal();
124850 
124851 
124852  public:
124853  SgGlobal(Sg_File_Info* startOfConstruct );
124854  SgGlobal();
124855 
124856  protected:
124857 // Start of memberFunctionString
124858 SgDeclarationStatementPtrList p_declarations;
124859 
124860 // End of memberFunctionString
124861 
124862 
124863 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
124864 
124865 
124866  };
124867 #endif
124868 
124869 // postdeclarations for SgGlobal
124870 
124871 /* #line 124872 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
124872 
124873 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
124874 
124875 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
124876 
124877 
124878 /* #line 124879 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
124879 
124880 
124881 
124882 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
124883 
124884 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
124885 // This code is automatically generated for each
124886 // terminal and non-terminal within the defined
124887 // grammar. There is a simple way to change the
124888 // code to fix bugs etc. See the ROSE README file
124889 // for directions.
124890 
124891 // tps: (02/22/2010): Adding DLL export requirements
124892 #include "rosedll.h"
124893 
124894 // predeclarations for SgBasicBlock
124895 
124896 /* #line 124897 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
124897 
124898 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
124899 
124900 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
124901 
124902 #if 1
124903 // Class Definition for SgBasicBlock
124904 class ROSE_DLL_API SgBasicBlock : public SgScopeStatement
124905  {
124906  public:
124907 
124908 
124909 /* #line 124910 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
124910 
124911  virtual SgNode* copy ( SgCopyHelp& help) const override;
124912 // Start of memberFunctionString
124913 /* #line 1006 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
124914 
124915 
124916  // DQ (9/8/2004): Added to support general name qualification
124917  virtual SgName get_qualified_name() const override;
124918 
124919  // DQ (2/22/2007): Added for uniform support of mangled names
124920  virtual SgName get_mangled_name() const override;
124921 
124922  // Special case constructor
124923  SgBasicBlock ( Sg_File_Info* info = NULL, SgStatement* stmt = NULL );
124924  // SgBasicBlock ( Sg_File_Info* info);
124925  SgBasicBlock ( SgStatement* stmt );
124926 
124927 /* #line 939 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
124928 
124929  public:
124930  virtual void append_statement ( SgStatement* element );
124931  virtual void prepend_statement ( SgStatement* element );
124932 
124933  public:
124934  // New functions added
124935  // void append_statement ( const SgStatementPtrList::iterator & list, SgStatement* element );
124936  // void prepend_statement ( const SgStatementPtrList::iterator & list, SgStatement* element );
124937 
124938  // void insert_statement ( const SgStatementPtrList::iterator & list, SgStatement* element );
124939 
124940 
124941  public:
124942 
124943 
124944 
124945 
124946  // DQ (6/18/2007): Added these required function declarations explicitly so that we could test
124947  // removing them from the template where they are generated excessively (and definitions are not
124948  // implemented).
124949  // void append_statement (const SgStatementPtrList::iterator& where, SgStatement* what);
124950  // void prepend_statement(const SgStatementPtrList::iterator& where, SgStatement* what);
124951 
124952  protected:
124953  virtual bool replace_child(SgStatement *,SgStatement *, bool extractListFromBasicBlock = false) override;
124954  virtual bool insert_child(SgStatement*, SgStatement*, bool inFront = true, bool extractListFromBasicBlock = false) override;
124955 
124956  public:
124957 
124958 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
124959  virtual unsigned int cfgIndexForEnd() const override;
124960  virtual bool cfgIsIndexInteresting(unsigned int) const override;
124961  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
124962  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
124963 #endif
124964 
124965  // void prepend_statement(const SgStatementPtrList::iterator& where, SgStatement *what);
124966  // void append_statement(const SgStatementPtrList::iterator& where, SgStatement *what);
124967 
124968 #if ALT_FIXUP_COPY
124969  // DQ (11/7/2007): These need to be called separately (see documentation)
124970  virtual void fixupCopy_scopes (SgNode* copy, SgCopyHelp & help) const override;
124971  virtual void fixupCopy_symbols (SgNode* copy, SgCopyHelp & help) const override;
124972  virtual void fixupCopy_references (SgNode* copy, SgCopyHelp & help) const override;
124973 #else
124974  // DQ (10/6/2007): Added fixup function to set scopes not set properly by the ROSETTA generated copy!
124975  virtual void fixupCopy(SgNode* copy, SgCopyHelp & help) const;
124976 #endif
124977 
124978 
124979 // End of memberFunctionString
124980 // Start of memberFunctionString
124981 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
124982 
124983 // *** COMMON CODE SECTION BEGINS HERE ***
124984 
124985  public:
124986 
124987  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
124988  // and not required which is required to match the other aspects of the copy mechanism code generation.
124989  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
124990  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
124991  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
124992  // virtual SgNode* copy ( const SgCopyHelp & help) const;
124993 
124995  virtual std::string class_name() const override;
124996 
124998  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
124999 
125001  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
125002  // static const VariantT static_variant = V_SgBasicBlock;
125003  enum { static_variant = V_SgBasicBlock };
125004 
125005  /* the generated cast function */
125007  ROSE_DLL_API friend SgBasicBlock* isSgBasicBlock( SgNode * s );
125008 
125010  ROSE_DLL_API friend const SgBasicBlock* isSgBasicBlock( const SgNode * s );
125011 
125012  // ******************************************
125013  // * Memory Pool / New / Delete
125014  // ******************************************
125015 
125016  public:
125018  static const unsigned pool_size; //
125020  static std::vector<unsigned char *> pools; //
125022  static SgBasicBlock * next_node; //
125023 
125025  static unsigned long initializeStorageClassArray(SgBasicBlockStorageClass *); //
125026 
125028  static void clearMemoryPool(); //
125029  static void deleteMemoryPool(); //
125030 
125032  static void extendMemoryPoolForFileIO(); //
125033 
125035  static SgBasicBlock * getPointerFromGlobalIndex(unsigned long); //
125037  static SgBasicBlock * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
125038 
125040  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
125042  static void resetValidFreepointers(); //
125044  static unsigned long getNumberOfLastValidPointer(); //
125045 
125046 
125047 #if defined(INLINE_FUNCTIONS)
125048 
125049  inline void *operator new (size_t size);
125050 #else
125051 
125052  void *operator new (size_t size);
125053 #endif
125054 
125055  void operator delete (void* pointer, size_t size);
125056 
125057  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
125058  void operator delete (void* pointer)
125059  {
125060  // This is the generated delete operator...
125061  SgBasicBlock::operator delete (pointer,sizeof(SgBasicBlock));
125062  }
125063 
125065  static size_t numberOfNodes();
125066 
125068  static size_t memoryUsage();
125069 
125070  // End of scope which started in IR nodes specific code
125071  /* */
125072 
125073  /* name Internal Functions
125074  \brief Internal functions ... incomplete-documentation
125075 
125076  These functions have been made public as part of the design, but they are suggested for internal use
125077  or by particularly knowledgeable users for specialized tools or applications.
125078 
125079  \internal We could not make these private because they are required by user for special purposes. And
125080  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
125081 
125082  */
125083 
125084  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
125085  // overridden in every class by *generated* implementation
125087  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
125088  // MS: 06/28/02 container of names of variables or container indices
125089  // used used in the traversal to access AST successor nodes
125090  // overridden in every class by *generated* implementation
125093  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
125094 
125095  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
125096  // than all the vector copies. The implementation for these functions is generated for each class.
125098  virtual size_t get_numberOfTraversalSuccessors() override;
125100  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
125102  virtual size_t get_childIndex(SgNode *child) override;
125103 
125104 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
125105  // MS: 08/16/2002 method for generating RTI information
125107  virtual RTIReturnType roseRTI() override;
125108 #endif
125109  /* */
125110 
125111 
125112 
125113  /* name Deprecated Functions
125114  \brief Deprecated functions ... incomplete-documentation
125115 
125116  These functions have been deprecated from use.
125117  */
125118  /* */
125119 
125121  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
125122 
125123  // JJW (10/16/2008): Changed to a single function in Node.code, and put
125124  // getVariant() in #if 0 block to prevent confusing Doxygen
125125 #if 0
125126 
125127  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
125129  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
125130 #endif
125131  /* */
125132 
125133 
125134 
125135 
125136  public:
125137  /* name Traversal Support Functions
125138  \brief Traversal support functions ... incomplete-documentation
125139 
125140  These functions have been made public as part of the design, but they are suggested for internal use
125141  or by particularly knowledgable users for specialized tools or applications.
125142  */
125143  /* */
125144 
125145  // DQ (11/26/2005): Support for visitor pattern mechanims
125146  // (inferior to ROSE traversal mechanism, experimental).
125150 
125151  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
125153  virtual void accept (ROSE_VisitorPattern & visitor) override;
125154 
125155  // DQ (12/26/2005): Support for traversal based on the memory pool
125158  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
125159 
125162  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
125163 
125164  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
125165  // This traversal helps support internal tools that call static member functions.
125166  // note: this function operates on the memory pools.
125169  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
125170  /* */
125171 
125172 
125173  public:
125174  /* name Memory Allocation Functions
125175  \brief Memory allocations functions ... incomplete-documentation
125176 
125177  These functions have been made public as part of the design, but they are suggested for internal use
125178  or by particularly knowledgable users for specialized tools or applications.
125179  */
125180  /* */
125181 
125192  virtual bool isInMemoryPool() override;
125193 
125204  virtual void checkDataMemberPointersIfInMemoryPool() override;
125205 
125206  // DQ (4/30/2006): Modified to be a const function.
125221  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
125222 
125232  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
125233 
125245  virtual long getChildIndex( SgNode* childNode ) const override;
125246 
125247  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
125248  // comment here (changed to be a C style comment and not be a doxygen comment).
125249  /* \brief Constructor for use by AST File I/O Mechanism
125250 
125251  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
125252  which obtained via fast binary file I/O from disk.
125253  */
125254  // SgBasicBlock( SgBasicBlockStorageClass& source );
125255 
125256 
125257 
125258 
125259 
125260  // JH (10/24/2005): methods added to support the ast file IO
125261  private:
125262 
125263  /* name AST Memory Allocation Support Functions
125264  \brief Memory allocations support....
125265 
125266  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
125267  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
125268  and support the AST File I/O Mechanism.
125269  */
125270  /* */
125271 
125272  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
125273  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
125274  that I use the same type everywhere, if any changes are made. THe second one declares the type
125275  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
125276  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
125277  a correspinding one in the AST_FILE_IO class!
125278  */
125279  // DQ (9/2/2015): This typedef is no longer used, we can't define the
125280  // comment here (changed to be a C style comment and not be a doxygen comment).
125281  /* \brief Typedef used for low level memory access.
125282  */
125283  // typedef unsigned char* TestType;
125284 
125285  // DQ (9/2/2015): This typedef is no longer used, we can't define the
125286  // comment here (changed to be a C style comment and not be a doxygen comment).
125287  /* \brief Typedef used to hold memory addresses as values.
125288  */
125289  // typedef unsigned long AddressType;
125290 
125291 
125292 
125293  // necessary, to have direct access to the p_freepointer and the private methods !
125295  friend class AST_FILE_IO;
125296 
125298  friend class SgBasicBlockStorageClass;
125299 
125301  friend class AstSpecificDataManagingClass;
125302 
125304  friend class AstSpecificDataManagingClassStorageClass;
125305 
125306  public:
125308  SgBasicBlock( const SgBasicBlockStorageClass& source );
125309 
125310  // private: // JJW hack
125311  /*
125312  name AST Memory Allocation Support Variables
125313  Memory allocations support variables
125314 
125315  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
125316  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
125317  and support the AST File I/O Mechanism.
125318  */
125319  /* */
125320 
125321  public:
125322 
125323  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
125324  // to current node (so that it will work cleanly with build functions to specify patterns).
125325  // virtual SgNode* addRegExpAttribute();
125331  SgBasicBlock* addRegExpAttribute(std::string s, AstRegExAttribute* a);
125332 
125333 // *** COMMON CODE SECTION ENDS HERE ***
125334 
125335 
125336 // End of memberFunctionString
125337 // Start of memberFunctionString
125338 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
125339 
125340  // the generated cast function
125341  // friend ROSE_DLL_API SgBasicBlock* isSgBasicBlock ( SgNode* s );
125342 
125344 
125345 
125346 // End of memberFunctionString
125347 // Start of memberFunctionString
125348 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
125349 
125350  void post_construction_initialization() override;
125351 
125352 
125353 // End of memberFunctionString
125354 
125355  public:
125356  const SgStatementPtrList& get_statements() const;
125357  SgStatementPtrList& get_statements();
125358 
125359  public:
125360  std::string get_asm_function_body() const;
125361  void set_asm_function_body(std::string asm_function_body);
125362 
125363  public:
125364  std::string get_string_label() const;
125365  void set_string_label(std::string string_label);
125366 
125367 
125368  public:
125369  virtual ~SgBasicBlock();
125370 
125371  protected:
125372 // Start of memberFunctionString
125373 SgStatementPtrList p_statements;
125374 
125375 // End of memberFunctionString
125376 // Start of memberFunctionString
125377 std::string p_asm_function_body;
125378 
125379 // End of memberFunctionString
125380 // Start of memberFunctionString
125381 std::string p_string_label;
125382 
125383 // End of memberFunctionString
125384 
125385 
125386 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
125387 
125388 
125389  };
125390 #endif
125391 
125392 // postdeclarations for SgBasicBlock
125393 
125394 /* #line 125395 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
125395 /* #line 1055 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
125396 
125397 // Previous home to StatementListInsertChild() template function , moved to DECLARATION_STATEMENT_POSTDECLARATION
125398 
125399 
125400 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
125401 
125402 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
125403 
125404 
125405 /* #line 125406 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
125406 
125407 
125408 
125409 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
125410 
125411 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
125412 // This code is automatically generated for each
125413 // terminal and non-terminal within the defined
125414 // grammar. There is a simple way to change the
125415 // code to fix bugs etc. See the ROSE README file
125416 // for directions.
125417 
125418 // tps: (02/22/2010): Adding DLL export requirements
125419 #include "rosedll.h"
125420 
125421 // predeclarations for SgIfStmt
125422 
125423 /* #line 125424 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
125424 
125425 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
125426 
125427 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
125428 
125429 #if 1
125430 // Class Definition for SgIfStmt
125431 class ROSE_DLL_API SgIfStmt : public SgScopeStatement
125432  {
125433  public:
125434 
125435 
125436 /* #line 125437 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
125437 
125438  virtual SgNode* copy ( SgCopyHelp& help) const override;
125439 // Start of memberFunctionString
125440 /* #line 1290 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
125441 
125442 
125443  protected:
125444  virtual bool replace_child(SgStatement *,SgStatement *, bool extractListFromBasicBlock = false) override;
125445 
125446  public:
125447 
125448 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
125449  virtual unsigned int cfgIndexForEnd() const override;
125450  virtual bool cfgIsIndexInteresting(unsigned int) const override;
125451  virtual unsigned int cfgFindChildIndex(SgNode* n) override;
125452  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
125453  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
125454 #endif
125455 
125456  // DQ (2/22/2007): Added for uniform support of mangled names
125457  virtual SgName get_mangled_name() const override;
125458 
125459 #if ALT_FIXUP_COPY
125460  // DQ (11/7/2007): These need to be called separately (see documentation)
125461  virtual void fixupCopy_scopes (SgNode* copy, SgCopyHelp & help) const override;
125462  virtual void fixupCopy_symbols (SgNode* copy, SgCopyHelp & help) const override;
125463  virtual void fixupCopy_references (SgNode* copy, SgCopyHelp & help) const override;
125464 #else
125465  // DQ (10/20/2007): Added fixup function to set scopes not set properly by the ROSETTA generated copy!
125466  virtual void fixupCopy(SgNode* copy, SgCopyHelp & help) const;
125467 #endif
125468 
125469 
125470 
125471 // End of memberFunctionString
125472 // Start of memberFunctionString
125473 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
125474 
125475 // *** COMMON CODE SECTION BEGINS HERE ***
125476 
125477  public:
125478 
125479  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
125480  // and not required which is required to match the other aspects of the copy mechanism code generation.
125481  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
125482  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
125483  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
125484  // virtual SgNode* copy ( const SgCopyHelp & help) const;
125485 
125487  virtual std::string class_name() const override;
125488 
125490  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
125491 
125493  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
125494  // static const VariantT static_variant = V_SgIfStmt;
125495  enum { static_variant = V_SgIfStmt };
125496 
125497  /* the generated cast function */
125499  ROSE_DLL_API friend SgIfStmt* isSgIfStmt( SgNode * s );
125500 
125502  ROSE_DLL_API friend const SgIfStmt* isSgIfStmt( const SgNode * s );
125503 
125504  // ******************************************
125505  // * Memory Pool / New / Delete
125506  // ******************************************
125507 
125508  public:
125510  static const unsigned pool_size; //
125512  static std::vector<unsigned char *> pools; //
125514  static SgIfStmt * next_node; //
125515 
125517  static unsigned long initializeStorageClassArray(SgIfStmtStorageClass *); //
125518 
125520  static void clearMemoryPool(); //
125521  static void deleteMemoryPool(); //
125522 
125524  static void extendMemoryPoolForFileIO(); //
125525 
125527  static SgIfStmt * getPointerFromGlobalIndex(unsigned long); //
125529  static SgIfStmt * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
125530 
125532  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
125534  static void resetValidFreepointers(); //
125536  static unsigned long getNumberOfLastValidPointer(); //
125537 
125538 
125539 #if defined(INLINE_FUNCTIONS)
125540 
125541  inline void *operator new (size_t size);
125542 #else
125543 
125544  void *operator new (size_t size);
125545 #endif
125546 
125547  void operator delete (void* pointer, size_t size);
125548 
125549  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
125550  void operator delete (void* pointer)
125551  {
125552  // This is the generated delete operator...
125553  SgIfStmt::operator delete (pointer,sizeof(SgIfStmt));
125554  }
125555 
125557  static size_t numberOfNodes();
125558 
125560  static size_t memoryUsage();
125561 
125562  // End of scope which started in IR nodes specific code
125563  /* */
125564 
125565  /* name Internal Functions
125566  \brief Internal functions ... incomplete-documentation
125567 
125568  These functions have been made public as part of the design, but they are suggested for internal use
125569  or by particularly knowledgeable users for specialized tools or applications.
125570 
125571  \internal We could not make these private because they are required by user for special purposes. And
125572  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
125573 
125574  */
125575 
125576  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
125577  // overridden in every class by *generated* implementation
125579  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
125580  // MS: 06/28/02 container of names of variables or container indices
125581  // used used in the traversal to access AST successor nodes
125582  // overridden in every class by *generated* implementation
125585  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
125586 
125587  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
125588  // than all the vector copies. The implementation for these functions is generated for each class.
125590  virtual size_t get_numberOfTraversalSuccessors() override;
125592  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
125594  virtual size_t get_childIndex(SgNode *child) override;
125595 
125596 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
125597  // MS: 08/16/2002 method for generating RTI information
125599  virtual RTIReturnType roseRTI() override;
125600 #endif
125601  /* */
125602 
125603 
125604 
125605  /* name Deprecated Functions
125606  \brief Deprecated functions ... incomplete-documentation
125607 
125608  These functions have been deprecated from use.
125609  */
125610  /* */
125611 
125613  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
125614 
125615  // JJW (10/16/2008): Changed to a single function in Node.code, and put
125616  // getVariant() in #if 0 block to prevent confusing Doxygen
125617 #if 0
125618 
125619  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
125621  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
125622 #endif
125623  /* */
125624 
125625 
125626 
125627 
125628  public:
125629  /* name Traversal Support Functions
125630  \brief Traversal support functions ... incomplete-documentation
125631 
125632  These functions have been made public as part of the design, but they are suggested for internal use
125633  or by particularly knowledgable users for specialized tools or applications.
125634  */
125635  /* */
125636 
125637  // DQ (11/26/2005): Support for visitor pattern mechanims
125638  // (inferior to ROSE traversal mechanism, experimental).
125642 
125643  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
125645  virtual void accept (ROSE_VisitorPattern & visitor) override;
125646 
125647  // DQ (12/26/2005): Support for traversal based on the memory pool
125650  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
125651 
125654  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
125655 
125656  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
125657  // This traversal helps support internal tools that call static member functions.
125658  // note: this function operates on the memory pools.
125661  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
125662  /* */
125663 
125664 
125665  public:
125666  /* name Memory Allocation Functions
125667  \brief Memory allocations functions ... incomplete-documentation
125668 
125669  These functions have been made public as part of the design, but they are suggested for internal use
125670  or by particularly knowledgable users for specialized tools or applications.
125671  */
125672  /* */
125673 
125684  virtual bool isInMemoryPool() override;
125685 
125696  virtual void checkDataMemberPointersIfInMemoryPool() override;
125697 
125698  // DQ (4/30/2006): Modified to be a const function.
125713  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
125714 
125724  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
125725 
125737  virtual long getChildIndex( SgNode* childNode ) const override;
125738 
125739  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
125740  // comment here (changed to be a C style comment and not be a doxygen comment).
125741  /* \brief Constructor for use by AST File I/O Mechanism
125742 
125743  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
125744  which obtained via fast binary file I/O from disk.
125745  */
125746  // SgIfStmt( SgIfStmtStorageClass& source );
125747 
125748 
125749 
125750 
125751 
125752  // JH (10/24/2005): methods added to support the ast file IO
125753  private:
125754 
125755  /* name AST Memory Allocation Support Functions
125756  \brief Memory allocations support....
125757 
125758  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
125759  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
125760  and support the AST File I/O Mechanism.
125761  */
125762  /* */
125763 
125764  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
125765  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
125766  that I use the same type everywhere, if any changes are made. THe second one declares the type
125767  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
125768  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
125769  a correspinding one in the AST_FILE_IO class!
125770  */
125771  // DQ (9/2/2015): This typedef is no longer used, we can't define the
125772  // comment here (changed to be a C style comment and not be a doxygen comment).
125773  /* \brief Typedef used for low level memory access.
125774  */
125775  // typedef unsigned char* TestType;
125776 
125777  // DQ (9/2/2015): This typedef is no longer used, we can't define the
125778  // comment here (changed to be a C style comment and not be a doxygen comment).
125779  /* \brief Typedef used to hold memory addresses as values.
125780  */
125781  // typedef unsigned long AddressType;
125782 
125783 
125784 
125785  // necessary, to have direct access to the p_freepointer and the private methods !
125787  friend class AST_FILE_IO;
125788 
125790  friend class SgIfStmtStorageClass;
125791 
125793  friend class AstSpecificDataManagingClass;
125794 
125796  friend class AstSpecificDataManagingClassStorageClass;
125797 
125798  public:
125800  SgIfStmt( const SgIfStmtStorageClass& source );
125801 
125802  // private: // JJW hack
125803  /*
125804  name AST Memory Allocation Support Variables
125805  Memory allocations support variables
125806 
125807  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
125808  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
125809  and support the AST File I/O Mechanism.
125810  */
125811  /* */
125812 
125813  public:
125814 
125815  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
125816  // to current node (so that it will work cleanly with build functions to specify patterns).
125817  // virtual SgNode* addRegExpAttribute();
125823  SgIfStmt* addRegExpAttribute(std::string s, AstRegExAttribute* a);
125824 
125825 // *** COMMON CODE SECTION ENDS HERE ***
125826 
125827 
125828 // End of memberFunctionString
125829 // Start of memberFunctionString
125830 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
125831 
125832  // the generated cast function
125833  // friend ROSE_DLL_API SgIfStmt* isSgIfStmt ( SgNode* s );
125834 
125836 
125837 
125838 // End of memberFunctionString
125839 // Start of memberFunctionString
125840 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
125841 
125842  void post_construction_initialization() override;
125843 
125844 
125845 // End of memberFunctionString
125846 
125847  public:
125848  SgStatement* get_conditional() const;
125849  void set_conditional(SgStatement* conditional);
125850 
125851  public:
125852  SgStatement* get_true_body() const;
125853  void set_true_body(SgStatement* true_body);
125854 
125855  public:
125856  SgStatement* get_false_body() const;
125857  void set_false_body(SgStatement* false_body);
125858 
125859  public:
125860  bool get_is_if_constexpr_statement() const;
125861  void set_is_if_constexpr_statement(bool is_if_constexpr_statement);
125862 
125863  public:
125864  bool get_if_constexpr_value_known() const;
125865  void set_if_constexpr_value_known(bool if_constexpr_value_known);
125866 
125867  public:
125868  bool get_if_constexpr_value() const;
125869  void set_if_constexpr_value(bool if_constexpr_value);
125870 
125871  public:
125872  SgLabelRefExp* get_else_numeric_label() const;
125873  void set_else_numeric_label(SgLabelRefExp* else_numeric_label);
125874 
125875  public:
125876  std::string get_string_label() const;
125877  void set_string_label(std::string string_label);
125878 
125879  public:
125880  SgLabelRefExp* get_end_numeric_label() const /* (getDataAccessFunctionPrototypeString) */;
125881  void set_end_numeric_label(SgLabelRefExp* end_numeric_label) override /* (getDataAccessFunctionPrototypeString) */;
125882 
125883  public:
125884  bool get_has_end_statement() const;
125885  void set_has_end_statement(bool has_end_statement);
125886 
125887  public:
125888  bool get_use_then_keyword() const;
125889  void set_use_then_keyword(bool use_then_keyword);
125890 
125891  public:
125892  bool get_is_else_if_statement() const;
125893  void set_is_else_if_statement(bool is_else_if_statement);
125894 
125895 
125896  public:
125897  virtual ~SgIfStmt();
125898 
125899 
125900  public:
125901  SgIfStmt(Sg_File_Info* startOfConstruct , SgStatement* conditional = NULL, SgStatement* true_body = NULL, SgStatement* false_body = NULL);
125902  SgIfStmt(SgStatement* conditional, SgStatement* true_body, SgStatement* false_body);
125903 
125904  protected:
125905 // Start of memberFunctionString
125906 SgStatement* p_conditional;
125907 
125908 // End of memberFunctionString
125909 // Start of memberFunctionString
125910 SgStatement* p_true_body;
125911 
125912 // End of memberFunctionString
125913 // Start of memberFunctionString
125914 SgStatement* p_false_body;
125915 
125916 // End of memberFunctionString
125917 // Start of memberFunctionString
125918 bool p_is_if_constexpr_statement;
125919 
125920 // End of memberFunctionString
125921 // Start of memberFunctionString
125922 bool p_if_constexpr_value_known;
125923 
125924 // End of memberFunctionString
125925 // Start of memberFunctionString
125926 bool p_if_constexpr_value;
125927 
125928 // End of memberFunctionString
125929 // Start of memberFunctionString
125930 SgLabelRefExp* p_else_numeric_label;
125931 
125932 // End of memberFunctionString
125933 // Start of memberFunctionString
125934 std::string p_string_label;
125935 
125936 // End of memberFunctionString
125937 // Start of memberFunctionString
125938 SgLabelRefExp* p_end_numeric_label;
125939 
125940 // End of memberFunctionString
125941 // Start of memberFunctionString
125942 bool p_has_end_statement;
125943 
125944 // End of memberFunctionString
125945 // Start of memberFunctionString
125946 bool p_use_then_keyword;
125947 
125948 // End of memberFunctionString
125949 // Start of memberFunctionString
125950 bool p_is_else_if_statement;
125951 
125952 // End of memberFunctionString
125953 
125954 
125955 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
125956 
125957 
125958  };
125959 #endif
125960 
125961 // postdeclarations for SgIfStmt
125962 
125963 /* #line 125964 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
125964 
125965 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
125966 
125967 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
125968 
125969 
125970 /* #line 125971 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
125971 
125972 
125973 
125974 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
125975 
125976 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
125977 // This code is automatically generated for each
125978 // terminal and non-terminal within the defined
125979 // grammar. There is a simple way to change the
125980 // code to fix bugs etc. See the ROSE README file
125981 // for directions.
125982 
125983 // tps: (02/22/2010): Adding DLL export requirements
125984 #include "rosedll.h"
125985 
125986 // predeclarations for SgForStatement
125987 
125988 /* #line 125989 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
125989 
125990 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
125991 
125992 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
125993 
125994 #if 1
125995 // Class Definition for SgForStatement
125996 class ROSE_DLL_API SgForStatement : public SgScopeStatement
125997  {
125998  public:
125999 
126000 
126001 /* #line 126002 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
126002 
126003  virtual SgNode* copy ( SgCopyHelp& help) const override;
126004 // Start of memberFunctionString
126005 /* #line 1320 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
126006 
126007 
126008 /* #line 939 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
126009 
126010  public:
126011  virtual void append_init_stmt ( SgStatement* element );
126012  virtual void prepend_init_stmt ( SgStatement* element );
126013 
126014  public:
126015  // New functions added
126016  // void append_init_stmt ( const SgStatementPtrList::iterator & list, SgStatement* element );
126017  // void prepend_init_stmt ( const SgStatementPtrList::iterator & list, SgStatement* element );
126018 
126019  // void insert_init_stmt ( const SgStatementPtrList::iterator & list, SgStatement* element );
126020 
126021 
126022  public:
126023 
126024 
126025 
126026 
126027  // DQ (2/18/2006): This is now computed at runtime
126028  // void set_mangled_name();
126029 
126031 
126032  SgStatementPtrList & get_init_stmt();
126033  const SgStatementPtrList & get_init_stmt() const;
126034 
126035  protected:
126036  virtual bool replace_child(SgStatement *,SgStatement *, bool extractListFromBasicBlock = false) override;
126037 
126038  public:
126039 
126040  // DQ (11/25/2005): Support for previous interface function.
126041  SgExpression* get_test_expr () const ROSE_DEPRECATED_FUNCTION;
126042  void set_test_expr (SgExpression* expression ) ROSE_DEPRECATED_FUNCTION;
126043  // SgExpressionRoot* get_test_expr_root () const ROSE_DEPRECATED_FUNCTION;
126044  // void set_test_expr_root (SgExpressionRoot* expressionRoot ) ROSE_DEPRECATED_FUNCTION;
126045 
126046  int replace_expression(SgExpression * original_expression, SgExpression * new_expression ) override;
126047 
126048 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
126049  virtual unsigned int cfgIndexForEnd() const override;
126050  virtual bool cfgIsIndexInteresting(unsigned int) const override;
126051  virtual unsigned int cfgFindChildIndex(SgNode* n) override;
126052  virtual unsigned int cfgFindNextChildIndex(SgNode* n) override;
126053  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
126054  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
126055 #endif
126056 
126057  // DQ (2/22/2007): Added for uniform support of mangled names
126058  virtual SgName get_mangled_name() const override;
126059 
126060 #if ALT_FIXUP_COPY
126061  // DQ (11/7/2007): These need to be called separately (see documentation)
126062  virtual void fixupCopy_scopes (SgNode* copy, SgCopyHelp & help) const override;
126063  virtual void fixupCopy_symbols (SgNode* copy, SgCopyHelp & help) const override;
126064  virtual void fixupCopy_references (SgNode* copy, SgCopyHelp & help) const override;
126065 #else
126066  // DQ (10/20/2007): Added fixup function to set scopes not set properly by the ROSETTA generated copy!
126067  virtual void fixupCopy(SgNode* copy, SgCopyHelp & help) const;
126068 #endif
126069 
126070 
126071 
126072 // End of memberFunctionString
126073 // Start of memberFunctionString
126074 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
126075 
126076 // *** COMMON CODE SECTION BEGINS HERE ***
126077 
126078  public:
126079 
126080  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
126081  // and not required which is required to match the other aspects of the copy mechanism code generation.
126082  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
126083  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
126084  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
126085  // virtual SgNode* copy ( const SgCopyHelp & help) const;
126086 
126088  virtual std::string class_name() const override;
126089 
126091  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
126092 
126094  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
126095  // static const VariantT static_variant = V_SgForStatement;
126096  enum { static_variant = V_SgForStatement };
126097 
126098  /* the generated cast function */
126100  ROSE_DLL_API friend SgForStatement* isSgForStatement( SgNode * s );
126101 
126103  ROSE_DLL_API friend const SgForStatement* isSgForStatement( const SgNode * s );
126104 
126105  // ******************************************
126106  // * Memory Pool / New / Delete
126107  // ******************************************
126108 
126109  public:
126111  static const unsigned pool_size; //
126113  static std::vector<unsigned char *> pools; //
126115  static SgForStatement * next_node; //
126116 
126118  static unsigned long initializeStorageClassArray(SgForStatementStorageClass *); //
126119 
126121  static void clearMemoryPool(); //
126122  static void deleteMemoryPool(); //
126123 
126125  static void extendMemoryPoolForFileIO(); //
126126 
126128  static SgForStatement * getPointerFromGlobalIndex(unsigned long); //
126130  static SgForStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
126131 
126133  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
126135  static void resetValidFreepointers(); //
126137  static unsigned long getNumberOfLastValidPointer(); //
126138 
126139 
126140 #if defined(INLINE_FUNCTIONS)
126141 
126142  inline void *operator new (size_t size);
126143 #else
126144 
126145  void *operator new (size_t size);
126146 #endif
126147 
126148  void operator delete (void* pointer, size_t size);
126149 
126150  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
126151  void operator delete (void* pointer)
126152  {
126153  // This is the generated delete operator...
126154  SgForStatement::operator delete (pointer,sizeof(SgForStatement));
126155  }
126156 
126158  static size_t numberOfNodes();
126159 
126161  static size_t memoryUsage();
126162 
126163  // End of scope which started in IR nodes specific code
126164  /* */
126165 
126166  /* name Internal Functions
126167  \brief Internal functions ... incomplete-documentation
126168 
126169  These functions have been made public as part of the design, but they are suggested for internal use
126170  or by particularly knowledgeable users for specialized tools or applications.
126171 
126172  \internal We could not make these private because they are required by user for special purposes. And
126173  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
126174 
126175  */
126176 
126177  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
126178  // overridden in every class by *generated* implementation
126180  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
126181  // MS: 06/28/02 container of names of variables or container indices
126182  // used used in the traversal to access AST successor nodes
126183  // overridden in every class by *generated* implementation
126186  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
126187 
126188  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
126189  // than all the vector copies. The implementation for these functions is generated for each class.
126191  virtual size_t get_numberOfTraversalSuccessors() override;
126193  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
126195  virtual size_t get_childIndex(SgNode *child) override;
126196 
126197 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
126198  // MS: 08/16/2002 method for generating RTI information
126200  virtual RTIReturnType roseRTI() override;
126201 #endif
126202  /* */
126203 
126204 
126205 
126206  /* name Deprecated Functions
126207  \brief Deprecated functions ... incomplete-documentation
126208 
126209  These functions have been deprecated from use.
126210  */
126211  /* */
126212 
126214  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
126215 
126216  // JJW (10/16/2008): Changed to a single function in Node.code, and put
126217  // getVariant() in #if 0 block to prevent confusing Doxygen
126218 #if 0
126219 
126220  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
126222  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
126223 #endif
126224  /* */
126225 
126226 
126227 
126228 
126229  public:
126230  /* name Traversal Support Functions
126231  \brief Traversal support functions ... incomplete-documentation
126232 
126233  These functions have been made public as part of the design, but they are suggested for internal use
126234  or by particularly knowledgable users for specialized tools or applications.
126235  */
126236  /* */
126237 
126238  // DQ (11/26/2005): Support for visitor pattern mechanims
126239  // (inferior to ROSE traversal mechanism, experimental).
126243 
126244  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
126246  virtual void accept (ROSE_VisitorPattern & visitor) override;
126247 
126248  // DQ (12/26/2005): Support for traversal based on the memory pool
126251  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
126252 
126255  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
126256 
126257  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
126258  // This traversal helps support internal tools that call static member functions.
126259  // note: this function operates on the memory pools.
126262  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
126263  /* */
126264 
126265 
126266  public:
126267  /* name Memory Allocation Functions
126268  \brief Memory allocations functions ... incomplete-documentation
126269 
126270  These functions have been made public as part of the design, but they are suggested for internal use
126271  or by particularly knowledgable users for specialized tools or applications.
126272  */
126273  /* */
126274 
126285  virtual bool isInMemoryPool() override;
126286 
126297  virtual void checkDataMemberPointersIfInMemoryPool() override;
126298 
126299  // DQ (4/30/2006): Modified to be a const function.
126314  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
126315 
126325  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
126326 
126338  virtual long getChildIndex( SgNode* childNode ) const override;
126339 
126340  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
126341  // comment here (changed to be a C style comment and not be a doxygen comment).
126342  /* \brief Constructor for use by AST File I/O Mechanism
126343 
126344  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
126345  which obtained via fast binary file I/O from disk.
126346  */
126347  // SgForStatement( SgForStatementStorageClass& source );
126348 
126349 
126350 
126351 
126352 
126353  // JH (10/24/2005): methods added to support the ast file IO
126354  private:
126355 
126356  /* name AST Memory Allocation Support Functions
126357  \brief Memory allocations support....
126358 
126359  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
126360  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
126361  and support the AST File I/O Mechanism.
126362  */
126363  /* */
126364 
126365  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
126366  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
126367  that I use the same type everywhere, if any changes are made. THe second one declares the type
126368  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
126369  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
126370  a correspinding one in the AST_FILE_IO class!
126371  */
126372  // DQ (9/2/2015): This typedef is no longer used, we can't define the
126373  // comment here (changed to be a C style comment and not be a doxygen comment).
126374  /* \brief Typedef used for low level memory access.
126375  */
126376  // typedef unsigned char* TestType;
126377 
126378  // DQ (9/2/2015): This typedef is no longer used, we can't define the
126379  // comment here (changed to be a C style comment and not be a doxygen comment).
126380  /* \brief Typedef used to hold memory addresses as values.
126381  */
126382  // typedef unsigned long AddressType;
126383 
126384 
126385 
126386  // necessary, to have direct access to the p_freepointer and the private methods !
126388  friend class AST_FILE_IO;
126389 
126391  friend class SgForStatementStorageClass;
126392 
126394  friend class AstSpecificDataManagingClass;
126395 
126397  friend class AstSpecificDataManagingClassStorageClass;
126398 
126399  public:
126401  SgForStatement( const SgForStatementStorageClass& source );
126402 
126403  // private: // JJW hack
126404  /*
126405  name AST Memory Allocation Support Variables
126406  Memory allocations support variables
126407 
126408  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
126409  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
126410  and support the AST File I/O Mechanism.
126411  */
126412  /* */
126413 
126414  public:
126415 
126416  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
126417  // to current node (so that it will work cleanly with build functions to specify patterns).
126418  // virtual SgNode* addRegExpAttribute();
126425 
126426 // *** COMMON CODE SECTION ENDS HERE ***
126427 
126428 
126429 // End of memberFunctionString
126430 // Start of memberFunctionString
126431 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
126432 
126433  // the generated cast function
126434  // friend ROSE_DLL_API SgForStatement* isSgForStatement ( SgNode* s );
126435 
126437 
126438 
126439 // End of memberFunctionString
126440 // Start of memberFunctionString
126441 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
126442 
126443  void post_construction_initialization() override;
126444 
126445 
126446 // End of memberFunctionString
126447 
126448  public:
126449  SgForInitStatement* get_for_init_stmt() const;
126450  void set_for_init_stmt(SgForInitStatement* for_init_stmt);
126451 
126452  public:
126453  SgStatement* get_test() const;
126454  void set_test(SgStatement* test);
126455 
126456  public:
126457  SgExpression* get_increment() const;
126458  void set_increment(SgExpression* increment);
126459 
126460  public:
126461  SgStatement* get_loop_body() const;
126462  void set_loop_body(SgStatement* loop_body);
126463 
126464  public:
126465  SgStatement* get_else_body() const;
126466  void set_else_body(SgStatement* else_body);
126467 
126468  public:
126469  std::string get_string_label() const;
126470  void set_string_label(std::string string_label);
126471 
126472 
126473  public:
126474  virtual ~SgForStatement();
126475 
126476 
126477  public:
126478  SgForStatement(Sg_File_Info* startOfConstruct , SgStatement* test = NULL, SgExpression* increment = NULL, SgStatement* loop_body = NULL);
126479  SgForStatement(SgStatement* test, SgExpression* increment, SgStatement* loop_body);
126480 
126481  protected:
126482 // Start of memberFunctionString
126484 
126485 // End of memberFunctionString
126486 // Start of memberFunctionString
126487 SgStatement* p_test;
126488 
126489 // End of memberFunctionString
126490 // Start of memberFunctionString
126491 SgExpression* p_increment;
126492 
126493 // End of memberFunctionString
126494 // Start of memberFunctionString
126496 
126497 // End of memberFunctionString
126498 // Start of memberFunctionString
126500 
126501 // End of memberFunctionString
126502 // Start of memberFunctionString
126503 std::string p_string_label;
126504 
126505 // End of memberFunctionString
126506 
126507 
126508 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
126509 
126510 
126511  };
126512 #endif
126513 
126514 // postdeclarations for SgForStatement
126515 
126516 /* #line 126517 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
126517 
126518 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
126519 
126520 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
126521 
126522 
126523 /* #line 126524 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
126524 
126525 
126526 
126527 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
126528 
126529 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
126530 // This code is automatically generated for each
126531 // terminal and non-terminal within the defined
126532 // grammar. There is a simple way to change the
126533 // code to fix bugs etc. See the ROSE README file
126534 // for directions.
126535 
126536 // tps: (02/22/2010): Adding DLL export requirements
126537 #include "rosedll.h"
126538 
126539 // predeclarations for SgFunctionDefinition
126540 
126541 /* #line 126542 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
126542 
126543 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
126544 
126545 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
126546 
126547 #if 1
126548 // Class Definition for SgFunctionDefinition
126549 class ROSE_DLL_API SgFunctionDefinition : public SgScopeStatement
126550  {
126551  public:
126552 
126553 
126554 /* #line 126555 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
126555 
126556  virtual SgNode* copy ( SgCopyHelp& help) const override;
126557 // Start of memberFunctionString
126558 /* #line 1677 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
126559 
126560 
126561  SgFunctionDeclaration* get_declaration() const;
126562  void set_declaration(SgFunctionDeclaration* new_val);
126563 
126566 
126567  void append_statement ( SgStatement* what );
126568  void prepend_statement ( SgStatement* what );
126569 
126570  protected:
126571  virtual bool replace_child(SgStatement *,SgStatement *, bool extractListFromBasicBlock = false) override;
126572 
126573  public:
126574 
126575  // RV (2/5/2006): Added name mangling for function definitions
126576  virtual SgName get_mangled_name (void) const override;
126577 
126578  // DQ (10/5/2006): Added support for storing unique block numbering within functions
126579  // (cache values in a map instead of recomputing them, this also permits cache invalidation).
126580  std::map<SgNode*,int> & get_scope_number_list();
126581  int get_scope_number ( const SgNode* scope ) const;
126582  void clearScopeNumbers();
126583  void resetScopeNumbers();
126584 
126585  SgName get_qualified_name() const override;
126586 
126587 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
126588  virtual unsigned int cfgIndexForEnd() const override;
126589  virtual bool cfgIsIndexInteresting(unsigned int) const override;
126590  virtual unsigned int cfgFindChildIndex(SgNode* n) override;
126591  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
126592  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
126593 #endif
126594 
126595  // MD (09/20/2010): Accessor for preinitialization lists associated with
126596  // this (constructor) definition. NULL if this has no such list.
126597  virtual SgCtorInitializerList* get_CtorInitializerList() const;
126598 
126599 #if ALT_FIXUP_COPY
126600  // DQ (11/7/2007): These need to be called separately (see documentation)
126601  virtual void fixupCopy_scopes (SgNode* copy, SgCopyHelp & help) const override;
126602  virtual void fixupCopy_symbols (SgNode* copy, SgCopyHelp & help) const override;
126603  virtual void fixupCopy_references (SgNode* copy, SgCopyHelp & help) const override;
126604 #else
126605  // DQ (10/6/2007): Added fixup function to set scopes not set properly by the ROSETTA generated copy!
126606  virtual void fixupCopy(SgNode* copy, SgCopyHelp & help) const;
126607 #endif
126608 
126609 
126610 
126611 // End of memberFunctionString
126612 // Start of memberFunctionString
126613 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
126614 
126615 // *** COMMON CODE SECTION BEGINS HERE ***
126616 
126617  public:
126618 
126619  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
126620  // and not required which is required to match the other aspects of the copy mechanism code generation.
126621  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
126622  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
126623  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
126624  // virtual SgNode* copy ( const SgCopyHelp & help) const;
126625 
126627  virtual std::string class_name() const override;
126628 
126630  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
126631 
126633  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
126634  // static const VariantT static_variant = V_SgFunctionDefinition;
126635  enum { static_variant = V_SgFunctionDefinition };
126636 
126637  /* the generated cast function */
126639  ROSE_DLL_API friend SgFunctionDefinition* isSgFunctionDefinition( SgNode * s );
126640 
126642  ROSE_DLL_API friend const SgFunctionDefinition* isSgFunctionDefinition( const SgNode * s );
126643 
126644  // ******************************************
126645  // * Memory Pool / New / Delete
126646  // ******************************************
126647 
126648  public:
126650  static const unsigned pool_size; //
126652  static std::vector<unsigned char *> pools; //
126654  static SgFunctionDefinition * next_node; //
126655 
126657  static unsigned long initializeStorageClassArray(SgFunctionDefinitionStorageClass *); //
126658 
126660  static void clearMemoryPool(); //
126661  static void deleteMemoryPool(); //
126662 
126664  static void extendMemoryPoolForFileIO(); //
126665 
126667  static SgFunctionDefinition * getPointerFromGlobalIndex(unsigned long); //
126669  static SgFunctionDefinition * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
126670 
126672  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
126674  static void resetValidFreepointers(); //
126676  static unsigned long getNumberOfLastValidPointer(); //
126677 
126678 
126679 #if defined(INLINE_FUNCTIONS)
126680 
126681  inline void *operator new (size_t size);
126682 #else
126683 
126684  void *operator new (size_t size);
126685 #endif
126686 
126687  void operator delete (void* pointer, size_t size);
126688 
126689  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
126690  void operator delete (void* pointer)
126691  {
126692  // This is the generated delete operator...
126693  SgFunctionDefinition::operator delete (pointer,sizeof(SgFunctionDefinition));
126694  }
126695 
126697  static size_t numberOfNodes();
126698 
126700  static size_t memoryUsage();
126701 
126702  // End of scope which started in IR nodes specific code
126703  /* */
126704 
126705  /* name Internal Functions
126706  \brief Internal functions ... incomplete-documentation
126707 
126708  These functions have been made public as part of the design, but they are suggested for internal use
126709  or by particularly knowledgeable users for specialized tools or applications.
126710 
126711  \internal We could not make these private because they are required by user for special purposes. And
126712  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
126713 
126714  */
126715 
126716  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
126717  // overridden in every class by *generated* implementation
126719  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
126720  // MS: 06/28/02 container of names of variables or container indices
126721  // used used in the traversal to access AST successor nodes
126722  // overridden in every class by *generated* implementation
126725  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
126726 
126727  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
126728  // than all the vector copies. The implementation for these functions is generated for each class.
126730  virtual size_t get_numberOfTraversalSuccessors() override;
126732  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
126734  virtual size_t get_childIndex(SgNode *child) override;
126735 
126736 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
126737  // MS: 08/16/2002 method for generating RTI information
126739  virtual RTIReturnType roseRTI() override;
126740 #endif
126741  /* */
126742 
126743 
126744 
126745  /* name Deprecated Functions
126746  \brief Deprecated functions ... incomplete-documentation
126747 
126748  These functions have been deprecated from use.
126749  */
126750  /* */
126751 
126753  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
126754 
126755  // JJW (10/16/2008): Changed to a single function in Node.code, and put
126756  // getVariant() in #if 0 block to prevent confusing Doxygen
126757 #if 0
126758 
126759  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
126761  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
126762 #endif
126763  /* */
126764 
126765 
126766 
126767 
126768  public:
126769  /* name Traversal Support Functions
126770  \brief Traversal support functions ... incomplete-documentation
126771 
126772  These functions have been made public as part of the design, but they are suggested for internal use
126773  or by particularly knowledgable users for specialized tools or applications.
126774  */
126775  /* */
126776 
126777  // DQ (11/26/2005): Support for visitor pattern mechanims
126778  // (inferior to ROSE traversal mechanism, experimental).
126782 
126783  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
126785  virtual void accept (ROSE_VisitorPattern & visitor) override;
126786 
126787  // DQ (12/26/2005): Support for traversal based on the memory pool
126790  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
126791 
126794  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
126795 
126796  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
126797  // This traversal helps support internal tools that call static member functions.
126798  // note: this function operates on the memory pools.
126801  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
126802  /* */
126803 
126804 
126805  public:
126806  /* name Memory Allocation Functions
126807  \brief Memory allocations functions ... incomplete-documentation
126808 
126809  These functions have been made public as part of the design, but they are suggested for internal use
126810  or by particularly knowledgable users for specialized tools or applications.
126811  */
126812  /* */
126813 
126824  virtual bool isInMemoryPool() override;
126825 
126836  virtual void checkDataMemberPointersIfInMemoryPool() override;
126837 
126838  // DQ (4/30/2006): Modified to be a const function.
126853  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
126854 
126864  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
126865 
126877  virtual long getChildIndex( SgNode* childNode ) const override;
126878 
126879  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
126880  // comment here (changed to be a C style comment and not be a doxygen comment).
126881  /* \brief Constructor for use by AST File I/O Mechanism
126882 
126883  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
126884  which obtained via fast binary file I/O from disk.
126885  */
126886  // SgFunctionDefinition( SgFunctionDefinitionStorageClass& source );
126887 
126888 
126889 
126890 
126891 
126892  // JH (10/24/2005): methods added to support the ast file IO
126893  private:
126894 
126895  /* name AST Memory Allocation Support Functions
126896  \brief Memory allocations support....
126897 
126898  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
126899  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
126900  and support the AST File I/O Mechanism.
126901  */
126902  /* */
126903 
126904  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
126905  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
126906  that I use the same type everywhere, if any changes are made. THe second one declares the type
126907  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
126908  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
126909  a correspinding one in the AST_FILE_IO class!
126910  */
126911  // DQ (9/2/2015): This typedef is no longer used, we can't define the
126912  // comment here (changed to be a C style comment and not be a doxygen comment).
126913  /* \brief Typedef used for low level memory access.
126914  */
126915  // typedef unsigned char* TestType;
126916 
126917  // DQ (9/2/2015): This typedef is no longer used, we can't define the
126918  // comment here (changed to be a C style comment and not be a doxygen comment).
126919  /* \brief Typedef used to hold memory addresses as values.
126920  */
126921  // typedef unsigned long AddressType;
126922 
126923 
126924 
126925  // necessary, to have direct access to the p_freepointer and the private methods !
126927  friend class AST_FILE_IO;
126928 
126930  friend class SgFunctionDefinitionStorageClass;
126931 
126933  friend class AstSpecificDataManagingClass;
126934 
126936  friend class AstSpecificDataManagingClassStorageClass;
126937 
126938  public:
126940  SgFunctionDefinition( const SgFunctionDefinitionStorageClass& source );
126941 
126942  // private: // JJW hack
126943  /*
126944  name AST Memory Allocation Support Variables
126945  Memory allocations support variables
126946 
126947  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
126948  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
126949  and support the AST File I/O Mechanism.
126950  */
126951  /* */
126952 
126953  public:
126954 
126955  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
126956  // to current node (so that it will work cleanly with build functions to specify patterns).
126957  // virtual SgNode* addRegExpAttribute();
126964 
126965 // *** COMMON CODE SECTION ENDS HERE ***
126966 
126967 
126968 // End of memberFunctionString
126969 // Start of memberFunctionString
126970 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
126971 
126972  // the generated cast function
126973  // friend ROSE_DLL_API SgFunctionDefinition* isSgFunctionDefinition ( SgNode* s );
126974 
126976 
126977 
126978 // End of memberFunctionString
126979 // Start of memberFunctionString
126980 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
126981 
126982  void post_construction_initialization() override;
126983 
126984 
126985 // End of memberFunctionString
126986 
126987  public:
126988  SgBasicBlock* get_body() const;
126989  void set_body(SgBasicBlock* body);
126990 
126991 
126992 
126993  public:
126994  virtual ~SgFunctionDefinition();
126995 
126996 
126997  public:
126998  SgFunctionDefinition(Sg_File_Info* startOfConstruct , SgBasicBlock* body = NULL);
127000 
127001  protected:
127002 // Start of memberFunctionString
127004 
127005 // End of memberFunctionString
127006 // Start of memberFunctionString
127007 std::map<SgNode*,int> p_scope_number_list;
127008 
127009 // End of memberFunctionString
127010 
127011 
127012 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
127013 
127014 
127015  };
127016 #endif
127017 
127018 // postdeclarations for SgFunctionDefinition
127019 
127020 /* #line 127021 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
127021 
127022 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
127023 
127024 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
127025 
127026 
127027 /* #line 127028 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
127028 
127029 
127030 
127031 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
127032 
127033 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
127034 // This code is automatically generated for each
127035 // terminal and non-terminal within the defined
127036 // grammar. There is a simple way to change the
127037 // code to fix bugs etc. See the ROSE README file
127038 // for directions.
127039 
127040 // tps: (02/22/2010): Adding DLL export requirements
127041 #include "rosedll.h"
127042 
127043 // predeclarations for SgTemplateFunctionDefinition
127044 
127045 /* #line 127046 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
127046 
127047 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
127048 
127049 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
127050 
127051 #if 1
127052 // Class Definition for SgTemplateFunctionDefinition
127054  {
127055  public:
127056 
127057 
127058 /* #line 127059 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
127059 
127060  virtual SgNode* copy ( SgCopyHelp& help) const override;
127061 // Start of memberFunctionString
127062 /* #line 2850 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
127063 
127064 
127065  // DQ (12/1/2011): Adding support for template declarations in the AST.
127068 
127069  SgTemplateFunctionDeclaration* get_declaration() const;
127070  void set_declaration(SgTemplateFunctionDeclaration* new_val);
127071 
127072  virtual SgName get_mangled_name (void) const override;
127073 
127074 
127075 
127076 // End of memberFunctionString
127077 // Start of memberFunctionString
127078 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
127079 
127080 // *** COMMON CODE SECTION BEGINS HERE ***
127081 
127082  public:
127083 
127084  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
127085  // and not required which is required to match the other aspects of the copy mechanism code generation.
127086  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
127087  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
127088  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
127089  // virtual SgNode* copy ( const SgCopyHelp & help) const;
127090 
127092  virtual std::string class_name() const override;
127093 
127095  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
127096 
127098  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
127099  // static const VariantT static_variant = V_SgTemplateFunctionDefinition;
127100  enum { static_variant = V_SgTemplateFunctionDefinition };
127101 
127102  /* the generated cast function */
127104  ROSE_DLL_API friend SgTemplateFunctionDefinition* isSgTemplateFunctionDefinition( SgNode * s );
127105 
127107  ROSE_DLL_API friend const SgTemplateFunctionDefinition* isSgTemplateFunctionDefinition( const SgNode * s );
127108 
127109  // ******************************************
127110  // * Memory Pool / New / Delete
127111  // ******************************************
127112 
127113  public:
127115  static const unsigned pool_size; //
127117  static std::vector<unsigned char *> pools; //
127119  static SgTemplateFunctionDefinition * next_node; //
127120 
127122  static unsigned long initializeStorageClassArray(SgTemplateFunctionDefinitionStorageClass *); //
127123 
127125  static void clearMemoryPool(); //
127126  static void deleteMemoryPool(); //
127127 
127129  static void extendMemoryPoolForFileIO(); //
127130 
127132  static SgTemplateFunctionDefinition * getPointerFromGlobalIndex(unsigned long); //
127134  static SgTemplateFunctionDefinition * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
127135 
127137  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
127139  static void resetValidFreepointers(); //
127141  static unsigned long getNumberOfLastValidPointer(); //
127142 
127143 
127144 #if defined(INLINE_FUNCTIONS)
127145 
127146  inline void *operator new (size_t size);
127147 #else
127148 
127149  void *operator new (size_t size);
127150 #endif
127151 
127152  void operator delete (void* pointer, size_t size);
127153 
127154  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
127155  void operator delete (void* pointer)
127156  {
127157  // This is the generated delete operator...
127158  SgTemplateFunctionDefinition::operator delete (pointer,sizeof(SgTemplateFunctionDefinition));
127159  }
127160 
127162  static size_t numberOfNodes();
127163 
127165  static size_t memoryUsage();
127166 
127167  // End of scope which started in IR nodes specific code
127168  /* */
127169 
127170  /* name Internal Functions
127171  \brief Internal functions ... incomplete-documentation
127172 
127173  These functions have been made public as part of the design, but they are suggested for internal use
127174  or by particularly knowledgeable users for specialized tools or applications.
127175 
127176  \internal We could not make these private because they are required by user for special purposes. And
127177  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
127178 
127179  */
127180 
127181  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
127182  // overridden in every class by *generated* implementation
127184  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
127185  // MS: 06/28/02 container of names of variables or container indices
127186  // used used in the traversal to access AST successor nodes
127187  // overridden in every class by *generated* implementation
127190  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
127191 
127192  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
127193  // than all the vector copies. The implementation for these functions is generated for each class.
127195  virtual size_t get_numberOfTraversalSuccessors() override;
127197  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
127199  virtual size_t get_childIndex(SgNode *child) override;
127200 
127201 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
127202  // MS: 08/16/2002 method for generating RTI information
127204  virtual RTIReturnType roseRTI() override;
127205 #endif
127206  /* */
127207 
127208 
127209 
127210  /* name Deprecated Functions
127211  \brief Deprecated functions ... incomplete-documentation
127212 
127213  These functions have been deprecated from use.
127214  */
127215  /* */
127216 
127218  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
127219 
127220  // JJW (10/16/2008): Changed to a single function in Node.code, and put
127221  // getVariant() in #if 0 block to prevent confusing Doxygen
127222 #if 0
127223 
127224  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
127226  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
127227 #endif
127228  /* */
127229 
127230 
127231 
127232 
127233  public:
127234  /* name Traversal Support Functions
127235  \brief Traversal support functions ... incomplete-documentation
127236 
127237  These functions have been made public as part of the design, but they are suggested for internal use
127238  or by particularly knowledgable users for specialized tools or applications.
127239  */
127240  /* */
127241 
127242  // DQ (11/26/2005): Support for visitor pattern mechanims
127243  // (inferior to ROSE traversal mechanism, experimental).
127247 
127248  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
127250  virtual void accept (ROSE_VisitorPattern & visitor) override;
127251 
127252  // DQ (12/26/2005): Support for traversal based on the memory pool
127255  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
127256 
127259  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
127260 
127261  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
127262  // This traversal helps support internal tools that call static member functions.
127263  // note: this function operates on the memory pools.
127266  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
127267  /* */
127268 
127269 
127270  public:
127271  /* name Memory Allocation Functions
127272  \brief Memory allocations functions ... incomplete-documentation
127273 
127274  These functions have been made public as part of the design, but they are suggested for internal use
127275  or by particularly knowledgable users for specialized tools or applications.
127276  */
127277  /* */
127278 
127289  virtual bool isInMemoryPool() override;
127290 
127301  virtual void checkDataMemberPointersIfInMemoryPool() override;
127302 
127303  // DQ (4/30/2006): Modified to be a const function.
127318  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
127319 
127329  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
127330 
127342  virtual long getChildIndex( SgNode* childNode ) const override;
127343 
127344  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
127345  // comment here (changed to be a C style comment and not be a doxygen comment).
127346  /* \brief Constructor for use by AST File I/O Mechanism
127347 
127348  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
127349  which obtained via fast binary file I/O from disk.
127350  */
127351  // SgTemplateFunctionDefinition( SgTemplateFunctionDefinitionStorageClass& source );
127352 
127353 
127354 
127355 
127356 
127357  // JH (10/24/2005): methods added to support the ast file IO
127358  private:
127359 
127360  /* name AST Memory Allocation Support Functions
127361  \brief Memory allocations support....
127362 
127363  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
127364  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
127365  and support the AST File I/O Mechanism.
127366  */
127367  /* */
127368 
127369  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
127370  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
127371  that I use the same type everywhere, if any changes are made. THe second one declares the type
127372  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
127373  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
127374  a correspinding one in the AST_FILE_IO class!
127375  */
127376  // DQ (9/2/2015): This typedef is no longer used, we can't define the
127377  // comment here (changed to be a C style comment and not be a doxygen comment).
127378  /* \brief Typedef used for low level memory access.
127379  */
127380  // typedef unsigned char* TestType;
127381 
127382  // DQ (9/2/2015): This typedef is no longer used, we can't define the
127383  // comment here (changed to be a C style comment and not be a doxygen comment).
127384  /* \brief Typedef used to hold memory addresses as values.
127385  */
127386  // typedef unsigned long AddressType;
127387 
127388 
127389 
127390  // necessary, to have direct access to the p_freepointer and the private methods !
127392  friend class AST_FILE_IO;
127393 
127395  friend class SgTemplateFunctionDefinitionStorageClass;
127396 
127398  friend class AstSpecificDataManagingClass;
127399 
127401  friend class AstSpecificDataManagingClassStorageClass;
127402 
127403  public:
127405  SgTemplateFunctionDefinition( const SgTemplateFunctionDefinitionStorageClass& source );
127406 
127407  // private: // JJW hack
127408  /*
127409  name AST Memory Allocation Support Variables
127410  Memory allocations support variables
127411 
127412  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
127413  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
127414  and support the AST File I/O Mechanism.
127415  */
127416  /* */
127417 
127418  public:
127419 
127420  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
127421  // to current node (so that it will work cleanly with build functions to specify patterns).
127422  // virtual SgNode* addRegExpAttribute();
127429 
127430 // *** COMMON CODE SECTION ENDS HERE ***
127431 
127432 
127433 // End of memberFunctionString
127434 // Start of memberFunctionString
127435 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
127436 
127437  // the generated cast function
127438  // friend ROSE_DLL_API SgTemplateFunctionDefinition* isSgTemplateFunctionDefinition ( SgNode* s );
127439 
127441 
127442 
127443 // End of memberFunctionString
127444 // Start of memberFunctionString
127445 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
127446 
127447  void post_construction_initialization() override;
127448 
127449 
127450 // End of memberFunctionString
127451 
127452 
127453  public:
127454  virtual ~SgTemplateFunctionDefinition();
127455 
127456 
127457  public:
127458  SgTemplateFunctionDefinition(Sg_File_Info* startOfConstruct , SgBasicBlock* body = NULL);
127460 
127461  protected:
127462 
127463 
127464 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
127465 
127466 
127467  };
127468 #endif
127469 
127470 // postdeclarations for SgTemplateFunctionDefinition
127471 
127472 /* #line 127473 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
127473 
127474 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
127475 
127476 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
127477 
127478 
127479 /* #line 127480 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
127480 
127481 
127482 
127483 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
127484 
127485 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
127486 // This code is automatically generated for each
127487 // terminal and non-terminal within the defined
127488 // grammar. There is a simple way to change the
127489 // code to fix bugs etc. See the ROSE README file
127490 // for directions.
127491 
127492 // tps: (02/22/2010): Adding DLL export requirements
127493 #include "rosedll.h"
127494 
127495 // predeclarations for SgClassDefinition
127496 
127497 /* #line 127498 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
127498 
127499 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
127500 
127501 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
127502 
127503 #if 1
127504 // Class Definition for SgClassDefinition
127505 class ROSE_DLL_API SgClassDefinition : public SgScopeStatement
127506  {
127507  public:
127508 
127509 
127510 /* #line 127511 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
127511 
127512  virtual SgNode* copy ( SgCopyHelp& help) const override;
127513 // Start of memberFunctionString
127514 /* #line 2123 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
127515 
127516 
127517 /* #line 939 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
127518 
127519  public:
127520  virtual void append_member ( SgDeclarationStatement* element );
127521  virtual void prepend_member ( SgDeclarationStatement* element );
127522 
127523  public:
127524  // New functions added
127525  // void append_member ( const SgDeclarationStatementPtrList::iterator & list, SgDeclarationStatement* element );
127526  // void prepend_member ( const SgDeclarationStatementPtrList::iterator & list, SgDeclarationStatement* element );
127527 
127528  // void insert_member ( const SgDeclarationStatementPtrList::iterator & list, SgDeclarationStatement* element );
127529 
127530 
127531  public:
127532 
127533 
127534 
127535 
127536 /* #line 939 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
127537 
127538  public:
127539  virtual void append_inheritance ( SgBaseClass* element );
127540  virtual void prepend_inheritance ( SgBaseClass* element );
127541 
127542  public:
127543  // New functions added
127544  // void append_inheritance ( const SgBaseClassPtrList::iterator & list, SgBaseClass* element );
127545  // void prepend_inheritance ( const SgBaseClassPtrList::iterator & list, SgBaseClass* element );
127546 
127547  // void insert_inheritance ( const SgBaseClassPtrList::iterator & list, SgBaseClass* element );
127548 
127549 
127550  public:
127551 
127552 
127553 
127554 
127555  virtual SgName get_qualified_name() const override;
127556 
127557  // RV (1/31/2006): Added this mangler to replace 'get_mangled_qualified_name'
127558  virtual SgName get_mangled_name (void) const override;
127559 
127561  SgName get_mangled_qualified_name(int& i);
127562 
127563  protected:
127564  virtual bool replace_child(SgStatement *,SgStatement *, bool extractListFromBasicBlock = false) override;
127565  virtual bool insert_child( SgStatement*, SgStatement*, bool inFront = true, bool extractListFromBasicBlock = false) override;
127566 
127567  public:
127568 
127569  SgClassDeclaration* get_declaration() const;
127570  void set_declaration(SgClassDeclaration* new_val);
127571 
127574 
127575 #if ALT_FIXUP_COPY
127576  // DQ (11/7/2007): These need to be called separately (see documentation)
127577  virtual void fixupCopy_scopes (SgNode* copy, SgCopyHelp & help) const override;
127578  virtual void fixupCopy_symbols (SgNode* copy, SgCopyHelp & help) const override;
127579  virtual void fixupCopy_references (SgNode* copy, SgCopyHelp & help) const override;
127580 #else
127581  // DQ (10/19/2007): Added fixup function to set scopes not set properly by the ROSETTA generated copy!
127582  virtual void fixupCopy(SgNode* copy, SgCopyHelp & help) const;
127583 #endif
127584 
127585 
127586 
127587 // End of memberFunctionString
127588 // Start of memberFunctionString
127589 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
127590 
127591 // *** COMMON CODE SECTION BEGINS HERE ***
127592 
127593  public:
127594 
127595  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
127596  // and not required which is required to match the other aspects of the copy mechanism code generation.
127597  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
127598  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
127599  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
127600  // virtual SgNode* copy ( const SgCopyHelp & help) const;
127601 
127603  virtual std::string class_name() const override;
127604 
127606  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
127607 
127609  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
127610  // static const VariantT static_variant = V_SgClassDefinition;
127611  enum { static_variant = V_SgClassDefinition };
127612 
127613  /* the generated cast function */
127615  ROSE_DLL_API friend SgClassDefinition* isSgClassDefinition( SgNode * s );
127616 
127618  ROSE_DLL_API friend const SgClassDefinition* isSgClassDefinition( const SgNode * s );
127619 
127620  // ******************************************
127621  // * Memory Pool / New / Delete
127622  // ******************************************
127623 
127624  public:
127626  static const unsigned pool_size; //
127628  static std::vector<unsigned char *> pools; //
127630  static SgClassDefinition * next_node; //
127631 
127633  static unsigned long initializeStorageClassArray(SgClassDefinitionStorageClass *); //
127634 
127636  static void clearMemoryPool(); //
127637  static void deleteMemoryPool(); //
127638 
127640  static void extendMemoryPoolForFileIO(); //
127641 
127643  static SgClassDefinition * getPointerFromGlobalIndex(unsigned long); //
127645  static SgClassDefinition * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
127646 
127648  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
127650  static void resetValidFreepointers(); //
127652  static unsigned long getNumberOfLastValidPointer(); //
127653 
127654 
127655 #if defined(INLINE_FUNCTIONS)
127656 
127657  inline void *operator new (size_t size);
127658 #else
127659 
127660  void *operator new (size_t size);
127661 #endif
127662 
127663  void operator delete (void* pointer, size_t size);
127664 
127665  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
127666  void operator delete (void* pointer)
127667  {
127668  // This is the generated delete operator...
127669  SgClassDefinition::operator delete (pointer,sizeof(SgClassDefinition));
127670  }
127671 
127673  static size_t numberOfNodes();
127674 
127676  static size_t memoryUsage();
127677 
127678  // End of scope which started in IR nodes specific code
127679  /* */
127680 
127681  /* name Internal Functions
127682  \brief Internal functions ... incomplete-documentation
127683 
127684  These functions have been made public as part of the design, but they are suggested for internal use
127685  or by particularly knowledgeable users for specialized tools or applications.
127686 
127687  \internal We could not make these private because they are required by user for special purposes. And
127688  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
127689 
127690  */
127691 
127692  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
127693  // overridden in every class by *generated* implementation
127695  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
127696  // MS: 06/28/02 container of names of variables or container indices
127697  // used used in the traversal to access AST successor nodes
127698  // overridden in every class by *generated* implementation
127701  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
127702 
127703  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
127704  // than all the vector copies. The implementation for these functions is generated for each class.
127706  virtual size_t get_numberOfTraversalSuccessors() override;
127708  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
127710  virtual size_t get_childIndex(SgNode *child) override;
127711 
127712 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
127713  // MS: 08/16/2002 method for generating RTI information
127715  virtual RTIReturnType roseRTI() override;
127716 #endif
127717  /* */
127718 
127719 
127720 
127721  /* name Deprecated Functions
127722  \brief Deprecated functions ... incomplete-documentation
127723 
127724  These functions have been deprecated from use.
127725  */
127726  /* */
127727 
127729  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
127730 
127731  // JJW (10/16/2008): Changed to a single function in Node.code, and put
127732  // getVariant() in #if 0 block to prevent confusing Doxygen
127733 #if 0
127734 
127735  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
127737  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
127738 #endif
127739  /* */
127740 
127741 
127742 
127743 
127744  public:
127745  /* name Traversal Support Functions
127746  \brief Traversal support functions ... incomplete-documentation
127747 
127748  These functions have been made public as part of the design, but they are suggested for internal use
127749  or by particularly knowledgable users for specialized tools or applications.
127750  */
127751  /* */
127752 
127753  // DQ (11/26/2005): Support for visitor pattern mechanims
127754  // (inferior to ROSE traversal mechanism, experimental).
127758 
127759  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
127761  virtual void accept (ROSE_VisitorPattern & visitor) override;
127762 
127763  // DQ (12/26/2005): Support for traversal based on the memory pool
127766  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
127767 
127770  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
127771 
127772  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
127773  // This traversal helps support internal tools that call static member functions.
127774  // note: this function operates on the memory pools.
127777  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
127778  /* */
127779 
127780 
127781  public:
127782  /* name Memory Allocation Functions
127783  \brief Memory allocations functions ... incomplete-documentation
127784 
127785  These functions have been made public as part of the design, but they are suggested for internal use
127786  or by particularly knowledgable users for specialized tools or applications.
127787  */
127788  /* */
127789 
127800  virtual bool isInMemoryPool() override;
127801 
127812  virtual void checkDataMemberPointersIfInMemoryPool() override;
127813 
127814  // DQ (4/30/2006): Modified to be a const function.
127829  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
127830 
127840  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
127841 
127853  virtual long getChildIndex( SgNode* childNode ) const override;
127854 
127855  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
127856  // comment here (changed to be a C style comment and not be a doxygen comment).
127857  /* \brief Constructor for use by AST File I/O Mechanism
127858 
127859  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
127860  which obtained via fast binary file I/O from disk.
127861  */
127862  // SgClassDefinition( SgClassDefinitionStorageClass& source );
127863 
127864 
127865 
127866 
127867 
127868  // JH (10/24/2005): methods added to support the ast file IO
127869  private:
127870 
127871  /* name AST Memory Allocation Support Functions
127872  \brief Memory allocations support....
127873 
127874  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
127875  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
127876  and support the AST File I/O Mechanism.
127877  */
127878  /* */
127879 
127880  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
127881  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
127882  that I use the same type everywhere, if any changes are made. THe second one declares the type
127883  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
127884  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
127885  a correspinding one in the AST_FILE_IO class!
127886  */
127887  // DQ (9/2/2015): This typedef is no longer used, we can't define the
127888  // comment here (changed to be a C style comment and not be a doxygen comment).
127889  /* \brief Typedef used for low level memory access.
127890  */
127891  // typedef unsigned char* TestType;
127892 
127893  // DQ (9/2/2015): This typedef is no longer used, we can't define the
127894  // comment here (changed to be a C style comment and not be a doxygen comment).
127895  /* \brief Typedef used to hold memory addresses as values.
127896  */
127897  // typedef unsigned long AddressType;
127898 
127899 
127900 
127901  // necessary, to have direct access to the p_freepointer and the private methods !
127903  friend class AST_FILE_IO;
127904 
127906  friend class SgClassDefinitionStorageClass;
127907 
127909  friend class AstSpecificDataManagingClass;
127910 
127912  friend class AstSpecificDataManagingClassStorageClass;
127913 
127914  public:
127916  SgClassDefinition( const SgClassDefinitionStorageClass& source );
127917 
127918  // private: // JJW hack
127919  /*
127920  name AST Memory Allocation Support Variables
127921  Memory allocations support variables
127922 
127923  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
127924  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
127925  and support the AST File I/O Mechanism.
127926  */
127927  /* */
127928 
127929  public:
127930 
127931  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
127932  // to current node (so that it will work cleanly with build functions to specify patterns).
127933  // virtual SgNode* addRegExpAttribute();
127940 
127941 // *** COMMON CODE SECTION ENDS HERE ***
127942 
127943 
127944 // End of memberFunctionString
127945 // Start of memberFunctionString
127946 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
127947 
127948  // the generated cast function
127949  // friend ROSE_DLL_API SgClassDefinition* isSgClassDefinition ( SgNode* s );
127950 
127952 
127953 
127954 // End of memberFunctionString
127955 // Start of memberFunctionString
127956 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
127957 
127958  void post_construction_initialization() override;
127959 
127960 
127961 // End of memberFunctionString
127962 
127963  public:
127964  const SgDeclarationStatementPtrList& get_members() const;
127965  SgDeclarationStatementPtrList& get_members();
127966 
127967  public:
127968  const SgBaseClassPtrList& get_inheritances() const;
127969  SgBaseClassPtrList& get_inheritances();
127970 
127971  public:
127972  unsigned int get_packingAlignment() const;
127973  void set_packingAlignment(unsigned int packingAlignment);
127974 
127975  public:
127976  bool get_isSequence() const;
127977  void set_isSequence(bool isSequence);
127978 
127979  public:
127980  bool get_isPrivate() const;
127981  void set_isPrivate(bool isPrivate);
127982 
127983  public:
127984  bool get_isAbstract() const;
127985  void set_isAbstract(bool isAbstract);
127986 
127987 
127988  public:
127989  virtual ~SgClassDefinition();
127990 
127991 
127992  public:
127993  SgClassDefinition(Sg_File_Info* startOfConstruct );
127994  SgClassDefinition();
127995 
127996  protected:
127997 // Start of memberFunctionString
127998 SgDeclarationStatementPtrList p_members;
127999 
128000 // End of memberFunctionString
128001 // Start of memberFunctionString
128002 SgBaseClassPtrList p_inheritances;
128003 
128004 // End of memberFunctionString
128005 // Start of memberFunctionString
128006 unsigned int p_packingAlignment;
128007 
128008 // End of memberFunctionString
128009 // Start of memberFunctionString
128010 bool p_isSequence;
128011 
128012 // End of memberFunctionString
128013 // Start of memberFunctionString
128014 bool p_isPrivate;
128015 
128016 // End of memberFunctionString
128017 // Start of memberFunctionString
128018 bool p_isAbstract;
128019 
128020 // End of memberFunctionString
128021 
128022 
128023 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
128024 
128025 
128026  };
128027 #endif
128028 
128029 // postdeclarations for SgClassDefinition
128030 
128031 /* #line 128032 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
128032 
128033 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
128034 
128035 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
128036 
128037 
128038 /* #line 128039 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
128039 
128040 
128041 
128042 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
128043 
128044 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
128045 // This code is automatically generated for each
128046 // terminal and non-terminal within the defined
128047 // grammar. There is a simple way to change the
128048 // code to fix bugs etc. See the ROSE README file
128049 // for directions.
128050 
128051 // tps: (02/22/2010): Adding DLL export requirements
128052 #include "rosedll.h"
128053 
128054 // predeclarations for SgTemplateInstantiationDefn
128055 
128056 /* #line 128057 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
128057 
128058 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
128059 
128060 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
128061 
128062 #if 1
128063 // Class Definition for SgTemplateInstantiationDefn
128065  {
128066  public:
128067 
128068 
128069 /* #line 128070 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
128070 
128071  virtual SgNode* copy ( SgCopyHelp& help) const override;
128072 // Start of memberFunctionString
128073 /* #line 2165 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
128074 
128075 
128076  // DQ (3/18/2004): Generate template name with arguments
128077  // overrides base class implementation.
128078  // SgName get_name () const;
128079 
128080  // DQ (9/8/2004): overrides base class implementation
128081  virtual SgName get_qualified_name() const override;
128082 
128085 
128086 #if ALT_FIXUP_COPY
128087  // DQ (11/7/2007): These need to be called separately (see documentation)
128088  virtual void fixupCopy_scopes (SgNode* copy, SgCopyHelp & help) const override;
128089  virtual void fixupCopy_symbols (SgNode* copy, SgCopyHelp & help) const override;
128090  virtual void fixupCopy_references (SgNode* copy, SgCopyHelp & help) const override;
128091 #else
128092  // DQ (10/19/2007): Added fixup function to set scopes not set properly by the ROSETTA generated copy!
128093  virtual void fixupCopy(SgNode* copy, SgCopyHelp & help) const;
128094 #endif
128095 
128096  // DQ (5/31/2012): Added to support mangled name testing (at least).
128097  virtual SgName get_mangled_name(void) const override;
128098 
128099 
128100 
128101 // End of memberFunctionString
128102 // Start of memberFunctionString
128103 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
128104 
128105 // *** COMMON CODE SECTION BEGINS HERE ***
128106 
128107  public:
128108 
128109  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
128110  // and not required which is required to match the other aspects of the copy mechanism code generation.
128111  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
128112  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
128113  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
128114  // virtual SgNode* copy ( const SgCopyHelp & help) const;
128115 
128117  virtual std::string class_name() const override;
128118 
128120  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
128121 
128123  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
128124  // static const VariantT static_variant = V_SgTemplateInstantiationDefn;
128125  enum { static_variant = V_SgTemplateInstantiationDefn };
128126 
128127  /* the generated cast function */
128129  ROSE_DLL_API friend SgTemplateInstantiationDefn* isSgTemplateInstantiationDefn( SgNode * s );
128130 
128132  ROSE_DLL_API friend const SgTemplateInstantiationDefn* isSgTemplateInstantiationDefn( const SgNode * s );
128133 
128134  // ******************************************
128135  // * Memory Pool / New / Delete
128136  // ******************************************
128137 
128138  public:
128140  static const unsigned pool_size; //
128142  static std::vector<unsigned char *> pools; //
128144  static SgTemplateInstantiationDefn * next_node; //
128145 
128147  static unsigned long initializeStorageClassArray(SgTemplateInstantiationDefnStorageClass *); //
128148 
128150  static void clearMemoryPool(); //
128151  static void deleteMemoryPool(); //
128152 
128154  static void extendMemoryPoolForFileIO(); //
128155 
128157  static SgTemplateInstantiationDefn * getPointerFromGlobalIndex(unsigned long); //
128159  static SgTemplateInstantiationDefn * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
128160 
128162  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
128164  static void resetValidFreepointers(); //
128166  static unsigned long getNumberOfLastValidPointer(); //
128167 
128168 
128169 #if defined(INLINE_FUNCTIONS)
128170 
128171  inline void *operator new (size_t size);
128172 #else
128173 
128174  void *operator new (size_t size);
128175 #endif
128176 
128177  void operator delete (void* pointer, size_t size);
128178 
128179  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
128180  void operator delete (void* pointer)
128181  {
128182  // This is the generated delete operator...
128183  SgTemplateInstantiationDefn::operator delete (pointer,sizeof(SgTemplateInstantiationDefn));
128184  }
128185 
128187  static size_t numberOfNodes();
128188 
128190  static size_t memoryUsage();
128191 
128192  // End of scope which started in IR nodes specific code
128193  /* */
128194 
128195  /* name Internal Functions
128196  \brief Internal functions ... incomplete-documentation
128197 
128198  These functions have been made public as part of the design, but they are suggested for internal use
128199  or by particularly knowledgeable users for specialized tools or applications.
128200 
128201  \internal We could not make these private because they are required by user for special purposes. And
128202  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
128203 
128204  */
128205 
128206  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
128207  // overridden in every class by *generated* implementation
128209  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
128210  // MS: 06/28/02 container of names of variables or container indices
128211  // used used in the traversal to access AST successor nodes
128212  // overridden in every class by *generated* implementation
128215  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
128216 
128217  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
128218  // than all the vector copies. The implementation for these functions is generated for each class.
128220  virtual size_t get_numberOfTraversalSuccessors() override;
128222  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
128224  virtual size_t get_childIndex(SgNode *child) override;
128225 
128226 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
128227  // MS: 08/16/2002 method for generating RTI information
128229  virtual RTIReturnType roseRTI() override;
128230 #endif
128231  /* */
128232 
128233 
128234 
128235  /* name Deprecated Functions
128236  \brief Deprecated functions ... incomplete-documentation
128237 
128238  These functions have been deprecated from use.
128239  */
128240  /* */
128241 
128243  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
128244 
128245  // JJW (10/16/2008): Changed to a single function in Node.code, and put
128246  // getVariant() in #if 0 block to prevent confusing Doxygen
128247 #if 0
128248 
128249  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
128251  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
128252 #endif
128253  /* */
128254 
128255 
128256 
128257 
128258  public:
128259  /* name Traversal Support Functions
128260  \brief Traversal support functions ... incomplete-documentation
128261 
128262  These functions have been made public as part of the design, but they are suggested for internal use
128263  or by particularly knowledgable users for specialized tools or applications.
128264  */
128265  /* */
128266 
128267  // DQ (11/26/2005): Support for visitor pattern mechanims
128268  // (inferior to ROSE traversal mechanism, experimental).
128272 
128273  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
128275  virtual void accept (ROSE_VisitorPattern & visitor) override;
128276 
128277  // DQ (12/26/2005): Support for traversal based on the memory pool
128280  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
128281 
128284  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
128285 
128286  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
128287  // This traversal helps support internal tools that call static member functions.
128288  // note: this function operates on the memory pools.
128291  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
128292  /* */
128293 
128294 
128295  public:
128296  /* name Memory Allocation Functions
128297  \brief Memory allocations functions ... incomplete-documentation
128298 
128299  These functions have been made public as part of the design, but they are suggested for internal use
128300  or by particularly knowledgable users for specialized tools or applications.
128301  */
128302  /* */
128303 
128314  virtual bool isInMemoryPool() override;
128315 
128326  virtual void checkDataMemberPointersIfInMemoryPool() override;
128327 
128328  // DQ (4/30/2006): Modified to be a const function.
128343  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
128344 
128354  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
128355 
128367  virtual long getChildIndex( SgNode* childNode ) const override;
128368 
128369  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
128370  // comment here (changed to be a C style comment and not be a doxygen comment).
128371  /* \brief Constructor for use by AST File I/O Mechanism
128372 
128373  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
128374  which obtained via fast binary file I/O from disk.
128375  */
128376  // SgTemplateInstantiationDefn( SgTemplateInstantiationDefnStorageClass& source );
128377 
128378 
128379 
128380 
128381 
128382  // JH (10/24/2005): methods added to support the ast file IO
128383  private:
128384 
128385  /* name AST Memory Allocation Support Functions
128386  \brief Memory allocations support....
128387 
128388  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
128389  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
128390  and support the AST File I/O Mechanism.
128391  */
128392  /* */
128393 
128394  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
128395  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
128396  that I use the same type everywhere, if any changes are made. THe second one declares the type
128397  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
128398  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
128399  a correspinding one in the AST_FILE_IO class!
128400  */
128401  // DQ (9/2/2015): This typedef is no longer used, we can't define the
128402  // comment here (changed to be a C style comment and not be a doxygen comment).
128403  /* \brief Typedef used for low level memory access.
128404  */
128405  // typedef unsigned char* TestType;
128406 
128407  // DQ (9/2/2015): This typedef is no longer used, we can't define the
128408  // comment here (changed to be a C style comment and not be a doxygen comment).
128409  /* \brief Typedef used to hold memory addresses as values.
128410  */
128411  // typedef unsigned long AddressType;
128412 
128413 
128414 
128415  // necessary, to have direct access to the p_freepointer and the private methods !
128417  friend class AST_FILE_IO;
128418 
128420  friend class SgTemplateInstantiationDefnStorageClass;
128421 
128423  friend class AstSpecificDataManagingClass;
128424 
128426  friend class AstSpecificDataManagingClassStorageClass;
128427 
128428  public:
128430  SgTemplateInstantiationDefn( const SgTemplateInstantiationDefnStorageClass& source );
128431 
128432  // private: // JJW hack
128433  /*
128434  name AST Memory Allocation Support Variables
128435  Memory allocations support variables
128436 
128437  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
128438  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
128439  and support the AST File I/O Mechanism.
128440  */
128441  /* */
128442 
128443  public:
128444 
128445  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
128446  // to current node (so that it will work cleanly with build functions to specify patterns).
128447  // virtual SgNode* addRegExpAttribute();
128454 
128455 // *** COMMON CODE SECTION ENDS HERE ***
128456 
128457 
128458 // End of memberFunctionString
128459 // Start of memberFunctionString
128460 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
128461 
128462  // the generated cast function
128463  // friend ROSE_DLL_API SgTemplateInstantiationDefn* isSgTemplateInstantiationDefn ( SgNode* s );
128464 
128466 
128467 
128468 // End of memberFunctionString
128469 // Start of memberFunctionString
128470 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
128471 
128472  void post_construction_initialization() override;
128473 
128474 
128475 // End of memberFunctionString
128476 
128477 
128478  public:
128479  virtual ~SgTemplateInstantiationDefn();
128480 
128481 
128482  public:
128483  SgTemplateInstantiationDefn(Sg_File_Info* startOfConstruct );
128485 
128486  protected:
128487 
128488 
128489 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
128490 
128491 
128492  };
128493 #endif
128494 
128495 // postdeclarations for SgTemplateInstantiationDefn
128496 
128497 /* #line 128498 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
128498 
128499 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
128500 
128501 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
128502 
128503 
128504 /* #line 128505 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
128505 
128506 
128507 
128508 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
128509 
128510 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
128511 // This code is automatically generated for each
128512 // terminal and non-terminal within the defined
128513 // grammar. There is a simple way to change the
128514 // code to fix bugs etc. See the ROSE README file
128515 // for directions.
128516 
128517 // tps: (02/22/2010): Adding DLL export requirements
128518 #include "rosedll.h"
128519 
128520 // predeclarations for SgTemplateClassDefinition
128521 
128522 /* #line 128523 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
128523 
128524 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
128525 
128526 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
128527 
128528 #if 1
128529 // Class Definition for SgTemplateClassDefinition
128531  {
128532  public:
128533 
128534 
128535 /* #line 128536 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
128536 
128537  virtual SgNode* copy ( SgCopyHelp& help) const override;
128538 // Start of memberFunctionString
128539 /* #line 2835 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
128540 
128541 
128542  public:
128544  void set_declaration(SgTemplateClassDeclaration* new_val);
128545 
128546  SgName get_qualified_name() const override;
128547  SgName get_mangled_name (void) const override;
128549 
128550  // DQ (11/19/2011): Added constructor to match SgClassDefinition API.
128552 
128553 
128554 
128555 // End of memberFunctionString
128556 // Start of memberFunctionString
128557 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
128558 
128559 // *** COMMON CODE SECTION BEGINS HERE ***
128560 
128561  public:
128562 
128563  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
128564  // and not required which is required to match the other aspects of the copy mechanism code generation.
128565  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
128566  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
128567  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
128568  // virtual SgNode* copy ( const SgCopyHelp & help) const;
128569 
128571  virtual std::string class_name() const override;
128572 
128574  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
128575 
128577  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
128578  // static const VariantT static_variant = V_SgTemplateClassDefinition;
128579  enum { static_variant = V_SgTemplateClassDefinition };
128580 
128581  /* the generated cast function */
128583  ROSE_DLL_API friend SgTemplateClassDefinition* isSgTemplateClassDefinition( SgNode * s );
128584 
128586  ROSE_DLL_API friend const SgTemplateClassDefinition* isSgTemplateClassDefinition( const SgNode * s );
128587 
128588  // ******************************************
128589  // * Memory Pool / New / Delete
128590  // ******************************************
128591 
128592  public:
128594  static const unsigned pool_size; //
128596  static std::vector<unsigned char *> pools; //
128598  static SgTemplateClassDefinition * next_node; //
128599 
128601  static unsigned long initializeStorageClassArray(SgTemplateClassDefinitionStorageClass *); //
128602 
128604  static void clearMemoryPool(); //
128605  static void deleteMemoryPool(); //
128606 
128608  static void extendMemoryPoolForFileIO(); //
128609 
128611  static SgTemplateClassDefinition * getPointerFromGlobalIndex(unsigned long); //
128613  static SgTemplateClassDefinition * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
128614 
128616  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
128618  static void resetValidFreepointers(); //
128620  static unsigned long getNumberOfLastValidPointer(); //
128621 
128622 
128623 #if defined(INLINE_FUNCTIONS)
128624 
128625  inline void *operator new (size_t size);
128626 #else
128627 
128628  void *operator new (size_t size);
128629 #endif
128630 
128631  void operator delete (void* pointer, size_t size);
128632 
128633  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
128634  void operator delete (void* pointer)
128635  {
128636  // This is the generated delete operator...
128637  SgTemplateClassDefinition::operator delete (pointer,sizeof(SgTemplateClassDefinition));
128638  }
128639 
128641  static size_t numberOfNodes();
128642 
128644  static size_t memoryUsage();
128645 
128646  // End of scope which started in IR nodes specific code
128647  /* */
128648 
128649  /* name Internal Functions
128650  \brief Internal functions ... incomplete-documentation
128651 
128652  These functions have been made public as part of the design, but they are suggested for internal use
128653  or by particularly knowledgeable users for specialized tools or applications.
128654 
128655  \internal We could not make these private because they are required by user for special purposes. And
128656  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
128657 
128658  */
128659 
128660  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
128661  // overridden in every class by *generated* implementation
128663  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
128664  // MS: 06/28/02 container of names of variables or container indices
128665  // used used in the traversal to access AST successor nodes
128666  // overridden in every class by *generated* implementation
128669  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
128670 
128671  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
128672  // than all the vector copies. The implementation for these functions is generated for each class.
128674  virtual size_t get_numberOfTraversalSuccessors() override;
128676  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
128678  virtual size_t get_childIndex(SgNode *child) override;
128679 
128680 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
128681  // MS: 08/16/2002 method for generating RTI information
128683  virtual RTIReturnType roseRTI() override;
128684 #endif
128685  /* */
128686 
128687 
128688 
128689  /* name Deprecated Functions
128690  \brief Deprecated functions ... incomplete-documentation
128691 
128692  These functions have been deprecated from use.
128693  */
128694  /* */
128695 
128697  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
128698 
128699  // JJW (10/16/2008): Changed to a single function in Node.code, and put
128700  // getVariant() in #if 0 block to prevent confusing Doxygen
128701 #if 0
128702 
128703  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
128705  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
128706 #endif
128707  /* */
128708 
128709 
128710 
128711 
128712  public:
128713  /* name Traversal Support Functions
128714  \brief Traversal support functions ... incomplete-documentation
128715 
128716  These functions have been made public as part of the design, but they are suggested for internal use
128717  or by particularly knowledgable users for specialized tools or applications.
128718  */
128719  /* */
128720 
128721  // DQ (11/26/2005): Support for visitor pattern mechanims
128722  // (inferior to ROSE traversal mechanism, experimental).
128726 
128727  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
128729  virtual void accept (ROSE_VisitorPattern & visitor) override;
128730 
128731  // DQ (12/26/2005): Support for traversal based on the memory pool
128734  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
128735 
128738  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
128739 
128740  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
128741  // This traversal helps support internal tools that call static member functions.
128742  // note: this function operates on the memory pools.
128745  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
128746  /* */
128747 
128748 
128749  public:
128750  /* name Memory Allocation Functions
128751  \brief Memory allocations functions ... incomplete-documentation
128752 
128753  These functions have been made public as part of the design, but they are suggested for internal use
128754  or by particularly knowledgable users for specialized tools or applications.
128755  */
128756  /* */
128757 
128768  virtual bool isInMemoryPool() override;
128769 
128780  virtual void checkDataMemberPointersIfInMemoryPool() override;
128781 
128782  // DQ (4/30/2006): Modified to be a const function.
128797  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
128798 
128808  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
128809 
128821  virtual long getChildIndex( SgNode* childNode ) const override;
128822 
128823  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
128824  // comment here (changed to be a C style comment and not be a doxygen comment).
128825  /* \brief Constructor for use by AST File I/O Mechanism
128826 
128827  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
128828  which obtained via fast binary file I/O from disk.
128829  */
128830  // SgTemplateClassDefinition( SgTemplateClassDefinitionStorageClass& source );
128831 
128832 
128833 
128834 
128835 
128836  // JH (10/24/2005): methods added to support the ast file IO
128837  private:
128838 
128839  /* name AST Memory Allocation Support Functions
128840  \brief Memory allocations support....
128841 
128842  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
128843  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
128844  and support the AST File I/O Mechanism.
128845  */
128846  /* */
128847 
128848  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
128849  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
128850  that I use the same type everywhere, if any changes are made. THe second one declares the type
128851  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
128852  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
128853  a correspinding one in the AST_FILE_IO class!
128854  */
128855  // DQ (9/2/2015): This typedef is no longer used, we can't define the
128856  // comment here (changed to be a C style comment and not be a doxygen comment).
128857  /* \brief Typedef used for low level memory access.
128858  */
128859  // typedef unsigned char* TestType;
128860 
128861  // DQ (9/2/2015): This typedef is no longer used, we can't define the
128862  // comment here (changed to be a C style comment and not be a doxygen comment).
128863  /* \brief Typedef used to hold memory addresses as values.
128864  */
128865  // typedef unsigned long AddressType;
128866 
128867 
128868 
128869  // necessary, to have direct access to the p_freepointer and the private methods !
128871  friend class AST_FILE_IO;
128872 
128874  friend class SgTemplateClassDefinitionStorageClass;
128875 
128877  friend class AstSpecificDataManagingClass;
128878 
128880  friend class AstSpecificDataManagingClassStorageClass;
128881 
128882  public:
128884  SgTemplateClassDefinition( const SgTemplateClassDefinitionStorageClass& source );
128885 
128886  // private: // JJW hack
128887  /*
128888  name AST Memory Allocation Support Variables
128889  Memory allocations support variables
128890 
128891  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
128892  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
128893  and support the AST File I/O Mechanism.
128894  */
128895  /* */
128896 
128897  public:
128898 
128899  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
128900  // to current node (so that it will work cleanly with build functions to specify patterns).
128901  // virtual SgNode* addRegExpAttribute();
128908 
128909 // *** COMMON CODE SECTION ENDS HERE ***
128910 
128911 
128912 // End of memberFunctionString
128913 // Start of memberFunctionString
128914 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
128915 
128916  // the generated cast function
128917  // friend ROSE_DLL_API SgTemplateClassDefinition* isSgTemplateClassDefinition ( SgNode* s );
128918 
128920 
128921 
128922 // End of memberFunctionString
128923 // Start of memberFunctionString
128924 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
128925 
128926  void post_construction_initialization() override;
128927 
128928 
128929 // End of memberFunctionString
128930 
128931 
128932  public:
128933  virtual ~SgTemplateClassDefinition();
128934 
128935 
128936  public:
128937  SgTemplateClassDefinition(Sg_File_Info* startOfConstruct );
128939 
128940  protected:
128941 
128942 
128943 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
128944 
128945 
128946  };
128947 #endif
128948 
128949 // postdeclarations for SgTemplateClassDefinition
128950 
128951 /* #line 128952 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
128952 
128953 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
128954 
128955 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
128956 
128957 
128958 /* #line 128959 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
128959 
128960 
128961 
128962 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
128963 
128964 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
128965 // This code is automatically generated for each
128966 // terminal and non-terminal within the defined
128967 // grammar. There is a simple way to change the
128968 // code to fix bugs etc. See the ROSE README file
128969 // for directions.
128970 
128971 // tps: (02/22/2010): Adding DLL export requirements
128972 #include "rosedll.h"
128973 
128974 // predeclarations for SgWhileStmt
128975 
128976 /* #line 128977 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
128977 
128978 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
128979 
128980 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
128981 
128982 #if 1
128983 // Class Definition for SgWhileStmt
128984 class ROSE_DLL_API SgWhileStmt : public SgScopeStatement
128985  {
128986  public:
128987 
128988 
128989 /* #line 128990 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
128990 
128991  virtual SgNode* copy ( SgCopyHelp& help) const override;
128992 // Start of memberFunctionString
128993 /* #line 2314 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
128994 
128995  // void post_construction_initialization();
128996 #if 0
128997  SgStatement* get_next(int&) const;
128998 #endif
128999 
129000  protected:
129001  virtual bool replace_child(SgStatement *,SgStatement *, bool extractListFromBasicBlock = false) override;
129002 
129003  public:
129004 
129005 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
129006  virtual bool cfgIsIndexInteresting(unsigned int) const override;
129007  virtual unsigned int cfgIndexForEnd() const override;
129008  virtual unsigned int cfgFindNextChildIndex(SgNode* n) override;
129009  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
129010  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
129011 #endif
129012 
129013  // DQ (2/22/2007): Added for uniform support of mangled names
129014  virtual SgName get_mangled_name() const override;
129015 
129016 #if ALT_FIXUP_COPY
129017  // DQ (11/7/2007): These need to be called separately (see documentation)
129018  virtual void fixupCopy_scopes (SgNode* copy, SgCopyHelp & help) const override;
129019  virtual void fixupCopy_symbols (SgNode* copy, SgCopyHelp & help) const override;
129020  virtual void fixupCopy_references (SgNode* copy, SgCopyHelp & help) const override;
129021 #else
129022  // DQ (10/20/2007): Added fixup function to set scopes not set properly by the ROSETTA generated copy!
129023  virtual void fixupCopy(SgNode* copy, SgCopyHelp & help) const;
129024 #endif
129025 
129026 
129027 
129028 // End of memberFunctionString
129029 // Start of memberFunctionString
129030 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
129031 
129032 // *** COMMON CODE SECTION BEGINS HERE ***
129033 
129034  public:
129035 
129036  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
129037  // and not required which is required to match the other aspects of the copy mechanism code generation.
129038  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
129039  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
129040  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
129041  // virtual SgNode* copy ( const SgCopyHelp & help) const;
129042 
129044  virtual std::string class_name() const override;
129045 
129047  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
129048 
129050  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
129051  // static const VariantT static_variant = V_SgWhileStmt;
129052  enum { static_variant = V_SgWhileStmt };
129053 
129054  /* the generated cast function */
129056  ROSE_DLL_API friend SgWhileStmt* isSgWhileStmt( SgNode * s );
129057 
129059  ROSE_DLL_API friend const SgWhileStmt* isSgWhileStmt( const SgNode * s );
129060 
129061  // ******************************************
129062  // * Memory Pool / New / Delete
129063  // ******************************************
129064 
129065  public:
129067  static const unsigned pool_size; //
129069  static std::vector<unsigned char *> pools; //
129071  static SgWhileStmt * next_node; //
129072 
129074  static unsigned long initializeStorageClassArray(SgWhileStmtStorageClass *); //
129075 
129077  static void clearMemoryPool(); //
129078  static void deleteMemoryPool(); //
129079 
129081  static void extendMemoryPoolForFileIO(); //
129082 
129084  static SgWhileStmt * getPointerFromGlobalIndex(unsigned long); //
129086  static SgWhileStmt * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
129087 
129089  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
129091  static void resetValidFreepointers(); //
129093  static unsigned long getNumberOfLastValidPointer(); //
129094 
129095 
129096 #if defined(INLINE_FUNCTIONS)
129097 
129098  inline void *operator new (size_t size);
129099 #else
129100 
129101  void *operator new (size_t size);
129102 #endif
129103 
129104  void operator delete (void* pointer, size_t size);
129105 
129106  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
129107  void operator delete (void* pointer)
129108  {
129109  // This is the generated delete operator...
129110  SgWhileStmt::operator delete (pointer,sizeof(SgWhileStmt));
129111  }
129112 
129114  static size_t numberOfNodes();
129115 
129117  static size_t memoryUsage();
129118 
129119  // End of scope which started in IR nodes specific code
129120  /* */
129121 
129122  /* name Internal Functions
129123  \brief Internal functions ... incomplete-documentation
129124 
129125  These functions have been made public as part of the design, but they are suggested for internal use
129126  or by particularly knowledgeable users for specialized tools or applications.
129127 
129128  \internal We could not make these private because they are required by user for special purposes. And
129129  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
129130 
129131  */
129132 
129133  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
129134  // overridden in every class by *generated* implementation
129136  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
129137  // MS: 06/28/02 container of names of variables or container indices
129138  // used used in the traversal to access AST successor nodes
129139  // overridden in every class by *generated* implementation
129142  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
129143 
129144  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
129145  // than all the vector copies. The implementation for these functions is generated for each class.
129147  virtual size_t get_numberOfTraversalSuccessors() override;
129149  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
129151  virtual size_t get_childIndex(SgNode *child) override;
129152 
129153 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
129154  // MS: 08/16/2002 method for generating RTI information
129156  virtual RTIReturnType roseRTI() override;
129157 #endif
129158  /* */
129159 
129160 
129161 
129162  /* name Deprecated Functions
129163  \brief Deprecated functions ... incomplete-documentation
129164 
129165  These functions have been deprecated from use.
129166  */
129167  /* */
129168 
129170  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
129171 
129172  // JJW (10/16/2008): Changed to a single function in Node.code, and put
129173  // getVariant() in #if 0 block to prevent confusing Doxygen
129174 #if 0
129175 
129176  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
129178  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
129179 #endif
129180  /* */
129181 
129182 
129183 
129184 
129185  public:
129186  /* name Traversal Support Functions
129187  \brief Traversal support functions ... incomplete-documentation
129188 
129189  These functions have been made public as part of the design, but they are suggested for internal use
129190  or by particularly knowledgable users for specialized tools or applications.
129191  */
129192  /* */
129193 
129194  // DQ (11/26/2005): Support for visitor pattern mechanims
129195  // (inferior to ROSE traversal mechanism, experimental).
129199 
129200  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
129202  virtual void accept (ROSE_VisitorPattern & visitor) override;
129203 
129204  // DQ (12/26/2005): Support for traversal based on the memory pool
129207  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
129208 
129211  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
129212 
129213  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
129214  // This traversal helps support internal tools that call static member functions.
129215  // note: this function operates on the memory pools.
129218  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
129219  /* */
129220 
129221 
129222  public:
129223  /* name Memory Allocation Functions
129224  \brief Memory allocations functions ... incomplete-documentation
129225 
129226  These functions have been made public as part of the design, but they are suggested for internal use
129227  or by particularly knowledgable users for specialized tools or applications.
129228  */
129229  /* */
129230 
129241  virtual bool isInMemoryPool() override;
129242 
129253  virtual void checkDataMemberPointersIfInMemoryPool() override;
129254 
129255  // DQ (4/30/2006): Modified to be a const function.
129270  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
129271 
129281  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
129282 
129294  virtual long getChildIndex( SgNode* childNode ) const override;
129295 
129296  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
129297  // comment here (changed to be a C style comment and not be a doxygen comment).
129298  /* \brief Constructor for use by AST File I/O Mechanism
129299 
129300  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
129301  which obtained via fast binary file I/O from disk.
129302  */
129303  // SgWhileStmt( SgWhileStmtStorageClass& source );
129304 
129305 
129306 
129307 
129308 
129309  // JH (10/24/2005): methods added to support the ast file IO
129310  private:
129311 
129312  /* name AST Memory Allocation Support Functions
129313  \brief Memory allocations support....
129314 
129315  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
129316  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
129317  and support the AST File I/O Mechanism.
129318  */
129319  /* */
129320 
129321  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
129322  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
129323  that I use the same type everywhere, if any changes are made. THe second one declares the type
129324  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
129325  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
129326  a correspinding one in the AST_FILE_IO class!
129327  */
129328  // DQ (9/2/2015): This typedef is no longer used, we can't define the
129329  // comment here (changed to be a C style comment and not be a doxygen comment).
129330  /* \brief Typedef used for low level memory access.
129331  */
129332  // typedef unsigned char* TestType;
129333 
129334  // DQ (9/2/2015): This typedef is no longer used, we can't define the
129335  // comment here (changed to be a C style comment and not be a doxygen comment).
129336  /* \brief Typedef used to hold memory addresses as values.
129337  */
129338  // typedef unsigned long AddressType;
129339 
129340 
129341 
129342  // necessary, to have direct access to the p_freepointer and the private methods !
129344  friend class AST_FILE_IO;
129345 
129347  friend class SgWhileStmtStorageClass;
129348 
129350  friend class AstSpecificDataManagingClass;
129351 
129353  friend class AstSpecificDataManagingClassStorageClass;
129354 
129355  public:
129357  SgWhileStmt( const SgWhileStmtStorageClass& source );
129358 
129359  // private: // JJW hack
129360  /*
129361  name AST Memory Allocation Support Variables
129362  Memory allocations support variables
129363 
129364  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
129365  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
129366  and support the AST File I/O Mechanism.
129367  */
129368  /* */
129369 
129370  public:
129371 
129372  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
129373  // to current node (so that it will work cleanly with build functions to specify patterns).
129374  // virtual SgNode* addRegExpAttribute();
129380  SgWhileStmt* addRegExpAttribute(std::string s, AstRegExAttribute* a);
129381 
129382 // *** COMMON CODE SECTION ENDS HERE ***
129383 
129384 
129385 // End of memberFunctionString
129386 // Start of memberFunctionString
129387 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
129388 
129389  // the generated cast function
129390  // friend ROSE_DLL_API SgWhileStmt* isSgWhileStmt ( SgNode* s );
129391 
129393 
129394 
129395 // End of memberFunctionString
129396 // Start of memberFunctionString
129397 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
129398 
129399  void post_construction_initialization() override;
129400 
129401 
129402 // End of memberFunctionString
129403 
129404  public:
129405  SgStatement* get_condition() const;
129406  void set_condition(SgStatement* condition);
129407 
129408  public:
129409  SgStatement* get_body() const;
129410  void set_body(SgStatement* body);
129411 
129412  public:
129413  SgStatement* get_else_body() const;
129414  void set_else_body(SgStatement* else_body);
129415 
129416  public:
129417  SgLabelRefExp* get_end_numeric_label() const /* (getDataAccessFunctionPrototypeString) */;
129418  void set_end_numeric_label(SgLabelRefExp* end_numeric_label) override /* (getDataAccessFunctionPrototypeString) */;
129419 
129420  public:
129421  std::string get_string_label() const;
129422  void set_string_label(std::string string_label);
129423 
129424  public:
129425  bool get_has_end_statement() const;
129426  void set_has_end_statement(bool has_end_statement);
129427 
129428 
129429  public:
129430  virtual ~SgWhileStmt();
129431 
129432 
129433  public:
129434  SgWhileStmt(Sg_File_Info* startOfConstruct , SgStatement* condition = NULL, SgStatement* body = NULL);
129435  SgWhileStmt(SgStatement* condition, SgStatement* body);
129436 
129437  protected:
129438 // Start of memberFunctionString
129439 SgStatement* p_condition;
129440 
129441 // End of memberFunctionString
129442 // Start of memberFunctionString
129444 
129445 // End of memberFunctionString
129446 // Start of memberFunctionString
129447 SgStatement* p_else_body;
129448 
129449 // End of memberFunctionString
129450 // Start of memberFunctionString
129451 SgLabelRefExp* p_end_numeric_label;
129452 
129453 // End of memberFunctionString
129454 // Start of memberFunctionString
129455 std::string p_string_label;
129456 
129457 // End of memberFunctionString
129458 // Start of memberFunctionString
129459 bool p_has_end_statement;
129460 
129461 // End of memberFunctionString
129462 
129463 
129464 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
129465 
129466 
129467  };
129468 #endif
129469 
129470 // postdeclarations for SgWhileStmt
129471 
129472 /* #line 129473 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
129473 
129474 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
129475 
129476 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
129477 
129478 
129479 /* #line 129480 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
129480 
129481 
129482 
129483 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
129484 
129485 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
129486 // This code is automatically generated for each
129487 // terminal and non-terminal within the defined
129488 // grammar. There is a simple way to change the
129489 // code to fix bugs etc. See the ROSE README file
129490 // for directions.
129491 
129492 // tps: (02/22/2010): Adding DLL export requirements
129493 #include "rosedll.h"
129494 
129495 // predeclarations for SgDoWhileStmt
129496 
129497 /* #line 129498 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
129498 
129499 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
129500 
129501 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
129502 
129503 #if 1
129504 // Class Definition for SgDoWhileStmt
129505 class ROSE_DLL_API SgDoWhileStmt : public SgScopeStatement
129506  {
129507  public:
129508 
129509 
129510 /* #line 129511 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
129511 
129512  virtual SgNode* copy ( SgCopyHelp& help) const override;
129513 // Start of memberFunctionString
129514 /* #line 2349 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
129515 
129516  protected:
129517  virtual bool replace_child(SgStatement *,SgStatement *, bool extractListFromBasicBlock = false) override;
129518 
129519  public:
129520 
129521 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
129522  virtual unsigned int cfgIndexForEnd() const override;
129523  virtual bool cfgIsIndexInteresting(unsigned int) const override;
129524  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
129525  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
129526 #endif
129527  // DQ (2/22/2007): Added for uniform support of mangled names
129528  virtual SgName get_mangled_name() const override;
129529 
129530 #if ALT_FIXUP_COPY
129531  // DQ (11/7/2007): These need to be called separately (see documentation)
129532  virtual void fixupCopy_scopes (SgNode* copy, SgCopyHelp & help) const override;
129533  virtual void fixupCopy_symbols (SgNode* copy, SgCopyHelp & help) const override;
129534  virtual void fixupCopy_references (SgNode* copy, SgCopyHelp & help) const override;
129535 #else
129536  // DQ (10/20/2007): Added fixup function to set scopes not set properly by the ROSETTA generated copy!
129537  virtual void fixupCopy(SgNode* copy, SgCopyHelp & help) const;
129538 #endif
129539 
129540 
129541 
129542 // End of memberFunctionString
129543 // Start of memberFunctionString
129544 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
129545 
129546 // *** COMMON CODE SECTION BEGINS HERE ***
129547 
129548  public:
129549 
129550  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
129551  // and not required which is required to match the other aspects of the copy mechanism code generation.
129552  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
129553  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
129554  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
129555  // virtual SgNode* copy ( const SgCopyHelp & help) const;
129556 
129558  virtual std::string class_name() const override;
129559 
129561  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
129562 
129564  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
129565  // static const VariantT static_variant = V_SgDoWhileStmt;
129566  enum { static_variant = V_SgDoWhileStmt };
129567 
129568  /* the generated cast function */
129570  ROSE_DLL_API friend SgDoWhileStmt* isSgDoWhileStmt( SgNode * s );
129571 
129573  ROSE_DLL_API friend const SgDoWhileStmt* isSgDoWhileStmt( const SgNode * s );
129574 
129575  // ******************************************
129576  // * Memory Pool / New / Delete
129577  // ******************************************
129578 
129579  public:
129581  static const unsigned pool_size; //
129583  static std::vector<unsigned char *> pools; //
129585  static SgDoWhileStmt * next_node; //
129586 
129588  static unsigned long initializeStorageClassArray(SgDoWhileStmtStorageClass *); //
129589 
129591  static void clearMemoryPool(); //
129592  static void deleteMemoryPool(); //
129593 
129595  static void extendMemoryPoolForFileIO(); //
129596 
129598  static SgDoWhileStmt * getPointerFromGlobalIndex(unsigned long); //
129600  static SgDoWhileStmt * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
129601 
129603  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
129605  static void resetValidFreepointers(); //
129607  static unsigned long getNumberOfLastValidPointer(); //
129608 
129609 
129610 #if defined(INLINE_FUNCTIONS)
129611 
129612  inline void *operator new (size_t size);
129613 #else
129614 
129615  void *operator new (size_t size);
129616 #endif
129617 
129618  void operator delete (void* pointer, size_t size);
129619 
129620  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
129621  void operator delete (void* pointer)
129622  {
129623  // This is the generated delete operator...
129624  SgDoWhileStmt::operator delete (pointer,sizeof(SgDoWhileStmt));
129625  }
129626 
129628  static size_t numberOfNodes();
129629 
129631  static size_t memoryUsage();
129632 
129633  // End of scope which started in IR nodes specific code
129634  /* */
129635 
129636  /* name Internal Functions
129637  \brief Internal functions ... incomplete-documentation
129638 
129639  These functions have been made public as part of the design, but they are suggested for internal use
129640  or by particularly knowledgeable users for specialized tools or applications.
129641 
129642  \internal We could not make these private because they are required by user for special purposes. And
129643  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
129644 
129645  */
129646 
129647  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
129648  // overridden in every class by *generated* implementation
129650  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
129651  // MS: 06/28/02 container of names of variables or container indices
129652  // used used in the traversal to access AST successor nodes
129653  // overridden in every class by *generated* implementation
129656  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
129657 
129658  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
129659  // than all the vector copies. The implementation for these functions is generated for each class.
129661  virtual size_t get_numberOfTraversalSuccessors() override;
129663  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
129665  virtual size_t get_childIndex(SgNode *child) override;
129666 
129667 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
129668  // MS: 08/16/2002 method for generating RTI information
129670  virtual RTIReturnType roseRTI() override;
129671 #endif
129672  /* */
129673 
129674 
129675 
129676  /* name Deprecated Functions
129677  \brief Deprecated functions ... incomplete-documentation
129678 
129679  These functions have been deprecated from use.
129680  */
129681  /* */
129682 
129684  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
129685 
129686  // JJW (10/16/2008): Changed to a single function in Node.code, and put
129687  // getVariant() in #if 0 block to prevent confusing Doxygen
129688 #if 0
129689 
129690  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
129692  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
129693 #endif
129694  /* */
129695 
129696 
129697 
129698 
129699  public:
129700  /* name Traversal Support Functions
129701  \brief Traversal support functions ... incomplete-documentation
129702 
129703  These functions have been made public as part of the design, but they are suggested for internal use
129704  or by particularly knowledgable users for specialized tools or applications.
129705  */
129706  /* */
129707 
129708  // DQ (11/26/2005): Support for visitor pattern mechanims
129709  // (inferior to ROSE traversal mechanism, experimental).
129713 
129714  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
129716  virtual void accept (ROSE_VisitorPattern & visitor) override;
129717 
129718  // DQ (12/26/2005): Support for traversal based on the memory pool
129721  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
129722 
129725  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
129726 
129727  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
129728  // This traversal helps support internal tools that call static member functions.
129729  // note: this function operates on the memory pools.
129732  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
129733  /* */
129734 
129735 
129736  public:
129737  /* name Memory Allocation Functions
129738  \brief Memory allocations functions ... incomplete-documentation
129739 
129740  These functions have been made public as part of the design, but they are suggested for internal use
129741  or by particularly knowledgable users for specialized tools or applications.
129742  */
129743  /* */
129744 
129755  virtual bool isInMemoryPool() override;
129756 
129767  virtual void checkDataMemberPointersIfInMemoryPool() override;
129768 
129769  // DQ (4/30/2006): Modified to be a const function.
129784  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
129785 
129795  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
129796 
129808  virtual long getChildIndex( SgNode* childNode ) const override;
129809 
129810  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
129811  // comment here (changed to be a C style comment and not be a doxygen comment).
129812  /* \brief Constructor for use by AST File I/O Mechanism
129813 
129814  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
129815  which obtained via fast binary file I/O from disk.
129816  */
129817  // SgDoWhileStmt( SgDoWhileStmtStorageClass& source );
129818 
129819 
129820 
129821 
129822 
129823  // JH (10/24/2005): methods added to support the ast file IO
129824  private:
129825 
129826  /* name AST Memory Allocation Support Functions
129827  \brief Memory allocations support....
129828 
129829  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
129830  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
129831  and support the AST File I/O Mechanism.
129832  */
129833  /* */
129834 
129835  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
129836  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
129837  that I use the same type everywhere, if any changes are made. THe second one declares the type
129838  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
129839  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
129840  a correspinding one in the AST_FILE_IO class!
129841  */
129842  // DQ (9/2/2015): This typedef is no longer used, we can't define the
129843  // comment here (changed to be a C style comment and not be a doxygen comment).
129844  /* \brief Typedef used for low level memory access.
129845  */
129846  // typedef unsigned char* TestType;
129847 
129848  // DQ (9/2/2015): This typedef is no longer used, we can't define the
129849  // comment here (changed to be a C style comment and not be a doxygen comment).
129850  /* \brief Typedef used to hold memory addresses as values.
129851  */
129852  // typedef unsigned long AddressType;
129853 
129854 
129855 
129856  // necessary, to have direct access to the p_freepointer and the private methods !
129858  friend class AST_FILE_IO;
129859 
129861  friend class SgDoWhileStmtStorageClass;
129862 
129864  friend class AstSpecificDataManagingClass;
129865 
129867  friend class AstSpecificDataManagingClassStorageClass;
129868 
129869  public:
129871  SgDoWhileStmt( const SgDoWhileStmtStorageClass& source );
129872 
129873  // private: // JJW hack
129874  /*
129875  name AST Memory Allocation Support Variables
129876  Memory allocations support variables
129877 
129878  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
129879  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
129880  and support the AST File I/O Mechanism.
129881  */
129882  /* */
129883 
129884  public:
129885 
129886  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
129887  // to current node (so that it will work cleanly with build functions to specify patterns).
129888  // virtual SgNode* addRegExpAttribute();
129894  SgDoWhileStmt* addRegExpAttribute(std::string s, AstRegExAttribute* a);
129895 
129896 // *** COMMON CODE SECTION ENDS HERE ***
129897 
129898 
129899 // End of memberFunctionString
129900 // Start of memberFunctionString
129901 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
129902 
129903  // the generated cast function
129904  // friend ROSE_DLL_API SgDoWhileStmt* isSgDoWhileStmt ( SgNode* s );
129905 
129907 
129908 
129909 // End of memberFunctionString
129910 // Start of memberFunctionString
129911 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
129912 
129913  void post_construction_initialization() override;
129914 
129915 
129916 // End of memberFunctionString
129917 
129918  public:
129919  SgStatement* get_body() const;
129920  void set_body(SgStatement* body);
129921 
129922  public:
129923  SgStatement* get_condition() const;
129924  void set_condition(SgStatement* condition);
129925 
129926 
129927  public:
129928  virtual ~SgDoWhileStmt();
129929 
129930 
129931  public:
129932  SgDoWhileStmt(Sg_File_Info* startOfConstruct , SgStatement* body = NULL, SgStatement* condition = NULL);
129933  SgDoWhileStmt(SgStatement* body, SgStatement* condition);
129934 
129935  protected:
129936 // Start of memberFunctionString
129938 
129939 // End of memberFunctionString
129940 // Start of memberFunctionString
129942 
129943 // End of memberFunctionString
129944 
129945 
129946 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
129947 
129948 
129949  };
129950 #endif
129951 
129952 // postdeclarations for SgDoWhileStmt
129953 
129954 /* #line 129955 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
129955 
129956 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
129957 
129958 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
129959 
129960 
129961 /* #line 129962 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
129962 
129963 
129964 
129965 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
129966 
129967 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
129968 // This code is automatically generated for each
129969 // terminal and non-terminal within the defined
129970 // grammar. There is a simple way to change the
129971 // code to fix bugs etc. See the ROSE README file
129972 // for directions.
129973 
129974 // tps: (02/22/2010): Adding DLL export requirements
129975 #include "rosedll.h"
129976 
129977 // predeclarations for SgSwitchStatement
129978 
129979 /* #line 129980 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
129980 
129981 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
129982 
129983 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
129984 
129985 #if 1
129986 // Class Definition for SgSwitchStatement
129987 class ROSE_DLL_API SgSwitchStatement : public SgScopeStatement
129988  {
129989  public:
129990 
129991 
129992 /* #line 129993 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
129993 
129994  virtual SgNode* copy ( SgCopyHelp& help) const override;
129995 // Start of memberFunctionString
129996 /* #line 2377 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
129997 
129998 
129999 // HEADER_LIST_DECLARATIONS
130000 
130001  void prepend_case(SgCaseOptionStmt *&);
130002  void append_case(SgCaseOptionStmt *&);
130003  void prepend_default(SgDefaultOptionStmt *&);
130004  void append_default(SgDefaultOptionStmt *&);
130005 
130006  protected:
130007  virtual bool replace_child(SgStatement *,SgStatement *, bool extractListFromBasicBlock = false) override;
130008  void prepend_append_normalization();
130009  public:
130010 
130011 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
130012  virtual unsigned int cfgIndexForEnd() const override;
130013  virtual bool cfgIsIndexInteresting(unsigned int) const override;
130014  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
130015  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
130016 #endif
130017 
130018  // DQ (2/22/2007): Added for uniform support of mangled names
130019  virtual SgName get_mangled_name() const override;
130020 
130021 #if ALT_FIXUP_COPY
130022  // DQ (11/7/2007): These need to be called separately (see documentation)
130023  virtual void fixupCopy_scopes (SgNode* copy, SgCopyHelp & help) const override;
130024  virtual void fixupCopy_symbols (SgNode* copy, SgCopyHelp & help) const override;
130025  virtual void fixupCopy_references (SgNode* copy, SgCopyHelp & help) const override;
130026 #else
130027  // DQ (10/20/2007): Added fixup function to set scopes not set properly by the ROSETTA generated copy!
130028  virtual void fixupCopy(SgNode* copy, SgCopyHelp & help) const;
130029 #endif
130030 
130031 
130032 
130033 // End of memberFunctionString
130034 // Start of memberFunctionString
130035 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
130036 
130037 // *** COMMON CODE SECTION BEGINS HERE ***
130038 
130039  public:
130040 
130041  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
130042  // and not required which is required to match the other aspects of the copy mechanism code generation.
130043  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
130044  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
130045  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
130046  // virtual SgNode* copy ( const SgCopyHelp & help) const;
130047 
130049  virtual std::string class_name() const override;
130050 
130052  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
130053 
130055  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
130056  // static const VariantT static_variant = V_SgSwitchStatement;
130057  enum { static_variant = V_SgSwitchStatement };
130058 
130059  /* the generated cast function */
130061  ROSE_DLL_API friend SgSwitchStatement* isSgSwitchStatement( SgNode * s );
130062 
130064  ROSE_DLL_API friend const SgSwitchStatement* isSgSwitchStatement( const SgNode * s );
130065 
130066  // ******************************************
130067  // * Memory Pool / New / Delete
130068  // ******************************************
130069 
130070  public:
130072  static const unsigned pool_size; //
130074  static std::vector<unsigned char *> pools; //
130076  static SgSwitchStatement * next_node; //
130077 
130079  static unsigned long initializeStorageClassArray(SgSwitchStatementStorageClass *); //
130080 
130082  static void clearMemoryPool(); //
130083  static void deleteMemoryPool(); //
130084 
130086  static void extendMemoryPoolForFileIO(); //
130087 
130089  static SgSwitchStatement * getPointerFromGlobalIndex(unsigned long); //
130091  static SgSwitchStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
130092 
130094  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
130096  static void resetValidFreepointers(); //
130098  static unsigned long getNumberOfLastValidPointer(); //
130099 
130100 
130101 #if defined(INLINE_FUNCTIONS)
130102 
130103  inline void *operator new (size_t size);
130104 #else
130105 
130106  void *operator new (size_t size);
130107 #endif
130108 
130109  void operator delete (void* pointer, size_t size);
130110 
130111  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
130112  void operator delete (void* pointer)
130113  {
130114  // This is the generated delete operator...
130115  SgSwitchStatement::operator delete (pointer,sizeof(SgSwitchStatement));
130116  }
130117 
130119  static size_t numberOfNodes();
130120 
130122  static size_t memoryUsage();
130123 
130124  // End of scope which started in IR nodes specific code
130125  /* */
130126 
130127  /* name Internal Functions
130128  \brief Internal functions ... incomplete-documentation
130129 
130130  These functions have been made public as part of the design, but they are suggested for internal use
130131  or by particularly knowledgeable users for specialized tools or applications.
130132 
130133  \internal We could not make these private because they are required by user for special purposes. And
130134  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
130135 
130136  */
130137 
130138  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
130139  // overridden in every class by *generated* implementation
130141  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
130142  // MS: 06/28/02 container of names of variables or container indices
130143  // used used in the traversal to access AST successor nodes
130144  // overridden in every class by *generated* implementation
130147  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
130148 
130149  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
130150  // than all the vector copies. The implementation for these functions is generated for each class.
130152  virtual size_t get_numberOfTraversalSuccessors() override;
130154  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
130156  virtual size_t get_childIndex(SgNode *child) override;
130157 
130158 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
130159  // MS: 08/16/2002 method for generating RTI information
130161  virtual RTIReturnType roseRTI() override;
130162 #endif
130163  /* */
130164 
130165 
130166 
130167  /* name Deprecated Functions
130168  \brief Deprecated functions ... incomplete-documentation
130169 
130170  These functions have been deprecated from use.
130171  */
130172  /* */
130173 
130175  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
130176 
130177  // JJW (10/16/2008): Changed to a single function in Node.code, and put
130178  // getVariant() in #if 0 block to prevent confusing Doxygen
130179 #if 0
130180 
130181  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
130183  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
130184 #endif
130185  /* */
130186 
130187 
130188 
130189 
130190  public:
130191  /* name Traversal Support Functions
130192  \brief Traversal support functions ... incomplete-documentation
130193 
130194  These functions have been made public as part of the design, but they are suggested for internal use
130195  or by particularly knowledgable users for specialized tools or applications.
130196  */
130197  /* */
130198 
130199  // DQ (11/26/2005): Support for visitor pattern mechanims
130200  // (inferior to ROSE traversal mechanism, experimental).
130204 
130205  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
130207  virtual void accept (ROSE_VisitorPattern & visitor) override;
130208 
130209  // DQ (12/26/2005): Support for traversal based on the memory pool
130212  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
130213 
130216  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
130217 
130218  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
130219  // This traversal helps support internal tools that call static member functions.
130220  // note: this function operates on the memory pools.
130223  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
130224  /* */
130225 
130226 
130227  public:
130228  /* name Memory Allocation Functions
130229  \brief Memory allocations functions ... incomplete-documentation
130230 
130231  These functions have been made public as part of the design, but they are suggested for internal use
130232  or by particularly knowledgable users for specialized tools or applications.
130233  */
130234  /* */
130235 
130246  virtual bool isInMemoryPool() override;
130247 
130258  virtual void checkDataMemberPointersIfInMemoryPool() override;
130259 
130260  // DQ (4/30/2006): Modified to be a const function.
130275  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
130276 
130286  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
130287 
130299  virtual long getChildIndex( SgNode* childNode ) const override;
130300 
130301  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
130302  // comment here (changed to be a C style comment and not be a doxygen comment).
130303  /* \brief Constructor for use by AST File I/O Mechanism
130304 
130305  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
130306  which obtained via fast binary file I/O from disk.
130307  */
130308  // SgSwitchStatement( SgSwitchStatementStorageClass& source );
130309 
130310 
130311 
130312 
130313 
130314  // JH (10/24/2005): methods added to support the ast file IO
130315  private:
130316 
130317  /* name AST Memory Allocation Support Functions
130318  \brief Memory allocations support....
130319 
130320  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
130321  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
130322  and support the AST File I/O Mechanism.
130323  */
130324  /* */
130325 
130326  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
130327  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
130328  that I use the same type everywhere, if any changes are made. THe second one declares the type
130329  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
130330  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
130331  a correspinding one in the AST_FILE_IO class!
130332  */
130333  // DQ (9/2/2015): This typedef is no longer used, we can't define the
130334  // comment here (changed to be a C style comment and not be a doxygen comment).
130335  /* \brief Typedef used for low level memory access.
130336  */
130337  // typedef unsigned char* TestType;
130338 
130339  // DQ (9/2/2015): This typedef is no longer used, we can't define the
130340  // comment here (changed to be a C style comment and not be a doxygen comment).
130341  /* \brief Typedef used to hold memory addresses as values.
130342  */
130343  // typedef unsigned long AddressType;
130344 
130345 
130346 
130347  // necessary, to have direct access to the p_freepointer and the private methods !
130349  friend class AST_FILE_IO;
130350 
130352  friend class SgSwitchStatementStorageClass;
130353 
130355  friend class AstSpecificDataManagingClass;
130356 
130358  friend class AstSpecificDataManagingClassStorageClass;
130359 
130360  public:
130362  SgSwitchStatement( const SgSwitchStatementStorageClass& source );
130363 
130364  // private: // JJW hack
130365  /*
130366  name AST Memory Allocation Support Variables
130367  Memory allocations support variables
130368 
130369  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
130370  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
130371  and support the AST File I/O Mechanism.
130372  */
130373  /* */
130374 
130375  public:
130376 
130377  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
130378  // to current node (so that it will work cleanly with build functions to specify patterns).
130379  // virtual SgNode* addRegExpAttribute();
130386 
130387 // *** COMMON CODE SECTION ENDS HERE ***
130388 
130389 
130390 // End of memberFunctionString
130391 // Start of memberFunctionString
130392 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
130393 
130394  // the generated cast function
130395  // friend ROSE_DLL_API SgSwitchStatement* isSgSwitchStatement ( SgNode* s );
130396 
130398 
130399 
130400 // End of memberFunctionString
130401 // Start of memberFunctionString
130402 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
130403 
130404  void post_construction_initialization() override;
130405 
130406 
130407 // End of memberFunctionString
130408 
130409  public:
130410  SgStatement* get_item_selector() const;
130411  void set_item_selector(SgStatement* item_selector);
130412 
130413  public:
130414  SgStatement* get_body() const;
130415  void set_body(SgStatement* body);
130416 
130417  public:
130418  SgLabelRefExp* get_end_numeric_label() const /* (getDataAccessFunctionPrototypeString) */;
130419  void set_end_numeric_label(SgLabelRefExp* end_numeric_label) override /* (getDataAccessFunctionPrototypeString) */;
130420 
130421  public:
130422  std::string get_string_label() const;
130423  void set_string_label(std::string string_label);
130424 
130425 
130426  public:
130427  virtual ~SgSwitchStatement();
130428 
130429 
130430  public:
130431  SgSwitchStatement(Sg_File_Info* startOfConstruct , SgStatement* item_selector = NULL, SgStatement* body = NULL);
130432  SgSwitchStatement(SgStatement* item_selector, SgStatement* body);
130433 
130434  protected:
130435 // Start of memberFunctionString
130436 SgStatement* p_item_selector;
130437 
130438 // End of memberFunctionString
130439 // Start of memberFunctionString
130441 
130442 // End of memberFunctionString
130443 // Start of memberFunctionString
130444 SgLabelRefExp* p_end_numeric_label;
130445 
130446 // End of memberFunctionString
130447 // Start of memberFunctionString
130448 std::string p_string_label;
130449 
130450 // End of memberFunctionString
130451 
130452 
130453 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
130454 
130455 
130456  };
130457 #endif
130458 
130459 // postdeclarations for SgSwitchStatement
130460 
130461 /* #line 130462 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
130462 
130463 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
130464 
130465 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
130466 
130467 
130468 /* #line 130469 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
130469 
130470 
130471 
130472 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
130473 
130474 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
130475 // This code is automatically generated for each
130476 // terminal and non-terminal within the defined
130477 // grammar. There is a simple way to change the
130478 // code to fix bugs etc. See the ROSE README file
130479 // for directions.
130480 
130481 // tps: (02/22/2010): Adding DLL export requirements
130482 #include "rosedll.h"
130483 
130484 // predeclarations for SgCatchOptionStmt
130485 
130486 /* #line 130487 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
130487 
130488 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
130489 
130490 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
130491 
130492 #if 1
130493 // Class Definition for SgCatchOptionStmt
130494 class ROSE_DLL_API SgCatchOptionStmt : public SgScopeStatement
130495  {
130496  public:
130497 
130498 
130499 /* #line 130500 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
130500 
130501  virtual SgNode* copy ( SgCopyHelp& help) const override;
130502 // Start of memberFunctionString
130503 /* #line 2473 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
130504 
130505  // void post_construction_initialization();
130506 #if 0
130507  SgStatement* get_next(int&) const;
130508 #endif
130509 
130510  // DQ (2/22/2007): Added mangled name support for scopes so that the
130511  // mangled names for declarations could have better support!
130512  virtual SgName get_mangled_name() const override;
130513 
130514  protected:
130515  virtual bool replace_child(SgStatement *,SgStatement *, bool extractListFromBasicBlock = false) override;
130516 
130517  public:
130518 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
130519  virtual unsigned int cfgIndexForEnd() const override;
130520  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
130521  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
130522 #endif
130523 
130524 #if ALT_FIXUP_COPY
130525  // DQ (11/7/2007): These need to be called separately (see documentation)
130526  virtual void fixupCopy_scopes (SgNode* copy, SgCopyHelp & help) const override;
130527  virtual void fixupCopy_symbols (SgNode* copy, SgCopyHelp & help) const override;
130528  virtual void fixupCopy_references (SgNode* copy, SgCopyHelp & help) const override;
130529 #else
130530  // DQ (10/20/2007): Added fixup function to set scopes not set properly by the ROSETTA generated copy!
130531  virtual void fixupCopy(SgNode* copy, SgCopyHelp & help) const;
130532 #endif
130533 
130534 
130535 
130536 // End of memberFunctionString
130537 // Start of memberFunctionString
130538 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
130539 
130540 // *** COMMON CODE SECTION BEGINS HERE ***
130541 
130542  public:
130543 
130544  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
130545  // and not required which is required to match the other aspects of the copy mechanism code generation.
130546  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
130547  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
130548  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
130549  // virtual SgNode* copy ( const SgCopyHelp & help) const;
130550 
130552  virtual std::string class_name() const override;
130553 
130555  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
130556 
130558  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
130559  // static const VariantT static_variant = V_SgCatchOptionStmt;
130560  enum { static_variant = V_SgCatchOptionStmt };
130561 
130562  /* the generated cast function */
130564  ROSE_DLL_API friend SgCatchOptionStmt* isSgCatchOptionStmt( SgNode * s );
130565 
130567  ROSE_DLL_API friend const SgCatchOptionStmt* isSgCatchOptionStmt( const SgNode * s );
130568 
130569  // ******************************************
130570  // * Memory Pool / New / Delete
130571  // ******************************************
130572 
130573  public:
130575  static const unsigned pool_size; //
130577  static std::vector<unsigned char *> pools; //
130579  static SgCatchOptionStmt * next_node; //
130580 
130582  static unsigned long initializeStorageClassArray(SgCatchOptionStmtStorageClass *); //
130583 
130585  static void clearMemoryPool(); //
130586  static void deleteMemoryPool(); //
130587 
130589  static void extendMemoryPoolForFileIO(); //
130590 
130592  static SgCatchOptionStmt * getPointerFromGlobalIndex(unsigned long); //
130594  static SgCatchOptionStmt * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
130595 
130597  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
130599  static void resetValidFreepointers(); //
130601  static unsigned long getNumberOfLastValidPointer(); //
130602 
130603 
130604 #if defined(INLINE_FUNCTIONS)
130605 
130606  inline void *operator new (size_t size);
130607 #else
130608 
130609  void *operator new (size_t size);
130610 #endif
130611 
130612  void operator delete (void* pointer, size_t size);
130613 
130614  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
130615  void operator delete (void* pointer)
130616  {
130617  // This is the generated delete operator...
130618  SgCatchOptionStmt::operator delete (pointer,sizeof(SgCatchOptionStmt));
130619  }
130620 
130622  static size_t numberOfNodes();
130623 
130625  static size_t memoryUsage();
130626 
130627  // End of scope which started in IR nodes specific code
130628  /* */
130629 
130630  /* name Internal Functions
130631  \brief Internal functions ... incomplete-documentation
130632 
130633  These functions have been made public as part of the design, but they are suggested for internal use
130634  or by particularly knowledgeable users for specialized tools or applications.
130635 
130636  \internal We could not make these private because they are required by user for special purposes. And
130637  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
130638 
130639  */
130640 
130641  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
130642  // overridden in every class by *generated* implementation
130644  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
130645  // MS: 06/28/02 container of names of variables or container indices
130646  // used used in the traversal to access AST successor nodes
130647  // overridden in every class by *generated* implementation
130650  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
130651 
130652  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
130653  // than all the vector copies. The implementation for these functions is generated for each class.
130655  virtual size_t get_numberOfTraversalSuccessors() override;
130657  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
130659  virtual size_t get_childIndex(SgNode *child) override;
130660 
130661 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
130662  // MS: 08/16/2002 method for generating RTI information
130664  virtual RTIReturnType roseRTI() override;
130665 #endif
130666  /* */
130667 
130668 
130669 
130670  /* name Deprecated Functions
130671  \brief Deprecated functions ... incomplete-documentation
130672 
130673  These functions have been deprecated from use.
130674  */
130675  /* */
130676 
130678  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
130679 
130680  // JJW (10/16/2008): Changed to a single function in Node.code, and put
130681  // getVariant() in #if 0 block to prevent confusing Doxygen
130682 #if 0
130683 
130684  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
130686  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
130687 #endif
130688  /* */
130689 
130690 
130691 
130692 
130693  public:
130694  /* name Traversal Support Functions
130695  \brief Traversal support functions ... incomplete-documentation
130696 
130697  These functions have been made public as part of the design, but they are suggested for internal use
130698  or by particularly knowledgable users for specialized tools or applications.
130699  */
130700  /* */
130701 
130702  // DQ (11/26/2005): Support for visitor pattern mechanims
130703  // (inferior to ROSE traversal mechanism, experimental).
130707 
130708  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
130710  virtual void accept (ROSE_VisitorPattern & visitor) override;
130711 
130712  // DQ (12/26/2005): Support for traversal based on the memory pool
130715  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
130716 
130719  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
130720 
130721  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
130722  // This traversal helps support internal tools that call static member functions.
130723  // note: this function operates on the memory pools.
130726  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
130727  /* */
130728 
130729 
130730  public:
130731  /* name Memory Allocation Functions
130732  \brief Memory allocations functions ... incomplete-documentation
130733 
130734  These functions have been made public as part of the design, but they are suggested for internal use
130735  or by particularly knowledgable users for specialized tools or applications.
130736  */
130737  /* */
130738 
130749  virtual bool isInMemoryPool() override;
130750 
130761  virtual void checkDataMemberPointersIfInMemoryPool() override;
130762 
130763  // DQ (4/30/2006): Modified to be a const function.
130778  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
130779 
130789  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
130790 
130802  virtual long getChildIndex( SgNode* childNode ) const override;
130803 
130804  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
130805  // comment here (changed to be a C style comment and not be a doxygen comment).
130806  /* \brief Constructor for use by AST File I/O Mechanism
130807 
130808  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
130809  which obtained via fast binary file I/O from disk.
130810  */
130811  // SgCatchOptionStmt( SgCatchOptionStmtStorageClass& source );
130812 
130813 
130814 
130815 
130816 
130817  // JH (10/24/2005): methods added to support the ast file IO
130818  private:
130819 
130820  /* name AST Memory Allocation Support Functions
130821  \brief Memory allocations support....
130822 
130823  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
130824  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
130825  and support the AST File I/O Mechanism.
130826  */
130827  /* */
130828 
130829  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
130830  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
130831  that I use the same type everywhere, if any changes are made. THe second one declares the type
130832  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
130833  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
130834  a correspinding one in the AST_FILE_IO class!
130835  */
130836  // DQ (9/2/2015): This typedef is no longer used, we can't define the
130837  // comment here (changed to be a C style comment and not be a doxygen comment).
130838  /* \brief Typedef used for low level memory access.
130839  */
130840  // typedef unsigned char* TestType;
130841 
130842  // DQ (9/2/2015): This typedef is no longer used, we can't define the
130843  // comment here (changed to be a C style comment and not be a doxygen comment).
130844  /* \brief Typedef used to hold memory addresses as values.
130845  */
130846  // typedef unsigned long AddressType;
130847 
130848 
130849 
130850  // necessary, to have direct access to the p_freepointer and the private methods !
130852  friend class AST_FILE_IO;
130853 
130855  friend class SgCatchOptionStmtStorageClass;
130856 
130858  friend class AstSpecificDataManagingClass;
130859 
130861  friend class AstSpecificDataManagingClassStorageClass;
130862 
130863  public:
130865  SgCatchOptionStmt( const SgCatchOptionStmtStorageClass& source );
130866 
130867  // private: // JJW hack
130868  /*
130869  name AST Memory Allocation Support Variables
130870  Memory allocations support variables
130871 
130872  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
130873  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
130874  and support the AST File I/O Mechanism.
130875  */
130876  /* */
130877 
130878  public:
130879 
130880  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
130881  // to current node (so that it will work cleanly with build functions to specify patterns).
130882  // virtual SgNode* addRegExpAttribute();
130889 
130890 // *** COMMON CODE SECTION ENDS HERE ***
130891 
130892 
130893 // End of memberFunctionString
130894 // Start of memberFunctionString
130895 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
130896 
130897  // the generated cast function
130898  // friend ROSE_DLL_API SgCatchOptionStmt* isSgCatchOptionStmt ( SgNode* s );
130899 
130901 
130902 
130903 // End of memberFunctionString
130904 // Start of memberFunctionString
130905 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
130906 
130907  void post_construction_initialization() override;
130908 
130909 
130910 // End of memberFunctionString
130911 
130912  public:
130913  SgVariableDeclaration* get_condition() const;
130914  void set_condition(SgVariableDeclaration* condition);
130915 
130916  public:
130917  SgStatement* get_body() const;
130918  void set_body(SgStatement* body);
130919 
130920  public:
130921  SgTryStmt* get_trystmt() const;
130922  void set_trystmt(SgTryStmt* trystmt);
130923 
130924 
130925  public:
130926  virtual ~SgCatchOptionStmt();
130927 
130928 
130929  public:
130930  SgCatchOptionStmt(Sg_File_Info* startOfConstruct , SgVariableDeclaration* condition = NULL, SgStatement* body = NULL, SgTryStmt* trystmt = NULL);
130931  SgCatchOptionStmt(SgVariableDeclaration* condition, SgStatement* body, SgTryStmt* trystmt);
130932 
130933  protected:
130934 // Start of memberFunctionString
130936 
130937 // End of memberFunctionString
130938 // Start of memberFunctionString
130940 
130941 // End of memberFunctionString
130942 // Start of memberFunctionString
130944 
130945 // End of memberFunctionString
130946 
130947 
130948 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
130949 
130950 
130951  };
130952 #endif
130953 
130954 // postdeclarations for SgCatchOptionStmt
130955 
130956 /* #line 130957 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
130957 
130958 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
130959 
130960 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
130961 
130962 
130963 /* #line 130964 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
130964 
130965 
130966 
130967 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
130968 
130969 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
130970 // This code is automatically generated for each
130971 // terminal and non-terminal within the defined
130972 // grammar. There is a simple way to change the
130973 // code to fix bugs etc. See the ROSE README file
130974 // for directions.
130975 
130976 // tps: (02/22/2010): Adding DLL export requirements
130977 #include "rosedll.h"
130978 
130979 // predeclarations for SgNamespaceDefinitionStatement
130980 
130981 /* #line 130982 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
130982 
130983 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
130984 
130985 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
130986 
130987 #if 1
130988 // Class Definition for SgNamespaceDefinitionStatement
130990  {
130991  public:
130992 
130993 
130994 /* #line 130995 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
130995 
130996  virtual SgNode* copy ( SgCopyHelp& help) const override;
130997 // Start of memberFunctionString
130998 /* #line 3096 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
130999 
131000 
131001  // DQ (9/8/2004): Added to support qualified name generation
131002  virtual SgName get_qualified_name() const override;
131003 
131004  // RV (1/31/2006): Added mangler for namespace definitions.
131005  virtual SgName get_mangled_name (void) const override;
131006 
131008  bool isSameNamespace(const SgNamespaceDefinitionStatement* n ) const;
131009 
131010 #if ALT_FIXUP_COPY
131011  // DQ (11/7/2007): These need to be called separately (see documentation)
131012  virtual void fixupCopy_scopes (SgNode* copy, SgCopyHelp & help) const override;
131013  virtual void fixupCopy_symbols (SgNode* copy, SgCopyHelp & help) const override;
131014  virtual void fixupCopy_references (SgNode* copy, SgCopyHelp & help) const override;
131015 #else
131016  // DQ (10/19/2007): Added fixup function to set scopes not set properly by the ROSETTA generated copy!
131017  virtual void fixupCopy(SgNode* copy, SgCopyHelp & help) const;
131018 #endif
131019  // DQ (5/9/2013): Added functions to generate index into total number of reentrant namespaces.
131020  size_t namespaceIndex() const;
131021  size_t numberOfNamespaceDefinitions() const;
131022 
131023 #if 0
131024  // DQ (5/16/2013): This is now a seperate data member access function (to a specially constructed
131025  // SgNamespaceDefinitionStatement used to hold the SgAliasSymbols that are the union of those across
131026  // all of the many re-entrant namespace definitions.
131027  // DQ (5/9/2013): Added function to return a single associated scope for all declaration in the multiple namespace definitions.
131028  SgNamespaceDefinitionStatement* get_global_definition() const;
131029 #endif
131030 
131031  protected:
131032  virtual bool replace_child ( SgStatement *,SgStatement *, bool extractListFromBasicBlock = false ) override;
131033  virtual bool insert_child ( SgStatement*, SgStatement*, bool inFront = true, bool extractListFromBasicBlock = false ) override;
131034 
131035 /* #line 939 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
131036 
131037  public:
131038  virtual void append_declaration ( SgDeclarationStatement* element );
131039  virtual void prepend_declaration ( SgDeclarationStatement* element );
131040 
131041  public:
131042  // New functions added
131043  // void append_declaration ( const SgDeclarationStatementPtrList::iterator & list, SgDeclarationStatement* element );
131044  // void prepend_declaration ( const SgDeclarationStatementPtrList::iterator & list, SgDeclarationStatement* element );
131045 
131046  // void insert_declaration ( const SgDeclarationStatementPtrList::iterator & list, SgDeclarationStatement* element );
131047 
131048 
131049  public:
131050 
131051 
131052 
131053 
131054 
131055 
131056 // End of memberFunctionString
131057 // Start of memberFunctionString
131058 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
131059 
131060 // *** COMMON CODE SECTION BEGINS HERE ***
131061 
131062  public:
131063 
131064  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
131065  // and not required which is required to match the other aspects of the copy mechanism code generation.
131066  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
131067  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
131068  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
131069  // virtual SgNode* copy ( const SgCopyHelp & help) const;
131070 
131072  virtual std::string class_name() const override;
131073 
131075  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
131076 
131078  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
131079  // static const VariantT static_variant = V_SgNamespaceDefinitionStatement;
131080  enum { static_variant = V_SgNamespaceDefinitionStatement };
131081 
131082  /* the generated cast function */
131084  ROSE_DLL_API friend SgNamespaceDefinitionStatement* isSgNamespaceDefinitionStatement( SgNode * s );
131085 
131087  ROSE_DLL_API friend const SgNamespaceDefinitionStatement* isSgNamespaceDefinitionStatement( const SgNode * s );
131088 
131089  // ******************************************
131090  // * Memory Pool / New / Delete
131091  // ******************************************
131092 
131093  public:
131095  static const unsigned pool_size; //
131097  static std::vector<unsigned char *> pools; //
131099  static SgNamespaceDefinitionStatement * next_node; //
131100 
131102  static unsigned long initializeStorageClassArray(SgNamespaceDefinitionStatementStorageClass *); //
131103 
131105  static void clearMemoryPool(); //
131106  static void deleteMemoryPool(); //
131107 
131109  static void extendMemoryPoolForFileIO(); //
131110 
131112  static SgNamespaceDefinitionStatement * getPointerFromGlobalIndex(unsigned long); //
131114  static SgNamespaceDefinitionStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
131115 
131117  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
131119  static void resetValidFreepointers(); //
131121  static unsigned long getNumberOfLastValidPointer(); //
131122 
131123 
131124 #if defined(INLINE_FUNCTIONS)
131125 
131126  inline void *operator new (size_t size);
131127 #else
131128 
131129  void *operator new (size_t size);
131130 #endif
131131 
131132  void operator delete (void* pointer, size_t size);
131133 
131134  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
131135  void operator delete (void* pointer)
131136  {
131137  // This is the generated delete operator...
131138  SgNamespaceDefinitionStatement::operator delete (pointer,sizeof(SgNamespaceDefinitionStatement));
131139  }
131140 
131142  static size_t numberOfNodes();
131143 
131145  static size_t memoryUsage();
131146 
131147  // End of scope which started in IR nodes specific code
131148  /* */
131149 
131150  /* name Internal Functions
131151  \brief Internal functions ... incomplete-documentation
131152 
131153  These functions have been made public as part of the design, but they are suggested for internal use
131154  or by particularly knowledgeable users for specialized tools or applications.
131155 
131156  \internal We could not make these private because they are required by user for special purposes. And
131157  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
131158 
131159  */
131160 
131161  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
131162  // overridden in every class by *generated* implementation
131164  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
131165  // MS: 06/28/02 container of names of variables or container indices
131166  // used used in the traversal to access AST successor nodes
131167  // overridden in every class by *generated* implementation
131170  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
131171 
131172  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
131173  // than all the vector copies. The implementation for these functions is generated for each class.
131175  virtual size_t get_numberOfTraversalSuccessors() override;
131177  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
131179  virtual size_t get_childIndex(SgNode *child) override;
131180 
131181 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
131182  // MS: 08/16/2002 method for generating RTI information
131184  virtual RTIReturnType roseRTI() override;
131185 #endif
131186  /* */
131187 
131188 
131189 
131190  /* name Deprecated Functions
131191  \brief Deprecated functions ... incomplete-documentation
131192 
131193  These functions have been deprecated from use.
131194  */
131195  /* */
131196 
131198  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
131199 
131200  // JJW (10/16/2008): Changed to a single function in Node.code, and put
131201  // getVariant() in #if 0 block to prevent confusing Doxygen
131202 #if 0
131203 
131204  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
131206  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
131207 #endif
131208  /* */
131209 
131210 
131211 
131212 
131213  public:
131214  /* name Traversal Support Functions
131215  \brief Traversal support functions ... incomplete-documentation
131216 
131217  These functions have been made public as part of the design, but they are suggested for internal use
131218  or by particularly knowledgable users for specialized tools or applications.
131219  */
131220  /* */
131221 
131222  // DQ (11/26/2005): Support for visitor pattern mechanims
131223  // (inferior to ROSE traversal mechanism, experimental).
131227 
131228  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
131230  virtual void accept (ROSE_VisitorPattern & visitor) override;
131231 
131232  // DQ (12/26/2005): Support for traversal based on the memory pool
131235  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
131236 
131239  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
131240 
131241  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
131242  // This traversal helps support internal tools that call static member functions.
131243  // note: this function operates on the memory pools.
131246  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
131247  /* */
131248 
131249 
131250  public:
131251  /* name Memory Allocation Functions
131252  \brief Memory allocations functions ... incomplete-documentation
131253 
131254  These functions have been made public as part of the design, but they are suggested for internal use
131255  or by particularly knowledgable users for specialized tools or applications.
131256  */
131257  /* */
131258 
131269  virtual bool isInMemoryPool() override;
131270 
131281  virtual void checkDataMemberPointersIfInMemoryPool() override;
131282 
131283  // DQ (4/30/2006): Modified to be a const function.
131298  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
131299 
131309  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
131310 
131322  virtual long getChildIndex( SgNode* childNode ) const override;
131323 
131324  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
131325  // comment here (changed to be a C style comment and not be a doxygen comment).
131326  /* \brief Constructor for use by AST File I/O Mechanism
131327 
131328  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
131329  which obtained via fast binary file I/O from disk.
131330  */
131331  // SgNamespaceDefinitionStatement( SgNamespaceDefinitionStatementStorageClass& source );
131332 
131333 
131334 
131335 
131336 
131337  // JH (10/24/2005): methods added to support the ast file IO
131338  private:
131339 
131340  /* name AST Memory Allocation Support Functions
131341  \brief Memory allocations support....
131342 
131343  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
131344  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
131345  and support the AST File I/O Mechanism.
131346  */
131347  /* */
131348 
131349  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
131350  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
131351  that I use the same type everywhere, if any changes are made. THe second one declares the type
131352  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
131353  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
131354  a correspinding one in the AST_FILE_IO class!
131355  */
131356  // DQ (9/2/2015): This typedef is no longer used, we can't define the
131357  // comment here (changed to be a C style comment and not be a doxygen comment).
131358  /* \brief Typedef used for low level memory access.
131359  */
131360  // typedef unsigned char* TestType;
131361 
131362  // DQ (9/2/2015): This typedef is no longer used, we can't define the
131363  // comment here (changed to be a C style comment and not be a doxygen comment).
131364  /* \brief Typedef used to hold memory addresses as values.
131365  */
131366  // typedef unsigned long AddressType;
131367 
131368 
131369 
131370  // necessary, to have direct access to the p_freepointer and the private methods !
131372  friend class AST_FILE_IO;
131373 
131375  friend class SgNamespaceDefinitionStatementStorageClass;
131376 
131378  friend class AstSpecificDataManagingClass;
131379 
131381  friend class AstSpecificDataManagingClassStorageClass;
131382 
131383  public:
131385  SgNamespaceDefinitionStatement( const SgNamespaceDefinitionStatementStorageClass& source );
131386 
131387  // private: // JJW hack
131388  /*
131389  name AST Memory Allocation Support Variables
131390  Memory allocations support variables
131391 
131392  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
131393  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
131394  and support the AST File I/O Mechanism.
131395  */
131396  /* */
131397 
131398  public:
131399 
131400  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
131401  // to current node (so that it will work cleanly with build functions to specify patterns).
131402  // virtual SgNode* addRegExpAttribute();
131409 
131410 // *** COMMON CODE SECTION ENDS HERE ***
131411 
131412 
131413 // End of memberFunctionString
131414 // Start of memberFunctionString
131415 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
131416 
131417  // the generated cast function
131418  // friend ROSE_DLL_API SgNamespaceDefinitionStatement* isSgNamespaceDefinitionStatement ( SgNode* s );
131419 
131421 
131422 
131423 // End of memberFunctionString
131424 // Start of memberFunctionString
131425 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
131426 
131427  void post_construction_initialization() override;
131428 
131429 
131430 // End of memberFunctionString
131431 
131432  public:
131433  const SgDeclarationStatementPtrList& get_declarations() const;
131434  SgDeclarationStatementPtrList& get_declarations();
131435 
131436  public:
131437  SgNamespaceDeclarationStatement* get_namespaceDeclaration() const;
131438  void set_namespaceDeclaration(SgNamespaceDeclarationStatement* namespaceDeclaration);
131439 
131440  public:
131441  SgNamespaceDefinitionStatement* get_previousNamespaceDefinition() const;
131442  void set_previousNamespaceDefinition(SgNamespaceDefinitionStatement* previousNamespaceDefinition);
131443 
131444  public:
131445  SgNamespaceDefinitionStatement* get_nextNamespaceDefinition() const;
131446  void set_nextNamespaceDefinition(SgNamespaceDefinitionStatement* nextNamespaceDefinition);
131447 
131448  public:
131449  SgNamespaceDefinitionStatement* get_global_definition() const;
131450  void set_global_definition(SgNamespaceDefinitionStatement* global_definition);
131451 
131452  public:
131453  bool get_isUnionOfReentrantNamespaceDefinitions() const;
131454  void set_isUnionOfReentrantNamespaceDefinitions(bool isUnionOfReentrantNamespaceDefinitions);
131455 
131456 
131457  public:
131458  virtual ~SgNamespaceDefinitionStatement();
131459 
131460 
131461  public:
131462  SgNamespaceDefinitionStatement(Sg_File_Info* startOfConstruct , SgNamespaceDeclarationStatement* namespaceDeclaration = NULL);
131464 
131465  protected:
131466 // Start of memberFunctionString
131467 SgDeclarationStatementPtrList p_declarations;
131468 
131469 // End of memberFunctionString
131470 // Start of memberFunctionString
131472 
131473 // End of memberFunctionString
131474 // Start of memberFunctionString
131475 SgNamespaceDefinitionStatement* p_previousNamespaceDefinition;
131476 
131477 // End of memberFunctionString
131478 // Start of memberFunctionString
131479 SgNamespaceDefinitionStatement* p_nextNamespaceDefinition;
131480 
131481 // End of memberFunctionString
131482 // Start of memberFunctionString
131483 SgNamespaceDefinitionStatement* p_global_definition;
131484 
131485 // End of memberFunctionString
131486 // Start of memberFunctionString
131487 bool p_isUnionOfReentrantNamespaceDefinitions;
131488 
131489 // End of memberFunctionString
131490 
131491 
131492 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
131493 
131494 
131495  };
131496 #endif
131497 
131498 // postdeclarations for SgNamespaceDefinitionStatement
131499 
131500 /* #line 131501 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
131501 
131502 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
131503 
131504 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
131505 
131506 
131507 /* #line 131508 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
131508 
131509 
131510 
131511 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
131512 
131513 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
131514 // This code is automatically generated for each
131515 // terminal and non-terminal within the defined
131516 // grammar. There is a simple way to change the
131517 // code to fix bugs etc. See the ROSE README file
131518 // for directions.
131519 
131520 // tps: (02/22/2010): Adding DLL export requirements
131521 #include "rosedll.h"
131522 
131523 // predeclarations for SgBlockDataStatement
131524 
131525 /* #line 131526 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
131526 
131527 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
131528 
131529 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
131530 
131531 #if 1
131532 // Class Definition for SgBlockDataStatement
131533 class ROSE_DLL_API SgBlockDataStatement : public SgScopeStatement
131534  {
131535  public:
131536 
131537 
131538 /* #line 131539 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
131539 
131540  virtual SgNode* copy ( SgCopyHelp& help) const override;
131541 // Start of memberFunctionString
131542 /* #line 3618 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
131543 
131544 
131545 
131546 // End of memberFunctionString
131547 // Start of memberFunctionString
131548 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
131549 
131550 // *** COMMON CODE SECTION BEGINS HERE ***
131551 
131552  public:
131553 
131554  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
131555  // and not required which is required to match the other aspects of the copy mechanism code generation.
131556  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
131557  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
131558  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
131559  // virtual SgNode* copy ( const SgCopyHelp & help) const;
131560 
131562  virtual std::string class_name() const override;
131563 
131565  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
131566 
131568  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
131569  // static const VariantT static_variant = V_SgBlockDataStatement;
131570  enum { static_variant = V_SgBlockDataStatement };
131571 
131572  /* the generated cast function */
131574  ROSE_DLL_API friend SgBlockDataStatement* isSgBlockDataStatement( SgNode * s );
131575 
131577  ROSE_DLL_API friend const SgBlockDataStatement* isSgBlockDataStatement( const SgNode * s );
131578 
131579  // ******************************************
131580  // * Memory Pool / New / Delete
131581  // ******************************************
131582 
131583  public:
131585  static const unsigned pool_size; //
131587  static std::vector<unsigned char *> pools; //
131589  static SgBlockDataStatement * next_node; //
131590 
131592  static unsigned long initializeStorageClassArray(SgBlockDataStatementStorageClass *); //
131593 
131595  static void clearMemoryPool(); //
131596  static void deleteMemoryPool(); //
131597 
131599  static void extendMemoryPoolForFileIO(); //
131600 
131602  static SgBlockDataStatement * getPointerFromGlobalIndex(unsigned long); //
131604  static SgBlockDataStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
131605 
131607  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
131609  static void resetValidFreepointers(); //
131611  static unsigned long getNumberOfLastValidPointer(); //
131612 
131613 
131614 #if defined(INLINE_FUNCTIONS)
131615 
131616  inline void *operator new (size_t size);
131617 #else
131618 
131619  void *operator new (size_t size);
131620 #endif
131621 
131622  void operator delete (void* pointer, size_t size);
131623 
131624  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
131625  void operator delete (void* pointer)
131626  {
131627  // This is the generated delete operator...
131628  SgBlockDataStatement::operator delete (pointer,sizeof(SgBlockDataStatement));
131629  }
131630 
131632  static size_t numberOfNodes();
131633 
131635  static size_t memoryUsage();
131636 
131637  // End of scope which started in IR nodes specific code
131638  /* */
131639 
131640  /* name Internal Functions
131641  \brief Internal functions ... incomplete-documentation
131642 
131643  These functions have been made public as part of the design, but they are suggested for internal use
131644  or by particularly knowledgeable users for specialized tools or applications.
131645 
131646  \internal We could not make these private because they are required by user for special purposes. And
131647  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
131648 
131649  */
131650 
131651  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
131652  // overridden in every class by *generated* implementation
131654  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
131655  // MS: 06/28/02 container of names of variables or container indices
131656  // used used in the traversal to access AST successor nodes
131657  // overridden in every class by *generated* implementation
131660  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
131661 
131662  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
131663  // than all the vector copies. The implementation for these functions is generated for each class.
131665  virtual size_t get_numberOfTraversalSuccessors() override;
131667  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
131669  virtual size_t get_childIndex(SgNode *child) override;
131670 
131671 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
131672  // MS: 08/16/2002 method for generating RTI information
131674  virtual RTIReturnType roseRTI() override;
131675 #endif
131676  /* */
131677 
131678 
131679 
131680  /* name Deprecated Functions
131681  \brief Deprecated functions ... incomplete-documentation
131682 
131683  These functions have been deprecated from use.
131684  */
131685  /* */
131686 
131688  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
131689 
131690  // JJW (10/16/2008): Changed to a single function in Node.code, and put
131691  // getVariant() in #if 0 block to prevent confusing Doxygen
131692 #if 0
131693 
131694  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
131696  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
131697 #endif
131698  /* */
131699 
131700 
131701 
131702 
131703  public:
131704  /* name Traversal Support Functions
131705  \brief Traversal support functions ... incomplete-documentation
131706 
131707  These functions have been made public as part of the design, but they are suggested for internal use
131708  or by particularly knowledgable users for specialized tools or applications.
131709  */
131710  /* */
131711 
131712  // DQ (11/26/2005): Support for visitor pattern mechanims
131713  // (inferior to ROSE traversal mechanism, experimental).
131717 
131718  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
131720  virtual void accept (ROSE_VisitorPattern & visitor) override;
131721 
131722  // DQ (12/26/2005): Support for traversal based on the memory pool
131725  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
131726 
131729  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
131730 
131731  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
131732  // This traversal helps support internal tools that call static member functions.
131733  // note: this function operates on the memory pools.
131736  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
131737  /* */
131738 
131739 
131740  public:
131741  /* name Memory Allocation Functions
131742  \brief Memory allocations functions ... incomplete-documentation
131743 
131744  These functions have been made public as part of the design, but they are suggested for internal use
131745  or by particularly knowledgable users for specialized tools or applications.
131746  */
131747  /* */
131748 
131759  virtual bool isInMemoryPool() override;
131760 
131771  virtual void checkDataMemberPointersIfInMemoryPool() override;
131772 
131773  // DQ (4/30/2006): Modified to be a const function.
131788  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
131789 
131799  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
131800 
131812  virtual long getChildIndex( SgNode* childNode ) const override;
131813 
131814  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
131815  // comment here (changed to be a C style comment and not be a doxygen comment).
131816  /* \brief Constructor for use by AST File I/O Mechanism
131817 
131818  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
131819  which obtained via fast binary file I/O from disk.
131820  */
131821  // SgBlockDataStatement( SgBlockDataStatementStorageClass& source );
131822 
131823 
131824 
131825 
131826 
131827  // JH (10/24/2005): methods added to support the ast file IO
131828  private:
131829 
131830  /* name AST Memory Allocation Support Functions
131831  \brief Memory allocations support....
131832 
131833  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
131834  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
131835  and support the AST File I/O Mechanism.
131836  */
131837  /* */
131838 
131839  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
131840  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
131841  that I use the same type everywhere, if any changes are made. THe second one declares the type
131842  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
131843  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
131844  a correspinding one in the AST_FILE_IO class!
131845  */
131846  // DQ (9/2/2015): This typedef is no longer used, we can't define the
131847  // comment here (changed to be a C style comment and not be a doxygen comment).
131848  /* \brief Typedef used for low level memory access.
131849  */
131850  // typedef unsigned char* TestType;
131851 
131852  // DQ (9/2/2015): This typedef is no longer used, we can't define the
131853  // comment here (changed to be a C style comment and not be a doxygen comment).
131854  /* \brief Typedef used to hold memory addresses as values.
131855  */
131856  // typedef unsigned long AddressType;
131857 
131858 
131859 
131860  // necessary, to have direct access to the p_freepointer and the private methods !
131862  friend class AST_FILE_IO;
131863 
131865  friend class SgBlockDataStatementStorageClass;
131866 
131868  friend class AstSpecificDataManagingClass;
131869 
131871  friend class AstSpecificDataManagingClassStorageClass;
131872 
131873  public:
131875  SgBlockDataStatement( const SgBlockDataStatementStorageClass& source );
131876 
131877  // private: // JJW hack
131878  /*
131879  name AST Memory Allocation Support Variables
131880  Memory allocations support variables
131881 
131882  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
131883  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
131884  and support the AST File I/O Mechanism.
131885  */
131886  /* */
131887 
131888  public:
131889 
131890  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
131891  // to current node (so that it will work cleanly with build functions to specify patterns).
131892  // virtual SgNode* addRegExpAttribute();
131899 
131900 // *** COMMON CODE SECTION ENDS HERE ***
131901 
131902 
131903 // End of memberFunctionString
131904 // Start of memberFunctionString
131905 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
131906 
131907  // the generated cast function
131908  // friend ROSE_DLL_API SgBlockDataStatement* isSgBlockDataStatement ( SgNode* s );
131909 
131911 
131912 
131913 // End of memberFunctionString
131914 // Start of memberFunctionString
131915 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
131916 
131917  void post_construction_initialization() override;
131918 
131919 
131920 // End of memberFunctionString
131921 
131922  public:
131923  SgBasicBlock* get_body() const;
131924  void set_body(SgBasicBlock* body);
131925 
131926 
131927  public:
131928  virtual ~SgBlockDataStatement();
131929 
131930 
131931  public:
131932  SgBlockDataStatement(Sg_File_Info* startOfConstruct );
131934 
131935  protected:
131936 // Start of memberFunctionString
131937 SgBasicBlock* p_body;
131938 
131939 // End of memberFunctionString
131940 
131941 
131942 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
131943 
131944 
131945  };
131946 #endif
131947 
131948 // postdeclarations for SgBlockDataStatement
131949 
131950 /* #line 131951 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
131951 
131952 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
131953 
131954 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
131955 
131956 
131957 /* #line 131958 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
131958 
131959 
131960 
131961 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
131962 
131963 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
131964 // This code is automatically generated for each
131965 // terminal and non-terminal within the defined
131966 // grammar. There is a simple way to change the
131967 // code to fix bugs etc. See the ROSE README file
131968 // for directions.
131969 
131970 // tps: (02/22/2010): Adding DLL export requirements
131971 #include "rosedll.h"
131972 
131973 // predeclarations for SgAssociateStatement
131974 
131975 /* #line 131976 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
131976 
131977 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
131978 
131979 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
131980 
131981 #if 1
131982 // Class Definition for SgAssociateStatement
131983 class ROSE_DLL_API SgAssociateStatement : public SgScopeStatement
131984  {
131985  public:
131986 
131987 
131988 /* #line 131989 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
131989 
131990  virtual SgNode* copy ( SgCopyHelp& help) const override;
131991 // Start of memberFunctionString
131992 /* #line 3820 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
131993 
131994 /* #line 939 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
131995 
131996  public:
131997  virtual void append_associate ( SgDeclarationStatement* element );
131998  virtual void prepend_associate ( SgDeclarationStatement* element );
131999 
132000  public:
132001  // New functions added
132002  // void append_associate ( const SgDeclarationStatementPtrList::iterator & list, SgDeclarationStatement* element );
132003  // void prepend_associate ( const SgDeclarationStatementPtrList::iterator & list, SgDeclarationStatement* element );
132004 
132005  // void insert_associate ( const SgDeclarationStatementPtrList::iterator & list, SgDeclarationStatement* element );
132006 
132007 
132008  public:
132009 
132010 
132011 
132012 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
132013  virtual unsigned int cfgIndexForEnd() const override;
132014  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
132015  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
132016 #endif
132017 
132018  virtual SgName get_mangled_name() const override;
132019 
132020 
132021 // End of memberFunctionString
132022 // Start of memberFunctionString
132023 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
132024 
132025 // *** COMMON CODE SECTION BEGINS HERE ***
132026 
132027  public:
132028 
132029  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
132030  // and not required which is required to match the other aspects of the copy mechanism code generation.
132031  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
132032  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
132033  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
132034  // virtual SgNode* copy ( const SgCopyHelp & help) const;
132035 
132037  virtual std::string class_name() const override;
132038 
132040  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
132041 
132043  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
132044  // static const VariantT static_variant = V_SgAssociateStatement;
132045  enum { static_variant = V_SgAssociateStatement };
132046 
132047  /* the generated cast function */
132049  ROSE_DLL_API friend SgAssociateStatement* isSgAssociateStatement( SgNode * s );
132050 
132052  ROSE_DLL_API friend const SgAssociateStatement* isSgAssociateStatement( const SgNode * s );
132053 
132054  // ******************************************
132055  // * Memory Pool / New / Delete
132056  // ******************************************
132057 
132058  public:
132060  static const unsigned pool_size; //
132062  static std::vector<unsigned char *> pools; //
132064  static SgAssociateStatement * next_node; //
132065 
132067  static unsigned long initializeStorageClassArray(SgAssociateStatementStorageClass *); //
132068 
132070  static void clearMemoryPool(); //
132071  static void deleteMemoryPool(); //
132072 
132074  static void extendMemoryPoolForFileIO(); //
132075 
132077  static SgAssociateStatement * getPointerFromGlobalIndex(unsigned long); //
132079  static SgAssociateStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
132080 
132082  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
132084  static void resetValidFreepointers(); //
132086  static unsigned long getNumberOfLastValidPointer(); //
132087 
132088 
132089 #if defined(INLINE_FUNCTIONS)
132090 
132091  inline void *operator new (size_t size);
132092 #else
132093 
132094  void *operator new (size_t size);
132095 #endif
132096 
132097  void operator delete (void* pointer, size_t size);
132098 
132099  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
132100  void operator delete (void* pointer)
132101  {
132102  // This is the generated delete operator...
132103  SgAssociateStatement::operator delete (pointer,sizeof(SgAssociateStatement));
132104  }
132105 
132107  static size_t numberOfNodes();
132108 
132110  static size_t memoryUsage();
132111 
132112  // End of scope which started in IR nodes specific code
132113  /* */
132114 
132115  /* name Internal Functions
132116  \brief Internal functions ... incomplete-documentation
132117 
132118  These functions have been made public as part of the design, but they are suggested for internal use
132119  or by particularly knowledgeable users for specialized tools or applications.
132120 
132121  \internal We could not make these private because they are required by user for special purposes. And
132122  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
132123 
132124  */
132125 
132126  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
132127  // overridden in every class by *generated* implementation
132129  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
132130  // MS: 06/28/02 container of names of variables or container indices
132131  // used used in the traversal to access AST successor nodes
132132  // overridden in every class by *generated* implementation
132135  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
132136 
132137  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
132138  // than all the vector copies. The implementation for these functions is generated for each class.
132140  virtual size_t get_numberOfTraversalSuccessors() override;
132142  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
132144  virtual size_t get_childIndex(SgNode *child) override;
132145 
132146 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
132147  // MS: 08/16/2002 method for generating RTI information
132149  virtual RTIReturnType roseRTI() override;
132150 #endif
132151  /* */
132152 
132153 
132154 
132155  /* name Deprecated Functions
132156  \brief Deprecated functions ... incomplete-documentation
132157 
132158  These functions have been deprecated from use.
132159  */
132160  /* */
132161 
132163  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
132164 
132165  // JJW (10/16/2008): Changed to a single function in Node.code, and put
132166  // getVariant() in #if 0 block to prevent confusing Doxygen
132167 #if 0
132168 
132169  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
132171  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
132172 #endif
132173  /* */
132174 
132175 
132176 
132177 
132178  public:
132179  /* name Traversal Support Functions
132180  \brief Traversal support functions ... incomplete-documentation
132181 
132182  These functions have been made public as part of the design, but they are suggested for internal use
132183  or by particularly knowledgable users for specialized tools or applications.
132184  */
132185  /* */
132186 
132187  // DQ (11/26/2005): Support for visitor pattern mechanims
132188  // (inferior to ROSE traversal mechanism, experimental).
132192 
132193  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
132195  virtual void accept (ROSE_VisitorPattern & visitor) override;
132196 
132197  // DQ (12/26/2005): Support for traversal based on the memory pool
132200  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
132201 
132204  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
132205 
132206  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
132207  // This traversal helps support internal tools that call static member functions.
132208  // note: this function operates on the memory pools.
132211  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
132212  /* */
132213 
132214 
132215  public:
132216  /* name Memory Allocation Functions
132217  \brief Memory allocations functions ... incomplete-documentation
132218 
132219  These functions have been made public as part of the design, but they are suggested for internal use
132220  or by particularly knowledgable users for specialized tools or applications.
132221  */
132222  /* */
132223 
132234  virtual bool isInMemoryPool() override;
132235 
132246  virtual void checkDataMemberPointersIfInMemoryPool() override;
132247 
132248  // DQ (4/30/2006): Modified to be a const function.
132263  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
132264 
132274  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
132275 
132287  virtual long getChildIndex( SgNode* childNode ) const override;
132288 
132289  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
132290  // comment here (changed to be a C style comment and not be a doxygen comment).
132291  /* \brief Constructor for use by AST File I/O Mechanism
132292 
132293  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
132294  which obtained via fast binary file I/O from disk.
132295  */
132296  // SgAssociateStatement( SgAssociateStatementStorageClass& source );
132297 
132298 
132299 
132300 
132301 
132302  // JH (10/24/2005): methods added to support the ast file IO
132303  private:
132304 
132305  /* name AST Memory Allocation Support Functions
132306  \brief Memory allocations support....
132307 
132308  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
132309  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
132310  and support the AST File I/O Mechanism.
132311  */
132312  /* */
132313 
132314  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
132315  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
132316  that I use the same type everywhere, if any changes are made. THe second one declares the type
132317  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
132318  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
132319  a correspinding one in the AST_FILE_IO class!
132320  */
132321  // DQ (9/2/2015): This typedef is no longer used, we can't define the
132322  // comment here (changed to be a C style comment and not be a doxygen comment).
132323  /* \brief Typedef used for low level memory access.
132324  */
132325  // typedef unsigned char* TestType;
132326 
132327  // DQ (9/2/2015): This typedef is no longer used, we can't define the
132328  // comment here (changed to be a C style comment and not be a doxygen comment).
132329  /* \brief Typedef used to hold memory addresses as values.
132330  */
132331  // typedef unsigned long AddressType;
132332 
132333 
132334 
132335  // necessary, to have direct access to the p_freepointer and the private methods !
132337  friend class AST_FILE_IO;
132338 
132340  friend class SgAssociateStatementStorageClass;
132341 
132343  friend class AstSpecificDataManagingClass;
132344 
132346  friend class AstSpecificDataManagingClassStorageClass;
132347 
132348  public:
132350  SgAssociateStatement( const SgAssociateStatementStorageClass& source );
132351 
132352  // private: // JJW hack
132353  /*
132354  name AST Memory Allocation Support Variables
132355  Memory allocations support variables
132356 
132357  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
132358  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
132359  and support the AST File I/O Mechanism.
132360  */
132361  /* */
132362 
132363  public:
132364 
132365  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
132366  // to current node (so that it will work cleanly with build functions to specify patterns).
132367  // virtual SgNode* addRegExpAttribute();
132374 
132375 // *** COMMON CODE SECTION ENDS HERE ***
132376 
132377 
132378 // End of memberFunctionString
132379 // Start of memberFunctionString
132380 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
132381 
132382  // the generated cast function
132383  // friend ROSE_DLL_API SgAssociateStatement* isSgAssociateStatement ( SgNode* s );
132384 
132386 
132387 
132388 // End of memberFunctionString
132389 // Start of memberFunctionString
132390 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
132391 
132392  void post_construction_initialization() override;
132393 
132394 
132395 // End of memberFunctionString
132396 
132397  public:
132398  const SgDeclarationStatementPtrList& get_associates() const;
132399  SgDeclarationStatementPtrList& get_associates();
132400 
132401  public:
132402  SgBasicBlock* get_body() const;
132403  void set_body(SgBasicBlock* body);
132404 
132405 
132406  public:
132407  virtual ~SgAssociateStatement();
132408 
132409 
132410  public:
132411  SgAssociateStatement(Sg_File_Info* startOfConstruct );
132413 
132414  protected:
132415 // Start of memberFunctionString
132416 SgDeclarationStatementPtrList p_associates;
132417 
132418 // End of memberFunctionString
132419 // Start of memberFunctionString
132420 SgBasicBlock* p_body;
132421 
132422 // End of memberFunctionString
132423 
132424 
132425 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
132426 
132427 
132428  };
132429 #endif
132430 
132431 // postdeclarations for SgAssociateStatement
132432 
132433 /* #line 132434 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
132434 
132435 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
132436 
132437 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
132438 
132439 
132440 /* #line 132441 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
132441 
132442 
132443 
132444 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
132445 
132446 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
132447 // This code is automatically generated for each
132448 // terminal and non-terminal within the defined
132449 // grammar. There is a simple way to change the
132450 // code to fix bugs etc. See the ROSE README file
132451 // for directions.
132452 
132453 // tps: (02/22/2010): Adding DLL export requirements
132454 #include "rosedll.h"
132455 
132456 // predeclarations for SgFortranDo
132457 
132458 /* #line 132459 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
132459 
132460 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
132461 
132462 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
132463 
132464 #if 1
132465 // Class Definition for SgFortranDo
132466 class ROSE_DLL_API SgFortranDo : public SgScopeStatement
132467  {
132468  public:
132469 
132470 
132471 /* #line 132472 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
132472 
132473  virtual SgNode* copy ( SgCopyHelp& help) const override;
132474 // Start of memberFunctionString
132475 /* #line 3308 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
132476 
132477 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
132478  virtual unsigned int cfgIndexForEnd() const override;
132479  virtual bool cfgIsIndexInteresting(unsigned int) const override;
132480  virtual unsigned int cfgFindChildIndex(SgNode* n) override;
132481  virtual unsigned int cfgFindNextChildIndex(SgNode* n) override;
132482  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
132483  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
132484 #endif
132485  // Added for uniform support of mangled names, Liao, 3/11/2009
132486  virtual SgName get_mangled_name() const override;
132487 
132488 
132489 
132490 // End of memberFunctionString
132491 // Start of memberFunctionString
132492 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
132493 
132494 // *** COMMON CODE SECTION BEGINS HERE ***
132495 
132496  public:
132497 
132498  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
132499  // and not required which is required to match the other aspects of the copy mechanism code generation.
132500  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
132501  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
132502  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
132503  // virtual SgNode* copy ( const SgCopyHelp & help) const;
132504 
132506  virtual std::string class_name() const override;
132507 
132509  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
132510 
132512  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
132513  // static const VariantT static_variant = V_SgFortranDo;
132514  enum { static_variant = V_SgFortranDo };
132515 
132516  /* the generated cast function */
132518  ROSE_DLL_API friend SgFortranDo* isSgFortranDo( SgNode * s );
132519 
132521  ROSE_DLL_API friend const SgFortranDo* isSgFortranDo( const SgNode * s );
132522 
132523  // ******************************************
132524  // * Memory Pool / New / Delete
132525  // ******************************************
132526 
132527  public:
132529  static const unsigned pool_size; //
132531  static std::vector<unsigned char *> pools; //
132533  static SgFortranDo * next_node; //
132534 
132536  static unsigned long initializeStorageClassArray(SgFortranDoStorageClass *); //
132537 
132539  static void clearMemoryPool(); //
132540  static void deleteMemoryPool(); //
132541 
132543  static void extendMemoryPoolForFileIO(); //
132544 
132546  static SgFortranDo * getPointerFromGlobalIndex(unsigned long); //
132548  static SgFortranDo * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
132549 
132551  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
132553  static void resetValidFreepointers(); //
132555  static unsigned long getNumberOfLastValidPointer(); //
132556 
132557 
132558 #if defined(INLINE_FUNCTIONS)
132559 
132560  inline void *operator new (size_t size);
132561 #else
132562 
132563  void *operator new (size_t size);
132564 #endif
132565 
132566  void operator delete (void* pointer, size_t size);
132567 
132568  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
132569  void operator delete (void* pointer)
132570  {
132571  // This is the generated delete operator...
132572  SgFortranDo::operator delete (pointer,sizeof(SgFortranDo));
132573  }
132574 
132576  static size_t numberOfNodes();
132577 
132579  static size_t memoryUsage();
132580 
132581  // End of scope which started in IR nodes specific code
132582  /* */
132583 
132584  /* name Internal Functions
132585  \brief Internal functions ... incomplete-documentation
132586 
132587  These functions have been made public as part of the design, but they are suggested for internal use
132588  or by particularly knowledgeable users for specialized tools or applications.
132589 
132590  \internal We could not make these private because they are required by user for special purposes. And
132591  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
132592 
132593  */
132594 
132595  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
132596  // overridden in every class by *generated* implementation
132598  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
132599  // MS: 06/28/02 container of names of variables or container indices
132600  // used used in the traversal to access AST successor nodes
132601  // overridden in every class by *generated* implementation
132604  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
132605 
132606  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
132607  // than all the vector copies. The implementation for these functions is generated for each class.
132609  virtual size_t get_numberOfTraversalSuccessors() override;
132611  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
132613  virtual size_t get_childIndex(SgNode *child) override;
132614 
132615 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
132616  // MS: 08/16/2002 method for generating RTI information
132618  virtual RTIReturnType roseRTI() override;
132619 #endif
132620  /* */
132621 
132622 
132623 
132624  /* name Deprecated Functions
132625  \brief Deprecated functions ... incomplete-documentation
132626 
132627  These functions have been deprecated from use.
132628  */
132629  /* */
132630 
132632  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
132633 
132634  // JJW (10/16/2008): Changed to a single function in Node.code, and put
132635  // getVariant() in #if 0 block to prevent confusing Doxygen
132636 #if 0
132637 
132638  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
132640  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
132641 #endif
132642  /* */
132643 
132644 
132645 
132646 
132647  public:
132648  /* name Traversal Support Functions
132649  \brief Traversal support functions ... incomplete-documentation
132650 
132651  These functions have been made public as part of the design, but they are suggested for internal use
132652  or by particularly knowledgable users for specialized tools or applications.
132653  */
132654  /* */
132655 
132656  // DQ (11/26/2005): Support for visitor pattern mechanims
132657  // (inferior to ROSE traversal mechanism, experimental).
132661 
132662  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
132664  virtual void accept (ROSE_VisitorPattern & visitor) override;
132665 
132666  // DQ (12/26/2005): Support for traversal based on the memory pool
132669  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
132670 
132673  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
132674 
132675  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
132676  // This traversal helps support internal tools that call static member functions.
132677  // note: this function operates on the memory pools.
132680  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
132681  /* */
132682 
132683 
132684  public:
132685  /* name Memory Allocation Functions
132686  \brief Memory allocations functions ... incomplete-documentation
132687 
132688  These functions have been made public as part of the design, but they are suggested for internal use
132689  or by particularly knowledgable users for specialized tools or applications.
132690  */
132691  /* */
132692 
132703  virtual bool isInMemoryPool() override;
132704 
132715  virtual void checkDataMemberPointersIfInMemoryPool() override;
132716 
132717  // DQ (4/30/2006): Modified to be a const function.
132732  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
132733 
132743  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
132744 
132756  virtual long getChildIndex( SgNode* childNode ) const override;
132757 
132758  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
132759  // comment here (changed to be a C style comment and not be a doxygen comment).
132760  /* \brief Constructor for use by AST File I/O Mechanism
132761 
132762  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
132763  which obtained via fast binary file I/O from disk.
132764  */
132765  // SgFortranDo( SgFortranDoStorageClass& source );
132766 
132767 
132768 
132769 
132770 
132771  // JH (10/24/2005): methods added to support the ast file IO
132772  private:
132773 
132774  /* name AST Memory Allocation Support Functions
132775  \brief Memory allocations support....
132776 
132777  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
132778  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
132779  and support the AST File I/O Mechanism.
132780  */
132781  /* */
132782 
132783  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
132784  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
132785  that I use the same type everywhere, if any changes are made. THe second one declares the type
132786  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
132787  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
132788  a correspinding one in the AST_FILE_IO class!
132789  */
132790  // DQ (9/2/2015): This typedef is no longer used, we can't define the
132791  // comment here (changed to be a C style comment and not be a doxygen comment).
132792  /* \brief Typedef used for low level memory access.
132793  */
132794  // typedef unsigned char* TestType;
132795 
132796  // DQ (9/2/2015): This typedef is no longer used, we can't define the
132797  // comment here (changed to be a C style comment and not be a doxygen comment).
132798  /* \brief Typedef used to hold memory addresses as values.
132799  */
132800  // typedef unsigned long AddressType;
132801 
132802 
132803 
132804  // necessary, to have direct access to the p_freepointer and the private methods !
132806  friend class AST_FILE_IO;
132807 
132809  friend class SgFortranDoStorageClass;
132810 
132812  friend class AstSpecificDataManagingClass;
132813 
132815  friend class AstSpecificDataManagingClassStorageClass;
132816 
132817  public:
132819  SgFortranDo( const SgFortranDoStorageClass& source );
132820 
132821  // private: // JJW hack
132822  /*
132823  name AST Memory Allocation Support Variables
132824  Memory allocations support variables
132825 
132826  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
132827  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
132828  and support the AST File I/O Mechanism.
132829  */
132830  /* */
132831 
132832  public:
132833 
132834  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
132835  // to current node (so that it will work cleanly with build functions to specify patterns).
132836  // virtual SgNode* addRegExpAttribute();
132842  SgFortranDo* addRegExpAttribute(std::string s, AstRegExAttribute* a);
132843 
132844 // *** COMMON CODE SECTION ENDS HERE ***
132845 
132846 
132847 // End of memberFunctionString
132848 // Start of memberFunctionString
132849 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
132850 
132851  // the generated cast function
132852  // friend ROSE_DLL_API SgFortranDo* isSgFortranDo ( SgNode* s );
132853 
132855 
132856 
132857 // End of memberFunctionString
132858 // Start of memberFunctionString
132859 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
132860 
132861  void post_construction_initialization() override;
132862 
132863 
132864 // End of memberFunctionString
132865 
132866  public:
132867  SgExpression* get_initialization() const;
132868  void set_initialization(SgExpression* initialization);
132869 
132870  public:
132871  SgExpression* get_bound() const;
132872  void set_bound(SgExpression* bound);
132873 
132874  public:
132875  SgExpression* get_increment() const;
132876  void set_increment(SgExpression* increment);
132877 
132878  public:
132879  SgBasicBlock* get_body() const;
132880  void set_body(SgBasicBlock* body);
132881 
132882  public:
132883  SgLabelRefExp* get_end_numeric_label() const /* (getDataAccessFunctionPrototypeString) */;
132884  void set_end_numeric_label(SgLabelRefExp* end_numeric_label) override /* (getDataAccessFunctionPrototypeString) */;
132885 
132886  public:
132887  std::string get_string_label() const;
132888  void set_string_label(std::string string_label);
132889 
132890  public:
132891  bool get_old_style() const;
132892  void set_old_style(bool old_style);
132893 
132894  public:
132895  bool get_has_end_statement() const;
132896  void set_has_end_statement(bool has_end_statement);
132897 
132898 
132899  public:
132900  virtual ~SgFortranDo();
132901 
132902 
132903  public:
132904  SgFortranDo(Sg_File_Info* startOfConstruct , SgExpression* initialization = NULL, SgExpression* bound = NULL, SgExpression* increment = NULL, SgBasicBlock* body = NULL);
132905  SgFortranDo(SgExpression* initialization, SgExpression* bound, SgExpression* increment, SgBasicBlock* body);
132906 
132907  protected:
132908 // Start of memberFunctionString
132909 SgExpression* p_initialization;
132910 
132911 // End of memberFunctionString
132912 // Start of memberFunctionString
132913 SgExpression* p_bound;
132914 
132915 // End of memberFunctionString
132916 // Start of memberFunctionString
132917 SgExpression* p_increment;
132918 
132919 // End of memberFunctionString
132920 // Start of memberFunctionString
132921 SgBasicBlock* p_body;
132922 
132923 // End of memberFunctionString
132924 // Start of memberFunctionString
132925 SgLabelRefExp* p_end_numeric_label;
132926 
132927 // End of memberFunctionString
132928 // Start of memberFunctionString
132929 std::string p_string_label;
132930 
132931 // End of memberFunctionString
132932 // Start of memberFunctionString
132933 bool p_old_style;
132934 
132935 // End of memberFunctionString
132936 // Start of memberFunctionString
132937 bool p_has_end_statement;
132938 
132939 // End of memberFunctionString
132940 
132941 
132942 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
132943 
132944 
132945  };
132946 #endif
132947 
132948 // postdeclarations for SgFortranDo
132949 
132950 /* #line 132951 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
132951 
132952 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
132953 
132954 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
132955 
132956 
132957 /* #line 132958 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
132958 
132959 
132960 
132961 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
132962 
132963 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
132964 // This code is automatically generated for each
132965 // terminal and non-terminal within the defined
132966 // grammar. There is a simple way to change the
132967 // code to fix bugs etc. See the ROSE README file
132968 // for directions.
132969 
132970 // tps: (02/22/2010): Adding DLL export requirements
132971 #include "rosedll.h"
132972 
132973 // predeclarations for SgFortranNonblockedDo
132974 
132975 /* #line 132976 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
132976 
132977 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
132978 
132979 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
132980 
132981 #if 1
132982 // Class Definition for SgFortranNonblockedDo
132983 class ROSE_DLL_API SgFortranNonblockedDo : public SgFortranDo
132984  {
132985  public:
132986 
132987 
132988 /* #line 132989 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
132989 
132990  virtual SgNode* copy ( SgCopyHelp& help) const override;
132991 // Start of memberFunctionString
132992 /* #line 3322 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
132993 
132994 
132995 
132996 // End of memberFunctionString
132997 // Start of memberFunctionString
132998 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
132999 
133000 // *** COMMON CODE SECTION BEGINS HERE ***
133001 
133002  public:
133003 
133004  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
133005  // and not required which is required to match the other aspects of the copy mechanism code generation.
133006  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
133007  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
133008  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
133009  // virtual SgNode* copy ( const SgCopyHelp & help) const;
133010 
133012  virtual std::string class_name() const override;
133013 
133015  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
133016 
133018  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
133019  // static const VariantT static_variant = V_SgFortranNonblockedDo;
133020  enum { static_variant = V_SgFortranNonblockedDo };
133021 
133022  /* the generated cast function */
133024  ROSE_DLL_API friend SgFortranNonblockedDo* isSgFortranNonblockedDo( SgNode * s );
133025 
133027  ROSE_DLL_API friend const SgFortranNonblockedDo* isSgFortranNonblockedDo( const SgNode * s );
133028 
133029  // ******************************************
133030  // * Memory Pool / New / Delete
133031  // ******************************************
133032 
133033  public:
133035  static const unsigned pool_size; //
133037  static std::vector<unsigned char *> pools; //
133039  static SgFortranNonblockedDo * next_node; //
133040 
133042  static unsigned long initializeStorageClassArray(SgFortranNonblockedDoStorageClass *); //
133043 
133045  static void clearMemoryPool(); //
133046  static void deleteMemoryPool(); //
133047 
133049  static void extendMemoryPoolForFileIO(); //
133050 
133052  static SgFortranNonblockedDo * getPointerFromGlobalIndex(unsigned long); //
133054  static SgFortranNonblockedDo * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
133055 
133057  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
133059  static void resetValidFreepointers(); //
133061  static unsigned long getNumberOfLastValidPointer(); //
133062 
133063 
133064 #if defined(INLINE_FUNCTIONS)
133065 
133066  inline void *operator new (size_t size);
133067 #else
133068 
133069  void *operator new (size_t size);
133070 #endif
133071 
133072  void operator delete (void* pointer, size_t size);
133073 
133074  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
133075  void operator delete (void* pointer)
133076  {
133077  // This is the generated delete operator...
133078  SgFortranNonblockedDo::operator delete (pointer,sizeof(SgFortranNonblockedDo));
133079  }
133080 
133082  static size_t numberOfNodes();
133083 
133085  static size_t memoryUsage();
133086 
133087  // End of scope which started in IR nodes specific code
133088  /* */
133089 
133090  /* name Internal Functions
133091  \brief Internal functions ... incomplete-documentation
133092 
133093  These functions have been made public as part of the design, but they are suggested for internal use
133094  or by particularly knowledgeable users for specialized tools or applications.
133095 
133096  \internal We could not make these private because they are required by user for special purposes. And
133097  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
133098 
133099  */
133100 
133101  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
133102  // overridden in every class by *generated* implementation
133104  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
133105  // MS: 06/28/02 container of names of variables or container indices
133106  // used used in the traversal to access AST successor nodes
133107  // overridden in every class by *generated* implementation
133110  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
133111 
133112  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
133113  // than all the vector copies. The implementation for these functions is generated for each class.
133115  virtual size_t get_numberOfTraversalSuccessors() override;
133117  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
133119  virtual size_t get_childIndex(SgNode *child) override;
133120 
133121 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
133122  // MS: 08/16/2002 method for generating RTI information
133124  virtual RTIReturnType roseRTI() override;
133125 #endif
133126  /* */
133127 
133128 
133129 
133130  /* name Deprecated Functions
133131  \brief Deprecated functions ... incomplete-documentation
133132 
133133  These functions have been deprecated from use.
133134  */
133135  /* */
133136 
133138  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
133139 
133140  // JJW (10/16/2008): Changed to a single function in Node.code, and put
133141  // getVariant() in #if 0 block to prevent confusing Doxygen
133142 #if 0
133143 
133144  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
133146  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
133147 #endif
133148  /* */
133149 
133150 
133151 
133152 
133153  public:
133154  /* name Traversal Support Functions
133155  \brief Traversal support functions ... incomplete-documentation
133156 
133157  These functions have been made public as part of the design, but they are suggested for internal use
133158  or by particularly knowledgable users for specialized tools or applications.
133159  */
133160  /* */
133161 
133162  // DQ (11/26/2005): Support for visitor pattern mechanims
133163  // (inferior to ROSE traversal mechanism, experimental).
133167 
133168  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
133170  virtual void accept (ROSE_VisitorPattern & visitor) override;
133171 
133172  // DQ (12/26/2005): Support for traversal based on the memory pool
133175  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
133176 
133179  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
133180 
133181  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
133182  // This traversal helps support internal tools that call static member functions.
133183  // note: this function operates on the memory pools.
133186  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
133187  /* */
133188 
133189 
133190  public:
133191  /* name Memory Allocation Functions
133192  \brief Memory allocations functions ... incomplete-documentation
133193 
133194  These functions have been made public as part of the design, but they are suggested for internal use
133195  or by particularly knowledgable users for specialized tools or applications.
133196  */
133197  /* */
133198 
133209  virtual bool isInMemoryPool() override;
133210 
133221  virtual void checkDataMemberPointersIfInMemoryPool() override;
133222 
133223  // DQ (4/30/2006): Modified to be a const function.
133238  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
133239 
133249  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
133250 
133262  virtual long getChildIndex( SgNode* childNode ) const override;
133263 
133264  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
133265  // comment here (changed to be a C style comment and not be a doxygen comment).
133266  /* \brief Constructor for use by AST File I/O Mechanism
133267 
133268  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
133269  which obtained via fast binary file I/O from disk.
133270  */
133271  // SgFortranNonblockedDo( SgFortranNonblockedDoStorageClass& source );
133272 
133273 
133274 
133275 
133276 
133277  // JH (10/24/2005): methods added to support the ast file IO
133278  private:
133279 
133280  /* name AST Memory Allocation Support Functions
133281  \brief Memory allocations support....
133282 
133283  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
133284  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
133285  and support the AST File I/O Mechanism.
133286  */
133287  /* */
133288 
133289  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
133290  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
133291  that I use the same type everywhere, if any changes are made. THe second one declares the type
133292  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
133293  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
133294  a correspinding one in the AST_FILE_IO class!
133295  */
133296  // DQ (9/2/2015): This typedef is no longer used, we can't define the
133297  // comment here (changed to be a C style comment and not be a doxygen comment).
133298  /* \brief Typedef used for low level memory access.
133299  */
133300  // typedef unsigned char* TestType;
133301 
133302  // DQ (9/2/2015): This typedef is no longer used, we can't define the
133303  // comment here (changed to be a C style comment and not be a doxygen comment).
133304  /* \brief Typedef used to hold memory addresses as values.
133305  */
133306  // typedef unsigned long AddressType;
133307 
133308 
133309 
133310  // necessary, to have direct access to the p_freepointer and the private methods !
133312  friend class AST_FILE_IO;
133313 
133315  friend class SgFortranNonblockedDoStorageClass;
133316 
133318  friend class AstSpecificDataManagingClass;
133319 
133321  friend class AstSpecificDataManagingClassStorageClass;
133322 
133323  public:
133325  SgFortranNonblockedDo( const SgFortranNonblockedDoStorageClass& source );
133326 
133327  // private: // JJW hack
133328  /*
133329  name AST Memory Allocation Support Variables
133330  Memory allocations support variables
133331 
133332  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
133333  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
133334  and support the AST File I/O Mechanism.
133335  */
133336  /* */
133337 
133338  public:
133339 
133340  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
133341  // to current node (so that it will work cleanly with build functions to specify patterns).
133342  // virtual SgNode* addRegExpAttribute();
133349 
133350 // *** COMMON CODE SECTION ENDS HERE ***
133351 
133352 
133353 // End of memberFunctionString
133354 // Start of memberFunctionString
133355 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
133356 
133357  // the generated cast function
133358  // friend ROSE_DLL_API SgFortranNonblockedDo* isSgFortranNonblockedDo ( SgNode* s );
133359 
133360  typedef SgFortranDo base_node_type;
133361 
133362 
133363 // End of memberFunctionString
133364 // Start of memberFunctionString
133365 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
133366 
133367  void post_construction_initialization() override;
133368 
133369 
133370 // End of memberFunctionString
133371 
133372  public:
133373  SgStatement* get_end_statement() const;
133374  void set_end_statement(SgStatement* end_statement);
133375 
133376 
133377  public:
133378  virtual ~SgFortranNonblockedDo();
133379 
133380 
133381  public:
133382  SgFortranNonblockedDo(Sg_File_Info* startOfConstruct , SgExpression* initialization = NULL, SgExpression* bound = NULL, SgExpression* increment = NULL, SgBasicBlock* body = NULL, SgStatement* end_statement = NULL);
133383  SgFortranNonblockedDo(SgExpression* initialization, SgExpression* bound, SgExpression* increment, SgBasicBlock* body, SgStatement* end_statement);
133384 
133385  protected:
133386 // Start of memberFunctionString
133387 SgStatement* p_end_statement;
133388 
133389 // End of memberFunctionString
133390 
133391 
133392 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
133393 
133394 
133395  };
133396 #endif
133397 
133398 // postdeclarations for SgFortranNonblockedDo
133399 
133400 /* #line 133401 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
133401 
133402 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
133403 
133404 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
133405 
133406 
133407 /* #line 133408 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
133408 
133409 
133410 
133411 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
133412 
133413 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
133414 // This code is automatically generated for each
133415 // terminal and non-terminal within the defined
133416 // grammar. There is a simple way to change the
133417 // code to fix bugs etc. See the ROSE README file
133418 // for directions.
133419 
133420 // tps: (02/22/2010): Adding DLL export requirements
133421 #include "rosedll.h"
133422 
133423 // predeclarations for SgForAllStatement
133424 
133425 /* #line 133426 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
133426 
133427 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
133428 
133429 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
133430 
133431 #if 1
133432 // Class Definition for SgForAllStatement
133433 class ROSE_DLL_API SgForAllStatement : public SgScopeStatement
133434  {
133435  public:
133436 
133437 
133438 /* #line 133439 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
133439 
133440  virtual SgNode* copy ( SgCopyHelp& help) const override;
133441 // Start of memberFunctionString
133442 /* #line 1396 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
133443 
133445  //
133446  public:
133447  // Rasmussen (11/08/2018): Needed because of addition of do-concurrent-stmt
133449  {
133450  e_unknown,
133451  e_forall_statement,
133452  e_do_concurrent_statement,
133453  e_last_forall_statement_kind
133454  };
133455 
133456 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
133457  virtual unsigned int cfgIndexForEnd() const override;
133458  virtual bool cfgIsIndexInteresting(unsigned int) const override;
133459  virtual unsigned int cfgFindChildIndex(SgNode* n) override;
133460  virtual unsigned int cfgFindNextChildIndex(SgNode* n) override;
133461  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
133462  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
133463 #endif
133464 
133465 
133466 // End of memberFunctionString
133467 // Start of memberFunctionString
133468 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
133469 
133470 // *** COMMON CODE SECTION BEGINS HERE ***
133471 
133472  public:
133473 
133474  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
133475  // and not required which is required to match the other aspects of the copy mechanism code generation.
133476  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
133477  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
133478  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
133479  // virtual SgNode* copy ( const SgCopyHelp & help) const;
133480 
133482  virtual std::string class_name() const override;
133483 
133485  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
133486 
133488  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
133489  // static const VariantT static_variant = V_SgForAllStatement;
133490  enum { static_variant = V_SgForAllStatement };
133491 
133492  /* the generated cast function */
133494  ROSE_DLL_API friend SgForAllStatement* isSgForAllStatement( SgNode * s );
133495 
133497  ROSE_DLL_API friend const SgForAllStatement* isSgForAllStatement( const SgNode * s );
133498 
133499  // ******************************************
133500  // * Memory Pool / New / Delete
133501  // ******************************************
133502 
133503  public:
133505  static const unsigned pool_size; //
133507  static std::vector<unsigned char *> pools; //
133509  static SgForAllStatement * next_node; //
133510 
133512  static unsigned long initializeStorageClassArray(SgForAllStatementStorageClass *); //
133513 
133515  static void clearMemoryPool(); //
133516  static void deleteMemoryPool(); //
133517 
133519  static void extendMemoryPoolForFileIO(); //
133520 
133522  static SgForAllStatement * getPointerFromGlobalIndex(unsigned long); //
133524  static SgForAllStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
133525 
133527  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
133529  static void resetValidFreepointers(); //
133531  static unsigned long getNumberOfLastValidPointer(); //
133532 
133533 
133534 #if defined(INLINE_FUNCTIONS)
133535 
133536  inline void *operator new (size_t size);
133537 #else
133538 
133539  void *operator new (size_t size);
133540 #endif
133541 
133542  void operator delete (void* pointer, size_t size);
133543 
133544  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
133545  void operator delete (void* pointer)
133546  {
133547  // This is the generated delete operator...
133548  SgForAllStatement::operator delete (pointer,sizeof(SgForAllStatement));
133549  }
133550 
133552  static size_t numberOfNodes();
133553 
133555  static size_t memoryUsage();
133556 
133557  // End of scope which started in IR nodes specific code
133558  /* */
133559 
133560  /* name Internal Functions
133561  \brief Internal functions ... incomplete-documentation
133562 
133563  These functions have been made public as part of the design, but they are suggested for internal use
133564  or by particularly knowledgeable users for specialized tools or applications.
133565 
133566  \internal We could not make these private because they are required by user for special purposes. And
133567  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
133568 
133569  */
133570 
133571  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
133572  // overridden in every class by *generated* implementation
133574  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
133575  // MS: 06/28/02 container of names of variables or container indices
133576  // used used in the traversal to access AST successor nodes
133577  // overridden in every class by *generated* implementation
133580  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
133581 
133582  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
133583  // than all the vector copies. The implementation for these functions is generated for each class.
133585  virtual size_t get_numberOfTraversalSuccessors() override;
133587  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
133589  virtual size_t get_childIndex(SgNode *child) override;
133590 
133591 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
133592  // MS: 08/16/2002 method for generating RTI information
133594  virtual RTIReturnType roseRTI() override;
133595 #endif
133596  /* */
133597 
133598 
133599 
133600  /* name Deprecated Functions
133601  \brief Deprecated functions ... incomplete-documentation
133602 
133603  These functions have been deprecated from use.
133604  */
133605  /* */
133606 
133608  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
133609 
133610  // JJW (10/16/2008): Changed to a single function in Node.code, and put
133611  // getVariant() in #if 0 block to prevent confusing Doxygen
133612 #if 0
133613 
133614  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
133616  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
133617 #endif
133618  /* */
133619 
133620 
133621 
133622 
133623  public:
133624  /* name Traversal Support Functions
133625  \brief Traversal support functions ... incomplete-documentation
133626 
133627  These functions have been made public as part of the design, but they are suggested for internal use
133628  or by particularly knowledgable users for specialized tools or applications.
133629  */
133630  /* */
133631 
133632  // DQ (11/26/2005): Support for visitor pattern mechanims
133633  // (inferior to ROSE traversal mechanism, experimental).
133637 
133638  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
133640  virtual void accept (ROSE_VisitorPattern & visitor) override;
133641 
133642  // DQ (12/26/2005): Support for traversal based on the memory pool
133645  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
133646 
133649  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
133650 
133651  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
133652  // This traversal helps support internal tools that call static member functions.
133653  // note: this function operates on the memory pools.
133656  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
133657  /* */
133658 
133659 
133660  public:
133661  /* name Memory Allocation Functions
133662  \brief Memory allocations functions ... incomplete-documentation
133663 
133664  These functions have been made public as part of the design, but they are suggested for internal use
133665  or by particularly knowledgable users for specialized tools or applications.
133666  */
133667  /* */
133668 
133679  virtual bool isInMemoryPool() override;
133680 
133691  virtual void checkDataMemberPointersIfInMemoryPool() override;
133692 
133693  // DQ (4/30/2006): Modified to be a const function.
133708  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
133709 
133719  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
133720 
133732  virtual long getChildIndex( SgNode* childNode ) const override;
133733 
133734  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
133735  // comment here (changed to be a C style comment and not be a doxygen comment).
133736  /* \brief Constructor for use by AST File I/O Mechanism
133737 
133738  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
133739  which obtained via fast binary file I/O from disk.
133740  */
133741  // SgForAllStatement( SgForAllStatementStorageClass& source );
133742 
133743 
133744 
133745 
133746 
133747  // JH (10/24/2005): methods added to support the ast file IO
133748  private:
133749 
133750  /* name AST Memory Allocation Support Functions
133751  \brief Memory allocations support....
133752 
133753  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
133754  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
133755  and support the AST File I/O Mechanism.
133756  */
133757  /* */
133758 
133759  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
133760  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
133761  that I use the same type everywhere, if any changes are made. THe second one declares the type
133762  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
133763  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
133764  a correspinding one in the AST_FILE_IO class!
133765  */
133766  // DQ (9/2/2015): This typedef is no longer used, we can't define the
133767  // comment here (changed to be a C style comment and not be a doxygen comment).
133768  /* \brief Typedef used for low level memory access.
133769  */
133770  // typedef unsigned char* TestType;
133771 
133772  // DQ (9/2/2015): This typedef is no longer used, we can't define the
133773  // comment here (changed to be a C style comment and not be a doxygen comment).
133774  /* \brief Typedef used to hold memory addresses as values.
133775  */
133776  // typedef unsigned long AddressType;
133777 
133778 
133779 
133780  // necessary, to have direct access to the p_freepointer and the private methods !
133782  friend class AST_FILE_IO;
133783 
133785  friend class SgForAllStatementStorageClass;
133786 
133788  friend class AstSpecificDataManagingClass;
133789 
133791  friend class AstSpecificDataManagingClassStorageClass;
133792 
133793  public:
133795  SgForAllStatement( const SgForAllStatementStorageClass& source );
133796 
133797  // private: // JJW hack
133798  /*
133799  name AST Memory Allocation Support Variables
133800  Memory allocations support variables
133801 
133802  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
133803  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
133804  and support the AST File I/O Mechanism.
133805  */
133806  /* */
133807 
133808  public:
133809 
133810  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
133811  // to current node (so that it will work cleanly with build functions to specify patterns).
133812  // virtual SgNode* addRegExpAttribute();
133819 
133820 // *** COMMON CODE SECTION ENDS HERE ***
133821 
133822 
133823 // End of memberFunctionString
133824 // Start of memberFunctionString
133825 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
133826 
133827  // the generated cast function
133828  // friend ROSE_DLL_API SgForAllStatement* isSgForAllStatement ( SgNode* s );
133829 
133831 
133832 
133833 // End of memberFunctionString
133834 // Start of memberFunctionString
133835 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
133836 
133837  void post_construction_initialization() override;
133838 
133839 
133840 // End of memberFunctionString
133841 
133842  public:
133843  SgExprListExp* get_forall_header() const;
133844  void set_forall_header(SgExprListExp* forall_header);
133845 
133846  public:
133847  SgBasicBlock* get_body() const;
133848  void set_body(SgBasicBlock* body);
133849 
133850  public:
133851  bool get_has_end_statement() const;
133852  void set_has_end_statement(bool has_end_statement);
133853 
133854  public:
133855  std::string get_string_label() const;
133856  void set_string_label(std::string string_label);
133857 
133858  public:
133859  SgLabelRefExp* get_end_numeric_label() const /* (getDataAccessFunctionPrototypeString) */;
133860  void set_end_numeric_label(SgLabelRefExp* end_numeric_label) override /* (getDataAccessFunctionPrototypeString) */;
133861 
133862  public:
133863  SgForAllStatement::forall_statement_kind_enum get_forall_statement_kind() const;
133864  void set_forall_statement_kind(SgForAllStatement::forall_statement_kind_enum forall_statement_kind);
133865 
133866 
133867  public:
133868  virtual ~SgForAllStatement();
133869 
133870 
133871  public:
133872  SgForAllStatement(Sg_File_Info* startOfConstruct , SgExprListExp* forall_header = NULL, SgBasicBlock* body = NULL);
133873  SgForAllStatement(SgExprListExp* forall_header, SgBasicBlock* body);
133874 
133875  protected:
133876 // Start of memberFunctionString
133877 SgExprListExp* p_forall_header;
133878 
133879 // End of memberFunctionString
133880 // Start of memberFunctionString
133881 SgBasicBlock* p_body;
133882 
133883 // End of memberFunctionString
133884 // Start of memberFunctionString
133885 bool p_has_end_statement;
133886 
133887 // End of memberFunctionString
133888 // Start of memberFunctionString
133889 std::string p_string_label;
133890 
133891 // End of memberFunctionString
133892 // Start of memberFunctionString
133893 SgLabelRefExp* p_end_numeric_label;
133894 
133895 // End of memberFunctionString
133896 // Start of memberFunctionString
133897 SgForAllStatement::forall_statement_kind_enum p_forall_statement_kind;
133898 
133899 // End of memberFunctionString
133900 
133901 
133902 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
133903 
133904 
133905  };
133906 #endif
133907 
133908 // postdeclarations for SgForAllStatement
133909 
133910 /* #line 133911 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
133911 
133912 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
133913 
133914 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
133915 
133916 
133917 /* #line 133918 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
133918 
133919 
133920 
133921 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
133922 
133923 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
133924 // This code is automatically generated for each
133925 // terminal and non-terminal within the defined
133926 // grammar. There is a simple way to change the
133927 // code to fix bugs etc. See the ROSE README file
133928 // for directions.
133929 
133930 // tps: (02/22/2010): Adding DLL export requirements
133931 #include "rosedll.h"
133932 
133933 // predeclarations for SgUpcForAllStatement
133934 
133935 /* #line 133936 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
133936 
133937 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
133938 
133939 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
133940 
133941 #if 1
133942 // Class Definition for SgUpcForAllStatement
133943 class ROSE_DLL_API SgUpcForAllStatement : public SgScopeStatement
133944  {
133945  public:
133946 
133947 
133948 /* #line 133949 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
133949 
133950  virtual SgNode* copy ( SgCopyHelp& help) const override;
133951 // Start of memberFunctionString
133952 /* #line 3869 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
133953 
133954 /* #line 939 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
133955 
133956  public:
133957  virtual void append_init_stmt ( SgStatement* element );
133958  virtual void prepend_init_stmt ( SgStatement* element );
133959 
133960  public:
133961  // New functions added
133962  // void append_init_stmt ( const SgStatementPtrList::iterator & list, SgStatement* element );
133963  // void prepend_init_stmt ( const SgStatementPtrList::iterator & list, SgStatement* element );
133964 
133965  // void insert_init_stmt ( const SgStatementPtrList::iterator & list, SgStatement* element );
133966 
133967 
133968  public:
133969 
133970 
133971 
133972 
133974 
133975  // Liao, 6/17/2008 Copied from HEADER_FOR_STATEMENT_START
133976  SgStatementPtrList & get_init_stmt();
133977  const SgStatementPtrList & get_init_stmt() const;
133978  protected:
133979  virtual bool replace_child(SgStatement *,SgStatement *, bool extractListFromBasicBlock = false) override;
133980 
133981  public:
133982 
133983  // DQ (11/25/2005): Support for previous interface function.
133984  SgExpression* get_test_expr () const ROSE_DEPRECATED_FUNCTION;
133985  void set_test_expr (SgExpression* expression ) ROSE_DEPRECATED_FUNCTION;
133986 
133987  int replace_expression(SgExpression * original_expression, SgExpression * new_expression ) override;
133988 
133989 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
133990  virtual unsigned int cfgIndexForEnd() const override;
133991  virtual bool cfgIsIndexInteresting(unsigned int) const override;
133992  virtual unsigned int cfgFindChildIndex(SgNode* n) override;
133993  virtual unsigned int cfgFindNextChildIndex(SgNode* n) override;
133994  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
133995  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
133996 #endif
133997 
133998  // DQ (2/22/2007): Added for uniform support of mangled names
133999  virtual SgName get_mangled_name() const override;
134000 
134001 
134002 
134003 // End of memberFunctionString
134004 // Start of memberFunctionString
134005 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
134006 
134007 // *** COMMON CODE SECTION BEGINS HERE ***
134008 
134009  public:
134010 
134011  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
134012  // and not required which is required to match the other aspects of the copy mechanism code generation.
134013  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
134014  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
134015  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
134016  // virtual SgNode* copy ( const SgCopyHelp & help) const;
134017 
134019  virtual std::string class_name() const override;
134020 
134022  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
134023 
134025  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
134026  // static const VariantT static_variant = V_SgUpcForAllStatement;
134027  enum { static_variant = V_SgUpcForAllStatement };
134028 
134029  /* the generated cast function */
134031  ROSE_DLL_API friend SgUpcForAllStatement* isSgUpcForAllStatement( SgNode * s );
134032 
134034  ROSE_DLL_API friend const SgUpcForAllStatement* isSgUpcForAllStatement( const SgNode * s );
134035 
134036  // ******************************************
134037  // * Memory Pool / New / Delete
134038  // ******************************************
134039 
134040  public:
134042  static const unsigned pool_size; //
134044  static std::vector<unsigned char *> pools; //
134046  static SgUpcForAllStatement * next_node; //
134047 
134049  static unsigned long initializeStorageClassArray(SgUpcForAllStatementStorageClass *); //
134050 
134052  static void clearMemoryPool(); //
134053  static void deleteMemoryPool(); //
134054 
134056  static void extendMemoryPoolForFileIO(); //
134057 
134059  static SgUpcForAllStatement * getPointerFromGlobalIndex(unsigned long); //
134061  static SgUpcForAllStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
134062 
134064  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
134066  static void resetValidFreepointers(); //
134068  static unsigned long getNumberOfLastValidPointer(); //
134069 
134070 
134071 #if defined(INLINE_FUNCTIONS)
134072 
134073  inline void *operator new (size_t size);
134074 #else
134075 
134076  void *operator new (size_t size);
134077 #endif
134078 
134079  void operator delete (void* pointer, size_t size);
134080 
134081  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
134082  void operator delete (void* pointer)
134083  {
134084  // This is the generated delete operator...
134085  SgUpcForAllStatement::operator delete (pointer,sizeof(SgUpcForAllStatement));
134086  }
134087 
134089  static size_t numberOfNodes();
134090 
134092  static size_t memoryUsage();
134093 
134094  // End of scope which started in IR nodes specific code
134095  /* */
134096 
134097  /* name Internal Functions
134098  \brief Internal functions ... incomplete-documentation
134099 
134100  These functions have been made public as part of the design, but they are suggested for internal use
134101  or by particularly knowledgeable users for specialized tools or applications.
134102 
134103  \internal We could not make these private because they are required by user for special purposes. And
134104  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
134105 
134106  */
134107 
134108  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
134109  // overridden in every class by *generated* implementation
134111  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
134112  // MS: 06/28/02 container of names of variables or container indices
134113  // used used in the traversal to access AST successor nodes
134114  // overridden in every class by *generated* implementation
134117  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
134118 
134119  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
134120  // than all the vector copies. The implementation for these functions is generated for each class.
134122  virtual size_t get_numberOfTraversalSuccessors() override;
134124  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
134126  virtual size_t get_childIndex(SgNode *child) override;
134127 
134128 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
134129  // MS: 08/16/2002 method for generating RTI information
134131  virtual RTIReturnType roseRTI() override;
134132 #endif
134133  /* */
134134 
134135 
134136 
134137  /* name Deprecated Functions
134138  \brief Deprecated functions ... incomplete-documentation
134139 
134140  These functions have been deprecated from use.
134141  */
134142  /* */
134143 
134145  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
134146 
134147  // JJW (10/16/2008): Changed to a single function in Node.code, and put
134148  // getVariant() in #if 0 block to prevent confusing Doxygen
134149 #if 0
134150 
134151  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
134153  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
134154 #endif
134155  /* */
134156 
134157 
134158 
134159 
134160  public:
134161  /* name Traversal Support Functions
134162  \brief Traversal support functions ... incomplete-documentation
134163 
134164  These functions have been made public as part of the design, but they are suggested for internal use
134165  or by particularly knowledgable users for specialized tools or applications.
134166  */
134167  /* */
134168 
134169  // DQ (11/26/2005): Support for visitor pattern mechanims
134170  // (inferior to ROSE traversal mechanism, experimental).
134174 
134175  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
134177  virtual void accept (ROSE_VisitorPattern & visitor) override;
134178 
134179  // DQ (12/26/2005): Support for traversal based on the memory pool
134182  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
134183 
134186  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
134187 
134188  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
134189  // This traversal helps support internal tools that call static member functions.
134190  // note: this function operates on the memory pools.
134193  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
134194  /* */
134195 
134196 
134197  public:
134198  /* name Memory Allocation Functions
134199  \brief Memory allocations functions ... incomplete-documentation
134200 
134201  These functions have been made public as part of the design, but they are suggested for internal use
134202  or by particularly knowledgable users for specialized tools or applications.
134203  */
134204  /* */
134205 
134216  virtual bool isInMemoryPool() override;
134217 
134228  virtual void checkDataMemberPointersIfInMemoryPool() override;
134229 
134230  // DQ (4/30/2006): Modified to be a const function.
134245  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
134246 
134256  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
134257 
134269  virtual long getChildIndex( SgNode* childNode ) const override;
134270 
134271  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
134272  // comment here (changed to be a C style comment and not be a doxygen comment).
134273  /* \brief Constructor for use by AST File I/O Mechanism
134274 
134275  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
134276  which obtained via fast binary file I/O from disk.
134277  */
134278  // SgUpcForAllStatement( SgUpcForAllStatementStorageClass& source );
134279 
134280 
134281 
134282 
134283 
134284  // JH (10/24/2005): methods added to support the ast file IO
134285  private:
134286 
134287  /* name AST Memory Allocation Support Functions
134288  \brief Memory allocations support....
134289 
134290  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
134291  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
134292  and support the AST File I/O Mechanism.
134293  */
134294  /* */
134295 
134296  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
134297  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
134298  that I use the same type everywhere, if any changes are made. THe second one declares the type
134299  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
134300  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
134301  a correspinding one in the AST_FILE_IO class!
134302  */
134303  // DQ (9/2/2015): This typedef is no longer used, we can't define the
134304  // comment here (changed to be a C style comment and not be a doxygen comment).
134305  /* \brief Typedef used for low level memory access.
134306  */
134307  // typedef unsigned char* TestType;
134308 
134309  // DQ (9/2/2015): This typedef is no longer used, we can't define the
134310  // comment here (changed to be a C style comment and not be a doxygen comment).
134311  /* \brief Typedef used to hold memory addresses as values.
134312  */
134313  // typedef unsigned long AddressType;
134314 
134315 
134316 
134317  // necessary, to have direct access to the p_freepointer and the private methods !
134319  friend class AST_FILE_IO;
134320 
134322  friend class SgUpcForAllStatementStorageClass;
134323 
134325  friend class AstSpecificDataManagingClass;
134326 
134328  friend class AstSpecificDataManagingClassStorageClass;
134329 
134330  public:
134332  SgUpcForAllStatement( const SgUpcForAllStatementStorageClass& source );
134333 
134334  // private: // JJW hack
134335  /*
134336  name AST Memory Allocation Support Variables
134337  Memory allocations support variables
134338 
134339  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
134340  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
134341  and support the AST File I/O Mechanism.
134342  */
134343  /* */
134344 
134345  public:
134346 
134347  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
134348  // to current node (so that it will work cleanly with build functions to specify patterns).
134349  // virtual SgNode* addRegExpAttribute();
134356 
134357 // *** COMMON CODE SECTION ENDS HERE ***
134358 
134359 
134360 // End of memberFunctionString
134361 // Start of memberFunctionString
134362 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
134363 
134364  // the generated cast function
134365  // friend ROSE_DLL_API SgUpcForAllStatement* isSgUpcForAllStatement ( SgNode* s );
134366 
134368 
134369 
134370 // End of memberFunctionString
134371 // Start of memberFunctionString
134372 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
134373 
134374  void post_construction_initialization() override;
134375 
134376 
134377 // End of memberFunctionString
134378 
134379  public:
134380  SgForInitStatement* get_for_init_stmt() const;
134381  void set_for_init_stmt(SgForInitStatement* for_init_stmt);
134382 
134383  public:
134384  SgStatement* get_test() const;
134385  void set_test(SgStatement* test);
134386 
134387  public:
134388  SgExpression* get_increment() const;
134389  void set_increment(SgExpression* increment);
134390 
134391  public:
134392  SgExpression* get_affinity() const;
134393  void set_affinity(SgExpression* affinity);
134394 
134395  public:
134396  SgStatement* get_loop_body() const;
134397  void set_loop_body(SgStatement* loop_body);
134398 
134399 
134400  public:
134401  virtual ~SgUpcForAllStatement();
134402 
134403 
134404  public:
134405  SgUpcForAllStatement(Sg_File_Info* startOfConstruct , SgStatement* test = NULL, SgExpression* increment = NULL, SgExpression* affinity = NULL, SgStatement* loop_body = NULL);
134406  SgUpcForAllStatement(SgStatement* test, SgExpression* increment, SgExpression* affinity, SgStatement* loop_body);
134407 
134408  protected:
134409 // Start of memberFunctionString
134410 SgForInitStatement* p_for_init_stmt;
134411 
134412 // End of memberFunctionString
134413 // Start of memberFunctionString
134414 SgStatement* p_test;
134415 
134416 // End of memberFunctionString
134417 // Start of memberFunctionString
134418 SgExpression* p_increment;
134419 
134420 // End of memberFunctionString
134421 // Start of memberFunctionString
134422 SgExpression* p_affinity;
134423 
134424 // End of memberFunctionString
134425 // Start of memberFunctionString
134426 SgStatement* p_loop_body;
134427 
134428 // End of memberFunctionString
134429 
134430 
134431 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
134432 
134433 
134434  };
134435 #endif
134436 
134437 // postdeclarations for SgUpcForAllStatement
134438 
134439 /* #line 134440 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
134440 
134441 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
134442 
134443 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
134444 
134445 
134446 /* #line 134447 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
134447 
134448 
134449 
134450 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
134451 
134452 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
134453 // This code is automatically generated for each
134454 // terminal and non-terminal within the defined
134455 // grammar. There is a simple way to change the
134456 // code to fix bugs etc. See the ROSE README file
134457 // for directions.
134458 
134459 // tps: (02/22/2010): Adding DLL export requirements
134460 #include "rosedll.h"
134461 
134462 // predeclarations for SgCAFWithTeamStatement
134463 
134464 /* #line 134465 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
134465 
134466 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
134467 
134468 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
134469 
134470 #if 1
134471 // Class Definition for SgCAFWithTeamStatement
134472 class ROSE_DLL_API SgCAFWithTeamStatement : public SgScopeStatement
134473  {
134474  public:
134475 
134476 
134477 /* #line 134478 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
134478 
134479  virtual SgNode* copy ( SgCopyHelp& help) const override;
134480 // Start of memberFunctionString
134481 /* #line 19561 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
134482 
134483 
134484 
134485 
134486 // End of memberFunctionString
134487 // Start of memberFunctionString
134488 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
134489 
134490 // *** COMMON CODE SECTION BEGINS HERE ***
134491 
134492  public:
134493 
134494  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
134495  // and not required which is required to match the other aspects of the copy mechanism code generation.
134496  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
134497  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
134498  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
134499  // virtual SgNode* copy ( const SgCopyHelp & help) const;
134500 
134502  virtual std::string class_name() const override;
134503 
134505  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
134506 
134508  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
134509  // static const VariantT static_variant = V_SgCAFWithTeamStatement;
134510  enum { static_variant = V_SgCAFWithTeamStatement };
134511 
134512  /* the generated cast function */
134514  ROSE_DLL_API friend SgCAFWithTeamStatement* isSgCAFWithTeamStatement( SgNode * s );
134515 
134517  ROSE_DLL_API friend const SgCAFWithTeamStatement* isSgCAFWithTeamStatement( const SgNode * s );
134518 
134519  // ******************************************
134520  // * Memory Pool / New / Delete
134521  // ******************************************
134522 
134523  public:
134525  static const unsigned pool_size; //
134527  static std::vector<unsigned char *> pools; //
134529  static SgCAFWithTeamStatement * next_node; //
134530 
134532  static unsigned long initializeStorageClassArray(SgCAFWithTeamStatementStorageClass *); //
134533 
134535  static void clearMemoryPool(); //
134536  static void deleteMemoryPool(); //
134537 
134539  static void extendMemoryPoolForFileIO(); //
134540 
134542  static SgCAFWithTeamStatement * getPointerFromGlobalIndex(unsigned long); //
134544  static SgCAFWithTeamStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
134545 
134547  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
134549  static void resetValidFreepointers(); //
134551  static unsigned long getNumberOfLastValidPointer(); //
134552 
134553 
134554 #if defined(INLINE_FUNCTIONS)
134555 
134556  inline void *operator new (size_t size);
134557 #else
134558 
134559  void *operator new (size_t size);
134560 #endif
134561 
134562  void operator delete (void* pointer, size_t size);
134563 
134564  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
134565  void operator delete (void* pointer)
134566  {
134567  // This is the generated delete operator...
134568  SgCAFWithTeamStatement::operator delete (pointer,sizeof(SgCAFWithTeamStatement));
134569  }
134570 
134572  static size_t numberOfNodes();
134573 
134575  static size_t memoryUsage();
134576 
134577  // End of scope which started in IR nodes specific code
134578  /* */
134579 
134580  /* name Internal Functions
134581  \brief Internal functions ... incomplete-documentation
134582 
134583  These functions have been made public as part of the design, but they are suggested for internal use
134584  or by particularly knowledgeable users for specialized tools or applications.
134585 
134586  \internal We could not make these private because they are required by user for special purposes. And
134587  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
134588 
134589  */
134590 
134591  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
134592  // overridden in every class by *generated* implementation
134594  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
134595  // MS: 06/28/02 container of names of variables or container indices
134596  // used used in the traversal to access AST successor nodes
134597  // overridden in every class by *generated* implementation
134600  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
134601 
134602  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
134603  // than all the vector copies. The implementation for these functions is generated for each class.
134605  virtual size_t get_numberOfTraversalSuccessors() override;
134607  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
134609  virtual size_t get_childIndex(SgNode *child) override;
134610 
134611 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
134612  // MS: 08/16/2002 method for generating RTI information
134614  virtual RTIReturnType roseRTI() override;
134615 #endif
134616  /* */
134617 
134618 
134619 
134620  /* name Deprecated Functions
134621  \brief Deprecated functions ... incomplete-documentation
134622 
134623  These functions have been deprecated from use.
134624  */
134625  /* */
134626 
134628  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
134629 
134630  // JJW (10/16/2008): Changed to a single function in Node.code, and put
134631  // getVariant() in #if 0 block to prevent confusing Doxygen
134632 #if 0
134633 
134634  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
134636  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
134637 #endif
134638  /* */
134639 
134640 
134641 
134642 
134643  public:
134644  /* name Traversal Support Functions
134645  \brief Traversal support functions ... incomplete-documentation
134646 
134647  These functions have been made public as part of the design, but they are suggested for internal use
134648  or by particularly knowledgable users for specialized tools or applications.
134649  */
134650  /* */
134651 
134652  // DQ (11/26/2005): Support for visitor pattern mechanims
134653  // (inferior to ROSE traversal mechanism, experimental).
134657 
134658  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
134660  virtual void accept (ROSE_VisitorPattern & visitor) override;
134661 
134662  // DQ (12/26/2005): Support for traversal based on the memory pool
134665  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
134666 
134669  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
134670 
134671  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
134672  // This traversal helps support internal tools that call static member functions.
134673  // note: this function operates on the memory pools.
134676  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
134677  /* */
134678 
134679 
134680  public:
134681  /* name Memory Allocation Functions
134682  \brief Memory allocations functions ... incomplete-documentation
134683 
134684  These functions have been made public as part of the design, but they are suggested for internal use
134685  or by particularly knowledgable users for specialized tools or applications.
134686  */
134687  /* */
134688 
134699  virtual bool isInMemoryPool() override;
134700 
134711  virtual void checkDataMemberPointersIfInMemoryPool() override;
134712 
134713  // DQ (4/30/2006): Modified to be a const function.
134728  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
134729 
134739  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
134740 
134752  virtual long getChildIndex( SgNode* childNode ) const override;
134753 
134754  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
134755  // comment here (changed to be a C style comment and not be a doxygen comment).
134756  /* \brief Constructor for use by AST File I/O Mechanism
134757 
134758  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
134759  which obtained via fast binary file I/O from disk.
134760  */
134761  // SgCAFWithTeamStatement( SgCAFWithTeamStatementStorageClass& source );
134762 
134763 
134764 
134765 
134766 
134767  // JH (10/24/2005): methods added to support the ast file IO
134768  private:
134769 
134770  /* name AST Memory Allocation Support Functions
134771  \brief Memory allocations support....
134772 
134773  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
134774  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
134775  and support the AST File I/O Mechanism.
134776  */
134777  /* */
134778 
134779  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
134780  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
134781  that I use the same type everywhere, if any changes are made. THe second one declares the type
134782  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
134783  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
134784  a correspinding one in the AST_FILE_IO class!
134785  */
134786  // DQ (9/2/2015): This typedef is no longer used, we can't define the
134787  // comment here (changed to be a C style comment and not be a doxygen comment).
134788  /* \brief Typedef used for low level memory access.
134789  */
134790  // typedef unsigned char* TestType;
134791 
134792  // DQ (9/2/2015): This typedef is no longer used, we can't define the
134793  // comment here (changed to be a C style comment and not be a doxygen comment).
134794  /* \brief Typedef used to hold memory addresses as values.
134795  */
134796  // typedef unsigned long AddressType;
134797 
134798 
134799 
134800  // necessary, to have direct access to the p_freepointer and the private methods !
134802  friend class AST_FILE_IO;
134803 
134805  friend class SgCAFWithTeamStatementStorageClass;
134806 
134808  friend class AstSpecificDataManagingClass;
134809 
134811  friend class AstSpecificDataManagingClassStorageClass;
134812 
134813  public:
134815  SgCAFWithTeamStatement( const SgCAFWithTeamStatementStorageClass& source );
134816 
134817  // private: // JJW hack
134818  /*
134819  name AST Memory Allocation Support Variables
134820  Memory allocations support variables
134821 
134822  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
134823  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
134824  and support the AST File I/O Mechanism.
134825  */
134826  /* */
134827 
134828  public:
134829 
134830  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
134831  // to current node (so that it will work cleanly with build functions to specify patterns).
134832  // virtual SgNode* addRegExpAttribute();
134839 
134840 // *** COMMON CODE SECTION ENDS HERE ***
134841 
134842 
134843 // End of memberFunctionString
134844 // Start of memberFunctionString
134845 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
134846 
134847  // the generated cast function
134848  // friend ROSE_DLL_API SgCAFWithTeamStatement* isSgCAFWithTeamStatement ( SgNode* s );
134849 
134851 
134852 
134853 // End of memberFunctionString
134854 // Start of memberFunctionString
134855 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
134856 
134857  void post_construction_initialization() override;
134858 
134859 
134860 // End of memberFunctionString
134861 
134862  public:
134863  SgVarRefExp* get_teamId() const;
134864  void set_teamId(SgVarRefExp* teamId);
134865 
134866  public:
134867  SgBasicBlock* get_body() const;
134868  void set_body(SgBasicBlock* body);
134869 
134870  public:
134871  bool get_endHasTeamId() const;
134872  void set_endHasTeamId(bool endHasTeamId);
134873 
134874 
134875  public:
134876  virtual ~SgCAFWithTeamStatement();
134877 
134878 
134879  public:
134880  SgCAFWithTeamStatement(Sg_File_Info* startOfConstruct , SgVarRefExp* teamId = NULL, SgBasicBlock* body = NULL);
134882 
134883  protected:
134884 // Start of memberFunctionString
134885 SgVarRefExp* p_teamId;
134886 
134887 // End of memberFunctionString
134888 // Start of memberFunctionString
134889 SgBasicBlock* p_body;
134890 
134891 // End of memberFunctionString
134892 // Start of memberFunctionString
134893 bool p_endHasTeamId;
134894 
134895 // End of memberFunctionString
134896 
134897 
134898 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
134899 
134900 
134901  };
134902 #endif
134903 
134904 // postdeclarations for SgCAFWithTeamStatement
134905 
134906 /* #line 134907 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
134907 
134908 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
134909 
134910 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
134911 
134912 
134913 /* #line 134914 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
134914 
134915 
134916 
134917 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
134918 
134919 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
134920 // This code is automatically generated for each
134921 // terminal and non-terminal within the defined
134922 // grammar. There is a simple way to change the
134923 // code to fix bugs etc. See the ROSE README file
134924 // for directions.
134925 
134926 // tps: (02/22/2010): Adding DLL export requirements
134927 #include "rosedll.h"
134928 
134929 // predeclarations for SgFunctionParameterScope
134930 
134931 /* #line 134932 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
134932 
134933 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
134934 
134935 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
134936 
134937 #if 1
134938 // Class Definition for SgFunctionParameterScope
134939 class ROSE_DLL_API SgFunctionParameterScope : public SgScopeStatement
134940  {
134941  public:
134942 
134943 
134944 /* #line 134945 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
134945 
134946  virtual SgNode* copy ( SgCopyHelp& help) const override;
134947 // Start of memberFunctionString
134948 /* #line 1497 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
134949 
134950 
134951 // PP (06/01/20)
134952 SgName get_mangled_name() const override;
134953 
134954 /* #line 939 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
134955 
134956  public:
134957  virtual void append_declaration ( SgDeclarationStatement* element );
134958  virtual void prepend_declaration ( SgDeclarationStatement* element );
134959 
134960  public:
134961  // New functions added
134962  // void append_declaration ( const SgDeclarationStatementPtrList::iterator & list, SgDeclarationStatement* element );
134963  // void prepend_declaration ( const SgDeclarationStatementPtrList::iterator & list, SgDeclarationStatement* element );
134964 
134965  // void insert_declaration ( const SgDeclarationStatementPtrList::iterator & list, SgDeclarationStatement* element );
134966 
134967 
134968  public:
134969 
134970 
134971 
134972 
134973 // Rasmussen (09/24/2020): Finishing implementation of SgFunctionParameterScope for Jovial
134974  protected:
134975  virtual bool replace_child(SgStatement *,SgStatement *, bool extractListFromBasicBlock = false) override;
134976  virtual bool insert_child(SgStatement*, SgStatement*, bool inFront = true, bool extractListFromBasicBlock = false) override;
134977 
134978 
134979 
134980 // End of memberFunctionString
134981 // Start of memberFunctionString
134982 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
134983 
134984 // *** COMMON CODE SECTION BEGINS HERE ***
134985 
134986  public:
134987 
134988  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
134989  // and not required which is required to match the other aspects of the copy mechanism code generation.
134990  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
134991  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
134992  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
134993  // virtual SgNode* copy ( const SgCopyHelp & help) const;
134994 
134996  virtual std::string class_name() const override;
134997 
134999  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
135000 
135002  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
135003  // static const VariantT static_variant = V_SgFunctionParameterScope;
135004  enum { static_variant = V_SgFunctionParameterScope };
135005 
135006  /* the generated cast function */
135008  ROSE_DLL_API friend SgFunctionParameterScope* isSgFunctionParameterScope( SgNode * s );
135009 
135011  ROSE_DLL_API friend const SgFunctionParameterScope* isSgFunctionParameterScope( const SgNode * s );
135012 
135013  // ******************************************
135014  // * Memory Pool / New / Delete
135015  // ******************************************
135016 
135017  public:
135019  static const unsigned pool_size; //
135021  static std::vector<unsigned char *> pools; //
135023  static SgFunctionParameterScope * next_node; //
135024 
135026  static unsigned long initializeStorageClassArray(SgFunctionParameterScopeStorageClass *); //
135027 
135029  static void clearMemoryPool(); //
135030  static void deleteMemoryPool(); //
135031 
135033  static void extendMemoryPoolForFileIO(); //
135034 
135036  static SgFunctionParameterScope * getPointerFromGlobalIndex(unsigned long); //
135038  static SgFunctionParameterScope * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
135039 
135041  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
135043  static void resetValidFreepointers(); //
135045  static unsigned long getNumberOfLastValidPointer(); //
135046 
135047 
135048 #if defined(INLINE_FUNCTIONS)
135049 
135050  inline void *operator new (size_t size);
135051 #else
135052 
135053  void *operator new (size_t size);
135054 #endif
135055 
135056  void operator delete (void* pointer, size_t size);
135057 
135058  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
135059  void operator delete (void* pointer)
135060  {
135061  // This is the generated delete operator...
135062  SgFunctionParameterScope::operator delete (pointer,sizeof(SgFunctionParameterScope));
135063  }
135064 
135066  static size_t numberOfNodes();
135067 
135069  static size_t memoryUsage();
135070 
135071  // End of scope which started in IR nodes specific code
135072  /* */
135073 
135074  /* name Internal Functions
135075  \brief Internal functions ... incomplete-documentation
135076 
135077  These functions have been made public as part of the design, but they are suggested for internal use
135078  or by particularly knowledgeable users for specialized tools or applications.
135079 
135080  \internal We could not make these private because they are required by user for special purposes. And
135081  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
135082 
135083  */
135084 
135085  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
135086  // overridden in every class by *generated* implementation
135088  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
135089  // MS: 06/28/02 container of names of variables or container indices
135090  // used used in the traversal to access AST successor nodes
135091  // overridden in every class by *generated* implementation
135094  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
135095 
135096  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
135097  // than all the vector copies. The implementation for these functions is generated for each class.
135099  virtual size_t get_numberOfTraversalSuccessors() override;
135101  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
135103  virtual size_t get_childIndex(SgNode *child) override;
135104 
135105 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
135106  // MS: 08/16/2002 method for generating RTI information
135108  virtual RTIReturnType roseRTI() override;
135109 #endif
135110  /* */
135111 
135112 
135113 
135114  /* name Deprecated Functions
135115  \brief Deprecated functions ... incomplete-documentation
135116 
135117  These functions have been deprecated from use.
135118  */
135119  /* */
135120 
135122  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
135123 
135124  // JJW (10/16/2008): Changed to a single function in Node.code, and put
135125  // getVariant() in #if 0 block to prevent confusing Doxygen
135126 #if 0
135127 
135128  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
135130  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
135131 #endif
135132  /* */
135133 
135134 
135135 
135136 
135137  public:
135138  /* name Traversal Support Functions
135139  \brief Traversal support functions ... incomplete-documentation
135140 
135141  These functions have been made public as part of the design, but they are suggested for internal use
135142  or by particularly knowledgable users for specialized tools or applications.
135143  */
135144  /* */
135145 
135146  // DQ (11/26/2005): Support for visitor pattern mechanims
135147  // (inferior to ROSE traversal mechanism, experimental).
135151 
135152  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
135154  virtual void accept (ROSE_VisitorPattern & visitor) override;
135155 
135156  // DQ (12/26/2005): Support for traversal based on the memory pool
135159  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
135160 
135163  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
135164 
135165  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
135166  // This traversal helps support internal tools that call static member functions.
135167  // note: this function operates on the memory pools.
135170  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
135171  /* */
135172 
135173 
135174  public:
135175  /* name Memory Allocation Functions
135176  \brief Memory allocations functions ... incomplete-documentation
135177 
135178  These functions have been made public as part of the design, but they are suggested for internal use
135179  or by particularly knowledgable users for specialized tools or applications.
135180  */
135181  /* */
135182 
135193  virtual bool isInMemoryPool() override;
135194 
135205  virtual void checkDataMemberPointersIfInMemoryPool() override;
135206 
135207  // DQ (4/30/2006): Modified to be a const function.
135222  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
135223 
135233  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
135234 
135246  virtual long getChildIndex( SgNode* childNode ) const override;
135247 
135248  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
135249  // comment here (changed to be a C style comment and not be a doxygen comment).
135250  /* \brief Constructor for use by AST File I/O Mechanism
135251 
135252  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
135253  which obtained via fast binary file I/O from disk.
135254  */
135255  // SgFunctionParameterScope( SgFunctionParameterScopeStorageClass& source );
135256 
135257 
135258 
135259 
135260 
135261  // JH (10/24/2005): methods added to support the ast file IO
135262  private:
135263 
135264  /* name AST Memory Allocation Support Functions
135265  \brief Memory allocations support....
135266 
135267  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
135268  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
135269  and support the AST File I/O Mechanism.
135270  */
135271  /* */
135272 
135273  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
135274  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
135275  that I use the same type everywhere, if any changes are made. THe second one declares the type
135276  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
135277  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
135278  a correspinding one in the AST_FILE_IO class!
135279  */
135280  // DQ (9/2/2015): This typedef is no longer used, we can't define the
135281  // comment here (changed to be a C style comment and not be a doxygen comment).
135282  /* \brief Typedef used for low level memory access.
135283  */
135284  // typedef unsigned char* TestType;
135285 
135286  // DQ (9/2/2015): This typedef is no longer used, we can't define the
135287  // comment here (changed to be a C style comment and not be a doxygen comment).
135288  /* \brief Typedef used to hold memory addresses as values.
135289  */
135290  // typedef unsigned long AddressType;
135291 
135292 
135293 
135294  // necessary, to have direct access to the p_freepointer and the private methods !
135296  friend class AST_FILE_IO;
135297 
135299  friend class SgFunctionParameterScopeStorageClass;
135300 
135302  friend class AstSpecificDataManagingClass;
135303 
135305  friend class AstSpecificDataManagingClassStorageClass;
135306 
135307  public:
135309  SgFunctionParameterScope( const SgFunctionParameterScopeStorageClass& source );
135310 
135311  // private: // JJW hack
135312  /*
135313  name AST Memory Allocation Support Variables
135314  Memory allocations support variables
135315 
135316  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
135317  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
135318  and support the AST File I/O Mechanism.
135319  */
135320  /* */
135321 
135322  public:
135323 
135324  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
135325  // to current node (so that it will work cleanly with build functions to specify patterns).
135326  // virtual SgNode* addRegExpAttribute();
135333 
135334 // *** COMMON CODE SECTION ENDS HERE ***
135335 
135336 
135337 // End of memberFunctionString
135338 // Start of memberFunctionString
135339 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
135340 
135341  // the generated cast function
135342  // friend ROSE_DLL_API SgFunctionParameterScope* isSgFunctionParameterScope ( SgNode* s );
135343 
135345 
135346 
135347 // End of memberFunctionString
135348 // Start of memberFunctionString
135349 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
135350 
135351  void post_construction_initialization() override;
135352 
135353 
135354 // End of memberFunctionString
135355 
135356  public:
135357  const SgDeclarationStatementPtrList& get_declarations() const;
135358  SgDeclarationStatementPtrList& get_declarations();
135359 
135360 
135361  public:
135362  virtual ~SgFunctionParameterScope();
135363 
135364 
135365  public:
135366  SgFunctionParameterScope(Sg_File_Info* startOfConstruct );
135368 
135369  protected:
135370 // Start of memberFunctionString
135371 SgDeclarationStatementPtrList p_declarations;
135372 
135373 // End of memberFunctionString
135374 
135375 
135376 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
135377 
135378 
135379  };
135380 #endif
135381 
135382 // postdeclarations for SgFunctionParameterScope
135383 
135384 /* #line 135385 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
135385 
135386 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
135387 
135388 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
135389 
135390 
135391 /* #line 135392 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
135392 
135393 
135394 
135395 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
135396 
135397 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
135398 // This code is automatically generated for each
135399 // terminal and non-terminal within the defined
135400 // grammar. There is a simple way to change the
135401 // code to fix bugs etc. See the ROSE README file
135402 // for directions.
135403 
135404 // tps: (02/22/2010): Adding DLL export requirements
135405 #include "rosedll.h"
135406 
135407 // predeclarations for SgDeclarationScope
135408 
135409 /* #line 135410 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
135410 
135411 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
135412 
135413 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
135414 
135415 #if 1
135416 // Class Definition for SgDeclarationScope
135417 class ROSE_DLL_API SgDeclarationScope : public SgScopeStatement
135418  {
135419  public:
135420 
135421 
135422 /* #line 135423 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
135423 
135424  virtual SgNode* copy ( SgCopyHelp& help) const override;
135425 // Start of memberFunctionString
135426 /* #line 1512 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
135427 
135428 
135429  // DQ (7/19/2017): Adding support for mangled name support for new scope.
135430  virtual SgName get_mangled_name(void) const override;
135431 
135432  // DQ (7/19/2017): Added to support general name qualification
135433  virtual SgName get_qualified_name() const override;
135434 
135435 
135436 
135437 // End of memberFunctionString
135438 // Start of memberFunctionString
135439 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
135440 
135441 // *** COMMON CODE SECTION BEGINS HERE ***
135442 
135443  public:
135444 
135445  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
135446  // and not required which is required to match the other aspects of the copy mechanism code generation.
135447  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
135448  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
135449  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
135450  // virtual SgNode* copy ( const SgCopyHelp & help) const;
135451 
135453  virtual std::string class_name() const override;
135454 
135456  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
135457 
135459  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
135460  // static const VariantT static_variant = V_SgDeclarationScope;
135461  enum { static_variant = V_SgDeclarationScope };
135462 
135463  /* the generated cast function */
135465  ROSE_DLL_API friend SgDeclarationScope* isSgDeclarationScope( SgNode * s );
135466 
135468  ROSE_DLL_API friend const SgDeclarationScope* isSgDeclarationScope( const SgNode * s );
135469 
135470  // ******************************************
135471  // * Memory Pool / New / Delete
135472  // ******************************************
135473 
135474  public:
135476  static const unsigned pool_size; //
135478  static std::vector<unsigned char *> pools; //
135480  static SgDeclarationScope * next_node; //
135481 
135483  static unsigned long initializeStorageClassArray(SgDeclarationScopeStorageClass *); //
135484 
135486  static void clearMemoryPool(); //
135487  static void deleteMemoryPool(); //
135488 
135490  static void extendMemoryPoolForFileIO(); //
135491 
135493  static SgDeclarationScope * getPointerFromGlobalIndex(unsigned long); //
135495  static SgDeclarationScope * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
135496 
135498  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
135500  static void resetValidFreepointers(); //
135502  static unsigned long getNumberOfLastValidPointer(); //
135503 
135504 
135505 #if defined(INLINE_FUNCTIONS)
135506 
135507  inline void *operator new (size_t size);
135508 #else
135509 
135510  void *operator new (size_t size);
135511 #endif
135512 
135513  void operator delete (void* pointer, size_t size);
135514 
135515  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
135516  void operator delete (void* pointer)
135517  {
135518  // This is the generated delete operator...
135519  SgDeclarationScope::operator delete (pointer,sizeof(SgDeclarationScope));
135520  }
135521 
135523  static size_t numberOfNodes();
135524 
135526  static size_t memoryUsage();
135527 
135528  // End of scope which started in IR nodes specific code
135529  /* */
135530 
135531  /* name Internal Functions
135532  \brief Internal functions ... incomplete-documentation
135533 
135534  These functions have been made public as part of the design, but they are suggested for internal use
135535  or by particularly knowledgeable users for specialized tools or applications.
135536 
135537  \internal We could not make these private because they are required by user for special purposes. And
135538  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
135539 
135540  */
135541 
135542  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
135543  // overridden in every class by *generated* implementation
135545  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
135546  // MS: 06/28/02 container of names of variables or container indices
135547  // used used in the traversal to access AST successor nodes
135548  // overridden in every class by *generated* implementation
135551  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
135552 
135553  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
135554  // than all the vector copies. The implementation for these functions is generated for each class.
135556  virtual size_t get_numberOfTraversalSuccessors() override;
135558  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
135560  virtual size_t get_childIndex(SgNode *child) override;
135561 
135562 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
135563  // MS: 08/16/2002 method for generating RTI information
135565  virtual RTIReturnType roseRTI() override;
135566 #endif
135567  /* */
135568 
135569 
135570 
135571  /* name Deprecated Functions
135572  \brief Deprecated functions ... incomplete-documentation
135573 
135574  These functions have been deprecated from use.
135575  */
135576  /* */
135577 
135579  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
135580 
135581  // JJW (10/16/2008): Changed to a single function in Node.code, and put
135582  // getVariant() in #if 0 block to prevent confusing Doxygen
135583 #if 0
135584 
135585  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
135587  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
135588 #endif
135589  /* */
135590 
135591 
135592 
135593 
135594  public:
135595  /* name Traversal Support Functions
135596  \brief Traversal support functions ... incomplete-documentation
135597 
135598  These functions have been made public as part of the design, but they are suggested for internal use
135599  or by particularly knowledgable users for specialized tools or applications.
135600  */
135601  /* */
135602 
135603  // DQ (11/26/2005): Support for visitor pattern mechanims
135604  // (inferior to ROSE traversal mechanism, experimental).
135608 
135609  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
135611  virtual void accept (ROSE_VisitorPattern & visitor) override;
135612 
135613  // DQ (12/26/2005): Support for traversal based on the memory pool
135616  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
135617 
135620  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
135621 
135622  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
135623  // This traversal helps support internal tools that call static member functions.
135624  // note: this function operates on the memory pools.
135627  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
135628  /* */
135629 
135630 
135631  public:
135632  /* name Memory Allocation Functions
135633  \brief Memory allocations functions ... incomplete-documentation
135634 
135635  These functions have been made public as part of the design, but they are suggested for internal use
135636  or by particularly knowledgable users for specialized tools or applications.
135637  */
135638  /* */
135639 
135650  virtual bool isInMemoryPool() override;
135651 
135662  virtual void checkDataMemberPointersIfInMemoryPool() override;
135663 
135664  // DQ (4/30/2006): Modified to be a const function.
135679  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
135680 
135690  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
135691 
135703  virtual long getChildIndex( SgNode* childNode ) const override;
135704 
135705  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
135706  // comment here (changed to be a C style comment and not be a doxygen comment).
135707  /* \brief Constructor for use by AST File I/O Mechanism
135708 
135709  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
135710  which obtained via fast binary file I/O from disk.
135711  */
135712  // SgDeclarationScope( SgDeclarationScopeStorageClass& source );
135713 
135714 
135715 
135716 
135717 
135718  // JH (10/24/2005): methods added to support the ast file IO
135719  private:
135720 
135721  /* name AST Memory Allocation Support Functions
135722  \brief Memory allocations support....
135723 
135724  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
135725  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
135726  and support the AST File I/O Mechanism.
135727  */
135728  /* */
135729 
135730  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
135731  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
135732  that I use the same type everywhere, if any changes are made. THe second one declares the type
135733  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
135734  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
135735  a correspinding one in the AST_FILE_IO class!
135736  */
135737  // DQ (9/2/2015): This typedef is no longer used, we can't define the
135738  // comment here (changed to be a C style comment and not be a doxygen comment).
135739  /* \brief Typedef used for low level memory access.
135740  */
135741  // typedef unsigned char* TestType;
135742 
135743  // DQ (9/2/2015): This typedef is no longer used, we can't define the
135744  // comment here (changed to be a C style comment and not be a doxygen comment).
135745  /* \brief Typedef used to hold memory addresses as values.
135746  */
135747  // typedef unsigned long AddressType;
135748 
135749 
135750 
135751  // necessary, to have direct access to the p_freepointer and the private methods !
135753  friend class AST_FILE_IO;
135754 
135756  friend class SgDeclarationScopeStorageClass;
135757 
135759  friend class AstSpecificDataManagingClass;
135760 
135762  friend class AstSpecificDataManagingClassStorageClass;
135763 
135764  public:
135766  SgDeclarationScope( const SgDeclarationScopeStorageClass& source );
135767 
135768  // private: // JJW hack
135769  /*
135770  name AST Memory Allocation Support Variables
135771  Memory allocations support variables
135772 
135773  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
135774  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
135775  and support the AST File I/O Mechanism.
135776  */
135777  /* */
135778 
135779  public:
135780 
135781  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
135782  // to current node (so that it will work cleanly with build functions to specify patterns).
135783  // virtual SgNode* addRegExpAttribute();
135790 
135791 // *** COMMON CODE SECTION ENDS HERE ***
135792 
135793 
135794 // End of memberFunctionString
135795 // Start of memberFunctionString
135796 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
135797 
135798  // the generated cast function
135799  // friend ROSE_DLL_API SgDeclarationScope* isSgDeclarationScope ( SgNode* s );
135800 
135802 
135803 
135804 // End of memberFunctionString
135805 // Start of memberFunctionString
135806 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
135807 
135808  void post_construction_initialization() override;
135809 
135810 
135811 // End of memberFunctionString
135812 
135813 
135814  public:
135815  virtual ~SgDeclarationScope();
135816 
135817 
135818  public:
135819  SgDeclarationScope(Sg_File_Info* startOfConstruct );
135820  SgDeclarationScope();
135821 
135822  protected:
135823 
135824 
135825 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
135826 
135827 
135828  };
135829 #endif
135830 
135831 // postdeclarations for SgDeclarationScope
135832 
135833 /* #line 135834 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
135834 
135835 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
135836 
135837 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
135838 
135839 
135840 /* #line 135841 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
135841 
135842 
135843 
135844 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
135845 
135846 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
135847 // This code is automatically generated for each
135848 // terminal and non-terminal within the defined
135849 // grammar. There is a simple way to change the
135850 // code to fix bugs etc. See the ROSE README file
135851 // for directions.
135852 
135853 // tps: (02/22/2010): Adding DLL export requirements
135854 #include "rosedll.h"
135855 
135856 // predeclarations for SgRangeBasedForStatement
135857 
135858 /* #line 135859 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
135859 
135860 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
135861 
135862 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
135863 
135864 #if 1
135865 // Class Definition for SgRangeBasedForStatement
135866 class ROSE_DLL_API SgRangeBasedForStatement : public SgScopeStatement
135867  {
135868  public:
135869 
135870 
135871 /* #line 135872 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
135872 
135873  virtual SgNode* copy ( SgCopyHelp& help) const override;
135874 // Start of memberFunctionString
135875 /* #line 1419 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
135876 
135877 
135878  // void post_construction_initialization() override;
135879 
135880  protected:
135881  virtual bool replace_child(SgStatement *,SgStatement *, bool extractListFromBasicBlock = false) override;
135882 
135883  int replace_expression(SgExpression * original_expression, SgExpression * new_expression ) override;
135884 
135885 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
135886  virtual unsigned int cfgIndexForEnd() const override;
135887  virtual bool cfgIsIndexInteresting(unsigned int) const override;
135888  virtual unsigned int cfgFindChildIndex(SgNode* n) override;
135889  virtual unsigned int cfgFindNextChildIndex(SgNode* n) override;
135890  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
135891  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
135892 #endif
135893 
135894  // DQ (2/22/2007): Added for uniform support of mangled names
135895  virtual SgName get_mangled_name() const override;
135896 
135897 #if ALT_FIXUP_COPY
135898  // DQ (11/7/2007): These need to be called separately (see documentation)
135899  virtual void fixupCopy_scopes (SgNode* copy, SgCopyHelp & help) const override;
135900  virtual void fixupCopy_symbols (SgNode* copy, SgCopyHelp & help) const override;
135901  virtual void fixupCopy_references (SgNode* copy, SgCopyHelp & help) const override;
135902 #else
135903  // DQ (10/20/2007): Added fixup function to set scopes not set properly by the ROSETTA generated copy!
135904  virtual void fixupCopy(SgNode* copy, SgCopyHelp & help) const;
135905 #endif
135906 
135907  public:
135908  // DQ (3/28/2018): Get the range variable (target container, name used for unparser).
135909  // SgInitializedName* range_variable();
135910  // SgVarRefExp* range_variable_reference();
135911  SgExpression* range_expression();
135912 
135913 
135914 
135915 // End of memberFunctionString
135916 // Start of memberFunctionString
135917 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
135918 
135919 // *** COMMON CODE SECTION BEGINS HERE ***
135920 
135921  public:
135922 
135923  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
135924  // and not required which is required to match the other aspects of the copy mechanism code generation.
135925  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
135926  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
135927  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
135928  // virtual SgNode* copy ( const SgCopyHelp & help) const;
135929 
135931  virtual std::string class_name() const override;
135932 
135934  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
135935 
135937  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
135938  // static const VariantT static_variant = V_SgRangeBasedForStatement;
135939  enum { static_variant = V_SgRangeBasedForStatement };
135940 
135941  /* the generated cast function */
135943  ROSE_DLL_API friend SgRangeBasedForStatement* isSgRangeBasedForStatement( SgNode * s );
135944 
135946  ROSE_DLL_API friend const SgRangeBasedForStatement* isSgRangeBasedForStatement( const SgNode * s );
135947 
135948  // ******************************************
135949  // * Memory Pool / New / Delete
135950  // ******************************************
135951 
135952  public:
135954  static const unsigned pool_size; //
135956  static std::vector<unsigned char *> pools; //
135958  static SgRangeBasedForStatement * next_node; //
135959 
135961  static unsigned long initializeStorageClassArray(SgRangeBasedForStatementStorageClass *); //
135962 
135964  static void clearMemoryPool(); //
135965  static void deleteMemoryPool(); //
135966 
135968  static void extendMemoryPoolForFileIO(); //
135969 
135971  static SgRangeBasedForStatement * getPointerFromGlobalIndex(unsigned long); //
135973  static SgRangeBasedForStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
135974 
135976  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
135978  static void resetValidFreepointers(); //
135980  static unsigned long getNumberOfLastValidPointer(); //
135981 
135982 
135983 #if defined(INLINE_FUNCTIONS)
135984 
135985  inline void *operator new (size_t size);
135986 #else
135987 
135988  void *operator new (size_t size);
135989 #endif
135990 
135991  void operator delete (void* pointer, size_t size);
135992 
135993  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
135994  void operator delete (void* pointer)
135995  {
135996  // This is the generated delete operator...
135997  SgRangeBasedForStatement::operator delete (pointer,sizeof(SgRangeBasedForStatement));
135998  }
135999 
136001  static size_t numberOfNodes();
136002 
136004  static size_t memoryUsage();
136005 
136006  // End of scope which started in IR nodes specific code
136007  /* */
136008 
136009  /* name Internal Functions
136010  \brief Internal functions ... incomplete-documentation
136011 
136012  These functions have been made public as part of the design, but they are suggested for internal use
136013  or by particularly knowledgeable users for specialized tools or applications.
136014 
136015  \internal We could not make these private because they are required by user for special purposes. And
136016  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
136017 
136018  */
136019 
136020  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
136021  // overridden in every class by *generated* implementation
136023  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
136024  // MS: 06/28/02 container of names of variables or container indices
136025  // used used in the traversal to access AST successor nodes
136026  // overridden in every class by *generated* implementation
136029  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
136030 
136031  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
136032  // than all the vector copies. The implementation for these functions is generated for each class.
136034  virtual size_t get_numberOfTraversalSuccessors() override;
136036  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
136038  virtual size_t get_childIndex(SgNode *child) override;
136039 
136040 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
136041  // MS: 08/16/2002 method for generating RTI information
136043  virtual RTIReturnType roseRTI() override;
136044 #endif
136045  /* */
136046 
136047 
136048 
136049  /* name Deprecated Functions
136050  \brief Deprecated functions ... incomplete-documentation
136051 
136052  These functions have been deprecated from use.
136053  */
136054  /* */
136055 
136057  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
136058 
136059  // JJW (10/16/2008): Changed to a single function in Node.code, and put
136060  // getVariant() in #if 0 block to prevent confusing Doxygen
136061 #if 0
136062 
136063  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
136065  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
136066 #endif
136067  /* */
136068 
136069 
136070 
136071 
136072  public:
136073  /* name Traversal Support Functions
136074  \brief Traversal support functions ... incomplete-documentation
136075 
136076  These functions have been made public as part of the design, but they are suggested for internal use
136077  or by particularly knowledgable users for specialized tools or applications.
136078  */
136079  /* */
136080 
136081  // DQ (11/26/2005): Support for visitor pattern mechanims
136082  // (inferior to ROSE traversal mechanism, experimental).
136086 
136087  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
136089  virtual void accept (ROSE_VisitorPattern & visitor) override;
136090 
136091  // DQ (12/26/2005): Support for traversal based on the memory pool
136094  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
136095 
136098  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
136099 
136100  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
136101  // This traversal helps support internal tools that call static member functions.
136102  // note: this function operates on the memory pools.
136105  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
136106  /* */
136107 
136108 
136109  public:
136110  /* name Memory Allocation Functions
136111  \brief Memory allocations functions ... incomplete-documentation
136112 
136113  These functions have been made public as part of the design, but they are suggested for internal use
136114  or by particularly knowledgable users for specialized tools or applications.
136115  */
136116  /* */
136117 
136128  virtual bool isInMemoryPool() override;
136129 
136140  virtual void checkDataMemberPointersIfInMemoryPool() override;
136141 
136142  // DQ (4/30/2006): Modified to be a const function.
136157  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
136158 
136168  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
136169 
136181  virtual long getChildIndex( SgNode* childNode ) const override;
136182 
136183  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
136184  // comment here (changed to be a C style comment and not be a doxygen comment).
136185  /* \brief Constructor for use by AST File I/O Mechanism
136186 
136187  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
136188  which obtained via fast binary file I/O from disk.
136189  */
136190  // SgRangeBasedForStatement( SgRangeBasedForStatementStorageClass& source );
136191 
136192 
136193 
136194 
136195 
136196  // JH (10/24/2005): methods added to support the ast file IO
136197  private:
136198 
136199  /* name AST Memory Allocation Support Functions
136200  \brief Memory allocations support....
136201 
136202  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
136203  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
136204  and support the AST File I/O Mechanism.
136205  */
136206  /* */
136207 
136208  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
136209  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
136210  that I use the same type everywhere, if any changes are made. THe second one declares the type
136211  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
136212  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
136213  a correspinding one in the AST_FILE_IO class!
136214  */
136215  // DQ (9/2/2015): This typedef is no longer used, we can't define the
136216  // comment here (changed to be a C style comment and not be a doxygen comment).
136217  /* \brief Typedef used for low level memory access.
136218  */
136219  // typedef unsigned char* TestType;
136220 
136221  // DQ (9/2/2015): This typedef is no longer used, we can't define the
136222  // comment here (changed to be a C style comment and not be a doxygen comment).
136223  /* \brief Typedef used to hold memory addresses as values.
136224  */
136225  // typedef unsigned long AddressType;
136226 
136227 
136228 
136229  // necessary, to have direct access to the p_freepointer and the private methods !
136231  friend class AST_FILE_IO;
136232 
136234  friend class SgRangeBasedForStatementStorageClass;
136235 
136237  friend class AstSpecificDataManagingClass;
136238 
136240  friend class AstSpecificDataManagingClassStorageClass;
136241 
136242  public:
136244  SgRangeBasedForStatement( const SgRangeBasedForStatementStorageClass& source );
136245 
136246  // private: // JJW hack
136247  /*
136248  name AST Memory Allocation Support Variables
136249  Memory allocations support variables
136250 
136251  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
136252  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
136253  and support the AST File I/O Mechanism.
136254  */
136255  /* */
136256 
136257  public:
136258 
136259  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
136260  // to current node (so that it will work cleanly with build functions to specify patterns).
136261  // virtual SgNode* addRegExpAttribute();
136268 
136269 // *** COMMON CODE SECTION ENDS HERE ***
136270 
136271 
136272 // End of memberFunctionString
136273 // Start of memberFunctionString
136274 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
136275 
136276  // the generated cast function
136277  // friend ROSE_DLL_API SgRangeBasedForStatement* isSgRangeBasedForStatement ( SgNode* s );
136278 
136280 
136281 
136282 // End of memberFunctionString
136283 // Start of memberFunctionString
136284 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
136285 
136286  void post_construction_initialization() override;
136287 
136288 
136289 // End of memberFunctionString
136290 
136291  public:
136292  SgVariableDeclaration* get_iterator_declaration() const;
136293  void set_iterator_declaration(SgVariableDeclaration* iterator_declaration);
136294 
136295  public:
136296  SgVariableDeclaration* get_range_declaration() const;
136297  void set_range_declaration(SgVariableDeclaration* range_declaration);
136298 
136299  public:
136300  SgVariableDeclaration* get_begin_declaration() const;
136301  void set_begin_declaration(SgVariableDeclaration* begin_declaration);
136302 
136303  public:
136304  SgVariableDeclaration* get_end_declaration() const;
136305  void set_end_declaration(SgVariableDeclaration* end_declaration);
136306 
136307  public:
136308  SgExpression* get_not_equal_expression() const;
136309  void set_not_equal_expression(SgExpression* not_equal_expression);
136310 
136311  public:
136312  SgExpression* get_increment_expression() const;
136313  void set_increment_expression(SgExpression* increment_expression);
136314 
136315  public:
136316  SgStatement* get_loop_body() const;
136317  void set_loop_body(SgStatement* loop_body);
136318 
136319 
136320  public:
136321  virtual ~SgRangeBasedForStatement();
136322 
136323 
136324  public:
136325  SgRangeBasedForStatement(Sg_File_Info* startOfConstruct , SgVariableDeclaration* iterator_declaration = NULL, SgVariableDeclaration* range_declaration = NULL, SgVariableDeclaration* begin_declaration = NULL, SgVariableDeclaration* end_declaration = NULL, SgExpression* not_equal_expression = NULL, SgExpression* increment_expression = NULL, SgStatement* loop_body = NULL);
136326  SgRangeBasedForStatement(SgVariableDeclaration* iterator_declaration, SgVariableDeclaration* range_declaration, SgVariableDeclaration* begin_declaration, SgVariableDeclaration* end_declaration, SgExpression* not_equal_expression, SgExpression* increment_expression, SgStatement* loop_body);
136327 
136328  protected:
136329 // Start of memberFunctionString
136330 SgVariableDeclaration* p_iterator_declaration;
136331 
136332 // End of memberFunctionString
136333 // Start of memberFunctionString
136334 SgVariableDeclaration* p_range_declaration;
136335 
136336 // End of memberFunctionString
136337 // Start of memberFunctionString
136338 SgVariableDeclaration* p_begin_declaration;
136339 
136340 // End of memberFunctionString
136341 // Start of memberFunctionString
136342 SgVariableDeclaration* p_end_declaration;
136343 
136344 // End of memberFunctionString
136345 // Start of memberFunctionString
136346 SgExpression* p_not_equal_expression;
136347 
136348 // End of memberFunctionString
136349 // Start of memberFunctionString
136350 SgExpression* p_increment_expression;
136351 
136352 // End of memberFunctionString
136353 // Start of memberFunctionString
136354 SgStatement* p_loop_body;
136355 
136356 // End of memberFunctionString
136357 
136358 
136359 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
136360 
136361 
136362  };
136363 #endif
136364 
136365 // postdeclarations for SgRangeBasedForStatement
136366 
136367 /* #line 136368 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
136368 
136369 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
136370 
136371 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
136372 
136373 
136374 /* #line 136375 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
136375 
136376 
136377 
136378 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
136379 
136380 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
136381 // This code is automatically generated for each
136382 // terminal and non-terminal within the defined
136383 // grammar. There is a simple way to change the
136384 // code to fix bugs etc. See the ROSE README file
136385 // for directions.
136386 
136387 // tps: (02/22/2010): Adding DLL export requirements
136388 #include "rosedll.h"
136389 
136390 // predeclarations for SgFunctionTypeTable
136391 
136392 /* #line 136393 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
136393 
136394 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
136395 
136396 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
136397 
136398 #if 1
136399 // Class Definition for SgFunctionTypeTable
136400 class ROSE_DLL_API SgFunctionTypeTable : public SgStatement
136401  {
136402  public:
136403 
136404 
136405 /* #line 136406 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
136406 
136407  virtual SgNode* copy ( SgCopyHelp& help) const override;
136408 // Start of memberFunctionString
136409 /* #line 745 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
136410 
136411 
136413  // SgFunctionTypeTable ();
136414  // SgFunctionTypeTable( bool case_insensitive = false );
136416 
136417  void insert_function_type(const SgName&, SgType *);
136418  // void insert_function_type(const SgFunctionDeclaration *);
136419 
136420  SgType* lookup_function_type (const SgName&);
136421 
136422  // DQ (1/31/2007): Added to support AST merge.
136423  void remove_function_type(const SgName&);
136424 
136425  void print_functypetable(std::ostream& os = std::cout);
136426 
136427 
136428 
136429 // End of memberFunctionString
136430 // Start of memberFunctionString
136431 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
136432 
136433 // *** COMMON CODE SECTION BEGINS HERE ***
136434 
136435  public:
136436 
136437  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
136438  // and not required which is required to match the other aspects of the copy mechanism code generation.
136439  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
136440  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
136441  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
136442  // virtual SgNode* copy ( const SgCopyHelp & help) const;
136443 
136445  virtual std::string class_name() const override;
136446 
136448  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
136449 
136451  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
136452  // static const VariantT static_variant = V_SgFunctionTypeTable;
136453  enum { static_variant = V_SgFunctionTypeTable };
136454 
136455  /* the generated cast function */
136457  ROSE_DLL_API friend SgFunctionTypeTable* isSgFunctionTypeTable( SgNode * s );
136458 
136460  ROSE_DLL_API friend const SgFunctionTypeTable* isSgFunctionTypeTable( const SgNode * s );
136461 
136462  // ******************************************
136463  // * Memory Pool / New / Delete
136464  // ******************************************
136465 
136466  public:
136468  static const unsigned pool_size; //
136470  static std::vector<unsigned char *> pools; //
136472  static SgFunctionTypeTable * next_node; //
136473 
136475  static unsigned long initializeStorageClassArray(SgFunctionTypeTableStorageClass *); //
136476 
136478  static void clearMemoryPool(); //
136479  static void deleteMemoryPool(); //
136480 
136482  static void extendMemoryPoolForFileIO(); //
136483 
136485  static SgFunctionTypeTable * getPointerFromGlobalIndex(unsigned long); //
136487  static SgFunctionTypeTable * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
136488 
136490  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
136492  static void resetValidFreepointers(); //
136494  static unsigned long getNumberOfLastValidPointer(); //
136495 
136496 
136497 #if defined(INLINE_FUNCTIONS)
136498 
136499  inline void *operator new (size_t size);
136500 #else
136501 
136502  void *operator new (size_t size);
136503 #endif
136504 
136505  void operator delete (void* pointer, size_t size);
136506 
136507  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
136508  void operator delete (void* pointer)
136509  {
136510  // This is the generated delete operator...
136511  SgFunctionTypeTable::operator delete (pointer,sizeof(SgFunctionTypeTable));
136512  }
136513 
136515  static size_t numberOfNodes();
136516 
136518  static size_t memoryUsage();
136519 
136520  // End of scope which started in IR nodes specific code
136521  /* */
136522 
136523  /* name Internal Functions
136524  \brief Internal functions ... incomplete-documentation
136525 
136526  These functions have been made public as part of the design, but they are suggested for internal use
136527  or by particularly knowledgeable users for specialized tools or applications.
136528 
136529  \internal We could not make these private because they are required by user for special purposes. And
136530  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
136531 
136532  */
136533 
136534  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
136535  // overridden in every class by *generated* implementation
136537  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
136538  // MS: 06/28/02 container of names of variables or container indices
136539  // used used in the traversal to access AST successor nodes
136540  // overridden in every class by *generated* implementation
136543  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
136544 
136545  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
136546  // than all the vector copies. The implementation for these functions is generated for each class.
136548  virtual size_t get_numberOfTraversalSuccessors() override;
136550  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
136552  virtual size_t get_childIndex(SgNode *child) override;
136553 
136554 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
136555  // MS: 08/16/2002 method for generating RTI information
136557  virtual RTIReturnType roseRTI() override;
136558 #endif
136559  /* */
136560 
136561 
136562 
136563  /* name Deprecated Functions
136564  \brief Deprecated functions ... incomplete-documentation
136565 
136566  These functions have been deprecated from use.
136567  */
136568  /* */
136569 
136571  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
136572 
136573  // JJW (10/16/2008): Changed to a single function in Node.code, and put
136574  // getVariant() in #if 0 block to prevent confusing Doxygen
136575 #if 0
136576 
136577  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
136579  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
136580 #endif
136581  /* */
136582 
136583 
136584 
136585 
136586  public:
136587  /* name Traversal Support Functions
136588  \brief Traversal support functions ... incomplete-documentation
136589 
136590  These functions have been made public as part of the design, but they are suggested for internal use
136591  or by particularly knowledgable users for specialized tools or applications.
136592  */
136593  /* */
136594 
136595  // DQ (11/26/2005): Support for visitor pattern mechanims
136596  // (inferior to ROSE traversal mechanism, experimental).
136600 
136601  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
136603  virtual void accept (ROSE_VisitorPattern & visitor) override;
136604 
136605  // DQ (12/26/2005): Support for traversal based on the memory pool
136608  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
136609 
136612  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
136613 
136614  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
136615  // This traversal helps support internal tools that call static member functions.
136616  // note: this function operates on the memory pools.
136619  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
136620  /* */
136621 
136622 
136623  public:
136624  /* name Memory Allocation Functions
136625  \brief Memory allocations functions ... incomplete-documentation
136626 
136627  These functions have been made public as part of the design, but they are suggested for internal use
136628  or by particularly knowledgable users for specialized tools or applications.
136629  */
136630  /* */
136631 
136642  virtual bool isInMemoryPool() override;
136643 
136654  virtual void checkDataMemberPointersIfInMemoryPool() override;
136655 
136656  // DQ (4/30/2006): Modified to be a const function.
136671  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
136672 
136682  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
136683 
136695  virtual long getChildIndex( SgNode* childNode ) const override;
136696 
136697  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
136698  // comment here (changed to be a C style comment and not be a doxygen comment).
136699  /* \brief Constructor for use by AST File I/O Mechanism
136700 
136701  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
136702  which obtained via fast binary file I/O from disk.
136703  */
136704  // SgFunctionTypeTable( SgFunctionTypeTableStorageClass& source );
136705 
136706 
136707 
136708 
136709 
136710  // JH (10/24/2005): methods added to support the ast file IO
136711  private:
136712 
136713  /* name AST Memory Allocation Support Functions
136714  \brief Memory allocations support....
136715 
136716  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
136717  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
136718  and support the AST File I/O Mechanism.
136719  */
136720  /* */
136721 
136722  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
136723  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
136724  that I use the same type everywhere, if any changes are made. THe second one declares the type
136725  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
136726  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
136727  a correspinding one in the AST_FILE_IO class!
136728  */
136729  // DQ (9/2/2015): This typedef is no longer used, we can't define the
136730  // comment here (changed to be a C style comment and not be a doxygen comment).
136731  /* \brief Typedef used for low level memory access.
136732  */
136733  // typedef unsigned char* TestType;
136734 
136735  // DQ (9/2/2015): This typedef is no longer used, we can't define the
136736  // comment here (changed to be a C style comment and not be a doxygen comment).
136737  /* \brief Typedef used to hold memory addresses as values.
136738  */
136739  // typedef unsigned long AddressType;
136740 
136741 
136742 
136743  // necessary, to have direct access to the p_freepointer and the private methods !
136745  friend class AST_FILE_IO;
136746 
136748  friend class SgFunctionTypeTableStorageClass;
136749 
136751  friend class AstSpecificDataManagingClass;
136752 
136754  friend class AstSpecificDataManagingClassStorageClass;
136755 
136756  public:
136758  SgFunctionTypeTable( const SgFunctionTypeTableStorageClass& source );
136759 
136760  // private: // JJW hack
136761  /*
136762  name AST Memory Allocation Support Variables
136763  Memory allocations support variables
136764 
136765  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
136766  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
136767  and support the AST File I/O Mechanism.
136768  */
136769  /* */
136770 
136771  public:
136772 
136773  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
136774  // to current node (so that it will work cleanly with build functions to specify patterns).
136775  // virtual SgNode* addRegExpAttribute();
136782 
136783 // *** COMMON CODE SECTION ENDS HERE ***
136784 
136785 
136786 // End of memberFunctionString
136787 // Start of memberFunctionString
136788 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
136789 
136790  // the generated cast function
136791  // friend ROSE_DLL_API SgFunctionTypeTable* isSgFunctionTypeTable ( SgNode* s );
136792 
136793  typedef SgStatement base_node_type;
136794 
136795 
136796 // End of memberFunctionString
136797 // Start of memberFunctionString
136798 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
136799 
136800  void post_construction_initialization() override;
136801 
136802 
136803 // End of memberFunctionString
136804 
136805  public:
136806  SgSymbolTable* get_function_type_table() const;
136807  void set_function_type_table(SgSymbolTable* function_type_table);
136808 
136809 
136810  public:
136811  virtual ~SgFunctionTypeTable();
136812 
136813  protected:
136814 // Start of memberFunctionString
136816 
136817 // End of memberFunctionString
136818 
136819 
136820 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
136821 
136822 
136823  };
136824 #endif
136825 
136826 // postdeclarations for SgFunctionTypeTable
136827 
136828 /* #line 136829 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
136829 
136830 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
136831 
136832 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
136833 
136834 
136835 /* #line 136836 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
136836 
136837 
136838 
136839 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
136840 
136841 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
136842 // This code is automatically generated for each
136843 // terminal and non-terminal within the defined
136844 // grammar. There is a simple way to change the
136845 // code to fix bugs etc. See the ROSE README file
136846 // for directions.
136847 
136848 // tps: (02/22/2010): Adding DLL export requirements
136849 #include "rosedll.h"
136850 
136851 // predeclarations for SgDeclarationStatement
136852 
136853 /* #line 136854 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
136854 
136855 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
136856 
136857 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
136858 
136859 #if 1
136860 // Class Definition for SgDeclarationStatement
136861 class ROSE_DLL_API SgDeclarationStatement : public SgStatement
136862  {
136863  public:
136864 
136865 
136866 /* #line 136867 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
136867 
136868  virtual SgNode* copy ( SgCopyHelp& help) const override;
136869 // Start of memberFunctionString
136870 /* #line 768 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
136871 
136872 
136873  // DQ (5/9/2005): Added support for template specialization!
136879  {
136880  e_unknown = 0,
136881  e_no_specialization = 1,
136882  e_partial_specialization = 2,
136883  e_specialization = 3,
136884  e_template_specialization_last = 4
136885  };
136886 
136894  {
136895  // Bit values can support multiple values in a single enum type
136896  e_gnu_attribute_visability_unknown = 0,
136897  e_gnu_attribute_visability_unspecified = 1,
136898  e_gnu_attribute_visability_hidden = 2,
136899  e_gnu_attribute_visability_protected = 3,
136900  e_gnu_attribute_visability_internal = 4,
136901  e_last_gnu_visability_attribute
136902  };
136903 
136904  // DQ (4/25/2004): Part of new interface to declaration modifiers (refactoring).
136905  // The following access functions are not technically modifiers as defined
136906  // in the language. They act like modifiers to the unparser and to the
136907  // representation of the original source structure within the AST.
136908 
136909  // this is to distinguish a forward declaration (class or function)
136910  // class X;
136911  // class X { };
136912 
136913  // DQ (11/28/2009): Changed return type from "int" to "bool"
136914  bool isForward() const;
136915  void setForward();
136916  void unsetForward();
136917 
136918  // this is to distinguish cases like this
136919  // class-P pvar; -- isNameOnly=1
136920  // class-P { int a; } pvar; -- isNameOnly=0
136921 
136922  // DQ (11/28/2009): Changed return type from "int" to "bool"
136923  bool isNameOnly() const;
136924  void setNameOnly();
136925  void unsetNameOnly();
136926 
136927  // DQ (11/28/2009): Changed return type from "int" to "bool"
136928  bool isExternBrace() const;
136929  void setExternBrace();
136930  void unsetExternBrace();
136931 
136932  // this is to distinguish cases like this
136933  // class P var;
136934  // P var;
136935 
136936  // DQ (11/28/2009): Changed return type from "int" to "bool"
136937  bool skipElaborateType() const;
136938  void setSkipElaborateType();
136939  void unsetSkipElaborateType();
136940 
136941  // DQ (2/18/2006): Added general name mangling for all declarations (and some other IR nodes).
136942  virtual SgName get_mangled_name(void) const;
136943 
136944  protected:
136945  // Protected support for templates used within SgTemplateInstantiationDeclaration
136946  // SgTemplateInstantiationFunctionDecl and SgTemplateInstantiationMemberFunctionDecl
136947  void resetTemplateNameSupport ( bool & nameResetFromMangledForm, SgName & name );
136948 
136949  // Tests names generated specific to templates (such names should exclude
136950  // "<<" and ">>" since that will cause generated code to not compile).
136951  void testForBadGenerateTemplateName( const std::string & name );
136952 
136953  // Support for skipping the "<" and ">" when the output of the template argument list would be empty.
136954  bool skipEmptyTemplateArgumentListTest ( SgFunctionDeclaration* functionDeclaration );
136955 
136956  // DQ (12/30/2009): Uncomment this so that it can be placed into a class and not be a global scope (or file scope function).
136957  // DQ (4/28/2005): names of template functions are setup with a name of the form "foo<int>"
136958  // and must be converted to a name that can be more easily mangled (with out "<" and ">").
136959  // SgName fixupTemplateNameForMangledNameSupport( const SgName & s) const;
136960  SgName fixupTemplateNameForMangledNameSupport( const SgName & s) const;
136961 
136962  // DQ (6/2/2006): Support for name mangling of unnamed classes embedded in
136963  // SgVariableDeclaration and SgTypedefDeclaration.
136964  SgName generate_alternative_name_for_unnamed_declaration ( SgNode* parent ) const;
136965 
136966  // DQ (6/3/2006): Support for unnamed declaration is scopes.
136967  SgName generate_alternative_name_for_unnamed_declaration_in_scope ( SgScopeStatement* scope ) const;
136968 
136969  public:
136970 
136971 #if ALT_FIXUP_COPY
136972  // DQ (11/7/2007): These need to be called separately (see documentation)
136973  virtual void fixupCopy_scopes (SgNode* copy, SgCopyHelp & help) const override;
136974  virtual void fixupCopy_symbols (SgNode* copy, SgCopyHelp & help) const override;
136975  virtual void fixupCopy_references (SgNode* copy, SgCopyHelp & help) const override;
136976 #else
136977  // DQ (10/5/2007): Added fixup function to set scopes not set properly by the ROSETTA generated copy!
136978  virtual void fixupCopy(SgNode* copy, SgCopyHelp & help) const;
136979 #endif
136980 
136981  // DQ (10/10/2006): Handle qualified name list at the declarations directly, instead of at the types.
136982  // At present these are useful for SgVariableDeclaration and SgTypedefDeclaration, but likely others
136983  // at some point.
136984  SgQualifiedNamePtrList & get_qualifiedNameList();
136985  const SgQualifiedNamePtrList & get_qualifiedNameList() const;
136986  void set_qualifiedNameList( const SgQualifiedNamePtrList & x );
136987 
136988  // DQ (2/10/2007): Added virtual function to make it easier to use this on
136989  // the specific declarations where it is meaningful (ones associated with symbols).
136990  // This appears to have already been done a few days ago!
136991  // virtual SgSymbol* get_symbol_from_symbol_table();
136992 
136993  // DQ (2/11/2007): Added to support the virtual function in derived classes
136994  virtual SgSymbol* get_symbol_from_symbol_table() const override;
136995 
136996  // DQ (7/4/2007): Get the declaration for which get_symbol_from_symbol_table() returns a valid pointer.
136997  SgDeclarationStatement* get_declaration_associated_with_symbol() const;
136998 
136999  // DQ (7/4/2007): Search for a symbol from either the first non-defining
137000  // declaration or the defining declaration (this should always return a valid symbol).
137001  SgSymbol* search_for_symbol_from_symbol_table() const;
137002 
137003  // DQ (7/26/2007): report which declarations can be expected to have an associated symbol,
137004  // since not all declarations are associated with a symbol. This is mostly used for internal
137005  // testing so that we can know when to verify rules about associated symbols.
137006  bool hasAssociatedSymbol() const;
137007 
137008  // DQ (5/29/2011): Added to support for new qualified name generation
137010  SgName get_qualified_name_prefix() const;
137011 
137012  // DQ (12/23/2011): This is part of work to reorganize the templates in the AST (and a recent redesign of this work, because the first approach could not be supported in more complex code examples).
137014  SgName get_template_name() const;
137015 
137016  // DQ (1/26/2013): Added non-automatically generated version so that additional testing could be added.
137017  SgDeclarationStatement* get_definingDeclaration() const;
137018  void set_definingDeclaration(SgDeclarationStatement* definingDeclaration);
137019  SgDeclarationStatement* get_firstNondefiningDeclaration() const;
137020  void set_firstNondefiningDeclaration(SgDeclarationStatement* firstNondefiningDeclaration);
137021 
137022  // DQ (8/21/2013): Added function to support calling get_type() from a SgDeclarationStatement so that the
137023  // template low-level symbol table support function would compile cleanly. Note that it is an error to
137024  // call this function and it is not a virtual function that will cause derived class versions to be called
137025  // where appropriate (and it is not always appropriate, e.g a SgNamespaceDeclaration has no assocated SgType).
137026  SgType* get_type() const;
137027 
137028  // DQ (3/10/2018): Adding support to output the name, useful for debugging template instantiations which have more complex name using template arguments.
137029  std::string unparseNameToString();
137030 
137031 
137032 
137033 // End of memberFunctionString
137034 // Start of memberFunctionString
137035 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
137036 
137037 // *** COMMON CODE SECTION BEGINS HERE ***
137038 
137039  public:
137040 
137041  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
137042  // and not required which is required to match the other aspects of the copy mechanism code generation.
137043  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
137044  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
137045  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
137046  // virtual SgNode* copy ( const SgCopyHelp & help) const;
137047 
137049  virtual std::string class_name() const override;
137050 
137052  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
137053 
137055  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
137056  // static const VariantT static_variant = V_SgDeclarationStatement;
137057  enum { static_variant = V_SgDeclarationStatement };
137058 
137059  /* the generated cast function */
137061  ROSE_DLL_API friend SgDeclarationStatement* isSgDeclarationStatement( SgNode * s );
137062 
137064  ROSE_DLL_API friend const SgDeclarationStatement* isSgDeclarationStatement( const SgNode * s );
137065 
137066  // ******************************************
137067  // * Memory Pool / New / Delete
137068  // ******************************************
137069 
137070  public:
137072  static const unsigned pool_size; //
137074  static std::vector<unsigned char *> pools; //
137076  static SgDeclarationStatement * next_node; //
137077 
137079  static unsigned long initializeStorageClassArray(SgDeclarationStatementStorageClass *); //
137080 
137082  static void clearMemoryPool(); //
137083  static void deleteMemoryPool(); //
137084 
137086  static void extendMemoryPoolForFileIO(); //
137087 
137089  static SgDeclarationStatement * getPointerFromGlobalIndex(unsigned long); //
137091  static SgDeclarationStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
137092 
137094  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
137096  static void resetValidFreepointers(); //
137098  static unsigned long getNumberOfLastValidPointer(); //
137099 
137100 
137101 #if defined(INLINE_FUNCTIONS)
137102 
137103  inline void *operator new (size_t size);
137104 #else
137105 
137106  void *operator new (size_t size);
137107 #endif
137108 
137109  void operator delete (void* pointer, size_t size);
137110 
137111  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
137112  void operator delete (void* pointer)
137113  {
137114  // This is the generated delete operator...
137115  SgDeclarationStatement::operator delete (pointer,sizeof(SgDeclarationStatement));
137116  }
137117 
137119  static size_t numberOfNodes();
137120 
137122  static size_t memoryUsage();
137123 
137124  // End of scope which started in IR nodes specific code
137125  /* */
137126 
137127  /* name Internal Functions
137128  \brief Internal functions ... incomplete-documentation
137129 
137130  These functions have been made public as part of the design, but they are suggested for internal use
137131  or by particularly knowledgeable users for specialized tools or applications.
137132 
137133  \internal We could not make these private because they are required by user for special purposes. And
137134  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
137135 
137136  */
137137 
137138  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
137139  // overridden in every class by *generated* implementation
137141  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
137142  // MS: 06/28/02 container of names of variables or container indices
137143  // used used in the traversal to access AST successor nodes
137144  // overridden in every class by *generated* implementation
137147  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
137148 
137149  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
137150  // than all the vector copies. The implementation for these functions is generated for each class.
137152  virtual size_t get_numberOfTraversalSuccessors() override;
137154  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
137156  virtual size_t get_childIndex(SgNode *child) override;
137157 
137158 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
137159  // MS: 08/16/2002 method for generating RTI information
137161  virtual RTIReturnType roseRTI() override;
137162 #endif
137163  /* */
137164 
137165 
137166 
137167  /* name Deprecated Functions
137168  \brief Deprecated functions ... incomplete-documentation
137169 
137170  These functions have been deprecated from use.
137171  */
137172  /* */
137173 
137175  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
137176 
137177  // JJW (10/16/2008): Changed to a single function in Node.code, and put
137178  // getVariant() in #if 0 block to prevent confusing Doxygen
137179 #if 0
137180 
137181  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
137183  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
137184 #endif
137185  /* */
137186 
137187 
137188 
137189 
137190  public:
137191  /* name Traversal Support Functions
137192  \brief Traversal support functions ... incomplete-documentation
137193 
137194  These functions have been made public as part of the design, but they are suggested for internal use
137195  or by particularly knowledgable users for specialized tools or applications.
137196  */
137197  /* */
137198 
137199  // DQ (11/26/2005): Support for visitor pattern mechanims
137200  // (inferior to ROSE traversal mechanism, experimental).
137204 
137205  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
137207  virtual void accept (ROSE_VisitorPattern & visitor) override;
137208 
137209  // DQ (12/26/2005): Support for traversal based on the memory pool
137212  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
137213 
137216  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
137217 
137218  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
137219  // This traversal helps support internal tools that call static member functions.
137220  // note: this function operates on the memory pools.
137223  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
137224  /* */
137225 
137226 
137227  public:
137228  /* name Memory Allocation Functions
137229  \brief Memory allocations functions ... incomplete-documentation
137230 
137231  These functions have been made public as part of the design, but they are suggested for internal use
137232  or by particularly knowledgable users for specialized tools or applications.
137233  */
137234  /* */
137235 
137246  virtual bool isInMemoryPool() override;
137247 
137258  virtual void checkDataMemberPointersIfInMemoryPool() override;
137259 
137260  // DQ (4/30/2006): Modified to be a const function.
137275  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
137276 
137286  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
137287 
137299  virtual long getChildIndex( SgNode* childNode ) const override;
137300 
137301  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
137302  // comment here (changed to be a C style comment and not be a doxygen comment).
137303  /* \brief Constructor for use by AST File I/O Mechanism
137304 
137305  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
137306  which obtained via fast binary file I/O from disk.
137307  */
137308  // SgDeclarationStatement( SgDeclarationStatementStorageClass& source );
137309 
137310 
137311 
137312 
137313 
137314  // JH (10/24/2005): methods added to support the ast file IO
137315  private:
137316 
137317  /* name AST Memory Allocation Support Functions
137318  \brief Memory allocations support....
137319 
137320  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
137321  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
137322  and support the AST File I/O Mechanism.
137323  */
137324  /* */
137325 
137326  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
137327  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
137328  that I use the same type everywhere, if any changes are made. THe second one declares the type
137329  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
137330  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
137331  a correspinding one in the AST_FILE_IO class!
137332  */
137333  // DQ (9/2/2015): This typedef is no longer used, we can't define the
137334  // comment here (changed to be a C style comment and not be a doxygen comment).
137335  /* \brief Typedef used for low level memory access.
137336  */
137337  // typedef unsigned char* TestType;
137338 
137339  // DQ (9/2/2015): This typedef is no longer used, we can't define the
137340  // comment here (changed to be a C style comment and not be a doxygen comment).
137341  /* \brief Typedef used to hold memory addresses as values.
137342  */
137343  // typedef unsigned long AddressType;
137344 
137345 
137346 
137347  // necessary, to have direct access to the p_freepointer and the private methods !
137349  friend class AST_FILE_IO;
137350 
137352  friend class SgDeclarationStatementStorageClass;
137353 
137355  friend class AstSpecificDataManagingClass;
137356 
137358  friend class AstSpecificDataManagingClassStorageClass;
137359 
137360  public:
137362  SgDeclarationStatement( const SgDeclarationStatementStorageClass& source );
137363 
137364  // private: // JJW hack
137365  /*
137366  name AST Memory Allocation Support Variables
137367  Memory allocations support variables
137368 
137369  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
137370  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
137371  and support the AST File I/O Mechanism.
137372  */
137373  /* */
137374 
137375  public:
137376 
137377  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
137378  // to current node (so that it will work cleanly with build functions to specify patterns).
137379  // virtual SgNode* addRegExpAttribute();
137386 
137387 // *** COMMON CODE SECTION ENDS HERE ***
137388 
137389 
137390 // End of memberFunctionString
137391 // Start of memberFunctionString
137392 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
137393 
137394  // the generated cast function
137395  // friend ROSE_DLL_API SgDeclarationStatement* isSgDeclarationStatement ( SgNode* s );
137396 
137397  typedef SgStatement base_node_type;
137398 
137399 
137400 // End of memberFunctionString
137401 // Start of memberFunctionString
137402 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
137403 
137404  void post_construction_initialization() override;
137405 
137406 
137407 // End of memberFunctionString
137408 
137409  public:
137410  unsigned int get_decl_attributes() const;
137411  void set_decl_attributes(unsigned int decl_attributes);
137412 
137413  public:
137414  std::string get_linkage() const;
137415  void set_linkage(std::string linkage);
137416 
137417  public:
137418  const SgDeclarationModifier& get_declarationModifier() const;
137419  SgDeclarationModifier& get_declarationModifier();
137420 
137421  public:
137422  bool get_nameOnly() const;
137423  void set_nameOnly(bool nameOnly);
137424 
137425  public:
137426  bool get_forward() const;
137427  void set_forward(bool forward);
137428 
137429  public:
137430  bool get_externBrace() const;
137431  void set_externBrace(bool externBrace);
137432 
137433  public:
137434  bool get_skipElaborateType() const;
137435  void set_skipElaborateType(bool skipElaborateType);
137436 
137437 
137438 
137439 
137440  public:
137441  std::string get_binding_label() const;
137442  void set_binding_label(std::string binding_label);
137443 
137444  public:
137445  SgDeclarationScope* get_declarationScope() const;
137446  void set_declarationScope(SgDeclarationScope* declarationScope);
137447 
137448  public:
137449  bool get_unparse_template_ast() const;
137450  void set_unparse_template_ast(bool unparse_template_ast);
137451 
137452 
137453  public:
137454  virtual ~SgDeclarationStatement();
137455 
137456 
137457  public:
137458  SgDeclarationStatement(Sg_File_Info* startOfConstruct );
137460 
137461  protected:
137462 // Start of memberFunctionString
137463 unsigned int p_decl_attributes;
137464 
137465 // End of memberFunctionString
137466 // Start of memberFunctionString
137467 std::string p_linkage;
137468 
137469 // End of memberFunctionString
137470 // Start of memberFunctionString
137472 
137473 // End of memberFunctionString
137474 // Start of memberFunctionString
137476 
137477 // End of memberFunctionString
137478 // Start of memberFunctionString
137480 
137481 // End of memberFunctionString
137482 // Start of memberFunctionString
137484 
137485 // End of memberFunctionString
137486 // Start of memberFunctionString
137488 
137489 // End of memberFunctionString
137490 // Start of memberFunctionString
137492 
137493 // End of memberFunctionString
137494 // Start of memberFunctionString
137496 
137497 // End of memberFunctionString
137498 // Start of memberFunctionString
137499 SgQualifiedNamePtrList p_qualifiedNameList;
137500 
137501 // End of memberFunctionString
137502 // Start of memberFunctionString
137503 std::string p_binding_label;
137504 
137505 // End of memberFunctionString
137506 // Start of memberFunctionString
137507 SgDeclarationScope* p_declarationScope;
137508 
137509 // End of memberFunctionString
137510 // Start of memberFunctionString
137511 bool p_unparse_template_ast;
137512 
137513 // End of memberFunctionString
137514 
137515 
137516 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
137517 
137518 
137519  };
137520 #endif
137521 
137522 // postdeclarations for SgDeclarationStatement
137523 
137524 /* #line 137525 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
137525 /* #line 1060 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
137526 
137527 // The following template function requires the definition of SgBasicBlock, so
137528 // we put it in the POSTDECLARATION.
137529 
137530 #if 1
137531 // DQ (6/15/2019): Renamed function parameter to make code more clear for debugging.
137532 // Note: Rose_STL_Container<Elemtype*> will be either an STL vector of SgStatement* or SgDeclarationStatement*.
137533 
137534 // DQ (12/30/2009): This has been moved to the header file since it was a used in
137535 // several places and could not be supported in the source file now that we
137536 // support the generation of smaller and more numerous files by ROSETTA.
137537 // template <class Elemtype> inline bool
137538 // StatementListInsertChild( SgStatement *parent, Rose_STL_Container<Elemtype*>& l, SgStatement *target,
137539 // SgStatement *n, bool inFront, bool extractFromBasicBlock, bool removeCurrent)
137540 template <class Elemtype>
137541 inline bool
137542 StatementListInsertChild( SgStatement *parent, Rose_STL_Container<Elemtype*>& statement_or_declaration_container, SgStatement *target,
137543  SgStatement *n, bool inFront, bool extractFromBasicBlock, bool removeCurrent)
137544  {
137545  // DQ (4/3/2012): Simple globally visible function to call (used for debugging in ROSE).
137546  // void testAstForUniqueNodes ( SgNode* node );
137547 
137548 #if 0
137549  printf ("In StatementListInsertChild: statement_or_declaration_container.size() = %" PRIuPTR " \n",statement_or_declaration_container.size());
137550  printf ("In StatementListInsertChild: inFront = %s \n",inFront ? "true" : "false");
137551  printf ("In StatementListInsertChild: parent = %p \n",parent);
137552  printf ("In StatementListInsertChild: target = %p \n",target);
137553  printf ("In StatementListInsertChild: n = %p \n",n);
137554 #endif
137555 
137556  ROSE_ASSERT(parent != NULL);
137557  ROSE_ASSERT(target != NULL);
137558 
137559  // DQ (7/19/2005): Milind says that we can comment this out (because the remove function
137560  // calls the replace function which calls this insert function with n == NULL)
137561  // This function's name is misleading and could be more clear.
137562  // ROSE_ASSERT(n != NULL);
137563 
137564  bool targetLocated = find(statement_or_declaration_container.begin(),statement_or_declaration_container.end(),target) != statement_or_declaration_container.end();
137565  if (targetLocated == false)
137566  {
137567  printf ("Error: target statement = %p not found in list of statements provided. \n",target);
137568  ROSE_ASSERT(false);
137569  }
137570  // ROSE_ASSERT (find(statement_or_declaration_container.begin(),statement_or_declaration_container.end(),target) != statement_or_declaration_container.end());
137571 
137572  unsigned int size = statement_or_declaration_container.size();
137573  for (unsigned int p = 0; p < size; ++p)
137574  {
137575  // printf ("Looping through the list of statements! p = %p \n",statement_or_declaration_container[p]);
137576  if ( statement_or_declaration_container[p] == target )
137577  {
137578  if (removeCurrent)
137579  {
137580  // DQ (9/27/2007): Reported as an error by STL debugging mode, fixed as part of move from std::list to std::vector uniformly in ROSE.
137581  statement_or_declaration_container.erase(statement_or_declaration_container.begin() + p);
137582 #if 0
137583  if (SgProject::get_verbose() >= 1)
137584  {
137585  printf ("In StatementListInsertChild: test 1: Supress marking parent = %p = %s as isModified \n",parent,parent->class_name().c_str());
137586  }
137587 #endif
137588  // DQ (4/16/2015): Supress marking parent as isModified (we might want to mark this as containing a transformation).
137589  // parent->set_isModified(true);
137590  }
137591 
137592  if (!inFront)
137593  ++p;
137594 #if 0
137595  // DQ (12/6/2004): This interfers with the execution of the EDG/Sage III translation!
137596  // DQ (12/5/2004): There should be a valid scope (set before passing the statement to this function!)
137597  ROSE_ASSERT(n == NULL || n->get_scope() != NULL);
137598 #endif
137599 #if 0
137600  // DQ (3/9/2012): Added debugging code for testing test2004_77.C.
137601  SgDeclarationStatement* declarationStatement = isSgDeclarationStatement(n);
137602  if (declarationStatement != NULL)
137603  {
137604  printf ("In Cxx_Grammar.h StatementListInsertChild(): declarationStatement = %p = %s declarationStatement->get_firstNondefiningDeclaration() = %p declarationStatement->get_definingDeclaration() = %p \n",
137605  declarationStatement,declarationStatement->class_name().c_str(),declarationStatement->get_firstNondefiningDeclaration(),declarationStatement->get_definingDeclaration());
137606  }
137607 #endif
137608 
137609  SgBasicBlock *bn = extractFromBasicBlock? isSgBasicBlock(n) : NULL;
137610  if (bn == NULL)
137611  {
137612  assert(n == 0 || dynamic_cast<Elemtype*>(n) != 0);
137613  if (n != 0)
137614  {
137615  // DQ (10/17/2004): We MUST set the parent here, the string based AST rewrite mechanism
137616  // requires this semantics. Previously it was removed as part of the movement toward an
137617  // initialization of the parent pointers within a post processing phase. This post-processing
137618  // phase was a result of an attempt (successful) to remove side-effects from the set_xxx
137619  // access functions generated by ROSETTA. At some point parents will be be initialized within
137620  // the EDG/Sage interface, but we will be more careful how it is done and not reintroduce the
137621  // previous side-effects back into the access functions.
137622 #if 0
137623  // n->set_parent(parent);
137624  printf ("*** WARNING: In Cxx_Grammar.h StatementListInsertChild(): (part 1) parent now set only if already NULL (statement = %p parent = %p statement = %s) \n",n,n->get_parent(),n->class_name().c_str());
137625  if (n->get_parent() == NULL)
137626  {
137627  n->set_parent(parent);
137628  }
137629 
137630  // DQ (3/21/2012): Make sure that it would have been set to the same value.
137631  if (parent != n->get_parent())
137632  {
137633  ROSE_ASSERT(parent != NULL);
137634  ROSE_ASSERT(n->get_parent());
137635  printf ("parent = %d = %s while n= %p = %s \n",parent,parent->class_name().c_str(),n,n->class_name().c_str());
137636  printf ("parent = %d = %s while n->get_parent() = %p = %s \n",parent,parent->class_name().c_str(),n->get_parent(),n->get_parent()->class_name().c_str());
137637  }
137638  ROSE_ASSERT(parent == n->get_parent());
137639 #else
137640  // DQ (3/21/2012): We always want to set the parent based on the structure, sometimes it is built
137641  // and initialy defined with a parent based on the scope, since at that point the structural location
137642  // for the statement might not be know. but we update that here and set the parent to match the
137643  // structure of the AST (ALWAYS).
137644 
137645  if (n->get_parent() == NULL)
137646  {
137647 #if 0
137648  printf ("In Cxx_Grammar.h StatementListInsertChild(): n->get_parent() == NULL for statement = %p = %s it will be set to parent = %p = %s \n",n,n->class_name().c_str(),parent,parent->class_name().c_str());
137649 #endif
137650  }
137651  else
137652  {
137653  if (parent != n->get_parent())
137654  {
137655  ROSE_ASSERT(parent != NULL);
137656  ROSE_ASSERT(n->get_parent());
137657 #ifdef ROSE_DEBUG_NEW_EDG_ROSE_CONNECTION
137658  printf ("In Cxx_Grammar.h StatementListInsertChild(): n->get_parent() != NULL and is set incorrectly to %p = %s for statement = %p = %s it will be set to parent = %p = %s \n",
137659  n,n->class_name().c_str(),n->get_parent(),n->get_parent()->class_name().c_str(),parent,parent->class_name().c_str());
137660 #endif
137661  }
137662  }
137663 
137664  n->set_parent(parent);
137665 
137666 #endif
137667  // DQ (12/5/2004): Later in the day I discovered that this allows member functions to be defined
137668  // as have a scope which is not a class definition (which is an error caught in the unparser!).
137669  // So it would be good to make the scope correctly (this could be a start at marking all other
137670  // pointers within a new node added by the rewrite system correctly!). I think the solution is
137671  // to set the scope before it gets to this function since this is a general mechanism for inserting
137672  // statements and not one which should have such a side-effect as setting or resetting the scope
137673  // of statements containing explicit scope pointers.
137674 
137675  // DQ (6/24/2006): The scope is not explicitly represented and this is not required
137676  // ("n->set_scope(parentScope);" was already commented out so this is unused code).
137677 
137678  // DQ (12/5/2004): If the scope is stored explicitly then we must also set the scope of the new
137679  // statement. But we will not know the scope, so for now derive it structurally (using the parent).
137680  // But not all statements have a set_scope function, so see if this one does.
137681  SgScopeStatement* parentScope = isSgScopeStatement(parent);
137682 
137683  if (parentScope == NULL)
137684  parentScope = parent->get_scope();
137685 
137686  // This is simple error checking
137687  ROSE_ASSERT(parentScope != NULL);
137688  // n->set_scope(parentScope);
137689 
137690  statement_or_declaration_container.insert(statement_or_declaration_container.begin() + p, static_cast<Elemtype*>(n));
137691 #if 0
137692  if (SgProject::get_verbose() >= 1)
137693  {
137694  printf ("In StatementListInsertChild: test 2: Supress marking parent = %p = %s as isModified \n",parent,parent->class_name().c_str());
137695  }
137696 #endif
137697  // DQ (4/16/2015): Supress marking parent as isModified (we might want to mark this as containing a transformation).
137698  // parent->set_isModified(true);
137699 
137700  // DQ (4/3/2012): Added test to make sure that the pointers are unique.
137701  // testAstForUniqueNodes(parentScope);
137702  }
137703  }
137704  else
137705  { // extract statements from n ,which is a basic block
137706  SgStatementPtrList& nl = bn->get_statements();
137707  for (SgStatementPtrList::iterator pp = nl.begin(); pp != nl.end(); ++pp)
137708  {
137709  SgStatement* stmt = *pp;
137710  assert(dynamic_cast<Elemtype*>(stmt) != NULL);
137711 
137712  // DQ (10/17/2004): We MUST set the parent here, see note in true part of conditional (above).
137713  // stmt->set_parent(parent);
137714  printf ("*** WARNING: In Cxx_Grammar.h StatementListInsertChild(): (part 2) parent now set only if already NULL n->get_parent() = %p \n",n->get_parent());
137715  if (n->get_parent() == NULL)
137716  {
137717  stmt->set_parent(parent);
137718  }
137719 
137720  // DQ (12/5/2004): We MUST set the scope here, see note in true part of conditional (above).
137721  SgScopeStatement* parentScope = isSgScopeStatement(parent);
137722  if (parentScope == NULL)
137723  parentScope = parent->get_scope();
137724 
137725  // This is simple error checking
137726  ROSE_ASSERT(parentScope != NULL);
137727  // n->set_scope(parentScope);
137728 
137729  statement_or_declaration_container.insert(statement_or_declaration_container.begin() + p, static_cast<Elemtype*>(stmt));
137730 #if 0
137731  if (SgProject::get_verbose() >= 1)
137732  {
137733  printf ("In StatementListInsertChild: test 3: Supress marking parent = %p = %s as isModified \n",parent,parent->class_name().c_str());
137734  }
137735 #endif
137736  // DQ (4/16/2015): Supress marking parent as isModified (we might want to mark this as containing a transformation).
137737  // parent->set_isModified(true);
137738 
137739  // DQ (4/3/2012): Added test to make sure that the pointers are unique.
137740  // testAstForUniqueNodes(parentScope);
137741  }
137742  }
137743 
137744  return true;
137745  }
137746  }
137747 
137748  return false;
137749  }
137750 #endif
137751 
137752 // HEADER_ BASIC_BLOCK_ POSTDECLARATION_END
137753 
137754 
137755 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
137756 
137757 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
137758 
137759 
137760 /* #line 137761 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
137761 
137762 
137763 
137764 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
137765 
137766 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
137767 // This code is automatically generated for each
137768 // terminal and non-terminal within the defined
137769 // grammar. There is a simple way to change the
137770 // code to fix bugs etc. See the ROSE README file
137771 // for directions.
137772 
137773 // tps: (02/22/2010): Adding DLL export requirements
137774 #include "rosedll.h"
137775 
137776 // predeclarations for SgFunctionParameterList
137777 
137778 /* #line 137779 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
137779 
137780 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
137781 
137782 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
137783 
137784 #if 1
137785 // Class Definition for SgFunctionParameterList
137787  {
137788  public:
137789 
137790 
137791 /* #line 137792 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
137792 
137793  virtual SgNode* copy ( SgCopyHelp& help) const override;
137794 // Start of memberFunctionString
137795 /* #line 1637 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
137796 
137797 /* #line 939 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
137798 
137799  public:
137800  virtual void append_arg ( SgInitializedName* element );
137801  virtual void prepend_arg ( SgInitializedName* element );
137802 
137803  public:
137804  // New functions added
137805  // SgInitializedNamePtrList::iterator append_arg ( const SgInitializedNamePtrList::iterator & list, SgInitializedName* element );
137806  // SgInitializedNamePtrList::iterator prepend_arg ( const SgInitializedNamePtrList::iterator & list, SgInitializedName* element );
137807 
137808  // SgInitializedNamePtrList::iterator insert_arg ( const SgInitializedNamePtrList::iterator & list, SgInitializedName* element );
137809 
137810 
137811  public:
137812 
137813 
137814 
137815 
137816  // DQ (2/18/2006): Added general name mangling for all declarations (and some other IR nodes).
137817  virtual SgName get_mangled_name(void) const override;
137818 
137819 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
137820  virtual unsigned int cfgIndexForEnd() const override;
137821  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
137822  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
137823 #endif
137824 
137825 #if ALT_FIXUP_COPY
137826  // DQ (11/7/2007): These need to be called separately (see documentation)
137827  virtual void fixupCopy_scopes (SgNode* copy, SgCopyHelp & help) const override;
137828  virtual void fixupCopy_symbols (SgNode* copy, SgCopyHelp & help) const override;
137829  virtual void fixupCopy_references (SgNode* copy, SgCopyHelp & help) const override;
137830 #else
137831  // DQ (10/6/2007): Added fixup function to set scopes not set properly by the ROSETTA generated copy!
137832  virtual void fixupCopy(SgNode* copy, SgCopyHelp & help) const;
137833 #endif
137834 
137835 
137836 
137837 // End of memberFunctionString
137838 // Start of memberFunctionString
137839 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
137840 
137841 // *** COMMON CODE SECTION BEGINS HERE ***
137842 
137843  public:
137844 
137845  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
137846  // and not required which is required to match the other aspects of the copy mechanism code generation.
137847  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
137848  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
137849  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
137850  // virtual SgNode* copy ( const SgCopyHelp & help) const;
137851 
137853  virtual std::string class_name() const override;
137854 
137856  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
137857 
137859  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
137860  // static const VariantT static_variant = V_SgFunctionParameterList;
137861  enum { static_variant = V_SgFunctionParameterList };
137862 
137863  /* the generated cast function */
137865  ROSE_DLL_API friend SgFunctionParameterList* isSgFunctionParameterList( SgNode * s );
137866 
137868  ROSE_DLL_API friend const SgFunctionParameterList* isSgFunctionParameterList( const SgNode * s );
137869 
137870  // ******************************************
137871  // * Memory Pool / New / Delete
137872  // ******************************************
137873 
137874  public:
137876  static const unsigned pool_size; //
137878  static std::vector<unsigned char *> pools; //
137880  static SgFunctionParameterList * next_node; //
137881 
137883  static unsigned long initializeStorageClassArray(SgFunctionParameterListStorageClass *); //
137884 
137886  static void clearMemoryPool(); //
137887  static void deleteMemoryPool(); //
137888 
137890  static void extendMemoryPoolForFileIO(); //
137891 
137893  static SgFunctionParameterList * getPointerFromGlobalIndex(unsigned long); //
137895  static SgFunctionParameterList * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
137896 
137898  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
137900  static void resetValidFreepointers(); //
137902  static unsigned long getNumberOfLastValidPointer(); //
137903 
137904 
137905 #if defined(INLINE_FUNCTIONS)
137906 
137907  inline void *operator new (size_t size);
137908 #else
137909 
137910  void *operator new (size_t size);
137911 #endif
137912 
137913  void operator delete (void* pointer, size_t size);
137914 
137915  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
137916  void operator delete (void* pointer)
137917  {
137918  // This is the generated delete operator...
137919  SgFunctionParameterList::operator delete (pointer,sizeof(SgFunctionParameterList));
137920  }
137921 
137923  static size_t numberOfNodes();
137924 
137926  static size_t memoryUsage();
137927 
137928  // End of scope which started in IR nodes specific code
137929  /* */
137930 
137931  /* name Internal Functions
137932  \brief Internal functions ... incomplete-documentation
137933 
137934  These functions have been made public as part of the design, but they are suggested for internal use
137935  or by particularly knowledgeable users for specialized tools or applications.
137936 
137937  \internal We could not make these private because they are required by user for special purposes. And
137938  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
137939 
137940  */
137941 
137942  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
137943  // overridden in every class by *generated* implementation
137945  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
137946  // MS: 06/28/02 container of names of variables or container indices
137947  // used used in the traversal to access AST successor nodes
137948  // overridden in every class by *generated* implementation
137951  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
137952 
137953  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
137954  // than all the vector copies. The implementation for these functions is generated for each class.
137956  virtual size_t get_numberOfTraversalSuccessors() override;
137958  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
137960  virtual size_t get_childIndex(SgNode *child) override;
137961 
137962 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
137963  // MS: 08/16/2002 method for generating RTI information
137965  virtual RTIReturnType roseRTI() override;
137966 #endif
137967  /* */
137968 
137969 
137970 
137971  /* name Deprecated Functions
137972  \brief Deprecated functions ... incomplete-documentation
137973 
137974  These functions have been deprecated from use.
137975  */
137976  /* */
137977 
137979  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
137980 
137981  // JJW (10/16/2008): Changed to a single function in Node.code, and put
137982  // getVariant() in #if 0 block to prevent confusing Doxygen
137983 #if 0
137984 
137985  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
137987  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
137988 #endif
137989  /* */
137990 
137991 
137992 
137993 
137994  public:
137995  /* name Traversal Support Functions
137996  \brief Traversal support functions ... incomplete-documentation
137997 
137998  These functions have been made public as part of the design, but they are suggested for internal use
137999  or by particularly knowledgable users for specialized tools or applications.
138000  */
138001  /* */
138002 
138003  // DQ (11/26/2005): Support for visitor pattern mechanims
138004  // (inferior to ROSE traversal mechanism, experimental).
138008 
138009  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
138011  virtual void accept (ROSE_VisitorPattern & visitor) override;
138012 
138013  // DQ (12/26/2005): Support for traversal based on the memory pool
138016  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
138017 
138020  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
138021 
138022  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
138023  // This traversal helps support internal tools that call static member functions.
138024  // note: this function operates on the memory pools.
138027  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
138028  /* */
138029 
138030 
138031  public:
138032  /* name Memory Allocation Functions
138033  \brief Memory allocations functions ... incomplete-documentation
138034 
138035  These functions have been made public as part of the design, but they are suggested for internal use
138036  or by particularly knowledgable users for specialized tools or applications.
138037  */
138038  /* */
138039 
138050  virtual bool isInMemoryPool() override;
138051 
138062  virtual void checkDataMemberPointersIfInMemoryPool() override;
138063 
138064  // DQ (4/30/2006): Modified to be a const function.
138079  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
138080 
138090  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
138091 
138103  virtual long getChildIndex( SgNode* childNode ) const override;
138104 
138105  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
138106  // comment here (changed to be a C style comment and not be a doxygen comment).
138107  /* \brief Constructor for use by AST File I/O Mechanism
138108 
138109  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
138110  which obtained via fast binary file I/O from disk.
138111  */
138112  // SgFunctionParameterList( SgFunctionParameterListStorageClass& source );
138113 
138114 
138115 
138116 
138117 
138118  // JH (10/24/2005): methods added to support the ast file IO
138119  private:
138120 
138121  /* name AST Memory Allocation Support Functions
138122  \brief Memory allocations support....
138123 
138124  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
138125  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
138126  and support the AST File I/O Mechanism.
138127  */
138128  /* */
138129 
138130  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
138131  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
138132  that I use the same type everywhere, if any changes are made. THe second one declares the type
138133  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
138134  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
138135  a correspinding one in the AST_FILE_IO class!
138136  */
138137  // DQ (9/2/2015): This typedef is no longer used, we can't define the
138138  // comment here (changed to be a C style comment and not be a doxygen comment).
138139  /* \brief Typedef used for low level memory access.
138140  */
138141  // typedef unsigned char* TestType;
138142 
138143  // DQ (9/2/2015): This typedef is no longer used, we can't define the
138144  // comment here (changed to be a C style comment and not be a doxygen comment).
138145  /* \brief Typedef used to hold memory addresses as values.
138146  */
138147  // typedef unsigned long AddressType;
138148 
138149 
138150 
138151  // necessary, to have direct access to the p_freepointer and the private methods !
138153  friend class AST_FILE_IO;
138154 
138156  friend class SgFunctionParameterListStorageClass;
138157 
138159  friend class AstSpecificDataManagingClass;
138160 
138162  friend class AstSpecificDataManagingClassStorageClass;
138163 
138164  public:
138166  SgFunctionParameterList( const SgFunctionParameterListStorageClass& source );
138167 
138168  // private: // JJW hack
138169  /*
138170  name AST Memory Allocation Support Variables
138171  Memory allocations support variables
138172 
138173  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
138174  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
138175  and support the AST File I/O Mechanism.
138176  */
138177  /* */
138178 
138179  public:
138180 
138181  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
138182  // to current node (so that it will work cleanly with build functions to specify patterns).
138183  // virtual SgNode* addRegExpAttribute();
138190 
138191 // *** COMMON CODE SECTION ENDS HERE ***
138192 
138193 
138194 // End of memberFunctionString
138195 // Start of memberFunctionString
138196 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
138197 
138198  // the generated cast function
138199  // friend ROSE_DLL_API SgFunctionParameterList* isSgFunctionParameterList ( SgNode* s );
138200 
138202 
138203 
138204 // End of memberFunctionString
138205 // Start of memberFunctionString
138206 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
138207 
138208  void post_construction_initialization() override;
138209 
138210 
138211 // End of memberFunctionString
138212 
138213  public:
138214  const SgInitializedNamePtrList& get_args() const;
138215  SgInitializedNamePtrList& get_args();
138216 
138217 
138218  public:
138219  virtual ~SgFunctionParameterList();
138220 
138221 
138222  public:
138223  SgFunctionParameterList(Sg_File_Info* startOfConstruct );
138225 
138226  protected:
138227 // Start of memberFunctionString
138228 SgInitializedNamePtrList p_args;
138229 
138230 // End of memberFunctionString
138231 
138232 
138233 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
138234 
138235 
138236  };
138237 #endif
138238 
138239 // postdeclarations for SgFunctionParameterList
138240 
138241 /* #line 138242 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
138242 
138243 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
138244 
138245 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
138246 
138247 
138248 /* #line 138249 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
138249 
138250 
138251 
138252 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
138253 
138254 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
138255 // This code is automatically generated for each
138256 // terminal and non-terminal within the defined
138257 // grammar. There is a simple way to change the
138258 // code to fix bugs etc. See the ROSE README file
138259 // for directions.
138260 
138261 // tps: (02/22/2010): Adding DLL export requirements
138262 #include "rosedll.h"
138263 
138264 // predeclarations for SgVariableDeclaration
138265 
138266 /* #line 138267 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
138267 
138268 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
138269 
138270 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
138271 
138272 #if 1
138273 // Class Definition for SgVariableDeclaration
138275  {
138276  public:
138277 
138278 
138279 /* #line 138280 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
138280 
138281  virtual SgNode* copy ( SgCopyHelp& help) const override;
138282 // Start of memberFunctionString
138283 /* #line 1793 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
138284 
138285 
138293  {
138294  // Bit values can support multiple values in a single enum type
138295  e_gnu_attribute_unknown = 0,
138296  e_gnu_attribute_unspecified = 1,
138297  e_gnu_attribute__weak__ = 2,
138298  e_gnu_attribute__unused__ = 3,
138299  e_gnu_attribute__deprecated__ = 4,
138300  e_gnu_attribute__nocommon__ = 5,
138301  e_gnu_attribute__transparent_union__ = 6,
138302  e_last_gnu_declaration_attribute
138303  };
138304 
138305  // Special constructor (not generated, I don't know why this is here)
138306  // SgVariableDeclaration (Sg_File_Info*, const SgName &, SgType*, SgInitializer*);
138307 
138308  // Special constructor
138309  // SgVariableDeclaration (Sg_File_Info *info, const SgName& var_name,
138310  // SgType *type, SgInitializer *initializer = NULL );
138311  SgVariableDeclaration ( Sg_File_Info *info, const SgName& var_name, SgType *type, SgInitializer *initializer = NULL );
138312  SgVariableDeclaration ( const SgName& var_name, SgType *type, SgInitializer *initializer );
138313 
138314  // DQ (11/10/2006): This function is called by the custom written constructors (refactored code to simplify their implementation).
138315  void initializeData(Sg_File_Info *info, const SgName& var_name, SgType *type, SgInitializer *initializer);
138316 
138317  // DQ (7/18/2012): New constructors and initializations to support building a SgVariableDeclaration from an existing SgInitializedName
138320  void initializeData(Sg_File_Info *info, SgInitializedName* c_item);
138321 
138322  void setDeclarationOnly() ROSE_DEPRECATED_FUNCTION;
138323  void setExtern() override ROSE_DEPRECATED_FUNCTION;
138324  void setStatic() override ROSE_DEPRECATED_FUNCTION;
138325  SgVariableDefinition *get_definition( SgInitializedName* ditem = 0 );
138326  SgInitializedName *get_decl_item(const SgName&);
138327  // SgInitializedName *get_defn_item(const SgName&);
138328 
138329  // DQ (1/20/2014): This must be a SgValueExp, it is a constant expression ROSE uses a SgValueExp for this).
138330  // SgUnsignedLongVal *get_bitfield();
138331  // void set_bitfield (SgUnsignedLongVal*);
138332  SgExpression* get_bitfield();
138333  void set_bitfield (SgExpression*);
138334 
138335  // Only on the first variable declaration's
138336  int reset_initializer(SgInitializer *);
138337 
138338  // void printVariableName(int);
138339  // void printVariables(SgUnparse_Info&, ostream& os=cout);
138340 
138341  SgStatement *get_next(int &) const;
138342 
138343  // DQ (2/18/2006): Added general name mangling for all declarations (and some other IR nodes).
138344  virtual SgName get_mangled_name(void) const override;
138345 
138346  // DQ (6/1/2006): Get the type (base type if more than one variable) used for all variables in this variable declaration.
138347  // SgType *get_type();
138348 
138349  // DQ (7/19/2005): SgVariableDeclaration should have a structural definition of its scope (based on position in
138350  // source code) while the variables declared should (and do) have a possibly different scope (via name qualification).
138351  // DQ (7/4/2005): implement get_scope to query the initialized names in the initialized name list (SgInitializedNamePtrList)
138352  // without this function we evaluate the scope using a traversal of the parents!
138353  // SgScopeStatement* get_scope(void) const;
138354 
138355 // HEADER_LIST_DECLARATIONS
138356  public:
138357 #if 0
138358  SgInitializedNamePtrList::iterator append_variable ( const SgInitializedName & what, SgInitializer* init );
138359  SgInitializedNamePtrList::iterator prepend_variable ( const SgInitializedName & what, SgInitializer* init );
138360  SgInitializedNamePtrList::iterator insert_variable ( const SgInitializedNamePtrList::iterator & where, const SgInitializedName & what );
138361 #else
138362  // DQ (6/1/2004): Changed list to contain pointers to SgInitializedName elements
138363  void append_variable ( SgInitializedName* what, SgInitializer* init );
138364  void prepend_variable ( SgInitializedName* what, SgInitializer* init );
138365  // void insert_variable ( const SgInitializedNamePtrList::iterator & where, SgInitializedName* what );
138366 #endif
138367 
138368 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
138369  virtual unsigned int cfgIndexForEnd() const override;
138370  virtual unsigned int cfgFindChildIndex(SgNode* n) override;
138371  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
138372  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
138373 #endif
138374 
138375 #if ALT_FIXUP_COPY
138376  // DQ (11/7/2007): These need to be called separately (see documentation)
138377  virtual void fixupCopy_scopes (SgNode* copy, SgCopyHelp & help) const override;
138378  virtual void fixupCopy_symbols (SgNode* copy, SgCopyHelp & help) const override;
138379  virtual void fixupCopy_references (SgNode* copy, SgCopyHelp & help) const override;
138380 #else
138381  virtual void fixupCopy(SgNode* copy, SgCopyHelp & help) const;
138382 #endif
138383 
138385  SgDeclarationStatement* get_baseTypeDefiningDeclaration() const;
138386  void set_baseTypeDefiningDeclaration(SgDeclarationStatement* d);
138387 
138388 #if 0
138389  // This is now stored in the type modifier (I think this is a better implementation)
138390 
138391  // DQ (11/18/2007): Support for Fortran declaration attributes
138392  /* Fortran Specific Declaration Attributes
138393  e_unknown_attribute_spec,
138394  e_accessStatement,
138395  e_allocatableStatement,
138396  e_asynchronousStatement,
138397  e_bindStatement,
138398  e_dataStatement,
138399  e_dimensionStatement,
138400  e_externalStatement,
138401  e_intentStatement,
138402  e_intrinsicStatement,
138403  e_optionalStatement,
138404  e_parameterStatement,
138405  e_pointerStatement,
138406  e_protectedStatement,
138407  e_saveStatement,
138408  e_targetStatement,
138409  e_valueStatement,
138410  e_volatileStatement,
138411  e_last_attribute_spec
138412  */
138413 
138414  // Notes:
138415  // access_x_Statement could be mapped to C++ access specifiers
138416  // bind is more complex than just using a flag here
138417  // dimension details are specified within the SgArrayType, the flag here indicates that it was used in the variable declaration explicitly.
138418 
138419  bool testAccess_private_Attribute() const;
138420  void setAccess_private_Attribute();
138421  void unsetAccess_private_Attribute();
138422 
138423  bool testAccess_protected_Attribute() const;
138424  void setAccess_protected_Attribute();
138425  void unsetAccess_protected_Attribute();
138426 
138427  bool testAccess_public_Attribute() const;
138428  void setAccess_public_Attribute();
138429  void unsetAccess_public_Attribute();
138430 
138431  bool testAllocatableAttribute() const;
138432  void setAllocatableAttribute();
138433  void unsetAllocatableAttribute();
138434 
138435  bool testAsynchronousAttribute() const;
138436  void setAsynchronousAttribute();
138437  void unsetAsynchronousAttribute();
138438 
138439  bool testBindAttribute() const;
138440  void setBindAttribute();
138441  void unsetBindAttribute();
138442 
138443  bool testDataAttribute() const;
138444  void setDataAttribute();
138445  void unsetDataAttribute();
138446 
138447  bool testDimensionAttribute() const;
138448  void setDimensionAttribute();
138449  void unsetDimensionAttribute();
138450 
138451  bool testExternalAttribute() const;
138452  void setExternalAttribute();
138453  void unsetExternalAttribute();
138454 
138455  bool testIntent_in_Attribute() const;
138456  void setIntent_in_Attribute();
138457  void unsetIntent_in_Attribute();
138458 
138459  bool testIntent_out_Attribute() const;
138460  void setIntent_out_Attribute();
138461  void unsetIntent_out_Attribute();
138462 
138463  bool testIntent_inout_Attribute() const;
138464  void setIntent_inout_Attribute();
138465  void unsetIntent_inout_Attribute();
138466 
138467  bool testIntrinsicAttribute() const;
138468  void setIntrinsicAttribute();
138469  void unsetIntrinsicAttribute();
138470 
138471  bool testOptionalAttribute() const;
138472  void setOptionalAttribute();
138473  void unsetOptionalAttribute();
138474 
138475  bool testParameterAttribute() const;
138476  void setParameterAttribute();
138477  void unsetParameterAttribute();
138478 
138479  bool testPointerAttribute() const;
138480  void setPointerAttribute();
138481  void unsetPointerAttribute();
138482 
138483  bool testProtectedAttribute() const;
138484  void setProtectedAttribute();
138485  void unsetProtectedAttribute();
138486 
138487  bool testSaveAttribute() const;
138488  void setSaveAttribute();
138489  void unsetSaveAttribute();
138490 
138491  bool testTargetAttribute() const;
138492  void setTargetAttribute();
138493  void unsetTargetAttribute();
138494 
138495  bool testValueAttribute() const;
138496  void setValueAttribute();
138497  void unsetValueAttribute();
138498 
138499  bool testVolatileAttribute() const;
138500  void setVolatileAttribute();
138501  void unsetVolatileAttribute();
138502 #endif
138503 
138504  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
138505  int get_name_qualification_length() const;
138506  void set_name_qualification_length(int name_qualification_length);
138507 
138508  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
138509  bool get_type_elaboration_required() const;
138510  void set_type_elaboration_required(bool type_elaboration_required);
138511 
138512  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
138513  bool get_global_qualification_required() const;
138514  void set_global_qualification_required(bool global_qualification_required);
138515 
138516  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
138517  bool get_requiresGlobalNameQualificationOnType () const;
138518  void set_requiresGlobalNameQualificationOnType ( bool requiresGlobalNameQualificationOnType );
138519 
138520  // DQ (12/21/2011): Modified to support SgTemplateVariableDeclaration to use this function.
138521  // private:
138522  protected:
138523  // GB (09/25/2007): Added this function as part of the traversal island fix.
138524  SgDeclarationStatement *compute_baseTypeDefiningDeclaration() const;
138525 
138526 
138527 
138528 // End of memberFunctionString
138529 // Start of memberFunctionString
138530 /* #line 930 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
138531 
138532 
138533  public:
138534  bool isSpecialization() const;
138535  bool isPartialSpecialization() const;
138536 
138537 
138538 
138539 // End of memberFunctionString
138540 // Start of memberFunctionString
138541 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
138542 
138543 // *** COMMON CODE SECTION BEGINS HERE ***
138544 
138545  public:
138546 
138547  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
138548  // and not required which is required to match the other aspects of the copy mechanism code generation.
138549  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
138550  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
138551  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
138552  // virtual SgNode* copy ( const SgCopyHelp & help) const;
138553 
138555  virtual std::string class_name() const override;
138556 
138558  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
138559 
138561  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
138562  // static const VariantT static_variant = V_SgVariableDeclaration;
138563  enum { static_variant = V_SgVariableDeclaration };
138564 
138565  /* the generated cast function */
138567  ROSE_DLL_API friend SgVariableDeclaration* isSgVariableDeclaration( SgNode * s );
138568 
138570  ROSE_DLL_API friend const SgVariableDeclaration* isSgVariableDeclaration( const SgNode * s );
138571 
138572  // ******************************************
138573  // * Memory Pool / New / Delete
138574  // ******************************************
138575 
138576  public:
138578  static const unsigned pool_size; //
138580  static std::vector<unsigned char *> pools; //
138582  static SgVariableDeclaration * next_node; //
138583 
138585  static unsigned long initializeStorageClassArray(SgVariableDeclarationStorageClass *); //
138586 
138588  static void clearMemoryPool(); //
138589  static void deleteMemoryPool(); //
138590 
138592  static void extendMemoryPoolForFileIO(); //
138593 
138595  static SgVariableDeclaration * getPointerFromGlobalIndex(unsigned long); //
138597  static SgVariableDeclaration * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
138598 
138600  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
138602  static void resetValidFreepointers(); //
138604  static unsigned long getNumberOfLastValidPointer(); //
138605 
138606 
138607 #if defined(INLINE_FUNCTIONS)
138608 
138609  inline void *operator new (size_t size);
138610 #else
138611 
138612  void *operator new (size_t size);
138613 #endif
138614 
138615  void operator delete (void* pointer, size_t size);
138616 
138617  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
138618  void operator delete (void* pointer)
138619  {
138620  // This is the generated delete operator...
138621  SgVariableDeclaration::operator delete (pointer,sizeof(SgVariableDeclaration));
138622  }
138623 
138625  static size_t numberOfNodes();
138626 
138628  static size_t memoryUsage();
138629 
138630  // End of scope which started in IR nodes specific code
138631  /* */
138632 
138633  /* name Internal Functions
138634  \brief Internal functions ... incomplete-documentation
138635 
138636  These functions have been made public as part of the design, but they are suggested for internal use
138637  or by particularly knowledgeable users for specialized tools or applications.
138638 
138639  \internal We could not make these private because they are required by user for special purposes. And
138640  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
138641 
138642  */
138643 
138644  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
138645  // overridden in every class by *generated* implementation
138647  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
138648  // MS: 06/28/02 container of names of variables or container indices
138649  // used used in the traversal to access AST successor nodes
138650  // overridden in every class by *generated* implementation
138653  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
138654 
138655  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
138656  // than all the vector copies. The implementation for these functions is generated for each class.
138658  virtual size_t get_numberOfTraversalSuccessors() override;
138660  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
138662  virtual size_t get_childIndex(SgNode *child) override;
138663 
138664 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
138665  // MS: 08/16/2002 method for generating RTI information
138667  virtual RTIReturnType roseRTI() override;
138668 #endif
138669  /* */
138670 
138671 
138672 
138673  /* name Deprecated Functions
138674  \brief Deprecated functions ... incomplete-documentation
138675 
138676  These functions have been deprecated from use.
138677  */
138678  /* */
138679 
138681  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
138682 
138683  // JJW (10/16/2008): Changed to a single function in Node.code, and put
138684  // getVariant() in #if 0 block to prevent confusing Doxygen
138685 #if 0
138686 
138687  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
138689  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
138690 #endif
138691  /* */
138692 
138693 
138694 
138695 
138696  public:
138697  /* name Traversal Support Functions
138698  \brief Traversal support functions ... incomplete-documentation
138699 
138700  These functions have been made public as part of the design, but they are suggested for internal use
138701  or by particularly knowledgable users for specialized tools or applications.
138702  */
138703  /* */
138704 
138705  // DQ (11/26/2005): Support for visitor pattern mechanims
138706  // (inferior to ROSE traversal mechanism, experimental).
138710 
138711  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
138713  virtual void accept (ROSE_VisitorPattern & visitor) override;
138714 
138715  // DQ (12/26/2005): Support for traversal based on the memory pool
138718  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
138719 
138722  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
138723 
138724  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
138725  // This traversal helps support internal tools that call static member functions.
138726  // note: this function operates on the memory pools.
138729  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
138730  /* */
138731 
138732 
138733  public:
138734  /* name Memory Allocation Functions
138735  \brief Memory allocations functions ... incomplete-documentation
138736 
138737  These functions have been made public as part of the design, but they are suggested for internal use
138738  or by particularly knowledgable users for specialized tools or applications.
138739  */
138740  /* */
138741 
138752  virtual bool isInMemoryPool() override;
138753 
138764  virtual void checkDataMemberPointersIfInMemoryPool() override;
138765 
138766  // DQ (4/30/2006): Modified to be a const function.
138781  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
138782 
138792  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
138793 
138805  virtual long getChildIndex( SgNode* childNode ) const override;
138806 
138807  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
138808  // comment here (changed to be a C style comment and not be a doxygen comment).
138809  /* \brief Constructor for use by AST File I/O Mechanism
138810 
138811  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
138812  which obtained via fast binary file I/O from disk.
138813  */
138814  // SgVariableDeclaration( SgVariableDeclarationStorageClass& source );
138815 
138816 
138817 
138818 
138819 
138820  // JH (10/24/2005): methods added to support the ast file IO
138821  private:
138822 
138823  /* name AST Memory Allocation Support Functions
138824  \brief Memory allocations support....
138825 
138826  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
138827  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
138828  and support the AST File I/O Mechanism.
138829  */
138830  /* */
138831 
138832  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
138833  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
138834  that I use the same type everywhere, if any changes are made. THe second one declares the type
138835  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
138836  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
138837  a correspinding one in the AST_FILE_IO class!
138838  */
138839  // DQ (9/2/2015): This typedef is no longer used, we can't define the
138840  // comment here (changed to be a C style comment and not be a doxygen comment).
138841  /* \brief Typedef used for low level memory access.
138842  */
138843  // typedef unsigned char* TestType;
138844 
138845  // DQ (9/2/2015): This typedef is no longer used, we can't define the
138846  // comment here (changed to be a C style comment and not be a doxygen comment).
138847  /* \brief Typedef used to hold memory addresses as values.
138848  */
138849  // typedef unsigned long AddressType;
138850 
138851 
138852 
138853  // necessary, to have direct access to the p_freepointer and the private methods !
138855  friend class AST_FILE_IO;
138856 
138858  friend class SgVariableDeclarationStorageClass;
138859 
138861  friend class AstSpecificDataManagingClass;
138862 
138864  friend class AstSpecificDataManagingClassStorageClass;
138865 
138866  public:
138868  SgVariableDeclaration( const SgVariableDeclarationStorageClass& source );
138869 
138870  // private: // JJW hack
138871  /*
138872  name AST Memory Allocation Support Variables
138873  Memory allocations support variables
138874 
138875  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
138876  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
138877  and support the AST File I/O Mechanism.
138878  */
138879  /* */
138880 
138881  public:
138882 
138883  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
138884  // to current node (so that it will work cleanly with build functions to specify patterns).
138885  // virtual SgNode* addRegExpAttribute();
138892 
138893 // *** COMMON CODE SECTION ENDS HERE ***
138894 
138895 
138896 // End of memberFunctionString
138897 // Start of memberFunctionString
138898 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
138899 
138900  // the generated cast function
138901  // friend ROSE_DLL_API SgVariableDeclaration* isSgVariableDeclaration ( SgNode* s );
138902 
138904 
138905 
138906 // End of memberFunctionString
138907 // Start of memberFunctionString
138908 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
138909 
138910  void post_construction_initialization() override;
138911 
138912 
138913 // End of memberFunctionString
138914 
138915 
138916  public:
138917  const SgInitializedNamePtrList& get_variables() const;
138918  SgInitializedNamePtrList& get_variables();
138919 
138920  public:
138921  bool get_variableDeclarationContainsBaseTypeDefiningDeclaration() const;
138922  void set_variableDeclarationContainsBaseTypeDefiningDeclaration(bool variableDeclarationContainsBaseTypeDefiningDeclaration);
138923 
138924  public:
138925  SgDeclarationStatement::template_specialization_enum get_specialization() const;
138926  void set_specialization(SgDeclarationStatement::template_specialization_enum specialization);
138927 
138928 
138929  public:
138930  std::string get_gnu_extension_section() const;
138931  void set_gnu_extension_section(std::string gnu_extension_section);
138932 
138933  public:
138934  std::string get_gnu_extension_alias() const;
138935  void set_gnu_extension_alias(std::string gnu_extension_alias);
138936 
138937  public:
138938  unsigned short get_gnu_extension_initialization_priority() const;
138939  void set_gnu_extension_initialization_priority(unsigned short gnu_extension_initialization_priority);
138940 
138941  public:
138942  SgDeclarationStatement::gnu_extension_visability_attribute_enum get_gnu_extension_visability() const;
138943  void set_gnu_extension_visability(SgDeclarationStatement::gnu_extension_visability_attribute_enum gnu_extension_visability);
138944 
138945  public:
138946  SgVariableDeclaration::gnu_extension_declaration_attributes_enum get_gnu_extension_declaration_attribute() const;
138947  void set_gnu_extension_declaration_attribute(SgVariableDeclaration::gnu_extension_declaration_attributes_enum gnu_extension_declaration_attribute);
138948 
138949 
138950 
138951 
138952  public:
138953  bool get_isAssociatedWithDeclarationList() const;
138954  void set_isAssociatedWithDeclarationList(bool isAssociatedWithDeclarationList);
138955 
138956  public:
138957  bool get_isFirstDeclarationOfDeclarationList() const;
138958  void set_isFirstDeclarationOfDeclarationList(bool isFirstDeclarationOfDeclarationList);
138959 
138960  public:
138961  bool get_is_thread_local() const;
138962  void set_is_thread_local(bool is_thread_local);
138963 
138964  public:
138965  bool get_is_constexpr() const;
138966  void set_is_constexpr(bool is_constexpr);
138967 
138968  public:
138969  bool get_builtFromUseOnly() const;
138970  void set_builtFromUseOnly(bool builtFromUseOnly);
138971 
138972 
138973  public:
138974  virtual ~SgVariableDeclaration();
138975 
138976 
138977  public:
138978  SgVariableDeclaration(Sg_File_Info* startOfConstruct );
138980 
138981  protected:
138982 // Start of memberFunctionString
138984 
138985 // End of memberFunctionString
138986 // Start of memberFunctionString
138987 SgInitializedNamePtrList p_variables;
138988 
138989 // End of memberFunctionString
138990 // Start of memberFunctionString
138992 
138993 // End of memberFunctionString
138994 // Start of memberFunctionString
138996 
138997 // End of memberFunctionString
138998 // Start of memberFunctionString
138999 bool p_requiresGlobalNameQualificationOnType;
139000 
139001 // End of memberFunctionString
139002 // Start of memberFunctionString
139003 std::string p_gnu_extension_section;
139004 
139005 // End of memberFunctionString
139006 // Start of memberFunctionString
139007 std::string p_gnu_extension_alias;
139008 
139009 // End of memberFunctionString
139010 // Start of memberFunctionString
139011 unsigned short p_gnu_extension_initialization_priority;
139012 
139013 // End of memberFunctionString
139014 // Start of memberFunctionString
139016 
139017 // End of memberFunctionString
139018 // Start of memberFunctionString
139019 SgVariableDeclaration::gnu_extension_declaration_attributes_enum p_gnu_extension_declaration_attribute;
139020 
139021 // End of memberFunctionString
139022 // Start of memberFunctionString
139023 int p_name_qualification_length;
139024 
139025 // End of memberFunctionString
139026 // Start of memberFunctionString
139027 bool p_type_elaboration_required;
139028 
139029 // End of memberFunctionString
139030 // Start of memberFunctionString
139031 bool p_global_qualification_required;
139032 
139033 // End of memberFunctionString
139034 // Start of memberFunctionString
139035 bool p_isAssociatedWithDeclarationList;
139036 
139037 // End of memberFunctionString
139038 // Start of memberFunctionString
139039 bool p_isFirstDeclarationOfDeclarationList;
139040 
139041 // End of memberFunctionString
139042 // Start of memberFunctionString
139043 bool p_is_thread_local;
139044 
139045 // End of memberFunctionString
139046 // Start of memberFunctionString
139047 bool p_is_constexpr;
139048 
139049 // End of memberFunctionString
139050 // Start of memberFunctionString
139051 bool p_builtFromUseOnly;
139052 
139053 // End of memberFunctionString
139054 
139055 
139056 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
139057 
139058 
139059  };
139060 #endif
139061 
139062 // postdeclarations for SgVariableDeclaration
139063 
139064 /* #line 139065 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
139065 
139066 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
139067 
139068 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
139069 
139070 
139071 /* #line 139072 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
139072 
139073 
139074 
139075 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
139076 
139077 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
139078 // This code is automatically generated for each
139079 // terminal and non-terminal within the defined
139080 // grammar. There is a simple way to change the
139081 // code to fix bugs etc. See the ROSE README file
139082 // for directions.
139083 
139084 // tps: (02/22/2010): Adding DLL export requirements
139085 #include "rosedll.h"
139086 
139087 // predeclarations for SgTemplateVariableDeclaration
139088 
139089 /* #line 139090 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
139090 
139091 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
139092 
139093 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
139094 
139095 #if 1
139096 // Class Definition for SgTemplateVariableDeclaration
139098  {
139099  public:
139100 
139101 
139102 /* #line 139103 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
139103 
139104  virtual SgNode* copy ( SgCopyHelp& help) const override;
139105 // Start of memberFunctionString
139106 /* #line 2974 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
139107 
139108 
139110 
139111  // DQ (12/28/2011): We need a constructor similar to the base class.
139112  SgTemplateVariableDeclaration ( const SgName& var_name, SgType *type, SgInitializer *initializer );
139113 
139114 // DQ (10/5/2014): This is now wrong because we now include rose_config.h before processing the
139115 // files generated from this file. This change was required to support the ATerm libraries.
139116 // BH (11/13/2015) on windows this caused incosistent defines of this
139117 // so that it was not defined in the .h but used in the cxx file
139118  private:
139119  // DQ (12/29/2011): This is added to support backward compatability.
139120  SgDeclarationStatement *compute_baseTypeDefiningDeclaration() const;
139121 
139122 
139123 
139124 // End of memberFunctionString
139125 // Start of memberFunctionString
139126 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
139127 
139128 // *** COMMON CODE SECTION BEGINS HERE ***
139129 
139130  public:
139131 
139132  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
139133  // and not required which is required to match the other aspects of the copy mechanism code generation.
139134  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
139135  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
139136  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
139137  // virtual SgNode* copy ( const SgCopyHelp & help) const;
139138 
139140  virtual std::string class_name() const override;
139141 
139143  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
139144 
139146  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
139147  // static const VariantT static_variant = V_SgTemplateVariableDeclaration;
139148  enum { static_variant = V_SgTemplateVariableDeclaration };
139149 
139150  /* the generated cast function */
139152  ROSE_DLL_API friend SgTemplateVariableDeclaration* isSgTemplateVariableDeclaration( SgNode * s );
139153 
139155  ROSE_DLL_API friend const SgTemplateVariableDeclaration* isSgTemplateVariableDeclaration( const SgNode * s );
139156 
139157  // ******************************************
139158  // * Memory Pool / New / Delete
139159  // ******************************************
139160 
139161  public:
139163  static const unsigned pool_size; //
139165  static std::vector<unsigned char *> pools; //
139167  static SgTemplateVariableDeclaration * next_node; //
139168 
139170  static unsigned long initializeStorageClassArray(SgTemplateVariableDeclarationStorageClass *); //
139171 
139173  static void clearMemoryPool(); //
139174  static void deleteMemoryPool(); //
139175 
139177  static void extendMemoryPoolForFileIO(); //
139178 
139180  static SgTemplateVariableDeclaration * getPointerFromGlobalIndex(unsigned long); //
139182  static SgTemplateVariableDeclaration * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
139183 
139185  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
139187  static void resetValidFreepointers(); //
139189  static unsigned long getNumberOfLastValidPointer(); //
139190 
139191 
139192 #if defined(INLINE_FUNCTIONS)
139193 
139194  inline void *operator new (size_t size);
139195 #else
139196 
139197  void *operator new (size_t size);
139198 #endif
139199 
139200  void operator delete (void* pointer, size_t size);
139201 
139202  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
139203  void operator delete (void* pointer)
139204  {
139205  // This is the generated delete operator...
139206  SgTemplateVariableDeclaration::operator delete (pointer,sizeof(SgTemplateVariableDeclaration));
139207  }
139208 
139210  static size_t numberOfNodes();
139211 
139213  static size_t memoryUsage();
139214 
139215  // End of scope which started in IR nodes specific code
139216  /* */
139217 
139218  /* name Internal Functions
139219  \brief Internal functions ... incomplete-documentation
139220 
139221  These functions have been made public as part of the design, but they are suggested for internal use
139222  or by particularly knowledgeable users for specialized tools or applications.
139223 
139224  \internal We could not make these private because they are required by user for special purposes. And
139225  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
139226 
139227  */
139228 
139229  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
139230  // overridden in every class by *generated* implementation
139232  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
139233  // MS: 06/28/02 container of names of variables or container indices
139234  // used used in the traversal to access AST successor nodes
139235  // overridden in every class by *generated* implementation
139238  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
139239 
139240  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
139241  // than all the vector copies. The implementation for these functions is generated for each class.
139243  virtual size_t get_numberOfTraversalSuccessors() override;
139245  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
139247  virtual size_t get_childIndex(SgNode *child) override;
139248 
139249 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
139250  // MS: 08/16/2002 method for generating RTI information
139252  virtual RTIReturnType roseRTI() override;
139253 #endif
139254  /* */
139255 
139256 
139257 
139258  /* name Deprecated Functions
139259  \brief Deprecated functions ... incomplete-documentation
139260 
139261  These functions have been deprecated from use.
139262  */
139263  /* */
139264 
139266  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
139267 
139268  // JJW (10/16/2008): Changed to a single function in Node.code, and put
139269  // getVariant() in #if 0 block to prevent confusing Doxygen
139270 #if 0
139271 
139272  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
139274  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
139275 #endif
139276  /* */
139277 
139278 
139279 
139280 
139281  public:
139282  /* name Traversal Support Functions
139283  \brief Traversal support functions ... incomplete-documentation
139284 
139285  These functions have been made public as part of the design, but they are suggested for internal use
139286  or by particularly knowledgable users for specialized tools or applications.
139287  */
139288  /* */
139289 
139290  // DQ (11/26/2005): Support for visitor pattern mechanims
139291  // (inferior to ROSE traversal mechanism, experimental).
139295 
139296  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
139298  virtual void accept (ROSE_VisitorPattern & visitor) override;
139299 
139300  // DQ (12/26/2005): Support for traversal based on the memory pool
139303  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
139304 
139307  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
139308 
139309  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
139310  // This traversal helps support internal tools that call static member functions.
139311  // note: this function operates on the memory pools.
139314  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
139315  /* */
139316 
139317 
139318  public:
139319  /* name Memory Allocation Functions
139320  \brief Memory allocations functions ... incomplete-documentation
139321 
139322  These functions have been made public as part of the design, but they are suggested for internal use
139323  or by particularly knowledgable users for specialized tools or applications.
139324  */
139325  /* */
139326 
139337  virtual bool isInMemoryPool() override;
139338 
139349  virtual void checkDataMemberPointersIfInMemoryPool() override;
139350 
139351  // DQ (4/30/2006): Modified to be a const function.
139366  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
139367 
139377  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
139378 
139390  virtual long getChildIndex( SgNode* childNode ) const override;
139391 
139392  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
139393  // comment here (changed to be a C style comment and not be a doxygen comment).
139394  /* \brief Constructor for use by AST File I/O Mechanism
139395 
139396  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
139397  which obtained via fast binary file I/O from disk.
139398  */
139399  // SgTemplateVariableDeclaration( SgTemplateVariableDeclarationStorageClass& source );
139400 
139401 
139402 
139403 
139404 
139405  // JH (10/24/2005): methods added to support the ast file IO
139406  private:
139407 
139408  /* name AST Memory Allocation Support Functions
139409  \brief Memory allocations support....
139410 
139411  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
139412  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
139413  and support the AST File I/O Mechanism.
139414  */
139415  /* */
139416 
139417  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
139418  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
139419  that I use the same type everywhere, if any changes are made. THe second one declares the type
139420  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
139421  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
139422  a correspinding one in the AST_FILE_IO class!
139423  */
139424  // DQ (9/2/2015): This typedef is no longer used, we can't define the
139425  // comment here (changed to be a C style comment and not be a doxygen comment).
139426  /* \brief Typedef used for low level memory access.
139427  */
139428  // typedef unsigned char* TestType;
139429 
139430  // DQ (9/2/2015): This typedef is no longer used, we can't define the
139431  // comment here (changed to be a C style comment and not be a doxygen comment).
139432  /* \brief Typedef used to hold memory addresses as values.
139433  */
139434  // typedef unsigned long AddressType;
139435 
139436 
139437 
139438  // necessary, to have direct access to the p_freepointer and the private methods !
139440  friend class AST_FILE_IO;
139441 
139443  friend class SgTemplateVariableDeclarationStorageClass;
139444 
139446  friend class AstSpecificDataManagingClass;
139447 
139449  friend class AstSpecificDataManagingClassStorageClass;
139450 
139451  public:
139453  SgTemplateVariableDeclaration( const SgTemplateVariableDeclarationStorageClass& source );
139454 
139455  // private: // JJW hack
139456  /*
139457  name AST Memory Allocation Support Variables
139458  Memory allocations support variables
139459 
139460  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
139461  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
139462  and support the AST File I/O Mechanism.
139463  */
139464  /* */
139465 
139466  public:
139467 
139468  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
139469  // to current node (so that it will work cleanly with build functions to specify patterns).
139470  // virtual SgNode* addRegExpAttribute();
139477 
139478 // *** COMMON CODE SECTION ENDS HERE ***
139479 
139480 
139481 // End of memberFunctionString
139482 // Start of memberFunctionString
139483 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
139484 
139485  // the generated cast function
139486  // friend ROSE_DLL_API SgTemplateVariableDeclaration* isSgTemplateVariableDeclaration ( SgNode* s );
139487 
139489 
139490 
139491 // End of memberFunctionString
139492 // Start of memberFunctionString
139493 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
139494 
139495  void post_construction_initialization() override;
139496 
139497 
139498 // End of memberFunctionString
139499 
139500  public:
139501  const SgTemplateParameterPtrList& get_templateParameters() const;
139502  SgTemplateParameterPtrList& get_templateParameters();
139503 
139504  public:
139505  const SgTemplateArgumentPtrList& get_templateSpecializationArguments() const;
139506  SgTemplateArgumentPtrList& get_templateSpecializationArguments();
139507 
139508  public:
139509  SgName get_string() const;
139510  void set_string(SgName string);
139511 
139512  public:
139513  SgDeclarationScope* get_nonreal_decl_scope() const;
139514  void set_nonreal_decl_scope(SgDeclarationScope* nonreal_decl_scope);
139515 
139516 
139517  public:
139518  virtual ~SgTemplateVariableDeclaration();
139519 
139520 
139521  public:
139522  SgTemplateVariableDeclaration(Sg_File_Info* startOfConstruct );
139524 
139525  protected:
139526 // Start of memberFunctionString
139527 SgTemplateParameterPtrList p_templateParameters;
139528 
139529 // End of memberFunctionString
139530 // Start of memberFunctionString
139531 SgTemplateArgumentPtrList p_templateSpecializationArguments;
139532 
139533 // End of memberFunctionString
139534 // Start of memberFunctionString
139535 SgName p_string;
139536 
139537 // End of memberFunctionString
139538 // Start of memberFunctionString
139539 SgDeclarationScope* p_nonreal_decl_scope;
139540 
139541 // End of memberFunctionString
139542 
139543 
139544 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
139545 
139546 
139547  };
139548 #endif
139549 
139550 // postdeclarations for SgTemplateVariableDeclaration
139551 
139552 /* #line 139553 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
139553 
139554 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
139555 
139556 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
139557 
139558 
139559 /* #line 139560 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
139560 
139561 
139562 
139563 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
139564 
139565 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
139566 // This code is automatically generated for each
139567 // terminal and non-terminal within the defined
139568 // grammar. There is a simple way to change the
139569 // code to fix bugs etc. See the ROSE README file
139570 // for directions.
139571 
139572 // tps: (02/22/2010): Adding DLL export requirements
139573 #include "rosedll.h"
139574 
139575 // predeclarations for SgVariableDefinition
139576 
139577 /* #line 139578 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
139578 
139579 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
139580 
139581 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
139582 
139583 #if 1
139584 // Class Definition for SgVariableDefinition
139586  {
139587  public:
139588 
139589 
139590 /* #line 139591 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
139591 
139592  virtual SgNode* copy ( SgCopyHelp& help) const override;
139593 // Start of memberFunctionString
139594 /* #line 2038 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
139595 
139596  // SgInitializedName *get_defn_item();
139597  // SgInitializedName *get_decl_item();
139598  // void set_initializer(SgInitializer *);
139599 
139600  SgVariableDeclaration *get_declaration();
139601 
139602  SgType *get_type();
139603 
139604  // Special constructor used by SgVariableDefinition
139605  SgVariableDefinition( Sg_File_Info *info, SgInitializedName *decl_item, SgInitializer *initializer);
139606  SgVariableDefinition( SgInitializedName *decl_item, SgInitializer *initializer);
139607 
139608  // DQ (2/18/2006): Added general name mangling for all declarations (and some other IR nodes).
139609  virtual SgName get_mangled_name(void) const override;
139610 
139611 
139612 
139613 // End of memberFunctionString
139614 // Start of memberFunctionString
139615 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
139616 
139617 // *** COMMON CODE SECTION BEGINS HERE ***
139618 
139619  public:
139620 
139621  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
139622  // and not required which is required to match the other aspects of the copy mechanism code generation.
139623  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
139624  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
139625  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
139626  // virtual SgNode* copy ( const SgCopyHelp & help) const;
139627 
139629  virtual std::string class_name() const override;
139630 
139632  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
139633 
139635  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
139636  // static const VariantT static_variant = V_SgVariableDefinition;
139637  enum { static_variant = V_SgVariableDefinition };
139638 
139639  /* the generated cast function */
139641  ROSE_DLL_API friend SgVariableDefinition* isSgVariableDefinition( SgNode * s );
139642 
139644  ROSE_DLL_API friend const SgVariableDefinition* isSgVariableDefinition( const SgNode * s );
139645 
139646  // ******************************************
139647  // * Memory Pool / New / Delete
139648  // ******************************************
139649 
139650  public:
139652  static const unsigned pool_size; //
139654  static std::vector<unsigned char *> pools; //
139656  static SgVariableDefinition * next_node; //
139657 
139659  static unsigned long initializeStorageClassArray(SgVariableDefinitionStorageClass *); //
139660 
139662  static void clearMemoryPool(); //
139663  static void deleteMemoryPool(); //
139664 
139666  static void extendMemoryPoolForFileIO(); //
139667 
139669  static SgVariableDefinition * getPointerFromGlobalIndex(unsigned long); //
139671  static SgVariableDefinition * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
139672 
139674  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
139676  static void resetValidFreepointers(); //
139678  static unsigned long getNumberOfLastValidPointer(); //
139679 
139680 
139681 #if defined(INLINE_FUNCTIONS)
139682 
139683  inline void *operator new (size_t size);
139684 #else
139685 
139686  void *operator new (size_t size);
139687 #endif
139688 
139689  void operator delete (void* pointer, size_t size);
139690 
139691  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
139692  void operator delete (void* pointer)
139693  {
139694  // This is the generated delete operator...
139695  SgVariableDefinition::operator delete (pointer,sizeof(SgVariableDefinition));
139696  }
139697 
139699  static size_t numberOfNodes();
139700 
139702  static size_t memoryUsage();
139703 
139704  // End of scope which started in IR nodes specific code
139705  /* */
139706 
139707  /* name Internal Functions
139708  \brief Internal functions ... incomplete-documentation
139709 
139710  These functions have been made public as part of the design, but they are suggested for internal use
139711  or by particularly knowledgeable users for specialized tools or applications.
139712 
139713  \internal We could not make these private because they are required by user for special purposes. And
139714  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
139715 
139716  */
139717 
139718  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
139719  // overridden in every class by *generated* implementation
139721  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
139722  // MS: 06/28/02 container of names of variables or container indices
139723  // used used in the traversal to access AST successor nodes
139724  // overridden in every class by *generated* implementation
139727  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
139728 
139729  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
139730  // than all the vector copies. The implementation for these functions is generated for each class.
139732  virtual size_t get_numberOfTraversalSuccessors() override;
139734  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
139736  virtual size_t get_childIndex(SgNode *child) override;
139737 
139738 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
139739  // MS: 08/16/2002 method for generating RTI information
139741  virtual RTIReturnType roseRTI() override;
139742 #endif
139743  /* */
139744 
139745 
139746 
139747  /* name Deprecated Functions
139748  \brief Deprecated functions ... incomplete-documentation
139749 
139750  These functions have been deprecated from use.
139751  */
139752  /* */
139753 
139755  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
139756 
139757  // JJW (10/16/2008): Changed to a single function in Node.code, and put
139758  // getVariant() in #if 0 block to prevent confusing Doxygen
139759 #if 0
139760 
139761  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
139763  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
139764 #endif
139765  /* */
139766 
139767 
139768 
139769 
139770  public:
139771  /* name Traversal Support Functions
139772  \brief Traversal support functions ... incomplete-documentation
139773 
139774  These functions have been made public as part of the design, but they are suggested for internal use
139775  or by particularly knowledgable users for specialized tools or applications.
139776  */
139777  /* */
139778 
139779  // DQ (11/26/2005): Support for visitor pattern mechanims
139780  // (inferior to ROSE traversal mechanism, experimental).
139784 
139785  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
139787  virtual void accept (ROSE_VisitorPattern & visitor) override;
139788 
139789  // DQ (12/26/2005): Support for traversal based on the memory pool
139792  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
139793 
139796  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
139797 
139798  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
139799  // This traversal helps support internal tools that call static member functions.
139800  // note: this function operates on the memory pools.
139803  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
139804  /* */
139805 
139806 
139807  public:
139808  /* name Memory Allocation Functions
139809  \brief Memory allocations functions ... incomplete-documentation
139810 
139811  These functions have been made public as part of the design, but they are suggested for internal use
139812  or by particularly knowledgable users for specialized tools or applications.
139813  */
139814  /* */
139815 
139826  virtual bool isInMemoryPool() override;
139827 
139838  virtual void checkDataMemberPointersIfInMemoryPool() override;
139839 
139840  // DQ (4/30/2006): Modified to be a const function.
139855  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
139856 
139866  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
139867 
139879  virtual long getChildIndex( SgNode* childNode ) const override;
139880 
139881  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
139882  // comment here (changed to be a C style comment and not be a doxygen comment).
139883  /* \brief Constructor for use by AST File I/O Mechanism
139884 
139885  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
139886  which obtained via fast binary file I/O from disk.
139887  */
139888  // SgVariableDefinition( SgVariableDefinitionStorageClass& source );
139889 
139890 
139891 
139892 
139893 
139894  // JH (10/24/2005): methods added to support the ast file IO
139895  private:
139896 
139897  /* name AST Memory Allocation Support Functions
139898  \brief Memory allocations support....
139899 
139900  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
139901  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
139902  and support the AST File I/O Mechanism.
139903  */
139904  /* */
139905 
139906  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
139907  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
139908  that I use the same type everywhere, if any changes are made. THe second one declares the type
139909  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
139910  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
139911  a correspinding one in the AST_FILE_IO class!
139912  */
139913  // DQ (9/2/2015): This typedef is no longer used, we can't define the
139914  // comment here (changed to be a C style comment and not be a doxygen comment).
139915  /* \brief Typedef used for low level memory access.
139916  */
139917  // typedef unsigned char* TestType;
139918 
139919  // DQ (9/2/2015): This typedef is no longer used, we can't define the
139920  // comment here (changed to be a C style comment and not be a doxygen comment).
139921  /* \brief Typedef used to hold memory addresses as values.
139922  */
139923  // typedef unsigned long AddressType;
139924 
139925 
139926 
139927  // necessary, to have direct access to the p_freepointer and the private methods !
139929  friend class AST_FILE_IO;
139930 
139932  friend class SgVariableDefinitionStorageClass;
139933 
139935  friend class AstSpecificDataManagingClass;
139936 
139938  friend class AstSpecificDataManagingClassStorageClass;
139939 
139940  public:
139942  SgVariableDefinition( const SgVariableDefinitionStorageClass& source );
139943 
139944  // private: // JJW hack
139945  /*
139946  name AST Memory Allocation Support Variables
139947  Memory allocations support variables
139948 
139949  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
139950  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
139951  and support the AST File I/O Mechanism.
139952  */
139953  /* */
139954 
139955  public:
139956 
139957  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
139958  // to current node (so that it will work cleanly with build functions to specify patterns).
139959  // virtual SgNode* addRegExpAttribute();
139966 
139967 // *** COMMON CODE SECTION ENDS HERE ***
139968 
139969 
139970 // End of memberFunctionString
139971 // Start of memberFunctionString
139972 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
139973 
139974  // the generated cast function
139975  // friend ROSE_DLL_API SgVariableDefinition* isSgVariableDefinition ( SgNode* s );
139976 
139978 
139979 
139980 // End of memberFunctionString
139981 // Start of memberFunctionString
139982 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
139983 
139984  void post_construction_initialization() override;
139985 
139986 
139987 // End of memberFunctionString
139988 
139989  public:
139990  SgInitializedName* get_vardefn() const;
139991  void set_vardefn(SgInitializedName* vardefn);
139992 
139993  public:
139994  SgExpression* get_bitfield() const;
139995  void set_bitfield(SgExpression* bitfield);
139996 
139997 
139998  public:
139999  virtual ~SgVariableDefinition();
140000 
140001 
140002  public:
140003  SgVariableDefinition(Sg_File_Info* startOfConstruct , SgInitializedName* vardefn = NULL, SgExpression* bitfield = NULL);
140004  SgVariableDefinition(SgInitializedName* vardefn, SgExpression* bitfield);
140005 
140006  protected:
140007 // Start of memberFunctionString
140009 
140010 // End of memberFunctionString
140011 // Start of memberFunctionString
140013 
140014 // End of memberFunctionString
140015 
140016 
140017 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
140018 
140019 
140020  };
140021 #endif
140022 
140023 // postdeclarations for SgVariableDefinition
140024 
140025 /* #line 140026 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
140026 
140027 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
140028 
140029 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
140030 
140031 
140032 /* #line 140033 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
140033 
140034 
140035 
140036 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
140037 
140038 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
140039 // This code is automatically generated for each
140040 // terminal and non-terminal within the defined
140041 // grammar. There is a simple way to change the
140042 // code to fix bugs etc. See the ROSE README file
140043 // for directions.
140044 
140045 // tps: (02/22/2010): Adding DLL export requirements
140046 #include "rosedll.h"
140047 
140048 // predeclarations for SgClinkageDeclarationStatement
140049 
140050 /* #line 140051 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
140051 
140052 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
140053 
140054 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
140055 
140056 #if 1
140057 // Class Definition for SgClinkageDeclarationStatement
140059  {
140060  public:
140061 
140062 
140063 /* #line 140064 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
140064 
140065  virtual SgNode* copy ( SgCopyHelp& help) const override;
140066 // Start of memberFunctionString
140067 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
140068 
140069 // *** COMMON CODE SECTION BEGINS HERE ***
140070 
140071  public:
140072 
140073  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
140074  // and not required which is required to match the other aspects of the copy mechanism code generation.
140075  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
140076  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
140077  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
140078  // virtual SgNode* copy ( const SgCopyHelp & help) const;
140079 
140081  virtual std::string class_name() const override;
140082 
140084  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
140085 
140087  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
140088  // static const VariantT static_variant = V_SgClinkageDeclarationStatement;
140089  enum { static_variant = V_SgClinkageDeclarationStatement };
140090 
140091  /* the generated cast function */
140093  ROSE_DLL_API friend SgClinkageDeclarationStatement* isSgClinkageDeclarationStatement( SgNode * s );
140094 
140096  ROSE_DLL_API friend const SgClinkageDeclarationStatement* isSgClinkageDeclarationStatement( const SgNode * s );
140097 
140098  // ******************************************
140099  // * Memory Pool / New / Delete
140100  // ******************************************
140101 
140102  public:
140104  static const unsigned pool_size; //
140106  static std::vector<unsigned char *> pools; //
140108  static SgClinkageDeclarationStatement * next_node; //
140109 
140111  static unsigned long initializeStorageClassArray(SgClinkageDeclarationStatementStorageClass *); //
140112 
140114  static void clearMemoryPool(); //
140115  static void deleteMemoryPool(); //
140116 
140118  static void extendMemoryPoolForFileIO(); //
140119 
140121  static SgClinkageDeclarationStatement * getPointerFromGlobalIndex(unsigned long); //
140123  static SgClinkageDeclarationStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
140124 
140126  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
140128  static void resetValidFreepointers(); //
140130  static unsigned long getNumberOfLastValidPointer(); //
140131 
140132 
140133 #if defined(INLINE_FUNCTIONS)
140134 
140135  inline void *operator new (size_t size);
140136 #else
140137 
140138  void *operator new (size_t size);
140139 #endif
140140 
140141  void operator delete (void* pointer, size_t size);
140142 
140143  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
140144  void operator delete (void* pointer)
140145  {
140146  // This is the generated delete operator...
140147  SgClinkageDeclarationStatement::operator delete (pointer,sizeof(SgClinkageDeclarationStatement));
140148  }
140149 
140151  static size_t numberOfNodes();
140152 
140154  static size_t memoryUsage();
140155 
140156  // End of scope which started in IR nodes specific code
140157  /* */
140158 
140159  /* name Internal Functions
140160  \brief Internal functions ... incomplete-documentation
140161 
140162  These functions have been made public as part of the design, but they are suggested for internal use
140163  or by particularly knowledgeable users for specialized tools or applications.
140164 
140165  \internal We could not make these private because they are required by user for special purposes. And
140166  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
140167 
140168  */
140169 
140170  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
140171  // overridden in every class by *generated* implementation
140173  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
140174  // MS: 06/28/02 container of names of variables or container indices
140175  // used used in the traversal to access AST successor nodes
140176  // overridden in every class by *generated* implementation
140179  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
140180 
140181  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
140182  // than all the vector copies. The implementation for these functions is generated for each class.
140184  virtual size_t get_numberOfTraversalSuccessors() override;
140186  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
140188  virtual size_t get_childIndex(SgNode *child) override;
140189 
140190 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
140191  // MS: 08/16/2002 method for generating RTI information
140193  virtual RTIReturnType roseRTI() override;
140194 #endif
140195  /* */
140196 
140197 
140198 
140199  /* name Deprecated Functions
140200  \brief Deprecated functions ... incomplete-documentation
140201 
140202  These functions have been deprecated from use.
140203  */
140204  /* */
140205 
140207  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
140208 
140209  // JJW (10/16/2008): Changed to a single function in Node.code, and put
140210  // getVariant() in #if 0 block to prevent confusing Doxygen
140211 #if 0
140212 
140213  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
140215  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
140216 #endif
140217  /* */
140218 
140219 
140220 
140221 
140222  public:
140223  /* name Traversal Support Functions
140224  \brief Traversal support functions ... incomplete-documentation
140225 
140226  These functions have been made public as part of the design, but they are suggested for internal use
140227  or by particularly knowledgable users for specialized tools or applications.
140228  */
140229  /* */
140230 
140231  // DQ (11/26/2005): Support for visitor pattern mechanims
140232  // (inferior to ROSE traversal mechanism, experimental).
140236 
140237  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
140239  virtual void accept (ROSE_VisitorPattern & visitor) override;
140240 
140241  // DQ (12/26/2005): Support for traversal based on the memory pool
140244  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
140245 
140248  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
140249 
140250  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
140251  // This traversal helps support internal tools that call static member functions.
140252  // note: this function operates on the memory pools.
140255  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
140256  /* */
140257 
140258 
140259  public:
140260  /* name Memory Allocation Functions
140261  \brief Memory allocations functions ... incomplete-documentation
140262 
140263  These functions have been made public as part of the design, but they are suggested for internal use
140264  or by particularly knowledgable users for specialized tools or applications.
140265  */
140266  /* */
140267 
140278  virtual bool isInMemoryPool() override;
140279 
140290  virtual void checkDataMemberPointersIfInMemoryPool() override;
140291 
140292  // DQ (4/30/2006): Modified to be a const function.
140307  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
140308 
140318  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
140319 
140331  virtual long getChildIndex( SgNode* childNode ) const override;
140332 
140333  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
140334  // comment here (changed to be a C style comment and not be a doxygen comment).
140335  /* \brief Constructor for use by AST File I/O Mechanism
140336 
140337  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
140338  which obtained via fast binary file I/O from disk.
140339  */
140340  // SgClinkageDeclarationStatement( SgClinkageDeclarationStatementStorageClass& source );
140341 
140342 
140343 
140344 
140345 
140346  // JH (10/24/2005): methods added to support the ast file IO
140347  private:
140348 
140349  /* name AST Memory Allocation Support Functions
140350  \brief Memory allocations support....
140351 
140352  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
140353  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
140354  and support the AST File I/O Mechanism.
140355  */
140356  /* */
140357 
140358  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
140359  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
140360  that I use the same type everywhere, if any changes are made. THe second one declares the type
140361  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
140362  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
140363  a correspinding one in the AST_FILE_IO class!
140364  */
140365  // DQ (9/2/2015): This typedef is no longer used, we can't define the
140366  // comment here (changed to be a C style comment and not be a doxygen comment).
140367  /* \brief Typedef used for low level memory access.
140368  */
140369  // typedef unsigned char* TestType;
140370 
140371  // DQ (9/2/2015): This typedef is no longer used, we can't define the
140372  // comment here (changed to be a C style comment and not be a doxygen comment).
140373  /* \brief Typedef used to hold memory addresses as values.
140374  */
140375  // typedef unsigned long AddressType;
140376 
140377 
140378 
140379  // necessary, to have direct access to the p_freepointer and the private methods !
140381  friend class AST_FILE_IO;
140382 
140384  friend class SgClinkageDeclarationStatementStorageClass;
140385 
140387  friend class AstSpecificDataManagingClass;
140388 
140390  friend class AstSpecificDataManagingClassStorageClass;
140391 
140392  public:
140394  SgClinkageDeclarationStatement( const SgClinkageDeclarationStatementStorageClass& source );
140395 
140396  // private: // JJW hack
140397  /*
140398  name AST Memory Allocation Support Variables
140399  Memory allocations support variables
140400 
140401  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
140402  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
140403  and support the AST File I/O Mechanism.
140404  */
140405  /* */
140406 
140407  public:
140408 
140409  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
140410  // to current node (so that it will work cleanly with build functions to specify patterns).
140411  // virtual SgNode* addRegExpAttribute();
140418 
140419 // *** COMMON CODE SECTION ENDS HERE ***
140420 
140421 
140422 // End of memberFunctionString
140423 // Start of memberFunctionString
140424 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
140425 
140426  // the generated cast function
140427  // friend ROSE_DLL_API SgClinkageDeclarationStatement* isSgClinkageDeclarationStatement ( SgNode* s );
140428 
140430 
140431 
140432 // End of memberFunctionString
140433 // Start of memberFunctionString
140434 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
140435 
140436  void post_construction_initialization() override;
140437 
140438 
140439 // End of memberFunctionString
140440 
140441 
140442 
140443  public:
140444  virtual ~SgClinkageDeclarationStatement();
140445 
140446 
140447  public:
140448  SgClinkageDeclarationStatement(Sg_File_Info* startOfConstruct );
140450 
140451  protected:
140452 // Start of memberFunctionString
140453 std::string p_languageSpecifier;
140454 
140455 // End of memberFunctionString
140456 
140457 
140458 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
140459 
140460 
140461  };
140462 #endif
140463 
140464 // postdeclarations for SgClinkageDeclarationStatement
140465 
140466 /* #line 140467 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
140467 
140468 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
140469 
140470 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
140471 
140472 
140473 /* #line 140474 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
140474 
140475 
140476 
140477 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
140478 
140479 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
140480 // This code is automatically generated for each
140481 // terminal and non-terminal within the defined
140482 // grammar. There is a simple way to change the
140483 // code to fix bugs etc. See the ROSE README file
140484 // for directions.
140485 
140486 // tps: (02/22/2010): Adding DLL export requirements
140487 #include "rosedll.h"
140488 
140489 // predeclarations for SgClinkageStartStatement
140490 
140491 /* #line 140492 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
140492 
140493 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
140494 
140495 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
140496 
140497 #if 1
140498 // Class Definition for SgClinkageStartStatement
140500  {
140501  public:
140502 
140503 
140504 /* #line 140505 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
140505 
140506  virtual SgNode* copy ( SgCopyHelp& help) const override;
140507 // Start of memberFunctionString
140508 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
140509 
140510 // *** COMMON CODE SECTION BEGINS HERE ***
140511 
140512  public:
140513 
140514  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
140515  // and not required which is required to match the other aspects of the copy mechanism code generation.
140516  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
140517  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
140518  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
140519  // virtual SgNode* copy ( const SgCopyHelp & help) const;
140520 
140522  virtual std::string class_name() const override;
140523 
140525  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
140526 
140528  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
140529  // static const VariantT static_variant = V_SgClinkageStartStatement;
140530  enum { static_variant = V_SgClinkageStartStatement };
140531 
140532  /* the generated cast function */
140534  ROSE_DLL_API friend SgClinkageStartStatement* isSgClinkageStartStatement( SgNode * s );
140535 
140537  ROSE_DLL_API friend const SgClinkageStartStatement* isSgClinkageStartStatement( const SgNode * s );
140538 
140539  // ******************************************
140540  // * Memory Pool / New / Delete
140541  // ******************************************
140542 
140543  public:
140545  static const unsigned pool_size; //
140547  static std::vector<unsigned char *> pools; //
140549  static SgClinkageStartStatement * next_node; //
140550 
140552  static unsigned long initializeStorageClassArray(SgClinkageStartStatementStorageClass *); //
140553 
140555  static void clearMemoryPool(); //
140556  static void deleteMemoryPool(); //
140557 
140559  static void extendMemoryPoolForFileIO(); //
140560 
140562  static SgClinkageStartStatement * getPointerFromGlobalIndex(unsigned long); //
140564  static SgClinkageStartStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
140565 
140567  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
140569  static void resetValidFreepointers(); //
140571  static unsigned long getNumberOfLastValidPointer(); //
140572 
140573 
140574 #if defined(INLINE_FUNCTIONS)
140575 
140576  inline void *operator new (size_t size);
140577 #else
140578 
140579  void *operator new (size_t size);
140580 #endif
140581 
140582  void operator delete (void* pointer, size_t size);
140583 
140584  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
140585  void operator delete (void* pointer)
140586  {
140587  // This is the generated delete operator...
140588  SgClinkageStartStatement::operator delete (pointer,sizeof(SgClinkageStartStatement));
140589  }
140590 
140592  static size_t numberOfNodes();
140593 
140595  static size_t memoryUsage();
140596 
140597  // End of scope which started in IR nodes specific code
140598  /* */
140599 
140600  /* name Internal Functions
140601  \brief Internal functions ... incomplete-documentation
140602 
140603  These functions have been made public as part of the design, but they are suggested for internal use
140604  or by particularly knowledgeable users for specialized tools or applications.
140605 
140606  \internal We could not make these private because they are required by user for special purposes. And
140607  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
140608 
140609  */
140610 
140611  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
140612  // overridden in every class by *generated* implementation
140614  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
140615  // MS: 06/28/02 container of names of variables or container indices
140616  // used used in the traversal to access AST successor nodes
140617  // overridden in every class by *generated* implementation
140620  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
140621 
140622  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
140623  // than all the vector copies. The implementation for these functions is generated for each class.
140625  virtual size_t get_numberOfTraversalSuccessors() override;
140627  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
140629  virtual size_t get_childIndex(SgNode *child) override;
140630 
140631 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
140632  // MS: 08/16/2002 method for generating RTI information
140634  virtual RTIReturnType roseRTI() override;
140635 #endif
140636  /* */
140637 
140638 
140639 
140640  /* name Deprecated Functions
140641  \brief Deprecated functions ... incomplete-documentation
140642 
140643  These functions have been deprecated from use.
140644  */
140645  /* */
140646 
140648  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
140649 
140650  // JJW (10/16/2008): Changed to a single function in Node.code, and put
140651  // getVariant() in #if 0 block to prevent confusing Doxygen
140652 #if 0
140653 
140654  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
140656  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
140657 #endif
140658  /* */
140659 
140660 
140661 
140662 
140663  public:
140664  /* name Traversal Support Functions
140665  \brief Traversal support functions ... incomplete-documentation
140666 
140667  These functions have been made public as part of the design, but they are suggested for internal use
140668  or by particularly knowledgable users for specialized tools or applications.
140669  */
140670  /* */
140671 
140672  // DQ (11/26/2005): Support for visitor pattern mechanims
140673  // (inferior to ROSE traversal mechanism, experimental).
140677 
140678  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
140680  virtual void accept (ROSE_VisitorPattern & visitor) override;
140681 
140682  // DQ (12/26/2005): Support for traversal based on the memory pool
140685  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
140686 
140689  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
140690 
140691  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
140692  // This traversal helps support internal tools that call static member functions.
140693  // note: this function operates on the memory pools.
140696  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
140697  /* */
140698 
140699 
140700  public:
140701  /* name Memory Allocation Functions
140702  \brief Memory allocations functions ... incomplete-documentation
140703 
140704  These functions have been made public as part of the design, but they are suggested for internal use
140705  or by particularly knowledgable users for specialized tools or applications.
140706  */
140707  /* */
140708 
140719  virtual bool isInMemoryPool() override;
140720 
140731  virtual void checkDataMemberPointersIfInMemoryPool() override;
140732 
140733  // DQ (4/30/2006): Modified to be a const function.
140748  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
140749 
140759  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
140760 
140772  virtual long getChildIndex( SgNode* childNode ) const override;
140773 
140774  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
140775  // comment here (changed to be a C style comment and not be a doxygen comment).
140776  /* \brief Constructor for use by AST File I/O Mechanism
140777 
140778  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
140779  which obtained via fast binary file I/O from disk.
140780  */
140781  // SgClinkageStartStatement( SgClinkageStartStatementStorageClass& source );
140782 
140783 
140784 
140785 
140786 
140787  // JH (10/24/2005): methods added to support the ast file IO
140788  private:
140789 
140790  /* name AST Memory Allocation Support Functions
140791  \brief Memory allocations support....
140792 
140793  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
140794  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
140795  and support the AST File I/O Mechanism.
140796  */
140797  /* */
140798 
140799  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
140800  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
140801  that I use the same type everywhere, if any changes are made. THe second one declares the type
140802  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
140803  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
140804  a correspinding one in the AST_FILE_IO class!
140805  */
140806  // DQ (9/2/2015): This typedef is no longer used, we can't define the
140807  // comment here (changed to be a C style comment and not be a doxygen comment).
140808  /* \brief Typedef used for low level memory access.
140809  */
140810  // typedef unsigned char* TestType;
140811 
140812  // DQ (9/2/2015): This typedef is no longer used, we can't define the
140813  // comment here (changed to be a C style comment and not be a doxygen comment).
140814  /* \brief Typedef used to hold memory addresses as values.
140815  */
140816  // typedef unsigned long AddressType;
140817 
140818 
140819 
140820  // necessary, to have direct access to the p_freepointer and the private methods !
140822  friend class AST_FILE_IO;
140823 
140825  friend class SgClinkageStartStatementStorageClass;
140826 
140828  friend class AstSpecificDataManagingClass;
140829 
140831  friend class AstSpecificDataManagingClassStorageClass;
140832 
140833  public:
140835  SgClinkageStartStatement( const SgClinkageStartStatementStorageClass& source );
140836 
140837  // private: // JJW hack
140838  /*
140839  name AST Memory Allocation Support Variables
140840  Memory allocations support variables
140841 
140842  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
140843  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
140844  and support the AST File I/O Mechanism.
140845  */
140846  /* */
140847 
140848  public:
140849 
140850  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
140851  // to current node (so that it will work cleanly with build functions to specify patterns).
140852  // virtual SgNode* addRegExpAttribute();
140859 
140860 // *** COMMON CODE SECTION ENDS HERE ***
140861 
140862 
140863 // End of memberFunctionString
140864 // Start of memberFunctionString
140865 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
140866 
140867  // the generated cast function
140868  // friend ROSE_DLL_API SgClinkageStartStatement* isSgClinkageStartStatement ( SgNode* s );
140869 
140871 
140872 
140873 // End of memberFunctionString
140874 // Start of memberFunctionString
140875 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
140876 
140877  void post_construction_initialization() override;
140878 
140879 
140880 // End of memberFunctionString
140881 
140882 
140883  public:
140884  virtual ~SgClinkageStartStatement();
140885 
140886 
140887  public:
140888  SgClinkageStartStatement(Sg_File_Info* startOfConstruct );
140890 
140891  protected:
140892 
140893 
140894 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
140895 
140896 
140897  };
140898 #endif
140899 
140900 // postdeclarations for SgClinkageStartStatement
140901 
140902 /* #line 140903 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
140903 
140904 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
140905 
140906 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
140907 
140908 
140909 /* #line 140910 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
140910 
140911 
140912 
140913 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
140914 
140915 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
140916 // This code is automatically generated for each
140917 // terminal and non-terminal within the defined
140918 // grammar. There is a simple way to change the
140919 // code to fix bugs etc. See the ROSE README file
140920 // for directions.
140921 
140922 // tps: (02/22/2010): Adding DLL export requirements
140923 #include "rosedll.h"
140924 
140925 // predeclarations for SgClinkageEndStatement
140926 
140927 /* #line 140928 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
140928 
140929 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
140930 
140931 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
140932 
140933 #if 1
140934 // Class Definition for SgClinkageEndStatement
140936  {
140937  public:
140938 
140939 
140940 /* #line 140941 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
140941 
140942  virtual SgNode* copy ( SgCopyHelp& help) const override;
140943 // Start of memberFunctionString
140944 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
140945 
140946 // *** COMMON CODE SECTION BEGINS HERE ***
140947 
140948  public:
140949 
140950  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
140951  // and not required which is required to match the other aspects of the copy mechanism code generation.
140952  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
140953  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
140954  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
140955  // virtual SgNode* copy ( const SgCopyHelp & help) const;
140956 
140958  virtual std::string class_name() const override;
140959 
140961  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
140962 
140964  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
140965  // static const VariantT static_variant = V_SgClinkageEndStatement;
140966  enum { static_variant = V_SgClinkageEndStatement };
140967 
140968  /* the generated cast function */
140970  ROSE_DLL_API friend SgClinkageEndStatement* isSgClinkageEndStatement( SgNode * s );
140971 
140973  ROSE_DLL_API friend const SgClinkageEndStatement* isSgClinkageEndStatement( const SgNode * s );
140974 
140975  // ******************************************
140976  // * Memory Pool / New / Delete
140977  // ******************************************
140978 
140979  public:
140981  static const unsigned pool_size; //
140983  static std::vector<unsigned char *> pools; //
140985  static SgClinkageEndStatement * next_node; //
140986 
140988  static unsigned long initializeStorageClassArray(SgClinkageEndStatementStorageClass *); //
140989 
140991  static void clearMemoryPool(); //
140992  static void deleteMemoryPool(); //
140993 
140995  static void extendMemoryPoolForFileIO(); //
140996 
140998  static SgClinkageEndStatement * getPointerFromGlobalIndex(unsigned long); //
141000  static SgClinkageEndStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
141001 
141003  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
141005  static void resetValidFreepointers(); //
141007  static unsigned long getNumberOfLastValidPointer(); //
141008 
141009 
141010 #if defined(INLINE_FUNCTIONS)
141011 
141012  inline void *operator new (size_t size);
141013 #else
141014 
141015  void *operator new (size_t size);
141016 #endif
141017 
141018  void operator delete (void* pointer, size_t size);
141019 
141020  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
141021  void operator delete (void* pointer)
141022  {
141023  // This is the generated delete operator...
141024  SgClinkageEndStatement::operator delete (pointer,sizeof(SgClinkageEndStatement));
141025  }
141026 
141028  static size_t numberOfNodes();
141029 
141031  static size_t memoryUsage();
141032 
141033  // End of scope which started in IR nodes specific code
141034  /* */
141035 
141036  /* name Internal Functions
141037  \brief Internal functions ... incomplete-documentation
141038 
141039  These functions have been made public as part of the design, but they are suggested for internal use
141040  or by particularly knowledgeable users for specialized tools or applications.
141041 
141042  \internal We could not make these private because they are required by user for special purposes. And
141043  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
141044 
141045  */
141046 
141047  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
141048  // overridden in every class by *generated* implementation
141050  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
141051  // MS: 06/28/02 container of names of variables or container indices
141052  // used used in the traversal to access AST successor nodes
141053  // overridden in every class by *generated* implementation
141056  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
141057 
141058  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
141059  // than all the vector copies. The implementation for these functions is generated for each class.
141061  virtual size_t get_numberOfTraversalSuccessors() override;
141063  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
141065  virtual size_t get_childIndex(SgNode *child) override;
141066 
141067 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
141068  // MS: 08/16/2002 method for generating RTI information
141070  virtual RTIReturnType roseRTI() override;
141071 #endif
141072  /* */
141073 
141074 
141075 
141076  /* name Deprecated Functions
141077  \brief Deprecated functions ... incomplete-documentation
141078 
141079  These functions have been deprecated from use.
141080  */
141081  /* */
141082 
141084  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
141085 
141086  // JJW (10/16/2008): Changed to a single function in Node.code, and put
141087  // getVariant() in #if 0 block to prevent confusing Doxygen
141088 #if 0
141089 
141090  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
141092  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
141093 #endif
141094  /* */
141095 
141096 
141097 
141098 
141099  public:
141100  /* name Traversal Support Functions
141101  \brief Traversal support functions ... incomplete-documentation
141102 
141103  These functions have been made public as part of the design, but they are suggested for internal use
141104  or by particularly knowledgable users for specialized tools or applications.
141105  */
141106  /* */
141107 
141108  // DQ (11/26/2005): Support for visitor pattern mechanims
141109  // (inferior to ROSE traversal mechanism, experimental).
141113 
141114  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
141116  virtual void accept (ROSE_VisitorPattern & visitor) override;
141117 
141118  // DQ (12/26/2005): Support for traversal based on the memory pool
141121  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
141122 
141125  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
141126 
141127  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
141128  // This traversal helps support internal tools that call static member functions.
141129  // note: this function operates on the memory pools.
141132  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
141133  /* */
141134 
141135 
141136  public:
141137  /* name Memory Allocation Functions
141138  \brief Memory allocations functions ... incomplete-documentation
141139 
141140  These functions have been made public as part of the design, but they are suggested for internal use
141141  or by particularly knowledgable users for specialized tools or applications.
141142  */
141143  /* */
141144 
141155  virtual bool isInMemoryPool() override;
141156 
141167  virtual void checkDataMemberPointersIfInMemoryPool() override;
141168 
141169  // DQ (4/30/2006): Modified to be a const function.
141184  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
141185 
141195  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
141196 
141208  virtual long getChildIndex( SgNode* childNode ) const override;
141209 
141210  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
141211  // comment here (changed to be a C style comment and not be a doxygen comment).
141212  /* \brief Constructor for use by AST File I/O Mechanism
141213 
141214  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
141215  which obtained via fast binary file I/O from disk.
141216  */
141217  // SgClinkageEndStatement( SgClinkageEndStatementStorageClass& source );
141218 
141219 
141220 
141221 
141222 
141223  // JH (10/24/2005): methods added to support the ast file IO
141224  private:
141225 
141226  /* name AST Memory Allocation Support Functions
141227  \brief Memory allocations support....
141228 
141229  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
141230  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
141231  and support the AST File I/O Mechanism.
141232  */
141233  /* */
141234 
141235  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
141236  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
141237  that I use the same type everywhere, if any changes are made. THe second one declares the type
141238  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
141239  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
141240  a correspinding one in the AST_FILE_IO class!
141241  */
141242  // DQ (9/2/2015): This typedef is no longer used, we can't define the
141243  // comment here (changed to be a C style comment and not be a doxygen comment).
141244  /* \brief Typedef used for low level memory access.
141245  */
141246  // typedef unsigned char* TestType;
141247 
141248  // DQ (9/2/2015): This typedef is no longer used, we can't define the
141249  // comment here (changed to be a C style comment and not be a doxygen comment).
141250  /* \brief Typedef used to hold memory addresses as values.
141251  */
141252  // typedef unsigned long AddressType;
141253 
141254 
141255 
141256  // necessary, to have direct access to the p_freepointer and the private methods !
141258  friend class AST_FILE_IO;
141259 
141261  friend class SgClinkageEndStatementStorageClass;
141262 
141264  friend class AstSpecificDataManagingClass;
141265 
141267  friend class AstSpecificDataManagingClassStorageClass;
141268 
141269  public:
141271  SgClinkageEndStatement( const SgClinkageEndStatementStorageClass& source );
141272 
141273  // private: // JJW hack
141274  /*
141275  name AST Memory Allocation Support Variables
141276  Memory allocations support variables
141277 
141278  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
141279  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
141280  and support the AST File I/O Mechanism.
141281  */
141282  /* */
141283 
141284  public:
141285 
141286  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
141287  // to current node (so that it will work cleanly with build functions to specify patterns).
141288  // virtual SgNode* addRegExpAttribute();
141295 
141296 // *** COMMON CODE SECTION ENDS HERE ***
141297 
141298 
141299 // End of memberFunctionString
141300 // Start of memberFunctionString
141301 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
141302 
141303  // the generated cast function
141304  // friend ROSE_DLL_API SgClinkageEndStatement* isSgClinkageEndStatement ( SgNode* s );
141305 
141307 
141308 
141309 // End of memberFunctionString
141310 // Start of memberFunctionString
141311 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
141312 
141313  void post_construction_initialization() override;
141314 
141315 
141316 // End of memberFunctionString
141317 
141318 
141319  public:
141320  virtual ~SgClinkageEndStatement();
141321 
141322 
141323  public:
141324  SgClinkageEndStatement(Sg_File_Info* startOfConstruct );
141326 
141327  protected:
141328 
141329 
141330 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
141331 
141332 
141333  };
141334 #endif
141335 
141336 // postdeclarations for SgClinkageEndStatement
141337 
141338 /* #line 141339 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
141339 
141340 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
141341 
141342 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
141343 
141344 
141345 /* #line 141346 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
141346 
141347 
141348 
141349 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
141350 
141351 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
141352 // This code is automatically generated for each
141353 // terminal and non-terminal within the defined
141354 // grammar. There is a simple way to change the
141355 // code to fix bugs etc. See the ROSE README file
141356 // for directions.
141357 
141358 // tps: (02/22/2010): Adding DLL export requirements
141359 #include "rosedll.h"
141360 
141361 // predeclarations for SgEnumDeclaration
141362 
141363 /* #line 141364 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
141364 
141365 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
141366 
141367 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
141368 
141369 #if 1
141370 // Class Definition for SgEnumDeclaration
141371 class ROSE_DLL_API SgEnumDeclaration : public SgDeclarationStatement
141372  {
141373  public:
141374 
141375 
141376 /* #line 141377 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
141377 
141378  virtual SgNode* copy ( SgCopyHelp& help) const override;
141379 // Start of memberFunctionString
141380 /* #line 2193 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
141381 
141382 /* #line 939 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
141383 
141384  public:
141385  virtual void append_enumerator ( SgInitializedName* element );
141386  virtual void prepend_enumerator ( SgInitializedName* element );
141387 
141388  public:
141389  // New functions added
141390  // SgInitializedNamePtrList::iterator append_enumerator ( const SgInitializedNamePtrList::iterator & list, SgInitializedName* element );
141391  // SgInitializedNamePtrList::iterator prepend_enumerator ( const SgInitializedNamePtrList::iterator & list, SgInitializedName* element );
141392 
141393  // SgInitializedNamePtrList::iterator insert_enumerator ( const SgInitializedNamePtrList::iterator & list, SgInitializedName* element );
141394 
141395 
141396  public:
141397 
141398 
141399 
141400 
141401  public:
141402  // DQ (10/15/2004): added support for qualified names
141403  virtual SgName get_qualified_name() const;
141404 
141405  // RV (1/31/2006): Implemented mangler for enum declarations.
141406  virtual SgName get_mangled_name (void) const override;
141407 
141409  virtual bool hasExplicitScope() const override;
141410 
141411  // DQ (2/6/2007): Get the associated symbol from the symbol table in the stored scope
141412  virtual SgSymbol* get_symbol_from_symbol_table() const override;
141413 
141414 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
141415  virtual unsigned int cfgIndexForEnd() const override;
141416  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
141417  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
141418 #endif
141419 
141420 #if ALT_FIXUP_COPY
141421  // DQ (11/7/2007): These need to be called separately (see documentation)
141422  virtual void fixupCopy_scopes (SgNode* copy, SgCopyHelp & help) const override;
141423  virtual void fixupCopy_symbols (SgNode* copy, SgCopyHelp & help) const override;
141424  virtual void fixupCopy_references (SgNode* copy, SgCopyHelp & help) const override;
141425 #else
141426  // DQ (10/18/2007): Added fixup function to set scopes not set properly by the ROSETTA generated copy!
141427  virtual void fixupCopy(SgNode* copy, SgCopyHelp & help) const;
141428 #endif
141429 
141430  // DQ (2/14/2019): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
141431  int get_name_qualification_length() const;
141432  void set_name_qualification_length(int name_qualification_length);
141433 
141434  // DQ (2/14/2019): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
141435  bool get_type_elaboration_required() const;
141436  void set_type_elaboration_required(bool type_elaboration_required);
141437 
141438  // DQ (2/14/2019): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
141439  bool get_global_qualification_required() const;
141440  void set_global_qualification_required(bool global_qualification_required);
141441 
141442 
141443 
141444 // End of memberFunctionString
141445 // Start of memberFunctionString
141446 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
141447 
141448 // *** COMMON CODE SECTION BEGINS HERE ***
141449 
141450  public:
141451 
141452  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
141453  // and not required which is required to match the other aspects of the copy mechanism code generation.
141454  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
141455  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
141456  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
141457  // virtual SgNode* copy ( const SgCopyHelp & help) const;
141458 
141460  virtual std::string class_name() const override;
141461 
141463  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
141464 
141466  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
141467  // static const VariantT static_variant = V_SgEnumDeclaration;
141468  enum { static_variant = V_SgEnumDeclaration };
141469 
141470  /* the generated cast function */
141472  ROSE_DLL_API friend SgEnumDeclaration* isSgEnumDeclaration( SgNode * s );
141473 
141475  ROSE_DLL_API friend const SgEnumDeclaration* isSgEnumDeclaration( const SgNode * s );
141476 
141477  // ******************************************
141478  // * Memory Pool / New / Delete
141479  // ******************************************
141480 
141481  public:
141483  static const unsigned pool_size; //
141485  static std::vector<unsigned char *> pools; //
141487  static SgEnumDeclaration * next_node; //
141488 
141490  static unsigned long initializeStorageClassArray(SgEnumDeclarationStorageClass *); //
141491 
141493  static void clearMemoryPool(); //
141494  static void deleteMemoryPool(); //
141495 
141497  static void extendMemoryPoolForFileIO(); //
141498 
141500  static SgEnumDeclaration * getPointerFromGlobalIndex(unsigned long); //
141502  static SgEnumDeclaration * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
141503 
141505  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
141507  static void resetValidFreepointers(); //
141509  static unsigned long getNumberOfLastValidPointer(); //
141510 
141511 
141512 #if defined(INLINE_FUNCTIONS)
141513 
141514  inline void *operator new (size_t size);
141515 #else
141516 
141517  void *operator new (size_t size);
141518 #endif
141519 
141520  void operator delete (void* pointer, size_t size);
141521 
141522  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
141523  void operator delete (void* pointer)
141524  {
141525  // This is the generated delete operator...
141526  SgEnumDeclaration::operator delete (pointer,sizeof(SgEnumDeclaration));
141527  }
141528 
141530  static size_t numberOfNodes();
141531 
141533  static size_t memoryUsage();
141534 
141535  // End of scope which started in IR nodes specific code
141536  /* */
141537 
141538  /* name Internal Functions
141539  \brief Internal functions ... incomplete-documentation
141540 
141541  These functions have been made public as part of the design, but they are suggested for internal use
141542  or by particularly knowledgeable users for specialized tools or applications.
141543 
141544  \internal We could not make these private because they are required by user for special purposes. And
141545  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
141546 
141547  */
141548 
141549  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
141550  // overridden in every class by *generated* implementation
141552  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
141553  // MS: 06/28/02 container of names of variables or container indices
141554  // used used in the traversal to access AST successor nodes
141555  // overridden in every class by *generated* implementation
141558  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
141559 
141560  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
141561  // than all the vector copies. The implementation for these functions is generated for each class.
141563  virtual size_t get_numberOfTraversalSuccessors() override;
141565  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
141567  virtual size_t get_childIndex(SgNode *child) override;
141568 
141569 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
141570  // MS: 08/16/2002 method for generating RTI information
141572  virtual RTIReturnType roseRTI() override;
141573 #endif
141574  /* */
141575 
141576 
141577 
141578  /* name Deprecated Functions
141579  \brief Deprecated functions ... incomplete-documentation
141580 
141581  These functions have been deprecated from use.
141582  */
141583  /* */
141584 
141586  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
141587 
141588  // JJW (10/16/2008): Changed to a single function in Node.code, and put
141589  // getVariant() in #if 0 block to prevent confusing Doxygen
141590 #if 0
141591 
141592  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
141594  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
141595 #endif
141596  /* */
141597 
141598 
141599 
141600 
141601  public:
141602  /* name Traversal Support Functions
141603  \brief Traversal support functions ... incomplete-documentation
141604 
141605  These functions have been made public as part of the design, but they are suggested for internal use
141606  or by particularly knowledgable users for specialized tools or applications.
141607  */
141608  /* */
141609 
141610  // DQ (11/26/2005): Support for visitor pattern mechanims
141611  // (inferior to ROSE traversal mechanism, experimental).
141615 
141616  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
141618  virtual void accept (ROSE_VisitorPattern & visitor) override;
141619 
141620  // DQ (12/26/2005): Support for traversal based on the memory pool
141623  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
141624 
141627  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
141628 
141629  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
141630  // This traversal helps support internal tools that call static member functions.
141631  // note: this function operates on the memory pools.
141634  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
141635  /* */
141636 
141637 
141638  public:
141639  /* name Memory Allocation Functions
141640  \brief Memory allocations functions ... incomplete-documentation
141641 
141642  These functions have been made public as part of the design, but they are suggested for internal use
141643  or by particularly knowledgable users for specialized tools or applications.
141644  */
141645  /* */
141646 
141657  virtual bool isInMemoryPool() override;
141658 
141669  virtual void checkDataMemberPointersIfInMemoryPool() override;
141670 
141671  // DQ (4/30/2006): Modified to be a const function.
141686  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
141687 
141697  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
141698 
141710  virtual long getChildIndex( SgNode* childNode ) const override;
141711 
141712  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
141713  // comment here (changed to be a C style comment and not be a doxygen comment).
141714  /* \brief Constructor for use by AST File I/O Mechanism
141715 
141716  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
141717  which obtained via fast binary file I/O from disk.
141718  */
141719  // SgEnumDeclaration( SgEnumDeclarationStorageClass& source );
141720 
141721 
141722 
141723 
141724 
141725  // JH (10/24/2005): methods added to support the ast file IO
141726  private:
141727 
141728  /* name AST Memory Allocation Support Functions
141729  \brief Memory allocations support....
141730 
141731  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
141732  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
141733  and support the AST File I/O Mechanism.
141734  */
141735  /* */
141736 
141737  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
141738  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
141739  that I use the same type everywhere, if any changes are made. THe second one declares the type
141740  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
141741  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
141742  a correspinding one in the AST_FILE_IO class!
141743  */
141744  // DQ (9/2/2015): This typedef is no longer used, we can't define the
141745  // comment here (changed to be a C style comment and not be a doxygen comment).
141746  /* \brief Typedef used for low level memory access.
141747  */
141748  // typedef unsigned char* TestType;
141749 
141750  // DQ (9/2/2015): This typedef is no longer used, we can't define the
141751  // comment here (changed to be a C style comment and not be a doxygen comment).
141752  /* \brief Typedef used to hold memory addresses as values.
141753  */
141754  // typedef unsigned long AddressType;
141755 
141756 
141757 
141758  // necessary, to have direct access to the p_freepointer and the private methods !
141760  friend class AST_FILE_IO;
141761 
141763  friend class SgEnumDeclarationStorageClass;
141764 
141766  friend class AstSpecificDataManagingClass;
141767 
141769  friend class AstSpecificDataManagingClassStorageClass;
141770 
141771  public:
141773  SgEnumDeclaration( const SgEnumDeclarationStorageClass& source );
141774 
141775  // private: // JJW hack
141776  /*
141777  name AST Memory Allocation Support Variables
141778  Memory allocations support variables
141779 
141780  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
141781  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
141782  and support the AST File I/O Mechanism.
141783  */
141784  /* */
141785 
141786  public:
141787 
141788  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
141789  // to current node (so that it will work cleanly with build functions to specify patterns).
141790  // virtual SgNode* addRegExpAttribute();
141797 
141798 // *** COMMON CODE SECTION ENDS HERE ***
141799 
141800 
141801 // End of memberFunctionString
141802 // Start of memberFunctionString
141803 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
141804 
141805  // the generated cast function
141806  // friend ROSE_DLL_API SgEnumDeclaration* isSgEnumDeclaration ( SgNode* s );
141807 
141809 
141810 
141811 // End of memberFunctionString
141812 // Start of memberFunctionString
141813 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
141814 
141815  void post_construction_initialization() override;
141816 
141817 
141818 // End of memberFunctionString
141819 
141820  public:
141821  SgName get_name() const /* (getDataAccessFunctionPrototypeString) */;
141822  void set_name(SgName name) /* (getDataAccessFunctionPrototypeString) */;
141823 
141824  public:
141825  bool get_embedded() const;
141826  void set_embedded(bool embedded);
141827 
141828  public:
141829  SgEnumType* get_type() const /* (getDataAccessFunctionPrototypeString) */;
141830  void set_type(SgEnumType* type) /* (getDataAccessFunctionPrototypeString) */;
141831 
141832  public:
141833  SgType* get_adaParentType() const;
141834  void set_adaParentType(SgType* adaParentType);
141835 
141836  public:
141837  const SgInitializedNamePtrList& get_enumerators() const;
141838  SgInitializedNamePtrList& get_enumerators();
141839 
141840  public:
141841  SgScopeStatement* get_scope() const override /* (getDataAccessFunctionPrototypeString) */;
141842  void set_scope(SgScopeStatement* scope) override /* (getDataAccessFunctionPrototypeString) */;
141843 
141844  public:
141845  bool get_isUnNamed() const;
141846  void set_isUnNamed(bool isUnNamed);
141847 
141848  public:
141849  bool get_isAutonomousDeclaration() const;
141850  void set_isAutonomousDeclaration(bool isAutonomousDeclaration);
141851 
141852  public:
141853  SgType* get_field_type() const;
141854  void set_field_type(SgType* field_type);
141855 
141856  public:
141857  bool get_isScopedEnum() const;
141858  void set_isScopedEnum(bool isScopedEnum);
141859 
141860 
141861 
141862 
141863 
141864  public:
141865  virtual ~SgEnumDeclaration();
141866 
141867 
141868  public:
141869  SgEnumDeclaration(Sg_File_Info* startOfConstruct , SgName name = "", SgEnumType* type = NULL);
141870  SgEnumDeclaration(SgName name, SgEnumType* type);
141871 
141872  protected:
141873 // Start of memberFunctionString
141874 SgName p_name;
141875 
141876 // End of memberFunctionString
141877 // Start of memberFunctionString
141878 bool p_embedded;
141879 
141880 // End of memberFunctionString
141881 // Start of memberFunctionString
141882 SgEnumType* p_type;
141883 
141884 // End of memberFunctionString
141885 // Start of memberFunctionString
141886 SgType* p_adaParentType;
141887 
141888 // End of memberFunctionString
141889 // Start of memberFunctionString
141890 SgInitializedNamePtrList p_enumerators;
141891 
141892 // End of memberFunctionString
141893 // Start of memberFunctionString
141895 
141896 // End of memberFunctionString
141897 // Start of memberFunctionString
141898 bool p_isUnNamed;
141899 
141900 // End of memberFunctionString
141901 // Start of memberFunctionString
141902 bool p_isAutonomousDeclaration;
141903 
141904 // End of memberFunctionString
141905 // Start of memberFunctionString
141906 SgType* p_field_type;
141907 
141908 // End of memberFunctionString
141909 // Start of memberFunctionString
141910 bool p_isScopedEnum;
141911 
141912 // End of memberFunctionString
141913 // Start of memberFunctionString
141914 int p_name_qualification_length;
141915 
141916 // End of memberFunctionString
141917 // Start of memberFunctionString
141918 bool p_type_elaboration_required;
141919 
141920 // End of memberFunctionString
141921 // Start of memberFunctionString
141922 bool p_global_qualification_required;
141923 
141924 // End of memberFunctionString
141925 
141926 
141927 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
141928 
141929 
141930  };
141931 #endif
141932 
141933 // postdeclarations for SgEnumDeclaration
141934 
141935 /* #line 141936 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
141936 
141937 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
141938 
141939 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
141940 
141941 
141942 /* #line 141943 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
141943 
141944 
141945 
141946 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
141947 
141948 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
141949 // This code is automatically generated for each
141950 // terminal and non-terminal within the defined
141951 // grammar. There is a simple way to change the
141952 // code to fix bugs etc. See the ROSE README file
141953 // for directions.
141954 
141955 // tps: (02/22/2010): Adding DLL export requirements
141956 #include "rosedll.h"
141957 
141958 // predeclarations for SgAsmStmt
141959 
141960 /* #line 141961 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
141961 
141962 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
141963 
141964 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
141965 
141966 #if 1
141967 // Class Definition for SgAsmStmt
141968 class ROSE_DLL_API SgAsmStmt : public SgDeclarationStatement
141969  {
141970  public:
141971 
141972 
141973 /* #line 141974 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
141974 
141975  virtual SgNode* copy ( SgCopyHelp& help) const override;
141976 // Start of memberFunctionString
141977 /* #line 2598 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
141978 
141979 
141980 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
141981  virtual unsigned int cfgIndexForEnd() const override;
141982  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
141983  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
141984 #endif
141985  // DQ (7/26/2006): Need a type for the list of registers used in the clobber list
141986  typedef std::vector<SgInitializedName::asm_register_name_enum> AsmRegisterNameList;
141987 
141988  // DQ (2/18/2006): Added general name mangling for all declarations (and some other IR nodes).
141989  virtual SgName get_mangled_name(void) const override;
141990 
141991  // DQ (7/22/2006): We need these to be explicit since we can't support reference parameter passing within ROSETTA.
141992  SgExpressionPtrList& get_operands();
141993  const SgExpressionPtrList& get_operands() const;
141994 
141995  // DQ (7/27/2006): We need these to be explicit since we can't support reference parameter passing within ROSETTA.
141996  AsmRegisterNameList& get_clobberRegisterList();
141997  const AsmRegisterNameList& get_clobberRegisterList() const;
141998 
141999 
142000 
142001 // End of memberFunctionString
142002 // Start of memberFunctionString
142003 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
142004 
142005 // *** COMMON CODE SECTION BEGINS HERE ***
142006 
142007  public:
142008 
142009  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
142010  // and not required which is required to match the other aspects of the copy mechanism code generation.
142011  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
142012  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
142013  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
142014  // virtual SgNode* copy ( const SgCopyHelp & help) const;
142015 
142017  virtual std::string class_name() const override;
142018 
142020  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
142021 
142023  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
142024  // static const VariantT static_variant = V_SgAsmStmt;
142025  enum { static_variant = V_SgAsmStmt };
142026 
142027  /* the generated cast function */
142029  ROSE_DLL_API friend SgAsmStmt* isSgAsmStmt( SgNode * s );
142030 
142032  ROSE_DLL_API friend const SgAsmStmt* isSgAsmStmt( const SgNode * s );
142033 
142034  // ******************************************
142035  // * Memory Pool / New / Delete
142036  // ******************************************
142037 
142038  public:
142040  static const unsigned pool_size; //
142042  static std::vector<unsigned char *> pools; //
142044  static SgAsmStmt * next_node; //
142045 
142047  static unsigned long initializeStorageClassArray(SgAsmStmtStorageClass *); //
142048 
142050  static void clearMemoryPool(); //
142051  static void deleteMemoryPool(); //
142052 
142054  static void extendMemoryPoolForFileIO(); //
142055 
142057  static SgAsmStmt * getPointerFromGlobalIndex(unsigned long); //
142059  static SgAsmStmt * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
142060 
142062  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
142064  static void resetValidFreepointers(); //
142066  static unsigned long getNumberOfLastValidPointer(); //
142067 
142068 
142069 #if defined(INLINE_FUNCTIONS)
142070 
142071  inline void *operator new (size_t size);
142072 #else
142073 
142074  void *operator new (size_t size);
142075 #endif
142076 
142077  void operator delete (void* pointer, size_t size);
142078 
142079  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
142080  void operator delete (void* pointer)
142081  {
142082  // This is the generated delete operator...
142083  SgAsmStmt::operator delete (pointer,sizeof(SgAsmStmt));
142084  }
142085 
142087  static size_t numberOfNodes();
142088 
142090  static size_t memoryUsage();
142091 
142092  // End of scope which started in IR nodes specific code
142093  /* */
142094 
142095  /* name Internal Functions
142096  \brief Internal functions ... incomplete-documentation
142097 
142098  These functions have been made public as part of the design, but they are suggested for internal use
142099  or by particularly knowledgeable users for specialized tools or applications.
142100 
142101  \internal We could not make these private because they are required by user for special purposes. And
142102  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
142103 
142104  */
142105 
142106  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
142107  // overridden in every class by *generated* implementation
142109  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
142110  // MS: 06/28/02 container of names of variables or container indices
142111  // used used in the traversal to access AST successor nodes
142112  // overridden in every class by *generated* implementation
142115  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
142116 
142117  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
142118  // than all the vector copies. The implementation for these functions is generated for each class.
142120  virtual size_t get_numberOfTraversalSuccessors() override;
142122  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
142124  virtual size_t get_childIndex(SgNode *child) override;
142125 
142126 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
142127  // MS: 08/16/2002 method for generating RTI information
142129  virtual RTIReturnType roseRTI() override;
142130 #endif
142131  /* */
142132 
142133 
142134 
142135  /* name Deprecated Functions
142136  \brief Deprecated functions ... incomplete-documentation
142137 
142138  These functions have been deprecated from use.
142139  */
142140  /* */
142141 
142143  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
142144 
142145  // JJW (10/16/2008): Changed to a single function in Node.code, and put
142146  // getVariant() in #if 0 block to prevent confusing Doxygen
142147 #if 0
142148 
142149  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
142151  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
142152 #endif
142153  /* */
142154 
142155 
142156 
142157 
142158  public:
142159  /* name Traversal Support Functions
142160  \brief Traversal support functions ... incomplete-documentation
142161 
142162  These functions have been made public as part of the design, but they are suggested for internal use
142163  or by particularly knowledgable users for specialized tools or applications.
142164  */
142165  /* */
142166 
142167  // DQ (11/26/2005): Support for visitor pattern mechanims
142168  // (inferior to ROSE traversal mechanism, experimental).
142172 
142173  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
142175  virtual void accept (ROSE_VisitorPattern & visitor) override;
142176 
142177  // DQ (12/26/2005): Support for traversal based on the memory pool
142180  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
142181 
142184  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
142185 
142186  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
142187  // This traversal helps support internal tools that call static member functions.
142188  // note: this function operates on the memory pools.
142191  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
142192  /* */
142193 
142194 
142195  public:
142196  /* name Memory Allocation Functions
142197  \brief Memory allocations functions ... incomplete-documentation
142198 
142199  These functions have been made public as part of the design, but they are suggested for internal use
142200  or by particularly knowledgable users for specialized tools or applications.
142201  */
142202  /* */
142203 
142214  virtual bool isInMemoryPool() override;
142215 
142226  virtual void checkDataMemberPointersIfInMemoryPool() override;
142227 
142228  // DQ (4/30/2006): Modified to be a const function.
142243  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
142244 
142254  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
142255 
142267  virtual long getChildIndex( SgNode* childNode ) const override;
142268 
142269  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
142270  // comment here (changed to be a C style comment and not be a doxygen comment).
142271  /* \brief Constructor for use by AST File I/O Mechanism
142272 
142273  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
142274  which obtained via fast binary file I/O from disk.
142275  */
142276  // SgAsmStmt( SgAsmStmtStorageClass& source );
142277 
142278 
142279 
142280 
142281 
142282  // JH (10/24/2005): methods added to support the ast file IO
142283  private:
142284 
142285  /* name AST Memory Allocation Support Functions
142286  \brief Memory allocations support....
142287 
142288  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
142289  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
142290  and support the AST File I/O Mechanism.
142291  */
142292  /* */
142293 
142294  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
142295  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
142296  that I use the same type everywhere, if any changes are made. THe second one declares the type
142297  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
142298  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
142299  a correspinding one in the AST_FILE_IO class!
142300  */
142301  // DQ (9/2/2015): This typedef is no longer used, we can't define the
142302  // comment here (changed to be a C style comment and not be a doxygen comment).
142303  /* \brief Typedef used for low level memory access.
142304  */
142305  // typedef unsigned char* TestType;
142306 
142307  // DQ (9/2/2015): This typedef is no longer used, we can't define the
142308  // comment here (changed to be a C style comment and not be a doxygen comment).
142309  /* \brief Typedef used to hold memory addresses as values.
142310  */
142311  // typedef unsigned long AddressType;
142312 
142313 
142314 
142315  // necessary, to have direct access to the p_freepointer and the private methods !
142317  friend class AST_FILE_IO;
142318 
142320  friend class SgAsmStmtStorageClass;
142321 
142323  friend class AstSpecificDataManagingClass;
142324 
142326  friend class AstSpecificDataManagingClassStorageClass;
142327 
142328  public:
142330  SgAsmStmt( const SgAsmStmtStorageClass& source );
142331 
142332  // private: // JJW hack
142333  /*
142334  name AST Memory Allocation Support Variables
142335  Memory allocations support variables
142336 
142337  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
142338  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
142339  and support the AST File I/O Mechanism.
142340  */
142341  /* */
142342 
142343  public:
142344 
142345  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
142346  // to current node (so that it will work cleanly with build functions to specify patterns).
142347  // virtual SgNode* addRegExpAttribute();
142353  SgAsmStmt* addRegExpAttribute(std::string s, AstRegExAttribute* a);
142354 
142355 // *** COMMON CODE SECTION ENDS HERE ***
142356 
142357 
142358 // End of memberFunctionString
142359 // Start of memberFunctionString
142360 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
142361 
142362  // the generated cast function
142363  // friend ROSE_DLL_API SgAsmStmt* isSgAsmStmt ( SgNode* s );
142364 
142366 
142367 
142368 // End of memberFunctionString
142369 // Start of memberFunctionString
142370 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
142371 
142372  void post_construction_initialization() override;
142373 
142374 
142375 // End of memberFunctionString
142376 
142377  public:
142378  std::string get_assemblyCode() const;
142379  void set_assemblyCode(std::string assemblyCode);
142380 
142381  public:
142382  bool get_useGnuExtendedFormat() const;
142383  void set_useGnuExtendedFormat(bool useGnuExtendedFormat);
142384 
142385 
142386 
142387  public:
142388  bool get_isVolatile() const;
142389  void set_isVolatile(bool isVolatile);
142390 
142391 
142392  public:
142393  virtual ~SgAsmStmt();
142394 
142395 
142396  public:
142397  SgAsmStmt(Sg_File_Info* startOfConstruct );
142398  SgAsmStmt();
142399 
142400  protected:
142401 // Start of memberFunctionString
142402 std::string p_assemblyCode;
142403 
142404 // End of memberFunctionString
142405 // Start of memberFunctionString
142406 bool p_useGnuExtendedFormat;
142407 
142408 // End of memberFunctionString
142409 // Start of memberFunctionString
142410 SgExpressionPtrList p_operands;
142411 
142412 // End of memberFunctionString
142413 // Start of memberFunctionString
142414 SgAsmStmt::AsmRegisterNameList p_clobberRegisterList;
142415 
142416 // End of memberFunctionString
142417 // Start of memberFunctionString
142418 bool p_isVolatile;
142419 
142420 // End of memberFunctionString
142421 
142422 
142423 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
142424 
142425 
142426  };
142427 #endif
142428 
142429 // postdeclarations for SgAsmStmt
142430 
142431 /* #line 142432 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
142432 
142433 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
142434 
142435 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
142436 
142437 
142438 /* #line 142439 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
142439 
142440 
142441 
142442 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
142443 
142444 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
142445 // This code is automatically generated for each
142446 // terminal and non-terminal within the defined
142447 // grammar. There is a simple way to change the
142448 // code to fix bugs etc. See the ROSE README file
142449 // for directions.
142450 
142451 // tps: (02/22/2010): Adding DLL export requirements
142452 #include "rosedll.h"
142453 
142454 // predeclarations for SgAttributeSpecificationStatement
142455 
142456 /* #line 142457 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
142457 
142458 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
142459 
142460 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
142461 
142462 #if 1
142463 // Class Definition for SgAttributeSpecificationStatement
142465  {
142466  public:
142467 
142468 
142469 /* #line 142470 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
142470 
142471  virtual SgNode* copy ( SgCopyHelp& help) const override;
142472 // Start of memberFunctionString
142473 /* #line 3684 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
142474 
142475 
142476 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
142477  virtual unsigned int cfgIndexForEnd() const override;
142478  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
142479  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
142480 #endif
142481 
142482  public:
142485  {
142486  e_unknown_attribute_spec,
142487  e_accessStatement_private,
142488  e_accessStatement_public,
142489  e_allocatableStatement,
142490  e_asynchronousStatement,
142491  e_bindStatement,
142492  e_dataStatement,
142493  e_dimensionStatement,
142494  e_externalStatement,
142495  e_intentStatement,
142496  e_intrinsicStatement,
142497  e_optionalStatement,
142498  e_parameterStatement,
142499  e_pointerStatement,
142500  e_protectedStatement,
142501  e_saveStatement,
142502  e_targetStatement,
142503  e_valueStatement,
142504  e_volatileStatement,
142505  e_last_attribute_spec
142506  };
142507 
142508  virtual SgName get_mangled_name() const override;
142509 
142510  const SgStringList & get_name_list() const;
142511  SgStringList & get_name_list();
142512 
142514  const SgDataStatementGroupPtrList & get_data_statement_group_list() const;
142515  SgDataStatementGroupPtrList & get_data_statement_group_list();
142516 
142518  const SgDimensionObjectPtrList & get_dimension_object_list() const;
142519  SgDimensionObjectPtrList & get_dimension_object_list();
142520 
142521  // DQ (12/9/2007): Added special support for this case.
142523 
142524 
142525 
142526 // End of memberFunctionString
142527 // Start of memberFunctionString
142528 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
142529 
142530 // *** COMMON CODE SECTION BEGINS HERE ***
142531 
142532  public:
142533 
142534  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
142535  // and not required which is required to match the other aspects of the copy mechanism code generation.
142536  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
142537  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
142538  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
142539  // virtual SgNode* copy ( const SgCopyHelp & help) const;
142540 
142542  virtual std::string class_name() const override;
142543 
142545  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
142546 
142548  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
142549  // static const VariantT static_variant = V_SgAttributeSpecificationStatement;
142550  enum { static_variant = V_SgAttributeSpecificationStatement };
142551 
142552  /* the generated cast function */
142554  ROSE_DLL_API friend SgAttributeSpecificationStatement* isSgAttributeSpecificationStatement( SgNode * s );
142555 
142557  ROSE_DLL_API friend const SgAttributeSpecificationStatement* isSgAttributeSpecificationStatement( const SgNode * s );
142558 
142559  // ******************************************
142560  // * Memory Pool / New / Delete
142561  // ******************************************
142562 
142563  public:
142565  static const unsigned pool_size; //
142567  static std::vector<unsigned char *> pools; //
142569  static SgAttributeSpecificationStatement * next_node; //
142570 
142572  static unsigned long initializeStorageClassArray(SgAttributeSpecificationStatementStorageClass *); //
142573 
142575  static void clearMemoryPool(); //
142576  static void deleteMemoryPool(); //
142577 
142579  static void extendMemoryPoolForFileIO(); //
142580 
142582  static SgAttributeSpecificationStatement * getPointerFromGlobalIndex(unsigned long); //
142584  static SgAttributeSpecificationStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
142585 
142587  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
142589  static void resetValidFreepointers(); //
142591  static unsigned long getNumberOfLastValidPointer(); //
142592 
142593 
142594 #if defined(INLINE_FUNCTIONS)
142595 
142596  inline void *operator new (size_t size);
142597 #else
142598 
142599  void *operator new (size_t size);
142600 #endif
142601 
142602  void operator delete (void* pointer, size_t size);
142603 
142604  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
142605  void operator delete (void* pointer)
142606  {
142607  // This is the generated delete operator...
142608  SgAttributeSpecificationStatement::operator delete (pointer,sizeof(SgAttributeSpecificationStatement));
142609  }
142610 
142612  static size_t numberOfNodes();
142613 
142615  static size_t memoryUsage();
142616 
142617  // End of scope which started in IR nodes specific code
142618  /* */
142619 
142620  /* name Internal Functions
142621  \brief Internal functions ... incomplete-documentation
142622 
142623  These functions have been made public as part of the design, but they are suggested for internal use
142624  or by particularly knowledgeable users for specialized tools or applications.
142625 
142626  \internal We could not make these private because they are required by user for special purposes. And
142627  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
142628 
142629  */
142630 
142631  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
142632  // overridden in every class by *generated* implementation
142634  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
142635  // MS: 06/28/02 container of names of variables or container indices
142636  // used used in the traversal to access AST successor nodes
142637  // overridden in every class by *generated* implementation
142640  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
142641 
142642  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
142643  // than all the vector copies. The implementation for these functions is generated for each class.
142645  virtual size_t get_numberOfTraversalSuccessors() override;
142647  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
142649  virtual size_t get_childIndex(SgNode *child) override;
142650 
142651 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
142652  // MS: 08/16/2002 method for generating RTI information
142654  virtual RTIReturnType roseRTI() override;
142655 #endif
142656  /* */
142657 
142658 
142659 
142660  /* name Deprecated Functions
142661  \brief Deprecated functions ... incomplete-documentation
142662 
142663  These functions have been deprecated from use.
142664  */
142665  /* */
142666 
142668  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
142669 
142670  // JJW (10/16/2008): Changed to a single function in Node.code, and put
142671  // getVariant() in #if 0 block to prevent confusing Doxygen
142672 #if 0
142673 
142674  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
142676  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
142677 #endif
142678  /* */
142679 
142680 
142681 
142682 
142683  public:
142684  /* name Traversal Support Functions
142685  \brief Traversal support functions ... incomplete-documentation
142686 
142687  These functions have been made public as part of the design, but they are suggested for internal use
142688  or by particularly knowledgable users for specialized tools or applications.
142689  */
142690  /* */
142691 
142692  // DQ (11/26/2005): Support for visitor pattern mechanims
142693  // (inferior to ROSE traversal mechanism, experimental).
142697 
142698  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
142700  virtual void accept (ROSE_VisitorPattern & visitor) override;
142701 
142702  // DQ (12/26/2005): Support for traversal based on the memory pool
142705  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
142706 
142709  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
142710 
142711  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
142712  // This traversal helps support internal tools that call static member functions.
142713  // note: this function operates on the memory pools.
142716  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
142717  /* */
142718 
142719 
142720  public:
142721  /* name Memory Allocation Functions
142722  \brief Memory allocations functions ... incomplete-documentation
142723 
142724  These functions have been made public as part of the design, but they are suggested for internal use
142725  or by particularly knowledgable users for specialized tools or applications.
142726  */
142727  /* */
142728 
142739  virtual bool isInMemoryPool() override;
142740 
142751  virtual void checkDataMemberPointersIfInMemoryPool() override;
142752 
142753  // DQ (4/30/2006): Modified to be a const function.
142768  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
142769 
142779  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
142780 
142792  virtual long getChildIndex( SgNode* childNode ) const override;
142793 
142794  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
142795  // comment here (changed to be a C style comment and not be a doxygen comment).
142796  /* \brief Constructor for use by AST File I/O Mechanism
142797 
142798  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
142799  which obtained via fast binary file I/O from disk.
142800  */
142801  // SgAttributeSpecificationStatement( SgAttributeSpecificationStatementStorageClass& source );
142802 
142803 
142804 
142805 
142806 
142807  // JH (10/24/2005): methods added to support the ast file IO
142808  private:
142809 
142810  /* name AST Memory Allocation Support Functions
142811  \brief Memory allocations support....
142812 
142813  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
142814  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
142815  and support the AST File I/O Mechanism.
142816  */
142817  /* */
142818 
142819  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
142820  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
142821  that I use the same type everywhere, if any changes are made. THe second one declares the type
142822  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
142823  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
142824  a correspinding one in the AST_FILE_IO class!
142825  */
142826  // DQ (9/2/2015): This typedef is no longer used, we can't define the
142827  // comment here (changed to be a C style comment and not be a doxygen comment).
142828  /* \brief Typedef used for low level memory access.
142829  */
142830  // typedef unsigned char* TestType;
142831 
142832  // DQ (9/2/2015): This typedef is no longer used, we can't define the
142833  // comment here (changed to be a C style comment and not be a doxygen comment).
142834  /* \brief Typedef used to hold memory addresses as values.
142835  */
142836  // typedef unsigned long AddressType;
142837 
142838 
142839 
142840  // necessary, to have direct access to the p_freepointer and the private methods !
142842  friend class AST_FILE_IO;
142843 
142845  friend class SgAttributeSpecificationStatementStorageClass;
142846 
142848  friend class AstSpecificDataManagingClass;
142849 
142851  friend class AstSpecificDataManagingClassStorageClass;
142852 
142853  public:
142855  SgAttributeSpecificationStatement( const SgAttributeSpecificationStatementStorageClass& source );
142856 
142857  // private: // JJW hack
142858  /*
142859  name AST Memory Allocation Support Variables
142860  Memory allocations support variables
142861 
142862  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
142863  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
142864  and support the AST File I/O Mechanism.
142865  */
142866  /* */
142867 
142868  public:
142869 
142870  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
142871  // to current node (so that it will work cleanly with build functions to specify patterns).
142872  // virtual SgNode* addRegExpAttribute();
142879 
142880 // *** COMMON CODE SECTION ENDS HERE ***
142881 
142882 
142883 // End of memberFunctionString
142884 // Start of memberFunctionString
142885 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
142886 
142887  // the generated cast function
142888  // friend ROSE_DLL_API SgAttributeSpecificationStatement* isSgAttributeSpecificationStatement ( SgNode* s );
142889 
142891 
142892 
142893 // End of memberFunctionString
142894 // Start of memberFunctionString
142895 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
142896 
142897  void post_construction_initialization() override;
142898 
142899 
142900 // End of memberFunctionString
142901 
142902 
142903  public:
142904  SgAttributeSpecificationStatement::attribute_spec_enum get_attribute_kind() const;
142905  void set_attribute_kind(SgAttributeSpecificationStatement::attribute_spec_enum attribute_kind);
142906 
142907  public:
142908  int get_intent() const;
142909  void set_intent(int intent);
142910 
142911  public:
142912  SgExprListExp* get_parameter_list() const;
142913  void set_parameter_list(SgExprListExp* parameter_list);
142914 
142915 
142916  public:
142917  SgExprListExp* get_bind_list() const;
142918  void set_bind_list(SgExprListExp* bind_list);
142919 
142920 
142921 
142922  public:
142924 
142925 
142926  public:
142927  SgAttributeSpecificationStatement(Sg_File_Info* startOfConstruct );
142929 
142930  protected:
142931 // Start of memberFunctionString
142932 SgStringList p_name_list;
142933 
142934 // End of memberFunctionString
142935 // Start of memberFunctionString
142937 
142938 // End of memberFunctionString
142939 // Start of memberFunctionString
142940 int p_intent;
142941 
142942 // End of memberFunctionString
142943 // Start of memberFunctionString
142944 SgExprListExp* p_parameter_list;
142945 
142946 // End of memberFunctionString
142947 // Start of memberFunctionString
142948 SgDataStatementGroupPtrList p_data_statement_group_list;
142949 
142950 // End of memberFunctionString
142951 // Start of memberFunctionString
142952 SgExprListExp* p_bind_list;
142953 
142954 // End of memberFunctionString
142955 // Start of memberFunctionString
142956 SgDimensionObjectPtrList p_dimension_object_list;
142957 
142958 // End of memberFunctionString
142959 
142960 
142961 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
142962 
142963 
142964  };
142965 #endif
142966 
142967 // postdeclarations for SgAttributeSpecificationStatement
142968 
142969 /* #line 142970 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
142970 
142971 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
142972 
142973 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
142974 
142975 
142976 /* #line 142977 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
142977 
142978 
142979 
142980 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
142981 
142982 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
142983 // This code is automatically generated for each
142984 // terminal and non-terminal within the defined
142985 // grammar. There is a simple way to change the
142986 // code to fix bugs etc. See the ROSE README file
142987 // for directions.
142988 
142989 // tps: (02/22/2010): Adding DLL export requirements
142990 #include "rosedll.h"
142991 
142992 // predeclarations for SgFormatStatement
142993 
142994 /* #line 142995 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
142995 
142996 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
142997 
142998 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
142999 
143000 #if 1
143001 // Class Definition for SgFormatStatement
143002 class ROSE_DLL_API SgFormatStatement : public SgDeclarationStatement
143003  {
143004  public:
143005 
143006 
143007 /* #line 143008 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
143008 
143009  virtual SgNode* copy ( SgCopyHelp& help) const override;
143010 // Start of memberFunctionString
143011 /* #line 3832 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
143012 
143013 
143014 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
143015  virtual unsigned int cfgIndexForEnd() const override;
143016  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
143017  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
143018 #endif
143019  virtual SgName get_mangled_name() const override;
143020 
143021  // const SgFormatItemPtrList & get_format_item_list() const;
143022  // SgFormatItemPtrList & get_format_item_list();
143023  // void set_format_item_list(const SgFormatItemPtrList & format_item_list);
143024 
143025 
143026 
143027 // End of memberFunctionString
143028 // Start of memberFunctionString
143029 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
143030 
143031 // *** COMMON CODE SECTION BEGINS HERE ***
143032 
143033  public:
143034 
143035  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
143036  // and not required which is required to match the other aspects of the copy mechanism code generation.
143037  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
143038  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
143039  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
143040  // virtual SgNode* copy ( const SgCopyHelp & help) const;
143041 
143043  virtual std::string class_name() const override;
143044 
143046  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
143047 
143049  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
143050  // static const VariantT static_variant = V_SgFormatStatement;
143051  enum { static_variant = V_SgFormatStatement };
143052 
143053  /* the generated cast function */
143055  ROSE_DLL_API friend SgFormatStatement* isSgFormatStatement( SgNode * s );
143056 
143058  ROSE_DLL_API friend const SgFormatStatement* isSgFormatStatement( const SgNode * s );
143059 
143060  // ******************************************
143061  // * Memory Pool / New / Delete
143062  // ******************************************
143063 
143064  public:
143066  static const unsigned pool_size; //
143068  static std::vector<unsigned char *> pools; //
143070  static SgFormatStatement * next_node; //
143071 
143073  static unsigned long initializeStorageClassArray(SgFormatStatementStorageClass *); //
143074 
143076  static void clearMemoryPool(); //
143077  static void deleteMemoryPool(); //
143078 
143080  static void extendMemoryPoolForFileIO(); //
143081 
143083  static SgFormatStatement * getPointerFromGlobalIndex(unsigned long); //
143085  static SgFormatStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
143086 
143088  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
143090  static void resetValidFreepointers(); //
143092  static unsigned long getNumberOfLastValidPointer(); //
143093 
143094 
143095 #if defined(INLINE_FUNCTIONS)
143096 
143097  inline void *operator new (size_t size);
143098 #else
143099 
143100  void *operator new (size_t size);
143101 #endif
143102 
143103  void operator delete (void* pointer, size_t size);
143104 
143105  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
143106  void operator delete (void* pointer)
143107  {
143108  // This is the generated delete operator...
143109  SgFormatStatement::operator delete (pointer,sizeof(SgFormatStatement));
143110  }
143111 
143113  static size_t numberOfNodes();
143114 
143116  static size_t memoryUsage();
143117 
143118  // End of scope which started in IR nodes specific code
143119  /* */
143120 
143121  /* name Internal Functions
143122  \brief Internal functions ... incomplete-documentation
143123 
143124  These functions have been made public as part of the design, but they are suggested for internal use
143125  or by particularly knowledgeable users for specialized tools or applications.
143126 
143127  \internal We could not make these private because they are required by user for special purposes. And
143128  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
143129 
143130  */
143131 
143132  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
143133  // overridden in every class by *generated* implementation
143135  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
143136  // MS: 06/28/02 container of names of variables or container indices
143137  // used used in the traversal to access AST successor nodes
143138  // overridden in every class by *generated* implementation
143141  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
143142 
143143  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
143144  // than all the vector copies. The implementation for these functions is generated for each class.
143146  virtual size_t get_numberOfTraversalSuccessors() override;
143148  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
143150  virtual size_t get_childIndex(SgNode *child) override;
143151 
143152 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
143153  // MS: 08/16/2002 method for generating RTI information
143155  virtual RTIReturnType roseRTI() override;
143156 #endif
143157  /* */
143158 
143159 
143160 
143161  /* name Deprecated Functions
143162  \brief Deprecated functions ... incomplete-documentation
143163 
143164  These functions have been deprecated from use.
143165  */
143166  /* */
143167 
143169  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
143170 
143171  // JJW (10/16/2008): Changed to a single function in Node.code, and put
143172  // getVariant() in #if 0 block to prevent confusing Doxygen
143173 #if 0
143174 
143175  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
143177  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
143178 #endif
143179  /* */
143180 
143181 
143182 
143183 
143184  public:
143185  /* name Traversal Support Functions
143186  \brief Traversal support functions ... incomplete-documentation
143187 
143188  These functions have been made public as part of the design, but they are suggested for internal use
143189  or by particularly knowledgable users for specialized tools or applications.
143190  */
143191  /* */
143192 
143193  // DQ (11/26/2005): Support for visitor pattern mechanims
143194  // (inferior to ROSE traversal mechanism, experimental).
143198 
143199  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
143201  virtual void accept (ROSE_VisitorPattern & visitor) override;
143202 
143203  // DQ (12/26/2005): Support for traversal based on the memory pool
143206  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
143207 
143210  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
143211 
143212  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
143213  // This traversal helps support internal tools that call static member functions.
143214  // note: this function operates on the memory pools.
143217  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
143218  /* */
143219 
143220 
143221  public:
143222  /* name Memory Allocation Functions
143223  \brief Memory allocations functions ... incomplete-documentation
143224 
143225  These functions have been made public as part of the design, but they are suggested for internal use
143226  or by particularly knowledgable users for specialized tools or applications.
143227  */
143228  /* */
143229 
143240  virtual bool isInMemoryPool() override;
143241 
143252  virtual void checkDataMemberPointersIfInMemoryPool() override;
143253 
143254  // DQ (4/30/2006): Modified to be a const function.
143269  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
143270 
143280  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
143281 
143293  virtual long getChildIndex( SgNode* childNode ) const override;
143294 
143295  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
143296  // comment here (changed to be a C style comment and not be a doxygen comment).
143297  /* \brief Constructor for use by AST File I/O Mechanism
143298 
143299  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
143300  which obtained via fast binary file I/O from disk.
143301  */
143302  // SgFormatStatement( SgFormatStatementStorageClass& source );
143303 
143304 
143305 
143306 
143307 
143308  // JH (10/24/2005): methods added to support the ast file IO
143309  private:
143310 
143311  /* name AST Memory Allocation Support Functions
143312  \brief Memory allocations support....
143313 
143314  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
143315  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
143316  and support the AST File I/O Mechanism.
143317  */
143318  /* */
143319 
143320  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
143321  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
143322  that I use the same type everywhere, if any changes are made. THe second one declares the type
143323  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
143324  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
143325  a correspinding one in the AST_FILE_IO class!
143326  */
143327  // DQ (9/2/2015): This typedef is no longer used, we can't define the
143328  // comment here (changed to be a C style comment and not be a doxygen comment).
143329  /* \brief Typedef used for low level memory access.
143330  */
143331  // typedef unsigned char* TestType;
143332 
143333  // DQ (9/2/2015): This typedef is no longer used, we can't define the
143334  // comment here (changed to be a C style comment and not be a doxygen comment).
143335  /* \brief Typedef used to hold memory addresses as values.
143336  */
143337  // typedef unsigned long AddressType;
143338 
143339 
143340 
143341  // necessary, to have direct access to the p_freepointer and the private methods !
143343  friend class AST_FILE_IO;
143344 
143346  friend class SgFormatStatementStorageClass;
143347 
143349  friend class AstSpecificDataManagingClass;
143350 
143352  friend class AstSpecificDataManagingClassStorageClass;
143353 
143354  public:
143356  SgFormatStatement( const SgFormatStatementStorageClass& source );
143357 
143358  // private: // JJW hack
143359  /*
143360  name AST Memory Allocation Support Variables
143361  Memory allocations support variables
143362 
143363  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
143364  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
143365  and support the AST File I/O Mechanism.
143366  */
143367  /* */
143368 
143369  public:
143370 
143371  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
143372  // to current node (so that it will work cleanly with build functions to specify patterns).
143373  // virtual SgNode* addRegExpAttribute();
143380 
143381 // *** COMMON CODE SECTION ENDS HERE ***
143382 
143383 
143384 // End of memberFunctionString
143385 // Start of memberFunctionString
143386 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
143387 
143388  // the generated cast function
143389  // friend ROSE_DLL_API SgFormatStatement* isSgFormatStatement ( SgNode* s );
143390 
143392 
143393 
143394 // End of memberFunctionString
143395 // Start of memberFunctionString
143396 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
143397 
143398  void post_construction_initialization() override;
143399 
143400 
143401 // End of memberFunctionString
143402 
143403  public:
143404  SgFormatItemList* get_format_item_list() const;
143405  void set_format_item_list(SgFormatItemList* format_item_list);
143406 
143407 
143408  public:
143409  virtual ~SgFormatStatement();
143410 
143411 
143412  public:
143413  SgFormatStatement(Sg_File_Info* startOfConstruct , SgFormatItemList* format_item_list = NULL);
143414  SgFormatStatement(SgFormatItemList* format_item_list);
143415 
143416  protected:
143417 // Start of memberFunctionString
143418 SgFormatItemList* p_format_item_list;
143419 
143420 // End of memberFunctionString
143421 
143422 
143423 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
143424 
143425 
143426  };
143427 #endif
143428 
143429 // postdeclarations for SgFormatStatement
143430 
143431 /* #line 143432 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
143432 
143433 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
143434 
143435 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
143436 
143437 
143438 /* #line 143439 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
143439 
143440 
143441 
143442 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
143443 
143444 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
143445 // This code is automatically generated for each
143446 // terminal and non-terminal within the defined
143447 // grammar. There is a simple way to change the
143448 // code to fix bugs etc. See the ROSE README file
143449 // for directions.
143450 
143451 // tps: (02/22/2010): Adding DLL export requirements
143452 #include "rosedll.h"
143453 
143454 // predeclarations for SgTemplateDeclaration
143455 
143456 /* #line 143457 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
143457 
143458 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
143459 
143460 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
143461 
143462 #if 1
143463 // Class Definition for SgTemplateDeclaration
143465  {
143466  public:
143467 
143468 
143469 /* #line 143470 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
143470 
143471  virtual SgNode* copy ( SgCopyHelp& help) const override;
143472 // Start of memberFunctionString
143473 /* #line 2757 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
143474 
143475  // void post_construction_initialization();
143476 
143479  {
143480  e_template_none = 0,
143481  e_template_class = 1,
143482  e_template_m_class = 2,
143483  e_template_function = 3,
143484  e_template_m_function = 4,
143485  e_template_m_data = 5
143486  };
143487 
143488  // DQ (9/8/2004): added support for qualified names
143489  virtual SgName get_qualified_name() const;
143490 
143491  // DQ (2/18/2006): Added general name mangling for all declarations (and some other IR nodes).
143492  virtual SgName get_mangled_name(void) const override;
143493 
143494  // This is generated by ROSETTA, though we might want to implement
143495  // it differently if we want to get the name from the declaration!
143496  // SgName get_name() const;
143497 
143499  virtual bool hasExplicitScope() const override;
143500 
143501  // DQ (2/10/2007): Marked as virtual to be consistent
143502  virtual SgSymbol* get_symbol_from_symbol_table() const override;
143503 
143504  // DQ (12/12/2011): Explicit access function.
143505  SgType* get_type();
143506 
143507 #if ALT_FIXUP_COPY
143508  // DQ (11/7/2007): These need to be called separately (see documentation)
143509  virtual void fixupCopy_scopes (SgNode* copy, SgCopyHelp & help) const override;
143510  virtual void fixupCopy_symbols (SgNode* copy, SgCopyHelp & help) const override;
143511  virtual void fixupCopy_references (SgNode* copy, SgCopyHelp & help) const override;
143512 #else
143513  // DQ (10/19/2007): Added fixup function to set scopes not set properly by the ROSETTA generated copy!
143514  virtual void fixupCopy(SgNode* copy, SgCopyHelp & help) const;
143515 #endif
143516 
143517 
143518 
143519 // End of memberFunctionString
143520 // Start of memberFunctionString
143521 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
143522 
143523 // *** COMMON CODE SECTION BEGINS HERE ***
143524 
143525  public:
143526 
143527  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
143528  // and not required which is required to match the other aspects of the copy mechanism code generation.
143529  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
143530  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
143531  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
143532  // virtual SgNode* copy ( const SgCopyHelp & help) const;
143533 
143535  virtual std::string class_name() const override;
143536 
143538  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
143539 
143541  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
143542  // static const VariantT static_variant = V_SgTemplateDeclaration;
143543  enum { static_variant = V_SgTemplateDeclaration };
143544 
143545  /* the generated cast function */
143547  ROSE_DLL_API friend SgTemplateDeclaration* isSgTemplateDeclaration( SgNode * s );
143548 
143550  ROSE_DLL_API friend const SgTemplateDeclaration* isSgTemplateDeclaration( const SgNode * s );
143551 
143552  // ******************************************
143553  // * Memory Pool / New / Delete
143554  // ******************************************
143555 
143556  public:
143558  static const unsigned pool_size; //
143560  static std::vector<unsigned char *> pools; //
143562  static SgTemplateDeclaration * next_node; //
143563 
143565  static unsigned long initializeStorageClassArray(SgTemplateDeclarationStorageClass *); //
143566 
143568  static void clearMemoryPool(); //
143569  static void deleteMemoryPool(); //
143570 
143572  static void extendMemoryPoolForFileIO(); //
143573 
143575  static SgTemplateDeclaration * getPointerFromGlobalIndex(unsigned long); //
143577  static SgTemplateDeclaration * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
143578 
143580  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
143582  static void resetValidFreepointers(); //
143584  static unsigned long getNumberOfLastValidPointer(); //
143585 
143586 
143587 #if defined(INLINE_FUNCTIONS)
143588 
143589  inline void *operator new (size_t size);
143590 #else
143591 
143592  void *operator new (size_t size);
143593 #endif
143594 
143595  void operator delete (void* pointer, size_t size);
143596 
143597  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
143598  void operator delete (void* pointer)
143599  {
143600  // This is the generated delete operator...
143601  SgTemplateDeclaration::operator delete (pointer,sizeof(SgTemplateDeclaration));
143602  }
143603 
143605  static size_t numberOfNodes();
143606 
143608  static size_t memoryUsage();
143609 
143610  // End of scope which started in IR nodes specific code
143611  /* */
143612 
143613  /* name Internal Functions
143614  \brief Internal functions ... incomplete-documentation
143615 
143616  These functions have been made public as part of the design, but they are suggested for internal use
143617  or by particularly knowledgeable users for specialized tools or applications.
143618 
143619  \internal We could not make these private because they are required by user for special purposes. And
143620  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
143621 
143622  */
143623 
143624  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
143625  // overridden in every class by *generated* implementation
143627  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
143628  // MS: 06/28/02 container of names of variables or container indices
143629  // used used in the traversal to access AST successor nodes
143630  // overridden in every class by *generated* implementation
143633  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
143634 
143635  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
143636  // than all the vector copies. The implementation for these functions is generated for each class.
143638  virtual size_t get_numberOfTraversalSuccessors() override;
143640  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
143642  virtual size_t get_childIndex(SgNode *child) override;
143643 
143644 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
143645  // MS: 08/16/2002 method for generating RTI information
143647  virtual RTIReturnType roseRTI() override;
143648 #endif
143649  /* */
143650 
143651 
143652 
143653  /* name Deprecated Functions
143654  \brief Deprecated functions ... incomplete-documentation
143655 
143656  These functions have been deprecated from use.
143657  */
143658  /* */
143659 
143661  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
143662 
143663  // JJW (10/16/2008): Changed to a single function in Node.code, and put
143664  // getVariant() in #if 0 block to prevent confusing Doxygen
143665 #if 0
143666 
143667  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
143669  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
143670 #endif
143671  /* */
143672 
143673 
143674 
143675 
143676  public:
143677  /* name Traversal Support Functions
143678  \brief Traversal support functions ... incomplete-documentation
143679 
143680  These functions have been made public as part of the design, but they are suggested for internal use
143681  or by particularly knowledgable users for specialized tools or applications.
143682  */
143683  /* */
143684 
143685  // DQ (11/26/2005): Support for visitor pattern mechanims
143686  // (inferior to ROSE traversal mechanism, experimental).
143690 
143691  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
143693  virtual void accept (ROSE_VisitorPattern & visitor) override;
143694 
143695  // DQ (12/26/2005): Support for traversal based on the memory pool
143698  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
143699 
143702  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
143703 
143704  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
143705  // This traversal helps support internal tools that call static member functions.
143706  // note: this function operates on the memory pools.
143709  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
143710  /* */
143711 
143712 
143713  public:
143714  /* name Memory Allocation Functions
143715  \brief Memory allocations functions ... incomplete-documentation
143716 
143717  These functions have been made public as part of the design, but they are suggested for internal use
143718  or by particularly knowledgable users for specialized tools or applications.
143719  */
143720  /* */
143721 
143732  virtual bool isInMemoryPool() override;
143733 
143744  virtual void checkDataMemberPointersIfInMemoryPool() override;
143745 
143746  // DQ (4/30/2006): Modified to be a const function.
143761  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
143762 
143772  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
143773 
143785  virtual long getChildIndex( SgNode* childNode ) const override;
143786 
143787  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
143788  // comment here (changed to be a C style comment and not be a doxygen comment).
143789  /* \brief Constructor for use by AST File I/O Mechanism
143790 
143791  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
143792  which obtained via fast binary file I/O from disk.
143793  */
143794  // SgTemplateDeclaration( SgTemplateDeclarationStorageClass& source );
143795 
143796 
143797 
143798 
143799 
143800  // JH (10/24/2005): methods added to support the ast file IO
143801  private:
143802 
143803  /* name AST Memory Allocation Support Functions
143804  \brief Memory allocations support....
143805 
143806  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
143807  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
143808  and support the AST File I/O Mechanism.
143809  */
143810  /* */
143811 
143812  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
143813  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
143814  that I use the same type everywhere, if any changes are made. THe second one declares the type
143815  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
143816  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
143817  a correspinding one in the AST_FILE_IO class!
143818  */
143819  // DQ (9/2/2015): This typedef is no longer used, we can't define the
143820  // comment here (changed to be a C style comment and not be a doxygen comment).
143821  /* \brief Typedef used for low level memory access.
143822  */
143823  // typedef unsigned char* TestType;
143824 
143825  // DQ (9/2/2015): This typedef is no longer used, we can't define the
143826  // comment here (changed to be a C style comment and not be a doxygen comment).
143827  /* \brief Typedef used to hold memory addresses as values.
143828  */
143829  // typedef unsigned long AddressType;
143830 
143831 
143832 
143833  // necessary, to have direct access to the p_freepointer and the private methods !
143835  friend class AST_FILE_IO;
143836 
143838  friend class SgTemplateDeclarationStorageClass;
143839 
143841  friend class AstSpecificDataManagingClass;
143842 
143844  friend class AstSpecificDataManagingClassStorageClass;
143845 
143846  public:
143848  SgTemplateDeclaration( const SgTemplateDeclarationStorageClass& source );
143849 
143850  // private: // JJW hack
143851  /*
143852  name AST Memory Allocation Support Variables
143853  Memory allocations support variables
143854 
143855  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
143856  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
143857  and support the AST File I/O Mechanism.
143858  */
143859  /* */
143860 
143861  public:
143862 
143863  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
143864  // to current node (so that it will work cleanly with build functions to specify patterns).
143865  // virtual SgNode* addRegExpAttribute();
143872 
143873 // *** COMMON CODE SECTION ENDS HERE ***
143874 
143875 
143876 // End of memberFunctionString
143877 // Start of memberFunctionString
143878 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
143879 
143880  // the generated cast function
143881  // friend ROSE_DLL_API SgTemplateDeclaration* isSgTemplateDeclaration ( SgNode* s );
143882 
143884 
143885 
143886 // End of memberFunctionString
143887 // Start of memberFunctionString
143888 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
143889 
143890  void post_construction_initialization() override;
143891 
143892 
143893 // End of memberFunctionString
143894 
143895  public:
143896  SgName get_name() const /* (getDataAccessFunctionPrototypeString) */;
143897  void set_name(SgName name) /* (getDataAccessFunctionPrototypeString) */;
143898 
143899  public:
143900  SgName get_string() const;
143901  void set_string(SgName string);
143902 
143903  public:
143904  SgTemplateDeclaration::template_type_enum get_template_kind() const;
143905  void set_template_kind(SgTemplateDeclaration::template_type_enum template_kind);
143906 
143907  public:
143908  const SgTemplateParameterPtrList& get_templateParameters() const;
143909  SgTemplateParameterPtrList& get_templateParameters();
143910 
143911  public:
143912  SgScopeStatement* get_scope() const override /* (getDataAccessFunctionPrototypeString) */;
143913  void set_scope(SgScopeStatement* scope) override /* (getDataAccessFunctionPrototypeString) */;
143914 
143915  public:
143916  SgDeclarationScope* get_nonreal_decl_scope() const;
143917  void set_nonreal_decl_scope(SgDeclarationScope* nonreal_decl_scope);
143918 
143919 
143920  public:
143921  virtual ~SgTemplateDeclaration();
143922 
143923 
143924  public:
143925  SgTemplateDeclaration(Sg_File_Info* startOfConstruct , SgName name = "");
143926  SgTemplateDeclaration(SgName name);
143927 
143928  protected:
143929 // Start of memberFunctionString
143930 SgName p_name;
143931 
143932 // End of memberFunctionString
143933 // Start of memberFunctionString
143934 SgName p_string;
143935 
143936 // End of memberFunctionString
143937 // Start of memberFunctionString
143939 
143940 // End of memberFunctionString
143941 // Start of memberFunctionString
143942 SgTemplateParameterPtrList p_templateParameters;
143943 
143944 // End of memberFunctionString
143945 // Start of memberFunctionString
143947 
143948 // End of memberFunctionString
143949 // Start of memberFunctionString
143950 SgDeclarationScope* p_nonreal_decl_scope;
143951 
143952 // End of memberFunctionString
143953 
143954 
143955 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
143956 
143957 
143958  };
143959 #endif
143960 
143961 // postdeclarations for SgTemplateDeclaration
143962 
143963 /* #line 143964 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
143964 
143965 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
143966 
143967 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
143968 
143969 
143970 /* #line 143971 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
143971 
143972 
143973 
143974 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
143975 
143976 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
143977 // This code is automatically generated for each
143978 // terminal and non-terminal within the defined
143979 // grammar. There is a simple way to change the
143980 // code to fix bugs etc. See the ROSE README file
143981 // for directions.
143982 
143983 // tps: (02/22/2010): Adding DLL export requirements
143984 #include "rosedll.h"
143985 
143986 // predeclarations for SgTemplateInstantiationDirectiveStatement
143987 
143988 /* #line 143989 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
143989 
143990 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
143991 
143992 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
143993 
143994 #if 1
143995 // Class Definition for SgTemplateInstantiationDirectiveStatement
143997  {
143998  public:
143999 
144000 
144001 /* #line 144002 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
144002 
144003  virtual SgNode* copy ( SgCopyHelp& help) const override;
144004 // Start of memberFunctionString
144005 /* #line 3211 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
144006 
144007 
144008  // DQ (2/18/2006): Added general name mangling for all declarations (and some other IR nodes).
144009  virtual SgName get_mangled_name(void) const override;
144010 
144011 #if ALT_FIXUP_COPY
144012  // DQ (11/7/2007): These need to be called separately (see documentation)
144013  virtual void fixupCopy_scopes (SgNode* copy, SgCopyHelp & help) const override;
144014  virtual void fixupCopy_symbols (SgNode* copy, SgCopyHelp & help) const override;
144015  virtual void fixupCopy_references (SgNode* copy, SgCopyHelp & help) const override;
144016 #else
144017  // DQ (10/15/2007): Added fixup function to set scopes not set properly by the ROSETTA generated copy!
144018  virtual void fixupCopy(SgNode* copy, SgCopyHelp & help) const;
144019 #endif
144020 
144021 
144022 
144023 // End of memberFunctionString
144024 // Start of memberFunctionString
144025 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
144026 
144027 // *** COMMON CODE SECTION BEGINS HERE ***
144028 
144029  public:
144030 
144031  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
144032  // and not required which is required to match the other aspects of the copy mechanism code generation.
144033  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
144034  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
144035  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
144036  // virtual SgNode* copy ( const SgCopyHelp & help) const;
144037 
144039  virtual std::string class_name() const override;
144040 
144042  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
144043 
144045  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
144046  // static const VariantT static_variant = V_SgTemplateInstantiationDirectiveStatement;
144047  enum { static_variant = V_SgTemplateInstantiationDirectiveStatement };
144048 
144049  /* the generated cast function */
144051  ROSE_DLL_API friend SgTemplateInstantiationDirectiveStatement* isSgTemplateInstantiationDirectiveStatement( SgNode * s );
144052 
144054  ROSE_DLL_API friend const SgTemplateInstantiationDirectiveStatement* isSgTemplateInstantiationDirectiveStatement( const SgNode * s );
144055 
144056  // ******************************************
144057  // * Memory Pool / New / Delete
144058  // ******************************************
144059 
144060  public:
144062  static const unsigned pool_size; //
144064  static std::vector<unsigned char *> pools; //
144066  static SgTemplateInstantiationDirectiveStatement * next_node; //
144067 
144069  static unsigned long initializeStorageClassArray(SgTemplateInstantiationDirectiveStatementStorageClass *); //
144070 
144072  static void clearMemoryPool(); //
144073  static void deleteMemoryPool(); //
144074 
144076  static void extendMemoryPoolForFileIO(); //
144077 
144079  static SgTemplateInstantiationDirectiveStatement * getPointerFromGlobalIndex(unsigned long); //
144081  static SgTemplateInstantiationDirectiveStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
144082 
144084  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
144086  static void resetValidFreepointers(); //
144088  static unsigned long getNumberOfLastValidPointer(); //
144089 
144090 
144091 #if defined(INLINE_FUNCTIONS)
144092 
144093  inline void *operator new (size_t size);
144094 #else
144095 
144096  void *operator new (size_t size);
144097 #endif
144098 
144099  void operator delete (void* pointer, size_t size);
144100 
144101  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
144102  void operator delete (void* pointer)
144103  {
144104  // This is the generated delete operator...
144105  SgTemplateInstantiationDirectiveStatement::operator delete (pointer,sizeof(SgTemplateInstantiationDirectiveStatement));
144106  }
144107 
144109  static size_t numberOfNodes();
144110 
144112  static size_t memoryUsage();
144113 
144114  // End of scope which started in IR nodes specific code
144115  /* */
144116 
144117  /* name Internal Functions
144118  \brief Internal functions ... incomplete-documentation
144119 
144120  These functions have been made public as part of the design, but they are suggested for internal use
144121  or by particularly knowledgeable users for specialized tools or applications.
144122 
144123  \internal We could not make these private because they are required by user for special purposes. And
144124  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
144125 
144126  */
144127 
144128  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
144129  // overridden in every class by *generated* implementation
144131  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
144132  // MS: 06/28/02 container of names of variables or container indices
144133  // used used in the traversal to access AST successor nodes
144134  // overridden in every class by *generated* implementation
144137  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
144138 
144139  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
144140  // than all the vector copies. The implementation for these functions is generated for each class.
144142  virtual size_t get_numberOfTraversalSuccessors() override;
144144  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
144146  virtual size_t get_childIndex(SgNode *child) override;
144147 
144148 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
144149  // MS: 08/16/2002 method for generating RTI information
144151  virtual RTIReturnType roseRTI() override;
144152 #endif
144153  /* */
144154 
144155 
144156 
144157  /* name Deprecated Functions
144158  \brief Deprecated functions ... incomplete-documentation
144159 
144160  These functions have been deprecated from use.
144161  */
144162  /* */
144163 
144165  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
144166 
144167  // JJW (10/16/2008): Changed to a single function in Node.code, and put
144168  // getVariant() in #if 0 block to prevent confusing Doxygen
144169 #if 0
144170 
144171  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
144173  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
144174 #endif
144175  /* */
144176 
144177 
144178 
144179 
144180  public:
144181  /* name Traversal Support Functions
144182  \brief Traversal support functions ... incomplete-documentation
144183 
144184  These functions have been made public as part of the design, but they are suggested for internal use
144185  or by particularly knowledgable users for specialized tools or applications.
144186  */
144187  /* */
144188 
144189  // DQ (11/26/2005): Support for visitor pattern mechanims
144190  // (inferior to ROSE traversal mechanism, experimental).
144194 
144195  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
144197  virtual void accept (ROSE_VisitorPattern & visitor) override;
144198 
144199  // DQ (12/26/2005): Support for traversal based on the memory pool
144202  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
144203 
144206  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
144207 
144208  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
144209  // This traversal helps support internal tools that call static member functions.
144210  // note: this function operates on the memory pools.
144213  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
144214  /* */
144215 
144216 
144217  public:
144218  /* name Memory Allocation Functions
144219  \brief Memory allocations functions ... incomplete-documentation
144220 
144221  These functions have been made public as part of the design, but they are suggested for internal use
144222  or by particularly knowledgable users for specialized tools or applications.
144223  */
144224  /* */
144225 
144236  virtual bool isInMemoryPool() override;
144237 
144248  virtual void checkDataMemberPointersIfInMemoryPool() override;
144249 
144250  // DQ (4/30/2006): Modified to be a const function.
144265  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
144266 
144276  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
144277 
144289  virtual long getChildIndex( SgNode* childNode ) const override;
144290 
144291  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
144292  // comment here (changed to be a C style comment and not be a doxygen comment).
144293  /* \brief Constructor for use by AST File I/O Mechanism
144294 
144295  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
144296  which obtained via fast binary file I/O from disk.
144297  */
144298  // SgTemplateInstantiationDirectiveStatement( SgTemplateInstantiationDirectiveStatementStorageClass& source );
144299 
144300 
144301 
144302 
144303 
144304  // JH (10/24/2005): methods added to support the ast file IO
144305  private:
144306 
144307  /* name AST Memory Allocation Support Functions
144308  \brief Memory allocations support....
144309 
144310  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
144311  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
144312  and support the AST File I/O Mechanism.
144313  */
144314  /* */
144315 
144316  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
144317  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
144318  that I use the same type everywhere, if any changes are made. THe second one declares the type
144319  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
144320  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
144321  a correspinding one in the AST_FILE_IO class!
144322  */
144323  // DQ (9/2/2015): This typedef is no longer used, we can't define the
144324  // comment here (changed to be a C style comment and not be a doxygen comment).
144325  /* \brief Typedef used for low level memory access.
144326  */
144327  // typedef unsigned char* TestType;
144328 
144329  // DQ (9/2/2015): This typedef is no longer used, we can't define the
144330  // comment here (changed to be a C style comment and not be a doxygen comment).
144331  /* \brief Typedef used to hold memory addresses as values.
144332  */
144333  // typedef unsigned long AddressType;
144334 
144335 
144336 
144337  // necessary, to have direct access to the p_freepointer and the private methods !
144339  friend class AST_FILE_IO;
144340 
144342  friend class SgTemplateInstantiationDirectiveStatementStorageClass;
144343 
144345  friend class AstSpecificDataManagingClass;
144346 
144348  friend class AstSpecificDataManagingClassStorageClass;
144349 
144350  public:
144352  SgTemplateInstantiationDirectiveStatement( const SgTemplateInstantiationDirectiveStatementStorageClass& source );
144353 
144354  // private: // JJW hack
144355  /*
144356  name AST Memory Allocation Support Variables
144357  Memory allocations support variables
144358 
144359  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
144360  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
144361  and support the AST File I/O Mechanism.
144362  */
144363  /* */
144364 
144365  public:
144366 
144367  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
144368  // to current node (so that it will work cleanly with build functions to specify patterns).
144369  // virtual SgNode* addRegExpAttribute();
144376 
144377 // *** COMMON CODE SECTION ENDS HERE ***
144378 
144379 
144380 // End of memberFunctionString
144381 // Start of memberFunctionString
144382 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
144383 
144384  // the generated cast function
144385  // friend ROSE_DLL_API SgTemplateInstantiationDirectiveStatement* isSgTemplateInstantiationDirectiveStatement ( SgNode* s );
144386 
144388 
144389 
144390 // End of memberFunctionString
144391 // Start of memberFunctionString
144392 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
144393 
144394  void post_construction_initialization() override;
144395 
144396 
144397 // End of memberFunctionString
144398 
144399  public:
144400  SgDeclarationStatement* get_declaration() const;
144401  void set_declaration(SgDeclarationStatement* declaration);
144402 
144403  public:
144404  bool get_do_not_instantiate() const;
144405  void set_do_not_instantiate(bool do_not_instantiate);
144406 
144407 
144408  public:
144410 
144411 
144412  public:
144413  SgTemplateInstantiationDirectiveStatement(Sg_File_Info* startOfConstruct , SgDeclarationStatement* declaration = NULL);
144415 
144416  protected:
144417 // Start of memberFunctionString
144419 
144420 // End of memberFunctionString
144421 // Start of memberFunctionString
144422 bool p_do_not_instantiate;
144423 
144424 // End of memberFunctionString
144425 
144426 
144427 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
144428 
144429 
144430  };
144431 #endif
144432 
144433 // postdeclarations for SgTemplateInstantiationDirectiveStatement
144434 
144435 /* #line 144436 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
144436 
144437 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
144438 
144439 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
144440 
144441 
144442 /* #line 144443 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
144443 
144444 
144445 
144446 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
144447 
144448 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
144449 // This code is automatically generated for each
144450 // terminal and non-terminal within the defined
144451 // grammar. There is a simple way to change the
144452 // code to fix bugs etc. See the ROSE README file
144453 // for directions.
144454 
144455 // tps: (02/22/2010): Adding DLL export requirements
144456 #include "rosedll.h"
144457 
144458 // predeclarations for SgUseStatement
144459 
144460 /* #line 144461 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
144461 
144462 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
144463 
144464 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
144465 
144466 #if 1
144467 // Class Definition for SgUseStatement
144468 class ROSE_DLL_API SgUseStatement : public SgDeclarationStatement
144469  {
144470  public:
144471 
144472 
144473 /* #line 144474 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
144474 
144475  virtual SgNode* copy ( SgCopyHelp& help) const override;
144476 // Start of memberFunctionString
144477 /* #line 3393 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
144478 
144479 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
144480  virtual unsigned int cfgIndexForEnd() const override;
144481  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
144482  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
144483 #endif
144484 
144485  virtual SgName get_mangled_name() const override;
144486 
144487 
144488 // End of memberFunctionString
144489 // Start of memberFunctionString
144490 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
144491 
144492 // *** COMMON CODE SECTION BEGINS HERE ***
144493 
144494  public:
144495 
144496  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
144497  // and not required which is required to match the other aspects of the copy mechanism code generation.
144498  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
144499  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
144500  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
144501  // virtual SgNode* copy ( const SgCopyHelp & help) const;
144502 
144504  virtual std::string class_name() const override;
144505 
144507  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
144508 
144510  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
144511  // static const VariantT static_variant = V_SgUseStatement;
144512  enum { static_variant = V_SgUseStatement };
144513 
144514  /* the generated cast function */
144516  ROSE_DLL_API friend SgUseStatement* isSgUseStatement( SgNode * s );
144517 
144519  ROSE_DLL_API friend const SgUseStatement* isSgUseStatement( const SgNode * s );
144520 
144521  // ******************************************
144522  // * Memory Pool / New / Delete
144523  // ******************************************
144524 
144525  public:
144527  static const unsigned pool_size; //
144529  static std::vector<unsigned char *> pools; //
144531  static SgUseStatement * next_node; //
144532 
144534  static unsigned long initializeStorageClassArray(SgUseStatementStorageClass *); //
144535 
144537  static void clearMemoryPool(); //
144538  static void deleteMemoryPool(); //
144539 
144541  static void extendMemoryPoolForFileIO(); //
144542 
144544  static SgUseStatement * getPointerFromGlobalIndex(unsigned long); //
144546  static SgUseStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
144547 
144549  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
144551  static void resetValidFreepointers(); //
144553  static unsigned long getNumberOfLastValidPointer(); //
144554 
144555 
144556 #if defined(INLINE_FUNCTIONS)
144557 
144558  inline void *operator new (size_t size);
144559 #else
144560 
144561  void *operator new (size_t size);
144562 #endif
144563 
144564  void operator delete (void* pointer, size_t size);
144565 
144566  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
144567  void operator delete (void* pointer)
144568  {
144569  // This is the generated delete operator...
144570  SgUseStatement::operator delete (pointer,sizeof(SgUseStatement));
144571  }
144572 
144574  static size_t numberOfNodes();
144575 
144577  static size_t memoryUsage();
144578 
144579  // End of scope which started in IR nodes specific code
144580  /* */
144581 
144582  /* name Internal Functions
144583  \brief Internal functions ... incomplete-documentation
144584 
144585  These functions have been made public as part of the design, but they are suggested for internal use
144586  or by particularly knowledgeable users for specialized tools or applications.
144587 
144588  \internal We could not make these private because they are required by user for special purposes. And
144589  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
144590 
144591  */
144592 
144593  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
144594  // overridden in every class by *generated* implementation
144596  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
144597  // MS: 06/28/02 container of names of variables or container indices
144598  // used used in the traversal to access AST successor nodes
144599  // overridden in every class by *generated* implementation
144602  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
144603 
144604  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
144605  // than all the vector copies. The implementation for these functions is generated for each class.
144607  virtual size_t get_numberOfTraversalSuccessors() override;
144609  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
144611  virtual size_t get_childIndex(SgNode *child) override;
144612 
144613 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
144614  // MS: 08/16/2002 method for generating RTI information
144616  virtual RTIReturnType roseRTI() override;
144617 #endif
144618  /* */
144619 
144620 
144621 
144622  /* name Deprecated Functions
144623  \brief Deprecated functions ... incomplete-documentation
144624 
144625  These functions have been deprecated from use.
144626  */
144627  /* */
144628 
144630  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
144631 
144632  // JJW (10/16/2008): Changed to a single function in Node.code, and put
144633  // getVariant() in #if 0 block to prevent confusing Doxygen
144634 #if 0
144635 
144636  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
144638  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
144639 #endif
144640  /* */
144641 
144642 
144643 
144644 
144645  public:
144646  /* name Traversal Support Functions
144647  \brief Traversal support functions ... incomplete-documentation
144648 
144649  These functions have been made public as part of the design, but they are suggested for internal use
144650  or by particularly knowledgable users for specialized tools or applications.
144651  */
144652  /* */
144653 
144654  // DQ (11/26/2005): Support for visitor pattern mechanims
144655  // (inferior to ROSE traversal mechanism, experimental).
144659 
144660  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
144662  virtual void accept (ROSE_VisitorPattern & visitor) override;
144663 
144664  // DQ (12/26/2005): Support for traversal based on the memory pool
144667  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
144668 
144671  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
144672 
144673  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
144674  // This traversal helps support internal tools that call static member functions.
144675  // note: this function operates on the memory pools.
144678  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
144679  /* */
144680 
144681 
144682  public:
144683  /* name Memory Allocation Functions
144684  \brief Memory allocations functions ... incomplete-documentation
144685 
144686  These functions have been made public as part of the design, but they are suggested for internal use
144687  or by particularly knowledgable users for specialized tools or applications.
144688  */
144689  /* */
144690 
144701  virtual bool isInMemoryPool() override;
144702 
144713  virtual void checkDataMemberPointersIfInMemoryPool() override;
144714 
144715  // DQ (4/30/2006): Modified to be a const function.
144730  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
144731 
144741  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
144742 
144754  virtual long getChildIndex( SgNode* childNode ) const override;
144755 
144756  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
144757  // comment here (changed to be a C style comment and not be a doxygen comment).
144758  /* \brief Constructor for use by AST File I/O Mechanism
144759 
144760  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
144761  which obtained via fast binary file I/O from disk.
144762  */
144763  // SgUseStatement( SgUseStatementStorageClass& source );
144764 
144765 
144766 
144767 
144768 
144769  // JH (10/24/2005): methods added to support the ast file IO
144770  private:
144771 
144772  /* name AST Memory Allocation Support Functions
144773  \brief Memory allocations support....
144774 
144775  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
144776  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
144777  and support the AST File I/O Mechanism.
144778  */
144779  /* */
144780 
144781  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
144782  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
144783  that I use the same type everywhere, if any changes are made. THe second one declares the type
144784  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
144785  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
144786  a correspinding one in the AST_FILE_IO class!
144787  */
144788  // DQ (9/2/2015): This typedef is no longer used, we can't define the
144789  // comment here (changed to be a C style comment and not be a doxygen comment).
144790  /* \brief Typedef used for low level memory access.
144791  */
144792  // typedef unsigned char* TestType;
144793 
144794  // DQ (9/2/2015): This typedef is no longer used, we can't define the
144795  // comment here (changed to be a C style comment and not be a doxygen comment).
144796  /* \brief Typedef used to hold memory addresses as values.
144797  */
144798  // typedef unsigned long AddressType;
144799 
144800 
144801 
144802  // necessary, to have direct access to the p_freepointer and the private methods !
144804  friend class AST_FILE_IO;
144805 
144807  friend class SgUseStatementStorageClass;
144808 
144810  friend class AstSpecificDataManagingClass;
144811 
144813  friend class AstSpecificDataManagingClassStorageClass;
144814 
144815  public:
144817  SgUseStatement( const SgUseStatementStorageClass& source );
144818 
144819  // private: // JJW hack
144820  /*
144821  name AST Memory Allocation Support Variables
144822  Memory allocations support variables
144823 
144824  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
144825  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
144826  and support the AST File I/O Mechanism.
144827  */
144828  /* */
144829 
144830  public:
144831 
144832  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
144833  // to current node (so that it will work cleanly with build functions to specify patterns).
144834  // virtual SgNode* addRegExpAttribute();
144841 
144842 // *** COMMON CODE SECTION ENDS HERE ***
144843 
144844 
144845 // End of memberFunctionString
144846 // Start of memberFunctionString
144847 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
144848 
144849  // the generated cast function
144850  // friend ROSE_DLL_API SgUseStatement* isSgUseStatement ( SgNode* s );
144851 
144853 
144854 
144855 // End of memberFunctionString
144856 // Start of memberFunctionString
144857 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
144858 
144859  void post_construction_initialization() override;
144860 
144861 
144862 // End of memberFunctionString
144863 
144864  public:
144865  SgName get_name() const /* (getDataAccessFunctionPrototypeString) */;
144866  void set_name(SgName name) /* (getDataAccessFunctionPrototypeString) */;
144867 
144868  public:
144869  bool get_only_option() const;
144870  void set_only_option(bool only_option);
144871 
144872  public:
144873  std::string get_module_nature() const;
144874  void set_module_nature(std::string module_nature);
144875 
144876  public:
144877  const SgRenamePairPtrList& get_rename_list() const;
144878  SgRenamePairPtrList& get_rename_list();
144879 
144880  public:
144881  SgModuleStatement* get_module() const;
144882  void set_module(SgModuleStatement* module);
144883 
144884 
144885  public:
144886  virtual ~SgUseStatement();
144887 
144888 
144889  public:
144890  SgUseStatement(Sg_File_Info* startOfConstruct , SgName name = "", bool only_option = false, std::string module_nature = "");
144891  SgUseStatement(SgName name, bool only_option, std::string module_nature);
144892 
144893  protected:
144894 // Start of memberFunctionString
144895 SgName p_name;
144896 
144897 // End of memberFunctionString
144898 // Start of memberFunctionString
144899 bool p_only_option;
144900 
144901 // End of memberFunctionString
144902 // Start of memberFunctionString
144903 std::string p_module_nature;
144904 
144905 // End of memberFunctionString
144906 // Start of memberFunctionString
144907 SgRenamePairPtrList p_rename_list;
144908 
144909 // End of memberFunctionString
144910 // Start of memberFunctionString
144911 SgModuleStatement* p_module;
144912 
144913 // End of memberFunctionString
144914 
144915 
144916 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
144917 
144918 
144919  };
144920 #endif
144921 
144922 // postdeclarations for SgUseStatement
144923 
144924 /* #line 144925 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
144925 
144926 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
144927 
144928 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
144929 
144930 
144931 /* #line 144932 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
144932 
144933 
144934 
144935 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
144936 
144937 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
144938 // This code is automatically generated for each
144939 // terminal and non-terminal within the defined
144940 // grammar. There is a simple way to change the
144941 // code to fix bugs etc. See the ROSE README file
144942 // for directions.
144943 
144944 // tps: (02/22/2010): Adding DLL export requirements
144945 #include "rosedll.h"
144946 
144947 // predeclarations for SgParameterStatement
144948 
144949 /* #line 144950 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
144950 
144951 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
144952 
144953 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
144954 
144955 #if 1
144956 // Class Definition for SgParameterStatement
144958  {
144959  public:
144960 
144961 
144962 /* #line 144963 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
144963 
144964  virtual SgNode* copy ( SgCopyHelp& help) const override;
144965 // Start of memberFunctionString
144966 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
144967 
144968 // *** COMMON CODE SECTION BEGINS HERE ***
144969 
144970  public:
144971 
144972  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
144973  // and not required which is required to match the other aspects of the copy mechanism code generation.
144974  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
144975  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
144976  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
144977  // virtual SgNode* copy ( const SgCopyHelp & help) const;
144978 
144980  virtual std::string class_name() const override;
144981 
144983  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
144984 
144986  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
144987  // static const VariantT static_variant = V_SgParameterStatement;
144988  enum { static_variant = V_SgParameterStatement };
144989 
144990  /* the generated cast function */
144992  ROSE_DLL_API friend SgParameterStatement* isSgParameterStatement( SgNode * s );
144993 
144995  ROSE_DLL_API friend const SgParameterStatement* isSgParameterStatement( const SgNode * s );
144996 
144997  // ******************************************
144998  // * Memory Pool / New / Delete
144999  // ******************************************
145000 
145001  public:
145003  static const unsigned pool_size; //
145005  static std::vector<unsigned char *> pools; //
145007  static SgParameterStatement * next_node; //
145008 
145010  static unsigned long initializeStorageClassArray(SgParameterStatementStorageClass *); //
145011 
145013  static void clearMemoryPool(); //
145014  static void deleteMemoryPool(); //
145015 
145017  static void extendMemoryPoolForFileIO(); //
145018 
145020  static SgParameterStatement * getPointerFromGlobalIndex(unsigned long); //
145022  static SgParameterStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
145023 
145025  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
145027  static void resetValidFreepointers(); //
145029  static unsigned long getNumberOfLastValidPointer(); //
145030 
145031 
145032 #if defined(INLINE_FUNCTIONS)
145033 
145034  inline void *operator new (size_t size);
145035 #else
145036 
145037  void *operator new (size_t size);
145038 #endif
145039 
145040  void operator delete (void* pointer, size_t size);
145041 
145042  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
145043  void operator delete (void* pointer)
145044  {
145045  // This is the generated delete operator...
145046  SgParameterStatement::operator delete (pointer,sizeof(SgParameterStatement));
145047  }
145048 
145050  static size_t numberOfNodes();
145051 
145053  static size_t memoryUsage();
145054 
145055  // End of scope which started in IR nodes specific code
145056  /* */
145057 
145058  /* name Internal Functions
145059  \brief Internal functions ... incomplete-documentation
145060 
145061  These functions have been made public as part of the design, but they are suggested for internal use
145062  or by particularly knowledgeable users for specialized tools or applications.
145063 
145064  \internal We could not make these private because they are required by user for special purposes. And
145065  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
145066 
145067  */
145068 
145069  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
145070  // overridden in every class by *generated* implementation
145072  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
145073  // MS: 06/28/02 container of names of variables or container indices
145074  // used used in the traversal to access AST successor nodes
145075  // overridden in every class by *generated* implementation
145078  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
145079 
145080  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
145081  // than all the vector copies. The implementation for these functions is generated for each class.
145083  virtual size_t get_numberOfTraversalSuccessors() override;
145085  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
145087  virtual size_t get_childIndex(SgNode *child) override;
145088 
145089 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
145090  // MS: 08/16/2002 method for generating RTI information
145092  virtual RTIReturnType roseRTI() override;
145093 #endif
145094  /* */
145095 
145096 
145097 
145098  /* name Deprecated Functions
145099  \brief Deprecated functions ... incomplete-documentation
145100 
145101  These functions have been deprecated from use.
145102  */
145103  /* */
145104 
145106  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
145107 
145108  // JJW (10/16/2008): Changed to a single function in Node.code, and put
145109  // getVariant() in #if 0 block to prevent confusing Doxygen
145110 #if 0
145111 
145112  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
145114  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
145115 #endif
145116  /* */
145117 
145118 
145119 
145120 
145121  public:
145122  /* name Traversal Support Functions
145123  \brief Traversal support functions ... incomplete-documentation
145124 
145125  These functions have been made public as part of the design, but they are suggested for internal use
145126  or by particularly knowledgable users for specialized tools or applications.
145127  */
145128  /* */
145129 
145130  // DQ (11/26/2005): Support for visitor pattern mechanims
145131  // (inferior to ROSE traversal mechanism, experimental).
145135 
145136  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
145138  virtual void accept (ROSE_VisitorPattern & visitor) override;
145139 
145140  // DQ (12/26/2005): Support for traversal based on the memory pool
145143  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
145144 
145147  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
145148 
145149  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
145150  // This traversal helps support internal tools that call static member functions.
145151  // note: this function operates on the memory pools.
145154  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
145155  /* */
145156 
145157 
145158  public:
145159  /* name Memory Allocation Functions
145160  \brief Memory allocations functions ... incomplete-documentation
145161 
145162  These functions have been made public as part of the design, but they are suggested for internal use
145163  or by particularly knowledgable users for specialized tools or applications.
145164  */
145165  /* */
145166 
145177  virtual bool isInMemoryPool() override;
145178 
145189  virtual void checkDataMemberPointersIfInMemoryPool() override;
145190 
145191  // DQ (4/30/2006): Modified to be a const function.
145206  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
145207 
145217  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
145218 
145230  virtual long getChildIndex( SgNode* childNode ) const override;
145231 
145232  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
145233  // comment here (changed to be a C style comment and not be a doxygen comment).
145234  /* \brief Constructor for use by AST File I/O Mechanism
145235 
145236  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
145237  which obtained via fast binary file I/O from disk.
145238  */
145239  // SgParameterStatement( SgParameterStatementStorageClass& source );
145240 
145241 
145242 
145243 
145244 
145245  // JH (10/24/2005): methods added to support the ast file IO
145246  private:
145247 
145248  /* name AST Memory Allocation Support Functions
145249  \brief Memory allocations support....
145250 
145251  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
145252  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
145253  and support the AST File I/O Mechanism.
145254  */
145255  /* */
145256 
145257  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
145258  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
145259  that I use the same type everywhere, if any changes are made. THe second one declares the type
145260  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
145261  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
145262  a correspinding one in the AST_FILE_IO class!
145263  */
145264  // DQ (9/2/2015): This typedef is no longer used, we can't define the
145265  // comment here (changed to be a C style comment and not be a doxygen comment).
145266  /* \brief Typedef used for low level memory access.
145267  */
145268  // typedef unsigned char* TestType;
145269 
145270  // DQ (9/2/2015): This typedef is no longer used, we can't define the
145271  // comment here (changed to be a C style comment and not be a doxygen comment).
145272  /* \brief Typedef used to hold memory addresses as values.
145273  */
145274  // typedef unsigned long AddressType;
145275 
145276 
145277 
145278  // necessary, to have direct access to the p_freepointer and the private methods !
145280  friend class AST_FILE_IO;
145281 
145283  friend class SgParameterStatementStorageClass;
145284 
145286  friend class AstSpecificDataManagingClass;
145287 
145289  friend class AstSpecificDataManagingClassStorageClass;
145290 
145291  public:
145293  SgParameterStatement( const SgParameterStatementStorageClass& source );
145294 
145295  // private: // JJW hack
145296  /*
145297  name AST Memory Allocation Support Variables
145298  Memory allocations support variables
145299 
145300  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
145301  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
145302  and support the AST File I/O Mechanism.
145303  */
145304  /* */
145305 
145306  public:
145307 
145308  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
145309  // to current node (so that it will work cleanly with build functions to specify patterns).
145310  // virtual SgNode* addRegExpAttribute();
145317 
145318 // *** COMMON CODE SECTION ENDS HERE ***
145319 
145320 
145321 // End of memberFunctionString
145322 // Start of memberFunctionString
145323 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
145324 
145325  // the generated cast function
145326  // friend ROSE_DLL_API SgParameterStatement* isSgParameterStatement ( SgNode* s );
145327 
145329 
145330 
145331 // End of memberFunctionString
145332 // Start of memberFunctionString
145333 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
145334 
145335  void post_construction_initialization() override;
145336 
145337 
145338 // End of memberFunctionString
145339 
145340 
145341  public:
145342  virtual ~SgParameterStatement();
145343 
145344 
145345  public:
145346  SgParameterStatement(Sg_File_Info* startOfConstruct );
145348 
145349  protected:
145350 
145351 
145352 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
145353 
145354 
145355  };
145356 #endif
145357 
145358 // postdeclarations for SgParameterStatement
145359 
145360 /* #line 145361 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
145361 
145362 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
145363 
145364 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
145365 
145366 
145367 /* #line 145368 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
145368 
145369 
145370 
145371 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
145372 
145373 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
145374 // This code is automatically generated for each
145375 // terminal and non-terminal within the defined
145376 // grammar. There is a simple way to change the
145377 // code to fix bugs etc. See the ROSE README file
145378 // for directions.
145379 
145380 // tps: (02/22/2010): Adding DLL export requirements
145381 #include "rosedll.h"
145382 
145383 // predeclarations for SgNamespaceDeclarationStatement
145384 
145385 /* #line 145386 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
145386 
145387 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
145388 
145389 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
145390 
145391 #if 1
145392 // Class Definition for SgNamespaceDeclarationStatement
145394  {
145395  public:
145396 
145397 
145398 /* #line 145399 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
145399 
145400  virtual SgNode* copy ( SgCopyHelp& help) const override;
145401 // Start of memberFunctionString
145402 /* #line 3056 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
145403 
145404 
145405  // DQ (9/8/2004): Added to support qualified name generation
145406  virtual SgName get_qualified_name() const;
145407 
145408  // RV (1/31/2006): Added mangler for namespace declarations.
145409  virtual SgName get_mangled_name (void) const override;
145410 
145411 #if 0
145412  // Wrong, this should be structural and not explicitly stored
145413  // DQ (2/19/2006): The scope needs to be stored explicitly so that we can reference a single scope
145414  // (that of the first declaration, referenced from the firstNondefiningDeclaration() member function,
145415  // instead of all the possible different scopes that could be referenced. Ths allows simple rules
145416  // to be applied to all IR SgDeclaration IR nodes and makes for better testing. The parent pointer
145417  // maintains the source code structural relationships, which the scope represents the semantic
145418  // relationships.
145420  virtual bool hasExplicitScope() const override;
145421 #endif
145422 
145423  // DQ (2/10/2007): Marked as virtual to be consistent
145424  virtual SgSymbol* get_symbol_from_symbol_table() const override;
145425 
145426  // DQ (6/5/2007): Since namespaces are re-entrant we define a simple function to test if two namespaces
145427  // are the same (not the same SgNamespaceDeclarationStatement, but the same namespace).
145429  bool isSameNamespace( const SgNamespaceDeclarationStatement* n ) const;
145430 
145431 #if ALT_FIXUP_COPY
145432  // DQ (11/7/2007): These need to be called separately (see documentation)
145433  virtual void fixupCopy_scopes (SgNode* copy, SgCopyHelp & help) const override;
145434  virtual void fixupCopy_symbols (SgNode* copy, SgCopyHelp & help) const override;
145435  virtual void fixupCopy_references (SgNode* copy, SgCopyHelp & help) const override;
145436 #else
145437  // DQ (10/5/2007): Added fixup function to set scopes not set properly by the ROSETTA generated copy!
145438  virtual void fixupCopy(SgNode* copy, SgCopyHelp & help) const;
145439 #endif
145440 
145441 
145442 
145443 // End of memberFunctionString
145444 // Start of memberFunctionString
145445 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
145446 
145447 // *** COMMON CODE SECTION BEGINS HERE ***
145448 
145449  public:
145450 
145451  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
145452  // and not required which is required to match the other aspects of the copy mechanism code generation.
145453  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
145454  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
145455  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
145456  // virtual SgNode* copy ( const SgCopyHelp & help) const;
145457 
145459  virtual std::string class_name() const override;
145460 
145462  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
145463 
145465  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
145466  // static const VariantT static_variant = V_SgNamespaceDeclarationStatement;
145467  enum { static_variant = V_SgNamespaceDeclarationStatement };
145468 
145469  /* the generated cast function */
145471  ROSE_DLL_API friend SgNamespaceDeclarationStatement* isSgNamespaceDeclarationStatement( SgNode * s );
145472 
145474  ROSE_DLL_API friend const SgNamespaceDeclarationStatement* isSgNamespaceDeclarationStatement( const SgNode * s );
145475 
145476  // ******************************************
145477  // * Memory Pool / New / Delete
145478  // ******************************************
145479 
145480  public:
145482  static const unsigned pool_size; //
145484  static std::vector<unsigned char *> pools; //
145486  static SgNamespaceDeclarationStatement * next_node; //
145487 
145489  static unsigned long initializeStorageClassArray(SgNamespaceDeclarationStatementStorageClass *); //
145490 
145492  static void clearMemoryPool(); //
145493  static void deleteMemoryPool(); //
145494 
145496  static void extendMemoryPoolForFileIO(); //
145497 
145499  static SgNamespaceDeclarationStatement * getPointerFromGlobalIndex(unsigned long); //
145501  static SgNamespaceDeclarationStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
145502 
145504  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
145506  static void resetValidFreepointers(); //
145508  static unsigned long getNumberOfLastValidPointer(); //
145509 
145510 
145511 #if defined(INLINE_FUNCTIONS)
145512 
145513  inline void *operator new (size_t size);
145514 #else
145515 
145516  void *operator new (size_t size);
145517 #endif
145518 
145519  void operator delete (void* pointer, size_t size);
145520 
145521  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
145522  void operator delete (void* pointer)
145523  {
145524  // This is the generated delete operator...
145525  SgNamespaceDeclarationStatement::operator delete (pointer,sizeof(SgNamespaceDeclarationStatement));
145526  }
145527 
145529  static size_t numberOfNodes();
145530 
145532  static size_t memoryUsage();
145533 
145534  // End of scope which started in IR nodes specific code
145535  /* */
145536 
145537  /* name Internal Functions
145538  \brief Internal functions ... incomplete-documentation
145539 
145540  These functions have been made public as part of the design, but they are suggested for internal use
145541  or by particularly knowledgeable users for specialized tools or applications.
145542 
145543  \internal We could not make these private because they are required by user for special purposes. And
145544  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
145545 
145546  */
145547 
145548  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
145549  // overridden in every class by *generated* implementation
145551  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
145552  // MS: 06/28/02 container of names of variables or container indices
145553  // used used in the traversal to access AST successor nodes
145554  // overridden in every class by *generated* implementation
145557  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
145558 
145559  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
145560  // than all the vector copies. The implementation for these functions is generated for each class.
145562  virtual size_t get_numberOfTraversalSuccessors() override;
145564  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
145566  virtual size_t get_childIndex(SgNode *child) override;
145567 
145568 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
145569  // MS: 08/16/2002 method for generating RTI information
145571  virtual RTIReturnType roseRTI() override;
145572 #endif
145573  /* */
145574 
145575 
145576 
145577  /* name Deprecated Functions
145578  \brief Deprecated functions ... incomplete-documentation
145579 
145580  These functions have been deprecated from use.
145581  */
145582  /* */
145583 
145585  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
145586 
145587  // JJW (10/16/2008): Changed to a single function in Node.code, and put
145588  // getVariant() in #if 0 block to prevent confusing Doxygen
145589 #if 0
145590 
145591  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
145593  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
145594 #endif
145595  /* */
145596 
145597 
145598 
145599 
145600  public:
145601  /* name Traversal Support Functions
145602  \brief Traversal support functions ... incomplete-documentation
145603 
145604  These functions have been made public as part of the design, but they are suggested for internal use
145605  or by particularly knowledgable users for specialized tools or applications.
145606  */
145607  /* */
145608 
145609  // DQ (11/26/2005): Support for visitor pattern mechanims
145610  // (inferior to ROSE traversal mechanism, experimental).
145614 
145615  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
145617  virtual void accept (ROSE_VisitorPattern & visitor) override;
145618 
145619  // DQ (12/26/2005): Support for traversal based on the memory pool
145622  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
145623 
145626  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
145627 
145628  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
145629  // This traversal helps support internal tools that call static member functions.
145630  // note: this function operates on the memory pools.
145633  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
145634  /* */
145635 
145636 
145637  public:
145638  /* name Memory Allocation Functions
145639  \brief Memory allocations functions ... incomplete-documentation
145640 
145641  These functions have been made public as part of the design, but they are suggested for internal use
145642  or by particularly knowledgable users for specialized tools or applications.
145643  */
145644  /* */
145645 
145656  virtual bool isInMemoryPool() override;
145657 
145668  virtual void checkDataMemberPointersIfInMemoryPool() override;
145669 
145670  // DQ (4/30/2006): Modified to be a const function.
145685  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
145686 
145696  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
145697 
145709  virtual long getChildIndex( SgNode* childNode ) const override;
145710 
145711  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
145712  // comment here (changed to be a C style comment and not be a doxygen comment).
145713  /* \brief Constructor for use by AST File I/O Mechanism
145714 
145715  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
145716  which obtained via fast binary file I/O from disk.
145717  */
145718  // SgNamespaceDeclarationStatement( SgNamespaceDeclarationStatementStorageClass& source );
145719 
145720 
145721 
145722 
145723 
145724  // JH (10/24/2005): methods added to support the ast file IO
145725  private:
145726 
145727  /* name AST Memory Allocation Support Functions
145728  \brief Memory allocations support....
145729 
145730  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
145731  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
145732  and support the AST File I/O Mechanism.
145733  */
145734  /* */
145735 
145736  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
145737  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
145738  that I use the same type everywhere, if any changes are made. THe second one declares the type
145739  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
145740  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
145741  a correspinding one in the AST_FILE_IO class!
145742  */
145743  // DQ (9/2/2015): This typedef is no longer used, we can't define the
145744  // comment here (changed to be a C style comment and not be a doxygen comment).
145745  /* \brief Typedef used for low level memory access.
145746  */
145747  // typedef unsigned char* TestType;
145748 
145749  // DQ (9/2/2015): This typedef is no longer used, we can't define the
145750  // comment here (changed to be a C style comment and not be a doxygen comment).
145751  /* \brief Typedef used to hold memory addresses as values.
145752  */
145753  // typedef unsigned long AddressType;
145754 
145755 
145756 
145757  // necessary, to have direct access to the p_freepointer and the private methods !
145759  friend class AST_FILE_IO;
145760 
145762  friend class SgNamespaceDeclarationStatementStorageClass;
145763 
145765  friend class AstSpecificDataManagingClass;
145766 
145768  friend class AstSpecificDataManagingClassStorageClass;
145769 
145770  public:
145772  SgNamespaceDeclarationStatement( const SgNamespaceDeclarationStatementStorageClass& source );
145773 
145774  // private: // JJW hack
145775  /*
145776  name AST Memory Allocation Support Variables
145777  Memory allocations support variables
145778 
145779  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
145780  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
145781  and support the AST File I/O Mechanism.
145782  */
145783  /* */
145784 
145785  public:
145786 
145787  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
145788  // to current node (so that it will work cleanly with build functions to specify patterns).
145789  // virtual SgNode* addRegExpAttribute();
145796 
145797 // *** COMMON CODE SECTION ENDS HERE ***
145798 
145799 
145800 // End of memberFunctionString
145801 // Start of memberFunctionString
145802 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
145803 
145804  // the generated cast function
145805  // friend ROSE_DLL_API SgNamespaceDeclarationStatement* isSgNamespaceDeclarationStatement ( SgNode* s );
145806 
145808 
145809 
145810 // End of memberFunctionString
145811 // Start of memberFunctionString
145812 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
145813 
145814  void post_construction_initialization() override;
145815 
145816 
145817 // End of memberFunctionString
145818 
145819  public:
145820  SgName get_name() const /* (getDataAccessFunctionPrototypeString) */;
145821  void set_name(SgName name) /* (getDataAccessFunctionPrototypeString) */;
145822 
145823  public:
145824  SgNamespaceDefinitionStatement* get_definition() const;
145825  void set_definition(SgNamespaceDefinitionStatement* definition);
145826 
145827  public:
145828  bool get_isUnnamedNamespace() const;
145829  void set_isUnnamedNamespace(bool isUnnamedNamespace);
145830 
145831  public:
145832  bool get_isInlinedNamespace() const;
145833  void set_isInlinedNamespace(bool isInlinedNamespace);
145834 
145835 
145836  public:
145837  virtual ~SgNamespaceDeclarationStatement();
145838 
145839 
145840  public:
145841  SgNamespaceDeclarationStatement(Sg_File_Info* startOfConstruct , SgName name = "", SgNamespaceDefinitionStatement* definition = NULL, bool isUnnamedNamespace = false);
145842  SgNamespaceDeclarationStatement(SgName name, SgNamespaceDefinitionStatement* definition, bool isUnnamedNamespace);
145843 
145844  protected:
145845 // Start of memberFunctionString
145846 SgName p_name;
145847 
145848 // End of memberFunctionString
145849 // Start of memberFunctionString
145851 
145852 // End of memberFunctionString
145853 // Start of memberFunctionString
145854 bool p_isUnnamedNamespace;
145855 
145856 // End of memberFunctionString
145857 // Start of memberFunctionString
145858 bool p_isInlinedNamespace;
145859 
145860 // End of memberFunctionString
145861 
145862 
145863 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
145864 
145865 
145866  };
145867 #endif
145868 
145869 // postdeclarations for SgNamespaceDeclarationStatement
145870 
145871 /* #line 145872 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
145872 
145873 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
145874 
145875 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
145876 
145877 
145878 /* #line 145879 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
145879 
145880 
145881 
145882 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
145883 
145884 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
145885 // This code is automatically generated for each
145886 // terminal and non-terminal within the defined
145887 // grammar. There is a simple way to change the
145888 // code to fix bugs etc. See the ROSE README file
145889 // for directions.
145890 
145891 // tps: (02/22/2010): Adding DLL export requirements
145892 #include "rosedll.h"
145893 
145894 // predeclarations for SgEquivalenceStatement
145895 
145896 /* #line 145897 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
145897 
145898 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
145899 
145900 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
145901 
145902 #if 1
145903 // Class Definition for SgEquivalenceStatement
145905  {
145906  public:
145907 
145908 
145909 /* #line 145910 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
145910 
145911  virtual SgNode* copy ( SgCopyHelp& help) const override;
145912 // Start of memberFunctionString
145913 /* #line 3669 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
145914 
145915  SgName get_mangled_name() const override;
145916 
145917 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
145918  virtual unsigned int cfgIndexForEnd() const override;
145919  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
145920  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
145921 #endif
145922 
145923 
145924 
145925 // End of memberFunctionString
145926 // Start of memberFunctionString
145927 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
145928 
145929 // *** COMMON CODE SECTION BEGINS HERE ***
145930 
145931  public:
145932 
145933  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
145934  // and not required which is required to match the other aspects of the copy mechanism code generation.
145935  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
145936  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
145937  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
145938  // virtual SgNode* copy ( const SgCopyHelp & help) const;
145939 
145941  virtual std::string class_name() const override;
145942 
145944  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
145945 
145947  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
145948  // static const VariantT static_variant = V_SgEquivalenceStatement;
145949  enum { static_variant = V_SgEquivalenceStatement };
145950 
145951  /* the generated cast function */
145953  ROSE_DLL_API friend SgEquivalenceStatement* isSgEquivalenceStatement( SgNode * s );
145954 
145956  ROSE_DLL_API friend const SgEquivalenceStatement* isSgEquivalenceStatement( const SgNode * s );
145957 
145958  // ******************************************
145959  // * Memory Pool / New / Delete
145960  // ******************************************
145961 
145962  public:
145964  static const unsigned pool_size; //
145966  static std::vector<unsigned char *> pools; //
145968  static SgEquivalenceStatement * next_node; //
145969 
145971  static unsigned long initializeStorageClassArray(SgEquivalenceStatementStorageClass *); //
145972 
145974  static void clearMemoryPool(); //
145975  static void deleteMemoryPool(); //
145976 
145978  static void extendMemoryPoolForFileIO(); //
145979 
145981  static SgEquivalenceStatement * getPointerFromGlobalIndex(unsigned long); //
145983  static SgEquivalenceStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
145984 
145986  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
145988  static void resetValidFreepointers(); //
145990  static unsigned long getNumberOfLastValidPointer(); //
145991 
145992 
145993 #if defined(INLINE_FUNCTIONS)
145994 
145995  inline void *operator new (size_t size);
145996 #else
145997 
145998  void *operator new (size_t size);
145999 #endif
146000 
146001  void operator delete (void* pointer, size_t size);
146002 
146003  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
146004  void operator delete (void* pointer)
146005  {
146006  // This is the generated delete operator...
146007  SgEquivalenceStatement::operator delete (pointer,sizeof(SgEquivalenceStatement));
146008  }
146009 
146011  static size_t numberOfNodes();
146012 
146014  static size_t memoryUsage();
146015 
146016  // End of scope which started in IR nodes specific code
146017  /* */
146018 
146019  /* name Internal Functions
146020  \brief Internal functions ... incomplete-documentation
146021 
146022  These functions have been made public as part of the design, but they are suggested for internal use
146023  or by particularly knowledgeable users for specialized tools or applications.
146024 
146025  \internal We could not make these private because they are required by user for special purposes. And
146026  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
146027 
146028  */
146029 
146030  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
146031  // overridden in every class by *generated* implementation
146033  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
146034  // MS: 06/28/02 container of names of variables or container indices
146035  // used used in the traversal to access AST successor nodes
146036  // overridden in every class by *generated* implementation
146039  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
146040 
146041  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
146042  // than all the vector copies. The implementation for these functions is generated for each class.
146044  virtual size_t get_numberOfTraversalSuccessors() override;
146046  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
146048  virtual size_t get_childIndex(SgNode *child) override;
146049 
146050 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
146051  // MS: 08/16/2002 method for generating RTI information
146053  virtual RTIReturnType roseRTI() override;
146054 #endif
146055  /* */
146056 
146057 
146058 
146059  /* name Deprecated Functions
146060  \brief Deprecated functions ... incomplete-documentation
146061 
146062  These functions have been deprecated from use.
146063  */
146064  /* */
146065 
146067  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
146068 
146069  // JJW (10/16/2008): Changed to a single function in Node.code, and put
146070  // getVariant() in #if 0 block to prevent confusing Doxygen
146071 #if 0
146072 
146073  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
146075  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
146076 #endif
146077  /* */
146078 
146079 
146080 
146081 
146082  public:
146083  /* name Traversal Support Functions
146084  \brief Traversal support functions ... incomplete-documentation
146085 
146086  These functions have been made public as part of the design, but they are suggested for internal use
146087  or by particularly knowledgable users for specialized tools or applications.
146088  */
146089  /* */
146090 
146091  // DQ (11/26/2005): Support for visitor pattern mechanims
146092  // (inferior to ROSE traversal mechanism, experimental).
146096 
146097  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
146099  virtual void accept (ROSE_VisitorPattern & visitor) override;
146100 
146101  // DQ (12/26/2005): Support for traversal based on the memory pool
146104  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
146105 
146108  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
146109 
146110  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
146111  // This traversal helps support internal tools that call static member functions.
146112  // note: this function operates on the memory pools.
146115  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
146116  /* */
146117 
146118 
146119  public:
146120  /* name Memory Allocation Functions
146121  \brief Memory allocations functions ... incomplete-documentation
146122 
146123  These functions have been made public as part of the design, but they are suggested for internal use
146124  or by particularly knowledgable users for specialized tools or applications.
146125  */
146126  /* */
146127 
146138  virtual bool isInMemoryPool() override;
146139 
146150  virtual void checkDataMemberPointersIfInMemoryPool() override;
146151 
146152  // DQ (4/30/2006): Modified to be a const function.
146167  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
146168 
146178  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
146179 
146191  virtual long getChildIndex( SgNode* childNode ) const override;
146192 
146193  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
146194  // comment here (changed to be a C style comment and not be a doxygen comment).
146195  /* \brief Constructor for use by AST File I/O Mechanism
146196 
146197  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
146198  which obtained via fast binary file I/O from disk.
146199  */
146200  // SgEquivalenceStatement( SgEquivalenceStatementStorageClass& source );
146201 
146202 
146203 
146204 
146205 
146206  // JH (10/24/2005): methods added to support the ast file IO
146207  private:
146208 
146209  /* name AST Memory Allocation Support Functions
146210  \brief Memory allocations support....
146211 
146212  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
146213  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
146214  and support the AST File I/O Mechanism.
146215  */
146216  /* */
146217 
146218  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
146219  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
146220  that I use the same type everywhere, if any changes are made. THe second one declares the type
146221  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
146222  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
146223  a correspinding one in the AST_FILE_IO class!
146224  */
146225  // DQ (9/2/2015): This typedef is no longer used, we can't define the
146226  // comment here (changed to be a C style comment and not be a doxygen comment).
146227  /* \brief Typedef used for low level memory access.
146228  */
146229  // typedef unsigned char* TestType;
146230 
146231  // DQ (9/2/2015): This typedef is no longer used, we can't define the
146232  // comment here (changed to be a C style comment and not be a doxygen comment).
146233  /* \brief Typedef used to hold memory addresses as values.
146234  */
146235  // typedef unsigned long AddressType;
146236 
146237 
146238 
146239  // necessary, to have direct access to the p_freepointer and the private methods !
146241  friend class AST_FILE_IO;
146242 
146244  friend class SgEquivalenceStatementStorageClass;
146245 
146247  friend class AstSpecificDataManagingClass;
146248 
146250  friend class AstSpecificDataManagingClassStorageClass;
146251 
146252  public:
146254  SgEquivalenceStatement( const SgEquivalenceStatementStorageClass& source );
146255 
146256  // private: // JJW hack
146257  /*
146258  name AST Memory Allocation Support Variables
146259  Memory allocations support variables
146260 
146261  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
146262  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
146263  and support the AST File I/O Mechanism.
146264  */
146265  /* */
146266 
146267  public:
146268 
146269  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
146270  // to current node (so that it will work cleanly with build functions to specify patterns).
146271  // virtual SgNode* addRegExpAttribute();
146278 
146279 // *** COMMON CODE SECTION ENDS HERE ***
146280 
146281 
146282 // End of memberFunctionString
146283 // Start of memberFunctionString
146284 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
146285 
146286  // the generated cast function
146287  // friend ROSE_DLL_API SgEquivalenceStatement* isSgEquivalenceStatement ( SgNode* s );
146288 
146290 
146291 
146292 // End of memberFunctionString
146293 // Start of memberFunctionString
146294 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
146295 
146296  void post_construction_initialization() override;
146297 
146298 
146299 // End of memberFunctionString
146300 
146301  public:
146302  SgExprListExp* get_equivalence_set_list() const;
146303  void set_equivalence_set_list(SgExprListExp* equivalence_set_list);
146304 
146305 
146306  public:
146307  virtual ~SgEquivalenceStatement();
146308 
146309 
146310  public:
146311  SgEquivalenceStatement(Sg_File_Info* startOfConstruct );
146313 
146314  protected:
146315 // Start of memberFunctionString
146316 SgExprListExp* p_equivalence_set_list;
146317 
146318 // End of memberFunctionString
146319 
146320 
146321 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
146322 
146323 
146324  };
146325 #endif
146326 
146327 // postdeclarations for SgEquivalenceStatement
146328 
146329 /* #line 146330 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
146330 
146331 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
146332 
146333 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
146334 
146335 
146336 /* #line 146337 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
146337 
146338 
146339 
146340 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
146341 
146342 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
146343 // This code is automatically generated for each
146344 // terminal and non-terminal within the defined
146345 // grammar. There is a simple way to change the
146346 // code to fix bugs etc. See the ROSE README file
146347 // for directions.
146348 
146349 // tps: (02/22/2010): Adding DLL export requirements
146350 #include "rosedll.h"
146351 
146352 // predeclarations for SgInterfaceStatement
146353 
146354 /* #line 146355 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
146355 
146356 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
146357 
146358 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
146359 
146360 #if 1
146361 // Class Definition for SgInterfaceStatement
146363  {
146364  public:
146365 
146366 
146367 /* #line 146368 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
146368 
146369  virtual SgNode* copy ( SgCopyHelp& help) const override;
146370 // Start of memberFunctionString
146371 /* #line 3325 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
146372 
146373 
146375  {
146376  e_error_interface_type = 0,
146377  e_default_interface_type = 1,
146378  e_unnamed_interface_type = 2,
146379  e_named_interface_type = 3,
146380  e_operator_interface_type = 4,
146381  e_assignment_interface_type = 5,
146382  e_last_interface_type = 6
146383  };
146384 
146385 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
146386  virtual unsigned int cfgIndexForEnd() const override;
146387  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
146388  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
146389 #endif
146390 
146391  virtual SgName get_mangled_name() const override;
146392 
146393 
146394 // End of memberFunctionString
146395 // Start of memberFunctionString
146396 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
146397 
146398 // *** COMMON CODE SECTION BEGINS HERE ***
146399 
146400  public:
146401 
146402  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
146403  // and not required which is required to match the other aspects of the copy mechanism code generation.
146404  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
146405  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
146406  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
146407  // virtual SgNode* copy ( const SgCopyHelp & help) const;
146408 
146410  virtual std::string class_name() const override;
146411 
146413  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
146414 
146416  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
146417  // static const VariantT static_variant = V_SgInterfaceStatement;
146418  enum { static_variant = V_SgInterfaceStatement };
146419 
146420  /* the generated cast function */
146422  ROSE_DLL_API friend SgInterfaceStatement* isSgInterfaceStatement( SgNode * s );
146423 
146425  ROSE_DLL_API friend const SgInterfaceStatement* isSgInterfaceStatement( const SgNode * s );
146426 
146427  // ******************************************
146428  // * Memory Pool / New / Delete
146429  // ******************************************
146430 
146431  public:
146433  static const unsigned pool_size; //
146435  static std::vector<unsigned char *> pools; //
146437  static SgInterfaceStatement * next_node; //
146438 
146440  static unsigned long initializeStorageClassArray(SgInterfaceStatementStorageClass *); //
146441 
146443  static void clearMemoryPool(); //
146444  static void deleteMemoryPool(); //
146445 
146447  static void extendMemoryPoolForFileIO(); //
146448 
146450  static SgInterfaceStatement * getPointerFromGlobalIndex(unsigned long); //
146452  static SgInterfaceStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
146453 
146455  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
146457  static void resetValidFreepointers(); //
146459  static unsigned long getNumberOfLastValidPointer(); //
146460 
146461 
146462 #if defined(INLINE_FUNCTIONS)
146463 
146464  inline void *operator new (size_t size);
146465 #else
146466 
146467  void *operator new (size_t size);
146468 #endif
146469 
146470  void operator delete (void* pointer, size_t size);
146471 
146472  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
146473  void operator delete (void* pointer)
146474  {
146475  // This is the generated delete operator...
146476  SgInterfaceStatement::operator delete (pointer,sizeof(SgInterfaceStatement));
146477  }
146478 
146480  static size_t numberOfNodes();
146481 
146483  static size_t memoryUsage();
146484 
146485  // End of scope which started in IR nodes specific code
146486  /* */
146487 
146488  /* name Internal Functions
146489  \brief Internal functions ... incomplete-documentation
146490 
146491  These functions have been made public as part of the design, but they are suggested for internal use
146492  or by particularly knowledgeable users for specialized tools or applications.
146493 
146494  \internal We could not make these private because they are required by user for special purposes. And
146495  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
146496 
146497  */
146498 
146499  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
146500  // overridden in every class by *generated* implementation
146502  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
146503  // MS: 06/28/02 container of names of variables or container indices
146504  // used used in the traversal to access AST successor nodes
146505  // overridden in every class by *generated* implementation
146508  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
146509 
146510  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
146511  // than all the vector copies. The implementation for these functions is generated for each class.
146513  virtual size_t get_numberOfTraversalSuccessors() override;
146515  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
146517  virtual size_t get_childIndex(SgNode *child) override;
146518 
146519 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
146520  // MS: 08/16/2002 method for generating RTI information
146522  virtual RTIReturnType roseRTI() override;
146523 #endif
146524  /* */
146525 
146526 
146527 
146528  /* name Deprecated Functions
146529  \brief Deprecated functions ... incomplete-documentation
146530 
146531  These functions have been deprecated from use.
146532  */
146533  /* */
146534 
146536  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
146537 
146538  // JJW (10/16/2008): Changed to a single function in Node.code, and put
146539  // getVariant() in #if 0 block to prevent confusing Doxygen
146540 #if 0
146541 
146542  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
146544  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
146545 #endif
146546  /* */
146547 
146548 
146549 
146550 
146551  public:
146552  /* name Traversal Support Functions
146553  \brief Traversal support functions ... incomplete-documentation
146554 
146555  These functions have been made public as part of the design, but they are suggested for internal use
146556  or by particularly knowledgable users for specialized tools or applications.
146557  */
146558  /* */
146559 
146560  // DQ (11/26/2005): Support for visitor pattern mechanims
146561  // (inferior to ROSE traversal mechanism, experimental).
146565 
146566  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
146568  virtual void accept (ROSE_VisitorPattern & visitor) override;
146569 
146570  // DQ (12/26/2005): Support for traversal based on the memory pool
146573  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
146574 
146577  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
146578 
146579  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
146580  // This traversal helps support internal tools that call static member functions.
146581  // note: this function operates on the memory pools.
146584  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
146585  /* */
146586 
146587 
146588  public:
146589  /* name Memory Allocation Functions
146590  \brief Memory allocations functions ... incomplete-documentation
146591 
146592  These functions have been made public as part of the design, but they are suggested for internal use
146593  or by particularly knowledgable users for specialized tools or applications.
146594  */
146595  /* */
146596 
146607  virtual bool isInMemoryPool() override;
146608 
146619  virtual void checkDataMemberPointersIfInMemoryPool() override;
146620 
146621  // DQ (4/30/2006): Modified to be a const function.
146636  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
146637 
146647  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
146648 
146660  virtual long getChildIndex( SgNode* childNode ) const override;
146661 
146662  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
146663  // comment here (changed to be a C style comment and not be a doxygen comment).
146664  /* \brief Constructor for use by AST File I/O Mechanism
146665 
146666  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
146667  which obtained via fast binary file I/O from disk.
146668  */
146669  // SgInterfaceStatement( SgInterfaceStatementStorageClass& source );
146670 
146671 
146672 
146673 
146674 
146675  // JH (10/24/2005): methods added to support the ast file IO
146676  private:
146677 
146678  /* name AST Memory Allocation Support Functions
146679  \brief Memory allocations support....
146680 
146681  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
146682  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
146683  and support the AST File I/O Mechanism.
146684  */
146685  /* */
146686 
146687  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
146688  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
146689  that I use the same type everywhere, if any changes are made. THe second one declares the type
146690  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
146691  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
146692  a correspinding one in the AST_FILE_IO class!
146693  */
146694  // DQ (9/2/2015): This typedef is no longer used, we can't define the
146695  // comment here (changed to be a C style comment and not be a doxygen comment).
146696  /* \brief Typedef used for low level memory access.
146697  */
146698  // typedef unsigned char* TestType;
146699 
146700  // DQ (9/2/2015): This typedef is no longer used, we can't define the
146701  // comment here (changed to be a C style comment and not be a doxygen comment).
146702  /* \brief Typedef used to hold memory addresses as values.
146703  */
146704  // typedef unsigned long AddressType;
146705 
146706 
146707 
146708  // necessary, to have direct access to the p_freepointer and the private methods !
146710  friend class AST_FILE_IO;
146711 
146713  friend class SgInterfaceStatementStorageClass;
146714 
146716  friend class AstSpecificDataManagingClass;
146717 
146719  friend class AstSpecificDataManagingClassStorageClass;
146720 
146721  public:
146723  SgInterfaceStatement( const SgInterfaceStatementStorageClass& source );
146724 
146725  // private: // JJW hack
146726  /*
146727  name AST Memory Allocation Support Variables
146728  Memory allocations support variables
146729 
146730  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
146731  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
146732  and support the AST File I/O Mechanism.
146733  */
146734  /* */
146735 
146736  public:
146737 
146738  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
146739  // to current node (so that it will work cleanly with build functions to specify patterns).
146740  // virtual SgNode* addRegExpAttribute();
146747 
146748 // *** COMMON CODE SECTION ENDS HERE ***
146749 
146750 
146751 // End of memberFunctionString
146752 // Start of memberFunctionString
146753 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
146754 
146755  // the generated cast function
146756  // friend ROSE_DLL_API SgInterfaceStatement* isSgInterfaceStatement ( SgNode* s );
146757 
146759 
146760 
146761 // End of memberFunctionString
146762 // Start of memberFunctionString
146763 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
146764 
146765  void post_construction_initialization() override;
146766 
146767 
146768 // End of memberFunctionString
146769 
146770  public:
146771  SgName get_name() const /* (getDataAccessFunctionPrototypeString) */;
146772  void set_name(SgName name) /* (getDataAccessFunctionPrototypeString) */;
146773 
146774  public:
146775  SgInterfaceStatement::generic_spec_enum get_generic_spec() const;
146776  void set_generic_spec(SgInterfaceStatement::generic_spec_enum generic_spec);
146777 
146778  public:
146779  const SgInterfaceBodyPtrList& get_interface_body_list() const;
146780  SgInterfaceBodyPtrList& get_interface_body_list();
146781 
146782  public:
146783  SgLabelRefExp* get_end_numeric_label() const /* (getDataAccessFunctionPrototypeString) */;
146784  void set_end_numeric_label(SgLabelRefExp* end_numeric_label) override /* (getDataAccessFunctionPrototypeString) */;
146785 
146786 
146787  public:
146788  virtual ~SgInterfaceStatement();
146789 
146790 
146791  public:
146792  SgInterfaceStatement(Sg_File_Info* startOfConstruct , SgName name = "", SgInterfaceStatement::generic_spec_enum generic_spec = SgInterfaceStatement::e_default_interface_type);
146794 
146795  protected:
146796 // Start of memberFunctionString
146797 SgName p_name;
146798 
146799 // End of memberFunctionString
146800 // Start of memberFunctionString
146801 SgInterfaceStatement::generic_spec_enum p_generic_spec;
146802 
146803 // End of memberFunctionString
146804 // Start of memberFunctionString
146805 SgInterfaceBodyPtrList p_interface_body_list;
146806 
146807 // End of memberFunctionString
146808 // Start of memberFunctionString
146809 SgLabelRefExp* p_end_numeric_label;
146810 
146811 // End of memberFunctionString
146812 
146813 
146814 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
146815 
146816 
146817  };
146818 #endif
146819 
146820 // postdeclarations for SgInterfaceStatement
146821 
146822 /* #line 146823 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
146823 
146824 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
146825 
146826 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
146827 
146828 
146829 /* #line 146830 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
146830 
146831 
146832 
146833 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
146834 
146835 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
146836 // This code is automatically generated for each
146837 // terminal and non-terminal within the defined
146838 // grammar. There is a simple way to change the
146839 // code to fix bugs etc. See the ROSE README file
146840 // for directions.
146841 
146842 // tps: (02/22/2010): Adding DLL export requirements
146843 #include "rosedll.h"
146844 
146845 // predeclarations for SgNamespaceAliasDeclarationStatement
146846 
146847 /* #line 146848 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
146848 
146849 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
146850 
146851 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
146852 
146853 #if 1
146854 // Class Definition for SgNamespaceAliasDeclarationStatement
146856  {
146857  public:
146858 
146859 
146860 /* #line 146861 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
146861 
146862  virtual SgNode* copy ( SgCopyHelp& help) const override;
146863 // Start of memberFunctionString
146864 /* #line 3136 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
146865 
146866 
146867  // DQ (2/18/2006): Added general name mangling for all declarations (and some other IR nodes).
146868  virtual SgName get_mangled_name(void) const override;
146869 
146870  // DQ (8/30/2009): Added namespace alias support.
146871  virtual SgSymbol* get_symbol_from_symbol_table() const override;
146872 
146873  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
146874  int get_name_qualification_length() const;
146875  void set_name_qualification_length(int name_qualification_length);
146876 
146877  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
146878  bool get_type_elaboration_required() const;
146879  void set_type_elaboration_required(bool type_elaboration_required);
146880 
146881  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
146882  bool get_global_qualification_required() const;
146883  void set_global_qualification_required(bool global_qualification_required);
146884 
146885 
146886 
146887 // End of memberFunctionString
146888 // Start of memberFunctionString
146889 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
146890 
146891 // *** COMMON CODE SECTION BEGINS HERE ***
146892 
146893  public:
146894 
146895  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
146896  // and not required which is required to match the other aspects of the copy mechanism code generation.
146897  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
146898  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
146899  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
146900  // virtual SgNode* copy ( const SgCopyHelp & help) const;
146901 
146903  virtual std::string class_name() const override;
146904 
146906  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
146907 
146909  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
146910  // static const VariantT static_variant = V_SgNamespaceAliasDeclarationStatement;
146911  enum { static_variant = V_SgNamespaceAliasDeclarationStatement };
146912 
146913  /* the generated cast function */
146915  ROSE_DLL_API friend SgNamespaceAliasDeclarationStatement* isSgNamespaceAliasDeclarationStatement( SgNode * s );
146916 
146918  ROSE_DLL_API friend const SgNamespaceAliasDeclarationStatement* isSgNamespaceAliasDeclarationStatement( const SgNode * s );
146919 
146920  // ******************************************
146921  // * Memory Pool / New / Delete
146922  // ******************************************
146923 
146924  public:
146926  static const unsigned pool_size; //
146928  static std::vector<unsigned char *> pools; //
146930  static SgNamespaceAliasDeclarationStatement * next_node; //
146931 
146933  static unsigned long initializeStorageClassArray(SgNamespaceAliasDeclarationStatementStorageClass *); //
146934 
146936  static void clearMemoryPool(); //
146937  static void deleteMemoryPool(); //
146938 
146940  static void extendMemoryPoolForFileIO(); //
146941 
146943  static SgNamespaceAliasDeclarationStatement * getPointerFromGlobalIndex(unsigned long); //
146945  static SgNamespaceAliasDeclarationStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
146946 
146948  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
146950  static void resetValidFreepointers(); //
146952  static unsigned long getNumberOfLastValidPointer(); //
146953 
146954 
146955 #if defined(INLINE_FUNCTIONS)
146956 
146957  inline void *operator new (size_t size);
146958 #else
146959 
146960  void *operator new (size_t size);
146961 #endif
146962 
146963  void operator delete (void* pointer, size_t size);
146964 
146965  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
146966  void operator delete (void* pointer)
146967  {
146968  // This is the generated delete operator...
146969  SgNamespaceAliasDeclarationStatement::operator delete (pointer,sizeof(SgNamespaceAliasDeclarationStatement));
146970  }
146971 
146973  static size_t numberOfNodes();
146974 
146976  static size_t memoryUsage();
146977 
146978  // End of scope which started in IR nodes specific code
146979  /* */
146980 
146981  /* name Internal Functions
146982  \brief Internal functions ... incomplete-documentation
146983 
146984  These functions have been made public as part of the design, but they are suggested for internal use
146985  or by particularly knowledgeable users for specialized tools or applications.
146986 
146987  \internal We could not make these private because they are required by user for special purposes. And
146988  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
146989 
146990  */
146991 
146992  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
146993  // overridden in every class by *generated* implementation
146995  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
146996  // MS: 06/28/02 container of names of variables or container indices
146997  // used used in the traversal to access AST successor nodes
146998  // overridden in every class by *generated* implementation
147001  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
147002 
147003  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
147004  // than all the vector copies. The implementation for these functions is generated for each class.
147006  virtual size_t get_numberOfTraversalSuccessors() override;
147008  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
147010  virtual size_t get_childIndex(SgNode *child) override;
147011 
147012 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
147013  // MS: 08/16/2002 method for generating RTI information
147015  virtual RTIReturnType roseRTI() override;
147016 #endif
147017  /* */
147018 
147019 
147020 
147021  /* name Deprecated Functions
147022  \brief Deprecated functions ... incomplete-documentation
147023 
147024  These functions have been deprecated from use.
147025  */
147026  /* */
147027 
147029  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
147030 
147031  // JJW (10/16/2008): Changed to a single function in Node.code, and put
147032  // getVariant() in #if 0 block to prevent confusing Doxygen
147033 #if 0
147034 
147035  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
147037  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
147038 #endif
147039  /* */
147040 
147041 
147042 
147043 
147044  public:
147045  /* name Traversal Support Functions
147046  \brief Traversal support functions ... incomplete-documentation
147047 
147048  These functions have been made public as part of the design, but they are suggested for internal use
147049  or by particularly knowledgable users for specialized tools or applications.
147050  */
147051  /* */
147052 
147053  // DQ (11/26/2005): Support for visitor pattern mechanims
147054  // (inferior to ROSE traversal mechanism, experimental).
147058 
147059  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
147061  virtual void accept (ROSE_VisitorPattern & visitor) override;
147062 
147063  // DQ (12/26/2005): Support for traversal based on the memory pool
147066  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
147067 
147070  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
147071 
147072  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
147073  // This traversal helps support internal tools that call static member functions.
147074  // note: this function operates on the memory pools.
147077  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
147078  /* */
147079 
147080 
147081  public:
147082  /* name Memory Allocation Functions
147083  \brief Memory allocations functions ... incomplete-documentation
147084 
147085  These functions have been made public as part of the design, but they are suggested for internal use
147086  or by particularly knowledgable users for specialized tools or applications.
147087  */
147088  /* */
147089 
147100  virtual bool isInMemoryPool() override;
147101 
147112  virtual void checkDataMemberPointersIfInMemoryPool() override;
147113 
147114  // DQ (4/30/2006): Modified to be a const function.
147129  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
147130 
147140  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
147141 
147153  virtual long getChildIndex( SgNode* childNode ) const override;
147154 
147155  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
147156  // comment here (changed to be a C style comment and not be a doxygen comment).
147157  /* \brief Constructor for use by AST File I/O Mechanism
147158 
147159  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
147160  which obtained via fast binary file I/O from disk.
147161  */
147162  // SgNamespaceAliasDeclarationStatement( SgNamespaceAliasDeclarationStatementStorageClass& source );
147163 
147164 
147165 
147166 
147167 
147168  // JH (10/24/2005): methods added to support the ast file IO
147169  private:
147170 
147171  /* name AST Memory Allocation Support Functions
147172  \brief Memory allocations support....
147173 
147174  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
147175  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
147176  and support the AST File I/O Mechanism.
147177  */
147178  /* */
147179 
147180  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
147181  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
147182  that I use the same type everywhere, if any changes are made. THe second one declares the type
147183  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
147184  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
147185  a correspinding one in the AST_FILE_IO class!
147186  */
147187  // DQ (9/2/2015): This typedef is no longer used, we can't define the
147188  // comment here (changed to be a C style comment and not be a doxygen comment).
147189  /* \brief Typedef used for low level memory access.
147190  */
147191  // typedef unsigned char* TestType;
147192 
147193  // DQ (9/2/2015): This typedef is no longer used, we can't define the
147194  // comment here (changed to be a C style comment and not be a doxygen comment).
147195  /* \brief Typedef used to hold memory addresses as values.
147196  */
147197  // typedef unsigned long AddressType;
147198 
147199 
147200 
147201  // necessary, to have direct access to the p_freepointer and the private methods !
147203  friend class AST_FILE_IO;
147204 
147206  friend class SgNamespaceAliasDeclarationStatementStorageClass;
147207 
147209  friend class AstSpecificDataManagingClass;
147210 
147212  friend class AstSpecificDataManagingClassStorageClass;
147213 
147214  public:
147216  SgNamespaceAliasDeclarationStatement( const SgNamespaceAliasDeclarationStatementStorageClass& source );
147217 
147218  // private: // JJW hack
147219  /*
147220  name AST Memory Allocation Support Variables
147221  Memory allocations support variables
147222 
147223  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
147224  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
147225  and support the AST File I/O Mechanism.
147226  */
147227  /* */
147228 
147229  public:
147230 
147231  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
147232  // to current node (so that it will work cleanly with build functions to specify patterns).
147233  // virtual SgNode* addRegExpAttribute();
147240 
147241 // *** COMMON CODE SECTION ENDS HERE ***
147242 
147243 
147244 // End of memberFunctionString
147245 // Start of memberFunctionString
147246 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
147247 
147248  // the generated cast function
147249  // friend ROSE_DLL_API SgNamespaceAliasDeclarationStatement* isSgNamespaceAliasDeclarationStatement ( SgNode* s );
147250 
147252 
147253 
147254 // End of memberFunctionString
147255 // Start of memberFunctionString
147256 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
147257 
147258  void post_construction_initialization() override;
147259 
147260 
147261 // End of memberFunctionString
147262 
147263  public:
147264  SgName get_name() const /* (getDataAccessFunctionPrototypeString) */;
147265  void set_name(SgName name) /* (getDataAccessFunctionPrototypeString) */;
147266 
147267  public:
147268  SgNamespaceDeclarationStatement* get_namespaceDeclaration() const;
147269  void set_namespaceDeclaration(SgNamespaceDeclarationStatement* namespaceDeclaration);
147270 
147271 
147272 
147273 
147274  public:
147275  bool get_is_alias_for_another_namespace_alias() const;
147276  void set_is_alias_for_another_namespace_alias(bool is_alias_for_another_namespace_alias);
147277 
147278  public:
147279  SgNamespaceAliasDeclarationStatement* get_namespaceAliasDeclaration() const;
147280  void set_namespaceAliasDeclaration(SgNamespaceAliasDeclarationStatement* namespaceAliasDeclaration);
147281 
147282 
147283  public:
147285 
147286 
147287  public:
147288  SgNamespaceAliasDeclarationStatement(Sg_File_Info* startOfConstruct , SgName name = "", SgNamespaceDeclarationStatement* namespaceDeclaration = NULL);
147290 
147291  protected:
147292 // Start of memberFunctionString
147293 SgName p_name;
147294 
147295 // End of memberFunctionString
147296 // Start of memberFunctionString
147297 SgNamespaceDeclarationStatement* p_namespaceDeclaration;
147298 
147299 // End of memberFunctionString
147300 // Start of memberFunctionString
147301 int p_name_qualification_length;
147302 
147303 // End of memberFunctionString
147304 // Start of memberFunctionString
147305 bool p_type_elaboration_required;
147306 
147307 // End of memberFunctionString
147308 // Start of memberFunctionString
147309 bool p_global_qualification_required;
147310 
147311 // End of memberFunctionString
147312 // Start of memberFunctionString
147313 bool p_is_alias_for_another_namespace_alias;
147314 
147315 // End of memberFunctionString
147316 // Start of memberFunctionString
147317 SgNamespaceAliasDeclarationStatement* p_namespaceAliasDeclaration;
147318 
147319 // End of memberFunctionString
147320 
147321 
147322 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
147323 
147324 
147325  };
147326 #endif
147327 
147328 // postdeclarations for SgNamespaceAliasDeclarationStatement
147329 
147330 /* #line 147331 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
147331 
147332 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
147333 
147334 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
147335 
147336 
147337 /* #line 147338 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
147338 
147339 
147340 
147341 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
147342 
147343 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
147344 // This code is automatically generated for each
147345 // terminal and non-terminal within the defined
147346 // grammar. There is a simple way to change the
147347 // code to fix bugs etc. See the ROSE README file
147348 // for directions.
147349 
147350 // tps: (02/22/2010): Adding DLL export requirements
147351 #include "rosedll.h"
147352 
147353 // predeclarations for SgCommonBlock
147354 
147355 /* #line 147356 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
147356 
147357 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
147358 
147359 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
147360 
147361 #if 1
147362 // Class Definition for SgCommonBlock
147363 class ROSE_DLL_API SgCommonBlock : public SgDeclarationStatement
147364  {
147365  public:
147366 
147367 
147368 /* #line 147369 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
147369 
147370  virtual SgNode* copy ( SgCopyHelp& help) const override;
147371 // Start of memberFunctionString
147372 /* #line 3350 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
147373 
147374  SgName get_mangled_name() const override;
147375 
147376 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
147377  virtual unsigned int cfgIndexForEnd() const override;
147378  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
147379  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
147380 #endif
147381 
147382  const SgCommonBlockObjectPtrList & get_block_list() const;
147383  SgCommonBlockObjectPtrList & get_block_list();
147384 
147385 
147386 // End of memberFunctionString
147387 // Start of memberFunctionString
147388 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
147389 
147390 // *** COMMON CODE SECTION BEGINS HERE ***
147391 
147392  public:
147393 
147394  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
147395  // and not required which is required to match the other aspects of the copy mechanism code generation.
147396  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
147397  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
147398  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
147399  // virtual SgNode* copy ( const SgCopyHelp & help) const;
147400 
147402  virtual std::string class_name() const override;
147403 
147405  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
147406 
147408  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
147409  // static const VariantT static_variant = V_SgCommonBlock;
147410  enum { static_variant = V_SgCommonBlock };
147411 
147412  /* the generated cast function */
147414  ROSE_DLL_API friend SgCommonBlock* isSgCommonBlock( SgNode * s );
147415 
147417  ROSE_DLL_API friend const SgCommonBlock* isSgCommonBlock( const SgNode * s );
147418 
147419  // ******************************************
147420  // * Memory Pool / New / Delete
147421  // ******************************************
147422 
147423  public:
147425  static const unsigned pool_size; //
147427  static std::vector<unsigned char *> pools; //
147429  static SgCommonBlock * next_node; //
147430 
147432  static unsigned long initializeStorageClassArray(SgCommonBlockStorageClass *); //
147433 
147435  static void clearMemoryPool(); //
147436  static void deleteMemoryPool(); //
147437 
147439  static void extendMemoryPoolForFileIO(); //
147440 
147442  static SgCommonBlock * getPointerFromGlobalIndex(unsigned long); //
147444  static SgCommonBlock * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
147445 
147447  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
147449  static void resetValidFreepointers(); //
147451  static unsigned long getNumberOfLastValidPointer(); //
147452 
147453 
147454 #if defined(INLINE_FUNCTIONS)
147455 
147456  inline void *operator new (size_t size);
147457 #else
147458 
147459  void *operator new (size_t size);
147460 #endif
147461 
147462  void operator delete (void* pointer, size_t size);
147463 
147464  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
147465  void operator delete (void* pointer)
147466  {
147467  // This is the generated delete operator...
147468  SgCommonBlock::operator delete (pointer,sizeof(SgCommonBlock));
147469  }
147470 
147472  static size_t numberOfNodes();
147473 
147475  static size_t memoryUsage();
147476 
147477  // End of scope which started in IR nodes specific code
147478  /* */
147479 
147480  /* name Internal Functions
147481  \brief Internal functions ... incomplete-documentation
147482 
147483  These functions have been made public as part of the design, but they are suggested for internal use
147484  or by particularly knowledgeable users for specialized tools or applications.
147485 
147486  \internal We could not make these private because they are required by user for special purposes. And
147487  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
147488 
147489  */
147490 
147491  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
147492  // overridden in every class by *generated* implementation
147494  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
147495  // MS: 06/28/02 container of names of variables or container indices
147496  // used used in the traversal to access AST successor nodes
147497  // overridden in every class by *generated* implementation
147500  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
147501 
147502  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
147503  // than all the vector copies. The implementation for these functions is generated for each class.
147505  virtual size_t get_numberOfTraversalSuccessors() override;
147507  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
147509  virtual size_t get_childIndex(SgNode *child) override;
147510 
147511 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
147512  // MS: 08/16/2002 method for generating RTI information
147514  virtual RTIReturnType roseRTI() override;
147515 #endif
147516  /* */
147517 
147518 
147519 
147520  /* name Deprecated Functions
147521  \brief Deprecated functions ... incomplete-documentation
147522 
147523  These functions have been deprecated from use.
147524  */
147525  /* */
147526 
147528  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
147529 
147530  // JJW (10/16/2008): Changed to a single function in Node.code, and put
147531  // getVariant() in #if 0 block to prevent confusing Doxygen
147532 #if 0
147533 
147534  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
147536  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
147537 #endif
147538  /* */
147539 
147540 
147541 
147542 
147543  public:
147544  /* name Traversal Support Functions
147545  \brief Traversal support functions ... incomplete-documentation
147546 
147547  These functions have been made public as part of the design, but they are suggested for internal use
147548  or by particularly knowledgable users for specialized tools or applications.
147549  */
147550  /* */
147551 
147552  // DQ (11/26/2005): Support for visitor pattern mechanims
147553  // (inferior to ROSE traversal mechanism, experimental).
147557 
147558  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
147560  virtual void accept (ROSE_VisitorPattern & visitor) override;
147561 
147562  // DQ (12/26/2005): Support for traversal based on the memory pool
147565  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
147566 
147569  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
147570 
147571  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
147572  // This traversal helps support internal tools that call static member functions.
147573  // note: this function operates on the memory pools.
147576  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
147577  /* */
147578 
147579 
147580  public:
147581  /* name Memory Allocation Functions
147582  \brief Memory allocations functions ... incomplete-documentation
147583 
147584  These functions have been made public as part of the design, but they are suggested for internal use
147585  or by particularly knowledgable users for specialized tools or applications.
147586  */
147587  /* */
147588 
147599  virtual bool isInMemoryPool() override;
147600 
147611  virtual void checkDataMemberPointersIfInMemoryPool() override;
147612 
147613  // DQ (4/30/2006): Modified to be a const function.
147628  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
147629 
147639  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
147640 
147652  virtual long getChildIndex( SgNode* childNode ) const override;
147653 
147654  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
147655  // comment here (changed to be a C style comment and not be a doxygen comment).
147656  /* \brief Constructor for use by AST File I/O Mechanism
147657 
147658  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
147659  which obtained via fast binary file I/O from disk.
147660  */
147661  // SgCommonBlock( SgCommonBlockStorageClass& source );
147662 
147663 
147664 
147665 
147666 
147667  // JH (10/24/2005): methods added to support the ast file IO
147668  private:
147669 
147670  /* name AST Memory Allocation Support Functions
147671  \brief Memory allocations support....
147672 
147673  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
147674  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
147675  and support the AST File I/O Mechanism.
147676  */
147677  /* */
147678 
147679  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
147680  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
147681  that I use the same type everywhere, if any changes are made. THe second one declares the type
147682  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
147683  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
147684  a correspinding one in the AST_FILE_IO class!
147685  */
147686  // DQ (9/2/2015): This typedef is no longer used, we can't define the
147687  // comment here (changed to be a C style comment and not be a doxygen comment).
147688  /* \brief Typedef used for low level memory access.
147689  */
147690  // typedef unsigned char* TestType;
147691 
147692  // DQ (9/2/2015): This typedef is no longer used, we can't define the
147693  // comment here (changed to be a C style comment and not be a doxygen comment).
147694  /* \brief Typedef used to hold memory addresses as values.
147695  */
147696  // typedef unsigned long AddressType;
147697 
147698 
147699 
147700  // necessary, to have direct access to the p_freepointer and the private methods !
147702  friend class AST_FILE_IO;
147703 
147705  friend class SgCommonBlockStorageClass;
147706 
147708  friend class AstSpecificDataManagingClass;
147709 
147711  friend class AstSpecificDataManagingClassStorageClass;
147712 
147713  public:
147715  SgCommonBlock( const SgCommonBlockStorageClass& source );
147716 
147717  // private: // JJW hack
147718  /*
147719  name AST Memory Allocation Support Variables
147720  Memory allocations support variables
147721 
147722  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
147723  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
147724  and support the AST File I/O Mechanism.
147725  */
147726  /* */
147727 
147728  public:
147729 
147730  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
147731  // to current node (so that it will work cleanly with build functions to specify patterns).
147732  // virtual SgNode* addRegExpAttribute();
147738  SgCommonBlock* addRegExpAttribute(std::string s, AstRegExAttribute* a);
147739 
147740 // *** COMMON CODE SECTION ENDS HERE ***
147741 
147742 
147743 // End of memberFunctionString
147744 // Start of memberFunctionString
147745 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
147746 
147747  // the generated cast function
147748  // friend ROSE_DLL_API SgCommonBlock* isSgCommonBlock ( SgNode* s );
147749 
147751 
147752 
147753 // End of memberFunctionString
147754 // Start of memberFunctionString
147755 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
147756 
147757  void post_construction_initialization() override;
147758 
147759 
147760 // End of memberFunctionString
147761 
147762 
147763 
147764  public:
147765  SgCommonBlock(Sg_File_Info* startOfConstruct );
147766  SgCommonBlock();
147767 
147768  protected:
147769 // Start of memberFunctionString
147770 SgCommonBlockObjectPtrList p_block_list;
147771 
147772 // End of memberFunctionString
147773 
147774 
147775 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
147776 
147777 
147778  };
147779 #endif
147780 
147781 // postdeclarations for SgCommonBlock
147782 
147783 /* #line 147784 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
147784 
147785 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
147786 
147787 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
147788 
147789 
147790 /* #line 147791 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
147791 
147792 
147793 
147794 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
147795 
147796 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
147797 // This code is automatically generated for each
147798 // terminal and non-terminal within the defined
147799 // grammar. There is a simple way to change the
147800 // code to fix bugs etc. See the ROSE README file
147801 // for directions.
147802 
147803 // tps: (02/22/2010): Adding DLL export requirements
147804 #include "rosedll.h"
147805 
147806 // predeclarations for SgTypedefDeclaration
147807 
147808 /* #line 147809 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
147809 
147810 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
147811 
147812 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
147813 
147814 #if 1
147815 // Class Definition for SgTypedefDeclaration
147817  {
147818  public:
147819 
147820 
147821 /* #line 147822 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
147822 
147823  virtual SgNode* copy ( SgCopyHelp& help) const override;
147824 // Start of memberFunctionString
147825 /* #line 2659 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
147826 
147827  // void post_construction_initialization();
147828 #if 0
147829  SgStatement *get_next(int&) const;
147830 #endif
147831 
147832  protected:
147833  virtual bool replace_child(SgStatement *,SgStatement *,bool extractListFromBasicBlock = false) override;
147834 
147835 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
147836  virtual unsigned int cfgIndexForEnd() const override;
147837  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
147838  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
147839 #endif
147840 
147841  public:
147842  // DQ (10/15/2004): added support for qualified names
147843  virtual SgName get_qualified_name() const;
147844 
147845  // RV (1/31/2006): Added this mangler for typedef declarations.
147846  virtual SgName get_mangled_name (void) const override;
147847 
147849  virtual bool hasExplicitScope() const override;
147850 
147851  // DQ (2/10/2007): Marked as virtual to be consistent
147852  virtual SgSymbol* get_symbol_from_symbol_table() const override;
147853 
147855  SgDeclarationStatement* get_baseTypeDefiningDeclaration() const;
147856 
147857 #if ALT_FIXUP_COPY
147858  // DQ (11/7/2007): These need to be called separately (see documentation)
147859  virtual void fixupCopy_scopes (SgNode* copy, SgCopyHelp & help) const override;
147860  virtual void fixupCopy_symbols (SgNode* copy, SgCopyHelp & help) const override;
147861  virtual void fixupCopy_references (SgNode* copy, SgCopyHelp & help) const override;
147862 #else
147863  // DQ (10/14/2007): Added fixup function to set scopes not set properly by the ROSETTA generated copy!
147864  virtual void fixupCopy(SgNode* copy, SgCopyHelp & help) const;
147865 #endif
147866 
147867  // DQ (5/29/2011): Added to support for new qualified name generation
147869  SgName get_qualified_name_prefix_for_base_type() const;
147870 
147871  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
147872  bool get_requiresGlobalNameQualificationOnType() const;
147873  void set_requiresGlobalNameQualificationOnType(bool requiresGlobalNameQualificationOnType);
147874 
147875  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
147876  int get_name_qualification_length_for_base_type() const;
147877  void set_name_qualification_length_for_base_type(int name_qualification_length_for_base_type);
147878 
147879  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
147880  bool get_type_elaboration_required_for_base_type() const;
147881  void set_type_elaboration_required_for_base_type(bool type_elaboration_required_for_base_type);
147882 
147883  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
147884  bool get_global_qualification_required_for_base_type() const;
147885  void set_global_qualification_required_for_base_type(bool global_qualification_required_for_base_type);
147886 
147887  // DQ (4/10/2019): These are added to support when the the base type is a SgMemberPointer (which van have name qualification in two locations).
147888  // DQ (4/10/2019): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
147889  int get_name_qualification_length() const;
147890  void set_name_qualification_length(int name_qualification_length);
147891 
147892  // DQ (4/10/2019): These are added to support when the the base type is a SgMemberPointer (which van have name qualification in two locations).
147893  // DQ (4/10/2019): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
147894  bool get_type_elaboration_required() const;
147895  void set_type_elaboration_required(bool type_elaboration_required);
147896 
147897  // DQ (4/10/2019): These are added to support when the the base type is a SgMemberPointer (which van have name qualification in two locations).
147898  // DQ (4/10/2019): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
147899  bool get_global_qualification_required() const;
147900  void set_global_qualification_required(bool global_qualification_required);
147901 
147902  private:
147903  // GB (09/25/2007): Added this function as part of the traversal island fix.
147905  SgDeclarationStatement *compute_baseTypeDefiningDeclaration() const;
147906 
147907 
147908 
147909 // End of memberFunctionString
147910 // Start of memberFunctionString
147911 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
147912 
147913 // *** COMMON CODE SECTION BEGINS HERE ***
147914 
147915  public:
147916 
147917  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
147918  // and not required which is required to match the other aspects of the copy mechanism code generation.
147919  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
147920  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
147921  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
147922  // virtual SgNode* copy ( const SgCopyHelp & help) const;
147923 
147925  virtual std::string class_name() const override;
147926 
147928  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
147929 
147931  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
147932  // static const VariantT static_variant = V_SgTypedefDeclaration;
147933  enum { static_variant = V_SgTypedefDeclaration };
147934 
147935  /* the generated cast function */
147937  ROSE_DLL_API friend SgTypedefDeclaration* isSgTypedefDeclaration( SgNode * s );
147938 
147940  ROSE_DLL_API friend const SgTypedefDeclaration* isSgTypedefDeclaration( const SgNode * s );
147941 
147942  // ******************************************
147943  // * Memory Pool / New / Delete
147944  // ******************************************
147945 
147946  public:
147948  static const unsigned pool_size; //
147950  static std::vector<unsigned char *> pools; //
147952  static SgTypedefDeclaration * next_node; //
147953 
147955  static unsigned long initializeStorageClassArray(SgTypedefDeclarationStorageClass *); //
147956 
147958  static void clearMemoryPool(); //
147959  static void deleteMemoryPool(); //
147960 
147962  static void extendMemoryPoolForFileIO(); //
147963 
147965  static SgTypedefDeclaration * getPointerFromGlobalIndex(unsigned long); //
147967  static SgTypedefDeclaration * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
147968 
147970  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
147972  static void resetValidFreepointers(); //
147974  static unsigned long getNumberOfLastValidPointer(); //
147975 
147976 
147977 #if defined(INLINE_FUNCTIONS)
147978 
147979  inline void *operator new (size_t size);
147980 #else
147981 
147982  void *operator new (size_t size);
147983 #endif
147984 
147985  void operator delete (void* pointer, size_t size);
147986 
147987  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
147988  void operator delete (void* pointer)
147989  {
147990  // This is the generated delete operator...
147991  SgTypedefDeclaration::operator delete (pointer,sizeof(SgTypedefDeclaration));
147992  }
147993 
147995  static size_t numberOfNodes();
147996 
147998  static size_t memoryUsage();
147999 
148000  // End of scope which started in IR nodes specific code
148001  /* */
148002 
148003  /* name Internal Functions
148004  \brief Internal functions ... incomplete-documentation
148005 
148006  These functions have been made public as part of the design, but they are suggested for internal use
148007  or by particularly knowledgeable users for specialized tools or applications.
148008 
148009  \internal We could not make these private because they are required by user for special purposes. And
148010  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
148011 
148012  */
148013 
148014  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
148015  // overridden in every class by *generated* implementation
148017  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
148018  // MS: 06/28/02 container of names of variables or container indices
148019  // used used in the traversal to access AST successor nodes
148020  // overridden in every class by *generated* implementation
148023  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
148024 
148025  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
148026  // than all the vector copies. The implementation for these functions is generated for each class.
148028  virtual size_t get_numberOfTraversalSuccessors() override;
148030  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
148032  virtual size_t get_childIndex(SgNode *child) override;
148033 
148034 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
148035  // MS: 08/16/2002 method for generating RTI information
148037  virtual RTIReturnType roseRTI() override;
148038 #endif
148039  /* */
148040 
148041 
148042 
148043  /* name Deprecated Functions
148044  \brief Deprecated functions ... incomplete-documentation
148045 
148046  These functions have been deprecated from use.
148047  */
148048  /* */
148049 
148051  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
148052 
148053  // JJW (10/16/2008): Changed to a single function in Node.code, and put
148054  // getVariant() in #if 0 block to prevent confusing Doxygen
148055 #if 0
148056 
148057  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
148059  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
148060 #endif
148061  /* */
148062 
148063 
148064 
148065 
148066  public:
148067  /* name Traversal Support Functions
148068  \brief Traversal support functions ... incomplete-documentation
148069 
148070  These functions have been made public as part of the design, but they are suggested for internal use
148071  or by particularly knowledgable users for specialized tools or applications.
148072  */
148073  /* */
148074 
148075  // DQ (11/26/2005): Support for visitor pattern mechanims
148076  // (inferior to ROSE traversal mechanism, experimental).
148080 
148081  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
148083  virtual void accept (ROSE_VisitorPattern & visitor) override;
148084 
148085  // DQ (12/26/2005): Support for traversal based on the memory pool
148088  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
148089 
148092  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
148093 
148094  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
148095  // This traversal helps support internal tools that call static member functions.
148096  // note: this function operates on the memory pools.
148099  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
148100  /* */
148101 
148102 
148103  public:
148104  /* name Memory Allocation Functions
148105  \brief Memory allocations functions ... incomplete-documentation
148106 
148107  These functions have been made public as part of the design, but they are suggested for internal use
148108  or by particularly knowledgable users for specialized tools or applications.
148109  */
148110  /* */
148111 
148122  virtual bool isInMemoryPool() override;
148123 
148134  virtual void checkDataMemberPointersIfInMemoryPool() override;
148135 
148136  // DQ (4/30/2006): Modified to be a const function.
148151  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
148152 
148162  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
148163 
148175  virtual long getChildIndex( SgNode* childNode ) const override;
148176 
148177  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
148178  // comment here (changed to be a C style comment and not be a doxygen comment).
148179  /* \brief Constructor for use by AST File I/O Mechanism
148180 
148181  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
148182  which obtained via fast binary file I/O from disk.
148183  */
148184  // SgTypedefDeclaration( SgTypedefDeclarationStorageClass& source );
148185 
148186 
148187 
148188 
148189 
148190  // JH (10/24/2005): methods added to support the ast file IO
148191  private:
148192 
148193  /* name AST Memory Allocation Support Functions
148194  \brief Memory allocations support....
148195 
148196  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
148197  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
148198  and support the AST File I/O Mechanism.
148199  */
148200  /* */
148201 
148202  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
148203  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
148204  that I use the same type everywhere, if any changes are made. THe second one declares the type
148205  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
148206  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
148207  a correspinding one in the AST_FILE_IO class!
148208  */
148209  // DQ (9/2/2015): This typedef is no longer used, we can't define the
148210  // comment here (changed to be a C style comment and not be a doxygen comment).
148211  /* \brief Typedef used for low level memory access.
148212  */
148213  // typedef unsigned char* TestType;
148214 
148215  // DQ (9/2/2015): This typedef is no longer used, we can't define the
148216  // comment here (changed to be a C style comment and not be a doxygen comment).
148217  /* \brief Typedef used to hold memory addresses as values.
148218  */
148219  // typedef unsigned long AddressType;
148220 
148221 
148222 
148223  // necessary, to have direct access to the p_freepointer and the private methods !
148225  friend class AST_FILE_IO;
148226 
148228  friend class SgTypedefDeclarationStorageClass;
148229 
148231  friend class AstSpecificDataManagingClass;
148232 
148234  friend class AstSpecificDataManagingClassStorageClass;
148235 
148236  public:
148238  SgTypedefDeclaration( const SgTypedefDeclarationStorageClass& source );
148239 
148240  // private: // JJW hack
148241  /*
148242  name AST Memory Allocation Support Variables
148243  Memory allocations support variables
148244 
148245  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
148246  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
148247  and support the AST File I/O Mechanism.
148248  */
148249  /* */
148250 
148251  public:
148252 
148253  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
148254  // to current node (so that it will work cleanly with build functions to specify patterns).
148255  // virtual SgNode* addRegExpAttribute();
148262 
148263 // *** COMMON CODE SECTION ENDS HERE ***
148264 
148265 
148266 // End of memberFunctionString
148267 // Start of memberFunctionString
148268 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
148269 
148270  // the generated cast function
148271  // friend ROSE_DLL_API SgTypedefDeclaration* isSgTypedefDeclaration ( SgNode* s );
148272 
148274 
148275 
148276 // End of memberFunctionString
148277 // Start of memberFunctionString
148278 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
148279 
148280  void post_construction_initialization() override;
148281 
148282 
148283 // End of memberFunctionString
148284 
148285  public:
148286  SgName get_name() const /* (getDataAccessFunctionPrototypeString) */;
148287  void set_name(SgName name) /* (getDataAccessFunctionPrototypeString) */;
148288 
148289  public:
148290  SgType* get_base_type() const;
148291  void set_base_type(SgType* base_type);
148292 
148293  public:
148294  SgTypedefType* get_type() const /* (getDataAccessFunctionPrototypeString) */;
148295  void set_type(SgTypedefType* type) /* (getDataAccessFunctionPrototypeString) */;
148296 
148297  public:
148298  SgDeclarationStatement* get_declaration() const;
148299  void set_declaration(SgDeclarationStatement* declaration);
148300 
148301  public:
148302  SgSymbol* get_parent_scope() const;
148303  void set_parent_scope(SgSymbol* parent_scope);
148304 
148305  public:
148306  bool get_typedefBaseTypeContainsDefiningDeclaration() const;
148307  void set_typedefBaseTypeContainsDefiningDeclaration(bool typedefBaseTypeContainsDefiningDeclaration);
148308 
148309  public:
148310  SgScopeStatement* get_scope() const override /* (getDataAccessFunctionPrototypeString) */;
148311  void set_scope(SgScopeStatement* scope) override /* (getDataAccessFunctionPrototypeString) */;
148312 
148313 
148314 
148315 
148316 
148317  public:
148318  bool get_isAutonomousDeclaration() const;
148319  void set_isAutonomousDeclaration(bool isAutonomousDeclaration);
148320 
148321  public:
148322  bool get_isAssociatedWithDeclarationList() const;
148323  void set_isAssociatedWithDeclarationList(bool isAssociatedWithDeclarationList);
148324 
148325  public:
148326  bool get_isFirstDeclarationOfDeclarationList() const;
148327  void set_isFirstDeclarationOfDeclarationList(bool isFirstDeclarationOfDeclarationList);
148328 
148329 
148330 
148331 
148332 
148333  public:
148334  virtual ~SgTypedefDeclaration();
148335 
148336 
148337  public:
148338  SgTypedefDeclaration(Sg_File_Info* startOfConstruct , SgName name = "", SgType* base_type = NULL, SgTypedefType* type = NULL, SgDeclarationStatement* declaration = NULL, SgSymbol* parent_scope = NULL);
148339  SgTypedefDeclaration(SgName name, SgType* base_type, SgTypedefType* type, SgDeclarationStatement* declaration, SgSymbol* parent_scope);
148340 
148341  protected:
148342 // Start of memberFunctionString
148343 SgName p_name;
148344 
148345 // End of memberFunctionString
148346 // Start of memberFunctionString
148347 SgType* p_base_type;
148348 
148349 // End of memberFunctionString
148350 // Start of memberFunctionString
148352 
148353 // End of memberFunctionString
148354 // Start of memberFunctionString
148356 
148357 // End of memberFunctionString
148358 // Start of memberFunctionString
148359 SgSymbol* p_parent_scope;
148360 
148361 // End of memberFunctionString
148362 // Start of memberFunctionString
148363 bool p_typedefBaseTypeContainsDefiningDeclaration;
148364 
148365 // End of memberFunctionString
148366 // Start of memberFunctionString
148368 
148369 // End of memberFunctionString
148370 // Start of memberFunctionString
148371 bool p_requiresGlobalNameQualificationOnType;
148372 
148373 // End of memberFunctionString
148374 // Start of memberFunctionString
148375 int p_name_qualification_length_for_base_type;
148376 
148377 // End of memberFunctionString
148378 // Start of memberFunctionString
148379 bool p_type_elaboration_required_for_base_type;
148380 
148381 // End of memberFunctionString
148382 // Start of memberFunctionString
148383 bool p_global_qualification_required_for_base_type;
148384 
148385 // End of memberFunctionString
148386 // Start of memberFunctionString
148387 bool p_isAutonomousDeclaration;
148388 
148389 // End of memberFunctionString
148390 // Start of memberFunctionString
148391 bool p_isAssociatedWithDeclarationList;
148392 
148393 // End of memberFunctionString
148394 // Start of memberFunctionString
148395 bool p_isFirstDeclarationOfDeclarationList;
148396 
148397 // End of memberFunctionString
148398 // Start of memberFunctionString
148399 int p_name_qualification_length;
148400 
148401 // End of memberFunctionString
148402 // Start of memberFunctionString
148403 bool p_type_elaboration_required;
148404 
148405 // End of memberFunctionString
148406 // Start of memberFunctionString
148407 bool p_global_qualification_required;
148408 
148409 // End of memberFunctionString
148410 
148411 
148412 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
148413 
148414 
148415  };
148416 #endif
148417 
148418 // postdeclarations for SgTypedefDeclaration
148419 
148420 /* #line 148421 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
148421 
148422 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
148423 
148424 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
148425 
148426 
148427 /* #line 148428 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
148428 
148429 
148430 
148431 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
148432 
148433 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
148434 // This code is automatically generated for each
148435 // terminal and non-terminal within the defined
148436 // grammar. There is a simple way to change the
148437 // code to fix bugs etc. See the ROSE README file
148438 // for directions.
148439 
148440 // tps: (02/22/2010): Adding DLL export requirements
148441 #include "rosedll.h"
148442 
148443 // predeclarations for SgTemplateTypedefDeclaration
148444 
148445 /* #line 148446 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
148446 
148447 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
148448 
148449 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
148450 
148451 #if 1
148452 // Class Definition for SgTemplateTypedefDeclaration
148454  {
148455  public:
148456 
148457 
148458 /* #line 148459 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
148459 
148460  virtual SgNode* copy ( SgCopyHelp& help) const override;
148461 // Start of memberFunctionString
148462 /* #line 2992 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
148463 
148464 
148466 
148467  // DQ (12/28/2011): We need a constructor similar to the base class.
148468  // SgTemplateTypedefDeclaration ( const SgName& var_name, SgType *type, SgInitializer *initializer );
148469 // BH (11/13/2015) on windows this caused incosistent defines of this
148470 // so that it was not defined in the .h but used in the cxx file
148471  private:
148472  // DQ (12/29/2011): This is added to support backward compatability.
148473  SgDeclarationStatement *compute_baseTypeDefiningDeclaration() const;
148474 
148475  // DQ (2/25/2018): This appears to be built as a function prototype by default, so I think we don't need this here (redundant).
148476  // DQ (2/25/2018): Added a specific version of the post_construction_initialization() function
148477  // to allow it to be run after the SgTypedefDeclaration::post_construction_initialization() function.
148478  // void post_construction_initialization();
148479 
148480 
148481 
148482 // End of memberFunctionString
148483 // Start of memberFunctionString
148484 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
148485 
148486 // *** COMMON CODE SECTION BEGINS HERE ***
148487 
148488  public:
148489 
148490  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
148491  // and not required which is required to match the other aspects of the copy mechanism code generation.
148492  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
148493  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
148494  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
148495  // virtual SgNode* copy ( const SgCopyHelp & help) const;
148496 
148498  virtual std::string class_name() const override;
148499 
148501  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
148502 
148504  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
148505  // static const VariantT static_variant = V_SgTemplateTypedefDeclaration;
148506  enum { static_variant = V_SgTemplateTypedefDeclaration };
148507 
148508  /* the generated cast function */
148510  ROSE_DLL_API friend SgTemplateTypedefDeclaration* isSgTemplateTypedefDeclaration( SgNode * s );
148511 
148513  ROSE_DLL_API friend const SgTemplateTypedefDeclaration* isSgTemplateTypedefDeclaration( const SgNode * s );
148514 
148515  // ******************************************
148516  // * Memory Pool / New / Delete
148517  // ******************************************
148518 
148519  public:
148521  static const unsigned pool_size; //
148523  static std::vector<unsigned char *> pools; //
148525  static SgTemplateTypedefDeclaration * next_node; //
148526 
148528  static unsigned long initializeStorageClassArray(SgTemplateTypedefDeclarationStorageClass *); //
148529 
148531  static void clearMemoryPool(); //
148532  static void deleteMemoryPool(); //
148533 
148535  static void extendMemoryPoolForFileIO(); //
148536 
148538  static SgTemplateTypedefDeclaration * getPointerFromGlobalIndex(unsigned long); //
148540  static SgTemplateTypedefDeclaration * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
148541 
148543  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
148545  static void resetValidFreepointers(); //
148547  static unsigned long getNumberOfLastValidPointer(); //
148548 
148549 
148550 #if defined(INLINE_FUNCTIONS)
148551 
148552  inline void *operator new (size_t size);
148553 #else
148554 
148555  void *operator new (size_t size);
148556 #endif
148557 
148558  void operator delete (void* pointer, size_t size);
148559 
148560  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
148561  void operator delete (void* pointer)
148562  {
148563  // This is the generated delete operator...
148564  SgTemplateTypedefDeclaration::operator delete (pointer,sizeof(SgTemplateTypedefDeclaration));
148565  }
148566 
148568  static size_t numberOfNodes();
148569 
148571  static size_t memoryUsage();
148572 
148573  // End of scope which started in IR nodes specific code
148574  /* */
148575 
148576  /* name Internal Functions
148577  \brief Internal functions ... incomplete-documentation
148578 
148579  These functions have been made public as part of the design, but they are suggested for internal use
148580  or by particularly knowledgeable users for specialized tools or applications.
148581 
148582  \internal We could not make these private because they are required by user for special purposes. And
148583  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
148584 
148585  */
148586 
148587  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
148588  // overridden in every class by *generated* implementation
148590  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
148591  // MS: 06/28/02 container of names of variables or container indices
148592  // used used in the traversal to access AST successor nodes
148593  // overridden in every class by *generated* implementation
148596  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
148597 
148598  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
148599  // than all the vector copies. The implementation for these functions is generated for each class.
148601  virtual size_t get_numberOfTraversalSuccessors() override;
148603  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
148605  virtual size_t get_childIndex(SgNode *child) override;
148606 
148607 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
148608  // MS: 08/16/2002 method for generating RTI information
148610  virtual RTIReturnType roseRTI() override;
148611 #endif
148612  /* */
148613 
148614 
148615 
148616  /* name Deprecated Functions
148617  \brief Deprecated functions ... incomplete-documentation
148618 
148619  These functions have been deprecated from use.
148620  */
148621  /* */
148622 
148624  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
148625 
148626  // JJW (10/16/2008): Changed to a single function in Node.code, and put
148627  // getVariant() in #if 0 block to prevent confusing Doxygen
148628 #if 0
148629 
148630  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
148632  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
148633 #endif
148634  /* */
148635 
148636 
148637 
148638 
148639  public:
148640  /* name Traversal Support Functions
148641  \brief Traversal support functions ... incomplete-documentation
148642 
148643  These functions have been made public as part of the design, but they are suggested for internal use
148644  or by particularly knowledgable users for specialized tools or applications.
148645  */
148646  /* */
148647 
148648  // DQ (11/26/2005): Support for visitor pattern mechanims
148649  // (inferior to ROSE traversal mechanism, experimental).
148653 
148654  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
148656  virtual void accept (ROSE_VisitorPattern & visitor) override;
148657 
148658  // DQ (12/26/2005): Support for traversal based on the memory pool
148661  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
148662 
148665  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
148666 
148667  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
148668  // This traversal helps support internal tools that call static member functions.
148669  // note: this function operates on the memory pools.
148672  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
148673  /* */
148674 
148675 
148676  public:
148677  /* name Memory Allocation Functions
148678  \brief Memory allocations functions ... incomplete-documentation
148679 
148680  These functions have been made public as part of the design, but they are suggested for internal use
148681  or by particularly knowledgable users for specialized tools or applications.
148682  */
148683  /* */
148684 
148695  virtual bool isInMemoryPool() override;
148696 
148707  virtual void checkDataMemberPointersIfInMemoryPool() override;
148708 
148709  // DQ (4/30/2006): Modified to be a const function.
148724  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
148725 
148735  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
148736 
148748  virtual long getChildIndex( SgNode* childNode ) const override;
148749 
148750  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
148751  // comment here (changed to be a C style comment and not be a doxygen comment).
148752  /* \brief Constructor for use by AST File I/O Mechanism
148753 
148754  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
148755  which obtained via fast binary file I/O from disk.
148756  */
148757  // SgTemplateTypedefDeclaration( SgTemplateTypedefDeclarationStorageClass& source );
148758 
148759 
148760 
148761 
148762 
148763  // JH (10/24/2005): methods added to support the ast file IO
148764  private:
148765 
148766  /* name AST Memory Allocation Support Functions
148767  \brief Memory allocations support....
148768 
148769  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
148770  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
148771  and support the AST File I/O Mechanism.
148772  */
148773  /* */
148774 
148775  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
148776  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
148777  that I use the same type everywhere, if any changes are made. THe second one declares the type
148778  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
148779  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
148780  a correspinding one in the AST_FILE_IO class!
148781  */
148782  // DQ (9/2/2015): This typedef is no longer used, we can't define the
148783  // comment here (changed to be a C style comment and not be a doxygen comment).
148784  /* \brief Typedef used for low level memory access.
148785  */
148786  // typedef unsigned char* TestType;
148787 
148788  // DQ (9/2/2015): This typedef is no longer used, we can't define the
148789  // comment here (changed to be a C style comment and not be a doxygen comment).
148790  /* \brief Typedef used to hold memory addresses as values.
148791  */
148792  // typedef unsigned long AddressType;
148793 
148794 
148795 
148796  // necessary, to have direct access to the p_freepointer and the private methods !
148798  friend class AST_FILE_IO;
148799 
148801  friend class SgTemplateTypedefDeclarationStorageClass;
148802 
148804  friend class AstSpecificDataManagingClass;
148805 
148807  friend class AstSpecificDataManagingClassStorageClass;
148808 
148809  public:
148811  SgTemplateTypedefDeclaration( const SgTemplateTypedefDeclarationStorageClass& source );
148812 
148813  // private: // JJW hack
148814  /*
148815  name AST Memory Allocation Support Variables
148816  Memory allocations support variables
148817 
148818  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
148819  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
148820  and support the AST File I/O Mechanism.
148821  */
148822  /* */
148823 
148824  public:
148825 
148826  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
148827  // to current node (so that it will work cleanly with build functions to specify patterns).
148828  // virtual SgNode* addRegExpAttribute();
148835 
148836 // *** COMMON CODE SECTION ENDS HERE ***
148837 
148838 
148839 // End of memberFunctionString
148840 // Start of memberFunctionString
148841 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
148842 
148843  // the generated cast function
148844  // friend ROSE_DLL_API SgTemplateTypedefDeclaration* isSgTemplateTypedefDeclaration ( SgNode* s );
148845 
148847 
148848 
148849 // End of memberFunctionString
148850 // Start of memberFunctionString
148851 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
148852 
148853  void post_construction_initialization() override;
148854 
148855 
148856 // End of memberFunctionString
148857 
148858  public:
148859  const SgTemplateParameterPtrList& get_templateParameters() const;
148860  SgTemplateParameterPtrList& get_templateParameters();
148861 
148862  public:
148863  const SgTemplateArgumentPtrList& get_templateSpecializationArguments() const;
148864  SgTemplateArgumentPtrList& get_templateSpecializationArguments();
148865 
148866  public:
148867  SgName get_string() const;
148868  void set_string(SgName string);
148869 
148870  public:
148871  SgDeclarationScope* get_nonreal_decl_scope() const;
148872  void set_nonreal_decl_scope(SgDeclarationScope* nonreal_decl_scope);
148873 
148874 
148875  public:
148876  virtual ~SgTemplateTypedefDeclaration();
148877 
148878 
148879  public:
148880  SgTemplateTypedefDeclaration(Sg_File_Info* startOfConstruct , SgName name = "", SgType* base_type = NULL, SgTypedefType* type = NULL, SgDeclarationStatement* declaration = NULL, SgSymbol* parent_scope = NULL);
148881  SgTemplateTypedefDeclaration(SgName name, SgType* base_type, SgTypedefType* type, SgDeclarationStatement* declaration, SgSymbol* parent_scope);
148882 
148883  protected:
148884 // Start of memberFunctionString
148885 SgTemplateParameterPtrList p_templateParameters;
148886 
148887 // End of memberFunctionString
148888 // Start of memberFunctionString
148889 SgTemplateArgumentPtrList p_templateSpecializationArguments;
148890 
148891 // End of memberFunctionString
148892 // Start of memberFunctionString
148893 SgName p_string;
148894 
148895 // End of memberFunctionString
148896 // Start of memberFunctionString
148897 SgDeclarationScope* p_nonreal_decl_scope;
148898 
148899 // End of memberFunctionString
148900 
148901 
148902 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
148903 
148904 
148905  };
148906 #endif
148907 
148908 // postdeclarations for SgTemplateTypedefDeclaration
148909 
148910 /* #line 148911 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
148911 
148912 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
148913 
148914 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
148915 
148916 
148917 /* #line 148918 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
148918 
148919 
148920 
148921 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
148922 
148923 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
148924 // This code is automatically generated for each
148925 // terminal and non-terminal within the defined
148926 // grammar. There is a simple way to change the
148927 // code to fix bugs etc. See the ROSE README file
148928 // for directions.
148929 
148930 // tps: (02/22/2010): Adding DLL export requirements
148931 #include "rosedll.h"
148932 
148933 // predeclarations for SgTemplateInstantiationTypedefDeclaration
148934 
148935 /* #line 148936 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
148936 
148937 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
148938 
148939 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
148940 
148941 #if 1
148942 // Class Definition for SgTemplateInstantiationTypedefDeclaration
148944  {
148945  public:
148946 
148947 
148948 /* #line 148949 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
148949 
148950  virtual SgNode* copy ( SgCopyHelp& help) const override;
148951 // Start of memberFunctionString
148952 /* #line 3012 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
148953 
148954 
148956 
148957  // DQ (2/26/2018): get_name assembles the full template name with arguments (e.g. "ABC<int>")
148958  void resetTemplateName();
148959 
148960  // DQ (2/28/2018): Added function
148961  virtual SgSymbol* get_symbol_from_symbol_table() const override;
148962 
148963 
148964 
148965 // End of memberFunctionString
148966 // Start of memberFunctionString
148967 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
148968 
148969 // *** COMMON CODE SECTION BEGINS HERE ***
148970 
148971  public:
148972 
148973  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
148974  // and not required which is required to match the other aspects of the copy mechanism code generation.
148975  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
148976  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
148977  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
148978  // virtual SgNode* copy ( const SgCopyHelp & help) const;
148979 
148981  virtual std::string class_name() const override;
148982 
148984  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
148985 
148987  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
148988  // static const VariantT static_variant = V_SgTemplateInstantiationTypedefDeclaration;
148989  enum { static_variant = V_SgTemplateInstantiationTypedefDeclaration };
148990 
148991  /* the generated cast function */
148993  ROSE_DLL_API friend SgTemplateInstantiationTypedefDeclaration* isSgTemplateInstantiationTypedefDeclaration( SgNode * s );
148994 
148996  ROSE_DLL_API friend const SgTemplateInstantiationTypedefDeclaration* isSgTemplateInstantiationTypedefDeclaration( const SgNode * s );
148997 
148998  // ******************************************
148999  // * Memory Pool / New / Delete
149000  // ******************************************
149001 
149002  public:
149004  static const unsigned pool_size; //
149006  static std::vector<unsigned char *> pools; //
149008  static SgTemplateInstantiationTypedefDeclaration * next_node; //
149009 
149011  static unsigned long initializeStorageClassArray(SgTemplateInstantiationTypedefDeclarationStorageClass *); //
149012 
149014  static void clearMemoryPool(); //
149015  static void deleteMemoryPool(); //
149016 
149018  static void extendMemoryPoolForFileIO(); //
149019 
149021  static SgTemplateInstantiationTypedefDeclaration * getPointerFromGlobalIndex(unsigned long); //
149023  static SgTemplateInstantiationTypedefDeclaration * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
149024 
149026  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
149028  static void resetValidFreepointers(); //
149030  static unsigned long getNumberOfLastValidPointer(); //
149031 
149032 
149033 #if defined(INLINE_FUNCTIONS)
149034 
149035  inline void *operator new (size_t size);
149036 #else
149037 
149038  void *operator new (size_t size);
149039 #endif
149040 
149041  void operator delete (void* pointer, size_t size);
149042 
149043  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
149044  void operator delete (void* pointer)
149045  {
149046  // This is the generated delete operator...
149047  SgTemplateInstantiationTypedefDeclaration::operator delete (pointer,sizeof(SgTemplateInstantiationTypedefDeclaration));
149048  }
149049 
149051  static size_t numberOfNodes();
149052 
149054  static size_t memoryUsage();
149055 
149056  // End of scope which started in IR nodes specific code
149057  /* */
149058 
149059  /* name Internal Functions
149060  \brief Internal functions ... incomplete-documentation
149061 
149062  These functions have been made public as part of the design, but they are suggested for internal use
149063  or by particularly knowledgeable users for specialized tools or applications.
149064 
149065  \internal We could not make these private because they are required by user for special purposes. And
149066  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
149067 
149068  */
149069 
149070  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
149071  // overridden in every class by *generated* implementation
149073  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
149074  // MS: 06/28/02 container of names of variables or container indices
149075  // used used in the traversal to access AST successor nodes
149076  // overridden in every class by *generated* implementation
149079  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
149080 
149081  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
149082  // than all the vector copies. The implementation for these functions is generated for each class.
149084  virtual size_t get_numberOfTraversalSuccessors() override;
149086  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
149088  virtual size_t get_childIndex(SgNode *child) override;
149089 
149090 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
149091  // MS: 08/16/2002 method for generating RTI information
149093  virtual RTIReturnType roseRTI() override;
149094 #endif
149095  /* */
149096 
149097 
149098 
149099  /* name Deprecated Functions
149100  \brief Deprecated functions ... incomplete-documentation
149101 
149102  These functions have been deprecated from use.
149103  */
149104  /* */
149105 
149107  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
149108 
149109  // JJW (10/16/2008): Changed to a single function in Node.code, and put
149110  // getVariant() in #if 0 block to prevent confusing Doxygen
149111 #if 0
149112 
149113  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
149115  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
149116 #endif
149117  /* */
149118 
149119 
149120 
149121 
149122  public:
149123  /* name Traversal Support Functions
149124  \brief Traversal support functions ... incomplete-documentation
149125 
149126  These functions have been made public as part of the design, but they are suggested for internal use
149127  or by particularly knowledgable users for specialized tools or applications.
149128  */
149129  /* */
149130 
149131  // DQ (11/26/2005): Support for visitor pattern mechanims
149132  // (inferior to ROSE traversal mechanism, experimental).
149136 
149137  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
149139  virtual void accept (ROSE_VisitorPattern & visitor) override;
149140 
149141  // DQ (12/26/2005): Support for traversal based on the memory pool
149144  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
149145 
149148  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
149149 
149150  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
149151  // This traversal helps support internal tools that call static member functions.
149152  // note: this function operates on the memory pools.
149155  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
149156  /* */
149157 
149158 
149159  public:
149160  /* name Memory Allocation Functions
149161  \brief Memory allocations functions ... incomplete-documentation
149162 
149163  These functions have been made public as part of the design, but they are suggested for internal use
149164  or by particularly knowledgable users for specialized tools or applications.
149165  */
149166  /* */
149167 
149178  virtual bool isInMemoryPool() override;
149179 
149190  virtual void checkDataMemberPointersIfInMemoryPool() override;
149191 
149192  // DQ (4/30/2006): Modified to be a const function.
149207  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
149208 
149218  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
149219 
149231  virtual long getChildIndex( SgNode* childNode ) const override;
149232 
149233  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
149234  // comment here (changed to be a C style comment and not be a doxygen comment).
149235  /* \brief Constructor for use by AST File I/O Mechanism
149236 
149237  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
149238  which obtained via fast binary file I/O from disk.
149239  */
149240  // SgTemplateInstantiationTypedefDeclaration( SgTemplateInstantiationTypedefDeclarationStorageClass& source );
149241 
149242 
149243 
149244 
149245 
149246  // JH (10/24/2005): methods added to support the ast file IO
149247  private:
149248 
149249  /* name AST Memory Allocation Support Functions
149250  \brief Memory allocations support....
149251 
149252  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
149253  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
149254  and support the AST File I/O Mechanism.
149255  */
149256  /* */
149257 
149258  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
149259  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
149260  that I use the same type everywhere, if any changes are made. THe second one declares the type
149261  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
149262  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
149263  a correspinding one in the AST_FILE_IO class!
149264  */
149265  // DQ (9/2/2015): This typedef is no longer used, we can't define the
149266  // comment here (changed to be a C style comment and not be a doxygen comment).
149267  /* \brief Typedef used for low level memory access.
149268  */
149269  // typedef unsigned char* TestType;
149270 
149271  // DQ (9/2/2015): This typedef is no longer used, we can't define the
149272  // comment here (changed to be a C style comment and not be a doxygen comment).
149273  /* \brief Typedef used to hold memory addresses as values.
149274  */
149275  // typedef unsigned long AddressType;
149276 
149277 
149278 
149279  // necessary, to have direct access to the p_freepointer and the private methods !
149281  friend class AST_FILE_IO;
149282 
149284  friend class SgTemplateInstantiationTypedefDeclarationStorageClass;
149285 
149287  friend class AstSpecificDataManagingClass;
149288 
149290  friend class AstSpecificDataManagingClassStorageClass;
149291 
149292  public:
149294  SgTemplateInstantiationTypedefDeclaration( const SgTemplateInstantiationTypedefDeclarationStorageClass& source );
149295 
149296  // private: // JJW hack
149297  /*
149298  name AST Memory Allocation Support Variables
149299  Memory allocations support variables
149300 
149301  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
149302  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
149303  and support the AST File I/O Mechanism.
149304  */
149305  /* */
149306 
149307  public:
149308 
149309  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
149310  // to current node (so that it will work cleanly with build functions to specify patterns).
149311  // virtual SgNode* addRegExpAttribute();
149318 
149319 // *** COMMON CODE SECTION ENDS HERE ***
149320 
149321 
149322 // End of memberFunctionString
149323 // Start of memberFunctionString
149324 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
149325 
149326  // the generated cast function
149327  // friend ROSE_DLL_API SgTemplateInstantiationTypedefDeclaration* isSgTemplateInstantiationTypedefDeclaration ( SgNode* s );
149328 
149330 
149331 
149332 // End of memberFunctionString
149333 // Start of memberFunctionString
149334 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
149335 
149336  void post_construction_initialization() override;
149337 
149338 
149339 // End of memberFunctionString
149340 
149341  public:
149342  SgName get_templateName() const;
149343  void set_templateName(SgName templateName);
149344 
149345  public:
149346  SgName get_templateHeader() const;
149347  void set_templateHeader(SgName templateHeader);
149348 
149349  public:
149350  SgTemplateTypedefDeclaration* get_templateDeclaration() const;
149351  void set_templateDeclaration(SgTemplateTypedefDeclaration* templateDeclaration);
149352 
149353  public:
149354  const SgTemplateArgumentPtrList& get_templateArguments() const;
149355  SgTemplateArgumentPtrList& get_templateArguments();
149356 
149357  public:
149358  bool get_nameResetFromMangledForm() const;
149359  void set_nameResetFromMangledForm(bool nameResetFromMangledForm);
149360 
149361 
149362  public:
149364 
149365 
149366  public:
149367  SgTemplateInstantiationTypedefDeclaration(Sg_File_Info* startOfConstruct , SgName name = "", SgType* base_type = NULL, SgTypedefType* type = NULL, SgDeclarationStatement* declaration = NULL, SgSymbol* parent_scope = NULL, SgTemplateTypedefDeclaration* templateDeclaration = NULL, SgTemplateArgumentPtrList templateArguments = SgTemplateArgumentPtrList());
149368  SgTemplateInstantiationTypedefDeclaration(SgName name, SgType* base_type, SgTypedefType* type, SgDeclarationStatement* declaration, SgSymbol* parent_scope, SgTemplateTypedefDeclaration* templateDeclaration, SgTemplateArgumentPtrList templateArguments);
149369 
149370  protected:
149371 // Start of memberFunctionString
149372 SgName p_templateName;
149373 
149374 // End of memberFunctionString
149375 // Start of memberFunctionString
149376 SgName p_templateHeader;
149377 
149378 // End of memberFunctionString
149379 // Start of memberFunctionString
149380 SgTemplateTypedefDeclaration* p_templateDeclaration;
149381 
149382 // End of memberFunctionString
149383 // Start of memberFunctionString
149384 SgTemplateArgumentPtrList p_templateArguments;
149385 
149386 // End of memberFunctionString
149387 // Start of memberFunctionString
149388 bool p_nameResetFromMangledForm;
149389 
149390 // End of memberFunctionString
149391 
149392 
149393 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
149394 
149395 
149396  };
149397 #endif
149398 
149399 // postdeclarations for SgTemplateInstantiationTypedefDeclaration
149400 
149401 /* #line 149402 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
149402 
149403 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
149404 
149405 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
149406 
149407 
149408 /* #line 149409 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
149409 
149410 
149411 
149412 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
149413 
149414 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
149415 // This code is automatically generated for each
149416 // terminal and non-terminal within the defined
149417 // grammar. There is a simple way to change the
149418 // code to fix bugs etc. See the ROSE README file
149419 // for directions.
149420 
149421 // tps: (02/22/2010): Adding DLL export requirements
149422 #include "rosedll.h"
149423 
149424 // predeclarations for SgStatementFunctionStatement
149425 
149426 /* #line 149427 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
149427 
149428 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
149429 
149430 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
149431 
149432 #if 1
149433 // Class Definition for SgStatementFunctionStatement
149435  {
149436  public:
149437 
149438 
149439 /* #line 149440 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
149440 
149441  virtual SgNode* copy ( SgCopyHelp& help) const override;
149442 // Start of memberFunctionString
149443 /* #line 3644 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
149444 
149445  SgName get_mangled_name() const override;
149446 
149447 
149448 // End of memberFunctionString
149449 // Start of memberFunctionString
149450 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
149451 
149452 // *** COMMON CODE SECTION BEGINS HERE ***
149453 
149454  public:
149455 
149456  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
149457  // and not required which is required to match the other aspects of the copy mechanism code generation.
149458  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
149459  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
149460  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
149461  // virtual SgNode* copy ( const SgCopyHelp & help) const;
149462 
149464  virtual std::string class_name() const override;
149465 
149467  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
149468 
149470  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
149471  // static const VariantT static_variant = V_SgStatementFunctionStatement;
149472  enum { static_variant = V_SgStatementFunctionStatement };
149473 
149474  /* the generated cast function */
149476  ROSE_DLL_API friend SgStatementFunctionStatement* isSgStatementFunctionStatement( SgNode * s );
149477 
149479  ROSE_DLL_API friend const SgStatementFunctionStatement* isSgStatementFunctionStatement( const SgNode * s );
149480 
149481  // ******************************************
149482  // * Memory Pool / New / Delete
149483  // ******************************************
149484 
149485  public:
149487  static const unsigned pool_size; //
149489  static std::vector<unsigned char *> pools; //
149491  static SgStatementFunctionStatement * next_node; //
149492 
149494  static unsigned long initializeStorageClassArray(SgStatementFunctionStatementStorageClass *); //
149495 
149497  static void clearMemoryPool(); //
149498  static void deleteMemoryPool(); //
149499 
149501  static void extendMemoryPoolForFileIO(); //
149502 
149504  static SgStatementFunctionStatement * getPointerFromGlobalIndex(unsigned long); //
149506  static SgStatementFunctionStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
149507 
149509  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
149511  static void resetValidFreepointers(); //
149513  static unsigned long getNumberOfLastValidPointer(); //
149514 
149515 
149516 #if defined(INLINE_FUNCTIONS)
149517 
149518  inline void *operator new (size_t size);
149519 #else
149520 
149521  void *operator new (size_t size);
149522 #endif
149523 
149524  void operator delete (void* pointer, size_t size);
149525 
149526  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
149527  void operator delete (void* pointer)
149528  {
149529  // This is the generated delete operator...
149530  SgStatementFunctionStatement::operator delete (pointer,sizeof(SgStatementFunctionStatement));
149531  }
149532 
149534  static size_t numberOfNodes();
149535 
149537  static size_t memoryUsage();
149538 
149539  // End of scope which started in IR nodes specific code
149540  /* */
149541 
149542  /* name Internal Functions
149543  \brief Internal functions ... incomplete-documentation
149544 
149545  These functions have been made public as part of the design, but they are suggested for internal use
149546  or by particularly knowledgeable users for specialized tools or applications.
149547 
149548  \internal We could not make these private because they are required by user for special purposes. And
149549  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
149550 
149551  */
149552 
149553  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
149554  // overridden in every class by *generated* implementation
149556  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
149557  // MS: 06/28/02 container of names of variables or container indices
149558  // used used in the traversal to access AST successor nodes
149559  // overridden in every class by *generated* implementation
149562  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
149563 
149564  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
149565  // than all the vector copies. The implementation for these functions is generated for each class.
149567  virtual size_t get_numberOfTraversalSuccessors() override;
149569  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
149571  virtual size_t get_childIndex(SgNode *child) override;
149572 
149573 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
149574  // MS: 08/16/2002 method for generating RTI information
149576  virtual RTIReturnType roseRTI() override;
149577 #endif
149578  /* */
149579 
149580 
149581 
149582  /* name Deprecated Functions
149583  \brief Deprecated functions ... incomplete-documentation
149584 
149585  These functions have been deprecated from use.
149586  */
149587  /* */
149588 
149590  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
149591 
149592  // JJW (10/16/2008): Changed to a single function in Node.code, and put
149593  // getVariant() in #if 0 block to prevent confusing Doxygen
149594 #if 0
149595 
149596  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
149598  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
149599 #endif
149600  /* */
149601 
149602 
149603 
149604 
149605  public:
149606  /* name Traversal Support Functions
149607  \brief Traversal support functions ... incomplete-documentation
149608 
149609  These functions have been made public as part of the design, but they are suggested for internal use
149610  or by particularly knowledgable users for specialized tools or applications.
149611  */
149612  /* */
149613 
149614  // DQ (11/26/2005): Support for visitor pattern mechanims
149615  // (inferior to ROSE traversal mechanism, experimental).
149619 
149620  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
149622  virtual void accept (ROSE_VisitorPattern & visitor) override;
149623 
149624  // DQ (12/26/2005): Support for traversal based on the memory pool
149627  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
149628 
149631  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
149632 
149633  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
149634  // This traversal helps support internal tools that call static member functions.
149635  // note: this function operates on the memory pools.
149638  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
149639  /* */
149640 
149641 
149642  public:
149643  /* name Memory Allocation Functions
149644  \brief Memory allocations functions ... incomplete-documentation
149645 
149646  These functions have been made public as part of the design, but they are suggested for internal use
149647  or by particularly knowledgable users for specialized tools or applications.
149648  */
149649  /* */
149650 
149661  virtual bool isInMemoryPool() override;
149662 
149673  virtual void checkDataMemberPointersIfInMemoryPool() override;
149674 
149675  // DQ (4/30/2006): Modified to be a const function.
149690  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
149691 
149701  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
149702 
149714  virtual long getChildIndex( SgNode* childNode ) const override;
149715 
149716  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
149717  // comment here (changed to be a C style comment and not be a doxygen comment).
149718  /* \brief Constructor for use by AST File I/O Mechanism
149719 
149720  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
149721  which obtained via fast binary file I/O from disk.
149722  */
149723  // SgStatementFunctionStatement( SgStatementFunctionStatementStorageClass& source );
149724 
149725 
149726 
149727 
149728 
149729  // JH (10/24/2005): methods added to support the ast file IO
149730  private:
149731 
149732  /* name AST Memory Allocation Support Functions
149733  \brief Memory allocations support....
149734 
149735  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
149736  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
149737  and support the AST File I/O Mechanism.
149738  */
149739  /* */
149740 
149741  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
149742  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
149743  that I use the same type everywhere, if any changes are made. THe second one declares the type
149744  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
149745  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
149746  a correspinding one in the AST_FILE_IO class!
149747  */
149748  // DQ (9/2/2015): This typedef is no longer used, we can't define the
149749  // comment here (changed to be a C style comment and not be a doxygen comment).
149750  /* \brief Typedef used for low level memory access.
149751  */
149752  // typedef unsigned char* TestType;
149753 
149754  // DQ (9/2/2015): This typedef is no longer used, we can't define the
149755  // comment here (changed to be a C style comment and not be a doxygen comment).
149756  /* \brief Typedef used to hold memory addresses as values.
149757  */
149758  // typedef unsigned long AddressType;
149759 
149760 
149761 
149762  // necessary, to have direct access to the p_freepointer and the private methods !
149764  friend class AST_FILE_IO;
149765 
149767  friend class SgStatementFunctionStatementStorageClass;
149768 
149770  friend class AstSpecificDataManagingClass;
149771 
149773  friend class AstSpecificDataManagingClassStorageClass;
149774 
149775  public:
149777  SgStatementFunctionStatement( const SgStatementFunctionStatementStorageClass& source );
149778 
149779  // private: // JJW hack
149780  /*
149781  name AST Memory Allocation Support Variables
149782  Memory allocations support variables
149783 
149784  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
149785  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
149786  and support the AST File I/O Mechanism.
149787  */
149788  /* */
149789 
149790  public:
149791 
149792  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
149793  // to current node (so that it will work cleanly with build functions to specify patterns).
149794  // virtual SgNode* addRegExpAttribute();
149801 
149802 // *** COMMON CODE SECTION ENDS HERE ***
149803 
149804 
149805 // End of memberFunctionString
149806 // Start of memberFunctionString
149807 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
149808 
149809  // the generated cast function
149810  // friend ROSE_DLL_API SgStatementFunctionStatement* isSgStatementFunctionStatement ( SgNode* s );
149811 
149813 
149814 
149815 // End of memberFunctionString
149816 // Start of memberFunctionString
149817 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
149818 
149819  void post_construction_initialization() override;
149820 
149821 
149822 // End of memberFunctionString
149823 
149824  public:
149825  SgFunctionDeclaration* get_function() const;
149826  void set_function(SgFunctionDeclaration* function);
149827 
149828  public:
149829  SgExpression* get_expression() const;
149830  void set_expression(SgExpression* expression);
149831 
149832 
149833  public:
149834  virtual ~SgStatementFunctionStatement();
149835 
149836 
149837  public:
149838  SgStatementFunctionStatement(Sg_File_Info* startOfConstruct , SgFunctionDeclaration* function = NULL, SgExpression* expression = NULL);
149840 
149841  protected:
149842 // Start of memberFunctionString
149843 SgFunctionDeclaration* p_function;
149844 
149845 // End of memberFunctionString
149846 // Start of memberFunctionString
149847 SgExpression* p_expression;
149848 
149849 // End of memberFunctionString
149850 
149851 
149852 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
149853 
149854 
149855  };
149856 #endif
149857 
149858 // postdeclarations for SgStatementFunctionStatement
149859 
149860 /* #line 149861 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
149861 
149862 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
149863 
149864 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
149865 
149866 
149867 /* #line 149868 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
149868 
149869 
149870 
149871 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
149872 
149873 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
149874 // This code is automatically generated for each
149875 // terminal and non-terminal within the defined
149876 // grammar. There is a simple way to change the
149877 // code to fix bugs etc. See the ROSE README file
149878 // for directions.
149879 
149880 // tps: (02/22/2010): Adding DLL export requirements
149881 #include "rosedll.h"
149882 
149883 // predeclarations for SgCtorInitializerList
149884 
149885 /* #line 149886 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
149886 
149887 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
149888 
149889 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
149890 
149891 #if 1
149892 // Class Definition for SgCtorInitializerList
149894  {
149895  public:
149896 
149897 
149898 /* #line 149899 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
149899 
149900  virtual SgNode* copy ( SgCopyHelp& help) const override;
149901 // Start of memberFunctionString
149902 /* #line 1661 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
149903 
149904 /* #line 939 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
149905 
149906  public:
149907  virtual void append_ctor_initializer ( SgInitializedName* element );
149908  virtual void prepend_ctor_initializer ( SgInitializedName* element );
149909 
149910  public:
149911  // New functions added
149912  // void append_ctor_initializer ( const SgInitializedNamePtrList::iterator & list, SgInitializedName* element );
149913  // void prepend_ctor_initializer ( const SgInitializedNamePtrList::iterator & list, SgInitializedName* element );
149914 
149915  // void insert_ctor_initializer ( const SgInitializedNamePtrList::iterator & list, SgInitializedName* element );
149916 
149917 
149918  public:
149919 
149920 
149921 
149922 
149923  // DQ (2/18/2006): Added general name mangling for all declarations (and some other IR nodes).
149924  virtual SgName get_mangled_name(void) const override;
149925 
149926 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
149927  // MD (7/09/2010): Added virtual CFG methods
149928  virtual unsigned int cfgIndexForEnd() const override;
149929  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
149930  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
149931 #endif
149932 
149933 
149934 
149935 // End of memberFunctionString
149936 // Start of memberFunctionString
149937 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
149938 
149939 // *** COMMON CODE SECTION BEGINS HERE ***
149940 
149941  public:
149942 
149943  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
149944  // and not required which is required to match the other aspects of the copy mechanism code generation.
149945  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
149946  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
149947  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
149948  // virtual SgNode* copy ( const SgCopyHelp & help) const;
149949 
149951  virtual std::string class_name() const override;
149952 
149954  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
149955 
149957  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
149958  // static const VariantT static_variant = V_SgCtorInitializerList;
149959  enum { static_variant = V_SgCtorInitializerList };
149960 
149961  /* the generated cast function */
149963  ROSE_DLL_API friend SgCtorInitializerList* isSgCtorInitializerList( SgNode * s );
149964 
149966  ROSE_DLL_API friend const SgCtorInitializerList* isSgCtorInitializerList( const SgNode * s );
149967 
149968  // ******************************************
149969  // * Memory Pool / New / Delete
149970  // ******************************************
149971 
149972  public:
149974  static const unsigned pool_size; //
149976  static std::vector<unsigned char *> pools; //
149978  static SgCtorInitializerList * next_node; //
149979 
149981  static unsigned long initializeStorageClassArray(SgCtorInitializerListStorageClass *); //
149982 
149984  static void clearMemoryPool(); //
149985  static void deleteMemoryPool(); //
149986 
149988  static void extendMemoryPoolForFileIO(); //
149989 
149991  static SgCtorInitializerList * getPointerFromGlobalIndex(unsigned long); //
149993  static SgCtorInitializerList * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
149994 
149996  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
149998  static void resetValidFreepointers(); //
150000  static unsigned long getNumberOfLastValidPointer(); //
150001 
150002 
150003 #if defined(INLINE_FUNCTIONS)
150004 
150005  inline void *operator new (size_t size);
150006 #else
150007 
150008  void *operator new (size_t size);
150009 #endif
150010 
150011  void operator delete (void* pointer, size_t size);
150012 
150013  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
150014  void operator delete (void* pointer)
150015  {
150016  // This is the generated delete operator...
150017  SgCtorInitializerList::operator delete (pointer,sizeof(SgCtorInitializerList));
150018  }
150019 
150021  static size_t numberOfNodes();
150022 
150024  static size_t memoryUsage();
150025 
150026  // End of scope which started in IR nodes specific code
150027  /* */
150028 
150029  /* name Internal Functions
150030  \brief Internal functions ... incomplete-documentation
150031 
150032  These functions have been made public as part of the design, but they are suggested for internal use
150033  or by particularly knowledgeable users for specialized tools or applications.
150034 
150035  \internal We could not make these private because they are required by user for special purposes. And
150036  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
150037 
150038  */
150039 
150040  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
150041  // overridden in every class by *generated* implementation
150043  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
150044  // MS: 06/28/02 container of names of variables or container indices
150045  // used used in the traversal to access AST successor nodes
150046  // overridden in every class by *generated* implementation
150049  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
150050 
150051  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
150052  // than all the vector copies. The implementation for these functions is generated for each class.
150054  virtual size_t get_numberOfTraversalSuccessors() override;
150056  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
150058  virtual size_t get_childIndex(SgNode *child) override;
150059 
150060 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
150061  // MS: 08/16/2002 method for generating RTI information
150063  virtual RTIReturnType roseRTI() override;
150064 #endif
150065  /* */
150066 
150067 
150068 
150069  /* name Deprecated Functions
150070  \brief Deprecated functions ... incomplete-documentation
150071 
150072  These functions have been deprecated from use.
150073  */
150074  /* */
150075 
150077  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
150078 
150079  // JJW (10/16/2008): Changed to a single function in Node.code, and put
150080  // getVariant() in #if 0 block to prevent confusing Doxygen
150081 #if 0
150082 
150083  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
150085  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
150086 #endif
150087  /* */
150088 
150089 
150090 
150091 
150092  public:
150093  /* name Traversal Support Functions
150094  \brief Traversal support functions ... incomplete-documentation
150095 
150096  These functions have been made public as part of the design, but they are suggested for internal use
150097  or by particularly knowledgable users for specialized tools or applications.
150098  */
150099  /* */
150100 
150101  // DQ (11/26/2005): Support for visitor pattern mechanims
150102  // (inferior to ROSE traversal mechanism, experimental).
150106 
150107  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
150109  virtual void accept (ROSE_VisitorPattern & visitor) override;
150110 
150111  // DQ (12/26/2005): Support for traversal based on the memory pool
150114  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
150115 
150118  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
150119 
150120  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
150121  // This traversal helps support internal tools that call static member functions.
150122  // note: this function operates on the memory pools.
150125  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
150126  /* */
150127 
150128 
150129  public:
150130  /* name Memory Allocation Functions
150131  \brief Memory allocations functions ... incomplete-documentation
150132 
150133  These functions have been made public as part of the design, but they are suggested for internal use
150134  or by particularly knowledgable users for specialized tools or applications.
150135  */
150136  /* */
150137 
150148  virtual bool isInMemoryPool() override;
150149 
150160  virtual void checkDataMemberPointersIfInMemoryPool() override;
150161 
150162  // DQ (4/30/2006): Modified to be a const function.
150177  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
150178 
150188  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
150189 
150201  virtual long getChildIndex( SgNode* childNode ) const override;
150202 
150203  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
150204  // comment here (changed to be a C style comment and not be a doxygen comment).
150205  /* \brief Constructor for use by AST File I/O Mechanism
150206 
150207  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
150208  which obtained via fast binary file I/O from disk.
150209  */
150210  // SgCtorInitializerList( SgCtorInitializerListStorageClass& source );
150211 
150212 
150213 
150214 
150215 
150216  // JH (10/24/2005): methods added to support the ast file IO
150217  private:
150218 
150219  /* name AST Memory Allocation Support Functions
150220  \brief Memory allocations support....
150221 
150222  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
150223  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
150224  and support the AST File I/O Mechanism.
150225  */
150226  /* */
150227 
150228  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
150229  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
150230  that I use the same type everywhere, if any changes are made. THe second one declares the type
150231  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
150232  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
150233  a correspinding one in the AST_FILE_IO class!
150234  */
150235  // DQ (9/2/2015): This typedef is no longer used, we can't define the
150236  // comment here (changed to be a C style comment and not be a doxygen comment).
150237  /* \brief Typedef used for low level memory access.
150238  */
150239  // typedef unsigned char* TestType;
150240 
150241  // DQ (9/2/2015): This typedef is no longer used, we can't define the
150242  // comment here (changed to be a C style comment and not be a doxygen comment).
150243  /* \brief Typedef used to hold memory addresses as values.
150244  */
150245  // typedef unsigned long AddressType;
150246 
150247 
150248 
150249  // necessary, to have direct access to the p_freepointer and the private methods !
150251  friend class AST_FILE_IO;
150252 
150254  friend class SgCtorInitializerListStorageClass;
150255 
150257  friend class AstSpecificDataManagingClass;
150258 
150260  friend class AstSpecificDataManagingClassStorageClass;
150261 
150262  public:
150264  SgCtorInitializerList( const SgCtorInitializerListStorageClass& source );
150265 
150266  // private: // JJW hack
150267  /*
150268  name AST Memory Allocation Support Variables
150269  Memory allocations support variables
150270 
150271  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
150272  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
150273  and support the AST File I/O Mechanism.
150274  */
150275  /* */
150276 
150277  public:
150278 
150279  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
150280  // to current node (so that it will work cleanly with build functions to specify patterns).
150281  // virtual SgNode* addRegExpAttribute();
150288 
150289 // *** COMMON CODE SECTION ENDS HERE ***
150290 
150291 
150292 // End of memberFunctionString
150293 // Start of memberFunctionString
150294 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
150295 
150296  // the generated cast function
150297  // friend ROSE_DLL_API SgCtorInitializerList* isSgCtorInitializerList ( SgNode* s );
150298 
150300 
150301 
150302 // End of memberFunctionString
150303 // Start of memberFunctionString
150304 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
150305 
150306  void post_construction_initialization() override;
150307 
150308 
150309 // End of memberFunctionString
150310 
150311  public:
150312  const SgInitializedNamePtrList& get_ctors() const;
150313  SgInitializedNamePtrList& get_ctors();
150314 
150315 
150316  public:
150317  virtual ~SgCtorInitializerList();
150318 
150319 
150320  public:
150321  SgCtorInitializerList(Sg_File_Info* startOfConstruct );
150323 
150324  protected:
150325 // Start of memberFunctionString
150326 SgInitializedNamePtrList p_ctors;
150327 
150328 // End of memberFunctionString
150329 
150330 
150331 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
150332 
150333 
150334  };
150335 #endif
150336 
150337 // postdeclarations for SgCtorInitializerList
150338 
150339 /* #line 150340 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
150340 
150341 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
150342 
150343 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
150344 
150345 
150346 /* #line 150347 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
150347 
150348 
150349 
150350 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
150351 
150352 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
150353 // This code is automatically generated for each
150354 // terminal and non-terminal within the defined
150355 // grammar. There is a simple way to change the
150356 // code to fix bugs etc. See the ROSE README file
150357 // for directions.
150358 
150359 // tps: (02/22/2010): Adding DLL export requirements
150360 #include "rosedll.h"
150361 
150362 // predeclarations for SgPragmaDeclaration
150363 
150364 /* #line 150365 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
150365 
150366 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
150367 
150368 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
150369 
150370 #if 1
150371 // Class Definition for SgPragmaDeclaration
150373  {
150374  public:
150375 
150376 
150377 /* #line 150378 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
150378 
150379  virtual SgNode* copy ( SgCopyHelp& help) const override;
150380 // Start of memberFunctionString
150381 /* #line 3025 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
150382 
150383 
150384  // DQ (2/18/2006): Added general name mangling for all declarations (and some other IR nodes).
150385  virtual SgName get_mangled_name(void) const override;
150386 
150387 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
150388  virtual unsigned int cfgIndexForEnd() const override;
150389  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
150390  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
150391 #endif
150392 
150393 
150394 
150395 // End of memberFunctionString
150396 // Start of memberFunctionString
150397 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
150398 
150399 // *** COMMON CODE SECTION BEGINS HERE ***
150400 
150401  public:
150402 
150403  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
150404  // and not required which is required to match the other aspects of the copy mechanism code generation.
150405  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
150406  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
150407  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
150408  // virtual SgNode* copy ( const SgCopyHelp & help) const;
150409 
150411  virtual std::string class_name() const override;
150412 
150414  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
150415 
150417  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
150418  // static const VariantT static_variant = V_SgPragmaDeclaration;
150419  enum { static_variant = V_SgPragmaDeclaration };
150420 
150421  /* the generated cast function */
150423  ROSE_DLL_API friend SgPragmaDeclaration* isSgPragmaDeclaration( SgNode * s );
150424 
150426  ROSE_DLL_API friend const SgPragmaDeclaration* isSgPragmaDeclaration( const SgNode * s );
150427 
150428  // ******************************************
150429  // * Memory Pool / New / Delete
150430  // ******************************************
150431 
150432  public:
150434  static const unsigned pool_size; //
150436  static std::vector<unsigned char *> pools; //
150438  static SgPragmaDeclaration * next_node; //
150439 
150441  static unsigned long initializeStorageClassArray(SgPragmaDeclarationStorageClass *); //
150442 
150444  static void clearMemoryPool(); //
150445  static void deleteMemoryPool(); //
150446 
150448  static void extendMemoryPoolForFileIO(); //
150449 
150451  static SgPragmaDeclaration * getPointerFromGlobalIndex(unsigned long); //
150453  static SgPragmaDeclaration * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
150454 
150456  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
150458  static void resetValidFreepointers(); //
150460  static unsigned long getNumberOfLastValidPointer(); //
150461 
150462 
150463 #if defined(INLINE_FUNCTIONS)
150464 
150465  inline void *operator new (size_t size);
150466 #else
150467 
150468  void *operator new (size_t size);
150469 #endif
150470 
150471  void operator delete (void* pointer, size_t size);
150472 
150473  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
150474  void operator delete (void* pointer)
150475  {
150476  // This is the generated delete operator...
150477  SgPragmaDeclaration::operator delete (pointer,sizeof(SgPragmaDeclaration));
150478  }
150479 
150481  static size_t numberOfNodes();
150482 
150484  static size_t memoryUsage();
150485 
150486  // End of scope which started in IR nodes specific code
150487  /* */
150488 
150489  /* name Internal Functions
150490  \brief Internal functions ... incomplete-documentation
150491 
150492  These functions have been made public as part of the design, but they are suggested for internal use
150493  or by particularly knowledgeable users for specialized tools or applications.
150494 
150495  \internal We could not make these private because they are required by user for special purposes. And
150496  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
150497 
150498  */
150499 
150500  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
150501  // overridden in every class by *generated* implementation
150503  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
150504  // MS: 06/28/02 container of names of variables or container indices
150505  // used used in the traversal to access AST successor nodes
150506  // overridden in every class by *generated* implementation
150509  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
150510 
150511  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
150512  // than all the vector copies. The implementation for these functions is generated for each class.
150514  virtual size_t get_numberOfTraversalSuccessors() override;
150516  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
150518  virtual size_t get_childIndex(SgNode *child) override;
150519 
150520 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
150521  // MS: 08/16/2002 method for generating RTI information
150523  virtual RTIReturnType roseRTI() override;
150524 #endif
150525  /* */
150526 
150527 
150528 
150529  /* name Deprecated Functions
150530  \brief Deprecated functions ... incomplete-documentation
150531 
150532  These functions have been deprecated from use.
150533  */
150534  /* */
150535 
150537  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
150538 
150539  // JJW (10/16/2008): Changed to a single function in Node.code, and put
150540  // getVariant() in #if 0 block to prevent confusing Doxygen
150541 #if 0
150542 
150543  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
150545  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
150546 #endif
150547  /* */
150548 
150549 
150550 
150551 
150552  public:
150553  /* name Traversal Support Functions
150554  \brief Traversal support functions ... incomplete-documentation
150555 
150556  These functions have been made public as part of the design, but they are suggested for internal use
150557  or by particularly knowledgable users for specialized tools or applications.
150558  */
150559  /* */
150560 
150561  // DQ (11/26/2005): Support for visitor pattern mechanims
150562  // (inferior to ROSE traversal mechanism, experimental).
150566 
150567  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
150569  virtual void accept (ROSE_VisitorPattern & visitor) override;
150570 
150571  // DQ (12/26/2005): Support for traversal based on the memory pool
150574  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
150575 
150578  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
150579 
150580  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
150581  // This traversal helps support internal tools that call static member functions.
150582  // note: this function operates on the memory pools.
150585  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
150586  /* */
150587 
150588 
150589  public:
150590  /* name Memory Allocation Functions
150591  \brief Memory allocations functions ... incomplete-documentation
150592 
150593  These functions have been made public as part of the design, but they are suggested for internal use
150594  or by particularly knowledgable users for specialized tools or applications.
150595  */
150596  /* */
150597 
150608  virtual bool isInMemoryPool() override;
150609 
150620  virtual void checkDataMemberPointersIfInMemoryPool() override;
150621 
150622  // DQ (4/30/2006): Modified to be a const function.
150637  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
150638 
150648  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
150649 
150661  virtual long getChildIndex( SgNode* childNode ) const override;
150662 
150663  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
150664  // comment here (changed to be a C style comment and not be a doxygen comment).
150665  /* \brief Constructor for use by AST File I/O Mechanism
150666 
150667  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
150668  which obtained via fast binary file I/O from disk.
150669  */
150670  // SgPragmaDeclaration( SgPragmaDeclarationStorageClass& source );
150671 
150672 
150673 
150674 
150675 
150676  // JH (10/24/2005): methods added to support the ast file IO
150677  private:
150678 
150679  /* name AST Memory Allocation Support Functions
150680  \brief Memory allocations support....
150681 
150682  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
150683  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
150684  and support the AST File I/O Mechanism.
150685  */
150686  /* */
150687 
150688  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
150689  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
150690  that I use the same type everywhere, if any changes are made. THe second one declares the type
150691  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
150692  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
150693  a correspinding one in the AST_FILE_IO class!
150694  */
150695  // DQ (9/2/2015): This typedef is no longer used, we can't define the
150696  // comment here (changed to be a C style comment and not be a doxygen comment).
150697  /* \brief Typedef used for low level memory access.
150698  */
150699  // typedef unsigned char* TestType;
150700 
150701  // DQ (9/2/2015): This typedef is no longer used, we can't define the
150702  // comment here (changed to be a C style comment and not be a doxygen comment).
150703  /* \brief Typedef used to hold memory addresses as values.
150704  */
150705  // typedef unsigned long AddressType;
150706 
150707 
150708 
150709  // necessary, to have direct access to the p_freepointer and the private methods !
150711  friend class AST_FILE_IO;
150712 
150714  friend class SgPragmaDeclarationStorageClass;
150715 
150717  friend class AstSpecificDataManagingClass;
150718 
150720  friend class AstSpecificDataManagingClassStorageClass;
150721 
150722  public:
150724  SgPragmaDeclaration( const SgPragmaDeclarationStorageClass& source );
150725 
150726  // private: // JJW hack
150727  /*
150728  name AST Memory Allocation Support Variables
150729  Memory allocations support variables
150730 
150731  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
150732  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
150733  and support the AST File I/O Mechanism.
150734  */
150735  /* */
150736 
150737  public:
150738 
150739  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
150740  // to current node (so that it will work cleanly with build functions to specify patterns).
150741  // virtual SgNode* addRegExpAttribute();
150748 
150749 // *** COMMON CODE SECTION ENDS HERE ***
150750 
150751 
150752 // End of memberFunctionString
150753 // Start of memberFunctionString
150754 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
150755 
150756  // the generated cast function
150757  // friend ROSE_DLL_API SgPragmaDeclaration* isSgPragmaDeclaration ( SgNode* s );
150758 
150760 
150761 
150762 // End of memberFunctionString
150763 // Start of memberFunctionString
150764 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
150765 
150766  void post_construction_initialization() override;
150767 
150768 
150769 // End of memberFunctionString
150770 
150771  public:
150772  SgPragma* get_pragma() const;
150773  void set_pragma(SgPragma* pragma);
150774 
150775 
150776  public:
150777  virtual ~SgPragmaDeclaration();
150778 
150779 
150780  public:
150781  SgPragmaDeclaration(Sg_File_Info* startOfConstruct , SgPragma* pragma = NULL);
150782  SgPragmaDeclaration(SgPragma* pragma);
150783 
150784  protected:
150785 // Start of memberFunctionString
150786 SgPragma* p_pragma;
150787 
150788 // End of memberFunctionString
150789 
150790 
150791 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
150792 
150793 
150794  };
150795 #endif
150796 
150797 // postdeclarations for SgPragmaDeclaration
150798 
150799 /* #line 150800 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
150800 
150801 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
150802 
150803 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
150804 
150805 
150806 /* #line 150807 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
150807 
150808 
150809 
150810 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
150811 
150812 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
150813 // This code is automatically generated for each
150814 // terminal and non-terminal within the defined
150815 // grammar. There is a simple way to change the
150816 // code to fix bugs etc. See the ROSE README file
150817 // for directions.
150818 
150819 // tps: (02/22/2010): Adding DLL export requirements
150820 #include "rosedll.h"
150821 
150822 // predeclarations for SgUsingDirectiveStatement
150823 
150824 /* #line 150825 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
150825 
150826 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
150827 
150828 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
150829 
150830 #if 1
150831 // Class Definition for SgUsingDirectiveStatement
150833  {
150834  public:
150835 
150836 
150837 /* #line 150838 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
150838 
150839  virtual SgNode* copy ( SgCopyHelp& help) const override;
150840 // Start of memberFunctionString
150841 /* #line 3158 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
150842 
150843 
150844 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
150845  virtual unsigned int cfgIndexForEnd() const override;
150846  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
150847  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
150848 #endif
150849 
150850  // DQ (2/18/2006): Added general name mangling for all declarations (and some other IR nodes).
150851  virtual SgName get_mangled_name(void) const override;
150852 
150853  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
150854  int get_name_qualification_length() const;
150855  void set_name_qualification_length(int name_qualification_length);
150856 
150857  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
150858  bool get_type_elaboration_required() const;
150859  void set_type_elaboration_required(bool type_elaboration_required);
150860 
150861  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
150862  bool get_global_qualification_required() const;
150863  void set_global_qualification_required(bool global_qualification_required);
150864 
150865 
150866 
150867 // End of memberFunctionString
150868 // Start of memberFunctionString
150869 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
150870 
150871 // *** COMMON CODE SECTION BEGINS HERE ***
150872 
150873  public:
150874 
150875  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
150876  // and not required which is required to match the other aspects of the copy mechanism code generation.
150877  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
150878  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
150879  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
150880  // virtual SgNode* copy ( const SgCopyHelp & help) const;
150881 
150883  virtual std::string class_name() const override;
150884 
150886  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
150887 
150889  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
150890  // static const VariantT static_variant = V_SgUsingDirectiveStatement;
150891  enum { static_variant = V_SgUsingDirectiveStatement };
150892 
150893  /* the generated cast function */
150895  ROSE_DLL_API friend SgUsingDirectiveStatement* isSgUsingDirectiveStatement( SgNode * s );
150896 
150898  ROSE_DLL_API friend const SgUsingDirectiveStatement* isSgUsingDirectiveStatement( const SgNode * s );
150899 
150900  // ******************************************
150901  // * Memory Pool / New / Delete
150902  // ******************************************
150903 
150904  public:
150906  static const unsigned pool_size; //
150908  static std::vector<unsigned char *> pools; //
150910  static SgUsingDirectiveStatement * next_node; //
150911 
150913  static unsigned long initializeStorageClassArray(SgUsingDirectiveStatementStorageClass *); //
150914 
150916  static void clearMemoryPool(); //
150917  static void deleteMemoryPool(); //
150918 
150920  static void extendMemoryPoolForFileIO(); //
150921 
150923  static SgUsingDirectiveStatement * getPointerFromGlobalIndex(unsigned long); //
150925  static SgUsingDirectiveStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
150926 
150928  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
150930  static void resetValidFreepointers(); //
150932  static unsigned long getNumberOfLastValidPointer(); //
150933 
150934 
150935 #if defined(INLINE_FUNCTIONS)
150936 
150937  inline void *operator new (size_t size);
150938 #else
150939 
150940  void *operator new (size_t size);
150941 #endif
150942 
150943  void operator delete (void* pointer, size_t size);
150944 
150945  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
150946  void operator delete (void* pointer)
150947  {
150948  // This is the generated delete operator...
150949  SgUsingDirectiveStatement::operator delete (pointer,sizeof(SgUsingDirectiveStatement));
150950  }
150951 
150953  static size_t numberOfNodes();
150954 
150956  static size_t memoryUsage();
150957 
150958  // End of scope which started in IR nodes specific code
150959  /* */
150960 
150961  /* name Internal Functions
150962  \brief Internal functions ... incomplete-documentation
150963 
150964  These functions have been made public as part of the design, but they are suggested for internal use
150965  or by particularly knowledgeable users for specialized tools or applications.
150966 
150967  \internal We could not make these private because they are required by user for special purposes. And
150968  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
150969 
150970  */
150971 
150972  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
150973  // overridden in every class by *generated* implementation
150975  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
150976  // MS: 06/28/02 container of names of variables or container indices
150977  // used used in the traversal to access AST successor nodes
150978  // overridden in every class by *generated* implementation
150981  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
150982 
150983  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
150984  // than all the vector copies. The implementation for these functions is generated for each class.
150986  virtual size_t get_numberOfTraversalSuccessors() override;
150988  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
150990  virtual size_t get_childIndex(SgNode *child) override;
150991 
150992 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
150993  // MS: 08/16/2002 method for generating RTI information
150995  virtual RTIReturnType roseRTI() override;
150996 #endif
150997  /* */
150998 
150999 
151000 
151001  /* name Deprecated Functions
151002  \brief Deprecated functions ... incomplete-documentation
151003 
151004  These functions have been deprecated from use.
151005  */
151006  /* */
151007 
151009  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
151010 
151011  // JJW (10/16/2008): Changed to a single function in Node.code, and put
151012  // getVariant() in #if 0 block to prevent confusing Doxygen
151013 #if 0
151014 
151015  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
151017  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
151018 #endif
151019  /* */
151020 
151021 
151022 
151023 
151024  public:
151025  /* name Traversal Support Functions
151026  \brief Traversal support functions ... incomplete-documentation
151027 
151028  These functions have been made public as part of the design, but they are suggested for internal use
151029  or by particularly knowledgable users for specialized tools or applications.
151030  */
151031  /* */
151032 
151033  // DQ (11/26/2005): Support for visitor pattern mechanims
151034  // (inferior to ROSE traversal mechanism, experimental).
151038 
151039  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
151041  virtual void accept (ROSE_VisitorPattern & visitor) override;
151042 
151043  // DQ (12/26/2005): Support for traversal based on the memory pool
151046  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
151047 
151050  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
151051 
151052  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
151053  // This traversal helps support internal tools that call static member functions.
151054  // note: this function operates on the memory pools.
151057  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
151058  /* */
151059 
151060 
151061  public:
151062  /* name Memory Allocation Functions
151063  \brief Memory allocations functions ... incomplete-documentation
151064 
151065  These functions have been made public as part of the design, but they are suggested for internal use
151066  or by particularly knowledgable users for specialized tools or applications.
151067  */
151068  /* */
151069 
151080  virtual bool isInMemoryPool() override;
151081 
151092  virtual void checkDataMemberPointersIfInMemoryPool() override;
151093 
151094  // DQ (4/30/2006): Modified to be a const function.
151109  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
151110 
151120  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
151121 
151133  virtual long getChildIndex( SgNode* childNode ) const override;
151134 
151135  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
151136  // comment here (changed to be a C style comment and not be a doxygen comment).
151137  /* \brief Constructor for use by AST File I/O Mechanism
151138 
151139  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
151140  which obtained via fast binary file I/O from disk.
151141  */
151142  // SgUsingDirectiveStatement( SgUsingDirectiveStatementStorageClass& source );
151143 
151144 
151145 
151146 
151147 
151148  // JH (10/24/2005): methods added to support the ast file IO
151149  private:
151150 
151151  /* name AST Memory Allocation Support Functions
151152  \brief Memory allocations support....
151153 
151154  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
151155  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
151156  and support the AST File I/O Mechanism.
151157  */
151158  /* */
151159 
151160  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
151161  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
151162  that I use the same type everywhere, if any changes are made. THe second one declares the type
151163  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
151164  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
151165  a correspinding one in the AST_FILE_IO class!
151166  */
151167  // DQ (9/2/2015): This typedef is no longer used, we can't define the
151168  // comment here (changed to be a C style comment and not be a doxygen comment).
151169  /* \brief Typedef used for low level memory access.
151170  */
151171  // typedef unsigned char* TestType;
151172 
151173  // DQ (9/2/2015): This typedef is no longer used, we can't define the
151174  // comment here (changed to be a C style comment and not be a doxygen comment).
151175  /* \brief Typedef used to hold memory addresses as values.
151176  */
151177  // typedef unsigned long AddressType;
151178 
151179 
151180 
151181  // necessary, to have direct access to the p_freepointer and the private methods !
151183  friend class AST_FILE_IO;
151184 
151186  friend class SgUsingDirectiveStatementStorageClass;
151187 
151189  friend class AstSpecificDataManagingClass;
151190 
151192  friend class AstSpecificDataManagingClassStorageClass;
151193 
151194  public:
151196  SgUsingDirectiveStatement( const SgUsingDirectiveStatementStorageClass& source );
151197 
151198  // private: // JJW hack
151199  /*
151200  name AST Memory Allocation Support Variables
151201  Memory allocations support variables
151202 
151203  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
151204  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
151205  and support the AST File I/O Mechanism.
151206  */
151207  /* */
151208 
151209  public:
151210 
151211  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
151212  // to current node (so that it will work cleanly with build functions to specify patterns).
151213  // virtual SgNode* addRegExpAttribute();
151220 
151221 // *** COMMON CODE SECTION ENDS HERE ***
151222 
151223 
151224 // End of memberFunctionString
151225 // Start of memberFunctionString
151226 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
151227 
151228  // the generated cast function
151229  // friend ROSE_DLL_API SgUsingDirectiveStatement* isSgUsingDirectiveStatement ( SgNode* s );
151230 
151232 
151233 
151234 // End of memberFunctionString
151235 // Start of memberFunctionString
151236 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
151237 
151238  void post_construction_initialization() override;
151239 
151240 
151241 // End of memberFunctionString
151242 
151243  public:
151244  SgNamespaceDeclarationStatement* get_namespaceDeclaration() const;
151245  void set_namespaceDeclaration(SgNamespaceDeclarationStatement* namespaceDeclaration);
151246 
151247 
151248 
151249 
151250 
151251  public:
151252  virtual ~SgUsingDirectiveStatement();
151253 
151254 
151255  public:
151256  SgUsingDirectiveStatement(Sg_File_Info* startOfConstruct , SgNamespaceDeclarationStatement* namespaceDeclaration = NULL);
151258 
151259  protected:
151260 // Start of memberFunctionString
151262 
151263 // End of memberFunctionString
151264 // Start of memberFunctionString
151265 int p_name_qualification_length;
151266 
151267 // End of memberFunctionString
151268 // Start of memberFunctionString
151269 bool p_type_elaboration_required;
151270 
151271 // End of memberFunctionString
151272 // Start of memberFunctionString
151273 bool p_global_qualification_required;
151274 
151275 // End of memberFunctionString
151276 
151277 
151278 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
151279 
151280 
151281  };
151282 #endif
151283 
151284 // postdeclarations for SgUsingDirectiveStatement
151285 
151286 /* #line 151287 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
151287 
151288 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
151289 
151290 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
151291 
151292 
151293 /* #line 151294 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
151294 
151295 
151296 
151297 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
151298 
151299 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
151300 // This code is automatically generated for each
151301 // terminal and non-terminal within the defined
151302 // grammar. There is a simple way to change the
151303 // code to fix bugs etc. See the ROSE README file
151304 // for directions.
151305 
151306 // tps: (02/22/2010): Adding DLL export requirements
151307 #include "rosedll.h"
151308 
151309 // predeclarations for SgClassDeclaration
151310 
151311 /* #line 151312 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
151312 
151313 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
151314 
151315 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
151316 
151317 #if 1
151318 // Class Definition for SgClassDeclaration
151319 class ROSE_DLL_API SgClassDeclaration : public SgDeclarationStatement
151320  {
151321  public:
151322 
151323 
151324 /* #line 151325 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
151325 
151326  virtual SgNode* copy ( SgCopyHelp& help) const override;
151327 // Start of memberFunctionString
151328 /* #line 2057 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
151329 
151330 
151332  enum class_types
151333  {
151339  };
151340 
151341  virtual SgName get_qualified_name() const;
151342 
151343  // RV (1/31/2006): Added this mangler to replace 'get_mangled_qualified_name'
151344  virtual SgName get_mangled_name (void) const override;
151345 
151347  SgName get_mangled_qualified_name(int & cnt );
151348 
151349  protected:
151350  virtual bool replace_child(SgStatement *,SgStatement *, bool extractListFromBasicBlock = false) override;
151351 
151352  public:
151353 
151355  virtual bool hasExplicitScope() const override;
151356 
151357 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
151358  virtual unsigned int cfgIndexForEnd() const override;
151359  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
151360  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
151361 #endif
151362 
151363  // DQ (2/10/2007): I think this should have been marked virtual
151364  virtual SgSymbol* get_symbol_from_symbol_table() const override;
151365 
151366 #if ALT_FIXUP_COPY
151367  // DQ (11/7/2007): These need to be called separately (see documentation)
151368  virtual void fixupCopy_scopes (SgNode* copy, SgCopyHelp & help) const override;
151369  virtual void fixupCopy_symbols (SgNode* copy, SgCopyHelp & help) const override;
151370  virtual void fixupCopy_references (SgNode* copy, SgCopyHelp & help) const override;
151371 #else
151372  // DQ (10/5/2007): Added fixup function to set scopes not set properly by the ROSETTA generated copy!
151373  virtual void fixupCopy(SgNode* copy, SgCopyHelp & help) const;
151374 #endif
151375 
151376  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
151377  int get_name_qualification_length() const;
151378  void set_name_qualification_length(int name_qualification_length);
151379 
151380  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
151381  bool get_type_elaboration_required() const;
151382  void set_type_elaboration_required(bool type_elaboration_required);
151383 
151384  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
151385  bool get_global_qualification_required() const;
151386  void set_global_qualification_required(bool global_qualification_required);
151387 
151388  protected:
151389  // GB (09/26/2007): Added this function as part of the move to index-based traversals.
151390  SgClassDefinition *compute_classDefinition() const;
151391 
151392 
151393 
151394 // End of memberFunctionString
151395 // Start of memberFunctionString
151396 /* #line 930 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
151397 
151398 
151399  public:
151400  bool isSpecialization() const;
151401  bool isPartialSpecialization() const;
151402 
151403 
151404 
151405 // End of memberFunctionString
151406 // Start of memberFunctionString
151407 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
151408 
151409 // *** COMMON CODE SECTION BEGINS HERE ***
151410 
151411  public:
151412 
151413  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
151414  // and not required which is required to match the other aspects of the copy mechanism code generation.
151415  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
151416  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
151417  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
151418  // virtual SgNode* copy ( const SgCopyHelp & help) const;
151419 
151421  virtual std::string class_name() const override;
151422 
151424  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
151425 
151427  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
151428  // static const VariantT static_variant = V_SgClassDeclaration;
151429  enum { static_variant = V_SgClassDeclaration };
151430 
151431  /* the generated cast function */
151433  ROSE_DLL_API friend SgClassDeclaration* isSgClassDeclaration( SgNode * s );
151434 
151436  ROSE_DLL_API friend const SgClassDeclaration* isSgClassDeclaration( const SgNode * s );
151437 
151438  // ******************************************
151439  // * Memory Pool / New / Delete
151440  // ******************************************
151441 
151442  public:
151444  static const unsigned pool_size; //
151446  static std::vector<unsigned char *> pools; //
151448  static SgClassDeclaration * next_node; //
151449 
151451  static unsigned long initializeStorageClassArray(SgClassDeclarationStorageClass *); //
151452 
151454  static void clearMemoryPool(); //
151455  static void deleteMemoryPool(); //
151456 
151458  static void extendMemoryPoolForFileIO(); //
151459 
151461  static SgClassDeclaration * getPointerFromGlobalIndex(unsigned long); //
151463  static SgClassDeclaration * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
151464 
151466  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
151468  static void resetValidFreepointers(); //
151470  static unsigned long getNumberOfLastValidPointer(); //
151471 
151472 
151473 #if defined(INLINE_FUNCTIONS)
151474 
151475  inline void *operator new (size_t size);
151476 #else
151477 
151478  void *operator new (size_t size);
151479 #endif
151480 
151481  void operator delete (void* pointer, size_t size);
151482 
151483  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
151484  void operator delete (void* pointer)
151485  {
151486  // This is the generated delete operator...
151487  SgClassDeclaration::operator delete (pointer,sizeof(SgClassDeclaration));
151488  }
151489 
151491  static size_t numberOfNodes();
151492 
151494  static size_t memoryUsage();
151495 
151496  // End of scope which started in IR nodes specific code
151497  /* */
151498 
151499  /* name Internal Functions
151500  \brief Internal functions ... incomplete-documentation
151501 
151502  These functions have been made public as part of the design, but they are suggested for internal use
151503  or by particularly knowledgeable users for specialized tools or applications.
151504 
151505  \internal We could not make these private because they are required by user for special purposes. And
151506  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
151507 
151508  */
151509 
151510  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
151511  // overridden in every class by *generated* implementation
151513  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
151514  // MS: 06/28/02 container of names of variables or container indices
151515  // used used in the traversal to access AST successor nodes
151516  // overridden in every class by *generated* implementation
151519  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
151520 
151521  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
151522  // than all the vector copies. The implementation for these functions is generated for each class.
151524  virtual size_t get_numberOfTraversalSuccessors() override;
151526  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
151528  virtual size_t get_childIndex(SgNode *child) override;
151529 
151530 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
151531  // MS: 08/16/2002 method for generating RTI information
151533  virtual RTIReturnType roseRTI() override;
151534 #endif
151535  /* */
151536 
151537 
151538 
151539  /* name Deprecated Functions
151540  \brief Deprecated functions ... incomplete-documentation
151541 
151542  These functions have been deprecated from use.
151543  */
151544  /* */
151545 
151547  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
151548 
151549  // JJW (10/16/2008): Changed to a single function in Node.code, and put
151550  // getVariant() in #if 0 block to prevent confusing Doxygen
151551 #if 0
151552 
151553  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
151555  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
151556 #endif
151557  /* */
151558 
151559 
151560 
151561 
151562  public:
151563  /* name Traversal Support Functions
151564  \brief Traversal support functions ... incomplete-documentation
151565 
151566  These functions have been made public as part of the design, but they are suggested for internal use
151567  or by particularly knowledgable users for specialized tools or applications.
151568  */
151569  /* */
151570 
151571  // DQ (11/26/2005): Support for visitor pattern mechanims
151572  // (inferior to ROSE traversal mechanism, experimental).
151576 
151577  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
151579  virtual void accept (ROSE_VisitorPattern & visitor) override;
151580 
151581  // DQ (12/26/2005): Support for traversal based on the memory pool
151584  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
151585 
151588  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
151589 
151590  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
151591  // This traversal helps support internal tools that call static member functions.
151592  // note: this function operates on the memory pools.
151595  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
151596  /* */
151597 
151598 
151599  public:
151600  /* name Memory Allocation Functions
151601  \brief Memory allocations functions ... incomplete-documentation
151602 
151603  These functions have been made public as part of the design, but they are suggested for internal use
151604  or by particularly knowledgable users for specialized tools or applications.
151605  */
151606  /* */
151607 
151618  virtual bool isInMemoryPool() override;
151619 
151630  virtual void checkDataMemberPointersIfInMemoryPool() override;
151631 
151632  // DQ (4/30/2006): Modified to be a const function.
151647  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
151648 
151658  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
151659 
151671  virtual long getChildIndex( SgNode* childNode ) const override;
151672 
151673  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
151674  // comment here (changed to be a C style comment and not be a doxygen comment).
151675  /* \brief Constructor for use by AST File I/O Mechanism
151676 
151677  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
151678  which obtained via fast binary file I/O from disk.
151679  */
151680  // SgClassDeclaration( SgClassDeclarationStorageClass& source );
151681 
151682 
151683 
151684 
151685 
151686  // JH (10/24/2005): methods added to support the ast file IO
151687  private:
151688 
151689  /* name AST Memory Allocation Support Functions
151690  \brief Memory allocations support....
151691 
151692  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
151693  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
151694  and support the AST File I/O Mechanism.
151695  */
151696  /* */
151697 
151698  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
151699  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
151700  that I use the same type everywhere, if any changes are made. THe second one declares the type
151701  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
151702  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
151703  a correspinding one in the AST_FILE_IO class!
151704  */
151705  // DQ (9/2/2015): This typedef is no longer used, we can't define the
151706  // comment here (changed to be a C style comment and not be a doxygen comment).
151707  /* \brief Typedef used for low level memory access.
151708  */
151709  // typedef unsigned char* TestType;
151710 
151711  // DQ (9/2/2015): This typedef is no longer used, we can't define the
151712  // comment here (changed to be a C style comment and not be a doxygen comment).
151713  /* \brief Typedef used to hold memory addresses as values.
151714  */
151715  // typedef unsigned long AddressType;
151716 
151717 
151718 
151719  // necessary, to have direct access to the p_freepointer and the private methods !
151721  friend class AST_FILE_IO;
151722 
151724  friend class SgClassDeclarationStorageClass;
151725 
151727  friend class AstSpecificDataManagingClass;
151728 
151730  friend class AstSpecificDataManagingClassStorageClass;
151731 
151732  public:
151734  SgClassDeclaration( const SgClassDeclarationStorageClass& source );
151735 
151736  // private: // JJW hack
151737  /*
151738  name AST Memory Allocation Support Variables
151739  Memory allocations support variables
151740 
151741  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
151742  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
151743  and support the AST File I/O Mechanism.
151744  */
151745  /* */
151746 
151747  public:
151748 
151749  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
151750  // to current node (so that it will work cleanly with build functions to specify patterns).
151751  // virtual SgNode* addRegExpAttribute();
151758 
151759 // *** COMMON CODE SECTION ENDS HERE ***
151760 
151761 
151762 // End of memberFunctionString
151763 // Start of memberFunctionString
151764 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
151765 
151766  // the generated cast function
151767  // friend ROSE_DLL_API SgClassDeclaration* isSgClassDeclaration ( SgNode* s );
151768 
151770 
151771 
151772 // End of memberFunctionString
151773 // Start of memberFunctionString
151774 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
151775 
151776  void post_construction_initialization() override;
151777 
151778 
151779 // End of memberFunctionString
151780 
151781  public:
151782  SgName get_name() const /* (getDataAccessFunctionPrototypeString) */;
151783  void set_name(SgName name) /* (getDataAccessFunctionPrototypeString) */;
151784 
151785  public:
151786  SgClassDeclaration::class_types get_class_type() const;
151787  void set_class_type(SgClassDeclaration::class_types class_type);
151788 
151789  public:
151790  SgClassType* get_type() const /* (getDataAccessFunctionPrototypeString) */;
151791  void set_type(SgClassType* type) /* (getDataAccessFunctionPrototypeString) */;
151792 
151793  public:
151794  SgClassDefinition* get_definition() const;
151795  void set_definition(SgClassDefinition* definition);
151796 
151797  public:
151798  SgScopeStatement* get_scope() const override /* (getDataAccessFunctionPrototypeString) */;
151799  void set_scope(SgScopeStatement* scope) override /* (getDataAccessFunctionPrototypeString) */;
151800 
151801  public:
151802  SgDeclarationStatement::template_specialization_enum get_specialization() const;
151803  void set_specialization(SgDeclarationStatement::template_specialization_enum specialization);
151804 
151805  public:
151806  bool get_from_template() const;
151807  void set_from_template(bool from_template);
151808 
151809  public:
151810  bool get_fixupScope() const;
151811  void set_fixupScope(bool fixupScope);
151812 
151813  public:
151814  bool get_isUnNamed() const;
151815  void set_isUnNamed(bool isUnNamed);
151816 
151817  public:
151818  bool get_explicit_annotation_interface() const;
151819  void set_explicit_annotation_interface(bool explicit_annotation_interface);
151820 
151821  public:
151822  bool get_explicit_interface() const;
151823  void set_explicit_interface(bool explicit_interface);
151824 
151825  public:
151826  bool get_explicit_enum() const;
151827  void set_explicit_enum(bool explicit_enum);
151828 
151829  public:
151830  bool get_explicit_anonymous() const;
151831  void set_explicit_anonymous(bool explicit_anonymous);
151832 
151833  public:
151834  SgExprListExp* get_decoratorList() const;
151835  void set_decoratorList(SgExprListExp* decoratorList);
151836 
151837 
151838 
151839 
151840  public:
151841  bool get_isAutonomousDeclaration() const;
151842  void set_isAutonomousDeclaration(bool isAutonomousDeclaration);
151843 
151844  public:
151845  bool get_isRepresentingTemplateParameterInTemplateDeclaration() const;
151846  void set_isRepresentingTemplateParameterInTemplateDeclaration(bool isRepresentingTemplateParameterInTemplateDeclaration);
151847 
151848  public:
151849  SgBaseClass* get_adaParentType() const;
151850  void set_adaParentType(SgBaseClass* adaParentType);
151851 
151852 
151853  public:
151854  virtual ~SgClassDeclaration();
151855 
151856 
151857  public:
151858  SgClassDeclaration(Sg_File_Info* startOfConstruct , SgName name = "", SgClassDeclaration::class_types class_type = SgClassDeclaration::e_class, SgClassType* type = NULL, SgClassDefinition* definition = NULL);
151859  SgClassDeclaration(SgName name, SgClassDeclaration::class_types class_type, SgClassType* type, SgClassDefinition* definition);
151860 
151861  protected:
151862 // Start of memberFunctionString
151863 SgName p_name;
151864 
151865 // End of memberFunctionString
151866 // Start of memberFunctionString
151868 
151869 // End of memberFunctionString
151870 // Start of memberFunctionString
151872 
151873 // End of memberFunctionString
151874 // Start of memberFunctionString
151875 SgClassDefinition* p_definition;
151876 
151877 // End of memberFunctionString
151878 // Start of memberFunctionString
151879 SgScopeStatement* p_scope;
151880 
151881 // End of memberFunctionString
151882 // Start of memberFunctionString
151884 
151885 // End of memberFunctionString
151886 // Start of memberFunctionString
151887 bool p_from_template;
151888 
151889 // End of memberFunctionString
151890 // Start of memberFunctionString
151891 bool p_fixupScope;
151892 
151893 // End of memberFunctionString
151894 // Start of memberFunctionString
151895 bool p_isUnNamed;
151896 
151897 // End of memberFunctionString
151898 // Start of memberFunctionString
151899 bool p_explicit_annotation_interface;
151900 
151901 // End of memberFunctionString
151902 // Start of memberFunctionString
151903 bool p_explicit_interface;
151904 
151905 // End of memberFunctionString
151906 // Start of memberFunctionString
151907 bool p_explicit_enum;
151908 
151909 // End of memberFunctionString
151910 // Start of memberFunctionString
151911 bool p_explicit_anonymous;
151912 
151913 // End of memberFunctionString
151914 // Start of memberFunctionString
151915 SgExprListExp* p_decoratorList;
151916 
151917 // End of memberFunctionString
151918 // Start of memberFunctionString
151919 int p_name_qualification_length;
151920 
151921 // End of memberFunctionString
151922 // Start of memberFunctionString
151923 bool p_type_elaboration_required;
151924 
151925 // End of memberFunctionString
151926 // Start of memberFunctionString
151927 bool p_global_qualification_required;
151928 
151929 // End of memberFunctionString
151930 // Start of memberFunctionString
151931 bool p_isAutonomousDeclaration;
151932 
151933 // End of memberFunctionString
151934 // Start of memberFunctionString
151935 bool p_isRepresentingTemplateParameterInTemplateDeclaration;
151936 
151937 // End of memberFunctionString
151938 // Start of memberFunctionString
151939 SgBaseClass* p_adaParentType;
151940 
151941 // End of memberFunctionString
151942 
151943 
151944 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
151945 
151946 
151947  };
151948 #endif
151949 
151950 // postdeclarations for SgClassDeclaration
151951 
151952 /* #line 151953 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
151953 
151954 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
151955 
151956 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
151957 
151958 
151959 /* #line 151960 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
151960 
151961 
151962 
151963 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
151964 
151965 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
151966 // This code is automatically generated for each
151967 // terminal and non-terminal within the defined
151968 // grammar. There is a simple way to change the
151969 // code to fix bugs etc. See the ROSE README file
151970 // for directions.
151971 
151972 // tps: (02/22/2010): Adding DLL export requirements
151973 #include "rosedll.h"
151974 
151975 // predeclarations for SgTemplateClassDeclaration
151976 
151977 /* #line 151978 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
151978 
151979 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
151980 
151981 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
151982 
151983 #if 1
151984 // Class Definition for SgTemplateClassDeclaration
151986  {
151987  public:
151988 
151989 
151990 /* #line 151991 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
151991 
151992  virtual SgNode* copy ( SgCopyHelp& help) const override;
151993 // Start of memberFunctionString
151994 /* #line 2803 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
151995 
151996 
151998 
152000  enum class_types
152001  {
152005  e_template_parameter
152006  };
152007 
152008 // DQ (9/26/2012): We can't use these macros in the header files else they would require the rose_config.h
152009 // file to be defined for all user source code (which we can't allow for portability reasons).
152010  // DQ (9/10/2012): Added general name mangling for new template class declaration IR node.
152011  virtual SgName get_mangled_name(void) const override;
152012 
152013 
152014 
152015 // End of memberFunctionString
152016 // Start of memberFunctionString
152017 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
152018 
152019 // *** COMMON CODE SECTION BEGINS HERE ***
152020 
152021  public:
152022 
152023  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
152024  // and not required which is required to match the other aspects of the copy mechanism code generation.
152025  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
152026  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
152027  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
152028  // virtual SgNode* copy ( const SgCopyHelp & help) const;
152029 
152031  virtual std::string class_name() const override;
152032 
152034  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
152035 
152037  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
152038  // static const VariantT static_variant = V_SgTemplateClassDeclaration;
152039  enum { static_variant = V_SgTemplateClassDeclaration };
152040 
152041  /* the generated cast function */
152043  ROSE_DLL_API friend SgTemplateClassDeclaration* isSgTemplateClassDeclaration( SgNode * s );
152044 
152046  ROSE_DLL_API friend const SgTemplateClassDeclaration* isSgTemplateClassDeclaration( const SgNode * s );
152047 
152048  // ******************************************
152049  // * Memory Pool / New / Delete
152050  // ******************************************
152051 
152052  public:
152054  static const unsigned pool_size; //
152056  static std::vector<unsigned char *> pools; //
152058  static SgTemplateClassDeclaration * next_node; //
152059 
152061  static unsigned long initializeStorageClassArray(SgTemplateClassDeclarationStorageClass *); //
152062 
152064  static void clearMemoryPool(); //
152065  static void deleteMemoryPool(); //
152066 
152068  static void extendMemoryPoolForFileIO(); //
152069 
152071  static SgTemplateClassDeclaration * getPointerFromGlobalIndex(unsigned long); //
152073  static SgTemplateClassDeclaration * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
152074 
152076  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
152078  static void resetValidFreepointers(); //
152080  static unsigned long getNumberOfLastValidPointer(); //
152081 
152082 
152083 #if defined(INLINE_FUNCTIONS)
152084 
152085  inline void *operator new (size_t size);
152086 #else
152087 
152088  void *operator new (size_t size);
152089 #endif
152090 
152091  void operator delete (void* pointer, size_t size);
152092 
152093  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
152094  void operator delete (void* pointer)
152095  {
152096  // This is the generated delete operator...
152097  SgTemplateClassDeclaration::operator delete (pointer,sizeof(SgTemplateClassDeclaration));
152098  }
152099 
152101  static size_t numberOfNodes();
152102 
152104  static size_t memoryUsage();
152105 
152106  // End of scope which started in IR nodes specific code
152107  /* */
152108 
152109  /* name Internal Functions
152110  \brief Internal functions ... incomplete-documentation
152111 
152112  These functions have been made public as part of the design, but they are suggested for internal use
152113  or by particularly knowledgeable users for specialized tools or applications.
152114 
152115  \internal We could not make these private because they are required by user for special purposes. And
152116  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
152117 
152118  */
152119 
152120  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
152121  // overridden in every class by *generated* implementation
152123  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
152124  // MS: 06/28/02 container of names of variables or container indices
152125  // used used in the traversal to access AST successor nodes
152126  // overridden in every class by *generated* implementation
152129  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
152130 
152131  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
152132  // than all the vector copies. The implementation for these functions is generated for each class.
152134  virtual size_t get_numberOfTraversalSuccessors() override;
152136  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
152138  virtual size_t get_childIndex(SgNode *child) override;
152139 
152140 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
152141  // MS: 08/16/2002 method for generating RTI information
152143  virtual RTIReturnType roseRTI() override;
152144 #endif
152145  /* */
152146 
152147 
152148 
152149  /* name Deprecated Functions
152150  \brief Deprecated functions ... incomplete-documentation
152151 
152152  These functions have been deprecated from use.
152153  */
152154  /* */
152155 
152157  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
152158 
152159  // JJW (10/16/2008): Changed to a single function in Node.code, and put
152160  // getVariant() in #if 0 block to prevent confusing Doxygen
152161 #if 0
152162 
152163  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
152165  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
152166 #endif
152167  /* */
152168 
152169 
152170 
152171 
152172  public:
152173  /* name Traversal Support Functions
152174  \brief Traversal support functions ... incomplete-documentation
152175 
152176  These functions have been made public as part of the design, but they are suggested for internal use
152177  or by particularly knowledgable users for specialized tools or applications.
152178  */
152179  /* */
152180 
152181  // DQ (11/26/2005): Support for visitor pattern mechanims
152182  // (inferior to ROSE traversal mechanism, experimental).
152186 
152187  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
152189  virtual void accept (ROSE_VisitorPattern & visitor) override;
152190 
152191  // DQ (12/26/2005): Support for traversal based on the memory pool
152194  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
152195 
152198  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
152199 
152200  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
152201  // This traversal helps support internal tools that call static member functions.
152202  // note: this function operates on the memory pools.
152205  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
152206  /* */
152207 
152208 
152209  public:
152210  /* name Memory Allocation Functions
152211  \brief Memory allocations functions ... incomplete-documentation
152212 
152213  These functions have been made public as part of the design, but they are suggested for internal use
152214  or by particularly knowledgable users for specialized tools or applications.
152215  */
152216  /* */
152217 
152228  virtual bool isInMemoryPool() override;
152229 
152240  virtual void checkDataMemberPointersIfInMemoryPool() override;
152241 
152242  // DQ (4/30/2006): Modified to be a const function.
152257  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
152258 
152268  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
152269 
152281  virtual long getChildIndex( SgNode* childNode ) const override;
152282 
152283  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
152284  // comment here (changed to be a C style comment and not be a doxygen comment).
152285  /* \brief Constructor for use by AST File I/O Mechanism
152286 
152287  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
152288  which obtained via fast binary file I/O from disk.
152289  */
152290  // SgTemplateClassDeclaration( SgTemplateClassDeclarationStorageClass& source );
152291 
152292 
152293 
152294 
152295 
152296  // JH (10/24/2005): methods added to support the ast file IO
152297  private:
152298 
152299  /* name AST Memory Allocation Support Functions
152300  \brief Memory allocations support....
152301 
152302  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
152303  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
152304  and support the AST File I/O Mechanism.
152305  */
152306  /* */
152307 
152308  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
152309  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
152310  that I use the same type everywhere, if any changes are made. THe second one declares the type
152311  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
152312  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
152313  a correspinding one in the AST_FILE_IO class!
152314  */
152315  // DQ (9/2/2015): This typedef is no longer used, we can't define the
152316  // comment here (changed to be a C style comment and not be a doxygen comment).
152317  /* \brief Typedef used for low level memory access.
152318  */
152319  // typedef unsigned char* TestType;
152320 
152321  // DQ (9/2/2015): This typedef is no longer used, we can't define the
152322  // comment here (changed to be a C style comment and not be a doxygen comment).
152323  /* \brief Typedef used to hold memory addresses as values.
152324  */
152325  // typedef unsigned long AddressType;
152326 
152327 
152328 
152329  // necessary, to have direct access to the p_freepointer and the private methods !
152331  friend class AST_FILE_IO;
152332 
152334  friend class SgTemplateClassDeclarationStorageClass;
152335 
152337  friend class AstSpecificDataManagingClass;
152338 
152340  friend class AstSpecificDataManagingClassStorageClass;
152341 
152342  public:
152344  SgTemplateClassDeclaration( const SgTemplateClassDeclarationStorageClass& source );
152345 
152346  // private: // JJW hack
152347  /*
152348  name AST Memory Allocation Support Variables
152349  Memory allocations support variables
152350 
152351  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
152352  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
152353  and support the AST File I/O Mechanism.
152354  */
152355  /* */
152356 
152357  public:
152358 
152359  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
152360  // to current node (so that it will work cleanly with build functions to specify patterns).
152361  // virtual SgNode* addRegExpAttribute();
152368 
152369 // *** COMMON CODE SECTION ENDS HERE ***
152370 
152371 
152372 // End of memberFunctionString
152373 // Start of memberFunctionString
152374 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
152375 
152376  // the generated cast function
152377  // friend ROSE_DLL_API SgTemplateClassDeclaration* isSgTemplateClassDeclaration ( SgNode* s );
152378 
152380 
152381 
152382 // End of memberFunctionString
152383 // Start of memberFunctionString
152384 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
152385 
152386  void post_construction_initialization() override;
152387 
152388 
152389 // End of memberFunctionString
152390 
152391  public:
152392  const SgTemplateParameterPtrList& get_templateParameters() const;
152393  SgTemplateParameterPtrList& get_templateParameters();
152394 
152395  public:
152396  const SgTemplateArgumentPtrList& get_templateSpecializationArguments() const;
152397  SgTemplateArgumentPtrList& get_templateSpecializationArguments();
152398 
152399  public:
152400  SgName get_string() const;
152401  void set_string(SgName string);
152402 
152403  public:
152404  SgName get_templateName() const;
152405  void set_templateName(SgName templateName);
152406 
152407  public:
152408  SgDeclarationScope* get_nonreal_decl_scope() const;
152409  void set_nonreal_decl_scope(SgDeclarationScope* nonreal_decl_scope);
152410 
152411 
152412  public:
152413  virtual ~SgTemplateClassDeclaration();
152414 
152415 
152416  public:
152417  SgTemplateClassDeclaration(Sg_File_Info* startOfConstruct , SgName name = "", SgClassDeclaration::class_types class_type = SgClassDeclaration::e_class, SgClassType* type = NULL, SgClassDefinition* definition = NULL);
152419 
152420  protected:
152421 // Start of memberFunctionString
152422 SgTemplateParameterPtrList p_templateParameters;
152423 
152424 // End of memberFunctionString
152425 // Start of memberFunctionString
152426 SgTemplateArgumentPtrList p_templateSpecializationArguments;
152427 
152428 // End of memberFunctionString
152429 // Start of memberFunctionString
152430 SgName p_string;
152431 
152432 // End of memberFunctionString
152433 // Start of memberFunctionString
152434 SgName p_templateName;
152435 
152436 // End of memberFunctionString
152437 // Start of memberFunctionString
152438 SgDeclarationScope* p_nonreal_decl_scope;
152439 
152440 // End of memberFunctionString
152441 
152442 
152443 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
152444 
152445 
152446  };
152447 #endif
152448 
152449 // postdeclarations for SgTemplateClassDeclaration
152450 
152451 /* #line 152452 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
152452 
152453 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
152454 
152455 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
152456 
152457 
152458 /* #line 152459 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
152459 
152460 
152461 
152462 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
152463 
152464 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
152465 // This code is automatically generated for each
152466 // terminal and non-terminal within the defined
152467 // grammar. There is a simple way to change the
152468 // code to fix bugs etc. See the ROSE README file
152469 // for directions.
152470 
152471 // tps: (02/22/2010): Adding DLL export requirements
152472 #include "rosedll.h"
152473 
152474 // predeclarations for SgTemplateInstantiationDecl
152475 
152476 /* #line 152477 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
152477 
152478 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
152479 
152480 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
152481 
152482 #if 1
152483 // Class Definition for SgTemplateInstantiationDecl
152485  {
152486  public:
152487 
152488 
152489 /* #line 152490 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
152490 
152491  virtual SgNode* copy ( SgCopyHelp& help) const override;
152492 // Start of memberFunctionString
152493 /* #line 2866 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
152494 
152495 
152497 
152498  // DQ (3/21/2004): get_name assembles the full template name with arguments (e.g. "ABC<int>")
152499  void resetTemplateName();
152500  // SgName get_name () const;
152501  // void set_name (SgName name);
152502 
152503  virtual SgName get_qualified_name () const override;
152504 
152505  // RV (1/31/2006): Added mangler for template instantiation declarations.
152506  virtual SgName get_mangled_name (void) const override;
152507 
152508  // DQ (9/23/2004): Added function to hide base class interface so that we would only set the
152509  // definition for a template instantiation declaration using a template instantiation definition.
152510  // At a later point the template instantiation definition will contain more information specific
152511  // to it being a part of a template.
152512  void set_definition( SgTemplateInstantiationDefn* definition );
152513 
152514  // DQ (10/10/2014): Implemented to support Aterm constructor functions.
152515  // Rasmussen (04/17/2019): Support for ATerms has been deprecated. But this may be used elsewhere.
152516  void set_definition( SgClassDefinition* definition );
152517 
152518  // DQ (2/11/2007): Add this to the derived class so that the SgSymbolTable::find() function will work properly
152519  virtual SgSymbol* get_symbol_from_symbol_table() const override;
152520 
152521 #if ALT_FIXUP_COPY
152522  // DQ (11/7/2007): These need to be called separately (see documentation)
152523  virtual void fixupCopy_scopes (SgNode* copy, SgCopyHelp & help) const override;
152524  virtual void fixupCopy_symbols (SgNode* copy, SgCopyHelp & help) const override;
152525  virtual void fixupCopy_references (SgNode* copy, SgCopyHelp & help) const override;
152526 #else
152527  // DQ (11/6/2007): Added fixup function to set scopes not set properly by the ROSETTA generated copy!
152528  virtual void fixupCopy(SgNode* copy, SgCopyHelp & help) const;
152529 #endif
152530 
152531 
152532 
152533 // End of memberFunctionString
152534 // Start of memberFunctionString
152535 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
152536 
152537 // *** COMMON CODE SECTION BEGINS HERE ***
152538 
152539  public:
152540 
152541  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
152542  // and not required which is required to match the other aspects of the copy mechanism code generation.
152543  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
152544  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
152545  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
152546  // virtual SgNode* copy ( const SgCopyHelp & help) const;
152547 
152549  virtual std::string class_name() const override;
152550 
152552  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
152553 
152555  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
152556  // static const VariantT static_variant = V_SgTemplateInstantiationDecl;
152557  enum { static_variant = V_SgTemplateInstantiationDecl };
152558 
152559  /* the generated cast function */
152561  ROSE_DLL_API friend SgTemplateInstantiationDecl* isSgTemplateInstantiationDecl( SgNode * s );
152562 
152564  ROSE_DLL_API friend const SgTemplateInstantiationDecl* isSgTemplateInstantiationDecl( const SgNode * s );
152565 
152566  // ******************************************
152567  // * Memory Pool / New / Delete
152568  // ******************************************
152569 
152570  public:
152572  static const unsigned pool_size; //
152574  static std::vector<unsigned char *> pools; //
152576  static SgTemplateInstantiationDecl * next_node; //
152577 
152579  static unsigned long initializeStorageClassArray(SgTemplateInstantiationDeclStorageClass *); //
152580 
152582  static void clearMemoryPool(); //
152583  static void deleteMemoryPool(); //
152584 
152586  static void extendMemoryPoolForFileIO(); //
152587 
152589  static SgTemplateInstantiationDecl * getPointerFromGlobalIndex(unsigned long); //
152591  static SgTemplateInstantiationDecl * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
152592 
152594  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
152596  static void resetValidFreepointers(); //
152598  static unsigned long getNumberOfLastValidPointer(); //
152599 
152600 
152601 #if defined(INLINE_FUNCTIONS)
152602 
152603  inline void *operator new (size_t size);
152604 #else
152605 
152606  void *operator new (size_t size);
152607 #endif
152608 
152609  void operator delete (void* pointer, size_t size);
152610 
152611  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
152612  void operator delete (void* pointer)
152613  {
152614  // This is the generated delete operator...
152615  SgTemplateInstantiationDecl::operator delete (pointer,sizeof(SgTemplateInstantiationDecl));
152616  }
152617 
152619  static size_t numberOfNodes();
152620 
152622  static size_t memoryUsage();
152623 
152624  // End of scope which started in IR nodes specific code
152625  /* */
152626 
152627  /* name Internal Functions
152628  \brief Internal functions ... incomplete-documentation
152629 
152630  These functions have been made public as part of the design, but they are suggested for internal use
152631  or by particularly knowledgeable users for specialized tools or applications.
152632 
152633  \internal We could not make these private because they are required by user for special purposes. And
152634  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
152635 
152636  */
152637 
152638  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
152639  // overridden in every class by *generated* implementation
152641  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
152642  // MS: 06/28/02 container of names of variables or container indices
152643  // used used in the traversal to access AST successor nodes
152644  // overridden in every class by *generated* implementation
152647  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
152648 
152649  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
152650  // than all the vector copies. The implementation for these functions is generated for each class.
152652  virtual size_t get_numberOfTraversalSuccessors() override;
152654  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
152656  virtual size_t get_childIndex(SgNode *child) override;
152657 
152658 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
152659  // MS: 08/16/2002 method for generating RTI information
152661  virtual RTIReturnType roseRTI() override;
152662 #endif
152663  /* */
152664 
152665 
152666 
152667  /* name Deprecated Functions
152668  \brief Deprecated functions ... incomplete-documentation
152669 
152670  These functions have been deprecated from use.
152671  */
152672  /* */
152673 
152675  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
152676 
152677  // JJW (10/16/2008): Changed to a single function in Node.code, and put
152678  // getVariant() in #if 0 block to prevent confusing Doxygen
152679 #if 0
152680 
152681  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
152683  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
152684 #endif
152685  /* */
152686 
152687 
152688 
152689 
152690  public:
152691  /* name Traversal Support Functions
152692  \brief Traversal support functions ... incomplete-documentation
152693 
152694  These functions have been made public as part of the design, but they are suggested for internal use
152695  or by particularly knowledgable users for specialized tools or applications.
152696  */
152697  /* */
152698 
152699  // DQ (11/26/2005): Support for visitor pattern mechanims
152700  // (inferior to ROSE traversal mechanism, experimental).
152704 
152705  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
152707  virtual void accept (ROSE_VisitorPattern & visitor) override;
152708 
152709  // DQ (12/26/2005): Support for traversal based on the memory pool
152712  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
152713 
152716  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
152717 
152718  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
152719  // This traversal helps support internal tools that call static member functions.
152720  // note: this function operates on the memory pools.
152723  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
152724  /* */
152725 
152726 
152727  public:
152728  /* name Memory Allocation Functions
152729  \brief Memory allocations functions ... incomplete-documentation
152730 
152731  These functions have been made public as part of the design, but they are suggested for internal use
152732  or by particularly knowledgable users for specialized tools or applications.
152733  */
152734  /* */
152735 
152746  virtual bool isInMemoryPool() override;
152747 
152758  virtual void checkDataMemberPointersIfInMemoryPool() override;
152759 
152760  // DQ (4/30/2006): Modified to be a const function.
152775  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
152776 
152786  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
152787 
152799  virtual long getChildIndex( SgNode* childNode ) const override;
152800 
152801  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
152802  // comment here (changed to be a C style comment and not be a doxygen comment).
152803  /* \brief Constructor for use by AST File I/O Mechanism
152804 
152805  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
152806  which obtained via fast binary file I/O from disk.
152807  */
152808  // SgTemplateInstantiationDecl( SgTemplateInstantiationDeclStorageClass& source );
152809 
152810 
152811 
152812 
152813 
152814  // JH (10/24/2005): methods added to support the ast file IO
152815  private:
152816 
152817  /* name AST Memory Allocation Support Functions
152818  \brief Memory allocations support....
152819 
152820  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
152821  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
152822  and support the AST File I/O Mechanism.
152823  */
152824  /* */
152825 
152826  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
152827  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
152828  that I use the same type everywhere, if any changes are made. THe second one declares the type
152829  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
152830  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
152831  a correspinding one in the AST_FILE_IO class!
152832  */
152833  // DQ (9/2/2015): This typedef is no longer used, we can't define the
152834  // comment here (changed to be a C style comment and not be a doxygen comment).
152835  /* \brief Typedef used for low level memory access.
152836  */
152837  // typedef unsigned char* TestType;
152838 
152839  // DQ (9/2/2015): This typedef is no longer used, we can't define the
152840  // comment here (changed to be a C style comment and not be a doxygen comment).
152841  /* \brief Typedef used to hold memory addresses as values.
152842  */
152843  // typedef unsigned long AddressType;
152844 
152845 
152846 
152847  // necessary, to have direct access to the p_freepointer and the private methods !
152849  friend class AST_FILE_IO;
152850 
152852  friend class SgTemplateInstantiationDeclStorageClass;
152853 
152855  friend class AstSpecificDataManagingClass;
152856 
152858  friend class AstSpecificDataManagingClassStorageClass;
152859 
152860  public:
152862  SgTemplateInstantiationDecl( const SgTemplateInstantiationDeclStorageClass& source );
152863 
152864  // private: // JJW hack
152865  /*
152866  name AST Memory Allocation Support Variables
152867  Memory allocations support variables
152868 
152869  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
152870  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
152871  and support the AST File I/O Mechanism.
152872  */
152873  /* */
152874 
152875  public:
152876 
152877  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
152878  // to current node (so that it will work cleanly with build functions to specify patterns).
152879  // virtual SgNode* addRegExpAttribute();
152886 
152887 // *** COMMON CODE SECTION ENDS HERE ***
152888 
152889 
152890 // End of memberFunctionString
152891 // Start of memberFunctionString
152892 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
152893 
152894  // the generated cast function
152895  // friend ROSE_DLL_API SgTemplateInstantiationDecl* isSgTemplateInstantiationDecl ( SgNode* s );
152896 
152898 
152899 
152900 // End of memberFunctionString
152901 // Start of memberFunctionString
152902 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
152903 
152904  void post_construction_initialization() override;
152905 
152906 
152907 // End of memberFunctionString
152908 
152909  public:
152910  SgName get_templateName() const;
152911  void set_templateName(SgName templateName);
152912 
152913  public:
152914  SgName get_templateHeader() const;
152915  void set_templateHeader(SgName templateHeader);
152916 
152917  public:
152918  SgTemplateClassDeclaration* get_templateDeclaration() const;
152919  void set_templateDeclaration(SgTemplateClassDeclaration* templateDeclaration);
152920 
152921  public:
152922  const SgTemplateArgumentPtrList& get_templateArguments() const;
152923  SgTemplateArgumentPtrList& get_templateArguments();
152924 
152925  public:
152926  bool get_nameResetFromMangledForm() const;
152927  void set_nameResetFromMangledForm(bool nameResetFromMangledForm);
152928 
152929 
152930  public:
152931  virtual ~SgTemplateInstantiationDecl();
152932 
152933 
152934  public:
152935  SgTemplateInstantiationDecl(Sg_File_Info* startOfConstruct , SgName name = "", SgClassDeclaration::class_types class_type = SgClassDeclaration::e_class, SgClassType* type = NULL, SgClassDefinition* definition = NULL, SgTemplateClassDeclaration* templateDeclaration = NULL, SgTemplateArgumentPtrList templateArguments = SgTemplateArgumentPtrList());
152936  SgTemplateInstantiationDecl(SgName name, SgClassDeclaration::class_types class_type, SgClassType* type, SgClassDefinition* definition, SgTemplateClassDeclaration* templateDeclaration, SgTemplateArgumentPtrList templateArguments);
152937 
152938  protected:
152939 // Start of memberFunctionString
152941 
152942 // End of memberFunctionString
152943 // Start of memberFunctionString
152945 
152946 // End of memberFunctionString
152947 // Start of memberFunctionString
152949 
152950 // End of memberFunctionString
152951 // Start of memberFunctionString
152952 SgTemplateArgumentPtrList p_templateArguments;
152953 
152954 // End of memberFunctionString
152955 // Start of memberFunctionString
152957 
152958 // End of memberFunctionString
152959 
152960 
152961 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
152962 
152963 
152964  };
152965 #endif
152966 
152967 // postdeclarations for SgTemplateInstantiationDecl
152968 
152969 /* #line 152970 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
152970 
152971 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
152972 
152973 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
152974 
152975 
152976 /* #line 152977 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
152977 
152978 
152979 
152980 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
152981 
152982 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
152983 // This code is automatically generated for each
152984 // terminal and non-terminal within the defined
152985 // grammar. There is a simple way to change the
152986 // code to fix bugs etc. See the ROSE README file
152987 // for directions.
152988 
152989 // tps: (02/22/2010): Adding DLL export requirements
152990 #include "rosedll.h"
152991 
152992 // predeclarations for SgDerivedTypeStatement
152993 
152994 /* #line 152995 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
152995 
152996 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
152997 
152998 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
152999 
153000 #if 1
153001 // Class Definition for SgDerivedTypeStatement
153002 class ROSE_DLL_API SgDerivedTypeStatement : public SgClassDeclaration
153003  {
153004  public:
153005 
153006 
153007 /* #line 153008 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
153008 
153009  virtual SgNode* copy ( SgCopyHelp& help) const override;
153010 // Start of memberFunctionString
153011 /* #line 3680 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
153012 
153013  SgName get_mangled_name() const override;
153014 
153015 
153016 // End of memberFunctionString
153017 // Start of memberFunctionString
153018 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
153019 
153020 // *** COMMON CODE SECTION BEGINS HERE ***
153021 
153022  public:
153023 
153024  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
153025  // and not required which is required to match the other aspects of the copy mechanism code generation.
153026  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
153027  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
153028  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
153029  // virtual SgNode* copy ( const SgCopyHelp & help) const;
153030 
153032  virtual std::string class_name() const override;
153033 
153035  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
153036 
153038  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
153039  // static const VariantT static_variant = V_SgDerivedTypeStatement;
153040  enum { static_variant = V_SgDerivedTypeStatement };
153041 
153042  /* the generated cast function */
153044  ROSE_DLL_API friend SgDerivedTypeStatement* isSgDerivedTypeStatement( SgNode * s );
153045 
153047  ROSE_DLL_API friend const SgDerivedTypeStatement* isSgDerivedTypeStatement( const SgNode * s );
153048 
153049  // ******************************************
153050  // * Memory Pool / New / Delete
153051  // ******************************************
153052 
153053  public:
153055  static const unsigned pool_size; //
153057  static std::vector<unsigned char *> pools; //
153059  static SgDerivedTypeStatement * next_node; //
153060 
153062  static unsigned long initializeStorageClassArray(SgDerivedTypeStatementStorageClass *); //
153063 
153065  static void clearMemoryPool(); //
153066  static void deleteMemoryPool(); //
153067 
153069  static void extendMemoryPoolForFileIO(); //
153070 
153072  static SgDerivedTypeStatement * getPointerFromGlobalIndex(unsigned long); //
153074  static SgDerivedTypeStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
153075 
153077  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
153079  static void resetValidFreepointers(); //
153081  static unsigned long getNumberOfLastValidPointer(); //
153082 
153083 
153084 #if defined(INLINE_FUNCTIONS)
153085 
153086  inline void *operator new (size_t size);
153087 #else
153088 
153089  void *operator new (size_t size);
153090 #endif
153091 
153092  void operator delete (void* pointer, size_t size);
153093 
153094  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
153095  void operator delete (void* pointer)
153096  {
153097  // This is the generated delete operator...
153098  SgDerivedTypeStatement::operator delete (pointer,sizeof(SgDerivedTypeStatement));
153099  }
153100 
153102  static size_t numberOfNodes();
153103 
153105  static size_t memoryUsage();
153106 
153107  // End of scope which started in IR nodes specific code
153108  /* */
153109 
153110  /* name Internal Functions
153111  \brief Internal functions ... incomplete-documentation
153112 
153113  These functions have been made public as part of the design, but they are suggested for internal use
153114  or by particularly knowledgeable users for specialized tools or applications.
153115 
153116  \internal We could not make these private because they are required by user for special purposes. And
153117  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
153118 
153119  */
153120 
153121  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
153122  // overridden in every class by *generated* implementation
153124  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
153125  // MS: 06/28/02 container of names of variables or container indices
153126  // used used in the traversal to access AST successor nodes
153127  // overridden in every class by *generated* implementation
153130  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
153131 
153132  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
153133  // than all the vector copies. The implementation for these functions is generated for each class.
153135  virtual size_t get_numberOfTraversalSuccessors() override;
153137  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
153139  virtual size_t get_childIndex(SgNode *child) override;
153140 
153141 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
153142  // MS: 08/16/2002 method for generating RTI information
153144  virtual RTIReturnType roseRTI() override;
153145 #endif
153146  /* */
153147 
153148 
153149 
153150  /* name Deprecated Functions
153151  \brief Deprecated functions ... incomplete-documentation
153152 
153153  These functions have been deprecated from use.
153154  */
153155  /* */
153156 
153158  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
153159 
153160  // JJW (10/16/2008): Changed to a single function in Node.code, and put
153161  // getVariant() in #if 0 block to prevent confusing Doxygen
153162 #if 0
153163 
153164  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
153166  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
153167 #endif
153168  /* */
153169 
153170 
153171 
153172 
153173  public:
153174  /* name Traversal Support Functions
153175  \brief Traversal support functions ... incomplete-documentation
153176 
153177  These functions have been made public as part of the design, but they are suggested for internal use
153178  or by particularly knowledgable users for specialized tools or applications.
153179  */
153180  /* */
153181 
153182  // DQ (11/26/2005): Support for visitor pattern mechanims
153183  // (inferior to ROSE traversal mechanism, experimental).
153187 
153188  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
153190  virtual void accept (ROSE_VisitorPattern & visitor) override;
153191 
153192  // DQ (12/26/2005): Support for traversal based on the memory pool
153195  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
153196 
153199  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
153200 
153201  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
153202  // This traversal helps support internal tools that call static member functions.
153203  // note: this function operates on the memory pools.
153206  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
153207  /* */
153208 
153209 
153210  public:
153211  /* name Memory Allocation Functions
153212  \brief Memory allocations functions ... incomplete-documentation
153213 
153214  These functions have been made public as part of the design, but they are suggested for internal use
153215  or by particularly knowledgable users for specialized tools or applications.
153216  */
153217  /* */
153218 
153229  virtual bool isInMemoryPool() override;
153230 
153241  virtual void checkDataMemberPointersIfInMemoryPool() override;
153242 
153243  // DQ (4/30/2006): Modified to be a const function.
153258  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
153259 
153269  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
153270 
153282  virtual long getChildIndex( SgNode* childNode ) const override;
153283 
153284  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
153285  // comment here (changed to be a C style comment and not be a doxygen comment).
153286  /* \brief Constructor for use by AST File I/O Mechanism
153287 
153288  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
153289  which obtained via fast binary file I/O from disk.
153290  */
153291  // SgDerivedTypeStatement( SgDerivedTypeStatementStorageClass& source );
153292 
153293 
153294 
153295 
153296 
153297  // JH (10/24/2005): methods added to support the ast file IO
153298  private:
153299 
153300  /* name AST Memory Allocation Support Functions
153301  \brief Memory allocations support....
153302 
153303  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
153304  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
153305  and support the AST File I/O Mechanism.
153306  */
153307  /* */
153308 
153309  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
153310  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
153311  that I use the same type everywhere, if any changes are made. THe second one declares the type
153312  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
153313  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
153314  a correspinding one in the AST_FILE_IO class!
153315  */
153316  // DQ (9/2/2015): This typedef is no longer used, we can't define the
153317  // comment here (changed to be a C style comment and not be a doxygen comment).
153318  /* \brief Typedef used for low level memory access.
153319  */
153320  // typedef unsigned char* TestType;
153321 
153322  // DQ (9/2/2015): This typedef is no longer used, we can't define the
153323  // comment here (changed to be a C style comment and not be a doxygen comment).
153324  /* \brief Typedef used to hold memory addresses as values.
153325  */
153326  // typedef unsigned long AddressType;
153327 
153328 
153329 
153330  // necessary, to have direct access to the p_freepointer and the private methods !
153332  friend class AST_FILE_IO;
153333 
153335  friend class SgDerivedTypeStatementStorageClass;
153336 
153338  friend class AstSpecificDataManagingClass;
153339 
153341  friend class AstSpecificDataManagingClassStorageClass;
153342 
153343  public:
153345  SgDerivedTypeStatement( const SgDerivedTypeStatementStorageClass& source );
153346 
153347  // private: // JJW hack
153348  /*
153349  name AST Memory Allocation Support Variables
153350  Memory allocations support variables
153351 
153352  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
153353  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
153354  and support the AST File I/O Mechanism.
153355  */
153356  /* */
153357 
153358  public:
153359 
153360  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
153361  // to current node (so that it will work cleanly with build functions to specify patterns).
153362  // virtual SgNode* addRegExpAttribute();
153369 
153370 // *** COMMON CODE SECTION ENDS HERE ***
153371 
153372 
153373 // End of memberFunctionString
153374 // Start of memberFunctionString
153375 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
153376 
153377  // the generated cast function
153378  // friend ROSE_DLL_API SgDerivedTypeStatement* isSgDerivedTypeStatement ( SgNode* s );
153379 
153381 
153382 
153383 // End of memberFunctionString
153384 // Start of memberFunctionString
153385 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
153386 
153387  void post_construction_initialization() override;
153388 
153389 
153390 // End of memberFunctionString
153391 
153392  public:
153393  SgLabelRefExp* get_end_numeric_label() const /* (getDataAccessFunctionPrototypeString) */;
153394  void set_end_numeric_label(SgLabelRefExp* end_numeric_label) override /* (getDataAccessFunctionPrototypeString) */;
153395 
153396 
153397  public:
153398  virtual ~SgDerivedTypeStatement();
153399 
153400 
153401  public:
153402  SgDerivedTypeStatement(Sg_File_Info* startOfConstruct , SgName name = "", SgClassDeclaration::class_types class_type = SgClassDeclaration::e_class, SgClassType* type = NULL, SgClassDefinition* definition = NULL);
153404 
153405  protected:
153406 // Start of memberFunctionString
153407 SgLabelRefExp* p_end_numeric_label;
153408 
153409 // End of memberFunctionString
153410 
153411 
153412 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
153413 
153414 
153415  };
153416 #endif
153417 
153418 // postdeclarations for SgDerivedTypeStatement
153419 
153420 /* #line 153421 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
153421 
153422 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
153423 
153424 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
153425 
153426 
153427 /* #line 153428 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
153428 
153429 
153430 
153431 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
153432 
153433 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
153434 // This code is automatically generated for each
153435 // terminal and non-terminal within the defined
153436 // grammar. There is a simple way to change the
153437 // code to fix bugs etc. See the ROSE README file
153438 // for directions.
153439 
153440 // tps: (02/22/2010): Adding DLL export requirements
153441 #include "rosedll.h"
153442 
153443 // predeclarations for SgModuleStatement
153444 
153445 /* #line 153446 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
153446 
153447 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
153448 
153449 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
153450 
153451 #if 1
153452 // Class Definition for SgModuleStatement
153453 class ROSE_DLL_API SgModuleStatement : public SgClassDeclaration
153454  {
153455  public:
153456 
153457 
153458 /* #line 153459 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
153459 
153460  virtual SgNode* copy ( SgCopyHelp& help) const override;
153461 // Start of memberFunctionString
153462 /* #line 3363 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
153463 
153464  virtual SgName get_mangled_name() const override;
153465 
153466 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
153467  virtual unsigned int cfgIndexForEnd() const override;
153468  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
153469  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
153470 #endif
153471 
153472  std::vector<SgInterfaceStatement*> get_interfaces() const;
153473 
153474  // const SgDeclarationStatementPtrList & get_members() const;
153475  // SgDeclarationStatementPtrList & get_members();
153476 
153477  // protected:
153478  // virtual bool replace_child ( SgStatement *,SgStatement *, bool extractListFromBasicBlock = false );
153479  // virtual bool insert_child ( SgStatement*, SgStatement*, bool inFront = true, bool extractListFromBasicBlock = false );
153480 
153481 
153482 
153483 // End of memberFunctionString
153484 // Start of memberFunctionString
153485 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
153486 
153487 // *** COMMON CODE SECTION BEGINS HERE ***
153488 
153489  public:
153490 
153491  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
153492  // and not required which is required to match the other aspects of the copy mechanism code generation.
153493  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
153494  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
153495  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
153496  // virtual SgNode* copy ( const SgCopyHelp & help) const;
153497 
153499  virtual std::string class_name() const override;
153500 
153502  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
153503 
153505  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
153506  // static const VariantT static_variant = V_SgModuleStatement;
153507  enum { static_variant = V_SgModuleStatement };
153508 
153509  /* the generated cast function */
153511  ROSE_DLL_API friend SgModuleStatement* isSgModuleStatement( SgNode * s );
153512 
153514  ROSE_DLL_API friend const SgModuleStatement* isSgModuleStatement( const SgNode * s );
153515 
153516  // ******************************************
153517  // * Memory Pool / New / Delete
153518  // ******************************************
153519 
153520  public:
153522  static const unsigned pool_size; //
153524  static std::vector<unsigned char *> pools; //
153526  static SgModuleStatement * next_node; //
153527 
153529  static unsigned long initializeStorageClassArray(SgModuleStatementStorageClass *); //
153530 
153532  static void clearMemoryPool(); //
153533  static void deleteMemoryPool(); //
153534 
153536  static void extendMemoryPoolForFileIO(); //
153537 
153539  static SgModuleStatement * getPointerFromGlobalIndex(unsigned long); //
153541  static SgModuleStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
153542 
153544  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
153546  static void resetValidFreepointers(); //
153548  static unsigned long getNumberOfLastValidPointer(); //
153549 
153550 
153551 #if defined(INLINE_FUNCTIONS)
153552 
153553  inline void *operator new (size_t size);
153554 #else
153555 
153556  void *operator new (size_t size);
153557 #endif
153558 
153559  void operator delete (void* pointer, size_t size);
153560 
153561  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
153562  void operator delete (void* pointer)
153563  {
153564  // This is the generated delete operator...
153565  SgModuleStatement::operator delete (pointer,sizeof(SgModuleStatement));
153566  }
153567 
153569  static size_t numberOfNodes();
153570 
153572  static size_t memoryUsage();
153573 
153574  // End of scope which started in IR nodes specific code
153575  /* */
153576 
153577  /* name Internal Functions
153578  \brief Internal functions ... incomplete-documentation
153579 
153580  These functions have been made public as part of the design, but they are suggested for internal use
153581  or by particularly knowledgeable users for specialized tools or applications.
153582 
153583  \internal We could not make these private because they are required by user for special purposes. And
153584  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
153585 
153586  */
153587 
153588  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
153589  // overridden in every class by *generated* implementation
153591  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
153592  // MS: 06/28/02 container of names of variables or container indices
153593  // used used in the traversal to access AST successor nodes
153594  // overridden in every class by *generated* implementation
153597  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
153598 
153599  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
153600  // than all the vector copies. The implementation for these functions is generated for each class.
153602  virtual size_t get_numberOfTraversalSuccessors() override;
153604  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
153606  virtual size_t get_childIndex(SgNode *child) override;
153607 
153608 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
153609  // MS: 08/16/2002 method for generating RTI information
153611  virtual RTIReturnType roseRTI() override;
153612 #endif
153613  /* */
153614 
153615 
153616 
153617  /* name Deprecated Functions
153618  \brief Deprecated functions ... incomplete-documentation
153619 
153620  These functions have been deprecated from use.
153621  */
153622  /* */
153623 
153625  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
153626 
153627  // JJW (10/16/2008): Changed to a single function in Node.code, and put
153628  // getVariant() in #if 0 block to prevent confusing Doxygen
153629 #if 0
153630 
153631  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
153633  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
153634 #endif
153635  /* */
153636 
153637 
153638 
153639 
153640  public:
153641  /* name Traversal Support Functions
153642  \brief Traversal support functions ... incomplete-documentation
153643 
153644  These functions have been made public as part of the design, but they are suggested for internal use
153645  or by particularly knowledgable users for specialized tools or applications.
153646  */
153647  /* */
153648 
153649  // DQ (11/26/2005): Support for visitor pattern mechanims
153650  // (inferior to ROSE traversal mechanism, experimental).
153654 
153655  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
153657  virtual void accept (ROSE_VisitorPattern & visitor) override;
153658 
153659  // DQ (12/26/2005): Support for traversal based on the memory pool
153662  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
153663 
153666  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
153667 
153668  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
153669  // This traversal helps support internal tools that call static member functions.
153670  // note: this function operates on the memory pools.
153673  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
153674  /* */
153675 
153676 
153677  public:
153678  /* name Memory Allocation Functions
153679  \brief Memory allocations functions ... incomplete-documentation
153680 
153681  These functions have been made public as part of the design, but they are suggested for internal use
153682  or by particularly knowledgable users for specialized tools or applications.
153683  */
153684  /* */
153685 
153696  virtual bool isInMemoryPool() override;
153697 
153708  virtual void checkDataMemberPointersIfInMemoryPool() override;
153709 
153710  // DQ (4/30/2006): Modified to be a const function.
153725  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
153726 
153736  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
153737 
153749  virtual long getChildIndex( SgNode* childNode ) const override;
153750 
153751  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
153752  // comment here (changed to be a C style comment and not be a doxygen comment).
153753  /* \brief Constructor for use by AST File I/O Mechanism
153754 
153755  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
153756  which obtained via fast binary file I/O from disk.
153757  */
153758  // SgModuleStatement( SgModuleStatementStorageClass& source );
153759 
153760 
153761 
153762 
153763 
153764  // JH (10/24/2005): methods added to support the ast file IO
153765  private:
153766 
153767  /* name AST Memory Allocation Support Functions
153768  \brief Memory allocations support....
153769 
153770  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
153771  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
153772  and support the AST File I/O Mechanism.
153773  */
153774  /* */
153775 
153776  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
153777  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
153778  that I use the same type everywhere, if any changes are made. THe second one declares the type
153779  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
153780  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
153781  a correspinding one in the AST_FILE_IO class!
153782  */
153783  // DQ (9/2/2015): This typedef is no longer used, we can't define the
153784  // comment here (changed to be a C style comment and not be a doxygen comment).
153785  /* \brief Typedef used for low level memory access.
153786  */
153787  // typedef unsigned char* TestType;
153788 
153789  // DQ (9/2/2015): This typedef is no longer used, we can't define the
153790  // comment here (changed to be a C style comment and not be a doxygen comment).
153791  /* \brief Typedef used to hold memory addresses as values.
153792  */
153793  // typedef unsigned long AddressType;
153794 
153795 
153796 
153797  // necessary, to have direct access to the p_freepointer and the private methods !
153799  friend class AST_FILE_IO;
153800 
153802  friend class SgModuleStatementStorageClass;
153803 
153805  friend class AstSpecificDataManagingClass;
153806 
153808  friend class AstSpecificDataManagingClassStorageClass;
153809 
153810  public:
153812  SgModuleStatement( const SgModuleStatementStorageClass& source );
153813 
153814  // private: // JJW hack
153815  /*
153816  name AST Memory Allocation Support Variables
153817  Memory allocations support variables
153818 
153819  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
153820  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
153821  and support the AST File I/O Mechanism.
153822  */
153823  /* */
153824 
153825  public:
153826 
153827  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
153828  // to current node (so that it will work cleanly with build functions to specify patterns).
153829  // virtual SgNode* addRegExpAttribute();
153836 
153837 // *** COMMON CODE SECTION ENDS HERE ***
153838 
153839 
153840 // End of memberFunctionString
153841 // Start of memberFunctionString
153842 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
153843 
153844  // the generated cast function
153845  // friend ROSE_DLL_API SgModuleStatement* isSgModuleStatement ( SgNode* s );
153846 
153848 
153849 
153850 // End of memberFunctionString
153851 // Start of memberFunctionString
153852 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
153853 
153854  void post_construction_initialization() override;
153855 
153856 
153857 // End of memberFunctionString
153858 
153859  public:
153860  SgLabelRefExp* get_end_numeric_label() const /* (getDataAccessFunctionPrototypeString) */;
153861  void set_end_numeric_label(SgLabelRefExp* end_numeric_label) override /* (getDataAccessFunctionPrototypeString) */;
153862 
153863 
153864  public:
153865  virtual ~SgModuleStatement();
153866 
153867 
153868  public:
153869  SgModuleStatement(Sg_File_Info* startOfConstruct , SgName name = "", SgClassDeclaration::class_types class_type = SgClassDeclaration::e_class, SgClassType* type = NULL, SgClassDefinition* definition = NULL);
153870  SgModuleStatement(SgName name, SgClassDeclaration::class_types class_type, SgClassType* type, SgClassDefinition* definition);
153871 
153872  protected:
153873 // Start of memberFunctionString
153874 SgLabelRefExp* p_end_numeric_label;
153875 
153876 // End of memberFunctionString
153877 
153878 
153879 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
153880 
153881 
153882  };
153883 #endif
153884 
153885 // postdeclarations for SgModuleStatement
153886 
153887 /* #line 153888 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
153888 
153889 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
153890 
153891 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
153892 
153893 
153894 /* #line 153895 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
153895 
153896 
153897 
153898 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
153899 
153900 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
153901 // This code is automatically generated for each
153902 // terminal and non-terminal within the defined
153903 // grammar. There is a simple way to change the
153904 // code to fix bugs etc. See the ROSE README file
153905 // for directions.
153906 
153907 // tps: (02/22/2010): Adding DLL export requirements
153908 #include "rosedll.h"
153909 
153910 // predeclarations for SgImplicitStatement
153911 
153912 /* #line 153913 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
153913 
153914 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
153915 
153916 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
153917 
153918 #if 1
153919 // Class Definition for SgImplicitStatement
153921  {
153922  public:
153923 
153924 
153925 /* #line 153926 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
153926 
153927  virtual SgNode* copy ( SgCopyHelp& help) const override;
153928 // Start of memberFunctionString
153929 /* #line 3621 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
153930 
153931 
153934  {
153935  e_unknown_implicit_spec = 0,
153940  e_none_external_and_type
153941  };
153942 
153943  SgName get_mangled_name() const override;
153944 
153945 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
153946  virtual unsigned int cfgIndexForEnd() const override;
153947  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
153948  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
153949 #endif
153950 
153951 
153952 
153953 // End of memberFunctionString
153954 // Start of memberFunctionString
153955 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
153956 
153957 // *** COMMON CODE SECTION BEGINS HERE ***
153958 
153959  public:
153960 
153961  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
153962  // and not required which is required to match the other aspects of the copy mechanism code generation.
153963  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
153964  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
153965  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
153966  // virtual SgNode* copy ( const SgCopyHelp & help) const;
153967 
153969  virtual std::string class_name() const override;
153970 
153972  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
153973 
153975  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
153976  // static const VariantT static_variant = V_SgImplicitStatement;
153977  enum { static_variant = V_SgImplicitStatement };
153978 
153979  /* the generated cast function */
153981  ROSE_DLL_API friend SgImplicitStatement* isSgImplicitStatement( SgNode * s );
153982 
153984  ROSE_DLL_API friend const SgImplicitStatement* isSgImplicitStatement( const SgNode * s );
153985 
153986  // ******************************************
153987  // * Memory Pool / New / Delete
153988  // ******************************************
153989 
153990  public:
153992  static const unsigned pool_size; //
153994  static std::vector<unsigned char *> pools; //
153996  static SgImplicitStatement * next_node; //
153997 
153999  static unsigned long initializeStorageClassArray(SgImplicitStatementStorageClass *); //
154000 
154002  static void clearMemoryPool(); //
154003  static void deleteMemoryPool(); //
154004 
154006  static void extendMemoryPoolForFileIO(); //
154007 
154009  static SgImplicitStatement * getPointerFromGlobalIndex(unsigned long); //
154011  static SgImplicitStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
154012 
154014  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
154016  static void resetValidFreepointers(); //
154018  static unsigned long getNumberOfLastValidPointer(); //
154019 
154020 
154021 #if defined(INLINE_FUNCTIONS)
154022 
154023  inline void *operator new (size_t size);
154024 #else
154025 
154026  void *operator new (size_t size);
154027 #endif
154028 
154029  void operator delete (void* pointer, size_t size);
154030 
154031  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
154032  void operator delete (void* pointer)
154033  {
154034  // This is the generated delete operator...
154035  SgImplicitStatement::operator delete (pointer,sizeof(SgImplicitStatement));
154036  }
154037 
154039  static size_t numberOfNodes();
154040 
154042  static size_t memoryUsage();
154043 
154044  // End of scope which started in IR nodes specific code
154045  /* */
154046 
154047  /* name Internal Functions
154048  \brief Internal functions ... incomplete-documentation
154049 
154050  These functions have been made public as part of the design, but they are suggested for internal use
154051  or by particularly knowledgeable users for specialized tools or applications.
154052 
154053  \internal We could not make these private because they are required by user for special purposes. And
154054  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
154055 
154056  */
154057 
154058  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
154059  // overridden in every class by *generated* implementation
154061  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
154062  // MS: 06/28/02 container of names of variables or container indices
154063  // used used in the traversal to access AST successor nodes
154064  // overridden in every class by *generated* implementation
154067  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
154068 
154069  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
154070  // than all the vector copies. The implementation for these functions is generated for each class.
154072  virtual size_t get_numberOfTraversalSuccessors() override;
154074  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
154076  virtual size_t get_childIndex(SgNode *child) override;
154077 
154078 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
154079  // MS: 08/16/2002 method for generating RTI information
154081  virtual RTIReturnType roseRTI() override;
154082 #endif
154083  /* */
154084 
154085 
154086 
154087  /* name Deprecated Functions
154088  \brief Deprecated functions ... incomplete-documentation
154089 
154090  These functions have been deprecated from use.
154091  */
154092  /* */
154093 
154095  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
154096 
154097  // JJW (10/16/2008): Changed to a single function in Node.code, and put
154098  // getVariant() in #if 0 block to prevent confusing Doxygen
154099 #if 0
154100 
154101  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
154103  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
154104 #endif
154105  /* */
154106 
154107 
154108 
154109 
154110  public:
154111  /* name Traversal Support Functions
154112  \brief Traversal support functions ... incomplete-documentation
154113 
154114  These functions have been made public as part of the design, but they are suggested for internal use
154115  or by particularly knowledgable users for specialized tools or applications.
154116  */
154117  /* */
154118 
154119  // DQ (11/26/2005): Support for visitor pattern mechanims
154120  // (inferior to ROSE traversal mechanism, experimental).
154124 
154125  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
154127  virtual void accept (ROSE_VisitorPattern & visitor) override;
154128 
154129  // DQ (12/26/2005): Support for traversal based on the memory pool
154132  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
154133 
154136  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
154137 
154138  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
154139  // This traversal helps support internal tools that call static member functions.
154140  // note: this function operates on the memory pools.
154143  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
154144  /* */
154145 
154146 
154147  public:
154148  /* name Memory Allocation Functions
154149  \brief Memory allocations functions ... incomplete-documentation
154150 
154151  These functions have been made public as part of the design, but they are suggested for internal use
154152  or by particularly knowledgable users for specialized tools or applications.
154153  */
154154  /* */
154155 
154166  virtual bool isInMemoryPool() override;
154167 
154178  virtual void checkDataMemberPointersIfInMemoryPool() override;
154179 
154180  // DQ (4/30/2006): Modified to be a const function.
154195  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
154196 
154206  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
154207 
154219  virtual long getChildIndex( SgNode* childNode ) const override;
154220 
154221  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
154222  // comment here (changed to be a C style comment and not be a doxygen comment).
154223  /* \brief Constructor for use by AST File I/O Mechanism
154224 
154225  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
154226  which obtained via fast binary file I/O from disk.
154227  */
154228  // SgImplicitStatement( SgImplicitStatementStorageClass& source );
154229 
154230 
154231 
154232 
154233 
154234  // JH (10/24/2005): methods added to support the ast file IO
154235  private:
154236 
154237  /* name AST Memory Allocation Support Functions
154238  \brief Memory allocations support....
154239 
154240  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
154241  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
154242  and support the AST File I/O Mechanism.
154243  */
154244  /* */
154245 
154246  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
154247  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
154248  that I use the same type everywhere, if any changes are made. THe second one declares the type
154249  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
154250  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
154251  a correspinding one in the AST_FILE_IO class!
154252  */
154253  // DQ (9/2/2015): This typedef is no longer used, we can't define the
154254  // comment here (changed to be a C style comment and not be a doxygen comment).
154255  /* \brief Typedef used for low level memory access.
154256  */
154257  // typedef unsigned char* TestType;
154258 
154259  // DQ (9/2/2015): This typedef is no longer used, we can't define the
154260  // comment here (changed to be a C style comment and not be a doxygen comment).
154261  /* \brief Typedef used to hold memory addresses as values.
154262  */
154263  // typedef unsigned long AddressType;
154264 
154265 
154266 
154267  // necessary, to have direct access to the p_freepointer and the private methods !
154269  friend class AST_FILE_IO;
154270 
154272  friend class SgImplicitStatementStorageClass;
154273 
154275  friend class AstSpecificDataManagingClass;
154276 
154278  friend class AstSpecificDataManagingClassStorageClass;
154279 
154280  public:
154282  SgImplicitStatement( const SgImplicitStatementStorageClass& source );
154283 
154284  // private: // JJW hack
154285  /*
154286  name AST Memory Allocation Support Variables
154287  Memory allocations support variables
154288 
154289  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
154290  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
154291  and support the AST File I/O Mechanism.
154292  */
154293  /* */
154294 
154295  public:
154296 
154297  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
154298  // to current node (so that it will work cleanly with build functions to specify patterns).
154299  // virtual SgNode* addRegExpAttribute();
154306 
154307 // *** COMMON CODE SECTION ENDS HERE ***
154308 
154309 
154310 // End of memberFunctionString
154311 // Start of memberFunctionString
154312 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
154313 
154314  // the generated cast function
154315  // friend ROSE_DLL_API SgImplicitStatement* isSgImplicitStatement ( SgNode* s );
154316 
154318 
154319 
154320 // End of memberFunctionString
154321 // Start of memberFunctionString
154322 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
154323 
154324  void post_construction_initialization() override;
154325 
154326 
154327 // End of memberFunctionString
154328 
154329  public:
154330  bool get_implicit_none() const;
154331  void set_implicit_none(bool implicit_none);
154332 
154333  public:
154334  SgImplicitStatement::implicit_spec_enum get_implicit_spec() const;
154335  void set_implicit_spec(SgImplicitStatement::implicit_spec_enum implicit_spec);
154336 
154337  public:
154338  const SgInitializedNamePtrList& get_variables() const;
154339  SgInitializedNamePtrList& get_variables();
154340 
154341 
154342  public:
154343  virtual ~SgImplicitStatement();
154344 
154345 
154346  public:
154347  SgImplicitStatement(Sg_File_Info* startOfConstruct , bool implicit_none = false);
154348  SgImplicitStatement(bool implicit_none);
154349 
154350  protected:
154351 // Start of memberFunctionString
154352 bool p_implicit_none;
154353 
154354 // End of memberFunctionString
154355 // Start of memberFunctionString
154357 
154358 // End of memberFunctionString
154359 // Start of memberFunctionString
154360 SgInitializedNamePtrList p_variables;
154361 
154362 // End of memberFunctionString
154363 
154364 
154365 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
154366 
154367 
154368  };
154369 #endif
154370 
154371 // postdeclarations for SgImplicitStatement
154372 
154373 /* #line 154374 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
154374 
154375 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
154376 
154377 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
154378 
154379 
154380 /* #line 154381 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
154381 
154382 
154383 
154384 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
154385 
154386 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
154387 // This code is automatically generated for each
154388 // terminal and non-terminal within the defined
154389 // grammar. There is a simple way to change the
154390 // code to fix bugs etc. See the ROSE README file
154391 // for directions.
154392 
154393 // tps: (02/22/2010): Adding DLL export requirements
154394 #include "rosedll.h"
154395 
154396 // predeclarations for SgUsingDeclarationStatement
154397 
154398 /* #line 154399 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
154399 
154400 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
154401 
154402 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
154403 
154404 #if 1
154405 // Class Definition for SgUsingDeclarationStatement
154407  {
154408  public:
154409 
154410 
154411 /* #line 154412 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
154412 
154413  virtual SgNode* copy ( SgCopyHelp& help) const override;
154414 // Start of memberFunctionString
154415 /* #line 3183 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
154416 
154417 
154418 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
154419  virtual unsigned int cfgIndexForEnd() const override;
154420  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
154421  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
154422 #endif
154423 
154424 // DQ (7/21/2005): The using declaration can reference either a SgDeclarationStatement or a SgInitializedName
154425 // object thus we need a single more general function to return whatever it is. Maybe not!
154426 
154427  // DQ (2/18/2006): Added general name mangling for all declarations (and some other IR nodes).
154428  virtual SgName get_mangled_name(void) const override;
154429 
154430  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
154431  int get_name_qualification_length() const;
154432  void set_name_qualification_length(int name_qualification_length);
154433 
154434  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
154435  bool get_type_elaboration_required() const;
154436  void set_type_elaboration_required(bool type_elaboration_required);
154437 
154438  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
154439  bool get_global_qualification_required() const;
154440  void set_global_qualification_required(bool global_qualification_required);
154441 
154442 
154443 
154444 // End of memberFunctionString
154445 // Start of memberFunctionString
154446 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
154447 
154448 // *** COMMON CODE SECTION BEGINS HERE ***
154449 
154450  public:
154451 
154452  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
154453  // and not required which is required to match the other aspects of the copy mechanism code generation.
154454  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
154455  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
154456  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
154457  // virtual SgNode* copy ( const SgCopyHelp & help) const;
154458 
154460  virtual std::string class_name() const override;
154461 
154463  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
154464 
154466  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
154467  // static const VariantT static_variant = V_SgUsingDeclarationStatement;
154468  enum { static_variant = V_SgUsingDeclarationStatement };
154469 
154470  /* the generated cast function */
154472  ROSE_DLL_API friend SgUsingDeclarationStatement* isSgUsingDeclarationStatement( SgNode * s );
154473 
154475  ROSE_DLL_API friend const SgUsingDeclarationStatement* isSgUsingDeclarationStatement( const SgNode * s );
154476 
154477  // ******************************************
154478  // * Memory Pool / New / Delete
154479  // ******************************************
154480 
154481  public:
154483  static const unsigned pool_size; //
154485  static std::vector<unsigned char *> pools; //
154487  static SgUsingDeclarationStatement * next_node; //
154488 
154490  static unsigned long initializeStorageClassArray(SgUsingDeclarationStatementStorageClass *); //
154491 
154493  static void clearMemoryPool(); //
154494  static void deleteMemoryPool(); //
154495 
154497  static void extendMemoryPoolForFileIO(); //
154498 
154500  static SgUsingDeclarationStatement * getPointerFromGlobalIndex(unsigned long); //
154502  static SgUsingDeclarationStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
154503 
154505  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
154507  static void resetValidFreepointers(); //
154509  static unsigned long getNumberOfLastValidPointer(); //
154510 
154511 
154512 #if defined(INLINE_FUNCTIONS)
154513 
154514  inline void *operator new (size_t size);
154515 #else
154516 
154517  void *operator new (size_t size);
154518 #endif
154519 
154520  void operator delete (void* pointer, size_t size);
154521 
154522  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
154523  void operator delete (void* pointer)
154524  {
154525  // This is the generated delete operator...
154526  SgUsingDeclarationStatement::operator delete (pointer,sizeof(SgUsingDeclarationStatement));
154527  }
154528 
154530  static size_t numberOfNodes();
154531 
154533  static size_t memoryUsage();
154534 
154535  // End of scope which started in IR nodes specific code
154536  /* */
154537 
154538  /* name Internal Functions
154539  \brief Internal functions ... incomplete-documentation
154540 
154541  These functions have been made public as part of the design, but they are suggested for internal use
154542  or by particularly knowledgeable users for specialized tools or applications.
154543 
154544  \internal We could not make these private because they are required by user for special purposes. And
154545  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
154546 
154547  */
154548 
154549  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
154550  // overridden in every class by *generated* implementation
154552  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
154553  // MS: 06/28/02 container of names of variables or container indices
154554  // used used in the traversal to access AST successor nodes
154555  // overridden in every class by *generated* implementation
154558  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
154559 
154560  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
154561  // than all the vector copies. The implementation for these functions is generated for each class.
154563  virtual size_t get_numberOfTraversalSuccessors() override;
154565  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
154567  virtual size_t get_childIndex(SgNode *child) override;
154568 
154569 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
154570  // MS: 08/16/2002 method for generating RTI information
154572  virtual RTIReturnType roseRTI() override;
154573 #endif
154574  /* */
154575 
154576 
154577 
154578  /* name Deprecated Functions
154579  \brief Deprecated functions ... incomplete-documentation
154580 
154581  These functions have been deprecated from use.
154582  */
154583  /* */
154584 
154586  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
154587 
154588  // JJW (10/16/2008): Changed to a single function in Node.code, and put
154589  // getVariant() in #if 0 block to prevent confusing Doxygen
154590 #if 0
154591 
154592  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
154594  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
154595 #endif
154596  /* */
154597 
154598 
154599 
154600 
154601  public:
154602  /* name Traversal Support Functions
154603  \brief Traversal support functions ... incomplete-documentation
154604 
154605  These functions have been made public as part of the design, but they are suggested for internal use
154606  or by particularly knowledgable users for specialized tools or applications.
154607  */
154608  /* */
154609 
154610  // DQ (11/26/2005): Support for visitor pattern mechanims
154611  // (inferior to ROSE traversal mechanism, experimental).
154615 
154616  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
154618  virtual void accept (ROSE_VisitorPattern & visitor) override;
154619 
154620  // DQ (12/26/2005): Support for traversal based on the memory pool
154623  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
154624 
154627  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
154628 
154629  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
154630  // This traversal helps support internal tools that call static member functions.
154631  // note: this function operates on the memory pools.
154634  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
154635  /* */
154636 
154637 
154638  public:
154639  /* name Memory Allocation Functions
154640  \brief Memory allocations functions ... incomplete-documentation
154641 
154642  These functions have been made public as part of the design, but they are suggested for internal use
154643  or by particularly knowledgable users for specialized tools or applications.
154644  */
154645  /* */
154646 
154657  virtual bool isInMemoryPool() override;
154658 
154669  virtual void checkDataMemberPointersIfInMemoryPool() override;
154670 
154671  // DQ (4/30/2006): Modified to be a const function.
154686  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
154687 
154697  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
154698 
154710  virtual long getChildIndex( SgNode* childNode ) const override;
154711 
154712  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
154713  // comment here (changed to be a C style comment and not be a doxygen comment).
154714  /* \brief Constructor for use by AST File I/O Mechanism
154715 
154716  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
154717  which obtained via fast binary file I/O from disk.
154718  */
154719  // SgUsingDeclarationStatement( SgUsingDeclarationStatementStorageClass& source );
154720 
154721 
154722 
154723 
154724 
154725  // JH (10/24/2005): methods added to support the ast file IO
154726  private:
154727 
154728  /* name AST Memory Allocation Support Functions
154729  \brief Memory allocations support....
154730 
154731  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
154732  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
154733  and support the AST File I/O Mechanism.
154734  */
154735  /* */
154736 
154737  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
154738  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
154739  that I use the same type everywhere, if any changes are made. THe second one declares the type
154740  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
154741  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
154742  a correspinding one in the AST_FILE_IO class!
154743  */
154744  // DQ (9/2/2015): This typedef is no longer used, we can't define the
154745  // comment here (changed to be a C style comment and not be a doxygen comment).
154746  /* \brief Typedef used for low level memory access.
154747  */
154748  // typedef unsigned char* TestType;
154749 
154750  // DQ (9/2/2015): This typedef is no longer used, we can't define the
154751  // comment here (changed to be a C style comment and not be a doxygen comment).
154752  /* \brief Typedef used to hold memory addresses as values.
154753  */
154754  // typedef unsigned long AddressType;
154755 
154756 
154757 
154758  // necessary, to have direct access to the p_freepointer and the private methods !
154760  friend class AST_FILE_IO;
154761 
154763  friend class SgUsingDeclarationStatementStorageClass;
154764 
154766  friend class AstSpecificDataManagingClass;
154767 
154769  friend class AstSpecificDataManagingClassStorageClass;
154770 
154771  public:
154773  SgUsingDeclarationStatement( const SgUsingDeclarationStatementStorageClass& source );
154774 
154775  // private: // JJW hack
154776  /*
154777  name AST Memory Allocation Support Variables
154778  Memory allocations support variables
154779 
154780  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
154781  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
154782  and support the AST File I/O Mechanism.
154783  */
154784  /* */
154785 
154786  public:
154787 
154788  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
154789  // to current node (so that it will work cleanly with build functions to specify patterns).
154790  // virtual SgNode* addRegExpAttribute();
154797 
154798 // *** COMMON CODE SECTION ENDS HERE ***
154799 
154800 
154801 // End of memberFunctionString
154802 // Start of memberFunctionString
154803 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
154804 
154805  // the generated cast function
154806  // friend ROSE_DLL_API SgUsingDeclarationStatement* isSgUsingDeclarationStatement ( SgNode* s );
154807 
154809 
154810 
154811 // End of memberFunctionString
154812 // Start of memberFunctionString
154813 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
154814 
154815  void post_construction_initialization() override;
154816 
154817 
154818 // End of memberFunctionString
154819 
154820  public:
154821  SgDeclarationStatement* get_declaration() const;
154822  void set_declaration(SgDeclarationStatement* declaration);
154823 
154824  public:
154825  SgInitializedName* get_initializedName() const;
154826  void set_initializedName(SgInitializedName* initializedName);
154827 
154828 
154829 
154830 
154831  public:
154832  bool get_is_inheriting_constructor() const;
154833  void set_is_inheriting_constructor(bool is_inheriting_constructor);
154834 
154835 
154836  public:
154837  virtual ~SgUsingDeclarationStatement();
154838 
154839 
154840  public:
154841  SgUsingDeclarationStatement(Sg_File_Info* startOfConstruct , SgDeclarationStatement* declaration = NULL, SgInitializedName* initializedName = NULL);
154842  SgUsingDeclarationStatement(SgDeclarationStatement* declaration, SgInitializedName* initializedName);
154843 
154844  protected:
154845 // Start of memberFunctionString
154847 
154848 // End of memberFunctionString
154849 // Start of memberFunctionString
154851 
154852 // End of memberFunctionString
154853 // Start of memberFunctionString
154854 int p_name_qualification_length;
154855 
154856 // End of memberFunctionString
154857 // Start of memberFunctionString
154858 bool p_type_elaboration_required;
154859 
154860 // End of memberFunctionString
154861 // Start of memberFunctionString
154862 bool p_global_qualification_required;
154863 
154864 // End of memberFunctionString
154865 // Start of memberFunctionString
154866 bool p_is_inheriting_constructor;
154867 
154868 // End of memberFunctionString
154869 
154870 
154871 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
154872 
154873 
154874  };
154875 #endif
154876 
154877 // postdeclarations for SgUsingDeclarationStatement
154878 
154879 /* #line 154880 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
154880 
154881 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
154882 
154883 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
154884 
154885 
154886 /* #line 154887 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
154887 
154888 
154889 
154890 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
154891 
154892 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
154893 // This code is automatically generated for each
154894 // terminal and non-terminal within the defined
154895 // grammar. There is a simple way to change the
154896 // code to fix bugs etc. See the ROSE README file
154897 // for directions.
154898 
154899 // tps: (02/22/2010): Adding DLL export requirements
154900 #include "rosedll.h"
154901 
154902 // predeclarations for SgNamelistStatement
154903 
154904 /* #line 154905 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
154905 
154906 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
154907 
154908 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
154909 
154910 #if 1
154911 // Class Definition for SgNamelistStatement
154913  {
154914  public:
154915 
154916 
154917 /* #line 154918 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
154918 
154919  virtual SgNode* copy ( SgCopyHelp& help) const override;
154920 // Start of memberFunctionString
154921 /* #line 3792 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
154922 
154923 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
154924  virtual unsigned int cfgIndexForEnd() const override;
154925  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
154926  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
154927 #endif
154928 
154929  virtual SgName get_mangled_name() const override;
154930 
154931  const SgNameGroupPtrList & get_group_list() const;
154932  SgNameGroupPtrList & get_group_list();
154933 
154934 
154935 // End of memberFunctionString
154936 // Start of memberFunctionString
154937 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
154938 
154939 // *** COMMON CODE SECTION BEGINS HERE ***
154940 
154941  public:
154942 
154943  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
154944  // and not required which is required to match the other aspects of the copy mechanism code generation.
154945  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
154946  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
154947  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
154948  // virtual SgNode* copy ( const SgCopyHelp & help) const;
154949 
154951  virtual std::string class_name() const override;
154952 
154954  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
154955 
154957  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
154958  // static const VariantT static_variant = V_SgNamelistStatement;
154959  enum { static_variant = V_SgNamelistStatement };
154960 
154961  /* the generated cast function */
154963  ROSE_DLL_API friend SgNamelistStatement* isSgNamelistStatement( SgNode * s );
154964 
154966  ROSE_DLL_API friend const SgNamelistStatement* isSgNamelistStatement( const SgNode * s );
154967 
154968  // ******************************************
154969  // * Memory Pool / New / Delete
154970  // ******************************************
154971 
154972  public:
154974  static const unsigned pool_size; //
154976  static std::vector<unsigned char *> pools; //
154978  static SgNamelistStatement * next_node; //
154979 
154981  static unsigned long initializeStorageClassArray(SgNamelistStatementStorageClass *); //
154982 
154984  static void clearMemoryPool(); //
154985  static void deleteMemoryPool(); //
154986 
154988  static void extendMemoryPoolForFileIO(); //
154989 
154991  static SgNamelistStatement * getPointerFromGlobalIndex(unsigned long); //
154993  static SgNamelistStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
154994 
154996  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
154998  static void resetValidFreepointers(); //
155000  static unsigned long getNumberOfLastValidPointer(); //
155001 
155002 
155003 #if defined(INLINE_FUNCTIONS)
155004 
155005  inline void *operator new (size_t size);
155006 #else
155007 
155008  void *operator new (size_t size);
155009 #endif
155010 
155011  void operator delete (void* pointer, size_t size);
155012 
155013  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
155014  void operator delete (void* pointer)
155015  {
155016  // This is the generated delete operator...
155017  SgNamelistStatement::operator delete (pointer,sizeof(SgNamelistStatement));
155018  }
155019 
155021  static size_t numberOfNodes();
155022 
155024  static size_t memoryUsage();
155025 
155026  // End of scope which started in IR nodes specific code
155027  /* */
155028 
155029  /* name Internal Functions
155030  \brief Internal functions ... incomplete-documentation
155031 
155032  These functions have been made public as part of the design, but they are suggested for internal use
155033  or by particularly knowledgeable users for specialized tools or applications.
155034 
155035  \internal We could not make these private because they are required by user for special purposes. And
155036  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
155037 
155038  */
155039 
155040  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
155041  // overridden in every class by *generated* implementation
155043  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
155044  // MS: 06/28/02 container of names of variables or container indices
155045  // used used in the traversal to access AST successor nodes
155046  // overridden in every class by *generated* implementation
155049  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
155050 
155051  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
155052  // than all the vector copies. The implementation for these functions is generated for each class.
155054  virtual size_t get_numberOfTraversalSuccessors() override;
155056  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
155058  virtual size_t get_childIndex(SgNode *child) override;
155059 
155060 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
155061  // MS: 08/16/2002 method for generating RTI information
155063  virtual RTIReturnType roseRTI() override;
155064 #endif
155065  /* */
155066 
155067 
155068 
155069  /* name Deprecated Functions
155070  \brief Deprecated functions ... incomplete-documentation
155071 
155072  These functions have been deprecated from use.
155073  */
155074  /* */
155075 
155077  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
155078 
155079  // JJW (10/16/2008): Changed to a single function in Node.code, and put
155080  // getVariant() in #if 0 block to prevent confusing Doxygen
155081 #if 0
155082 
155083  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
155085  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
155086 #endif
155087  /* */
155088 
155089 
155090 
155091 
155092  public:
155093  /* name Traversal Support Functions
155094  \brief Traversal support functions ... incomplete-documentation
155095 
155096  These functions have been made public as part of the design, but they are suggested for internal use
155097  or by particularly knowledgable users for specialized tools or applications.
155098  */
155099  /* */
155100 
155101  // DQ (11/26/2005): Support for visitor pattern mechanims
155102  // (inferior to ROSE traversal mechanism, experimental).
155106 
155107  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
155109  virtual void accept (ROSE_VisitorPattern & visitor) override;
155110 
155111  // DQ (12/26/2005): Support for traversal based on the memory pool
155114  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
155115 
155118  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
155119 
155120  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
155121  // This traversal helps support internal tools that call static member functions.
155122  // note: this function operates on the memory pools.
155125  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
155126  /* */
155127 
155128 
155129  public:
155130  /* name Memory Allocation Functions
155131  \brief Memory allocations functions ... incomplete-documentation
155132 
155133  These functions have been made public as part of the design, but they are suggested for internal use
155134  or by particularly knowledgable users for specialized tools or applications.
155135  */
155136  /* */
155137 
155148  virtual bool isInMemoryPool() override;
155149 
155160  virtual void checkDataMemberPointersIfInMemoryPool() override;
155161 
155162  // DQ (4/30/2006): Modified to be a const function.
155177  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
155178 
155188  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
155189 
155201  virtual long getChildIndex( SgNode* childNode ) const override;
155202 
155203  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
155204  // comment here (changed to be a C style comment and not be a doxygen comment).
155205  /* \brief Constructor for use by AST File I/O Mechanism
155206 
155207  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
155208  which obtained via fast binary file I/O from disk.
155209  */
155210  // SgNamelistStatement( SgNamelistStatementStorageClass& source );
155211 
155212 
155213 
155214 
155215 
155216  // JH (10/24/2005): methods added to support the ast file IO
155217  private:
155218 
155219  /* name AST Memory Allocation Support Functions
155220  \brief Memory allocations support....
155221 
155222  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
155223  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
155224  and support the AST File I/O Mechanism.
155225  */
155226  /* */
155227 
155228  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
155229  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
155230  that I use the same type everywhere, if any changes are made. THe second one declares the type
155231  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
155232  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
155233  a correspinding one in the AST_FILE_IO class!
155234  */
155235  // DQ (9/2/2015): This typedef is no longer used, we can't define the
155236  // comment here (changed to be a C style comment and not be a doxygen comment).
155237  /* \brief Typedef used for low level memory access.
155238  */
155239  // typedef unsigned char* TestType;
155240 
155241  // DQ (9/2/2015): This typedef is no longer used, we can't define the
155242  // comment here (changed to be a C style comment and not be a doxygen comment).
155243  /* \brief Typedef used to hold memory addresses as values.
155244  */
155245  // typedef unsigned long AddressType;
155246 
155247 
155248 
155249  // necessary, to have direct access to the p_freepointer and the private methods !
155251  friend class AST_FILE_IO;
155252 
155254  friend class SgNamelistStatementStorageClass;
155255 
155257  friend class AstSpecificDataManagingClass;
155258 
155260  friend class AstSpecificDataManagingClassStorageClass;
155261 
155262  public:
155264  SgNamelistStatement( const SgNamelistStatementStorageClass& source );
155265 
155266  // private: // JJW hack
155267  /*
155268  name AST Memory Allocation Support Variables
155269  Memory allocations support variables
155270 
155271  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
155272  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
155273  and support the AST File I/O Mechanism.
155274  */
155275  /* */
155276 
155277  public:
155278 
155279  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
155280  // to current node (so that it will work cleanly with build functions to specify patterns).
155281  // virtual SgNode* addRegExpAttribute();
155288 
155289 // *** COMMON CODE SECTION ENDS HERE ***
155290 
155291 
155292 // End of memberFunctionString
155293 // Start of memberFunctionString
155294 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
155295 
155296  // the generated cast function
155297  // friend ROSE_DLL_API SgNamelistStatement* isSgNamelistStatement ( SgNode* s );
155298 
155300 
155301 
155302 // End of memberFunctionString
155303 // Start of memberFunctionString
155304 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
155305 
155306  void post_construction_initialization() override;
155307 
155308 
155309 // End of memberFunctionString
155310 
155311 
155312 
155313  public:
155314  virtual ~SgNamelistStatement();
155315 
155316 
155317  public:
155318  SgNamelistStatement(Sg_File_Info* startOfConstruct );
155319  SgNamelistStatement();
155320 
155321  protected:
155322 // Start of memberFunctionString
155323 SgNameGroupPtrList p_group_list;
155324 
155325 // End of memberFunctionString
155326 
155327 
155328 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
155329 
155330 
155331  };
155332 #endif
155333 
155334 // postdeclarations for SgNamelistStatement
155335 
155336 /* #line 155337 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
155337 
155338 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
155339 
155340 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
155341 
155342 
155343 /* #line 155344 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
155344 
155345 
155346 
155347 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
155348 
155349 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
155350 // This code is automatically generated for each
155351 // terminal and non-terminal within the defined
155352 // grammar. There is a simple way to change the
155353 // code to fix bugs etc. See the ROSE README file
155354 // for directions.
155355 
155356 // tps: (02/22/2010): Adding DLL export requirements
155357 #include "rosedll.h"
155358 
155359 // predeclarations for SgImportStatement
155360 
155361 /* #line 155362 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
155362 
155363 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
155364 
155365 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
155366 
155367 #if 1
155368 // Class Definition for SgImportStatement
155369 class ROSE_DLL_API SgImportStatement : public SgDeclarationStatement
155370  {
155371  public:
155372 
155373 
155374 /* #line 155375 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
155375 
155376  virtual SgNode* copy ( SgCopyHelp& help) const override;
155377 // Start of memberFunctionString
155378 /* #line 3806 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
155379 
155380 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
155381  virtual unsigned int cfgIndexForEnd() const override;
155382  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
155383  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
155384 #endif
155385 
155386  virtual SgName get_mangled_name() const override;
155387 
155388  const SgExpressionPtrList & get_import_list() const;
155389  SgExpressionPtrList & get_import_list();
155390 
155391 
155392 // End of memberFunctionString
155393 // Start of memberFunctionString
155394 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
155395 
155396 // *** COMMON CODE SECTION BEGINS HERE ***
155397 
155398  public:
155399 
155400  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
155401  // and not required which is required to match the other aspects of the copy mechanism code generation.
155402  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
155403  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
155404  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
155405  // virtual SgNode* copy ( const SgCopyHelp & help) const;
155406 
155408  virtual std::string class_name() const override;
155409 
155411  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
155412 
155414  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
155415  // static const VariantT static_variant = V_SgImportStatement;
155416  enum { static_variant = V_SgImportStatement };
155417 
155418  /* the generated cast function */
155420  ROSE_DLL_API friend SgImportStatement* isSgImportStatement( SgNode * s );
155421 
155423  ROSE_DLL_API friend const SgImportStatement* isSgImportStatement( const SgNode * s );
155424 
155425  // ******************************************
155426  // * Memory Pool / New / Delete
155427  // ******************************************
155428 
155429  public:
155431  static const unsigned pool_size; //
155433  static std::vector<unsigned char *> pools; //
155435  static SgImportStatement * next_node; //
155436 
155438  static unsigned long initializeStorageClassArray(SgImportStatementStorageClass *); //
155439 
155441  static void clearMemoryPool(); //
155442  static void deleteMemoryPool(); //
155443 
155445  static void extendMemoryPoolForFileIO(); //
155446 
155448  static SgImportStatement * getPointerFromGlobalIndex(unsigned long); //
155450  static SgImportStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
155451 
155453  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
155455  static void resetValidFreepointers(); //
155457  static unsigned long getNumberOfLastValidPointer(); //
155458 
155459 
155460 #if defined(INLINE_FUNCTIONS)
155461 
155462  inline void *operator new (size_t size);
155463 #else
155464 
155465  void *operator new (size_t size);
155466 #endif
155467 
155468  void operator delete (void* pointer, size_t size);
155469 
155470  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
155471  void operator delete (void* pointer)
155472  {
155473  // This is the generated delete operator...
155474  SgImportStatement::operator delete (pointer,sizeof(SgImportStatement));
155475  }
155476 
155478  static size_t numberOfNodes();
155479 
155481  static size_t memoryUsage();
155482 
155483  // End of scope which started in IR nodes specific code
155484  /* */
155485 
155486  /* name Internal Functions
155487  \brief Internal functions ... incomplete-documentation
155488 
155489  These functions have been made public as part of the design, but they are suggested for internal use
155490  or by particularly knowledgeable users for specialized tools or applications.
155491 
155492  \internal We could not make these private because they are required by user for special purposes. And
155493  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
155494 
155495  */
155496 
155497  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
155498  // overridden in every class by *generated* implementation
155500  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
155501  // MS: 06/28/02 container of names of variables or container indices
155502  // used used in the traversal to access AST successor nodes
155503  // overridden in every class by *generated* implementation
155506  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
155507 
155508  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
155509  // than all the vector copies. The implementation for these functions is generated for each class.
155511  virtual size_t get_numberOfTraversalSuccessors() override;
155513  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
155515  virtual size_t get_childIndex(SgNode *child) override;
155516 
155517 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
155518  // MS: 08/16/2002 method for generating RTI information
155520  virtual RTIReturnType roseRTI() override;
155521 #endif
155522  /* */
155523 
155524 
155525 
155526  /* name Deprecated Functions
155527  \brief Deprecated functions ... incomplete-documentation
155528 
155529  These functions have been deprecated from use.
155530  */
155531  /* */
155532 
155534  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
155535 
155536  // JJW (10/16/2008): Changed to a single function in Node.code, and put
155537  // getVariant() in #if 0 block to prevent confusing Doxygen
155538 #if 0
155539 
155540  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
155542  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
155543 #endif
155544  /* */
155545 
155546 
155547 
155548 
155549  public:
155550  /* name Traversal Support Functions
155551  \brief Traversal support functions ... incomplete-documentation
155552 
155553  These functions have been made public as part of the design, but they are suggested for internal use
155554  or by particularly knowledgable users for specialized tools or applications.
155555  */
155556  /* */
155557 
155558  // DQ (11/26/2005): Support for visitor pattern mechanims
155559  // (inferior to ROSE traversal mechanism, experimental).
155563 
155564  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
155566  virtual void accept (ROSE_VisitorPattern & visitor) override;
155567 
155568  // DQ (12/26/2005): Support for traversal based on the memory pool
155571  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
155572 
155575  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
155576 
155577  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
155578  // This traversal helps support internal tools that call static member functions.
155579  // note: this function operates on the memory pools.
155582  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
155583  /* */
155584 
155585 
155586  public:
155587  /* name Memory Allocation Functions
155588  \brief Memory allocations functions ... incomplete-documentation
155589 
155590  These functions have been made public as part of the design, but they are suggested for internal use
155591  or by particularly knowledgable users for specialized tools or applications.
155592  */
155593  /* */
155594 
155605  virtual bool isInMemoryPool() override;
155606 
155617  virtual void checkDataMemberPointersIfInMemoryPool() override;
155618 
155619  // DQ (4/30/2006): Modified to be a const function.
155634  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
155635 
155645  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
155646 
155658  virtual long getChildIndex( SgNode* childNode ) const override;
155659 
155660  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
155661  // comment here (changed to be a C style comment and not be a doxygen comment).
155662  /* \brief Constructor for use by AST File I/O Mechanism
155663 
155664  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
155665  which obtained via fast binary file I/O from disk.
155666  */
155667  // SgImportStatement( SgImportStatementStorageClass& source );
155668 
155669 
155670 
155671 
155672 
155673  // JH (10/24/2005): methods added to support the ast file IO
155674  private:
155675 
155676  /* name AST Memory Allocation Support Functions
155677  \brief Memory allocations support....
155678 
155679  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
155680  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
155681  and support the AST File I/O Mechanism.
155682  */
155683  /* */
155684 
155685  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
155686  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
155687  that I use the same type everywhere, if any changes are made. THe second one declares the type
155688  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
155689  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
155690  a correspinding one in the AST_FILE_IO class!
155691  */
155692  // DQ (9/2/2015): This typedef is no longer used, we can't define the
155693  // comment here (changed to be a C style comment and not be a doxygen comment).
155694  /* \brief Typedef used for low level memory access.
155695  */
155696  // typedef unsigned char* TestType;
155697 
155698  // DQ (9/2/2015): This typedef is no longer used, we can't define the
155699  // comment here (changed to be a C style comment and not be a doxygen comment).
155700  /* \brief Typedef used to hold memory addresses as values.
155701  */
155702  // typedef unsigned long AddressType;
155703 
155704 
155705 
155706  // necessary, to have direct access to the p_freepointer and the private methods !
155708  friend class AST_FILE_IO;
155709 
155711  friend class SgImportStatementStorageClass;
155712 
155714  friend class AstSpecificDataManagingClass;
155715 
155717  friend class AstSpecificDataManagingClassStorageClass;
155718 
155719  public:
155721  SgImportStatement( const SgImportStatementStorageClass& source );
155722 
155723  // private: // JJW hack
155724  /*
155725  name AST Memory Allocation Support Variables
155726  Memory allocations support variables
155727 
155728  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
155729  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
155730  and support the AST File I/O Mechanism.
155731  */
155732  /* */
155733 
155734  public:
155735 
155736  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
155737  // to current node (so that it will work cleanly with build functions to specify patterns).
155738  // virtual SgNode* addRegExpAttribute();
155745 
155746 // *** COMMON CODE SECTION ENDS HERE ***
155747 
155748 
155749 // End of memberFunctionString
155750 // Start of memberFunctionString
155751 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
155752 
155753  // the generated cast function
155754  // friend ROSE_DLL_API SgImportStatement* isSgImportStatement ( SgNode* s );
155755 
155757 
155758 
155759 // End of memberFunctionString
155760 // Start of memberFunctionString
155761 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
155762 
155763  void post_construction_initialization() override;
155764 
155765 
155766 // End of memberFunctionString
155767 
155768 
155769 
155770  public:
155771  virtual ~SgImportStatement();
155772 
155773 
155774  public:
155775  SgImportStatement(Sg_File_Info* startOfConstruct );
155776  SgImportStatement();
155777 
155778  protected:
155779 // Start of memberFunctionString
155780 SgExpressionPtrList p_import_list;
155781 
155782 // End of memberFunctionString
155783 
155784 
155785 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
155786 
155787 
155788  };
155789 #endif
155790 
155791 // postdeclarations for SgImportStatement
155792 
155793 /* #line 155794 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
155794 
155795 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
155796 
155797 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
155798 
155799 
155800 /* #line 155801 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
155801 
155802 
155803 
155804 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
155805 
155806 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
155807 // This code is automatically generated for each
155808 // terminal and non-terminal within the defined
155809 // grammar. There is a simple way to change the
155810 // code to fix bugs etc. See the ROSE README file
155811 // for directions.
155812 
155813 // tps: (02/22/2010): Adding DLL export requirements
155814 #include "rosedll.h"
155815 
155816 // predeclarations for SgFunctionDeclaration
155817 
155818 /* #line 155819 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
155819 
155820 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
155821 
155822 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
155823 
155824 #if 1
155825 // Class Definition for SgFunctionDeclaration
155827  {
155828  public:
155829 
155830 
155831 /* #line 155832 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
155832 
155833  virtual SgNode* copy ( SgCopyHelp& help) const override;
155834 // Start of memberFunctionString
155835 /* #line 1523 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
155836 
155837 
155839  SgType* get_orig_return_type() const;
155840 
155841  // Empty declaration substitution
155842  // void set_mangled_name();
155843  // SgName get_mangled_name() const override;
155844 
155845  // RV (1/31/2006): Removed dependence on SgUnparse_Info, and made virtual.
155846  virtual SgName get_mangled_name(void) const override;
155847 
155848  // DQ (4/28/2005): functions that are SgTemplateInstatiationMemberFunctionDecl can be non-template
155849  // functions in a class that is a template class or a nested class in a templated class, this function
155850  // identifies the SgTemplateInstatiationMemberFunctionDecl as being a template function if it has
155851  // template parameters.
155852  bool isTemplateFunction() const;
155853 
155854  SgInitializedNamePtrList & get_args() ;
155855  const SgInitializedNamePtrList & get_args() const;
155856 
155858  virtual bool hasExplicitScope() const override;
155859 
155860  virtual SgSymbol* get_symbol_from_symbol_table() const override;
155861 
155862 #if ALT_FIXUP_COPY
155863  // DQ (11/7/2007): These need to be called separately (see documentation)
155864  virtual void fixupCopy_scopes (SgNode* copy, SgCopyHelp & help) const override;
155865  virtual void fixupCopy_symbols (SgNode* copy, SgCopyHelp & help) const override;
155866  virtual void fixupCopy_references (SgNode* copy, SgCopyHelp & help) const override;
155867 #else
155868  // DQ (10/6/2007): Added fixup function to set scopes not set properly by the ROSETTA generated copy!
155869  virtual void fixupCopy(SgNode* copy, SgCopyHelp & help) const;
155870 #endif
155871 
155872 /* #line 939 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
155873 
155874  public:
155875  virtual void append_arg ( SgInitializedName* element );
155876  virtual void prepend_arg ( SgInitializedName* element );
155877 
155878  public:
155879  // New functions added
155880  // SgInitializedNamePtrList::iterator append_arg ( const SgInitializedNamePtrList::iterator & list, SgInitializedName* element );
155881  // SgInitializedNamePtrList::iterator prepend_arg ( const SgInitializedNamePtrList::iterator & list, SgInitializedName* element );
155882 
155883  // SgInitializedNamePtrList::iterator insert_arg ( const SgInitializedNamePtrList::iterator & list, SgInitializedName* element );
155884 
155885 
155886  public:
155887 
155888 
155889 
155890 
155891 #if 0
155892  // DQ (10/20/2004): Since constructor names don't require their template arguments this has a far simpler solution!
155893  // for example: "template <typename T> class X { X(); }; X<int>::X() {}"
155894 
155895  // DQ (10/20/2004): This function should be different from those that are automatically generated
155896  // via ROSETTA. In the case of a constructor or destructor the class name should be used. This
155897  // is particularly important in the case of constructors and destructors of templated classes since
155898  // the mangled form or the template class should not be used since it will not allow the generated
155899  // code to compile. Instead of names of the form "ABC____L8" we want names of the form "ABC<int>".
155900  // These functions are now implemented explicitly instead of being automatically generated via ROSETTA.
155901  SgName get_name() const;
155902  void set_name( SgName & functionName );
155903 #endif
155904 
155905  void hasEllipses();
155906 
155907  // DQ (5/3/2005): Added get_qualified_name() function for interface symmetry (and because
155908  // it makes sense given that the same function can exist in two different namespaces and
155909  // that only the qualified name would distinguish them).
155910  virtual SgName get_qualified_name() const;
155911 
155912  // DQ (9/7/2014): Added to support template headers in template declarations (member and non-member function declarations).
155913  SgName get_template_header() const;
155914 
155915  protected:
155916  virtual bool replace_child(SgStatement *,SgStatement *, bool extractListFromBasicBlock = false) override;
155917 
155918  public: // (see comment above)
155919 
155920 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
155921  virtual unsigned int cfgIndexForEnd() const override;
155922  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
155923  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
155924 #endif
155925 
155926  // DQ (5/29/2011): Added support for return type name qualification.
155928  SgName get_qualified_name_prefix_for_return_type() const;
155929 
155930  // DQ (10/11/2014): Adding support for aterm translation to ROSE AST.
155931  // Rasmussen (04/17/2019): Support for ATerms has been deprecated.
155932  // static SgFunctionDeclaration* build_node_from_nonlist_children(SgType* return_type, SgFunctionParameterList* parameterList, SgScopeStatement* scope, Sg_File_Info* startOfConstruct, SgName name, SgFunctionType* type, SgFunctionDefinition* definition);
155933 
155934  // DQ (12/22/2014): Adding support for EDG normalized template member and non-member functions.
155935  bool isNormalizedTemplateFunction() const;
155936 
155937  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
155938  int get_name_qualification_length() const;
155939  void set_name_qualification_length(int name_qualification_length);
155940 
155941  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
155942  bool get_type_elaboration_required() const;
155943  void set_type_elaboration_required(bool type_elaboration_required);
155944 
155945  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
155946  bool get_global_qualification_required() const;
155947  void set_global_qualification_required(bool global_qualification_required);
155948 
155949  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
155950  int get_name_qualification_length_for_return_type() const;
155951  void set_name_qualification_length_for_return_type(int name_qualification_length_for_return_type);
155952 
155953  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
155954  bool get_type_elaboration_required_for_return_type() const;
155955  void set_type_elaboration_required_for_return_type(bool type_elaboration_required_for_return_type);
155956 
155957  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
155958  bool get_global_qualification_required_for_return_type() const;
155959  void set_global_qualification_required_for_return_type(bool global_qualification_required_for_return_type);
155960 
155961  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
155962  bool get_requiresNameQualificationOnReturnType () const;
155963  void set_requiresNameQualificationOnReturnType ( bool requiresNameQualificationOnReturnType );
155964 
155965 
155966 
155967 // End of memberFunctionString
155968 // Start of memberFunctionString
155969 /* #line 930 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
155970 
155971 
155972  public:
155973  bool isSpecialization() const;
155974  bool isPartialSpecialization() const;
155975 
155976 
155977 
155978 // End of memberFunctionString
155979 // Start of memberFunctionString
155980 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
155981 
155982 // *** COMMON CODE SECTION BEGINS HERE ***
155983 
155984  public:
155985 
155986  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
155987  // and not required which is required to match the other aspects of the copy mechanism code generation.
155988  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
155989  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
155990  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
155991  // virtual SgNode* copy ( const SgCopyHelp & help) const;
155992 
155994  virtual std::string class_name() const override;
155995 
155997  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
155998 
156000  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
156001  // static const VariantT static_variant = V_SgFunctionDeclaration;
156002  enum { static_variant = V_SgFunctionDeclaration };
156003 
156004  /* the generated cast function */
156006  ROSE_DLL_API friend SgFunctionDeclaration* isSgFunctionDeclaration( SgNode * s );
156007 
156009  ROSE_DLL_API friend const SgFunctionDeclaration* isSgFunctionDeclaration( const SgNode * s );
156010 
156011  // ******************************************
156012  // * Memory Pool / New / Delete
156013  // ******************************************
156014 
156015  public:
156017  static const unsigned pool_size; //
156019  static std::vector<unsigned char *> pools; //
156021  static SgFunctionDeclaration * next_node; //
156022 
156024  static unsigned long initializeStorageClassArray(SgFunctionDeclarationStorageClass *); //
156025 
156027  static void clearMemoryPool(); //
156028  static void deleteMemoryPool(); //
156029 
156031  static void extendMemoryPoolForFileIO(); //
156032 
156034  static SgFunctionDeclaration * getPointerFromGlobalIndex(unsigned long); //
156036  static SgFunctionDeclaration * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
156037 
156039  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
156041  static void resetValidFreepointers(); //
156043  static unsigned long getNumberOfLastValidPointer(); //
156044 
156045 
156046 #if defined(INLINE_FUNCTIONS)
156047 
156048  inline void *operator new (size_t size);
156049 #else
156050 
156051  void *operator new (size_t size);
156052 #endif
156053 
156054  void operator delete (void* pointer, size_t size);
156055 
156056  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
156057  void operator delete (void* pointer)
156058  {
156059  // This is the generated delete operator...
156060  SgFunctionDeclaration::operator delete (pointer,sizeof(SgFunctionDeclaration));
156061  }
156062 
156064  static size_t numberOfNodes();
156065 
156067  static size_t memoryUsage();
156068 
156069  // End of scope which started in IR nodes specific code
156070  /* */
156071 
156072  /* name Internal Functions
156073  \brief Internal functions ... incomplete-documentation
156074 
156075  These functions have been made public as part of the design, but they are suggested for internal use
156076  or by particularly knowledgeable users for specialized tools or applications.
156077 
156078  \internal We could not make these private because they are required by user for special purposes. And
156079  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
156080 
156081  */
156082 
156083  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
156084  // overridden in every class by *generated* implementation
156086  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
156087  // MS: 06/28/02 container of names of variables or container indices
156088  // used used in the traversal to access AST successor nodes
156089  // overridden in every class by *generated* implementation
156092  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
156093 
156094  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
156095  // than all the vector copies. The implementation for these functions is generated for each class.
156097  virtual size_t get_numberOfTraversalSuccessors() override;
156099  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
156101  virtual size_t get_childIndex(SgNode *child) override;
156102 
156103 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
156104  // MS: 08/16/2002 method for generating RTI information
156106  virtual RTIReturnType roseRTI() override;
156107 #endif
156108  /* */
156109 
156110 
156111 
156112  /* name Deprecated Functions
156113  \brief Deprecated functions ... incomplete-documentation
156114 
156115  These functions have been deprecated from use.
156116  */
156117  /* */
156118 
156120  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
156121 
156122  // JJW (10/16/2008): Changed to a single function in Node.code, and put
156123  // getVariant() in #if 0 block to prevent confusing Doxygen
156124 #if 0
156125 
156126  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
156128  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
156129 #endif
156130  /* */
156131 
156132 
156133 
156134 
156135  public:
156136  /* name Traversal Support Functions
156137  \brief Traversal support functions ... incomplete-documentation
156138 
156139  These functions have been made public as part of the design, but they are suggested for internal use
156140  or by particularly knowledgable users for specialized tools or applications.
156141  */
156142  /* */
156143 
156144  // DQ (11/26/2005): Support for visitor pattern mechanims
156145  // (inferior to ROSE traversal mechanism, experimental).
156149 
156150  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
156152  virtual void accept (ROSE_VisitorPattern & visitor) override;
156153 
156154  // DQ (12/26/2005): Support for traversal based on the memory pool
156157  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
156158 
156161  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
156162 
156163  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
156164  // This traversal helps support internal tools that call static member functions.
156165  // note: this function operates on the memory pools.
156168  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
156169  /* */
156170 
156171 
156172  public:
156173  /* name Memory Allocation Functions
156174  \brief Memory allocations functions ... incomplete-documentation
156175 
156176  These functions have been made public as part of the design, but they are suggested for internal use
156177  or by particularly knowledgable users for specialized tools or applications.
156178  */
156179  /* */
156180 
156191  virtual bool isInMemoryPool() override;
156192 
156203  virtual void checkDataMemberPointersIfInMemoryPool() override;
156204 
156205  // DQ (4/30/2006): Modified to be a const function.
156220  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
156221 
156231  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
156232 
156244  virtual long getChildIndex( SgNode* childNode ) const override;
156245 
156246  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
156247  // comment here (changed to be a C style comment and not be a doxygen comment).
156248  /* \brief Constructor for use by AST File I/O Mechanism
156249 
156250  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
156251  which obtained via fast binary file I/O from disk.
156252  */
156253  // SgFunctionDeclaration( SgFunctionDeclarationStorageClass& source );
156254 
156255 
156256 
156257 
156258 
156259  // JH (10/24/2005): methods added to support the ast file IO
156260  private:
156261 
156262  /* name AST Memory Allocation Support Functions
156263  \brief Memory allocations support....
156264 
156265  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
156266  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
156267  and support the AST File I/O Mechanism.
156268  */
156269  /* */
156270 
156271  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
156272  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
156273  that I use the same type everywhere, if any changes are made. THe second one declares the type
156274  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
156275  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
156276  a correspinding one in the AST_FILE_IO class!
156277  */
156278  // DQ (9/2/2015): This typedef is no longer used, we can't define the
156279  // comment here (changed to be a C style comment and not be a doxygen comment).
156280  /* \brief Typedef used for low level memory access.
156281  */
156282  // typedef unsigned char* TestType;
156283 
156284  // DQ (9/2/2015): This typedef is no longer used, we can't define the
156285  // comment here (changed to be a C style comment and not be a doxygen comment).
156286  /* \brief Typedef used to hold memory addresses as values.
156287  */
156288  // typedef unsigned long AddressType;
156289 
156290 
156291 
156292  // necessary, to have direct access to the p_freepointer and the private methods !
156294  friend class AST_FILE_IO;
156295 
156297  friend class SgFunctionDeclarationStorageClass;
156298 
156300  friend class AstSpecificDataManagingClass;
156301 
156303  friend class AstSpecificDataManagingClassStorageClass;
156304 
156305  public:
156307  SgFunctionDeclaration( const SgFunctionDeclarationStorageClass& source );
156308 
156309  // private: // JJW hack
156310  /*
156311  name AST Memory Allocation Support Variables
156312  Memory allocations support variables
156313 
156314  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
156315  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
156316  and support the AST File I/O Mechanism.
156317  */
156318  /* */
156319 
156320  public:
156321 
156322  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
156323  // to current node (so that it will work cleanly with build functions to specify patterns).
156324  // virtual SgNode* addRegExpAttribute();
156331 
156332 // *** COMMON CODE SECTION ENDS HERE ***
156333 
156334 
156335 // End of memberFunctionString
156336 // Start of memberFunctionString
156337 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
156338 
156339  // the generated cast function
156340  // friend ROSE_DLL_API SgFunctionDeclaration* isSgFunctionDeclaration ( SgNode* s );
156341 
156343 
156344 
156345 // End of memberFunctionString
156346 // Start of memberFunctionString
156347 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
156348 
156349  void post_construction_initialization() override;
156350 
156351 
156352 // End of memberFunctionString
156353 
156354  public:
156355  SgName get_name() const /* (getDataAccessFunctionPrototypeString) */;
156356  void set_name(SgName name) /* (getDataAccessFunctionPrototypeString) */;
156357 
156358  public:
156359  SgFunctionParameterList* get_parameterList() const;
156360  void set_parameterList(SgFunctionParameterList* parameterList);
156361 
156362  public:
156363  const SgFunctionModifier& get_functionModifier() const;
156364  SgFunctionModifier& get_functionModifier();
156365 
156366  public:
156367  const SgSpecialFunctionModifier& get_specialFunctionModifier() const;
156368  SgSpecialFunctionModifier& get_specialFunctionModifier();
156369 
156370  public:
156371  SgTypePtrList get_exceptionSpecification() const;
156372  void set_exceptionSpecification(SgTypePtrList exceptionSpecification);
156373 
156374  public:
156375  bool get_named_in_end_statement() const;
156376  void set_named_in_end_statement(bool named_in_end_statement);
156377 
156378  public:
156379  std::string get_asm_name() const;
156380  void set_asm_name(std::string asm_name);
156381 
156382  public:
156383  SgExprListExp* get_decoratorList() const;
156384  void set_decoratorList(SgExprListExp* decoratorList);
156385 
156386  public:
156387  bool get_ada_formal_subprogram_decl() const;
156388  void set_ada_formal_subprogram_decl(bool ada_formal_subprogram_decl);
156389 
156390  public:
156391  SgFunctionType* get_type() const /* (getDataAccessFunctionPrototypeString) */;
156392  void set_type(SgFunctionType* type) /* (getDataAccessFunctionPrototypeString) */;
156393 
156394  public:
156395  SgFunctionDefinition* get_definition() const;
156396  void set_definition(SgFunctionDefinition* definition);
156397 
156398  public:
156399  bool get_oldStyleDefinition() const;
156400  void set_oldStyleDefinition(bool oldStyleDefinition);
156401 
156402  public:
156403  SgScopeStatement* get_scope() const override /* (getDataAccessFunctionPrototypeString) */;
156404  void set_scope(SgScopeStatement* scope) override /* (getDataAccessFunctionPrototypeString) */;
156405 
156406  public:
156407  SgDeclarationStatement::template_specialization_enum get_specialization() const;
156408  void set_specialization(SgDeclarationStatement::template_specialization_enum specialization);
156409 
156410 
156411  public:
156412  std::string get_gnu_extension_section() const;
156413  void set_gnu_extension_section(std::string gnu_extension_section);
156414 
156415  public:
156416  std::string get_gnu_extension_alias() const;
156417  void set_gnu_extension_alias(std::string gnu_extension_alias);
156418 
156419  public:
156420  SgDeclarationStatement::gnu_extension_visability_attribute_enum get_gnu_extension_visability() const;
156421  void set_gnu_extension_visability(SgDeclarationStatement::gnu_extension_visability_attribute_enum gnu_extension_visability);
156422 
156423 
156424 
156425 
156426 
156427 
156428 
156429  public:
156430  bool get_prototypeIsWithoutParameters() const;
156431  void set_prototypeIsWithoutParameters(bool prototypeIsWithoutParameters);
156432 
156433  public:
156434  int get_gnu_regparm_attribute() const;
156435  void set_gnu_regparm_attribute(int gnu_regparm_attribute);
156436 
156437  public:
156438  SgFunctionType* get_type_syntax() const;
156439  void set_type_syntax(SgFunctionType* type_syntax);
156440 
156441  public:
156442  bool get_type_syntax_is_available() const;
156443  void set_type_syntax_is_available(bool type_syntax_is_available);
156444 
156445  public:
156446  SgFunctionParameterList* get_parameterList_syntax() const;
156447  void set_parameterList_syntax(SgFunctionParameterList* parameterList_syntax);
156448 
156449  public:
156450  bool get_using_C11_Noreturn_keyword() const;
156451  void set_using_C11_Noreturn_keyword(bool using_C11_Noreturn_keyword);
156452 
156453  public:
156454  bool get_is_constexpr() const;
156455  void set_is_constexpr(bool is_constexpr);
156456 
156457  public:
156458  bool get_using_new_function_return_type_syntax() const;
156459  void set_using_new_function_return_type_syntax(bool using_new_function_return_type_syntax);
156460 
156461  public:
156462  SgFunctionParameterScope* get_functionParameterScope() const;
156463  void set_functionParameterScope(SgFunctionParameterScope* functionParameterScope);
156464 
156465  public:
156466  bool get_marked_as_edg_normalization() const;
156467  void set_marked_as_edg_normalization(bool marked_as_edg_normalization);
156468 
156469  public:
156470  bool get_is_implicit_function() const;
156471  void set_is_implicit_function(bool is_implicit_function);
156472 
156473 
156474  public:
156475  virtual ~SgFunctionDeclaration();
156476 
156477 
156478  public:
156479  SgFunctionDeclaration(Sg_File_Info* startOfConstruct , SgName name = "", SgFunctionType* type = NULL, SgFunctionDefinition* definition = NULL);
156481 
156482  protected:
156483 // Start of memberFunctionString
156484 SgName p_name;
156485 
156486 // End of memberFunctionString
156487 // Start of memberFunctionString
156488 SgFunctionParameterList* p_parameterList;
156489 
156490 // End of memberFunctionString
156491 // Start of memberFunctionString
156492 SgFunctionModifier p_functionModifier;
156493 
156494 // End of memberFunctionString
156495 // Start of memberFunctionString
156496 SgSpecialFunctionModifier p_specialFunctionModifier;
156497 
156498 // End of memberFunctionString
156499 // Start of memberFunctionString
156500 SgTypePtrList p_exceptionSpecification;
156501 
156502 // End of memberFunctionString
156503 // Start of memberFunctionString
156504 bool p_named_in_end_statement;
156505 
156506 // End of memberFunctionString
156507 // Start of memberFunctionString
156508 std::string p_asm_name;
156509 
156510 // End of memberFunctionString
156511 // Start of memberFunctionString
156512 SgExprListExp* p_decoratorList;
156513 
156514 // End of memberFunctionString
156515 // Start of memberFunctionString
156516 bool p_ada_formal_subprogram_decl;
156517 
156518 // End of memberFunctionString
156519 // Start of memberFunctionString
156521 
156522 // End of memberFunctionString
156523 // Start of memberFunctionString
156525 
156526 // End of memberFunctionString
156527 // Start of memberFunctionString
156528 bool p_oldStyleDefinition;
156529 
156530 // End of memberFunctionString
156531 // Start of memberFunctionString
156532 SgScopeStatement* p_scope;
156533 
156534 // End of memberFunctionString
156535 // Start of memberFunctionString
156537 
156538 // End of memberFunctionString
156539 // Start of memberFunctionString
156540 bool p_requiresNameQualificationOnReturnType;
156541 
156542 // End of memberFunctionString
156543 // Start of memberFunctionString
156544 std::string p_gnu_extension_section;
156545 
156546 // End of memberFunctionString
156547 // Start of memberFunctionString
156548 std::string p_gnu_extension_alias;
156549 
156550 // End of memberFunctionString
156551 // Start of memberFunctionString
156553 
156554 // End of memberFunctionString
156555 // Start of memberFunctionString
156556 int p_name_qualification_length;
156557 
156558 // End of memberFunctionString
156559 // Start of memberFunctionString
156560 bool p_type_elaboration_required;
156561 
156562 // End of memberFunctionString
156563 // Start of memberFunctionString
156564 bool p_global_qualification_required;
156565 
156566 // End of memberFunctionString
156567 // Start of memberFunctionString
156568 int p_name_qualification_length_for_return_type;
156569 
156570 // End of memberFunctionString
156571 // Start of memberFunctionString
156572 bool p_type_elaboration_required_for_return_type;
156573 
156574 // End of memberFunctionString
156575 // Start of memberFunctionString
156576 bool p_global_qualification_required_for_return_type;
156577 
156578 // End of memberFunctionString
156579 // Start of memberFunctionString
156580 bool p_prototypeIsWithoutParameters;
156581 
156582 // End of memberFunctionString
156583 // Start of memberFunctionString
156584 int p_gnu_regparm_attribute;
156585 
156586 // End of memberFunctionString
156587 // Start of memberFunctionString
156588 SgFunctionType* p_type_syntax;
156589 
156590 // End of memberFunctionString
156591 // Start of memberFunctionString
156592 bool p_type_syntax_is_available;
156593 
156594 // End of memberFunctionString
156595 // Start of memberFunctionString
156596 SgFunctionParameterList* p_parameterList_syntax;
156597 
156598 // End of memberFunctionString
156599 // Start of memberFunctionString
156600 bool p_using_C11_Noreturn_keyword;
156601 
156602 // End of memberFunctionString
156603 // Start of memberFunctionString
156604 bool p_is_constexpr;
156605 
156606 // End of memberFunctionString
156607 // Start of memberFunctionString
156608 bool p_using_new_function_return_type_syntax;
156609 
156610 // End of memberFunctionString
156611 // Start of memberFunctionString
156612 SgFunctionParameterScope* p_functionParameterScope;
156613 
156614 // End of memberFunctionString
156615 // Start of memberFunctionString
156616 bool p_marked_as_edg_normalization;
156617 
156618 // End of memberFunctionString
156619 // Start of memberFunctionString
156620 bool p_is_implicit_function;
156621 
156622 // End of memberFunctionString
156623 
156624 
156625 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
156626 
156627 
156628  };
156629 #endif
156630 
156631 // postdeclarations for SgFunctionDeclaration
156632 
156633 /* #line 156634 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
156634 
156635 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
156636 
156637 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
156638 
156639 
156640 /* #line 156641 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
156641 
156642 
156643 
156644 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
156645 
156646 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
156647 // This code is automatically generated for each
156648 // terminal and non-terminal within the defined
156649 // grammar. There is a simple way to change the
156650 // code to fix bugs etc. See the ROSE README file
156651 // for directions.
156652 
156653 // tps: (02/22/2010): Adding DLL export requirements
156654 #include "rosedll.h"
156655 
156656 // predeclarations for SgTemplateFunctionDeclaration
156657 
156658 /* #line 156659 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
156659 
156660 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
156661 
156662 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
156663 
156664 #if 1
156665 // Class Definition for SgTemplateFunctionDeclaration
156667  {
156668  public:
156669 
156670 
156671 /* #line 156672 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
156672 
156673  virtual SgNode* copy ( SgCopyHelp& help) const override;
156674 // Start of memberFunctionString
156675 /* #line 2823 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
156676 
156677 
156679 
156680 
156681 
156682 // End of memberFunctionString
156683 // Start of memberFunctionString
156684 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
156685 
156686 // *** COMMON CODE SECTION BEGINS HERE ***
156687 
156688  public:
156689 
156690  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
156691  // and not required which is required to match the other aspects of the copy mechanism code generation.
156692  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
156693  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
156694  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
156695  // virtual SgNode* copy ( const SgCopyHelp & help) const;
156696 
156698  virtual std::string class_name() const override;
156699 
156701  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
156702 
156704  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
156705  // static const VariantT static_variant = V_SgTemplateFunctionDeclaration;
156706  enum { static_variant = V_SgTemplateFunctionDeclaration };
156707 
156708  /* the generated cast function */
156710  ROSE_DLL_API friend SgTemplateFunctionDeclaration* isSgTemplateFunctionDeclaration( SgNode * s );
156711 
156713  ROSE_DLL_API friend const SgTemplateFunctionDeclaration* isSgTemplateFunctionDeclaration( const SgNode * s );
156714 
156715  // ******************************************
156716  // * Memory Pool / New / Delete
156717  // ******************************************
156718 
156719  public:
156721  static const unsigned pool_size; //
156723  static std::vector<unsigned char *> pools; //
156725  static SgTemplateFunctionDeclaration * next_node; //
156726 
156728  static unsigned long initializeStorageClassArray(SgTemplateFunctionDeclarationStorageClass *); //
156729 
156731  static void clearMemoryPool(); //
156732  static void deleteMemoryPool(); //
156733 
156735  static void extendMemoryPoolForFileIO(); //
156736 
156738  static SgTemplateFunctionDeclaration * getPointerFromGlobalIndex(unsigned long); //
156740  static SgTemplateFunctionDeclaration * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
156741 
156743  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
156745  static void resetValidFreepointers(); //
156747  static unsigned long getNumberOfLastValidPointer(); //
156748 
156749 
156750 #if defined(INLINE_FUNCTIONS)
156751 
156752  inline void *operator new (size_t size);
156753 #else
156754 
156755  void *operator new (size_t size);
156756 #endif
156757 
156758  void operator delete (void* pointer, size_t size);
156759 
156760  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
156761  void operator delete (void* pointer)
156762  {
156763  // This is the generated delete operator...
156764  SgTemplateFunctionDeclaration::operator delete (pointer,sizeof(SgTemplateFunctionDeclaration));
156765  }
156766 
156768  static size_t numberOfNodes();
156769 
156771  static size_t memoryUsage();
156772 
156773  // End of scope which started in IR nodes specific code
156774  /* */
156775 
156776  /* name Internal Functions
156777  \brief Internal functions ... incomplete-documentation
156778 
156779  These functions have been made public as part of the design, but they are suggested for internal use
156780  or by particularly knowledgeable users for specialized tools or applications.
156781 
156782  \internal We could not make these private because they are required by user for special purposes. And
156783  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
156784 
156785  */
156786 
156787  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
156788  // overridden in every class by *generated* implementation
156790  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
156791  // MS: 06/28/02 container of names of variables or container indices
156792  // used used in the traversal to access AST successor nodes
156793  // overridden in every class by *generated* implementation
156796  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
156797 
156798  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
156799  // than all the vector copies. The implementation for these functions is generated for each class.
156801  virtual size_t get_numberOfTraversalSuccessors() override;
156803  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
156805  virtual size_t get_childIndex(SgNode *child) override;
156806 
156807 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
156808  // MS: 08/16/2002 method for generating RTI information
156810  virtual RTIReturnType roseRTI() override;
156811 #endif
156812  /* */
156813 
156814 
156815 
156816  /* name Deprecated Functions
156817  \brief Deprecated functions ... incomplete-documentation
156818 
156819  These functions have been deprecated from use.
156820  */
156821  /* */
156822 
156824  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
156825 
156826  // JJW (10/16/2008): Changed to a single function in Node.code, and put
156827  // getVariant() in #if 0 block to prevent confusing Doxygen
156828 #if 0
156829 
156830  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
156832  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
156833 #endif
156834  /* */
156835 
156836 
156837 
156838 
156839  public:
156840  /* name Traversal Support Functions
156841  \brief Traversal support functions ... incomplete-documentation
156842 
156843  These functions have been made public as part of the design, but they are suggested for internal use
156844  or by particularly knowledgable users for specialized tools or applications.
156845  */
156846  /* */
156847 
156848  // DQ (11/26/2005): Support for visitor pattern mechanims
156849  // (inferior to ROSE traversal mechanism, experimental).
156853 
156854  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
156856  virtual void accept (ROSE_VisitorPattern & visitor) override;
156857 
156858  // DQ (12/26/2005): Support for traversal based on the memory pool
156861  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
156862 
156865  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
156866 
156867  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
156868  // This traversal helps support internal tools that call static member functions.
156869  // note: this function operates on the memory pools.
156872  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
156873  /* */
156874 
156875 
156876  public:
156877  /* name Memory Allocation Functions
156878  \brief Memory allocations functions ... incomplete-documentation
156879 
156880  These functions have been made public as part of the design, but they are suggested for internal use
156881  or by particularly knowledgable users for specialized tools or applications.
156882  */
156883  /* */
156884 
156895  virtual bool isInMemoryPool() override;
156896 
156907  virtual void checkDataMemberPointersIfInMemoryPool() override;
156908 
156909  // DQ (4/30/2006): Modified to be a const function.
156924  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
156925 
156935  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
156936 
156948  virtual long getChildIndex( SgNode* childNode ) const override;
156949 
156950  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
156951  // comment here (changed to be a C style comment and not be a doxygen comment).
156952  /* \brief Constructor for use by AST File I/O Mechanism
156953 
156954  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
156955  which obtained via fast binary file I/O from disk.
156956  */
156957  // SgTemplateFunctionDeclaration( SgTemplateFunctionDeclarationStorageClass& source );
156958 
156959 
156960 
156961 
156962 
156963  // JH (10/24/2005): methods added to support the ast file IO
156964  private:
156965 
156966  /* name AST Memory Allocation Support Functions
156967  \brief Memory allocations support....
156968 
156969  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
156970  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
156971  and support the AST File I/O Mechanism.
156972  */
156973  /* */
156974 
156975  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
156976  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
156977  that I use the same type everywhere, if any changes are made. THe second one declares the type
156978  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
156979  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
156980  a correspinding one in the AST_FILE_IO class!
156981  */
156982  // DQ (9/2/2015): This typedef is no longer used, we can't define the
156983  // comment here (changed to be a C style comment and not be a doxygen comment).
156984  /* \brief Typedef used for low level memory access.
156985  */
156986  // typedef unsigned char* TestType;
156987 
156988  // DQ (9/2/2015): This typedef is no longer used, we can't define the
156989  // comment here (changed to be a C style comment and not be a doxygen comment).
156990  /* \brief Typedef used to hold memory addresses as values.
156991  */
156992  // typedef unsigned long AddressType;
156993 
156994 
156995 
156996  // necessary, to have direct access to the p_freepointer and the private methods !
156998  friend class AST_FILE_IO;
156999 
157001  friend class SgTemplateFunctionDeclarationStorageClass;
157002 
157004  friend class AstSpecificDataManagingClass;
157005 
157007  friend class AstSpecificDataManagingClassStorageClass;
157008 
157009  public:
157011  SgTemplateFunctionDeclaration( const SgTemplateFunctionDeclarationStorageClass& source );
157012 
157013  // private: // JJW hack
157014  /*
157015  name AST Memory Allocation Support Variables
157016  Memory allocations support variables
157017 
157018  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
157019  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
157020  and support the AST File I/O Mechanism.
157021  */
157022  /* */
157023 
157024  public:
157025 
157026  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
157027  // to current node (so that it will work cleanly with build functions to specify patterns).
157028  // virtual SgNode* addRegExpAttribute();
157035 
157036 // *** COMMON CODE SECTION ENDS HERE ***
157037 
157038 
157039 // End of memberFunctionString
157040 // Start of memberFunctionString
157041 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
157042 
157043  // the generated cast function
157044  // friend ROSE_DLL_API SgTemplateFunctionDeclaration* isSgTemplateFunctionDeclaration ( SgNode* s );
157045 
157047 
157048 
157049 // End of memberFunctionString
157050 // Start of memberFunctionString
157051 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
157052 
157053  void post_construction_initialization() override;
157054 
157055 
157056 // End of memberFunctionString
157057 
157058  public:
157059  const SgTemplateParameterPtrList& get_templateParameters() const;
157060  SgTemplateParameterPtrList& get_templateParameters();
157061 
157062  public:
157063  const SgTemplateArgumentPtrList& get_templateSpecializationArguments() const;
157064  SgTemplateArgumentPtrList& get_templateSpecializationArguments();
157065 
157066  public:
157067  SgName get_string() const;
157068  void set_string(SgName string);
157069 
157070  public:
157071  bool get_string_represents_function_body() const;
157072  void set_string_represents_function_body(bool string_represents_function_body);
157073 
157074  public:
157075  SgDeclarationScope* get_nonreal_decl_scope() const;
157076  void set_nonreal_decl_scope(SgDeclarationScope* nonreal_decl_scope);
157077 
157078 
157079  public:
157080  virtual ~SgTemplateFunctionDeclaration();
157081 
157082 
157083  public:
157084  SgTemplateFunctionDeclaration(Sg_File_Info* startOfConstruct , SgName name = "", SgFunctionType* type = NULL, SgFunctionDefinition* definition = NULL);
157086 
157087  protected:
157088 // Start of memberFunctionString
157089 SgTemplateParameterPtrList p_templateParameters;
157090 
157091 // End of memberFunctionString
157092 // Start of memberFunctionString
157093 SgTemplateArgumentPtrList p_templateSpecializationArguments;
157094 
157095 // End of memberFunctionString
157096 // Start of memberFunctionString
157097 SgName p_string;
157098 
157099 // End of memberFunctionString
157100 // Start of memberFunctionString
157101 bool p_string_represents_function_body;
157102 
157103 // End of memberFunctionString
157104 // Start of memberFunctionString
157105 SgDeclarationScope* p_nonreal_decl_scope;
157106 
157107 // End of memberFunctionString
157108 
157109 
157110 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
157111 
157112 
157113  };
157114 #endif
157115 
157116 // postdeclarations for SgTemplateFunctionDeclaration
157117 
157118 /* #line 157119 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
157119 
157120 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
157121 
157122 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
157123 
157124 
157125 /* #line 157126 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
157126 
157127 
157128 
157129 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
157130 
157131 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
157132 // This code is automatically generated for each
157133 // terminal and non-terminal within the defined
157134 // grammar. There is a simple way to change the
157135 // code to fix bugs etc. See the ROSE README file
157136 // for directions.
157137 
157138 // tps: (02/22/2010): Adding DLL export requirements
157139 #include "rosedll.h"
157140 
157141 // predeclarations for SgMemberFunctionDeclaration
157142 
157143 /* #line 157144 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
157144 
157145 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
157146 
157147 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
157148 
157149 #if 1
157150 // Class Definition for SgMemberFunctionDeclaration
157152  {
157153  public:
157154 
157155 
157156 /* #line 157157 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
157157 
157158  virtual SgNode* copy ( SgCopyHelp& help) const override;
157159 // Start of memberFunctionString
157160 /* #line 1730 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
157161 
157162 
157163  bool isDefinedInClass() const;
157164 
157165 /* #line 939 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
157166 
157167  public:
157168  virtual void append_ctor_initializer ( SgInitializedName* element );
157169  virtual void prepend_ctor_initializer ( SgInitializedName* element );
157170 
157171  public:
157172  // New functions added
157173  // void append_ctor_initializer ( const SgInitializedNamePtrList::iterator & list, SgInitializedName* element );
157174  // void prepend_ctor_initializer ( const SgInitializedNamePtrList::iterator & list, SgInitializedName* element );
157175 
157176  // void insert_ctor_initializer ( const SgInitializedNamePtrList::iterator & list, SgInitializedName* element );
157177 
157178 
157179  public:
157180 
157181 
157182 
157183 
157184  virtual SgName get_qualified_name() const override;
157185  void set_orig_return_type( SgType *);
157186 
157187  SgInitializedNamePtrList & get_ctors();
157188  const SgInitializedNamePtrList & get_ctors() const;
157189 
157190  protected:
157191  virtual bool replace_child(SgStatement *,SgStatement *, bool extractListFromBasicBlock = false) override;
157192 
157193  public:
157194 
157195  // DQ (11/16/2004): Added local get_class_scope function to support version of get_scope which would
157196  // return a SgClassDefinition rather than a SgScopeStatement. This version is more consistent with
157197  // the former get_scope() function which is not defined in the base class and must return a
157198  // SgScopeStatement to be sufficiently general.
157199  /* \brief This function returns the scope if it exists (is defined in the current translation unit).
157200 
157201  This function is different from the get_scope() member function is that it can return a NULL pointer.
157202  A NULL pointer indicates that the class definition does not exist (was not defined in the current
157203  translation unit), this can happen for pointers to member functions only.
157204  */
157205  SgScopeStatement* get_class_scope(void) const;
157206 
157207  /* \brief This returns the associated class (even if the class definition is unavailable).
157208 
157209  This is a public function with a special custom implementation that always returns a valid pointer
157210  to a class declaration even if the get_class_scope() function returns a NULL pointer. This is the
157211  case for a pointer to a member function (see test2007_116.C).
157212 
157213  \implementation This is much more than a simple access function for the p_associatedClassDeclaration data member.
157214  */
157215  SgDeclarationStatement* get_associatedClassDeclaration () const;
157216 
157218  void set_associatedClassDeclaration ( SgDeclarationStatement* associatedClassDeclaration );
157219 
157220  virtual SgSymbol* get_symbol_from_symbol_table() const override;
157221 
157222 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
157223  virtual unsigned int cfgIndexForEnd() const override;
157224  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
157225  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
157226 #endif
157227 
157228 #if ALT_FIXUP_COPY
157229  // DQ (11/7/2007): These need to be called separately (see documentation)
157230  virtual void fixupCopy_scopes (SgNode* copy, SgCopyHelp & help) const override;
157231  virtual void fixupCopy_symbols (SgNode* copy, SgCopyHelp & help) const override;
157232  virtual void fixupCopy_references (SgNode* copy, SgCopyHelp & help) const override;
157233 #else
157234  // DQ (10/19/2007): Added fixup function to set scopes not set properly by the ROSETTA generated copy!
157235  virtual void fixupCopy(SgNode* copy, SgCopyHelp & help) const;
157236 #endif
157237 
157238 
157239 
157240 // End of memberFunctionString
157241 // Start of memberFunctionString
157242 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
157243 
157244 // *** COMMON CODE SECTION BEGINS HERE ***
157245 
157246  public:
157247 
157248  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
157249  // and not required which is required to match the other aspects of the copy mechanism code generation.
157250  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
157251  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
157252  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
157253  // virtual SgNode* copy ( const SgCopyHelp & help) const;
157254 
157256  virtual std::string class_name() const override;
157257 
157259  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
157260 
157262  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
157263  // static const VariantT static_variant = V_SgMemberFunctionDeclaration;
157264  enum { static_variant = V_SgMemberFunctionDeclaration };
157265 
157266  /* the generated cast function */
157268  ROSE_DLL_API friend SgMemberFunctionDeclaration* isSgMemberFunctionDeclaration( SgNode * s );
157269 
157271  ROSE_DLL_API friend const SgMemberFunctionDeclaration* isSgMemberFunctionDeclaration( const SgNode * s );
157272 
157273  // ******************************************
157274  // * Memory Pool / New / Delete
157275  // ******************************************
157276 
157277  public:
157279  static const unsigned pool_size; //
157281  static std::vector<unsigned char *> pools; //
157283  static SgMemberFunctionDeclaration * next_node; //
157284 
157286  static unsigned long initializeStorageClassArray(SgMemberFunctionDeclarationStorageClass *); //
157287 
157289  static void clearMemoryPool(); //
157290  static void deleteMemoryPool(); //
157291 
157293  static void extendMemoryPoolForFileIO(); //
157294 
157296  static SgMemberFunctionDeclaration * getPointerFromGlobalIndex(unsigned long); //
157298  static SgMemberFunctionDeclaration * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
157299 
157301  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
157303  static void resetValidFreepointers(); //
157305  static unsigned long getNumberOfLastValidPointer(); //
157306 
157307 
157308 #if defined(INLINE_FUNCTIONS)
157309 
157310  inline void *operator new (size_t size);
157311 #else
157312 
157313  void *operator new (size_t size);
157314 #endif
157315 
157316  void operator delete (void* pointer, size_t size);
157317 
157318  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
157319  void operator delete (void* pointer)
157320  {
157321  // This is the generated delete operator...
157322  SgMemberFunctionDeclaration::operator delete (pointer,sizeof(SgMemberFunctionDeclaration));
157323  }
157324 
157326  static size_t numberOfNodes();
157327 
157329  static size_t memoryUsage();
157330 
157331  // End of scope which started in IR nodes specific code
157332  /* */
157333 
157334  /* name Internal Functions
157335  \brief Internal functions ... incomplete-documentation
157336 
157337  These functions have been made public as part of the design, but they are suggested for internal use
157338  or by particularly knowledgeable users for specialized tools or applications.
157339 
157340  \internal We could not make these private because they are required by user for special purposes. And
157341  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
157342 
157343  */
157344 
157345  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
157346  // overridden in every class by *generated* implementation
157348  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
157349  // MS: 06/28/02 container of names of variables or container indices
157350  // used used in the traversal to access AST successor nodes
157351  // overridden in every class by *generated* implementation
157354  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
157355 
157356  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
157357  // than all the vector copies. The implementation for these functions is generated for each class.
157359  virtual size_t get_numberOfTraversalSuccessors() override;
157361  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
157363  virtual size_t get_childIndex(SgNode *child) override;
157364 
157365 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
157366  // MS: 08/16/2002 method for generating RTI information
157368  virtual RTIReturnType roseRTI() override;
157369 #endif
157370  /* */
157371 
157372 
157373 
157374  /* name Deprecated Functions
157375  \brief Deprecated functions ... incomplete-documentation
157376 
157377  These functions have been deprecated from use.
157378  */
157379  /* */
157380 
157382  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
157383 
157384  // JJW (10/16/2008): Changed to a single function in Node.code, and put
157385  // getVariant() in #if 0 block to prevent confusing Doxygen
157386 #if 0
157387 
157388  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
157390  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
157391 #endif
157392  /* */
157393 
157394 
157395 
157396 
157397  public:
157398  /* name Traversal Support Functions
157399  \brief Traversal support functions ... incomplete-documentation
157400 
157401  These functions have been made public as part of the design, but they are suggested for internal use
157402  or by particularly knowledgable users for specialized tools or applications.
157403  */
157404  /* */
157405 
157406  // DQ (11/26/2005): Support for visitor pattern mechanims
157407  // (inferior to ROSE traversal mechanism, experimental).
157411 
157412  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
157414  virtual void accept (ROSE_VisitorPattern & visitor) override;
157415 
157416  // DQ (12/26/2005): Support for traversal based on the memory pool
157419  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
157420 
157423  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
157424 
157425  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
157426  // This traversal helps support internal tools that call static member functions.
157427  // note: this function operates on the memory pools.
157430  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
157431  /* */
157432 
157433 
157434  public:
157435  /* name Memory Allocation Functions
157436  \brief Memory allocations functions ... incomplete-documentation
157437 
157438  These functions have been made public as part of the design, but they are suggested for internal use
157439  or by particularly knowledgable users for specialized tools or applications.
157440  */
157441  /* */
157442 
157453  virtual bool isInMemoryPool() override;
157454 
157465  virtual void checkDataMemberPointersIfInMemoryPool() override;
157466 
157467  // DQ (4/30/2006): Modified to be a const function.
157482  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
157483 
157493  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
157494 
157506  virtual long getChildIndex( SgNode* childNode ) const override;
157507 
157508  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
157509  // comment here (changed to be a C style comment and not be a doxygen comment).
157510  /* \brief Constructor for use by AST File I/O Mechanism
157511 
157512  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
157513  which obtained via fast binary file I/O from disk.
157514  */
157515  // SgMemberFunctionDeclaration( SgMemberFunctionDeclarationStorageClass& source );
157516 
157517 
157518 
157519 
157520 
157521  // JH (10/24/2005): methods added to support the ast file IO
157522  private:
157523 
157524  /* name AST Memory Allocation Support Functions
157525  \brief Memory allocations support....
157526 
157527  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
157528  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
157529  and support the AST File I/O Mechanism.
157530  */
157531  /* */
157532 
157533  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
157534  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
157535  that I use the same type everywhere, if any changes are made. THe second one declares the type
157536  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
157537  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
157538  a correspinding one in the AST_FILE_IO class!
157539  */
157540  // DQ (9/2/2015): This typedef is no longer used, we can't define the
157541  // comment here (changed to be a C style comment and not be a doxygen comment).
157542  /* \brief Typedef used for low level memory access.
157543  */
157544  // typedef unsigned char* TestType;
157545 
157546  // DQ (9/2/2015): This typedef is no longer used, we can't define the
157547  // comment here (changed to be a C style comment and not be a doxygen comment).
157548  /* \brief Typedef used to hold memory addresses as values.
157549  */
157550  // typedef unsigned long AddressType;
157551 
157552 
157553 
157554  // necessary, to have direct access to the p_freepointer and the private methods !
157556  friend class AST_FILE_IO;
157557 
157559  friend class SgMemberFunctionDeclarationStorageClass;
157560 
157562  friend class AstSpecificDataManagingClass;
157563 
157565  friend class AstSpecificDataManagingClassStorageClass;
157566 
157567  public:
157569  SgMemberFunctionDeclaration( const SgMemberFunctionDeclarationStorageClass& source );
157570 
157571  // private: // JJW hack
157572  /*
157573  name AST Memory Allocation Support Variables
157574  Memory allocations support variables
157575 
157576  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
157577  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
157578  and support the AST File I/O Mechanism.
157579  */
157580  /* */
157581 
157582  public:
157583 
157584  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
157585  // to current node (so that it will work cleanly with build functions to specify patterns).
157586  // virtual SgNode* addRegExpAttribute();
157593 
157594 // *** COMMON CODE SECTION ENDS HERE ***
157595 
157596 
157597 // End of memberFunctionString
157598 // Start of memberFunctionString
157599 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
157600 
157601  // the generated cast function
157602  // friend ROSE_DLL_API SgMemberFunctionDeclaration* isSgMemberFunctionDeclaration ( SgNode* s );
157603 
157605 
157606 
157607 // End of memberFunctionString
157608 // Start of memberFunctionString
157609 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
157610 
157611  void post_construction_initialization() override;
157612 
157613 
157614 // End of memberFunctionString
157615 
157616  public:
157617  SgCtorInitializerList* get_CtorInitializerList() const;
157618  void set_CtorInitializerList(SgCtorInitializerList* CtorInitializerList);
157619 
157620 
157621 
157622  public:
157623  virtual ~SgMemberFunctionDeclaration();
157624 
157625 
157626  public:
157627  SgMemberFunctionDeclaration(Sg_File_Info* startOfConstruct , SgName name = "", SgFunctionType* type = NULL, SgFunctionDefinition* definition = NULL);
157629 
157630  protected:
157631 // Start of memberFunctionString
157633 
157634 // End of memberFunctionString
157635 // Start of memberFunctionString
157636 SgDeclarationStatement* p_associatedClassDeclaration;
157637 
157638 // End of memberFunctionString
157639 
157640 
157641 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
157642 
157643 
157644  };
157645 #endif
157646 
157647 // postdeclarations for SgMemberFunctionDeclaration
157648 
157649 /* #line 157650 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
157650 
157651 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
157652 
157653 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
157654 
157655 
157656 /* #line 157657 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
157657 
157658 
157659 
157660 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
157661 
157662 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
157663 // This code is automatically generated for each
157664 // terminal and non-terminal within the defined
157665 // grammar. There is a simple way to change the
157666 // code to fix bugs etc. See the ROSE README file
157667 // for directions.
157668 
157669 // tps: (02/22/2010): Adding DLL export requirements
157670 #include "rosedll.h"
157671 
157672 // predeclarations for SgTemplateMemberFunctionDeclaration
157673 
157674 /* #line 157675 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
157675 
157676 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
157677 
157678 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
157679 
157680 #if 1
157681 // Class Definition for SgTemplateMemberFunctionDeclaration
157683  {
157684  public:
157685 
157686 
157687 /* #line 157688 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
157688 
157689  virtual SgNode* copy ( SgCopyHelp& help) const override;
157690 // Start of memberFunctionString
157691 /* #line 2829 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
157692 
157693 
157695 
157696 
157697 
157698 // End of memberFunctionString
157699 // Start of memberFunctionString
157700 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
157701 
157702 // *** COMMON CODE SECTION BEGINS HERE ***
157703 
157704  public:
157705 
157706  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
157707  // and not required which is required to match the other aspects of the copy mechanism code generation.
157708  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
157709  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
157710  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
157711  // virtual SgNode* copy ( const SgCopyHelp & help) const;
157712 
157714  virtual std::string class_name() const override;
157715 
157717  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
157718 
157720  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
157721  // static const VariantT static_variant = V_SgTemplateMemberFunctionDeclaration;
157722  enum { static_variant = V_SgTemplateMemberFunctionDeclaration };
157723 
157724  /* the generated cast function */
157726  ROSE_DLL_API friend SgTemplateMemberFunctionDeclaration* isSgTemplateMemberFunctionDeclaration( SgNode * s );
157727 
157729  ROSE_DLL_API friend const SgTemplateMemberFunctionDeclaration* isSgTemplateMemberFunctionDeclaration( const SgNode * s );
157730 
157731  // ******************************************
157732  // * Memory Pool / New / Delete
157733  // ******************************************
157734 
157735  public:
157737  static const unsigned pool_size; //
157739  static std::vector<unsigned char *> pools; //
157741  static SgTemplateMemberFunctionDeclaration * next_node; //
157742 
157744  static unsigned long initializeStorageClassArray(SgTemplateMemberFunctionDeclarationStorageClass *); //
157745 
157747  static void clearMemoryPool(); //
157748  static void deleteMemoryPool(); //
157749 
157751  static void extendMemoryPoolForFileIO(); //
157752 
157754  static SgTemplateMemberFunctionDeclaration * getPointerFromGlobalIndex(unsigned long); //
157756  static SgTemplateMemberFunctionDeclaration * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
157757 
157759  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
157761  static void resetValidFreepointers(); //
157763  static unsigned long getNumberOfLastValidPointer(); //
157764 
157765 
157766 #if defined(INLINE_FUNCTIONS)
157767 
157768  inline void *operator new (size_t size);
157769 #else
157770 
157771  void *operator new (size_t size);
157772 #endif
157773 
157774  void operator delete (void* pointer, size_t size);
157775 
157776  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
157777  void operator delete (void* pointer)
157778  {
157779  // This is the generated delete operator...
157780  SgTemplateMemberFunctionDeclaration::operator delete (pointer,sizeof(SgTemplateMemberFunctionDeclaration));
157781  }
157782 
157784  static size_t numberOfNodes();
157785 
157787  static size_t memoryUsage();
157788 
157789  // End of scope which started in IR nodes specific code
157790  /* */
157791 
157792  /* name Internal Functions
157793  \brief Internal functions ... incomplete-documentation
157794 
157795  These functions have been made public as part of the design, but they are suggested for internal use
157796  or by particularly knowledgeable users for specialized tools or applications.
157797 
157798  \internal We could not make these private because they are required by user for special purposes. And
157799  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
157800 
157801  */
157802 
157803  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
157804  // overridden in every class by *generated* implementation
157806  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
157807  // MS: 06/28/02 container of names of variables or container indices
157808  // used used in the traversal to access AST successor nodes
157809  // overridden in every class by *generated* implementation
157812  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
157813 
157814  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
157815  // than all the vector copies. The implementation for these functions is generated for each class.
157817  virtual size_t get_numberOfTraversalSuccessors() override;
157819  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
157821  virtual size_t get_childIndex(SgNode *child) override;
157822 
157823 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
157824  // MS: 08/16/2002 method for generating RTI information
157826  virtual RTIReturnType roseRTI() override;
157827 #endif
157828  /* */
157829 
157830 
157831 
157832  /* name Deprecated Functions
157833  \brief Deprecated functions ... incomplete-documentation
157834 
157835  These functions have been deprecated from use.
157836  */
157837  /* */
157838 
157840  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
157841 
157842  // JJW (10/16/2008): Changed to a single function in Node.code, and put
157843  // getVariant() in #if 0 block to prevent confusing Doxygen
157844 #if 0
157845 
157846  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
157848  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
157849 #endif
157850  /* */
157851 
157852 
157853 
157854 
157855  public:
157856  /* name Traversal Support Functions
157857  \brief Traversal support functions ... incomplete-documentation
157858 
157859  These functions have been made public as part of the design, but they are suggested for internal use
157860  or by particularly knowledgable users for specialized tools or applications.
157861  */
157862  /* */
157863 
157864  // DQ (11/26/2005): Support for visitor pattern mechanims
157865  // (inferior to ROSE traversal mechanism, experimental).
157869 
157870  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
157872  virtual void accept (ROSE_VisitorPattern & visitor) override;
157873 
157874  // DQ (12/26/2005): Support for traversal based on the memory pool
157877  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
157878 
157881  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
157882 
157883  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
157884  // This traversal helps support internal tools that call static member functions.
157885  // note: this function operates on the memory pools.
157888  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
157889  /* */
157890 
157891 
157892  public:
157893  /* name Memory Allocation Functions
157894  \brief Memory allocations functions ... incomplete-documentation
157895 
157896  These functions have been made public as part of the design, but they are suggested for internal use
157897  or by particularly knowledgable users for specialized tools or applications.
157898  */
157899  /* */
157900 
157911  virtual bool isInMemoryPool() override;
157912 
157923  virtual void checkDataMemberPointersIfInMemoryPool() override;
157924 
157925  // DQ (4/30/2006): Modified to be a const function.
157940  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
157941 
157951  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
157952 
157964  virtual long getChildIndex( SgNode* childNode ) const override;
157965 
157966  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
157967  // comment here (changed to be a C style comment and not be a doxygen comment).
157968  /* \brief Constructor for use by AST File I/O Mechanism
157969 
157970  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
157971  which obtained via fast binary file I/O from disk.
157972  */
157973  // SgTemplateMemberFunctionDeclaration( SgTemplateMemberFunctionDeclarationStorageClass& source );
157974 
157975 
157976 
157977 
157978 
157979  // JH (10/24/2005): methods added to support the ast file IO
157980  private:
157981 
157982  /* name AST Memory Allocation Support Functions
157983  \brief Memory allocations support....
157984 
157985  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
157986  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
157987  and support the AST File I/O Mechanism.
157988  */
157989  /* */
157990 
157991  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
157992  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
157993  that I use the same type everywhere, if any changes are made. THe second one declares the type
157994  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
157995  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
157996  a correspinding one in the AST_FILE_IO class!
157997  */
157998  // DQ (9/2/2015): This typedef is no longer used, we can't define the
157999  // comment here (changed to be a C style comment and not be a doxygen comment).
158000  /* \brief Typedef used for low level memory access.
158001  */
158002  // typedef unsigned char* TestType;
158003 
158004  // DQ (9/2/2015): This typedef is no longer used, we can't define the
158005  // comment here (changed to be a C style comment and not be a doxygen comment).
158006  /* \brief Typedef used to hold memory addresses as values.
158007  */
158008  // typedef unsigned long AddressType;
158009 
158010 
158011 
158012  // necessary, to have direct access to the p_freepointer and the private methods !
158014  friend class AST_FILE_IO;
158015 
158017  friend class SgTemplateMemberFunctionDeclarationStorageClass;
158018 
158020  friend class AstSpecificDataManagingClass;
158021 
158023  friend class AstSpecificDataManagingClassStorageClass;
158024 
158025  public:
158027  SgTemplateMemberFunctionDeclaration( const SgTemplateMemberFunctionDeclarationStorageClass& source );
158028 
158029  // private: // JJW hack
158030  /*
158031  name AST Memory Allocation Support Variables
158032  Memory allocations support variables
158033 
158034  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
158035  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
158036  and support the AST File I/O Mechanism.
158037  */
158038  /* */
158039 
158040  public:
158041 
158042  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
158043  // to current node (so that it will work cleanly with build functions to specify patterns).
158044  // virtual SgNode* addRegExpAttribute();
158051 
158052 // *** COMMON CODE SECTION ENDS HERE ***
158053 
158054 
158055 // End of memberFunctionString
158056 // Start of memberFunctionString
158057 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
158058 
158059  // the generated cast function
158060  // friend ROSE_DLL_API SgTemplateMemberFunctionDeclaration* isSgTemplateMemberFunctionDeclaration ( SgNode* s );
158061 
158063 
158064 
158065 // End of memberFunctionString
158066 // Start of memberFunctionString
158067 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
158068 
158069  void post_construction_initialization() override;
158070 
158071 
158072 // End of memberFunctionString
158073 
158074  public:
158075  const SgTemplateParameterPtrList& get_templateParameters() const;
158076  SgTemplateParameterPtrList& get_templateParameters();
158077 
158078  public:
158079  const SgTemplateArgumentPtrList& get_templateSpecializationArguments() const;
158080  SgTemplateArgumentPtrList& get_templateSpecializationArguments();
158081 
158082  public:
158083  SgName get_string() const;
158084  void set_string(SgName string);
158085 
158086  public:
158087  bool get_string_represents_function_body() const;
158088  void set_string_represents_function_body(bool string_represents_function_body);
158089 
158090  public:
158091  SgDeclarationScope* get_nonreal_decl_scope() const;
158092  void set_nonreal_decl_scope(SgDeclarationScope* nonreal_decl_scope);
158093 
158094 
158095  public:
158097 
158098 
158099  public:
158100  SgTemplateMemberFunctionDeclaration(Sg_File_Info* startOfConstruct , SgName name = "", SgFunctionType* type = NULL, SgFunctionDefinition* definition = NULL);
158102 
158103  protected:
158104 // Start of memberFunctionString
158105 SgTemplateParameterPtrList p_templateParameters;
158106 
158107 // End of memberFunctionString
158108 // Start of memberFunctionString
158109 SgTemplateArgumentPtrList p_templateSpecializationArguments;
158110 
158111 // End of memberFunctionString
158112 // Start of memberFunctionString
158113 SgName p_string;
158114 
158115 // End of memberFunctionString
158116 // Start of memberFunctionString
158117 bool p_string_represents_function_body;
158118 
158119 // End of memberFunctionString
158120 // Start of memberFunctionString
158121 SgDeclarationScope* p_nonreal_decl_scope;
158122 
158123 // End of memberFunctionString
158124 
158125 
158126 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
158127 
158128 
158129  };
158130 #endif
158131 
158132 // postdeclarations for SgTemplateMemberFunctionDeclaration
158133 
158134 /* #line 158135 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
158135 
158136 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
158137 
158138 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
158139 
158140 
158141 /* #line 158142 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
158142 
158143 
158144 
158145 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
158146 
158147 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
158148 // This code is automatically generated for each
158149 // terminal and non-terminal within the defined
158150 // grammar. There is a simple way to change the
158151 // code to fix bugs etc. See the ROSE README file
158152 // for directions.
158153 
158154 // tps: (02/22/2010): Adding DLL export requirements
158155 #include "rosedll.h"
158156 
158157 // predeclarations for SgTemplateInstantiationMemberFunctionDecl
158158 
158159 /* #line 158160 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
158160 
158161 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
158162 
158163 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
158164 
158165 #if 1
158166 // Class Definition for SgTemplateInstantiationMemberFunctionDecl
158168  {
158169  public:
158170 
158171 
158172 /* #line 158173 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
158173 
158174  virtual SgNode* copy ( SgCopyHelp& help) const override;
158175 // Start of memberFunctionString
158176 /* #line 2939 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
158177 
158178 
158180 
158181  // DQ (2/15/2005): Added resetTemplateName function to handle templated member functions
158182  // DQ (5/8/2004): Not clear that this is useful for function name which
158183  // don't include the Template parameters in the name.
158184  // DQ (3/21/2004): get_name assembles the full template name with arguments (e.g. "ABC<int>")
158185  void resetTemplateName();
158186  // SgName get_name () const;
158187  // void set_name (SgName name);
158188 
158189  // RV (1/31/2006): Added mangler for template member function instantiations.
158191  virtual SgName get_mangled_name (void) const override;
158192 
158193  // DQ (2/11/2007): Add this to the derived class so that the SgSymbolTable::find() function will work properly
158194  virtual SgSymbol* get_symbol_from_symbol_table() const override;
158195 
158196 #if ALT_FIXUP_COPY
158197  // DQ (11/7/2007): These need to be called separately (see documentation)
158198  virtual void fixupCopy_scopes (SgNode* copy, SgCopyHelp & help) const override;
158199  virtual void fixupCopy_symbols (SgNode* copy, SgCopyHelp & help) const override;
158200  virtual void fixupCopy_references (SgNode* copy, SgCopyHelp & help) const override;
158201 #else
158202  // DQ (11/6/2007): Added fixup function to set scopes not set properly by the ROSETTA generated copy!
158203  virtual void fixupCopy(SgNode* copy, SgCopyHelp & help) const;
158204 #endif
158205 
158206  // DQ (11/27/2011): Adding support for uniform interface to support template build interface.
158208 
158209 
158210 
158211 // End of memberFunctionString
158212 // Start of memberFunctionString
158213 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
158214 
158215 // *** COMMON CODE SECTION BEGINS HERE ***
158216 
158217  public:
158218 
158219  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
158220  // and not required which is required to match the other aspects of the copy mechanism code generation.
158221  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
158222  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
158223  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
158224  // virtual SgNode* copy ( const SgCopyHelp & help) const;
158225 
158227  virtual std::string class_name() const override;
158228 
158230  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
158231 
158233  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
158234  // static const VariantT static_variant = V_SgTemplateInstantiationMemberFunctionDecl;
158235  enum { static_variant = V_SgTemplateInstantiationMemberFunctionDecl };
158236 
158237  /* the generated cast function */
158239  ROSE_DLL_API friend SgTemplateInstantiationMemberFunctionDecl* isSgTemplateInstantiationMemberFunctionDecl( SgNode * s );
158240 
158242  ROSE_DLL_API friend const SgTemplateInstantiationMemberFunctionDecl* isSgTemplateInstantiationMemberFunctionDecl( const SgNode * s );
158243 
158244  // ******************************************
158245  // * Memory Pool / New / Delete
158246  // ******************************************
158247 
158248  public:
158250  static const unsigned pool_size; //
158252  static std::vector<unsigned char *> pools; //
158254  static SgTemplateInstantiationMemberFunctionDecl * next_node; //
158255 
158257  static unsigned long initializeStorageClassArray(SgTemplateInstantiationMemberFunctionDeclStorageClass *); //
158258 
158260  static void clearMemoryPool(); //
158261  static void deleteMemoryPool(); //
158262 
158264  static void extendMemoryPoolForFileIO(); //
158265 
158267  static SgTemplateInstantiationMemberFunctionDecl * getPointerFromGlobalIndex(unsigned long); //
158269  static SgTemplateInstantiationMemberFunctionDecl * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
158270 
158272  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
158274  static void resetValidFreepointers(); //
158276  static unsigned long getNumberOfLastValidPointer(); //
158277 
158278 
158279 #if defined(INLINE_FUNCTIONS)
158280 
158281  inline void *operator new (size_t size);
158282 #else
158283 
158284  void *operator new (size_t size);
158285 #endif
158286 
158287  void operator delete (void* pointer, size_t size);
158288 
158289  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
158290  void operator delete (void* pointer)
158291  {
158292  // This is the generated delete operator...
158293  SgTemplateInstantiationMemberFunctionDecl::operator delete (pointer,sizeof(SgTemplateInstantiationMemberFunctionDecl));
158294  }
158295 
158297  static size_t numberOfNodes();
158298 
158300  static size_t memoryUsage();
158301 
158302  // End of scope which started in IR nodes specific code
158303  /* */
158304 
158305  /* name Internal Functions
158306  \brief Internal functions ... incomplete-documentation
158307 
158308  These functions have been made public as part of the design, but they are suggested for internal use
158309  or by particularly knowledgeable users for specialized tools or applications.
158310 
158311  \internal We could not make these private because they are required by user for special purposes. And
158312  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
158313 
158314  */
158315 
158316  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
158317  // overridden in every class by *generated* implementation
158319  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
158320  // MS: 06/28/02 container of names of variables or container indices
158321  // used used in the traversal to access AST successor nodes
158322  // overridden in every class by *generated* implementation
158325  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
158326 
158327  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
158328  // than all the vector copies. The implementation for these functions is generated for each class.
158330  virtual size_t get_numberOfTraversalSuccessors() override;
158332  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
158334  virtual size_t get_childIndex(SgNode *child) override;
158335 
158336 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
158337  // MS: 08/16/2002 method for generating RTI information
158339  virtual RTIReturnType roseRTI() override;
158340 #endif
158341  /* */
158342 
158343 
158344 
158345  /* name Deprecated Functions
158346  \brief Deprecated functions ... incomplete-documentation
158347 
158348  These functions have been deprecated from use.
158349  */
158350  /* */
158351 
158353  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
158354 
158355  // JJW (10/16/2008): Changed to a single function in Node.code, and put
158356  // getVariant() in #if 0 block to prevent confusing Doxygen
158357 #if 0
158358 
158359  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
158361  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
158362 #endif
158363  /* */
158364 
158365 
158366 
158367 
158368  public:
158369  /* name Traversal Support Functions
158370  \brief Traversal support functions ... incomplete-documentation
158371 
158372  These functions have been made public as part of the design, but they are suggested for internal use
158373  or by particularly knowledgable users for specialized tools or applications.
158374  */
158375  /* */
158376 
158377  // DQ (11/26/2005): Support for visitor pattern mechanims
158378  // (inferior to ROSE traversal mechanism, experimental).
158382 
158383  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
158385  virtual void accept (ROSE_VisitorPattern & visitor) override;
158386 
158387  // DQ (12/26/2005): Support for traversal based on the memory pool
158390  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
158391 
158394  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
158395 
158396  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
158397  // This traversal helps support internal tools that call static member functions.
158398  // note: this function operates on the memory pools.
158401  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
158402  /* */
158403 
158404 
158405  public:
158406  /* name Memory Allocation Functions
158407  \brief Memory allocations functions ... incomplete-documentation
158408 
158409  These functions have been made public as part of the design, but they are suggested for internal use
158410  or by particularly knowledgable users for specialized tools or applications.
158411  */
158412  /* */
158413 
158424  virtual bool isInMemoryPool() override;
158425 
158436  virtual void checkDataMemberPointersIfInMemoryPool() override;
158437 
158438  // DQ (4/30/2006): Modified to be a const function.
158453  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
158454 
158464  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
158465 
158477  virtual long getChildIndex( SgNode* childNode ) const override;
158478 
158479  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
158480  // comment here (changed to be a C style comment and not be a doxygen comment).
158481  /* \brief Constructor for use by AST File I/O Mechanism
158482 
158483  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
158484  which obtained via fast binary file I/O from disk.
158485  */
158486  // SgTemplateInstantiationMemberFunctionDecl( SgTemplateInstantiationMemberFunctionDeclStorageClass& source );
158487 
158488 
158489 
158490 
158491 
158492  // JH (10/24/2005): methods added to support the ast file IO
158493  private:
158494 
158495  /* name AST Memory Allocation Support Functions
158496  \brief Memory allocations support....
158497 
158498  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
158499  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
158500  and support the AST File I/O Mechanism.
158501  */
158502  /* */
158503 
158504  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
158505  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
158506  that I use the same type everywhere, if any changes are made. THe second one declares the type
158507  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
158508  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
158509  a correspinding one in the AST_FILE_IO class!
158510  */
158511  // DQ (9/2/2015): This typedef is no longer used, we can't define the
158512  // comment here (changed to be a C style comment and not be a doxygen comment).
158513  /* \brief Typedef used for low level memory access.
158514  */
158515  // typedef unsigned char* TestType;
158516 
158517  // DQ (9/2/2015): This typedef is no longer used, we can't define the
158518  // comment here (changed to be a C style comment and not be a doxygen comment).
158519  /* \brief Typedef used to hold memory addresses as values.
158520  */
158521  // typedef unsigned long AddressType;
158522 
158523 
158524 
158525  // necessary, to have direct access to the p_freepointer and the private methods !
158527  friend class AST_FILE_IO;
158528 
158530  friend class SgTemplateInstantiationMemberFunctionDeclStorageClass;
158531 
158533  friend class AstSpecificDataManagingClass;
158534 
158536  friend class AstSpecificDataManagingClassStorageClass;
158537 
158538  public:
158540  SgTemplateInstantiationMemberFunctionDecl( const SgTemplateInstantiationMemberFunctionDeclStorageClass& source );
158541 
158542  // private: // JJW hack
158543  /*
158544  name AST Memory Allocation Support Variables
158545  Memory allocations support variables
158546 
158547  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
158548  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
158549  and support the AST File I/O Mechanism.
158550  */
158551  /* */
158552 
158553  public:
158554 
158555  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
158556  // to current node (so that it will work cleanly with build functions to specify patterns).
158557  // virtual SgNode* addRegExpAttribute();
158564 
158565 // *** COMMON CODE SECTION ENDS HERE ***
158566 
158567 
158568 // End of memberFunctionString
158569 // Start of memberFunctionString
158570 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
158571 
158572  // the generated cast function
158573  // friend ROSE_DLL_API SgTemplateInstantiationMemberFunctionDecl* isSgTemplateInstantiationMemberFunctionDecl ( SgNode* s );
158574 
158576 
158577 
158578 // End of memberFunctionString
158579 // Start of memberFunctionString
158580 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
158581 
158582  void post_construction_initialization() override;
158583 
158584 
158585 // End of memberFunctionString
158586 
158587  public:
158588  SgName get_templateName() const;
158589  void set_templateName(SgName templateName);
158590 
158591  public:
158592  SgTemplateMemberFunctionDeclaration* get_templateDeclaration() const;
158593  void set_templateDeclaration(SgTemplateMemberFunctionDeclaration* templateDeclaration);
158594 
158595  public:
158596  const SgTemplateArgumentPtrList& get_templateArguments() const;
158597  SgTemplateArgumentPtrList& get_templateArguments();
158598 
158599  public:
158600  bool get_nameResetFromMangledForm() const;
158601  void set_nameResetFromMangledForm(bool nameResetFromMangledForm);
158602 
158603  public:
158604  bool get_template_argument_list_is_explicit() const;
158605  void set_template_argument_list_is_explicit(bool template_argument_list_is_explicit);
158606 
158607 
158608  public:
158610 
158611 
158612  public:
158613  SgTemplateInstantiationMemberFunctionDecl(Sg_File_Info* startOfConstruct , SgName name = "", SgFunctionType* type = NULL, SgFunctionDefinition* definition = NULL, SgTemplateMemberFunctionDeclaration* templateDeclaration = NULL, SgTemplateArgumentPtrList templateArguments = SgTemplateArgumentPtrList());
158614  SgTemplateInstantiationMemberFunctionDecl(SgName name, SgFunctionType* type, SgFunctionDefinition* definition, SgTemplateMemberFunctionDeclaration* templateDeclaration, SgTemplateArgumentPtrList templateArguments);
158615 
158616  protected:
158617 // Start of memberFunctionString
158619 
158620 // End of memberFunctionString
158621 // Start of memberFunctionString
158623 
158624 // End of memberFunctionString
158625 // Start of memberFunctionString
158626 SgTemplateArgumentPtrList p_templateArguments;
158627 
158628 // End of memberFunctionString
158629 // Start of memberFunctionString
158631 
158632 // End of memberFunctionString
158633 // Start of memberFunctionString
158634 bool p_template_argument_list_is_explicit;
158635 
158636 // End of memberFunctionString
158637 
158638 
158639 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
158640 
158641 
158642  };
158643 #endif
158644 
158645 // postdeclarations for SgTemplateInstantiationMemberFunctionDecl
158646 
158647 /* #line 158648 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
158648 
158649 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
158650 
158651 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
158652 
158653 
158654 /* #line 158655 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
158655 
158656 
158657 
158658 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
158659 
158660 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
158661 // This code is automatically generated for each
158662 // terminal and non-terminal within the defined
158663 // grammar. There is a simple way to change the
158664 // code to fix bugs etc. See the ROSE README file
158665 // for directions.
158666 
158667 // tps: (02/22/2010): Adding DLL export requirements
158668 #include "rosedll.h"
158669 
158670 // predeclarations for SgTemplateInstantiationFunctionDecl
158671 
158672 /* #line 158673 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
158673 
158674 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
158675 
158676 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
158677 
158678 #if 1
158679 // Class Definition for SgTemplateInstantiationFunctionDecl
158681  {
158682  public:
158683 
158684 
158685 /* #line 158686 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
158686 
158687  virtual SgNode* copy ( SgCopyHelp& help) const override;
158688 // Start of memberFunctionString
158689 /* #line 2906 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
158690 
158691 
158693 
158694  // DQ (2/15/2005): Added resetTemplateName function to handle templated functions
158695  // DQ (5/8/2004): Not clear that this is useful for function name which
158696  // don't include the Template parameters in the name.
158697  // DQ (3/21/2004): get_name assembles the full template name with arguments (e.g. "ABC<int>")
158698  void resetTemplateName();
158699  // SgName get_name () const;
158700  // void set_name (SgName name);
158701 
158702  // RV (1/31/2006): Added mangler for template function instantiations.
158703  virtual SgName get_mangled_name (void) const override;
158704 
158705  // DQ (2/11/2007): Add this to the derived class so that the SgSymbolTable::find() function will work properly
158706  virtual SgSymbol* get_symbol_from_symbol_table() const override;
158707 
158708 #if ALT_FIXUP_COPY
158709  // DQ (11/7/2007): These need to be called separately (see documentation)
158710  virtual void fixupCopy_scopes (SgNode* copy, SgCopyHelp & help) const override;
158711  virtual void fixupCopy_symbols (SgNode* copy, SgCopyHelp & help) const override;
158712  virtual void fixupCopy_references (SgNode* copy, SgCopyHelp & help) const override;
158713 #else
158714  // DQ (10/19/2007): Added fixup function to set scopes not set properly by the ROSETTA generated copy!
158715  virtual void fixupCopy(SgNode* copy, SgCopyHelp & help) const;
158716 #endif
158717 
158718  // DQ (11/27/2011): Adding support for uniform interface to support template build interface.
158720 
158721 
158722 
158723 // End of memberFunctionString
158724 // Start of memberFunctionString
158725 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
158726 
158727 // *** COMMON CODE SECTION BEGINS HERE ***
158728 
158729  public:
158730 
158731  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
158732  // and not required which is required to match the other aspects of the copy mechanism code generation.
158733  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
158734  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
158735  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
158736  // virtual SgNode* copy ( const SgCopyHelp & help) const;
158737 
158739  virtual std::string class_name() const override;
158740 
158742  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
158743 
158745  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
158746  // static const VariantT static_variant = V_SgTemplateInstantiationFunctionDecl;
158747  enum { static_variant = V_SgTemplateInstantiationFunctionDecl };
158748 
158749  /* the generated cast function */
158751  ROSE_DLL_API friend SgTemplateInstantiationFunctionDecl* isSgTemplateInstantiationFunctionDecl( SgNode * s );
158752 
158754  ROSE_DLL_API friend const SgTemplateInstantiationFunctionDecl* isSgTemplateInstantiationFunctionDecl( const SgNode * s );
158755 
158756  // ******************************************
158757  // * Memory Pool / New / Delete
158758  // ******************************************
158759 
158760  public:
158762  static const unsigned pool_size; //
158764  static std::vector<unsigned char *> pools; //
158766  static SgTemplateInstantiationFunctionDecl * next_node; //
158767 
158769  static unsigned long initializeStorageClassArray(SgTemplateInstantiationFunctionDeclStorageClass *); //
158770 
158772  static void clearMemoryPool(); //
158773  static void deleteMemoryPool(); //
158774 
158776  static void extendMemoryPoolForFileIO(); //
158777 
158779  static SgTemplateInstantiationFunctionDecl * getPointerFromGlobalIndex(unsigned long); //
158781  static SgTemplateInstantiationFunctionDecl * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
158782 
158784  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
158786  static void resetValidFreepointers(); //
158788  static unsigned long getNumberOfLastValidPointer(); //
158789 
158790 
158791 #if defined(INLINE_FUNCTIONS)
158792 
158793  inline void *operator new (size_t size);
158794 #else
158795 
158796  void *operator new (size_t size);
158797 #endif
158798 
158799  void operator delete (void* pointer, size_t size);
158800 
158801  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
158802  void operator delete (void* pointer)
158803  {
158804  // This is the generated delete operator...
158805  SgTemplateInstantiationFunctionDecl::operator delete (pointer,sizeof(SgTemplateInstantiationFunctionDecl));
158806  }
158807 
158809  static size_t numberOfNodes();
158810 
158812  static size_t memoryUsage();
158813 
158814  // End of scope which started in IR nodes specific code
158815  /* */
158816 
158817  /* name Internal Functions
158818  \brief Internal functions ... incomplete-documentation
158819 
158820  These functions have been made public as part of the design, but they are suggested for internal use
158821  or by particularly knowledgeable users for specialized tools or applications.
158822 
158823  \internal We could not make these private because they are required by user for special purposes. And
158824  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
158825 
158826  */
158827 
158828  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
158829  // overridden in every class by *generated* implementation
158831  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
158832  // MS: 06/28/02 container of names of variables or container indices
158833  // used used in the traversal to access AST successor nodes
158834  // overridden in every class by *generated* implementation
158837  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
158838 
158839  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
158840  // than all the vector copies. The implementation for these functions is generated for each class.
158842  virtual size_t get_numberOfTraversalSuccessors() override;
158844  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
158846  virtual size_t get_childIndex(SgNode *child) override;
158847 
158848 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
158849  // MS: 08/16/2002 method for generating RTI information
158851  virtual RTIReturnType roseRTI() override;
158852 #endif
158853  /* */
158854 
158855 
158856 
158857  /* name Deprecated Functions
158858  \brief Deprecated functions ... incomplete-documentation
158859 
158860  These functions have been deprecated from use.
158861  */
158862  /* */
158863 
158865  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
158866 
158867  // JJW (10/16/2008): Changed to a single function in Node.code, and put
158868  // getVariant() in #if 0 block to prevent confusing Doxygen
158869 #if 0
158870 
158871  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
158873  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
158874 #endif
158875  /* */
158876 
158877 
158878 
158879 
158880  public:
158881  /* name Traversal Support Functions
158882  \brief Traversal support functions ... incomplete-documentation
158883 
158884  These functions have been made public as part of the design, but they are suggested for internal use
158885  or by particularly knowledgable users for specialized tools or applications.
158886  */
158887  /* */
158888 
158889  // DQ (11/26/2005): Support for visitor pattern mechanims
158890  // (inferior to ROSE traversal mechanism, experimental).
158894 
158895  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
158897  virtual void accept (ROSE_VisitorPattern & visitor) override;
158898 
158899  // DQ (12/26/2005): Support for traversal based on the memory pool
158902  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
158903 
158906  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
158907 
158908  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
158909  // This traversal helps support internal tools that call static member functions.
158910  // note: this function operates on the memory pools.
158913  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
158914  /* */
158915 
158916 
158917  public:
158918  /* name Memory Allocation Functions
158919  \brief Memory allocations functions ... incomplete-documentation
158920 
158921  These functions have been made public as part of the design, but they are suggested for internal use
158922  or by particularly knowledgable users for specialized tools or applications.
158923  */
158924  /* */
158925 
158936  virtual bool isInMemoryPool() override;
158937 
158948  virtual void checkDataMemberPointersIfInMemoryPool() override;
158949 
158950  // DQ (4/30/2006): Modified to be a const function.
158965  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
158966 
158976  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
158977 
158989  virtual long getChildIndex( SgNode* childNode ) const override;
158990 
158991  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
158992  // comment here (changed to be a C style comment and not be a doxygen comment).
158993  /* \brief Constructor for use by AST File I/O Mechanism
158994 
158995  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
158996  which obtained via fast binary file I/O from disk.
158997  */
158998  // SgTemplateInstantiationFunctionDecl( SgTemplateInstantiationFunctionDeclStorageClass& source );
158999 
159000 
159001 
159002 
159003 
159004  // JH (10/24/2005): methods added to support the ast file IO
159005  private:
159006 
159007  /* name AST Memory Allocation Support Functions
159008  \brief Memory allocations support....
159009 
159010  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
159011  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
159012  and support the AST File I/O Mechanism.
159013  */
159014  /* */
159015 
159016  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
159017  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
159018  that I use the same type everywhere, if any changes are made. THe second one declares the type
159019  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
159020  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
159021  a correspinding one in the AST_FILE_IO class!
159022  */
159023  // DQ (9/2/2015): This typedef is no longer used, we can't define the
159024  // comment here (changed to be a C style comment and not be a doxygen comment).
159025  /* \brief Typedef used for low level memory access.
159026  */
159027  // typedef unsigned char* TestType;
159028 
159029  // DQ (9/2/2015): This typedef is no longer used, we can't define the
159030  // comment here (changed to be a C style comment and not be a doxygen comment).
159031  /* \brief Typedef used to hold memory addresses as values.
159032  */
159033  // typedef unsigned long AddressType;
159034 
159035 
159036 
159037  // necessary, to have direct access to the p_freepointer and the private methods !
159039  friend class AST_FILE_IO;
159040 
159042  friend class SgTemplateInstantiationFunctionDeclStorageClass;
159043 
159045  friend class AstSpecificDataManagingClass;
159046 
159048  friend class AstSpecificDataManagingClassStorageClass;
159049 
159050  public:
159052  SgTemplateInstantiationFunctionDecl( const SgTemplateInstantiationFunctionDeclStorageClass& source );
159053 
159054  // private: // JJW hack
159055  /*
159056  name AST Memory Allocation Support Variables
159057  Memory allocations support variables
159058 
159059  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
159060  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
159061  and support the AST File I/O Mechanism.
159062  */
159063  /* */
159064 
159065  public:
159066 
159067  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
159068  // to current node (so that it will work cleanly with build functions to specify patterns).
159069  // virtual SgNode* addRegExpAttribute();
159076 
159077 // *** COMMON CODE SECTION ENDS HERE ***
159078 
159079 
159080 // End of memberFunctionString
159081 // Start of memberFunctionString
159082 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
159083 
159084  // the generated cast function
159085  // friend ROSE_DLL_API SgTemplateInstantiationFunctionDecl* isSgTemplateInstantiationFunctionDecl ( SgNode* s );
159086 
159088 
159089 
159090 // End of memberFunctionString
159091 // Start of memberFunctionString
159092 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
159093 
159094  void post_construction_initialization() override;
159095 
159096 
159097 // End of memberFunctionString
159098 
159099  public:
159100  SgName get_templateName() const;
159101  void set_templateName(SgName templateName);
159102 
159103  public:
159104  SgTemplateFunctionDeclaration* get_templateDeclaration() const;
159105  void set_templateDeclaration(SgTemplateFunctionDeclaration* templateDeclaration);
159106 
159107  public:
159108  const SgTemplateArgumentPtrList& get_templateArguments() const;
159109  SgTemplateArgumentPtrList& get_templateArguments();
159110 
159111  public:
159112  bool get_nameResetFromMangledForm() const;
159113  void set_nameResetFromMangledForm(bool nameResetFromMangledForm);
159114 
159115  public:
159116  bool get_template_argument_list_is_explicit() const;
159117  void set_template_argument_list_is_explicit(bool template_argument_list_is_explicit);
159118 
159119 
159120  public:
159122 
159123 
159124  public:
159125  SgTemplateInstantiationFunctionDecl(Sg_File_Info* startOfConstruct , SgName name = "", SgFunctionType* type = NULL, SgFunctionDefinition* definition = NULL, SgTemplateFunctionDeclaration* templateDeclaration = NULL, SgTemplateArgumentPtrList templateArguments = SgTemplateArgumentPtrList());
159126  SgTemplateInstantiationFunctionDecl(SgName name, SgFunctionType* type, SgFunctionDefinition* definition, SgTemplateFunctionDeclaration* templateDeclaration, SgTemplateArgumentPtrList templateArguments);
159127 
159128  protected:
159129 // Start of memberFunctionString
159131 
159132 // End of memberFunctionString
159133 // Start of memberFunctionString
159135 
159136 // End of memberFunctionString
159137 // Start of memberFunctionString
159138 SgTemplateArgumentPtrList p_templateArguments;
159139 
159140 // End of memberFunctionString
159141 // Start of memberFunctionString
159143 
159144 // End of memberFunctionString
159145 // Start of memberFunctionString
159146 bool p_template_argument_list_is_explicit;
159147 
159148 // End of memberFunctionString
159149 
159150 
159151 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
159152 
159153 
159154  };
159155 #endif
159156 
159157 // postdeclarations for SgTemplateInstantiationFunctionDecl
159158 
159159 /* #line 159160 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
159160 
159161 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
159162 
159163 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
159164 
159165 
159166 /* #line 159167 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
159167 
159168 
159169 
159170 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
159171 
159172 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
159173 // This code is automatically generated for each
159174 // terminal and non-terminal within the defined
159175 // grammar. There is a simple way to change the
159176 // code to fix bugs etc. See the ROSE README file
159177 // for directions.
159178 
159179 // tps: (02/22/2010): Adding DLL export requirements
159180 #include "rosedll.h"
159181 
159182 // predeclarations for SgProgramHeaderStatement
159183 
159184 /* #line 159185 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
159185 
159186 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
159187 
159188 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
159189 
159190 #if 1
159191 // Class Definition for SgProgramHeaderStatement
159193  {
159194  public:
159195 
159196 
159197 /* #line 159198 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
159198 
159199  virtual SgNode* copy ( SgCopyHelp& help) const override;
159200 // Start of memberFunctionString
159201 /* #line 3228 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
159202 
159203  /* HEADER_LIST_DECLARATIONS */
159204  // DQ (3/20/2007): These are automatically generated access functions from p_name (also added as a data member)
159205  // SgName get_name() const;
159206  // void set_name(SgName);
159207 
159208  // DQ (3/20/2007): These are no longer explicitly stored in the AST (they can be looked up in the symbol table)
159209  // SgFunctionType* get_type () const;
159210  // void set_type ( SgFunctionType* type );
159211 
159212  // DQ (3/20/2007): This is not required for a Fortran Program Header, I think. If it is it should be the
159213  // return_type and should be added as a data member with the access functions automatically generated.
159214  // SgType* get_orig_return_type() const;
159215 
159216  // DQ (3/20/2007): I think we need this
159217  SgName get_mangled_name() const override;
159218 
159219  // DQ (3/20/2007): This should be added as a data member with automatically generated access functions.
159220  // void set_parameterList ( SgFunctionParameterList* );
159221 
159222  // DQ (3/20/2007): Fortran Program's can't use arguments in this situation (rule 1102, Fortran 2003 Standard 04-007).
159223  // SgInitializedNamePtrList & get_args() ;
159224  // const SgInitializedNamePtrList & get_args() const;
159225 
159226  protected:
159227  virtual bool replace_child(SgStatement *,SgStatement *, bool extractListFromBasicBlock = false) override;
159228 
159229  public:
159230  // DQ (3/20/2007): Fortran Program does not have this concept.
159231  // void hasEllipses();
159232 
159233 
159234 
159235 // End of memberFunctionString
159236 // Start of memberFunctionString
159237 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
159238 
159239 // *** COMMON CODE SECTION BEGINS HERE ***
159240 
159241  public:
159242 
159243  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
159244  // and not required which is required to match the other aspects of the copy mechanism code generation.
159245  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
159246  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
159247  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
159248  // virtual SgNode* copy ( const SgCopyHelp & help) const;
159249 
159251  virtual std::string class_name() const override;
159252 
159254  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
159255 
159257  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
159258  // static const VariantT static_variant = V_SgProgramHeaderStatement;
159259  enum { static_variant = V_SgProgramHeaderStatement };
159260 
159261  /* the generated cast function */
159263  ROSE_DLL_API friend SgProgramHeaderStatement* isSgProgramHeaderStatement( SgNode * s );
159264 
159266  ROSE_DLL_API friend const SgProgramHeaderStatement* isSgProgramHeaderStatement( const SgNode * s );
159267 
159268  // ******************************************
159269  // * Memory Pool / New / Delete
159270  // ******************************************
159271 
159272  public:
159274  static const unsigned pool_size; //
159276  static std::vector<unsigned char *> pools; //
159278  static SgProgramHeaderStatement * next_node; //
159279 
159281  static unsigned long initializeStorageClassArray(SgProgramHeaderStatementStorageClass *); //
159282 
159284  static void clearMemoryPool(); //
159285  static void deleteMemoryPool(); //
159286 
159288  static void extendMemoryPoolForFileIO(); //
159289 
159291  static SgProgramHeaderStatement * getPointerFromGlobalIndex(unsigned long); //
159293  static SgProgramHeaderStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
159294 
159296  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
159298  static void resetValidFreepointers(); //
159300  static unsigned long getNumberOfLastValidPointer(); //
159301 
159302 
159303 #if defined(INLINE_FUNCTIONS)
159304 
159305  inline void *operator new (size_t size);
159306 #else
159307 
159308  void *operator new (size_t size);
159309 #endif
159310 
159311  void operator delete (void* pointer, size_t size);
159312 
159313  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
159314  void operator delete (void* pointer)
159315  {
159316  // This is the generated delete operator...
159317  SgProgramHeaderStatement::operator delete (pointer,sizeof(SgProgramHeaderStatement));
159318  }
159319 
159321  static size_t numberOfNodes();
159322 
159324  static size_t memoryUsage();
159325 
159326  // End of scope which started in IR nodes specific code
159327  /* */
159328 
159329  /* name Internal Functions
159330  \brief Internal functions ... incomplete-documentation
159331 
159332  These functions have been made public as part of the design, but they are suggested for internal use
159333  or by particularly knowledgeable users for specialized tools or applications.
159334 
159335  \internal We could not make these private because they are required by user for special purposes. And
159336  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
159337 
159338  */
159339 
159340  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
159341  // overridden in every class by *generated* implementation
159343  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
159344  // MS: 06/28/02 container of names of variables or container indices
159345  // used used in the traversal to access AST successor nodes
159346  // overridden in every class by *generated* implementation
159349  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
159350 
159351  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
159352  // than all the vector copies. The implementation for these functions is generated for each class.
159354  virtual size_t get_numberOfTraversalSuccessors() override;
159356  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
159358  virtual size_t get_childIndex(SgNode *child) override;
159359 
159360 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
159361  // MS: 08/16/2002 method for generating RTI information
159363  virtual RTIReturnType roseRTI() override;
159364 #endif
159365  /* */
159366 
159367 
159368 
159369  /* name Deprecated Functions
159370  \brief Deprecated functions ... incomplete-documentation
159371 
159372  These functions have been deprecated from use.
159373  */
159374  /* */
159375 
159377  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
159378 
159379  // JJW (10/16/2008): Changed to a single function in Node.code, and put
159380  // getVariant() in #if 0 block to prevent confusing Doxygen
159381 #if 0
159382 
159383  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
159385  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
159386 #endif
159387  /* */
159388 
159389 
159390 
159391 
159392  public:
159393  /* name Traversal Support Functions
159394  \brief Traversal support functions ... incomplete-documentation
159395 
159396  These functions have been made public as part of the design, but they are suggested for internal use
159397  or by particularly knowledgable users for specialized tools or applications.
159398  */
159399  /* */
159400 
159401  // DQ (11/26/2005): Support for visitor pattern mechanims
159402  // (inferior to ROSE traversal mechanism, experimental).
159406 
159407  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
159409  virtual void accept (ROSE_VisitorPattern & visitor) override;
159410 
159411  // DQ (12/26/2005): Support for traversal based on the memory pool
159414  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
159415 
159418  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
159419 
159420  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
159421  // This traversal helps support internal tools that call static member functions.
159422  // note: this function operates on the memory pools.
159425  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
159426  /* */
159427 
159428 
159429  public:
159430  /* name Memory Allocation Functions
159431  \brief Memory allocations functions ... incomplete-documentation
159432 
159433  These functions have been made public as part of the design, but they are suggested for internal use
159434  or by particularly knowledgable users for specialized tools or applications.
159435  */
159436  /* */
159437 
159448  virtual bool isInMemoryPool() override;
159449 
159460  virtual void checkDataMemberPointersIfInMemoryPool() override;
159461 
159462  // DQ (4/30/2006): Modified to be a const function.
159477  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
159478 
159488  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
159489 
159501  virtual long getChildIndex( SgNode* childNode ) const override;
159502 
159503  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
159504  // comment here (changed to be a C style comment and not be a doxygen comment).
159505  /* \brief Constructor for use by AST File I/O Mechanism
159506 
159507  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
159508  which obtained via fast binary file I/O from disk.
159509  */
159510  // SgProgramHeaderStatement( SgProgramHeaderStatementStorageClass& source );
159511 
159512 
159513 
159514 
159515 
159516  // JH (10/24/2005): methods added to support the ast file IO
159517  private:
159518 
159519  /* name AST Memory Allocation Support Functions
159520  \brief Memory allocations support....
159521 
159522  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
159523  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
159524  and support the AST File I/O Mechanism.
159525  */
159526  /* */
159527 
159528  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
159529  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
159530  that I use the same type everywhere, if any changes are made. THe second one declares the type
159531  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
159532  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
159533  a correspinding one in the AST_FILE_IO class!
159534  */
159535  // DQ (9/2/2015): This typedef is no longer used, we can't define the
159536  // comment here (changed to be a C style comment and not be a doxygen comment).
159537  /* \brief Typedef used for low level memory access.
159538  */
159539  // typedef unsigned char* TestType;
159540 
159541  // DQ (9/2/2015): This typedef is no longer used, we can't define the
159542  // comment here (changed to be a C style comment and not be a doxygen comment).
159543  /* \brief Typedef used to hold memory addresses as values.
159544  */
159545  // typedef unsigned long AddressType;
159546 
159547 
159548 
159549  // necessary, to have direct access to the p_freepointer and the private methods !
159551  friend class AST_FILE_IO;
159552 
159554  friend class SgProgramHeaderStatementStorageClass;
159555 
159557  friend class AstSpecificDataManagingClass;
159558 
159560  friend class AstSpecificDataManagingClassStorageClass;
159561 
159562  public:
159564  SgProgramHeaderStatement( const SgProgramHeaderStatementStorageClass& source );
159565 
159566  // private: // JJW hack
159567  /*
159568  name AST Memory Allocation Support Variables
159569  Memory allocations support variables
159570 
159571  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
159572  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
159573  and support the AST File I/O Mechanism.
159574  */
159575  /* */
159576 
159577  public:
159578 
159579  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
159580  // to current node (so that it will work cleanly with build functions to specify patterns).
159581  // virtual SgNode* addRegExpAttribute();
159588 
159589 // *** COMMON CODE SECTION ENDS HERE ***
159590 
159591 
159592 // End of memberFunctionString
159593 // Start of memberFunctionString
159594 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
159595 
159596  // the generated cast function
159597  // friend ROSE_DLL_API SgProgramHeaderStatement* isSgProgramHeaderStatement ( SgNode* s );
159598 
159600 
159601 
159602 // End of memberFunctionString
159603 // Start of memberFunctionString
159604 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
159605 
159606  void post_construction_initialization() override;
159607 
159608 
159609 // End of memberFunctionString
159610 
159611  public:
159612  bool get_program_statement_explicit() const;
159613  void set_program_statement_explicit(bool program_statement_explicit);
159614 
159615  public:
159616  SgLabelRefExp* get_end_numeric_label() const /* (getDataAccessFunctionPrototypeString) */;
159617  void set_end_numeric_label(SgLabelRefExp* end_numeric_label) override /* (getDataAccessFunctionPrototypeString) */;
159618 
159619 
159620  public:
159621  virtual ~SgProgramHeaderStatement();
159622 
159623 
159624  public:
159625  SgProgramHeaderStatement(Sg_File_Info* startOfConstruct , SgName name = "", SgFunctionType* type = NULL, SgFunctionDefinition* definition = NULL);
159627 
159628  protected:
159629 // Start of memberFunctionString
159630 bool p_program_statement_explicit;
159631 
159632 // End of memberFunctionString
159633 // Start of memberFunctionString
159634 SgLabelRefExp* p_end_numeric_label;
159635 
159636 // End of memberFunctionString
159637 
159638 
159639 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
159640 
159641 
159642  };
159643 #endif
159644 
159645 // postdeclarations for SgProgramHeaderStatement
159646 
159647 /* #line 159648 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
159648 
159649 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
159650 
159651 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
159652 
159653 
159654 /* #line 159655 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
159655 
159656 
159657 
159658 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
159659 
159660 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
159661 // This code is automatically generated for each
159662 // terminal and non-terminal within the defined
159663 // grammar. There is a simple way to change the
159664 // code to fix bugs etc. See the ROSE README file
159665 // for directions.
159666 
159667 // tps: (02/22/2010): Adding DLL export requirements
159668 #include "rosedll.h"
159669 
159670 // predeclarations for SgProcedureHeaderStatement
159671 
159672 /* #line 159673 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
159673 
159674 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
159675 
159676 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
159677 
159678 #if 1
159679 // Class Definition for SgProcedureHeaderStatement
159681  {
159682  public:
159683 
159684 
159685 /* #line 159686 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
159686 
159687  virtual SgNode* copy ( SgCopyHelp& help) const override;
159688 // Start of memberFunctionString
159689 /* #line 3261 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
159690 
159691 
159692  // DQ (3/20/2007): These should be generated automatically from ROSETTA.
159693  // SgName get_name() const;
159694  // void set_name(SgName);
159695  // SgFunctionType* get_type () const;
159696  // void set_type ( SgFunctionType* type );
159697  // SgType* get_orig_return_type() const;
159698  // void set_parameterList ( SgFunctionParameterList* );
159699 
159703  {
159708  e_last_subprogram_kind
159709  };
159710 
159711  SgName get_mangled_name() const override;
159712 
159713  /* HEADER_LIST_DECLARATIONS */
159714 
159715  // SgInitializedNamePtrList & get_args() ;
159716  // const SgInitializedNamePtrList & get_args() const;
159717 
159718  protected:
159719  // DQ (3/20/2007): Unclear if we need this, it references p_definition, which does not appear to be defined!
159720  // virtual bool replace_child(SgStatement *,SgStatement *, bool extractListFromBasicBlock = false);
159721 
159722  public:
159723  bool isFunction() const;
159724  bool isSubroutine() const;
159725  bool isBlockData() const;
159726 
159727  // DQ (3/20/2007): Fortran does not have this concept (I think)
159728  // void hasEllipses();
159729 
159730 
159731 // End of memberFunctionString
159732 // Start of memberFunctionString
159733 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
159734 
159735 // *** COMMON CODE SECTION BEGINS HERE ***
159736 
159737  public:
159738 
159739  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
159740  // and not required which is required to match the other aspects of the copy mechanism code generation.
159741  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
159742  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
159743  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
159744  // virtual SgNode* copy ( const SgCopyHelp & help) const;
159745 
159747  virtual std::string class_name() const override;
159748 
159750  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
159751 
159753  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
159754  // static const VariantT static_variant = V_SgProcedureHeaderStatement;
159755  enum { static_variant = V_SgProcedureHeaderStatement };
159756 
159757  /* the generated cast function */
159759  ROSE_DLL_API friend SgProcedureHeaderStatement* isSgProcedureHeaderStatement( SgNode * s );
159760 
159762  ROSE_DLL_API friend const SgProcedureHeaderStatement* isSgProcedureHeaderStatement( const SgNode * s );
159763 
159764  // ******************************************
159765  // * Memory Pool / New / Delete
159766  // ******************************************
159767 
159768  public:
159770  static const unsigned pool_size; //
159772  static std::vector<unsigned char *> pools; //
159774  static SgProcedureHeaderStatement * next_node; //
159775 
159777  static unsigned long initializeStorageClassArray(SgProcedureHeaderStatementStorageClass *); //
159778 
159780  static void clearMemoryPool(); //
159781  static void deleteMemoryPool(); //
159782 
159784  static void extendMemoryPoolForFileIO(); //
159785 
159787  static SgProcedureHeaderStatement * getPointerFromGlobalIndex(unsigned long); //
159789  static SgProcedureHeaderStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
159790 
159792  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
159794  static void resetValidFreepointers(); //
159796  static unsigned long getNumberOfLastValidPointer(); //
159797 
159798 
159799 #if defined(INLINE_FUNCTIONS)
159800 
159801  inline void *operator new (size_t size);
159802 #else
159803 
159804  void *operator new (size_t size);
159805 #endif
159806 
159807  void operator delete (void* pointer, size_t size);
159808 
159809  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
159810  void operator delete (void* pointer)
159811  {
159812  // This is the generated delete operator...
159813  SgProcedureHeaderStatement::operator delete (pointer,sizeof(SgProcedureHeaderStatement));
159814  }
159815 
159817  static size_t numberOfNodes();
159818 
159820  static size_t memoryUsage();
159821 
159822  // End of scope which started in IR nodes specific code
159823  /* */
159824 
159825  /* name Internal Functions
159826  \brief Internal functions ... incomplete-documentation
159827 
159828  These functions have been made public as part of the design, but they are suggested for internal use
159829  or by particularly knowledgeable users for specialized tools or applications.
159830 
159831  \internal We could not make these private because they are required by user for special purposes. And
159832  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
159833 
159834  */
159835 
159836  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
159837  // overridden in every class by *generated* implementation
159839  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
159840  // MS: 06/28/02 container of names of variables or container indices
159841  // used used in the traversal to access AST successor nodes
159842  // overridden in every class by *generated* implementation
159845  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
159846 
159847  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
159848  // than all the vector copies. The implementation for these functions is generated for each class.
159850  virtual size_t get_numberOfTraversalSuccessors() override;
159852  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
159854  virtual size_t get_childIndex(SgNode *child) override;
159855 
159856 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
159857  // MS: 08/16/2002 method for generating RTI information
159859  virtual RTIReturnType roseRTI() override;
159860 #endif
159861  /* */
159862 
159863 
159864 
159865  /* name Deprecated Functions
159866  \brief Deprecated functions ... incomplete-documentation
159867 
159868  These functions have been deprecated from use.
159869  */
159870  /* */
159871 
159873  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
159874 
159875  // JJW (10/16/2008): Changed to a single function in Node.code, and put
159876  // getVariant() in #if 0 block to prevent confusing Doxygen
159877 #if 0
159878 
159879  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
159881  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
159882 #endif
159883  /* */
159884 
159885 
159886 
159887 
159888  public:
159889  /* name Traversal Support Functions
159890  \brief Traversal support functions ... incomplete-documentation
159891 
159892  These functions have been made public as part of the design, but they are suggested for internal use
159893  or by particularly knowledgable users for specialized tools or applications.
159894  */
159895  /* */
159896 
159897  // DQ (11/26/2005): Support for visitor pattern mechanims
159898  // (inferior to ROSE traversal mechanism, experimental).
159902 
159903  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
159905  virtual void accept (ROSE_VisitorPattern & visitor) override;
159906 
159907  // DQ (12/26/2005): Support for traversal based on the memory pool
159910  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
159911 
159914  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
159915 
159916  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
159917  // This traversal helps support internal tools that call static member functions.
159918  // note: this function operates on the memory pools.
159921  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
159922  /* */
159923 
159924 
159925  public:
159926  /* name Memory Allocation Functions
159927  \brief Memory allocations functions ... incomplete-documentation
159928 
159929  These functions have been made public as part of the design, but they are suggested for internal use
159930  or by particularly knowledgable users for specialized tools or applications.
159931  */
159932  /* */
159933 
159944  virtual bool isInMemoryPool() override;
159945 
159956  virtual void checkDataMemberPointersIfInMemoryPool() override;
159957 
159958  // DQ (4/30/2006): Modified to be a const function.
159973  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
159974 
159984  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
159985 
159997  virtual long getChildIndex( SgNode* childNode ) const override;
159998 
159999  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
160000  // comment here (changed to be a C style comment and not be a doxygen comment).
160001  /* \brief Constructor for use by AST File I/O Mechanism
160002 
160003  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
160004  which obtained via fast binary file I/O from disk.
160005  */
160006  // SgProcedureHeaderStatement( SgProcedureHeaderStatementStorageClass& source );
160007 
160008 
160009 
160010 
160011 
160012  // JH (10/24/2005): methods added to support the ast file IO
160013  private:
160014 
160015  /* name AST Memory Allocation Support Functions
160016  \brief Memory allocations support....
160017 
160018  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
160019  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
160020  and support the AST File I/O Mechanism.
160021  */
160022  /* */
160023 
160024  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
160025  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
160026  that I use the same type everywhere, if any changes are made. THe second one declares the type
160027  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
160028  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
160029  a correspinding one in the AST_FILE_IO class!
160030  */
160031  // DQ (9/2/2015): This typedef is no longer used, we can't define the
160032  // comment here (changed to be a C style comment and not be a doxygen comment).
160033  /* \brief Typedef used for low level memory access.
160034  */
160035  // typedef unsigned char* TestType;
160036 
160037  // DQ (9/2/2015): This typedef is no longer used, we can't define the
160038  // comment here (changed to be a C style comment and not be a doxygen comment).
160039  /* \brief Typedef used to hold memory addresses as values.
160040  */
160041  // typedef unsigned long AddressType;
160042 
160043 
160044 
160045  // necessary, to have direct access to the p_freepointer and the private methods !
160047  friend class AST_FILE_IO;
160048 
160050  friend class SgProcedureHeaderStatementStorageClass;
160051 
160053  friend class AstSpecificDataManagingClass;
160054 
160056  friend class AstSpecificDataManagingClassStorageClass;
160057 
160058  public:
160060  SgProcedureHeaderStatement( const SgProcedureHeaderStatementStorageClass& source );
160061 
160062  // private: // JJW hack
160063  /*
160064  name AST Memory Allocation Support Variables
160065  Memory allocations support variables
160066 
160067  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
160068  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
160069  and support the AST File I/O Mechanism.
160070  */
160071  /* */
160072 
160073  public:
160074 
160075  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
160076  // to current node (so that it will work cleanly with build functions to specify patterns).
160077  // virtual SgNode* addRegExpAttribute();
160084 
160085 // *** COMMON CODE SECTION ENDS HERE ***
160086 
160087 
160088 // End of memberFunctionString
160089 // Start of memberFunctionString
160090 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
160091 
160092  // the generated cast function
160093  // friend ROSE_DLL_API SgProcedureHeaderStatement* isSgProcedureHeaderStatement ( SgNode* s );
160094 
160096 
160097 
160098 // End of memberFunctionString
160099 // Start of memberFunctionString
160100 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
160101 
160102  void post_construction_initialization() override;
160103 
160104 
160105 // End of memberFunctionString
160106 
160107  public:
160108  SgProcedureHeaderStatement::subprogram_kind_enum get_subprogram_kind() const;
160109  void set_subprogram_kind(SgProcedureHeaderStatement::subprogram_kind_enum subprogram_kind);
160110 
160111  public:
160112  SgLabelRefExp* get_end_numeric_label() const /* (getDataAccessFunctionPrototypeString) */;
160113  void set_end_numeric_label(SgLabelRefExp* end_numeric_label) override /* (getDataAccessFunctionPrototypeString) */;
160114 
160115  public:
160116  SgInitializedName* get_result_name() const;
160117  void set_result_name(SgInitializedName* result_name);
160118 
160119 
160120  public:
160121  virtual ~SgProcedureHeaderStatement();
160122 
160123 
160124  public:
160125  SgProcedureHeaderStatement(Sg_File_Info* startOfConstruct , SgName name = "", SgFunctionType* type = NULL, SgFunctionDefinition* definition = NULL);
160127 
160128  protected:
160129 // Start of memberFunctionString
160131 
160132 // End of memberFunctionString
160133 // Start of memberFunctionString
160134 SgLabelRefExp* p_end_numeric_label;
160135 
160136 // End of memberFunctionString
160137 // Start of memberFunctionString
160138 SgInitializedName* p_result_name;
160139 
160140 // End of memberFunctionString
160141 
160142 
160143 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
160144 
160145 
160146  };
160147 #endif
160148 
160149 // postdeclarations for SgProcedureHeaderStatement
160150 
160151 /* #line 160152 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
160152 
160153 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
160154 
160155 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
160156 
160157 
160158 /* #line 160159 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
160159 
160160 
160161 
160162 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
160163 
160164 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
160165 // This code is automatically generated for each
160166 // terminal and non-terminal within the defined
160167 // grammar. There is a simple way to change the
160168 // code to fix bugs etc. See the ROSE README file
160169 // for directions.
160170 
160171 // tps: (02/22/2010): Adding DLL export requirements
160172 #include "rosedll.h"
160173 
160174 // predeclarations for SgEntryStatement
160175 
160176 /* #line 160177 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
160177 
160178 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
160179 
160180 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
160181 
160182 #if 1
160183 // Class Definition for SgEntryStatement
160184 class ROSE_DLL_API SgEntryStatement : public SgFunctionDeclaration
160185  {
160186  public:
160187 
160188 
160189 /* #line 160190 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
160190 
160191  virtual SgNode* copy ( SgCopyHelp& help) const override;
160192 // Start of memberFunctionString
160193 /* #line 3302 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
160194 
160195 
160196  SgName get_mangled_name() const override;
160197 
160198 
160199 
160200 // End of memberFunctionString
160201 // Start of memberFunctionString
160202 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
160203 
160204 // *** COMMON CODE SECTION BEGINS HERE ***
160205 
160206  public:
160207 
160208  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
160209  // and not required which is required to match the other aspects of the copy mechanism code generation.
160210  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
160211  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
160212  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
160213  // virtual SgNode* copy ( const SgCopyHelp & help) const;
160214 
160216  virtual std::string class_name() const override;
160217 
160219  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
160220 
160222  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
160223  // static const VariantT static_variant = V_SgEntryStatement;
160224  enum { static_variant = V_SgEntryStatement };
160225 
160226  /* the generated cast function */
160228  ROSE_DLL_API friend SgEntryStatement* isSgEntryStatement( SgNode * s );
160229 
160231  ROSE_DLL_API friend const SgEntryStatement* isSgEntryStatement( const SgNode * s );
160232 
160233  // ******************************************
160234  // * Memory Pool / New / Delete
160235  // ******************************************
160236 
160237  public:
160239  static const unsigned pool_size; //
160241  static std::vector<unsigned char *> pools; //
160243  static SgEntryStatement * next_node; //
160244 
160246  static unsigned long initializeStorageClassArray(SgEntryStatementStorageClass *); //
160247 
160249  static void clearMemoryPool(); //
160250  static void deleteMemoryPool(); //
160251 
160253  static void extendMemoryPoolForFileIO(); //
160254 
160256  static SgEntryStatement * getPointerFromGlobalIndex(unsigned long); //
160258  static SgEntryStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
160259 
160261  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
160263  static void resetValidFreepointers(); //
160265  static unsigned long getNumberOfLastValidPointer(); //
160266 
160267 
160268 #if defined(INLINE_FUNCTIONS)
160269 
160270  inline void *operator new (size_t size);
160271 #else
160272 
160273  void *operator new (size_t size);
160274 #endif
160275 
160276  void operator delete (void* pointer, size_t size);
160277 
160278  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
160279  void operator delete (void* pointer)
160280  {
160281  // This is the generated delete operator...
160282  SgEntryStatement::operator delete (pointer,sizeof(SgEntryStatement));
160283  }
160284 
160286  static size_t numberOfNodes();
160287 
160289  static size_t memoryUsage();
160290 
160291  // End of scope which started in IR nodes specific code
160292  /* */
160293 
160294  /* name Internal Functions
160295  \brief Internal functions ... incomplete-documentation
160296 
160297  These functions have been made public as part of the design, but they are suggested for internal use
160298  or by particularly knowledgeable users for specialized tools or applications.
160299 
160300  \internal We could not make these private because they are required by user for special purposes. And
160301  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
160302 
160303  */
160304 
160305  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
160306  // overridden in every class by *generated* implementation
160308  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
160309  // MS: 06/28/02 container of names of variables or container indices
160310  // used used in the traversal to access AST successor nodes
160311  // overridden in every class by *generated* implementation
160314  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
160315 
160316  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
160317  // than all the vector copies. The implementation for these functions is generated for each class.
160319  virtual size_t get_numberOfTraversalSuccessors() override;
160321  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
160323  virtual size_t get_childIndex(SgNode *child) override;
160324 
160325 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
160326  // MS: 08/16/2002 method for generating RTI information
160328  virtual RTIReturnType roseRTI() override;
160329 #endif
160330  /* */
160331 
160332 
160333 
160334  /* name Deprecated Functions
160335  \brief Deprecated functions ... incomplete-documentation
160336 
160337  These functions have been deprecated from use.
160338  */
160339  /* */
160340 
160342  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
160343 
160344  // JJW (10/16/2008): Changed to a single function in Node.code, and put
160345  // getVariant() in #if 0 block to prevent confusing Doxygen
160346 #if 0
160347 
160348  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
160350  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
160351 #endif
160352  /* */
160353 
160354 
160355 
160356 
160357  public:
160358  /* name Traversal Support Functions
160359  \brief Traversal support functions ... incomplete-documentation
160360 
160361  These functions have been made public as part of the design, but they are suggested for internal use
160362  or by particularly knowledgable users for specialized tools or applications.
160363  */
160364  /* */
160365 
160366  // DQ (11/26/2005): Support for visitor pattern mechanims
160367  // (inferior to ROSE traversal mechanism, experimental).
160371 
160372  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
160374  virtual void accept (ROSE_VisitorPattern & visitor) override;
160375 
160376  // DQ (12/26/2005): Support for traversal based on the memory pool
160379  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
160380 
160383  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
160384 
160385  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
160386  // This traversal helps support internal tools that call static member functions.
160387  // note: this function operates on the memory pools.
160390  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
160391  /* */
160392 
160393 
160394  public:
160395  /* name Memory Allocation Functions
160396  \brief Memory allocations functions ... incomplete-documentation
160397 
160398  These functions have been made public as part of the design, but they are suggested for internal use
160399  or by particularly knowledgable users for specialized tools or applications.
160400  */
160401  /* */
160402 
160413  virtual bool isInMemoryPool() override;
160414 
160425  virtual void checkDataMemberPointersIfInMemoryPool() override;
160426 
160427  // DQ (4/30/2006): Modified to be a const function.
160442  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
160443 
160453  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
160454 
160466  virtual long getChildIndex( SgNode* childNode ) const override;
160467 
160468  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
160469  // comment here (changed to be a C style comment and not be a doxygen comment).
160470  /* \brief Constructor for use by AST File I/O Mechanism
160471 
160472  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
160473  which obtained via fast binary file I/O from disk.
160474  */
160475  // SgEntryStatement( SgEntryStatementStorageClass& source );
160476 
160477 
160478 
160479 
160480 
160481  // JH (10/24/2005): methods added to support the ast file IO
160482  private:
160483 
160484  /* name AST Memory Allocation Support Functions
160485  \brief Memory allocations support....
160486 
160487  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
160488  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
160489  and support the AST File I/O Mechanism.
160490  */
160491  /* */
160492 
160493  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
160494  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
160495  that I use the same type everywhere, if any changes are made. THe second one declares the type
160496  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
160497  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
160498  a correspinding one in the AST_FILE_IO class!
160499  */
160500  // DQ (9/2/2015): This typedef is no longer used, we can't define the
160501  // comment here (changed to be a C style comment and not be a doxygen comment).
160502  /* \brief Typedef used for low level memory access.
160503  */
160504  // typedef unsigned char* TestType;
160505 
160506  // DQ (9/2/2015): This typedef is no longer used, we can't define the
160507  // comment here (changed to be a C style comment and not be a doxygen comment).
160508  /* \brief Typedef used to hold memory addresses as values.
160509  */
160510  // typedef unsigned long AddressType;
160511 
160512 
160513 
160514  // necessary, to have direct access to the p_freepointer and the private methods !
160516  friend class AST_FILE_IO;
160517 
160519  friend class SgEntryStatementStorageClass;
160520 
160522  friend class AstSpecificDataManagingClass;
160523 
160525  friend class AstSpecificDataManagingClassStorageClass;
160526 
160527  public:
160529  SgEntryStatement( const SgEntryStatementStorageClass& source );
160530 
160531  // private: // JJW hack
160532  /*
160533  name AST Memory Allocation Support Variables
160534  Memory allocations support variables
160535 
160536  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
160537  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
160538  and support the AST File I/O Mechanism.
160539  */
160540  /* */
160541 
160542  public:
160543 
160544  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
160545  // to current node (so that it will work cleanly with build functions to specify patterns).
160546  // virtual SgNode* addRegExpAttribute();
160553 
160554 // *** COMMON CODE SECTION ENDS HERE ***
160555 
160556 
160557 // End of memberFunctionString
160558 // Start of memberFunctionString
160559 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
160560 
160561  // the generated cast function
160562  // friend ROSE_DLL_API SgEntryStatement* isSgEntryStatement ( SgNode* s );
160563 
160565 
160566 
160567 // End of memberFunctionString
160568 // Start of memberFunctionString
160569 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
160570 
160571  void post_construction_initialization() override;
160572 
160573 
160574 // End of memberFunctionString
160575 
160576  public:
160577  SgInitializedName* get_result_name() const;
160578  void set_result_name(SgInitializedName* result_name);
160579 
160580 
160581  public:
160582  virtual ~SgEntryStatement();
160583 
160584 
160585  public:
160586  SgEntryStatement(Sg_File_Info* startOfConstruct , SgName name = "", SgFunctionType* type = NULL, SgFunctionDefinition* definition = NULL);
160587  SgEntryStatement(SgName name, SgFunctionType* type, SgFunctionDefinition* definition);
160588 
160589  protected:
160590 // Start of memberFunctionString
160591 SgInitializedName* p_result_name;
160592 
160593 // End of memberFunctionString
160594 
160595 
160596 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
160597 
160598 
160599  };
160600 #endif
160601 
160602 // postdeclarations for SgEntryStatement
160603 
160604 /* #line 160605 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
160605 
160606 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
160607 
160608 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
160609 
160610 
160611 /* #line 160612 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
160612 
160613 
160614 
160615 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
160616 
160617 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
160618 // This code is automatically generated for each
160619 // terminal and non-terminal within the defined
160620 // grammar. There is a simple way to change the
160621 // code to fix bugs etc. See the ROSE README file
160622 // for directions.
160623 
160624 // tps: (02/22/2010): Adding DLL export requirements
160625 #include "rosedll.h"
160626 
160627 // predeclarations for SgContainsStatement
160628 
160629 /* #line 160630 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
160630 
160631 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
160632 
160633 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
160634 
160635 #if 1
160636 // Class Definition for SgContainsStatement
160638  {
160639  public:
160640 
160641 
160642 /* #line 160643 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
160643 
160644  virtual SgNode* copy ( SgCopyHelp& help) const override;
160645 // Start of memberFunctionString
160646 /* #line 3383 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
160647 
160648 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
160649  virtual unsigned int cfgIndexForEnd() const override;
160650  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
160651  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
160652 #endif
160653 
160654  virtual SgName get_mangled_name() const override;
160655 
160656 
160657 // End of memberFunctionString
160658 // Start of memberFunctionString
160659 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
160660 
160661 // *** COMMON CODE SECTION BEGINS HERE ***
160662 
160663  public:
160664 
160665  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
160666  // and not required which is required to match the other aspects of the copy mechanism code generation.
160667  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
160668  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
160669  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
160670  // virtual SgNode* copy ( const SgCopyHelp & help) const;
160671 
160673  virtual std::string class_name() const override;
160674 
160676  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
160677 
160679  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
160680  // static const VariantT static_variant = V_SgContainsStatement;
160681  enum { static_variant = V_SgContainsStatement };
160682 
160683  /* the generated cast function */
160685  ROSE_DLL_API friend SgContainsStatement* isSgContainsStatement( SgNode * s );
160686 
160688  ROSE_DLL_API friend const SgContainsStatement* isSgContainsStatement( const SgNode * s );
160689 
160690  // ******************************************
160691  // * Memory Pool / New / Delete
160692  // ******************************************
160693 
160694  public:
160696  static const unsigned pool_size; //
160698  static std::vector<unsigned char *> pools; //
160700  static SgContainsStatement * next_node; //
160701 
160703  static unsigned long initializeStorageClassArray(SgContainsStatementStorageClass *); //
160704 
160706  static void clearMemoryPool(); //
160707  static void deleteMemoryPool(); //
160708 
160710  static void extendMemoryPoolForFileIO(); //
160711 
160713  static SgContainsStatement * getPointerFromGlobalIndex(unsigned long); //
160715  static SgContainsStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
160716 
160718  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
160720  static void resetValidFreepointers(); //
160722  static unsigned long getNumberOfLastValidPointer(); //
160723 
160724 
160725 #if defined(INLINE_FUNCTIONS)
160726 
160727  inline void *operator new (size_t size);
160728 #else
160729 
160730  void *operator new (size_t size);
160731 #endif
160732 
160733  void operator delete (void* pointer, size_t size);
160734 
160735  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
160736  void operator delete (void* pointer)
160737  {
160738  // This is the generated delete operator...
160739  SgContainsStatement::operator delete (pointer,sizeof(SgContainsStatement));
160740  }
160741 
160743  static size_t numberOfNodes();
160744 
160746  static size_t memoryUsage();
160747 
160748  // End of scope which started in IR nodes specific code
160749  /* */
160750 
160751  /* name Internal Functions
160752  \brief Internal functions ... incomplete-documentation
160753 
160754  These functions have been made public as part of the design, but they are suggested for internal use
160755  or by particularly knowledgeable users for specialized tools or applications.
160756 
160757  \internal We could not make these private because they are required by user for special purposes. And
160758  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
160759 
160760  */
160761 
160762  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
160763  // overridden in every class by *generated* implementation
160765  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
160766  // MS: 06/28/02 container of names of variables or container indices
160767  // used used in the traversal to access AST successor nodes
160768  // overridden in every class by *generated* implementation
160771  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
160772 
160773  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
160774  // than all the vector copies. The implementation for these functions is generated for each class.
160776  virtual size_t get_numberOfTraversalSuccessors() override;
160778  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
160780  virtual size_t get_childIndex(SgNode *child) override;
160781 
160782 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
160783  // MS: 08/16/2002 method for generating RTI information
160785  virtual RTIReturnType roseRTI() override;
160786 #endif
160787  /* */
160788 
160789 
160790 
160791  /* name Deprecated Functions
160792  \brief Deprecated functions ... incomplete-documentation
160793 
160794  These functions have been deprecated from use.
160795  */
160796  /* */
160797 
160799  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
160800 
160801  // JJW (10/16/2008): Changed to a single function in Node.code, and put
160802  // getVariant() in #if 0 block to prevent confusing Doxygen
160803 #if 0
160804 
160805  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
160807  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
160808 #endif
160809  /* */
160810 
160811 
160812 
160813 
160814  public:
160815  /* name Traversal Support Functions
160816  \brief Traversal support functions ... incomplete-documentation
160817 
160818  These functions have been made public as part of the design, but they are suggested for internal use
160819  or by particularly knowledgable users for specialized tools or applications.
160820  */
160821  /* */
160822 
160823  // DQ (11/26/2005): Support for visitor pattern mechanims
160824  // (inferior to ROSE traversal mechanism, experimental).
160828 
160829  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
160831  virtual void accept (ROSE_VisitorPattern & visitor) override;
160832 
160833  // DQ (12/26/2005): Support for traversal based on the memory pool
160836  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
160837 
160840  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
160841 
160842  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
160843  // This traversal helps support internal tools that call static member functions.
160844  // note: this function operates on the memory pools.
160847  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
160848  /* */
160849 
160850 
160851  public:
160852  /* name Memory Allocation Functions
160853  \brief Memory allocations functions ... incomplete-documentation
160854 
160855  These functions have been made public as part of the design, but they are suggested for internal use
160856  or by particularly knowledgable users for specialized tools or applications.
160857  */
160858  /* */
160859 
160870  virtual bool isInMemoryPool() override;
160871 
160882  virtual void checkDataMemberPointersIfInMemoryPool() override;
160883 
160884  // DQ (4/30/2006): Modified to be a const function.
160899  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
160900 
160910  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
160911 
160923  virtual long getChildIndex( SgNode* childNode ) const override;
160924 
160925  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
160926  // comment here (changed to be a C style comment and not be a doxygen comment).
160927  /* \brief Constructor for use by AST File I/O Mechanism
160928 
160929  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
160930  which obtained via fast binary file I/O from disk.
160931  */
160932  // SgContainsStatement( SgContainsStatementStorageClass& source );
160933 
160934 
160935 
160936 
160937 
160938  // JH (10/24/2005): methods added to support the ast file IO
160939  private:
160940 
160941  /* name AST Memory Allocation Support Functions
160942  \brief Memory allocations support....
160943 
160944  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
160945  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
160946  and support the AST File I/O Mechanism.
160947  */
160948  /* */
160949 
160950  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
160951  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
160952  that I use the same type everywhere, if any changes are made. THe second one declares the type
160953  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
160954  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
160955  a correspinding one in the AST_FILE_IO class!
160956  */
160957  // DQ (9/2/2015): This typedef is no longer used, we can't define the
160958  // comment here (changed to be a C style comment and not be a doxygen comment).
160959  /* \brief Typedef used for low level memory access.
160960  */
160961  // typedef unsigned char* TestType;
160962 
160963  // DQ (9/2/2015): This typedef is no longer used, we can't define the
160964  // comment here (changed to be a C style comment and not be a doxygen comment).
160965  /* \brief Typedef used to hold memory addresses as values.
160966  */
160967  // typedef unsigned long AddressType;
160968 
160969 
160970 
160971  // necessary, to have direct access to the p_freepointer and the private methods !
160973  friend class AST_FILE_IO;
160974 
160976  friend class SgContainsStatementStorageClass;
160977 
160979  friend class AstSpecificDataManagingClass;
160980 
160982  friend class AstSpecificDataManagingClassStorageClass;
160983 
160984  public:
160986  SgContainsStatement( const SgContainsStatementStorageClass& source );
160987 
160988  // private: // JJW hack
160989  /*
160990  name AST Memory Allocation Support Variables
160991  Memory allocations support variables
160992 
160993  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
160994  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
160995  and support the AST File I/O Mechanism.
160996  */
160997  /* */
160998 
160999  public:
161000 
161001  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
161002  // to current node (so that it will work cleanly with build functions to specify patterns).
161003  // virtual SgNode* addRegExpAttribute();
161010 
161011 // *** COMMON CODE SECTION ENDS HERE ***
161012 
161013 
161014 // End of memberFunctionString
161015 // Start of memberFunctionString
161016 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
161017 
161018  // the generated cast function
161019  // friend ROSE_DLL_API SgContainsStatement* isSgContainsStatement ( SgNode* s );
161020 
161022 
161023 
161024 // End of memberFunctionString
161025 // Start of memberFunctionString
161026 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
161027 
161028  void post_construction_initialization() override;
161029 
161030 
161031 // End of memberFunctionString
161032 
161033 
161034  public:
161035  virtual ~SgContainsStatement();
161036 
161037 
161038  public:
161039  SgContainsStatement(Sg_File_Info* startOfConstruct );
161040  SgContainsStatement();
161041 
161042  protected:
161043 
161044 
161045 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
161046 
161047 
161048  };
161049 #endif
161050 
161051 // postdeclarations for SgContainsStatement
161052 
161053 /* #line 161054 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
161054 
161055 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
161056 
161057 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
161058 
161059 
161060 /* #line 161061 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
161061 
161062 
161063 
161064 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
161065 
161066 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
161067 // This code is automatically generated for each
161068 // terminal and non-terminal within the defined
161069 // grammar. There is a simple way to change the
161070 // code to fix bugs etc. See the ROSE README file
161071 // for directions.
161072 
161073 // tps: (02/22/2010): Adding DLL export requirements
161074 #include "rosedll.h"
161075 
161076 // predeclarations for SgC_PreprocessorDirectiveStatement
161077 
161078 /* #line 161079 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
161079 
161080 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
161081 
161082 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
161083 
161084 #if 1
161085 // Class Definition for SgC_PreprocessorDirectiveStatement
161087  {
161088  public:
161089 
161090 
161091 /* #line 161092 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
161092 
161093  virtual SgNode* copy ( SgCopyHelp& help) const override;
161094 // Start of memberFunctionString
161095 /* #line 3903 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
161096 
161097 
161098  // DQ (11/23/2008): I think this is defined in the base class so we can't redefine it here.
161099  // void post_construction_initialization();
161100 
161101  static SgC_PreprocessorDirectiveStatement* createDirective ( PreprocessingInfo* currentPreprocessingInfo );
161102 
161103  // DQ (11/29/2008): Added for uniform support of mangled names
161104  virtual SgName get_mangled_name() const override;
161105 
161106 
161107 
161108 // End of memberFunctionString
161109 // Start of memberFunctionString
161110 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
161111 
161112 // *** COMMON CODE SECTION BEGINS HERE ***
161113 
161114  public:
161115 
161116  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
161117  // and not required which is required to match the other aspects of the copy mechanism code generation.
161118  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
161119  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
161120  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
161121  // virtual SgNode* copy ( const SgCopyHelp & help) const;
161122 
161124  virtual std::string class_name() const override;
161125 
161127  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
161128 
161130  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
161131  // static const VariantT static_variant = V_SgC_PreprocessorDirectiveStatement;
161132  enum { static_variant = V_SgC_PreprocessorDirectiveStatement };
161133 
161134  /* the generated cast function */
161136  ROSE_DLL_API friend SgC_PreprocessorDirectiveStatement* isSgC_PreprocessorDirectiveStatement( SgNode * s );
161137 
161139  ROSE_DLL_API friend const SgC_PreprocessorDirectiveStatement* isSgC_PreprocessorDirectiveStatement( const SgNode * s );
161140 
161141  // ******************************************
161142  // * Memory Pool / New / Delete
161143  // ******************************************
161144 
161145  public:
161147  static const unsigned pool_size; //
161149  static std::vector<unsigned char *> pools; //
161151  static SgC_PreprocessorDirectiveStatement * next_node; //
161152 
161154  static unsigned long initializeStorageClassArray(SgC_PreprocessorDirectiveStatementStorageClass *); //
161155 
161157  static void clearMemoryPool(); //
161158  static void deleteMemoryPool(); //
161159 
161161  static void extendMemoryPoolForFileIO(); //
161162 
161164  static SgC_PreprocessorDirectiveStatement * getPointerFromGlobalIndex(unsigned long); //
161166  static SgC_PreprocessorDirectiveStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
161167 
161169  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
161171  static void resetValidFreepointers(); //
161173  static unsigned long getNumberOfLastValidPointer(); //
161174 
161175 
161176 #if defined(INLINE_FUNCTIONS)
161177 
161178  inline void *operator new (size_t size);
161179 #else
161180 
161181  void *operator new (size_t size);
161182 #endif
161183 
161184  void operator delete (void* pointer, size_t size);
161185 
161186  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
161187  void operator delete (void* pointer)
161188  {
161189  // This is the generated delete operator...
161190  SgC_PreprocessorDirectiveStatement::operator delete (pointer,sizeof(SgC_PreprocessorDirectiveStatement));
161191  }
161192 
161194  static size_t numberOfNodes();
161195 
161197  static size_t memoryUsage();
161198 
161199  // End of scope which started in IR nodes specific code
161200  /* */
161201 
161202  /* name Internal Functions
161203  \brief Internal functions ... incomplete-documentation
161204 
161205  These functions have been made public as part of the design, but they are suggested for internal use
161206  or by particularly knowledgeable users for specialized tools or applications.
161207 
161208  \internal We could not make these private because they are required by user for special purposes. And
161209  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
161210 
161211  */
161212 
161213  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
161214  // overridden in every class by *generated* implementation
161216  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
161217  // MS: 06/28/02 container of names of variables or container indices
161218  // used used in the traversal to access AST successor nodes
161219  // overridden in every class by *generated* implementation
161222  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
161223 
161224  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
161225  // than all the vector copies. The implementation for these functions is generated for each class.
161227  virtual size_t get_numberOfTraversalSuccessors() override;
161229  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
161231  virtual size_t get_childIndex(SgNode *child) override;
161232 
161233 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
161234  // MS: 08/16/2002 method for generating RTI information
161236  virtual RTIReturnType roseRTI() override;
161237 #endif
161238  /* */
161239 
161240 
161241 
161242  /* name Deprecated Functions
161243  \brief Deprecated functions ... incomplete-documentation
161244 
161245  These functions have been deprecated from use.
161246  */
161247  /* */
161248 
161250  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
161251 
161252  // JJW (10/16/2008): Changed to a single function in Node.code, and put
161253  // getVariant() in #if 0 block to prevent confusing Doxygen
161254 #if 0
161255 
161256  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
161258  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
161259 #endif
161260  /* */
161261 
161262 
161263 
161264 
161265  public:
161266  /* name Traversal Support Functions
161267  \brief Traversal support functions ... incomplete-documentation
161268 
161269  These functions have been made public as part of the design, but they are suggested for internal use
161270  or by particularly knowledgable users for specialized tools or applications.
161271  */
161272  /* */
161273 
161274  // DQ (11/26/2005): Support for visitor pattern mechanims
161275  // (inferior to ROSE traversal mechanism, experimental).
161279 
161280  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
161282  virtual void accept (ROSE_VisitorPattern & visitor) override;
161283 
161284  // DQ (12/26/2005): Support for traversal based on the memory pool
161287  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
161288 
161291  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
161292 
161293  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
161294  // This traversal helps support internal tools that call static member functions.
161295  // note: this function operates on the memory pools.
161298  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
161299  /* */
161300 
161301 
161302  public:
161303  /* name Memory Allocation Functions
161304  \brief Memory allocations functions ... incomplete-documentation
161305 
161306  These functions have been made public as part of the design, but they are suggested for internal use
161307  or by particularly knowledgable users for specialized tools or applications.
161308  */
161309  /* */
161310 
161321  virtual bool isInMemoryPool() override;
161322 
161333  virtual void checkDataMemberPointersIfInMemoryPool() override;
161334 
161335  // DQ (4/30/2006): Modified to be a const function.
161350  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
161351 
161361  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
161362 
161374  virtual long getChildIndex( SgNode* childNode ) const override;
161375 
161376  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
161377  // comment here (changed to be a C style comment and not be a doxygen comment).
161378  /* \brief Constructor for use by AST File I/O Mechanism
161379 
161380  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
161381  which obtained via fast binary file I/O from disk.
161382  */
161383  // SgC_PreprocessorDirectiveStatement( SgC_PreprocessorDirectiveStatementStorageClass& source );
161384 
161385 
161386 
161387 
161388 
161389  // JH (10/24/2005): methods added to support the ast file IO
161390  private:
161391 
161392  /* name AST Memory Allocation Support Functions
161393  \brief Memory allocations support....
161394 
161395  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
161396  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
161397  and support the AST File I/O Mechanism.
161398  */
161399  /* */
161400 
161401  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
161402  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
161403  that I use the same type everywhere, if any changes are made. THe second one declares the type
161404  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
161405  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
161406  a correspinding one in the AST_FILE_IO class!
161407  */
161408  // DQ (9/2/2015): This typedef is no longer used, we can't define the
161409  // comment here (changed to be a C style comment and not be a doxygen comment).
161410  /* \brief Typedef used for low level memory access.
161411  */
161412  // typedef unsigned char* TestType;
161413 
161414  // DQ (9/2/2015): This typedef is no longer used, we can't define the
161415  // comment here (changed to be a C style comment and not be a doxygen comment).
161416  /* \brief Typedef used to hold memory addresses as values.
161417  */
161418  // typedef unsigned long AddressType;
161419 
161420 
161421 
161422  // necessary, to have direct access to the p_freepointer and the private methods !
161424  friend class AST_FILE_IO;
161425 
161427  friend class SgC_PreprocessorDirectiveStatementStorageClass;
161428 
161430  friend class AstSpecificDataManagingClass;
161431 
161433  friend class AstSpecificDataManagingClassStorageClass;
161434 
161435  public:
161437  SgC_PreprocessorDirectiveStatement( const SgC_PreprocessorDirectiveStatementStorageClass& source );
161438 
161439  // private: // JJW hack
161440  /*
161441  name AST Memory Allocation Support Variables
161442  Memory allocations support variables
161443 
161444  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
161445  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
161446  and support the AST File I/O Mechanism.
161447  */
161448  /* */
161449 
161450  public:
161451 
161452  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
161453  // to current node (so that it will work cleanly with build functions to specify patterns).
161454  // virtual SgNode* addRegExpAttribute();
161461 
161462 // *** COMMON CODE SECTION ENDS HERE ***
161463 
161464 
161465 // End of memberFunctionString
161466 // Start of memberFunctionString
161467 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
161468 
161469  // the generated cast function
161470  // friend ROSE_DLL_API SgC_PreprocessorDirectiveStatement* isSgC_PreprocessorDirectiveStatement ( SgNode* s );
161471 
161473 
161474 
161475 // End of memberFunctionString
161476 // Start of memberFunctionString
161477 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
161478 
161479  void post_construction_initialization() override;
161480 
161481 
161482 // End of memberFunctionString
161483 
161484  public:
161485  std::string get_directiveString() const;
161486  void set_directiveString(std::string directiveString);
161487 
161488 
161489  public:
161491 
161492 
161493  public:
161494  SgC_PreprocessorDirectiveStatement(Sg_File_Info* startOfConstruct );
161496 
161497  protected:
161498 // Start of memberFunctionString
161499 std::string p_directiveString;
161500 
161501 // End of memberFunctionString
161502 
161503 
161504 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
161505 
161506 
161507  };
161508 #endif
161509 
161510 // postdeclarations for SgC_PreprocessorDirectiveStatement
161511 
161512 /* #line 161513 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
161513 
161514 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
161515 
161516 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
161517 
161518 
161519 /* #line 161520 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
161520 
161521 
161522 
161523 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
161524 
161525 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
161526 // This code is automatically generated for each
161527 // terminal and non-terminal within the defined
161528 // grammar. There is a simple way to change the
161529 // code to fix bugs etc. See the ROSE README file
161530 // for directions.
161531 
161532 // tps: (02/22/2010): Adding DLL export requirements
161533 #include "rosedll.h"
161534 
161535 // predeclarations for SgIncludeDirectiveStatement
161536 
161537 /* #line 161538 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
161538 
161539 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
161540 
161541 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
161542 
161543 #if 1
161544 // Class Definition for SgIncludeDirectiveStatement
161546  {
161547  public:
161548 
161549 
161550 /* #line 161551 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
161551 
161552  virtual SgNode* copy ( SgCopyHelp& help) const override;
161553 // Start of memberFunctionString
161554 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
161555 
161556 // *** COMMON CODE SECTION BEGINS HERE ***
161557 
161558  public:
161559 
161560  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
161561  // and not required which is required to match the other aspects of the copy mechanism code generation.
161562  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
161563  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
161564  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
161565  // virtual SgNode* copy ( const SgCopyHelp & help) const;
161566 
161568  virtual std::string class_name() const override;
161569 
161571  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
161572 
161574  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
161575  // static const VariantT static_variant = V_SgIncludeDirectiveStatement;
161576  enum { static_variant = V_SgIncludeDirectiveStatement };
161577 
161578  /* the generated cast function */
161580  ROSE_DLL_API friend SgIncludeDirectiveStatement* isSgIncludeDirectiveStatement( SgNode * s );
161581 
161583  ROSE_DLL_API friend const SgIncludeDirectiveStatement* isSgIncludeDirectiveStatement( const SgNode * s );
161584 
161585  // ******************************************
161586  // * Memory Pool / New / Delete
161587  // ******************************************
161588 
161589  public:
161591  static const unsigned pool_size; //
161593  static std::vector<unsigned char *> pools; //
161595  static SgIncludeDirectiveStatement * next_node; //
161596 
161598  static unsigned long initializeStorageClassArray(SgIncludeDirectiveStatementStorageClass *); //
161599 
161601  static void clearMemoryPool(); //
161602  static void deleteMemoryPool(); //
161603 
161605  static void extendMemoryPoolForFileIO(); //
161606 
161608  static SgIncludeDirectiveStatement * getPointerFromGlobalIndex(unsigned long); //
161610  static SgIncludeDirectiveStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
161611 
161613  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
161615  static void resetValidFreepointers(); //
161617  static unsigned long getNumberOfLastValidPointer(); //
161618 
161619 
161620 #if defined(INLINE_FUNCTIONS)
161621 
161622  inline void *operator new (size_t size);
161623 #else
161624 
161625  void *operator new (size_t size);
161626 #endif
161627 
161628  void operator delete (void* pointer, size_t size);
161629 
161630  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
161631  void operator delete (void* pointer)
161632  {
161633  // This is the generated delete operator...
161634  SgIncludeDirectiveStatement::operator delete (pointer,sizeof(SgIncludeDirectiveStatement));
161635  }
161636 
161638  static size_t numberOfNodes();
161639 
161641  static size_t memoryUsage();
161642 
161643  // End of scope which started in IR nodes specific code
161644  /* */
161645 
161646  /* name Internal Functions
161647  \brief Internal functions ... incomplete-documentation
161648 
161649  These functions have been made public as part of the design, but they are suggested for internal use
161650  or by particularly knowledgeable users for specialized tools or applications.
161651 
161652  \internal We could not make these private because they are required by user for special purposes. And
161653  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
161654 
161655  */
161656 
161657  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
161658  // overridden in every class by *generated* implementation
161660  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
161661  // MS: 06/28/02 container of names of variables or container indices
161662  // used used in the traversal to access AST successor nodes
161663  // overridden in every class by *generated* implementation
161666  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
161667 
161668  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
161669  // than all the vector copies. The implementation for these functions is generated for each class.
161671  virtual size_t get_numberOfTraversalSuccessors() override;
161673  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
161675  virtual size_t get_childIndex(SgNode *child) override;
161676 
161677 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
161678  // MS: 08/16/2002 method for generating RTI information
161680  virtual RTIReturnType roseRTI() override;
161681 #endif
161682  /* */
161683 
161684 
161685 
161686  /* name Deprecated Functions
161687  \brief Deprecated functions ... incomplete-documentation
161688 
161689  These functions have been deprecated from use.
161690  */
161691  /* */
161692 
161694  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
161695 
161696  // JJW (10/16/2008): Changed to a single function in Node.code, and put
161697  // getVariant() in #if 0 block to prevent confusing Doxygen
161698 #if 0
161699 
161700  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
161702  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
161703 #endif
161704  /* */
161705 
161706 
161707 
161708 
161709  public:
161710  /* name Traversal Support Functions
161711  \brief Traversal support functions ... incomplete-documentation
161712 
161713  These functions have been made public as part of the design, but they are suggested for internal use
161714  or by particularly knowledgable users for specialized tools or applications.
161715  */
161716  /* */
161717 
161718  // DQ (11/26/2005): Support for visitor pattern mechanims
161719  // (inferior to ROSE traversal mechanism, experimental).
161723 
161724  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
161726  virtual void accept (ROSE_VisitorPattern & visitor) override;
161727 
161728  // DQ (12/26/2005): Support for traversal based on the memory pool
161731  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
161732 
161735  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
161736 
161737  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
161738  // This traversal helps support internal tools that call static member functions.
161739  // note: this function operates on the memory pools.
161742  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
161743  /* */
161744 
161745 
161746  public:
161747  /* name Memory Allocation Functions
161748  \brief Memory allocations functions ... incomplete-documentation
161749 
161750  These functions have been made public as part of the design, but they are suggested for internal use
161751  or by particularly knowledgable users for specialized tools or applications.
161752  */
161753  /* */
161754 
161765  virtual bool isInMemoryPool() override;
161766 
161777  virtual void checkDataMemberPointersIfInMemoryPool() override;
161778 
161779  // DQ (4/30/2006): Modified to be a const function.
161794  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
161795 
161805  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
161806 
161818  virtual long getChildIndex( SgNode* childNode ) const override;
161819 
161820  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
161821  // comment here (changed to be a C style comment and not be a doxygen comment).
161822  /* \brief Constructor for use by AST File I/O Mechanism
161823 
161824  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
161825  which obtained via fast binary file I/O from disk.
161826  */
161827  // SgIncludeDirectiveStatement( SgIncludeDirectiveStatementStorageClass& source );
161828 
161829 
161830 
161831 
161832 
161833  // JH (10/24/2005): methods added to support the ast file IO
161834  private:
161835 
161836  /* name AST Memory Allocation Support Functions
161837  \brief Memory allocations support....
161838 
161839  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
161840  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
161841  and support the AST File I/O Mechanism.
161842  */
161843  /* */
161844 
161845  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
161846  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
161847  that I use the same type everywhere, if any changes are made. THe second one declares the type
161848  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
161849  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
161850  a correspinding one in the AST_FILE_IO class!
161851  */
161852  // DQ (9/2/2015): This typedef is no longer used, we can't define the
161853  // comment here (changed to be a C style comment and not be a doxygen comment).
161854  /* \brief Typedef used for low level memory access.
161855  */
161856  // typedef unsigned char* TestType;
161857 
161858  // DQ (9/2/2015): This typedef is no longer used, we can't define the
161859  // comment here (changed to be a C style comment and not be a doxygen comment).
161860  /* \brief Typedef used to hold memory addresses as values.
161861  */
161862  // typedef unsigned long AddressType;
161863 
161864 
161865 
161866  // necessary, to have direct access to the p_freepointer and the private methods !
161868  friend class AST_FILE_IO;
161869 
161871  friend class SgIncludeDirectiveStatementStorageClass;
161872 
161874  friend class AstSpecificDataManagingClass;
161875 
161877  friend class AstSpecificDataManagingClassStorageClass;
161878 
161879  public:
161881  SgIncludeDirectiveStatement( const SgIncludeDirectiveStatementStorageClass& source );
161882 
161883  // private: // JJW hack
161884  /*
161885  name AST Memory Allocation Support Variables
161886  Memory allocations support variables
161887 
161888  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
161889  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
161890  and support the AST File I/O Mechanism.
161891  */
161892  /* */
161893 
161894  public:
161895 
161896  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
161897  // to current node (so that it will work cleanly with build functions to specify patterns).
161898  // virtual SgNode* addRegExpAttribute();
161905 
161906 // *** COMMON CODE SECTION ENDS HERE ***
161907 
161908 
161909 // End of memberFunctionString
161910 // Start of memberFunctionString
161911 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
161912 
161913  // the generated cast function
161914  // friend ROSE_DLL_API SgIncludeDirectiveStatement* isSgIncludeDirectiveStatement ( SgNode* s );
161915 
161917 
161918 
161919 // End of memberFunctionString
161920 // Start of memberFunctionString
161921 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
161922 
161923  void post_construction_initialization() override;
161924 
161925 
161926 // End of memberFunctionString
161927 
161928  public:
161929  SgHeaderFileBody* get_headerFileBody() const;
161930  void set_headerFileBody(SgHeaderFileBody* headerFileBody);
161931 
161932  public:
161933  SgIncludeFile* get_include_file_heirarchy() const;
161934  void set_include_file_heirarchy(SgIncludeFile* include_file_heirarchy);
161935 
161936  public:
161937  std::string get_name_used_in_include_directive() const;
161938  void set_name_used_in_include_directive(std::string name_used_in_include_directive);
161939 
161940 
161941  public:
161942  virtual ~SgIncludeDirectiveStatement();
161943 
161944 
161945  public:
161946  SgIncludeDirectiveStatement(Sg_File_Info* startOfConstruct );
161948 
161949  protected:
161950 // Start of memberFunctionString
161951 SgHeaderFileBody* p_headerFileBody;
161952 
161953 // End of memberFunctionString
161954 // Start of memberFunctionString
161955 SgIncludeFile* p_include_file_heirarchy;
161956 
161957 // End of memberFunctionString
161958 // Start of memberFunctionString
161959 std::string p_name_used_in_include_directive;
161960 
161961 // End of memberFunctionString
161962 
161963 
161964 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
161965 
161966 
161967  };
161968 #endif
161969 
161970 // postdeclarations for SgIncludeDirectiveStatement
161971 
161972 /* #line 161973 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
161973 
161974 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
161975 
161976 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
161977 
161978 
161979 /* #line 161980 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
161980 
161981 
161982 
161983 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
161984 
161985 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
161986 // This code is automatically generated for each
161987 // terminal and non-terminal within the defined
161988 // grammar. There is a simple way to change the
161989 // code to fix bugs etc. See the ROSE README file
161990 // for directions.
161991 
161992 // tps: (02/22/2010): Adding DLL export requirements
161993 #include "rosedll.h"
161994 
161995 // predeclarations for SgDefineDirectiveStatement
161996 
161997 /* #line 161998 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
161998 
161999 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
162000 
162001 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
162002 
162003 #if 1
162004 // Class Definition for SgDefineDirectiveStatement
162006  {
162007  public:
162008 
162009 
162010 /* #line 162011 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
162011 
162012  virtual SgNode* copy ( SgCopyHelp& help) const override;
162013 // Start of memberFunctionString
162014 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
162015 
162016 // *** COMMON CODE SECTION BEGINS HERE ***
162017 
162018  public:
162019 
162020  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
162021  // and not required which is required to match the other aspects of the copy mechanism code generation.
162022  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
162023  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
162024  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
162025  // virtual SgNode* copy ( const SgCopyHelp & help) const;
162026 
162028  virtual std::string class_name() const override;
162029 
162031  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
162032 
162034  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
162035  // static const VariantT static_variant = V_SgDefineDirectiveStatement;
162036  enum { static_variant = V_SgDefineDirectiveStatement };
162037 
162038  /* the generated cast function */
162040  ROSE_DLL_API friend SgDefineDirectiveStatement* isSgDefineDirectiveStatement( SgNode * s );
162041 
162043  ROSE_DLL_API friend const SgDefineDirectiveStatement* isSgDefineDirectiveStatement( const SgNode * s );
162044 
162045  // ******************************************
162046  // * Memory Pool / New / Delete
162047  // ******************************************
162048 
162049  public:
162051  static const unsigned pool_size; //
162053  static std::vector<unsigned char *> pools; //
162055  static SgDefineDirectiveStatement * next_node; //
162056 
162058  static unsigned long initializeStorageClassArray(SgDefineDirectiveStatementStorageClass *); //
162059 
162061  static void clearMemoryPool(); //
162062  static void deleteMemoryPool(); //
162063 
162065  static void extendMemoryPoolForFileIO(); //
162066 
162068  static SgDefineDirectiveStatement * getPointerFromGlobalIndex(unsigned long); //
162070  static SgDefineDirectiveStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
162071 
162073  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
162075  static void resetValidFreepointers(); //
162077  static unsigned long getNumberOfLastValidPointer(); //
162078 
162079 
162080 #if defined(INLINE_FUNCTIONS)
162081 
162082  inline void *operator new (size_t size);
162083 #else
162084 
162085  void *operator new (size_t size);
162086 #endif
162087 
162088  void operator delete (void* pointer, size_t size);
162089 
162090  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
162091  void operator delete (void* pointer)
162092  {
162093  // This is the generated delete operator...
162094  SgDefineDirectiveStatement::operator delete (pointer,sizeof(SgDefineDirectiveStatement));
162095  }
162096 
162098  static size_t numberOfNodes();
162099 
162101  static size_t memoryUsage();
162102 
162103  // End of scope which started in IR nodes specific code
162104  /* */
162105 
162106  /* name Internal Functions
162107  \brief Internal functions ... incomplete-documentation
162108 
162109  These functions have been made public as part of the design, but they are suggested for internal use
162110  or by particularly knowledgeable users for specialized tools or applications.
162111 
162112  \internal We could not make these private because they are required by user for special purposes. And
162113  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
162114 
162115  */
162116 
162117  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
162118  // overridden in every class by *generated* implementation
162120  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
162121  // MS: 06/28/02 container of names of variables or container indices
162122  // used used in the traversal to access AST successor nodes
162123  // overridden in every class by *generated* implementation
162126  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
162127 
162128  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
162129  // than all the vector copies. The implementation for these functions is generated for each class.
162131  virtual size_t get_numberOfTraversalSuccessors() override;
162133  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
162135  virtual size_t get_childIndex(SgNode *child) override;
162136 
162137 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
162138  // MS: 08/16/2002 method for generating RTI information
162140  virtual RTIReturnType roseRTI() override;
162141 #endif
162142  /* */
162143 
162144 
162145 
162146  /* name Deprecated Functions
162147  \brief Deprecated functions ... incomplete-documentation
162148 
162149  These functions have been deprecated from use.
162150  */
162151  /* */
162152 
162154  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
162155 
162156  // JJW (10/16/2008): Changed to a single function in Node.code, and put
162157  // getVariant() in #if 0 block to prevent confusing Doxygen
162158 #if 0
162159 
162160  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
162162  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
162163 #endif
162164  /* */
162165 
162166 
162167 
162168 
162169  public:
162170  /* name Traversal Support Functions
162171  \brief Traversal support functions ... incomplete-documentation
162172 
162173  These functions have been made public as part of the design, but they are suggested for internal use
162174  or by particularly knowledgable users for specialized tools or applications.
162175  */
162176  /* */
162177 
162178  // DQ (11/26/2005): Support for visitor pattern mechanims
162179  // (inferior to ROSE traversal mechanism, experimental).
162183 
162184  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
162186  virtual void accept (ROSE_VisitorPattern & visitor) override;
162187 
162188  // DQ (12/26/2005): Support for traversal based on the memory pool
162191  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
162192 
162195  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
162196 
162197  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
162198  // This traversal helps support internal tools that call static member functions.
162199  // note: this function operates on the memory pools.
162202  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
162203  /* */
162204 
162205 
162206  public:
162207  /* name Memory Allocation Functions
162208  \brief Memory allocations functions ... incomplete-documentation
162209 
162210  These functions have been made public as part of the design, but they are suggested for internal use
162211  or by particularly knowledgable users for specialized tools or applications.
162212  */
162213  /* */
162214 
162225  virtual bool isInMemoryPool() override;
162226 
162237  virtual void checkDataMemberPointersIfInMemoryPool() override;
162238 
162239  // DQ (4/30/2006): Modified to be a const function.
162254  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
162255 
162265  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
162266 
162278  virtual long getChildIndex( SgNode* childNode ) const override;
162279 
162280  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
162281  // comment here (changed to be a C style comment and not be a doxygen comment).
162282  /* \brief Constructor for use by AST File I/O Mechanism
162283 
162284  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
162285  which obtained via fast binary file I/O from disk.
162286  */
162287  // SgDefineDirectiveStatement( SgDefineDirectiveStatementStorageClass& source );
162288 
162289 
162290 
162291 
162292 
162293  // JH (10/24/2005): methods added to support the ast file IO
162294  private:
162295 
162296  /* name AST Memory Allocation Support Functions
162297  \brief Memory allocations support....
162298 
162299  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
162300  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
162301  and support the AST File I/O Mechanism.
162302  */
162303  /* */
162304 
162305  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
162306  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
162307  that I use the same type everywhere, if any changes are made. THe second one declares the type
162308  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
162309  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
162310  a correspinding one in the AST_FILE_IO class!
162311  */
162312  // DQ (9/2/2015): This typedef is no longer used, we can't define the
162313  // comment here (changed to be a C style comment and not be a doxygen comment).
162314  /* \brief Typedef used for low level memory access.
162315  */
162316  // typedef unsigned char* TestType;
162317 
162318  // DQ (9/2/2015): This typedef is no longer used, we can't define the
162319  // comment here (changed to be a C style comment and not be a doxygen comment).
162320  /* \brief Typedef used to hold memory addresses as values.
162321  */
162322  // typedef unsigned long AddressType;
162323 
162324 
162325 
162326  // necessary, to have direct access to the p_freepointer and the private methods !
162328  friend class AST_FILE_IO;
162329 
162331  friend class SgDefineDirectiveStatementStorageClass;
162332 
162334  friend class AstSpecificDataManagingClass;
162335 
162337  friend class AstSpecificDataManagingClassStorageClass;
162338 
162339  public:
162341  SgDefineDirectiveStatement( const SgDefineDirectiveStatementStorageClass& source );
162342 
162343  // private: // JJW hack
162344  /*
162345  name AST Memory Allocation Support Variables
162346  Memory allocations support variables
162347 
162348  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
162349  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
162350  and support the AST File I/O Mechanism.
162351  */
162352  /* */
162353 
162354  public:
162355 
162356  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
162357  // to current node (so that it will work cleanly with build functions to specify patterns).
162358  // virtual SgNode* addRegExpAttribute();
162365 
162366 // *** COMMON CODE SECTION ENDS HERE ***
162367 
162368 
162369 // End of memberFunctionString
162370 // Start of memberFunctionString
162371 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
162372 
162373  // the generated cast function
162374  // friend ROSE_DLL_API SgDefineDirectiveStatement* isSgDefineDirectiveStatement ( SgNode* s );
162375 
162377 
162378 
162379 // End of memberFunctionString
162380 // Start of memberFunctionString
162381 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
162382 
162383  void post_construction_initialization() override;
162384 
162385 
162386 // End of memberFunctionString
162387 
162388 
162389  public:
162390  virtual ~SgDefineDirectiveStatement();
162391 
162392 
162393  public:
162394  SgDefineDirectiveStatement(Sg_File_Info* startOfConstruct );
162396 
162397  protected:
162398 
162399 
162400 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
162401 
162402 
162403  };
162404 #endif
162405 
162406 // postdeclarations for SgDefineDirectiveStatement
162407 
162408 /* #line 162409 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
162409 
162410 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
162411 
162412 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
162413 
162414 
162415 /* #line 162416 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
162416 
162417 
162418 
162419 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
162420 
162421 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
162422 // This code is automatically generated for each
162423 // terminal and non-terminal within the defined
162424 // grammar. There is a simple way to change the
162425 // code to fix bugs etc. See the ROSE README file
162426 // for directions.
162427 
162428 // tps: (02/22/2010): Adding DLL export requirements
162429 #include "rosedll.h"
162430 
162431 // predeclarations for SgUndefDirectiveStatement
162432 
162433 /* #line 162434 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
162434 
162435 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
162436 
162437 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
162438 
162439 #if 1
162440 // Class Definition for SgUndefDirectiveStatement
162442  {
162443  public:
162444 
162445 
162446 /* #line 162447 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
162447 
162448  virtual SgNode* copy ( SgCopyHelp& help) const override;
162449 // Start of memberFunctionString
162450 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
162451 
162452 // *** COMMON CODE SECTION BEGINS HERE ***
162453 
162454  public:
162455 
162456  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
162457  // and not required which is required to match the other aspects of the copy mechanism code generation.
162458  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
162459  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
162460  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
162461  // virtual SgNode* copy ( const SgCopyHelp & help) const;
162462 
162464  virtual std::string class_name() const override;
162465 
162467  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
162468 
162470  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
162471  // static const VariantT static_variant = V_SgUndefDirectiveStatement;
162472  enum { static_variant = V_SgUndefDirectiveStatement };
162473 
162474  /* the generated cast function */
162476  ROSE_DLL_API friend SgUndefDirectiveStatement* isSgUndefDirectiveStatement( SgNode * s );
162477 
162479  ROSE_DLL_API friend const SgUndefDirectiveStatement* isSgUndefDirectiveStatement( const SgNode * s );
162480 
162481  // ******************************************
162482  // * Memory Pool / New / Delete
162483  // ******************************************
162484 
162485  public:
162487  static const unsigned pool_size; //
162489  static std::vector<unsigned char *> pools; //
162491  static SgUndefDirectiveStatement * next_node; //
162492 
162494  static unsigned long initializeStorageClassArray(SgUndefDirectiveStatementStorageClass *); //
162495 
162497  static void clearMemoryPool(); //
162498  static void deleteMemoryPool(); //
162499 
162501  static void extendMemoryPoolForFileIO(); //
162502 
162504  static SgUndefDirectiveStatement * getPointerFromGlobalIndex(unsigned long); //
162506  static SgUndefDirectiveStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
162507 
162509  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
162511  static void resetValidFreepointers(); //
162513  static unsigned long getNumberOfLastValidPointer(); //
162514 
162515 
162516 #if defined(INLINE_FUNCTIONS)
162517 
162518  inline void *operator new (size_t size);
162519 #else
162520 
162521  void *operator new (size_t size);
162522 #endif
162523 
162524  void operator delete (void* pointer, size_t size);
162525 
162526  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
162527  void operator delete (void* pointer)
162528  {
162529  // This is the generated delete operator...
162530  SgUndefDirectiveStatement::operator delete (pointer,sizeof(SgUndefDirectiveStatement));
162531  }
162532 
162534  static size_t numberOfNodes();
162535 
162537  static size_t memoryUsage();
162538 
162539  // End of scope which started in IR nodes specific code
162540  /* */
162541 
162542  /* name Internal Functions
162543  \brief Internal functions ... incomplete-documentation
162544 
162545  These functions have been made public as part of the design, but they are suggested for internal use
162546  or by particularly knowledgeable users for specialized tools or applications.
162547 
162548  \internal We could not make these private because they are required by user for special purposes. And
162549  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
162550 
162551  */
162552 
162553  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
162554  // overridden in every class by *generated* implementation
162556  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
162557  // MS: 06/28/02 container of names of variables or container indices
162558  // used used in the traversal to access AST successor nodes
162559  // overridden in every class by *generated* implementation
162562  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
162563 
162564  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
162565  // than all the vector copies. The implementation for these functions is generated for each class.
162567  virtual size_t get_numberOfTraversalSuccessors() override;
162569  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
162571  virtual size_t get_childIndex(SgNode *child) override;
162572 
162573 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
162574  // MS: 08/16/2002 method for generating RTI information
162576  virtual RTIReturnType roseRTI() override;
162577 #endif
162578  /* */
162579 
162580 
162581 
162582  /* name Deprecated Functions
162583  \brief Deprecated functions ... incomplete-documentation
162584 
162585  These functions have been deprecated from use.
162586  */
162587  /* */
162588 
162590  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
162591 
162592  // JJW (10/16/2008): Changed to a single function in Node.code, and put
162593  // getVariant() in #if 0 block to prevent confusing Doxygen
162594 #if 0
162595 
162596  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
162598  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
162599 #endif
162600  /* */
162601 
162602 
162603 
162604 
162605  public:
162606  /* name Traversal Support Functions
162607  \brief Traversal support functions ... incomplete-documentation
162608 
162609  These functions have been made public as part of the design, but they are suggested for internal use
162610  or by particularly knowledgable users for specialized tools or applications.
162611  */
162612  /* */
162613 
162614  // DQ (11/26/2005): Support for visitor pattern mechanims
162615  // (inferior to ROSE traversal mechanism, experimental).
162619 
162620  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
162622  virtual void accept (ROSE_VisitorPattern & visitor) override;
162623 
162624  // DQ (12/26/2005): Support for traversal based on the memory pool
162627  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
162628 
162631  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
162632 
162633  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
162634  // This traversal helps support internal tools that call static member functions.
162635  // note: this function operates on the memory pools.
162638  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
162639  /* */
162640 
162641 
162642  public:
162643  /* name Memory Allocation Functions
162644  \brief Memory allocations functions ... incomplete-documentation
162645 
162646  These functions have been made public as part of the design, but they are suggested for internal use
162647  or by particularly knowledgable users for specialized tools or applications.
162648  */
162649  /* */
162650 
162661  virtual bool isInMemoryPool() override;
162662 
162673  virtual void checkDataMemberPointersIfInMemoryPool() override;
162674 
162675  // DQ (4/30/2006): Modified to be a const function.
162690  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
162691 
162701  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
162702 
162714  virtual long getChildIndex( SgNode* childNode ) const override;
162715 
162716  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
162717  // comment here (changed to be a C style comment and not be a doxygen comment).
162718  /* \brief Constructor for use by AST File I/O Mechanism
162719 
162720  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
162721  which obtained via fast binary file I/O from disk.
162722  */
162723  // SgUndefDirectiveStatement( SgUndefDirectiveStatementStorageClass& source );
162724 
162725 
162726 
162727 
162728 
162729  // JH (10/24/2005): methods added to support the ast file IO
162730  private:
162731 
162732  /* name AST Memory Allocation Support Functions
162733  \brief Memory allocations support....
162734 
162735  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
162736  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
162737  and support the AST File I/O Mechanism.
162738  */
162739  /* */
162740 
162741  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
162742  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
162743  that I use the same type everywhere, if any changes are made. THe second one declares the type
162744  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
162745  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
162746  a correspinding one in the AST_FILE_IO class!
162747  */
162748  // DQ (9/2/2015): This typedef is no longer used, we can't define the
162749  // comment here (changed to be a C style comment and not be a doxygen comment).
162750  /* \brief Typedef used for low level memory access.
162751  */
162752  // typedef unsigned char* TestType;
162753 
162754  // DQ (9/2/2015): This typedef is no longer used, we can't define the
162755  // comment here (changed to be a C style comment and not be a doxygen comment).
162756  /* \brief Typedef used to hold memory addresses as values.
162757  */
162758  // typedef unsigned long AddressType;
162759 
162760 
162761 
162762  // necessary, to have direct access to the p_freepointer and the private methods !
162764  friend class AST_FILE_IO;
162765 
162767  friend class SgUndefDirectiveStatementStorageClass;
162768 
162770  friend class AstSpecificDataManagingClass;
162771 
162773  friend class AstSpecificDataManagingClassStorageClass;
162774 
162775  public:
162777  SgUndefDirectiveStatement( const SgUndefDirectiveStatementStorageClass& source );
162778 
162779  // private: // JJW hack
162780  /*
162781  name AST Memory Allocation Support Variables
162782  Memory allocations support variables
162783 
162784  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
162785  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
162786  and support the AST File I/O Mechanism.
162787  */
162788  /* */
162789 
162790  public:
162791 
162792  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
162793  // to current node (so that it will work cleanly with build functions to specify patterns).
162794  // virtual SgNode* addRegExpAttribute();
162801 
162802 // *** COMMON CODE SECTION ENDS HERE ***
162803 
162804 
162805 // End of memberFunctionString
162806 // Start of memberFunctionString
162807 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
162808 
162809  // the generated cast function
162810  // friend ROSE_DLL_API SgUndefDirectiveStatement* isSgUndefDirectiveStatement ( SgNode* s );
162811 
162813 
162814 
162815 // End of memberFunctionString
162816 // Start of memberFunctionString
162817 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
162818 
162819  void post_construction_initialization() override;
162820 
162821 
162822 // End of memberFunctionString
162823 
162824 
162825  public:
162826  virtual ~SgUndefDirectiveStatement();
162827 
162828 
162829  public:
162830  SgUndefDirectiveStatement(Sg_File_Info* startOfConstruct );
162832 
162833  protected:
162834 
162835 
162836 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
162837 
162838 
162839  };
162840 #endif
162841 
162842 // postdeclarations for SgUndefDirectiveStatement
162843 
162844 /* #line 162845 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
162845 
162846 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
162847 
162848 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
162849 
162850 
162851 /* #line 162852 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
162852 
162853 
162854 
162855 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
162856 
162857 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
162858 // This code is automatically generated for each
162859 // terminal and non-terminal within the defined
162860 // grammar. There is a simple way to change the
162861 // code to fix bugs etc. See the ROSE README file
162862 // for directions.
162863 
162864 // tps: (02/22/2010): Adding DLL export requirements
162865 #include "rosedll.h"
162866 
162867 // predeclarations for SgIfdefDirectiveStatement
162868 
162869 /* #line 162870 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
162870 
162871 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
162872 
162873 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
162874 
162875 #if 1
162876 // Class Definition for SgIfdefDirectiveStatement
162878  {
162879  public:
162880 
162881 
162882 /* #line 162883 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
162883 
162884  virtual SgNode* copy ( SgCopyHelp& help) const override;
162885 // Start of memberFunctionString
162886 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
162887 
162888 // *** COMMON CODE SECTION BEGINS HERE ***
162889 
162890  public:
162891 
162892  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
162893  // and not required which is required to match the other aspects of the copy mechanism code generation.
162894  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
162895  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
162896  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
162897  // virtual SgNode* copy ( const SgCopyHelp & help) const;
162898 
162900  virtual std::string class_name() const override;
162901 
162903  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
162904 
162906  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
162907  // static const VariantT static_variant = V_SgIfdefDirectiveStatement;
162908  enum { static_variant = V_SgIfdefDirectiveStatement };
162909 
162910  /* the generated cast function */
162912  ROSE_DLL_API friend SgIfdefDirectiveStatement* isSgIfdefDirectiveStatement( SgNode * s );
162913 
162915  ROSE_DLL_API friend const SgIfdefDirectiveStatement* isSgIfdefDirectiveStatement( const SgNode * s );
162916 
162917  // ******************************************
162918  // * Memory Pool / New / Delete
162919  // ******************************************
162920 
162921  public:
162923  static const unsigned pool_size; //
162925  static std::vector<unsigned char *> pools; //
162927  static SgIfdefDirectiveStatement * next_node; //
162928 
162930  static unsigned long initializeStorageClassArray(SgIfdefDirectiveStatementStorageClass *); //
162931 
162933  static void clearMemoryPool(); //
162934  static void deleteMemoryPool(); //
162935 
162937  static void extendMemoryPoolForFileIO(); //
162938 
162940  static SgIfdefDirectiveStatement * getPointerFromGlobalIndex(unsigned long); //
162942  static SgIfdefDirectiveStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
162943 
162945  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
162947  static void resetValidFreepointers(); //
162949  static unsigned long getNumberOfLastValidPointer(); //
162950 
162951 
162952 #if defined(INLINE_FUNCTIONS)
162953 
162954  inline void *operator new (size_t size);
162955 #else
162956 
162957  void *operator new (size_t size);
162958 #endif
162959 
162960  void operator delete (void* pointer, size_t size);
162961 
162962  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
162963  void operator delete (void* pointer)
162964  {
162965  // This is the generated delete operator...
162966  SgIfdefDirectiveStatement::operator delete (pointer,sizeof(SgIfdefDirectiveStatement));
162967  }
162968 
162970  static size_t numberOfNodes();
162971 
162973  static size_t memoryUsage();
162974 
162975  // End of scope which started in IR nodes specific code
162976  /* */
162977 
162978  /* name Internal Functions
162979  \brief Internal functions ... incomplete-documentation
162980 
162981  These functions have been made public as part of the design, but they are suggested for internal use
162982  or by particularly knowledgeable users for specialized tools or applications.
162983 
162984  \internal We could not make these private because they are required by user for special purposes. And
162985  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
162986 
162987  */
162988 
162989  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
162990  // overridden in every class by *generated* implementation
162992  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
162993  // MS: 06/28/02 container of names of variables or container indices
162994  // used used in the traversal to access AST successor nodes
162995  // overridden in every class by *generated* implementation
162998  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
162999 
163000  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
163001  // than all the vector copies. The implementation for these functions is generated for each class.
163003  virtual size_t get_numberOfTraversalSuccessors() override;
163005  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
163007  virtual size_t get_childIndex(SgNode *child) override;
163008 
163009 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
163010  // MS: 08/16/2002 method for generating RTI information
163012  virtual RTIReturnType roseRTI() override;
163013 #endif
163014  /* */
163015 
163016 
163017 
163018  /* name Deprecated Functions
163019  \brief Deprecated functions ... incomplete-documentation
163020 
163021  These functions have been deprecated from use.
163022  */
163023  /* */
163024 
163026  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
163027 
163028  // JJW (10/16/2008): Changed to a single function in Node.code, and put
163029  // getVariant() in #if 0 block to prevent confusing Doxygen
163030 #if 0
163031 
163032  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
163034  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
163035 #endif
163036  /* */
163037 
163038 
163039 
163040 
163041  public:
163042  /* name Traversal Support Functions
163043  \brief Traversal support functions ... incomplete-documentation
163044 
163045  These functions have been made public as part of the design, but they are suggested for internal use
163046  or by particularly knowledgable users for specialized tools or applications.
163047  */
163048  /* */
163049 
163050  // DQ (11/26/2005): Support for visitor pattern mechanims
163051  // (inferior to ROSE traversal mechanism, experimental).
163055 
163056  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
163058  virtual void accept (ROSE_VisitorPattern & visitor) override;
163059 
163060  // DQ (12/26/2005): Support for traversal based on the memory pool
163063  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
163064 
163067  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
163068 
163069  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
163070  // This traversal helps support internal tools that call static member functions.
163071  // note: this function operates on the memory pools.
163074  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
163075  /* */
163076 
163077 
163078  public:
163079  /* name Memory Allocation Functions
163080  \brief Memory allocations functions ... incomplete-documentation
163081 
163082  These functions have been made public as part of the design, but they are suggested for internal use
163083  or by particularly knowledgable users for specialized tools or applications.
163084  */
163085  /* */
163086 
163097  virtual bool isInMemoryPool() override;
163098 
163109  virtual void checkDataMemberPointersIfInMemoryPool() override;
163110 
163111  // DQ (4/30/2006): Modified to be a const function.
163126  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
163127 
163137  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
163138 
163150  virtual long getChildIndex( SgNode* childNode ) const override;
163151 
163152  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
163153  // comment here (changed to be a C style comment and not be a doxygen comment).
163154  /* \brief Constructor for use by AST File I/O Mechanism
163155 
163156  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
163157  which obtained via fast binary file I/O from disk.
163158  */
163159  // SgIfdefDirectiveStatement( SgIfdefDirectiveStatementStorageClass& source );
163160 
163161 
163162 
163163 
163164 
163165  // JH (10/24/2005): methods added to support the ast file IO
163166  private:
163167 
163168  /* name AST Memory Allocation Support Functions
163169  \brief Memory allocations support....
163170 
163171  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
163172  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
163173  and support the AST File I/O Mechanism.
163174  */
163175  /* */
163176 
163177  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
163178  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
163179  that I use the same type everywhere, if any changes are made. THe second one declares the type
163180  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
163181  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
163182  a correspinding one in the AST_FILE_IO class!
163183  */
163184  // DQ (9/2/2015): This typedef is no longer used, we can't define the
163185  // comment here (changed to be a C style comment and not be a doxygen comment).
163186  /* \brief Typedef used for low level memory access.
163187  */
163188  // typedef unsigned char* TestType;
163189 
163190  // DQ (9/2/2015): This typedef is no longer used, we can't define the
163191  // comment here (changed to be a C style comment and not be a doxygen comment).
163192  /* \brief Typedef used to hold memory addresses as values.
163193  */
163194  // typedef unsigned long AddressType;
163195 
163196 
163197 
163198  // necessary, to have direct access to the p_freepointer and the private methods !
163200  friend class AST_FILE_IO;
163201 
163203  friend class SgIfdefDirectiveStatementStorageClass;
163204 
163206  friend class AstSpecificDataManagingClass;
163207 
163209  friend class AstSpecificDataManagingClassStorageClass;
163210 
163211  public:
163213  SgIfdefDirectiveStatement( const SgIfdefDirectiveStatementStorageClass& source );
163214 
163215  // private: // JJW hack
163216  /*
163217  name AST Memory Allocation Support Variables
163218  Memory allocations support variables
163219 
163220  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
163221  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
163222  and support the AST File I/O Mechanism.
163223  */
163224  /* */
163225 
163226  public:
163227 
163228  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
163229  // to current node (so that it will work cleanly with build functions to specify patterns).
163230  // virtual SgNode* addRegExpAttribute();
163237 
163238 // *** COMMON CODE SECTION ENDS HERE ***
163239 
163240 
163241 // End of memberFunctionString
163242 // Start of memberFunctionString
163243 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
163244 
163245  // the generated cast function
163246  // friend ROSE_DLL_API SgIfdefDirectiveStatement* isSgIfdefDirectiveStatement ( SgNode* s );
163247 
163249 
163250 
163251 // End of memberFunctionString
163252 // Start of memberFunctionString
163253 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
163254 
163255  void post_construction_initialization() override;
163256 
163257 
163258 // End of memberFunctionString
163259 
163260 
163261  public:
163262  virtual ~SgIfdefDirectiveStatement();
163263 
163264 
163265  public:
163266  SgIfdefDirectiveStatement(Sg_File_Info* startOfConstruct );
163268 
163269  protected:
163270 
163271 
163272 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
163273 
163274 
163275  };
163276 #endif
163277 
163278 // postdeclarations for SgIfdefDirectiveStatement
163279 
163280 /* #line 163281 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
163281 
163282 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
163283 
163284 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
163285 
163286 
163287 /* #line 163288 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
163288 
163289 
163290 
163291 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
163292 
163293 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
163294 // This code is automatically generated for each
163295 // terminal and non-terminal within the defined
163296 // grammar. There is a simple way to change the
163297 // code to fix bugs etc. See the ROSE README file
163298 // for directions.
163299 
163300 // tps: (02/22/2010): Adding DLL export requirements
163301 #include "rosedll.h"
163302 
163303 // predeclarations for SgIfndefDirectiveStatement
163304 
163305 /* #line 163306 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
163306 
163307 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
163308 
163309 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
163310 
163311 #if 1
163312 // Class Definition for SgIfndefDirectiveStatement
163314  {
163315  public:
163316 
163317 
163318 /* #line 163319 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
163319 
163320  virtual SgNode* copy ( SgCopyHelp& help) const override;
163321 // Start of memberFunctionString
163322 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
163323 
163324 // *** COMMON CODE SECTION BEGINS HERE ***
163325 
163326  public:
163327 
163328  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
163329  // and not required which is required to match the other aspects of the copy mechanism code generation.
163330  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
163331  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
163332  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
163333  // virtual SgNode* copy ( const SgCopyHelp & help) const;
163334 
163336  virtual std::string class_name() const override;
163337 
163339  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
163340 
163342  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
163343  // static const VariantT static_variant = V_SgIfndefDirectiveStatement;
163344  enum { static_variant = V_SgIfndefDirectiveStatement };
163345 
163346  /* the generated cast function */
163348  ROSE_DLL_API friend SgIfndefDirectiveStatement* isSgIfndefDirectiveStatement( SgNode * s );
163349 
163351  ROSE_DLL_API friend const SgIfndefDirectiveStatement* isSgIfndefDirectiveStatement( const SgNode * s );
163352 
163353  // ******************************************
163354  // * Memory Pool / New / Delete
163355  // ******************************************
163356 
163357  public:
163359  static const unsigned pool_size; //
163361  static std::vector<unsigned char *> pools; //
163363  static SgIfndefDirectiveStatement * next_node; //
163364 
163366  static unsigned long initializeStorageClassArray(SgIfndefDirectiveStatementStorageClass *); //
163367 
163369  static void clearMemoryPool(); //
163370  static void deleteMemoryPool(); //
163371 
163373  static void extendMemoryPoolForFileIO(); //
163374 
163376  static SgIfndefDirectiveStatement * getPointerFromGlobalIndex(unsigned long); //
163378  static SgIfndefDirectiveStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
163379 
163381  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
163383  static void resetValidFreepointers(); //
163385  static unsigned long getNumberOfLastValidPointer(); //
163386 
163387 
163388 #if defined(INLINE_FUNCTIONS)
163389 
163390  inline void *operator new (size_t size);
163391 #else
163392 
163393  void *operator new (size_t size);
163394 #endif
163395 
163396  void operator delete (void* pointer, size_t size);
163397 
163398  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
163399  void operator delete (void* pointer)
163400  {
163401  // This is the generated delete operator...
163402  SgIfndefDirectiveStatement::operator delete (pointer,sizeof(SgIfndefDirectiveStatement));
163403  }
163404 
163406  static size_t numberOfNodes();
163407 
163409  static size_t memoryUsage();
163410 
163411  // End of scope which started in IR nodes specific code
163412  /* */
163413 
163414  /* name Internal Functions
163415  \brief Internal functions ... incomplete-documentation
163416 
163417  These functions have been made public as part of the design, but they are suggested for internal use
163418  or by particularly knowledgeable users for specialized tools or applications.
163419 
163420  \internal We could not make these private because they are required by user for special purposes. And
163421  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
163422 
163423  */
163424 
163425  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
163426  // overridden in every class by *generated* implementation
163428  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
163429  // MS: 06/28/02 container of names of variables or container indices
163430  // used used in the traversal to access AST successor nodes
163431  // overridden in every class by *generated* implementation
163434  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
163435 
163436  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
163437  // than all the vector copies. The implementation for these functions is generated for each class.
163439  virtual size_t get_numberOfTraversalSuccessors() override;
163441  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
163443  virtual size_t get_childIndex(SgNode *child) override;
163444 
163445 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
163446  // MS: 08/16/2002 method for generating RTI information
163448  virtual RTIReturnType roseRTI() override;
163449 #endif
163450  /* */
163451 
163452 
163453 
163454  /* name Deprecated Functions
163455  \brief Deprecated functions ... incomplete-documentation
163456 
163457  These functions have been deprecated from use.
163458  */
163459  /* */
163460 
163462  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
163463 
163464  // JJW (10/16/2008): Changed to a single function in Node.code, and put
163465  // getVariant() in #if 0 block to prevent confusing Doxygen
163466 #if 0
163467 
163468  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
163470  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
163471 #endif
163472  /* */
163473 
163474 
163475 
163476 
163477  public:
163478  /* name Traversal Support Functions
163479  \brief Traversal support functions ... incomplete-documentation
163480 
163481  These functions have been made public as part of the design, but they are suggested for internal use
163482  or by particularly knowledgable users for specialized tools or applications.
163483  */
163484  /* */
163485 
163486  // DQ (11/26/2005): Support for visitor pattern mechanims
163487  // (inferior to ROSE traversal mechanism, experimental).
163491 
163492  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
163494  virtual void accept (ROSE_VisitorPattern & visitor) override;
163495 
163496  // DQ (12/26/2005): Support for traversal based on the memory pool
163499  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
163500 
163503  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
163504 
163505  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
163506  // This traversal helps support internal tools that call static member functions.
163507  // note: this function operates on the memory pools.
163510  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
163511  /* */
163512 
163513 
163514  public:
163515  /* name Memory Allocation Functions
163516  \brief Memory allocations functions ... incomplete-documentation
163517 
163518  These functions have been made public as part of the design, but they are suggested for internal use
163519  or by particularly knowledgable users for specialized tools or applications.
163520  */
163521  /* */
163522 
163533  virtual bool isInMemoryPool() override;
163534 
163545  virtual void checkDataMemberPointersIfInMemoryPool() override;
163546 
163547  // DQ (4/30/2006): Modified to be a const function.
163562  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
163563 
163573  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
163574 
163586  virtual long getChildIndex( SgNode* childNode ) const override;
163587 
163588  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
163589  // comment here (changed to be a C style comment and not be a doxygen comment).
163590  /* \brief Constructor for use by AST File I/O Mechanism
163591 
163592  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
163593  which obtained via fast binary file I/O from disk.
163594  */
163595  // SgIfndefDirectiveStatement( SgIfndefDirectiveStatementStorageClass& source );
163596 
163597 
163598 
163599 
163600 
163601  // JH (10/24/2005): methods added to support the ast file IO
163602  private:
163603 
163604  /* name AST Memory Allocation Support Functions
163605  \brief Memory allocations support....
163606 
163607  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
163608  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
163609  and support the AST File I/O Mechanism.
163610  */
163611  /* */
163612 
163613  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
163614  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
163615  that I use the same type everywhere, if any changes are made. THe second one declares the type
163616  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
163617  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
163618  a correspinding one in the AST_FILE_IO class!
163619  */
163620  // DQ (9/2/2015): This typedef is no longer used, we can't define the
163621  // comment here (changed to be a C style comment and not be a doxygen comment).
163622  /* \brief Typedef used for low level memory access.
163623  */
163624  // typedef unsigned char* TestType;
163625 
163626  // DQ (9/2/2015): This typedef is no longer used, we can't define the
163627  // comment here (changed to be a C style comment and not be a doxygen comment).
163628  /* \brief Typedef used to hold memory addresses as values.
163629  */
163630  // typedef unsigned long AddressType;
163631 
163632 
163633 
163634  // necessary, to have direct access to the p_freepointer and the private methods !
163636  friend class AST_FILE_IO;
163637 
163639  friend class SgIfndefDirectiveStatementStorageClass;
163640 
163642  friend class AstSpecificDataManagingClass;
163643 
163645  friend class AstSpecificDataManagingClassStorageClass;
163646 
163647  public:
163649  SgIfndefDirectiveStatement( const SgIfndefDirectiveStatementStorageClass& source );
163650 
163651  // private: // JJW hack
163652  /*
163653  name AST Memory Allocation Support Variables
163654  Memory allocations support variables
163655 
163656  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
163657  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
163658  and support the AST File I/O Mechanism.
163659  */
163660  /* */
163661 
163662  public:
163663 
163664  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
163665  // to current node (so that it will work cleanly with build functions to specify patterns).
163666  // virtual SgNode* addRegExpAttribute();
163673 
163674 // *** COMMON CODE SECTION ENDS HERE ***
163675 
163676 
163677 // End of memberFunctionString
163678 // Start of memberFunctionString
163679 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
163680 
163681  // the generated cast function
163682  // friend ROSE_DLL_API SgIfndefDirectiveStatement* isSgIfndefDirectiveStatement ( SgNode* s );
163683 
163685 
163686 
163687 // End of memberFunctionString
163688 // Start of memberFunctionString
163689 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
163690 
163691  void post_construction_initialization() override;
163692 
163693 
163694 // End of memberFunctionString
163695 
163696 
163697  public:
163698  virtual ~SgIfndefDirectiveStatement();
163699 
163700 
163701  public:
163702  SgIfndefDirectiveStatement(Sg_File_Info* startOfConstruct );
163704 
163705  protected:
163706 
163707 
163708 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
163709 
163710 
163711  };
163712 #endif
163713 
163714 // postdeclarations for SgIfndefDirectiveStatement
163715 
163716 /* #line 163717 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
163717 
163718 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
163719 
163720 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
163721 
163722 
163723 /* #line 163724 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
163724 
163725 
163726 
163727 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
163728 
163729 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
163730 // This code is automatically generated for each
163731 // terminal and non-terminal within the defined
163732 // grammar. There is a simple way to change the
163733 // code to fix bugs etc. See the ROSE README file
163734 // for directions.
163735 
163736 // tps: (02/22/2010): Adding DLL export requirements
163737 #include "rosedll.h"
163738 
163739 // predeclarations for SgIfDirectiveStatement
163740 
163741 /* #line 163742 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
163742 
163743 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
163744 
163745 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
163746 
163747 #if 1
163748 // Class Definition for SgIfDirectiveStatement
163750  {
163751  public:
163752 
163753 
163754 /* #line 163755 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
163755 
163756  virtual SgNode* copy ( SgCopyHelp& help) const override;
163757 // Start of memberFunctionString
163758 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
163759 
163760 // *** COMMON CODE SECTION BEGINS HERE ***
163761 
163762  public:
163763 
163764  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
163765  // and not required which is required to match the other aspects of the copy mechanism code generation.
163766  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
163767  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
163768  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
163769  // virtual SgNode* copy ( const SgCopyHelp & help) const;
163770 
163772  virtual std::string class_name() const override;
163773 
163775  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
163776 
163778  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
163779  // static const VariantT static_variant = V_SgIfDirectiveStatement;
163780  enum { static_variant = V_SgIfDirectiveStatement };
163781 
163782  /* the generated cast function */
163784  ROSE_DLL_API friend SgIfDirectiveStatement* isSgIfDirectiveStatement( SgNode * s );
163785 
163787  ROSE_DLL_API friend const SgIfDirectiveStatement* isSgIfDirectiveStatement( const SgNode * s );
163788 
163789  // ******************************************
163790  // * Memory Pool / New / Delete
163791  // ******************************************
163792 
163793  public:
163795  static const unsigned pool_size; //
163797  static std::vector<unsigned char *> pools; //
163799  static SgIfDirectiveStatement * next_node; //
163800 
163802  static unsigned long initializeStorageClassArray(SgIfDirectiveStatementStorageClass *); //
163803 
163805  static void clearMemoryPool(); //
163806  static void deleteMemoryPool(); //
163807 
163809  static void extendMemoryPoolForFileIO(); //
163810 
163812  static SgIfDirectiveStatement * getPointerFromGlobalIndex(unsigned long); //
163814  static SgIfDirectiveStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
163815 
163817  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
163819  static void resetValidFreepointers(); //
163821  static unsigned long getNumberOfLastValidPointer(); //
163822 
163823 
163824 #if defined(INLINE_FUNCTIONS)
163825 
163826  inline void *operator new (size_t size);
163827 #else
163828 
163829  void *operator new (size_t size);
163830 #endif
163831 
163832  void operator delete (void* pointer, size_t size);
163833 
163834  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
163835  void operator delete (void* pointer)
163836  {
163837  // This is the generated delete operator...
163838  SgIfDirectiveStatement::operator delete (pointer,sizeof(SgIfDirectiveStatement));
163839  }
163840 
163842  static size_t numberOfNodes();
163843 
163845  static size_t memoryUsage();
163846 
163847  // End of scope which started in IR nodes specific code
163848  /* */
163849 
163850  /* name Internal Functions
163851  \brief Internal functions ... incomplete-documentation
163852 
163853  These functions have been made public as part of the design, but they are suggested for internal use
163854  or by particularly knowledgeable users for specialized tools or applications.
163855 
163856  \internal We could not make these private because they are required by user for special purposes. And
163857  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
163858 
163859  */
163860 
163861  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
163862  // overridden in every class by *generated* implementation
163864  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
163865  // MS: 06/28/02 container of names of variables or container indices
163866  // used used in the traversal to access AST successor nodes
163867  // overridden in every class by *generated* implementation
163870  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
163871 
163872  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
163873  // than all the vector copies. The implementation for these functions is generated for each class.
163875  virtual size_t get_numberOfTraversalSuccessors() override;
163877  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
163879  virtual size_t get_childIndex(SgNode *child) override;
163880 
163881 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
163882  // MS: 08/16/2002 method for generating RTI information
163884  virtual RTIReturnType roseRTI() override;
163885 #endif
163886  /* */
163887 
163888 
163889 
163890  /* name Deprecated Functions
163891  \brief Deprecated functions ... incomplete-documentation
163892 
163893  These functions have been deprecated from use.
163894  */
163895  /* */
163896 
163898  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
163899 
163900  // JJW (10/16/2008): Changed to a single function in Node.code, and put
163901  // getVariant() in #if 0 block to prevent confusing Doxygen
163902 #if 0
163903 
163904  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
163906  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
163907 #endif
163908  /* */
163909 
163910 
163911 
163912 
163913  public:
163914  /* name Traversal Support Functions
163915  \brief Traversal support functions ... incomplete-documentation
163916 
163917  These functions have been made public as part of the design, but they are suggested for internal use
163918  or by particularly knowledgable users for specialized tools or applications.
163919  */
163920  /* */
163921 
163922  // DQ (11/26/2005): Support for visitor pattern mechanims
163923  // (inferior to ROSE traversal mechanism, experimental).
163927 
163928  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
163930  virtual void accept (ROSE_VisitorPattern & visitor) override;
163931 
163932  // DQ (12/26/2005): Support for traversal based on the memory pool
163935  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
163936 
163939  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
163940 
163941  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
163942  // This traversal helps support internal tools that call static member functions.
163943  // note: this function operates on the memory pools.
163946  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
163947  /* */
163948 
163949 
163950  public:
163951  /* name Memory Allocation Functions
163952  \brief Memory allocations functions ... incomplete-documentation
163953 
163954  These functions have been made public as part of the design, but they are suggested for internal use
163955  or by particularly knowledgable users for specialized tools or applications.
163956  */
163957  /* */
163958 
163969  virtual bool isInMemoryPool() override;
163970 
163981  virtual void checkDataMemberPointersIfInMemoryPool() override;
163982 
163983  // DQ (4/30/2006): Modified to be a const function.
163998  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
163999 
164009  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
164010 
164022  virtual long getChildIndex( SgNode* childNode ) const override;
164023 
164024  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
164025  // comment here (changed to be a C style comment and not be a doxygen comment).
164026  /* \brief Constructor for use by AST File I/O Mechanism
164027 
164028  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
164029  which obtained via fast binary file I/O from disk.
164030  */
164031  // SgIfDirectiveStatement( SgIfDirectiveStatementStorageClass& source );
164032 
164033 
164034 
164035 
164036 
164037  // JH (10/24/2005): methods added to support the ast file IO
164038  private:
164039 
164040  /* name AST Memory Allocation Support Functions
164041  \brief Memory allocations support....
164042 
164043  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
164044  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
164045  and support the AST File I/O Mechanism.
164046  */
164047  /* */
164048 
164049  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
164050  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
164051  that I use the same type everywhere, if any changes are made. THe second one declares the type
164052  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
164053  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
164054  a correspinding one in the AST_FILE_IO class!
164055  */
164056  // DQ (9/2/2015): This typedef is no longer used, we can't define the
164057  // comment here (changed to be a C style comment and not be a doxygen comment).
164058  /* \brief Typedef used for low level memory access.
164059  */
164060  // typedef unsigned char* TestType;
164061 
164062  // DQ (9/2/2015): This typedef is no longer used, we can't define the
164063  // comment here (changed to be a C style comment and not be a doxygen comment).
164064  /* \brief Typedef used to hold memory addresses as values.
164065  */
164066  // typedef unsigned long AddressType;
164067 
164068 
164069 
164070  // necessary, to have direct access to the p_freepointer and the private methods !
164072  friend class AST_FILE_IO;
164073 
164075  friend class SgIfDirectiveStatementStorageClass;
164076 
164078  friend class AstSpecificDataManagingClass;
164079 
164081  friend class AstSpecificDataManagingClassStorageClass;
164082 
164083  public:
164085  SgIfDirectiveStatement( const SgIfDirectiveStatementStorageClass& source );
164086 
164087  // private: // JJW hack
164088  /*
164089  name AST Memory Allocation Support Variables
164090  Memory allocations support variables
164091 
164092  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
164093  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
164094  and support the AST File I/O Mechanism.
164095  */
164096  /* */
164097 
164098  public:
164099 
164100  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
164101  // to current node (so that it will work cleanly with build functions to specify patterns).
164102  // virtual SgNode* addRegExpAttribute();
164109 
164110 // *** COMMON CODE SECTION ENDS HERE ***
164111 
164112 
164113 // End of memberFunctionString
164114 // Start of memberFunctionString
164115 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
164116 
164117  // the generated cast function
164118  // friend ROSE_DLL_API SgIfDirectiveStatement* isSgIfDirectiveStatement ( SgNode* s );
164119 
164121 
164122 
164123 // End of memberFunctionString
164124 // Start of memberFunctionString
164125 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
164126 
164127  void post_construction_initialization() override;
164128 
164129 
164130 // End of memberFunctionString
164131 
164132 
164133  public:
164134  virtual ~SgIfDirectiveStatement();
164135 
164136 
164137  public:
164138  SgIfDirectiveStatement(Sg_File_Info* startOfConstruct );
164140 
164141  protected:
164142 
164143 
164144 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
164145 
164146 
164147  };
164148 #endif
164149 
164150 // postdeclarations for SgIfDirectiveStatement
164151 
164152 /* #line 164153 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
164153 
164154 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
164155 
164156 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
164157 
164158 
164159 /* #line 164160 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
164160 
164161 
164162 
164163 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
164164 
164165 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
164166 // This code is automatically generated for each
164167 // terminal and non-terminal within the defined
164168 // grammar. There is a simple way to change the
164169 // code to fix bugs etc. See the ROSE README file
164170 // for directions.
164171 
164172 // tps: (02/22/2010): Adding DLL export requirements
164173 #include "rosedll.h"
164174 
164175 // predeclarations for SgDeadIfDirectiveStatement
164176 
164177 /* #line 164178 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
164178 
164179 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
164180 
164181 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
164182 
164183 #if 1
164184 // Class Definition for SgDeadIfDirectiveStatement
164186  {
164187  public:
164188 
164189 
164190 /* #line 164191 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
164191 
164192  virtual SgNode* copy ( SgCopyHelp& help) const override;
164193 // Start of memberFunctionString
164194 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
164195 
164196 // *** COMMON CODE SECTION BEGINS HERE ***
164197 
164198  public:
164199 
164200  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
164201  // and not required which is required to match the other aspects of the copy mechanism code generation.
164202  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
164203  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
164204  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
164205  // virtual SgNode* copy ( const SgCopyHelp & help) const;
164206 
164208  virtual std::string class_name() const override;
164209 
164211  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
164212 
164214  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
164215  // static const VariantT static_variant = V_SgDeadIfDirectiveStatement;
164216  enum { static_variant = V_SgDeadIfDirectiveStatement };
164217 
164218  /* the generated cast function */
164220  ROSE_DLL_API friend SgDeadIfDirectiveStatement* isSgDeadIfDirectiveStatement( SgNode * s );
164221 
164223  ROSE_DLL_API friend const SgDeadIfDirectiveStatement* isSgDeadIfDirectiveStatement( const SgNode * s );
164224 
164225  // ******************************************
164226  // * Memory Pool / New / Delete
164227  // ******************************************
164228 
164229  public:
164231  static const unsigned pool_size; //
164233  static std::vector<unsigned char *> pools; //
164235  static SgDeadIfDirectiveStatement * next_node; //
164236 
164238  static unsigned long initializeStorageClassArray(SgDeadIfDirectiveStatementStorageClass *); //
164239 
164241  static void clearMemoryPool(); //
164242  static void deleteMemoryPool(); //
164243 
164245  static void extendMemoryPoolForFileIO(); //
164246 
164248  static SgDeadIfDirectiveStatement * getPointerFromGlobalIndex(unsigned long); //
164250  static SgDeadIfDirectiveStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
164251 
164253  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
164255  static void resetValidFreepointers(); //
164257  static unsigned long getNumberOfLastValidPointer(); //
164258 
164259 
164260 #if defined(INLINE_FUNCTIONS)
164261 
164262  inline void *operator new (size_t size);
164263 #else
164264 
164265  void *operator new (size_t size);
164266 #endif
164267 
164268  void operator delete (void* pointer, size_t size);
164269 
164270  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
164271  void operator delete (void* pointer)
164272  {
164273  // This is the generated delete operator...
164274  SgDeadIfDirectiveStatement::operator delete (pointer,sizeof(SgDeadIfDirectiveStatement));
164275  }
164276 
164278  static size_t numberOfNodes();
164279 
164281  static size_t memoryUsage();
164282 
164283  // End of scope which started in IR nodes specific code
164284  /* */
164285 
164286  /* name Internal Functions
164287  \brief Internal functions ... incomplete-documentation
164288 
164289  These functions have been made public as part of the design, but they are suggested for internal use
164290  or by particularly knowledgeable users for specialized tools or applications.
164291 
164292  \internal We could not make these private because they are required by user for special purposes. And
164293  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
164294 
164295  */
164296 
164297  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
164298  // overridden in every class by *generated* implementation
164300  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
164301  // MS: 06/28/02 container of names of variables or container indices
164302  // used used in the traversal to access AST successor nodes
164303  // overridden in every class by *generated* implementation
164306  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
164307 
164308  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
164309  // than all the vector copies. The implementation for these functions is generated for each class.
164311  virtual size_t get_numberOfTraversalSuccessors() override;
164313  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
164315  virtual size_t get_childIndex(SgNode *child) override;
164316 
164317 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
164318  // MS: 08/16/2002 method for generating RTI information
164320  virtual RTIReturnType roseRTI() override;
164321 #endif
164322  /* */
164323 
164324 
164325 
164326  /* name Deprecated Functions
164327  \brief Deprecated functions ... incomplete-documentation
164328 
164329  These functions have been deprecated from use.
164330  */
164331  /* */
164332 
164334  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
164335 
164336  // JJW (10/16/2008): Changed to a single function in Node.code, and put
164337  // getVariant() in #if 0 block to prevent confusing Doxygen
164338 #if 0
164339 
164340  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
164342  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
164343 #endif
164344  /* */
164345 
164346 
164347 
164348 
164349  public:
164350  /* name Traversal Support Functions
164351  \brief Traversal support functions ... incomplete-documentation
164352 
164353  These functions have been made public as part of the design, but they are suggested for internal use
164354  or by particularly knowledgable users for specialized tools or applications.
164355  */
164356  /* */
164357 
164358  // DQ (11/26/2005): Support for visitor pattern mechanims
164359  // (inferior to ROSE traversal mechanism, experimental).
164363 
164364  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
164366  virtual void accept (ROSE_VisitorPattern & visitor) override;
164367 
164368  // DQ (12/26/2005): Support for traversal based on the memory pool
164371  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
164372 
164375  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
164376 
164377  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
164378  // This traversal helps support internal tools that call static member functions.
164379  // note: this function operates on the memory pools.
164382  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
164383  /* */
164384 
164385 
164386  public:
164387  /* name Memory Allocation Functions
164388  \brief Memory allocations functions ... incomplete-documentation
164389 
164390  These functions have been made public as part of the design, but they are suggested for internal use
164391  or by particularly knowledgable users for specialized tools or applications.
164392  */
164393  /* */
164394 
164405  virtual bool isInMemoryPool() override;
164406 
164417  virtual void checkDataMemberPointersIfInMemoryPool() override;
164418 
164419  // DQ (4/30/2006): Modified to be a const function.
164434  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
164435 
164445  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
164446 
164458  virtual long getChildIndex( SgNode* childNode ) const override;
164459 
164460  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
164461  // comment here (changed to be a C style comment and not be a doxygen comment).
164462  /* \brief Constructor for use by AST File I/O Mechanism
164463 
164464  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
164465  which obtained via fast binary file I/O from disk.
164466  */
164467  // SgDeadIfDirectiveStatement( SgDeadIfDirectiveStatementStorageClass& source );
164468 
164469 
164470 
164471 
164472 
164473  // JH (10/24/2005): methods added to support the ast file IO
164474  private:
164475 
164476  /* name AST Memory Allocation Support Functions
164477  \brief Memory allocations support....
164478 
164479  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
164480  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
164481  and support the AST File I/O Mechanism.
164482  */
164483  /* */
164484 
164485  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
164486  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
164487  that I use the same type everywhere, if any changes are made. THe second one declares the type
164488  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
164489  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
164490  a correspinding one in the AST_FILE_IO class!
164491  */
164492  // DQ (9/2/2015): This typedef is no longer used, we can't define the
164493  // comment here (changed to be a C style comment and not be a doxygen comment).
164494  /* \brief Typedef used for low level memory access.
164495  */
164496  // typedef unsigned char* TestType;
164497 
164498  // DQ (9/2/2015): This typedef is no longer used, we can't define the
164499  // comment here (changed to be a C style comment and not be a doxygen comment).
164500  /* \brief Typedef used to hold memory addresses as values.
164501  */
164502  // typedef unsigned long AddressType;
164503 
164504 
164505 
164506  // necessary, to have direct access to the p_freepointer and the private methods !
164508  friend class AST_FILE_IO;
164509 
164511  friend class SgDeadIfDirectiveStatementStorageClass;
164512 
164514  friend class AstSpecificDataManagingClass;
164515 
164517  friend class AstSpecificDataManagingClassStorageClass;
164518 
164519  public:
164521  SgDeadIfDirectiveStatement( const SgDeadIfDirectiveStatementStorageClass& source );
164522 
164523  // private: // JJW hack
164524  /*
164525  name AST Memory Allocation Support Variables
164526  Memory allocations support variables
164527 
164528  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
164529  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
164530  and support the AST File I/O Mechanism.
164531  */
164532  /* */
164533 
164534  public:
164535 
164536  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
164537  // to current node (so that it will work cleanly with build functions to specify patterns).
164538  // virtual SgNode* addRegExpAttribute();
164545 
164546 // *** COMMON CODE SECTION ENDS HERE ***
164547 
164548 
164549 // End of memberFunctionString
164550 // Start of memberFunctionString
164551 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
164552 
164553  // the generated cast function
164554  // friend ROSE_DLL_API SgDeadIfDirectiveStatement* isSgDeadIfDirectiveStatement ( SgNode* s );
164555 
164557 
164558 
164559 // End of memberFunctionString
164560 // Start of memberFunctionString
164561 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
164562 
164563  void post_construction_initialization() override;
164564 
164565 
164566 // End of memberFunctionString
164567 
164568 
164569  public:
164570  virtual ~SgDeadIfDirectiveStatement();
164571 
164572 
164573  public:
164574  SgDeadIfDirectiveStatement(Sg_File_Info* startOfConstruct );
164576 
164577  protected:
164578 
164579 
164580 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
164581 
164582 
164583  };
164584 #endif
164585 
164586 // postdeclarations for SgDeadIfDirectiveStatement
164587 
164588 /* #line 164589 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
164589 
164590 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
164591 
164592 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
164593 
164594 
164595 /* #line 164596 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
164596 
164597 
164598 
164599 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
164600 
164601 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
164602 // This code is automatically generated for each
164603 // terminal and non-terminal within the defined
164604 // grammar. There is a simple way to change the
164605 // code to fix bugs etc. See the ROSE README file
164606 // for directions.
164607 
164608 // tps: (02/22/2010): Adding DLL export requirements
164609 #include "rosedll.h"
164610 
164611 // predeclarations for SgElseDirectiveStatement
164612 
164613 /* #line 164614 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
164614 
164615 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
164616 
164617 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
164618 
164619 #if 1
164620 // Class Definition for SgElseDirectiveStatement
164622  {
164623  public:
164624 
164625 
164626 /* #line 164627 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
164627 
164628  virtual SgNode* copy ( SgCopyHelp& help) const override;
164629 // Start of memberFunctionString
164630 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
164631 
164632 // *** COMMON CODE SECTION BEGINS HERE ***
164633 
164634  public:
164635 
164636  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
164637  // and not required which is required to match the other aspects of the copy mechanism code generation.
164638  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
164639  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
164640  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
164641  // virtual SgNode* copy ( const SgCopyHelp & help) const;
164642 
164644  virtual std::string class_name() const override;
164645 
164647  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
164648 
164650  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
164651  // static const VariantT static_variant = V_SgElseDirectiveStatement;
164652  enum { static_variant = V_SgElseDirectiveStatement };
164653 
164654  /* the generated cast function */
164656  ROSE_DLL_API friend SgElseDirectiveStatement* isSgElseDirectiveStatement( SgNode * s );
164657 
164659  ROSE_DLL_API friend const SgElseDirectiveStatement* isSgElseDirectiveStatement( const SgNode * s );
164660 
164661  // ******************************************
164662  // * Memory Pool / New / Delete
164663  // ******************************************
164664 
164665  public:
164667  static const unsigned pool_size; //
164669  static std::vector<unsigned char *> pools; //
164671  static SgElseDirectiveStatement * next_node; //
164672 
164674  static unsigned long initializeStorageClassArray(SgElseDirectiveStatementStorageClass *); //
164675 
164677  static void clearMemoryPool(); //
164678  static void deleteMemoryPool(); //
164679 
164681  static void extendMemoryPoolForFileIO(); //
164682 
164684  static SgElseDirectiveStatement * getPointerFromGlobalIndex(unsigned long); //
164686  static SgElseDirectiveStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
164687 
164689  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
164691  static void resetValidFreepointers(); //
164693  static unsigned long getNumberOfLastValidPointer(); //
164694 
164695 
164696 #if defined(INLINE_FUNCTIONS)
164697 
164698  inline void *operator new (size_t size);
164699 #else
164700 
164701  void *operator new (size_t size);
164702 #endif
164703 
164704  void operator delete (void* pointer, size_t size);
164705 
164706  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
164707  void operator delete (void* pointer)
164708  {
164709  // This is the generated delete operator...
164710  SgElseDirectiveStatement::operator delete (pointer,sizeof(SgElseDirectiveStatement));
164711  }
164712 
164714  static size_t numberOfNodes();
164715 
164717  static size_t memoryUsage();
164718 
164719  // End of scope which started in IR nodes specific code
164720  /* */
164721 
164722  /* name Internal Functions
164723  \brief Internal functions ... incomplete-documentation
164724 
164725  These functions have been made public as part of the design, but they are suggested for internal use
164726  or by particularly knowledgeable users for specialized tools or applications.
164727 
164728  \internal We could not make these private because they are required by user for special purposes. And
164729  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
164730 
164731  */
164732 
164733  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
164734  // overridden in every class by *generated* implementation
164736  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
164737  // MS: 06/28/02 container of names of variables or container indices
164738  // used used in the traversal to access AST successor nodes
164739  // overridden in every class by *generated* implementation
164742  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
164743 
164744  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
164745  // than all the vector copies. The implementation for these functions is generated for each class.
164747  virtual size_t get_numberOfTraversalSuccessors() override;
164749  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
164751  virtual size_t get_childIndex(SgNode *child) override;
164752 
164753 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
164754  // MS: 08/16/2002 method for generating RTI information
164756  virtual RTIReturnType roseRTI() override;
164757 #endif
164758  /* */
164759 
164760 
164761 
164762  /* name Deprecated Functions
164763  \brief Deprecated functions ... incomplete-documentation
164764 
164765  These functions have been deprecated from use.
164766  */
164767  /* */
164768 
164770  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
164771 
164772  // JJW (10/16/2008): Changed to a single function in Node.code, and put
164773  // getVariant() in #if 0 block to prevent confusing Doxygen
164774 #if 0
164775 
164776  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
164778  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
164779 #endif
164780  /* */
164781 
164782 
164783 
164784 
164785  public:
164786  /* name Traversal Support Functions
164787  \brief Traversal support functions ... incomplete-documentation
164788 
164789  These functions have been made public as part of the design, but they are suggested for internal use
164790  or by particularly knowledgable users for specialized tools or applications.
164791  */
164792  /* */
164793 
164794  // DQ (11/26/2005): Support for visitor pattern mechanims
164795  // (inferior to ROSE traversal mechanism, experimental).
164799 
164800  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
164802  virtual void accept (ROSE_VisitorPattern & visitor) override;
164803 
164804  // DQ (12/26/2005): Support for traversal based on the memory pool
164807  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
164808 
164811  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
164812 
164813  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
164814  // This traversal helps support internal tools that call static member functions.
164815  // note: this function operates on the memory pools.
164818  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
164819  /* */
164820 
164821 
164822  public:
164823  /* name Memory Allocation Functions
164824  \brief Memory allocations functions ... incomplete-documentation
164825 
164826  These functions have been made public as part of the design, but they are suggested for internal use
164827  or by particularly knowledgable users for specialized tools or applications.
164828  */
164829  /* */
164830 
164841  virtual bool isInMemoryPool() override;
164842 
164853  virtual void checkDataMemberPointersIfInMemoryPool() override;
164854 
164855  // DQ (4/30/2006): Modified to be a const function.
164870  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
164871 
164881  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
164882 
164894  virtual long getChildIndex( SgNode* childNode ) const override;
164895 
164896  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
164897  // comment here (changed to be a C style comment and not be a doxygen comment).
164898  /* \brief Constructor for use by AST File I/O Mechanism
164899 
164900  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
164901  which obtained via fast binary file I/O from disk.
164902  */
164903  // SgElseDirectiveStatement( SgElseDirectiveStatementStorageClass& source );
164904 
164905 
164906 
164907 
164908 
164909  // JH (10/24/2005): methods added to support the ast file IO
164910  private:
164911 
164912  /* name AST Memory Allocation Support Functions
164913  \brief Memory allocations support....
164914 
164915  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
164916  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
164917  and support the AST File I/O Mechanism.
164918  */
164919  /* */
164920 
164921  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
164922  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
164923  that I use the same type everywhere, if any changes are made. THe second one declares the type
164924  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
164925  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
164926  a correspinding one in the AST_FILE_IO class!
164927  */
164928  // DQ (9/2/2015): This typedef is no longer used, we can't define the
164929  // comment here (changed to be a C style comment and not be a doxygen comment).
164930  /* \brief Typedef used for low level memory access.
164931  */
164932  // typedef unsigned char* TestType;
164933 
164934  // DQ (9/2/2015): This typedef is no longer used, we can't define the
164935  // comment here (changed to be a C style comment and not be a doxygen comment).
164936  /* \brief Typedef used to hold memory addresses as values.
164937  */
164938  // typedef unsigned long AddressType;
164939 
164940 
164941 
164942  // necessary, to have direct access to the p_freepointer and the private methods !
164944  friend class AST_FILE_IO;
164945 
164947  friend class SgElseDirectiveStatementStorageClass;
164948 
164950  friend class AstSpecificDataManagingClass;
164951 
164953  friend class AstSpecificDataManagingClassStorageClass;
164954 
164955  public:
164957  SgElseDirectiveStatement( const SgElseDirectiveStatementStorageClass& source );
164958 
164959  // private: // JJW hack
164960  /*
164961  name AST Memory Allocation Support Variables
164962  Memory allocations support variables
164963 
164964  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
164965  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
164966  and support the AST File I/O Mechanism.
164967  */
164968  /* */
164969 
164970  public:
164971 
164972  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
164973  // to current node (so that it will work cleanly with build functions to specify patterns).
164974  // virtual SgNode* addRegExpAttribute();
164981 
164982 // *** COMMON CODE SECTION ENDS HERE ***
164983 
164984 
164985 // End of memberFunctionString
164986 // Start of memberFunctionString
164987 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
164988 
164989  // the generated cast function
164990  // friend ROSE_DLL_API SgElseDirectiveStatement* isSgElseDirectiveStatement ( SgNode* s );
164991 
164993 
164994 
164995 // End of memberFunctionString
164996 // Start of memberFunctionString
164997 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
164998 
164999  void post_construction_initialization() override;
165000 
165001 
165002 // End of memberFunctionString
165003 
165004 
165005  public:
165006  virtual ~SgElseDirectiveStatement();
165007 
165008 
165009  public:
165010  SgElseDirectiveStatement(Sg_File_Info* startOfConstruct );
165012 
165013  protected:
165014 
165015 
165016 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
165017 
165018 
165019  };
165020 #endif
165021 
165022 // postdeclarations for SgElseDirectiveStatement
165023 
165024 /* #line 165025 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
165025 
165026 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
165027 
165028 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
165029 
165030 
165031 /* #line 165032 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
165032 
165033 
165034 
165035 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
165036 
165037 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
165038 // This code is automatically generated for each
165039 // terminal and non-terminal within the defined
165040 // grammar. There is a simple way to change the
165041 // code to fix bugs etc. See the ROSE README file
165042 // for directions.
165043 
165044 // tps: (02/22/2010): Adding DLL export requirements
165045 #include "rosedll.h"
165046 
165047 // predeclarations for SgElseifDirectiveStatement
165048 
165049 /* #line 165050 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
165050 
165051 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
165052 
165053 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
165054 
165055 #if 1
165056 // Class Definition for SgElseifDirectiveStatement
165058  {
165059  public:
165060 
165061 
165062 /* #line 165063 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
165063 
165064  virtual SgNode* copy ( SgCopyHelp& help) const override;
165065 // Start of memberFunctionString
165066 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
165067 
165068 // *** COMMON CODE SECTION BEGINS HERE ***
165069 
165070  public:
165071 
165072  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
165073  // and not required which is required to match the other aspects of the copy mechanism code generation.
165074  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
165075  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
165076  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
165077  // virtual SgNode* copy ( const SgCopyHelp & help) const;
165078 
165080  virtual std::string class_name() const override;
165081 
165083  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
165084 
165086  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
165087  // static const VariantT static_variant = V_SgElseifDirectiveStatement;
165088  enum { static_variant = V_SgElseifDirectiveStatement };
165089 
165090  /* the generated cast function */
165092  ROSE_DLL_API friend SgElseifDirectiveStatement* isSgElseifDirectiveStatement( SgNode * s );
165093 
165095  ROSE_DLL_API friend const SgElseifDirectiveStatement* isSgElseifDirectiveStatement( const SgNode * s );
165096 
165097  // ******************************************
165098  // * Memory Pool / New / Delete
165099  // ******************************************
165100 
165101  public:
165103  static const unsigned pool_size; //
165105  static std::vector<unsigned char *> pools; //
165107  static SgElseifDirectiveStatement * next_node; //
165108 
165110  static unsigned long initializeStorageClassArray(SgElseifDirectiveStatementStorageClass *); //
165111 
165113  static void clearMemoryPool(); //
165114  static void deleteMemoryPool(); //
165115 
165117  static void extendMemoryPoolForFileIO(); //
165118 
165120  static SgElseifDirectiveStatement * getPointerFromGlobalIndex(unsigned long); //
165122  static SgElseifDirectiveStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
165123 
165125  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
165127  static void resetValidFreepointers(); //
165129  static unsigned long getNumberOfLastValidPointer(); //
165130 
165131 
165132 #if defined(INLINE_FUNCTIONS)
165133 
165134  inline void *operator new (size_t size);
165135 #else
165136 
165137  void *operator new (size_t size);
165138 #endif
165139 
165140  void operator delete (void* pointer, size_t size);
165141 
165142  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
165143  void operator delete (void* pointer)
165144  {
165145  // This is the generated delete operator...
165146  SgElseifDirectiveStatement::operator delete (pointer,sizeof(SgElseifDirectiveStatement));
165147  }
165148 
165150  static size_t numberOfNodes();
165151 
165153  static size_t memoryUsage();
165154 
165155  // End of scope which started in IR nodes specific code
165156  /* */
165157 
165158  /* name Internal Functions
165159  \brief Internal functions ... incomplete-documentation
165160 
165161  These functions have been made public as part of the design, but they are suggested for internal use
165162  or by particularly knowledgeable users for specialized tools or applications.
165163 
165164  \internal We could not make these private because they are required by user for special purposes. And
165165  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
165166 
165167  */
165168 
165169  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
165170  // overridden in every class by *generated* implementation
165172  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
165173  // MS: 06/28/02 container of names of variables or container indices
165174  // used used in the traversal to access AST successor nodes
165175  // overridden in every class by *generated* implementation
165178  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
165179 
165180  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
165181  // than all the vector copies. The implementation for these functions is generated for each class.
165183  virtual size_t get_numberOfTraversalSuccessors() override;
165185  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
165187  virtual size_t get_childIndex(SgNode *child) override;
165188 
165189 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
165190  // MS: 08/16/2002 method for generating RTI information
165192  virtual RTIReturnType roseRTI() override;
165193 #endif
165194  /* */
165195 
165196 
165197 
165198  /* name Deprecated Functions
165199  \brief Deprecated functions ... incomplete-documentation
165200 
165201  These functions have been deprecated from use.
165202  */
165203  /* */
165204 
165206  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
165207 
165208  // JJW (10/16/2008): Changed to a single function in Node.code, and put
165209  // getVariant() in #if 0 block to prevent confusing Doxygen
165210 #if 0
165211 
165212  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
165214  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
165215 #endif
165216  /* */
165217 
165218 
165219 
165220 
165221  public:
165222  /* name Traversal Support Functions
165223  \brief Traversal support functions ... incomplete-documentation
165224 
165225  These functions have been made public as part of the design, but they are suggested for internal use
165226  or by particularly knowledgable users for specialized tools or applications.
165227  */
165228  /* */
165229 
165230  // DQ (11/26/2005): Support for visitor pattern mechanims
165231  // (inferior to ROSE traversal mechanism, experimental).
165235 
165236  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
165238  virtual void accept (ROSE_VisitorPattern & visitor) override;
165239 
165240  // DQ (12/26/2005): Support for traversal based on the memory pool
165243  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
165244 
165247  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
165248 
165249  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
165250  // This traversal helps support internal tools that call static member functions.
165251  // note: this function operates on the memory pools.
165254  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
165255  /* */
165256 
165257 
165258  public:
165259  /* name Memory Allocation Functions
165260  \brief Memory allocations functions ... incomplete-documentation
165261 
165262  These functions have been made public as part of the design, but they are suggested for internal use
165263  or by particularly knowledgable users for specialized tools or applications.
165264  */
165265  /* */
165266 
165277  virtual bool isInMemoryPool() override;
165278 
165289  virtual void checkDataMemberPointersIfInMemoryPool() override;
165290 
165291  // DQ (4/30/2006): Modified to be a const function.
165306  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
165307 
165317  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
165318 
165330  virtual long getChildIndex( SgNode* childNode ) const override;
165331 
165332  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
165333  // comment here (changed to be a C style comment and not be a doxygen comment).
165334  /* \brief Constructor for use by AST File I/O Mechanism
165335 
165336  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
165337  which obtained via fast binary file I/O from disk.
165338  */
165339  // SgElseifDirectiveStatement( SgElseifDirectiveStatementStorageClass& source );
165340 
165341 
165342 
165343 
165344 
165345  // JH (10/24/2005): methods added to support the ast file IO
165346  private:
165347 
165348  /* name AST Memory Allocation Support Functions
165349  \brief Memory allocations support....
165350 
165351  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
165352  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
165353  and support the AST File I/O Mechanism.
165354  */
165355  /* */
165356 
165357  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
165358  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
165359  that I use the same type everywhere, if any changes are made. THe second one declares the type
165360  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
165361  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
165362  a correspinding one in the AST_FILE_IO class!
165363  */
165364  // DQ (9/2/2015): This typedef is no longer used, we can't define the
165365  // comment here (changed to be a C style comment and not be a doxygen comment).
165366  /* \brief Typedef used for low level memory access.
165367  */
165368  // typedef unsigned char* TestType;
165369 
165370  // DQ (9/2/2015): This typedef is no longer used, we can't define the
165371  // comment here (changed to be a C style comment and not be a doxygen comment).
165372  /* \brief Typedef used to hold memory addresses as values.
165373  */
165374  // typedef unsigned long AddressType;
165375 
165376 
165377 
165378  // necessary, to have direct access to the p_freepointer and the private methods !
165380  friend class AST_FILE_IO;
165381 
165383  friend class SgElseifDirectiveStatementStorageClass;
165384 
165386  friend class AstSpecificDataManagingClass;
165387 
165389  friend class AstSpecificDataManagingClassStorageClass;
165390 
165391  public:
165393  SgElseifDirectiveStatement( const SgElseifDirectiveStatementStorageClass& source );
165394 
165395  // private: // JJW hack
165396  /*
165397  name AST Memory Allocation Support Variables
165398  Memory allocations support variables
165399 
165400  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
165401  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
165402  and support the AST File I/O Mechanism.
165403  */
165404  /* */
165405 
165406  public:
165407 
165408  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
165409  // to current node (so that it will work cleanly with build functions to specify patterns).
165410  // virtual SgNode* addRegExpAttribute();
165417 
165418 // *** COMMON CODE SECTION ENDS HERE ***
165419 
165420 
165421 // End of memberFunctionString
165422 // Start of memberFunctionString
165423 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
165424 
165425  // the generated cast function
165426  // friend ROSE_DLL_API SgElseifDirectiveStatement* isSgElseifDirectiveStatement ( SgNode* s );
165427 
165429 
165430 
165431 // End of memberFunctionString
165432 // Start of memberFunctionString
165433 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
165434 
165435  void post_construction_initialization() override;
165436 
165437 
165438 // End of memberFunctionString
165439 
165440 
165441  public:
165442  virtual ~SgElseifDirectiveStatement();
165443 
165444 
165445  public:
165446  SgElseifDirectiveStatement(Sg_File_Info* startOfConstruct );
165448 
165449  protected:
165450 
165451 
165452 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
165453 
165454 
165455  };
165456 #endif
165457 
165458 // postdeclarations for SgElseifDirectiveStatement
165459 
165460 /* #line 165461 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
165461 
165462 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
165463 
165464 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
165465 
165466 
165467 /* #line 165468 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
165468 
165469 
165470 
165471 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
165472 
165473 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
165474 // This code is automatically generated for each
165475 // terminal and non-terminal within the defined
165476 // grammar. There is a simple way to change the
165477 // code to fix bugs etc. See the ROSE README file
165478 // for directions.
165479 
165480 // tps: (02/22/2010): Adding DLL export requirements
165481 #include "rosedll.h"
165482 
165483 // predeclarations for SgEndifDirectiveStatement
165484 
165485 /* #line 165486 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
165486 
165487 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
165488 
165489 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
165490 
165491 #if 1
165492 // Class Definition for SgEndifDirectiveStatement
165494  {
165495  public:
165496 
165497 
165498 /* #line 165499 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
165499 
165500  virtual SgNode* copy ( SgCopyHelp& help) const override;
165501 // Start of memberFunctionString
165502 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
165503 
165504 // *** COMMON CODE SECTION BEGINS HERE ***
165505 
165506  public:
165507 
165508  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
165509  // and not required which is required to match the other aspects of the copy mechanism code generation.
165510  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
165511  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
165512  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
165513  // virtual SgNode* copy ( const SgCopyHelp & help) const;
165514 
165516  virtual std::string class_name() const override;
165517 
165519  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
165520 
165522  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
165523  // static const VariantT static_variant = V_SgEndifDirectiveStatement;
165524  enum { static_variant = V_SgEndifDirectiveStatement };
165525 
165526  /* the generated cast function */
165528  ROSE_DLL_API friend SgEndifDirectiveStatement* isSgEndifDirectiveStatement( SgNode * s );
165529 
165531  ROSE_DLL_API friend const SgEndifDirectiveStatement* isSgEndifDirectiveStatement( const SgNode * s );
165532 
165533  // ******************************************
165534  // * Memory Pool / New / Delete
165535  // ******************************************
165536 
165537  public:
165539  static const unsigned pool_size; //
165541  static std::vector<unsigned char *> pools; //
165543  static SgEndifDirectiveStatement * next_node; //
165544 
165546  static unsigned long initializeStorageClassArray(SgEndifDirectiveStatementStorageClass *); //
165547 
165549  static void clearMemoryPool(); //
165550  static void deleteMemoryPool(); //
165551 
165553  static void extendMemoryPoolForFileIO(); //
165554 
165556  static SgEndifDirectiveStatement * getPointerFromGlobalIndex(unsigned long); //
165558  static SgEndifDirectiveStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
165559 
165561  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
165563  static void resetValidFreepointers(); //
165565  static unsigned long getNumberOfLastValidPointer(); //
165566 
165567 
165568 #if defined(INLINE_FUNCTIONS)
165569 
165570  inline void *operator new (size_t size);
165571 #else
165572 
165573  void *operator new (size_t size);
165574 #endif
165575 
165576  void operator delete (void* pointer, size_t size);
165577 
165578  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
165579  void operator delete (void* pointer)
165580  {
165581  // This is the generated delete operator...
165582  SgEndifDirectiveStatement::operator delete (pointer,sizeof(SgEndifDirectiveStatement));
165583  }
165584 
165586  static size_t numberOfNodes();
165587 
165589  static size_t memoryUsage();
165590 
165591  // End of scope which started in IR nodes specific code
165592  /* */
165593 
165594  /* name Internal Functions
165595  \brief Internal functions ... incomplete-documentation
165596 
165597  These functions have been made public as part of the design, but they are suggested for internal use
165598  or by particularly knowledgeable users for specialized tools or applications.
165599 
165600  \internal We could not make these private because they are required by user for special purposes. And
165601  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
165602 
165603  */
165604 
165605  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
165606  // overridden in every class by *generated* implementation
165608  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
165609  // MS: 06/28/02 container of names of variables or container indices
165610  // used used in the traversal to access AST successor nodes
165611  // overridden in every class by *generated* implementation
165614  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
165615 
165616  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
165617  // than all the vector copies. The implementation for these functions is generated for each class.
165619  virtual size_t get_numberOfTraversalSuccessors() override;
165621  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
165623  virtual size_t get_childIndex(SgNode *child) override;
165624 
165625 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
165626  // MS: 08/16/2002 method for generating RTI information
165628  virtual RTIReturnType roseRTI() override;
165629 #endif
165630  /* */
165631 
165632 
165633 
165634  /* name Deprecated Functions
165635  \brief Deprecated functions ... incomplete-documentation
165636 
165637  These functions have been deprecated from use.
165638  */
165639  /* */
165640 
165642  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
165643 
165644  // JJW (10/16/2008): Changed to a single function in Node.code, and put
165645  // getVariant() in #if 0 block to prevent confusing Doxygen
165646 #if 0
165647 
165648  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
165650  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
165651 #endif
165652  /* */
165653 
165654 
165655 
165656 
165657  public:
165658  /* name Traversal Support Functions
165659  \brief Traversal support functions ... incomplete-documentation
165660 
165661  These functions have been made public as part of the design, but they are suggested for internal use
165662  or by particularly knowledgable users for specialized tools or applications.
165663  */
165664  /* */
165665 
165666  // DQ (11/26/2005): Support for visitor pattern mechanims
165667  // (inferior to ROSE traversal mechanism, experimental).
165671 
165672  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
165674  virtual void accept (ROSE_VisitorPattern & visitor) override;
165675 
165676  // DQ (12/26/2005): Support for traversal based on the memory pool
165679  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
165680 
165683  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
165684 
165685  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
165686  // This traversal helps support internal tools that call static member functions.
165687  // note: this function operates on the memory pools.
165690  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
165691  /* */
165692 
165693 
165694  public:
165695  /* name Memory Allocation Functions
165696  \brief Memory allocations functions ... incomplete-documentation
165697 
165698  These functions have been made public as part of the design, but they are suggested for internal use
165699  or by particularly knowledgable users for specialized tools or applications.
165700  */
165701  /* */
165702 
165713  virtual bool isInMemoryPool() override;
165714 
165725  virtual void checkDataMemberPointersIfInMemoryPool() override;
165726 
165727  // DQ (4/30/2006): Modified to be a const function.
165742  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
165743 
165753  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
165754 
165766  virtual long getChildIndex( SgNode* childNode ) const override;
165767 
165768  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
165769  // comment here (changed to be a C style comment and not be a doxygen comment).
165770  /* \brief Constructor for use by AST File I/O Mechanism
165771 
165772  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
165773  which obtained via fast binary file I/O from disk.
165774  */
165775  // SgEndifDirectiveStatement( SgEndifDirectiveStatementStorageClass& source );
165776 
165777 
165778 
165779 
165780 
165781  // JH (10/24/2005): methods added to support the ast file IO
165782  private:
165783 
165784  /* name AST Memory Allocation Support Functions
165785  \brief Memory allocations support....
165786 
165787  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
165788  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
165789  and support the AST File I/O Mechanism.
165790  */
165791  /* */
165792 
165793  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
165794  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
165795  that I use the same type everywhere, if any changes are made. THe second one declares the type
165796  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
165797  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
165798  a correspinding one in the AST_FILE_IO class!
165799  */
165800  // DQ (9/2/2015): This typedef is no longer used, we can't define the
165801  // comment here (changed to be a C style comment and not be a doxygen comment).
165802  /* \brief Typedef used for low level memory access.
165803  */
165804  // typedef unsigned char* TestType;
165805 
165806  // DQ (9/2/2015): This typedef is no longer used, we can't define the
165807  // comment here (changed to be a C style comment and not be a doxygen comment).
165808  /* \brief Typedef used to hold memory addresses as values.
165809  */
165810  // typedef unsigned long AddressType;
165811 
165812 
165813 
165814  // necessary, to have direct access to the p_freepointer and the private methods !
165816  friend class AST_FILE_IO;
165817 
165819  friend class SgEndifDirectiveStatementStorageClass;
165820 
165822  friend class AstSpecificDataManagingClass;
165823 
165825  friend class AstSpecificDataManagingClassStorageClass;
165826 
165827  public:
165829  SgEndifDirectiveStatement( const SgEndifDirectiveStatementStorageClass& source );
165830 
165831  // private: // JJW hack
165832  /*
165833  name AST Memory Allocation Support Variables
165834  Memory allocations support variables
165835 
165836  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
165837  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
165838  and support the AST File I/O Mechanism.
165839  */
165840  /* */
165841 
165842  public:
165843 
165844  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
165845  // to current node (so that it will work cleanly with build functions to specify patterns).
165846  // virtual SgNode* addRegExpAttribute();
165853 
165854 // *** COMMON CODE SECTION ENDS HERE ***
165855 
165856 
165857 // End of memberFunctionString
165858 // Start of memberFunctionString
165859 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
165860 
165861  // the generated cast function
165862  // friend ROSE_DLL_API SgEndifDirectiveStatement* isSgEndifDirectiveStatement ( SgNode* s );
165863 
165865 
165866 
165867 // End of memberFunctionString
165868 // Start of memberFunctionString
165869 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
165870 
165871  void post_construction_initialization() override;
165872 
165873 
165874 // End of memberFunctionString
165875 
165876 
165877  public:
165878  virtual ~SgEndifDirectiveStatement();
165879 
165880 
165881  public:
165882  SgEndifDirectiveStatement(Sg_File_Info* startOfConstruct );
165884 
165885  protected:
165886 
165887 
165888 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
165889 
165890 
165891  };
165892 #endif
165893 
165894 // postdeclarations for SgEndifDirectiveStatement
165895 
165896 /* #line 165897 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
165897 
165898 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
165899 
165900 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
165901 
165902 
165903 /* #line 165904 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
165904 
165905 
165906 
165907 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
165908 
165909 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
165910 // This code is automatically generated for each
165911 // terminal and non-terminal within the defined
165912 // grammar. There is a simple way to change the
165913 // code to fix bugs etc. See the ROSE README file
165914 // for directions.
165915 
165916 // tps: (02/22/2010): Adding DLL export requirements
165917 #include "rosedll.h"
165918 
165919 // predeclarations for SgLineDirectiveStatement
165920 
165921 /* #line 165922 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
165922 
165923 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
165924 
165925 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
165926 
165927 #if 1
165928 // Class Definition for SgLineDirectiveStatement
165930  {
165931  public:
165932 
165933 
165934 /* #line 165935 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
165935 
165936  virtual SgNode* copy ( SgCopyHelp& help) const override;
165937 // Start of memberFunctionString
165938 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
165939 
165940 // *** COMMON CODE SECTION BEGINS HERE ***
165941 
165942  public:
165943 
165944  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
165945  // and not required which is required to match the other aspects of the copy mechanism code generation.
165946  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
165947  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
165948  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
165949  // virtual SgNode* copy ( const SgCopyHelp & help) const;
165950 
165952  virtual std::string class_name() const override;
165953 
165955  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
165956 
165958  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
165959  // static const VariantT static_variant = V_SgLineDirectiveStatement;
165960  enum { static_variant = V_SgLineDirectiveStatement };
165961 
165962  /* the generated cast function */
165964  ROSE_DLL_API friend SgLineDirectiveStatement* isSgLineDirectiveStatement( SgNode * s );
165965 
165967  ROSE_DLL_API friend const SgLineDirectiveStatement* isSgLineDirectiveStatement( const SgNode * s );
165968 
165969  // ******************************************
165970  // * Memory Pool / New / Delete
165971  // ******************************************
165972 
165973  public:
165975  static const unsigned pool_size; //
165977  static std::vector<unsigned char *> pools; //
165979  static SgLineDirectiveStatement * next_node; //
165980 
165982  static unsigned long initializeStorageClassArray(SgLineDirectiveStatementStorageClass *); //
165983 
165985  static void clearMemoryPool(); //
165986  static void deleteMemoryPool(); //
165987 
165989  static void extendMemoryPoolForFileIO(); //
165990 
165992  static SgLineDirectiveStatement * getPointerFromGlobalIndex(unsigned long); //
165994  static SgLineDirectiveStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
165995 
165997  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
165999  static void resetValidFreepointers(); //
166001  static unsigned long getNumberOfLastValidPointer(); //
166002 
166003 
166004 #if defined(INLINE_FUNCTIONS)
166005 
166006  inline void *operator new (size_t size);
166007 #else
166008 
166009  void *operator new (size_t size);
166010 #endif
166011 
166012  void operator delete (void* pointer, size_t size);
166013 
166014  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
166015  void operator delete (void* pointer)
166016  {
166017  // This is the generated delete operator...
166018  SgLineDirectiveStatement::operator delete (pointer,sizeof(SgLineDirectiveStatement));
166019  }
166020 
166022  static size_t numberOfNodes();
166023 
166025  static size_t memoryUsage();
166026 
166027  // End of scope which started in IR nodes specific code
166028  /* */
166029 
166030  /* name Internal Functions
166031  \brief Internal functions ... incomplete-documentation
166032 
166033  These functions have been made public as part of the design, but they are suggested for internal use
166034  or by particularly knowledgeable users for specialized tools or applications.
166035 
166036  \internal We could not make these private because they are required by user for special purposes. And
166037  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
166038 
166039  */
166040 
166041  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
166042  // overridden in every class by *generated* implementation
166044  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
166045  // MS: 06/28/02 container of names of variables or container indices
166046  // used used in the traversal to access AST successor nodes
166047  // overridden in every class by *generated* implementation
166050  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
166051 
166052  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
166053  // than all the vector copies. The implementation for these functions is generated for each class.
166055  virtual size_t get_numberOfTraversalSuccessors() override;
166057  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
166059  virtual size_t get_childIndex(SgNode *child) override;
166060 
166061 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
166062  // MS: 08/16/2002 method for generating RTI information
166064  virtual RTIReturnType roseRTI() override;
166065 #endif
166066  /* */
166067 
166068 
166069 
166070  /* name Deprecated Functions
166071  \brief Deprecated functions ... incomplete-documentation
166072 
166073  These functions have been deprecated from use.
166074  */
166075  /* */
166076 
166078  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
166079 
166080  // JJW (10/16/2008): Changed to a single function in Node.code, and put
166081  // getVariant() in #if 0 block to prevent confusing Doxygen
166082 #if 0
166083 
166084  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
166086  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
166087 #endif
166088  /* */
166089 
166090 
166091 
166092 
166093  public:
166094  /* name Traversal Support Functions
166095  \brief Traversal support functions ... incomplete-documentation
166096 
166097  These functions have been made public as part of the design, but they are suggested for internal use
166098  or by particularly knowledgable users for specialized tools or applications.
166099  */
166100  /* */
166101 
166102  // DQ (11/26/2005): Support for visitor pattern mechanims
166103  // (inferior to ROSE traversal mechanism, experimental).
166107 
166108  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
166110  virtual void accept (ROSE_VisitorPattern & visitor) override;
166111 
166112  // DQ (12/26/2005): Support for traversal based on the memory pool
166115  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
166116 
166119  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
166120 
166121  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
166122  // This traversal helps support internal tools that call static member functions.
166123  // note: this function operates on the memory pools.
166126  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
166127  /* */
166128 
166129 
166130  public:
166131  /* name Memory Allocation Functions
166132  \brief Memory allocations functions ... incomplete-documentation
166133 
166134  These functions have been made public as part of the design, but they are suggested for internal use
166135  or by particularly knowledgable users for specialized tools or applications.
166136  */
166137  /* */
166138 
166149  virtual bool isInMemoryPool() override;
166150 
166161  virtual void checkDataMemberPointersIfInMemoryPool() override;
166162 
166163  // DQ (4/30/2006): Modified to be a const function.
166178  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
166179 
166189  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
166190 
166202  virtual long getChildIndex( SgNode* childNode ) const override;
166203 
166204  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
166205  // comment here (changed to be a C style comment and not be a doxygen comment).
166206  /* \brief Constructor for use by AST File I/O Mechanism
166207 
166208  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
166209  which obtained via fast binary file I/O from disk.
166210  */
166211  // SgLineDirectiveStatement( SgLineDirectiveStatementStorageClass& source );
166212 
166213 
166214 
166215 
166216 
166217  // JH (10/24/2005): methods added to support the ast file IO
166218  private:
166219 
166220  /* name AST Memory Allocation Support Functions
166221  \brief Memory allocations support....
166222 
166223  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
166224  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
166225  and support the AST File I/O Mechanism.
166226  */
166227  /* */
166228 
166229  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
166230  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
166231  that I use the same type everywhere, if any changes are made. THe second one declares the type
166232  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
166233  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
166234  a correspinding one in the AST_FILE_IO class!
166235  */
166236  // DQ (9/2/2015): This typedef is no longer used, we can't define the
166237  // comment here (changed to be a C style comment and not be a doxygen comment).
166238  /* \brief Typedef used for low level memory access.
166239  */
166240  // typedef unsigned char* TestType;
166241 
166242  // DQ (9/2/2015): This typedef is no longer used, we can't define the
166243  // comment here (changed to be a C style comment and not be a doxygen comment).
166244  /* \brief Typedef used to hold memory addresses as values.
166245  */
166246  // typedef unsigned long AddressType;
166247 
166248 
166249 
166250  // necessary, to have direct access to the p_freepointer and the private methods !
166252  friend class AST_FILE_IO;
166253 
166255  friend class SgLineDirectiveStatementStorageClass;
166256 
166258  friend class AstSpecificDataManagingClass;
166259 
166261  friend class AstSpecificDataManagingClassStorageClass;
166262 
166263  public:
166265  SgLineDirectiveStatement( const SgLineDirectiveStatementStorageClass& source );
166266 
166267  // private: // JJW hack
166268  /*
166269  name AST Memory Allocation Support Variables
166270  Memory allocations support variables
166271 
166272  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
166273  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
166274  and support the AST File I/O Mechanism.
166275  */
166276  /* */
166277 
166278  public:
166279 
166280  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
166281  // to current node (so that it will work cleanly with build functions to specify patterns).
166282  // virtual SgNode* addRegExpAttribute();
166289 
166290 // *** COMMON CODE SECTION ENDS HERE ***
166291 
166292 
166293 // End of memberFunctionString
166294 // Start of memberFunctionString
166295 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
166296 
166297  // the generated cast function
166298  // friend ROSE_DLL_API SgLineDirectiveStatement* isSgLineDirectiveStatement ( SgNode* s );
166299 
166301 
166302 
166303 // End of memberFunctionString
166304 // Start of memberFunctionString
166305 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
166306 
166307  void post_construction_initialization() override;
166308 
166309 
166310 // End of memberFunctionString
166311 
166312 
166313  public:
166314  virtual ~SgLineDirectiveStatement();
166315 
166316 
166317  public:
166318  SgLineDirectiveStatement(Sg_File_Info* startOfConstruct );
166320 
166321  protected:
166322 
166323 
166324 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
166325 
166326 
166327  };
166328 #endif
166329 
166330 // postdeclarations for SgLineDirectiveStatement
166331 
166332 /* #line 166333 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
166333 
166334 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
166335 
166336 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
166337 
166338 
166339 /* #line 166340 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
166340 
166341 
166342 
166343 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
166344 
166345 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
166346 // This code is automatically generated for each
166347 // terminal and non-terminal within the defined
166348 // grammar. There is a simple way to change the
166349 // code to fix bugs etc. See the ROSE README file
166350 // for directions.
166351 
166352 // tps: (02/22/2010): Adding DLL export requirements
166353 #include "rosedll.h"
166354 
166355 // predeclarations for SgWarningDirectiveStatement
166356 
166357 /* #line 166358 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
166358 
166359 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
166360 
166361 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
166362 
166363 #if 1
166364 // Class Definition for SgWarningDirectiveStatement
166366  {
166367  public:
166368 
166369 
166370 /* #line 166371 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
166371 
166372  virtual SgNode* copy ( SgCopyHelp& help) const override;
166373 // Start of memberFunctionString
166374 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
166375 
166376 // *** COMMON CODE SECTION BEGINS HERE ***
166377 
166378  public:
166379 
166380  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
166381  // and not required which is required to match the other aspects of the copy mechanism code generation.
166382  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
166383  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
166384  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
166385  // virtual SgNode* copy ( const SgCopyHelp & help) const;
166386 
166388  virtual std::string class_name() const override;
166389 
166391  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
166392 
166394  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
166395  // static const VariantT static_variant = V_SgWarningDirectiveStatement;
166396  enum { static_variant = V_SgWarningDirectiveStatement };
166397 
166398  /* the generated cast function */
166400  ROSE_DLL_API friend SgWarningDirectiveStatement* isSgWarningDirectiveStatement( SgNode * s );
166401 
166403  ROSE_DLL_API friend const SgWarningDirectiveStatement* isSgWarningDirectiveStatement( const SgNode * s );
166404 
166405  // ******************************************
166406  // * Memory Pool / New / Delete
166407  // ******************************************
166408 
166409  public:
166411  static const unsigned pool_size; //
166413  static std::vector<unsigned char *> pools; //
166415  static SgWarningDirectiveStatement * next_node; //
166416 
166418  static unsigned long initializeStorageClassArray(SgWarningDirectiveStatementStorageClass *); //
166419 
166421  static void clearMemoryPool(); //
166422  static void deleteMemoryPool(); //
166423 
166425  static void extendMemoryPoolForFileIO(); //
166426 
166428  static SgWarningDirectiveStatement * getPointerFromGlobalIndex(unsigned long); //
166430  static SgWarningDirectiveStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
166431 
166433  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
166435  static void resetValidFreepointers(); //
166437  static unsigned long getNumberOfLastValidPointer(); //
166438 
166439 
166440 #if defined(INLINE_FUNCTIONS)
166441 
166442  inline void *operator new (size_t size);
166443 #else
166444 
166445  void *operator new (size_t size);
166446 #endif
166447 
166448  void operator delete (void* pointer, size_t size);
166449 
166450  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
166451  void operator delete (void* pointer)
166452  {
166453  // This is the generated delete operator...
166454  SgWarningDirectiveStatement::operator delete (pointer,sizeof(SgWarningDirectiveStatement));
166455  }
166456 
166458  static size_t numberOfNodes();
166459 
166461  static size_t memoryUsage();
166462 
166463  // End of scope which started in IR nodes specific code
166464  /* */
166465 
166466  /* name Internal Functions
166467  \brief Internal functions ... incomplete-documentation
166468 
166469  These functions have been made public as part of the design, but they are suggested for internal use
166470  or by particularly knowledgeable users for specialized tools or applications.
166471 
166472  \internal We could not make these private because they are required by user for special purposes. And
166473  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
166474 
166475  */
166476 
166477  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
166478  // overridden in every class by *generated* implementation
166480  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
166481  // MS: 06/28/02 container of names of variables or container indices
166482  // used used in the traversal to access AST successor nodes
166483  // overridden in every class by *generated* implementation
166486  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
166487 
166488  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
166489  // than all the vector copies. The implementation for these functions is generated for each class.
166491  virtual size_t get_numberOfTraversalSuccessors() override;
166493  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
166495  virtual size_t get_childIndex(SgNode *child) override;
166496 
166497 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
166498  // MS: 08/16/2002 method for generating RTI information
166500  virtual RTIReturnType roseRTI() override;
166501 #endif
166502  /* */
166503 
166504 
166505 
166506  /* name Deprecated Functions
166507  \brief Deprecated functions ... incomplete-documentation
166508 
166509  These functions have been deprecated from use.
166510  */
166511  /* */
166512 
166514  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
166515 
166516  // JJW (10/16/2008): Changed to a single function in Node.code, and put
166517  // getVariant() in #if 0 block to prevent confusing Doxygen
166518 #if 0
166519 
166520  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
166522  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
166523 #endif
166524  /* */
166525 
166526 
166527 
166528 
166529  public:
166530  /* name Traversal Support Functions
166531  \brief Traversal support functions ... incomplete-documentation
166532 
166533  These functions have been made public as part of the design, but they are suggested for internal use
166534  or by particularly knowledgable users for specialized tools or applications.
166535  */
166536  /* */
166537 
166538  // DQ (11/26/2005): Support for visitor pattern mechanims
166539  // (inferior to ROSE traversal mechanism, experimental).
166543 
166544  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
166546  virtual void accept (ROSE_VisitorPattern & visitor) override;
166547 
166548  // DQ (12/26/2005): Support for traversal based on the memory pool
166551  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
166552 
166555  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
166556 
166557  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
166558  // This traversal helps support internal tools that call static member functions.
166559  // note: this function operates on the memory pools.
166562  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
166563  /* */
166564 
166565 
166566  public:
166567  /* name Memory Allocation Functions
166568  \brief Memory allocations functions ... incomplete-documentation
166569 
166570  These functions have been made public as part of the design, but they are suggested for internal use
166571  or by particularly knowledgable users for specialized tools or applications.
166572  */
166573  /* */
166574 
166585  virtual bool isInMemoryPool() override;
166586 
166597  virtual void checkDataMemberPointersIfInMemoryPool() override;
166598 
166599  // DQ (4/30/2006): Modified to be a const function.
166614  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
166615 
166625  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
166626 
166638  virtual long getChildIndex( SgNode* childNode ) const override;
166639 
166640  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
166641  // comment here (changed to be a C style comment and not be a doxygen comment).
166642  /* \brief Constructor for use by AST File I/O Mechanism
166643 
166644  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
166645  which obtained via fast binary file I/O from disk.
166646  */
166647  // SgWarningDirectiveStatement( SgWarningDirectiveStatementStorageClass& source );
166648 
166649 
166650 
166651 
166652 
166653  // JH (10/24/2005): methods added to support the ast file IO
166654  private:
166655 
166656  /* name AST Memory Allocation Support Functions
166657  \brief Memory allocations support....
166658 
166659  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
166660  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
166661  and support the AST File I/O Mechanism.
166662  */
166663  /* */
166664 
166665  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
166666  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
166667  that I use the same type everywhere, if any changes are made. THe second one declares the type
166668  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
166669  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
166670  a correspinding one in the AST_FILE_IO class!
166671  */
166672  // DQ (9/2/2015): This typedef is no longer used, we can't define the
166673  // comment here (changed to be a C style comment and not be a doxygen comment).
166674  /* \brief Typedef used for low level memory access.
166675  */
166676  // typedef unsigned char* TestType;
166677 
166678  // DQ (9/2/2015): This typedef is no longer used, we can't define the
166679  // comment here (changed to be a C style comment and not be a doxygen comment).
166680  /* \brief Typedef used to hold memory addresses as values.
166681  */
166682  // typedef unsigned long AddressType;
166683 
166684 
166685 
166686  // necessary, to have direct access to the p_freepointer and the private methods !
166688  friend class AST_FILE_IO;
166689 
166691  friend class SgWarningDirectiveStatementStorageClass;
166692 
166694  friend class AstSpecificDataManagingClass;
166695 
166697  friend class AstSpecificDataManagingClassStorageClass;
166698 
166699  public:
166701  SgWarningDirectiveStatement( const SgWarningDirectiveStatementStorageClass& source );
166702 
166703  // private: // JJW hack
166704  /*
166705  name AST Memory Allocation Support Variables
166706  Memory allocations support variables
166707 
166708  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
166709  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
166710  and support the AST File I/O Mechanism.
166711  */
166712  /* */
166713 
166714  public:
166715 
166716  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
166717  // to current node (so that it will work cleanly with build functions to specify patterns).
166718  // virtual SgNode* addRegExpAttribute();
166725 
166726 // *** COMMON CODE SECTION ENDS HERE ***
166727 
166728 
166729 // End of memberFunctionString
166730 // Start of memberFunctionString
166731 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
166732 
166733  // the generated cast function
166734  // friend ROSE_DLL_API SgWarningDirectiveStatement* isSgWarningDirectiveStatement ( SgNode* s );
166735 
166737 
166738 
166739 // End of memberFunctionString
166740 // Start of memberFunctionString
166741 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
166742 
166743  void post_construction_initialization() override;
166744 
166745 
166746 // End of memberFunctionString
166747 
166748 
166749  public:
166750  virtual ~SgWarningDirectiveStatement();
166751 
166752 
166753  public:
166754  SgWarningDirectiveStatement(Sg_File_Info* startOfConstruct );
166756 
166757  protected:
166758 
166759 
166760 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
166761 
166762 
166763  };
166764 #endif
166765 
166766 // postdeclarations for SgWarningDirectiveStatement
166767 
166768 /* #line 166769 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
166769 
166770 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
166771 
166772 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
166773 
166774 
166775 /* #line 166776 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
166776 
166777 
166778 
166779 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
166780 
166781 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
166782 // This code is automatically generated for each
166783 // terminal and non-terminal within the defined
166784 // grammar. There is a simple way to change the
166785 // code to fix bugs etc. See the ROSE README file
166786 // for directions.
166787 
166788 // tps: (02/22/2010): Adding DLL export requirements
166789 #include "rosedll.h"
166790 
166791 // predeclarations for SgErrorDirectiveStatement
166792 
166793 /* #line 166794 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
166794 
166795 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
166796 
166797 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
166798 
166799 #if 1
166800 // Class Definition for SgErrorDirectiveStatement
166802  {
166803  public:
166804 
166805 
166806 /* #line 166807 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
166807 
166808  virtual SgNode* copy ( SgCopyHelp& help) const override;
166809 // Start of memberFunctionString
166810 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
166811 
166812 // *** COMMON CODE SECTION BEGINS HERE ***
166813 
166814  public:
166815 
166816  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
166817  // and not required which is required to match the other aspects of the copy mechanism code generation.
166818  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
166819  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
166820  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
166821  // virtual SgNode* copy ( const SgCopyHelp & help) const;
166822 
166824  virtual std::string class_name() const override;
166825 
166827  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
166828 
166830  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
166831  // static const VariantT static_variant = V_SgErrorDirectiveStatement;
166832  enum { static_variant = V_SgErrorDirectiveStatement };
166833 
166834  /* the generated cast function */
166836  ROSE_DLL_API friend SgErrorDirectiveStatement* isSgErrorDirectiveStatement( SgNode * s );
166837 
166839  ROSE_DLL_API friend const SgErrorDirectiveStatement* isSgErrorDirectiveStatement( const SgNode * s );
166840 
166841  // ******************************************
166842  // * Memory Pool / New / Delete
166843  // ******************************************
166844 
166845  public:
166847  static const unsigned pool_size; //
166849  static std::vector<unsigned char *> pools; //
166851  static SgErrorDirectiveStatement * next_node; //
166852 
166854  static unsigned long initializeStorageClassArray(SgErrorDirectiveStatementStorageClass *); //
166855 
166857  static void clearMemoryPool(); //
166858  static void deleteMemoryPool(); //
166859 
166861  static void extendMemoryPoolForFileIO(); //
166862 
166864  static SgErrorDirectiveStatement * getPointerFromGlobalIndex(unsigned long); //
166866  static SgErrorDirectiveStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
166867 
166869  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
166871  static void resetValidFreepointers(); //
166873  static unsigned long getNumberOfLastValidPointer(); //
166874 
166875 
166876 #if defined(INLINE_FUNCTIONS)
166877 
166878  inline void *operator new (size_t size);
166879 #else
166880 
166881  void *operator new (size_t size);
166882 #endif
166883 
166884  void operator delete (void* pointer, size_t size);
166885 
166886  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
166887  void operator delete (void* pointer)
166888  {
166889  // This is the generated delete operator...
166890  SgErrorDirectiveStatement::operator delete (pointer,sizeof(SgErrorDirectiveStatement));
166891  }
166892 
166894  static size_t numberOfNodes();
166895 
166897  static size_t memoryUsage();
166898 
166899  // End of scope which started in IR nodes specific code
166900  /* */
166901 
166902  /* name Internal Functions
166903  \brief Internal functions ... incomplete-documentation
166904 
166905  These functions have been made public as part of the design, but they are suggested for internal use
166906  or by particularly knowledgeable users for specialized tools or applications.
166907 
166908  \internal We could not make these private because they are required by user for special purposes. And
166909  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
166910 
166911  */
166912 
166913  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
166914  // overridden in every class by *generated* implementation
166916  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
166917  // MS: 06/28/02 container of names of variables or container indices
166918  // used used in the traversal to access AST successor nodes
166919  // overridden in every class by *generated* implementation
166922  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
166923 
166924  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
166925  // than all the vector copies. The implementation for these functions is generated for each class.
166927  virtual size_t get_numberOfTraversalSuccessors() override;
166929  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
166931  virtual size_t get_childIndex(SgNode *child) override;
166932 
166933 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
166934  // MS: 08/16/2002 method for generating RTI information
166936  virtual RTIReturnType roseRTI() override;
166937 #endif
166938  /* */
166939 
166940 
166941 
166942  /* name Deprecated Functions
166943  \brief Deprecated functions ... incomplete-documentation
166944 
166945  These functions have been deprecated from use.
166946  */
166947  /* */
166948 
166950  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
166951 
166952  // JJW (10/16/2008): Changed to a single function in Node.code, and put
166953  // getVariant() in #if 0 block to prevent confusing Doxygen
166954 #if 0
166955 
166956  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
166958  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
166959 #endif
166960  /* */
166961 
166962 
166963 
166964 
166965  public:
166966  /* name Traversal Support Functions
166967  \brief Traversal support functions ... incomplete-documentation
166968 
166969  These functions have been made public as part of the design, but they are suggested for internal use
166970  or by particularly knowledgable users for specialized tools or applications.
166971  */
166972  /* */
166973 
166974  // DQ (11/26/2005): Support for visitor pattern mechanims
166975  // (inferior to ROSE traversal mechanism, experimental).
166979 
166980  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
166982  virtual void accept (ROSE_VisitorPattern & visitor) override;
166983 
166984  // DQ (12/26/2005): Support for traversal based on the memory pool
166987  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
166988 
166991  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
166992 
166993  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
166994  // This traversal helps support internal tools that call static member functions.
166995  // note: this function operates on the memory pools.
166998  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
166999  /* */
167000 
167001 
167002  public:
167003  /* name Memory Allocation Functions
167004  \brief Memory allocations functions ... incomplete-documentation
167005 
167006  These functions have been made public as part of the design, but they are suggested for internal use
167007  or by particularly knowledgable users for specialized tools or applications.
167008  */
167009  /* */
167010 
167021  virtual bool isInMemoryPool() override;
167022 
167033  virtual void checkDataMemberPointersIfInMemoryPool() override;
167034 
167035  // DQ (4/30/2006): Modified to be a const function.
167050  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
167051 
167061  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
167062 
167074  virtual long getChildIndex( SgNode* childNode ) const override;
167075 
167076  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
167077  // comment here (changed to be a C style comment and not be a doxygen comment).
167078  /* \brief Constructor for use by AST File I/O Mechanism
167079 
167080  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
167081  which obtained via fast binary file I/O from disk.
167082  */
167083  // SgErrorDirectiveStatement( SgErrorDirectiveStatementStorageClass& source );
167084 
167085 
167086 
167087 
167088 
167089  // JH (10/24/2005): methods added to support the ast file IO
167090  private:
167091 
167092  /* name AST Memory Allocation Support Functions
167093  \brief Memory allocations support....
167094 
167095  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
167096  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
167097  and support the AST File I/O Mechanism.
167098  */
167099  /* */
167100 
167101  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
167102  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
167103  that I use the same type everywhere, if any changes are made. THe second one declares the type
167104  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
167105  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
167106  a correspinding one in the AST_FILE_IO class!
167107  */
167108  // DQ (9/2/2015): This typedef is no longer used, we can't define the
167109  // comment here (changed to be a C style comment and not be a doxygen comment).
167110  /* \brief Typedef used for low level memory access.
167111  */
167112  // typedef unsigned char* TestType;
167113 
167114  // DQ (9/2/2015): This typedef is no longer used, we can't define the
167115  // comment here (changed to be a C style comment and not be a doxygen comment).
167116  /* \brief Typedef used to hold memory addresses as values.
167117  */
167118  // typedef unsigned long AddressType;
167119 
167120 
167121 
167122  // necessary, to have direct access to the p_freepointer and the private methods !
167124  friend class AST_FILE_IO;
167125 
167127  friend class SgErrorDirectiveStatementStorageClass;
167128 
167130  friend class AstSpecificDataManagingClass;
167131 
167133  friend class AstSpecificDataManagingClassStorageClass;
167134 
167135  public:
167137  SgErrorDirectiveStatement( const SgErrorDirectiveStatementStorageClass& source );
167138 
167139  // private: // JJW hack
167140  /*
167141  name AST Memory Allocation Support Variables
167142  Memory allocations support variables
167143 
167144  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
167145  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
167146  and support the AST File I/O Mechanism.
167147  */
167148  /* */
167149 
167150  public:
167151 
167152  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
167153  // to current node (so that it will work cleanly with build functions to specify patterns).
167154  // virtual SgNode* addRegExpAttribute();
167161 
167162 // *** COMMON CODE SECTION ENDS HERE ***
167163 
167164 
167165 // End of memberFunctionString
167166 // Start of memberFunctionString
167167 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
167168 
167169  // the generated cast function
167170  // friend ROSE_DLL_API SgErrorDirectiveStatement* isSgErrorDirectiveStatement ( SgNode* s );
167171 
167173 
167174 
167175 // End of memberFunctionString
167176 // Start of memberFunctionString
167177 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
167178 
167179  void post_construction_initialization() override;
167180 
167181 
167182 // End of memberFunctionString
167183 
167184 
167185  public:
167186  virtual ~SgErrorDirectiveStatement();
167187 
167188 
167189  public:
167190  SgErrorDirectiveStatement(Sg_File_Info* startOfConstruct );
167192 
167193  protected:
167194 
167195 
167196 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
167197 
167198 
167199  };
167200 #endif
167201 
167202 // postdeclarations for SgErrorDirectiveStatement
167203 
167204 /* #line 167205 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
167205 
167206 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
167207 
167208 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
167209 
167210 
167211 /* #line 167212 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
167212 
167213 
167214 
167215 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
167216 
167217 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
167218 // This code is automatically generated for each
167219 // terminal and non-terminal within the defined
167220 // grammar. There is a simple way to change the
167221 // code to fix bugs etc. See the ROSE README file
167222 // for directions.
167223 
167224 // tps: (02/22/2010): Adding DLL export requirements
167225 #include "rosedll.h"
167226 
167227 // predeclarations for SgEmptyDirectiveStatement
167228 
167229 /* #line 167230 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
167230 
167231 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
167232 
167233 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
167234 
167235 #if 1
167236 // Class Definition for SgEmptyDirectiveStatement
167238  {
167239  public:
167240 
167241 
167242 /* #line 167243 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
167243 
167244  virtual SgNode* copy ( SgCopyHelp& help) const override;
167245 // Start of memberFunctionString
167246 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
167247 
167248 // *** COMMON CODE SECTION BEGINS HERE ***
167249 
167250  public:
167251 
167252  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
167253  // and not required which is required to match the other aspects of the copy mechanism code generation.
167254  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
167255  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
167256  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
167257  // virtual SgNode* copy ( const SgCopyHelp & help) const;
167258 
167260  virtual std::string class_name() const override;
167261 
167263  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
167264 
167266  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
167267  // static const VariantT static_variant = V_SgEmptyDirectiveStatement;
167268  enum { static_variant = V_SgEmptyDirectiveStatement };
167269 
167270  /* the generated cast function */
167272  ROSE_DLL_API friend SgEmptyDirectiveStatement* isSgEmptyDirectiveStatement( SgNode * s );
167273 
167275  ROSE_DLL_API friend const SgEmptyDirectiveStatement* isSgEmptyDirectiveStatement( const SgNode * s );
167276 
167277  // ******************************************
167278  // * Memory Pool / New / Delete
167279  // ******************************************
167280 
167281  public:
167283  static const unsigned pool_size; //
167285  static std::vector<unsigned char *> pools; //
167287  static SgEmptyDirectiveStatement * next_node; //
167288 
167290  static unsigned long initializeStorageClassArray(SgEmptyDirectiveStatementStorageClass *); //
167291 
167293  static void clearMemoryPool(); //
167294  static void deleteMemoryPool(); //
167295 
167297  static void extendMemoryPoolForFileIO(); //
167298 
167300  static SgEmptyDirectiveStatement * getPointerFromGlobalIndex(unsigned long); //
167302  static SgEmptyDirectiveStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
167303 
167305  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
167307  static void resetValidFreepointers(); //
167309  static unsigned long getNumberOfLastValidPointer(); //
167310 
167311 
167312 #if defined(INLINE_FUNCTIONS)
167313 
167314  inline void *operator new (size_t size);
167315 #else
167316 
167317  void *operator new (size_t size);
167318 #endif
167319 
167320  void operator delete (void* pointer, size_t size);
167321 
167322  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
167323  void operator delete (void* pointer)
167324  {
167325  // This is the generated delete operator...
167326  SgEmptyDirectiveStatement::operator delete (pointer,sizeof(SgEmptyDirectiveStatement));
167327  }
167328 
167330  static size_t numberOfNodes();
167331 
167333  static size_t memoryUsage();
167334 
167335  // End of scope which started in IR nodes specific code
167336  /* */
167337 
167338  /* name Internal Functions
167339  \brief Internal functions ... incomplete-documentation
167340 
167341  These functions have been made public as part of the design, but they are suggested for internal use
167342  or by particularly knowledgeable users for specialized tools or applications.
167343 
167344  \internal We could not make these private because they are required by user for special purposes. And
167345  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
167346 
167347  */
167348 
167349  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
167350  // overridden in every class by *generated* implementation
167352  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
167353  // MS: 06/28/02 container of names of variables or container indices
167354  // used used in the traversal to access AST successor nodes
167355  // overridden in every class by *generated* implementation
167358  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
167359 
167360  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
167361  // than all the vector copies. The implementation for these functions is generated for each class.
167363  virtual size_t get_numberOfTraversalSuccessors() override;
167365  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
167367  virtual size_t get_childIndex(SgNode *child) override;
167368 
167369 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
167370  // MS: 08/16/2002 method for generating RTI information
167372  virtual RTIReturnType roseRTI() override;
167373 #endif
167374  /* */
167375 
167376 
167377 
167378  /* name Deprecated Functions
167379  \brief Deprecated functions ... incomplete-documentation
167380 
167381  These functions have been deprecated from use.
167382  */
167383  /* */
167384 
167386  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
167387 
167388  // JJW (10/16/2008): Changed to a single function in Node.code, and put
167389  // getVariant() in #if 0 block to prevent confusing Doxygen
167390 #if 0
167391 
167392  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
167394  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
167395 #endif
167396  /* */
167397 
167398 
167399 
167400 
167401  public:
167402  /* name Traversal Support Functions
167403  \brief Traversal support functions ... incomplete-documentation
167404 
167405  These functions have been made public as part of the design, but they are suggested for internal use
167406  or by particularly knowledgable users for specialized tools or applications.
167407  */
167408  /* */
167409 
167410  // DQ (11/26/2005): Support for visitor pattern mechanims
167411  // (inferior to ROSE traversal mechanism, experimental).
167415 
167416  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
167418  virtual void accept (ROSE_VisitorPattern & visitor) override;
167419 
167420  // DQ (12/26/2005): Support for traversal based on the memory pool
167423  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
167424 
167427  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
167428 
167429  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
167430  // This traversal helps support internal tools that call static member functions.
167431  // note: this function operates on the memory pools.
167434  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
167435  /* */
167436 
167437 
167438  public:
167439  /* name Memory Allocation Functions
167440  \brief Memory allocations functions ... incomplete-documentation
167441 
167442  These functions have been made public as part of the design, but they are suggested for internal use
167443  or by particularly knowledgable users for specialized tools or applications.
167444  */
167445  /* */
167446 
167457  virtual bool isInMemoryPool() override;
167458 
167469  virtual void checkDataMemberPointersIfInMemoryPool() override;
167470 
167471  // DQ (4/30/2006): Modified to be a const function.
167486  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
167487 
167497  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
167498 
167510  virtual long getChildIndex( SgNode* childNode ) const override;
167511 
167512  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
167513  // comment here (changed to be a C style comment and not be a doxygen comment).
167514  /* \brief Constructor for use by AST File I/O Mechanism
167515 
167516  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
167517  which obtained via fast binary file I/O from disk.
167518  */
167519  // SgEmptyDirectiveStatement( SgEmptyDirectiveStatementStorageClass& source );
167520 
167521 
167522 
167523 
167524 
167525  // JH (10/24/2005): methods added to support the ast file IO
167526  private:
167527 
167528  /* name AST Memory Allocation Support Functions
167529  \brief Memory allocations support....
167530 
167531  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
167532  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
167533  and support the AST File I/O Mechanism.
167534  */
167535  /* */
167536 
167537  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
167538  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
167539  that I use the same type everywhere, if any changes are made. THe second one declares the type
167540  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
167541  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
167542  a correspinding one in the AST_FILE_IO class!
167543  */
167544  // DQ (9/2/2015): This typedef is no longer used, we can't define the
167545  // comment here (changed to be a C style comment and not be a doxygen comment).
167546  /* \brief Typedef used for low level memory access.
167547  */
167548  // typedef unsigned char* TestType;
167549 
167550  // DQ (9/2/2015): This typedef is no longer used, we can't define the
167551  // comment here (changed to be a C style comment and not be a doxygen comment).
167552  /* \brief Typedef used to hold memory addresses as values.
167553  */
167554  // typedef unsigned long AddressType;
167555 
167556 
167557 
167558  // necessary, to have direct access to the p_freepointer and the private methods !
167560  friend class AST_FILE_IO;
167561 
167563  friend class SgEmptyDirectiveStatementStorageClass;
167564 
167566  friend class AstSpecificDataManagingClass;
167567 
167569  friend class AstSpecificDataManagingClassStorageClass;
167570 
167571  public:
167573  SgEmptyDirectiveStatement( const SgEmptyDirectiveStatementStorageClass& source );
167574 
167575  // private: // JJW hack
167576  /*
167577  name AST Memory Allocation Support Variables
167578  Memory allocations support variables
167579 
167580  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
167581  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
167582  and support the AST File I/O Mechanism.
167583  */
167584  /* */
167585 
167586  public:
167587 
167588  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
167589  // to current node (so that it will work cleanly with build functions to specify patterns).
167590  // virtual SgNode* addRegExpAttribute();
167597 
167598 // *** COMMON CODE SECTION ENDS HERE ***
167599 
167600 
167601 // End of memberFunctionString
167602 // Start of memberFunctionString
167603 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
167604 
167605  // the generated cast function
167606  // friend ROSE_DLL_API SgEmptyDirectiveStatement* isSgEmptyDirectiveStatement ( SgNode* s );
167607 
167609 
167610 
167611 // End of memberFunctionString
167612 // Start of memberFunctionString
167613 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
167614 
167615  void post_construction_initialization() override;
167616 
167617 
167618 // End of memberFunctionString
167619 
167620 
167621  public:
167622  virtual ~SgEmptyDirectiveStatement();
167623 
167624 
167625  public:
167626  SgEmptyDirectiveStatement(Sg_File_Info* startOfConstruct );
167628 
167629  protected:
167630 
167631 
167632 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
167633 
167634 
167635  };
167636 #endif
167637 
167638 // postdeclarations for SgEmptyDirectiveStatement
167639 
167640 /* #line 167641 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
167641 
167642 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
167643 
167644 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
167645 
167646 
167647 /* #line 167648 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
167648 
167649 
167650 
167651 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
167652 
167653 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
167654 // This code is automatically generated for each
167655 // terminal and non-terminal within the defined
167656 // grammar. There is a simple way to change the
167657 // code to fix bugs etc. See the ROSE README file
167658 // for directions.
167659 
167660 // tps: (02/22/2010): Adding DLL export requirements
167661 #include "rosedll.h"
167662 
167663 // predeclarations for SgIncludeNextDirectiveStatement
167664 
167665 /* #line 167666 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
167666 
167667 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
167668 
167669 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
167670 
167671 #if 1
167672 // Class Definition for SgIncludeNextDirectiveStatement
167674  {
167675  public:
167676 
167677 
167678 /* #line 167679 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
167679 
167680  virtual SgNode* copy ( SgCopyHelp& help) const override;
167681 // Start of memberFunctionString
167682 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
167683 
167684 // *** COMMON CODE SECTION BEGINS HERE ***
167685 
167686  public:
167687 
167688  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
167689  // and not required which is required to match the other aspects of the copy mechanism code generation.
167690  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
167691  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
167692  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
167693  // virtual SgNode* copy ( const SgCopyHelp & help) const;
167694 
167696  virtual std::string class_name() const override;
167697 
167699  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
167700 
167702  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
167703  // static const VariantT static_variant = V_SgIncludeNextDirectiveStatement;
167704  enum { static_variant = V_SgIncludeNextDirectiveStatement };
167705 
167706  /* the generated cast function */
167708  ROSE_DLL_API friend SgIncludeNextDirectiveStatement* isSgIncludeNextDirectiveStatement( SgNode * s );
167709 
167711  ROSE_DLL_API friend const SgIncludeNextDirectiveStatement* isSgIncludeNextDirectiveStatement( const SgNode * s );
167712 
167713  // ******************************************
167714  // * Memory Pool / New / Delete
167715  // ******************************************
167716 
167717  public:
167719  static const unsigned pool_size; //
167721  static std::vector<unsigned char *> pools; //
167723  static SgIncludeNextDirectiveStatement * next_node; //
167724 
167726  static unsigned long initializeStorageClassArray(SgIncludeNextDirectiveStatementStorageClass *); //
167727 
167729  static void clearMemoryPool(); //
167730  static void deleteMemoryPool(); //
167731 
167733  static void extendMemoryPoolForFileIO(); //
167734 
167736  static SgIncludeNextDirectiveStatement * getPointerFromGlobalIndex(unsigned long); //
167738  static SgIncludeNextDirectiveStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
167739 
167741  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
167743  static void resetValidFreepointers(); //
167745  static unsigned long getNumberOfLastValidPointer(); //
167746 
167747 
167748 #if defined(INLINE_FUNCTIONS)
167749 
167750  inline void *operator new (size_t size);
167751 #else
167752 
167753  void *operator new (size_t size);
167754 #endif
167755 
167756  void operator delete (void* pointer, size_t size);
167757 
167758  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
167759  void operator delete (void* pointer)
167760  {
167761  // This is the generated delete operator...
167762  SgIncludeNextDirectiveStatement::operator delete (pointer,sizeof(SgIncludeNextDirectiveStatement));
167763  }
167764 
167766  static size_t numberOfNodes();
167767 
167769  static size_t memoryUsage();
167770 
167771  // End of scope which started in IR nodes specific code
167772  /* */
167773 
167774  /* name Internal Functions
167775  \brief Internal functions ... incomplete-documentation
167776 
167777  These functions have been made public as part of the design, but they are suggested for internal use
167778  or by particularly knowledgeable users for specialized tools or applications.
167779 
167780  \internal We could not make these private because they are required by user for special purposes. And
167781  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
167782 
167783  */
167784 
167785  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
167786  // overridden in every class by *generated* implementation
167788  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
167789  // MS: 06/28/02 container of names of variables or container indices
167790  // used used in the traversal to access AST successor nodes
167791  // overridden in every class by *generated* implementation
167794  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
167795 
167796  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
167797  // than all the vector copies. The implementation for these functions is generated for each class.
167799  virtual size_t get_numberOfTraversalSuccessors() override;
167801  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
167803  virtual size_t get_childIndex(SgNode *child) override;
167804 
167805 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
167806  // MS: 08/16/2002 method for generating RTI information
167808  virtual RTIReturnType roseRTI() override;
167809 #endif
167810  /* */
167811 
167812 
167813 
167814  /* name Deprecated Functions
167815  \brief Deprecated functions ... incomplete-documentation
167816 
167817  These functions have been deprecated from use.
167818  */
167819  /* */
167820 
167822  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
167823 
167824  // JJW (10/16/2008): Changed to a single function in Node.code, and put
167825  // getVariant() in #if 0 block to prevent confusing Doxygen
167826 #if 0
167827 
167828  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
167830  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
167831 #endif
167832  /* */
167833 
167834 
167835 
167836 
167837  public:
167838  /* name Traversal Support Functions
167839  \brief Traversal support functions ... incomplete-documentation
167840 
167841  These functions have been made public as part of the design, but they are suggested for internal use
167842  or by particularly knowledgable users for specialized tools or applications.
167843  */
167844  /* */
167845 
167846  // DQ (11/26/2005): Support for visitor pattern mechanims
167847  // (inferior to ROSE traversal mechanism, experimental).
167851 
167852  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
167854  virtual void accept (ROSE_VisitorPattern & visitor) override;
167855 
167856  // DQ (12/26/2005): Support for traversal based on the memory pool
167859  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
167860 
167863  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
167864 
167865  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
167866  // This traversal helps support internal tools that call static member functions.
167867  // note: this function operates on the memory pools.
167870  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
167871  /* */
167872 
167873 
167874  public:
167875  /* name Memory Allocation Functions
167876  \brief Memory allocations functions ... incomplete-documentation
167877 
167878  These functions have been made public as part of the design, but they are suggested for internal use
167879  or by particularly knowledgable users for specialized tools or applications.
167880  */
167881  /* */
167882 
167893  virtual bool isInMemoryPool() override;
167894 
167905  virtual void checkDataMemberPointersIfInMemoryPool() override;
167906 
167907  // DQ (4/30/2006): Modified to be a const function.
167922  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
167923 
167933  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
167934 
167946  virtual long getChildIndex( SgNode* childNode ) const override;
167947 
167948  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
167949  // comment here (changed to be a C style comment and not be a doxygen comment).
167950  /* \brief Constructor for use by AST File I/O Mechanism
167951 
167952  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
167953  which obtained via fast binary file I/O from disk.
167954  */
167955  // SgIncludeNextDirectiveStatement( SgIncludeNextDirectiveStatementStorageClass& source );
167956 
167957 
167958 
167959 
167960 
167961  // JH (10/24/2005): methods added to support the ast file IO
167962  private:
167963 
167964  /* name AST Memory Allocation Support Functions
167965  \brief Memory allocations support....
167966 
167967  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
167968  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
167969  and support the AST File I/O Mechanism.
167970  */
167971  /* */
167972 
167973  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
167974  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
167975  that I use the same type everywhere, if any changes are made. THe second one declares the type
167976  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
167977  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
167978  a correspinding one in the AST_FILE_IO class!
167979  */
167980  // DQ (9/2/2015): This typedef is no longer used, we can't define the
167981  // comment here (changed to be a C style comment and not be a doxygen comment).
167982  /* \brief Typedef used for low level memory access.
167983  */
167984  // typedef unsigned char* TestType;
167985 
167986  // DQ (9/2/2015): This typedef is no longer used, we can't define the
167987  // comment here (changed to be a C style comment and not be a doxygen comment).
167988  /* \brief Typedef used to hold memory addresses as values.
167989  */
167990  // typedef unsigned long AddressType;
167991 
167992 
167993 
167994  // necessary, to have direct access to the p_freepointer and the private methods !
167996  friend class AST_FILE_IO;
167997 
167999  friend class SgIncludeNextDirectiveStatementStorageClass;
168000 
168002  friend class AstSpecificDataManagingClass;
168003 
168005  friend class AstSpecificDataManagingClassStorageClass;
168006 
168007  public:
168009  SgIncludeNextDirectiveStatement( const SgIncludeNextDirectiveStatementStorageClass& source );
168010 
168011  // private: // JJW hack
168012  /*
168013  name AST Memory Allocation Support Variables
168014  Memory allocations support variables
168015 
168016  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
168017  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
168018  and support the AST File I/O Mechanism.
168019  */
168020  /* */
168021 
168022  public:
168023 
168024  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
168025  // to current node (so that it will work cleanly with build functions to specify patterns).
168026  // virtual SgNode* addRegExpAttribute();
168033 
168034 // *** COMMON CODE SECTION ENDS HERE ***
168035 
168036 
168037 // End of memberFunctionString
168038 // Start of memberFunctionString
168039 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
168040 
168041  // the generated cast function
168042  // friend ROSE_DLL_API SgIncludeNextDirectiveStatement* isSgIncludeNextDirectiveStatement ( SgNode* s );
168043 
168045 
168046 
168047 // End of memberFunctionString
168048 // Start of memberFunctionString
168049 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
168050 
168051  void post_construction_initialization() override;
168052 
168053 
168054 // End of memberFunctionString
168055 
168056 
168057  public:
168058  virtual ~SgIncludeNextDirectiveStatement();
168059 
168060 
168061  public:
168062  SgIncludeNextDirectiveStatement(Sg_File_Info* startOfConstruct );
168064 
168065  protected:
168066 
168067 
168068 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
168069 
168070 
168071  };
168072 #endif
168073 
168074 // postdeclarations for SgIncludeNextDirectiveStatement
168075 
168076 /* #line 168077 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
168077 
168078 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
168079 
168080 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
168081 
168082 
168083 /* #line 168084 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
168084 
168085 
168086 
168087 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
168088 
168089 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
168090 // This code is automatically generated for each
168091 // terminal and non-terminal within the defined
168092 // grammar. There is a simple way to change the
168093 // code to fix bugs etc. See the ROSE README file
168094 // for directions.
168095 
168096 // tps: (02/22/2010): Adding DLL export requirements
168097 #include "rosedll.h"
168098 
168099 // predeclarations for SgIdentDirectiveStatement
168100 
168101 /* #line 168102 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
168102 
168103 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
168104 
168105 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
168106 
168107 #if 1
168108 // Class Definition for SgIdentDirectiveStatement
168110  {
168111  public:
168112 
168113 
168114 /* #line 168115 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
168115 
168116  virtual SgNode* copy ( SgCopyHelp& help) const override;
168117 // Start of memberFunctionString
168118 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
168119 
168120 // *** COMMON CODE SECTION BEGINS HERE ***
168121 
168122  public:
168123 
168124  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
168125  // and not required which is required to match the other aspects of the copy mechanism code generation.
168126  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
168127  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
168128  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
168129  // virtual SgNode* copy ( const SgCopyHelp & help) const;
168130 
168132  virtual std::string class_name() const override;
168133 
168135  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
168136 
168138  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
168139  // static const VariantT static_variant = V_SgIdentDirectiveStatement;
168140  enum { static_variant = V_SgIdentDirectiveStatement };
168141 
168142  /* the generated cast function */
168144  ROSE_DLL_API friend SgIdentDirectiveStatement* isSgIdentDirectiveStatement( SgNode * s );
168145 
168147  ROSE_DLL_API friend const SgIdentDirectiveStatement* isSgIdentDirectiveStatement( const SgNode * s );
168148 
168149  // ******************************************
168150  // * Memory Pool / New / Delete
168151  // ******************************************
168152 
168153  public:
168155  static const unsigned pool_size; //
168157  static std::vector<unsigned char *> pools; //
168159  static SgIdentDirectiveStatement * next_node; //
168160 
168162  static unsigned long initializeStorageClassArray(SgIdentDirectiveStatementStorageClass *); //
168163 
168165  static void clearMemoryPool(); //
168166  static void deleteMemoryPool(); //
168167 
168169  static void extendMemoryPoolForFileIO(); //
168170 
168172  static SgIdentDirectiveStatement * getPointerFromGlobalIndex(unsigned long); //
168174  static SgIdentDirectiveStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
168175 
168177  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
168179  static void resetValidFreepointers(); //
168181  static unsigned long getNumberOfLastValidPointer(); //
168182 
168183 
168184 #if defined(INLINE_FUNCTIONS)
168185 
168186  inline void *operator new (size_t size);
168187 #else
168188 
168189  void *operator new (size_t size);
168190 #endif
168191 
168192  void operator delete (void* pointer, size_t size);
168193 
168194  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
168195  void operator delete (void* pointer)
168196  {
168197  // This is the generated delete operator...
168198  SgIdentDirectiveStatement::operator delete (pointer,sizeof(SgIdentDirectiveStatement));
168199  }
168200 
168202  static size_t numberOfNodes();
168203 
168205  static size_t memoryUsage();
168206 
168207  // End of scope which started in IR nodes specific code
168208  /* */
168209 
168210  /* name Internal Functions
168211  \brief Internal functions ... incomplete-documentation
168212 
168213  These functions have been made public as part of the design, but they are suggested for internal use
168214  or by particularly knowledgeable users for specialized tools or applications.
168215 
168216  \internal We could not make these private because they are required by user for special purposes. And
168217  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
168218 
168219  */
168220 
168221  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
168222  // overridden in every class by *generated* implementation
168224  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
168225  // MS: 06/28/02 container of names of variables or container indices
168226  // used used in the traversal to access AST successor nodes
168227  // overridden in every class by *generated* implementation
168230  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
168231 
168232  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
168233  // than all the vector copies. The implementation for these functions is generated for each class.
168235  virtual size_t get_numberOfTraversalSuccessors() override;
168237  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
168239  virtual size_t get_childIndex(SgNode *child) override;
168240 
168241 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
168242  // MS: 08/16/2002 method for generating RTI information
168244  virtual RTIReturnType roseRTI() override;
168245 #endif
168246  /* */
168247 
168248 
168249 
168250  /* name Deprecated Functions
168251  \brief Deprecated functions ... incomplete-documentation
168252 
168253  These functions have been deprecated from use.
168254  */
168255  /* */
168256 
168258  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
168259 
168260  // JJW (10/16/2008): Changed to a single function in Node.code, and put
168261  // getVariant() in #if 0 block to prevent confusing Doxygen
168262 #if 0
168263 
168264  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
168266  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
168267 #endif
168268  /* */
168269 
168270 
168271 
168272 
168273  public:
168274  /* name Traversal Support Functions
168275  \brief Traversal support functions ... incomplete-documentation
168276 
168277  These functions have been made public as part of the design, but they are suggested for internal use
168278  or by particularly knowledgable users for specialized tools or applications.
168279  */
168280  /* */
168281 
168282  // DQ (11/26/2005): Support for visitor pattern mechanims
168283  // (inferior to ROSE traversal mechanism, experimental).
168287 
168288  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
168290  virtual void accept (ROSE_VisitorPattern & visitor) override;
168291 
168292  // DQ (12/26/2005): Support for traversal based on the memory pool
168295  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
168296 
168299  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
168300 
168301  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
168302  // This traversal helps support internal tools that call static member functions.
168303  // note: this function operates on the memory pools.
168306  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
168307  /* */
168308 
168309 
168310  public:
168311  /* name Memory Allocation Functions
168312  \brief Memory allocations functions ... incomplete-documentation
168313 
168314  These functions have been made public as part of the design, but they are suggested for internal use
168315  or by particularly knowledgable users for specialized tools or applications.
168316  */
168317  /* */
168318 
168329  virtual bool isInMemoryPool() override;
168330 
168341  virtual void checkDataMemberPointersIfInMemoryPool() override;
168342 
168343  // DQ (4/30/2006): Modified to be a const function.
168358  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
168359 
168369  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
168370 
168382  virtual long getChildIndex( SgNode* childNode ) const override;
168383 
168384  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
168385  // comment here (changed to be a C style comment and not be a doxygen comment).
168386  /* \brief Constructor for use by AST File I/O Mechanism
168387 
168388  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
168389  which obtained via fast binary file I/O from disk.
168390  */
168391  // SgIdentDirectiveStatement( SgIdentDirectiveStatementStorageClass& source );
168392 
168393 
168394 
168395 
168396 
168397  // JH (10/24/2005): methods added to support the ast file IO
168398  private:
168399 
168400  /* name AST Memory Allocation Support Functions
168401  \brief Memory allocations support....
168402 
168403  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
168404  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
168405  and support the AST File I/O Mechanism.
168406  */
168407  /* */
168408 
168409  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
168410  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
168411  that I use the same type everywhere, if any changes are made. THe second one declares the type
168412  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
168413  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
168414  a correspinding one in the AST_FILE_IO class!
168415  */
168416  // DQ (9/2/2015): This typedef is no longer used, we can't define the
168417  // comment here (changed to be a C style comment and not be a doxygen comment).
168418  /* \brief Typedef used for low level memory access.
168419  */
168420  // typedef unsigned char* TestType;
168421 
168422  // DQ (9/2/2015): This typedef is no longer used, we can't define the
168423  // comment here (changed to be a C style comment and not be a doxygen comment).
168424  /* \brief Typedef used to hold memory addresses as values.
168425  */
168426  // typedef unsigned long AddressType;
168427 
168428 
168429 
168430  // necessary, to have direct access to the p_freepointer and the private methods !
168432  friend class AST_FILE_IO;
168433 
168435  friend class SgIdentDirectiveStatementStorageClass;
168436 
168438  friend class AstSpecificDataManagingClass;
168439 
168441  friend class AstSpecificDataManagingClassStorageClass;
168442 
168443  public:
168445  SgIdentDirectiveStatement( const SgIdentDirectiveStatementStorageClass& source );
168446 
168447  // private: // JJW hack
168448  /*
168449  name AST Memory Allocation Support Variables
168450  Memory allocations support variables
168451 
168452  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
168453  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
168454  and support the AST File I/O Mechanism.
168455  */
168456  /* */
168457 
168458  public:
168459 
168460  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
168461  // to current node (so that it will work cleanly with build functions to specify patterns).
168462  // virtual SgNode* addRegExpAttribute();
168469 
168470 // *** COMMON CODE SECTION ENDS HERE ***
168471 
168472 
168473 // End of memberFunctionString
168474 // Start of memberFunctionString
168475 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
168476 
168477  // the generated cast function
168478  // friend ROSE_DLL_API SgIdentDirectiveStatement* isSgIdentDirectiveStatement ( SgNode* s );
168479 
168481 
168482 
168483 // End of memberFunctionString
168484 // Start of memberFunctionString
168485 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
168486 
168487  void post_construction_initialization() override;
168488 
168489 
168490 // End of memberFunctionString
168491 
168492 
168493  public:
168494  virtual ~SgIdentDirectiveStatement();
168495 
168496 
168497  public:
168498  SgIdentDirectiveStatement(Sg_File_Info* startOfConstruct );
168500 
168501  protected:
168502 
168503 
168504 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
168505 
168506 
168507  };
168508 #endif
168509 
168510 // postdeclarations for SgIdentDirectiveStatement
168511 
168512 /* #line 168513 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
168513 
168514 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
168515 
168516 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
168517 
168518 
168519 /* #line 168520 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
168520 
168521 
168522 
168523 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
168524 
168525 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
168526 // This code is automatically generated for each
168527 // terminal and non-terminal within the defined
168528 // grammar. There is a simple way to change the
168529 // code to fix bugs etc. See the ROSE README file
168530 // for directions.
168531 
168532 // tps: (02/22/2010): Adding DLL export requirements
168533 #include "rosedll.h"
168534 
168535 // predeclarations for SgLinemarkerDirectiveStatement
168536 
168537 /* #line 168538 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
168538 
168539 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
168540 
168541 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
168542 
168543 #if 1
168544 // Class Definition for SgLinemarkerDirectiveStatement
168546  {
168547  public:
168548 
168549 
168550 /* #line 168551 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
168551 
168552  virtual SgNode* copy ( SgCopyHelp& help) const override;
168553 // Start of memberFunctionString
168554 /* #line 3915 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
168555 
168556 
168557 
168558 
168559 // End of memberFunctionString
168560 // Start of memberFunctionString
168561 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
168562 
168563 // *** COMMON CODE SECTION BEGINS HERE ***
168564 
168565  public:
168566 
168567  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
168568  // and not required which is required to match the other aspects of the copy mechanism code generation.
168569  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
168570  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
168571  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
168572  // virtual SgNode* copy ( const SgCopyHelp & help) const;
168573 
168575  virtual std::string class_name() const override;
168576 
168578  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
168579 
168581  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
168582  // static const VariantT static_variant = V_SgLinemarkerDirectiveStatement;
168583  enum { static_variant = V_SgLinemarkerDirectiveStatement };
168584 
168585  /* the generated cast function */
168587  ROSE_DLL_API friend SgLinemarkerDirectiveStatement* isSgLinemarkerDirectiveStatement( SgNode * s );
168588 
168590  ROSE_DLL_API friend const SgLinemarkerDirectiveStatement* isSgLinemarkerDirectiveStatement( const SgNode * s );
168591 
168592  // ******************************************
168593  // * Memory Pool / New / Delete
168594  // ******************************************
168595 
168596  public:
168598  static const unsigned pool_size; //
168600  static std::vector<unsigned char *> pools; //
168602  static SgLinemarkerDirectiveStatement * next_node; //
168603 
168605  static unsigned long initializeStorageClassArray(SgLinemarkerDirectiveStatementStorageClass *); //
168606 
168608  static void clearMemoryPool(); //
168609  static void deleteMemoryPool(); //
168610 
168612  static void extendMemoryPoolForFileIO(); //
168613 
168615  static SgLinemarkerDirectiveStatement * getPointerFromGlobalIndex(unsigned long); //
168617  static SgLinemarkerDirectiveStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
168618 
168620  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
168622  static void resetValidFreepointers(); //
168624  static unsigned long getNumberOfLastValidPointer(); //
168625 
168626 
168627 #if defined(INLINE_FUNCTIONS)
168628 
168629  inline void *operator new (size_t size);
168630 #else
168631 
168632  void *operator new (size_t size);
168633 #endif
168634 
168635  void operator delete (void* pointer, size_t size);
168636 
168637  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
168638  void operator delete (void* pointer)
168639  {
168640  // This is the generated delete operator...
168641  SgLinemarkerDirectiveStatement::operator delete (pointer,sizeof(SgLinemarkerDirectiveStatement));
168642  }
168643 
168645  static size_t numberOfNodes();
168646 
168648  static size_t memoryUsage();
168649 
168650  // End of scope which started in IR nodes specific code
168651  /* */
168652 
168653  /* name Internal Functions
168654  \brief Internal functions ... incomplete-documentation
168655 
168656  These functions have been made public as part of the design, but they are suggested for internal use
168657  or by particularly knowledgeable users for specialized tools or applications.
168658 
168659  \internal We could not make these private because they are required by user for special purposes. And
168660  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
168661 
168662  */
168663 
168664  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
168665  // overridden in every class by *generated* implementation
168667  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
168668  // MS: 06/28/02 container of names of variables or container indices
168669  // used used in the traversal to access AST successor nodes
168670  // overridden in every class by *generated* implementation
168673  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
168674 
168675  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
168676  // than all the vector copies. The implementation for these functions is generated for each class.
168678  virtual size_t get_numberOfTraversalSuccessors() override;
168680  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
168682  virtual size_t get_childIndex(SgNode *child) override;
168683 
168684 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
168685  // MS: 08/16/2002 method for generating RTI information
168687  virtual RTIReturnType roseRTI() override;
168688 #endif
168689  /* */
168690 
168691 
168692 
168693  /* name Deprecated Functions
168694  \brief Deprecated functions ... incomplete-documentation
168695 
168696  These functions have been deprecated from use.
168697  */
168698  /* */
168699 
168701  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
168702 
168703  // JJW (10/16/2008): Changed to a single function in Node.code, and put
168704  // getVariant() in #if 0 block to prevent confusing Doxygen
168705 #if 0
168706 
168707  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
168709  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
168710 #endif
168711  /* */
168712 
168713 
168714 
168715 
168716  public:
168717  /* name Traversal Support Functions
168718  \brief Traversal support functions ... incomplete-documentation
168719 
168720  These functions have been made public as part of the design, but they are suggested for internal use
168721  or by particularly knowledgable users for specialized tools or applications.
168722  */
168723  /* */
168724 
168725  // DQ (11/26/2005): Support for visitor pattern mechanims
168726  // (inferior to ROSE traversal mechanism, experimental).
168730 
168731  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
168733  virtual void accept (ROSE_VisitorPattern & visitor) override;
168734 
168735  // DQ (12/26/2005): Support for traversal based on the memory pool
168738  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
168739 
168742  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
168743 
168744  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
168745  // This traversal helps support internal tools that call static member functions.
168746  // note: this function operates on the memory pools.
168749  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
168750  /* */
168751 
168752 
168753  public:
168754  /* name Memory Allocation Functions
168755  \brief Memory allocations functions ... incomplete-documentation
168756 
168757  These functions have been made public as part of the design, but they are suggested for internal use
168758  or by particularly knowledgable users for specialized tools or applications.
168759  */
168760  /* */
168761 
168772  virtual bool isInMemoryPool() override;
168773 
168784  virtual void checkDataMemberPointersIfInMemoryPool() override;
168785 
168786  // DQ (4/30/2006): Modified to be a const function.
168801  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
168802 
168812  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
168813 
168825  virtual long getChildIndex( SgNode* childNode ) const override;
168826 
168827  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
168828  // comment here (changed to be a C style comment and not be a doxygen comment).
168829  /* \brief Constructor for use by AST File I/O Mechanism
168830 
168831  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
168832  which obtained via fast binary file I/O from disk.
168833  */
168834  // SgLinemarkerDirectiveStatement( SgLinemarkerDirectiveStatementStorageClass& source );
168835 
168836 
168837 
168838 
168839 
168840  // JH (10/24/2005): methods added to support the ast file IO
168841  private:
168842 
168843  /* name AST Memory Allocation Support Functions
168844  \brief Memory allocations support....
168845 
168846  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
168847  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
168848  and support the AST File I/O Mechanism.
168849  */
168850  /* */
168851 
168852  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
168853  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
168854  that I use the same type everywhere, if any changes are made. THe second one declares the type
168855  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
168856  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
168857  a correspinding one in the AST_FILE_IO class!
168858  */
168859  // DQ (9/2/2015): This typedef is no longer used, we can't define the
168860  // comment here (changed to be a C style comment and not be a doxygen comment).
168861  /* \brief Typedef used for low level memory access.
168862  */
168863  // typedef unsigned char* TestType;
168864 
168865  // DQ (9/2/2015): This typedef is no longer used, we can't define the
168866  // comment here (changed to be a C style comment and not be a doxygen comment).
168867  /* \brief Typedef used to hold memory addresses as values.
168868  */
168869  // typedef unsigned long AddressType;
168870 
168871 
168872 
168873  // necessary, to have direct access to the p_freepointer and the private methods !
168875  friend class AST_FILE_IO;
168876 
168878  friend class SgLinemarkerDirectiveStatementStorageClass;
168879 
168881  friend class AstSpecificDataManagingClass;
168882 
168884  friend class AstSpecificDataManagingClassStorageClass;
168885 
168886  public:
168888  SgLinemarkerDirectiveStatement( const SgLinemarkerDirectiveStatementStorageClass& source );
168889 
168890  // private: // JJW hack
168891  /*
168892  name AST Memory Allocation Support Variables
168893  Memory allocations support variables
168894 
168895  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
168896  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
168897  and support the AST File I/O Mechanism.
168898  */
168899  /* */
168900 
168901  public:
168902 
168903  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
168904  // to current node (so that it will work cleanly with build functions to specify patterns).
168905  // virtual SgNode* addRegExpAttribute();
168912 
168913 // *** COMMON CODE SECTION ENDS HERE ***
168914 
168915 
168916 // End of memberFunctionString
168917 // Start of memberFunctionString
168918 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
168919 
168920  // the generated cast function
168921  // friend ROSE_DLL_API SgLinemarkerDirectiveStatement* isSgLinemarkerDirectiveStatement ( SgNode* s );
168922 
168924 
168925 
168926 // End of memberFunctionString
168927 // Start of memberFunctionString
168928 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
168929 
168930  void post_construction_initialization() override;
168931 
168932 
168933 // End of memberFunctionString
168934 
168935  public:
168936  int get_linenumber() const;
168937  void set_linenumber(int linenumber);
168938 
168939  public:
168940  std::string get_filename() const;
168941  void set_filename(std::string filename);
168942 
168943  public:
168944  const SgUnsignedCharList& get_flaglist() const;
168945  SgUnsignedCharList& get_flaglist();
168946 
168947 
168948  public:
168949  virtual ~SgLinemarkerDirectiveStatement();
168950 
168951 
168952  public:
168953  SgLinemarkerDirectiveStatement(Sg_File_Info* startOfConstruct );
168955 
168956  protected:
168957 // Start of memberFunctionString
168958 int p_linenumber;
168959 
168960 // End of memberFunctionString
168961 // Start of memberFunctionString
168962 std::string p_filename;
168963 
168964 // End of memberFunctionString
168965 // Start of memberFunctionString
168966 SgUnsignedCharList p_flaglist;
168967 
168968 // End of memberFunctionString
168969 
168970 
168971 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
168972 
168973 
168974  };
168975 #endif
168976 
168977 // postdeclarations for SgLinemarkerDirectiveStatement
168978 
168979 /* #line 168980 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
168980 
168981 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
168982 
168983 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
168984 
168985 
168986 /* #line 168987 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
168987 
168988 
168989 
168990 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
168991 
168992 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
168993 // This code is automatically generated for each
168994 // terminal and non-terminal within the defined
168995 // grammar. There is a simple way to change the
168996 // code to fix bugs etc. See the ROSE README file
168997 // for directions.
168998 
168999 // tps: (02/22/2010): Adding DLL export requirements
169000 #include "rosedll.h"
169001 
169002 // predeclarations for SgOmpThreadprivateStatement
169003 
169004 /* #line 169005 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
169005 
169006 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
169007 
169008 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
169009 
169010 #if 1
169011 // Class Definition for SgOmpThreadprivateStatement
169013  {
169014  public:
169015 
169016 
169017 /* #line 169018 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
169018 
169019  virtual SgNode* copy ( SgCopyHelp& help) const override;
169020 // Start of memberFunctionString
169021 /* #line 19169 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
169022 
169024  virtual SgName get_mangled_name(void) const override;
169025 
169026 
169027 // End of memberFunctionString
169028 // Start of memberFunctionString
169029 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
169030 
169031 // *** COMMON CODE SECTION BEGINS HERE ***
169032 
169033  public:
169034 
169035  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
169036  // and not required which is required to match the other aspects of the copy mechanism code generation.
169037  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
169038  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
169039  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
169040  // virtual SgNode* copy ( const SgCopyHelp & help) const;
169041 
169043  virtual std::string class_name() const override;
169044 
169046  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
169047 
169049  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
169050  // static const VariantT static_variant = V_SgOmpThreadprivateStatement;
169051  enum { static_variant = V_SgOmpThreadprivateStatement };
169052 
169053  /* the generated cast function */
169055  ROSE_DLL_API friend SgOmpThreadprivateStatement* isSgOmpThreadprivateStatement( SgNode * s );
169056 
169058  ROSE_DLL_API friend const SgOmpThreadprivateStatement* isSgOmpThreadprivateStatement( const SgNode * s );
169059 
169060  // ******************************************
169061  // * Memory Pool / New / Delete
169062  // ******************************************
169063 
169064  public:
169066  static const unsigned pool_size; //
169068  static std::vector<unsigned char *> pools; //
169070  static SgOmpThreadprivateStatement * next_node; //
169071 
169073  static unsigned long initializeStorageClassArray(SgOmpThreadprivateStatementStorageClass *); //
169074 
169076  static void clearMemoryPool(); //
169077  static void deleteMemoryPool(); //
169078 
169080  static void extendMemoryPoolForFileIO(); //
169081 
169083  static SgOmpThreadprivateStatement * getPointerFromGlobalIndex(unsigned long); //
169085  static SgOmpThreadprivateStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
169086 
169088  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
169090  static void resetValidFreepointers(); //
169092  static unsigned long getNumberOfLastValidPointer(); //
169093 
169094 
169095 #if defined(INLINE_FUNCTIONS)
169096 
169097  inline void *operator new (size_t size);
169098 #else
169099 
169100  void *operator new (size_t size);
169101 #endif
169102 
169103  void operator delete (void* pointer, size_t size);
169104 
169105  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
169106  void operator delete (void* pointer)
169107  {
169108  // This is the generated delete operator...
169109  SgOmpThreadprivateStatement::operator delete (pointer,sizeof(SgOmpThreadprivateStatement));
169110  }
169111 
169113  static size_t numberOfNodes();
169114 
169116  static size_t memoryUsage();
169117 
169118  // End of scope which started in IR nodes specific code
169119  /* */
169120 
169121  /* name Internal Functions
169122  \brief Internal functions ... incomplete-documentation
169123 
169124  These functions have been made public as part of the design, but they are suggested for internal use
169125  or by particularly knowledgeable users for specialized tools or applications.
169126 
169127  \internal We could not make these private because they are required by user for special purposes. And
169128  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
169129 
169130  */
169131 
169132  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
169133  // overridden in every class by *generated* implementation
169135  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
169136  // MS: 06/28/02 container of names of variables or container indices
169137  // used used in the traversal to access AST successor nodes
169138  // overridden in every class by *generated* implementation
169141  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
169142 
169143  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
169144  // than all the vector copies. The implementation for these functions is generated for each class.
169146  virtual size_t get_numberOfTraversalSuccessors() override;
169148  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
169150  virtual size_t get_childIndex(SgNode *child) override;
169151 
169152 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
169153  // MS: 08/16/2002 method for generating RTI information
169155  virtual RTIReturnType roseRTI() override;
169156 #endif
169157  /* */
169158 
169159 
169160 
169161  /* name Deprecated Functions
169162  \brief Deprecated functions ... incomplete-documentation
169163 
169164  These functions have been deprecated from use.
169165  */
169166  /* */
169167 
169169  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
169170 
169171  // JJW (10/16/2008): Changed to a single function in Node.code, and put
169172  // getVariant() in #if 0 block to prevent confusing Doxygen
169173 #if 0
169174 
169175  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
169177  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
169178 #endif
169179  /* */
169180 
169181 
169182 
169183 
169184  public:
169185  /* name Traversal Support Functions
169186  \brief Traversal support functions ... incomplete-documentation
169187 
169188  These functions have been made public as part of the design, but they are suggested for internal use
169189  or by particularly knowledgable users for specialized tools or applications.
169190  */
169191  /* */
169192 
169193  // DQ (11/26/2005): Support for visitor pattern mechanims
169194  // (inferior to ROSE traversal mechanism, experimental).
169198 
169199  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
169201  virtual void accept (ROSE_VisitorPattern & visitor) override;
169202 
169203  // DQ (12/26/2005): Support for traversal based on the memory pool
169206  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
169207 
169210  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
169211 
169212  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
169213  // This traversal helps support internal tools that call static member functions.
169214  // note: this function operates on the memory pools.
169217  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
169218  /* */
169219 
169220 
169221  public:
169222  /* name Memory Allocation Functions
169223  \brief Memory allocations functions ... incomplete-documentation
169224 
169225  These functions have been made public as part of the design, but they are suggested for internal use
169226  or by particularly knowledgable users for specialized tools or applications.
169227  */
169228  /* */
169229 
169240  virtual bool isInMemoryPool() override;
169241 
169252  virtual void checkDataMemberPointersIfInMemoryPool() override;
169253 
169254  // DQ (4/30/2006): Modified to be a const function.
169269  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
169270 
169280  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
169281 
169293  virtual long getChildIndex( SgNode* childNode ) const override;
169294 
169295  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
169296  // comment here (changed to be a C style comment and not be a doxygen comment).
169297  /* \brief Constructor for use by AST File I/O Mechanism
169298 
169299  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
169300  which obtained via fast binary file I/O from disk.
169301  */
169302  // SgOmpThreadprivateStatement( SgOmpThreadprivateStatementStorageClass& source );
169303 
169304 
169305 
169306 
169307 
169308  // JH (10/24/2005): methods added to support the ast file IO
169309  private:
169310 
169311  /* name AST Memory Allocation Support Functions
169312  \brief Memory allocations support....
169313 
169314  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
169315  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
169316  and support the AST File I/O Mechanism.
169317  */
169318  /* */
169319 
169320  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
169321  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
169322  that I use the same type everywhere, if any changes are made. THe second one declares the type
169323  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
169324  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
169325  a correspinding one in the AST_FILE_IO class!
169326  */
169327  // DQ (9/2/2015): This typedef is no longer used, we can't define the
169328  // comment here (changed to be a C style comment and not be a doxygen comment).
169329  /* \brief Typedef used for low level memory access.
169330  */
169331  // typedef unsigned char* TestType;
169332 
169333  // DQ (9/2/2015): This typedef is no longer used, we can't define the
169334  // comment here (changed to be a C style comment and not be a doxygen comment).
169335  /* \brief Typedef used to hold memory addresses as values.
169336  */
169337  // typedef unsigned long AddressType;
169338 
169339 
169340 
169341  // necessary, to have direct access to the p_freepointer and the private methods !
169343  friend class AST_FILE_IO;
169344 
169346  friend class SgOmpThreadprivateStatementStorageClass;
169347 
169349  friend class AstSpecificDataManagingClass;
169350 
169352  friend class AstSpecificDataManagingClassStorageClass;
169353 
169354  public:
169356  SgOmpThreadprivateStatement( const SgOmpThreadprivateStatementStorageClass& source );
169357 
169358  // private: // JJW hack
169359  /*
169360  name AST Memory Allocation Support Variables
169361  Memory allocations support variables
169362 
169363  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
169364  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
169365  and support the AST File I/O Mechanism.
169366  */
169367  /* */
169368 
169369  public:
169370 
169371  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
169372  // to current node (so that it will work cleanly with build functions to specify patterns).
169373  // virtual SgNode* addRegExpAttribute();
169380 
169381 // *** COMMON CODE SECTION ENDS HERE ***
169382 
169383 
169384 // End of memberFunctionString
169385 // Start of memberFunctionString
169386 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
169387 
169388  // the generated cast function
169389  // friend ROSE_DLL_API SgOmpThreadprivateStatement* isSgOmpThreadprivateStatement ( SgNode* s );
169390 
169392 
169393 
169394 // End of memberFunctionString
169395 // Start of memberFunctionString
169396 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
169397 
169398  void post_construction_initialization() override;
169399 
169400 
169401 // End of memberFunctionString
169402 
169403  public:
169404  const SgVarRefExpPtrList& get_variables() const;
169405  SgVarRefExpPtrList& get_variables();
169406 
169407 
169408  public:
169409  virtual ~SgOmpThreadprivateStatement();
169410 
169411 
169412  public:
169413  SgOmpThreadprivateStatement(Sg_File_Info* startOfConstruct );
169415 
169416  protected:
169417 // Start of memberFunctionString
169418 SgVarRefExpPtrList p_variables;
169419 
169420 // End of memberFunctionString
169421 
169422 
169423 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
169424 
169425 
169426  };
169427 #endif
169428 
169429 // postdeclarations for SgOmpThreadprivateStatement
169430 
169431 /* #line 169432 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
169432 
169433 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
169434 
169435 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
169436 
169437 
169438 /* #line 169439 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
169439 
169440 
169441 
169442 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
169443 
169444 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
169445 // This code is automatically generated for each
169446 // terminal and non-terminal within the defined
169447 // grammar. There is a simple way to change the
169448 // code to fix bugs etc. See the ROSE README file
169449 // for directions.
169450 
169451 // tps: (02/22/2010): Adding DLL export requirements
169452 #include "rosedll.h"
169453 
169454 // predeclarations for SgOmpRequiresStatement
169455 
169456 /* #line 169457 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
169457 
169458 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
169459 
169460 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
169461 
169462 #if 1
169463 // Class Definition for SgOmpRequiresStatement
169465  {
169466  public:
169467 
169468 
169469 /* #line 169470 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
169470 
169471  virtual SgNode* copy ( SgCopyHelp& help) const override;
169472 // Start of memberFunctionString
169473 /* #line 19252 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
169474 
169476  virtual SgName get_mangled_name(void) const override;
169477 
169478 
169479 // End of memberFunctionString
169480 // Start of memberFunctionString
169481 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
169482 
169483 // *** COMMON CODE SECTION BEGINS HERE ***
169484 
169485  public:
169486 
169487  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
169488  // and not required which is required to match the other aspects of the copy mechanism code generation.
169489  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
169490  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
169491  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
169492  // virtual SgNode* copy ( const SgCopyHelp & help) const;
169493 
169495  virtual std::string class_name() const override;
169496 
169498  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
169499 
169501  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
169502  // static const VariantT static_variant = V_SgOmpRequiresStatement;
169503  enum { static_variant = V_SgOmpRequiresStatement };
169504 
169505  /* the generated cast function */
169507  ROSE_DLL_API friend SgOmpRequiresStatement* isSgOmpRequiresStatement( SgNode * s );
169508 
169510  ROSE_DLL_API friend const SgOmpRequiresStatement* isSgOmpRequiresStatement( const SgNode * s );
169511 
169512  // ******************************************
169513  // * Memory Pool / New / Delete
169514  // ******************************************
169515 
169516  public:
169518  static const unsigned pool_size; //
169520  static std::vector<unsigned char *> pools; //
169522  static SgOmpRequiresStatement * next_node; //
169523 
169525  static unsigned long initializeStorageClassArray(SgOmpRequiresStatementStorageClass *); //
169526 
169528  static void clearMemoryPool(); //
169529  static void deleteMemoryPool(); //
169530 
169532  static void extendMemoryPoolForFileIO(); //
169533 
169535  static SgOmpRequiresStatement * getPointerFromGlobalIndex(unsigned long); //
169537  static SgOmpRequiresStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
169538 
169540  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
169542  static void resetValidFreepointers(); //
169544  static unsigned long getNumberOfLastValidPointer(); //
169545 
169546 
169547 #if defined(INLINE_FUNCTIONS)
169548 
169549  inline void *operator new (size_t size);
169550 #else
169551 
169552  void *operator new (size_t size);
169553 #endif
169554 
169555  void operator delete (void* pointer, size_t size);
169556 
169557  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
169558  void operator delete (void* pointer)
169559  {
169560  // This is the generated delete operator...
169561  SgOmpRequiresStatement::operator delete (pointer,sizeof(SgOmpRequiresStatement));
169562  }
169563 
169565  static size_t numberOfNodes();
169566 
169568  static size_t memoryUsage();
169569 
169570  // End of scope which started in IR nodes specific code
169571  /* */
169572 
169573  /* name Internal Functions
169574  \brief Internal functions ... incomplete-documentation
169575 
169576  These functions have been made public as part of the design, but they are suggested for internal use
169577  or by particularly knowledgeable users for specialized tools or applications.
169578 
169579  \internal We could not make these private because they are required by user for special purposes. And
169580  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
169581 
169582  */
169583 
169584  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
169585  // overridden in every class by *generated* implementation
169587  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
169588  // MS: 06/28/02 container of names of variables or container indices
169589  // used used in the traversal to access AST successor nodes
169590  // overridden in every class by *generated* implementation
169593  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
169594 
169595  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
169596  // than all the vector copies. The implementation for these functions is generated for each class.
169598  virtual size_t get_numberOfTraversalSuccessors() override;
169600  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
169602  virtual size_t get_childIndex(SgNode *child) override;
169603 
169604 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
169605  // MS: 08/16/2002 method for generating RTI information
169607  virtual RTIReturnType roseRTI() override;
169608 #endif
169609  /* */
169610 
169611 
169612 
169613  /* name Deprecated Functions
169614  \brief Deprecated functions ... incomplete-documentation
169615 
169616  These functions have been deprecated from use.
169617  */
169618  /* */
169619 
169621  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
169622 
169623  // JJW (10/16/2008): Changed to a single function in Node.code, and put
169624  // getVariant() in #if 0 block to prevent confusing Doxygen
169625 #if 0
169626 
169627  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
169629  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
169630 #endif
169631  /* */
169632 
169633 
169634 
169635 
169636  public:
169637  /* name Traversal Support Functions
169638  \brief Traversal support functions ... incomplete-documentation
169639 
169640  These functions have been made public as part of the design, but they are suggested for internal use
169641  or by particularly knowledgable users for specialized tools or applications.
169642  */
169643  /* */
169644 
169645  // DQ (11/26/2005): Support for visitor pattern mechanims
169646  // (inferior to ROSE traversal mechanism, experimental).
169650 
169651  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
169653  virtual void accept (ROSE_VisitorPattern & visitor) override;
169654 
169655  // DQ (12/26/2005): Support for traversal based on the memory pool
169658  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
169659 
169662  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
169663 
169664  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
169665  // This traversal helps support internal tools that call static member functions.
169666  // note: this function operates on the memory pools.
169669  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
169670  /* */
169671 
169672 
169673  public:
169674  /* name Memory Allocation Functions
169675  \brief Memory allocations functions ... incomplete-documentation
169676 
169677  These functions have been made public as part of the design, but they are suggested for internal use
169678  or by particularly knowledgable users for specialized tools or applications.
169679  */
169680  /* */
169681 
169692  virtual bool isInMemoryPool() override;
169693 
169704  virtual void checkDataMemberPointersIfInMemoryPool() override;
169705 
169706  // DQ (4/30/2006): Modified to be a const function.
169721  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
169722 
169732  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
169733 
169745  virtual long getChildIndex( SgNode* childNode ) const override;
169746 
169747  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
169748  // comment here (changed to be a C style comment and not be a doxygen comment).
169749  /* \brief Constructor for use by AST File I/O Mechanism
169750 
169751  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
169752  which obtained via fast binary file I/O from disk.
169753  */
169754  // SgOmpRequiresStatement( SgOmpRequiresStatementStorageClass& source );
169755 
169756 
169757 
169758 
169759 
169760  // JH (10/24/2005): methods added to support the ast file IO
169761  private:
169762 
169763  /* name AST Memory Allocation Support Functions
169764  \brief Memory allocations support....
169765 
169766  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
169767  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
169768  and support the AST File I/O Mechanism.
169769  */
169770  /* */
169771 
169772  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
169773  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
169774  that I use the same type everywhere, if any changes are made. THe second one declares the type
169775  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
169776  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
169777  a correspinding one in the AST_FILE_IO class!
169778  */
169779  // DQ (9/2/2015): This typedef is no longer used, we can't define the
169780  // comment here (changed to be a C style comment and not be a doxygen comment).
169781  /* \brief Typedef used for low level memory access.
169782  */
169783  // typedef unsigned char* TestType;
169784 
169785  // DQ (9/2/2015): This typedef is no longer used, we can't define the
169786  // comment here (changed to be a C style comment and not be a doxygen comment).
169787  /* \brief Typedef used to hold memory addresses as values.
169788  */
169789  // typedef unsigned long AddressType;
169790 
169791 
169792 
169793  // necessary, to have direct access to the p_freepointer and the private methods !
169795  friend class AST_FILE_IO;
169796 
169798  friend class SgOmpRequiresStatementStorageClass;
169799 
169801  friend class AstSpecificDataManagingClass;
169802 
169804  friend class AstSpecificDataManagingClassStorageClass;
169805 
169806  public:
169808  SgOmpRequiresStatement( const SgOmpRequiresStatementStorageClass& source );
169809 
169810  // private: // JJW hack
169811  /*
169812  name AST Memory Allocation Support Variables
169813  Memory allocations support variables
169814 
169815  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
169816  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
169817  and support the AST File I/O Mechanism.
169818  */
169819  /* */
169820 
169821  public:
169822 
169823  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
169824  // to current node (so that it will work cleanly with build functions to specify patterns).
169825  // virtual SgNode* addRegExpAttribute();
169832 
169833 // *** COMMON CODE SECTION ENDS HERE ***
169834 
169835 
169836 // End of memberFunctionString
169837 // Start of memberFunctionString
169838 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
169839 
169840  // the generated cast function
169841  // friend ROSE_DLL_API SgOmpRequiresStatement* isSgOmpRequiresStatement ( SgNode* s );
169842 
169844 
169845 
169846 // End of memberFunctionString
169847 // Start of memberFunctionString
169848 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
169849 
169850  void post_construction_initialization() override;
169851 
169852 
169853 // End of memberFunctionString
169854 
169855  public:
169856  const SgOmpClausePtrList& get_clauses() const;
169857  SgOmpClausePtrList& get_clauses();
169858 
169859 
169860  public:
169861  virtual ~SgOmpRequiresStatement();
169862 
169863 
169864  public:
169865  SgOmpRequiresStatement(Sg_File_Info* startOfConstruct );
169867 
169868  protected:
169869 // Start of memberFunctionString
169870 SgOmpClausePtrList p_clauses;
169871 
169872 // End of memberFunctionString
169873 
169874 
169875 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
169876 
169877 
169878  };
169879 #endif
169880 
169881 // postdeclarations for SgOmpRequiresStatement
169882 
169883 /* #line 169884 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
169884 
169885 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
169886 
169887 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
169888 
169889 
169890 /* #line 169891 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
169891 
169892 
169893 
169894 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
169895 
169896 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
169897 // This code is automatically generated for each
169898 // terminal and non-terminal within the defined
169899 // grammar. There is a simple way to change the
169900 // code to fix bugs etc. See the ROSE README file
169901 // for directions.
169902 
169903 // tps: (02/22/2010): Adding DLL export requirements
169904 #include "rosedll.h"
169905 
169906 // predeclarations for SgFortranIncludeLine
169907 
169908 /* #line 169909 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
169909 
169910 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
169911 
169912 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
169913 
169914 #if 1
169915 // Class Definition for SgFortranIncludeLine
169917  {
169918  public:
169919 
169920 
169921 /* #line 169922 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
169922 
169923  virtual SgNode* copy ( SgCopyHelp& help) const override;
169924 // Start of memberFunctionString
169925 /* #line 3847 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
169926 
169927  // Not sure if we need these...
169928  // virtual unsigned int cfgIndexForEnd() const override;
169929  // virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
169930  // virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
169931 
169932  virtual SgName get_mangled_name() const override;
169933 
169934 
169935 // End of memberFunctionString
169936 // Start of memberFunctionString
169937 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
169938 
169939 // *** COMMON CODE SECTION BEGINS HERE ***
169940 
169941  public:
169942 
169943  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
169944  // and not required which is required to match the other aspects of the copy mechanism code generation.
169945  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
169946  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
169947  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
169948  // virtual SgNode* copy ( const SgCopyHelp & help) const;
169949 
169951  virtual std::string class_name() const override;
169952 
169954  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
169955 
169957  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
169958  // static const VariantT static_variant = V_SgFortranIncludeLine;
169959  enum { static_variant = V_SgFortranIncludeLine };
169960 
169961  /* the generated cast function */
169963  ROSE_DLL_API friend SgFortranIncludeLine* isSgFortranIncludeLine( SgNode * s );
169964 
169966  ROSE_DLL_API friend const SgFortranIncludeLine* isSgFortranIncludeLine( const SgNode * s );
169967 
169968  // ******************************************
169969  // * Memory Pool / New / Delete
169970  // ******************************************
169971 
169972  public:
169974  static const unsigned pool_size; //
169976  static std::vector<unsigned char *> pools; //
169978  static SgFortranIncludeLine * next_node; //
169979 
169981  static unsigned long initializeStorageClassArray(SgFortranIncludeLineStorageClass *); //
169982 
169984  static void clearMemoryPool(); //
169985  static void deleteMemoryPool(); //
169986 
169988  static void extendMemoryPoolForFileIO(); //
169989 
169991  static SgFortranIncludeLine * getPointerFromGlobalIndex(unsigned long); //
169993  static SgFortranIncludeLine * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
169994 
169996  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
169998  static void resetValidFreepointers(); //
170000  static unsigned long getNumberOfLastValidPointer(); //
170001 
170002 
170003 #if defined(INLINE_FUNCTIONS)
170004 
170005  inline void *operator new (size_t size);
170006 #else
170007 
170008  void *operator new (size_t size);
170009 #endif
170010 
170011  void operator delete (void* pointer, size_t size);
170012 
170013  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
170014  void operator delete (void* pointer)
170015  {
170016  // This is the generated delete operator...
170017  SgFortranIncludeLine::operator delete (pointer,sizeof(SgFortranIncludeLine));
170018  }
170019 
170021  static size_t numberOfNodes();
170022 
170024  static size_t memoryUsage();
170025 
170026  // End of scope which started in IR nodes specific code
170027  /* */
170028 
170029  /* name Internal Functions
170030  \brief Internal functions ... incomplete-documentation
170031 
170032  These functions have been made public as part of the design, but they are suggested for internal use
170033  or by particularly knowledgeable users for specialized tools or applications.
170034 
170035  \internal We could not make these private because they are required by user for special purposes. And
170036  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
170037 
170038  */
170039 
170040  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
170041  // overridden in every class by *generated* implementation
170043  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
170044  // MS: 06/28/02 container of names of variables or container indices
170045  // used used in the traversal to access AST successor nodes
170046  // overridden in every class by *generated* implementation
170049  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
170050 
170051  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
170052  // than all the vector copies. The implementation for these functions is generated for each class.
170054  virtual size_t get_numberOfTraversalSuccessors() override;
170056  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
170058  virtual size_t get_childIndex(SgNode *child) override;
170059 
170060 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
170061  // MS: 08/16/2002 method for generating RTI information
170063  virtual RTIReturnType roseRTI() override;
170064 #endif
170065  /* */
170066 
170067 
170068 
170069  /* name Deprecated Functions
170070  \brief Deprecated functions ... incomplete-documentation
170071 
170072  These functions have been deprecated from use.
170073  */
170074  /* */
170075 
170077  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
170078 
170079  // JJW (10/16/2008): Changed to a single function in Node.code, and put
170080  // getVariant() in #if 0 block to prevent confusing Doxygen
170081 #if 0
170082 
170083  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
170085  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
170086 #endif
170087  /* */
170088 
170089 
170090 
170091 
170092  public:
170093  /* name Traversal Support Functions
170094  \brief Traversal support functions ... incomplete-documentation
170095 
170096  These functions have been made public as part of the design, but they are suggested for internal use
170097  or by particularly knowledgable users for specialized tools or applications.
170098  */
170099  /* */
170100 
170101  // DQ (11/26/2005): Support for visitor pattern mechanims
170102  // (inferior to ROSE traversal mechanism, experimental).
170106 
170107  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
170109  virtual void accept (ROSE_VisitorPattern & visitor) override;
170110 
170111  // DQ (12/26/2005): Support for traversal based on the memory pool
170114  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
170115 
170118  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
170119 
170120  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
170121  // This traversal helps support internal tools that call static member functions.
170122  // note: this function operates on the memory pools.
170125  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
170126  /* */
170127 
170128 
170129  public:
170130  /* name Memory Allocation Functions
170131  \brief Memory allocations functions ... incomplete-documentation
170132 
170133  These functions have been made public as part of the design, but they are suggested for internal use
170134  or by particularly knowledgable users for specialized tools or applications.
170135  */
170136  /* */
170137 
170148  virtual bool isInMemoryPool() override;
170149 
170160  virtual void checkDataMemberPointersIfInMemoryPool() override;
170161 
170162  // DQ (4/30/2006): Modified to be a const function.
170177  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
170178 
170188  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
170189 
170201  virtual long getChildIndex( SgNode* childNode ) const override;
170202 
170203  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
170204  // comment here (changed to be a C style comment and not be a doxygen comment).
170205  /* \brief Constructor for use by AST File I/O Mechanism
170206 
170207  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
170208  which obtained via fast binary file I/O from disk.
170209  */
170210  // SgFortranIncludeLine( SgFortranIncludeLineStorageClass& source );
170211 
170212 
170213 
170214 
170215 
170216  // JH (10/24/2005): methods added to support the ast file IO
170217  private:
170218 
170219  /* name AST Memory Allocation Support Functions
170220  \brief Memory allocations support....
170221 
170222  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
170223  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
170224  and support the AST File I/O Mechanism.
170225  */
170226  /* */
170227 
170228  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
170229  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
170230  that I use the same type everywhere, if any changes are made. THe second one declares the type
170231  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
170232  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
170233  a correspinding one in the AST_FILE_IO class!
170234  */
170235  // DQ (9/2/2015): This typedef is no longer used, we can't define the
170236  // comment here (changed to be a C style comment and not be a doxygen comment).
170237  /* \brief Typedef used for low level memory access.
170238  */
170239  // typedef unsigned char* TestType;
170240 
170241  // DQ (9/2/2015): This typedef is no longer used, we can't define the
170242  // comment here (changed to be a C style comment and not be a doxygen comment).
170243  /* \brief Typedef used to hold memory addresses as values.
170244  */
170245  // typedef unsigned long AddressType;
170246 
170247 
170248 
170249  // necessary, to have direct access to the p_freepointer and the private methods !
170251  friend class AST_FILE_IO;
170252 
170254  friend class SgFortranIncludeLineStorageClass;
170255 
170257  friend class AstSpecificDataManagingClass;
170258 
170260  friend class AstSpecificDataManagingClassStorageClass;
170261 
170262  public:
170264  SgFortranIncludeLine( const SgFortranIncludeLineStorageClass& source );
170265 
170266  // private: // JJW hack
170267  /*
170268  name AST Memory Allocation Support Variables
170269  Memory allocations support variables
170270 
170271  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
170272  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
170273  and support the AST File I/O Mechanism.
170274  */
170275  /* */
170276 
170277  public:
170278 
170279  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
170280  // to current node (so that it will work cleanly with build functions to specify patterns).
170281  // virtual SgNode* addRegExpAttribute();
170288 
170289 // *** COMMON CODE SECTION ENDS HERE ***
170290 
170291 
170292 // End of memberFunctionString
170293 // Start of memberFunctionString
170294 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
170295 
170296  // the generated cast function
170297  // friend ROSE_DLL_API SgFortranIncludeLine* isSgFortranIncludeLine ( SgNode* s );
170298 
170300 
170301 
170302 // End of memberFunctionString
170303 // Start of memberFunctionString
170304 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
170305 
170306  void post_construction_initialization() override;
170307 
170308 
170309 // End of memberFunctionString
170310 
170311  public:
170312  std::string get_filename() const;
170313  void set_filename(std::string filename);
170314 
170315 
170316  public:
170317  virtual ~SgFortranIncludeLine();
170318 
170319 
170320  public:
170321  SgFortranIncludeLine(Sg_File_Info* startOfConstruct , std::string filename = "");
170322  SgFortranIncludeLine(std::string filename);
170323 
170324  protected:
170325 // Start of memberFunctionString
170326 std::string p_filename;
170327 
170328 // End of memberFunctionString
170329 
170330 
170331 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
170332 
170333 
170334  };
170335 #endif
170336 
170337 // postdeclarations for SgFortranIncludeLine
170338 
170339 /* #line 170340 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
170340 
170341 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
170342 
170343 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
170344 
170345 
170346 /* #line 170347 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
170347 
170348 
170349 
170350 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
170351 
170352 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
170353 // This code is automatically generated for each
170354 // terminal and non-terminal within the defined
170355 // grammar. There is a simple way to change the
170356 // code to fix bugs etc. See the ROSE README file
170357 // for directions.
170358 
170359 // tps: (02/22/2010): Adding DLL export requirements
170360 #include "rosedll.h"
170361 
170362 // predeclarations for SgOmpTaskwaitStatement
170363 
170364 /* #line 170365 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
170365 
170366 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
170367 
170368 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
170369 
170370 #if 1
170371 // Class Definition for SgOmpTaskwaitStatement
170373  {
170374  public:
170375 
170376 
170377 /* #line 170378 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
170378 
170379  virtual SgNode* copy ( SgCopyHelp& help) const override;
170380 // Start of memberFunctionString
170381 /* #line 19227 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
170382 
170384  virtual SgName get_mangled_name(void) const override;
170385 
170386 
170387 // End of memberFunctionString
170388 // Start of memberFunctionString
170389 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
170390 
170391 // *** COMMON CODE SECTION BEGINS HERE ***
170392 
170393  public:
170394 
170395  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
170396  // and not required which is required to match the other aspects of the copy mechanism code generation.
170397  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
170398  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
170399  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
170400  // virtual SgNode* copy ( const SgCopyHelp & help) const;
170401 
170403  virtual std::string class_name() const override;
170404 
170406  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
170407 
170409  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
170410  // static const VariantT static_variant = V_SgOmpTaskwaitStatement;
170411  enum { static_variant = V_SgOmpTaskwaitStatement };
170412 
170413  /* the generated cast function */
170415  ROSE_DLL_API friend SgOmpTaskwaitStatement* isSgOmpTaskwaitStatement( SgNode * s );
170416 
170418  ROSE_DLL_API friend const SgOmpTaskwaitStatement* isSgOmpTaskwaitStatement( const SgNode * s );
170419 
170420  // ******************************************
170421  // * Memory Pool / New / Delete
170422  // ******************************************
170423 
170424  public:
170426  static const unsigned pool_size; //
170428  static std::vector<unsigned char *> pools; //
170430  static SgOmpTaskwaitStatement * next_node; //
170431 
170433  static unsigned long initializeStorageClassArray(SgOmpTaskwaitStatementStorageClass *); //
170434 
170436  static void clearMemoryPool(); //
170437  static void deleteMemoryPool(); //
170438 
170440  static void extendMemoryPoolForFileIO(); //
170441 
170443  static SgOmpTaskwaitStatement * getPointerFromGlobalIndex(unsigned long); //
170445  static SgOmpTaskwaitStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
170446 
170448  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
170450  static void resetValidFreepointers(); //
170452  static unsigned long getNumberOfLastValidPointer(); //
170453 
170454 
170455 #if defined(INLINE_FUNCTIONS)
170456 
170457  inline void *operator new (size_t size);
170458 #else
170459 
170460  void *operator new (size_t size);
170461 #endif
170462 
170463  void operator delete (void* pointer, size_t size);
170464 
170465  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
170466  void operator delete (void* pointer)
170467  {
170468  // This is the generated delete operator...
170469  SgOmpTaskwaitStatement::operator delete (pointer,sizeof(SgOmpTaskwaitStatement));
170470  }
170471 
170473  static size_t numberOfNodes();
170474 
170476  static size_t memoryUsage();
170477 
170478  // End of scope which started in IR nodes specific code
170479  /* */
170480 
170481  /* name Internal Functions
170482  \brief Internal functions ... incomplete-documentation
170483 
170484  These functions have been made public as part of the design, but they are suggested for internal use
170485  or by particularly knowledgeable users for specialized tools or applications.
170486 
170487  \internal We could not make these private because they are required by user for special purposes. And
170488  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
170489 
170490  */
170491 
170492  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
170493  // overridden in every class by *generated* implementation
170495  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
170496  // MS: 06/28/02 container of names of variables or container indices
170497  // used used in the traversal to access AST successor nodes
170498  // overridden in every class by *generated* implementation
170501  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
170502 
170503  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
170504  // than all the vector copies. The implementation for these functions is generated for each class.
170506  virtual size_t get_numberOfTraversalSuccessors() override;
170508  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
170510  virtual size_t get_childIndex(SgNode *child) override;
170511 
170512 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
170513  // MS: 08/16/2002 method for generating RTI information
170515  virtual RTIReturnType roseRTI() override;
170516 #endif
170517  /* */
170518 
170519 
170520 
170521  /* name Deprecated Functions
170522  \brief Deprecated functions ... incomplete-documentation
170523 
170524  These functions have been deprecated from use.
170525  */
170526  /* */
170527 
170529  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
170530 
170531  // JJW (10/16/2008): Changed to a single function in Node.code, and put
170532  // getVariant() in #if 0 block to prevent confusing Doxygen
170533 #if 0
170534 
170535  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
170537  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
170538 #endif
170539  /* */
170540 
170541 
170542 
170543 
170544  public:
170545  /* name Traversal Support Functions
170546  \brief Traversal support functions ... incomplete-documentation
170547 
170548  These functions have been made public as part of the design, but they are suggested for internal use
170549  or by particularly knowledgable users for specialized tools or applications.
170550  */
170551  /* */
170552 
170553  // DQ (11/26/2005): Support for visitor pattern mechanims
170554  // (inferior to ROSE traversal mechanism, experimental).
170558 
170559  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
170561  virtual void accept (ROSE_VisitorPattern & visitor) override;
170562 
170563  // DQ (12/26/2005): Support for traversal based on the memory pool
170566  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
170567 
170570  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
170571 
170572  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
170573  // This traversal helps support internal tools that call static member functions.
170574  // note: this function operates on the memory pools.
170577  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
170578  /* */
170579 
170580 
170581  public:
170582  /* name Memory Allocation Functions
170583  \brief Memory allocations functions ... incomplete-documentation
170584 
170585  These functions have been made public as part of the design, but they are suggested for internal use
170586  or by particularly knowledgable users for specialized tools or applications.
170587  */
170588  /* */
170589 
170600  virtual bool isInMemoryPool() override;
170601 
170612  virtual void checkDataMemberPointersIfInMemoryPool() override;
170613 
170614  // DQ (4/30/2006): Modified to be a const function.
170629  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
170630 
170640  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
170641 
170653  virtual long getChildIndex( SgNode* childNode ) const override;
170654 
170655  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
170656  // comment here (changed to be a C style comment and not be a doxygen comment).
170657  /* \brief Constructor for use by AST File I/O Mechanism
170658 
170659  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
170660  which obtained via fast binary file I/O from disk.
170661  */
170662  // SgOmpTaskwaitStatement( SgOmpTaskwaitStatementStorageClass& source );
170663 
170664 
170665 
170666 
170667 
170668  // JH (10/24/2005): methods added to support the ast file IO
170669  private:
170670 
170671  /* name AST Memory Allocation Support Functions
170672  \brief Memory allocations support....
170673 
170674  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
170675  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
170676  and support the AST File I/O Mechanism.
170677  */
170678  /* */
170679 
170680  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
170681  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
170682  that I use the same type everywhere, if any changes are made. THe second one declares the type
170683  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
170684  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
170685  a correspinding one in the AST_FILE_IO class!
170686  */
170687  // DQ (9/2/2015): This typedef is no longer used, we can't define the
170688  // comment here (changed to be a C style comment and not be a doxygen comment).
170689  /* \brief Typedef used for low level memory access.
170690  */
170691  // typedef unsigned char* TestType;
170692 
170693  // DQ (9/2/2015): This typedef is no longer used, we can't define the
170694  // comment here (changed to be a C style comment and not be a doxygen comment).
170695  /* \brief Typedef used to hold memory addresses as values.
170696  */
170697  // typedef unsigned long AddressType;
170698 
170699 
170700 
170701  // necessary, to have direct access to the p_freepointer and the private methods !
170703  friend class AST_FILE_IO;
170704 
170706  friend class SgOmpTaskwaitStatementStorageClass;
170707 
170709  friend class AstSpecificDataManagingClass;
170710 
170712  friend class AstSpecificDataManagingClassStorageClass;
170713 
170714  public:
170716  SgOmpTaskwaitStatement( const SgOmpTaskwaitStatementStorageClass& source );
170717 
170718  // private: // JJW hack
170719  /*
170720  name AST Memory Allocation Support Variables
170721  Memory allocations support variables
170722 
170723  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
170724  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
170725  and support the AST File I/O Mechanism.
170726  */
170727  /* */
170728 
170729  public:
170730 
170731  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
170732  // to current node (so that it will work cleanly with build functions to specify patterns).
170733  // virtual SgNode* addRegExpAttribute();
170740 
170741 // *** COMMON CODE SECTION ENDS HERE ***
170742 
170743 
170744 // End of memberFunctionString
170745 // Start of memberFunctionString
170746 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
170747 
170748  // the generated cast function
170749  // friend ROSE_DLL_API SgOmpTaskwaitStatement* isSgOmpTaskwaitStatement ( SgNode* s );
170750 
170752 
170753 
170754 // End of memberFunctionString
170755 // Start of memberFunctionString
170756 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
170757 
170758  void post_construction_initialization() override;
170759 
170760 
170761 // End of memberFunctionString
170762 
170763  public:
170764  const SgOmpClausePtrList& get_clauses() const;
170765  SgOmpClausePtrList& get_clauses();
170766 
170767 
170768  public:
170769  virtual ~SgOmpTaskwaitStatement();
170770 
170771 
170772  public:
170773  SgOmpTaskwaitStatement(Sg_File_Info* startOfConstruct );
170775 
170776  protected:
170777 // Start of memberFunctionString
170778 SgOmpClausePtrList p_clauses;
170779 
170780 // End of memberFunctionString
170781 
170782 
170783 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
170784 
170785 
170786  };
170787 #endif
170788 
170789 // postdeclarations for SgOmpTaskwaitStatement
170790 
170791 /* #line 170792 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
170792 
170793 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
170794 
170795 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
170796 
170797 
170798 /* #line 170799 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
170799 
170800 
170801 
170802 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
170803 
170804 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
170805 // This code is automatically generated for each
170806 // terminal and non-terminal within the defined
170807 // grammar. There is a simple way to change the
170808 // code to fix bugs etc. See the ROSE README file
170809 // for directions.
170810 
170811 // tps: (02/22/2010): Adding DLL export requirements
170812 #include "rosedll.h"
170813 
170814 // predeclarations for SgStmtDeclarationStatement
170815 
170816 /* #line 170817 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
170817 
170818 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
170819 
170820 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
170821 
170822 #if 1
170823 // Class Definition for SgStmtDeclarationStatement
170825  {
170826  public:
170827 
170828 
170829 /* #line 170830 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
170830 
170831  virtual SgNode* copy ( SgCopyHelp& help) const override;
170832 // Start of memberFunctionString
170833 /* #line 2161 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
170834 
170835  virtual SgName get_mangled_name (void) const override;
170836 
170837 
170838 // End of memberFunctionString
170839 // Start of memberFunctionString
170840 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
170841 
170842 // *** COMMON CODE SECTION BEGINS HERE ***
170843 
170844  public:
170845 
170846  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
170847  // and not required which is required to match the other aspects of the copy mechanism code generation.
170848  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
170849  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
170850  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
170851  // virtual SgNode* copy ( const SgCopyHelp & help) const;
170852 
170854  virtual std::string class_name() const override;
170855 
170857  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
170858 
170860  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
170861  // static const VariantT static_variant = V_SgStmtDeclarationStatement;
170862  enum { static_variant = V_SgStmtDeclarationStatement };
170863 
170864  /* the generated cast function */
170866  ROSE_DLL_API friend SgStmtDeclarationStatement* isSgStmtDeclarationStatement( SgNode * s );
170867 
170869  ROSE_DLL_API friend const SgStmtDeclarationStatement* isSgStmtDeclarationStatement( const SgNode * s );
170870 
170871  // ******************************************
170872  // * Memory Pool / New / Delete
170873  // ******************************************
170874 
170875  public:
170877  static const unsigned pool_size; //
170879  static std::vector<unsigned char *> pools; //
170881  static SgStmtDeclarationStatement * next_node; //
170882 
170884  static unsigned long initializeStorageClassArray(SgStmtDeclarationStatementStorageClass *); //
170885 
170887  static void clearMemoryPool(); //
170888  static void deleteMemoryPool(); //
170889 
170891  static void extendMemoryPoolForFileIO(); //
170892 
170894  static SgStmtDeclarationStatement * getPointerFromGlobalIndex(unsigned long); //
170896  static SgStmtDeclarationStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
170897 
170899  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
170901  static void resetValidFreepointers(); //
170903  static unsigned long getNumberOfLastValidPointer(); //
170904 
170905 
170906 #if defined(INLINE_FUNCTIONS)
170907 
170908  inline void *operator new (size_t size);
170909 #else
170910 
170911  void *operator new (size_t size);
170912 #endif
170913 
170914  void operator delete (void* pointer, size_t size);
170915 
170916  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
170917  void operator delete (void* pointer)
170918  {
170919  // This is the generated delete operator...
170920  SgStmtDeclarationStatement::operator delete (pointer,sizeof(SgStmtDeclarationStatement));
170921  }
170922 
170924  static size_t numberOfNodes();
170925 
170927  static size_t memoryUsage();
170928 
170929  // End of scope which started in IR nodes specific code
170930  /* */
170931 
170932  /* name Internal Functions
170933  \brief Internal functions ... incomplete-documentation
170934 
170935  These functions have been made public as part of the design, but they are suggested for internal use
170936  or by particularly knowledgeable users for specialized tools or applications.
170937 
170938  \internal We could not make these private because they are required by user for special purposes. And
170939  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
170940 
170941  */
170942 
170943  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
170944  // overridden in every class by *generated* implementation
170946  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
170947  // MS: 06/28/02 container of names of variables or container indices
170948  // used used in the traversal to access AST successor nodes
170949  // overridden in every class by *generated* implementation
170952  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
170953 
170954  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
170955  // than all the vector copies. The implementation for these functions is generated for each class.
170957  virtual size_t get_numberOfTraversalSuccessors() override;
170959  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
170961  virtual size_t get_childIndex(SgNode *child) override;
170962 
170963 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
170964  // MS: 08/16/2002 method for generating RTI information
170966  virtual RTIReturnType roseRTI() override;
170967 #endif
170968  /* */
170969 
170970 
170971 
170972  /* name Deprecated Functions
170973  \brief Deprecated functions ... incomplete-documentation
170974 
170975  These functions have been deprecated from use.
170976  */
170977  /* */
170978 
170980  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
170981 
170982  // JJW (10/16/2008): Changed to a single function in Node.code, and put
170983  // getVariant() in #if 0 block to prevent confusing Doxygen
170984 #if 0
170985 
170986  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
170988  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
170989 #endif
170990  /* */
170991 
170992 
170993 
170994 
170995  public:
170996  /* name Traversal Support Functions
170997  \brief Traversal support functions ... incomplete-documentation
170998 
170999  These functions have been made public as part of the design, but they are suggested for internal use
171000  or by particularly knowledgable users for specialized tools or applications.
171001  */
171002  /* */
171003 
171004  // DQ (11/26/2005): Support for visitor pattern mechanims
171005  // (inferior to ROSE traversal mechanism, experimental).
171009 
171010  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
171012  virtual void accept (ROSE_VisitorPattern & visitor) override;
171013 
171014  // DQ (12/26/2005): Support for traversal based on the memory pool
171017  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
171018 
171021  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
171022 
171023  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
171024  // This traversal helps support internal tools that call static member functions.
171025  // note: this function operates on the memory pools.
171028  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
171029  /* */
171030 
171031 
171032  public:
171033  /* name Memory Allocation Functions
171034  \brief Memory allocations functions ... incomplete-documentation
171035 
171036  These functions have been made public as part of the design, but they are suggested for internal use
171037  or by particularly knowledgable users for specialized tools or applications.
171038  */
171039  /* */
171040 
171051  virtual bool isInMemoryPool() override;
171052 
171063  virtual void checkDataMemberPointersIfInMemoryPool() override;
171064 
171065  // DQ (4/30/2006): Modified to be a const function.
171080  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
171081 
171091  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
171092 
171104  virtual long getChildIndex( SgNode* childNode ) const override;
171105 
171106  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
171107  // comment here (changed to be a C style comment and not be a doxygen comment).
171108  /* \brief Constructor for use by AST File I/O Mechanism
171109 
171110  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
171111  which obtained via fast binary file I/O from disk.
171112  */
171113  // SgStmtDeclarationStatement( SgStmtDeclarationStatementStorageClass& source );
171114 
171115 
171116 
171117 
171118 
171119  // JH (10/24/2005): methods added to support the ast file IO
171120  private:
171121 
171122  /* name AST Memory Allocation Support Functions
171123  \brief Memory allocations support....
171124 
171125  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
171126  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
171127  and support the AST File I/O Mechanism.
171128  */
171129  /* */
171130 
171131  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
171132  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
171133  that I use the same type everywhere, if any changes are made. THe second one declares the type
171134  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
171135  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
171136  a correspinding one in the AST_FILE_IO class!
171137  */
171138  // DQ (9/2/2015): This typedef is no longer used, we can't define the
171139  // comment here (changed to be a C style comment and not be a doxygen comment).
171140  /* \brief Typedef used for low level memory access.
171141  */
171142  // typedef unsigned char* TestType;
171143 
171144  // DQ (9/2/2015): This typedef is no longer used, we can't define the
171145  // comment here (changed to be a C style comment and not be a doxygen comment).
171146  /* \brief Typedef used to hold memory addresses as values.
171147  */
171148  // typedef unsigned long AddressType;
171149 
171150 
171151 
171152  // necessary, to have direct access to the p_freepointer and the private methods !
171154  friend class AST_FILE_IO;
171155 
171157  friend class SgStmtDeclarationStatementStorageClass;
171158 
171160  friend class AstSpecificDataManagingClass;
171161 
171163  friend class AstSpecificDataManagingClassStorageClass;
171164 
171165  public:
171167  SgStmtDeclarationStatement( const SgStmtDeclarationStatementStorageClass& source );
171168 
171169  // private: // JJW hack
171170  /*
171171  name AST Memory Allocation Support Variables
171172  Memory allocations support variables
171173 
171174  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
171175  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
171176  and support the AST File I/O Mechanism.
171177  */
171178  /* */
171179 
171180  public:
171181 
171182  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
171183  // to current node (so that it will work cleanly with build functions to specify patterns).
171184  // virtual SgNode* addRegExpAttribute();
171191 
171192 // *** COMMON CODE SECTION ENDS HERE ***
171193 
171194 
171195 // End of memberFunctionString
171196 // Start of memberFunctionString
171197 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
171198 
171199  // the generated cast function
171200  // friend ROSE_DLL_API SgStmtDeclarationStatement* isSgStmtDeclarationStatement ( SgNode* s );
171201 
171203 
171204 
171205 // End of memberFunctionString
171206 // Start of memberFunctionString
171207 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
171208 
171209  void post_construction_initialization() override;
171210 
171211 
171212 // End of memberFunctionString
171213 
171214  public:
171215  SgStatement* get_statement() const;
171216  void set_statement(SgStatement* statement);
171217 
171218 
171219  public:
171220  virtual ~SgStmtDeclarationStatement();
171221 
171222 
171223  public:
171224  SgStmtDeclarationStatement(Sg_File_Info* startOfConstruct , SgStatement* statement = NULL);
171226 
171227  protected:
171228 // Start of memberFunctionString
171230 
171231 // End of memberFunctionString
171232 
171233 
171234 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
171235 
171236 
171237  };
171238 #endif
171239 
171240 // postdeclarations for SgStmtDeclarationStatement
171241 
171242 /* #line 171243 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
171243 
171244 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
171245 
171246 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
171247 
171248 
171249 /* #line 171250 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
171250 
171251 
171252 
171253 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
171254 
171255 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
171256 // This code is automatically generated for each
171257 // terminal and non-terminal within the defined
171258 // grammar. There is a simple way to change the
171259 // code to fix bugs etc. See the ROSE README file
171260 // for directions.
171261 
171262 // tps: (02/22/2010): Adding DLL export requirements
171263 #include "rosedll.h"
171264 
171265 // predeclarations for SgStaticAssertionDeclaration
171266 
171267 /* #line 171268 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
171268 
171269 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
171270 
171271 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
171272 
171273 #if 1
171274 // Class Definition for SgStaticAssertionDeclaration
171276  {
171277  public:
171278 
171279 
171280 /* #line 171281 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
171281 
171282  virtual SgNode* copy ( SgCopyHelp& help) const override;
171283 // Start of memberFunctionString
171284 /* #line 1480 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
171285 
171286 
171287 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
171288  virtual unsigned int cfgIndexForEnd() const override;
171289  virtual bool cfgIsIndexInteresting(unsigned int) const override;
171290  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
171291  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
171292 #endif
171293 
171294  // We need this to be defined to avoid calling the base class version (which is an error).
171295  SgName get_mangled_name() const override;
171296 
171297  bool hasExplicitScope() const override;
171298 
171299 
171300 
171301 // End of memberFunctionString
171302 // Start of memberFunctionString
171303 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
171304 
171305 // *** COMMON CODE SECTION BEGINS HERE ***
171306 
171307  public:
171308 
171309  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
171310  // and not required which is required to match the other aspects of the copy mechanism code generation.
171311  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
171312  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
171313  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
171314  // virtual SgNode* copy ( const SgCopyHelp & help) const;
171315 
171317  virtual std::string class_name() const override;
171318 
171320  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
171321 
171323  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
171324  // static const VariantT static_variant = V_SgStaticAssertionDeclaration;
171325  enum { static_variant = V_SgStaticAssertionDeclaration };
171326 
171327  /* the generated cast function */
171329  ROSE_DLL_API friend SgStaticAssertionDeclaration* isSgStaticAssertionDeclaration( SgNode * s );
171330 
171332  ROSE_DLL_API friend const SgStaticAssertionDeclaration* isSgStaticAssertionDeclaration( const SgNode * s );
171333 
171334  // ******************************************
171335  // * Memory Pool / New / Delete
171336  // ******************************************
171337 
171338  public:
171340  static const unsigned pool_size; //
171342  static std::vector<unsigned char *> pools; //
171344  static SgStaticAssertionDeclaration * next_node; //
171345 
171347  static unsigned long initializeStorageClassArray(SgStaticAssertionDeclarationStorageClass *); //
171348 
171350  static void clearMemoryPool(); //
171351  static void deleteMemoryPool(); //
171352 
171354  static void extendMemoryPoolForFileIO(); //
171355 
171357  static SgStaticAssertionDeclaration * getPointerFromGlobalIndex(unsigned long); //
171359  static SgStaticAssertionDeclaration * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
171360 
171362  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
171364  static void resetValidFreepointers(); //
171366  static unsigned long getNumberOfLastValidPointer(); //
171367 
171368 
171369 #if defined(INLINE_FUNCTIONS)
171370 
171371  inline void *operator new (size_t size);
171372 #else
171373 
171374  void *operator new (size_t size);
171375 #endif
171376 
171377  void operator delete (void* pointer, size_t size);
171378 
171379  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
171380  void operator delete (void* pointer)
171381  {
171382  // This is the generated delete operator...
171383  SgStaticAssertionDeclaration::operator delete (pointer,sizeof(SgStaticAssertionDeclaration));
171384  }
171385 
171387  static size_t numberOfNodes();
171388 
171390  static size_t memoryUsage();
171391 
171392  // End of scope which started in IR nodes specific code
171393  /* */
171394 
171395  /* name Internal Functions
171396  \brief Internal functions ... incomplete-documentation
171397 
171398  These functions have been made public as part of the design, but they are suggested for internal use
171399  or by particularly knowledgeable users for specialized tools or applications.
171400 
171401  \internal We could not make these private because they are required by user for special purposes. And
171402  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
171403 
171404  */
171405 
171406  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
171407  // overridden in every class by *generated* implementation
171409  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
171410  // MS: 06/28/02 container of names of variables or container indices
171411  // used used in the traversal to access AST successor nodes
171412  // overridden in every class by *generated* implementation
171415  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
171416 
171417  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
171418  // than all the vector copies. The implementation for these functions is generated for each class.
171420  virtual size_t get_numberOfTraversalSuccessors() override;
171422  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
171424  virtual size_t get_childIndex(SgNode *child) override;
171425 
171426 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
171427  // MS: 08/16/2002 method for generating RTI information
171429  virtual RTIReturnType roseRTI() override;
171430 #endif
171431  /* */
171432 
171433 
171434 
171435  /* name Deprecated Functions
171436  \brief Deprecated functions ... incomplete-documentation
171437 
171438  These functions have been deprecated from use.
171439  */
171440  /* */
171441 
171443  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
171444 
171445  // JJW (10/16/2008): Changed to a single function in Node.code, and put
171446  // getVariant() in #if 0 block to prevent confusing Doxygen
171447 #if 0
171448 
171449  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
171451  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
171452 #endif
171453  /* */
171454 
171455 
171456 
171457 
171458  public:
171459  /* name Traversal Support Functions
171460  \brief Traversal support functions ... incomplete-documentation
171461 
171462  These functions have been made public as part of the design, but they are suggested for internal use
171463  or by particularly knowledgable users for specialized tools or applications.
171464  */
171465  /* */
171466 
171467  // DQ (11/26/2005): Support for visitor pattern mechanims
171468  // (inferior to ROSE traversal mechanism, experimental).
171472 
171473  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
171475  virtual void accept (ROSE_VisitorPattern & visitor) override;
171476 
171477  // DQ (12/26/2005): Support for traversal based on the memory pool
171480  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
171481 
171484  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
171485 
171486  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
171487  // This traversal helps support internal tools that call static member functions.
171488  // note: this function operates on the memory pools.
171491  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
171492  /* */
171493 
171494 
171495  public:
171496  /* name Memory Allocation Functions
171497  \brief Memory allocations functions ... incomplete-documentation
171498 
171499  These functions have been made public as part of the design, but they are suggested for internal use
171500  or by particularly knowledgable users for specialized tools or applications.
171501  */
171502  /* */
171503 
171514  virtual bool isInMemoryPool() override;
171515 
171526  virtual void checkDataMemberPointersIfInMemoryPool() override;
171527 
171528  // DQ (4/30/2006): Modified to be a const function.
171543  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
171544 
171554  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
171555 
171567  virtual long getChildIndex( SgNode* childNode ) const override;
171568 
171569  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
171570  // comment here (changed to be a C style comment and not be a doxygen comment).
171571  /* \brief Constructor for use by AST File I/O Mechanism
171572 
171573  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
171574  which obtained via fast binary file I/O from disk.
171575  */
171576  // SgStaticAssertionDeclaration( SgStaticAssertionDeclarationStorageClass& source );
171577 
171578 
171579 
171580 
171581 
171582  // JH (10/24/2005): methods added to support the ast file IO
171583  private:
171584 
171585  /* name AST Memory Allocation Support Functions
171586  \brief Memory allocations support....
171587 
171588  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
171589  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
171590  and support the AST File I/O Mechanism.
171591  */
171592  /* */
171593 
171594  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
171595  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
171596  that I use the same type everywhere, if any changes are made. THe second one declares the type
171597  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
171598  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
171599  a correspinding one in the AST_FILE_IO class!
171600  */
171601  // DQ (9/2/2015): This typedef is no longer used, we can't define the
171602  // comment here (changed to be a C style comment and not be a doxygen comment).
171603  /* \brief Typedef used for low level memory access.
171604  */
171605  // typedef unsigned char* TestType;
171606 
171607  // DQ (9/2/2015): This typedef is no longer used, we can't define the
171608  // comment here (changed to be a C style comment and not be a doxygen comment).
171609  /* \brief Typedef used to hold memory addresses as values.
171610  */
171611  // typedef unsigned long AddressType;
171612 
171613 
171614 
171615  // necessary, to have direct access to the p_freepointer and the private methods !
171617  friend class AST_FILE_IO;
171618 
171620  friend class SgStaticAssertionDeclarationStorageClass;
171621 
171623  friend class AstSpecificDataManagingClass;
171624 
171626  friend class AstSpecificDataManagingClassStorageClass;
171627 
171628  public:
171630  SgStaticAssertionDeclaration( const SgStaticAssertionDeclarationStorageClass& source );
171631 
171632  // private: // JJW hack
171633  /*
171634  name AST Memory Allocation Support Variables
171635  Memory allocations support variables
171636 
171637  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
171638  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
171639  and support the AST File I/O Mechanism.
171640  */
171641  /* */
171642 
171643  public:
171644 
171645  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
171646  // to current node (so that it will work cleanly with build functions to specify patterns).
171647  // virtual SgNode* addRegExpAttribute();
171654 
171655 // *** COMMON CODE SECTION ENDS HERE ***
171656 
171657 
171658 // End of memberFunctionString
171659 // Start of memberFunctionString
171660 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
171661 
171662  // the generated cast function
171663  // friend ROSE_DLL_API SgStaticAssertionDeclaration* isSgStaticAssertionDeclaration ( SgNode* s );
171664 
171666 
171667 
171668 // End of memberFunctionString
171669 // Start of memberFunctionString
171670 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
171671 
171672  void post_construction_initialization() override;
171673 
171674 
171675 // End of memberFunctionString
171676 
171677  public:
171678  SgExpression* get_condition() const;
171679  void set_condition(SgExpression* condition);
171680 
171681  public:
171682  SgName get_string_literal() const;
171683  void set_string_literal(SgName string_literal);
171684 
171685 
171686  public:
171687  virtual ~SgStaticAssertionDeclaration();
171688 
171689 
171690  public:
171691  SgStaticAssertionDeclaration(Sg_File_Info* startOfConstruct , SgExpression* condition = NULL, SgName string_literal = "");
171692  SgStaticAssertionDeclaration(SgExpression* condition, SgName string_literal);
171693 
171694  protected:
171695 // Start of memberFunctionString
171696 SgExpression* p_condition;
171697 
171698 // End of memberFunctionString
171699 // Start of memberFunctionString
171700 SgName p_string_literal;
171701 
171702 // End of memberFunctionString
171703 
171704 
171705 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
171706 
171707 
171708  };
171709 #endif
171710 
171711 // postdeclarations for SgStaticAssertionDeclaration
171712 
171713 /* #line 171714 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
171714 
171715 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
171716 
171717 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
171718 
171719 
171720 /* #line 171721 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
171721 
171722 
171723 
171724 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
171725 
171726 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
171727 // This code is automatically generated for each
171728 // terminal and non-terminal within the defined
171729 // grammar. There is a simple way to change the
171730 // code to fix bugs etc. See the ROSE README file
171731 // for directions.
171732 
171733 // tps: (02/22/2010): Adding DLL export requirements
171734 #include "rosedll.h"
171735 
171736 // predeclarations for SgOmpDeclareSimdStatement
171737 
171738 /* #line 171739 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
171739 
171740 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
171741 
171742 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
171743 
171744 #if 1
171745 // Class Definition for SgOmpDeclareSimdStatement
171747  {
171748  public:
171749 
171750 
171751 /* #line 171752 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
171752 
171753  virtual SgNode* copy ( SgCopyHelp& help) const override;
171754 // Start of memberFunctionString
171755 /* #line 19124 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
171756 
171758  virtual SgName get_mangled_name(void) const override;
171759 
171760 
171761 // End of memberFunctionString
171762 // Start of memberFunctionString
171763 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
171764 
171765 // *** COMMON CODE SECTION BEGINS HERE ***
171766 
171767  public:
171768 
171769  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
171770  // and not required which is required to match the other aspects of the copy mechanism code generation.
171771  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
171772  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
171773  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
171774  // virtual SgNode* copy ( const SgCopyHelp & help) const;
171775 
171777  virtual std::string class_name() const override;
171778 
171780  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
171781 
171783  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
171784  // static const VariantT static_variant = V_SgOmpDeclareSimdStatement;
171785  enum { static_variant = V_SgOmpDeclareSimdStatement };
171786 
171787  /* the generated cast function */
171789  ROSE_DLL_API friend SgOmpDeclareSimdStatement* isSgOmpDeclareSimdStatement( SgNode * s );
171790 
171792  ROSE_DLL_API friend const SgOmpDeclareSimdStatement* isSgOmpDeclareSimdStatement( const SgNode * s );
171793 
171794  // ******************************************
171795  // * Memory Pool / New / Delete
171796  // ******************************************
171797 
171798  public:
171800  static const unsigned pool_size; //
171802  static std::vector<unsigned char *> pools; //
171804  static SgOmpDeclareSimdStatement * next_node; //
171805 
171807  static unsigned long initializeStorageClassArray(SgOmpDeclareSimdStatementStorageClass *); //
171808 
171810  static void clearMemoryPool(); //
171811  static void deleteMemoryPool(); //
171812 
171814  static void extendMemoryPoolForFileIO(); //
171815 
171817  static SgOmpDeclareSimdStatement * getPointerFromGlobalIndex(unsigned long); //
171819  static SgOmpDeclareSimdStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
171820 
171822  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
171824  static void resetValidFreepointers(); //
171826  static unsigned long getNumberOfLastValidPointer(); //
171827 
171828 
171829 #if defined(INLINE_FUNCTIONS)
171830 
171831  inline void *operator new (size_t size);
171832 #else
171833 
171834  void *operator new (size_t size);
171835 #endif
171836 
171837  void operator delete (void* pointer, size_t size);
171838 
171839  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
171840  void operator delete (void* pointer)
171841  {
171842  // This is the generated delete operator...
171843  SgOmpDeclareSimdStatement::operator delete (pointer,sizeof(SgOmpDeclareSimdStatement));
171844  }
171845 
171847  static size_t numberOfNodes();
171848 
171850  static size_t memoryUsage();
171851 
171852  // End of scope which started in IR nodes specific code
171853  /* */
171854 
171855  /* name Internal Functions
171856  \brief Internal functions ... incomplete-documentation
171857 
171858  These functions have been made public as part of the design, but they are suggested for internal use
171859  or by particularly knowledgeable users for specialized tools or applications.
171860 
171861  \internal We could not make these private because they are required by user for special purposes. And
171862  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
171863 
171864  */
171865 
171866  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
171867  // overridden in every class by *generated* implementation
171869  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
171870  // MS: 06/28/02 container of names of variables or container indices
171871  // used used in the traversal to access AST successor nodes
171872  // overridden in every class by *generated* implementation
171875  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
171876 
171877  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
171878  // than all the vector copies. The implementation for these functions is generated for each class.
171880  virtual size_t get_numberOfTraversalSuccessors() override;
171882  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
171884  virtual size_t get_childIndex(SgNode *child) override;
171885 
171886 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
171887  // MS: 08/16/2002 method for generating RTI information
171889  virtual RTIReturnType roseRTI() override;
171890 #endif
171891  /* */
171892 
171893 
171894 
171895  /* name Deprecated Functions
171896  \brief Deprecated functions ... incomplete-documentation
171897 
171898  These functions have been deprecated from use.
171899  */
171900  /* */
171901 
171903  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
171904 
171905  // JJW (10/16/2008): Changed to a single function in Node.code, and put
171906  // getVariant() in #if 0 block to prevent confusing Doxygen
171907 #if 0
171908 
171909  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
171911  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
171912 #endif
171913  /* */
171914 
171915 
171916 
171917 
171918  public:
171919  /* name Traversal Support Functions
171920  \brief Traversal support functions ... incomplete-documentation
171921 
171922  These functions have been made public as part of the design, but they are suggested for internal use
171923  or by particularly knowledgable users for specialized tools or applications.
171924  */
171925  /* */
171926 
171927  // DQ (11/26/2005): Support for visitor pattern mechanims
171928  // (inferior to ROSE traversal mechanism, experimental).
171932 
171933  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
171935  virtual void accept (ROSE_VisitorPattern & visitor) override;
171936 
171937  // DQ (12/26/2005): Support for traversal based on the memory pool
171940  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
171941 
171944  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
171945 
171946  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
171947  // This traversal helps support internal tools that call static member functions.
171948  // note: this function operates on the memory pools.
171951  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
171952  /* */
171953 
171954 
171955  public:
171956  /* name Memory Allocation Functions
171957  \brief Memory allocations functions ... incomplete-documentation
171958 
171959  These functions have been made public as part of the design, but they are suggested for internal use
171960  or by particularly knowledgable users for specialized tools or applications.
171961  */
171962  /* */
171963 
171974  virtual bool isInMemoryPool() override;
171975 
171986  virtual void checkDataMemberPointersIfInMemoryPool() override;
171987 
171988  // DQ (4/30/2006): Modified to be a const function.
172003  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
172004 
172014  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
172015 
172027  virtual long getChildIndex( SgNode* childNode ) const override;
172028 
172029  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
172030  // comment here (changed to be a C style comment and not be a doxygen comment).
172031  /* \brief Constructor for use by AST File I/O Mechanism
172032 
172033  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
172034  which obtained via fast binary file I/O from disk.
172035  */
172036  // SgOmpDeclareSimdStatement( SgOmpDeclareSimdStatementStorageClass& source );
172037 
172038 
172039 
172040 
172041 
172042  // JH (10/24/2005): methods added to support the ast file IO
172043  private:
172044 
172045  /* name AST Memory Allocation Support Functions
172046  \brief Memory allocations support....
172047 
172048  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
172049  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
172050  and support the AST File I/O Mechanism.
172051  */
172052  /* */
172053 
172054  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
172055  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
172056  that I use the same type everywhere, if any changes are made. THe second one declares the type
172057  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
172058  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
172059  a correspinding one in the AST_FILE_IO class!
172060  */
172061  // DQ (9/2/2015): This typedef is no longer used, we can't define the
172062  // comment here (changed to be a C style comment and not be a doxygen comment).
172063  /* \brief Typedef used for low level memory access.
172064  */
172065  // typedef unsigned char* TestType;
172066 
172067  // DQ (9/2/2015): This typedef is no longer used, we can't define the
172068  // comment here (changed to be a C style comment and not be a doxygen comment).
172069  /* \brief Typedef used to hold memory addresses as values.
172070  */
172071  // typedef unsigned long AddressType;
172072 
172073 
172074 
172075  // necessary, to have direct access to the p_freepointer and the private methods !
172077  friend class AST_FILE_IO;
172078 
172080  friend class SgOmpDeclareSimdStatementStorageClass;
172081 
172083  friend class AstSpecificDataManagingClass;
172084 
172086  friend class AstSpecificDataManagingClassStorageClass;
172087 
172088  public:
172090  SgOmpDeclareSimdStatement( const SgOmpDeclareSimdStatementStorageClass& source );
172091 
172092  // private: // JJW hack
172093  /*
172094  name AST Memory Allocation Support Variables
172095  Memory allocations support variables
172096 
172097  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
172098  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
172099  and support the AST File I/O Mechanism.
172100  */
172101  /* */
172102 
172103  public:
172104 
172105  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
172106  // to current node (so that it will work cleanly with build functions to specify patterns).
172107  // virtual SgNode* addRegExpAttribute();
172114 
172115 // *** COMMON CODE SECTION ENDS HERE ***
172116 
172117 
172118 // End of memberFunctionString
172119 // Start of memberFunctionString
172120 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
172121 
172122  // the generated cast function
172123  // friend ROSE_DLL_API SgOmpDeclareSimdStatement* isSgOmpDeclareSimdStatement ( SgNode* s );
172124 
172126 
172127 
172128 // End of memberFunctionString
172129 // Start of memberFunctionString
172130 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
172131 
172132  void post_construction_initialization() override;
172133 
172134 
172135 // End of memberFunctionString
172136 
172137  public:
172138  const SgOmpClausePtrList& get_clauses() const;
172139  SgOmpClausePtrList& get_clauses();
172140 
172141 
172142  public:
172143  virtual ~SgOmpDeclareSimdStatement();
172144 
172145 
172146  public:
172147  SgOmpDeclareSimdStatement(Sg_File_Info* startOfConstruct );
172149 
172150  protected:
172151 // Start of memberFunctionString
172152 SgOmpClausePtrList p_clauses;
172153 
172154 // End of memberFunctionString
172155 
172156 
172157 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
172158 
172159 
172160  };
172161 #endif
172162 
172163 // postdeclarations for SgOmpDeclareSimdStatement
172164 
172165 /* #line 172166 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
172166 
172167 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
172168 
172169 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
172170 
172171 
172172 /* #line 172173 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
172173 
172174 
172175 
172176 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
172177 
172178 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
172179 // This code is automatically generated for each
172180 // terminal and non-terminal within the defined
172181 // grammar. There is a simple way to change the
172182 // code to fix bugs etc. See the ROSE README file
172183 // for directions.
172184 
172185 // tps: (02/22/2010): Adding DLL export requirements
172186 #include "rosedll.h"
172187 
172188 // predeclarations for SgMicrosoftAttributeDeclaration
172189 
172190 /* #line 172191 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
172191 
172192 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
172193 
172194 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
172195 
172196 #if 1
172197 // Class Definition for SgMicrosoftAttributeDeclaration
172199  {
172200  public:
172201 
172202 
172203 /* #line 172204 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
172204 
172205  virtual SgNode* copy ( SgCopyHelp& help) const override;
172206 // Start of memberFunctionString
172207 /* #line 3920 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
172208 
172209 
172210  // We need this to be defined to avoid calling the base class version (which is an error).
172211  SgName get_mangled_name() const override;
172212 
172213  bool hasExplicitScope() const override;
172214 
172215 
172216 
172217 // End of memberFunctionString
172218 // Start of memberFunctionString
172219 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
172220 
172221 // *** COMMON CODE SECTION BEGINS HERE ***
172222 
172223  public:
172224 
172225  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
172226  // and not required which is required to match the other aspects of the copy mechanism code generation.
172227  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
172228  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
172229  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
172230  // virtual SgNode* copy ( const SgCopyHelp & help) const;
172231 
172233  virtual std::string class_name() const override;
172234 
172236  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
172237 
172239  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
172240  // static const VariantT static_variant = V_SgMicrosoftAttributeDeclaration;
172241  enum { static_variant = V_SgMicrosoftAttributeDeclaration };
172242 
172243  /* the generated cast function */
172245  ROSE_DLL_API friend SgMicrosoftAttributeDeclaration* isSgMicrosoftAttributeDeclaration( SgNode * s );
172246 
172248  ROSE_DLL_API friend const SgMicrosoftAttributeDeclaration* isSgMicrosoftAttributeDeclaration( const SgNode * s );
172249 
172250  // ******************************************
172251  // * Memory Pool / New / Delete
172252  // ******************************************
172253 
172254  public:
172256  static const unsigned pool_size; //
172258  static std::vector<unsigned char *> pools; //
172260  static SgMicrosoftAttributeDeclaration * next_node; //
172261 
172263  static unsigned long initializeStorageClassArray(SgMicrosoftAttributeDeclarationStorageClass *); //
172264 
172266  static void clearMemoryPool(); //
172267  static void deleteMemoryPool(); //
172268 
172270  static void extendMemoryPoolForFileIO(); //
172271 
172273  static SgMicrosoftAttributeDeclaration * getPointerFromGlobalIndex(unsigned long); //
172275  static SgMicrosoftAttributeDeclaration * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
172276 
172278  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
172280  static void resetValidFreepointers(); //
172282  static unsigned long getNumberOfLastValidPointer(); //
172283 
172284 
172285 #if defined(INLINE_FUNCTIONS)
172286 
172287  inline void *operator new (size_t size);
172288 #else
172289 
172290  void *operator new (size_t size);
172291 #endif
172292 
172293  void operator delete (void* pointer, size_t size);
172294 
172295  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
172296  void operator delete (void* pointer)
172297  {
172298  // This is the generated delete operator...
172299  SgMicrosoftAttributeDeclaration::operator delete (pointer,sizeof(SgMicrosoftAttributeDeclaration));
172300  }
172301 
172303  static size_t numberOfNodes();
172304 
172306  static size_t memoryUsage();
172307 
172308  // End of scope which started in IR nodes specific code
172309  /* */
172310 
172311  /* name Internal Functions
172312  \brief Internal functions ... incomplete-documentation
172313 
172314  These functions have been made public as part of the design, but they are suggested for internal use
172315  or by particularly knowledgeable users for specialized tools or applications.
172316 
172317  \internal We could not make these private because they are required by user for special purposes. And
172318  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
172319 
172320  */
172321 
172322  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
172323  // overridden in every class by *generated* implementation
172325  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
172326  // MS: 06/28/02 container of names of variables or container indices
172327  // used used in the traversal to access AST successor nodes
172328  // overridden in every class by *generated* implementation
172331  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
172332 
172333  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
172334  // than all the vector copies. The implementation for these functions is generated for each class.
172336  virtual size_t get_numberOfTraversalSuccessors() override;
172338  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
172340  virtual size_t get_childIndex(SgNode *child) override;
172341 
172342 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
172343  // MS: 08/16/2002 method for generating RTI information
172345  virtual RTIReturnType roseRTI() override;
172346 #endif
172347  /* */
172348 
172349 
172350 
172351  /* name Deprecated Functions
172352  \brief Deprecated functions ... incomplete-documentation
172353 
172354  These functions have been deprecated from use.
172355  */
172356  /* */
172357 
172359  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
172360 
172361  // JJW (10/16/2008): Changed to a single function in Node.code, and put
172362  // getVariant() in #if 0 block to prevent confusing Doxygen
172363 #if 0
172364 
172365  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
172367  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
172368 #endif
172369  /* */
172370 
172371 
172372 
172373 
172374  public:
172375  /* name Traversal Support Functions
172376  \brief Traversal support functions ... incomplete-documentation
172377 
172378  These functions have been made public as part of the design, but they are suggested for internal use
172379  or by particularly knowledgable users for specialized tools or applications.
172380  */
172381  /* */
172382 
172383  // DQ (11/26/2005): Support for visitor pattern mechanims
172384  // (inferior to ROSE traversal mechanism, experimental).
172388 
172389  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
172391  virtual void accept (ROSE_VisitorPattern & visitor) override;
172392 
172393  // DQ (12/26/2005): Support for traversal based on the memory pool
172396  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
172397 
172400  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
172401 
172402  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
172403  // This traversal helps support internal tools that call static member functions.
172404  // note: this function operates on the memory pools.
172407  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
172408  /* */
172409 
172410 
172411  public:
172412  /* name Memory Allocation Functions
172413  \brief Memory allocations functions ... incomplete-documentation
172414 
172415  These functions have been made public as part of the design, but they are suggested for internal use
172416  or by particularly knowledgable users for specialized tools or applications.
172417  */
172418  /* */
172419 
172430  virtual bool isInMemoryPool() override;
172431 
172442  virtual void checkDataMemberPointersIfInMemoryPool() override;
172443 
172444  // DQ (4/30/2006): Modified to be a const function.
172459  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
172460 
172470  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
172471 
172483  virtual long getChildIndex( SgNode* childNode ) const override;
172484 
172485  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
172486  // comment here (changed to be a C style comment and not be a doxygen comment).
172487  /* \brief Constructor for use by AST File I/O Mechanism
172488 
172489  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
172490  which obtained via fast binary file I/O from disk.
172491  */
172492  // SgMicrosoftAttributeDeclaration( SgMicrosoftAttributeDeclarationStorageClass& source );
172493 
172494 
172495 
172496 
172497 
172498  // JH (10/24/2005): methods added to support the ast file IO
172499  private:
172500 
172501  /* name AST Memory Allocation Support Functions
172502  \brief Memory allocations support....
172503 
172504  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
172505  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
172506  and support the AST File I/O Mechanism.
172507  */
172508  /* */
172509 
172510  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
172511  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
172512  that I use the same type everywhere, if any changes are made. THe second one declares the type
172513  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
172514  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
172515  a correspinding one in the AST_FILE_IO class!
172516  */
172517  // DQ (9/2/2015): This typedef is no longer used, we can't define the
172518  // comment here (changed to be a C style comment and not be a doxygen comment).
172519  /* \brief Typedef used for low level memory access.
172520  */
172521  // typedef unsigned char* TestType;
172522 
172523  // DQ (9/2/2015): This typedef is no longer used, we can't define the
172524  // comment here (changed to be a C style comment and not be a doxygen comment).
172525  /* \brief Typedef used to hold memory addresses as values.
172526  */
172527  // typedef unsigned long AddressType;
172528 
172529 
172530 
172531  // necessary, to have direct access to the p_freepointer and the private methods !
172533  friend class AST_FILE_IO;
172534 
172536  friend class SgMicrosoftAttributeDeclarationStorageClass;
172537 
172539  friend class AstSpecificDataManagingClass;
172540 
172542  friend class AstSpecificDataManagingClassStorageClass;
172543 
172544  public:
172546  SgMicrosoftAttributeDeclaration( const SgMicrosoftAttributeDeclarationStorageClass& source );
172547 
172548  // private: // JJW hack
172549  /*
172550  name AST Memory Allocation Support Variables
172551  Memory allocations support variables
172552 
172553  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
172554  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
172555  and support the AST File I/O Mechanism.
172556  */
172557  /* */
172558 
172559  public:
172560 
172561  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
172562  // to current node (so that it will work cleanly with build functions to specify patterns).
172563  // virtual SgNode* addRegExpAttribute();
172570 
172571 // *** COMMON CODE SECTION ENDS HERE ***
172572 
172573 
172574 // End of memberFunctionString
172575 // Start of memberFunctionString
172576 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
172577 
172578  // the generated cast function
172579  // friend ROSE_DLL_API SgMicrosoftAttributeDeclaration* isSgMicrosoftAttributeDeclaration ( SgNode* s );
172580 
172582 
172583 
172584 // End of memberFunctionString
172585 // Start of memberFunctionString
172586 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
172587 
172588  void post_construction_initialization() override;
172589 
172590 
172591 // End of memberFunctionString
172592 
172593  public:
172594  SgName get_attribute_string() const;
172595  void set_attribute_string(SgName attribute_string);
172596 
172597 
172598  public:
172599  virtual ~SgMicrosoftAttributeDeclaration();
172600 
172601 
172602  public:
172603  SgMicrosoftAttributeDeclaration(Sg_File_Info* startOfConstruct , SgName attribute_string = "");
172604  SgMicrosoftAttributeDeclaration(SgName attribute_string);
172605 
172606  protected:
172607 // Start of memberFunctionString
172608 SgName p_attribute_string;
172609 
172610 // End of memberFunctionString
172611 
172612 
172613 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
172614 
172615 
172616  };
172617 #endif
172618 
172619 // postdeclarations for SgMicrosoftAttributeDeclaration
172620 
172621 /* #line 172622 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
172622 
172623 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
172624 
172625 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
172626 
172627 
172628 /* #line 172629 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
172629 
172630 
172631 
172632 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
172633 
172634 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
172635 // This code is automatically generated for each
172636 // terminal and non-terminal within the defined
172637 // grammar. There is a simple way to change the
172638 // code to fix bugs etc. See the ROSE README file
172639 // for directions.
172640 
172641 // tps: (02/22/2010): Adding DLL export requirements
172642 #include "rosedll.h"
172643 
172644 // predeclarations for SgNonrealDecl
172645 
172646 /* #line 172647 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
172647 
172648 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
172649 
172650 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
172651 
172652 #if 1
172653 // Class Definition for SgNonrealDecl
172654 class ROSE_DLL_API SgNonrealDecl : public SgDeclarationStatement
172655  {
172656  public:
172657 
172658 
172659 /* #line 172660 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
172660 
172661  virtual SgNode* copy ( SgCopyHelp& help) const override;
172662 // Start of memberFunctionString
172663 /* #line 2742 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
172664 
172665 
172666  SgName get_name (void) const;
172667  void set_name (SgName name);
172668 
172669  SgNonrealType* get_type (void) const;
172670  void set_type (SgNonrealType* t);
172671 
172672  SgName get_mangled_name (void) const override;
172673 
172674  virtual SgSymbol* get_symbol_from_symbol_table() const override;
172675  SgName get_qualified_name() const;
172676 
172677 
172678 
172679 // End of memberFunctionString
172680 // Start of memberFunctionString
172681 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
172682 
172683 // *** COMMON CODE SECTION BEGINS HERE ***
172684 
172685  public:
172686 
172687  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
172688  // and not required which is required to match the other aspects of the copy mechanism code generation.
172689  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
172690  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
172691  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
172692  // virtual SgNode* copy ( const SgCopyHelp & help) const;
172693 
172695  virtual std::string class_name() const override;
172696 
172698  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
172699 
172701  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
172702  // static const VariantT static_variant = V_SgNonrealDecl;
172703  enum { static_variant = V_SgNonrealDecl };
172704 
172705  /* the generated cast function */
172707  ROSE_DLL_API friend SgNonrealDecl* isSgNonrealDecl( SgNode * s );
172708 
172710  ROSE_DLL_API friend const SgNonrealDecl* isSgNonrealDecl( const SgNode * s );
172711 
172712  // ******************************************
172713  // * Memory Pool / New / Delete
172714  // ******************************************
172715 
172716  public:
172718  static const unsigned pool_size; //
172720  static std::vector<unsigned char *> pools; //
172722  static SgNonrealDecl * next_node; //
172723 
172725  static unsigned long initializeStorageClassArray(SgNonrealDeclStorageClass *); //
172726 
172728  static void clearMemoryPool(); //
172729  static void deleteMemoryPool(); //
172730 
172732  static void extendMemoryPoolForFileIO(); //
172733 
172735  static SgNonrealDecl * getPointerFromGlobalIndex(unsigned long); //
172737  static SgNonrealDecl * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
172738 
172740  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
172742  static void resetValidFreepointers(); //
172744  static unsigned long getNumberOfLastValidPointer(); //
172745 
172746 
172747 #if defined(INLINE_FUNCTIONS)
172748 
172749  inline void *operator new (size_t size);
172750 #else
172751 
172752  void *operator new (size_t size);
172753 #endif
172754 
172755  void operator delete (void* pointer, size_t size);
172756 
172757  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
172758  void operator delete (void* pointer)
172759  {
172760  // This is the generated delete operator...
172761  SgNonrealDecl::operator delete (pointer,sizeof(SgNonrealDecl));
172762  }
172763 
172765  static size_t numberOfNodes();
172766 
172768  static size_t memoryUsage();
172769 
172770  // End of scope which started in IR nodes specific code
172771  /* */
172772 
172773  /* name Internal Functions
172774  \brief Internal functions ... incomplete-documentation
172775 
172776  These functions have been made public as part of the design, but they are suggested for internal use
172777  or by particularly knowledgeable users for specialized tools or applications.
172778 
172779  \internal We could not make these private because they are required by user for special purposes. And
172780  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
172781 
172782  */
172783 
172784  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
172785  // overridden in every class by *generated* implementation
172787  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
172788  // MS: 06/28/02 container of names of variables or container indices
172789  // used used in the traversal to access AST successor nodes
172790  // overridden in every class by *generated* implementation
172793  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
172794 
172795  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
172796  // than all the vector copies. The implementation for these functions is generated for each class.
172798  virtual size_t get_numberOfTraversalSuccessors() override;
172800  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
172802  virtual size_t get_childIndex(SgNode *child) override;
172803 
172804 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
172805  // MS: 08/16/2002 method for generating RTI information
172807  virtual RTIReturnType roseRTI() override;
172808 #endif
172809  /* */
172810 
172811 
172812 
172813  /* name Deprecated Functions
172814  \brief Deprecated functions ... incomplete-documentation
172815 
172816  These functions have been deprecated from use.
172817  */
172818  /* */
172819 
172821  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
172822 
172823  // JJW (10/16/2008): Changed to a single function in Node.code, and put
172824  // getVariant() in #if 0 block to prevent confusing Doxygen
172825 #if 0
172826 
172827  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
172829  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
172830 #endif
172831  /* */
172832 
172833 
172834 
172835 
172836  public:
172837  /* name Traversal Support Functions
172838  \brief Traversal support functions ... incomplete-documentation
172839 
172840  These functions have been made public as part of the design, but they are suggested for internal use
172841  or by particularly knowledgable users for specialized tools or applications.
172842  */
172843  /* */
172844 
172845  // DQ (11/26/2005): Support for visitor pattern mechanims
172846  // (inferior to ROSE traversal mechanism, experimental).
172850 
172851  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
172853  virtual void accept (ROSE_VisitorPattern & visitor) override;
172854 
172855  // DQ (12/26/2005): Support for traversal based on the memory pool
172858  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
172859 
172862  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
172863 
172864  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
172865  // This traversal helps support internal tools that call static member functions.
172866  // note: this function operates on the memory pools.
172869  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
172870  /* */
172871 
172872 
172873  public:
172874  /* name Memory Allocation Functions
172875  \brief Memory allocations functions ... incomplete-documentation
172876 
172877  These functions have been made public as part of the design, but they are suggested for internal use
172878  or by particularly knowledgable users for specialized tools or applications.
172879  */
172880  /* */
172881 
172892  virtual bool isInMemoryPool() override;
172893 
172904  virtual void checkDataMemberPointersIfInMemoryPool() override;
172905 
172906  // DQ (4/30/2006): Modified to be a const function.
172921  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
172922 
172932  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
172933 
172945  virtual long getChildIndex( SgNode* childNode ) const override;
172946 
172947  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
172948  // comment here (changed to be a C style comment and not be a doxygen comment).
172949  /* \brief Constructor for use by AST File I/O Mechanism
172950 
172951  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
172952  which obtained via fast binary file I/O from disk.
172953  */
172954  // SgNonrealDecl( SgNonrealDeclStorageClass& source );
172955 
172956 
172957 
172958 
172959 
172960  // JH (10/24/2005): methods added to support the ast file IO
172961  private:
172962 
172963  /* name AST Memory Allocation Support Functions
172964  \brief Memory allocations support....
172965 
172966  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
172967  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
172968  and support the AST File I/O Mechanism.
172969  */
172970  /* */
172971 
172972  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
172973  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
172974  that I use the same type everywhere, if any changes are made. THe second one declares the type
172975  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
172976  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
172977  a correspinding one in the AST_FILE_IO class!
172978  */
172979  // DQ (9/2/2015): This typedef is no longer used, we can't define the
172980  // comment here (changed to be a C style comment and not be a doxygen comment).
172981  /* \brief Typedef used for low level memory access.
172982  */
172983  // typedef unsigned char* TestType;
172984 
172985  // DQ (9/2/2015): This typedef is no longer used, we can't define the
172986  // comment here (changed to be a C style comment and not be a doxygen comment).
172987  /* \brief Typedef used to hold memory addresses as values.
172988  */
172989  // typedef unsigned long AddressType;
172990 
172991 
172992 
172993  // necessary, to have direct access to the p_freepointer and the private methods !
172995  friend class AST_FILE_IO;
172996 
172998  friend class SgNonrealDeclStorageClass;
172999 
173001  friend class AstSpecificDataManagingClass;
173002 
173004  friend class AstSpecificDataManagingClassStorageClass;
173005 
173006  public:
173008  SgNonrealDecl( const SgNonrealDeclStorageClass& source );
173009 
173010  // private: // JJW hack
173011  /*
173012  name AST Memory Allocation Support Variables
173013  Memory allocations support variables
173014 
173015  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
173016  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
173017  and support the AST File I/O Mechanism.
173018  */
173019  /* */
173020 
173021  public:
173022 
173023  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
173024  // to current node (so that it will work cleanly with build functions to specify patterns).
173025  // virtual SgNode* addRegExpAttribute();
173031  SgNonrealDecl* addRegExpAttribute(std::string s, AstRegExAttribute* a);
173032 
173033 // *** COMMON CODE SECTION ENDS HERE ***
173034 
173035 
173036 // End of memberFunctionString
173037 // Start of memberFunctionString
173038 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
173039 
173040  // the generated cast function
173041  // friend ROSE_DLL_API SgNonrealDecl* isSgNonrealDecl ( SgNode* s );
173042 
173044 
173045 
173046 // End of memberFunctionString
173047 // Start of memberFunctionString
173048 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
173049 
173050  void post_construction_initialization() override;
173051 
173052 
173053 // End of memberFunctionString
173054 
173055 
173056  public:
173057  SgDeclarationScope* get_nonreal_decl_scope() const;
173058  void set_nonreal_decl_scope(SgDeclarationScope* nonreal_decl_scope);
173059 
173060 
173061  public:
173062  int get_template_parameter_position() const;
173063  void set_template_parameter_position(int template_parameter_position);
173064 
173065  public:
173066  int get_template_parameter_depth() const;
173067  void set_template_parameter_depth(int template_parameter_depth);
173068 
173069  public:
173070  SgDeclarationStatement* get_templateDeclaration() const;
173071  void set_templateDeclaration(SgDeclarationStatement* templateDeclaration);
173072 
173073  public:
173074  const SgTemplateArgumentPtrList& get_tpl_args() const;
173075  SgTemplateArgumentPtrList& get_tpl_args();
173076 
173077  public:
173078  const SgTemplateParameterPtrList& get_tpl_params() const;
173079  SgTemplateParameterPtrList& get_tpl_params();
173080 
173081  public:
173082  bool get_is_class_member() const;
173083  void set_is_class_member(bool is_class_member);
173084 
173085  public:
173086  bool get_is_template_param() const;
173087  void set_is_template_param(bool is_template_param);
173088 
173089  public:
173090  bool get_is_template_template_param() const;
173091  void set_is_template_template_param(bool is_template_template_param);
173092 
173093  public:
173094  bool get_is_nonreal_template() const;
173095  void set_is_nonreal_template(bool is_nonreal_template);
173096 
173097  public:
173098  bool get_is_nonreal_function() const;
173099  void set_is_nonreal_function(bool is_nonreal_function);
173100 
173101 
173102  public:
173103  virtual ~SgNonrealDecl();
173104 
173105 
173106  public:
173107  SgNonrealDecl(Sg_File_Info* startOfConstruct , SgName name = "");
173108  SgNonrealDecl(SgName name);
173109 
173110  protected:
173111 // Start of memberFunctionString
173112 SgName p_name;
173113 
173114 // End of memberFunctionString
173115 // Start of memberFunctionString
173116 SgDeclarationScope* p_nonreal_decl_scope;
173117 
173118 // End of memberFunctionString
173119 // Start of memberFunctionString
173120 SgNonrealType* p_type;
173121 
173122 // End of memberFunctionString
173123 // Start of memberFunctionString
173124 int p_template_parameter_position;
173125 
173126 // End of memberFunctionString
173127 // Start of memberFunctionString
173128 int p_template_parameter_depth;
173129 
173130 // End of memberFunctionString
173131 // Start of memberFunctionString
173132 SgDeclarationStatement* p_templateDeclaration;
173133 
173134 // End of memberFunctionString
173135 // Start of memberFunctionString
173136 SgTemplateArgumentPtrList p_tpl_args;
173137 
173138 // End of memberFunctionString
173139 // Start of memberFunctionString
173140 SgTemplateParameterPtrList p_tpl_params;
173141 
173142 // End of memberFunctionString
173143 // Start of memberFunctionString
173144 bool p_is_class_member;
173145 
173146 // End of memberFunctionString
173147 // Start of memberFunctionString
173148 bool p_is_template_param;
173149 
173150 // End of memberFunctionString
173151 // Start of memberFunctionString
173152 bool p_is_template_template_param;
173153 
173154 // End of memberFunctionString
173155 // Start of memberFunctionString
173156 bool p_is_nonreal_template;
173157 
173158 // End of memberFunctionString
173159 // Start of memberFunctionString
173160 bool p_is_nonreal_function;
173161 
173162 // End of memberFunctionString
173163 
173164 
173165 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
173166 
173167 
173168  };
173169 #endif
173170 
173171 // postdeclarations for SgNonrealDecl
173172 
173173 /* #line 173174 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
173174 
173175 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
173176 
173177 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
173178 
173179 
173180 /* #line 173181 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
173181 
173182 
173183 
173184 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
173185 
173186 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
173187 // This code is automatically generated for each
173188 // terminal and non-terminal within the defined
173189 // grammar. There is a simple way to change the
173190 // code to fix bugs etc. See the ROSE README file
173191 // for directions.
173192 
173193 // tps: (02/22/2010): Adding DLL export requirements
173194 #include "rosedll.h"
173195 
173196 // predeclarations for SgEmptyDeclaration
173197 
173198 /* #line 173199 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
173199 
173200 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
173201 
173202 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
173203 
173204 #if 1
173205 // Class Definition for SgEmptyDeclaration
173206 class ROSE_DLL_API SgEmptyDeclaration : public SgDeclarationStatement
173207  {
173208  public:
173209 
173210 
173211 /* #line 173212 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
173212 
173213  virtual SgNode* copy ( SgCopyHelp& help) const override;
173214 // Start of memberFunctionString
173215 /* #line 3039 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
173216 
173217 
173218  // DQ (2/18/2006): Added general name mangling for all declarations (and some other IR nodes).
173219  virtual SgName get_mangled_name(void) const override;
173220 
173221 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
173222  virtual unsigned int cfgIndexForEnd() const override;
173223  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
173224  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
173225 #endif
173226 
173227  // DQ (11/24/2020): Adding support for explicit scope to be false.
173228  virtual bool hasExplicitScope() const override;
173229 
173230 
173231 
173232 // End of memberFunctionString
173233 // Start of memberFunctionString
173234 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
173235 
173236 // *** COMMON CODE SECTION BEGINS HERE ***
173237 
173238  public:
173239 
173240  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
173241  // and not required which is required to match the other aspects of the copy mechanism code generation.
173242  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
173243  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
173244  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
173245  // virtual SgNode* copy ( const SgCopyHelp & help) const;
173246 
173248  virtual std::string class_name() const override;
173249 
173251  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
173252 
173254  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
173255  // static const VariantT static_variant = V_SgEmptyDeclaration;
173256  enum { static_variant = V_SgEmptyDeclaration };
173257 
173258  /* the generated cast function */
173260  ROSE_DLL_API friend SgEmptyDeclaration* isSgEmptyDeclaration( SgNode * s );
173261 
173263  ROSE_DLL_API friend const SgEmptyDeclaration* isSgEmptyDeclaration( const SgNode * s );
173264 
173265  // ******************************************
173266  // * Memory Pool / New / Delete
173267  // ******************************************
173268 
173269  public:
173271  static const unsigned pool_size; //
173273  static std::vector<unsigned char *> pools; //
173275  static SgEmptyDeclaration * next_node; //
173276 
173278  static unsigned long initializeStorageClassArray(SgEmptyDeclarationStorageClass *); //
173279 
173281  static void clearMemoryPool(); //
173282  static void deleteMemoryPool(); //
173283 
173285  static void extendMemoryPoolForFileIO(); //
173286 
173288  static SgEmptyDeclaration * getPointerFromGlobalIndex(unsigned long); //
173290  static SgEmptyDeclaration * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
173291 
173293  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
173295  static void resetValidFreepointers(); //
173297  static unsigned long getNumberOfLastValidPointer(); //
173298 
173299 
173300 #if defined(INLINE_FUNCTIONS)
173301 
173302  inline void *operator new (size_t size);
173303 #else
173304 
173305  void *operator new (size_t size);
173306 #endif
173307 
173308  void operator delete (void* pointer, size_t size);
173309 
173310  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
173311  void operator delete (void* pointer)
173312  {
173313  // This is the generated delete operator...
173314  SgEmptyDeclaration::operator delete (pointer,sizeof(SgEmptyDeclaration));
173315  }
173316 
173318  static size_t numberOfNodes();
173319 
173321  static size_t memoryUsage();
173322 
173323  // End of scope which started in IR nodes specific code
173324  /* */
173325 
173326  /* name Internal Functions
173327  \brief Internal functions ... incomplete-documentation
173328 
173329  These functions have been made public as part of the design, but they are suggested for internal use
173330  or by particularly knowledgeable users for specialized tools or applications.
173331 
173332  \internal We could not make these private because they are required by user for special purposes. And
173333  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
173334 
173335  */
173336 
173337  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
173338  // overridden in every class by *generated* implementation
173340  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
173341  // MS: 06/28/02 container of names of variables or container indices
173342  // used used in the traversal to access AST successor nodes
173343  // overridden in every class by *generated* implementation
173346  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
173347 
173348  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
173349  // than all the vector copies. The implementation for these functions is generated for each class.
173351  virtual size_t get_numberOfTraversalSuccessors() override;
173353  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
173355  virtual size_t get_childIndex(SgNode *child) override;
173356 
173357 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
173358  // MS: 08/16/2002 method for generating RTI information
173360  virtual RTIReturnType roseRTI() override;
173361 #endif
173362  /* */
173363 
173364 
173365 
173366  /* name Deprecated Functions
173367  \brief Deprecated functions ... incomplete-documentation
173368 
173369  These functions have been deprecated from use.
173370  */
173371  /* */
173372 
173374  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
173375 
173376  // JJW (10/16/2008): Changed to a single function in Node.code, and put
173377  // getVariant() in #if 0 block to prevent confusing Doxygen
173378 #if 0
173379 
173380  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
173382  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
173383 #endif
173384  /* */
173385 
173386 
173387 
173388 
173389  public:
173390  /* name Traversal Support Functions
173391  \brief Traversal support functions ... incomplete-documentation
173392 
173393  These functions have been made public as part of the design, but they are suggested for internal use
173394  or by particularly knowledgable users for specialized tools or applications.
173395  */
173396  /* */
173397 
173398  // DQ (11/26/2005): Support for visitor pattern mechanims
173399  // (inferior to ROSE traversal mechanism, experimental).
173403 
173404  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
173406  virtual void accept (ROSE_VisitorPattern & visitor) override;
173407 
173408  // DQ (12/26/2005): Support for traversal based on the memory pool
173411  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
173412 
173415  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
173416 
173417  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
173418  // This traversal helps support internal tools that call static member functions.
173419  // note: this function operates on the memory pools.
173422  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
173423  /* */
173424 
173425 
173426  public:
173427  /* name Memory Allocation Functions
173428  \brief Memory allocations functions ... incomplete-documentation
173429 
173430  These functions have been made public as part of the design, but they are suggested for internal use
173431  or by particularly knowledgable users for specialized tools or applications.
173432  */
173433  /* */
173434 
173445  virtual bool isInMemoryPool() override;
173446 
173457  virtual void checkDataMemberPointersIfInMemoryPool() override;
173458 
173459  // DQ (4/30/2006): Modified to be a const function.
173474  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
173475 
173485  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
173486 
173498  virtual long getChildIndex( SgNode* childNode ) const override;
173499 
173500  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
173501  // comment here (changed to be a C style comment and not be a doxygen comment).
173502  /* \brief Constructor for use by AST File I/O Mechanism
173503 
173504  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
173505  which obtained via fast binary file I/O from disk.
173506  */
173507  // SgEmptyDeclaration( SgEmptyDeclarationStorageClass& source );
173508 
173509 
173510 
173511 
173512 
173513  // JH (10/24/2005): methods added to support the ast file IO
173514  private:
173515 
173516  /* name AST Memory Allocation Support Functions
173517  \brief Memory allocations support....
173518 
173519  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
173520  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
173521  and support the AST File I/O Mechanism.
173522  */
173523  /* */
173524 
173525  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
173526  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
173527  that I use the same type everywhere, if any changes are made. THe second one declares the type
173528  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
173529  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
173530  a correspinding one in the AST_FILE_IO class!
173531  */
173532  // DQ (9/2/2015): This typedef is no longer used, we can't define the
173533  // comment here (changed to be a C style comment and not be a doxygen comment).
173534  /* \brief Typedef used for low level memory access.
173535  */
173536  // typedef unsigned char* TestType;
173537 
173538  // DQ (9/2/2015): This typedef is no longer used, we can't define the
173539  // comment here (changed to be a C style comment and not be a doxygen comment).
173540  /* \brief Typedef used to hold memory addresses as values.
173541  */
173542  // typedef unsigned long AddressType;
173543 
173544 
173545 
173546  // necessary, to have direct access to the p_freepointer and the private methods !
173548  friend class AST_FILE_IO;
173549 
173551  friend class SgEmptyDeclarationStorageClass;
173552 
173554  friend class AstSpecificDataManagingClass;
173555 
173557  friend class AstSpecificDataManagingClassStorageClass;
173558 
173559  public:
173561  SgEmptyDeclaration( const SgEmptyDeclarationStorageClass& source );
173562 
173563  // private: // JJW hack
173564  /*
173565  name AST Memory Allocation Support Variables
173566  Memory allocations support variables
173567 
173568  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
173569  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
173570  and support the AST File I/O Mechanism.
173571  */
173572  /* */
173573 
173574  public:
173575 
173576  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
173577  // to current node (so that it will work cleanly with build functions to specify patterns).
173578  // virtual SgNode* addRegExpAttribute();
173585 
173586 // *** COMMON CODE SECTION ENDS HERE ***
173587 
173588 
173589 // End of memberFunctionString
173590 // Start of memberFunctionString
173591 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
173592 
173593  // the generated cast function
173594  // friend ROSE_DLL_API SgEmptyDeclaration* isSgEmptyDeclaration ( SgNode* s );
173595 
173597 
173598 
173599 // End of memberFunctionString
173600 // Start of memberFunctionString
173601 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
173602 
173603  void post_construction_initialization() override;
173604 
173605 
173606 // End of memberFunctionString
173607 
173608 
173609  public:
173610  virtual ~SgEmptyDeclaration();
173611 
173612 
173613  public:
173614  SgEmptyDeclaration(Sg_File_Info* startOfConstruct );
173615  SgEmptyDeclaration();
173616 
173617  protected:
173618 
173619 
173620 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
173621 
173622 
173623  };
173624 #endif
173625 
173626 // postdeclarations for SgEmptyDeclaration
173627 
173628 /* #line 173629 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
173629 
173630 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
173631 
173632 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
173633 
173634 
173635 /* #line 173636 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
173636 
173637 
173638 
173639 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
173640 
173641 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
173642 // This code is automatically generated for each
173643 // terminal and non-terminal within the defined
173644 // grammar. There is a simple way to change the
173645 // code to fix bugs etc. See the ROSE README file
173646 // for directions.
173647 
173648 // tps: (02/22/2010): Adding DLL export requirements
173649 #include "rosedll.h"
173650 
173651 // predeclarations for SgExprStatement
173652 
173653 /* #line 173654 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
173654 
173655 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
173656 
173657 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
173658 
173659 #if 1
173660 // Class Definition for SgExprStatement
173661 class ROSE_DLL_API SgExprStatement : public SgStatement
173662  {
173663  public:
173664 
173665 
173666 /* #line 173667 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
173667 
173668  virtual SgNode* copy ( SgCopyHelp& help) const override;
173669 // Start of memberFunctionString
173670 /* #line 2240 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
173671 
173672 
173673 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
173674  virtual unsigned int cfgIndexForEnd() const override;
173675  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
173676  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
173677 #endif
173678 
173679  // DQ (12/6/2006): Added to support general replace functions.
173680  int replace_expression(SgExpression *,SgExpression *) override;
173681 
173682 #if ALT_FIXUP_COPY
173683  // DQ (11/7/2007): These need to be called separately (see documentation)
173684  virtual void fixupCopy_scopes (SgNode* copy, SgCopyHelp & help) const override;
173685  virtual void fixupCopy_symbols (SgNode* copy, SgCopyHelp & help) const override;
173686  virtual void fixupCopy_references (SgNode* copy, SgCopyHelp & help) const override;
173687 #else
173688  // DQ (10/5/2007): Added fixup function to set scopes not set properly by the ROSETTA generated copy!
173689  virtual void fixupCopy(SgNode* copy, SgCopyHelp & help) const;
173690 #endif
173691 
173692 
173693 
173694 // End of memberFunctionString
173695 // Start of memberFunctionString
173696 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
173697 
173698 // *** COMMON CODE SECTION BEGINS HERE ***
173699 
173700  public:
173701 
173702  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
173703  // and not required which is required to match the other aspects of the copy mechanism code generation.
173704  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
173705  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
173706  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
173707  // virtual SgNode* copy ( const SgCopyHelp & help) const;
173708 
173710  virtual std::string class_name() const override;
173711 
173713  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
173714 
173716  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
173717  // static const VariantT static_variant = V_SgExprStatement;
173718  enum { static_variant = V_SgExprStatement };
173719 
173720  /* the generated cast function */
173722  ROSE_DLL_API friend SgExprStatement* isSgExprStatement( SgNode * s );
173723 
173725  ROSE_DLL_API friend const SgExprStatement* isSgExprStatement( const SgNode * s );
173726 
173727  // ******************************************
173728  // * Memory Pool / New / Delete
173729  // ******************************************
173730 
173731  public:
173733  static const unsigned pool_size; //
173735  static std::vector<unsigned char *> pools; //
173737  static SgExprStatement * next_node; //
173738 
173740  static unsigned long initializeStorageClassArray(SgExprStatementStorageClass *); //
173741 
173743  static void clearMemoryPool(); //
173744  static void deleteMemoryPool(); //
173745 
173747  static void extendMemoryPoolForFileIO(); //
173748 
173750  static SgExprStatement * getPointerFromGlobalIndex(unsigned long); //
173752  static SgExprStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
173753 
173755  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
173757  static void resetValidFreepointers(); //
173759  static unsigned long getNumberOfLastValidPointer(); //
173760 
173761 
173762 #if defined(INLINE_FUNCTIONS)
173763 
173764  inline void *operator new (size_t size);
173765 #else
173766 
173767  void *operator new (size_t size);
173768 #endif
173769 
173770  void operator delete (void* pointer, size_t size);
173771 
173772  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
173773  void operator delete (void* pointer)
173774  {
173775  // This is the generated delete operator...
173776  SgExprStatement::operator delete (pointer,sizeof(SgExprStatement));
173777  }
173778 
173780  static size_t numberOfNodes();
173781 
173783  static size_t memoryUsage();
173784 
173785  // End of scope which started in IR nodes specific code
173786  /* */
173787 
173788  /* name Internal Functions
173789  \brief Internal functions ... incomplete-documentation
173790 
173791  These functions have been made public as part of the design, but they are suggested for internal use
173792  or by particularly knowledgeable users for specialized tools or applications.
173793 
173794  \internal We could not make these private because they are required by user for special purposes. And
173795  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
173796 
173797  */
173798 
173799  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
173800  // overridden in every class by *generated* implementation
173802  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
173803  // MS: 06/28/02 container of names of variables or container indices
173804  // used used in the traversal to access AST successor nodes
173805  // overridden in every class by *generated* implementation
173808  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
173809 
173810  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
173811  // than all the vector copies. The implementation for these functions is generated for each class.
173813  virtual size_t get_numberOfTraversalSuccessors() override;
173815  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
173817  virtual size_t get_childIndex(SgNode *child) override;
173818 
173819 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
173820  // MS: 08/16/2002 method for generating RTI information
173822  virtual RTIReturnType roseRTI() override;
173823 #endif
173824  /* */
173825 
173826 
173827 
173828  /* name Deprecated Functions
173829  \brief Deprecated functions ... incomplete-documentation
173830 
173831  These functions have been deprecated from use.
173832  */
173833  /* */
173834 
173836  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
173837 
173838  // JJW (10/16/2008): Changed to a single function in Node.code, and put
173839  // getVariant() in #if 0 block to prevent confusing Doxygen
173840 #if 0
173841 
173842  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
173844  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
173845 #endif
173846  /* */
173847 
173848 
173849 
173850 
173851  public:
173852  /* name Traversal Support Functions
173853  \brief Traversal support functions ... incomplete-documentation
173854 
173855  These functions have been made public as part of the design, but they are suggested for internal use
173856  or by particularly knowledgable users for specialized tools or applications.
173857  */
173858  /* */
173859 
173860  // DQ (11/26/2005): Support for visitor pattern mechanims
173861  // (inferior to ROSE traversal mechanism, experimental).
173865 
173866  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
173868  virtual void accept (ROSE_VisitorPattern & visitor) override;
173869 
173870  // DQ (12/26/2005): Support for traversal based on the memory pool
173873  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
173874 
173877  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
173878 
173879  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
173880  // This traversal helps support internal tools that call static member functions.
173881  // note: this function operates on the memory pools.
173884  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
173885  /* */
173886 
173887 
173888  public:
173889  /* name Memory Allocation Functions
173890  \brief Memory allocations functions ... incomplete-documentation
173891 
173892  These functions have been made public as part of the design, but they are suggested for internal use
173893  or by particularly knowledgable users for specialized tools or applications.
173894  */
173895  /* */
173896 
173907  virtual bool isInMemoryPool() override;
173908 
173919  virtual void checkDataMemberPointersIfInMemoryPool() override;
173920 
173921  // DQ (4/30/2006): Modified to be a const function.
173936  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
173937 
173947  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
173948 
173960  virtual long getChildIndex( SgNode* childNode ) const override;
173961 
173962  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
173963  // comment here (changed to be a C style comment and not be a doxygen comment).
173964  /* \brief Constructor for use by AST File I/O Mechanism
173965 
173966  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
173967  which obtained via fast binary file I/O from disk.
173968  */
173969  // SgExprStatement( SgExprStatementStorageClass& source );
173970 
173971 
173972 
173973 
173974 
173975  // JH (10/24/2005): methods added to support the ast file IO
173976  private:
173977 
173978  /* name AST Memory Allocation Support Functions
173979  \brief Memory allocations support....
173980 
173981  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
173982  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
173983  and support the AST File I/O Mechanism.
173984  */
173985  /* */
173986 
173987  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
173988  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
173989  that I use the same type everywhere, if any changes are made. THe second one declares the type
173990  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
173991  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
173992  a correspinding one in the AST_FILE_IO class!
173993  */
173994  // DQ (9/2/2015): This typedef is no longer used, we can't define the
173995  // comment here (changed to be a C style comment and not be a doxygen comment).
173996  /* \brief Typedef used for low level memory access.
173997  */
173998  // typedef unsigned char* TestType;
173999 
174000  // DQ (9/2/2015): This typedef is no longer used, we can't define the
174001  // comment here (changed to be a C style comment and not be a doxygen comment).
174002  /* \brief Typedef used to hold memory addresses as values.
174003  */
174004  // typedef unsigned long AddressType;
174005 
174006 
174007 
174008  // necessary, to have direct access to the p_freepointer and the private methods !
174010  friend class AST_FILE_IO;
174011 
174013  friend class SgExprStatementStorageClass;
174014 
174016  friend class AstSpecificDataManagingClass;
174017 
174019  friend class AstSpecificDataManagingClassStorageClass;
174020 
174021  public:
174023  SgExprStatement( const SgExprStatementStorageClass& source );
174024 
174025  // private: // JJW hack
174026  /*
174027  name AST Memory Allocation Support Variables
174028  Memory allocations support variables
174029 
174030  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
174031  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
174032  and support the AST File I/O Mechanism.
174033  */
174034  /* */
174035 
174036  public:
174037 
174038  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
174039  // to current node (so that it will work cleanly with build functions to specify patterns).
174040  // virtual SgNode* addRegExpAttribute();
174047 
174048 // *** COMMON CODE SECTION ENDS HERE ***
174049 
174050 
174051 // End of memberFunctionString
174052 // Start of memberFunctionString
174053 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
174054 
174055  // the generated cast function
174056  // friend ROSE_DLL_API SgExprStatement* isSgExprStatement ( SgNode* s );
174057 
174058  typedef SgStatement base_node_type;
174059 
174060 
174061 // End of memberFunctionString
174062 // Start of memberFunctionString
174063 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
174064 
174065  void post_construction_initialization() override;
174066 
174067 
174068 // End of memberFunctionString
174069 
174070  public:
174071  SgExpression* get_expression() const;
174072  void set_expression(SgExpression* expression);
174073 
174074 
174075  public:
174076  virtual ~SgExprStatement();
174077 
174078 
174079  public:
174080  SgExprStatement(Sg_File_Info* startOfConstruct , SgExpression* expression = NULL);
174081  SgExprStatement(SgExpression* expression);
174082 
174083  protected:
174084 // Start of memberFunctionString
174085 SgExpression* p_expression;
174086 
174087 // End of memberFunctionString
174088 
174089 
174090 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
174091 
174092 
174093  };
174094 #endif
174095 
174096 // postdeclarations for SgExprStatement
174097 
174098 /* #line 174099 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
174099 
174100 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
174101 
174102 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
174103 
174104 
174105 /* #line 174106 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
174106 
174107 
174108 
174109 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
174110 
174111 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
174112 // This code is automatically generated for each
174113 // terminal and non-terminal within the defined
174114 // grammar. There is a simple way to change the
174115 // code to fix bugs etc. See the ROSE README file
174116 // for directions.
174117 
174118 // tps: (02/22/2010): Adding DLL export requirements
174119 #include "rosedll.h"
174120 
174121 // predeclarations for SgLabelStatement
174122 
174123 /* #line 174124 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
174124 
174125 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
174126 
174127 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
174128 
174129 #if 1
174130 // Class Definition for SgLabelStatement
174131 class ROSE_DLL_API SgLabelStatement : public SgStatement
174132  {
174133  public:
174134 
174135 
174136 /* #line 174137 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
174137 
174138  virtual SgNode* copy ( SgCopyHelp& help) const override;
174139 // Start of memberFunctionString
174140 /* #line 2264 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
174141 
174142 
174143  // DQ (1/15/2018): Need to support this member function now that we traverse the statement of the label statement.
174144  protected:
174145  virtual bool replace_child(SgStatement *,SgStatement *, bool extractListFromBasicBlock = false) override;
174146 
174147  public:
174148 
174149  // DQ (10/20/2004): This is not part of a uniform interface for all statements
174150  // so it is not a particularly useful interface within a minimalist design.
174151  // Thus I have deprecated this function, users should use the get_label()
174152  // function instead.
174153  SgName get_name() const ROSE_DEPRECATED_FUNCTION;
174154 
174155 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
174156  // DQ (1/7/2018): Fix this to reflect design change in AST required to represent labels as compound statements.
174157  virtual unsigned int cfgFindChildIndex(SgNode* n) override;
174158 
174159  virtual unsigned int cfgIndexForEnd() const override;
174160  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
174161  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
174162 #endif
174163 
174164  // DQ (2/10/2007): Marked as virtual to be consistent
174165  virtual SgSymbol* get_symbol_from_symbol_table() const override;
174166 
174167 #if ALT_FIXUP_COPY
174168  // DQ (11/7/2007): These need to be called separately (see documentation)
174169  virtual void fixupCopy_scopes (SgNode* copy, SgCopyHelp & help) const override;
174170  virtual void fixupCopy_symbols (SgNode* copy, SgCopyHelp & help) const override;
174171  virtual void fixupCopy_references (SgNode* copy, SgCopyHelp & help) const override;
174172 #else
174173  // DQ (10/5/2007): Added fixup function to set scopes not set properly by the ROSETTA generated copy!
174174  virtual void fixupCopy(SgNode* copy, SgCopyHelp & help) const;
174175 #endif
174176 
174178  virtual bool hasExplicitScope() const override;
174179 
174180  // DQ (8/21/2013): Added function to support calling get_type() from a SgDeclarationStatement so that the
174181  // template low-level symbol table support function would compile cleanly. Note that it is an error to
174182  // call this function and it is not a virtual function that will cause derived class versions to be called
174183  // where appropriate (and it is not always appropriate, e.g a SgNamespaceDeclaration has no assocated SgType).
174184  SgType* get_type() const;
174185 
174186 
174187 
174188 // End of memberFunctionString
174189 // Start of memberFunctionString
174190 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
174191 
174192 // *** COMMON CODE SECTION BEGINS HERE ***
174193 
174194  public:
174195 
174196  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
174197  // and not required which is required to match the other aspects of the copy mechanism code generation.
174198  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
174199  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
174200  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
174201  // virtual SgNode* copy ( const SgCopyHelp & help) const;
174202 
174204  virtual std::string class_name() const override;
174205 
174207  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
174208 
174210  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
174211  // static const VariantT static_variant = V_SgLabelStatement;
174212  enum { static_variant = V_SgLabelStatement };
174213 
174214  /* the generated cast function */
174216  ROSE_DLL_API friend SgLabelStatement* isSgLabelStatement( SgNode * s );
174217 
174219  ROSE_DLL_API friend const SgLabelStatement* isSgLabelStatement( const SgNode * s );
174220 
174221  // ******************************************
174222  // * Memory Pool / New / Delete
174223  // ******************************************
174224 
174225  public:
174227  static const unsigned pool_size; //
174229  static std::vector<unsigned char *> pools; //
174231  static SgLabelStatement * next_node; //
174232 
174234  static unsigned long initializeStorageClassArray(SgLabelStatementStorageClass *); //
174235 
174237  static void clearMemoryPool(); //
174238  static void deleteMemoryPool(); //
174239 
174241  static void extendMemoryPoolForFileIO(); //
174242 
174244  static SgLabelStatement * getPointerFromGlobalIndex(unsigned long); //
174246  static SgLabelStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
174247 
174249  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
174251  static void resetValidFreepointers(); //
174253  static unsigned long getNumberOfLastValidPointer(); //
174254 
174255 
174256 #if defined(INLINE_FUNCTIONS)
174257 
174258  inline void *operator new (size_t size);
174259 #else
174260 
174261  void *operator new (size_t size);
174262 #endif
174263 
174264  void operator delete (void* pointer, size_t size);
174265 
174266  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
174267  void operator delete (void* pointer)
174268  {
174269  // This is the generated delete operator...
174270  SgLabelStatement::operator delete (pointer,sizeof(SgLabelStatement));
174271  }
174272 
174274  static size_t numberOfNodes();
174275 
174277  static size_t memoryUsage();
174278 
174279  // End of scope which started in IR nodes specific code
174280  /* */
174281 
174282  /* name Internal Functions
174283  \brief Internal functions ... incomplete-documentation
174284 
174285  These functions have been made public as part of the design, but they are suggested for internal use
174286  or by particularly knowledgeable users for specialized tools or applications.
174287 
174288  \internal We could not make these private because they are required by user for special purposes. And
174289  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
174290 
174291  */
174292 
174293  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
174294  // overridden in every class by *generated* implementation
174296  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
174297  // MS: 06/28/02 container of names of variables or container indices
174298  // used used in the traversal to access AST successor nodes
174299  // overridden in every class by *generated* implementation
174302  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
174303 
174304  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
174305  // than all the vector copies. The implementation for these functions is generated for each class.
174307  virtual size_t get_numberOfTraversalSuccessors() override;
174309  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
174311  virtual size_t get_childIndex(SgNode *child) override;
174312 
174313 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
174314  // MS: 08/16/2002 method for generating RTI information
174316  virtual RTIReturnType roseRTI() override;
174317 #endif
174318  /* */
174319 
174320 
174321 
174322  /* name Deprecated Functions
174323  \brief Deprecated functions ... incomplete-documentation
174324 
174325  These functions have been deprecated from use.
174326  */
174327  /* */
174328 
174330  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
174331 
174332  // JJW (10/16/2008): Changed to a single function in Node.code, and put
174333  // getVariant() in #if 0 block to prevent confusing Doxygen
174334 #if 0
174335 
174336  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
174338  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
174339 #endif
174340  /* */
174341 
174342 
174343 
174344 
174345  public:
174346  /* name Traversal Support Functions
174347  \brief Traversal support functions ... incomplete-documentation
174348 
174349  These functions have been made public as part of the design, but they are suggested for internal use
174350  or by particularly knowledgable users for specialized tools or applications.
174351  */
174352  /* */
174353 
174354  // DQ (11/26/2005): Support for visitor pattern mechanims
174355  // (inferior to ROSE traversal mechanism, experimental).
174359 
174360  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
174362  virtual void accept (ROSE_VisitorPattern & visitor) override;
174363 
174364  // DQ (12/26/2005): Support for traversal based on the memory pool
174367  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
174368 
174371  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
174372 
174373  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
174374  // This traversal helps support internal tools that call static member functions.
174375  // note: this function operates on the memory pools.
174378  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
174379  /* */
174380 
174381 
174382  public:
174383  /* name Memory Allocation Functions
174384  \brief Memory allocations functions ... incomplete-documentation
174385 
174386  These functions have been made public as part of the design, but they are suggested for internal use
174387  or by particularly knowledgable users for specialized tools or applications.
174388  */
174389  /* */
174390 
174401  virtual bool isInMemoryPool() override;
174402 
174413  virtual void checkDataMemberPointersIfInMemoryPool() override;
174414 
174415  // DQ (4/30/2006): Modified to be a const function.
174430  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
174431 
174441  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
174442 
174454  virtual long getChildIndex( SgNode* childNode ) const override;
174455 
174456  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
174457  // comment here (changed to be a C style comment and not be a doxygen comment).
174458  /* \brief Constructor for use by AST File I/O Mechanism
174459 
174460  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
174461  which obtained via fast binary file I/O from disk.
174462  */
174463  // SgLabelStatement( SgLabelStatementStorageClass& source );
174464 
174465 
174466 
174467 
174468 
174469  // JH (10/24/2005): methods added to support the ast file IO
174470  private:
174471 
174472  /* name AST Memory Allocation Support Functions
174473  \brief Memory allocations support....
174474 
174475  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
174476  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
174477  and support the AST File I/O Mechanism.
174478  */
174479  /* */
174480 
174481  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
174482  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
174483  that I use the same type everywhere, if any changes are made. THe second one declares the type
174484  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
174485  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
174486  a correspinding one in the AST_FILE_IO class!
174487  */
174488  // DQ (9/2/2015): This typedef is no longer used, we can't define the
174489  // comment here (changed to be a C style comment and not be a doxygen comment).
174490  /* \brief Typedef used for low level memory access.
174491  */
174492  // typedef unsigned char* TestType;
174493 
174494  // DQ (9/2/2015): This typedef is no longer used, we can't define the
174495  // comment here (changed to be a C style comment and not be a doxygen comment).
174496  /* \brief Typedef used to hold memory addresses as values.
174497  */
174498  // typedef unsigned long AddressType;
174499 
174500 
174501 
174502  // necessary, to have direct access to the p_freepointer and the private methods !
174504  friend class AST_FILE_IO;
174505 
174507  friend class SgLabelStatementStorageClass;
174508 
174510  friend class AstSpecificDataManagingClass;
174511 
174513  friend class AstSpecificDataManagingClassStorageClass;
174514 
174515  public:
174517  SgLabelStatement( const SgLabelStatementStorageClass& source );
174518 
174519  // private: // JJW hack
174520  /*
174521  name AST Memory Allocation Support Variables
174522  Memory allocations support variables
174523 
174524  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
174525  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
174526  and support the AST File I/O Mechanism.
174527  */
174528  /* */
174529 
174530  public:
174531 
174532  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
174533  // to current node (so that it will work cleanly with build functions to specify patterns).
174534  // virtual SgNode* addRegExpAttribute();
174541 
174542 // *** COMMON CODE SECTION ENDS HERE ***
174543 
174544 
174545 // End of memberFunctionString
174546 // Start of memberFunctionString
174547 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
174548 
174549  // the generated cast function
174550  // friend ROSE_DLL_API SgLabelStatement* isSgLabelStatement ( SgNode* s );
174551 
174552  typedef SgStatement base_node_type;
174553 
174554 
174555 // End of memberFunctionString
174556 // Start of memberFunctionString
174557 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
174558 
174559  void post_construction_initialization() override;
174560 
174561 
174562 // End of memberFunctionString
174563 
174564  public:
174565  SgName get_label() const;
174566  void set_label(SgName label);
174567 
174568  public:
174569  SgScopeStatement* get_scope() const override /* (getDataAccessFunctionPrototypeString) */;
174570  void set_scope(SgScopeStatement* scope) override /* (getDataAccessFunctionPrototypeString) */;
174571 
174572  public:
174573  SgStatement* get_statement() const;
174574  void set_statement(SgStatement* statement);
174575 
174576  public:
174577  bool get_gnu_extension_unused() const;
174578  void set_gnu_extension_unused(bool gnu_extension_unused);
174579 
174580 
174581  public:
174582  virtual ~SgLabelStatement();
174583 
174584 
174585  public:
174586  SgLabelStatement(Sg_File_Info* startOfConstruct , SgName label = "", SgStatement* statement = NULL);
174587  SgLabelStatement(SgName label, SgStatement* statement);
174588 
174589  protected:
174590 // Start of memberFunctionString
174591 SgName p_label;
174592 
174593 // End of memberFunctionString
174594 // Start of memberFunctionString
174595 SgScopeStatement* p_scope;
174596 
174597 // End of memberFunctionString
174598 // Start of memberFunctionString
174599 SgStatement* p_statement;
174600 
174601 // End of memberFunctionString
174602 // Start of memberFunctionString
174603 bool p_gnu_extension_unused;
174604 
174605 // End of memberFunctionString
174606 
174607 
174608 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
174609 
174610 
174611  };
174612 #endif
174613 
174614 // postdeclarations for SgLabelStatement
174615 
174616 /* #line 174617 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
174617 
174618 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
174619 
174620 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
174621 
174622 
174623 /* #line 174624 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
174624 
174625 
174626 
174627 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
174628 
174629 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
174630 // This code is automatically generated for each
174631 // terminal and non-terminal within the defined
174632 // grammar. There is a simple way to change the
174633 // code to fix bugs etc. See the ROSE README file
174634 // for directions.
174635 
174636 // tps: (02/22/2010): Adding DLL export requirements
174637 #include "rosedll.h"
174638 
174639 // predeclarations for SgCaseOptionStmt
174640 
174641 /* #line 174642 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
174642 
174643 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
174644 
174645 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
174646 
174647 #if 1
174648 // Class Definition for SgCaseOptionStmt
174649 class ROSE_DLL_API SgCaseOptionStmt : public SgStatement
174650  {
174651  public:
174652 
174653 
174654 /* #line 174655 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
174655 
174656  virtual SgNode* copy ( SgCopyHelp& help) const override;
174657 // Start of memberFunctionString
174658 /* #line 2414 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
174659 
174660  protected:
174661  virtual bool replace_child(SgStatement *,SgStatement *, bool extractListFromBasicBlock = false) override;
174662 
174663 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
174664  virtual unsigned int cfgIndexForEnd() const override;
174665  virtual bool cfgIsIndexInteresting(unsigned int) const override;
174666  virtual unsigned int cfgFindChildIndex(SgNode* n) override;
174667  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
174668  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
174669 #endif
174670 
174671 #if ALT_FIXUP_COPY
174672  // DQ (11/7/2007): These need to be called separately (see documentation)
174673  virtual void fixupCopy_scopes (SgNode* copy, SgCopyHelp & help) const override;
174674  virtual void fixupCopy_symbols (SgNode* copy, SgCopyHelp & help) const override;
174675  virtual void fixupCopy_references (SgNode* copy, SgCopyHelp & help) const override;
174676 #else
174677  // DQ (10/20/2007): Added fixup function to set scopes not set properly by the ROSETTA generated copy!
174678  virtual void fixupCopy(SgNode* copy, SgCopyHelp & help) const;
174679 #endif
174680 
174681 
174682 
174683 // End of memberFunctionString
174684 // Start of memberFunctionString
174685 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
174686 
174687 // *** COMMON CODE SECTION BEGINS HERE ***
174688 
174689  public:
174690 
174691  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
174692  // and not required which is required to match the other aspects of the copy mechanism code generation.
174693  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
174694  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
174695  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
174696  // virtual SgNode* copy ( const SgCopyHelp & help) const;
174697 
174699  virtual std::string class_name() const override;
174700 
174702  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
174703 
174705  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
174706  // static const VariantT static_variant = V_SgCaseOptionStmt;
174707  enum { static_variant = V_SgCaseOptionStmt };
174708 
174709  /* the generated cast function */
174711  ROSE_DLL_API friend SgCaseOptionStmt* isSgCaseOptionStmt( SgNode * s );
174712 
174714  ROSE_DLL_API friend const SgCaseOptionStmt* isSgCaseOptionStmt( const SgNode * s );
174715 
174716  // ******************************************
174717  // * Memory Pool / New / Delete
174718  // ******************************************
174719 
174720  public:
174722  static const unsigned pool_size; //
174724  static std::vector<unsigned char *> pools; //
174726  static SgCaseOptionStmt * next_node; //
174727 
174729  static unsigned long initializeStorageClassArray(SgCaseOptionStmtStorageClass *); //
174730 
174732  static void clearMemoryPool(); //
174733  static void deleteMemoryPool(); //
174734 
174736  static void extendMemoryPoolForFileIO(); //
174737 
174739  static SgCaseOptionStmt * getPointerFromGlobalIndex(unsigned long); //
174741  static SgCaseOptionStmt * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
174742 
174744  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
174746  static void resetValidFreepointers(); //
174748  static unsigned long getNumberOfLastValidPointer(); //
174749 
174750 
174751 #if defined(INLINE_FUNCTIONS)
174752 
174753  inline void *operator new (size_t size);
174754 #else
174755 
174756  void *operator new (size_t size);
174757 #endif
174758 
174759  void operator delete (void* pointer, size_t size);
174760 
174761  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
174762  void operator delete (void* pointer)
174763  {
174764  // This is the generated delete operator...
174765  SgCaseOptionStmt::operator delete (pointer,sizeof(SgCaseOptionStmt));
174766  }
174767 
174769  static size_t numberOfNodes();
174770 
174772  static size_t memoryUsage();
174773 
174774  // End of scope which started in IR nodes specific code
174775  /* */
174776 
174777  /* name Internal Functions
174778  \brief Internal functions ... incomplete-documentation
174779 
174780  These functions have been made public as part of the design, but they are suggested for internal use
174781  or by particularly knowledgeable users for specialized tools or applications.
174782 
174783  \internal We could not make these private because they are required by user for special purposes. And
174784  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
174785 
174786  */
174787 
174788  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
174789  // overridden in every class by *generated* implementation
174791  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
174792  // MS: 06/28/02 container of names of variables or container indices
174793  // used used in the traversal to access AST successor nodes
174794  // overridden in every class by *generated* implementation
174797  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
174798 
174799  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
174800  // than all the vector copies. The implementation for these functions is generated for each class.
174802  virtual size_t get_numberOfTraversalSuccessors() override;
174804  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
174806  virtual size_t get_childIndex(SgNode *child) override;
174807 
174808 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
174809  // MS: 08/16/2002 method for generating RTI information
174811  virtual RTIReturnType roseRTI() override;
174812 #endif
174813  /* */
174814 
174815 
174816 
174817  /* name Deprecated Functions
174818  \brief Deprecated functions ... incomplete-documentation
174819 
174820  These functions have been deprecated from use.
174821  */
174822  /* */
174823 
174825  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
174826 
174827  // JJW (10/16/2008): Changed to a single function in Node.code, and put
174828  // getVariant() in #if 0 block to prevent confusing Doxygen
174829 #if 0
174830 
174831  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
174833  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
174834 #endif
174835  /* */
174836 
174837 
174838 
174839 
174840  public:
174841  /* name Traversal Support Functions
174842  \brief Traversal support functions ... incomplete-documentation
174843 
174844  These functions have been made public as part of the design, but they are suggested for internal use
174845  or by particularly knowledgable users for specialized tools or applications.
174846  */
174847  /* */
174848 
174849  // DQ (11/26/2005): Support for visitor pattern mechanims
174850  // (inferior to ROSE traversal mechanism, experimental).
174854 
174855  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
174857  virtual void accept (ROSE_VisitorPattern & visitor) override;
174858 
174859  // DQ (12/26/2005): Support for traversal based on the memory pool
174862  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
174863 
174866  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
174867 
174868  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
174869  // This traversal helps support internal tools that call static member functions.
174870  // note: this function operates on the memory pools.
174873  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
174874  /* */
174875 
174876 
174877  public:
174878  /* name Memory Allocation Functions
174879  \brief Memory allocations functions ... incomplete-documentation
174880 
174881  These functions have been made public as part of the design, but they are suggested for internal use
174882  or by particularly knowledgable users for specialized tools or applications.
174883  */
174884  /* */
174885 
174896  virtual bool isInMemoryPool() override;
174897 
174908  virtual void checkDataMemberPointersIfInMemoryPool() override;
174909 
174910  // DQ (4/30/2006): Modified to be a const function.
174925  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
174926 
174936  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
174937 
174949  virtual long getChildIndex( SgNode* childNode ) const override;
174950 
174951  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
174952  // comment here (changed to be a C style comment and not be a doxygen comment).
174953  /* \brief Constructor for use by AST File I/O Mechanism
174954 
174955  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
174956  which obtained via fast binary file I/O from disk.
174957  */
174958  // SgCaseOptionStmt( SgCaseOptionStmtStorageClass& source );
174959 
174960 
174961 
174962 
174963 
174964  // JH (10/24/2005): methods added to support the ast file IO
174965  private:
174966 
174967  /* name AST Memory Allocation Support Functions
174968  \brief Memory allocations support....
174969 
174970  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
174971  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
174972  and support the AST File I/O Mechanism.
174973  */
174974  /* */
174975 
174976  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
174977  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
174978  that I use the same type everywhere, if any changes are made. THe second one declares the type
174979  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
174980  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
174981  a correspinding one in the AST_FILE_IO class!
174982  */
174983  // DQ (9/2/2015): This typedef is no longer used, we can't define the
174984  // comment here (changed to be a C style comment and not be a doxygen comment).
174985  /* \brief Typedef used for low level memory access.
174986  */
174987  // typedef unsigned char* TestType;
174988 
174989  // DQ (9/2/2015): This typedef is no longer used, we can't define the
174990  // comment here (changed to be a C style comment and not be a doxygen comment).
174991  /* \brief Typedef used to hold memory addresses as values.
174992  */
174993  // typedef unsigned long AddressType;
174994 
174995 
174996 
174997  // necessary, to have direct access to the p_freepointer and the private methods !
174999  friend class AST_FILE_IO;
175000 
175002  friend class SgCaseOptionStmtStorageClass;
175003 
175005  friend class AstSpecificDataManagingClass;
175006 
175008  friend class AstSpecificDataManagingClassStorageClass;
175009 
175010  public:
175012  SgCaseOptionStmt( const SgCaseOptionStmtStorageClass& source );
175013 
175014  // private: // JJW hack
175015  /*
175016  name AST Memory Allocation Support Variables
175017  Memory allocations support variables
175018 
175019  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
175020  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
175021  and support the AST File I/O Mechanism.
175022  */
175023  /* */
175024 
175025  public:
175026 
175027  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
175028  // to current node (so that it will work cleanly with build functions to specify patterns).
175029  // virtual SgNode* addRegExpAttribute();
175036 
175037 // *** COMMON CODE SECTION ENDS HERE ***
175038 
175039 
175040 // End of memberFunctionString
175041 // Start of memberFunctionString
175042 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
175043 
175044  // the generated cast function
175045  // friend ROSE_DLL_API SgCaseOptionStmt* isSgCaseOptionStmt ( SgNode* s );
175046 
175047  typedef SgStatement base_node_type;
175048 
175049 
175050 // End of memberFunctionString
175051 // Start of memberFunctionString
175052 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
175053 
175054  void post_construction_initialization() override;
175055 
175056 
175057 // End of memberFunctionString
175058 
175059  public:
175060  SgExpression* get_key() const;
175061  void set_key(SgExpression* key);
175062 
175063  public:
175064  SgStatement* get_body() const;
175065  void set_body(SgStatement* body);
175066 
175067  public:
175068  SgExpression* get_key_range_end() const;
175069  void set_key_range_end(SgExpression* key_range_end);
175070 
175071  public:
175072  std::string get_case_construct_name() const;
175073  void set_case_construct_name(std::string case_construct_name);
175074 
175075 
175076  public:
175077  virtual ~SgCaseOptionStmt();
175078 
175079 
175080  public:
175081  SgCaseOptionStmt(Sg_File_Info* startOfConstruct , SgExpression* key = NULL, SgStatement* body = NULL);
175082  SgCaseOptionStmt(SgExpression* key, SgStatement* body);
175083 
175084  protected:
175085 // Start of memberFunctionString
175086 SgExpression* p_key;
175087 
175088 // End of memberFunctionString
175089 // Start of memberFunctionString
175091 
175092 // End of memberFunctionString
175093 // Start of memberFunctionString
175095 
175096 // End of memberFunctionString
175097 // Start of memberFunctionString
175098 std::string p_case_construct_name;
175099 
175100 // End of memberFunctionString
175101 
175102 
175103 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
175104 
175105 
175106  };
175107 #endif
175108 
175109 // postdeclarations for SgCaseOptionStmt
175110 
175111 /* #line 175112 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
175112 
175113 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
175114 
175115 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
175116 
175117 
175118 /* #line 175119 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
175119 
175120 
175121 
175122 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
175123 
175124 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
175125 // This code is automatically generated for each
175126 // terminal and non-terminal within the defined
175127 // grammar. There is a simple way to change the
175128 // code to fix bugs etc. See the ROSE README file
175129 // for directions.
175130 
175131 // tps: (02/22/2010): Adding DLL export requirements
175132 #include "rosedll.h"
175133 
175134 // predeclarations for SgTryStmt
175135 
175136 /* #line 175137 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
175137 
175138 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
175139 
175140 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
175141 
175142 #if 1
175143 // Class Definition for SgTryStmt
175144 class ROSE_DLL_API SgTryStmt : public SgStatement
175145  {
175146  public:
175147 
175148 
175149 /* #line 175150 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
175150 
175151  virtual SgNode* copy ( SgCopyHelp& help) const override;
175152 // Start of memberFunctionString
175153 /* #line 2438 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
175154 
175155 
175156  SgStatementPtrList & get_catch_statement_seq();
175157  const SgStatementPtrList & get_catch_statement_seq() const;
175158 
175159 /* #line 939 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
175160 
175161  public:
175162  virtual void append_catch_statement ( SgStatement* element );
175163  virtual void prepend_catch_statement ( SgStatement* element );
175164 
175165  public:
175166  // New functions added
175167  // void append_catch_statement ( const SgStatementPtrList::iterator & list, SgStatement* element );
175168  // void prepend_catch_statement ( const SgStatementPtrList::iterator & list, SgStatement* element );
175169 
175170  // void insert_catch_statement ( const SgStatementPtrList::iterator & list, SgStatement* element );
175171 
175172 
175173  public:
175174 
175175 
175176 
175177 
175178 #if 0
175179  SgStatement *get_next (int&) const;
175180 #endif
175181 
175182  protected:
175183  virtual bool replace_child(SgStatement *,SgStatement *, bool extractListFromBasicBlock = false) override;
175184 
175185  public:
175186 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
175187  virtual unsigned int cfgIndexForEnd() const override;
175188  virtual bool cfgIsIndexInteresting(unsigned int) const override;
175189  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
175190  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
175191 #endif
175192 
175193 #if ALT_FIXUP_COPY
175194  // DQ (11/7/2007): These need to be called separately (see documentation)
175195  virtual void fixupCopy_scopes (SgNode* copy, SgCopyHelp & help) const override;
175196  virtual void fixupCopy_symbols (SgNode* copy, SgCopyHelp & help) const override;
175197  virtual void fixupCopy_references (SgNode* copy, SgCopyHelp & help) const override;
175198 #else
175199  // DQ (10/20/2007): Added fixup function to set scopes not set properly by the ROSETTA generated copy!
175200  virtual void fixupCopy(SgNode* copy, SgCopyHelp & help) const;
175201 #endif
175202 
175203 
175204 
175205 // End of memberFunctionString
175206 // Start of memberFunctionString
175207 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
175208 
175209 // *** COMMON CODE SECTION BEGINS HERE ***
175210 
175211  public:
175212 
175213  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
175214  // and not required which is required to match the other aspects of the copy mechanism code generation.
175215  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
175216  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
175217  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
175218  // virtual SgNode* copy ( const SgCopyHelp & help) const;
175219 
175221  virtual std::string class_name() const override;
175222 
175224  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
175225 
175227  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
175228  // static const VariantT static_variant = V_SgTryStmt;
175229  enum { static_variant = V_SgTryStmt };
175230 
175231  /* the generated cast function */
175233  ROSE_DLL_API friend SgTryStmt* isSgTryStmt( SgNode * s );
175234 
175236  ROSE_DLL_API friend const SgTryStmt* isSgTryStmt( const SgNode * s );
175237 
175238  // ******************************************
175239  // * Memory Pool / New / Delete
175240  // ******************************************
175241 
175242  public:
175244  static const unsigned pool_size; //
175246  static std::vector<unsigned char *> pools; //
175248  static SgTryStmt * next_node; //
175249 
175251  static unsigned long initializeStorageClassArray(SgTryStmtStorageClass *); //
175252 
175254  static void clearMemoryPool(); //
175255  static void deleteMemoryPool(); //
175256 
175258  static void extendMemoryPoolForFileIO(); //
175259 
175261  static SgTryStmt * getPointerFromGlobalIndex(unsigned long); //
175263  static SgTryStmt * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
175264 
175266  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
175268  static void resetValidFreepointers(); //
175270  static unsigned long getNumberOfLastValidPointer(); //
175271 
175272 
175273 #if defined(INLINE_FUNCTIONS)
175274 
175275  inline void *operator new (size_t size);
175276 #else
175277 
175278  void *operator new (size_t size);
175279 #endif
175280 
175281  void operator delete (void* pointer, size_t size);
175282 
175283  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
175284  void operator delete (void* pointer)
175285  {
175286  // This is the generated delete operator...
175287  SgTryStmt::operator delete (pointer,sizeof(SgTryStmt));
175288  }
175289 
175291  static size_t numberOfNodes();
175292 
175294  static size_t memoryUsage();
175295 
175296  // End of scope which started in IR nodes specific code
175297  /* */
175298 
175299  /* name Internal Functions
175300  \brief Internal functions ... incomplete-documentation
175301 
175302  These functions have been made public as part of the design, but they are suggested for internal use
175303  or by particularly knowledgeable users for specialized tools or applications.
175304 
175305  \internal We could not make these private because they are required by user for special purposes. And
175306  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
175307 
175308  */
175309 
175310  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
175311  // overridden in every class by *generated* implementation
175313  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
175314  // MS: 06/28/02 container of names of variables or container indices
175315  // used used in the traversal to access AST successor nodes
175316  // overridden in every class by *generated* implementation
175319  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
175320 
175321  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
175322  // than all the vector copies. The implementation for these functions is generated for each class.
175324  virtual size_t get_numberOfTraversalSuccessors() override;
175326  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
175328  virtual size_t get_childIndex(SgNode *child) override;
175329 
175330 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
175331  // MS: 08/16/2002 method for generating RTI information
175333  virtual RTIReturnType roseRTI() override;
175334 #endif
175335  /* */
175336 
175337 
175338 
175339  /* name Deprecated Functions
175340  \brief Deprecated functions ... incomplete-documentation
175341 
175342  These functions have been deprecated from use.
175343  */
175344  /* */
175345 
175347  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
175348 
175349  // JJW (10/16/2008): Changed to a single function in Node.code, and put
175350  // getVariant() in #if 0 block to prevent confusing Doxygen
175351 #if 0
175352 
175353  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
175355  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
175356 #endif
175357  /* */
175358 
175359 
175360 
175361 
175362  public:
175363  /* name Traversal Support Functions
175364  \brief Traversal support functions ... incomplete-documentation
175365 
175366  These functions have been made public as part of the design, but they are suggested for internal use
175367  or by particularly knowledgable users for specialized tools or applications.
175368  */
175369  /* */
175370 
175371  // DQ (11/26/2005): Support for visitor pattern mechanims
175372  // (inferior to ROSE traversal mechanism, experimental).
175376 
175377  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
175379  virtual void accept (ROSE_VisitorPattern & visitor) override;
175380 
175381  // DQ (12/26/2005): Support for traversal based on the memory pool
175384  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
175385 
175388  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
175389 
175390  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
175391  // This traversal helps support internal tools that call static member functions.
175392  // note: this function operates on the memory pools.
175395  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
175396  /* */
175397 
175398 
175399  public:
175400  /* name Memory Allocation Functions
175401  \brief Memory allocations functions ... incomplete-documentation
175402 
175403  These functions have been made public as part of the design, but they are suggested for internal use
175404  or by particularly knowledgable users for specialized tools or applications.
175405  */
175406  /* */
175407 
175418  virtual bool isInMemoryPool() override;
175419 
175430  virtual void checkDataMemberPointersIfInMemoryPool() override;
175431 
175432  // DQ (4/30/2006): Modified to be a const function.
175447  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
175448 
175458  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
175459 
175471  virtual long getChildIndex( SgNode* childNode ) const override;
175472 
175473  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
175474  // comment here (changed to be a C style comment and not be a doxygen comment).
175475  /* \brief Constructor for use by AST File I/O Mechanism
175476 
175477  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
175478  which obtained via fast binary file I/O from disk.
175479  */
175480  // SgTryStmt( SgTryStmtStorageClass& source );
175481 
175482 
175483 
175484 
175485 
175486  // JH (10/24/2005): methods added to support the ast file IO
175487  private:
175488 
175489  /* name AST Memory Allocation Support Functions
175490  \brief Memory allocations support....
175491 
175492  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
175493  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
175494  and support the AST File I/O Mechanism.
175495  */
175496  /* */
175497 
175498  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
175499  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
175500  that I use the same type everywhere, if any changes are made. THe second one declares the type
175501  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
175502  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
175503  a correspinding one in the AST_FILE_IO class!
175504  */
175505  // DQ (9/2/2015): This typedef is no longer used, we can't define the
175506  // comment here (changed to be a C style comment and not be a doxygen comment).
175507  /* \brief Typedef used for low level memory access.
175508  */
175509  // typedef unsigned char* TestType;
175510 
175511  // DQ (9/2/2015): This typedef is no longer used, we can't define the
175512  // comment here (changed to be a C style comment and not be a doxygen comment).
175513  /* \brief Typedef used to hold memory addresses as values.
175514  */
175515  // typedef unsigned long AddressType;
175516 
175517 
175518 
175519  // necessary, to have direct access to the p_freepointer and the private methods !
175521  friend class AST_FILE_IO;
175522 
175524  friend class SgTryStmtStorageClass;
175525 
175527  friend class AstSpecificDataManagingClass;
175528 
175530  friend class AstSpecificDataManagingClassStorageClass;
175531 
175532  public:
175534  SgTryStmt( const SgTryStmtStorageClass& source );
175535 
175536  // private: // JJW hack
175537  /*
175538  name AST Memory Allocation Support Variables
175539  Memory allocations support variables
175540 
175541  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
175542  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
175543  and support the AST File I/O Mechanism.
175544  */
175545  /* */
175546 
175547  public:
175548 
175549  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
175550  // to current node (so that it will work cleanly with build functions to specify patterns).
175551  // virtual SgNode* addRegExpAttribute();
175557  SgTryStmt* addRegExpAttribute(std::string s, AstRegExAttribute* a);
175558 
175559 // *** COMMON CODE SECTION ENDS HERE ***
175560 
175561 
175562 // End of memberFunctionString
175563 // Start of memberFunctionString
175564 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
175565 
175566  // the generated cast function
175567  // friend ROSE_DLL_API SgTryStmt* isSgTryStmt ( SgNode* s );
175568 
175569  typedef SgStatement base_node_type;
175570 
175571 
175572 // End of memberFunctionString
175573 // Start of memberFunctionString
175574 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
175575 
175576  void post_construction_initialization() override;
175577 
175578 
175579 // End of memberFunctionString
175580 
175581  public:
175582  SgStatement* get_body() const;
175583  void set_body(SgStatement* body);
175584 
175585  public:
175586  SgCatchStatementSeq* get_catch_statement_seq_root() const;
175587  void set_catch_statement_seq_root(SgCatchStatementSeq* catch_statement_seq_root);
175588 
175589  public:
175590  SgStatement* get_else_body() const;
175591  void set_else_body(SgStatement* else_body);
175592 
175593  public:
175594  SgStatement* get_finally_body() const;
175595  void set_finally_body(SgStatement* finally_body);
175596 
175597 
175598  public:
175599  virtual ~SgTryStmt();
175600 
175601 
175602  public:
175603  SgTryStmt(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
175604  SgTryStmt(SgStatement* body);
175605 
175606  protected:
175607 // Start of memberFunctionString
175609 
175610 // End of memberFunctionString
175611 // Start of memberFunctionString
175613 
175614 // End of memberFunctionString
175615 // Start of memberFunctionString
175617 
175618 // End of memberFunctionString
175619 // Start of memberFunctionString
175621 
175622 // End of memberFunctionString
175623 
175624 
175625 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
175626 
175627 
175628  };
175629 #endif
175630 
175631 // postdeclarations for SgTryStmt
175632 
175633 /* #line 175634 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
175634 
175635 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
175636 
175637 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
175638 
175639 
175640 /* #line 175641 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
175641 
175642 
175643 
175644 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
175645 
175646 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
175647 // This code is automatically generated for each
175648 // terminal and non-terminal within the defined
175649 // grammar. There is a simple way to change the
175650 // code to fix bugs etc. See the ROSE README file
175651 // for directions.
175652 
175653 // tps: (02/22/2010): Adding DLL export requirements
175654 #include "rosedll.h"
175655 
175656 // predeclarations for SgDefaultOptionStmt
175657 
175658 /* #line 175659 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
175659 
175660 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
175661 
175662 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
175663 
175664 #if 1
175665 // Class Definition for SgDefaultOptionStmt
175666 class ROSE_DLL_API SgDefaultOptionStmt : public SgStatement
175667  {
175668  public:
175669 
175670 
175671 /* #line 175672 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
175672 
175673  virtual SgNode* copy ( SgCopyHelp& help) const override;
175674 // Start of memberFunctionString
175675 /* #line 2506 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
175676 
175677  // void post_construction_initialization();
175678 #if 0
175679  SgStatement* get_next(int&) const;
175680 #endif
175681 
175682  protected:
175683  virtual bool replace_child(SgStatement *,SgStatement *, bool extractListFromBasicBlock = false) override;
175684 
175685  public:
175686 
175687 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
175688  virtual unsigned int cfgIndexForEnd() const override;
175689  virtual bool cfgIsIndexInteresting(unsigned int) const override;
175690  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
175691  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
175692 #endif
175693 
175694 #if ALT_FIXUP_COPY
175695  // DQ (11/7/2007): These need to be called separately (see documentation)
175696  virtual void fixupCopy_scopes (SgNode* copy, SgCopyHelp & help) const override;
175697  virtual void fixupCopy_symbols (SgNode* copy, SgCopyHelp & help) const override;
175698  virtual void fixupCopy_references (SgNode* copy, SgCopyHelp & help) const override;
175699 #else
175700  // DQ (10/20/2007): Added fixup function to set scopes not set properly by the ROSETTA generated copy!
175701  virtual void fixupCopy(SgNode* copy, SgCopyHelp & help) const;
175702 #endif
175703 
175704 
175705 
175706 // End of memberFunctionString
175707 // Start of memberFunctionString
175708 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
175709 
175710 // *** COMMON CODE SECTION BEGINS HERE ***
175711 
175712  public:
175713 
175714  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
175715  // and not required which is required to match the other aspects of the copy mechanism code generation.
175716  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
175717  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
175718  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
175719  // virtual SgNode* copy ( const SgCopyHelp & help) const;
175720 
175722  virtual std::string class_name() const override;
175723 
175725  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
175726 
175728  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
175729  // static const VariantT static_variant = V_SgDefaultOptionStmt;
175730  enum { static_variant = V_SgDefaultOptionStmt };
175731 
175732  /* the generated cast function */
175734  ROSE_DLL_API friend SgDefaultOptionStmt* isSgDefaultOptionStmt( SgNode * s );
175735 
175737  ROSE_DLL_API friend const SgDefaultOptionStmt* isSgDefaultOptionStmt( const SgNode * s );
175738 
175739  // ******************************************
175740  // * Memory Pool / New / Delete
175741  // ******************************************
175742 
175743  public:
175745  static const unsigned pool_size; //
175747  static std::vector<unsigned char *> pools; //
175749  static SgDefaultOptionStmt * next_node; //
175750 
175752  static unsigned long initializeStorageClassArray(SgDefaultOptionStmtStorageClass *); //
175753 
175755  static void clearMemoryPool(); //
175756  static void deleteMemoryPool(); //
175757 
175759  static void extendMemoryPoolForFileIO(); //
175760 
175762  static SgDefaultOptionStmt * getPointerFromGlobalIndex(unsigned long); //
175764  static SgDefaultOptionStmt * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
175765 
175767  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
175769  static void resetValidFreepointers(); //
175771  static unsigned long getNumberOfLastValidPointer(); //
175772 
175773 
175774 #if defined(INLINE_FUNCTIONS)
175775 
175776  inline void *operator new (size_t size);
175777 #else
175778 
175779  void *operator new (size_t size);
175780 #endif
175781 
175782  void operator delete (void* pointer, size_t size);
175783 
175784  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
175785  void operator delete (void* pointer)
175786  {
175787  // This is the generated delete operator...
175788  SgDefaultOptionStmt::operator delete (pointer,sizeof(SgDefaultOptionStmt));
175789  }
175790 
175792  static size_t numberOfNodes();
175793 
175795  static size_t memoryUsage();
175796 
175797  // End of scope which started in IR nodes specific code
175798  /* */
175799 
175800  /* name Internal Functions
175801  \brief Internal functions ... incomplete-documentation
175802 
175803  These functions have been made public as part of the design, but they are suggested for internal use
175804  or by particularly knowledgeable users for specialized tools or applications.
175805 
175806  \internal We could not make these private because they are required by user for special purposes. And
175807  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
175808 
175809  */
175810 
175811  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
175812  // overridden in every class by *generated* implementation
175814  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
175815  // MS: 06/28/02 container of names of variables or container indices
175816  // used used in the traversal to access AST successor nodes
175817  // overridden in every class by *generated* implementation
175820  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
175821 
175822  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
175823  // than all the vector copies. The implementation for these functions is generated for each class.
175825  virtual size_t get_numberOfTraversalSuccessors() override;
175827  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
175829  virtual size_t get_childIndex(SgNode *child) override;
175830 
175831 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
175832  // MS: 08/16/2002 method for generating RTI information
175834  virtual RTIReturnType roseRTI() override;
175835 #endif
175836  /* */
175837 
175838 
175839 
175840  /* name Deprecated Functions
175841  \brief Deprecated functions ... incomplete-documentation
175842 
175843  These functions have been deprecated from use.
175844  */
175845  /* */
175846 
175848  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
175849 
175850  // JJW (10/16/2008): Changed to a single function in Node.code, and put
175851  // getVariant() in #if 0 block to prevent confusing Doxygen
175852 #if 0
175853 
175854  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
175856  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
175857 #endif
175858  /* */
175859 
175860 
175861 
175862 
175863  public:
175864  /* name Traversal Support Functions
175865  \brief Traversal support functions ... incomplete-documentation
175866 
175867  These functions have been made public as part of the design, but they are suggested for internal use
175868  or by particularly knowledgable users for specialized tools or applications.
175869  */
175870  /* */
175871 
175872  // DQ (11/26/2005): Support for visitor pattern mechanims
175873  // (inferior to ROSE traversal mechanism, experimental).
175877 
175878  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
175880  virtual void accept (ROSE_VisitorPattern & visitor) override;
175881 
175882  // DQ (12/26/2005): Support for traversal based on the memory pool
175885  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
175886 
175889  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
175890 
175891  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
175892  // This traversal helps support internal tools that call static member functions.
175893  // note: this function operates on the memory pools.
175896  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
175897  /* */
175898 
175899 
175900  public:
175901  /* name Memory Allocation Functions
175902  \brief Memory allocations functions ... incomplete-documentation
175903 
175904  These functions have been made public as part of the design, but they are suggested for internal use
175905  or by particularly knowledgable users for specialized tools or applications.
175906  */
175907  /* */
175908 
175919  virtual bool isInMemoryPool() override;
175920 
175931  virtual void checkDataMemberPointersIfInMemoryPool() override;
175932 
175933  // DQ (4/30/2006): Modified to be a const function.
175948  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
175949 
175959  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
175960 
175972  virtual long getChildIndex( SgNode* childNode ) const override;
175973 
175974  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
175975  // comment here (changed to be a C style comment and not be a doxygen comment).
175976  /* \brief Constructor for use by AST File I/O Mechanism
175977 
175978  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
175979  which obtained via fast binary file I/O from disk.
175980  */
175981  // SgDefaultOptionStmt( SgDefaultOptionStmtStorageClass& source );
175982 
175983 
175984 
175985 
175986 
175987  // JH (10/24/2005): methods added to support the ast file IO
175988  private:
175989 
175990  /* name AST Memory Allocation Support Functions
175991  \brief Memory allocations support....
175992 
175993  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
175994  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
175995  and support the AST File I/O Mechanism.
175996  */
175997  /* */
175998 
175999  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
176000  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
176001  that I use the same type everywhere, if any changes are made. THe second one declares the type
176002  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
176003  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
176004  a correspinding one in the AST_FILE_IO class!
176005  */
176006  // DQ (9/2/2015): This typedef is no longer used, we can't define the
176007  // comment here (changed to be a C style comment and not be a doxygen comment).
176008  /* \brief Typedef used for low level memory access.
176009  */
176010  // typedef unsigned char* TestType;
176011 
176012  // DQ (9/2/2015): This typedef is no longer used, we can't define the
176013  // comment here (changed to be a C style comment and not be a doxygen comment).
176014  /* \brief Typedef used to hold memory addresses as values.
176015  */
176016  // typedef unsigned long AddressType;
176017 
176018 
176019 
176020  // necessary, to have direct access to the p_freepointer and the private methods !
176022  friend class AST_FILE_IO;
176023 
176025  friend class SgDefaultOptionStmtStorageClass;
176026 
176028  friend class AstSpecificDataManagingClass;
176029 
176031  friend class AstSpecificDataManagingClassStorageClass;
176032 
176033  public:
176035  SgDefaultOptionStmt( const SgDefaultOptionStmtStorageClass& source );
176036 
176037  // private: // JJW hack
176038  /*
176039  name AST Memory Allocation Support Variables
176040  Memory allocations support variables
176041 
176042  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
176043  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
176044  and support the AST File I/O Mechanism.
176045  */
176046  /* */
176047 
176048  public:
176049 
176050  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
176051  // to current node (so that it will work cleanly with build functions to specify patterns).
176052  // virtual SgNode* addRegExpAttribute();
176059 
176060 // *** COMMON CODE SECTION ENDS HERE ***
176061 
176062 
176063 // End of memberFunctionString
176064 // Start of memberFunctionString
176065 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
176066 
176067  // the generated cast function
176068  // friend ROSE_DLL_API SgDefaultOptionStmt* isSgDefaultOptionStmt ( SgNode* s );
176069 
176070  typedef SgStatement base_node_type;
176071 
176072 
176073 // End of memberFunctionString
176074 // Start of memberFunctionString
176075 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
176076 
176077  void post_construction_initialization() override;
176078 
176079 
176080 // End of memberFunctionString
176081 
176082  public:
176083  SgStatement* get_body() const;
176084  void set_body(SgStatement* body);
176085 
176086  public:
176087  std::string get_default_construct_name() const;
176088  void set_default_construct_name(std::string default_construct_name);
176089 
176090 
176091  public:
176092  virtual ~SgDefaultOptionStmt();
176093 
176094 
176095  public:
176096  SgDefaultOptionStmt(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
176098 
176099  protected:
176100 // Start of memberFunctionString
176102 
176103 // End of memberFunctionString
176104 // Start of memberFunctionString
176105 std::string p_default_construct_name;
176106 
176107 // End of memberFunctionString
176108 
176109 
176110 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
176111 
176112 
176113  };
176114 #endif
176115 
176116 // postdeclarations for SgDefaultOptionStmt
176117 
176118 /* #line 176119 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
176119 
176120 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
176121 
176122 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
176123 
176124 
176125 /* #line 176126 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
176126 
176127 
176128 
176129 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
176130 
176131 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
176132 // This code is automatically generated for each
176133 // terminal and non-terminal within the defined
176134 // grammar. There is a simple way to change the
176135 // code to fix bugs etc. See the ROSE README file
176136 // for directions.
176137 
176138 // tps: (02/22/2010): Adding DLL export requirements
176139 #include "rosedll.h"
176140 
176141 // predeclarations for SgBreakStmt
176142 
176143 /* #line 176144 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
176144 
176145 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
176146 
176147 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
176148 
176149 #if 1
176150 // Class Definition for SgBreakStmt
176151 class ROSE_DLL_API SgBreakStmt : public SgStatement
176152  {
176153  public:
176154 
176155 
176156 /* #line 176157 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
176157 
176158  virtual SgNode* copy ( SgCopyHelp& help) const override;
176159 // Start of memberFunctionString
176160 /* #line 2537 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
176161 
176162 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
176163  virtual unsigned int cfgIndexForEnd() const override;
176164  virtual bool cfgIsIndexInteresting(unsigned int) const override;
176165  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
176166  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
176167 #endif
176168 
176169 
176170 // End of memberFunctionString
176171 // Start of memberFunctionString
176172 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
176173 
176174 // *** COMMON CODE SECTION BEGINS HERE ***
176175 
176176  public:
176177 
176178  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
176179  // and not required which is required to match the other aspects of the copy mechanism code generation.
176180  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
176181  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
176182  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
176183  // virtual SgNode* copy ( const SgCopyHelp & help) const;
176184 
176186  virtual std::string class_name() const override;
176187 
176189  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
176190 
176192  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
176193  // static const VariantT static_variant = V_SgBreakStmt;
176194  enum { static_variant = V_SgBreakStmt };
176195 
176196  /* the generated cast function */
176198  ROSE_DLL_API friend SgBreakStmt* isSgBreakStmt( SgNode * s );
176199 
176201  ROSE_DLL_API friend const SgBreakStmt* isSgBreakStmt( const SgNode * s );
176202 
176203  // ******************************************
176204  // * Memory Pool / New / Delete
176205  // ******************************************
176206 
176207  public:
176209  static const unsigned pool_size; //
176211  static std::vector<unsigned char *> pools; //
176213  static SgBreakStmt * next_node; //
176214 
176216  static unsigned long initializeStorageClassArray(SgBreakStmtStorageClass *); //
176217 
176219  static void clearMemoryPool(); //
176220  static void deleteMemoryPool(); //
176221 
176223  static void extendMemoryPoolForFileIO(); //
176224 
176226  static SgBreakStmt * getPointerFromGlobalIndex(unsigned long); //
176228  static SgBreakStmt * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
176229 
176231  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
176233  static void resetValidFreepointers(); //
176235  static unsigned long getNumberOfLastValidPointer(); //
176236 
176237 
176238 #if defined(INLINE_FUNCTIONS)
176239 
176240  inline void *operator new (size_t size);
176241 #else
176242 
176243  void *operator new (size_t size);
176244 #endif
176245 
176246  void operator delete (void* pointer, size_t size);
176247 
176248  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
176249  void operator delete (void* pointer)
176250  {
176251  // This is the generated delete operator...
176252  SgBreakStmt::operator delete (pointer,sizeof(SgBreakStmt));
176253  }
176254 
176256  static size_t numberOfNodes();
176257 
176259  static size_t memoryUsage();
176260 
176261  // End of scope which started in IR nodes specific code
176262  /* */
176263 
176264  /* name Internal Functions
176265  \brief Internal functions ... incomplete-documentation
176266 
176267  These functions have been made public as part of the design, but they are suggested for internal use
176268  or by particularly knowledgeable users for specialized tools or applications.
176269 
176270  \internal We could not make these private because they are required by user for special purposes. And
176271  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
176272 
176273  */
176274 
176275  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
176276  // overridden in every class by *generated* implementation
176278  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
176279  // MS: 06/28/02 container of names of variables or container indices
176280  // used used in the traversal to access AST successor nodes
176281  // overridden in every class by *generated* implementation
176284  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
176285 
176286  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
176287  // than all the vector copies. The implementation for these functions is generated for each class.
176289  virtual size_t get_numberOfTraversalSuccessors() override;
176291  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
176293  virtual size_t get_childIndex(SgNode *child) override;
176294 
176295 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
176296  // MS: 08/16/2002 method for generating RTI information
176298  virtual RTIReturnType roseRTI() override;
176299 #endif
176300  /* */
176301 
176302 
176303 
176304  /* name Deprecated Functions
176305  \brief Deprecated functions ... incomplete-documentation
176306 
176307  These functions have been deprecated from use.
176308  */
176309  /* */
176310 
176312  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
176313 
176314  // JJW (10/16/2008): Changed to a single function in Node.code, and put
176315  // getVariant() in #if 0 block to prevent confusing Doxygen
176316 #if 0
176317 
176318  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
176320  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
176321 #endif
176322  /* */
176323 
176324 
176325 
176326 
176327  public:
176328  /* name Traversal Support Functions
176329  \brief Traversal support functions ... incomplete-documentation
176330 
176331  These functions have been made public as part of the design, but they are suggested for internal use
176332  or by particularly knowledgable users for specialized tools or applications.
176333  */
176334  /* */
176335 
176336  // DQ (11/26/2005): Support for visitor pattern mechanims
176337  // (inferior to ROSE traversal mechanism, experimental).
176341 
176342  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
176344  virtual void accept (ROSE_VisitorPattern & visitor) override;
176345 
176346  // DQ (12/26/2005): Support for traversal based on the memory pool
176349  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
176350 
176353  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
176354 
176355  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
176356  // This traversal helps support internal tools that call static member functions.
176357  // note: this function operates on the memory pools.
176360  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
176361  /* */
176362 
176363 
176364  public:
176365  /* name Memory Allocation Functions
176366  \brief Memory allocations functions ... incomplete-documentation
176367 
176368  These functions have been made public as part of the design, but they are suggested for internal use
176369  or by particularly knowledgable users for specialized tools or applications.
176370  */
176371  /* */
176372 
176383  virtual bool isInMemoryPool() override;
176384 
176395  virtual void checkDataMemberPointersIfInMemoryPool() override;
176396 
176397  // DQ (4/30/2006): Modified to be a const function.
176412  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
176413 
176423  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
176424 
176436  virtual long getChildIndex( SgNode* childNode ) const override;
176437 
176438  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
176439  // comment here (changed to be a C style comment and not be a doxygen comment).
176440  /* \brief Constructor for use by AST File I/O Mechanism
176441 
176442  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
176443  which obtained via fast binary file I/O from disk.
176444  */
176445  // SgBreakStmt( SgBreakStmtStorageClass& source );
176446 
176447 
176448 
176449 
176450 
176451  // JH (10/24/2005): methods added to support the ast file IO
176452  private:
176453 
176454  /* name AST Memory Allocation Support Functions
176455  \brief Memory allocations support....
176456 
176457  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
176458  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
176459  and support the AST File I/O Mechanism.
176460  */
176461  /* */
176462 
176463  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
176464  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
176465  that I use the same type everywhere, if any changes are made. THe second one declares the type
176466  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
176467  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
176468  a correspinding one in the AST_FILE_IO class!
176469  */
176470  // DQ (9/2/2015): This typedef is no longer used, we can't define the
176471  // comment here (changed to be a C style comment and not be a doxygen comment).
176472  /* \brief Typedef used for low level memory access.
176473  */
176474  // typedef unsigned char* TestType;
176475 
176476  // DQ (9/2/2015): This typedef is no longer used, we can't define the
176477  // comment here (changed to be a C style comment and not be a doxygen comment).
176478  /* \brief Typedef used to hold memory addresses as values.
176479  */
176480  // typedef unsigned long AddressType;
176481 
176482 
176483 
176484  // necessary, to have direct access to the p_freepointer and the private methods !
176486  friend class AST_FILE_IO;
176487 
176489  friend class SgBreakStmtStorageClass;
176490 
176492  friend class AstSpecificDataManagingClass;
176493 
176495  friend class AstSpecificDataManagingClassStorageClass;
176496 
176497  public:
176499  SgBreakStmt( const SgBreakStmtStorageClass& source );
176500 
176501  // private: // JJW hack
176502  /*
176503  name AST Memory Allocation Support Variables
176504  Memory allocations support variables
176505 
176506  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
176507  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
176508  and support the AST File I/O Mechanism.
176509  */
176510  /* */
176511 
176512  public:
176513 
176514  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
176515  // to current node (so that it will work cleanly with build functions to specify patterns).
176516  // virtual SgNode* addRegExpAttribute();
176522  SgBreakStmt* addRegExpAttribute(std::string s, AstRegExAttribute* a);
176523 
176524 // *** COMMON CODE SECTION ENDS HERE ***
176525 
176526 
176527 // End of memberFunctionString
176528 // Start of memberFunctionString
176529 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
176530 
176531  // the generated cast function
176532  // friend ROSE_DLL_API SgBreakStmt* isSgBreakStmt ( SgNode* s );
176533 
176534  typedef SgStatement base_node_type;
176535 
176536 
176537 // End of memberFunctionString
176538 // Start of memberFunctionString
176539 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
176540 
176541  void post_construction_initialization() override;
176542 
176543 
176544 // End of memberFunctionString
176545 
176546  public:
176547  std::string get_do_string_label() const;
176548  void set_do_string_label(std::string do_string_label);
176549 
176550 
176551  public:
176552  virtual ~SgBreakStmt();
176553 
176554 
176555  public:
176556  SgBreakStmt(Sg_File_Info* startOfConstruct );
176557  SgBreakStmt();
176558 
176559  protected:
176560 // Start of memberFunctionString
176561 std::string p_do_string_label;
176562 
176563 // End of memberFunctionString
176564 
176565 
176566 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
176567 
176568 
176569  };
176570 #endif
176571 
176572 // postdeclarations for SgBreakStmt
176573 
176574 /* #line 176575 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
176575 
176576 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
176577 
176578 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
176579 
176580 
176581 /* #line 176582 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
176582 
176583 
176584 
176585 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
176586 
176587 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
176588 // This code is automatically generated for each
176589 // terminal and non-terminal within the defined
176590 // grammar. There is a simple way to change the
176591 // code to fix bugs etc. See the ROSE README file
176592 // for directions.
176593 
176594 // tps: (02/22/2010): Adding DLL export requirements
176595 #include "rosedll.h"
176596 
176597 // predeclarations for SgContinueStmt
176598 
176599 /* #line 176600 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
176600 
176601 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
176602 
176603 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
176604 
176605 #if 1
176606 // Class Definition for SgContinueStmt
176607 class ROSE_DLL_API SgContinueStmt : public SgStatement
176608  {
176609  public:
176610 
176611 
176612 /* #line 176613 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
176613 
176614  virtual SgNode* copy ( SgCopyHelp& help) const override;
176615 // Start of memberFunctionString
176616 /* #line 2547 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
176617 
176618 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
176619  virtual unsigned int cfgIndexForEnd() const override;
176620  virtual bool cfgIsIndexInteresting(unsigned int) const override;
176621  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
176622  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
176623 #endif
176624 
176625 
176626 // End of memberFunctionString
176627 // Start of memberFunctionString
176628 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
176629 
176630 // *** COMMON CODE SECTION BEGINS HERE ***
176631 
176632  public:
176633 
176634  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
176635  // and not required which is required to match the other aspects of the copy mechanism code generation.
176636  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
176637  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
176638  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
176639  // virtual SgNode* copy ( const SgCopyHelp & help) const;
176640 
176642  virtual std::string class_name() const override;
176643 
176645  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
176646 
176648  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
176649  // static const VariantT static_variant = V_SgContinueStmt;
176650  enum { static_variant = V_SgContinueStmt };
176651 
176652  /* the generated cast function */
176654  ROSE_DLL_API friend SgContinueStmt* isSgContinueStmt( SgNode * s );
176655 
176657  ROSE_DLL_API friend const SgContinueStmt* isSgContinueStmt( const SgNode * s );
176658 
176659  // ******************************************
176660  // * Memory Pool / New / Delete
176661  // ******************************************
176662 
176663  public:
176665  static const unsigned pool_size; //
176667  static std::vector<unsigned char *> pools; //
176669  static SgContinueStmt * next_node; //
176670 
176672  static unsigned long initializeStorageClassArray(SgContinueStmtStorageClass *); //
176673 
176675  static void clearMemoryPool(); //
176676  static void deleteMemoryPool(); //
176677 
176679  static void extendMemoryPoolForFileIO(); //
176680 
176682  static SgContinueStmt * getPointerFromGlobalIndex(unsigned long); //
176684  static SgContinueStmt * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
176685 
176687  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
176689  static void resetValidFreepointers(); //
176691  static unsigned long getNumberOfLastValidPointer(); //
176692 
176693 
176694 #if defined(INLINE_FUNCTIONS)
176695 
176696  inline void *operator new (size_t size);
176697 #else
176698 
176699  void *operator new (size_t size);
176700 #endif
176701 
176702  void operator delete (void* pointer, size_t size);
176703 
176704  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
176705  void operator delete (void* pointer)
176706  {
176707  // This is the generated delete operator...
176708  SgContinueStmt::operator delete (pointer,sizeof(SgContinueStmt));
176709  }
176710 
176712  static size_t numberOfNodes();
176713 
176715  static size_t memoryUsage();
176716 
176717  // End of scope which started in IR nodes specific code
176718  /* */
176719 
176720  /* name Internal Functions
176721  \brief Internal functions ... incomplete-documentation
176722 
176723  These functions have been made public as part of the design, but they are suggested for internal use
176724  or by particularly knowledgeable users for specialized tools or applications.
176725 
176726  \internal We could not make these private because they are required by user for special purposes. And
176727  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
176728 
176729  */
176730 
176731  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
176732  // overridden in every class by *generated* implementation
176734  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
176735  // MS: 06/28/02 container of names of variables or container indices
176736  // used used in the traversal to access AST successor nodes
176737  // overridden in every class by *generated* implementation
176740  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
176741 
176742  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
176743  // than all the vector copies. The implementation for these functions is generated for each class.
176745  virtual size_t get_numberOfTraversalSuccessors() override;
176747  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
176749  virtual size_t get_childIndex(SgNode *child) override;
176750 
176751 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
176752  // MS: 08/16/2002 method for generating RTI information
176754  virtual RTIReturnType roseRTI() override;
176755 #endif
176756  /* */
176757 
176758 
176759 
176760  /* name Deprecated Functions
176761  \brief Deprecated functions ... incomplete-documentation
176762 
176763  These functions have been deprecated from use.
176764  */
176765  /* */
176766 
176768  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
176769 
176770  // JJW (10/16/2008): Changed to a single function in Node.code, and put
176771  // getVariant() in #if 0 block to prevent confusing Doxygen
176772 #if 0
176773 
176774  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
176776  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
176777 #endif
176778  /* */
176779 
176780 
176781 
176782 
176783  public:
176784  /* name Traversal Support Functions
176785  \brief Traversal support functions ... incomplete-documentation
176786 
176787  These functions have been made public as part of the design, but they are suggested for internal use
176788  or by particularly knowledgable users for specialized tools or applications.
176789  */
176790  /* */
176791 
176792  // DQ (11/26/2005): Support for visitor pattern mechanims
176793  // (inferior to ROSE traversal mechanism, experimental).
176797 
176798  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
176800  virtual void accept (ROSE_VisitorPattern & visitor) override;
176801 
176802  // DQ (12/26/2005): Support for traversal based on the memory pool
176805  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
176806 
176809  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
176810 
176811  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
176812  // This traversal helps support internal tools that call static member functions.
176813  // note: this function operates on the memory pools.
176816  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
176817  /* */
176818 
176819 
176820  public:
176821  /* name Memory Allocation Functions
176822  \brief Memory allocations functions ... incomplete-documentation
176823 
176824  These functions have been made public as part of the design, but they are suggested for internal use
176825  or by particularly knowledgable users for specialized tools or applications.
176826  */
176827  /* */
176828 
176839  virtual bool isInMemoryPool() override;
176840 
176851  virtual void checkDataMemberPointersIfInMemoryPool() override;
176852 
176853  // DQ (4/30/2006): Modified to be a const function.
176868  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
176869 
176879  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
176880 
176892  virtual long getChildIndex( SgNode* childNode ) const override;
176893 
176894  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
176895  // comment here (changed to be a C style comment and not be a doxygen comment).
176896  /* \brief Constructor for use by AST File I/O Mechanism
176897 
176898  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
176899  which obtained via fast binary file I/O from disk.
176900  */
176901  // SgContinueStmt( SgContinueStmtStorageClass& source );
176902 
176903 
176904 
176905 
176906 
176907  // JH (10/24/2005): methods added to support the ast file IO
176908  private:
176909 
176910  /* name AST Memory Allocation Support Functions
176911  \brief Memory allocations support....
176912 
176913  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
176914  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
176915  and support the AST File I/O Mechanism.
176916  */
176917  /* */
176918 
176919  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
176920  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
176921  that I use the same type everywhere, if any changes are made. THe second one declares the type
176922  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
176923  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
176924  a correspinding one in the AST_FILE_IO class!
176925  */
176926  // DQ (9/2/2015): This typedef is no longer used, we can't define the
176927  // comment here (changed to be a C style comment and not be a doxygen comment).
176928  /* \brief Typedef used for low level memory access.
176929  */
176930  // typedef unsigned char* TestType;
176931 
176932  // DQ (9/2/2015): This typedef is no longer used, we can't define the
176933  // comment here (changed to be a C style comment and not be a doxygen comment).
176934  /* \brief Typedef used to hold memory addresses as values.
176935  */
176936  // typedef unsigned long AddressType;
176937 
176938 
176939 
176940  // necessary, to have direct access to the p_freepointer and the private methods !
176942  friend class AST_FILE_IO;
176943 
176945  friend class SgContinueStmtStorageClass;
176946 
176948  friend class AstSpecificDataManagingClass;
176949 
176951  friend class AstSpecificDataManagingClassStorageClass;
176952 
176953  public:
176955  SgContinueStmt( const SgContinueStmtStorageClass& source );
176956 
176957  // private: // JJW hack
176958  /*
176959  name AST Memory Allocation Support Variables
176960  Memory allocations support variables
176961 
176962  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
176963  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
176964  and support the AST File I/O Mechanism.
176965  */
176966  /* */
176967 
176968  public:
176969 
176970  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
176971  // to current node (so that it will work cleanly with build functions to specify patterns).
176972  // virtual SgNode* addRegExpAttribute();
176979 
176980 // *** COMMON CODE SECTION ENDS HERE ***
176981 
176982 
176983 // End of memberFunctionString
176984 // Start of memberFunctionString
176985 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
176986 
176987  // the generated cast function
176988  // friend ROSE_DLL_API SgContinueStmt* isSgContinueStmt ( SgNode* s );
176989 
176990  typedef SgStatement base_node_type;
176991 
176992 
176993 // End of memberFunctionString
176994 // Start of memberFunctionString
176995 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
176996 
176997  void post_construction_initialization() override;
176998 
176999 
177000 // End of memberFunctionString
177001 
177002  public:
177003  std::string get_do_string_label() const;
177004  void set_do_string_label(std::string do_string_label);
177005 
177006 
177007  public:
177008  virtual ~SgContinueStmt();
177009 
177010 
177011  public:
177012  SgContinueStmt(Sg_File_Info* startOfConstruct );
177013  SgContinueStmt();
177014 
177015  protected:
177016 // Start of memberFunctionString
177017 std::string p_do_string_label;
177018 
177019 // End of memberFunctionString
177020 
177021 
177022 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
177023 
177024 
177025  };
177026 #endif
177027 
177028 // postdeclarations for SgContinueStmt
177029 
177030 /* #line 177031 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
177031 
177032 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
177033 
177034 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
177035 
177036 
177037 /* #line 177038 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
177038 
177039 
177040 
177041 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
177042 
177043 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
177044 // This code is automatically generated for each
177045 // terminal and non-terminal within the defined
177046 // grammar. There is a simple way to change the
177047 // code to fix bugs etc. See the ROSE README file
177048 // for directions.
177049 
177050 // tps: (02/22/2010): Adding DLL export requirements
177051 #include "rosedll.h"
177052 
177053 // predeclarations for SgReturnStmt
177054 
177055 /* #line 177056 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
177056 
177057 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
177058 
177059 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
177060 
177061 #if 1
177062 // Class Definition for SgReturnStmt
177063 class ROSE_DLL_API SgReturnStmt : public SgStatement
177064  {
177065  public:
177066 
177067 
177068 /* #line 177069 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
177069 
177070  virtual SgNode* copy ( SgCopyHelp& help) const override;
177071 // Start of memberFunctionString
177072 /* #line 2557 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
177073 
177074 
177075 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
177076  virtual unsigned int cfgIndexForEnd() const override;
177077  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
177078  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
177079 #endif
177080  int replace_expression(SgExpression * original_expression, SgExpression * new_expression ) override;
177081 
177082  // get lvalue
177083  virtual bool isChildUsedAsLValue(const SgExpression* child) const override; // INTERNAL
177084 
177085 
177086 // End of memberFunctionString
177087 // Start of memberFunctionString
177088 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
177089 
177090 // *** COMMON CODE SECTION BEGINS HERE ***
177091 
177092  public:
177093 
177094  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
177095  // and not required which is required to match the other aspects of the copy mechanism code generation.
177096  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
177097  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
177098  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
177099  // virtual SgNode* copy ( const SgCopyHelp & help) const;
177100 
177102  virtual std::string class_name() const override;
177103 
177105  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
177106 
177108  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
177109  // static const VariantT static_variant = V_SgReturnStmt;
177110  enum { static_variant = V_SgReturnStmt };
177111 
177112  /* the generated cast function */
177114  ROSE_DLL_API friend SgReturnStmt* isSgReturnStmt( SgNode * s );
177115 
177117  ROSE_DLL_API friend const SgReturnStmt* isSgReturnStmt( const SgNode * s );
177118 
177119  // ******************************************
177120  // * Memory Pool / New / Delete
177121  // ******************************************
177122 
177123  public:
177125  static const unsigned pool_size; //
177127  static std::vector<unsigned char *> pools; //
177129  static SgReturnStmt * next_node; //
177130 
177132  static unsigned long initializeStorageClassArray(SgReturnStmtStorageClass *); //
177133 
177135  static void clearMemoryPool(); //
177136  static void deleteMemoryPool(); //
177137 
177139  static void extendMemoryPoolForFileIO(); //
177140 
177142  static SgReturnStmt * getPointerFromGlobalIndex(unsigned long); //
177144  static SgReturnStmt * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
177145 
177147  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
177149  static void resetValidFreepointers(); //
177151  static unsigned long getNumberOfLastValidPointer(); //
177152 
177153 
177154 #if defined(INLINE_FUNCTIONS)
177155 
177156  inline void *operator new (size_t size);
177157 #else
177158 
177159  void *operator new (size_t size);
177160 #endif
177161 
177162  void operator delete (void* pointer, size_t size);
177163 
177164  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
177165  void operator delete (void* pointer)
177166  {
177167  // This is the generated delete operator...
177168  SgReturnStmt::operator delete (pointer,sizeof(SgReturnStmt));
177169  }
177170 
177172  static size_t numberOfNodes();
177173 
177175  static size_t memoryUsage();
177176 
177177  // End of scope which started in IR nodes specific code
177178  /* */
177179 
177180  /* name Internal Functions
177181  \brief Internal functions ... incomplete-documentation
177182 
177183  These functions have been made public as part of the design, but they are suggested for internal use
177184  or by particularly knowledgeable users for specialized tools or applications.
177185 
177186  \internal We could not make these private because they are required by user for special purposes. And
177187  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
177188 
177189  */
177190 
177191  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
177192  // overridden in every class by *generated* implementation
177194  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
177195  // MS: 06/28/02 container of names of variables or container indices
177196  // used used in the traversal to access AST successor nodes
177197  // overridden in every class by *generated* implementation
177200  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
177201 
177202  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
177203  // than all the vector copies. The implementation for these functions is generated for each class.
177205  virtual size_t get_numberOfTraversalSuccessors() override;
177207  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
177209  virtual size_t get_childIndex(SgNode *child) override;
177210 
177211 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
177212  // MS: 08/16/2002 method for generating RTI information
177214  virtual RTIReturnType roseRTI() override;
177215 #endif
177216  /* */
177217 
177218 
177219 
177220  /* name Deprecated Functions
177221  \brief Deprecated functions ... incomplete-documentation
177222 
177223  These functions have been deprecated from use.
177224  */
177225  /* */
177226 
177228  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
177229 
177230  // JJW (10/16/2008): Changed to a single function in Node.code, and put
177231  // getVariant() in #if 0 block to prevent confusing Doxygen
177232 #if 0
177233 
177234  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
177236  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
177237 #endif
177238  /* */
177239 
177240 
177241 
177242 
177243  public:
177244  /* name Traversal Support Functions
177245  \brief Traversal support functions ... incomplete-documentation
177246 
177247  These functions have been made public as part of the design, but they are suggested for internal use
177248  or by particularly knowledgable users for specialized tools or applications.
177249  */
177250  /* */
177251 
177252  // DQ (11/26/2005): Support for visitor pattern mechanims
177253  // (inferior to ROSE traversal mechanism, experimental).
177257 
177258  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
177260  virtual void accept (ROSE_VisitorPattern & visitor) override;
177261 
177262  // DQ (12/26/2005): Support for traversal based on the memory pool
177265  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
177266 
177269  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
177270 
177271  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
177272  // This traversal helps support internal tools that call static member functions.
177273  // note: this function operates on the memory pools.
177276  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
177277  /* */
177278 
177279 
177280  public:
177281  /* name Memory Allocation Functions
177282  \brief Memory allocations functions ... incomplete-documentation
177283 
177284  These functions have been made public as part of the design, but they are suggested for internal use
177285  or by particularly knowledgable users for specialized tools or applications.
177286  */
177287  /* */
177288 
177299  virtual bool isInMemoryPool() override;
177300 
177311  virtual void checkDataMemberPointersIfInMemoryPool() override;
177312 
177313  // DQ (4/30/2006): Modified to be a const function.
177328  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
177329 
177339  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
177340 
177352  virtual long getChildIndex( SgNode* childNode ) const override;
177353 
177354  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
177355  // comment here (changed to be a C style comment and not be a doxygen comment).
177356  /* \brief Constructor for use by AST File I/O Mechanism
177357 
177358  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
177359  which obtained via fast binary file I/O from disk.
177360  */
177361  // SgReturnStmt( SgReturnStmtStorageClass& source );
177362 
177363 
177364 
177365 
177366 
177367  // JH (10/24/2005): methods added to support the ast file IO
177368  private:
177369 
177370  /* name AST Memory Allocation Support Functions
177371  \brief Memory allocations support....
177372 
177373  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
177374  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
177375  and support the AST File I/O Mechanism.
177376  */
177377  /* */
177378 
177379  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
177380  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
177381  that I use the same type everywhere, if any changes are made. THe second one declares the type
177382  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
177383  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
177384  a correspinding one in the AST_FILE_IO class!
177385  */
177386  // DQ (9/2/2015): This typedef is no longer used, we can't define the
177387  // comment here (changed to be a C style comment and not be a doxygen comment).
177388  /* \brief Typedef used for low level memory access.
177389  */
177390  // typedef unsigned char* TestType;
177391 
177392  // DQ (9/2/2015): This typedef is no longer used, we can't define the
177393  // comment here (changed to be a C style comment and not be a doxygen comment).
177394  /* \brief Typedef used to hold memory addresses as values.
177395  */
177396  // typedef unsigned long AddressType;
177397 
177398 
177399 
177400  // necessary, to have direct access to the p_freepointer and the private methods !
177402  friend class AST_FILE_IO;
177403 
177405  friend class SgReturnStmtStorageClass;
177406 
177408  friend class AstSpecificDataManagingClass;
177409 
177411  friend class AstSpecificDataManagingClassStorageClass;
177412 
177413  public:
177415  SgReturnStmt( const SgReturnStmtStorageClass& source );
177416 
177417  // private: // JJW hack
177418  /*
177419  name AST Memory Allocation Support Variables
177420  Memory allocations support variables
177421 
177422  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
177423  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
177424  and support the AST File I/O Mechanism.
177425  */
177426  /* */
177427 
177428  public:
177429 
177430  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
177431  // to current node (so that it will work cleanly with build functions to specify patterns).
177432  // virtual SgNode* addRegExpAttribute();
177438  SgReturnStmt* addRegExpAttribute(std::string s, AstRegExAttribute* a);
177439 
177440 // *** COMMON CODE SECTION ENDS HERE ***
177441 
177442 
177443 // End of memberFunctionString
177444 // Start of memberFunctionString
177445 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
177446 
177447  // the generated cast function
177448  // friend ROSE_DLL_API SgReturnStmt* isSgReturnStmt ( SgNode* s );
177449 
177450  typedef SgStatement base_node_type;
177451 
177452 
177453 // End of memberFunctionString
177454 // Start of memberFunctionString
177455 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
177456 
177457  void post_construction_initialization() override;
177458 
177459 
177460 // End of memberFunctionString
177461 
177462  public:
177463  SgExpression* get_expression() const;
177464  void set_expression(SgExpression* expression);
177465 
177466 
177467  public:
177468  virtual ~SgReturnStmt();
177469 
177470 
177471  public:
177472  SgReturnStmt(Sg_File_Info* startOfConstruct , SgExpression* expression = NULL);
177473  SgReturnStmt(SgExpression* expression);
177474 
177475  protected:
177476 // Start of memberFunctionString
177477 SgExpression* p_expression;
177478 
177479 // End of memberFunctionString
177480 
177481 
177482 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
177483 
177484 
177485  };
177486 #endif
177487 
177488 // postdeclarations for SgReturnStmt
177489 
177490 /* #line 177491 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
177491 
177492 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
177493 
177494 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
177495 
177496 
177497 /* #line 177498 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
177498 
177499 
177500 
177501 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
177502 
177503 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
177504 // This code is automatically generated for each
177505 // terminal and non-terminal within the defined
177506 // grammar. There is a simple way to change the
177507 // code to fix bugs etc. See the ROSE README file
177508 // for directions.
177509 
177510 // tps: (02/22/2010): Adding DLL export requirements
177511 #include "rosedll.h"
177512 
177513 // predeclarations for SgGotoStatement
177514 
177515 /* #line 177516 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
177516 
177517 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
177518 
177519 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
177520 
177521 #if 1
177522 // Class Definition for SgGotoStatement
177523 class ROSE_DLL_API SgGotoStatement : public SgStatement
177524  {
177525  public:
177526 
177527 
177528 /* #line 177529 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
177529 
177530  virtual SgNode* copy ( SgCopyHelp& help) const override;
177531 // Start of memberFunctionString
177532 /* #line 2571 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
177533 
177534  // void post_construction_initialization();
177535 
177536  protected:
177537  virtual bool replace_child(SgStatement *,SgStatement *, bool extractListFromBasicBlock = false) override;
177538 
177539  public:
177540 
177541 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
177542  virtual unsigned int cfgIndexForEnd() const override;
177543  virtual bool cfgIsIndexInteresting(unsigned int) const override;
177544  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
177545  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
177546 #endif
177547 
177548 #if ALT_FIXUP_COPY
177549  // DQ (11/7/2007): These need to be called separately (see documentation)
177550  virtual void fixupCopy_scopes (SgNode* copy, SgCopyHelp & help) const override;
177551  virtual void fixupCopy_symbols (SgNode* copy, SgCopyHelp & help) const override;
177552  virtual void fixupCopy_references (SgNode* copy, SgCopyHelp & help) const override;
177553 #else
177554  // DQ (10/5/2007): Added fixup function to set scopes not set properly by the ROSETTA generated copy!
177555  virtual void fixupCopy(SgNode* copy, SgCopyHelp & help) const;
177556 #endif
177557 
177558 
177559 
177560 // End of memberFunctionString
177561 // Start of memberFunctionString
177562 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
177563 
177564 // *** COMMON CODE SECTION BEGINS HERE ***
177565 
177566  public:
177567 
177568  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
177569  // and not required which is required to match the other aspects of the copy mechanism code generation.
177570  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
177571  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
177572  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
177573  // virtual SgNode* copy ( const SgCopyHelp & help) const;
177574 
177576  virtual std::string class_name() const override;
177577 
177579  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
177580 
177582  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
177583  // static const VariantT static_variant = V_SgGotoStatement;
177584  enum { static_variant = V_SgGotoStatement };
177585 
177586  /* the generated cast function */
177588  ROSE_DLL_API friend SgGotoStatement* isSgGotoStatement( SgNode * s );
177589 
177591  ROSE_DLL_API friend const SgGotoStatement* isSgGotoStatement( const SgNode * s );
177592 
177593  // ******************************************
177594  // * Memory Pool / New / Delete
177595  // ******************************************
177596 
177597  public:
177599  static const unsigned pool_size; //
177601  static std::vector<unsigned char *> pools; //
177603  static SgGotoStatement * next_node; //
177604 
177606  static unsigned long initializeStorageClassArray(SgGotoStatementStorageClass *); //
177607 
177609  static void clearMemoryPool(); //
177610  static void deleteMemoryPool(); //
177611 
177613  static void extendMemoryPoolForFileIO(); //
177614 
177616  static SgGotoStatement * getPointerFromGlobalIndex(unsigned long); //
177618  static SgGotoStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
177619 
177621  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
177623  static void resetValidFreepointers(); //
177625  static unsigned long getNumberOfLastValidPointer(); //
177626 
177627 
177628 #if defined(INLINE_FUNCTIONS)
177629 
177630  inline void *operator new (size_t size);
177631 #else
177632 
177633  void *operator new (size_t size);
177634 #endif
177635 
177636  void operator delete (void* pointer, size_t size);
177637 
177638  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
177639  void operator delete (void* pointer)
177640  {
177641  // This is the generated delete operator...
177642  SgGotoStatement::operator delete (pointer,sizeof(SgGotoStatement));
177643  }
177644 
177646  static size_t numberOfNodes();
177647 
177649  static size_t memoryUsage();
177650 
177651  // End of scope which started in IR nodes specific code
177652  /* */
177653 
177654  /* name Internal Functions
177655  \brief Internal functions ... incomplete-documentation
177656 
177657  These functions have been made public as part of the design, but they are suggested for internal use
177658  or by particularly knowledgeable users for specialized tools or applications.
177659 
177660  \internal We could not make these private because they are required by user for special purposes. And
177661  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
177662 
177663  */
177664 
177665  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
177666  // overridden in every class by *generated* implementation
177668  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
177669  // MS: 06/28/02 container of names of variables or container indices
177670  // used used in the traversal to access AST successor nodes
177671  // overridden in every class by *generated* implementation
177674  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
177675 
177676  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
177677  // than all the vector copies. The implementation for these functions is generated for each class.
177679  virtual size_t get_numberOfTraversalSuccessors() override;
177681  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
177683  virtual size_t get_childIndex(SgNode *child) override;
177684 
177685 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
177686  // MS: 08/16/2002 method for generating RTI information
177688  virtual RTIReturnType roseRTI() override;
177689 #endif
177690  /* */
177691 
177692 
177693 
177694  /* name Deprecated Functions
177695  \brief Deprecated functions ... incomplete-documentation
177696 
177697  These functions have been deprecated from use.
177698  */
177699  /* */
177700 
177702  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
177703 
177704  // JJW (10/16/2008): Changed to a single function in Node.code, and put
177705  // getVariant() in #if 0 block to prevent confusing Doxygen
177706 #if 0
177707 
177708  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
177710  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
177711 #endif
177712  /* */
177713 
177714 
177715 
177716 
177717  public:
177718  /* name Traversal Support Functions
177719  \brief Traversal support functions ... incomplete-documentation
177720 
177721  These functions have been made public as part of the design, but they are suggested for internal use
177722  or by particularly knowledgable users for specialized tools or applications.
177723  */
177724  /* */
177725 
177726  // DQ (11/26/2005): Support for visitor pattern mechanims
177727  // (inferior to ROSE traversal mechanism, experimental).
177731 
177732  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
177734  virtual void accept (ROSE_VisitorPattern & visitor) override;
177735 
177736  // DQ (12/26/2005): Support for traversal based on the memory pool
177739  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
177740 
177743  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
177744 
177745  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
177746  // This traversal helps support internal tools that call static member functions.
177747  // note: this function operates on the memory pools.
177750  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
177751  /* */
177752 
177753 
177754  public:
177755  /* name Memory Allocation Functions
177756  \brief Memory allocations functions ... incomplete-documentation
177757 
177758  These functions have been made public as part of the design, but they are suggested for internal use
177759  or by particularly knowledgable users for specialized tools or applications.
177760  */
177761  /* */
177762 
177773  virtual bool isInMemoryPool() override;
177774 
177785  virtual void checkDataMemberPointersIfInMemoryPool() override;
177786 
177787  // DQ (4/30/2006): Modified to be a const function.
177802  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
177803 
177813  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
177814 
177826  virtual long getChildIndex( SgNode* childNode ) const override;
177827 
177828  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
177829  // comment here (changed to be a C style comment and not be a doxygen comment).
177830  /* \brief Constructor for use by AST File I/O Mechanism
177831 
177832  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
177833  which obtained via fast binary file I/O from disk.
177834  */
177835  // SgGotoStatement( SgGotoStatementStorageClass& source );
177836 
177837 
177838 
177839 
177840 
177841  // JH (10/24/2005): methods added to support the ast file IO
177842  private:
177843 
177844  /* name AST Memory Allocation Support Functions
177845  \brief Memory allocations support....
177846 
177847  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
177848  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
177849  and support the AST File I/O Mechanism.
177850  */
177851  /* */
177852 
177853  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
177854  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
177855  that I use the same type everywhere, if any changes are made. THe second one declares the type
177856  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
177857  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
177858  a correspinding one in the AST_FILE_IO class!
177859  */
177860  // DQ (9/2/2015): This typedef is no longer used, we can't define the
177861  // comment here (changed to be a C style comment and not be a doxygen comment).
177862  /* \brief Typedef used for low level memory access.
177863  */
177864  // typedef unsigned char* TestType;
177865 
177866  // DQ (9/2/2015): This typedef is no longer used, we can't define the
177867  // comment here (changed to be a C style comment and not be a doxygen comment).
177868  /* \brief Typedef used to hold memory addresses as values.
177869  */
177870  // typedef unsigned long AddressType;
177871 
177872 
177873 
177874  // necessary, to have direct access to the p_freepointer and the private methods !
177876  friend class AST_FILE_IO;
177877 
177879  friend class SgGotoStatementStorageClass;
177880 
177882  friend class AstSpecificDataManagingClass;
177883 
177885  friend class AstSpecificDataManagingClassStorageClass;
177886 
177887  public:
177889  SgGotoStatement( const SgGotoStatementStorageClass& source );
177890 
177891  // private: // JJW hack
177892  /*
177893  name AST Memory Allocation Support Variables
177894  Memory allocations support variables
177895 
177896  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
177897  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
177898  and support the AST File I/O Mechanism.
177899  */
177900  /* */
177901 
177902  public:
177903 
177904  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
177905  // to current node (so that it will work cleanly with build functions to specify patterns).
177906  // virtual SgNode* addRegExpAttribute();
177913 
177914 // *** COMMON CODE SECTION ENDS HERE ***
177915 
177916 
177917 // End of memberFunctionString
177918 // Start of memberFunctionString
177919 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
177920 
177921  // the generated cast function
177922  // friend ROSE_DLL_API SgGotoStatement* isSgGotoStatement ( SgNode* s );
177923 
177924  typedef SgStatement base_node_type;
177925 
177926 
177927 // End of memberFunctionString
177928 // Start of memberFunctionString
177929 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
177930 
177931  void post_construction_initialization() override;
177932 
177933 
177934 // End of memberFunctionString
177935 
177936  public:
177937  SgLabelStatement* get_label() const;
177938  void set_label(SgLabelStatement* label);
177939 
177940  public:
177941  SgLabelRefExp* get_label_expression() const;
177942  void set_label_expression(SgLabelRefExp* label_expression);
177943 
177944  public:
177945  SgExpression* get_selector_expression() const;
177946  void set_selector_expression(SgExpression* selector_expression);
177947 
177948 
177949  public:
177950  virtual ~SgGotoStatement();
177951 
177952 
177953  public:
177954  SgGotoStatement(Sg_File_Info* startOfConstruct , SgLabelStatement* label = NULL);
177956 
177957  protected:
177958 // Start of memberFunctionString
177960 
177961 // End of memberFunctionString
177962 // Start of memberFunctionString
177963 SgLabelRefExp* p_label_expression;
177964 
177965 // End of memberFunctionString
177966 // Start of memberFunctionString
177967 SgExpression* p_selector_expression;
177968 
177969 // End of memberFunctionString
177970 
177971 
177972 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
177973 
177974 
177975  };
177976 #endif
177977 
177978 // postdeclarations for SgGotoStatement
177979 
177980 /* #line 177981 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
177981 
177982 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
177983 
177984 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
177985 
177986 
177987 /* #line 177988 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
177988 
177989 
177990 
177991 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
177992 
177993 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
177994 // This code is automatically generated for each
177995 // terminal and non-terminal within the defined
177996 // grammar. There is a simple way to change the
177997 // code to fix bugs etc. See the ROSE README file
177998 // for directions.
177999 
178000 // tps: (02/22/2010): Adding DLL export requirements
178001 #include "rosedll.h"
178002 
178003 // predeclarations for SgSpawnStmt
178004 
178005 /* #line 178006 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
178006 
178007 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
178008 
178009 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
178010 
178011 #if 1
178012 // Class Definition for SgSpawnStmt
178013 class ROSE_DLL_API SgSpawnStmt : public SgStatement
178014  {
178015  public:
178016 
178017 
178018 /* #line 178019 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
178019 
178020  virtual SgNode* copy ( SgCopyHelp& help) const override;
178021 // Start of memberFunctionString
178022 /* #line 2622 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
178023 
178024 
178025 
178026 
178027 // End of memberFunctionString
178028 // Start of memberFunctionString
178029 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
178030 
178031 // *** COMMON CODE SECTION BEGINS HERE ***
178032 
178033  public:
178034 
178035  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
178036  // and not required which is required to match the other aspects of the copy mechanism code generation.
178037  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
178038  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
178039  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
178040  // virtual SgNode* copy ( const SgCopyHelp & help) const;
178041 
178043  virtual std::string class_name() const override;
178044 
178046  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
178047 
178049  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
178050  // static const VariantT static_variant = V_SgSpawnStmt;
178051  enum { static_variant = V_SgSpawnStmt };
178052 
178053  /* the generated cast function */
178055  ROSE_DLL_API friend SgSpawnStmt* isSgSpawnStmt( SgNode * s );
178056 
178058  ROSE_DLL_API friend const SgSpawnStmt* isSgSpawnStmt( const SgNode * s );
178059 
178060  // ******************************************
178061  // * Memory Pool / New / Delete
178062  // ******************************************
178063 
178064  public:
178066  static const unsigned pool_size; //
178068  static std::vector<unsigned char *> pools; //
178070  static SgSpawnStmt * next_node; //
178071 
178073  static unsigned long initializeStorageClassArray(SgSpawnStmtStorageClass *); //
178074 
178076  static void clearMemoryPool(); //
178077  static void deleteMemoryPool(); //
178078 
178080  static void extendMemoryPoolForFileIO(); //
178081 
178083  static SgSpawnStmt * getPointerFromGlobalIndex(unsigned long); //
178085  static SgSpawnStmt * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
178086 
178088  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
178090  static void resetValidFreepointers(); //
178092  static unsigned long getNumberOfLastValidPointer(); //
178093 
178094 
178095 #if defined(INLINE_FUNCTIONS)
178096 
178097  inline void *operator new (size_t size);
178098 #else
178099 
178100  void *operator new (size_t size);
178101 #endif
178102 
178103  void operator delete (void* pointer, size_t size);
178104 
178105  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
178106  void operator delete (void* pointer)
178107  {
178108  // This is the generated delete operator...
178109  SgSpawnStmt::operator delete (pointer,sizeof(SgSpawnStmt));
178110  }
178111 
178113  static size_t numberOfNodes();
178114 
178116  static size_t memoryUsage();
178117 
178118  // End of scope which started in IR nodes specific code
178119  /* */
178120 
178121  /* name Internal Functions
178122  \brief Internal functions ... incomplete-documentation
178123 
178124  These functions have been made public as part of the design, but they are suggested for internal use
178125  or by particularly knowledgeable users for specialized tools or applications.
178126 
178127  \internal We could not make these private because they are required by user for special purposes. And
178128  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
178129 
178130  */
178131 
178132  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
178133  // overridden in every class by *generated* implementation
178135  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
178136  // MS: 06/28/02 container of names of variables or container indices
178137  // used used in the traversal to access AST successor nodes
178138  // overridden in every class by *generated* implementation
178141  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
178142 
178143  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
178144  // than all the vector copies. The implementation for these functions is generated for each class.
178146  virtual size_t get_numberOfTraversalSuccessors() override;
178148  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
178150  virtual size_t get_childIndex(SgNode *child) override;
178151 
178152 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
178153  // MS: 08/16/2002 method for generating RTI information
178155  virtual RTIReturnType roseRTI() override;
178156 #endif
178157  /* */
178158 
178159 
178160 
178161  /* name Deprecated Functions
178162  \brief Deprecated functions ... incomplete-documentation
178163 
178164  These functions have been deprecated from use.
178165  */
178166  /* */
178167 
178169  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
178170 
178171  // JJW (10/16/2008): Changed to a single function in Node.code, and put
178172  // getVariant() in #if 0 block to prevent confusing Doxygen
178173 #if 0
178174 
178175  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
178177  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
178178 #endif
178179  /* */
178180 
178181 
178182 
178183 
178184  public:
178185  /* name Traversal Support Functions
178186  \brief Traversal support functions ... incomplete-documentation
178187 
178188  These functions have been made public as part of the design, but they are suggested for internal use
178189  or by particularly knowledgable users for specialized tools or applications.
178190  */
178191  /* */
178192 
178193  // DQ (11/26/2005): Support for visitor pattern mechanims
178194  // (inferior to ROSE traversal mechanism, experimental).
178198 
178199  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
178201  virtual void accept (ROSE_VisitorPattern & visitor) override;
178202 
178203  // DQ (12/26/2005): Support for traversal based on the memory pool
178206  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
178207 
178210  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
178211 
178212  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
178213  // This traversal helps support internal tools that call static member functions.
178214  // note: this function operates on the memory pools.
178217  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
178218  /* */
178219 
178220 
178221  public:
178222  /* name Memory Allocation Functions
178223  \brief Memory allocations functions ... incomplete-documentation
178224 
178225  These functions have been made public as part of the design, but they are suggested for internal use
178226  or by particularly knowledgable users for specialized tools or applications.
178227  */
178228  /* */
178229 
178240  virtual bool isInMemoryPool() override;
178241 
178252  virtual void checkDataMemberPointersIfInMemoryPool() override;
178253 
178254  // DQ (4/30/2006): Modified to be a const function.
178269  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
178270 
178280  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
178281 
178293  virtual long getChildIndex( SgNode* childNode ) const override;
178294 
178295  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
178296  // comment here (changed to be a C style comment and not be a doxygen comment).
178297  /* \brief Constructor for use by AST File I/O Mechanism
178298 
178299  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
178300  which obtained via fast binary file I/O from disk.
178301  */
178302  // SgSpawnStmt( SgSpawnStmtStorageClass& source );
178303 
178304 
178305 
178306 
178307 
178308  // JH (10/24/2005): methods added to support the ast file IO
178309  private:
178310 
178311  /* name AST Memory Allocation Support Functions
178312  \brief Memory allocations support....
178313 
178314  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
178315  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
178316  and support the AST File I/O Mechanism.
178317  */
178318  /* */
178319 
178320  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
178321  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
178322  that I use the same type everywhere, if any changes are made. THe second one declares the type
178323  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
178324  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
178325  a correspinding one in the AST_FILE_IO class!
178326  */
178327  // DQ (9/2/2015): This typedef is no longer used, we can't define the
178328  // comment here (changed to be a C style comment and not be a doxygen comment).
178329  /* \brief Typedef used for low level memory access.
178330  */
178331  // typedef unsigned char* TestType;
178332 
178333  // DQ (9/2/2015): This typedef is no longer used, we can't define the
178334  // comment here (changed to be a C style comment and not be a doxygen comment).
178335  /* \brief Typedef used to hold memory addresses as values.
178336  */
178337  // typedef unsigned long AddressType;
178338 
178339 
178340 
178341  // necessary, to have direct access to the p_freepointer and the private methods !
178343  friend class AST_FILE_IO;
178344 
178346  friend class SgSpawnStmtStorageClass;
178347 
178349  friend class AstSpecificDataManagingClass;
178350 
178352  friend class AstSpecificDataManagingClassStorageClass;
178353 
178354  public:
178356  SgSpawnStmt( const SgSpawnStmtStorageClass& source );
178357 
178358  // private: // JJW hack
178359  /*
178360  name AST Memory Allocation Support Variables
178361  Memory allocations support variables
178362 
178363  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
178364  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
178365  and support the AST File I/O Mechanism.
178366  */
178367  /* */
178368 
178369  public:
178370 
178371  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
178372  // to current node (so that it will work cleanly with build functions to specify patterns).
178373  // virtual SgNode* addRegExpAttribute();
178379  SgSpawnStmt* addRegExpAttribute(std::string s, AstRegExAttribute* a);
178380 
178381 // *** COMMON CODE SECTION ENDS HERE ***
178382 
178383 
178384 // End of memberFunctionString
178385 // Start of memberFunctionString
178386 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
178387 
178388  // the generated cast function
178389  // friend ROSE_DLL_API SgSpawnStmt* isSgSpawnStmt ( SgNode* s );
178390 
178391  typedef SgStatement base_node_type;
178392 
178393 
178394 // End of memberFunctionString
178395 // Start of memberFunctionString
178396 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
178397 
178398  void post_construction_initialization() override;
178399 
178400 
178401 // End of memberFunctionString
178402 
178403  public:
178404  SgFunctionCallExp* get_the_func() const;
178405  void set_the_func(SgFunctionCallExp* the_func);
178406 
178407 
178408  public:
178409  virtual ~SgSpawnStmt();
178410 
178411 
178412  public:
178413  SgSpawnStmt(Sg_File_Info* startOfConstruct , SgFunctionCallExp* the_func = NULL);
178414  SgSpawnStmt(SgFunctionCallExp* the_func);
178415 
178416  protected:
178417 // Start of memberFunctionString
178418 SgFunctionCallExp* p_the_func;
178419 
178420 // End of memberFunctionString
178421 
178422 
178423 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
178424 
178425 
178426  };
178427 #endif
178428 
178429 // postdeclarations for SgSpawnStmt
178430 
178431 /* #line 178432 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
178432 
178433 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
178434 
178435 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
178436 
178437 
178438 /* #line 178439 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
178439 
178440 
178441 
178442 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
178443 
178444 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
178445 // This code is automatically generated for each
178446 // terminal and non-terminal within the defined
178447 // grammar. There is a simple way to change the
178448 // code to fix bugs etc. See the ROSE README file
178449 // for directions.
178450 
178451 // tps: (02/22/2010): Adding DLL export requirements
178452 #include "rosedll.h"
178453 
178454 // predeclarations for SgNullStatement
178455 
178456 /* #line 178457 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
178457 
178458 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
178459 
178460 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
178461 
178462 #if 1
178463 // Class Definition for SgNullStatement
178464 class ROSE_DLL_API SgNullStatement : public SgStatement
178465  {
178466  public:
178467 
178468 
178469 /* #line 178470 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
178470 
178471  virtual SgNode* copy ( SgCopyHelp& help) const override;
178472 // Start of memberFunctionString
178473 /* #line 2638 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
178474 
178475 
178476 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
178477  virtual unsigned int cfgIndexForEnd() const override;
178478  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
178479  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
178480 #endif
178481 
178482 
178483 
178484 // End of memberFunctionString
178485 // Start of memberFunctionString
178486 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
178487 
178488 // *** COMMON CODE SECTION BEGINS HERE ***
178489 
178490  public:
178491 
178492  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
178493  // and not required which is required to match the other aspects of the copy mechanism code generation.
178494  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
178495  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
178496  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
178497  // virtual SgNode* copy ( const SgCopyHelp & help) const;
178498 
178500  virtual std::string class_name() const override;
178501 
178503  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
178504 
178506  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
178507  // static const VariantT static_variant = V_SgNullStatement;
178508  enum { static_variant = V_SgNullStatement };
178509 
178510  /* the generated cast function */
178512  ROSE_DLL_API friend SgNullStatement* isSgNullStatement( SgNode * s );
178513 
178515  ROSE_DLL_API friend const SgNullStatement* isSgNullStatement( const SgNode * s );
178516 
178517  // ******************************************
178518  // * Memory Pool / New / Delete
178519  // ******************************************
178520 
178521  public:
178523  static const unsigned pool_size; //
178525  static std::vector<unsigned char *> pools; //
178527  static SgNullStatement * next_node; //
178528 
178530  static unsigned long initializeStorageClassArray(SgNullStatementStorageClass *); //
178531 
178533  static void clearMemoryPool(); //
178534  static void deleteMemoryPool(); //
178535 
178537  static void extendMemoryPoolForFileIO(); //
178538 
178540  static SgNullStatement * getPointerFromGlobalIndex(unsigned long); //
178542  static SgNullStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
178543 
178545  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
178547  static void resetValidFreepointers(); //
178549  static unsigned long getNumberOfLastValidPointer(); //
178550 
178551 
178552 #if defined(INLINE_FUNCTIONS)
178553 
178554  inline void *operator new (size_t size);
178555 #else
178556 
178557  void *operator new (size_t size);
178558 #endif
178559 
178560  void operator delete (void* pointer, size_t size);
178561 
178562  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
178563  void operator delete (void* pointer)
178564  {
178565  // This is the generated delete operator...
178566  SgNullStatement::operator delete (pointer,sizeof(SgNullStatement));
178567  }
178568 
178570  static size_t numberOfNodes();
178571 
178573  static size_t memoryUsage();
178574 
178575  // End of scope which started in IR nodes specific code
178576  /* */
178577 
178578  /* name Internal Functions
178579  \brief Internal functions ... incomplete-documentation
178580 
178581  These functions have been made public as part of the design, but they are suggested for internal use
178582  or by particularly knowledgeable users for specialized tools or applications.
178583 
178584  \internal We could not make these private because they are required by user for special purposes. And
178585  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
178586 
178587  */
178588 
178589  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
178590  // overridden in every class by *generated* implementation
178592  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
178593  // MS: 06/28/02 container of names of variables or container indices
178594  // used used in the traversal to access AST successor nodes
178595  // overridden in every class by *generated* implementation
178598  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
178599 
178600  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
178601  // than all the vector copies. The implementation for these functions is generated for each class.
178603  virtual size_t get_numberOfTraversalSuccessors() override;
178605  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
178607  virtual size_t get_childIndex(SgNode *child) override;
178608 
178609 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
178610  // MS: 08/16/2002 method for generating RTI information
178612  virtual RTIReturnType roseRTI() override;
178613 #endif
178614  /* */
178615 
178616 
178617 
178618  /* name Deprecated Functions
178619  \brief Deprecated functions ... incomplete-documentation
178620 
178621  These functions have been deprecated from use.
178622  */
178623  /* */
178624 
178626  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
178627 
178628  // JJW (10/16/2008): Changed to a single function in Node.code, and put
178629  // getVariant() in #if 0 block to prevent confusing Doxygen
178630 #if 0
178631 
178632  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
178634  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
178635 #endif
178636  /* */
178637 
178638 
178639 
178640 
178641  public:
178642  /* name Traversal Support Functions
178643  \brief Traversal support functions ... incomplete-documentation
178644 
178645  These functions have been made public as part of the design, but they are suggested for internal use
178646  or by particularly knowledgable users for specialized tools or applications.
178647  */
178648  /* */
178649 
178650  // DQ (11/26/2005): Support for visitor pattern mechanims
178651  // (inferior to ROSE traversal mechanism, experimental).
178655 
178656  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
178658  virtual void accept (ROSE_VisitorPattern & visitor) override;
178659 
178660  // DQ (12/26/2005): Support for traversal based on the memory pool
178663  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
178664 
178667  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
178668 
178669  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
178670  // This traversal helps support internal tools that call static member functions.
178671  // note: this function operates on the memory pools.
178674  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
178675  /* */
178676 
178677 
178678  public:
178679  /* name Memory Allocation Functions
178680  \brief Memory allocations functions ... incomplete-documentation
178681 
178682  These functions have been made public as part of the design, but they are suggested for internal use
178683  or by particularly knowledgable users for specialized tools or applications.
178684  */
178685  /* */
178686 
178697  virtual bool isInMemoryPool() override;
178698 
178709  virtual void checkDataMemberPointersIfInMemoryPool() override;
178710 
178711  // DQ (4/30/2006): Modified to be a const function.
178726  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
178727 
178737  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
178738 
178750  virtual long getChildIndex( SgNode* childNode ) const override;
178751 
178752  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
178753  // comment here (changed to be a C style comment and not be a doxygen comment).
178754  /* \brief Constructor for use by AST File I/O Mechanism
178755 
178756  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
178757  which obtained via fast binary file I/O from disk.
178758  */
178759  // SgNullStatement( SgNullStatementStorageClass& source );
178760 
178761 
178762 
178763 
178764 
178765  // JH (10/24/2005): methods added to support the ast file IO
178766  private:
178767 
178768  /* name AST Memory Allocation Support Functions
178769  \brief Memory allocations support....
178770 
178771  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
178772  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
178773  and support the AST File I/O Mechanism.
178774  */
178775  /* */
178776 
178777  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
178778  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
178779  that I use the same type everywhere, if any changes are made. THe second one declares the type
178780  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
178781  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
178782  a correspinding one in the AST_FILE_IO class!
178783  */
178784  // DQ (9/2/2015): This typedef is no longer used, we can't define the
178785  // comment here (changed to be a C style comment and not be a doxygen comment).
178786  /* \brief Typedef used for low level memory access.
178787  */
178788  // typedef unsigned char* TestType;
178789 
178790  // DQ (9/2/2015): This typedef is no longer used, we can't define the
178791  // comment here (changed to be a C style comment and not be a doxygen comment).
178792  /* \brief Typedef used to hold memory addresses as values.
178793  */
178794  // typedef unsigned long AddressType;
178795 
178796 
178797 
178798  // necessary, to have direct access to the p_freepointer and the private methods !
178800  friend class AST_FILE_IO;
178801 
178803  friend class SgNullStatementStorageClass;
178804 
178806  friend class AstSpecificDataManagingClass;
178807 
178809  friend class AstSpecificDataManagingClassStorageClass;
178810 
178811  public:
178813  SgNullStatement( const SgNullStatementStorageClass& source );
178814 
178815  // private: // JJW hack
178816  /*
178817  name AST Memory Allocation Support Variables
178818  Memory allocations support variables
178819 
178820  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
178821  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
178822  and support the AST File I/O Mechanism.
178823  */
178824  /* */
178825 
178826  public:
178827 
178828  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
178829  // to current node (so that it will work cleanly with build functions to specify patterns).
178830  // virtual SgNode* addRegExpAttribute();
178837 
178838 // *** COMMON CODE SECTION ENDS HERE ***
178839 
178840 
178841 // End of memberFunctionString
178842 // Start of memberFunctionString
178843 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
178844 
178845  // the generated cast function
178846  // friend ROSE_DLL_API SgNullStatement* isSgNullStatement ( SgNode* s );
178847 
178848  typedef SgStatement base_node_type;
178849 
178850 
178851 // End of memberFunctionString
178852 // Start of memberFunctionString
178853 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
178854 
178855  void post_construction_initialization() override;
178856 
178857 
178858 // End of memberFunctionString
178859 
178860 
178861  public:
178862  virtual ~SgNullStatement();
178863 
178864 
178865  public:
178866  SgNullStatement(Sg_File_Info* startOfConstruct );
178867  SgNullStatement();
178868 
178869  protected:
178870 
178871 
178872 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
178873 
178874 
178875  };
178876 #endif
178877 
178878 // postdeclarations for SgNullStatement
178879 
178880 /* #line 178881 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
178881 
178882 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
178883 
178884 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
178885 
178886 
178887 /* #line 178888 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
178888 
178889 
178890 
178891 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
178892 
178893 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
178894 // This code is automatically generated for each
178895 // terminal and non-terminal within the defined
178896 // grammar. There is a simple way to change the
178897 // code to fix bugs etc. See the ROSE README file
178898 // for directions.
178899 
178900 // tps: (02/22/2010): Adding DLL export requirements
178901 #include "rosedll.h"
178902 
178903 // predeclarations for SgVariantStatement
178904 
178905 /* #line 178906 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
178906 
178907 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
178908 
178909 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
178910 
178911 #if 1
178912 // Class Definition for SgVariantStatement
178913 class ROSE_DLL_API SgVariantStatement : public SgStatement
178914  {
178915  public:
178916 
178917 
178918 /* #line 178919 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
178919 
178920  virtual SgNode* copy ( SgCopyHelp& help) const override;
178921 // Start of memberFunctionString
178922 /* #line 2654 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
178923 
178924 
178925 
178926 
178927 // End of memberFunctionString
178928 // Start of memberFunctionString
178929 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
178930 
178931 // *** COMMON CODE SECTION BEGINS HERE ***
178932 
178933  public:
178934 
178935  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
178936  // and not required which is required to match the other aspects of the copy mechanism code generation.
178937  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
178938  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
178939  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
178940  // virtual SgNode* copy ( const SgCopyHelp & help) const;
178941 
178943  virtual std::string class_name() const override;
178944 
178946  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
178947 
178949  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
178950  // static const VariantT static_variant = V_SgVariantStatement;
178951  enum { static_variant = V_SgVariantStatement };
178952 
178953  /* the generated cast function */
178955  ROSE_DLL_API friend SgVariantStatement* isSgVariantStatement( SgNode * s );
178956 
178958  ROSE_DLL_API friend const SgVariantStatement* isSgVariantStatement( const SgNode * s );
178959 
178960  // ******************************************
178961  // * Memory Pool / New / Delete
178962  // ******************************************
178963 
178964  public:
178966  static const unsigned pool_size; //
178968  static std::vector<unsigned char *> pools; //
178970  static SgVariantStatement * next_node; //
178971 
178973  static unsigned long initializeStorageClassArray(SgVariantStatementStorageClass *); //
178974 
178976  static void clearMemoryPool(); //
178977  static void deleteMemoryPool(); //
178978 
178980  static void extendMemoryPoolForFileIO(); //
178981 
178983  static SgVariantStatement * getPointerFromGlobalIndex(unsigned long); //
178985  static SgVariantStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
178986 
178988  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
178990  static void resetValidFreepointers(); //
178992  static unsigned long getNumberOfLastValidPointer(); //
178993 
178994 
178995 #if defined(INLINE_FUNCTIONS)
178996 
178997  inline void *operator new (size_t size);
178998 #else
178999 
179000  void *operator new (size_t size);
179001 #endif
179002 
179003  void operator delete (void* pointer, size_t size);
179004 
179005  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
179006  void operator delete (void* pointer)
179007  {
179008  // This is the generated delete operator...
179009  SgVariantStatement::operator delete (pointer,sizeof(SgVariantStatement));
179010  }
179011 
179013  static size_t numberOfNodes();
179014 
179016  static size_t memoryUsage();
179017 
179018  // End of scope which started in IR nodes specific code
179019  /* */
179020 
179021  /* name Internal Functions
179022  \brief Internal functions ... incomplete-documentation
179023 
179024  These functions have been made public as part of the design, but they are suggested for internal use
179025  or by particularly knowledgeable users for specialized tools or applications.
179026 
179027  \internal We could not make these private because they are required by user for special purposes. And
179028  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
179029 
179030  */
179031 
179032  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
179033  // overridden in every class by *generated* implementation
179035  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
179036  // MS: 06/28/02 container of names of variables or container indices
179037  // used used in the traversal to access AST successor nodes
179038  // overridden in every class by *generated* implementation
179041  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
179042 
179043  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
179044  // than all the vector copies. The implementation for these functions is generated for each class.
179046  virtual size_t get_numberOfTraversalSuccessors() override;
179048  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
179050  virtual size_t get_childIndex(SgNode *child) override;
179051 
179052 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
179053  // MS: 08/16/2002 method for generating RTI information
179055  virtual RTIReturnType roseRTI() override;
179056 #endif
179057  /* */
179058 
179059 
179060 
179061  /* name Deprecated Functions
179062  \brief Deprecated functions ... incomplete-documentation
179063 
179064  These functions have been deprecated from use.
179065  */
179066  /* */
179067 
179069  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
179070 
179071  // JJW (10/16/2008): Changed to a single function in Node.code, and put
179072  // getVariant() in #if 0 block to prevent confusing Doxygen
179073 #if 0
179074 
179075  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
179077  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
179078 #endif
179079  /* */
179080 
179081 
179082 
179083 
179084  public:
179085  /* name Traversal Support Functions
179086  \brief Traversal support functions ... incomplete-documentation
179087 
179088  These functions have been made public as part of the design, but they are suggested for internal use
179089  or by particularly knowledgable users for specialized tools or applications.
179090  */
179091  /* */
179092 
179093  // DQ (11/26/2005): Support for visitor pattern mechanims
179094  // (inferior to ROSE traversal mechanism, experimental).
179098 
179099  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
179101  virtual void accept (ROSE_VisitorPattern & visitor) override;
179102 
179103  // DQ (12/26/2005): Support for traversal based on the memory pool
179106  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
179107 
179110  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
179111 
179112  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
179113  // This traversal helps support internal tools that call static member functions.
179114  // note: this function operates on the memory pools.
179117  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
179118  /* */
179119 
179120 
179121  public:
179122  /* name Memory Allocation Functions
179123  \brief Memory allocations functions ... incomplete-documentation
179124 
179125  These functions have been made public as part of the design, but they are suggested for internal use
179126  or by particularly knowledgable users for specialized tools or applications.
179127  */
179128  /* */
179129 
179140  virtual bool isInMemoryPool() override;
179141 
179152  virtual void checkDataMemberPointersIfInMemoryPool() override;
179153 
179154  // DQ (4/30/2006): Modified to be a const function.
179169  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
179170 
179180  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
179181 
179193  virtual long getChildIndex( SgNode* childNode ) const override;
179194 
179195  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
179196  // comment here (changed to be a C style comment and not be a doxygen comment).
179197  /* \brief Constructor for use by AST File I/O Mechanism
179198 
179199  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
179200  which obtained via fast binary file I/O from disk.
179201  */
179202  // SgVariantStatement( SgVariantStatementStorageClass& source );
179203 
179204 
179205 
179206 
179207 
179208  // JH (10/24/2005): methods added to support the ast file IO
179209  private:
179210 
179211  /* name AST Memory Allocation Support Functions
179212  \brief Memory allocations support....
179213 
179214  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
179215  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
179216  and support the AST File I/O Mechanism.
179217  */
179218  /* */
179219 
179220  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
179221  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
179222  that I use the same type everywhere, if any changes are made. THe second one declares the type
179223  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
179224  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
179225  a correspinding one in the AST_FILE_IO class!
179226  */
179227  // DQ (9/2/2015): This typedef is no longer used, we can't define the
179228  // comment here (changed to be a C style comment and not be a doxygen comment).
179229  /* \brief Typedef used for low level memory access.
179230  */
179231  // typedef unsigned char* TestType;
179232 
179233  // DQ (9/2/2015): This typedef is no longer used, we can't define the
179234  // comment here (changed to be a C style comment and not be a doxygen comment).
179235  /* \brief Typedef used to hold memory addresses as values.
179236  */
179237  // typedef unsigned long AddressType;
179238 
179239 
179240 
179241  // necessary, to have direct access to the p_freepointer and the private methods !
179243  friend class AST_FILE_IO;
179244 
179246  friend class SgVariantStatementStorageClass;
179247 
179249  friend class AstSpecificDataManagingClass;
179250 
179252  friend class AstSpecificDataManagingClassStorageClass;
179253 
179254  public:
179256  SgVariantStatement( const SgVariantStatementStorageClass& source );
179257 
179258  // private: // JJW hack
179259  /*
179260  name AST Memory Allocation Support Variables
179261  Memory allocations support variables
179262 
179263  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
179264  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
179265  and support the AST File I/O Mechanism.
179266  */
179267  /* */
179268 
179269  public:
179270 
179271  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
179272  // to current node (so that it will work cleanly with build functions to specify patterns).
179273  // virtual SgNode* addRegExpAttribute();
179280 
179281 // *** COMMON CODE SECTION ENDS HERE ***
179282 
179283 
179284 // End of memberFunctionString
179285 // Start of memberFunctionString
179286 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
179287 
179288  // the generated cast function
179289  // friend ROSE_DLL_API SgVariantStatement* isSgVariantStatement ( SgNode* s );
179290 
179291  typedef SgStatement base_node_type;
179292 
179293 
179294 // End of memberFunctionString
179295 // Start of memberFunctionString
179296 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
179297 
179298  void post_construction_initialization() override;
179299 
179300 
179301 // End of memberFunctionString
179302 
179303 
179304  public:
179305  virtual ~SgVariantStatement();
179306 
179307 
179308  public:
179309  SgVariantStatement(Sg_File_Info* startOfConstruct );
179310  SgVariantStatement();
179311 
179312  protected:
179313 
179314 
179315 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
179316 
179317 
179318  };
179319 #endif
179320 
179321 // postdeclarations for SgVariantStatement
179322 
179323 /* #line 179324 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
179324 
179325 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
179326 
179327 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
179328 
179329 
179330 /* #line 179331 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
179331 
179332 
179333 
179334 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
179335 
179336 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
179337 // This code is automatically generated for each
179338 // terminal and non-terminal within the defined
179339 // grammar. There is a simple way to change the
179340 // code to fix bugs etc. See the ROSE README file
179341 // for directions.
179342 
179343 // tps: (02/22/2010): Adding DLL export requirements
179344 #include "rosedll.h"
179345 
179346 // predeclarations for SgForInitStatement
179347 
179348 /* #line 179349 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
179349 
179350 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
179351 
179352 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
179353 
179354 #if 1
179355 // Class Definition for SgForInitStatement
179356 class ROSE_DLL_API SgForInitStatement : public SgStatement
179357  {
179358  public:
179359 
179360 
179361 /* #line 179362 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
179362 
179363  virtual SgNode* copy ( SgCopyHelp& help) const override;
179364 // Start of memberFunctionString
179365 /* #line 1370 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
179366 
179367  protected:
179368  virtual bool replace_child(SgStatement *,SgStatement *, bool extractListFromBasicBlock = false) override;
179369  virtual bool insert_child(SgStatement*, SgStatement*, bool inFront = true, bool extractListFromBasicBlock = false) override;
179370 
179371  public:
179372 
179373 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
179374  virtual unsigned int cfgIndexForEnd() const override;
179375  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
179376  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
179377 #endif
179378 
179379 #if ALT_FIXUP_COPY
179380  // DQ (11/7/2007): These need to be called separately (see documentation)
179381  virtual void fixupCopy_scopes (SgNode* copy, SgCopyHelp & help) const override;
179382  virtual void fixupCopy_symbols (SgNode* copy, SgCopyHelp & help) const override;
179383  virtual void fixupCopy_references (SgNode* copy, SgCopyHelp & help) const override;
179384 #else
179385  // DQ (10/20/2007): Added fixup function to set scopes not set properly by the ROSETTA generated copy!
179386  virtual void fixupCopy(SgNode* copy, SgCopyHelp & help) const;
179387 #endif
179388 
179389 /* #line 939 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
179390 
179391  public:
179392  virtual void append_init_stmt ( SgStatement* element );
179393  virtual void prepend_init_stmt ( SgStatement* element );
179394 
179395  public:
179396  // New functions added
179397  // void append_init_stmt ( const SgStatementPtrList::iterator & list, SgStatement* element );
179398  // void prepend_init_stmt ( const SgStatementPtrList::iterator & list, SgStatement* element );
179399 
179400  // void insert_init_stmt ( const SgStatementPtrList::iterator & list, SgStatement* element );
179401 
179402 
179403  public:
179404 
179405 
179406 
179407 
179408 
179409 // End of memberFunctionString
179410 // Start of memberFunctionString
179411 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
179412 
179413 // *** COMMON CODE SECTION BEGINS HERE ***
179414 
179415  public:
179416 
179417  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
179418  // and not required which is required to match the other aspects of the copy mechanism code generation.
179419  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
179420  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
179421  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
179422  // virtual SgNode* copy ( const SgCopyHelp & help) const;
179423 
179425  virtual std::string class_name() const override;
179426 
179428  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
179429 
179431  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
179432  // static const VariantT static_variant = V_SgForInitStatement;
179433  enum { static_variant = V_SgForInitStatement };
179434 
179435  /* the generated cast function */
179437  ROSE_DLL_API friend SgForInitStatement* isSgForInitStatement( SgNode * s );
179438 
179440  ROSE_DLL_API friend const SgForInitStatement* isSgForInitStatement( const SgNode * s );
179441 
179442  // ******************************************
179443  // * Memory Pool / New / Delete
179444  // ******************************************
179445 
179446  public:
179448  static const unsigned pool_size; //
179450  static std::vector<unsigned char *> pools; //
179452  static SgForInitStatement * next_node; //
179453 
179455  static unsigned long initializeStorageClassArray(SgForInitStatementStorageClass *); //
179456 
179458  static void clearMemoryPool(); //
179459  static void deleteMemoryPool(); //
179460 
179462  static void extendMemoryPoolForFileIO(); //
179463 
179465  static SgForInitStatement * getPointerFromGlobalIndex(unsigned long); //
179467  static SgForInitStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
179468 
179470  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
179472  static void resetValidFreepointers(); //
179474  static unsigned long getNumberOfLastValidPointer(); //
179475 
179476 
179477 #if defined(INLINE_FUNCTIONS)
179478 
179479  inline void *operator new (size_t size);
179480 #else
179481 
179482  void *operator new (size_t size);
179483 #endif
179484 
179485  void operator delete (void* pointer, size_t size);
179486 
179487  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
179488  void operator delete (void* pointer)
179489  {
179490  // This is the generated delete operator...
179491  SgForInitStatement::operator delete (pointer,sizeof(SgForInitStatement));
179492  }
179493 
179495  static size_t numberOfNodes();
179496 
179498  static size_t memoryUsage();
179499 
179500  // End of scope which started in IR nodes specific code
179501  /* */
179502 
179503  /* name Internal Functions
179504  \brief Internal functions ... incomplete-documentation
179505 
179506  These functions have been made public as part of the design, but they are suggested for internal use
179507  or by particularly knowledgeable users for specialized tools or applications.
179508 
179509  \internal We could not make these private because they are required by user for special purposes. And
179510  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
179511 
179512  */
179513 
179514  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
179515  // overridden in every class by *generated* implementation
179517  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
179518  // MS: 06/28/02 container of names of variables or container indices
179519  // used used in the traversal to access AST successor nodes
179520  // overridden in every class by *generated* implementation
179523  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
179524 
179525  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
179526  // than all the vector copies. The implementation for these functions is generated for each class.
179528  virtual size_t get_numberOfTraversalSuccessors() override;
179530  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
179532  virtual size_t get_childIndex(SgNode *child) override;
179533 
179534 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
179535  // MS: 08/16/2002 method for generating RTI information
179537  virtual RTIReturnType roseRTI() override;
179538 #endif
179539  /* */
179540 
179541 
179542 
179543  /* name Deprecated Functions
179544  \brief Deprecated functions ... incomplete-documentation
179545 
179546  These functions have been deprecated from use.
179547  */
179548  /* */
179549 
179551  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
179552 
179553  // JJW (10/16/2008): Changed to a single function in Node.code, and put
179554  // getVariant() in #if 0 block to prevent confusing Doxygen
179555 #if 0
179556 
179557  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
179559  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
179560 #endif
179561  /* */
179562 
179563 
179564 
179565 
179566  public:
179567  /* name Traversal Support Functions
179568  \brief Traversal support functions ... incomplete-documentation
179569 
179570  These functions have been made public as part of the design, but they are suggested for internal use
179571  or by particularly knowledgable users for specialized tools or applications.
179572  */
179573  /* */
179574 
179575  // DQ (11/26/2005): Support for visitor pattern mechanims
179576  // (inferior to ROSE traversal mechanism, experimental).
179580 
179581  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
179583  virtual void accept (ROSE_VisitorPattern & visitor) override;
179584 
179585  // DQ (12/26/2005): Support for traversal based on the memory pool
179588  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
179589 
179592  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
179593 
179594  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
179595  // This traversal helps support internal tools that call static member functions.
179596  // note: this function operates on the memory pools.
179599  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
179600  /* */
179601 
179602 
179603  public:
179604  /* name Memory Allocation Functions
179605  \brief Memory allocations functions ... incomplete-documentation
179606 
179607  These functions have been made public as part of the design, but they are suggested for internal use
179608  or by particularly knowledgable users for specialized tools or applications.
179609  */
179610  /* */
179611 
179622  virtual bool isInMemoryPool() override;
179623 
179634  virtual void checkDataMemberPointersIfInMemoryPool() override;
179635 
179636  // DQ (4/30/2006): Modified to be a const function.
179651  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
179652 
179662  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
179663 
179675  virtual long getChildIndex( SgNode* childNode ) const override;
179676 
179677  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
179678  // comment here (changed to be a C style comment and not be a doxygen comment).
179679  /* \brief Constructor for use by AST File I/O Mechanism
179680 
179681  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
179682  which obtained via fast binary file I/O from disk.
179683  */
179684  // SgForInitStatement( SgForInitStatementStorageClass& source );
179685 
179686 
179687 
179688 
179689 
179690  // JH (10/24/2005): methods added to support the ast file IO
179691  private:
179692 
179693  /* name AST Memory Allocation Support Functions
179694  \brief Memory allocations support....
179695 
179696  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
179697  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
179698  and support the AST File I/O Mechanism.
179699  */
179700  /* */
179701 
179702  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
179703  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
179704  that I use the same type everywhere, if any changes are made. THe second one declares the type
179705  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
179706  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
179707  a correspinding one in the AST_FILE_IO class!
179708  */
179709  // DQ (9/2/2015): This typedef is no longer used, we can't define the
179710  // comment here (changed to be a C style comment and not be a doxygen comment).
179711  /* \brief Typedef used for low level memory access.
179712  */
179713  // typedef unsigned char* TestType;
179714 
179715  // DQ (9/2/2015): This typedef is no longer used, we can't define the
179716  // comment here (changed to be a C style comment and not be a doxygen comment).
179717  /* \brief Typedef used to hold memory addresses as values.
179718  */
179719  // typedef unsigned long AddressType;
179720 
179721 
179722 
179723  // necessary, to have direct access to the p_freepointer and the private methods !
179725  friend class AST_FILE_IO;
179726 
179728  friend class SgForInitStatementStorageClass;
179729 
179731  friend class AstSpecificDataManagingClass;
179732 
179734  friend class AstSpecificDataManagingClassStorageClass;
179735 
179736  public:
179738  SgForInitStatement( const SgForInitStatementStorageClass& source );
179739 
179740  // private: // JJW hack
179741  /*
179742  name AST Memory Allocation Support Variables
179743  Memory allocations support variables
179744 
179745  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
179746  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
179747  and support the AST File I/O Mechanism.
179748  */
179749  /* */
179750 
179751  public:
179752 
179753  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
179754  // to current node (so that it will work cleanly with build functions to specify patterns).
179755  // virtual SgNode* addRegExpAttribute();
179762 
179763 // *** COMMON CODE SECTION ENDS HERE ***
179764 
179765 
179766 // End of memberFunctionString
179767 // Start of memberFunctionString
179768 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
179769 
179770  // the generated cast function
179771  // friend ROSE_DLL_API SgForInitStatement* isSgForInitStatement ( SgNode* s );
179772 
179773  typedef SgStatement base_node_type;
179774 
179775 
179776 // End of memberFunctionString
179777 // Start of memberFunctionString
179778 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
179779 
179780  void post_construction_initialization() override;
179781 
179782 
179783 // End of memberFunctionString
179784 
179785  public:
179786  const SgStatementPtrList& get_init_stmt() const;
179787  SgStatementPtrList& get_init_stmt();
179788 
179789 
179790  public:
179791  virtual ~SgForInitStatement();
179792 
179793 
179794  public:
179795  SgForInitStatement(Sg_File_Info* startOfConstruct );
179796  SgForInitStatement();
179797 
179798  protected:
179799 // Start of memberFunctionString
179800 SgStatementPtrList p_init_stmt;
179801 
179802 // End of memberFunctionString
179803 
179804 
179805 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
179806 
179807 
179808  };
179809 #endif
179810 
179811 // postdeclarations for SgForInitStatement
179812 
179813 /* #line 179814 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
179814 
179815 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
179816 
179817 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
179818 
179819 
179820 /* #line 179821 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
179821 
179822 
179823 
179824 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
179825 
179826 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
179827 // This code is automatically generated for each
179828 // terminal and non-terminal within the defined
179829 // grammar. There is a simple way to change the
179830 // code to fix bugs etc. See the ROSE README file
179831 // for directions.
179832 
179833 // tps: (02/22/2010): Adding DLL export requirements
179834 #include "rosedll.h"
179835 
179836 // predeclarations for SgCatchStatementSeq
179837 
179838 /* #line 179839 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
179839 
179840 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
179841 
179842 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
179843 
179844 #if 1
179845 // Class Definition for SgCatchStatementSeq
179846 class ROSE_DLL_API SgCatchStatementSeq : public SgStatement
179847  {
179848  public:
179849 
179850 
179851 /* #line 179852 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
179852 
179853  virtual SgNode* copy ( SgCopyHelp& help) const override;
179854 // Start of memberFunctionString
179855 /* #line 1459 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
179856 
179857 /* #line 939 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
179858 
179859  public:
179860  virtual void append_catch_statement ( SgStatement* element );
179861  virtual void prepend_catch_statement ( SgStatement* element );
179862 
179863  public:
179864  // New functions added
179865  // void append_catch_statement ( const SgStatementPtrList::iterator & list, SgStatement* element );
179866  // void prepend_catch_statement ( const SgStatementPtrList::iterator & list, SgStatement* element );
179867 
179868  // void insert_catch_statement ( const SgStatementPtrList::iterator & list, SgStatement* element );
179869 
179870 
179871  public:
179872 
179873 
179874 
179875 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
179876  virtual unsigned int cfgIndexForEnd() const override;
179877  virtual bool cfgIsIndexInteresting(unsigned int) const override;
179878  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
179879  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
179880 #endif
179881 #if ALT_FIXUP_COPY
179882  // DQ (11/7/2007): These need to be called separately (see documentation)
179883  virtual void fixupCopy_scopes (SgNode* copy, SgCopyHelp & help) const override;
179884  virtual void fixupCopy_symbols (SgNode* copy, SgCopyHelp & help) const override;
179885  virtual void fixupCopy_references (SgNode* copy, SgCopyHelp & help) const override;
179886 #else
179887  // DQ (10/20/2007): Added fixup function to set scopes not set properly by the ROSETTA generated copy!
179888  virtual void fixupCopy(SgNode* copy, SgCopyHelp & help) const;
179889 #endif
179890 
179891 
179892 
179893 // End of memberFunctionString
179894 // Start of memberFunctionString
179895 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
179896 
179897 // *** COMMON CODE SECTION BEGINS HERE ***
179898 
179899  public:
179900 
179901  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
179902  // and not required which is required to match the other aspects of the copy mechanism code generation.
179903  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
179904  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
179905  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
179906  // virtual SgNode* copy ( const SgCopyHelp & help) const;
179907 
179909  virtual std::string class_name() const override;
179910 
179912  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
179913 
179915  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
179916  // static const VariantT static_variant = V_SgCatchStatementSeq;
179917  enum { static_variant = V_SgCatchStatementSeq };
179918 
179919  /* the generated cast function */
179921  ROSE_DLL_API friend SgCatchStatementSeq* isSgCatchStatementSeq( SgNode * s );
179922 
179924  ROSE_DLL_API friend const SgCatchStatementSeq* isSgCatchStatementSeq( const SgNode * s );
179925 
179926  // ******************************************
179927  // * Memory Pool / New / Delete
179928  // ******************************************
179929 
179930  public:
179932  static const unsigned pool_size; //
179934  static std::vector<unsigned char *> pools; //
179936  static SgCatchStatementSeq * next_node; //
179937 
179939  static unsigned long initializeStorageClassArray(SgCatchStatementSeqStorageClass *); //
179940 
179942  static void clearMemoryPool(); //
179943  static void deleteMemoryPool(); //
179944 
179946  static void extendMemoryPoolForFileIO(); //
179947 
179949  static SgCatchStatementSeq * getPointerFromGlobalIndex(unsigned long); //
179951  static SgCatchStatementSeq * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
179952 
179954  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
179956  static void resetValidFreepointers(); //
179958  static unsigned long getNumberOfLastValidPointer(); //
179959 
179960 
179961 #if defined(INLINE_FUNCTIONS)
179962 
179963  inline void *operator new (size_t size);
179964 #else
179965 
179966  void *operator new (size_t size);
179967 #endif
179968 
179969  void operator delete (void* pointer, size_t size);
179970 
179971  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
179972  void operator delete (void* pointer)
179973  {
179974  // This is the generated delete operator...
179975  SgCatchStatementSeq::operator delete (pointer,sizeof(SgCatchStatementSeq));
179976  }
179977 
179979  static size_t numberOfNodes();
179980 
179982  static size_t memoryUsage();
179983 
179984  // End of scope which started in IR nodes specific code
179985  /* */
179986 
179987  /* name Internal Functions
179988  \brief Internal functions ... incomplete-documentation
179989 
179990  These functions have been made public as part of the design, but they are suggested for internal use
179991  or by particularly knowledgeable users for specialized tools or applications.
179992 
179993  \internal We could not make these private because they are required by user for special purposes. And
179994  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
179995 
179996  */
179997 
179998  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
179999  // overridden in every class by *generated* implementation
180001  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
180002  // MS: 06/28/02 container of names of variables or container indices
180003  // used used in the traversal to access AST successor nodes
180004  // overridden in every class by *generated* implementation
180007  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
180008 
180009  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
180010  // than all the vector copies. The implementation for these functions is generated for each class.
180012  virtual size_t get_numberOfTraversalSuccessors() override;
180014  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
180016  virtual size_t get_childIndex(SgNode *child) override;
180017 
180018 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
180019  // MS: 08/16/2002 method for generating RTI information
180021  virtual RTIReturnType roseRTI() override;
180022 #endif
180023  /* */
180024 
180025 
180026 
180027  /* name Deprecated Functions
180028  \brief Deprecated functions ... incomplete-documentation
180029 
180030  These functions have been deprecated from use.
180031  */
180032  /* */
180033 
180035  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
180036 
180037  // JJW (10/16/2008): Changed to a single function in Node.code, and put
180038  // getVariant() in #if 0 block to prevent confusing Doxygen
180039 #if 0
180040 
180041  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
180043  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
180044 #endif
180045  /* */
180046 
180047 
180048 
180049 
180050  public:
180051  /* name Traversal Support Functions
180052  \brief Traversal support functions ... incomplete-documentation
180053 
180054  These functions have been made public as part of the design, but they are suggested for internal use
180055  or by particularly knowledgable users for specialized tools or applications.
180056  */
180057  /* */
180058 
180059  // DQ (11/26/2005): Support for visitor pattern mechanims
180060  // (inferior to ROSE traversal mechanism, experimental).
180064 
180065  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
180067  virtual void accept (ROSE_VisitorPattern & visitor) override;
180068 
180069  // DQ (12/26/2005): Support for traversal based on the memory pool
180072  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
180073 
180076  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
180077 
180078  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
180079  // This traversal helps support internal tools that call static member functions.
180080  // note: this function operates on the memory pools.
180083  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
180084  /* */
180085 
180086 
180087  public:
180088  /* name Memory Allocation Functions
180089  \brief Memory allocations functions ... incomplete-documentation
180090 
180091  These functions have been made public as part of the design, but they are suggested for internal use
180092  or by particularly knowledgable users for specialized tools or applications.
180093  */
180094  /* */
180095 
180106  virtual bool isInMemoryPool() override;
180107 
180118  virtual void checkDataMemberPointersIfInMemoryPool() override;
180119 
180120  // DQ (4/30/2006): Modified to be a const function.
180135  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
180136 
180146  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
180147 
180159  virtual long getChildIndex( SgNode* childNode ) const override;
180160 
180161  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
180162  // comment here (changed to be a C style comment and not be a doxygen comment).
180163  /* \brief Constructor for use by AST File I/O Mechanism
180164 
180165  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
180166  which obtained via fast binary file I/O from disk.
180167  */
180168  // SgCatchStatementSeq( SgCatchStatementSeqStorageClass& source );
180169 
180170 
180171 
180172 
180173 
180174  // JH (10/24/2005): methods added to support the ast file IO
180175  private:
180176 
180177  /* name AST Memory Allocation Support Functions
180178  \brief Memory allocations support....
180179 
180180  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
180181  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
180182  and support the AST File I/O Mechanism.
180183  */
180184  /* */
180185 
180186  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
180187  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
180188  that I use the same type everywhere, if any changes are made. THe second one declares the type
180189  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
180190  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
180191  a correspinding one in the AST_FILE_IO class!
180192  */
180193  // DQ (9/2/2015): This typedef is no longer used, we can't define the
180194  // comment here (changed to be a C style comment and not be a doxygen comment).
180195  /* \brief Typedef used for low level memory access.
180196  */
180197  // typedef unsigned char* TestType;
180198 
180199  // DQ (9/2/2015): This typedef is no longer used, we can't define the
180200  // comment here (changed to be a C style comment and not be a doxygen comment).
180201  /* \brief Typedef used to hold memory addresses as values.
180202  */
180203  // typedef unsigned long AddressType;
180204 
180205 
180206 
180207  // necessary, to have direct access to the p_freepointer and the private methods !
180209  friend class AST_FILE_IO;
180210 
180212  friend class SgCatchStatementSeqStorageClass;
180213 
180215  friend class AstSpecificDataManagingClass;
180216 
180218  friend class AstSpecificDataManagingClassStorageClass;
180219 
180220  public:
180222  SgCatchStatementSeq( const SgCatchStatementSeqStorageClass& source );
180223 
180224  // private: // JJW hack
180225  /*
180226  name AST Memory Allocation Support Variables
180227  Memory allocations support variables
180228 
180229  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
180230  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
180231  and support the AST File I/O Mechanism.
180232  */
180233  /* */
180234 
180235  public:
180236 
180237  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
180238  // to current node (so that it will work cleanly with build functions to specify patterns).
180239  // virtual SgNode* addRegExpAttribute();
180246 
180247 // *** COMMON CODE SECTION ENDS HERE ***
180248 
180249 
180250 // End of memberFunctionString
180251 // Start of memberFunctionString
180252 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
180253 
180254  // the generated cast function
180255  // friend ROSE_DLL_API SgCatchStatementSeq* isSgCatchStatementSeq ( SgNode* s );
180256 
180257  typedef SgStatement base_node_type;
180258 
180259 
180260 // End of memberFunctionString
180261 // Start of memberFunctionString
180262 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
180263 
180264  void post_construction_initialization() override;
180265 
180266 
180267 // End of memberFunctionString
180268 
180269  public:
180270  const SgStatementPtrList& get_catch_statement_seq() const;
180271  SgStatementPtrList& get_catch_statement_seq();
180272 
180273 
180274  public:
180275  virtual ~SgCatchStatementSeq();
180276 
180277 
180278  public:
180279  SgCatchStatementSeq(Sg_File_Info* startOfConstruct );
180280  SgCatchStatementSeq();
180281 
180282  protected:
180283 // Start of memberFunctionString
180284 SgStatementPtrList p_catch_statement_seq;
180285 
180286 // End of memberFunctionString
180287 
180288 
180289 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
180290 
180291 
180292  };
180293 #endif
180294 
180295 // postdeclarations for SgCatchStatementSeq
180296 
180297 /* #line 180298 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
180298 
180299 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
180300 
180301 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
180302 
180303 
180304 /* #line 180305 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
180305 
180306 
180307 
180308 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
180309 
180310 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
180311 // This code is automatically generated for each
180312 // terminal and non-terminal within the defined
180313 // grammar. There is a simple way to change the
180314 // code to fix bugs etc. See the ROSE README file
180315 // for directions.
180316 
180317 // tps: (02/22/2010): Adding DLL export requirements
180318 #include "rosedll.h"
180319 
180320 // predeclarations for SgProcessControlStatement
180321 
180322 /* #line 180323 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
180323 
180324 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
180325 
180326 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
180327 
180328 #if 1
180329 // Class Definition for SgProcessControlStatement
180330 class ROSE_DLL_API SgProcessControlStatement : public SgStatement
180331  {
180332  public:
180333 
180334 
180335 /* #line 180336 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
180336 
180337  virtual SgNode* copy ( SgCopyHelp& help) const override;
180338 // Start of memberFunctionString
180339 /* #line 3403 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
180340 
180341  public:
180342  // Rasmussen (4/26/2018): Added e_exit for Jovial (exit similar to Fortran stop)
180343  // Rasmussen (5/21/2018): Added e_abort for Jovial
180344  // Rasmussen (7/11/2020): Renamed SgStopOrPauseStatement to SgProcessControlStatement
180345  // PP (2/11/22): added requeue and requeue_with_abort to support Ada
180346  enum control_enum
180347  {
180348  e_unknown,
180349  e_abort,
180350  e_stop,
180351  e_error_stop,
180352  e_exit,
180353  e_pause,
180354  };
180355 
180356 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
180357  virtual unsigned int cfgIndexForEnd() const override;
180358  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
180359  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
180360 #endif
180361 
180362 
180363 
180364 // End of memberFunctionString
180365 // Start of memberFunctionString
180366 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
180367 
180368 // *** COMMON CODE SECTION BEGINS HERE ***
180369 
180370  public:
180371 
180372  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
180373  // and not required which is required to match the other aspects of the copy mechanism code generation.
180374  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
180375  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
180376  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
180377  // virtual SgNode* copy ( const SgCopyHelp & help) const;
180378 
180380  virtual std::string class_name() const override;
180381 
180383  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
180384 
180386  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
180387  // static const VariantT static_variant = V_SgProcessControlStatement;
180388  enum { static_variant = V_SgProcessControlStatement };
180389 
180390  /* the generated cast function */
180392  ROSE_DLL_API friend SgProcessControlStatement* isSgProcessControlStatement( SgNode * s );
180393 
180395  ROSE_DLL_API friend const SgProcessControlStatement* isSgProcessControlStatement( const SgNode * s );
180396 
180397  // ******************************************
180398  // * Memory Pool / New / Delete
180399  // ******************************************
180400 
180401  public:
180403  static const unsigned pool_size; //
180405  static std::vector<unsigned char *> pools; //
180407  static SgProcessControlStatement * next_node; //
180408 
180410  static unsigned long initializeStorageClassArray(SgProcessControlStatementStorageClass *); //
180411 
180413  static void clearMemoryPool(); //
180414  static void deleteMemoryPool(); //
180415 
180417  static void extendMemoryPoolForFileIO(); //
180418 
180420  static SgProcessControlStatement * getPointerFromGlobalIndex(unsigned long); //
180422  static SgProcessControlStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
180423 
180425  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
180427  static void resetValidFreepointers(); //
180429  static unsigned long getNumberOfLastValidPointer(); //
180430 
180431 
180432 #if defined(INLINE_FUNCTIONS)
180433 
180434  inline void *operator new (size_t size);
180435 #else
180436 
180437  void *operator new (size_t size);
180438 #endif
180439 
180440  void operator delete (void* pointer, size_t size);
180441 
180442  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
180443  void operator delete (void* pointer)
180444  {
180445  // This is the generated delete operator...
180446  SgProcessControlStatement::operator delete (pointer,sizeof(SgProcessControlStatement));
180447  }
180448 
180450  static size_t numberOfNodes();
180451 
180453  static size_t memoryUsage();
180454 
180455  // End of scope which started in IR nodes specific code
180456  /* */
180457 
180458  /* name Internal Functions
180459  \brief Internal functions ... incomplete-documentation
180460 
180461  These functions have been made public as part of the design, but they are suggested for internal use
180462  or by particularly knowledgeable users for specialized tools or applications.
180463 
180464  \internal We could not make these private because they are required by user for special purposes. And
180465  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
180466 
180467  */
180468 
180469  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
180470  // overridden in every class by *generated* implementation
180472  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
180473  // MS: 06/28/02 container of names of variables or container indices
180474  // used used in the traversal to access AST successor nodes
180475  // overridden in every class by *generated* implementation
180478  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
180479 
180480  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
180481  // than all the vector copies. The implementation for these functions is generated for each class.
180483  virtual size_t get_numberOfTraversalSuccessors() override;
180485  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
180487  virtual size_t get_childIndex(SgNode *child) override;
180488 
180489 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
180490  // MS: 08/16/2002 method for generating RTI information
180492  virtual RTIReturnType roseRTI() override;
180493 #endif
180494  /* */
180495 
180496 
180497 
180498  /* name Deprecated Functions
180499  \brief Deprecated functions ... incomplete-documentation
180500 
180501  These functions have been deprecated from use.
180502  */
180503  /* */
180504 
180506  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
180507 
180508  // JJW (10/16/2008): Changed to a single function in Node.code, and put
180509  // getVariant() in #if 0 block to prevent confusing Doxygen
180510 #if 0
180511 
180512  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
180514  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
180515 #endif
180516  /* */
180517 
180518 
180519 
180520 
180521  public:
180522  /* name Traversal Support Functions
180523  \brief Traversal support functions ... incomplete-documentation
180524 
180525  These functions have been made public as part of the design, but they are suggested for internal use
180526  or by particularly knowledgable users for specialized tools or applications.
180527  */
180528  /* */
180529 
180530  // DQ (11/26/2005): Support for visitor pattern mechanims
180531  // (inferior to ROSE traversal mechanism, experimental).
180535 
180536  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
180538  virtual void accept (ROSE_VisitorPattern & visitor) override;
180539 
180540  // DQ (12/26/2005): Support for traversal based on the memory pool
180543  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
180544 
180547  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
180548 
180549  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
180550  // This traversal helps support internal tools that call static member functions.
180551  // note: this function operates on the memory pools.
180554  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
180555  /* */
180556 
180557 
180558  public:
180559  /* name Memory Allocation Functions
180560  \brief Memory allocations functions ... incomplete-documentation
180561 
180562  These functions have been made public as part of the design, but they are suggested for internal use
180563  or by particularly knowledgable users for specialized tools or applications.
180564  */
180565  /* */
180566 
180577  virtual bool isInMemoryPool() override;
180578 
180589  virtual void checkDataMemberPointersIfInMemoryPool() override;
180590 
180591  // DQ (4/30/2006): Modified to be a const function.
180606  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
180607 
180617  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
180618 
180630  virtual long getChildIndex( SgNode* childNode ) const override;
180631 
180632  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
180633  // comment here (changed to be a C style comment and not be a doxygen comment).
180634  /* \brief Constructor for use by AST File I/O Mechanism
180635 
180636  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
180637  which obtained via fast binary file I/O from disk.
180638  */
180639  // SgProcessControlStatement( SgProcessControlStatementStorageClass& source );
180640 
180641 
180642 
180643 
180644 
180645  // JH (10/24/2005): methods added to support the ast file IO
180646  private:
180647 
180648  /* name AST Memory Allocation Support Functions
180649  \brief Memory allocations support....
180650 
180651  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
180652  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
180653  and support the AST File I/O Mechanism.
180654  */
180655  /* */
180656 
180657  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
180658  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
180659  that I use the same type everywhere, if any changes are made. THe second one declares the type
180660  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
180661  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
180662  a correspinding one in the AST_FILE_IO class!
180663  */
180664  // DQ (9/2/2015): This typedef is no longer used, we can't define the
180665  // comment here (changed to be a C style comment and not be a doxygen comment).
180666  /* \brief Typedef used for low level memory access.
180667  */
180668  // typedef unsigned char* TestType;
180669 
180670  // DQ (9/2/2015): This typedef is no longer used, we can't define the
180671  // comment here (changed to be a C style comment and not be a doxygen comment).
180672  /* \brief Typedef used to hold memory addresses as values.
180673  */
180674  // typedef unsigned long AddressType;
180675 
180676 
180677 
180678  // necessary, to have direct access to the p_freepointer and the private methods !
180680  friend class AST_FILE_IO;
180681 
180683  friend class SgProcessControlStatementStorageClass;
180684 
180686  friend class AstSpecificDataManagingClass;
180687 
180689  friend class AstSpecificDataManagingClassStorageClass;
180690 
180691  public:
180693  SgProcessControlStatement( const SgProcessControlStatementStorageClass& source );
180694 
180695  // private: // JJW hack
180696  /*
180697  name AST Memory Allocation Support Variables
180698  Memory allocations support variables
180699 
180700  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
180701  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
180702  and support the AST File I/O Mechanism.
180703  */
180704  /* */
180705 
180706  public:
180707 
180708  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
180709  // to current node (so that it will work cleanly with build functions to specify patterns).
180710  // virtual SgNode* addRegExpAttribute();
180717 
180718 // *** COMMON CODE SECTION ENDS HERE ***
180719 
180720 
180721 // End of memberFunctionString
180722 // Start of memberFunctionString
180723 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
180724 
180725  // the generated cast function
180726  // friend ROSE_DLL_API SgProcessControlStatement* isSgProcessControlStatement ( SgNode* s );
180727 
180728  typedef SgStatement base_node_type;
180729 
180730 
180731 // End of memberFunctionString
180732 // Start of memberFunctionString
180733 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
180734 
180735  void post_construction_initialization() override;
180736 
180737 
180738 // End of memberFunctionString
180739 
180740  public:
180741  SgProcessControlStatement::control_enum get_control_kind() const;
180742  void set_control_kind(SgProcessControlStatement::control_enum control_kind);
180743 
180744  public:
180745  SgExpression* get_code() const;
180746  void set_code(SgExpression* code);
180747 
180748  public:
180749  SgExpression* get_quiet() const;
180750  void set_quiet(SgExpression* quiet);
180751 
180752 
180753  public:
180754  virtual ~SgProcessControlStatement();
180755 
180756 
180757  public:
180758  SgProcessControlStatement(Sg_File_Info* startOfConstruct , SgExpression* code = NULL);
180760 
180761  protected:
180762 // Start of memberFunctionString
180763 SgProcessControlStatement::control_enum p_control_kind;
180764 
180765 // End of memberFunctionString
180766 // Start of memberFunctionString
180767 SgExpression* p_code;
180768 
180769 // End of memberFunctionString
180770 // Start of memberFunctionString
180771 SgExpression* p_quiet;
180772 
180773 // End of memberFunctionString
180774 
180775 
180776 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
180777 
180778 
180779  };
180780 #endif
180781 
180782 // postdeclarations for SgProcessControlStatement
180783 
180784 /* #line 180785 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
180785 
180786 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
180787 
180788 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
180789 
180790 
180791 /* #line 180792 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
180792 
180793 
180794 
180795 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
180796 
180797 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
180798 // This code is automatically generated for each
180799 // terminal and non-terminal within the defined
180800 // grammar. There is a simple way to change the
180801 // code to fix bugs etc. See the ROSE README file
180802 // for directions.
180803 
180804 // tps: (02/22/2010): Adding DLL export requirements
180805 #include "rosedll.h"
180806 
180807 // predeclarations for SgIOStatement
180808 
180809 /* #line 180810 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
180810 
180811 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
180812 
180813 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
180814 
180815 #if 1
180816 // Class Definition for SgIOStatement
180817 class ROSE_DLL_API SgIOStatement : public SgStatement
180818  {
180819  public:
180820 
180821 
180822 /* #line 180823 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
180823 
180824  virtual SgNode* copy ( SgCopyHelp& help) const override;
180825 // Start of memberFunctionString
180826 /* #line 3505 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
180827 
180828  // This is a base class for all the I/O statements: read, write, open, close, inquire
180829  // In addition it fully represents the statements: backspace, endfile, rewind
180830 
180831  public:
180834  {
180835  e_unknown,
180836  e_read,
180837  e_print,
180838  e_write,
180839  e_open,
180840  e_close,
180841  e_inquire,
180842  e_backspace,
180843  e_endfile,
180844  e_rewind,
180845  e_last_io_statment_kind
180846  };
180847 
180848 
180849 
180850 // End of memberFunctionString
180851 // Start of memberFunctionString
180852 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
180853 
180854 // *** COMMON CODE SECTION BEGINS HERE ***
180855 
180856  public:
180857 
180858  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
180859  // and not required which is required to match the other aspects of the copy mechanism code generation.
180860  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
180861  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
180862  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
180863  // virtual SgNode* copy ( const SgCopyHelp & help) const;
180864 
180866  virtual std::string class_name() const override;
180867 
180869  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
180870 
180872  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
180873  // static const VariantT static_variant = V_SgIOStatement;
180874  enum { static_variant = V_SgIOStatement };
180875 
180876  /* the generated cast function */
180878  ROSE_DLL_API friend SgIOStatement* isSgIOStatement( SgNode * s );
180879 
180881  ROSE_DLL_API friend const SgIOStatement* isSgIOStatement( const SgNode * s );
180882 
180883  // ******************************************
180884  // * Memory Pool / New / Delete
180885  // ******************************************
180886 
180887  public:
180889  static const unsigned pool_size; //
180891  static std::vector<unsigned char *> pools; //
180893  static SgIOStatement * next_node; //
180894 
180896  static unsigned long initializeStorageClassArray(SgIOStatementStorageClass *); //
180897 
180899  static void clearMemoryPool(); //
180900  static void deleteMemoryPool(); //
180901 
180903  static void extendMemoryPoolForFileIO(); //
180904 
180906  static SgIOStatement * getPointerFromGlobalIndex(unsigned long); //
180908  static SgIOStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
180909 
180911  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
180913  static void resetValidFreepointers(); //
180915  static unsigned long getNumberOfLastValidPointer(); //
180916 
180917 
180918 #if defined(INLINE_FUNCTIONS)
180919 
180920  inline void *operator new (size_t size);
180921 #else
180922 
180923  void *operator new (size_t size);
180924 #endif
180925 
180926  void operator delete (void* pointer, size_t size);
180927 
180928  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
180929  void operator delete (void* pointer)
180930  {
180931  // This is the generated delete operator...
180932  SgIOStatement::operator delete (pointer,sizeof(SgIOStatement));
180933  }
180934 
180936  static size_t numberOfNodes();
180937 
180939  static size_t memoryUsage();
180940 
180941  // End of scope which started in IR nodes specific code
180942  /* */
180943 
180944  /* name Internal Functions
180945  \brief Internal functions ... incomplete-documentation
180946 
180947  These functions have been made public as part of the design, but they are suggested for internal use
180948  or by particularly knowledgeable users for specialized tools or applications.
180949 
180950  \internal We could not make these private because they are required by user for special purposes. And
180951  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
180952 
180953  */
180954 
180955  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
180956  // overridden in every class by *generated* implementation
180958  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
180959  // MS: 06/28/02 container of names of variables or container indices
180960  // used used in the traversal to access AST successor nodes
180961  // overridden in every class by *generated* implementation
180964  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
180965 
180966  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
180967  // than all the vector copies. The implementation for these functions is generated for each class.
180969  virtual size_t get_numberOfTraversalSuccessors() override;
180971  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
180973  virtual size_t get_childIndex(SgNode *child) override;
180974 
180975 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
180976  // MS: 08/16/2002 method for generating RTI information
180978  virtual RTIReturnType roseRTI() override;
180979 #endif
180980  /* */
180981 
180982 
180983 
180984  /* name Deprecated Functions
180985  \brief Deprecated functions ... incomplete-documentation
180986 
180987  These functions have been deprecated from use.
180988  */
180989  /* */
180990 
180992  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
180993 
180994  // JJW (10/16/2008): Changed to a single function in Node.code, and put
180995  // getVariant() in #if 0 block to prevent confusing Doxygen
180996 #if 0
180997 
180998  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
181000  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
181001 #endif
181002  /* */
181003 
181004 
181005 
181006 
181007  public:
181008  /* name Traversal Support Functions
181009  \brief Traversal support functions ... incomplete-documentation
181010 
181011  These functions have been made public as part of the design, but they are suggested for internal use
181012  or by particularly knowledgable users for specialized tools or applications.
181013  */
181014  /* */
181015 
181016  // DQ (11/26/2005): Support for visitor pattern mechanims
181017  // (inferior to ROSE traversal mechanism, experimental).
181021 
181022  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
181024  virtual void accept (ROSE_VisitorPattern & visitor) override;
181025 
181026  // DQ (12/26/2005): Support for traversal based on the memory pool
181029  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
181030 
181033  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
181034 
181035  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
181036  // This traversal helps support internal tools that call static member functions.
181037  // note: this function operates on the memory pools.
181040  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
181041  /* */
181042 
181043 
181044  public:
181045  /* name Memory Allocation Functions
181046  \brief Memory allocations functions ... incomplete-documentation
181047 
181048  These functions have been made public as part of the design, but they are suggested for internal use
181049  or by particularly knowledgable users for specialized tools or applications.
181050  */
181051  /* */
181052 
181063  virtual bool isInMemoryPool() override;
181064 
181075  virtual void checkDataMemberPointersIfInMemoryPool() override;
181076 
181077  // DQ (4/30/2006): Modified to be a const function.
181092  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
181093 
181103  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
181104 
181116  virtual long getChildIndex( SgNode* childNode ) const override;
181117 
181118  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
181119  // comment here (changed to be a C style comment and not be a doxygen comment).
181120  /* \brief Constructor for use by AST File I/O Mechanism
181121 
181122  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
181123  which obtained via fast binary file I/O from disk.
181124  */
181125  // SgIOStatement( SgIOStatementStorageClass& source );
181126 
181127 
181128 
181129 
181130 
181131  // JH (10/24/2005): methods added to support the ast file IO
181132  private:
181133 
181134  /* name AST Memory Allocation Support Functions
181135  \brief Memory allocations support....
181136 
181137  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
181138  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
181139  and support the AST File I/O Mechanism.
181140  */
181141  /* */
181142 
181143  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
181144  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
181145  that I use the same type everywhere, if any changes are made. THe second one declares the type
181146  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
181147  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
181148  a correspinding one in the AST_FILE_IO class!
181149  */
181150  // DQ (9/2/2015): This typedef is no longer used, we can't define the
181151  // comment here (changed to be a C style comment and not be a doxygen comment).
181152  /* \brief Typedef used for low level memory access.
181153  */
181154  // typedef unsigned char* TestType;
181155 
181156  // DQ (9/2/2015): This typedef is no longer used, we can't define the
181157  // comment here (changed to be a C style comment and not be a doxygen comment).
181158  /* \brief Typedef used to hold memory addresses as values.
181159  */
181160  // typedef unsigned long AddressType;
181161 
181162 
181163 
181164  // necessary, to have direct access to the p_freepointer and the private methods !
181166  friend class AST_FILE_IO;
181167 
181169  friend class SgIOStatementStorageClass;
181170 
181172  friend class AstSpecificDataManagingClass;
181173 
181175  friend class AstSpecificDataManagingClassStorageClass;
181176 
181177  public:
181179  SgIOStatement( const SgIOStatementStorageClass& source );
181180 
181181  // private: // JJW hack
181182  /*
181183  name AST Memory Allocation Support Variables
181184  Memory allocations support variables
181185 
181186  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
181187  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
181188  and support the AST File I/O Mechanism.
181189  */
181190  /* */
181191 
181192  public:
181193 
181194  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
181195  // to current node (so that it will work cleanly with build functions to specify patterns).
181196  // virtual SgNode* addRegExpAttribute();
181202  SgIOStatement* addRegExpAttribute(std::string s, AstRegExAttribute* a);
181203 
181204 // *** COMMON CODE SECTION ENDS HERE ***
181205 
181206 
181207 // End of memberFunctionString
181208 // Start of memberFunctionString
181209 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
181210 
181211  // the generated cast function
181212  // friend ROSE_DLL_API SgIOStatement* isSgIOStatement ( SgNode* s );
181213 
181214  typedef SgStatement base_node_type;
181215 
181216 
181217 // End of memberFunctionString
181218 // Start of memberFunctionString
181219 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
181220 
181221  void post_construction_initialization() override;
181222 
181223 
181224 // End of memberFunctionString
181225 
181226  public:
181227  SgIOStatement::io_statement_enum get_io_statement() const;
181228  void set_io_statement(SgIOStatement::io_statement_enum io_statement);
181229 
181230  public:
181231  SgExprListExp* get_io_stmt_list() const;
181232  void set_io_stmt_list(SgExprListExp* io_stmt_list);
181233 
181234  public:
181235  SgExpression* get_unit() const;
181236  void set_unit(SgExpression* unit);
181237 
181238  public:
181239  SgExpression* get_iostat() const;
181240  void set_iostat(SgExpression* iostat);
181241 
181242  public:
181243  SgExpression* get_err() const;
181244  void set_err(SgExpression* err);
181245 
181246  public:
181247  SgExpression* get_iomsg() const;
181248  void set_iomsg(SgExpression* iomsg);
181249 
181250 
181251  public:
181252  virtual ~SgIOStatement();
181253 
181254 
181255  public:
181256  SgIOStatement(Sg_File_Info* startOfConstruct );
181257  SgIOStatement();
181258 
181259  protected:
181260 // Start of memberFunctionString
181261 SgIOStatement::io_statement_enum p_io_statement;
181262 
181263 // End of memberFunctionString
181264 // Start of memberFunctionString
181265 SgExprListExp* p_io_stmt_list;
181266 
181267 // End of memberFunctionString
181268 // Start of memberFunctionString
181269 SgExpression* p_unit;
181270 
181271 // End of memberFunctionString
181272 // Start of memberFunctionString
181273 SgExpression* p_iostat;
181274 
181275 // End of memberFunctionString
181276 // Start of memberFunctionString
181277 SgExpression* p_err;
181278 
181279 // End of memberFunctionString
181280 // Start of memberFunctionString
181281 SgExpression* p_iomsg;
181282 
181283 // End of memberFunctionString
181284 
181285 
181286 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
181287 
181288 
181289  };
181290 #endif
181291 
181292 // postdeclarations for SgIOStatement
181293 
181294 /* #line 181295 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
181295 
181296 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
181297 
181298 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
181299 
181300 
181301 /* #line 181302 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
181302 
181303 
181304 
181305 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
181306 
181307 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
181308 // This code is automatically generated for each
181309 // terminal and non-terminal within the defined
181310 // grammar. There is a simple way to change the
181311 // code to fix bugs etc. See the ROSE README file
181312 // for directions.
181313 
181314 // tps: (02/22/2010): Adding DLL export requirements
181315 #include "rosedll.h"
181316 
181317 // predeclarations for SgPrintStatement
181318 
181319 /* #line 181320 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
181320 
181321 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
181322 
181323 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
181324 
181325 #if 1
181326 // Class Definition for SgPrintStatement
181327 class ROSE_DLL_API SgPrintStatement : public SgIOStatement
181328  {
181329  public:
181330 
181331 
181332 /* #line 181333 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
181333 
181334  virtual SgNode* copy ( SgCopyHelp& help) const override;
181335 // Start of memberFunctionString
181336 /* #line 3528 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
181337 
181338 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
181339  virtual unsigned int cfgIndexForEnd() const override;
181340  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
181341  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
181342 #endif
181343 
181344 
181345 // End of memberFunctionString
181346 // Start of memberFunctionString
181347 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
181348 
181349 // *** COMMON CODE SECTION BEGINS HERE ***
181350 
181351  public:
181352 
181353  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
181354  // and not required which is required to match the other aspects of the copy mechanism code generation.
181355  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
181356  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
181357  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
181358  // virtual SgNode* copy ( const SgCopyHelp & help) const;
181359 
181361  virtual std::string class_name() const override;
181362 
181364  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
181365 
181367  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
181368  // static const VariantT static_variant = V_SgPrintStatement;
181369  enum { static_variant = V_SgPrintStatement };
181370 
181371  /* the generated cast function */
181373  ROSE_DLL_API friend SgPrintStatement* isSgPrintStatement( SgNode * s );
181374 
181376  ROSE_DLL_API friend const SgPrintStatement* isSgPrintStatement( const SgNode * s );
181377 
181378  // ******************************************
181379  // * Memory Pool / New / Delete
181380  // ******************************************
181381 
181382  public:
181384  static const unsigned pool_size; //
181386  static std::vector<unsigned char *> pools; //
181388  static SgPrintStatement * next_node; //
181389 
181391  static unsigned long initializeStorageClassArray(SgPrintStatementStorageClass *); //
181392 
181394  static void clearMemoryPool(); //
181395  static void deleteMemoryPool(); //
181396 
181398  static void extendMemoryPoolForFileIO(); //
181399 
181401  static SgPrintStatement * getPointerFromGlobalIndex(unsigned long); //
181403  static SgPrintStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
181404 
181406  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
181408  static void resetValidFreepointers(); //
181410  static unsigned long getNumberOfLastValidPointer(); //
181411 
181412 
181413 #if defined(INLINE_FUNCTIONS)
181414 
181415  inline void *operator new (size_t size);
181416 #else
181417 
181418  void *operator new (size_t size);
181419 #endif
181420 
181421  void operator delete (void* pointer, size_t size);
181422 
181423  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
181424  void operator delete (void* pointer)
181425  {
181426  // This is the generated delete operator...
181427  SgPrintStatement::operator delete (pointer,sizeof(SgPrintStatement));
181428  }
181429 
181431  static size_t numberOfNodes();
181432 
181434  static size_t memoryUsage();
181435 
181436  // End of scope which started in IR nodes specific code
181437  /* */
181438 
181439  /* name Internal Functions
181440  \brief Internal functions ... incomplete-documentation
181441 
181442  These functions have been made public as part of the design, but they are suggested for internal use
181443  or by particularly knowledgeable users for specialized tools or applications.
181444 
181445  \internal We could not make these private because they are required by user for special purposes. And
181446  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
181447 
181448  */
181449 
181450  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
181451  // overridden in every class by *generated* implementation
181453  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
181454  // MS: 06/28/02 container of names of variables or container indices
181455  // used used in the traversal to access AST successor nodes
181456  // overridden in every class by *generated* implementation
181459  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
181460 
181461  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
181462  // than all the vector copies. The implementation for these functions is generated for each class.
181464  virtual size_t get_numberOfTraversalSuccessors() override;
181466  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
181468  virtual size_t get_childIndex(SgNode *child) override;
181469 
181470 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
181471  // MS: 08/16/2002 method for generating RTI information
181473  virtual RTIReturnType roseRTI() override;
181474 #endif
181475  /* */
181476 
181477 
181478 
181479  /* name Deprecated Functions
181480  \brief Deprecated functions ... incomplete-documentation
181481 
181482  These functions have been deprecated from use.
181483  */
181484  /* */
181485 
181487  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
181488 
181489  // JJW (10/16/2008): Changed to a single function in Node.code, and put
181490  // getVariant() in #if 0 block to prevent confusing Doxygen
181491 #if 0
181492 
181493  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
181495  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
181496 #endif
181497  /* */
181498 
181499 
181500 
181501 
181502  public:
181503  /* name Traversal Support Functions
181504  \brief Traversal support functions ... incomplete-documentation
181505 
181506  These functions have been made public as part of the design, but they are suggested for internal use
181507  or by particularly knowledgable users for specialized tools or applications.
181508  */
181509  /* */
181510 
181511  // DQ (11/26/2005): Support for visitor pattern mechanims
181512  // (inferior to ROSE traversal mechanism, experimental).
181516 
181517  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
181519  virtual void accept (ROSE_VisitorPattern & visitor) override;
181520 
181521  // DQ (12/26/2005): Support for traversal based on the memory pool
181524  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
181525 
181528  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
181529 
181530  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
181531  // This traversal helps support internal tools that call static member functions.
181532  // note: this function operates on the memory pools.
181535  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
181536  /* */
181537 
181538 
181539  public:
181540  /* name Memory Allocation Functions
181541  \brief Memory allocations functions ... incomplete-documentation
181542 
181543  These functions have been made public as part of the design, but they are suggested for internal use
181544  or by particularly knowledgable users for specialized tools or applications.
181545  */
181546  /* */
181547 
181558  virtual bool isInMemoryPool() override;
181559 
181570  virtual void checkDataMemberPointersIfInMemoryPool() override;
181571 
181572  // DQ (4/30/2006): Modified to be a const function.
181587  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
181588 
181598  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
181599 
181611  virtual long getChildIndex( SgNode* childNode ) const override;
181612 
181613  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
181614  // comment here (changed to be a C style comment and not be a doxygen comment).
181615  /* \brief Constructor for use by AST File I/O Mechanism
181616 
181617  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
181618  which obtained via fast binary file I/O from disk.
181619  */
181620  // SgPrintStatement( SgPrintStatementStorageClass& source );
181621 
181622 
181623 
181624 
181625 
181626  // JH (10/24/2005): methods added to support the ast file IO
181627  private:
181628 
181629  /* name AST Memory Allocation Support Functions
181630  \brief Memory allocations support....
181631 
181632  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
181633  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
181634  and support the AST File I/O Mechanism.
181635  */
181636  /* */
181637 
181638  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
181639  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
181640  that I use the same type everywhere, if any changes are made. THe second one declares the type
181641  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
181642  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
181643  a correspinding one in the AST_FILE_IO class!
181644  */
181645  // DQ (9/2/2015): This typedef is no longer used, we can't define the
181646  // comment here (changed to be a C style comment and not be a doxygen comment).
181647  /* \brief Typedef used for low level memory access.
181648  */
181649  // typedef unsigned char* TestType;
181650 
181651  // DQ (9/2/2015): This typedef is no longer used, we can't define the
181652  // comment here (changed to be a C style comment and not be a doxygen comment).
181653  /* \brief Typedef used to hold memory addresses as values.
181654  */
181655  // typedef unsigned long AddressType;
181656 
181657 
181658 
181659  // necessary, to have direct access to the p_freepointer and the private methods !
181661  friend class AST_FILE_IO;
181662 
181664  friend class SgPrintStatementStorageClass;
181665 
181667  friend class AstSpecificDataManagingClass;
181668 
181670  friend class AstSpecificDataManagingClassStorageClass;
181671 
181672  public:
181674  SgPrintStatement( const SgPrintStatementStorageClass& source );
181675 
181676  // private: // JJW hack
181677  /*
181678  name AST Memory Allocation Support Variables
181679  Memory allocations support variables
181680 
181681  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
181682  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
181683  and support the AST File I/O Mechanism.
181684  */
181685  /* */
181686 
181687  public:
181688 
181689  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
181690  // to current node (so that it will work cleanly with build functions to specify patterns).
181691  // virtual SgNode* addRegExpAttribute();
181698 
181699 // *** COMMON CODE SECTION ENDS HERE ***
181700 
181701 
181702 // End of memberFunctionString
181703 // Start of memberFunctionString
181704 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
181705 
181706  // the generated cast function
181707  // friend ROSE_DLL_API SgPrintStatement* isSgPrintStatement ( SgNode* s );
181708 
181709  typedef SgIOStatement base_node_type;
181710 
181711 
181712 // End of memberFunctionString
181713 // Start of memberFunctionString
181714 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
181715 
181716  void post_construction_initialization() override;
181717 
181718 
181719 // End of memberFunctionString
181720 
181721  public:
181722  SgExpression* get_format() const;
181723  void set_format(SgExpression* format);
181724 
181725 
181726  public:
181727  virtual ~SgPrintStatement();
181728 
181729 
181730  public:
181731  SgPrintStatement(Sg_File_Info* startOfConstruct );
181732  SgPrintStatement();
181733 
181734  protected:
181735 // Start of memberFunctionString
181736 SgExpression* p_format;
181737 
181738 // End of memberFunctionString
181739 
181740 
181741 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
181742 
181743 
181744  };
181745 #endif
181746 
181747 // postdeclarations for SgPrintStatement
181748 
181749 /* #line 181750 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
181750 
181751 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
181752 
181753 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
181754 
181755 
181756 /* #line 181757 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
181757 
181758 
181759 
181760 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
181761 
181762 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
181763 // This code is automatically generated for each
181764 // terminal and non-terminal within the defined
181765 // grammar. There is a simple way to change the
181766 // code to fix bugs etc. See the ROSE README file
181767 // for directions.
181768 
181769 // tps: (02/22/2010): Adding DLL export requirements
181770 #include "rosedll.h"
181771 
181772 // predeclarations for SgReadStatement
181773 
181774 /* #line 181775 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
181775 
181776 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
181777 
181778 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
181779 
181780 #if 1
181781 // Class Definition for SgReadStatement
181782 class ROSE_DLL_API SgReadStatement : public SgIOStatement
181783  {
181784  public:
181785 
181786 
181787 /* #line 181788 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
181788 
181789  virtual SgNode* copy ( SgCopyHelp& help) const override;
181790 // Start of memberFunctionString
181791 /* #line 3536 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
181792 
181793 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
181794  virtual unsigned int cfgIndexForEnd() const override;
181795  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
181796  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
181797 #endif
181798 
181799 
181800 // End of memberFunctionString
181801 // Start of memberFunctionString
181802 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
181803 
181804 // *** COMMON CODE SECTION BEGINS HERE ***
181805 
181806  public:
181807 
181808  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
181809  // and not required which is required to match the other aspects of the copy mechanism code generation.
181810  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
181811  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
181812  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
181813  // virtual SgNode* copy ( const SgCopyHelp & help) const;
181814 
181816  virtual std::string class_name() const override;
181817 
181819  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
181820 
181822  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
181823  // static const VariantT static_variant = V_SgReadStatement;
181824  enum { static_variant = V_SgReadStatement };
181825 
181826  /* the generated cast function */
181828  ROSE_DLL_API friend SgReadStatement* isSgReadStatement( SgNode * s );
181829 
181831  ROSE_DLL_API friend const SgReadStatement* isSgReadStatement( const SgNode * s );
181832 
181833  // ******************************************
181834  // * Memory Pool / New / Delete
181835  // ******************************************
181836 
181837  public:
181839  static const unsigned pool_size; //
181841  static std::vector<unsigned char *> pools; //
181843  static SgReadStatement * next_node; //
181844 
181846  static unsigned long initializeStorageClassArray(SgReadStatementStorageClass *); //
181847 
181849  static void clearMemoryPool(); //
181850  static void deleteMemoryPool(); //
181851 
181853  static void extendMemoryPoolForFileIO(); //
181854 
181856  static SgReadStatement * getPointerFromGlobalIndex(unsigned long); //
181858  static SgReadStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
181859 
181861  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
181863  static void resetValidFreepointers(); //
181865  static unsigned long getNumberOfLastValidPointer(); //
181866 
181867 
181868 #if defined(INLINE_FUNCTIONS)
181869 
181870  inline void *operator new (size_t size);
181871 #else
181872 
181873  void *operator new (size_t size);
181874 #endif
181875 
181876  void operator delete (void* pointer, size_t size);
181877 
181878  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
181879  void operator delete (void* pointer)
181880  {
181881  // This is the generated delete operator...
181882  SgReadStatement::operator delete (pointer,sizeof(SgReadStatement));
181883  }
181884 
181886  static size_t numberOfNodes();
181887 
181889  static size_t memoryUsage();
181890 
181891  // End of scope which started in IR nodes specific code
181892  /* */
181893 
181894  /* name Internal Functions
181895  \brief Internal functions ... incomplete-documentation
181896 
181897  These functions have been made public as part of the design, but they are suggested for internal use
181898  or by particularly knowledgeable users for specialized tools or applications.
181899 
181900  \internal We could not make these private because they are required by user for special purposes. And
181901  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
181902 
181903  */
181904 
181905  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
181906  // overridden in every class by *generated* implementation
181908  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
181909  // MS: 06/28/02 container of names of variables or container indices
181910  // used used in the traversal to access AST successor nodes
181911  // overridden in every class by *generated* implementation
181914  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
181915 
181916  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
181917  // than all the vector copies. The implementation for these functions is generated for each class.
181919  virtual size_t get_numberOfTraversalSuccessors() override;
181921  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
181923  virtual size_t get_childIndex(SgNode *child) override;
181924 
181925 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
181926  // MS: 08/16/2002 method for generating RTI information
181928  virtual RTIReturnType roseRTI() override;
181929 #endif
181930  /* */
181931 
181932 
181933 
181934  /* name Deprecated Functions
181935  \brief Deprecated functions ... incomplete-documentation
181936 
181937  These functions have been deprecated from use.
181938  */
181939  /* */
181940 
181942  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
181943 
181944  // JJW (10/16/2008): Changed to a single function in Node.code, and put
181945  // getVariant() in #if 0 block to prevent confusing Doxygen
181946 #if 0
181947 
181948  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
181950  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
181951 #endif
181952  /* */
181953 
181954 
181955 
181956 
181957  public:
181958  /* name Traversal Support Functions
181959  \brief Traversal support functions ... incomplete-documentation
181960 
181961  These functions have been made public as part of the design, but they are suggested for internal use
181962  or by particularly knowledgable users for specialized tools or applications.
181963  */
181964  /* */
181965 
181966  // DQ (11/26/2005): Support for visitor pattern mechanims
181967  // (inferior to ROSE traversal mechanism, experimental).
181971 
181972  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
181974  virtual void accept (ROSE_VisitorPattern & visitor) override;
181975 
181976  // DQ (12/26/2005): Support for traversal based on the memory pool
181979  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
181980 
181983  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
181984 
181985  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
181986  // This traversal helps support internal tools that call static member functions.
181987  // note: this function operates on the memory pools.
181990  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
181991  /* */
181992 
181993 
181994  public:
181995  /* name Memory Allocation Functions
181996  \brief Memory allocations functions ... incomplete-documentation
181997 
181998  These functions have been made public as part of the design, but they are suggested for internal use
181999  or by particularly knowledgable users for specialized tools or applications.
182000  */
182001  /* */
182002 
182013  virtual bool isInMemoryPool() override;
182014 
182025  virtual void checkDataMemberPointersIfInMemoryPool() override;
182026 
182027  // DQ (4/30/2006): Modified to be a const function.
182042  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
182043 
182053  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
182054 
182066  virtual long getChildIndex( SgNode* childNode ) const override;
182067 
182068  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
182069  // comment here (changed to be a C style comment and not be a doxygen comment).
182070  /* \brief Constructor for use by AST File I/O Mechanism
182071 
182072  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
182073  which obtained via fast binary file I/O from disk.
182074  */
182075  // SgReadStatement( SgReadStatementStorageClass& source );
182076 
182077 
182078 
182079 
182080 
182081  // JH (10/24/2005): methods added to support the ast file IO
182082  private:
182083 
182084  /* name AST Memory Allocation Support Functions
182085  \brief Memory allocations support....
182086 
182087  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
182088  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
182089  and support the AST File I/O Mechanism.
182090  */
182091  /* */
182092 
182093  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
182094  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
182095  that I use the same type everywhere, if any changes are made. THe second one declares the type
182096  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
182097  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
182098  a correspinding one in the AST_FILE_IO class!
182099  */
182100  // DQ (9/2/2015): This typedef is no longer used, we can't define the
182101  // comment here (changed to be a C style comment and not be a doxygen comment).
182102  /* \brief Typedef used for low level memory access.
182103  */
182104  // typedef unsigned char* TestType;
182105 
182106  // DQ (9/2/2015): This typedef is no longer used, we can't define the
182107  // comment here (changed to be a C style comment and not be a doxygen comment).
182108  /* \brief Typedef used to hold memory addresses as values.
182109  */
182110  // typedef unsigned long AddressType;
182111 
182112 
182113 
182114  // necessary, to have direct access to the p_freepointer and the private methods !
182116  friend class AST_FILE_IO;
182117 
182119  friend class SgReadStatementStorageClass;
182120 
182122  friend class AstSpecificDataManagingClass;
182123 
182125  friend class AstSpecificDataManagingClassStorageClass;
182126 
182127  public:
182129  SgReadStatement( const SgReadStatementStorageClass& source );
182130 
182131  // private: // JJW hack
182132  /*
182133  name AST Memory Allocation Support Variables
182134  Memory allocations support variables
182135 
182136  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
182137  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
182138  and support the AST File I/O Mechanism.
182139  */
182140  /* */
182141 
182142  public:
182143 
182144  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
182145  // to current node (so that it will work cleanly with build functions to specify patterns).
182146  // virtual SgNode* addRegExpAttribute();
182153 
182154 // *** COMMON CODE SECTION ENDS HERE ***
182155 
182156 
182157 // End of memberFunctionString
182158 // Start of memberFunctionString
182159 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
182160 
182161  // the generated cast function
182162  // friend ROSE_DLL_API SgReadStatement* isSgReadStatement ( SgNode* s );
182163 
182164  typedef SgIOStatement base_node_type;
182165 
182166 
182167 // End of memberFunctionString
182168 // Start of memberFunctionString
182169 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
182170 
182171  void post_construction_initialization() override;
182172 
182173 
182174 // End of memberFunctionString
182175 
182176  public:
182177  SgExpression* get_format() const;
182178  void set_format(SgExpression* format);
182179 
182180  public:
182181  SgExpression* get_namelist() const;
182182  void set_namelist(SgExpression* namelist);
182183 
182184  public:
182185  SgExpression* get_advance() const;
182186  void set_advance(SgExpression* advance);
182187 
182188  public:
182189  SgExpression* get_asynchronous() const;
182190  void set_asynchronous(SgExpression* asynchronous);
182191 
182192  public:
182193  SgExpression* get_blank() const;
182194  void set_blank(SgExpression* blank);
182195 
182196  public:
182197  SgExpression* get_decimal() const;
182198  void set_decimal(SgExpression* decimal);
182199 
182200  public:
182201  SgExpression* get_delim() const;
182202  void set_delim(SgExpression* delim);
182203 
182204  public:
182205  SgExpression* get_end() const;
182206  void set_end(SgExpression* end);
182207 
182208  public:
182209  SgExpression* get_eor() const;
182210  void set_eor(SgExpression* eor);
182211 
182212  public:
182213  SgExpression* get_id() const;
182214  void set_id(SgExpression* id);
182215 
182216  public:
182217  SgExpression* get_pad() const;
182218  void set_pad(SgExpression* pad);
182219 
182220  public:
182221  SgExpression* get_pos() const;
182222  void set_pos(SgExpression* pos);
182223 
182224  public:
182225  SgExpression* get_rec() const;
182226  void set_rec(SgExpression* rec);
182227 
182228  public:
182229  SgExpression* get_round() const;
182230  void set_round(SgExpression* round);
182231 
182232  public:
182233  SgExpression* get_sign() const;
182234  void set_sign(SgExpression* sign);
182235 
182236  public:
182237  SgExpression* get_size() const;
182238  void set_size(SgExpression* size);
182239 
182240 
182241  public:
182242  virtual ~SgReadStatement();
182243 
182244 
182245  public:
182246  SgReadStatement(Sg_File_Info* startOfConstruct );
182247  SgReadStatement();
182248 
182249  protected:
182250 // Start of memberFunctionString
182251 SgExpression* p_format;
182252 
182253 // End of memberFunctionString
182254 // Start of memberFunctionString
182255 SgExpression* p_namelist;
182256 
182257 // End of memberFunctionString
182258 // Start of memberFunctionString
182259 SgExpression* p_advance;
182260 
182261 // End of memberFunctionString
182262 // Start of memberFunctionString
182263 SgExpression* p_asynchronous;
182264 
182265 // End of memberFunctionString
182266 // Start of memberFunctionString
182267 SgExpression* p_blank;
182268 
182269 // End of memberFunctionString
182270 // Start of memberFunctionString
182271 SgExpression* p_decimal;
182272 
182273 // End of memberFunctionString
182274 // Start of memberFunctionString
182275 SgExpression* p_delim;
182276 
182277 // End of memberFunctionString
182278 // Start of memberFunctionString
182279 SgExpression* p_end;
182280 
182281 // End of memberFunctionString
182282 // Start of memberFunctionString
182283 SgExpression* p_eor;
182284 
182285 // End of memberFunctionString
182286 // Start of memberFunctionString
182287 SgExpression* p_id;
182288 
182289 // End of memberFunctionString
182290 // Start of memberFunctionString
182291 SgExpression* p_pad;
182292 
182293 // End of memberFunctionString
182294 // Start of memberFunctionString
182295 SgExpression* p_pos;
182296 
182297 // End of memberFunctionString
182298 // Start of memberFunctionString
182299 SgExpression* p_rec;
182300 
182301 // End of memberFunctionString
182302 // Start of memberFunctionString
182303 SgExpression* p_round;
182304 
182305 // End of memberFunctionString
182306 // Start of memberFunctionString
182307 SgExpression* p_sign;
182308 
182309 // End of memberFunctionString
182310 // Start of memberFunctionString
182311 SgExpression* p_size;
182312 
182313 // End of memberFunctionString
182314 
182315 
182316 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
182317 
182318 
182319  };
182320 #endif
182321 
182322 // postdeclarations for SgReadStatement
182323 
182324 /* #line 182325 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
182325 
182326 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
182327 
182328 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
182329 
182330 
182331 /* #line 182332 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
182332 
182333 
182334 
182335 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
182336 
182337 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
182338 // This code is automatically generated for each
182339 // terminal and non-terminal within the defined
182340 // grammar. There is a simple way to change the
182341 // code to fix bugs etc. See the ROSE README file
182342 // for directions.
182343 
182344 // tps: (02/22/2010): Adding DLL export requirements
182345 #include "rosedll.h"
182346 
182347 // predeclarations for SgWriteStatement
182348 
182349 /* #line 182350 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
182350 
182351 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
182352 
182353 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
182354 
182355 #if 1
182356 // Class Definition for SgWriteStatement
182357 class ROSE_DLL_API SgWriteStatement : public SgIOStatement
182358  {
182359  public:
182360 
182361 
182362 /* #line 182363 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
182363 
182364  virtual SgNode* copy ( SgCopyHelp& help) const override;
182365 // Start of memberFunctionString
182366 /* #line 3544 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
182367 
182368 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
182369  virtual unsigned int cfgIndexForEnd() const override;
182370  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
182371  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
182372 #endif
182373 
182374 
182375 // End of memberFunctionString
182376 // Start of memberFunctionString
182377 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
182378 
182379 // *** COMMON CODE SECTION BEGINS HERE ***
182380 
182381  public:
182382 
182383  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
182384  // and not required which is required to match the other aspects of the copy mechanism code generation.
182385  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
182386  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
182387  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
182388  // virtual SgNode* copy ( const SgCopyHelp & help) const;
182389 
182391  virtual std::string class_name() const override;
182392 
182394  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
182395 
182397  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
182398  // static const VariantT static_variant = V_SgWriteStatement;
182399  enum { static_variant = V_SgWriteStatement };
182400 
182401  /* the generated cast function */
182403  ROSE_DLL_API friend SgWriteStatement* isSgWriteStatement( SgNode * s );
182404 
182406  ROSE_DLL_API friend const SgWriteStatement* isSgWriteStatement( const SgNode * s );
182407 
182408  // ******************************************
182409  // * Memory Pool / New / Delete
182410  // ******************************************
182411 
182412  public:
182414  static const unsigned pool_size; //
182416  static std::vector<unsigned char *> pools; //
182418  static SgWriteStatement * next_node; //
182419 
182421  static unsigned long initializeStorageClassArray(SgWriteStatementStorageClass *); //
182422 
182424  static void clearMemoryPool(); //
182425  static void deleteMemoryPool(); //
182426 
182428  static void extendMemoryPoolForFileIO(); //
182429 
182431  static SgWriteStatement * getPointerFromGlobalIndex(unsigned long); //
182433  static SgWriteStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
182434 
182436  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
182438  static void resetValidFreepointers(); //
182440  static unsigned long getNumberOfLastValidPointer(); //
182441 
182442 
182443 #if defined(INLINE_FUNCTIONS)
182444 
182445  inline void *operator new (size_t size);
182446 #else
182447 
182448  void *operator new (size_t size);
182449 #endif
182450 
182451  void operator delete (void* pointer, size_t size);
182452 
182453  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
182454  void operator delete (void* pointer)
182455  {
182456  // This is the generated delete operator...
182457  SgWriteStatement::operator delete (pointer,sizeof(SgWriteStatement));
182458  }
182459 
182461  static size_t numberOfNodes();
182462 
182464  static size_t memoryUsage();
182465 
182466  // End of scope which started in IR nodes specific code
182467  /* */
182468 
182469  /* name Internal Functions
182470  \brief Internal functions ... incomplete-documentation
182471 
182472  These functions have been made public as part of the design, but they are suggested for internal use
182473  or by particularly knowledgeable users for specialized tools or applications.
182474 
182475  \internal We could not make these private because they are required by user for special purposes. And
182476  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
182477 
182478  */
182479 
182480  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
182481  // overridden in every class by *generated* implementation
182483  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
182484  // MS: 06/28/02 container of names of variables or container indices
182485  // used used in the traversal to access AST successor nodes
182486  // overridden in every class by *generated* implementation
182489  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
182490 
182491  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
182492  // than all the vector copies. The implementation for these functions is generated for each class.
182494  virtual size_t get_numberOfTraversalSuccessors() override;
182496  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
182498  virtual size_t get_childIndex(SgNode *child) override;
182499 
182500 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
182501  // MS: 08/16/2002 method for generating RTI information
182503  virtual RTIReturnType roseRTI() override;
182504 #endif
182505  /* */
182506 
182507 
182508 
182509  /* name Deprecated Functions
182510  \brief Deprecated functions ... incomplete-documentation
182511 
182512  These functions have been deprecated from use.
182513  */
182514  /* */
182515 
182517  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
182518 
182519  // JJW (10/16/2008): Changed to a single function in Node.code, and put
182520  // getVariant() in #if 0 block to prevent confusing Doxygen
182521 #if 0
182522 
182523  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
182525  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
182526 #endif
182527  /* */
182528 
182529 
182530 
182531 
182532  public:
182533  /* name Traversal Support Functions
182534  \brief Traversal support functions ... incomplete-documentation
182535 
182536  These functions have been made public as part of the design, but they are suggested for internal use
182537  or by particularly knowledgable users for specialized tools or applications.
182538  */
182539  /* */
182540 
182541  // DQ (11/26/2005): Support for visitor pattern mechanims
182542  // (inferior to ROSE traversal mechanism, experimental).
182546 
182547  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
182549  virtual void accept (ROSE_VisitorPattern & visitor) override;
182550 
182551  // DQ (12/26/2005): Support for traversal based on the memory pool
182554  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
182555 
182558  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
182559 
182560  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
182561  // This traversal helps support internal tools that call static member functions.
182562  // note: this function operates on the memory pools.
182565  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
182566  /* */
182567 
182568 
182569  public:
182570  /* name Memory Allocation Functions
182571  \brief Memory allocations functions ... incomplete-documentation
182572 
182573  These functions have been made public as part of the design, but they are suggested for internal use
182574  or by particularly knowledgable users for specialized tools or applications.
182575  */
182576  /* */
182577 
182588  virtual bool isInMemoryPool() override;
182589 
182600  virtual void checkDataMemberPointersIfInMemoryPool() override;
182601 
182602  // DQ (4/30/2006): Modified to be a const function.
182617  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
182618 
182628  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
182629 
182641  virtual long getChildIndex( SgNode* childNode ) const override;
182642 
182643  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
182644  // comment here (changed to be a C style comment and not be a doxygen comment).
182645  /* \brief Constructor for use by AST File I/O Mechanism
182646 
182647  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
182648  which obtained via fast binary file I/O from disk.
182649  */
182650  // SgWriteStatement( SgWriteStatementStorageClass& source );
182651 
182652 
182653 
182654 
182655 
182656  // JH (10/24/2005): methods added to support the ast file IO
182657  private:
182658 
182659  /* name AST Memory Allocation Support Functions
182660  \brief Memory allocations support....
182661 
182662  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
182663  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
182664  and support the AST File I/O Mechanism.
182665  */
182666  /* */
182667 
182668  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
182669  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
182670  that I use the same type everywhere, if any changes are made. THe second one declares the type
182671  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
182672  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
182673  a correspinding one in the AST_FILE_IO class!
182674  */
182675  // DQ (9/2/2015): This typedef is no longer used, we can't define the
182676  // comment here (changed to be a C style comment and not be a doxygen comment).
182677  /* \brief Typedef used for low level memory access.
182678  */
182679  // typedef unsigned char* TestType;
182680 
182681  // DQ (9/2/2015): This typedef is no longer used, we can't define the
182682  // comment here (changed to be a C style comment and not be a doxygen comment).
182683  /* \brief Typedef used to hold memory addresses as values.
182684  */
182685  // typedef unsigned long AddressType;
182686 
182687 
182688 
182689  // necessary, to have direct access to the p_freepointer and the private methods !
182691  friend class AST_FILE_IO;
182692 
182694  friend class SgWriteStatementStorageClass;
182695 
182697  friend class AstSpecificDataManagingClass;
182698 
182700  friend class AstSpecificDataManagingClassStorageClass;
182701 
182702  public:
182704  SgWriteStatement( const SgWriteStatementStorageClass& source );
182705 
182706  // private: // JJW hack
182707  /*
182708  name AST Memory Allocation Support Variables
182709  Memory allocations support variables
182710 
182711  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
182712  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
182713  and support the AST File I/O Mechanism.
182714  */
182715  /* */
182716 
182717  public:
182718 
182719  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
182720  // to current node (so that it will work cleanly with build functions to specify patterns).
182721  // virtual SgNode* addRegExpAttribute();
182728 
182729 // *** COMMON CODE SECTION ENDS HERE ***
182730 
182731 
182732 // End of memberFunctionString
182733 // Start of memberFunctionString
182734 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
182735 
182736  // the generated cast function
182737  // friend ROSE_DLL_API SgWriteStatement* isSgWriteStatement ( SgNode* s );
182738 
182739  typedef SgIOStatement base_node_type;
182740 
182741 
182742 // End of memberFunctionString
182743 // Start of memberFunctionString
182744 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
182745 
182746  void post_construction_initialization() override;
182747 
182748 
182749 // End of memberFunctionString
182750 
182751  public:
182752  SgExpression* get_format() const;
182753  void set_format(SgExpression* format);
182754 
182755  public:
182756  SgExpression* get_namelist() const;
182757  void set_namelist(SgExpression* namelist);
182758 
182759  public:
182760  SgExpression* get_advance() const;
182761  void set_advance(SgExpression* advance);
182762 
182763  public:
182764  SgExpression* get_asynchronous() const;
182765  void set_asynchronous(SgExpression* asynchronous);
182766 
182767  public:
182768  SgExpression* get_blank() const;
182769  void set_blank(SgExpression* blank);
182770 
182771  public:
182772  SgExpression* get_decimal() const;
182773  void set_decimal(SgExpression* decimal);
182774 
182775  public:
182776  SgExpression* get_delim() const;
182777  void set_delim(SgExpression* delim);
182778 
182779  public:
182780  SgExpression* get_end() const;
182781  void set_end(SgExpression* end);
182782 
182783  public:
182784  SgExpression* get_eor() const;
182785  void set_eor(SgExpression* eor);
182786 
182787  public:
182788  SgExpression* get_id() const;
182789  void set_id(SgExpression* id);
182790 
182791  public:
182792  SgExpression* get_pad() const;
182793  void set_pad(SgExpression* pad);
182794 
182795  public:
182796  SgExpression* get_pos() const;
182797  void set_pos(SgExpression* pos);
182798 
182799  public:
182800  SgExpression* get_rec() const;
182801  void set_rec(SgExpression* rec);
182802 
182803  public:
182804  SgExpression* get_round() const;
182805  void set_round(SgExpression* round);
182806 
182807  public:
182808  SgExpression* get_sign() const;
182809  void set_sign(SgExpression* sign);
182810 
182811  public:
182812  SgExpression* get_size() const;
182813  void set_size(SgExpression* size);
182814 
182815 
182816  public:
182817  virtual ~SgWriteStatement();
182818 
182819 
182820  public:
182821  SgWriteStatement(Sg_File_Info* startOfConstruct );
182822  SgWriteStatement();
182823 
182824  protected:
182825 // Start of memberFunctionString
182826 SgExpression* p_format;
182827 
182828 // End of memberFunctionString
182829 // Start of memberFunctionString
182830 SgExpression* p_namelist;
182831 
182832 // End of memberFunctionString
182833 // Start of memberFunctionString
182834 SgExpression* p_advance;
182835 
182836 // End of memberFunctionString
182837 // Start of memberFunctionString
182838 SgExpression* p_asynchronous;
182839 
182840 // End of memberFunctionString
182841 // Start of memberFunctionString
182842 SgExpression* p_blank;
182843 
182844 // End of memberFunctionString
182845 // Start of memberFunctionString
182846 SgExpression* p_decimal;
182847 
182848 // End of memberFunctionString
182849 // Start of memberFunctionString
182850 SgExpression* p_delim;
182851 
182852 // End of memberFunctionString
182853 // Start of memberFunctionString
182854 SgExpression* p_end;
182855 
182856 // End of memberFunctionString
182857 // Start of memberFunctionString
182858 SgExpression* p_eor;
182859 
182860 // End of memberFunctionString
182861 // Start of memberFunctionString
182862 SgExpression* p_id;
182863 
182864 // End of memberFunctionString
182865 // Start of memberFunctionString
182866 SgExpression* p_pad;
182867 
182868 // End of memberFunctionString
182869 // Start of memberFunctionString
182870 SgExpression* p_pos;
182871 
182872 // End of memberFunctionString
182873 // Start of memberFunctionString
182874 SgExpression* p_rec;
182875 
182876 // End of memberFunctionString
182877 // Start of memberFunctionString
182878 SgExpression* p_round;
182879 
182880 // End of memberFunctionString
182881 // Start of memberFunctionString
182882 SgExpression* p_sign;
182883 
182884 // End of memberFunctionString
182885 // Start of memberFunctionString
182886 SgExpression* p_size;
182887 
182888 // End of memberFunctionString
182889 
182890 
182891 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
182892 
182893 
182894  };
182895 #endif
182896 
182897 // postdeclarations for SgWriteStatement
182898 
182899 /* #line 182900 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
182900 
182901 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
182902 
182903 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
182904 
182905 
182906 /* #line 182907 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
182907 
182908 
182909 
182910 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
182911 
182912 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
182913 // This code is automatically generated for each
182914 // terminal and non-terminal within the defined
182915 // grammar. There is a simple way to change the
182916 // code to fix bugs etc. See the ROSE README file
182917 // for directions.
182918 
182919 // tps: (02/22/2010): Adding DLL export requirements
182920 #include "rosedll.h"
182921 
182922 // predeclarations for SgOpenStatement
182923 
182924 /* #line 182925 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
182925 
182926 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
182927 
182928 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
182929 
182930 #if 1
182931 // Class Definition for SgOpenStatement
182932 class ROSE_DLL_API SgOpenStatement : public SgIOStatement
182933  {
182934  public:
182935 
182936 
182937 /* #line 182938 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
182938 
182939  virtual SgNode* copy ( SgCopyHelp& help) const override;
182940 // Start of memberFunctionString
182941 /* #line 3552 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
182942 
182943 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
182944  virtual unsigned int cfgIndexForEnd() const override;
182945  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
182946  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
182947 #endif
182948 
182949 
182950 // End of memberFunctionString
182951 // Start of memberFunctionString
182952 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
182953 
182954 // *** COMMON CODE SECTION BEGINS HERE ***
182955 
182956  public:
182957 
182958  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
182959  // and not required which is required to match the other aspects of the copy mechanism code generation.
182960  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
182961  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
182962  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
182963  // virtual SgNode* copy ( const SgCopyHelp & help) const;
182964 
182966  virtual std::string class_name() const override;
182967 
182969  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
182970 
182972  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
182973  // static const VariantT static_variant = V_SgOpenStatement;
182974  enum { static_variant = V_SgOpenStatement };
182975 
182976  /* the generated cast function */
182978  ROSE_DLL_API friend SgOpenStatement* isSgOpenStatement( SgNode * s );
182979 
182981  ROSE_DLL_API friend const SgOpenStatement* isSgOpenStatement( const SgNode * s );
182982 
182983  // ******************************************
182984  // * Memory Pool / New / Delete
182985  // ******************************************
182986 
182987  public:
182989  static const unsigned pool_size; //
182991  static std::vector<unsigned char *> pools; //
182993  static SgOpenStatement * next_node; //
182994 
182996  static unsigned long initializeStorageClassArray(SgOpenStatementStorageClass *); //
182997 
182999  static void clearMemoryPool(); //
183000  static void deleteMemoryPool(); //
183001 
183003  static void extendMemoryPoolForFileIO(); //
183004 
183006  static SgOpenStatement * getPointerFromGlobalIndex(unsigned long); //
183008  static SgOpenStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
183009 
183011  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
183013  static void resetValidFreepointers(); //
183015  static unsigned long getNumberOfLastValidPointer(); //
183016 
183017 
183018 #if defined(INLINE_FUNCTIONS)
183019 
183020  inline void *operator new (size_t size);
183021 #else
183022 
183023  void *operator new (size_t size);
183024 #endif
183025 
183026  void operator delete (void* pointer, size_t size);
183027 
183028  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
183029  void operator delete (void* pointer)
183030  {
183031  // This is the generated delete operator...
183032  SgOpenStatement::operator delete (pointer,sizeof(SgOpenStatement));
183033  }
183034 
183036  static size_t numberOfNodes();
183037 
183039  static size_t memoryUsage();
183040 
183041  // End of scope which started in IR nodes specific code
183042  /* */
183043 
183044  /* name Internal Functions
183045  \brief Internal functions ... incomplete-documentation
183046 
183047  These functions have been made public as part of the design, but they are suggested for internal use
183048  or by particularly knowledgeable users for specialized tools or applications.
183049 
183050  \internal We could not make these private because they are required by user for special purposes. And
183051  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
183052 
183053  */
183054 
183055  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
183056  // overridden in every class by *generated* implementation
183058  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
183059  // MS: 06/28/02 container of names of variables or container indices
183060  // used used in the traversal to access AST successor nodes
183061  // overridden in every class by *generated* implementation
183064  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
183065 
183066  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
183067  // than all the vector copies. The implementation for these functions is generated for each class.
183069  virtual size_t get_numberOfTraversalSuccessors() override;
183071  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
183073  virtual size_t get_childIndex(SgNode *child) override;
183074 
183075 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
183076  // MS: 08/16/2002 method for generating RTI information
183078  virtual RTIReturnType roseRTI() override;
183079 #endif
183080  /* */
183081 
183082 
183083 
183084  /* name Deprecated Functions
183085  \brief Deprecated functions ... incomplete-documentation
183086 
183087  These functions have been deprecated from use.
183088  */
183089  /* */
183090 
183092  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
183093 
183094  // JJW (10/16/2008): Changed to a single function in Node.code, and put
183095  // getVariant() in #if 0 block to prevent confusing Doxygen
183096 #if 0
183097 
183098  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
183100  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
183101 #endif
183102  /* */
183103 
183104 
183105 
183106 
183107  public:
183108  /* name Traversal Support Functions
183109  \brief Traversal support functions ... incomplete-documentation
183110 
183111  These functions have been made public as part of the design, but they are suggested for internal use
183112  or by particularly knowledgable users for specialized tools or applications.
183113  */
183114  /* */
183115 
183116  // DQ (11/26/2005): Support for visitor pattern mechanims
183117  // (inferior to ROSE traversal mechanism, experimental).
183121 
183122  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
183124  virtual void accept (ROSE_VisitorPattern & visitor) override;
183125 
183126  // DQ (12/26/2005): Support for traversal based on the memory pool
183129  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
183130 
183133  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
183134 
183135  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
183136  // This traversal helps support internal tools that call static member functions.
183137  // note: this function operates on the memory pools.
183140  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
183141  /* */
183142 
183143 
183144  public:
183145  /* name Memory Allocation Functions
183146  \brief Memory allocations functions ... incomplete-documentation
183147 
183148  These functions have been made public as part of the design, but they are suggested for internal use
183149  or by particularly knowledgable users for specialized tools or applications.
183150  */
183151  /* */
183152 
183163  virtual bool isInMemoryPool() override;
183164 
183175  virtual void checkDataMemberPointersIfInMemoryPool() override;
183176 
183177  // DQ (4/30/2006): Modified to be a const function.
183192  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
183193 
183203  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
183204 
183216  virtual long getChildIndex( SgNode* childNode ) const override;
183217 
183218  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
183219  // comment here (changed to be a C style comment and not be a doxygen comment).
183220  /* \brief Constructor for use by AST File I/O Mechanism
183221 
183222  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
183223  which obtained via fast binary file I/O from disk.
183224  */
183225  // SgOpenStatement( SgOpenStatementStorageClass& source );
183226 
183227 
183228 
183229 
183230 
183231  // JH (10/24/2005): methods added to support the ast file IO
183232  private:
183233 
183234  /* name AST Memory Allocation Support Functions
183235  \brief Memory allocations support....
183236 
183237  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
183238  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
183239  and support the AST File I/O Mechanism.
183240  */
183241  /* */
183242 
183243  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
183244  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
183245  that I use the same type everywhere, if any changes are made. THe second one declares the type
183246  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
183247  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
183248  a correspinding one in the AST_FILE_IO class!
183249  */
183250  // DQ (9/2/2015): This typedef is no longer used, we can't define the
183251  // comment here (changed to be a C style comment and not be a doxygen comment).
183252  /* \brief Typedef used for low level memory access.
183253  */
183254  // typedef unsigned char* TestType;
183255 
183256  // DQ (9/2/2015): This typedef is no longer used, we can't define the
183257  // comment here (changed to be a C style comment and not be a doxygen comment).
183258  /* \brief Typedef used to hold memory addresses as values.
183259  */
183260  // typedef unsigned long AddressType;
183261 
183262 
183263 
183264  // necessary, to have direct access to the p_freepointer and the private methods !
183266  friend class AST_FILE_IO;
183267 
183269  friend class SgOpenStatementStorageClass;
183270 
183272  friend class AstSpecificDataManagingClass;
183273 
183275  friend class AstSpecificDataManagingClassStorageClass;
183276 
183277  public:
183279  SgOpenStatement( const SgOpenStatementStorageClass& source );
183280 
183281  // private: // JJW hack
183282  /*
183283  name AST Memory Allocation Support Variables
183284  Memory allocations support variables
183285 
183286  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
183287  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
183288  and support the AST File I/O Mechanism.
183289  */
183290  /* */
183291 
183292  public:
183293 
183294  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
183295  // to current node (so that it will work cleanly with build functions to specify patterns).
183296  // virtual SgNode* addRegExpAttribute();
183303 
183304 // *** COMMON CODE SECTION ENDS HERE ***
183305 
183306 
183307 // End of memberFunctionString
183308 // Start of memberFunctionString
183309 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
183310 
183311  // the generated cast function
183312  // friend ROSE_DLL_API SgOpenStatement* isSgOpenStatement ( SgNode* s );
183313 
183314  typedef SgIOStatement base_node_type;
183315 
183316 
183317 // End of memberFunctionString
183318 // Start of memberFunctionString
183319 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
183320 
183321  void post_construction_initialization() override;
183322 
183323 
183324 // End of memberFunctionString
183325 
183326  public:
183327  SgExpression* get_file() const;
183328  void set_file(SgExpression* file);
183329 
183330  public:
183331  SgExpression* get_status() const;
183332  void set_status(SgExpression* status);
183333 
183334  public:
183335  SgExpression* get_access() const;
183336  void set_access(SgExpression* access);
183337 
183338  public:
183339  SgExpression* get_form() const;
183340  void set_form(SgExpression* form);
183341 
183342  public:
183343  SgExpression* get_recl() const;
183344  void set_recl(SgExpression* recl);
183345 
183346  public:
183347  SgExpression* get_blank() const;
183348  void set_blank(SgExpression* blank);
183349 
183350  public:
183351  SgExpression* get_position() const;
183352  void set_position(SgExpression* position);
183353 
183354  public:
183355  SgExpression* get_action() const;
183356  void set_action(SgExpression* action);
183357 
183358  public:
183359  SgExpression* get_delim() const;
183360  void set_delim(SgExpression* delim);
183361 
183362  public:
183363  SgExpression* get_pad() const;
183364  void set_pad(SgExpression* pad);
183365 
183366  public:
183367  SgExpression* get_round() const;
183368  void set_round(SgExpression* round);
183369 
183370  public:
183371  SgExpression* get_sign() const;
183372  void set_sign(SgExpression* sign);
183373 
183374  public:
183375  SgExpression* get_asynchronous() const;
183376  void set_asynchronous(SgExpression* asynchronous);
183377 
183378 
183379  public:
183380  virtual ~SgOpenStatement();
183381 
183382 
183383  public:
183384  SgOpenStatement(Sg_File_Info* startOfConstruct );
183385  SgOpenStatement();
183386 
183387  protected:
183388 // Start of memberFunctionString
183389 SgExpression* p_file;
183390 
183391 // End of memberFunctionString
183392 // Start of memberFunctionString
183393 SgExpression* p_status;
183394 
183395 // End of memberFunctionString
183396 // Start of memberFunctionString
183397 SgExpression* p_access;
183398 
183399 // End of memberFunctionString
183400 // Start of memberFunctionString
183401 SgExpression* p_form;
183402 
183403 // End of memberFunctionString
183404 // Start of memberFunctionString
183405 SgExpression* p_recl;
183406 
183407 // End of memberFunctionString
183408 // Start of memberFunctionString
183409 SgExpression* p_blank;
183410 
183411 // End of memberFunctionString
183412 // Start of memberFunctionString
183413 SgExpression* p_position;
183414 
183415 // End of memberFunctionString
183416 // Start of memberFunctionString
183417 SgExpression* p_action;
183418 
183419 // End of memberFunctionString
183420 // Start of memberFunctionString
183421 SgExpression* p_delim;
183422 
183423 // End of memberFunctionString
183424 // Start of memberFunctionString
183425 SgExpression* p_pad;
183426 
183427 // End of memberFunctionString
183428 // Start of memberFunctionString
183429 SgExpression* p_round;
183430 
183431 // End of memberFunctionString
183432 // Start of memberFunctionString
183433 SgExpression* p_sign;
183434 
183435 // End of memberFunctionString
183436 // Start of memberFunctionString
183437 SgExpression* p_asynchronous;
183438 
183439 // End of memberFunctionString
183440 
183441 
183442 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
183443 
183444 
183445  };
183446 #endif
183447 
183448 // postdeclarations for SgOpenStatement
183449 
183450 /* #line 183451 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
183451 
183452 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
183453 
183454 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
183455 
183456 
183457 /* #line 183458 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
183458 
183459 
183460 
183461 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
183462 
183463 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
183464 // This code is automatically generated for each
183465 // terminal and non-terminal within the defined
183466 // grammar. There is a simple way to change the
183467 // code to fix bugs etc. See the ROSE README file
183468 // for directions.
183469 
183470 // tps: (02/22/2010): Adding DLL export requirements
183471 #include "rosedll.h"
183472 
183473 // predeclarations for SgCloseStatement
183474 
183475 /* #line 183476 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
183476 
183477 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
183478 
183479 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
183480 
183481 #if 1
183482 // Class Definition for SgCloseStatement
183483 class ROSE_DLL_API SgCloseStatement : public SgIOStatement
183484  {
183485  public:
183486 
183487 
183488 /* #line 183489 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
183489 
183490  virtual SgNode* copy ( SgCopyHelp& help) const override;
183491 // Start of memberFunctionString
183492 /* #line 3560 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
183493 
183494 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
183495  virtual unsigned int cfgIndexForEnd() const override;
183496  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
183497  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
183498 #endif
183499 
183500 
183501 // End of memberFunctionString
183502 // Start of memberFunctionString
183503 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
183504 
183505 // *** COMMON CODE SECTION BEGINS HERE ***
183506 
183507  public:
183508 
183509  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
183510  // and not required which is required to match the other aspects of the copy mechanism code generation.
183511  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
183512  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
183513  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
183514  // virtual SgNode* copy ( const SgCopyHelp & help) const;
183515 
183517  virtual std::string class_name() const override;
183518 
183520  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
183521 
183523  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
183524  // static const VariantT static_variant = V_SgCloseStatement;
183525  enum { static_variant = V_SgCloseStatement };
183526 
183527  /* the generated cast function */
183529  ROSE_DLL_API friend SgCloseStatement* isSgCloseStatement( SgNode * s );
183530 
183532  ROSE_DLL_API friend const SgCloseStatement* isSgCloseStatement( const SgNode * s );
183533 
183534  // ******************************************
183535  // * Memory Pool / New / Delete
183536  // ******************************************
183537 
183538  public:
183540  static const unsigned pool_size; //
183542  static std::vector<unsigned char *> pools; //
183544  static SgCloseStatement * next_node; //
183545 
183547  static unsigned long initializeStorageClassArray(SgCloseStatementStorageClass *); //
183548 
183550  static void clearMemoryPool(); //
183551  static void deleteMemoryPool(); //
183552 
183554  static void extendMemoryPoolForFileIO(); //
183555 
183557  static SgCloseStatement * getPointerFromGlobalIndex(unsigned long); //
183559  static SgCloseStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
183560 
183562  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
183564  static void resetValidFreepointers(); //
183566  static unsigned long getNumberOfLastValidPointer(); //
183567 
183568 
183569 #if defined(INLINE_FUNCTIONS)
183570 
183571  inline void *operator new (size_t size);
183572 #else
183573 
183574  void *operator new (size_t size);
183575 #endif
183576 
183577  void operator delete (void* pointer, size_t size);
183578 
183579  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
183580  void operator delete (void* pointer)
183581  {
183582  // This is the generated delete operator...
183583  SgCloseStatement::operator delete (pointer,sizeof(SgCloseStatement));
183584  }
183585 
183587  static size_t numberOfNodes();
183588 
183590  static size_t memoryUsage();
183591 
183592  // End of scope which started in IR nodes specific code
183593  /* */
183594 
183595  /* name Internal Functions
183596  \brief Internal functions ... incomplete-documentation
183597 
183598  These functions have been made public as part of the design, but they are suggested for internal use
183599  or by particularly knowledgeable users for specialized tools or applications.
183600 
183601  \internal We could not make these private because they are required by user for special purposes. And
183602  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
183603 
183604  */
183605 
183606  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
183607  // overridden in every class by *generated* implementation
183609  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
183610  // MS: 06/28/02 container of names of variables or container indices
183611  // used used in the traversal to access AST successor nodes
183612  // overridden in every class by *generated* implementation
183615  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
183616 
183617  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
183618  // than all the vector copies. The implementation for these functions is generated for each class.
183620  virtual size_t get_numberOfTraversalSuccessors() override;
183622  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
183624  virtual size_t get_childIndex(SgNode *child) override;
183625 
183626 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
183627  // MS: 08/16/2002 method for generating RTI information
183629  virtual RTIReturnType roseRTI() override;
183630 #endif
183631  /* */
183632 
183633 
183634 
183635  /* name Deprecated Functions
183636  \brief Deprecated functions ... incomplete-documentation
183637 
183638  These functions have been deprecated from use.
183639  */
183640  /* */
183641 
183643  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
183644 
183645  // JJW (10/16/2008): Changed to a single function in Node.code, and put
183646  // getVariant() in #if 0 block to prevent confusing Doxygen
183647 #if 0
183648 
183649  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
183651  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
183652 #endif
183653  /* */
183654 
183655 
183656 
183657 
183658  public:
183659  /* name Traversal Support Functions
183660  \brief Traversal support functions ... incomplete-documentation
183661 
183662  These functions have been made public as part of the design, but they are suggested for internal use
183663  or by particularly knowledgable users for specialized tools or applications.
183664  */
183665  /* */
183666 
183667  // DQ (11/26/2005): Support for visitor pattern mechanims
183668  // (inferior to ROSE traversal mechanism, experimental).
183672 
183673  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
183675  virtual void accept (ROSE_VisitorPattern & visitor) override;
183676 
183677  // DQ (12/26/2005): Support for traversal based on the memory pool
183680  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
183681 
183684  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
183685 
183686  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
183687  // This traversal helps support internal tools that call static member functions.
183688  // note: this function operates on the memory pools.
183691  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
183692  /* */
183693 
183694 
183695  public:
183696  /* name Memory Allocation Functions
183697  \brief Memory allocations functions ... incomplete-documentation
183698 
183699  These functions have been made public as part of the design, but they are suggested for internal use
183700  or by particularly knowledgable users for specialized tools or applications.
183701  */
183702  /* */
183703 
183714  virtual bool isInMemoryPool() override;
183715 
183726  virtual void checkDataMemberPointersIfInMemoryPool() override;
183727 
183728  // DQ (4/30/2006): Modified to be a const function.
183743  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
183744 
183754  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
183755 
183767  virtual long getChildIndex( SgNode* childNode ) const override;
183768 
183769  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
183770  // comment here (changed to be a C style comment and not be a doxygen comment).
183771  /* \brief Constructor for use by AST File I/O Mechanism
183772 
183773  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
183774  which obtained via fast binary file I/O from disk.
183775  */
183776  // SgCloseStatement( SgCloseStatementStorageClass& source );
183777 
183778 
183779 
183780 
183781 
183782  // JH (10/24/2005): methods added to support the ast file IO
183783  private:
183784 
183785  /* name AST Memory Allocation Support Functions
183786  \brief Memory allocations support....
183787 
183788  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
183789  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
183790  and support the AST File I/O Mechanism.
183791  */
183792  /* */
183793 
183794  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
183795  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
183796  that I use the same type everywhere, if any changes are made. THe second one declares the type
183797  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
183798  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
183799  a correspinding one in the AST_FILE_IO class!
183800  */
183801  // DQ (9/2/2015): This typedef is no longer used, we can't define the
183802  // comment here (changed to be a C style comment and not be a doxygen comment).
183803  /* \brief Typedef used for low level memory access.
183804  */
183805  // typedef unsigned char* TestType;
183806 
183807  // DQ (9/2/2015): This typedef is no longer used, we can't define the
183808  // comment here (changed to be a C style comment and not be a doxygen comment).
183809  /* \brief Typedef used to hold memory addresses as values.
183810  */
183811  // typedef unsigned long AddressType;
183812 
183813 
183814 
183815  // necessary, to have direct access to the p_freepointer and the private methods !
183817  friend class AST_FILE_IO;
183818 
183820  friend class SgCloseStatementStorageClass;
183821 
183823  friend class AstSpecificDataManagingClass;
183824 
183826  friend class AstSpecificDataManagingClassStorageClass;
183827 
183828  public:
183830  SgCloseStatement( const SgCloseStatementStorageClass& source );
183831 
183832  // private: // JJW hack
183833  /*
183834  name AST Memory Allocation Support Variables
183835  Memory allocations support variables
183836 
183837  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
183838  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
183839  and support the AST File I/O Mechanism.
183840  */
183841  /* */
183842 
183843  public:
183844 
183845  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
183846  // to current node (so that it will work cleanly with build functions to specify patterns).
183847  // virtual SgNode* addRegExpAttribute();
183854 
183855 // *** COMMON CODE SECTION ENDS HERE ***
183856 
183857 
183858 // End of memberFunctionString
183859 // Start of memberFunctionString
183860 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
183861 
183862  // the generated cast function
183863  // friend ROSE_DLL_API SgCloseStatement* isSgCloseStatement ( SgNode* s );
183864 
183865  typedef SgIOStatement base_node_type;
183866 
183867 
183868 // End of memberFunctionString
183869 // Start of memberFunctionString
183870 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
183871 
183872  void post_construction_initialization() override;
183873 
183874 
183875 // End of memberFunctionString
183876 
183877  public:
183878  SgExpression* get_status() const;
183879  void set_status(SgExpression* status);
183880 
183881 
183882  public:
183883  virtual ~SgCloseStatement();
183884 
183885 
183886  public:
183887  SgCloseStatement(Sg_File_Info* startOfConstruct );
183888  SgCloseStatement();
183889 
183890  protected:
183891 // Start of memberFunctionString
183892 SgExpression* p_status;
183893 
183894 // End of memberFunctionString
183895 
183896 
183897 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
183898 
183899 
183900  };
183901 #endif
183902 
183903 // postdeclarations for SgCloseStatement
183904 
183905 /* #line 183906 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
183906 
183907 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
183908 
183909 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
183910 
183911 
183912 /* #line 183913 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
183913 
183914 
183915 
183916 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
183917 
183918 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
183919 // This code is automatically generated for each
183920 // terminal and non-terminal within the defined
183921 // grammar. There is a simple way to change the
183922 // code to fix bugs etc. See the ROSE README file
183923 // for directions.
183924 
183925 // tps: (02/22/2010): Adding DLL export requirements
183926 #include "rosedll.h"
183927 
183928 // predeclarations for SgInquireStatement
183929 
183930 /* #line 183931 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
183931 
183932 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
183933 
183934 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
183935 
183936 #if 1
183937 // Class Definition for SgInquireStatement
183938 class ROSE_DLL_API SgInquireStatement : public SgIOStatement
183939  {
183940  public:
183941 
183942 
183943 /* #line 183944 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
183944 
183945  virtual SgNode* copy ( SgCopyHelp& help) const override;
183946 // Start of memberFunctionString
183947 /* #line 3568 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
183948 
183949 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
183950  virtual unsigned int cfgIndexForEnd() const override;
183951  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
183952  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
183953 #endif
183954 
183955 
183956 // End of memberFunctionString
183957 // Start of memberFunctionString
183958 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
183959 
183960 // *** COMMON CODE SECTION BEGINS HERE ***
183961 
183962  public:
183963 
183964  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
183965  // and not required which is required to match the other aspects of the copy mechanism code generation.
183966  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
183967  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
183968  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
183969  // virtual SgNode* copy ( const SgCopyHelp & help) const;
183970 
183972  virtual std::string class_name() const override;
183973 
183975  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
183976 
183978  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
183979  // static const VariantT static_variant = V_SgInquireStatement;
183980  enum { static_variant = V_SgInquireStatement };
183981 
183982  /* the generated cast function */
183984  ROSE_DLL_API friend SgInquireStatement* isSgInquireStatement( SgNode * s );
183985 
183987  ROSE_DLL_API friend const SgInquireStatement* isSgInquireStatement( const SgNode * s );
183988 
183989  // ******************************************
183990  // * Memory Pool / New / Delete
183991  // ******************************************
183992 
183993  public:
183995  static const unsigned pool_size; //
183997  static std::vector<unsigned char *> pools; //
183999  static SgInquireStatement * next_node; //
184000 
184002  static unsigned long initializeStorageClassArray(SgInquireStatementStorageClass *); //
184003 
184005  static void clearMemoryPool(); //
184006  static void deleteMemoryPool(); //
184007 
184009  static void extendMemoryPoolForFileIO(); //
184010 
184012  static SgInquireStatement * getPointerFromGlobalIndex(unsigned long); //
184014  static SgInquireStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
184015 
184017  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
184019  static void resetValidFreepointers(); //
184021  static unsigned long getNumberOfLastValidPointer(); //
184022 
184023 
184024 #if defined(INLINE_FUNCTIONS)
184025 
184026  inline void *operator new (size_t size);
184027 #else
184028 
184029  void *operator new (size_t size);
184030 #endif
184031 
184032  void operator delete (void* pointer, size_t size);
184033 
184034  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
184035  void operator delete (void* pointer)
184036  {
184037  // This is the generated delete operator...
184038  SgInquireStatement::operator delete (pointer,sizeof(SgInquireStatement));
184039  }
184040 
184042  static size_t numberOfNodes();
184043 
184045  static size_t memoryUsage();
184046 
184047  // End of scope which started in IR nodes specific code
184048  /* */
184049 
184050  /* name Internal Functions
184051  \brief Internal functions ... incomplete-documentation
184052 
184053  These functions have been made public as part of the design, but they are suggested for internal use
184054  or by particularly knowledgeable users for specialized tools or applications.
184055 
184056  \internal We could not make these private because they are required by user for special purposes. And
184057  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
184058 
184059  */
184060 
184061  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
184062  // overridden in every class by *generated* implementation
184064  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
184065  // MS: 06/28/02 container of names of variables or container indices
184066  // used used in the traversal to access AST successor nodes
184067  // overridden in every class by *generated* implementation
184070  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
184071 
184072  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
184073  // than all the vector copies. The implementation for these functions is generated for each class.
184075  virtual size_t get_numberOfTraversalSuccessors() override;
184077  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
184079  virtual size_t get_childIndex(SgNode *child) override;
184080 
184081 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
184082  // MS: 08/16/2002 method for generating RTI information
184084  virtual RTIReturnType roseRTI() override;
184085 #endif
184086  /* */
184087 
184088 
184089 
184090  /* name Deprecated Functions
184091  \brief Deprecated functions ... incomplete-documentation
184092 
184093  These functions have been deprecated from use.
184094  */
184095  /* */
184096 
184098  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
184099 
184100  // JJW (10/16/2008): Changed to a single function in Node.code, and put
184101  // getVariant() in #if 0 block to prevent confusing Doxygen
184102 #if 0
184103 
184104  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
184106  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
184107 #endif
184108  /* */
184109 
184110 
184111 
184112 
184113  public:
184114  /* name Traversal Support Functions
184115  \brief Traversal support functions ... incomplete-documentation
184116 
184117  These functions have been made public as part of the design, but they are suggested for internal use
184118  or by particularly knowledgable users for specialized tools or applications.
184119  */
184120  /* */
184121 
184122  // DQ (11/26/2005): Support for visitor pattern mechanims
184123  // (inferior to ROSE traversal mechanism, experimental).
184127 
184128  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
184130  virtual void accept (ROSE_VisitorPattern & visitor) override;
184131 
184132  // DQ (12/26/2005): Support for traversal based on the memory pool
184135  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
184136 
184139  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
184140 
184141  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
184142  // This traversal helps support internal tools that call static member functions.
184143  // note: this function operates on the memory pools.
184146  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
184147  /* */
184148 
184149 
184150  public:
184151  /* name Memory Allocation Functions
184152  \brief Memory allocations functions ... incomplete-documentation
184153 
184154  These functions have been made public as part of the design, but they are suggested for internal use
184155  or by particularly knowledgable users for specialized tools or applications.
184156  */
184157  /* */
184158 
184169  virtual bool isInMemoryPool() override;
184170 
184181  virtual void checkDataMemberPointersIfInMemoryPool() override;
184182 
184183  // DQ (4/30/2006): Modified to be a const function.
184198  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
184199 
184209  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
184210 
184222  virtual long getChildIndex( SgNode* childNode ) const override;
184223 
184224  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
184225  // comment here (changed to be a C style comment and not be a doxygen comment).
184226  /* \brief Constructor for use by AST File I/O Mechanism
184227 
184228  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
184229  which obtained via fast binary file I/O from disk.
184230  */
184231  // SgInquireStatement( SgInquireStatementStorageClass& source );
184232 
184233 
184234 
184235 
184236 
184237  // JH (10/24/2005): methods added to support the ast file IO
184238  private:
184239 
184240  /* name AST Memory Allocation Support Functions
184241  \brief Memory allocations support....
184242 
184243  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
184244  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
184245  and support the AST File I/O Mechanism.
184246  */
184247  /* */
184248 
184249  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
184250  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
184251  that I use the same type everywhere, if any changes are made. THe second one declares the type
184252  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
184253  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
184254  a correspinding one in the AST_FILE_IO class!
184255  */
184256  // DQ (9/2/2015): This typedef is no longer used, we can't define the
184257  // comment here (changed to be a C style comment and not be a doxygen comment).
184258  /* \brief Typedef used for low level memory access.
184259  */
184260  // typedef unsigned char* TestType;
184261 
184262  // DQ (9/2/2015): This typedef is no longer used, we can't define the
184263  // comment here (changed to be a C style comment and not be a doxygen comment).
184264  /* \brief Typedef used to hold memory addresses as values.
184265  */
184266  // typedef unsigned long AddressType;
184267 
184268 
184269 
184270  // necessary, to have direct access to the p_freepointer and the private methods !
184272  friend class AST_FILE_IO;
184273 
184275  friend class SgInquireStatementStorageClass;
184276 
184278  friend class AstSpecificDataManagingClass;
184279 
184281  friend class AstSpecificDataManagingClassStorageClass;
184282 
184283  public:
184285  SgInquireStatement( const SgInquireStatementStorageClass& source );
184286 
184287  // private: // JJW hack
184288  /*
184289  name AST Memory Allocation Support Variables
184290  Memory allocations support variables
184291 
184292  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
184293  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
184294  and support the AST File I/O Mechanism.
184295  */
184296  /* */
184297 
184298  public:
184299 
184300  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
184301  // to current node (so that it will work cleanly with build functions to specify patterns).
184302  // virtual SgNode* addRegExpAttribute();
184309 
184310 // *** COMMON CODE SECTION ENDS HERE ***
184311 
184312 
184313 // End of memberFunctionString
184314 // Start of memberFunctionString
184315 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
184316 
184317  // the generated cast function
184318  // friend ROSE_DLL_API SgInquireStatement* isSgInquireStatement ( SgNode* s );
184319 
184320  typedef SgIOStatement base_node_type;
184321 
184322 
184323 // End of memberFunctionString
184324 // Start of memberFunctionString
184325 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
184326 
184327  void post_construction_initialization() override;
184328 
184329 
184330 // End of memberFunctionString
184331 
184332  public:
184333  SgExpression* get_file() const;
184334  void set_file(SgExpression* file);
184335 
184336  public:
184337  SgExpression* get_access() const;
184338  void set_access(SgExpression* access);
184339 
184340  public:
184341  SgExpression* get_form() const;
184342  void set_form(SgExpression* form);
184343 
184344  public:
184345  SgExpression* get_recl() const;
184346  void set_recl(SgExpression* recl);
184347 
184348  public:
184349  SgExpression* get_blank() const;
184350  void set_blank(SgExpression* blank);
184351 
184352  public:
184353  SgExpression* get_exist() const;
184354  void set_exist(SgExpression* exist);
184355 
184356  public:
184357  SgExpression* get_opened() const;
184358  void set_opened(SgExpression* opened);
184359 
184360  public:
184361  SgExpression* get_number() const;
184362  void set_number(SgExpression* number);
184363 
184364  public:
184365  SgExpression* get_named() const;
184366  void set_named(SgExpression* named);
184367 
184368  public:
184369  SgExpression* get_name() const /* (getDataAccessFunctionPrototypeString) */;
184370  void set_name(SgExpression* name) /* (getDataAccessFunctionPrototypeString) */;
184371 
184372  public:
184373  SgExpression* get_sequential() const;
184374  void set_sequential(SgExpression* sequential);
184375 
184376  public:
184377  SgExpression* get_direct() const;
184378  void set_direct(SgExpression* direct);
184379 
184380  public:
184381  SgExpression* get_formatted() const;
184382  void set_formatted(SgExpression* formatted);
184383 
184384  public:
184385  SgExpression* get_unformatted() const;
184386  void set_unformatted(SgExpression* unformatted);
184387 
184388  public:
184389  SgExpression* get_nextrec() const;
184390  void set_nextrec(SgExpression* nextrec);
184391 
184392  public:
184393  SgExpression* get_position() const;
184394  void set_position(SgExpression* position);
184395 
184396  public:
184397  SgExpression* get_action() const;
184398  void set_action(SgExpression* action);
184399 
184400  public:
184401  SgExpression* get_read() const;
184402  void set_read(SgExpression* read);
184403 
184404  public:
184405  SgExpression* get_write() const;
184406  void set_write(SgExpression* write);
184407 
184408  public:
184409  SgExpression* get_readwrite() const;
184410  void set_readwrite(SgExpression* readwrite);
184411 
184412  public:
184413  SgExpression* get_delim() const;
184414  void set_delim(SgExpression* delim);
184415 
184416  public:
184417  SgExpression* get_pad() const;
184418  void set_pad(SgExpression* pad);
184419 
184420  public:
184421  SgExpression* get_asynchronous() const;
184422  void set_asynchronous(SgExpression* asynchronous);
184423 
184424  public:
184425  SgExpression* get_decimal() const;
184426  void set_decimal(SgExpression* decimal);
184427 
184428  public:
184429  SgExpression* get_stream() const;
184430  void set_stream(SgExpression* stream);
184431 
184432  public:
184433  SgExpression* get_size() const;
184434  void set_size(SgExpression* size);
184435 
184436  public:
184437  SgExpression* get_pending() const;
184438  void set_pending(SgExpression* pending);
184439 
184440  public:
184441  SgVarRefExp* get_iolengthExp() const;
184442  void set_iolengthExp(SgVarRefExp* iolengthExp);
184443 
184444 
184445  public:
184446  virtual ~SgInquireStatement();
184447 
184448 
184449  public:
184450  SgInquireStatement(Sg_File_Info* startOfConstruct );
184451  SgInquireStatement();
184452 
184453  protected:
184454 // Start of memberFunctionString
184455 SgExpression* p_file;
184456 
184457 // End of memberFunctionString
184458 // Start of memberFunctionString
184459 SgExpression* p_access;
184460 
184461 // End of memberFunctionString
184462 // Start of memberFunctionString
184463 SgExpression* p_form;
184464 
184465 // End of memberFunctionString
184466 // Start of memberFunctionString
184467 SgExpression* p_recl;
184468 
184469 // End of memberFunctionString
184470 // Start of memberFunctionString
184471 SgExpression* p_blank;
184472 
184473 // End of memberFunctionString
184474 // Start of memberFunctionString
184475 SgExpression* p_exist;
184476 
184477 // End of memberFunctionString
184478 // Start of memberFunctionString
184479 SgExpression* p_opened;
184480 
184481 // End of memberFunctionString
184482 // Start of memberFunctionString
184483 SgExpression* p_number;
184484 
184485 // End of memberFunctionString
184486 // Start of memberFunctionString
184487 SgExpression* p_named;
184488 
184489 // End of memberFunctionString
184490 // Start of memberFunctionString
184491 SgExpression* p_name;
184492 
184493 // End of memberFunctionString
184494 // Start of memberFunctionString
184495 SgExpression* p_sequential;
184496 
184497 // End of memberFunctionString
184498 // Start of memberFunctionString
184499 SgExpression* p_direct;
184500 
184501 // End of memberFunctionString
184502 // Start of memberFunctionString
184503 SgExpression* p_formatted;
184504 
184505 // End of memberFunctionString
184506 // Start of memberFunctionString
184507 SgExpression* p_unformatted;
184508 
184509 // End of memberFunctionString
184510 // Start of memberFunctionString
184511 SgExpression* p_nextrec;
184512 
184513 // End of memberFunctionString
184514 // Start of memberFunctionString
184515 SgExpression* p_position;
184516 
184517 // End of memberFunctionString
184518 // Start of memberFunctionString
184519 SgExpression* p_action;
184520 
184521 // End of memberFunctionString
184522 // Start of memberFunctionString
184523 SgExpression* p_read;
184524 
184525 // End of memberFunctionString
184526 // Start of memberFunctionString
184527 SgExpression* p_write;
184528 
184529 // End of memberFunctionString
184530 // Start of memberFunctionString
184531 SgExpression* p_readwrite;
184532 
184533 // End of memberFunctionString
184534 // Start of memberFunctionString
184535 SgExpression* p_delim;
184536 
184537 // End of memberFunctionString
184538 // Start of memberFunctionString
184539 SgExpression* p_pad;
184540 
184541 // End of memberFunctionString
184542 // Start of memberFunctionString
184543 SgExpression* p_asynchronous;
184544 
184545 // End of memberFunctionString
184546 // Start of memberFunctionString
184547 SgExpression* p_decimal;
184548 
184549 // End of memberFunctionString
184550 // Start of memberFunctionString
184551 SgExpression* p_stream;
184552 
184553 // End of memberFunctionString
184554 // Start of memberFunctionString
184555 SgExpression* p_size;
184556 
184557 // End of memberFunctionString
184558 // Start of memberFunctionString
184559 SgExpression* p_pending;
184560 
184561 // End of memberFunctionString
184562 // Start of memberFunctionString
184563 SgVarRefExp* p_iolengthExp;
184564 
184565 // End of memberFunctionString
184566 
184567 
184568 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
184569 
184570 
184571  };
184572 #endif
184573 
184574 // postdeclarations for SgInquireStatement
184575 
184576 /* #line 184577 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
184577 
184578 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
184579 
184580 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
184581 
184582 
184583 /* #line 184584 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
184584 
184585 
184586 
184587 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
184588 
184589 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
184590 // This code is automatically generated for each
184591 // terminal and non-terminal within the defined
184592 // grammar. There is a simple way to change the
184593 // code to fix bugs etc. See the ROSE README file
184594 // for directions.
184595 
184596 // tps: (02/22/2010): Adding DLL export requirements
184597 #include "rosedll.h"
184598 
184599 // predeclarations for SgFlushStatement
184600 
184601 /* #line 184602 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
184602 
184603 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
184604 
184605 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
184606 
184607 #if 1
184608 // Class Definition for SgFlushStatement
184609 class ROSE_DLL_API SgFlushStatement : public SgIOStatement
184610  {
184611  public:
184612 
184613 
184614 /* #line 184615 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
184615 
184616  virtual SgNode* copy ( SgCopyHelp& help) const override;
184617 // Start of memberFunctionString
184618 /* #line 3576 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
184619 
184620 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
184621  virtual unsigned int cfgIndexForEnd() const override;
184622  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
184623  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
184624 #endif
184625 
184626 
184627 // End of memberFunctionString
184628 // Start of memberFunctionString
184629 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
184630 
184631 // *** COMMON CODE SECTION BEGINS HERE ***
184632 
184633  public:
184634 
184635  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
184636  // and not required which is required to match the other aspects of the copy mechanism code generation.
184637  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
184638  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
184639  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
184640  // virtual SgNode* copy ( const SgCopyHelp & help) const;
184641 
184643  virtual std::string class_name() const override;
184644 
184646  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
184647 
184649  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
184650  // static const VariantT static_variant = V_SgFlushStatement;
184651  enum { static_variant = V_SgFlushStatement };
184652 
184653  /* the generated cast function */
184655  ROSE_DLL_API friend SgFlushStatement* isSgFlushStatement( SgNode * s );
184656 
184658  ROSE_DLL_API friend const SgFlushStatement* isSgFlushStatement( const SgNode * s );
184659 
184660  // ******************************************
184661  // * Memory Pool / New / Delete
184662  // ******************************************
184663 
184664  public:
184666  static const unsigned pool_size; //
184668  static std::vector<unsigned char *> pools; //
184670  static SgFlushStatement * next_node; //
184671 
184673  static unsigned long initializeStorageClassArray(SgFlushStatementStorageClass *); //
184674 
184676  static void clearMemoryPool(); //
184677  static void deleteMemoryPool(); //
184678 
184680  static void extendMemoryPoolForFileIO(); //
184681 
184683  static SgFlushStatement * getPointerFromGlobalIndex(unsigned long); //
184685  static SgFlushStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
184686 
184688  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
184690  static void resetValidFreepointers(); //
184692  static unsigned long getNumberOfLastValidPointer(); //
184693 
184694 
184695 #if defined(INLINE_FUNCTIONS)
184696 
184697  inline void *operator new (size_t size);
184698 #else
184699 
184700  void *operator new (size_t size);
184701 #endif
184702 
184703  void operator delete (void* pointer, size_t size);
184704 
184705  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
184706  void operator delete (void* pointer)
184707  {
184708  // This is the generated delete operator...
184709  SgFlushStatement::operator delete (pointer,sizeof(SgFlushStatement));
184710  }
184711 
184713  static size_t numberOfNodes();
184714 
184716  static size_t memoryUsage();
184717 
184718  // End of scope which started in IR nodes specific code
184719  /* */
184720 
184721  /* name Internal Functions
184722  \brief Internal functions ... incomplete-documentation
184723 
184724  These functions have been made public as part of the design, but they are suggested for internal use
184725  or by particularly knowledgeable users for specialized tools or applications.
184726 
184727  \internal We could not make these private because they are required by user for special purposes. And
184728  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
184729 
184730  */
184731 
184732  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
184733  // overridden in every class by *generated* implementation
184735  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
184736  // MS: 06/28/02 container of names of variables or container indices
184737  // used used in the traversal to access AST successor nodes
184738  // overridden in every class by *generated* implementation
184741  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
184742 
184743  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
184744  // than all the vector copies. The implementation for these functions is generated for each class.
184746  virtual size_t get_numberOfTraversalSuccessors() override;
184748  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
184750  virtual size_t get_childIndex(SgNode *child) override;
184751 
184752 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
184753  // MS: 08/16/2002 method for generating RTI information
184755  virtual RTIReturnType roseRTI() override;
184756 #endif
184757  /* */
184758 
184759 
184760 
184761  /* name Deprecated Functions
184762  \brief Deprecated functions ... incomplete-documentation
184763 
184764  These functions have been deprecated from use.
184765  */
184766  /* */
184767 
184769  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
184770 
184771  // JJW (10/16/2008): Changed to a single function in Node.code, and put
184772  // getVariant() in #if 0 block to prevent confusing Doxygen
184773 #if 0
184774 
184775  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
184777  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
184778 #endif
184779  /* */
184780 
184781 
184782 
184783 
184784  public:
184785  /* name Traversal Support Functions
184786  \brief Traversal support functions ... incomplete-documentation
184787 
184788  These functions have been made public as part of the design, but they are suggested for internal use
184789  or by particularly knowledgable users for specialized tools or applications.
184790  */
184791  /* */
184792 
184793  // DQ (11/26/2005): Support for visitor pattern mechanims
184794  // (inferior to ROSE traversal mechanism, experimental).
184798 
184799  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
184801  virtual void accept (ROSE_VisitorPattern & visitor) override;
184802 
184803  // DQ (12/26/2005): Support for traversal based on the memory pool
184806  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
184807 
184810  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
184811 
184812  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
184813  // This traversal helps support internal tools that call static member functions.
184814  // note: this function operates on the memory pools.
184817  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
184818  /* */
184819 
184820 
184821  public:
184822  /* name Memory Allocation Functions
184823  \brief Memory allocations functions ... incomplete-documentation
184824 
184825  These functions have been made public as part of the design, but they are suggested for internal use
184826  or by particularly knowledgable users for specialized tools or applications.
184827  */
184828  /* */
184829 
184840  virtual bool isInMemoryPool() override;
184841 
184852  virtual void checkDataMemberPointersIfInMemoryPool() override;
184853 
184854  // DQ (4/30/2006): Modified to be a const function.
184869  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
184870 
184880  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
184881 
184893  virtual long getChildIndex( SgNode* childNode ) const override;
184894 
184895  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
184896  // comment here (changed to be a C style comment and not be a doxygen comment).
184897  /* \brief Constructor for use by AST File I/O Mechanism
184898 
184899  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
184900  which obtained via fast binary file I/O from disk.
184901  */
184902  // SgFlushStatement( SgFlushStatementStorageClass& source );
184903 
184904 
184905 
184906 
184907 
184908  // JH (10/24/2005): methods added to support the ast file IO
184909  private:
184910 
184911  /* name AST Memory Allocation Support Functions
184912  \brief Memory allocations support....
184913 
184914  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
184915  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
184916  and support the AST File I/O Mechanism.
184917  */
184918  /* */
184919 
184920  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
184921  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
184922  that I use the same type everywhere, if any changes are made. THe second one declares the type
184923  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
184924  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
184925  a correspinding one in the AST_FILE_IO class!
184926  */
184927  // DQ (9/2/2015): This typedef is no longer used, we can't define the
184928  // comment here (changed to be a C style comment and not be a doxygen comment).
184929  /* \brief Typedef used for low level memory access.
184930  */
184931  // typedef unsigned char* TestType;
184932 
184933  // DQ (9/2/2015): This typedef is no longer used, we can't define the
184934  // comment here (changed to be a C style comment and not be a doxygen comment).
184935  /* \brief Typedef used to hold memory addresses as values.
184936  */
184937  // typedef unsigned long AddressType;
184938 
184939 
184940 
184941  // necessary, to have direct access to the p_freepointer and the private methods !
184943  friend class AST_FILE_IO;
184944 
184946  friend class SgFlushStatementStorageClass;
184947 
184949  friend class AstSpecificDataManagingClass;
184950 
184952  friend class AstSpecificDataManagingClassStorageClass;
184953 
184954  public:
184956  SgFlushStatement( const SgFlushStatementStorageClass& source );
184957 
184958  // private: // JJW hack
184959  /*
184960  name AST Memory Allocation Support Variables
184961  Memory allocations support variables
184962 
184963  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
184964  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
184965  and support the AST File I/O Mechanism.
184966  */
184967  /* */
184968 
184969  public:
184970 
184971  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
184972  // to current node (so that it will work cleanly with build functions to specify patterns).
184973  // virtual SgNode* addRegExpAttribute();
184980 
184981 // *** COMMON CODE SECTION ENDS HERE ***
184982 
184983 
184984 // End of memberFunctionString
184985 // Start of memberFunctionString
184986 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
184987 
184988  // the generated cast function
184989  // friend ROSE_DLL_API SgFlushStatement* isSgFlushStatement ( SgNode* s );
184990 
184991  typedef SgIOStatement base_node_type;
184992 
184993 
184994 // End of memberFunctionString
184995 // Start of memberFunctionString
184996 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
184997 
184998  void post_construction_initialization() override;
184999 
185000 
185001 // End of memberFunctionString
185002 
185003 
185004  public:
185005  virtual ~SgFlushStatement();
185006 
185007 
185008  public:
185009  SgFlushStatement(Sg_File_Info* startOfConstruct );
185010  SgFlushStatement();
185011 
185012  protected:
185013 
185014 
185015 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
185016 
185017 
185018  };
185019 #endif
185020 
185021 // postdeclarations for SgFlushStatement
185022 
185023 /* #line 185024 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
185024 
185025 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
185026 
185027 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
185028 
185029 
185030 /* #line 185031 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
185031 
185032 
185033 
185034 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
185035 
185036 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
185037 // This code is automatically generated for each
185038 // terminal and non-terminal within the defined
185039 // grammar. There is a simple way to change the
185040 // code to fix bugs etc. See the ROSE README file
185041 // for directions.
185042 
185043 // tps: (02/22/2010): Adding DLL export requirements
185044 #include "rosedll.h"
185045 
185046 // predeclarations for SgBackspaceStatement
185047 
185048 /* #line 185049 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
185049 
185050 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
185051 
185052 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
185053 
185054 #if 1
185055 // Class Definition for SgBackspaceStatement
185056 class ROSE_DLL_API SgBackspaceStatement : public SgIOStatement
185057  {
185058  public:
185059 
185060 
185061 /* #line 185062 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
185062 
185063  virtual SgNode* copy ( SgCopyHelp& help) const override;
185064 // Start of memberFunctionString
185065 /* #line 3592 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
185066 
185067 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
185068  virtual unsigned int cfgIndexForEnd() const override;
185069  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
185070  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
185071 #endif
185072 
185073 
185074 // End of memberFunctionString
185075 // Start of memberFunctionString
185076 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
185077 
185078 // *** COMMON CODE SECTION BEGINS HERE ***
185079 
185080  public:
185081 
185082  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
185083  // and not required which is required to match the other aspects of the copy mechanism code generation.
185084  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
185085  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
185086  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
185087  // virtual SgNode* copy ( const SgCopyHelp & help) const;
185088 
185090  virtual std::string class_name() const override;
185091 
185093  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
185094 
185096  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
185097  // static const VariantT static_variant = V_SgBackspaceStatement;
185098  enum { static_variant = V_SgBackspaceStatement };
185099 
185100  /* the generated cast function */
185102  ROSE_DLL_API friend SgBackspaceStatement* isSgBackspaceStatement( SgNode * s );
185103 
185105  ROSE_DLL_API friend const SgBackspaceStatement* isSgBackspaceStatement( const SgNode * s );
185106 
185107  // ******************************************
185108  // * Memory Pool / New / Delete
185109  // ******************************************
185110 
185111  public:
185113  static const unsigned pool_size; //
185115  static std::vector<unsigned char *> pools; //
185117  static SgBackspaceStatement * next_node; //
185118 
185120  static unsigned long initializeStorageClassArray(SgBackspaceStatementStorageClass *); //
185121 
185123  static void clearMemoryPool(); //
185124  static void deleteMemoryPool(); //
185125 
185127  static void extendMemoryPoolForFileIO(); //
185128 
185130  static SgBackspaceStatement * getPointerFromGlobalIndex(unsigned long); //
185132  static SgBackspaceStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
185133 
185135  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
185137  static void resetValidFreepointers(); //
185139  static unsigned long getNumberOfLastValidPointer(); //
185140 
185141 
185142 #if defined(INLINE_FUNCTIONS)
185143 
185144  inline void *operator new (size_t size);
185145 #else
185146 
185147  void *operator new (size_t size);
185148 #endif
185149 
185150  void operator delete (void* pointer, size_t size);
185151 
185152  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
185153  void operator delete (void* pointer)
185154  {
185155  // This is the generated delete operator...
185156  SgBackspaceStatement::operator delete (pointer,sizeof(SgBackspaceStatement));
185157  }
185158 
185160  static size_t numberOfNodes();
185161 
185163  static size_t memoryUsage();
185164 
185165  // End of scope which started in IR nodes specific code
185166  /* */
185167 
185168  /* name Internal Functions
185169  \brief Internal functions ... incomplete-documentation
185170 
185171  These functions have been made public as part of the design, but they are suggested for internal use
185172  or by particularly knowledgeable users for specialized tools or applications.
185173 
185174  \internal We could not make these private because they are required by user for special purposes. And
185175  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
185176 
185177  */
185178 
185179  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
185180  // overridden in every class by *generated* implementation
185182  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
185183  // MS: 06/28/02 container of names of variables or container indices
185184  // used used in the traversal to access AST successor nodes
185185  // overridden in every class by *generated* implementation
185188  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
185189 
185190  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
185191  // than all the vector copies. The implementation for these functions is generated for each class.
185193  virtual size_t get_numberOfTraversalSuccessors() override;
185195  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
185197  virtual size_t get_childIndex(SgNode *child) override;
185198 
185199 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
185200  // MS: 08/16/2002 method for generating RTI information
185202  virtual RTIReturnType roseRTI() override;
185203 #endif
185204  /* */
185205 
185206 
185207 
185208  /* name Deprecated Functions
185209  \brief Deprecated functions ... incomplete-documentation
185210 
185211  These functions have been deprecated from use.
185212  */
185213  /* */
185214 
185216  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
185217 
185218  // JJW (10/16/2008): Changed to a single function in Node.code, and put
185219  // getVariant() in #if 0 block to prevent confusing Doxygen
185220 #if 0
185221 
185222  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
185224  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
185225 #endif
185226  /* */
185227 
185228 
185229 
185230 
185231  public:
185232  /* name Traversal Support Functions
185233  \brief Traversal support functions ... incomplete-documentation
185234 
185235  These functions have been made public as part of the design, but they are suggested for internal use
185236  or by particularly knowledgable users for specialized tools or applications.
185237  */
185238  /* */
185239 
185240  // DQ (11/26/2005): Support for visitor pattern mechanims
185241  // (inferior to ROSE traversal mechanism, experimental).
185245 
185246  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
185248  virtual void accept (ROSE_VisitorPattern & visitor) override;
185249 
185250  // DQ (12/26/2005): Support for traversal based on the memory pool
185253  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
185254 
185257  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
185258 
185259  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
185260  // This traversal helps support internal tools that call static member functions.
185261  // note: this function operates on the memory pools.
185264  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
185265  /* */
185266 
185267 
185268  public:
185269  /* name Memory Allocation Functions
185270  \brief Memory allocations functions ... incomplete-documentation
185271 
185272  These functions have been made public as part of the design, but they are suggested for internal use
185273  or by particularly knowledgable users for specialized tools or applications.
185274  */
185275  /* */
185276 
185287  virtual bool isInMemoryPool() override;
185288 
185299  virtual void checkDataMemberPointersIfInMemoryPool() override;
185300 
185301  // DQ (4/30/2006): Modified to be a const function.
185316  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
185317 
185327  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
185328 
185340  virtual long getChildIndex( SgNode* childNode ) const override;
185341 
185342  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
185343  // comment here (changed to be a C style comment and not be a doxygen comment).
185344  /* \brief Constructor for use by AST File I/O Mechanism
185345 
185346  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
185347  which obtained via fast binary file I/O from disk.
185348  */
185349  // SgBackspaceStatement( SgBackspaceStatementStorageClass& source );
185350 
185351 
185352 
185353 
185354 
185355  // JH (10/24/2005): methods added to support the ast file IO
185356  private:
185357 
185358  /* name AST Memory Allocation Support Functions
185359  \brief Memory allocations support....
185360 
185361  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
185362  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
185363  and support the AST File I/O Mechanism.
185364  */
185365  /* */
185366 
185367  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
185368  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
185369  that I use the same type everywhere, if any changes are made. THe second one declares the type
185370  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
185371  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
185372  a correspinding one in the AST_FILE_IO class!
185373  */
185374  // DQ (9/2/2015): This typedef is no longer used, we can't define the
185375  // comment here (changed to be a C style comment and not be a doxygen comment).
185376  /* \brief Typedef used for low level memory access.
185377  */
185378  // typedef unsigned char* TestType;
185379 
185380  // DQ (9/2/2015): This typedef is no longer used, we can't define the
185381  // comment here (changed to be a C style comment and not be a doxygen comment).
185382  /* \brief Typedef used to hold memory addresses as values.
185383  */
185384  // typedef unsigned long AddressType;
185385 
185386 
185387 
185388  // necessary, to have direct access to the p_freepointer and the private methods !
185390  friend class AST_FILE_IO;
185391 
185393  friend class SgBackspaceStatementStorageClass;
185394 
185396  friend class AstSpecificDataManagingClass;
185397 
185399  friend class AstSpecificDataManagingClassStorageClass;
185400 
185401  public:
185403  SgBackspaceStatement( const SgBackspaceStatementStorageClass& source );
185404 
185405  // private: // JJW hack
185406  /*
185407  name AST Memory Allocation Support Variables
185408  Memory allocations support variables
185409 
185410  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
185411  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
185412  and support the AST File I/O Mechanism.
185413  */
185414  /* */
185415 
185416  public:
185417 
185418  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
185419  // to current node (so that it will work cleanly with build functions to specify patterns).
185420  // virtual SgNode* addRegExpAttribute();
185427 
185428 // *** COMMON CODE SECTION ENDS HERE ***
185429 
185430 
185431 // End of memberFunctionString
185432 // Start of memberFunctionString
185433 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
185434 
185435  // the generated cast function
185436  // friend ROSE_DLL_API SgBackspaceStatement* isSgBackspaceStatement ( SgNode* s );
185437 
185438  typedef SgIOStatement base_node_type;
185439 
185440 
185441 // End of memberFunctionString
185442 // Start of memberFunctionString
185443 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
185444 
185445  void post_construction_initialization() override;
185446 
185447 
185448 // End of memberFunctionString
185449 
185450 
185451  public:
185452  virtual ~SgBackspaceStatement();
185453 
185454 
185455  public:
185456  SgBackspaceStatement(Sg_File_Info* startOfConstruct );
185458 
185459  protected:
185460 
185461 
185462 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
185463 
185464 
185465  };
185466 #endif
185467 
185468 // postdeclarations for SgBackspaceStatement
185469 
185470 /* #line 185471 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
185471 
185472 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
185473 
185474 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
185475 
185476 
185477 /* #line 185478 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
185478 
185479 
185480 
185481 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
185482 
185483 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
185484 // This code is automatically generated for each
185485 // terminal and non-terminal within the defined
185486 // grammar. There is a simple way to change the
185487 // code to fix bugs etc. See the ROSE README file
185488 // for directions.
185489 
185490 // tps: (02/22/2010): Adding DLL export requirements
185491 #include "rosedll.h"
185492 
185493 // predeclarations for SgRewindStatement
185494 
185495 /* #line 185496 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
185496 
185497 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
185498 
185499 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
185500 
185501 #if 1
185502 // Class Definition for SgRewindStatement
185503 class ROSE_DLL_API SgRewindStatement : public SgIOStatement
185504  {
185505  public:
185506 
185507 
185508 /* #line 185509 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
185509 
185510  virtual SgNode* copy ( SgCopyHelp& help) const override;
185511 // Start of memberFunctionString
185512 /* #line 3584 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
185513 
185514 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
185515  virtual unsigned int cfgIndexForEnd() const override;
185516  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
185517  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
185518 #endif
185519 
185520 
185521 // End of memberFunctionString
185522 // Start of memberFunctionString
185523 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
185524 
185525 // *** COMMON CODE SECTION BEGINS HERE ***
185526 
185527  public:
185528 
185529  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
185530  // and not required which is required to match the other aspects of the copy mechanism code generation.
185531  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
185532  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
185533  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
185534  // virtual SgNode* copy ( const SgCopyHelp & help) const;
185535 
185537  virtual std::string class_name() const override;
185538 
185540  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
185541 
185543  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
185544  // static const VariantT static_variant = V_SgRewindStatement;
185545  enum { static_variant = V_SgRewindStatement };
185546 
185547  /* the generated cast function */
185549  ROSE_DLL_API friend SgRewindStatement* isSgRewindStatement( SgNode * s );
185550 
185552  ROSE_DLL_API friend const SgRewindStatement* isSgRewindStatement( const SgNode * s );
185553 
185554  // ******************************************
185555  // * Memory Pool / New / Delete
185556  // ******************************************
185557 
185558  public:
185560  static const unsigned pool_size; //
185562  static std::vector<unsigned char *> pools; //
185564  static SgRewindStatement * next_node; //
185565 
185567  static unsigned long initializeStorageClassArray(SgRewindStatementStorageClass *); //
185568 
185570  static void clearMemoryPool(); //
185571  static void deleteMemoryPool(); //
185572 
185574  static void extendMemoryPoolForFileIO(); //
185575 
185577  static SgRewindStatement * getPointerFromGlobalIndex(unsigned long); //
185579  static SgRewindStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
185580 
185582  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
185584  static void resetValidFreepointers(); //
185586  static unsigned long getNumberOfLastValidPointer(); //
185587 
185588 
185589 #if defined(INLINE_FUNCTIONS)
185590 
185591  inline void *operator new (size_t size);
185592 #else
185593 
185594  void *operator new (size_t size);
185595 #endif
185596 
185597  void operator delete (void* pointer, size_t size);
185598 
185599  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
185600  void operator delete (void* pointer)
185601  {
185602  // This is the generated delete operator...
185603  SgRewindStatement::operator delete (pointer,sizeof(SgRewindStatement));
185604  }
185605 
185607  static size_t numberOfNodes();
185608 
185610  static size_t memoryUsage();
185611 
185612  // End of scope which started in IR nodes specific code
185613  /* */
185614 
185615  /* name Internal Functions
185616  \brief Internal functions ... incomplete-documentation
185617 
185618  These functions have been made public as part of the design, but they are suggested for internal use
185619  or by particularly knowledgeable users for specialized tools or applications.
185620 
185621  \internal We could not make these private because they are required by user for special purposes. And
185622  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
185623 
185624  */
185625 
185626  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
185627  // overridden in every class by *generated* implementation
185629  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
185630  // MS: 06/28/02 container of names of variables or container indices
185631  // used used in the traversal to access AST successor nodes
185632  // overridden in every class by *generated* implementation
185635  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
185636 
185637  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
185638  // than all the vector copies. The implementation for these functions is generated for each class.
185640  virtual size_t get_numberOfTraversalSuccessors() override;
185642  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
185644  virtual size_t get_childIndex(SgNode *child) override;
185645 
185646 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
185647  // MS: 08/16/2002 method for generating RTI information
185649  virtual RTIReturnType roseRTI() override;
185650 #endif
185651  /* */
185652 
185653 
185654 
185655  /* name Deprecated Functions
185656  \brief Deprecated functions ... incomplete-documentation
185657 
185658  These functions have been deprecated from use.
185659  */
185660  /* */
185661 
185663  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
185664 
185665  // JJW (10/16/2008): Changed to a single function in Node.code, and put
185666  // getVariant() in #if 0 block to prevent confusing Doxygen
185667 #if 0
185668 
185669  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
185671  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
185672 #endif
185673  /* */
185674 
185675 
185676 
185677 
185678  public:
185679  /* name Traversal Support Functions
185680  \brief Traversal support functions ... incomplete-documentation
185681 
185682  These functions have been made public as part of the design, but they are suggested for internal use
185683  or by particularly knowledgable users for specialized tools or applications.
185684  */
185685  /* */
185686 
185687  // DQ (11/26/2005): Support for visitor pattern mechanims
185688  // (inferior to ROSE traversal mechanism, experimental).
185692 
185693  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
185695  virtual void accept (ROSE_VisitorPattern & visitor) override;
185696 
185697  // DQ (12/26/2005): Support for traversal based on the memory pool
185700  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
185701 
185704  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
185705 
185706  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
185707  // This traversal helps support internal tools that call static member functions.
185708  // note: this function operates on the memory pools.
185711  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
185712  /* */
185713 
185714 
185715  public:
185716  /* name Memory Allocation Functions
185717  \brief Memory allocations functions ... incomplete-documentation
185718 
185719  These functions have been made public as part of the design, but they are suggested for internal use
185720  or by particularly knowledgable users for specialized tools or applications.
185721  */
185722  /* */
185723 
185734  virtual bool isInMemoryPool() override;
185735 
185746  virtual void checkDataMemberPointersIfInMemoryPool() override;
185747 
185748  // DQ (4/30/2006): Modified to be a const function.
185763  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
185764 
185774  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
185775 
185787  virtual long getChildIndex( SgNode* childNode ) const override;
185788 
185789  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
185790  // comment here (changed to be a C style comment and not be a doxygen comment).
185791  /* \brief Constructor for use by AST File I/O Mechanism
185792 
185793  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
185794  which obtained via fast binary file I/O from disk.
185795  */
185796  // SgRewindStatement( SgRewindStatementStorageClass& source );
185797 
185798 
185799 
185800 
185801 
185802  // JH (10/24/2005): methods added to support the ast file IO
185803  private:
185804 
185805  /* name AST Memory Allocation Support Functions
185806  \brief Memory allocations support....
185807 
185808  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
185809  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
185810  and support the AST File I/O Mechanism.
185811  */
185812  /* */
185813 
185814  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
185815  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
185816  that I use the same type everywhere, if any changes are made. THe second one declares the type
185817  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
185818  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
185819  a correspinding one in the AST_FILE_IO class!
185820  */
185821  // DQ (9/2/2015): This typedef is no longer used, we can't define the
185822  // comment here (changed to be a C style comment and not be a doxygen comment).
185823  /* \brief Typedef used for low level memory access.
185824  */
185825  // typedef unsigned char* TestType;
185826 
185827  // DQ (9/2/2015): This typedef is no longer used, we can't define the
185828  // comment here (changed to be a C style comment and not be a doxygen comment).
185829  /* \brief Typedef used to hold memory addresses as values.
185830  */
185831  // typedef unsigned long AddressType;
185832 
185833 
185834 
185835  // necessary, to have direct access to the p_freepointer and the private methods !
185837  friend class AST_FILE_IO;
185838 
185840  friend class SgRewindStatementStorageClass;
185841 
185843  friend class AstSpecificDataManagingClass;
185844 
185846  friend class AstSpecificDataManagingClassStorageClass;
185847 
185848  public:
185850  SgRewindStatement( const SgRewindStatementStorageClass& source );
185851 
185852  // private: // JJW hack
185853  /*
185854  name AST Memory Allocation Support Variables
185855  Memory allocations support variables
185856 
185857  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
185858  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
185859  and support the AST File I/O Mechanism.
185860  */
185861  /* */
185862 
185863  public:
185864 
185865  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
185866  // to current node (so that it will work cleanly with build functions to specify patterns).
185867  // virtual SgNode* addRegExpAttribute();
185874 
185875 // *** COMMON CODE SECTION ENDS HERE ***
185876 
185877 
185878 // End of memberFunctionString
185879 // Start of memberFunctionString
185880 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
185881 
185882  // the generated cast function
185883  // friend ROSE_DLL_API SgRewindStatement* isSgRewindStatement ( SgNode* s );
185884 
185885  typedef SgIOStatement base_node_type;
185886 
185887 
185888 // End of memberFunctionString
185889 // Start of memberFunctionString
185890 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
185891 
185892  void post_construction_initialization() override;
185893 
185894 
185895 // End of memberFunctionString
185896 
185897 
185898  public:
185899  virtual ~SgRewindStatement();
185900 
185901 
185902  public:
185903  SgRewindStatement(Sg_File_Info* startOfConstruct );
185904  SgRewindStatement();
185905 
185906  protected:
185907 
185908 
185909 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
185910 
185911 
185912  };
185913 #endif
185914 
185915 // postdeclarations for SgRewindStatement
185916 
185917 /* #line 185918 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
185918 
185919 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
185920 
185921 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
185922 
185923 
185924 /* #line 185925 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
185925 
185926 
185927 
185928 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
185929 
185930 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
185931 // This code is automatically generated for each
185932 // terminal and non-terminal within the defined
185933 // grammar. There is a simple way to change the
185934 // code to fix bugs etc. See the ROSE README file
185935 // for directions.
185936 
185937 // tps: (02/22/2010): Adding DLL export requirements
185938 #include "rosedll.h"
185939 
185940 // predeclarations for SgEndfileStatement
185941 
185942 /* #line 185943 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
185943 
185944 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
185945 
185946 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
185947 
185948 #if 1
185949 // Class Definition for SgEndfileStatement
185950 class ROSE_DLL_API SgEndfileStatement : public SgIOStatement
185951  {
185952  public:
185953 
185954 
185955 /* #line 185956 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
185956 
185957  virtual SgNode* copy ( SgCopyHelp& help) const override;
185958 // Start of memberFunctionString
185959 /* #line 3600 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
185960 
185961 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
185962  virtual unsigned int cfgIndexForEnd() const override;
185963  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
185964  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
185965 #endif
185966 
185967 
185968 // End of memberFunctionString
185969 // Start of memberFunctionString
185970 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
185971 
185972 // *** COMMON CODE SECTION BEGINS HERE ***
185973 
185974  public:
185975 
185976  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
185977  // and not required which is required to match the other aspects of the copy mechanism code generation.
185978  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
185979  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
185980  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
185981  // virtual SgNode* copy ( const SgCopyHelp & help) const;
185982 
185984  virtual std::string class_name() const override;
185985 
185987  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
185988 
185990  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
185991  // static const VariantT static_variant = V_SgEndfileStatement;
185992  enum { static_variant = V_SgEndfileStatement };
185993 
185994  /* the generated cast function */
185996  ROSE_DLL_API friend SgEndfileStatement* isSgEndfileStatement( SgNode * s );
185997 
185999  ROSE_DLL_API friend const SgEndfileStatement* isSgEndfileStatement( const SgNode * s );
186000 
186001  // ******************************************
186002  // * Memory Pool / New / Delete
186003  // ******************************************
186004 
186005  public:
186007  static const unsigned pool_size; //
186009  static std::vector<unsigned char *> pools; //
186011  static SgEndfileStatement * next_node; //
186012 
186014  static unsigned long initializeStorageClassArray(SgEndfileStatementStorageClass *); //
186015 
186017  static void clearMemoryPool(); //
186018  static void deleteMemoryPool(); //
186019 
186021  static void extendMemoryPoolForFileIO(); //
186022 
186024  static SgEndfileStatement * getPointerFromGlobalIndex(unsigned long); //
186026  static SgEndfileStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
186027 
186029  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
186031  static void resetValidFreepointers(); //
186033  static unsigned long getNumberOfLastValidPointer(); //
186034 
186035 
186036 #if defined(INLINE_FUNCTIONS)
186037 
186038  inline void *operator new (size_t size);
186039 #else
186040 
186041  void *operator new (size_t size);
186042 #endif
186043 
186044  void operator delete (void* pointer, size_t size);
186045 
186046  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
186047  void operator delete (void* pointer)
186048  {
186049  // This is the generated delete operator...
186050  SgEndfileStatement::operator delete (pointer,sizeof(SgEndfileStatement));
186051  }
186052 
186054  static size_t numberOfNodes();
186055 
186057  static size_t memoryUsage();
186058 
186059  // End of scope which started in IR nodes specific code
186060  /* */
186061 
186062  /* name Internal Functions
186063  \brief Internal functions ... incomplete-documentation
186064 
186065  These functions have been made public as part of the design, but they are suggested for internal use
186066  or by particularly knowledgeable users for specialized tools or applications.
186067 
186068  \internal We could not make these private because they are required by user for special purposes. And
186069  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
186070 
186071  */
186072 
186073  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
186074  // overridden in every class by *generated* implementation
186076  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
186077  // MS: 06/28/02 container of names of variables or container indices
186078  // used used in the traversal to access AST successor nodes
186079  // overridden in every class by *generated* implementation
186082  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
186083 
186084  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
186085  // than all the vector copies. The implementation for these functions is generated for each class.
186087  virtual size_t get_numberOfTraversalSuccessors() override;
186089  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
186091  virtual size_t get_childIndex(SgNode *child) override;
186092 
186093 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
186094  // MS: 08/16/2002 method for generating RTI information
186096  virtual RTIReturnType roseRTI() override;
186097 #endif
186098  /* */
186099 
186100 
186101 
186102  /* name Deprecated Functions
186103  \brief Deprecated functions ... incomplete-documentation
186104 
186105  These functions have been deprecated from use.
186106  */
186107  /* */
186108 
186110  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
186111 
186112  // JJW (10/16/2008): Changed to a single function in Node.code, and put
186113  // getVariant() in #if 0 block to prevent confusing Doxygen
186114 #if 0
186115 
186116  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
186118  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
186119 #endif
186120  /* */
186121 
186122 
186123 
186124 
186125  public:
186126  /* name Traversal Support Functions
186127  \brief Traversal support functions ... incomplete-documentation
186128 
186129  These functions have been made public as part of the design, but they are suggested for internal use
186130  or by particularly knowledgable users for specialized tools or applications.
186131  */
186132  /* */
186133 
186134  // DQ (11/26/2005): Support for visitor pattern mechanims
186135  // (inferior to ROSE traversal mechanism, experimental).
186139 
186140  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
186142  virtual void accept (ROSE_VisitorPattern & visitor) override;
186143 
186144  // DQ (12/26/2005): Support for traversal based on the memory pool
186147  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
186148 
186151  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
186152 
186153  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
186154  // This traversal helps support internal tools that call static member functions.
186155  // note: this function operates on the memory pools.
186158  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
186159  /* */
186160 
186161 
186162  public:
186163  /* name Memory Allocation Functions
186164  \brief Memory allocations functions ... incomplete-documentation
186165 
186166  These functions have been made public as part of the design, but they are suggested for internal use
186167  or by particularly knowledgable users for specialized tools or applications.
186168  */
186169  /* */
186170 
186181  virtual bool isInMemoryPool() override;
186182 
186193  virtual void checkDataMemberPointersIfInMemoryPool() override;
186194 
186195  // DQ (4/30/2006): Modified to be a const function.
186210  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
186211 
186221  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
186222 
186234  virtual long getChildIndex( SgNode* childNode ) const override;
186235 
186236  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
186237  // comment here (changed to be a C style comment and not be a doxygen comment).
186238  /* \brief Constructor for use by AST File I/O Mechanism
186239 
186240  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
186241  which obtained via fast binary file I/O from disk.
186242  */
186243  // SgEndfileStatement( SgEndfileStatementStorageClass& source );
186244 
186245 
186246 
186247 
186248 
186249  // JH (10/24/2005): methods added to support the ast file IO
186250  private:
186251 
186252  /* name AST Memory Allocation Support Functions
186253  \brief Memory allocations support....
186254 
186255  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
186256  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
186257  and support the AST File I/O Mechanism.
186258  */
186259  /* */
186260 
186261  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
186262  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
186263  that I use the same type everywhere, if any changes are made. THe second one declares the type
186264  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
186265  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
186266  a correspinding one in the AST_FILE_IO class!
186267  */
186268  // DQ (9/2/2015): This typedef is no longer used, we can't define the
186269  // comment here (changed to be a C style comment and not be a doxygen comment).
186270  /* \brief Typedef used for low level memory access.
186271  */
186272  // typedef unsigned char* TestType;
186273 
186274  // DQ (9/2/2015): This typedef is no longer used, we can't define the
186275  // comment here (changed to be a C style comment and not be a doxygen comment).
186276  /* \brief Typedef used to hold memory addresses as values.
186277  */
186278  // typedef unsigned long AddressType;
186279 
186280 
186281 
186282  // necessary, to have direct access to the p_freepointer and the private methods !
186284  friend class AST_FILE_IO;
186285 
186287  friend class SgEndfileStatementStorageClass;
186288 
186290  friend class AstSpecificDataManagingClass;
186291 
186293  friend class AstSpecificDataManagingClassStorageClass;
186294 
186295  public:
186297  SgEndfileStatement( const SgEndfileStatementStorageClass& source );
186298 
186299  // private: // JJW hack
186300  /*
186301  name AST Memory Allocation Support Variables
186302  Memory allocations support variables
186303 
186304  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
186305  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
186306  and support the AST File I/O Mechanism.
186307  */
186308  /* */
186309 
186310  public:
186311 
186312  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
186313  // to current node (so that it will work cleanly with build functions to specify patterns).
186314  // virtual SgNode* addRegExpAttribute();
186321 
186322 // *** COMMON CODE SECTION ENDS HERE ***
186323 
186324 
186325 // End of memberFunctionString
186326 // Start of memberFunctionString
186327 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
186328 
186329  // the generated cast function
186330  // friend ROSE_DLL_API SgEndfileStatement* isSgEndfileStatement ( SgNode* s );
186331 
186332  typedef SgIOStatement base_node_type;
186333 
186334 
186335 // End of memberFunctionString
186336 // Start of memberFunctionString
186337 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
186338 
186339  void post_construction_initialization() override;
186340 
186341 
186342 // End of memberFunctionString
186343 
186344 
186345  public:
186346  virtual ~SgEndfileStatement();
186347 
186348 
186349  public:
186350  SgEndfileStatement(Sg_File_Info* startOfConstruct );
186351  SgEndfileStatement();
186352 
186353  protected:
186354 
186355 
186356 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
186357 
186358 
186359  };
186360 #endif
186361 
186362 // postdeclarations for SgEndfileStatement
186363 
186364 /* #line 186365 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
186365 
186366 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
186367 
186368 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
186369 
186370 
186371 /* #line 186372 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
186372 
186373 
186374 
186375 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
186376 
186377 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
186378 // This code is automatically generated for each
186379 // terminal and non-terminal within the defined
186380 // grammar. There is a simple way to change the
186381 // code to fix bugs etc. See the ROSE README file
186382 // for directions.
186383 
186384 // tps: (02/22/2010): Adding DLL export requirements
186385 #include "rosedll.h"
186386 
186387 // predeclarations for SgWaitStatement
186388 
186389 /* #line 186390 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
186390 
186391 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
186392 
186393 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
186394 
186395 #if 1
186396 // Class Definition for SgWaitStatement
186397 class ROSE_DLL_API SgWaitStatement : public SgIOStatement
186398  {
186399  public:
186400 
186401 
186402 /* #line 186403 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
186403 
186404  virtual SgNode* copy ( SgCopyHelp& help) const override;
186405 // Start of memberFunctionString
186406 /* #line 3608 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
186407 
186408 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
186409  virtual unsigned int cfgIndexForEnd() const override;
186410  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
186411  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
186412 #endif
186413 
186414 
186415 // End of memberFunctionString
186416 // Start of memberFunctionString
186417 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
186418 
186419 // *** COMMON CODE SECTION BEGINS HERE ***
186420 
186421  public:
186422 
186423  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
186424  // and not required which is required to match the other aspects of the copy mechanism code generation.
186425  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
186426  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
186427  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
186428  // virtual SgNode* copy ( const SgCopyHelp & help) const;
186429 
186431  virtual std::string class_name() const override;
186432 
186434  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
186435 
186437  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
186438  // static const VariantT static_variant = V_SgWaitStatement;
186439  enum { static_variant = V_SgWaitStatement };
186440 
186441  /* the generated cast function */
186443  ROSE_DLL_API friend SgWaitStatement* isSgWaitStatement( SgNode * s );
186444 
186446  ROSE_DLL_API friend const SgWaitStatement* isSgWaitStatement( const SgNode * s );
186447 
186448  // ******************************************
186449  // * Memory Pool / New / Delete
186450  // ******************************************
186451 
186452  public:
186454  static const unsigned pool_size; //
186456  static std::vector<unsigned char *> pools; //
186458  static SgWaitStatement * next_node; //
186459 
186461  static unsigned long initializeStorageClassArray(SgWaitStatementStorageClass *); //
186462 
186464  static void clearMemoryPool(); //
186465  static void deleteMemoryPool(); //
186466 
186468  static void extendMemoryPoolForFileIO(); //
186469 
186471  static SgWaitStatement * getPointerFromGlobalIndex(unsigned long); //
186473  static SgWaitStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
186474 
186476  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
186478  static void resetValidFreepointers(); //
186480  static unsigned long getNumberOfLastValidPointer(); //
186481 
186482 
186483 #if defined(INLINE_FUNCTIONS)
186484 
186485  inline void *operator new (size_t size);
186486 #else
186487 
186488  void *operator new (size_t size);
186489 #endif
186490 
186491  void operator delete (void* pointer, size_t size);
186492 
186493  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
186494  void operator delete (void* pointer)
186495  {
186496  // This is the generated delete operator...
186497  SgWaitStatement::operator delete (pointer,sizeof(SgWaitStatement));
186498  }
186499 
186501  static size_t numberOfNodes();
186502 
186504  static size_t memoryUsage();
186505 
186506  // End of scope which started in IR nodes specific code
186507  /* */
186508 
186509  /* name Internal Functions
186510  \brief Internal functions ... incomplete-documentation
186511 
186512  These functions have been made public as part of the design, but they are suggested for internal use
186513  or by particularly knowledgeable users for specialized tools or applications.
186514 
186515  \internal We could not make these private because they are required by user for special purposes. And
186516  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
186517 
186518  */
186519 
186520  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
186521  // overridden in every class by *generated* implementation
186523  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
186524  // MS: 06/28/02 container of names of variables or container indices
186525  // used used in the traversal to access AST successor nodes
186526  // overridden in every class by *generated* implementation
186529  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
186530 
186531  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
186532  // than all the vector copies. The implementation for these functions is generated for each class.
186534  virtual size_t get_numberOfTraversalSuccessors() override;
186536  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
186538  virtual size_t get_childIndex(SgNode *child) override;
186539 
186540 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
186541  // MS: 08/16/2002 method for generating RTI information
186543  virtual RTIReturnType roseRTI() override;
186544 #endif
186545  /* */
186546 
186547 
186548 
186549  /* name Deprecated Functions
186550  \brief Deprecated functions ... incomplete-documentation
186551 
186552  These functions have been deprecated from use.
186553  */
186554  /* */
186555 
186557  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
186558 
186559  // JJW (10/16/2008): Changed to a single function in Node.code, and put
186560  // getVariant() in #if 0 block to prevent confusing Doxygen
186561 #if 0
186562 
186563  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
186565  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
186566 #endif
186567  /* */
186568 
186569 
186570 
186571 
186572  public:
186573  /* name Traversal Support Functions
186574  \brief Traversal support functions ... incomplete-documentation
186575 
186576  These functions have been made public as part of the design, but they are suggested for internal use
186577  or by particularly knowledgable users for specialized tools or applications.
186578  */
186579  /* */
186580 
186581  // DQ (11/26/2005): Support for visitor pattern mechanims
186582  // (inferior to ROSE traversal mechanism, experimental).
186586 
186587  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
186589  virtual void accept (ROSE_VisitorPattern & visitor) override;
186590 
186591  // DQ (12/26/2005): Support for traversal based on the memory pool
186594  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
186595 
186598  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
186599 
186600  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
186601  // This traversal helps support internal tools that call static member functions.
186602  // note: this function operates on the memory pools.
186605  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
186606  /* */
186607 
186608 
186609  public:
186610  /* name Memory Allocation Functions
186611  \brief Memory allocations functions ... incomplete-documentation
186612 
186613  These functions have been made public as part of the design, but they are suggested for internal use
186614  or by particularly knowledgable users for specialized tools or applications.
186615  */
186616  /* */
186617 
186628  virtual bool isInMemoryPool() override;
186629 
186640  virtual void checkDataMemberPointersIfInMemoryPool() override;
186641 
186642  // DQ (4/30/2006): Modified to be a const function.
186657  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
186658 
186668  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
186669 
186681  virtual long getChildIndex( SgNode* childNode ) const override;
186682 
186683  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
186684  // comment here (changed to be a C style comment and not be a doxygen comment).
186685  /* \brief Constructor for use by AST File I/O Mechanism
186686 
186687  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
186688  which obtained via fast binary file I/O from disk.
186689  */
186690  // SgWaitStatement( SgWaitStatementStorageClass& source );
186691 
186692 
186693 
186694 
186695 
186696  // JH (10/24/2005): methods added to support the ast file IO
186697  private:
186698 
186699  /* name AST Memory Allocation Support Functions
186700  \brief Memory allocations support....
186701 
186702  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
186703  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
186704  and support the AST File I/O Mechanism.
186705  */
186706  /* */
186707 
186708  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
186709  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
186710  that I use the same type everywhere, if any changes are made. THe second one declares the type
186711  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
186712  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
186713  a correspinding one in the AST_FILE_IO class!
186714  */
186715  // DQ (9/2/2015): This typedef is no longer used, we can't define the
186716  // comment here (changed to be a C style comment and not be a doxygen comment).
186717  /* \brief Typedef used for low level memory access.
186718  */
186719  // typedef unsigned char* TestType;
186720 
186721  // DQ (9/2/2015): This typedef is no longer used, we can't define the
186722  // comment here (changed to be a C style comment and not be a doxygen comment).
186723  /* \brief Typedef used to hold memory addresses as values.
186724  */
186725  // typedef unsigned long AddressType;
186726 
186727 
186728 
186729  // necessary, to have direct access to the p_freepointer and the private methods !
186731  friend class AST_FILE_IO;
186732 
186734  friend class SgWaitStatementStorageClass;
186735 
186737  friend class AstSpecificDataManagingClass;
186738 
186740  friend class AstSpecificDataManagingClassStorageClass;
186741 
186742  public:
186744  SgWaitStatement( const SgWaitStatementStorageClass& source );
186745 
186746  // private: // JJW hack
186747  /*
186748  name AST Memory Allocation Support Variables
186749  Memory allocations support variables
186750 
186751  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
186752  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
186753  and support the AST File I/O Mechanism.
186754  */
186755  /* */
186756 
186757  public:
186758 
186759  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
186760  // to current node (so that it will work cleanly with build functions to specify patterns).
186761  // virtual SgNode* addRegExpAttribute();
186768 
186769 // *** COMMON CODE SECTION ENDS HERE ***
186770 
186771 
186772 // End of memberFunctionString
186773 // Start of memberFunctionString
186774 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
186775 
186776  // the generated cast function
186777  // friend ROSE_DLL_API SgWaitStatement* isSgWaitStatement ( SgNode* s );
186778 
186779  typedef SgIOStatement base_node_type;
186780 
186781 
186782 // End of memberFunctionString
186783 // Start of memberFunctionString
186784 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
186785 
186786  void post_construction_initialization() override;
186787 
186788 
186789 // End of memberFunctionString
186790 
186791 
186792  public:
186793  virtual ~SgWaitStatement();
186794 
186795 
186796  public:
186797  SgWaitStatement(Sg_File_Info* startOfConstruct );
186798  SgWaitStatement();
186799 
186800  protected:
186801 
186802 
186803 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
186804 
186805 
186806  };
186807 #endif
186808 
186809 // postdeclarations for SgWaitStatement
186810 
186811 /* #line 186812 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
186812 
186813 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
186814 
186815 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
186816 
186817 
186818 /* #line 186819 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
186819 
186820 
186821 
186822 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
186823 
186824 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
186825 // This code is automatically generated for each
186826 // terminal and non-terminal within the defined
186827 // grammar. There is a simple way to change the
186828 // code to fix bugs etc. See the ROSE README file
186829 // for directions.
186830 
186831 // tps: (02/22/2010): Adding DLL export requirements
186832 #include "rosedll.h"
186833 
186834 // predeclarations for SgWhereStatement
186835 
186836 /* #line 186837 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
186837 
186838 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
186839 
186840 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
186841 
186842 #if 1
186843 // Class Definition for SgWhereStatement
186844 class ROSE_DLL_API SgWhereStatement : public SgStatement
186845  {
186846  public:
186847 
186848 
186849 /* #line 186850 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
186850 
186851  virtual SgNode* copy ( SgCopyHelp& help) const override;
186852 // Start of memberFunctionString
186853 /* #line 3648 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
186854 
186855 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
186856  virtual unsigned int cfgIndexForEnd() const override;
186857  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
186858  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
186859 #endif
186860 
186861 
186862 
186863 // End of memberFunctionString
186864 // Start of memberFunctionString
186865 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
186866 
186867 // *** COMMON CODE SECTION BEGINS HERE ***
186868 
186869  public:
186870 
186871  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
186872  // and not required which is required to match the other aspects of the copy mechanism code generation.
186873  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
186874  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
186875  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
186876  // virtual SgNode* copy ( const SgCopyHelp & help) const;
186877 
186879  virtual std::string class_name() const override;
186880 
186882  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
186883 
186885  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
186886  // static const VariantT static_variant = V_SgWhereStatement;
186887  enum { static_variant = V_SgWhereStatement };
186888 
186889  /* the generated cast function */
186891  ROSE_DLL_API friend SgWhereStatement* isSgWhereStatement( SgNode * s );
186892 
186894  ROSE_DLL_API friend const SgWhereStatement* isSgWhereStatement( const SgNode * s );
186895 
186896  // ******************************************
186897  // * Memory Pool / New / Delete
186898  // ******************************************
186899 
186900  public:
186902  static const unsigned pool_size; //
186904  static std::vector<unsigned char *> pools; //
186906  static SgWhereStatement * next_node; //
186907 
186909  static unsigned long initializeStorageClassArray(SgWhereStatementStorageClass *); //
186910 
186912  static void clearMemoryPool(); //
186913  static void deleteMemoryPool(); //
186914 
186916  static void extendMemoryPoolForFileIO(); //
186917 
186919  static SgWhereStatement * getPointerFromGlobalIndex(unsigned long); //
186921  static SgWhereStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
186922 
186924  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
186926  static void resetValidFreepointers(); //
186928  static unsigned long getNumberOfLastValidPointer(); //
186929 
186930 
186931 #if defined(INLINE_FUNCTIONS)
186932 
186933  inline void *operator new (size_t size);
186934 #else
186935 
186936  void *operator new (size_t size);
186937 #endif
186938 
186939  void operator delete (void* pointer, size_t size);
186940 
186941  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
186942  void operator delete (void* pointer)
186943  {
186944  // This is the generated delete operator...
186945  SgWhereStatement::operator delete (pointer,sizeof(SgWhereStatement));
186946  }
186947 
186949  static size_t numberOfNodes();
186950 
186952  static size_t memoryUsage();
186953 
186954  // End of scope which started in IR nodes specific code
186955  /* */
186956 
186957  /* name Internal Functions
186958  \brief Internal functions ... incomplete-documentation
186959 
186960  These functions have been made public as part of the design, but they are suggested for internal use
186961  or by particularly knowledgeable users for specialized tools or applications.
186962 
186963  \internal We could not make these private because they are required by user for special purposes. And
186964  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
186965 
186966  */
186967 
186968  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
186969  // overridden in every class by *generated* implementation
186971  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
186972  // MS: 06/28/02 container of names of variables or container indices
186973  // used used in the traversal to access AST successor nodes
186974  // overridden in every class by *generated* implementation
186977  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
186978 
186979  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
186980  // than all the vector copies. The implementation for these functions is generated for each class.
186982  virtual size_t get_numberOfTraversalSuccessors() override;
186984  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
186986  virtual size_t get_childIndex(SgNode *child) override;
186987 
186988 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
186989  // MS: 08/16/2002 method for generating RTI information
186991  virtual RTIReturnType roseRTI() override;
186992 #endif
186993  /* */
186994 
186995 
186996 
186997  /* name Deprecated Functions
186998  \brief Deprecated functions ... incomplete-documentation
186999 
187000  These functions have been deprecated from use.
187001  */
187002  /* */
187003 
187005  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
187006 
187007  // JJW (10/16/2008): Changed to a single function in Node.code, and put
187008  // getVariant() in #if 0 block to prevent confusing Doxygen
187009 #if 0
187010 
187011  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
187013  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
187014 #endif
187015  /* */
187016 
187017 
187018 
187019 
187020  public:
187021  /* name Traversal Support Functions
187022  \brief Traversal support functions ... incomplete-documentation
187023 
187024  These functions have been made public as part of the design, but they are suggested for internal use
187025  or by particularly knowledgable users for specialized tools or applications.
187026  */
187027  /* */
187028 
187029  // DQ (11/26/2005): Support for visitor pattern mechanims
187030  // (inferior to ROSE traversal mechanism, experimental).
187034 
187035  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
187037  virtual void accept (ROSE_VisitorPattern & visitor) override;
187038 
187039  // DQ (12/26/2005): Support for traversal based on the memory pool
187042  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
187043 
187046  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
187047 
187048  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
187049  // This traversal helps support internal tools that call static member functions.
187050  // note: this function operates on the memory pools.
187053  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
187054  /* */
187055 
187056 
187057  public:
187058  /* name Memory Allocation Functions
187059  \brief Memory allocations functions ... incomplete-documentation
187060 
187061  These functions have been made public as part of the design, but they are suggested for internal use
187062  or by particularly knowledgable users for specialized tools or applications.
187063  */
187064  /* */
187065 
187076  virtual bool isInMemoryPool() override;
187077 
187088  virtual void checkDataMemberPointersIfInMemoryPool() override;
187089 
187090  // DQ (4/30/2006): Modified to be a const function.
187105  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
187106 
187116  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
187117 
187129  virtual long getChildIndex( SgNode* childNode ) const override;
187130 
187131  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
187132  // comment here (changed to be a C style comment and not be a doxygen comment).
187133  /* \brief Constructor for use by AST File I/O Mechanism
187134 
187135  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
187136  which obtained via fast binary file I/O from disk.
187137  */
187138  // SgWhereStatement( SgWhereStatementStorageClass& source );
187139 
187140 
187141 
187142 
187143 
187144  // JH (10/24/2005): methods added to support the ast file IO
187145  private:
187146 
187147  /* name AST Memory Allocation Support Functions
187148  \brief Memory allocations support....
187149 
187150  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
187151  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
187152  and support the AST File I/O Mechanism.
187153  */
187154  /* */
187155 
187156  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
187157  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
187158  that I use the same type everywhere, if any changes are made. THe second one declares the type
187159  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
187160  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
187161  a correspinding one in the AST_FILE_IO class!
187162  */
187163  // DQ (9/2/2015): This typedef is no longer used, we can't define the
187164  // comment here (changed to be a C style comment and not be a doxygen comment).
187165  /* \brief Typedef used for low level memory access.
187166  */
187167  // typedef unsigned char* TestType;
187168 
187169  // DQ (9/2/2015): This typedef is no longer used, we can't define the
187170  // comment here (changed to be a C style comment and not be a doxygen comment).
187171  /* \brief Typedef used to hold memory addresses as values.
187172  */
187173  // typedef unsigned long AddressType;
187174 
187175 
187176 
187177  // necessary, to have direct access to the p_freepointer and the private methods !
187179  friend class AST_FILE_IO;
187180 
187182  friend class SgWhereStatementStorageClass;
187183 
187185  friend class AstSpecificDataManagingClass;
187186 
187188  friend class AstSpecificDataManagingClassStorageClass;
187189 
187190  public:
187192  SgWhereStatement( const SgWhereStatementStorageClass& source );
187193 
187194  // private: // JJW hack
187195  /*
187196  name AST Memory Allocation Support Variables
187197  Memory allocations support variables
187198 
187199  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
187200  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
187201  and support the AST File I/O Mechanism.
187202  */
187203  /* */
187204 
187205  public:
187206 
187207  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
187208  // to current node (so that it will work cleanly with build functions to specify patterns).
187209  // virtual SgNode* addRegExpAttribute();
187216 
187217 // *** COMMON CODE SECTION ENDS HERE ***
187218 
187219 
187220 // End of memberFunctionString
187221 // Start of memberFunctionString
187222 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
187223 
187224  // the generated cast function
187225  // friend ROSE_DLL_API SgWhereStatement* isSgWhereStatement ( SgNode* s );
187226 
187227  typedef SgStatement base_node_type;
187228 
187229 
187230 // End of memberFunctionString
187231 // Start of memberFunctionString
187232 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
187233 
187234  void post_construction_initialization() override;
187235 
187236 
187237 // End of memberFunctionString
187238 
187239  public:
187240  SgExpression* get_condition() const;
187241  void set_condition(SgExpression* condition);
187242 
187243  public:
187244  SgBasicBlock* get_body() const;
187245  void set_body(SgBasicBlock* body);
187246 
187247  public:
187248  SgElseWhereStatement* get_elsewhere() const;
187249  void set_elsewhere(SgElseWhereStatement* elsewhere);
187250 
187251  public:
187252  SgLabelRefExp* get_end_numeric_label() const /* (getDataAccessFunctionPrototypeString) */;
187253  void set_end_numeric_label(SgLabelRefExp* end_numeric_label) override /* (getDataAccessFunctionPrototypeString) */;
187254 
187255  public:
187256  std::string get_string_label() const;
187257  void set_string_label(std::string string_label);
187258 
187259  public:
187260  bool get_has_end_statement() const;
187261  void set_has_end_statement(bool has_end_statement);
187262 
187263 
187264  public:
187265  virtual ~SgWhereStatement();
187266 
187267 
187268  public:
187269  SgWhereStatement(Sg_File_Info* startOfConstruct , SgExpression* condition = NULL, SgBasicBlock* body = NULL, SgElseWhereStatement* elsewhere = NULL);
187270  SgWhereStatement(SgExpression* condition, SgBasicBlock* body, SgElseWhereStatement* elsewhere);
187271 
187272  protected:
187273 // Start of memberFunctionString
187274 SgExpression* p_condition;
187275 
187276 // End of memberFunctionString
187277 // Start of memberFunctionString
187278 SgBasicBlock* p_body;
187279 
187280 // End of memberFunctionString
187281 // Start of memberFunctionString
187282 SgElseWhereStatement* p_elsewhere;
187283 
187284 // End of memberFunctionString
187285 // Start of memberFunctionString
187286 SgLabelRefExp* p_end_numeric_label;
187287 
187288 // End of memberFunctionString
187289 // Start of memberFunctionString
187290 std::string p_string_label;
187291 
187292 // End of memberFunctionString
187293 // Start of memberFunctionString
187294 bool p_has_end_statement;
187295 
187296 // End of memberFunctionString
187297 
187298 
187299 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
187300 
187301 
187302  };
187303 #endif
187304 
187305 // postdeclarations for SgWhereStatement
187306 
187307 /* #line 187308 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
187308 
187309 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
187310 
187311 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
187312 
187313 
187314 /* #line 187315 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
187315 
187316 
187317 
187318 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
187319 
187320 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
187321 // This code is automatically generated for each
187322 // terminal and non-terminal within the defined
187323 // grammar. There is a simple way to change the
187324 // code to fix bugs etc. See the ROSE README file
187325 // for directions.
187326 
187327 // tps: (02/22/2010): Adding DLL export requirements
187328 #include "rosedll.h"
187329 
187330 // predeclarations for SgElseWhereStatement
187331 
187332 /* #line 187333 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
187333 
187334 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
187335 
187336 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
187337 
187338 #if 1
187339 // Class Definition for SgElseWhereStatement
187340 class ROSE_DLL_API SgElseWhereStatement : public SgStatement
187341  {
187342  public:
187343 
187344 
187345 /* #line 187346 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
187346 
187347  virtual SgNode* copy ( SgCopyHelp& help) const override;
187348 // Start of memberFunctionString
187349 /* #line 3657 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
187350 
187351 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
187352  virtual unsigned int cfgIndexForEnd() const override;
187353  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
187354  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
187355 #endif
187356 
187357 
187358 
187359 // End of memberFunctionString
187360 // Start of memberFunctionString
187361 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
187362 
187363 // *** COMMON CODE SECTION BEGINS HERE ***
187364 
187365  public:
187366 
187367  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
187368  // and not required which is required to match the other aspects of the copy mechanism code generation.
187369  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
187370  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
187371  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
187372  // virtual SgNode* copy ( const SgCopyHelp & help) const;
187373 
187375  virtual std::string class_name() const override;
187376 
187378  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
187379 
187381  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
187382  // static const VariantT static_variant = V_SgElseWhereStatement;
187383  enum { static_variant = V_SgElseWhereStatement };
187384 
187385  /* the generated cast function */
187387  ROSE_DLL_API friend SgElseWhereStatement* isSgElseWhereStatement( SgNode * s );
187388 
187390  ROSE_DLL_API friend const SgElseWhereStatement* isSgElseWhereStatement( const SgNode * s );
187391 
187392  // ******************************************
187393  // * Memory Pool / New / Delete
187394  // ******************************************
187395 
187396  public:
187398  static const unsigned pool_size; //
187400  static std::vector<unsigned char *> pools; //
187402  static SgElseWhereStatement * next_node; //
187403 
187405  static unsigned long initializeStorageClassArray(SgElseWhereStatementStorageClass *); //
187406 
187408  static void clearMemoryPool(); //
187409  static void deleteMemoryPool(); //
187410 
187412  static void extendMemoryPoolForFileIO(); //
187413 
187415  static SgElseWhereStatement * getPointerFromGlobalIndex(unsigned long); //
187417  static SgElseWhereStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
187418 
187420  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
187422  static void resetValidFreepointers(); //
187424  static unsigned long getNumberOfLastValidPointer(); //
187425 
187426 
187427 #if defined(INLINE_FUNCTIONS)
187428 
187429  inline void *operator new (size_t size);
187430 #else
187431 
187432  void *operator new (size_t size);
187433 #endif
187434 
187435  void operator delete (void* pointer, size_t size);
187436 
187437  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
187438  void operator delete (void* pointer)
187439  {
187440  // This is the generated delete operator...
187441  SgElseWhereStatement::operator delete (pointer,sizeof(SgElseWhereStatement));
187442  }
187443 
187445  static size_t numberOfNodes();
187446 
187448  static size_t memoryUsage();
187449 
187450  // End of scope which started in IR nodes specific code
187451  /* */
187452 
187453  /* name Internal Functions
187454  \brief Internal functions ... incomplete-documentation
187455 
187456  These functions have been made public as part of the design, but they are suggested for internal use
187457  or by particularly knowledgeable users for specialized tools or applications.
187458 
187459  \internal We could not make these private because they are required by user for special purposes. And
187460  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
187461 
187462  */
187463 
187464  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
187465  // overridden in every class by *generated* implementation
187467  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
187468  // MS: 06/28/02 container of names of variables or container indices
187469  // used used in the traversal to access AST successor nodes
187470  // overridden in every class by *generated* implementation
187473  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
187474 
187475  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
187476  // than all the vector copies. The implementation for these functions is generated for each class.
187478  virtual size_t get_numberOfTraversalSuccessors() override;
187480  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
187482  virtual size_t get_childIndex(SgNode *child) override;
187483 
187484 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
187485  // MS: 08/16/2002 method for generating RTI information
187487  virtual RTIReturnType roseRTI() override;
187488 #endif
187489  /* */
187490 
187491 
187492 
187493  /* name Deprecated Functions
187494  \brief Deprecated functions ... incomplete-documentation
187495 
187496  These functions have been deprecated from use.
187497  */
187498  /* */
187499 
187501  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
187502 
187503  // JJW (10/16/2008): Changed to a single function in Node.code, and put
187504  // getVariant() in #if 0 block to prevent confusing Doxygen
187505 #if 0
187506 
187507  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
187509  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
187510 #endif
187511  /* */
187512 
187513 
187514 
187515 
187516  public:
187517  /* name Traversal Support Functions
187518  \brief Traversal support functions ... incomplete-documentation
187519 
187520  These functions have been made public as part of the design, but they are suggested for internal use
187521  or by particularly knowledgable users for specialized tools or applications.
187522  */
187523  /* */
187524 
187525  // DQ (11/26/2005): Support for visitor pattern mechanims
187526  // (inferior to ROSE traversal mechanism, experimental).
187530 
187531  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
187533  virtual void accept (ROSE_VisitorPattern & visitor) override;
187534 
187535  // DQ (12/26/2005): Support for traversal based on the memory pool
187538  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
187539 
187542  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
187543 
187544  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
187545  // This traversal helps support internal tools that call static member functions.
187546  // note: this function operates on the memory pools.
187549  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
187550  /* */
187551 
187552 
187553  public:
187554  /* name Memory Allocation Functions
187555  \brief Memory allocations functions ... incomplete-documentation
187556 
187557  These functions have been made public as part of the design, but they are suggested for internal use
187558  or by particularly knowledgable users for specialized tools or applications.
187559  */
187560  /* */
187561 
187572  virtual bool isInMemoryPool() override;
187573 
187584  virtual void checkDataMemberPointersIfInMemoryPool() override;
187585 
187586  // DQ (4/30/2006): Modified to be a const function.
187601  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
187602 
187612  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
187613 
187625  virtual long getChildIndex( SgNode* childNode ) const override;
187626 
187627  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
187628  // comment here (changed to be a C style comment and not be a doxygen comment).
187629  /* \brief Constructor for use by AST File I/O Mechanism
187630 
187631  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
187632  which obtained via fast binary file I/O from disk.
187633  */
187634  // SgElseWhereStatement( SgElseWhereStatementStorageClass& source );
187635 
187636 
187637 
187638 
187639 
187640  // JH (10/24/2005): methods added to support the ast file IO
187641  private:
187642 
187643  /* name AST Memory Allocation Support Functions
187644  \brief Memory allocations support....
187645 
187646  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
187647  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
187648  and support the AST File I/O Mechanism.
187649  */
187650  /* */
187651 
187652  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
187653  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
187654  that I use the same type everywhere, if any changes are made. THe second one declares the type
187655  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
187656  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
187657  a correspinding one in the AST_FILE_IO class!
187658  */
187659  // DQ (9/2/2015): This typedef is no longer used, we can't define the
187660  // comment here (changed to be a C style comment and not be a doxygen comment).
187661  /* \brief Typedef used for low level memory access.
187662  */
187663  // typedef unsigned char* TestType;
187664 
187665  // DQ (9/2/2015): This typedef is no longer used, we can't define the
187666  // comment here (changed to be a C style comment and not be a doxygen comment).
187667  /* \brief Typedef used to hold memory addresses as values.
187668  */
187669  // typedef unsigned long AddressType;
187670 
187671 
187672 
187673  // necessary, to have direct access to the p_freepointer and the private methods !
187675  friend class AST_FILE_IO;
187676 
187678  friend class SgElseWhereStatementStorageClass;
187679 
187681  friend class AstSpecificDataManagingClass;
187682 
187684  friend class AstSpecificDataManagingClassStorageClass;
187685 
187686  public:
187688  SgElseWhereStatement( const SgElseWhereStatementStorageClass& source );
187689 
187690  // private: // JJW hack
187691  /*
187692  name AST Memory Allocation Support Variables
187693  Memory allocations support variables
187694 
187695  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
187696  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
187697  and support the AST File I/O Mechanism.
187698  */
187699  /* */
187700 
187701  public:
187702 
187703  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
187704  // to current node (so that it will work cleanly with build functions to specify patterns).
187705  // virtual SgNode* addRegExpAttribute();
187712 
187713 // *** COMMON CODE SECTION ENDS HERE ***
187714 
187715 
187716 // End of memberFunctionString
187717 // Start of memberFunctionString
187718 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
187719 
187720  // the generated cast function
187721  // friend ROSE_DLL_API SgElseWhereStatement* isSgElseWhereStatement ( SgNode* s );
187722 
187723  typedef SgStatement base_node_type;
187724 
187725 
187726 // End of memberFunctionString
187727 // Start of memberFunctionString
187728 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
187729 
187730  void post_construction_initialization() override;
187731 
187732 
187733 // End of memberFunctionString
187734 
187735  public:
187736  SgExpression* get_condition() const;
187737  void set_condition(SgExpression* condition);
187738 
187739  public:
187740  SgBasicBlock* get_body() const;
187741  void set_body(SgBasicBlock* body);
187742 
187743  public:
187744  SgElseWhereStatement* get_elsewhere() const;
187745  void set_elsewhere(SgElseWhereStatement* elsewhere);
187746 
187747 
187748  public:
187749  virtual ~SgElseWhereStatement();
187750 
187751 
187752  public:
187753  SgElseWhereStatement(Sg_File_Info* startOfConstruct , SgExpression* condition = NULL, SgBasicBlock* body = NULL, SgElseWhereStatement* elsewhere = NULL);
187754  SgElseWhereStatement(SgExpression* condition, SgBasicBlock* body, SgElseWhereStatement* elsewhere);
187755 
187756  protected:
187757 // Start of memberFunctionString
187758 SgExpression* p_condition;
187759 
187760 // End of memberFunctionString
187761 // Start of memberFunctionString
187762 SgBasicBlock* p_body;
187763 
187764 // End of memberFunctionString
187765 // Start of memberFunctionString
187766 SgElseWhereStatement* p_elsewhere;
187767 
187768 // End of memberFunctionString
187769 
187770 
187771 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
187772 
187773 
187774  };
187775 #endif
187776 
187777 // postdeclarations for SgElseWhereStatement
187778 
187779 /* #line 187780 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
187780 
187781 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
187782 
187783 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
187784 
187785 
187786 /* #line 187787 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
187787 
187788 
187789 
187790 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
187791 
187792 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
187793 // This code is automatically generated for each
187794 // terminal and non-terminal within the defined
187795 // grammar. There is a simple way to change the
187796 // code to fix bugs etc. See the ROSE README file
187797 // for directions.
187798 
187799 // tps: (02/22/2010): Adding DLL export requirements
187800 #include "rosedll.h"
187801 
187802 // predeclarations for SgNullifyStatement
187803 
187804 /* #line 187805 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
187805 
187806 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
187807 
187808 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
187809 
187810 #if 1
187811 // Class Definition for SgNullifyStatement
187812 class ROSE_DLL_API SgNullifyStatement : public SgStatement
187813  {
187814  public:
187815 
187816 
187817 /* #line 187818 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
187818 
187819  virtual SgNode* copy ( SgCopyHelp& help) const override;
187820 // Start of memberFunctionString
187821 /* #line 3666 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
187822 
187823 
187824 
187825 // End of memberFunctionString
187826 // Start of memberFunctionString
187827 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
187828 
187829 // *** COMMON CODE SECTION BEGINS HERE ***
187830 
187831  public:
187832 
187833  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
187834  // and not required which is required to match the other aspects of the copy mechanism code generation.
187835  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
187836  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
187837  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
187838  // virtual SgNode* copy ( const SgCopyHelp & help) const;
187839 
187841  virtual std::string class_name() const override;
187842 
187844  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
187845 
187847  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
187848  // static const VariantT static_variant = V_SgNullifyStatement;
187849  enum { static_variant = V_SgNullifyStatement };
187850 
187851  /* the generated cast function */
187853  ROSE_DLL_API friend SgNullifyStatement* isSgNullifyStatement( SgNode * s );
187854 
187856  ROSE_DLL_API friend const SgNullifyStatement* isSgNullifyStatement( const SgNode * s );
187857 
187858  // ******************************************
187859  // * Memory Pool / New / Delete
187860  // ******************************************
187861 
187862  public:
187864  static const unsigned pool_size; //
187866  static std::vector<unsigned char *> pools; //
187868  static SgNullifyStatement * next_node; //
187869 
187871  static unsigned long initializeStorageClassArray(SgNullifyStatementStorageClass *); //
187872 
187874  static void clearMemoryPool(); //
187875  static void deleteMemoryPool(); //
187876 
187878  static void extendMemoryPoolForFileIO(); //
187879 
187881  static SgNullifyStatement * getPointerFromGlobalIndex(unsigned long); //
187883  static SgNullifyStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
187884 
187886  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
187888  static void resetValidFreepointers(); //
187890  static unsigned long getNumberOfLastValidPointer(); //
187891 
187892 
187893 #if defined(INLINE_FUNCTIONS)
187894 
187895  inline void *operator new (size_t size);
187896 #else
187897 
187898  void *operator new (size_t size);
187899 #endif
187900 
187901  void operator delete (void* pointer, size_t size);
187902 
187903  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
187904  void operator delete (void* pointer)
187905  {
187906  // This is the generated delete operator...
187907  SgNullifyStatement::operator delete (pointer,sizeof(SgNullifyStatement));
187908  }
187909 
187911  static size_t numberOfNodes();
187912 
187914  static size_t memoryUsage();
187915 
187916  // End of scope which started in IR nodes specific code
187917  /* */
187918 
187919  /* name Internal Functions
187920  \brief Internal functions ... incomplete-documentation
187921 
187922  These functions have been made public as part of the design, but they are suggested for internal use
187923  or by particularly knowledgeable users for specialized tools or applications.
187924 
187925  \internal We could not make these private because they are required by user for special purposes. And
187926  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
187927 
187928  */
187929 
187930  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
187931  // overridden in every class by *generated* implementation
187933  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
187934  // MS: 06/28/02 container of names of variables or container indices
187935  // used used in the traversal to access AST successor nodes
187936  // overridden in every class by *generated* implementation
187939  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
187940 
187941  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
187942  // than all the vector copies. The implementation for these functions is generated for each class.
187944  virtual size_t get_numberOfTraversalSuccessors() override;
187946  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
187948  virtual size_t get_childIndex(SgNode *child) override;
187949 
187950 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
187951  // MS: 08/16/2002 method for generating RTI information
187953  virtual RTIReturnType roseRTI() override;
187954 #endif
187955  /* */
187956 
187957 
187958 
187959  /* name Deprecated Functions
187960  \brief Deprecated functions ... incomplete-documentation
187961 
187962  These functions have been deprecated from use.
187963  */
187964  /* */
187965 
187967  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
187968 
187969  // JJW (10/16/2008): Changed to a single function in Node.code, and put
187970  // getVariant() in #if 0 block to prevent confusing Doxygen
187971 #if 0
187972 
187973  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
187975  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
187976 #endif
187977  /* */
187978 
187979 
187980 
187981 
187982  public:
187983  /* name Traversal Support Functions
187984  \brief Traversal support functions ... incomplete-documentation
187985 
187986  These functions have been made public as part of the design, but they are suggested for internal use
187987  or by particularly knowledgable users for specialized tools or applications.
187988  */
187989  /* */
187990 
187991  // DQ (11/26/2005): Support for visitor pattern mechanims
187992  // (inferior to ROSE traversal mechanism, experimental).
187996 
187997  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
187999  virtual void accept (ROSE_VisitorPattern & visitor) override;
188000 
188001  // DQ (12/26/2005): Support for traversal based on the memory pool
188004  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
188005 
188008  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
188009 
188010  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
188011  // This traversal helps support internal tools that call static member functions.
188012  // note: this function operates on the memory pools.
188015  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
188016  /* */
188017 
188018 
188019  public:
188020  /* name Memory Allocation Functions
188021  \brief Memory allocations functions ... incomplete-documentation
188022 
188023  These functions have been made public as part of the design, but they are suggested for internal use
188024  or by particularly knowledgable users for specialized tools or applications.
188025  */
188026  /* */
188027 
188038  virtual bool isInMemoryPool() override;
188039 
188050  virtual void checkDataMemberPointersIfInMemoryPool() override;
188051 
188052  // DQ (4/30/2006): Modified to be a const function.
188067  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
188068 
188078  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
188079 
188091  virtual long getChildIndex( SgNode* childNode ) const override;
188092 
188093  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
188094  // comment here (changed to be a C style comment and not be a doxygen comment).
188095  /* \brief Constructor for use by AST File I/O Mechanism
188096 
188097  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
188098  which obtained via fast binary file I/O from disk.
188099  */
188100  // SgNullifyStatement( SgNullifyStatementStorageClass& source );
188101 
188102 
188103 
188104 
188105 
188106  // JH (10/24/2005): methods added to support the ast file IO
188107  private:
188108 
188109  /* name AST Memory Allocation Support Functions
188110  \brief Memory allocations support....
188111 
188112  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
188113  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
188114  and support the AST File I/O Mechanism.
188115  */
188116  /* */
188117 
188118  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
188119  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
188120  that I use the same type everywhere, if any changes are made. THe second one declares the type
188121  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
188122  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
188123  a correspinding one in the AST_FILE_IO class!
188124  */
188125  // DQ (9/2/2015): This typedef is no longer used, we can't define the
188126  // comment here (changed to be a C style comment and not be a doxygen comment).
188127  /* \brief Typedef used for low level memory access.
188128  */
188129  // typedef unsigned char* TestType;
188130 
188131  // DQ (9/2/2015): This typedef is no longer used, we can't define the
188132  // comment here (changed to be a C style comment and not be a doxygen comment).
188133  /* \brief Typedef used to hold memory addresses as values.
188134  */
188135  // typedef unsigned long AddressType;
188136 
188137 
188138 
188139  // necessary, to have direct access to the p_freepointer and the private methods !
188141  friend class AST_FILE_IO;
188142 
188144  friend class SgNullifyStatementStorageClass;
188145 
188147  friend class AstSpecificDataManagingClass;
188148 
188150  friend class AstSpecificDataManagingClassStorageClass;
188151 
188152  public:
188154  SgNullifyStatement( const SgNullifyStatementStorageClass& source );
188155 
188156  // private: // JJW hack
188157  /*
188158  name AST Memory Allocation Support Variables
188159  Memory allocations support variables
188160 
188161  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
188162  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
188163  and support the AST File I/O Mechanism.
188164  */
188165  /* */
188166 
188167  public:
188168 
188169  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
188170  // to current node (so that it will work cleanly with build functions to specify patterns).
188171  // virtual SgNode* addRegExpAttribute();
188178 
188179 // *** COMMON CODE SECTION ENDS HERE ***
188180 
188181 
188182 // End of memberFunctionString
188183 // Start of memberFunctionString
188184 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
188185 
188186  // the generated cast function
188187  // friend ROSE_DLL_API SgNullifyStatement* isSgNullifyStatement ( SgNode* s );
188188 
188189  typedef SgStatement base_node_type;
188190 
188191 
188192 // End of memberFunctionString
188193 // Start of memberFunctionString
188194 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
188195 
188196  void post_construction_initialization() override;
188197 
188198 
188199 // End of memberFunctionString
188200 
188201  public:
188202  SgExprListExp* get_pointer_list() const;
188203  void set_pointer_list(SgExprListExp* pointer_list);
188204 
188205 
188206  public:
188207  virtual ~SgNullifyStatement();
188208 
188209 
188210  public:
188211  SgNullifyStatement(Sg_File_Info* startOfConstruct );
188212  SgNullifyStatement();
188213 
188214  protected:
188215 // Start of memberFunctionString
188216 SgExprListExp* p_pointer_list;
188217 
188218 // End of memberFunctionString
188219 
188220 
188221 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
188222 
188223 
188224  };
188225 #endif
188226 
188227 // postdeclarations for SgNullifyStatement
188228 
188229 /* #line 188230 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
188230 
188231 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
188232 
188233 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
188234 
188235 
188236 /* #line 188237 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
188237 
188238 
188239 
188240 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
188241 
188242 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
188243 // This code is automatically generated for each
188244 // terminal and non-terminal within the defined
188245 // grammar. There is a simple way to change the
188246 // code to fix bugs etc. See the ROSE README file
188247 // for directions.
188248 
188249 // tps: (02/22/2010): Adding DLL export requirements
188250 #include "rosedll.h"
188251 
188252 // predeclarations for SgArithmeticIfStatement
188253 
188254 /* #line 188255 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
188255 
188256 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
188257 
188258 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
188259 
188260 #if 1
188261 // Class Definition for SgArithmeticIfStatement
188262 class ROSE_DLL_API SgArithmeticIfStatement : public SgStatement
188263  {
188264  public:
188265 
188266 
188267 /* #line 188268 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
188268 
188269  virtual SgNode* copy ( SgCopyHelp& help) const override;
188270 // Start of memberFunctionString
188271 /* #line 3753 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
188272 
188273 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
188274  virtual unsigned int cfgIndexForEnd() const override;
188275  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
188276  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
188277 #endif
188278 
188279 
188280 
188281 // End of memberFunctionString
188282 // Start of memberFunctionString
188283 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
188284 
188285 // *** COMMON CODE SECTION BEGINS HERE ***
188286 
188287  public:
188288 
188289  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
188290  // and not required which is required to match the other aspects of the copy mechanism code generation.
188291  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
188292  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
188293  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
188294  // virtual SgNode* copy ( const SgCopyHelp & help) const;
188295 
188297  virtual std::string class_name() const override;
188298 
188300  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
188301 
188303  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
188304  // static const VariantT static_variant = V_SgArithmeticIfStatement;
188305  enum { static_variant = V_SgArithmeticIfStatement };
188306 
188307  /* the generated cast function */
188309  ROSE_DLL_API friend SgArithmeticIfStatement* isSgArithmeticIfStatement( SgNode * s );
188310 
188312  ROSE_DLL_API friend const SgArithmeticIfStatement* isSgArithmeticIfStatement( const SgNode * s );
188313 
188314  // ******************************************
188315  // * Memory Pool / New / Delete
188316  // ******************************************
188317 
188318  public:
188320  static const unsigned pool_size; //
188322  static std::vector<unsigned char *> pools; //
188324  static SgArithmeticIfStatement * next_node; //
188325 
188327  static unsigned long initializeStorageClassArray(SgArithmeticIfStatementStorageClass *); //
188328 
188330  static void clearMemoryPool(); //
188331  static void deleteMemoryPool(); //
188332 
188334  static void extendMemoryPoolForFileIO(); //
188335 
188337  static SgArithmeticIfStatement * getPointerFromGlobalIndex(unsigned long); //
188339  static SgArithmeticIfStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
188340 
188342  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
188344  static void resetValidFreepointers(); //
188346  static unsigned long getNumberOfLastValidPointer(); //
188347 
188348 
188349 #if defined(INLINE_FUNCTIONS)
188350 
188351  inline void *operator new (size_t size);
188352 #else
188353 
188354  void *operator new (size_t size);
188355 #endif
188356 
188357  void operator delete (void* pointer, size_t size);
188358 
188359  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
188360  void operator delete (void* pointer)
188361  {
188362  // This is the generated delete operator...
188363  SgArithmeticIfStatement::operator delete (pointer,sizeof(SgArithmeticIfStatement));
188364  }
188365 
188367  static size_t numberOfNodes();
188368 
188370  static size_t memoryUsage();
188371 
188372  // End of scope which started in IR nodes specific code
188373  /* */
188374 
188375  /* name Internal Functions
188376  \brief Internal functions ... incomplete-documentation
188377 
188378  These functions have been made public as part of the design, but they are suggested for internal use
188379  or by particularly knowledgeable users for specialized tools or applications.
188380 
188381  \internal We could not make these private because they are required by user for special purposes. And
188382  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
188383 
188384  */
188385 
188386  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
188387  // overridden in every class by *generated* implementation
188389  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
188390  // MS: 06/28/02 container of names of variables or container indices
188391  // used used in the traversal to access AST successor nodes
188392  // overridden in every class by *generated* implementation
188395  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
188396 
188397  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
188398  // than all the vector copies. The implementation for these functions is generated for each class.
188400  virtual size_t get_numberOfTraversalSuccessors() override;
188402  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
188404  virtual size_t get_childIndex(SgNode *child) override;
188405 
188406 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
188407  // MS: 08/16/2002 method for generating RTI information
188409  virtual RTIReturnType roseRTI() override;
188410 #endif
188411  /* */
188412 
188413 
188414 
188415  /* name Deprecated Functions
188416  \brief Deprecated functions ... incomplete-documentation
188417 
188418  These functions have been deprecated from use.
188419  */
188420  /* */
188421 
188423  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
188424 
188425  // JJW (10/16/2008): Changed to a single function in Node.code, and put
188426  // getVariant() in #if 0 block to prevent confusing Doxygen
188427 #if 0
188428 
188429  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
188431  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
188432 #endif
188433  /* */
188434 
188435 
188436 
188437 
188438  public:
188439  /* name Traversal Support Functions
188440  \brief Traversal support functions ... incomplete-documentation
188441 
188442  These functions have been made public as part of the design, but they are suggested for internal use
188443  or by particularly knowledgable users for specialized tools or applications.
188444  */
188445  /* */
188446 
188447  // DQ (11/26/2005): Support for visitor pattern mechanims
188448  // (inferior to ROSE traversal mechanism, experimental).
188452 
188453  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
188455  virtual void accept (ROSE_VisitorPattern & visitor) override;
188456 
188457  // DQ (12/26/2005): Support for traversal based on the memory pool
188460  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
188461 
188464  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
188465 
188466  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
188467  // This traversal helps support internal tools that call static member functions.
188468  // note: this function operates on the memory pools.
188471  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
188472  /* */
188473 
188474 
188475  public:
188476  /* name Memory Allocation Functions
188477  \brief Memory allocations functions ... incomplete-documentation
188478 
188479  These functions have been made public as part of the design, but they are suggested for internal use
188480  or by particularly knowledgable users for specialized tools or applications.
188481  */
188482  /* */
188483 
188494  virtual bool isInMemoryPool() override;
188495 
188506  virtual void checkDataMemberPointersIfInMemoryPool() override;
188507 
188508  // DQ (4/30/2006): Modified to be a const function.
188523  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
188524 
188534  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
188535 
188547  virtual long getChildIndex( SgNode* childNode ) const override;
188548 
188549  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
188550  // comment here (changed to be a C style comment and not be a doxygen comment).
188551  /* \brief Constructor for use by AST File I/O Mechanism
188552 
188553  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
188554  which obtained via fast binary file I/O from disk.
188555  */
188556  // SgArithmeticIfStatement( SgArithmeticIfStatementStorageClass& source );
188557 
188558 
188559 
188560 
188561 
188562  // JH (10/24/2005): methods added to support the ast file IO
188563  private:
188564 
188565  /* name AST Memory Allocation Support Functions
188566  \brief Memory allocations support....
188567 
188568  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
188569  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
188570  and support the AST File I/O Mechanism.
188571  */
188572  /* */
188573 
188574  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
188575  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
188576  that I use the same type everywhere, if any changes are made. THe second one declares the type
188577  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
188578  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
188579  a correspinding one in the AST_FILE_IO class!
188580  */
188581  // DQ (9/2/2015): This typedef is no longer used, we can't define the
188582  // comment here (changed to be a C style comment and not be a doxygen comment).
188583  /* \brief Typedef used for low level memory access.
188584  */
188585  // typedef unsigned char* TestType;
188586 
188587  // DQ (9/2/2015): This typedef is no longer used, we can't define the
188588  // comment here (changed to be a C style comment and not be a doxygen comment).
188589  /* \brief Typedef used to hold memory addresses as values.
188590  */
188591  // typedef unsigned long AddressType;
188592 
188593 
188594 
188595  // necessary, to have direct access to the p_freepointer and the private methods !
188597  friend class AST_FILE_IO;
188598 
188600  friend class SgArithmeticIfStatementStorageClass;
188601 
188603  friend class AstSpecificDataManagingClass;
188604 
188606  friend class AstSpecificDataManagingClassStorageClass;
188607 
188608  public:
188610  SgArithmeticIfStatement( const SgArithmeticIfStatementStorageClass& source );
188611 
188612  // private: // JJW hack
188613  /*
188614  name AST Memory Allocation Support Variables
188615  Memory allocations support variables
188616 
188617  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
188618  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
188619  and support the AST File I/O Mechanism.
188620  */
188621  /* */
188622 
188623  public:
188624 
188625  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
188626  // to current node (so that it will work cleanly with build functions to specify patterns).
188627  // virtual SgNode* addRegExpAttribute();
188634 
188635 // *** COMMON CODE SECTION ENDS HERE ***
188636 
188637 
188638 // End of memberFunctionString
188639 // Start of memberFunctionString
188640 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
188641 
188642  // the generated cast function
188643  // friend ROSE_DLL_API SgArithmeticIfStatement* isSgArithmeticIfStatement ( SgNode* s );
188644 
188645  typedef SgStatement base_node_type;
188646 
188647 
188648 // End of memberFunctionString
188649 // Start of memberFunctionString
188650 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
188651 
188652  void post_construction_initialization() override;
188653 
188654 
188655 // End of memberFunctionString
188656 
188657  public:
188658  SgExpression* get_conditional() const;
188659  void set_conditional(SgExpression* conditional);
188660 
188661  public:
188662  SgLabelRefExp* get_less_label() const;
188663  void set_less_label(SgLabelRefExp* less_label);
188664 
188665  public:
188666  SgLabelRefExp* get_equal_label() const;
188667  void set_equal_label(SgLabelRefExp* equal_label);
188668 
188669  public:
188670  SgLabelRefExp* get_greater_label() const;
188671  void set_greater_label(SgLabelRefExp* greater_label);
188672 
188673 
188674  public:
188675  virtual ~SgArithmeticIfStatement();
188676 
188677 
188678  public:
188679  SgArithmeticIfStatement(Sg_File_Info* startOfConstruct , SgExpression* conditional = NULL, SgLabelRefExp* less_label = NULL, SgLabelRefExp* equal_label = NULL, SgLabelRefExp* greater_label = NULL);
188680  SgArithmeticIfStatement(SgExpression* conditional, SgLabelRefExp* less_label, SgLabelRefExp* equal_label, SgLabelRefExp* greater_label);
188681 
188682  protected:
188683 // Start of memberFunctionString
188684 SgExpression* p_conditional;
188685 
188686 // End of memberFunctionString
188687 // Start of memberFunctionString
188688 SgLabelRefExp* p_less_label;
188689 
188690 // End of memberFunctionString
188691 // Start of memberFunctionString
188692 SgLabelRefExp* p_equal_label;
188693 
188694 // End of memberFunctionString
188695 // Start of memberFunctionString
188696 SgLabelRefExp* p_greater_label;
188697 
188698 // End of memberFunctionString
188699 
188700 
188701 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
188702 
188703 
188704  };
188705 #endif
188706 
188707 // postdeclarations for SgArithmeticIfStatement
188708 
188709 /* #line 188710 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
188710 
188711 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
188712 
188713 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
188714 
188715 
188716 /* #line 188717 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
188717 
188718 
188719 
188720 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
188721 
188722 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
188723 // This code is automatically generated for each
188724 // terminal and non-terminal within the defined
188725 // grammar. There is a simple way to change the
188726 // code to fix bugs etc. See the ROSE README file
188727 // for directions.
188728 
188729 // tps: (02/22/2010): Adding DLL export requirements
188730 #include "rosedll.h"
188731 
188732 // predeclarations for SgAssignStatement
188733 
188734 /* #line 188735 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
188735 
188736 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
188737 
188738 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
188739 
188740 #if 1
188741 // Class Definition for SgAssignStatement
188742 class ROSE_DLL_API SgAssignStatement : public SgStatement
188743  {
188744  public:
188745 
188746 
188747 /* #line 188748 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
188748 
188749  virtual SgNode* copy ( SgCopyHelp& help) const override;
188750 // Start of memberFunctionString
188751 /* #line 3763 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
188752 
188753 
188754 
188755 // End of memberFunctionString
188756 // Start of memberFunctionString
188757 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
188758 
188759 // *** COMMON CODE SECTION BEGINS HERE ***
188760 
188761  public:
188762 
188763  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
188764  // and not required which is required to match the other aspects of the copy mechanism code generation.
188765  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
188766  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
188767  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
188768  // virtual SgNode* copy ( const SgCopyHelp & help) const;
188769 
188771  virtual std::string class_name() const override;
188772 
188774  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
188775 
188777  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
188778  // static const VariantT static_variant = V_SgAssignStatement;
188779  enum { static_variant = V_SgAssignStatement };
188780 
188781  /* the generated cast function */
188783  ROSE_DLL_API friend SgAssignStatement* isSgAssignStatement( SgNode * s );
188784 
188786  ROSE_DLL_API friend const SgAssignStatement* isSgAssignStatement( const SgNode * s );
188787 
188788  // ******************************************
188789  // * Memory Pool / New / Delete
188790  // ******************************************
188791 
188792  public:
188794  static const unsigned pool_size; //
188796  static std::vector<unsigned char *> pools; //
188798  static SgAssignStatement * next_node; //
188799 
188801  static unsigned long initializeStorageClassArray(SgAssignStatementStorageClass *); //
188802 
188804  static void clearMemoryPool(); //
188805  static void deleteMemoryPool(); //
188806 
188808  static void extendMemoryPoolForFileIO(); //
188809 
188811  static SgAssignStatement * getPointerFromGlobalIndex(unsigned long); //
188813  static SgAssignStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
188814 
188816  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
188818  static void resetValidFreepointers(); //
188820  static unsigned long getNumberOfLastValidPointer(); //
188821 
188822 
188823 #if defined(INLINE_FUNCTIONS)
188824 
188825  inline void *operator new (size_t size);
188826 #else
188827 
188828  void *operator new (size_t size);
188829 #endif
188830 
188831  void operator delete (void* pointer, size_t size);
188832 
188833  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
188834  void operator delete (void* pointer)
188835  {
188836  // This is the generated delete operator...
188837  SgAssignStatement::operator delete (pointer,sizeof(SgAssignStatement));
188838  }
188839 
188841  static size_t numberOfNodes();
188842 
188844  static size_t memoryUsage();
188845 
188846  // End of scope which started in IR nodes specific code
188847  /* */
188848 
188849  /* name Internal Functions
188850  \brief Internal functions ... incomplete-documentation
188851 
188852  These functions have been made public as part of the design, but they are suggested for internal use
188853  or by particularly knowledgeable users for specialized tools or applications.
188854 
188855  \internal We could not make these private because they are required by user for special purposes. And
188856  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
188857 
188858  */
188859 
188860  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
188861  // overridden in every class by *generated* implementation
188863  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
188864  // MS: 06/28/02 container of names of variables or container indices
188865  // used used in the traversal to access AST successor nodes
188866  // overridden in every class by *generated* implementation
188869  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
188870 
188871  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
188872  // than all the vector copies. The implementation for these functions is generated for each class.
188874  virtual size_t get_numberOfTraversalSuccessors() override;
188876  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
188878  virtual size_t get_childIndex(SgNode *child) override;
188879 
188880 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
188881  // MS: 08/16/2002 method for generating RTI information
188883  virtual RTIReturnType roseRTI() override;
188884 #endif
188885  /* */
188886 
188887 
188888 
188889  /* name Deprecated Functions
188890  \brief Deprecated functions ... incomplete-documentation
188891 
188892  These functions have been deprecated from use.
188893  */
188894  /* */
188895 
188897  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
188898 
188899  // JJW (10/16/2008): Changed to a single function in Node.code, and put
188900  // getVariant() in #if 0 block to prevent confusing Doxygen
188901 #if 0
188902 
188903  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
188905  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
188906 #endif
188907  /* */
188908 
188909 
188910 
188911 
188912  public:
188913  /* name Traversal Support Functions
188914  \brief Traversal support functions ... incomplete-documentation
188915 
188916  These functions have been made public as part of the design, but they are suggested for internal use
188917  or by particularly knowledgable users for specialized tools or applications.
188918  */
188919  /* */
188920 
188921  // DQ (11/26/2005): Support for visitor pattern mechanims
188922  // (inferior to ROSE traversal mechanism, experimental).
188926 
188927  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
188929  virtual void accept (ROSE_VisitorPattern & visitor) override;
188930 
188931  // DQ (12/26/2005): Support for traversal based on the memory pool
188934  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
188935 
188938  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
188939 
188940  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
188941  // This traversal helps support internal tools that call static member functions.
188942  // note: this function operates on the memory pools.
188945  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
188946  /* */
188947 
188948 
188949  public:
188950  /* name Memory Allocation Functions
188951  \brief Memory allocations functions ... incomplete-documentation
188952 
188953  These functions have been made public as part of the design, but they are suggested for internal use
188954  or by particularly knowledgable users for specialized tools or applications.
188955  */
188956  /* */
188957 
188968  virtual bool isInMemoryPool() override;
188969 
188980  virtual void checkDataMemberPointersIfInMemoryPool() override;
188981 
188982  // DQ (4/30/2006): Modified to be a const function.
188997  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
188998 
189008  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
189009 
189021  virtual long getChildIndex( SgNode* childNode ) const override;
189022 
189023  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
189024  // comment here (changed to be a C style comment and not be a doxygen comment).
189025  /* \brief Constructor for use by AST File I/O Mechanism
189026 
189027  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
189028  which obtained via fast binary file I/O from disk.
189029  */
189030  // SgAssignStatement( SgAssignStatementStorageClass& source );
189031 
189032 
189033 
189034 
189035 
189036  // JH (10/24/2005): methods added to support the ast file IO
189037  private:
189038 
189039  /* name AST Memory Allocation Support Functions
189040  \brief Memory allocations support....
189041 
189042  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
189043  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
189044  and support the AST File I/O Mechanism.
189045  */
189046  /* */
189047 
189048  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
189049  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
189050  that I use the same type everywhere, if any changes are made. THe second one declares the type
189051  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
189052  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
189053  a correspinding one in the AST_FILE_IO class!
189054  */
189055  // DQ (9/2/2015): This typedef is no longer used, we can't define the
189056  // comment here (changed to be a C style comment and not be a doxygen comment).
189057  /* \brief Typedef used for low level memory access.
189058  */
189059  // typedef unsigned char* TestType;
189060 
189061  // DQ (9/2/2015): This typedef is no longer used, we can't define the
189062  // comment here (changed to be a C style comment and not be a doxygen comment).
189063  /* \brief Typedef used to hold memory addresses as values.
189064  */
189065  // typedef unsigned long AddressType;
189066 
189067 
189068 
189069  // necessary, to have direct access to the p_freepointer and the private methods !
189071  friend class AST_FILE_IO;
189072 
189074  friend class SgAssignStatementStorageClass;
189075 
189077  friend class AstSpecificDataManagingClass;
189078 
189080  friend class AstSpecificDataManagingClassStorageClass;
189081 
189082  public:
189084  SgAssignStatement( const SgAssignStatementStorageClass& source );
189085 
189086  // private: // JJW hack
189087  /*
189088  name AST Memory Allocation Support Variables
189089  Memory allocations support variables
189090 
189091  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
189092  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
189093  and support the AST File I/O Mechanism.
189094  */
189095  /* */
189096 
189097  public:
189098 
189099  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
189100  // to current node (so that it will work cleanly with build functions to specify patterns).
189101  // virtual SgNode* addRegExpAttribute();
189108 
189109 // *** COMMON CODE SECTION ENDS HERE ***
189110 
189111 
189112 // End of memberFunctionString
189113 // Start of memberFunctionString
189114 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
189115 
189116  // the generated cast function
189117  // friend ROSE_DLL_API SgAssignStatement* isSgAssignStatement ( SgNode* s );
189118 
189119  typedef SgStatement base_node_type;
189120 
189121 
189122 // End of memberFunctionString
189123 // Start of memberFunctionString
189124 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
189125 
189126  void post_construction_initialization() override;
189127 
189128 
189129 // End of memberFunctionString
189130 
189131  public:
189132  SgLabelRefExp* get_label() const;
189133  void set_label(SgLabelRefExp* label);
189134 
189135  public:
189136  SgExpression* get_value() const;
189137  void set_value(SgExpression* value);
189138 
189139 
189140  public:
189141  virtual ~SgAssignStatement();
189142 
189143 
189144  public:
189145  SgAssignStatement(Sg_File_Info* startOfConstruct , SgLabelRefExp* label = NULL, SgExpression* value = NULL);
189146  SgAssignStatement(SgLabelRefExp* label, SgExpression* value);
189147 
189148  protected:
189149 // Start of memberFunctionString
189150 SgLabelRefExp* p_label;
189151 
189152 // End of memberFunctionString
189153 // Start of memberFunctionString
189154 SgExpression* p_value;
189155 
189156 // End of memberFunctionString
189157 
189158 
189159 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
189160 
189161 
189162  };
189163 #endif
189164 
189165 // postdeclarations for SgAssignStatement
189166 
189167 /* #line 189168 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
189168 
189169 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
189170 
189171 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
189172 
189173 
189174 /* #line 189175 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
189175 
189176 
189177 
189178 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
189179 
189180 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
189181 // This code is automatically generated for each
189182 // terminal and non-terminal within the defined
189183 // grammar. There is a simple way to change the
189184 // code to fix bugs etc. See the ROSE README file
189185 // for directions.
189186 
189187 // tps: (02/22/2010): Adding DLL export requirements
189188 #include "rosedll.h"
189189 
189190 // predeclarations for SgComputedGotoStatement
189191 
189192 /* #line 189193 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
189193 
189194 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
189195 
189196 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
189197 
189198 #if 1
189199 // Class Definition for SgComputedGotoStatement
189200 class ROSE_DLL_API SgComputedGotoStatement : public SgStatement
189201  {
189202  public:
189203 
189204 
189205 /* #line 189206 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
189206 
189207  virtual SgNode* copy ( SgCopyHelp& help) const override;
189208 // Start of memberFunctionString
189209 /* #line 3767 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
189210 
189211 
189212 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
189213  virtual unsigned int cfgIndexForEnd() const override;
189214  virtual bool cfgIsIndexInteresting(unsigned int) const override;
189215  virtual unsigned int cfgFindChildIndex(SgNode* n) override;
189216  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
189217  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
189218 #endif
189219 
189220 #if 0
189221  // DQ (12/30/2007): This list is no longer requires since we ave build the IR node for a SgLabelRefExp
189222  // and we can hold this information using an more common ExprListExp instead.
189223  const SgLabelSymbolPtrList & get_labelList() const;
189224  SgLabelSymbolPtrList & get_labelList();
189225  void set_labelList(const SgLabelSymbolPtrList & labelList);
189226 #endif
189227 
189228 
189229 
189230 // End of memberFunctionString
189231 // Start of memberFunctionString
189232 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
189233 
189234 // *** COMMON CODE SECTION BEGINS HERE ***
189235 
189236  public:
189237 
189238  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
189239  // and not required which is required to match the other aspects of the copy mechanism code generation.
189240  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
189241  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
189242  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
189243  // virtual SgNode* copy ( const SgCopyHelp & help) const;
189244 
189246  virtual std::string class_name() const override;
189247 
189249  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
189250 
189252  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
189253  // static const VariantT static_variant = V_SgComputedGotoStatement;
189254  enum { static_variant = V_SgComputedGotoStatement };
189255 
189256  /* the generated cast function */
189258  ROSE_DLL_API friend SgComputedGotoStatement* isSgComputedGotoStatement( SgNode * s );
189259 
189261  ROSE_DLL_API friend const SgComputedGotoStatement* isSgComputedGotoStatement( const SgNode * s );
189262 
189263  // ******************************************
189264  // * Memory Pool / New / Delete
189265  // ******************************************
189266 
189267  public:
189269  static const unsigned pool_size; //
189271  static std::vector<unsigned char *> pools; //
189273  static SgComputedGotoStatement * next_node; //
189274 
189276  static unsigned long initializeStorageClassArray(SgComputedGotoStatementStorageClass *); //
189277 
189279  static void clearMemoryPool(); //
189280  static void deleteMemoryPool(); //
189281 
189283  static void extendMemoryPoolForFileIO(); //
189284 
189286  static SgComputedGotoStatement * getPointerFromGlobalIndex(unsigned long); //
189288  static SgComputedGotoStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
189289 
189291  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
189293  static void resetValidFreepointers(); //
189295  static unsigned long getNumberOfLastValidPointer(); //
189296 
189297 
189298 #if defined(INLINE_FUNCTIONS)
189299 
189300  inline void *operator new (size_t size);
189301 #else
189302 
189303  void *operator new (size_t size);
189304 #endif
189305 
189306  void operator delete (void* pointer, size_t size);
189307 
189308  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
189309  void operator delete (void* pointer)
189310  {
189311  // This is the generated delete operator...
189312  SgComputedGotoStatement::operator delete (pointer,sizeof(SgComputedGotoStatement));
189313  }
189314 
189316  static size_t numberOfNodes();
189317 
189319  static size_t memoryUsage();
189320 
189321  // End of scope which started in IR nodes specific code
189322  /* */
189323 
189324  /* name Internal Functions
189325  \brief Internal functions ... incomplete-documentation
189326 
189327  These functions have been made public as part of the design, but they are suggested for internal use
189328  or by particularly knowledgeable users for specialized tools or applications.
189329 
189330  \internal We could not make these private because they are required by user for special purposes. And
189331  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
189332 
189333  */
189334 
189335  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
189336  // overridden in every class by *generated* implementation
189338  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
189339  // MS: 06/28/02 container of names of variables or container indices
189340  // used used in the traversal to access AST successor nodes
189341  // overridden in every class by *generated* implementation
189344  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
189345 
189346  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
189347  // than all the vector copies. The implementation for these functions is generated for each class.
189349  virtual size_t get_numberOfTraversalSuccessors() override;
189351  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
189353  virtual size_t get_childIndex(SgNode *child) override;
189354 
189355 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
189356  // MS: 08/16/2002 method for generating RTI information
189358  virtual RTIReturnType roseRTI() override;
189359 #endif
189360  /* */
189361 
189362 
189363 
189364  /* name Deprecated Functions
189365  \brief Deprecated functions ... incomplete-documentation
189366 
189367  These functions have been deprecated from use.
189368  */
189369  /* */
189370 
189372  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
189373 
189374  // JJW (10/16/2008): Changed to a single function in Node.code, and put
189375  // getVariant() in #if 0 block to prevent confusing Doxygen
189376 #if 0
189377 
189378  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
189380  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
189381 #endif
189382  /* */
189383 
189384 
189385 
189386 
189387  public:
189388  /* name Traversal Support Functions
189389  \brief Traversal support functions ... incomplete-documentation
189390 
189391  These functions have been made public as part of the design, but they are suggested for internal use
189392  or by particularly knowledgable users for specialized tools or applications.
189393  */
189394  /* */
189395 
189396  // DQ (11/26/2005): Support for visitor pattern mechanims
189397  // (inferior to ROSE traversal mechanism, experimental).
189401 
189402  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
189404  virtual void accept (ROSE_VisitorPattern & visitor) override;
189405 
189406  // DQ (12/26/2005): Support for traversal based on the memory pool
189409  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
189410 
189413  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
189414 
189415  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
189416  // This traversal helps support internal tools that call static member functions.
189417  // note: this function operates on the memory pools.
189420  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
189421  /* */
189422 
189423 
189424  public:
189425  /* name Memory Allocation Functions
189426  \brief Memory allocations functions ... incomplete-documentation
189427 
189428  These functions have been made public as part of the design, but they are suggested for internal use
189429  or by particularly knowledgable users for specialized tools or applications.
189430  */
189431  /* */
189432 
189443  virtual bool isInMemoryPool() override;
189444 
189455  virtual void checkDataMemberPointersIfInMemoryPool() override;
189456 
189457  // DQ (4/30/2006): Modified to be a const function.
189472  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
189473 
189483  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
189484 
189496  virtual long getChildIndex( SgNode* childNode ) const override;
189497 
189498  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
189499  // comment here (changed to be a C style comment and not be a doxygen comment).
189500  /* \brief Constructor for use by AST File I/O Mechanism
189501 
189502  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
189503  which obtained via fast binary file I/O from disk.
189504  */
189505  // SgComputedGotoStatement( SgComputedGotoStatementStorageClass& source );
189506 
189507 
189508 
189509 
189510 
189511  // JH (10/24/2005): methods added to support the ast file IO
189512  private:
189513 
189514  /* name AST Memory Allocation Support Functions
189515  \brief Memory allocations support....
189516 
189517  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
189518  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
189519  and support the AST File I/O Mechanism.
189520  */
189521  /* */
189522 
189523  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
189524  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
189525  that I use the same type everywhere, if any changes are made. THe second one declares the type
189526  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
189527  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
189528  a correspinding one in the AST_FILE_IO class!
189529  */
189530  // DQ (9/2/2015): This typedef is no longer used, we can't define the
189531  // comment here (changed to be a C style comment and not be a doxygen comment).
189532  /* \brief Typedef used for low level memory access.
189533  */
189534  // typedef unsigned char* TestType;
189535 
189536  // DQ (9/2/2015): This typedef is no longer used, we can't define the
189537  // comment here (changed to be a C style comment and not be a doxygen comment).
189538  /* \brief Typedef used to hold memory addresses as values.
189539  */
189540  // typedef unsigned long AddressType;
189541 
189542 
189543 
189544  // necessary, to have direct access to the p_freepointer and the private methods !
189546  friend class AST_FILE_IO;
189547 
189549  friend class SgComputedGotoStatementStorageClass;
189550 
189552  friend class AstSpecificDataManagingClass;
189553 
189555  friend class AstSpecificDataManagingClassStorageClass;
189556 
189557  public:
189559  SgComputedGotoStatement( const SgComputedGotoStatementStorageClass& source );
189560 
189561  // private: // JJW hack
189562  /*
189563  name AST Memory Allocation Support Variables
189564  Memory allocations support variables
189565 
189566  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
189567  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
189568  and support the AST File I/O Mechanism.
189569  */
189570  /* */
189571 
189572  public:
189573 
189574  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
189575  // to current node (so that it will work cleanly with build functions to specify patterns).
189576  // virtual SgNode* addRegExpAttribute();
189583 
189584 // *** COMMON CODE SECTION ENDS HERE ***
189585 
189586 
189587 // End of memberFunctionString
189588 // Start of memberFunctionString
189589 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
189590 
189591  // the generated cast function
189592  // friend ROSE_DLL_API SgComputedGotoStatement* isSgComputedGotoStatement ( SgNode* s );
189593 
189594  typedef SgStatement base_node_type;
189595 
189596 
189597 // End of memberFunctionString
189598 // Start of memberFunctionString
189599 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
189600 
189601  void post_construction_initialization() override;
189602 
189603 
189604 // End of memberFunctionString
189605 
189606  public:
189607  SgExprListExp* get_labelList() const;
189608  void set_labelList(SgExprListExp* labelList);
189609 
189610  public:
189611  SgExpression* get_label_index() const;
189612  void set_label_index(SgExpression* label_index);
189613 
189614 
189615  public:
189616  virtual ~SgComputedGotoStatement();
189617 
189618 
189619  public:
189620  SgComputedGotoStatement(Sg_File_Info* startOfConstruct , SgExprListExp* labelList = NULL, SgExpression* label_index = NULL);
189621  SgComputedGotoStatement(SgExprListExp* labelList, SgExpression* label_index);
189622 
189623  protected:
189624 // Start of memberFunctionString
189625 SgExprListExp* p_labelList;
189626 
189627 // End of memberFunctionString
189628 // Start of memberFunctionString
189629 SgExpression* p_label_index;
189630 
189631 // End of memberFunctionString
189632 
189633 
189634 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
189635 
189636 
189637  };
189638 #endif
189639 
189640 // postdeclarations for SgComputedGotoStatement
189641 
189642 /* #line 189643 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
189643 
189644 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
189645 
189646 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
189647 
189648 
189649 /* #line 189650 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
189650 
189651 
189652 
189653 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
189654 
189655 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
189656 // This code is automatically generated for each
189657 // terminal and non-terminal within the defined
189658 // grammar. There is a simple way to change the
189659 // code to fix bugs etc. See the ROSE README file
189660 // for directions.
189661 
189662 // tps: (02/22/2010): Adding DLL export requirements
189663 #include "rosedll.h"
189664 
189665 // predeclarations for SgAssignedGotoStatement
189666 
189667 /* #line 189668 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
189668 
189669 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
189670 
189671 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
189672 
189673 #if 1
189674 // Class Definition for SgAssignedGotoStatement
189675 class ROSE_DLL_API SgAssignedGotoStatement : public SgStatement
189676  {
189677  public:
189678 
189679 
189680 /* #line 189681 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
189681 
189682  virtual SgNode* copy ( SgCopyHelp& help) const override;
189683 // Start of memberFunctionString
189684 /* #line 3788 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
189685 
189686 
189687 
189688 // End of memberFunctionString
189689 // Start of memberFunctionString
189690 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
189691 
189692 // *** COMMON CODE SECTION BEGINS HERE ***
189693 
189694  public:
189695 
189696  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
189697  // and not required which is required to match the other aspects of the copy mechanism code generation.
189698  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
189699  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
189700  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
189701  // virtual SgNode* copy ( const SgCopyHelp & help) const;
189702 
189704  virtual std::string class_name() const override;
189705 
189707  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
189708 
189710  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
189711  // static const VariantT static_variant = V_SgAssignedGotoStatement;
189712  enum { static_variant = V_SgAssignedGotoStatement };
189713 
189714  /* the generated cast function */
189716  ROSE_DLL_API friend SgAssignedGotoStatement* isSgAssignedGotoStatement( SgNode * s );
189717 
189719  ROSE_DLL_API friend const SgAssignedGotoStatement* isSgAssignedGotoStatement( const SgNode * s );
189720 
189721  // ******************************************
189722  // * Memory Pool / New / Delete
189723  // ******************************************
189724 
189725  public:
189727  static const unsigned pool_size; //
189729  static std::vector<unsigned char *> pools; //
189731  static SgAssignedGotoStatement * next_node; //
189732 
189734  static unsigned long initializeStorageClassArray(SgAssignedGotoStatementStorageClass *); //
189735 
189737  static void clearMemoryPool(); //
189738  static void deleteMemoryPool(); //
189739 
189741  static void extendMemoryPoolForFileIO(); //
189742 
189744  static SgAssignedGotoStatement * getPointerFromGlobalIndex(unsigned long); //
189746  static SgAssignedGotoStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
189747 
189749  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
189751  static void resetValidFreepointers(); //
189753  static unsigned long getNumberOfLastValidPointer(); //
189754 
189755 
189756 #if defined(INLINE_FUNCTIONS)
189757 
189758  inline void *operator new (size_t size);
189759 #else
189760 
189761  void *operator new (size_t size);
189762 #endif
189763 
189764  void operator delete (void* pointer, size_t size);
189765 
189766  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
189767  void operator delete (void* pointer)
189768  {
189769  // This is the generated delete operator...
189770  SgAssignedGotoStatement::operator delete (pointer,sizeof(SgAssignedGotoStatement));
189771  }
189772 
189774  static size_t numberOfNodes();
189775 
189777  static size_t memoryUsage();
189778 
189779  // End of scope which started in IR nodes specific code
189780  /* */
189781 
189782  /* name Internal Functions
189783  \brief Internal functions ... incomplete-documentation
189784 
189785  These functions have been made public as part of the design, but they are suggested for internal use
189786  or by particularly knowledgeable users for specialized tools or applications.
189787 
189788  \internal We could not make these private because they are required by user for special purposes. And
189789  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
189790 
189791  */
189792 
189793  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
189794  // overridden in every class by *generated* implementation
189796  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
189797  // MS: 06/28/02 container of names of variables or container indices
189798  // used used in the traversal to access AST successor nodes
189799  // overridden in every class by *generated* implementation
189802  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
189803 
189804  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
189805  // than all the vector copies. The implementation for these functions is generated for each class.
189807  virtual size_t get_numberOfTraversalSuccessors() override;
189809  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
189811  virtual size_t get_childIndex(SgNode *child) override;
189812 
189813 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
189814  // MS: 08/16/2002 method for generating RTI information
189816  virtual RTIReturnType roseRTI() override;
189817 #endif
189818  /* */
189819 
189820 
189821 
189822  /* name Deprecated Functions
189823  \brief Deprecated functions ... incomplete-documentation
189824 
189825  These functions have been deprecated from use.
189826  */
189827  /* */
189828 
189830  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
189831 
189832  // JJW (10/16/2008): Changed to a single function in Node.code, and put
189833  // getVariant() in #if 0 block to prevent confusing Doxygen
189834 #if 0
189835 
189836  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
189838  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
189839 #endif
189840  /* */
189841 
189842 
189843 
189844 
189845  public:
189846  /* name Traversal Support Functions
189847  \brief Traversal support functions ... incomplete-documentation
189848 
189849  These functions have been made public as part of the design, but they are suggested for internal use
189850  or by particularly knowledgable users for specialized tools or applications.
189851  */
189852  /* */
189853 
189854  // DQ (11/26/2005): Support for visitor pattern mechanims
189855  // (inferior to ROSE traversal mechanism, experimental).
189859 
189860  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
189862  virtual void accept (ROSE_VisitorPattern & visitor) override;
189863 
189864  // DQ (12/26/2005): Support for traversal based on the memory pool
189867  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
189868 
189871  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
189872 
189873  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
189874  // This traversal helps support internal tools that call static member functions.
189875  // note: this function operates on the memory pools.
189878  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
189879  /* */
189880 
189881 
189882  public:
189883  /* name Memory Allocation Functions
189884  \brief Memory allocations functions ... incomplete-documentation
189885 
189886  These functions have been made public as part of the design, but they are suggested for internal use
189887  or by particularly knowledgable users for specialized tools or applications.
189888  */
189889  /* */
189890 
189901  virtual bool isInMemoryPool() override;
189902 
189913  virtual void checkDataMemberPointersIfInMemoryPool() override;
189914 
189915  // DQ (4/30/2006): Modified to be a const function.
189930  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
189931 
189941  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
189942 
189954  virtual long getChildIndex( SgNode* childNode ) const override;
189955 
189956  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
189957  // comment here (changed to be a C style comment and not be a doxygen comment).
189958  /* \brief Constructor for use by AST File I/O Mechanism
189959 
189960  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
189961  which obtained via fast binary file I/O from disk.
189962  */
189963  // SgAssignedGotoStatement( SgAssignedGotoStatementStorageClass& source );
189964 
189965 
189966 
189967 
189968 
189969  // JH (10/24/2005): methods added to support the ast file IO
189970  private:
189971 
189972  /* name AST Memory Allocation Support Functions
189973  \brief Memory allocations support....
189974 
189975  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
189976  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
189977  and support the AST File I/O Mechanism.
189978  */
189979  /* */
189980 
189981  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
189982  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
189983  that I use the same type everywhere, if any changes are made. THe second one declares the type
189984  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
189985  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
189986  a correspinding one in the AST_FILE_IO class!
189987  */
189988  // DQ (9/2/2015): This typedef is no longer used, we can't define the
189989  // comment here (changed to be a C style comment and not be a doxygen comment).
189990  /* \brief Typedef used for low level memory access.
189991  */
189992  // typedef unsigned char* TestType;
189993 
189994  // DQ (9/2/2015): This typedef is no longer used, we can't define the
189995  // comment here (changed to be a C style comment and not be a doxygen comment).
189996  /* \brief Typedef used to hold memory addresses as values.
189997  */
189998  // typedef unsigned long AddressType;
189999 
190000 
190001 
190002  // necessary, to have direct access to the p_freepointer and the private methods !
190004  friend class AST_FILE_IO;
190005 
190007  friend class SgAssignedGotoStatementStorageClass;
190008 
190010  friend class AstSpecificDataManagingClass;
190011 
190013  friend class AstSpecificDataManagingClassStorageClass;
190014 
190015  public:
190017  SgAssignedGotoStatement( const SgAssignedGotoStatementStorageClass& source );
190018 
190019  // private: // JJW hack
190020  /*
190021  name AST Memory Allocation Support Variables
190022  Memory allocations support variables
190023 
190024  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
190025  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
190026  and support the AST File I/O Mechanism.
190027  */
190028  /* */
190029 
190030  public:
190031 
190032  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
190033  // to current node (so that it will work cleanly with build functions to specify patterns).
190034  // virtual SgNode* addRegExpAttribute();
190041 
190042 // *** COMMON CODE SECTION ENDS HERE ***
190043 
190044 
190045 // End of memberFunctionString
190046 // Start of memberFunctionString
190047 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
190048 
190049  // the generated cast function
190050  // friend ROSE_DLL_API SgAssignedGotoStatement* isSgAssignedGotoStatement ( SgNode* s );
190051 
190052  typedef SgStatement base_node_type;
190053 
190054 
190055 // End of memberFunctionString
190056 // Start of memberFunctionString
190057 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
190058 
190059  void post_construction_initialization() override;
190060 
190061 
190062 // End of memberFunctionString
190063 
190064  public:
190065  SgExprListExp* get_targets() const;
190066  void set_targets(SgExprListExp* targets);
190067 
190068 
190069  public:
190070  virtual ~SgAssignedGotoStatement();
190071 
190072 
190073  public:
190074  SgAssignedGotoStatement(Sg_File_Info* startOfConstruct , SgExprListExp* targets = NULL);
190076 
190077  protected:
190078 // Start of memberFunctionString
190079 SgExprListExp* p_targets;
190080 
190081 // End of memberFunctionString
190082 
190083 
190084 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
190085 
190086 
190087  };
190088 #endif
190089 
190090 // postdeclarations for SgAssignedGotoStatement
190091 
190092 /* #line 190093 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
190093 
190094 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
190095 
190096 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
190097 
190098 
190099 /* #line 190100 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
190100 
190101 
190102 
190103 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
190104 
190105 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
190106 // This code is automatically generated for each
190107 // terminal and non-terminal within the defined
190108 // grammar. There is a simple way to change the
190109 // code to fix bugs etc. See the ROSE README file
190110 // for directions.
190111 
190112 // tps: (02/22/2010): Adding DLL export requirements
190113 #include "rosedll.h"
190114 
190115 // predeclarations for SgAllocateStatement
190116 
190117 /* #line 190118 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
190118 
190119 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
190120 
190121 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
190122 
190123 #if 1
190124 // Class Definition for SgAllocateStatement
190125 class ROSE_DLL_API SgAllocateStatement : public SgStatement
190126  {
190127  public:
190128 
190129 
190130 /* #line 190131 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
190131 
190132  virtual SgNode* copy ( SgCopyHelp& help) const override;
190133 // Start of memberFunctionString
190134 /* #line 3737 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
190135 
190136 
190137 
190138 // End of memberFunctionString
190139 // Start of memberFunctionString
190140 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
190141 
190142 // *** COMMON CODE SECTION BEGINS HERE ***
190143 
190144  public:
190145 
190146  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
190147  // and not required which is required to match the other aspects of the copy mechanism code generation.
190148  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
190149  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
190150  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
190151  // virtual SgNode* copy ( const SgCopyHelp & help) const;
190152 
190154  virtual std::string class_name() const override;
190155 
190157  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
190158 
190160  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
190161  // static const VariantT static_variant = V_SgAllocateStatement;
190162  enum { static_variant = V_SgAllocateStatement };
190163 
190164  /* the generated cast function */
190166  ROSE_DLL_API friend SgAllocateStatement* isSgAllocateStatement( SgNode * s );
190167 
190169  ROSE_DLL_API friend const SgAllocateStatement* isSgAllocateStatement( const SgNode * s );
190170 
190171  // ******************************************
190172  // * Memory Pool / New / Delete
190173  // ******************************************
190174 
190175  public:
190177  static const unsigned pool_size; //
190179  static std::vector<unsigned char *> pools; //
190181  static SgAllocateStatement * next_node; //
190182 
190184  static unsigned long initializeStorageClassArray(SgAllocateStatementStorageClass *); //
190185 
190187  static void clearMemoryPool(); //
190188  static void deleteMemoryPool(); //
190189 
190191  static void extendMemoryPoolForFileIO(); //
190192 
190194  static SgAllocateStatement * getPointerFromGlobalIndex(unsigned long); //
190196  static SgAllocateStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
190197 
190199  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
190201  static void resetValidFreepointers(); //
190203  static unsigned long getNumberOfLastValidPointer(); //
190204 
190205 
190206 #if defined(INLINE_FUNCTIONS)
190207 
190208  inline void *operator new (size_t size);
190209 #else
190210 
190211  void *operator new (size_t size);
190212 #endif
190213 
190214  void operator delete (void* pointer, size_t size);
190215 
190216  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
190217  void operator delete (void* pointer)
190218  {
190219  // This is the generated delete operator...
190220  SgAllocateStatement::operator delete (pointer,sizeof(SgAllocateStatement));
190221  }
190222 
190224  static size_t numberOfNodes();
190225 
190227  static size_t memoryUsage();
190228 
190229  // End of scope which started in IR nodes specific code
190230  /* */
190231 
190232  /* name Internal Functions
190233  \brief Internal functions ... incomplete-documentation
190234 
190235  These functions have been made public as part of the design, but they are suggested for internal use
190236  or by particularly knowledgeable users for specialized tools or applications.
190237 
190238  \internal We could not make these private because they are required by user for special purposes. And
190239  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
190240 
190241  */
190242 
190243  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
190244  // overridden in every class by *generated* implementation
190246  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
190247  // MS: 06/28/02 container of names of variables or container indices
190248  // used used in the traversal to access AST successor nodes
190249  // overridden in every class by *generated* implementation
190252  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
190253 
190254  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
190255  // than all the vector copies. The implementation for these functions is generated for each class.
190257  virtual size_t get_numberOfTraversalSuccessors() override;
190259  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
190261  virtual size_t get_childIndex(SgNode *child) override;
190262 
190263 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
190264  // MS: 08/16/2002 method for generating RTI information
190266  virtual RTIReturnType roseRTI() override;
190267 #endif
190268  /* */
190269 
190270 
190271 
190272  /* name Deprecated Functions
190273  \brief Deprecated functions ... incomplete-documentation
190274 
190275  These functions have been deprecated from use.
190276  */
190277  /* */
190278 
190280  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
190281 
190282  // JJW (10/16/2008): Changed to a single function in Node.code, and put
190283  // getVariant() in #if 0 block to prevent confusing Doxygen
190284 #if 0
190285 
190286  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
190288  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
190289 #endif
190290  /* */
190291 
190292 
190293 
190294 
190295  public:
190296  /* name Traversal Support Functions
190297  \brief Traversal support functions ... incomplete-documentation
190298 
190299  These functions have been made public as part of the design, but they are suggested for internal use
190300  or by particularly knowledgable users for specialized tools or applications.
190301  */
190302  /* */
190303 
190304  // DQ (11/26/2005): Support for visitor pattern mechanims
190305  // (inferior to ROSE traversal mechanism, experimental).
190309 
190310  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
190312  virtual void accept (ROSE_VisitorPattern & visitor) override;
190313 
190314  // DQ (12/26/2005): Support for traversal based on the memory pool
190317  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
190318 
190321  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
190322 
190323  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
190324  // This traversal helps support internal tools that call static member functions.
190325  // note: this function operates on the memory pools.
190328  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
190329  /* */
190330 
190331 
190332  public:
190333  /* name Memory Allocation Functions
190334  \brief Memory allocations functions ... incomplete-documentation
190335 
190336  These functions have been made public as part of the design, but they are suggested for internal use
190337  or by particularly knowledgable users for specialized tools or applications.
190338  */
190339  /* */
190340 
190351  virtual bool isInMemoryPool() override;
190352 
190363  virtual void checkDataMemberPointersIfInMemoryPool() override;
190364 
190365  // DQ (4/30/2006): Modified to be a const function.
190380  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
190381 
190391  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
190392 
190404  virtual long getChildIndex( SgNode* childNode ) const override;
190405 
190406  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
190407  // comment here (changed to be a C style comment and not be a doxygen comment).
190408  /* \brief Constructor for use by AST File I/O Mechanism
190409 
190410  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
190411  which obtained via fast binary file I/O from disk.
190412  */
190413  // SgAllocateStatement( SgAllocateStatementStorageClass& source );
190414 
190415 
190416 
190417 
190418 
190419  // JH (10/24/2005): methods added to support the ast file IO
190420  private:
190421 
190422  /* name AST Memory Allocation Support Functions
190423  \brief Memory allocations support....
190424 
190425  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
190426  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
190427  and support the AST File I/O Mechanism.
190428  */
190429  /* */
190430 
190431  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
190432  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
190433  that I use the same type everywhere, if any changes are made. THe second one declares the type
190434  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
190435  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
190436  a correspinding one in the AST_FILE_IO class!
190437  */
190438  // DQ (9/2/2015): This typedef is no longer used, we can't define the
190439  // comment here (changed to be a C style comment and not be a doxygen comment).
190440  /* \brief Typedef used for low level memory access.
190441  */
190442  // typedef unsigned char* TestType;
190443 
190444  // DQ (9/2/2015): This typedef is no longer used, we can't define the
190445  // comment here (changed to be a C style comment and not be a doxygen comment).
190446  /* \brief Typedef used to hold memory addresses as values.
190447  */
190448  // typedef unsigned long AddressType;
190449 
190450 
190451 
190452  // necessary, to have direct access to the p_freepointer and the private methods !
190454  friend class AST_FILE_IO;
190455 
190457  friend class SgAllocateStatementStorageClass;
190458 
190460  friend class AstSpecificDataManagingClass;
190461 
190463  friend class AstSpecificDataManagingClassStorageClass;
190464 
190465  public:
190467  SgAllocateStatement( const SgAllocateStatementStorageClass& source );
190468 
190469  // private: // JJW hack
190470  /*
190471  name AST Memory Allocation Support Variables
190472  Memory allocations support variables
190473 
190474  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
190475  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
190476  and support the AST File I/O Mechanism.
190477  */
190478  /* */
190479 
190480  public:
190481 
190482  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
190483  // to current node (so that it will work cleanly with build functions to specify patterns).
190484  // virtual SgNode* addRegExpAttribute();
190491 
190492 // *** COMMON CODE SECTION ENDS HERE ***
190493 
190494 
190495 // End of memberFunctionString
190496 // Start of memberFunctionString
190497 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
190498 
190499  // the generated cast function
190500  // friend ROSE_DLL_API SgAllocateStatement* isSgAllocateStatement ( SgNode* s );
190501 
190502  typedef SgStatement base_node_type;
190503 
190504 
190505 // End of memberFunctionString
190506 // Start of memberFunctionString
190507 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
190508 
190509  void post_construction_initialization() override;
190510 
190511 
190512 // End of memberFunctionString
190513 
190514  public:
190515  SgExprListExp* get_expr_list() const;
190516  void set_expr_list(SgExprListExp* expr_list);
190517 
190518  public:
190519  SgExpression* get_stat_expression() const;
190520  void set_stat_expression(SgExpression* stat_expression);
190521 
190522  public:
190523  SgExpression* get_errmsg_expression() const;
190524  void set_errmsg_expression(SgExpression* errmsg_expression);
190525 
190526  public:
190527  SgExpression* get_source_expression() const;
190528  void set_source_expression(SgExpression* source_expression);
190529 
190530 
190531  public:
190532  virtual ~SgAllocateStatement();
190533 
190534 
190535  public:
190536  SgAllocateStatement(Sg_File_Info* startOfConstruct );
190537  SgAllocateStatement();
190538 
190539  protected:
190540 // Start of memberFunctionString
190541 SgExprListExp* p_expr_list;
190542 
190543 // End of memberFunctionString
190544 // Start of memberFunctionString
190545 SgExpression* p_stat_expression;
190546 
190547 // End of memberFunctionString
190548 // Start of memberFunctionString
190549 SgExpression* p_errmsg_expression;
190550 
190551 // End of memberFunctionString
190552 // Start of memberFunctionString
190553 SgExpression* p_source_expression;
190554 
190555 // End of memberFunctionString
190556 
190557 
190558 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
190559 
190560 
190561  };
190562 #endif
190563 
190564 // postdeclarations for SgAllocateStatement
190565 
190566 /* #line 190567 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
190567 
190568 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
190569 
190570 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
190571 
190572 
190573 /* #line 190574 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
190574 
190575 
190576 
190577 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
190578 
190579 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
190580 // This code is automatically generated for each
190581 // terminal and non-terminal within the defined
190582 // grammar. There is a simple way to change the
190583 // code to fix bugs etc. See the ROSE README file
190584 // for directions.
190585 
190586 // tps: (02/22/2010): Adding DLL export requirements
190587 #include "rosedll.h"
190588 
190589 // predeclarations for SgDeallocateStatement
190590 
190591 /* #line 190592 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
190592 
190593 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
190594 
190595 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
190596 
190597 #if 1
190598 // Class Definition for SgDeallocateStatement
190599 class ROSE_DLL_API SgDeallocateStatement : public SgStatement
190600  {
190601  public:
190602 
190603 
190604 /* #line 190605 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
190605 
190606  virtual SgNode* copy ( SgCopyHelp& help) const override;
190607 // Start of memberFunctionString
190608 /* #line 3741 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
190609 
190610 
190611 
190612 // End of memberFunctionString
190613 // Start of memberFunctionString
190614 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
190615 
190616 // *** COMMON CODE SECTION BEGINS HERE ***
190617 
190618  public:
190619 
190620  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
190621  // and not required which is required to match the other aspects of the copy mechanism code generation.
190622  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
190623  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
190624  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
190625  // virtual SgNode* copy ( const SgCopyHelp & help) const;
190626 
190628  virtual std::string class_name() const override;
190629 
190631  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
190632 
190634  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
190635  // static const VariantT static_variant = V_SgDeallocateStatement;
190636  enum { static_variant = V_SgDeallocateStatement };
190637 
190638  /* the generated cast function */
190640  ROSE_DLL_API friend SgDeallocateStatement* isSgDeallocateStatement( SgNode * s );
190641 
190643  ROSE_DLL_API friend const SgDeallocateStatement* isSgDeallocateStatement( const SgNode * s );
190644 
190645  // ******************************************
190646  // * Memory Pool / New / Delete
190647  // ******************************************
190648 
190649  public:
190651  static const unsigned pool_size; //
190653  static std::vector<unsigned char *> pools; //
190655  static SgDeallocateStatement * next_node; //
190656 
190658  static unsigned long initializeStorageClassArray(SgDeallocateStatementStorageClass *); //
190659 
190661  static void clearMemoryPool(); //
190662  static void deleteMemoryPool(); //
190663 
190665  static void extendMemoryPoolForFileIO(); //
190666 
190668  static SgDeallocateStatement * getPointerFromGlobalIndex(unsigned long); //
190670  static SgDeallocateStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
190671 
190673  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
190675  static void resetValidFreepointers(); //
190677  static unsigned long getNumberOfLastValidPointer(); //
190678 
190679 
190680 #if defined(INLINE_FUNCTIONS)
190681 
190682  inline void *operator new (size_t size);
190683 #else
190684 
190685  void *operator new (size_t size);
190686 #endif
190687 
190688  void operator delete (void* pointer, size_t size);
190689 
190690  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
190691  void operator delete (void* pointer)
190692  {
190693  // This is the generated delete operator...
190694  SgDeallocateStatement::operator delete (pointer,sizeof(SgDeallocateStatement));
190695  }
190696 
190698  static size_t numberOfNodes();
190699 
190701  static size_t memoryUsage();
190702 
190703  // End of scope which started in IR nodes specific code
190704  /* */
190705 
190706  /* name Internal Functions
190707  \brief Internal functions ... incomplete-documentation
190708 
190709  These functions have been made public as part of the design, but they are suggested for internal use
190710  or by particularly knowledgeable users for specialized tools or applications.
190711 
190712  \internal We could not make these private because they are required by user for special purposes. And
190713  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
190714 
190715  */
190716 
190717  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
190718  // overridden in every class by *generated* implementation
190720  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
190721  // MS: 06/28/02 container of names of variables or container indices
190722  // used used in the traversal to access AST successor nodes
190723  // overridden in every class by *generated* implementation
190726  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
190727 
190728  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
190729  // than all the vector copies. The implementation for these functions is generated for each class.
190731  virtual size_t get_numberOfTraversalSuccessors() override;
190733  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
190735  virtual size_t get_childIndex(SgNode *child) override;
190736 
190737 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
190738  // MS: 08/16/2002 method for generating RTI information
190740  virtual RTIReturnType roseRTI() override;
190741 #endif
190742  /* */
190743 
190744 
190745 
190746  /* name Deprecated Functions
190747  \brief Deprecated functions ... incomplete-documentation
190748 
190749  These functions have been deprecated from use.
190750  */
190751  /* */
190752 
190754  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
190755 
190756  // JJW (10/16/2008): Changed to a single function in Node.code, and put
190757  // getVariant() in #if 0 block to prevent confusing Doxygen
190758 #if 0
190759 
190760  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
190762  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
190763 #endif
190764  /* */
190765 
190766 
190767 
190768 
190769  public:
190770  /* name Traversal Support Functions
190771  \brief Traversal support functions ... incomplete-documentation
190772 
190773  These functions have been made public as part of the design, but they are suggested for internal use
190774  or by particularly knowledgable users for specialized tools or applications.
190775  */
190776  /* */
190777 
190778  // DQ (11/26/2005): Support for visitor pattern mechanims
190779  // (inferior to ROSE traversal mechanism, experimental).
190783 
190784  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
190786  virtual void accept (ROSE_VisitorPattern & visitor) override;
190787 
190788  // DQ (12/26/2005): Support for traversal based on the memory pool
190791  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
190792 
190795  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
190796 
190797  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
190798  // This traversal helps support internal tools that call static member functions.
190799  // note: this function operates on the memory pools.
190802  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
190803  /* */
190804 
190805 
190806  public:
190807  /* name Memory Allocation Functions
190808  \brief Memory allocations functions ... incomplete-documentation
190809 
190810  These functions have been made public as part of the design, but they are suggested for internal use
190811  or by particularly knowledgable users for specialized tools or applications.
190812  */
190813  /* */
190814 
190825  virtual bool isInMemoryPool() override;
190826 
190837  virtual void checkDataMemberPointersIfInMemoryPool() override;
190838 
190839  // DQ (4/30/2006): Modified to be a const function.
190854  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
190855 
190865  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
190866 
190878  virtual long getChildIndex( SgNode* childNode ) const override;
190879 
190880  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
190881  // comment here (changed to be a C style comment and not be a doxygen comment).
190882  /* \brief Constructor for use by AST File I/O Mechanism
190883 
190884  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
190885  which obtained via fast binary file I/O from disk.
190886  */
190887  // SgDeallocateStatement( SgDeallocateStatementStorageClass& source );
190888 
190889 
190890 
190891 
190892 
190893  // JH (10/24/2005): methods added to support the ast file IO
190894  private:
190895 
190896  /* name AST Memory Allocation Support Functions
190897  \brief Memory allocations support....
190898 
190899  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
190900  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
190901  and support the AST File I/O Mechanism.
190902  */
190903  /* */
190904 
190905  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
190906  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
190907  that I use the same type everywhere, if any changes are made. THe second one declares the type
190908  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
190909  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
190910  a correspinding one in the AST_FILE_IO class!
190911  */
190912  // DQ (9/2/2015): This typedef is no longer used, we can't define the
190913  // comment here (changed to be a C style comment and not be a doxygen comment).
190914  /* \brief Typedef used for low level memory access.
190915  */
190916  // typedef unsigned char* TestType;
190917 
190918  // DQ (9/2/2015): This typedef is no longer used, we can't define the
190919  // comment here (changed to be a C style comment and not be a doxygen comment).
190920  /* \brief Typedef used to hold memory addresses as values.
190921  */
190922  // typedef unsigned long AddressType;
190923 
190924 
190925 
190926  // necessary, to have direct access to the p_freepointer and the private methods !
190928  friend class AST_FILE_IO;
190929 
190931  friend class SgDeallocateStatementStorageClass;
190932 
190934  friend class AstSpecificDataManagingClass;
190935 
190937  friend class AstSpecificDataManagingClassStorageClass;
190938 
190939  public:
190941  SgDeallocateStatement( const SgDeallocateStatementStorageClass& source );
190942 
190943  // private: // JJW hack
190944  /*
190945  name AST Memory Allocation Support Variables
190946  Memory allocations support variables
190947 
190948  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
190949  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
190950  and support the AST File I/O Mechanism.
190951  */
190952  /* */
190953 
190954  public:
190955 
190956  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
190957  // to current node (so that it will work cleanly with build functions to specify patterns).
190958  // virtual SgNode* addRegExpAttribute();
190965 
190966 // *** COMMON CODE SECTION ENDS HERE ***
190967 
190968 
190969 // End of memberFunctionString
190970 // Start of memberFunctionString
190971 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
190972 
190973  // the generated cast function
190974  // friend ROSE_DLL_API SgDeallocateStatement* isSgDeallocateStatement ( SgNode* s );
190975 
190976  typedef SgStatement base_node_type;
190977 
190978 
190979 // End of memberFunctionString
190980 // Start of memberFunctionString
190981 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
190982 
190983  void post_construction_initialization() override;
190984 
190985 
190986 // End of memberFunctionString
190987 
190988  public:
190989  SgExprListExp* get_expr_list() const;
190990  void set_expr_list(SgExprListExp* expr_list);
190991 
190992  public:
190993  SgExpression* get_stat_expression() const;
190994  void set_stat_expression(SgExpression* stat_expression);
190995 
190996  public:
190997  SgExpression* get_errmsg_expression() const;
190998  void set_errmsg_expression(SgExpression* errmsg_expression);
190999 
191000 
191001  public:
191002  virtual ~SgDeallocateStatement();
191003 
191004 
191005  public:
191006  SgDeallocateStatement(Sg_File_Info* startOfConstruct );
191008 
191009  protected:
191010 // Start of memberFunctionString
191011 SgExprListExp* p_expr_list;
191012 
191013 // End of memberFunctionString
191014 // Start of memberFunctionString
191015 SgExpression* p_stat_expression;
191016 
191017 // End of memberFunctionString
191018 // Start of memberFunctionString
191019 SgExpression* p_errmsg_expression;
191020 
191021 // End of memberFunctionString
191022 
191023 
191024 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
191025 
191026 
191027  };
191028 #endif
191029 
191030 // postdeclarations for SgDeallocateStatement
191031 
191032 /* #line 191033 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
191033 
191034 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
191035 
191036 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
191037 
191038 
191039 /* #line 191040 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
191040 
191041 
191042 
191043 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
191044 
191045 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
191046 // This code is automatically generated for each
191047 // terminal and non-terminal within the defined
191048 // grammar. There is a simple way to change the
191049 // code to fix bugs etc. See the ROSE README file
191050 // for directions.
191051 
191052 // tps: (02/22/2010): Adding DLL export requirements
191053 #include "rosedll.h"
191054 
191055 // predeclarations for SgUpcNotifyStatement
191056 
191057 /* #line 191058 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
191058 
191059 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
191060 
191061 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
191062 
191063 #if 1
191064 // Class Definition for SgUpcNotifyStatement
191065 class ROSE_DLL_API SgUpcNotifyStatement : public SgStatement
191066  {
191067  public:
191068 
191069 
191070 /* #line 191071 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
191071 
191072  virtual SgNode* copy ( SgCopyHelp& help) const override;
191073 // Start of memberFunctionString
191074 /* #line 3857 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
191075 
191076 
191077 
191078 // End of memberFunctionString
191079 // Start of memberFunctionString
191080 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
191081 
191082 // *** COMMON CODE SECTION BEGINS HERE ***
191083 
191084  public:
191085 
191086  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
191087  // and not required which is required to match the other aspects of the copy mechanism code generation.
191088  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
191089  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
191090  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
191091  // virtual SgNode* copy ( const SgCopyHelp & help) const;
191092 
191094  virtual std::string class_name() const override;
191095 
191097  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
191098 
191100  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
191101  // static const VariantT static_variant = V_SgUpcNotifyStatement;
191102  enum { static_variant = V_SgUpcNotifyStatement };
191103 
191104  /* the generated cast function */
191106  ROSE_DLL_API friend SgUpcNotifyStatement* isSgUpcNotifyStatement( SgNode * s );
191107 
191109  ROSE_DLL_API friend const SgUpcNotifyStatement* isSgUpcNotifyStatement( const SgNode * s );
191110 
191111  // ******************************************
191112  // * Memory Pool / New / Delete
191113  // ******************************************
191114 
191115  public:
191117  static const unsigned pool_size; //
191119  static std::vector<unsigned char *> pools; //
191121  static SgUpcNotifyStatement * next_node; //
191122 
191124  static unsigned long initializeStorageClassArray(SgUpcNotifyStatementStorageClass *); //
191125 
191127  static void clearMemoryPool(); //
191128  static void deleteMemoryPool(); //
191129 
191131  static void extendMemoryPoolForFileIO(); //
191132 
191134  static SgUpcNotifyStatement * getPointerFromGlobalIndex(unsigned long); //
191136  static SgUpcNotifyStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
191137 
191139  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
191141  static void resetValidFreepointers(); //
191143  static unsigned long getNumberOfLastValidPointer(); //
191144 
191145 
191146 #if defined(INLINE_FUNCTIONS)
191147 
191148  inline void *operator new (size_t size);
191149 #else
191150 
191151  void *operator new (size_t size);
191152 #endif
191153 
191154  void operator delete (void* pointer, size_t size);
191155 
191156  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
191157  void operator delete (void* pointer)
191158  {
191159  // This is the generated delete operator...
191160  SgUpcNotifyStatement::operator delete (pointer,sizeof(SgUpcNotifyStatement));
191161  }
191162 
191164  static size_t numberOfNodes();
191165 
191167  static size_t memoryUsage();
191168 
191169  // End of scope which started in IR nodes specific code
191170  /* */
191171 
191172  /* name Internal Functions
191173  \brief Internal functions ... incomplete-documentation
191174 
191175  These functions have been made public as part of the design, but they are suggested for internal use
191176  or by particularly knowledgeable users for specialized tools or applications.
191177 
191178  \internal We could not make these private because they are required by user for special purposes. And
191179  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
191180 
191181  */
191182 
191183  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
191184  // overridden in every class by *generated* implementation
191186  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
191187  // MS: 06/28/02 container of names of variables or container indices
191188  // used used in the traversal to access AST successor nodes
191189  // overridden in every class by *generated* implementation
191192  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
191193 
191194  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
191195  // than all the vector copies. The implementation for these functions is generated for each class.
191197  virtual size_t get_numberOfTraversalSuccessors() override;
191199  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
191201  virtual size_t get_childIndex(SgNode *child) override;
191202 
191203 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
191204  // MS: 08/16/2002 method for generating RTI information
191206  virtual RTIReturnType roseRTI() override;
191207 #endif
191208  /* */
191209 
191210 
191211 
191212  /* name Deprecated Functions
191213  \brief Deprecated functions ... incomplete-documentation
191214 
191215  These functions have been deprecated from use.
191216  */
191217  /* */
191218 
191220  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
191221 
191222  // JJW (10/16/2008): Changed to a single function in Node.code, and put
191223  // getVariant() in #if 0 block to prevent confusing Doxygen
191224 #if 0
191225 
191226  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
191228  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
191229 #endif
191230  /* */
191231 
191232 
191233 
191234 
191235  public:
191236  /* name Traversal Support Functions
191237  \brief Traversal support functions ... incomplete-documentation
191238 
191239  These functions have been made public as part of the design, but they are suggested for internal use
191240  or by particularly knowledgable users for specialized tools or applications.
191241  */
191242  /* */
191243 
191244  // DQ (11/26/2005): Support for visitor pattern mechanims
191245  // (inferior to ROSE traversal mechanism, experimental).
191249 
191250  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
191252  virtual void accept (ROSE_VisitorPattern & visitor) override;
191253 
191254  // DQ (12/26/2005): Support for traversal based on the memory pool
191257  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
191258 
191261  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
191262 
191263  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
191264  // This traversal helps support internal tools that call static member functions.
191265  // note: this function operates on the memory pools.
191268  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
191269  /* */
191270 
191271 
191272  public:
191273  /* name Memory Allocation Functions
191274  \brief Memory allocations functions ... incomplete-documentation
191275 
191276  These functions have been made public as part of the design, but they are suggested for internal use
191277  or by particularly knowledgable users for specialized tools or applications.
191278  */
191279  /* */
191280 
191291  virtual bool isInMemoryPool() override;
191292 
191303  virtual void checkDataMemberPointersIfInMemoryPool() override;
191304 
191305  // DQ (4/30/2006): Modified to be a const function.
191320  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
191321 
191331  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
191332 
191344  virtual long getChildIndex( SgNode* childNode ) const override;
191345 
191346  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
191347  // comment here (changed to be a C style comment and not be a doxygen comment).
191348  /* \brief Constructor for use by AST File I/O Mechanism
191349 
191350  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
191351  which obtained via fast binary file I/O from disk.
191352  */
191353  // SgUpcNotifyStatement( SgUpcNotifyStatementStorageClass& source );
191354 
191355 
191356 
191357 
191358 
191359  // JH (10/24/2005): methods added to support the ast file IO
191360  private:
191361 
191362  /* name AST Memory Allocation Support Functions
191363  \brief Memory allocations support....
191364 
191365  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
191366  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
191367  and support the AST File I/O Mechanism.
191368  */
191369  /* */
191370 
191371  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
191372  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
191373  that I use the same type everywhere, if any changes are made. THe second one declares the type
191374  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
191375  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
191376  a correspinding one in the AST_FILE_IO class!
191377  */
191378  // DQ (9/2/2015): This typedef is no longer used, we can't define the
191379  // comment here (changed to be a C style comment and not be a doxygen comment).
191380  /* \brief Typedef used for low level memory access.
191381  */
191382  // typedef unsigned char* TestType;
191383 
191384  // DQ (9/2/2015): This typedef is no longer used, we can't define the
191385  // comment here (changed to be a C style comment and not be a doxygen comment).
191386  /* \brief Typedef used to hold memory addresses as values.
191387  */
191388  // typedef unsigned long AddressType;
191389 
191390 
191391 
191392  // necessary, to have direct access to the p_freepointer and the private methods !
191394  friend class AST_FILE_IO;
191395 
191397  friend class SgUpcNotifyStatementStorageClass;
191398 
191400  friend class AstSpecificDataManagingClass;
191401 
191403  friend class AstSpecificDataManagingClassStorageClass;
191404 
191405  public:
191407  SgUpcNotifyStatement( const SgUpcNotifyStatementStorageClass& source );
191408 
191409  // private: // JJW hack
191410  /*
191411  name AST Memory Allocation Support Variables
191412  Memory allocations support variables
191413 
191414  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
191415  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
191416  and support the AST File I/O Mechanism.
191417  */
191418  /* */
191419 
191420  public:
191421 
191422  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
191423  // to current node (so that it will work cleanly with build functions to specify patterns).
191424  // virtual SgNode* addRegExpAttribute();
191431 
191432 // *** COMMON CODE SECTION ENDS HERE ***
191433 
191434 
191435 // End of memberFunctionString
191436 // Start of memberFunctionString
191437 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
191438 
191439  // the generated cast function
191440  // friend ROSE_DLL_API SgUpcNotifyStatement* isSgUpcNotifyStatement ( SgNode* s );
191441 
191442  typedef SgStatement base_node_type;
191443 
191444 
191445 // End of memberFunctionString
191446 // Start of memberFunctionString
191447 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
191448 
191449  void post_construction_initialization() override;
191450 
191451 
191452 // End of memberFunctionString
191453 
191454  public:
191455  SgExpression* get_notify_expression() const;
191456  void set_notify_expression(SgExpression* notify_expression);
191457 
191458 
191459  public:
191460  virtual ~SgUpcNotifyStatement();
191461 
191462 
191463  public:
191464  SgUpcNotifyStatement(Sg_File_Info* startOfConstruct , SgExpression* notify_expression = NULL);
191465  SgUpcNotifyStatement(SgExpression* notify_expression);
191466 
191467  protected:
191468 // Start of memberFunctionString
191469 SgExpression* p_notify_expression;
191470 
191471 // End of memberFunctionString
191472 
191473 
191474 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
191475 
191476 
191477  };
191478 #endif
191479 
191480 // postdeclarations for SgUpcNotifyStatement
191481 
191482 /* #line 191483 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
191483 
191484 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
191485 
191486 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
191487 
191488 
191489 /* #line 191490 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
191490 
191491 
191492 
191493 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
191494 
191495 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
191496 // This code is automatically generated for each
191497 // terminal and non-terminal within the defined
191498 // grammar. There is a simple way to change the
191499 // code to fix bugs etc. See the ROSE README file
191500 // for directions.
191501 
191502 // tps: (02/22/2010): Adding DLL export requirements
191503 #include "rosedll.h"
191504 
191505 // predeclarations for SgUpcWaitStatement
191506 
191507 /* #line 191508 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
191508 
191509 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
191510 
191511 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
191512 
191513 #if 1
191514 // Class Definition for SgUpcWaitStatement
191515 class ROSE_DLL_API SgUpcWaitStatement : public SgStatement
191516  {
191517  public:
191518 
191519 
191520 /* #line 191521 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
191521 
191522  virtual SgNode* copy ( SgCopyHelp& help) const override;
191523 // Start of memberFunctionString
191524 /* #line 3860 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
191525 
191526 
191527 
191528 // End of memberFunctionString
191529 // Start of memberFunctionString
191530 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
191531 
191532 // *** COMMON CODE SECTION BEGINS HERE ***
191533 
191534  public:
191535 
191536  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
191537  // and not required which is required to match the other aspects of the copy mechanism code generation.
191538  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
191539  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
191540  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
191541  // virtual SgNode* copy ( const SgCopyHelp & help) const;
191542 
191544  virtual std::string class_name() const override;
191545 
191547  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
191548 
191550  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
191551  // static const VariantT static_variant = V_SgUpcWaitStatement;
191552  enum { static_variant = V_SgUpcWaitStatement };
191553 
191554  /* the generated cast function */
191556  ROSE_DLL_API friend SgUpcWaitStatement* isSgUpcWaitStatement( SgNode * s );
191557 
191559  ROSE_DLL_API friend const SgUpcWaitStatement* isSgUpcWaitStatement( const SgNode * s );
191560 
191561  // ******************************************
191562  // * Memory Pool / New / Delete
191563  // ******************************************
191564 
191565  public:
191567  static const unsigned pool_size; //
191569  static std::vector<unsigned char *> pools; //
191571  static SgUpcWaitStatement * next_node; //
191572 
191574  static unsigned long initializeStorageClassArray(SgUpcWaitStatementStorageClass *); //
191575 
191577  static void clearMemoryPool(); //
191578  static void deleteMemoryPool(); //
191579 
191581  static void extendMemoryPoolForFileIO(); //
191582 
191584  static SgUpcWaitStatement * getPointerFromGlobalIndex(unsigned long); //
191586  static SgUpcWaitStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
191587 
191589  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
191591  static void resetValidFreepointers(); //
191593  static unsigned long getNumberOfLastValidPointer(); //
191594 
191595 
191596 #if defined(INLINE_FUNCTIONS)
191597 
191598  inline void *operator new (size_t size);
191599 #else
191600 
191601  void *operator new (size_t size);
191602 #endif
191603 
191604  void operator delete (void* pointer, size_t size);
191605 
191606  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
191607  void operator delete (void* pointer)
191608  {
191609  // This is the generated delete operator...
191610  SgUpcWaitStatement::operator delete (pointer,sizeof(SgUpcWaitStatement));
191611  }
191612 
191614  static size_t numberOfNodes();
191615 
191617  static size_t memoryUsage();
191618 
191619  // End of scope which started in IR nodes specific code
191620  /* */
191621 
191622  /* name Internal Functions
191623  \brief Internal functions ... incomplete-documentation
191624 
191625  These functions have been made public as part of the design, but they are suggested for internal use
191626  or by particularly knowledgeable users for specialized tools or applications.
191627 
191628  \internal We could not make these private because they are required by user for special purposes. And
191629  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
191630 
191631  */
191632 
191633  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
191634  // overridden in every class by *generated* implementation
191636  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
191637  // MS: 06/28/02 container of names of variables or container indices
191638  // used used in the traversal to access AST successor nodes
191639  // overridden in every class by *generated* implementation
191642  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
191643 
191644  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
191645  // than all the vector copies. The implementation for these functions is generated for each class.
191647  virtual size_t get_numberOfTraversalSuccessors() override;
191649  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
191651  virtual size_t get_childIndex(SgNode *child) override;
191652 
191653 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
191654  // MS: 08/16/2002 method for generating RTI information
191656  virtual RTIReturnType roseRTI() override;
191657 #endif
191658  /* */
191659 
191660 
191661 
191662  /* name Deprecated Functions
191663  \brief Deprecated functions ... incomplete-documentation
191664 
191665  These functions have been deprecated from use.
191666  */
191667  /* */
191668 
191670  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
191671 
191672  // JJW (10/16/2008): Changed to a single function in Node.code, and put
191673  // getVariant() in #if 0 block to prevent confusing Doxygen
191674 #if 0
191675 
191676  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
191678  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
191679 #endif
191680  /* */
191681 
191682 
191683 
191684 
191685  public:
191686  /* name Traversal Support Functions
191687  \brief Traversal support functions ... incomplete-documentation
191688 
191689  These functions have been made public as part of the design, but they are suggested for internal use
191690  or by particularly knowledgable users for specialized tools or applications.
191691  */
191692  /* */
191693 
191694  // DQ (11/26/2005): Support for visitor pattern mechanims
191695  // (inferior to ROSE traversal mechanism, experimental).
191699 
191700  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
191702  virtual void accept (ROSE_VisitorPattern & visitor) override;
191703 
191704  // DQ (12/26/2005): Support for traversal based on the memory pool
191707  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
191708 
191711  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
191712 
191713  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
191714  // This traversal helps support internal tools that call static member functions.
191715  // note: this function operates on the memory pools.
191718  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
191719  /* */
191720 
191721 
191722  public:
191723  /* name Memory Allocation Functions
191724  \brief Memory allocations functions ... incomplete-documentation
191725 
191726  These functions have been made public as part of the design, but they are suggested for internal use
191727  or by particularly knowledgable users for specialized tools or applications.
191728  */
191729  /* */
191730 
191741  virtual bool isInMemoryPool() override;
191742 
191753  virtual void checkDataMemberPointersIfInMemoryPool() override;
191754 
191755  // DQ (4/30/2006): Modified to be a const function.
191770  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
191771 
191781  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
191782 
191794  virtual long getChildIndex( SgNode* childNode ) const override;
191795 
191796  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
191797  // comment here (changed to be a C style comment and not be a doxygen comment).
191798  /* \brief Constructor for use by AST File I/O Mechanism
191799 
191800  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
191801  which obtained via fast binary file I/O from disk.
191802  */
191803  // SgUpcWaitStatement( SgUpcWaitStatementStorageClass& source );
191804 
191805 
191806 
191807 
191808 
191809  // JH (10/24/2005): methods added to support the ast file IO
191810  private:
191811 
191812  /* name AST Memory Allocation Support Functions
191813  \brief Memory allocations support....
191814 
191815  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
191816  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
191817  and support the AST File I/O Mechanism.
191818  */
191819  /* */
191820 
191821  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
191822  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
191823  that I use the same type everywhere, if any changes are made. THe second one declares the type
191824  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
191825  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
191826  a correspinding one in the AST_FILE_IO class!
191827  */
191828  // DQ (9/2/2015): This typedef is no longer used, we can't define the
191829  // comment here (changed to be a C style comment and not be a doxygen comment).
191830  /* \brief Typedef used for low level memory access.
191831  */
191832  // typedef unsigned char* TestType;
191833 
191834  // DQ (9/2/2015): This typedef is no longer used, we can't define the
191835  // comment here (changed to be a C style comment and not be a doxygen comment).
191836  /* \brief Typedef used to hold memory addresses as values.
191837  */
191838  // typedef unsigned long AddressType;
191839 
191840 
191841 
191842  // necessary, to have direct access to the p_freepointer and the private methods !
191844  friend class AST_FILE_IO;
191845 
191847  friend class SgUpcWaitStatementStorageClass;
191848 
191850  friend class AstSpecificDataManagingClass;
191851 
191853  friend class AstSpecificDataManagingClassStorageClass;
191854 
191855  public:
191857  SgUpcWaitStatement( const SgUpcWaitStatementStorageClass& source );
191858 
191859  // private: // JJW hack
191860  /*
191861  name AST Memory Allocation Support Variables
191862  Memory allocations support variables
191863 
191864  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
191865  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
191866  and support the AST File I/O Mechanism.
191867  */
191868  /* */
191869 
191870  public:
191871 
191872  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
191873  // to current node (so that it will work cleanly with build functions to specify patterns).
191874  // virtual SgNode* addRegExpAttribute();
191881 
191882 // *** COMMON CODE SECTION ENDS HERE ***
191883 
191884 
191885 // End of memberFunctionString
191886 // Start of memberFunctionString
191887 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
191888 
191889  // the generated cast function
191890  // friend ROSE_DLL_API SgUpcWaitStatement* isSgUpcWaitStatement ( SgNode* s );
191891 
191892  typedef SgStatement base_node_type;
191893 
191894 
191895 // End of memberFunctionString
191896 // Start of memberFunctionString
191897 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
191898 
191899  void post_construction_initialization() override;
191900 
191901 
191902 // End of memberFunctionString
191903 
191904  public:
191905  SgExpression* get_wait_expression() const;
191906  void set_wait_expression(SgExpression* wait_expression);
191907 
191908 
191909  public:
191910  virtual ~SgUpcWaitStatement();
191911 
191912 
191913  public:
191914  SgUpcWaitStatement(Sg_File_Info* startOfConstruct , SgExpression* wait_expression = NULL);
191915  SgUpcWaitStatement(SgExpression* wait_expression);
191916 
191917  protected:
191918 // Start of memberFunctionString
191919 SgExpression* p_wait_expression;
191920 
191921 // End of memberFunctionString
191922 
191923 
191924 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
191925 
191926 
191927  };
191928 #endif
191929 
191930 // postdeclarations for SgUpcWaitStatement
191931 
191932 /* #line 191933 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
191933 
191934 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
191935 
191936 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
191937 
191938 
191939 /* #line 191940 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
191940 
191941 
191942 
191943 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
191944 
191945 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
191946 // This code is automatically generated for each
191947 // terminal and non-terminal within the defined
191948 // grammar. There is a simple way to change the
191949 // code to fix bugs etc. See the ROSE README file
191950 // for directions.
191951 
191952 // tps: (02/22/2010): Adding DLL export requirements
191953 #include "rosedll.h"
191954 
191955 // predeclarations for SgUpcBarrierStatement
191956 
191957 /* #line 191958 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
191958 
191959 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
191960 
191961 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
191962 
191963 #if 1
191964 // Class Definition for SgUpcBarrierStatement
191965 class ROSE_DLL_API SgUpcBarrierStatement : public SgStatement
191966  {
191967  public:
191968 
191969 
191970 /* #line 191971 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
191971 
191972  virtual SgNode* copy ( SgCopyHelp& help) const override;
191973 // Start of memberFunctionString
191974 /* #line 3863 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
191975 
191976 
191977 
191978 // End of memberFunctionString
191979 // Start of memberFunctionString
191980 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
191981 
191982 // *** COMMON CODE SECTION BEGINS HERE ***
191983 
191984  public:
191985 
191986  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
191987  // and not required which is required to match the other aspects of the copy mechanism code generation.
191988  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
191989  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
191990  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
191991  // virtual SgNode* copy ( const SgCopyHelp & help) const;
191992 
191994  virtual std::string class_name() const override;
191995 
191997  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
191998 
192000  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
192001  // static const VariantT static_variant = V_SgUpcBarrierStatement;
192002  enum { static_variant = V_SgUpcBarrierStatement };
192003 
192004  /* the generated cast function */
192006  ROSE_DLL_API friend SgUpcBarrierStatement* isSgUpcBarrierStatement( SgNode * s );
192007 
192009  ROSE_DLL_API friend const SgUpcBarrierStatement* isSgUpcBarrierStatement( const SgNode * s );
192010 
192011  // ******************************************
192012  // * Memory Pool / New / Delete
192013  // ******************************************
192014 
192015  public:
192017  static const unsigned pool_size; //
192019  static std::vector<unsigned char *> pools; //
192021  static SgUpcBarrierStatement * next_node; //
192022 
192024  static unsigned long initializeStorageClassArray(SgUpcBarrierStatementStorageClass *); //
192025 
192027  static void clearMemoryPool(); //
192028  static void deleteMemoryPool(); //
192029 
192031  static void extendMemoryPoolForFileIO(); //
192032 
192034  static SgUpcBarrierStatement * getPointerFromGlobalIndex(unsigned long); //
192036  static SgUpcBarrierStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
192037 
192039  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
192041  static void resetValidFreepointers(); //
192043  static unsigned long getNumberOfLastValidPointer(); //
192044 
192045 
192046 #if defined(INLINE_FUNCTIONS)
192047 
192048  inline void *operator new (size_t size);
192049 #else
192050 
192051  void *operator new (size_t size);
192052 #endif
192053 
192054  void operator delete (void* pointer, size_t size);
192055 
192056  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
192057  void operator delete (void* pointer)
192058  {
192059  // This is the generated delete operator...
192060  SgUpcBarrierStatement::operator delete (pointer,sizeof(SgUpcBarrierStatement));
192061  }
192062 
192064  static size_t numberOfNodes();
192065 
192067  static size_t memoryUsage();
192068 
192069  // End of scope which started in IR nodes specific code
192070  /* */
192071 
192072  /* name Internal Functions
192073  \brief Internal functions ... incomplete-documentation
192074 
192075  These functions have been made public as part of the design, but they are suggested for internal use
192076  or by particularly knowledgeable users for specialized tools or applications.
192077 
192078  \internal We could not make these private because they are required by user for special purposes. And
192079  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
192080 
192081  */
192082 
192083  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
192084  // overridden in every class by *generated* implementation
192086  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
192087  // MS: 06/28/02 container of names of variables or container indices
192088  // used used in the traversal to access AST successor nodes
192089  // overridden in every class by *generated* implementation
192092  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
192093 
192094  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
192095  // than all the vector copies. The implementation for these functions is generated for each class.
192097  virtual size_t get_numberOfTraversalSuccessors() override;
192099  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
192101  virtual size_t get_childIndex(SgNode *child) override;
192102 
192103 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
192104  // MS: 08/16/2002 method for generating RTI information
192106  virtual RTIReturnType roseRTI() override;
192107 #endif
192108  /* */
192109 
192110 
192111 
192112  /* name Deprecated Functions
192113  \brief Deprecated functions ... incomplete-documentation
192114 
192115  These functions have been deprecated from use.
192116  */
192117  /* */
192118 
192120  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
192121 
192122  // JJW (10/16/2008): Changed to a single function in Node.code, and put
192123  // getVariant() in #if 0 block to prevent confusing Doxygen
192124 #if 0
192125 
192126  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
192128  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
192129 #endif
192130  /* */
192131 
192132 
192133 
192134 
192135  public:
192136  /* name Traversal Support Functions
192137  \brief Traversal support functions ... incomplete-documentation
192138 
192139  These functions have been made public as part of the design, but they are suggested for internal use
192140  or by particularly knowledgable users for specialized tools or applications.
192141  */
192142  /* */
192143 
192144  // DQ (11/26/2005): Support for visitor pattern mechanims
192145  // (inferior to ROSE traversal mechanism, experimental).
192149 
192150  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
192152  virtual void accept (ROSE_VisitorPattern & visitor) override;
192153 
192154  // DQ (12/26/2005): Support for traversal based on the memory pool
192157  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
192158 
192161  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
192162 
192163  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
192164  // This traversal helps support internal tools that call static member functions.
192165  // note: this function operates on the memory pools.
192168  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
192169  /* */
192170 
192171 
192172  public:
192173  /* name Memory Allocation Functions
192174  \brief Memory allocations functions ... incomplete-documentation
192175 
192176  These functions have been made public as part of the design, but they are suggested for internal use
192177  or by particularly knowledgable users for specialized tools or applications.
192178  */
192179  /* */
192180 
192191  virtual bool isInMemoryPool() override;
192192 
192203  virtual void checkDataMemberPointersIfInMemoryPool() override;
192204 
192205  // DQ (4/30/2006): Modified to be a const function.
192220  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
192221 
192231  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
192232 
192244  virtual long getChildIndex( SgNode* childNode ) const override;
192245 
192246  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
192247  // comment here (changed to be a C style comment and not be a doxygen comment).
192248  /* \brief Constructor for use by AST File I/O Mechanism
192249 
192250  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
192251  which obtained via fast binary file I/O from disk.
192252  */
192253  // SgUpcBarrierStatement( SgUpcBarrierStatementStorageClass& source );
192254 
192255 
192256 
192257 
192258 
192259  // JH (10/24/2005): methods added to support the ast file IO
192260  private:
192261 
192262  /* name AST Memory Allocation Support Functions
192263  \brief Memory allocations support....
192264 
192265  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
192266  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
192267  and support the AST File I/O Mechanism.
192268  */
192269  /* */
192270 
192271  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
192272  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
192273  that I use the same type everywhere, if any changes are made. THe second one declares the type
192274  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
192275  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
192276  a correspinding one in the AST_FILE_IO class!
192277  */
192278  // DQ (9/2/2015): This typedef is no longer used, we can't define the
192279  // comment here (changed to be a C style comment and not be a doxygen comment).
192280  /* \brief Typedef used for low level memory access.
192281  */
192282  // typedef unsigned char* TestType;
192283 
192284  // DQ (9/2/2015): This typedef is no longer used, we can't define the
192285  // comment here (changed to be a C style comment and not be a doxygen comment).
192286  /* \brief Typedef used to hold memory addresses as values.
192287  */
192288  // typedef unsigned long AddressType;
192289 
192290 
192291 
192292  // necessary, to have direct access to the p_freepointer and the private methods !
192294  friend class AST_FILE_IO;
192295 
192297  friend class SgUpcBarrierStatementStorageClass;
192298 
192300  friend class AstSpecificDataManagingClass;
192301 
192303  friend class AstSpecificDataManagingClassStorageClass;
192304 
192305  public:
192307  SgUpcBarrierStatement( const SgUpcBarrierStatementStorageClass& source );
192308 
192309  // private: // JJW hack
192310  /*
192311  name AST Memory Allocation Support Variables
192312  Memory allocations support variables
192313 
192314  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
192315  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
192316  and support the AST File I/O Mechanism.
192317  */
192318  /* */
192319 
192320  public:
192321 
192322  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
192323  // to current node (so that it will work cleanly with build functions to specify patterns).
192324  // virtual SgNode* addRegExpAttribute();
192331 
192332 // *** COMMON CODE SECTION ENDS HERE ***
192333 
192334 
192335 // End of memberFunctionString
192336 // Start of memberFunctionString
192337 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
192338 
192339  // the generated cast function
192340  // friend ROSE_DLL_API SgUpcBarrierStatement* isSgUpcBarrierStatement ( SgNode* s );
192341 
192342  typedef SgStatement base_node_type;
192343 
192344 
192345 // End of memberFunctionString
192346 // Start of memberFunctionString
192347 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
192348 
192349  void post_construction_initialization() override;
192350 
192351 
192352 // End of memberFunctionString
192353 
192354  public:
192355  SgExpression* get_barrier_expression() const;
192356  void set_barrier_expression(SgExpression* barrier_expression);
192357 
192358 
192359  public:
192360  virtual ~SgUpcBarrierStatement();
192361 
192362 
192363  public:
192364  SgUpcBarrierStatement(Sg_File_Info* startOfConstruct , SgExpression* barrier_expression = NULL);
192365  SgUpcBarrierStatement(SgExpression* barrier_expression);
192366 
192367  protected:
192368 // Start of memberFunctionString
192369 SgExpression* p_barrier_expression;
192370 
192371 // End of memberFunctionString
192372 
192373 
192374 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
192375 
192376 
192377  };
192378 #endif
192379 
192380 // postdeclarations for SgUpcBarrierStatement
192381 
192382 /* #line 192383 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
192383 
192384 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
192385 
192386 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
192387 
192388 
192389 /* #line 192390 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
192390 
192391 
192392 
192393 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
192394 
192395 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
192396 // This code is automatically generated for each
192397 // terminal and non-terminal within the defined
192398 // grammar. There is a simple way to change the
192399 // code to fix bugs etc. See the ROSE README file
192400 // for directions.
192401 
192402 // tps: (02/22/2010): Adding DLL export requirements
192403 #include "rosedll.h"
192404 
192405 // predeclarations for SgUpcFenceStatement
192406 
192407 /* #line 192408 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
192408 
192409 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
192410 
192411 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
192412 
192413 #if 1
192414 // Class Definition for SgUpcFenceStatement
192415 class ROSE_DLL_API SgUpcFenceStatement : public SgStatement
192416  {
192417  public:
192418 
192419 
192420 /* #line 192421 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
192421 
192422  virtual SgNode* copy ( SgCopyHelp& help) const override;
192423 // Start of memberFunctionString
192424 /* #line 3866 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
192425 
192426 
192427 
192428 // End of memberFunctionString
192429 // Start of memberFunctionString
192430 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
192431 
192432 // *** COMMON CODE SECTION BEGINS HERE ***
192433 
192434  public:
192435 
192436  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
192437  // and not required which is required to match the other aspects of the copy mechanism code generation.
192438  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
192439  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
192440  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
192441  // virtual SgNode* copy ( const SgCopyHelp & help) const;
192442 
192444  virtual std::string class_name() const override;
192445 
192447  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
192448 
192450  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
192451  // static const VariantT static_variant = V_SgUpcFenceStatement;
192452  enum { static_variant = V_SgUpcFenceStatement };
192453 
192454  /* the generated cast function */
192456  ROSE_DLL_API friend SgUpcFenceStatement* isSgUpcFenceStatement( SgNode * s );
192457 
192459  ROSE_DLL_API friend const SgUpcFenceStatement* isSgUpcFenceStatement( const SgNode * s );
192460 
192461  // ******************************************
192462  // * Memory Pool / New / Delete
192463  // ******************************************
192464 
192465  public:
192467  static const unsigned pool_size; //
192469  static std::vector<unsigned char *> pools; //
192471  static SgUpcFenceStatement * next_node; //
192472 
192474  static unsigned long initializeStorageClassArray(SgUpcFenceStatementStorageClass *); //
192475 
192477  static void clearMemoryPool(); //
192478  static void deleteMemoryPool(); //
192479 
192481  static void extendMemoryPoolForFileIO(); //
192482 
192484  static SgUpcFenceStatement * getPointerFromGlobalIndex(unsigned long); //
192486  static SgUpcFenceStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
192487 
192489  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
192491  static void resetValidFreepointers(); //
192493  static unsigned long getNumberOfLastValidPointer(); //
192494 
192495 
192496 #if defined(INLINE_FUNCTIONS)
192497 
192498  inline void *operator new (size_t size);
192499 #else
192500 
192501  void *operator new (size_t size);
192502 #endif
192503 
192504  void operator delete (void* pointer, size_t size);
192505 
192506  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
192507  void operator delete (void* pointer)
192508  {
192509  // This is the generated delete operator...
192510  SgUpcFenceStatement::operator delete (pointer,sizeof(SgUpcFenceStatement));
192511  }
192512 
192514  static size_t numberOfNodes();
192515 
192517  static size_t memoryUsage();
192518 
192519  // End of scope which started in IR nodes specific code
192520  /* */
192521 
192522  /* name Internal Functions
192523  \brief Internal functions ... incomplete-documentation
192524 
192525  These functions have been made public as part of the design, but they are suggested for internal use
192526  or by particularly knowledgeable users for specialized tools or applications.
192527 
192528  \internal We could not make these private because they are required by user for special purposes. And
192529  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
192530 
192531  */
192532 
192533  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
192534  // overridden in every class by *generated* implementation
192536  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
192537  // MS: 06/28/02 container of names of variables or container indices
192538  // used used in the traversal to access AST successor nodes
192539  // overridden in every class by *generated* implementation
192542  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
192543 
192544  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
192545  // than all the vector copies. The implementation for these functions is generated for each class.
192547  virtual size_t get_numberOfTraversalSuccessors() override;
192549  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
192551  virtual size_t get_childIndex(SgNode *child) override;
192552 
192553 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
192554  // MS: 08/16/2002 method for generating RTI information
192556  virtual RTIReturnType roseRTI() override;
192557 #endif
192558  /* */
192559 
192560 
192561 
192562  /* name Deprecated Functions
192563  \brief Deprecated functions ... incomplete-documentation
192564 
192565  These functions have been deprecated from use.
192566  */
192567  /* */
192568 
192570  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
192571 
192572  // JJW (10/16/2008): Changed to a single function in Node.code, and put
192573  // getVariant() in #if 0 block to prevent confusing Doxygen
192574 #if 0
192575 
192576  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
192578  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
192579 #endif
192580  /* */
192581 
192582 
192583 
192584 
192585  public:
192586  /* name Traversal Support Functions
192587  \brief Traversal support functions ... incomplete-documentation
192588 
192589  These functions have been made public as part of the design, but they are suggested for internal use
192590  or by particularly knowledgable users for specialized tools or applications.
192591  */
192592  /* */
192593 
192594  // DQ (11/26/2005): Support for visitor pattern mechanims
192595  // (inferior to ROSE traversal mechanism, experimental).
192599 
192600  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
192602  virtual void accept (ROSE_VisitorPattern & visitor) override;
192603 
192604  // DQ (12/26/2005): Support for traversal based on the memory pool
192607  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
192608 
192611  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
192612 
192613  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
192614  // This traversal helps support internal tools that call static member functions.
192615  // note: this function operates on the memory pools.
192618  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
192619  /* */
192620 
192621 
192622  public:
192623  /* name Memory Allocation Functions
192624  \brief Memory allocations functions ... incomplete-documentation
192625 
192626  These functions have been made public as part of the design, but they are suggested for internal use
192627  or by particularly knowledgable users for specialized tools or applications.
192628  */
192629  /* */
192630 
192641  virtual bool isInMemoryPool() override;
192642 
192653  virtual void checkDataMemberPointersIfInMemoryPool() override;
192654 
192655  // DQ (4/30/2006): Modified to be a const function.
192670  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
192671 
192681  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
192682 
192694  virtual long getChildIndex( SgNode* childNode ) const override;
192695 
192696  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
192697  // comment here (changed to be a C style comment and not be a doxygen comment).
192698  /* \brief Constructor for use by AST File I/O Mechanism
192699 
192700  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
192701  which obtained via fast binary file I/O from disk.
192702  */
192703  // SgUpcFenceStatement( SgUpcFenceStatementStorageClass& source );
192704 
192705 
192706 
192707 
192708 
192709  // JH (10/24/2005): methods added to support the ast file IO
192710  private:
192711 
192712  /* name AST Memory Allocation Support Functions
192713  \brief Memory allocations support....
192714 
192715  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
192716  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
192717  and support the AST File I/O Mechanism.
192718  */
192719  /* */
192720 
192721  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
192722  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
192723  that I use the same type everywhere, if any changes are made. THe second one declares the type
192724  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
192725  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
192726  a correspinding one in the AST_FILE_IO class!
192727  */
192728  // DQ (9/2/2015): This typedef is no longer used, we can't define the
192729  // comment here (changed to be a C style comment and not be a doxygen comment).
192730  /* \brief Typedef used for low level memory access.
192731  */
192732  // typedef unsigned char* TestType;
192733 
192734  // DQ (9/2/2015): This typedef is no longer used, we can't define the
192735  // comment here (changed to be a C style comment and not be a doxygen comment).
192736  /* \brief Typedef used to hold memory addresses as values.
192737  */
192738  // typedef unsigned long AddressType;
192739 
192740 
192741 
192742  // necessary, to have direct access to the p_freepointer and the private methods !
192744  friend class AST_FILE_IO;
192745 
192747  friend class SgUpcFenceStatementStorageClass;
192748 
192750  friend class AstSpecificDataManagingClass;
192751 
192753  friend class AstSpecificDataManagingClassStorageClass;
192754 
192755  public:
192757  SgUpcFenceStatement( const SgUpcFenceStatementStorageClass& source );
192758 
192759  // private: // JJW hack
192760  /*
192761  name AST Memory Allocation Support Variables
192762  Memory allocations support variables
192763 
192764  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
192765  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
192766  and support the AST File I/O Mechanism.
192767  */
192768  /* */
192769 
192770  public:
192771 
192772  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
192773  // to current node (so that it will work cleanly with build functions to specify patterns).
192774  // virtual SgNode* addRegExpAttribute();
192781 
192782 // *** COMMON CODE SECTION ENDS HERE ***
192783 
192784 
192785 // End of memberFunctionString
192786 // Start of memberFunctionString
192787 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
192788 
192789  // the generated cast function
192790  // friend ROSE_DLL_API SgUpcFenceStatement* isSgUpcFenceStatement ( SgNode* s );
192791 
192792  typedef SgStatement base_node_type;
192793 
192794 
192795 // End of memberFunctionString
192796 // Start of memberFunctionString
192797 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
192798 
192799  void post_construction_initialization() override;
192800 
192801 
192802 // End of memberFunctionString
192803 
192804 
192805  public:
192806  virtual ~SgUpcFenceStatement();
192807 
192808 
192809  public:
192810  SgUpcFenceStatement(Sg_File_Info* startOfConstruct );
192811  SgUpcFenceStatement();
192812 
192813  protected:
192814 
192815 
192816 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
192817 
192818 
192819  };
192820 #endif
192821 
192822 // postdeclarations for SgUpcFenceStatement
192823 
192824 /* #line 192825 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
192825 
192826 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
192827 
192828 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
192829 
192830 
192831 /* #line 192832 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
192832 
192833 
192834 
192835 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
192836 
192837 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
192838 // This code is automatically generated for each
192839 // terminal and non-terminal within the defined
192840 // grammar. There is a simple way to change the
192841 // code to fix bugs etc. See the ROSE README file
192842 // for directions.
192843 
192844 // tps: (02/22/2010): Adding DLL export requirements
192845 #include "rosedll.h"
192846 
192847 // predeclarations for SgUpirBaseStatement
192848 
192849 /* #line 192850 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
192850 
192851 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
192852 
192853 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
192854 
192855 #if 1
192856 // Class Definition for SgUpirBaseStatement
192857 class ROSE_DLL_API SgUpirBaseStatement : public SgStatement
192858  {
192859  public:
192860 
192861 
192862 /* #line 192863 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
192863 
192864  virtual SgNode* copy ( SgCopyHelp& help) const override;
192865 // Start of memberFunctionString
192866 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
192867 
192868 // *** COMMON CODE SECTION BEGINS HERE ***
192869 
192870  public:
192871 
192872  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
192873  // and not required which is required to match the other aspects of the copy mechanism code generation.
192874  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
192875  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
192876  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
192877  // virtual SgNode* copy ( const SgCopyHelp & help) const;
192878 
192880  virtual std::string class_name() const override;
192881 
192883  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
192884 
192886  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
192887  // static const VariantT static_variant = V_SgUpirBaseStatement;
192888  enum { static_variant = V_SgUpirBaseStatement };
192889 
192890  /* the generated cast function */
192892  ROSE_DLL_API friend SgUpirBaseStatement* isSgUpirBaseStatement( SgNode * s );
192893 
192895  ROSE_DLL_API friend const SgUpirBaseStatement* isSgUpirBaseStatement( const SgNode * s );
192896 
192897  // ******************************************
192898  // * Memory Pool / New / Delete
192899  // ******************************************
192900 
192901  public:
192903  static const unsigned pool_size; //
192905  static std::vector<unsigned char *> pools; //
192907  static SgUpirBaseStatement * next_node; //
192908 
192910  static unsigned long initializeStorageClassArray(SgUpirBaseStatementStorageClass *); //
192911 
192913  static void clearMemoryPool(); //
192914  static void deleteMemoryPool(); //
192915 
192917  static void extendMemoryPoolForFileIO(); //
192918 
192920  static SgUpirBaseStatement * getPointerFromGlobalIndex(unsigned long); //
192922  static SgUpirBaseStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
192923 
192925  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
192927  static void resetValidFreepointers(); //
192929  static unsigned long getNumberOfLastValidPointer(); //
192930 
192931 
192932 #if defined(INLINE_FUNCTIONS)
192933 
192934  inline void *operator new (size_t size);
192935 #else
192936 
192937  void *operator new (size_t size);
192938 #endif
192939 
192940  void operator delete (void* pointer, size_t size);
192941 
192942  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
192943  void operator delete (void* pointer)
192944  {
192945  // This is the generated delete operator...
192946  SgUpirBaseStatement::operator delete (pointer,sizeof(SgUpirBaseStatement));
192947  }
192948 
192950  static size_t numberOfNodes();
192951 
192953  static size_t memoryUsage();
192954 
192955  // End of scope which started in IR nodes specific code
192956  /* */
192957 
192958  /* name Internal Functions
192959  \brief Internal functions ... incomplete-documentation
192960 
192961  These functions have been made public as part of the design, but they are suggested for internal use
192962  or by particularly knowledgeable users for specialized tools or applications.
192963 
192964  \internal We could not make these private because they are required by user for special purposes. And
192965  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
192966 
192967  */
192968 
192969  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
192970  // overridden in every class by *generated* implementation
192972  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
192973  // MS: 06/28/02 container of names of variables or container indices
192974  // used used in the traversal to access AST successor nodes
192975  // overridden in every class by *generated* implementation
192978  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
192979 
192980  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
192981  // than all the vector copies. The implementation for these functions is generated for each class.
192983  virtual size_t get_numberOfTraversalSuccessors() override;
192985  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
192987  virtual size_t get_childIndex(SgNode *child) override;
192988 
192989 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
192990  // MS: 08/16/2002 method for generating RTI information
192992  virtual RTIReturnType roseRTI() override;
192993 #endif
192994  /* */
192995 
192996 
192997 
192998  /* name Deprecated Functions
192999  \brief Deprecated functions ... incomplete-documentation
193000 
193001  These functions have been deprecated from use.
193002  */
193003  /* */
193004 
193006  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
193007 
193008  // JJW (10/16/2008): Changed to a single function in Node.code, and put
193009  // getVariant() in #if 0 block to prevent confusing Doxygen
193010 #if 0
193011 
193012  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
193014  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
193015 #endif
193016  /* */
193017 
193018 
193019 
193020 
193021  public:
193022  /* name Traversal Support Functions
193023  \brief Traversal support functions ... incomplete-documentation
193024 
193025  These functions have been made public as part of the design, but they are suggested for internal use
193026  or by particularly knowledgable users for specialized tools or applications.
193027  */
193028  /* */
193029 
193030  // DQ (11/26/2005): Support for visitor pattern mechanims
193031  // (inferior to ROSE traversal mechanism, experimental).
193035 
193036  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
193038  virtual void accept (ROSE_VisitorPattern & visitor) override;
193039 
193040  // DQ (12/26/2005): Support for traversal based on the memory pool
193043  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
193044 
193047  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
193048 
193049  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
193050  // This traversal helps support internal tools that call static member functions.
193051  // note: this function operates on the memory pools.
193054  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
193055  /* */
193056 
193057 
193058  public:
193059  /* name Memory Allocation Functions
193060  \brief Memory allocations functions ... incomplete-documentation
193061 
193062  These functions have been made public as part of the design, but they are suggested for internal use
193063  or by particularly knowledgable users for specialized tools or applications.
193064  */
193065  /* */
193066 
193077  virtual bool isInMemoryPool() override;
193078 
193089  virtual void checkDataMemberPointersIfInMemoryPool() override;
193090 
193091  // DQ (4/30/2006): Modified to be a const function.
193106  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
193107 
193117  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
193118 
193130  virtual long getChildIndex( SgNode* childNode ) const override;
193131 
193132  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
193133  // comment here (changed to be a C style comment and not be a doxygen comment).
193134  /* \brief Constructor for use by AST File I/O Mechanism
193135 
193136  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
193137  which obtained via fast binary file I/O from disk.
193138  */
193139  // SgUpirBaseStatement( SgUpirBaseStatementStorageClass& source );
193140 
193141 
193142 
193143 
193144 
193145  // JH (10/24/2005): methods added to support the ast file IO
193146  private:
193147 
193148  /* name AST Memory Allocation Support Functions
193149  \brief Memory allocations support....
193150 
193151  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
193152  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
193153  and support the AST File I/O Mechanism.
193154  */
193155  /* */
193156 
193157  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
193158  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
193159  that I use the same type everywhere, if any changes are made. THe second one declares the type
193160  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
193161  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
193162  a correspinding one in the AST_FILE_IO class!
193163  */
193164  // DQ (9/2/2015): This typedef is no longer used, we can't define the
193165  // comment here (changed to be a C style comment and not be a doxygen comment).
193166  /* \brief Typedef used for low level memory access.
193167  */
193168  // typedef unsigned char* TestType;
193169 
193170  // DQ (9/2/2015): This typedef is no longer used, we can't define the
193171  // comment here (changed to be a C style comment and not be a doxygen comment).
193172  /* \brief Typedef used to hold memory addresses as values.
193173  */
193174  // typedef unsigned long AddressType;
193175 
193176 
193177 
193178  // necessary, to have direct access to the p_freepointer and the private methods !
193180  friend class AST_FILE_IO;
193181 
193183  friend class SgUpirBaseStatementStorageClass;
193184 
193186  friend class AstSpecificDataManagingClass;
193187 
193189  friend class AstSpecificDataManagingClassStorageClass;
193190 
193191  public:
193193  SgUpirBaseStatement( const SgUpirBaseStatementStorageClass& source );
193194 
193195  // private: // JJW hack
193196  /*
193197  name AST Memory Allocation Support Variables
193198  Memory allocations support variables
193199 
193200  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
193201  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
193202  and support the AST File I/O Mechanism.
193203  */
193204  /* */
193205 
193206  public:
193207 
193208  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
193209  // to current node (so that it will work cleanly with build functions to specify patterns).
193210  // virtual SgNode* addRegExpAttribute();
193217 
193218 // *** COMMON CODE SECTION ENDS HERE ***
193219 
193220 
193221 // End of memberFunctionString
193222 // Start of memberFunctionString
193223 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
193224 
193225  // the generated cast function
193226  // friend ROSE_DLL_API SgUpirBaseStatement* isSgUpirBaseStatement ( SgNode* s );
193227 
193228  typedef SgStatement base_node_type;
193229 
193230 
193231 // End of memberFunctionString
193232 // Start of memberFunctionString
193233 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
193234 
193235  void post_construction_initialization() override;
193236 
193237 
193238 // End of memberFunctionString
193239 
193240  public:
193241  SgStatement* get_upir_parent() const;
193242  void set_upir_parent(SgStatement* upir_parent);
193243 
193244  public:
193245  const SgStatementPtrList& get_upir_children() const;
193246  SgStatementPtrList& get_upir_children();
193247 
193248 
193249  public:
193250  virtual ~SgUpirBaseStatement();
193251 
193252 
193253  public:
193254  SgUpirBaseStatement(Sg_File_Info* startOfConstruct );
193255  SgUpirBaseStatement();
193256 
193257  protected:
193258 // Start of memberFunctionString
193259 SgStatement* p_upir_parent;
193260 
193261 // End of memberFunctionString
193262 // Start of memberFunctionString
193263 SgStatementPtrList p_upir_children;
193264 
193265 // End of memberFunctionString
193266 
193267 
193268 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
193269 
193270 
193271  };
193272 #endif
193273 
193274 // postdeclarations for SgUpirBaseStatement
193275 
193276 /* #line 193277 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
193277 
193278 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
193279 
193280 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
193281 
193282 
193283 /* #line 193284 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
193284 
193285 
193286 
193287 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
193288 
193289 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
193290 // This code is automatically generated for each
193291 // terminal and non-terminal within the defined
193292 // grammar. There is a simple way to change the
193293 // code to fix bugs etc. See the ROSE README file
193294 // for directions.
193295 
193296 // tps: (02/22/2010): Adding DLL export requirements
193297 #include "rosedll.h"
193298 
193299 // predeclarations for SgOmpTaskyieldStatement
193300 
193301 /* #line 193302 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
193302 
193303 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
193304 
193305 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
193306 
193307 #if 1
193308 // Class Definition for SgOmpTaskyieldStatement
193310  {
193311  public:
193312 
193313 
193314 /* #line 193315 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
193315 
193316  virtual SgNode* copy ( SgCopyHelp& help) const override;
193317 // Start of memberFunctionString
193318 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
193319 
193320 // *** COMMON CODE SECTION BEGINS HERE ***
193321 
193322  public:
193323 
193324  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
193325  // and not required which is required to match the other aspects of the copy mechanism code generation.
193326  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
193327  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
193328  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
193329  // virtual SgNode* copy ( const SgCopyHelp & help) const;
193330 
193332  virtual std::string class_name() const override;
193333 
193335  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
193336 
193338  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
193339  // static const VariantT static_variant = V_SgOmpTaskyieldStatement;
193340  enum { static_variant = V_SgOmpTaskyieldStatement };
193341 
193342  /* the generated cast function */
193344  ROSE_DLL_API friend SgOmpTaskyieldStatement* isSgOmpTaskyieldStatement( SgNode * s );
193345 
193347  ROSE_DLL_API friend const SgOmpTaskyieldStatement* isSgOmpTaskyieldStatement( const SgNode * s );
193348 
193349  // ******************************************
193350  // * Memory Pool / New / Delete
193351  // ******************************************
193352 
193353  public:
193355  static const unsigned pool_size; //
193357  static std::vector<unsigned char *> pools; //
193359  static SgOmpTaskyieldStatement * next_node; //
193360 
193362  static unsigned long initializeStorageClassArray(SgOmpTaskyieldStatementStorageClass *); //
193363 
193365  static void clearMemoryPool(); //
193366  static void deleteMemoryPool(); //
193367 
193369  static void extendMemoryPoolForFileIO(); //
193370 
193372  static SgOmpTaskyieldStatement * getPointerFromGlobalIndex(unsigned long); //
193374  static SgOmpTaskyieldStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
193375 
193377  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
193379  static void resetValidFreepointers(); //
193381  static unsigned long getNumberOfLastValidPointer(); //
193382 
193383 
193384 #if defined(INLINE_FUNCTIONS)
193385 
193386  inline void *operator new (size_t size);
193387 #else
193388 
193389  void *operator new (size_t size);
193390 #endif
193391 
193392  void operator delete (void* pointer, size_t size);
193393 
193394  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
193395  void operator delete (void* pointer)
193396  {
193397  // This is the generated delete operator...
193398  SgOmpTaskyieldStatement::operator delete (pointer,sizeof(SgOmpTaskyieldStatement));
193399  }
193400 
193402  static size_t numberOfNodes();
193403 
193405  static size_t memoryUsage();
193406 
193407  // End of scope which started in IR nodes specific code
193408  /* */
193409 
193410  /* name Internal Functions
193411  \brief Internal functions ... incomplete-documentation
193412 
193413  These functions have been made public as part of the design, but they are suggested for internal use
193414  or by particularly knowledgeable users for specialized tools or applications.
193415 
193416  \internal We could not make these private because they are required by user for special purposes. And
193417  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
193418 
193419  */
193420 
193421  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
193422  // overridden in every class by *generated* implementation
193424  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
193425  // MS: 06/28/02 container of names of variables or container indices
193426  // used used in the traversal to access AST successor nodes
193427  // overridden in every class by *generated* implementation
193430  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
193431 
193432  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
193433  // than all the vector copies. The implementation for these functions is generated for each class.
193435  virtual size_t get_numberOfTraversalSuccessors() override;
193437  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
193439  virtual size_t get_childIndex(SgNode *child) override;
193440 
193441 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
193442  // MS: 08/16/2002 method for generating RTI information
193444  virtual RTIReturnType roseRTI() override;
193445 #endif
193446  /* */
193447 
193448 
193449 
193450  /* name Deprecated Functions
193451  \brief Deprecated functions ... incomplete-documentation
193452 
193453  These functions have been deprecated from use.
193454  */
193455  /* */
193456 
193458  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
193459 
193460  // JJW (10/16/2008): Changed to a single function in Node.code, and put
193461  // getVariant() in #if 0 block to prevent confusing Doxygen
193462 #if 0
193463 
193464  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
193466  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
193467 #endif
193468  /* */
193469 
193470 
193471 
193472 
193473  public:
193474  /* name Traversal Support Functions
193475  \brief Traversal support functions ... incomplete-documentation
193476 
193477  These functions have been made public as part of the design, but they are suggested for internal use
193478  or by particularly knowledgable users for specialized tools or applications.
193479  */
193480  /* */
193481 
193482  // DQ (11/26/2005): Support for visitor pattern mechanims
193483  // (inferior to ROSE traversal mechanism, experimental).
193487 
193488  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
193490  virtual void accept (ROSE_VisitorPattern & visitor) override;
193491 
193492  // DQ (12/26/2005): Support for traversal based on the memory pool
193495  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
193496 
193499  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
193500 
193501  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
193502  // This traversal helps support internal tools that call static member functions.
193503  // note: this function operates on the memory pools.
193506  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
193507  /* */
193508 
193509 
193510  public:
193511  /* name Memory Allocation Functions
193512  \brief Memory allocations functions ... incomplete-documentation
193513 
193514  These functions have been made public as part of the design, but they are suggested for internal use
193515  or by particularly knowledgable users for specialized tools or applications.
193516  */
193517  /* */
193518 
193529  virtual bool isInMemoryPool() override;
193530 
193541  virtual void checkDataMemberPointersIfInMemoryPool() override;
193542 
193543  // DQ (4/30/2006): Modified to be a const function.
193558  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
193559 
193569  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
193570 
193582  virtual long getChildIndex( SgNode* childNode ) const override;
193583 
193584  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
193585  // comment here (changed to be a C style comment and not be a doxygen comment).
193586  /* \brief Constructor for use by AST File I/O Mechanism
193587 
193588  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
193589  which obtained via fast binary file I/O from disk.
193590  */
193591  // SgOmpTaskyieldStatement( SgOmpTaskyieldStatementStorageClass& source );
193592 
193593 
193594 
193595 
193596 
193597  // JH (10/24/2005): methods added to support the ast file IO
193598  private:
193599 
193600  /* name AST Memory Allocation Support Functions
193601  \brief Memory allocations support....
193602 
193603  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
193604  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
193605  and support the AST File I/O Mechanism.
193606  */
193607  /* */
193608 
193609  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
193610  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
193611  that I use the same type everywhere, if any changes are made. THe second one declares the type
193612  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
193613  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
193614  a correspinding one in the AST_FILE_IO class!
193615  */
193616  // DQ (9/2/2015): This typedef is no longer used, we can't define the
193617  // comment here (changed to be a C style comment and not be a doxygen comment).
193618  /* \brief Typedef used for low level memory access.
193619  */
193620  // typedef unsigned char* TestType;
193621 
193622  // DQ (9/2/2015): This typedef is no longer used, we can't define the
193623  // comment here (changed to be a C style comment and not be a doxygen comment).
193624  /* \brief Typedef used to hold memory addresses as values.
193625  */
193626  // typedef unsigned long AddressType;
193627 
193628 
193629 
193630  // necessary, to have direct access to the p_freepointer and the private methods !
193632  friend class AST_FILE_IO;
193633 
193635  friend class SgOmpTaskyieldStatementStorageClass;
193636 
193638  friend class AstSpecificDataManagingClass;
193639 
193641  friend class AstSpecificDataManagingClassStorageClass;
193642 
193643  public:
193645  SgOmpTaskyieldStatement( const SgOmpTaskyieldStatementStorageClass& source );
193646 
193647  // private: // JJW hack
193648  /*
193649  name AST Memory Allocation Support Variables
193650  Memory allocations support variables
193651 
193652  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
193653  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
193654  and support the AST File I/O Mechanism.
193655  */
193656  /* */
193657 
193658  public:
193659 
193660  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
193661  // to current node (so that it will work cleanly with build functions to specify patterns).
193662  // virtual SgNode* addRegExpAttribute();
193669 
193670 // *** COMMON CODE SECTION ENDS HERE ***
193671 
193672 
193673 // End of memberFunctionString
193674 // Start of memberFunctionString
193675 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
193676 
193677  // the generated cast function
193678  // friend ROSE_DLL_API SgOmpTaskyieldStatement* isSgOmpTaskyieldStatement ( SgNode* s );
193679 
193681 
193682 
193683 // End of memberFunctionString
193684 // Start of memberFunctionString
193685 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
193686 
193687  void post_construction_initialization() override;
193688 
193689 
193690 // End of memberFunctionString
193691 
193692 
193693  public:
193694  virtual ~SgOmpTaskyieldStatement();
193695 
193696 
193697  public:
193698  SgOmpTaskyieldStatement(Sg_File_Info* startOfConstruct );
193700 
193701  protected:
193702 
193703 
193704 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
193705 
193706 
193707  };
193708 #endif
193709 
193710 // postdeclarations for SgOmpTaskyieldStatement
193711 
193712 /* #line 193713 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
193713 
193714 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
193715 
193716 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
193717 
193718 
193719 /* #line 193720 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
193720 
193721 
193722 
193723 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
193724 
193725 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
193726 // This code is automatically generated for each
193727 // terminal and non-terminal within the defined
193728 // grammar. There is a simple way to change the
193729 // code to fix bugs etc. See the ROSE README file
193730 // for directions.
193731 
193732 // tps: (02/22/2010): Adding DLL export requirements
193733 #include "rosedll.h"
193734 
193735 // predeclarations for SgOmpBarrierStatement
193736 
193737 /* #line 193738 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
193738 
193739 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
193740 
193741 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
193742 
193743 #if 1
193744 // Class Definition for SgOmpBarrierStatement
193745 class ROSE_DLL_API SgOmpBarrierStatement : public SgUpirBaseStatement
193746  {
193747  public:
193748 
193749 
193750 /* #line 193751 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
193751 
193752  virtual SgNode* copy ( SgCopyHelp& help) const override;
193753 // Start of memberFunctionString
193754 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
193755 
193756 // *** COMMON CODE SECTION BEGINS HERE ***
193757 
193758  public:
193759 
193760  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
193761  // and not required which is required to match the other aspects of the copy mechanism code generation.
193762  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
193763  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
193764  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
193765  // virtual SgNode* copy ( const SgCopyHelp & help) const;
193766 
193768  virtual std::string class_name() const override;
193769 
193771  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
193772 
193774  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
193775  // static const VariantT static_variant = V_SgOmpBarrierStatement;
193776  enum { static_variant = V_SgOmpBarrierStatement };
193777 
193778  /* the generated cast function */
193780  ROSE_DLL_API friend SgOmpBarrierStatement* isSgOmpBarrierStatement( SgNode * s );
193781 
193783  ROSE_DLL_API friend const SgOmpBarrierStatement* isSgOmpBarrierStatement( const SgNode * s );
193784 
193785  // ******************************************
193786  // * Memory Pool / New / Delete
193787  // ******************************************
193788 
193789  public:
193791  static const unsigned pool_size; //
193793  static std::vector<unsigned char *> pools; //
193795  static SgOmpBarrierStatement * next_node; //
193796 
193798  static unsigned long initializeStorageClassArray(SgOmpBarrierStatementStorageClass *); //
193799 
193801  static void clearMemoryPool(); //
193802  static void deleteMemoryPool(); //
193803 
193805  static void extendMemoryPoolForFileIO(); //
193806 
193808  static SgOmpBarrierStatement * getPointerFromGlobalIndex(unsigned long); //
193810  static SgOmpBarrierStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
193811 
193813  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
193815  static void resetValidFreepointers(); //
193817  static unsigned long getNumberOfLastValidPointer(); //
193818 
193819 
193820 #if defined(INLINE_FUNCTIONS)
193821 
193822  inline void *operator new (size_t size);
193823 #else
193824 
193825  void *operator new (size_t size);
193826 #endif
193827 
193828  void operator delete (void* pointer, size_t size);
193829 
193830  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
193831  void operator delete (void* pointer)
193832  {
193833  // This is the generated delete operator...
193834  SgOmpBarrierStatement::operator delete (pointer,sizeof(SgOmpBarrierStatement));
193835  }
193836 
193838  static size_t numberOfNodes();
193839 
193841  static size_t memoryUsage();
193842 
193843  // End of scope which started in IR nodes specific code
193844  /* */
193845 
193846  /* name Internal Functions
193847  \brief Internal functions ... incomplete-documentation
193848 
193849  These functions have been made public as part of the design, but they are suggested for internal use
193850  or by particularly knowledgeable users for specialized tools or applications.
193851 
193852  \internal We could not make these private because they are required by user for special purposes. And
193853  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
193854 
193855  */
193856 
193857  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
193858  // overridden in every class by *generated* implementation
193860  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
193861  // MS: 06/28/02 container of names of variables or container indices
193862  // used used in the traversal to access AST successor nodes
193863  // overridden in every class by *generated* implementation
193866  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
193867 
193868  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
193869  // than all the vector copies. The implementation for these functions is generated for each class.
193871  virtual size_t get_numberOfTraversalSuccessors() override;
193873  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
193875  virtual size_t get_childIndex(SgNode *child) override;
193876 
193877 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
193878  // MS: 08/16/2002 method for generating RTI information
193880  virtual RTIReturnType roseRTI() override;
193881 #endif
193882  /* */
193883 
193884 
193885 
193886  /* name Deprecated Functions
193887  \brief Deprecated functions ... incomplete-documentation
193888 
193889  These functions have been deprecated from use.
193890  */
193891  /* */
193892 
193894  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
193895 
193896  // JJW (10/16/2008): Changed to a single function in Node.code, and put
193897  // getVariant() in #if 0 block to prevent confusing Doxygen
193898 #if 0
193899 
193900  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
193902  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
193903 #endif
193904  /* */
193905 
193906 
193907 
193908 
193909  public:
193910  /* name Traversal Support Functions
193911  \brief Traversal support functions ... incomplete-documentation
193912 
193913  These functions have been made public as part of the design, but they are suggested for internal use
193914  or by particularly knowledgable users for specialized tools or applications.
193915  */
193916  /* */
193917 
193918  // DQ (11/26/2005): Support for visitor pattern mechanims
193919  // (inferior to ROSE traversal mechanism, experimental).
193923 
193924  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
193926  virtual void accept (ROSE_VisitorPattern & visitor) override;
193927 
193928  // DQ (12/26/2005): Support for traversal based on the memory pool
193931  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
193932 
193935  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
193936 
193937  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
193938  // This traversal helps support internal tools that call static member functions.
193939  // note: this function operates on the memory pools.
193942  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
193943  /* */
193944 
193945 
193946  public:
193947  /* name Memory Allocation Functions
193948  \brief Memory allocations functions ... incomplete-documentation
193949 
193950  These functions have been made public as part of the design, but they are suggested for internal use
193951  or by particularly knowledgable users for specialized tools or applications.
193952  */
193953  /* */
193954 
193965  virtual bool isInMemoryPool() override;
193966 
193977  virtual void checkDataMemberPointersIfInMemoryPool() override;
193978 
193979  // DQ (4/30/2006): Modified to be a const function.
193994  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
193995 
194005  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
194006 
194018  virtual long getChildIndex( SgNode* childNode ) const override;
194019 
194020  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
194021  // comment here (changed to be a C style comment and not be a doxygen comment).
194022  /* \brief Constructor for use by AST File I/O Mechanism
194023 
194024  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
194025  which obtained via fast binary file I/O from disk.
194026  */
194027  // SgOmpBarrierStatement( SgOmpBarrierStatementStorageClass& source );
194028 
194029 
194030 
194031 
194032 
194033  // JH (10/24/2005): methods added to support the ast file IO
194034  private:
194035 
194036  /* name AST Memory Allocation Support Functions
194037  \brief Memory allocations support....
194038 
194039  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
194040  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
194041  and support the AST File I/O Mechanism.
194042  */
194043  /* */
194044 
194045  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
194046  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
194047  that I use the same type everywhere, if any changes are made. THe second one declares the type
194048  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
194049  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
194050  a correspinding one in the AST_FILE_IO class!
194051  */
194052  // DQ (9/2/2015): This typedef is no longer used, we can't define the
194053  // comment here (changed to be a C style comment and not be a doxygen comment).
194054  /* \brief Typedef used for low level memory access.
194055  */
194056  // typedef unsigned char* TestType;
194057 
194058  // DQ (9/2/2015): This typedef is no longer used, we can't define the
194059  // comment here (changed to be a C style comment and not be a doxygen comment).
194060  /* \brief Typedef used to hold memory addresses as values.
194061  */
194062  // typedef unsigned long AddressType;
194063 
194064 
194065 
194066  // necessary, to have direct access to the p_freepointer and the private methods !
194068  friend class AST_FILE_IO;
194069 
194071  friend class SgOmpBarrierStatementStorageClass;
194072 
194074  friend class AstSpecificDataManagingClass;
194075 
194077  friend class AstSpecificDataManagingClassStorageClass;
194078 
194079  public:
194081  SgOmpBarrierStatement( const SgOmpBarrierStatementStorageClass& source );
194082 
194083  // private: // JJW hack
194084  /*
194085  name AST Memory Allocation Support Variables
194086  Memory allocations support variables
194087 
194088  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
194089  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
194090  and support the AST File I/O Mechanism.
194091  */
194092  /* */
194093 
194094  public:
194095 
194096  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
194097  // to current node (so that it will work cleanly with build functions to specify patterns).
194098  // virtual SgNode* addRegExpAttribute();
194105 
194106 // *** COMMON CODE SECTION ENDS HERE ***
194107 
194108 
194109 // End of memberFunctionString
194110 // Start of memberFunctionString
194111 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
194112 
194113  // the generated cast function
194114  // friend ROSE_DLL_API SgOmpBarrierStatement* isSgOmpBarrierStatement ( SgNode* s );
194115 
194117 
194118 
194119 // End of memberFunctionString
194120 // Start of memberFunctionString
194121 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
194122 
194123  void post_construction_initialization() override;
194124 
194125 
194126 // End of memberFunctionString
194127 
194128 
194129  public:
194130  virtual ~SgOmpBarrierStatement();
194131 
194132 
194133  public:
194134  SgOmpBarrierStatement(Sg_File_Info* startOfConstruct );
194136 
194137  protected:
194138 
194139 
194140 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
194141 
194142 
194143  };
194144 #endif
194145 
194146 // postdeclarations for SgOmpBarrierStatement
194147 
194148 /* #line 194149 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
194149 
194150 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
194151 
194152 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
194153 
194154 
194155 /* #line 194156 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
194156 
194157 
194158 
194159 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
194160 
194161 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
194162 // This code is automatically generated for each
194163 // terminal and non-terminal within the defined
194164 // grammar. There is a simple way to change the
194165 // code to fix bugs etc. See the ROSE README file
194166 // for directions.
194167 
194168 // tps: (02/22/2010): Adding DLL export requirements
194169 #include "rosedll.h"
194170 
194171 // predeclarations for SgUpirBodyStatement
194172 
194173 /* #line 194174 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
194174 
194175 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
194176 
194177 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
194178 
194179 #if 1
194180 // Class Definition for SgUpirBodyStatement
194181 class ROSE_DLL_API SgUpirBodyStatement : public SgUpirBaseStatement
194182  {
194183  public:
194184 
194185 
194186 /* #line 194187 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
194187 
194188  virtual SgNode* copy ( SgCopyHelp& help) const override;
194189 // Start of memberFunctionString
194190 /* #line 19501 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
194191 
194192  virtual bool replace_child(SgStatement *,SgStatement *, bool extractListFromBasicBlock = false) override;
194193 
194194  public:
194195 
194196 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
194197  virtual unsigned int cfgIndexForEnd() const override;
194198  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
194199  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
194200 #endif
194201 
194202 
194203 
194204 // End of memberFunctionString
194205 // Start of memberFunctionString
194206 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
194207 
194208 // *** COMMON CODE SECTION BEGINS HERE ***
194209 
194210  public:
194211 
194212  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
194213  // and not required which is required to match the other aspects of the copy mechanism code generation.
194214  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
194215  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
194216  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
194217  // virtual SgNode* copy ( const SgCopyHelp & help) const;
194218 
194220  virtual std::string class_name() const override;
194221 
194223  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
194224 
194226  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
194227  // static const VariantT static_variant = V_SgUpirBodyStatement;
194228  enum { static_variant = V_SgUpirBodyStatement };
194229 
194230  /* the generated cast function */
194232  ROSE_DLL_API friend SgUpirBodyStatement* isSgUpirBodyStatement( SgNode * s );
194233 
194235  ROSE_DLL_API friend const SgUpirBodyStatement* isSgUpirBodyStatement( const SgNode * s );
194236 
194237  // ******************************************
194238  // * Memory Pool / New / Delete
194239  // ******************************************
194240 
194241  public:
194243  static const unsigned pool_size; //
194245  static std::vector<unsigned char *> pools; //
194247  static SgUpirBodyStatement * next_node; //
194248 
194250  static unsigned long initializeStorageClassArray(SgUpirBodyStatementStorageClass *); //
194251 
194253  static void clearMemoryPool(); //
194254  static void deleteMemoryPool(); //
194255 
194257  static void extendMemoryPoolForFileIO(); //
194258 
194260  static SgUpirBodyStatement * getPointerFromGlobalIndex(unsigned long); //
194262  static SgUpirBodyStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
194263 
194265  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
194267  static void resetValidFreepointers(); //
194269  static unsigned long getNumberOfLastValidPointer(); //
194270 
194271 
194272 #if defined(INLINE_FUNCTIONS)
194273 
194274  inline void *operator new (size_t size);
194275 #else
194276 
194277  void *operator new (size_t size);
194278 #endif
194279 
194280  void operator delete (void* pointer, size_t size);
194281 
194282  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
194283  void operator delete (void* pointer)
194284  {
194285  // This is the generated delete operator...
194286  SgUpirBodyStatement::operator delete (pointer,sizeof(SgUpirBodyStatement));
194287  }
194288 
194290  static size_t numberOfNodes();
194291 
194293  static size_t memoryUsage();
194294 
194295  // End of scope which started in IR nodes specific code
194296  /* */
194297 
194298  /* name Internal Functions
194299  \brief Internal functions ... incomplete-documentation
194300 
194301  These functions have been made public as part of the design, but they are suggested for internal use
194302  or by particularly knowledgeable users for specialized tools or applications.
194303 
194304  \internal We could not make these private because they are required by user for special purposes. And
194305  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
194306 
194307  */
194308 
194309  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
194310  // overridden in every class by *generated* implementation
194312  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
194313  // MS: 06/28/02 container of names of variables or container indices
194314  // used used in the traversal to access AST successor nodes
194315  // overridden in every class by *generated* implementation
194318  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
194319 
194320  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
194321  // than all the vector copies. The implementation for these functions is generated for each class.
194323  virtual size_t get_numberOfTraversalSuccessors() override;
194325  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
194327  virtual size_t get_childIndex(SgNode *child) override;
194328 
194329 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
194330  // MS: 08/16/2002 method for generating RTI information
194332  virtual RTIReturnType roseRTI() override;
194333 #endif
194334  /* */
194335 
194336 
194337 
194338  /* name Deprecated Functions
194339  \brief Deprecated functions ... incomplete-documentation
194340 
194341  These functions have been deprecated from use.
194342  */
194343  /* */
194344 
194346  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
194347 
194348  // JJW (10/16/2008): Changed to a single function in Node.code, and put
194349  // getVariant() in #if 0 block to prevent confusing Doxygen
194350 #if 0
194351 
194352  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
194354  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
194355 #endif
194356  /* */
194357 
194358 
194359 
194360 
194361  public:
194362  /* name Traversal Support Functions
194363  \brief Traversal support functions ... incomplete-documentation
194364 
194365  These functions have been made public as part of the design, but they are suggested for internal use
194366  or by particularly knowledgable users for specialized tools or applications.
194367  */
194368  /* */
194369 
194370  // DQ (11/26/2005): Support for visitor pattern mechanims
194371  // (inferior to ROSE traversal mechanism, experimental).
194375 
194376  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
194378  virtual void accept (ROSE_VisitorPattern & visitor) override;
194379 
194380  // DQ (12/26/2005): Support for traversal based on the memory pool
194383  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
194384 
194387  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
194388 
194389  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
194390  // This traversal helps support internal tools that call static member functions.
194391  // note: this function operates on the memory pools.
194394  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
194395  /* */
194396 
194397 
194398  public:
194399  /* name Memory Allocation Functions
194400  \brief Memory allocations functions ... incomplete-documentation
194401 
194402  These functions have been made public as part of the design, but they are suggested for internal use
194403  or by particularly knowledgable users for specialized tools or applications.
194404  */
194405  /* */
194406 
194417  virtual bool isInMemoryPool() override;
194418 
194429  virtual void checkDataMemberPointersIfInMemoryPool() override;
194430 
194431  // DQ (4/30/2006): Modified to be a const function.
194446  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
194447 
194457  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
194458 
194470  virtual long getChildIndex( SgNode* childNode ) const override;
194471 
194472  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
194473  // comment here (changed to be a C style comment and not be a doxygen comment).
194474  /* \brief Constructor for use by AST File I/O Mechanism
194475 
194476  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
194477  which obtained via fast binary file I/O from disk.
194478  */
194479  // SgUpirBodyStatement( SgUpirBodyStatementStorageClass& source );
194480 
194481 
194482 
194483 
194484 
194485  // JH (10/24/2005): methods added to support the ast file IO
194486  private:
194487 
194488  /* name AST Memory Allocation Support Functions
194489  \brief Memory allocations support....
194490 
194491  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
194492  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
194493  and support the AST File I/O Mechanism.
194494  */
194495  /* */
194496 
194497  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
194498  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
194499  that I use the same type everywhere, if any changes are made. THe second one declares the type
194500  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
194501  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
194502  a correspinding one in the AST_FILE_IO class!
194503  */
194504  // DQ (9/2/2015): This typedef is no longer used, we can't define the
194505  // comment here (changed to be a C style comment and not be a doxygen comment).
194506  /* \brief Typedef used for low level memory access.
194507  */
194508  // typedef unsigned char* TestType;
194509 
194510  // DQ (9/2/2015): This typedef is no longer used, we can't define the
194511  // comment here (changed to be a C style comment and not be a doxygen comment).
194512  /* \brief Typedef used to hold memory addresses as values.
194513  */
194514  // typedef unsigned long AddressType;
194515 
194516 
194517 
194518  // necessary, to have direct access to the p_freepointer and the private methods !
194520  friend class AST_FILE_IO;
194521 
194523  friend class SgUpirBodyStatementStorageClass;
194524 
194526  friend class AstSpecificDataManagingClass;
194527 
194529  friend class AstSpecificDataManagingClassStorageClass;
194530 
194531  public:
194533  SgUpirBodyStatement( const SgUpirBodyStatementStorageClass& source );
194534 
194535  // private: // JJW hack
194536  /*
194537  name AST Memory Allocation Support Variables
194538  Memory allocations support variables
194539 
194540  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
194541  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
194542  and support the AST File I/O Mechanism.
194543  */
194544  /* */
194545 
194546  public:
194547 
194548  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
194549  // to current node (so that it will work cleanly with build functions to specify patterns).
194550  // virtual SgNode* addRegExpAttribute();
194557 
194558 // *** COMMON CODE SECTION ENDS HERE ***
194559 
194560 
194561 // End of memberFunctionString
194562 // Start of memberFunctionString
194563 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
194564 
194565  // the generated cast function
194566  // friend ROSE_DLL_API SgUpirBodyStatement* isSgUpirBodyStatement ( SgNode* s );
194567 
194569 
194570 
194571 // End of memberFunctionString
194572 // Start of memberFunctionString
194573 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
194574 
194575  void post_construction_initialization() override;
194576 
194577 
194578 // End of memberFunctionString
194579 
194580  public:
194581  SgStatement* get_body() const;
194582  void set_body(SgStatement* body);
194583 
194584 
194585  public:
194586  virtual ~SgUpirBodyStatement();
194587 
194588 
194589  public:
194590  SgUpirBodyStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
194592 
194593  protected:
194594 // Start of memberFunctionString
194595 SgStatement* p_body;
194596 
194597 // End of memberFunctionString
194598 
194599 
194600 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
194601 
194602 
194603  };
194604 #endif
194605 
194606 // postdeclarations for SgUpirBodyStatement
194607 
194608 /* #line 194609 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
194609 
194610 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
194611 
194612 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
194613 
194614 
194615 /* #line 194616 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
194616 
194617 
194618 
194619 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
194620 
194621 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
194622 // This code is automatically generated for each
194623 // terminal and non-terminal within the defined
194624 // grammar. There is a simple way to change the
194625 // code to fix bugs etc. See the ROSE README file
194626 // for directions.
194627 
194628 // tps: (02/22/2010): Adding DLL export requirements
194629 #include "rosedll.h"
194630 
194631 // predeclarations for SgOmpMasterStatement
194632 
194633 /* #line 194634 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
194634 
194635 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
194636 
194637 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
194638 
194639 #if 1
194640 // Class Definition for SgOmpMasterStatement
194641 class ROSE_DLL_API SgOmpMasterStatement : public SgUpirBodyStatement
194642  {
194643  public:
194644 
194645 
194646 /* #line 194647 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
194647 
194648  virtual SgNode* copy ( SgCopyHelp& help) const override;
194649 // Start of memberFunctionString
194650 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
194651 
194652 // *** COMMON CODE SECTION BEGINS HERE ***
194653 
194654  public:
194655 
194656  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
194657  // and not required which is required to match the other aspects of the copy mechanism code generation.
194658  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
194659  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
194660  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
194661  // virtual SgNode* copy ( const SgCopyHelp & help) const;
194662 
194664  virtual std::string class_name() const override;
194665 
194667  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
194668 
194670  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
194671  // static const VariantT static_variant = V_SgOmpMasterStatement;
194672  enum { static_variant = V_SgOmpMasterStatement };
194673 
194674  /* the generated cast function */
194676  ROSE_DLL_API friend SgOmpMasterStatement* isSgOmpMasterStatement( SgNode * s );
194677 
194679  ROSE_DLL_API friend const SgOmpMasterStatement* isSgOmpMasterStatement( const SgNode * s );
194680 
194681  // ******************************************
194682  // * Memory Pool / New / Delete
194683  // ******************************************
194684 
194685  public:
194687  static const unsigned pool_size; //
194689  static std::vector<unsigned char *> pools; //
194691  static SgOmpMasterStatement * next_node; //
194692 
194694  static unsigned long initializeStorageClassArray(SgOmpMasterStatementStorageClass *); //
194695 
194697  static void clearMemoryPool(); //
194698  static void deleteMemoryPool(); //
194699 
194701  static void extendMemoryPoolForFileIO(); //
194702 
194704  static SgOmpMasterStatement * getPointerFromGlobalIndex(unsigned long); //
194706  static SgOmpMasterStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
194707 
194709  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
194711  static void resetValidFreepointers(); //
194713  static unsigned long getNumberOfLastValidPointer(); //
194714 
194715 
194716 #if defined(INLINE_FUNCTIONS)
194717 
194718  inline void *operator new (size_t size);
194719 #else
194720 
194721  void *operator new (size_t size);
194722 #endif
194723 
194724  void operator delete (void* pointer, size_t size);
194725 
194726  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
194727  void operator delete (void* pointer)
194728  {
194729  // This is the generated delete operator...
194730  SgOmpMasterStatement::operator delete (pointer,sizeof(SgOmpMasterStatement));
194731  }
194732 
194734  static size_t numberOfNodes();
194735 
194737  static size_t memoryUsage();
194738 
194739  // End of scope which started in IR nodes specific code
194740  /* */
194741 
194742  /* name Internal Functions
194743  \brief Internal functions ... incomplete-documentation
194744 
194745  These functions have been made public as part of the design, but they are suggested for internal use
194746  or by particularly knowledgeable users for specialized tools or applications.
194747 
194748  \internal We could not make these private because they are required by user for special purposes. And
194749  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
194750 
194751  */
194752 
194753  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
194754  // overridden in every class by *generated* implementation
194756  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
194757  // MS: 06/28/02 container of names of variables or container indices
194758  // used used in the traversal to access AST successor nodes
194759  // overridden in every class by *generated* implementation
194762  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
194763 
194764  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
194765  // than all the vector copies. The implementation for these functions is generated for each class.
194767  virtual size_t get_numberOfTraversalSuccessors() override;
194769  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
194771  virtual size_t get_childIndex(SgNode *child) override;
194772 
194773 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
194774  // MS: 08/16/2002 method for generating RTI information
194776  virtual RTIReturnType roseRTI() override;
194777 #endif
194778  /* */
194779 
194780 
194781 
194782  /* name Deprecated Functions
194783  \brief Deprecated functions ... incomplete-documentation
194784 
194785  These functions have been deprecated from use.
194786  */
194787  /* */
194788 
194790  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
194791 
194792  // JJW (10/16/2008): Changed to a single function in Node.code, and put
194793  // getVariant() in #if 0 block to prevent confusing Doxygen
194794 #if 0
194795 
194796  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
194798  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
194799 #endif
194800  /* */
194801 
194802 
194803 
194804 
194805  public:
194806  /* name Traversal Support Functions
194807  \brief Traversal support functions ... incomplete-documentation
194808 
194809  These functions have been made public as part of the design, but they are suggested for internal use
194810  or by particularly knowledgable users for specialized tools or applications.
194811  */
194812  /* */
194813 
194814  // DQ (11/26/2005): Support for visitor pattern mechanims
194815  // (inferior to ROSE traversal mechanism, experimental).
194819 
194820  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
194822  virtual void accept (ROSE_VisitorPattern & visitor) override;
194823 
194824  // DQ (12/26/2005): Support for traversal based on the memory pool
194827  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
194828 
194831  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
194832 
194833  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
194834  // This traversal helps support internal tools that call static member functions.
194835  // note: this function operates on the memory pools.
194838  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
194839  /* */
194840 
194841 
194842  public:
194843  /* name Memory Allocation Functions
194844  \brief Memory allocations functions ... incomplete-documentation
194845 
194846  These functions have been made public as part of the design, but they are suggested for internal use
194847  or by particularly knowledgable users for specialized tools or applications.
194848  */
194849  /* */
194850 
194861  virtual bool isInMemoryPool() override;
194862 
194873  virtual void checkDataMemberPointersIfInMemoryPool() override;
194874 
194875  // DQ (4/30/2006): Modified to be a const function.
194890  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
194891 
194901  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
194902 
194914  virtual long getChildIndex( SgNode* childNode ) const override;
194915 
194916  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
194917  // comment here (changed to be a C style comment and not be a doxygen comment).
194918  /* \brief Constructor for use by AST File I/O Mechanism
194919 
194920  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
194921  which obtained via fast binary file I/O from disk.
194922  */
194923  // SgOmpMasterStatement( SgOmpMasterStatementStorageClass& source );
194924 
194925 
194926 
194927 
194928 
194929  // JH (10/24/2005): methods added to support the ast file IO
194930  private:
194931 
194932  /* name AST Memory Allocation Support Functions
194933  \brief Memory allocations support....
194934 
194935  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
194936  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
194937  and support the AST File I/O Mechanism.
194938  */
194939  /* */
194940 
194941  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
194942  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
194943  that I use the same type everywhere, if any changes are made. THe second one declares the type
194944  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
194945  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
194946  a correspinding one in the AST_FILE_IO class!
194947  */
194948  // DQ (9/2/2015): This typedef is no longer used, we can't define the
194949  // comment here (changed to be a C style comment and not be a doxygen comment).
194950  /* \brief Typedef used for low level memory access.
194951  */
194952  // typedef unsigned char* TestType;
194953 
194954  // DQ (9/2/2015): This typedef is no longer used, we can't define the
194955  // comment here (changed to be a C style comment and not be a doxygen comment).
194956  /* \brief Typedef used to hold memory addresses as values.
194957  */
194958  // typedef unsigned long AddressType;
194959 
194960 
194961 
194962  // necessary, to have direct access to the p_freepointer and the private methods !
194964  friend class AST_FILE_IO;
194965 
194967  friend class SgOmpMasterStatementStorageClass;
194968 
194970  friend class AstSpecificDataManagingClass;
194971 
194973  friend class AstSpecificDataManagingClassStorageClass;
194974 
194975  public:
194977  SgOmpMasterStatement( const SgOmpMasterStatementStorageClass& source );
194978 
194979  // private: // JJW hack
194980  /*
194981  name AST Memory Allocation Support Variables
194982  Memory allocations support variables
194983 
194984  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
194985  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
194986  and support the AST File I/O Mechanism.
194987  */
194988  /* */
194989 
194990  public:
194991 
194992  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
194993  // to current node (so that it will work cleanly with build functions to specify patterns).
194994  // virtual SgNode* addRegExpAttribute();
195001 
195002 // *** COMMON CODE SECTION ENDS HERE ***
195003 
195004 
195005 // End of memberFunctionString
195006 // Start of memberFunctionString
195007 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
195008 
195009  // the generated cast function
195010  // friend ROSE_DLL_API SgOmpMasterStatement* isSgOmpMasterStatement ( SgNode* s );
195011 
195013 
195014 
195015 // End of memberFunctionString
195016 // Start of memberFunctionString
195017 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
195018 
195019  void post_construction_initialization() override;
195020 
195021 
195022 // End of memberFunctionString
195023 
195024 
195025  public:
195026  virtual ~SgOmpMasterStatement();
195027 
195028 
195029  public:
195030  SgOmpMasterStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
195032 
195033  protected:
195034 
195035 
195036 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
195037 
195038 
195039  };
195040 #endif
195041 
195042 // postdeclarations for SgOmpMasterStatement
195043 
195044 /* #line 195045 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
195045 
195046 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
195047 
195048 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
195049 
195050 
195051 /* #line 195052 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
195052 
195053 
195054 
195055 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
195056 
195057 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
195058 // This code is automatically generated for each
195059 // terminal and non-terminal within the defined
195060 // grammar. There is a simple way to change the
195061 // code to fix bugs etc. See the ROSE README file
195062 // for directions.
195063 
195064 // tps: (02/22/2010): Adding DLL export requirements
195065 #include "rosedll.h"
195066 
195067 // predeclarations for SgOmpSectionStatement
195068 
195069 /* #line 195070 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
195070 
195071 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
195072 
195073 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
195074 
195075 #if 1
195076 // Class Definition for SgOmpSectionStatement
195077 class ROSE_DLL_API SgOmpSectionStatement : public SgUpirBodyStatement
195078  {
195079  public:
195080 
195081 
195082 /* #line 195083 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
195083 
195084  virtual SgNode* copy ( SgCopyHelp& help) const override;
195085 // Start of memberFunctionString
195086 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
195087 
195088 // *** COMMON CODE SECTION BEGINS HERE ***
195089 
195090  public:
195091 
195092  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
195093  // and not required which is required to match the other aspects of the copy mechanism code generation.
195094  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
195095  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
195096  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
195097  // virtual SgNode* copy ( const SgCopyHelp & help) const;
195098 
195100  virtual std::string class_name() const override;
195101 
195103  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
195104 
195106  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
195107  // static const VariantT static_variant = V_SgOmpSectionStatement;
195108  enum { static_variant = V_SgOmpSectionStatement };
195109 
195110  /* the generated cast function */
195112  ROSE_DLL_API friend SgOmpSectionStatement* isSgOmpSectionStatement( SgNode * s );
195113 
195115  ROSE_DLL_API friend const SgOmpSectionStatement* isSgOmpSectionStatement( const SgNode * s );
195116 
195117  // ******************************************
195118  // * Memory Pool / New / Delete
195119  // ******************************************
195120 
195121  public:
195123  static const unsigned pool_size; //
195125  static std::vector<unsigned char *> pools; //
195127  static SgOmpSectionStatement * next_node; //
195128 
195130  static unsigned long initializeStorageClassArray(SgOmpSectionStatementStorageClass *); //
195131 
195133  static void clearMemoryPool(); //
195134  static void deleteMemoryPool(); //
195135 
195137  static void extendMemoryPoolForFileIO(); //
195138 
195140  static SgOmpSectionStatement * getPointerFromGlobalIndex(unsigned long); //
195142  static SgOmpSectionStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
195143 
195145  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
195147  static void resetValidFreepointers(); //
195149  static unsigned long getNumberOfLastValidPointer(); //
195150 
195151 
195152 #if defined(INLINE_FUNCTIONS)
195153 
195154  inline void *operator new (size_t size);
195155 #else
195156 
195157  void *operator new (size_t size);
195158 #endif
195159 
195160  void operator delete (void* pointer, size_t size);
195161 
195162  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
195163  void operator delete (void* pointer)
195164  {
195165  // This is the generated delete operator...
195166  SgOmpSectionStatement::operator delete (pointer,sizeof(SgOmpSectionStatement));
195167  }
195168 
195170  static size_t numberOfNodes();
195171 
195173  static size_t memoryUsage();
195174 
195175  // End of scope which started in IR nodes specific code
195176  /* */
195177 
195178  /* name Internal Functions
195179  \brief Internal functions ... incomplete-documentation
195180 
195181  These functions have been made public as part of the design, but they are suggested for internal use
195182  or by particularly knowledgeable users for specialized tools or applications.
195183 
195184  \internal We could not make these private because they are required by user for special purposes. And
195185  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
195186 
195187  */
195188 
195189  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
195190  // overridden in every class by *generated* implementation
195192  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
195193  // MS: 06/28/02 container of names of variables or container indices
195194  // used used in the traversal to access AST successor nodes
195195  // overridden in every class by *generated* implementation
195198  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
195199 
195200  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
195201  // than all the vector copies. The implementation for these functions is generated for each class.
195203  virtual size_t get_numberOfTraversalSuccessors() override;
195205  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
195207  virtual size_t get_childIndex(SgNode *child) override;
195208 
195209 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
195210  // MS: 08/16/2002 method for generating RTI information
195212  virtual RTIReturnType roseRTI() override;
195213 #endif
195214  /* */
195215 
195216 
195217 
195218  /* name Deprecated Functions
195219  \brief Deprecated functions ... incomplete-documentation
195220 
195221  These functions have been deprecated from use.
195222  */
195223  /* */
195224 
195226  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
195227 
195228  // JJW (10/16/2008): Changed to a single function in Node.code, and put
195229  // getVariant() in #if 0 block to prevent confusing Doxygen
195230 #if 0
195231 
195232  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
195234  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
195235 #endif
195236  /* */
195237 
195238 
195239 
195240 
195241  public:
195242  /* name Traversal Support Functions
195243  \brief Traversal support functions ... incomplete-documentation
195244 
195245  These functions have been made public as part of the design, but they are suggested for internal use
195246  or by particularly knowledgable users for specialized tools or applications.
195247  */
195248  /* */
195249 
195250  // DQ (11/26/2005): Support for visitor pattern mechanims
195251  // (inferior to ROSE traversal mechanism, experimental).
195255 
195256  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
195258  virtual void accept (ROSE_VisitorPattern & visitor) override;
195259 
195260  // DQ (12/26/2005): Support for traversal based on the memory pool
195263  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
195264 
195267  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
195268 
195269  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
195270  // This traversal helps support internal tools that call static member functions.
195271  // note: this function operates on the memory pools.
195274  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
195275  /* */
195276 
195277 
195278  public:
195279  /* name Memory Allocation Functions
195280  \brief Memory allocations functions ... incomplete-documentation
195281 
195282  These functions have been made public as part of the design, but they are suggested for internal use
195283  or by particularly knowledgable users for specialized tools or applications.
195284  */
195285  /* */
195286 
195297  virtual bool isInMemoryPool() override;
195298 
195309  virtual void checkDataMemberPointersIfInMemoryPool() override;
195310 
195311  // DQ (4/30/2006): Modified to be a const function.
195326  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
195327 
195337  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
195338 
195350  virtual long getChildIndex( SgNode* childNode ) const override;
195351 
195352  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
195353  // comment here (changed to be a C style comment and not be a doxygen comment).
195354  /* \brief Constructor for use by AST File I/O Mechanism
195355 
195356  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
195357  which obtained via fast binary file I/O from disk.
195358  */
195359  // SgOmpSectionStatement( SgOmpSectionStatementStorageClass& source );
195360 
195361 
195362 
195363 
195364 
195365  // JH (10/24/2005): methods added to support the ast file IO
195366  private:
195367 
195368  /* name AST Memory Allocation Support Functions
195369  \brief Memory allocations support....
195370 
195371  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
195372  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
195373  and support the AST File I/O Mechanism.
195374  */
195375  /* */
195376 
195377  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
195378  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
195379  that I use the same type everywhere, if any changes are made. THe second one declares the type
195380  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
195381  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
195382  a correspinding one in the AST_FILE_IO class!
195383  */
195384  // DQ (9/2/2015): This typedef is no longer used, we can't define the
195385  // comment here (changed to be a C style comment and not be a doxygen comment).
195386  /* \brief Typedef used for low level memory access.
195387  */
195388  // typedef unsigned char* TestType;
195389 
195390  // DQ (9/2/2015): This typedef is no longer used, we can't define the
195391  // comment here (changed to be a C style comment and not be a doxygen comment).
195392  /* \brief Typedef used to hold memory addresses as values.
195393  */
195394  // typedef unsigned long AddressType;
195395 
195396 
195397 
195398  // necessary, to have direct access to the p_freepointer and the private methods !
195400  friend class AST_FILE_IO;
195401 
195403  friend class SgOmpSectionStatementStorageClass;
195404 
195406  friend class AstSpecificDataManagingClass;
195407 
195409  friend class AstSpecificDataManagingClassStorageClass;
195410 
195411  public:
195413  SgOmpSectionStatement( const SgOmpSectionStatementStorageClass& source );
195414 
195415  // private: // JJW hack
195416  /*
195417  name AST Memory Allocation Support Variables
195418  Memory allocations support variables
195419 
195420  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
195421  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
195422  and support the AST File I/O Mechanism.
195423  */
195424  /* */
195425 
195426  public:
195427 
195428  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
195429  // to current node (so that it will work cleanly with build functions to specify patterns).
195430  // virtual SgNode* addRegExpAttribute();
195437 
195438 // *** COMMON CODE SECTION ENDS HERE ***
195439 
195440 
195441 // End of memberFunctionString
195442 // Start of memberFunctionString
195443 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
195444 
195445  // the generated cast function
195446  // friend ROSE_DLL_API SgOmpSectionStatement* isSgOmpSectionStatement ( SgNode* s );
195447 
195449 
195450 
195451 // End of memberFunctionString
195452 // Start of memberFunctionString
195453 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
195454 
195455  void post_construction_initialization() override;
195456 
195457 
195458 // End of memberFunctionString
195459 
195460 
195461  public:
195462  virtual ~SgOmpSectionStatement();
195463 
195464 
195465  public:
195466  SgOmpSectionStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
195468 
195469  protected:
195470 
195471 
195472 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
195473 
195474 
195475  };
195476 #endif
195477 
195478 // postdeclarations for SgOmpSectionStatement
195479 
195480 /* #line 195481 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
195481 
195482 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
195483 
195484 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
195485 
195486 
195487 /* #line 195488 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
195488 
195489 
195490 
195491 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
195492 
195493 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
195494 // This code is automatically generated for each
195495 // terminal and non-terminal within the defined
195496 // grammar. There is a simple way to change the
195497 // code to fix bugs etc. See the ROSE README file
195498 // for directions.
195499 
195500 // tps: (02/22/2010): Adding DLL export requirements
195501 #include "rosedll.h"
195502 
195503 // predeclarations for SgOmpWorkshareStatement
195504 
195505 /* #line 195506 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
195506 
195507 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
195508 
195509 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
195510 
195511 #if 1
195512 // Class Definition for SgOmpWorkshareStatement
195514  {
195515  public:
195516 
195517 
195518 /* #line 195519 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
195519 
195520  virtual SgNode* copy ( SgCopyHelp& help) const override;
195521 // Start of memberFunctionString
195522 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
195523 
195524 // *** COMMON CODE SECTION BEGINS HERE ***
195525 
195526  public:
195527 
195528  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
195529  // and not required which is required to match the other aspects of the copy mechanism code generation.
195530  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
195531  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
195532  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
195533  // virtual SgNode* copy ( const SgCopyHelp & help) const;
195534 
195536  virtual std::string class_name() const override;
195537 
195539  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
195540 
195542  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
195543  // static const VariantT static_variant = V_SgOmpWorkshareStatement;
195544  enum { static_variant = V_SgOmpWorkshareStatement };
195545 
195546  /* the generated cast function */
195548  ROSE_DLL_API friend SgOmpWorkshareStatement* isSgOmpWorkshareStatement( SgNode * s );
195549 
195551  ROSE_DLL_API friend const SgOmpWorkshareStatement* isSgOmpWorkshareStatement( const SgNode * s );
195552 
195553  // ******************************************
195554  // * Memory Pool / New / Delete
195555  // ******************************************
195556 
195557  public:
195559  static const unsigned pool_size; //
195561  static std::vector<unsigned char *> pools; //
195563  static SgOmpWorkshareStatement * next_node; //
195564 
195566  static unsigned long initializeStorageClassArray(SgOmpWorkshareStatementStorageClass *); //
195567 
195569  static void clearMemoryPool(); //
195570  static void deleteMemoryPool(); //
195571 
195573  static void extendMemoryPoolForFileIO(); //
195574 
195576  static SgOmpWorkshareStatement * getPointerFromGlobalIndex(unsigned long); //
195578  static SgOmpWorkshareStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
195579 
195581  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
195583  static void resetValidFreepointers(); //
195585  static unsigned long getNumberOfLastValidPointer(); //
195586 
195587 
195588 #if defined(INLINE_FUNCTIONS)
195589 
195590  inline void *operator new (size_t size);
195591 #else
195592 
195593  void *operator new (size_t size);
195594 #endif
195595 
195596  void operator delete (void* pointer, size_t size);
195597 
195598  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
195599  void operator delete (void* pointer)
195600  {
195601  // This is the generated delete operator...
195602  SgOmpWorkshareStatement::operator delete (pointer,sizeof(SgOmpWorkshareStatement));
195603  }
195604 
195606  static size_t numberOfNodes();
195607 
195609  static size_t memoryUsage();
195610 
195611  // End of scope which started in IR nodes specific code
195612  /* */
195613 
195614  /* name Internal Functions
195615  \brief Internal functions ... incomplete-documentation
195616 
195617  These functions have been made public as part of the design, but they are suggested for internal use
195618  or by particularly knowledgeable users for specialized tools or applications.
195619 
195620  \internal We could not make these private because they are required by user for special purposes. And
195621  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
195622 
195623  */
195624 
195625  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
195626  // overridden in every class by *generated* implementation
195628  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
195629  // MS: 06/28/02 container of names of variables or container indices
195630  // used used in the traversal to access AST successor nodes
195631  // overridden in every class by *generated* implementation
195634  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
195635 
195636  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
195637  // than all the vector copies. The implementation for these functions is generated for each class.
195639  virtual size_t get_numberOfTraversalSuccessors() override;
195641  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
195643  virtual size_t get_childIndex(SgNode *child) override;
195644 
195645 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
195646  // MS: 08/16/2002 method for generating RTI information
195648  virtual RTIReturnType roseRTI() override;
195649 #endif
195650  /* */
195651 
195652 
195653 
195654  /* name Deprecated Functions
195655  \brief Deprecated functions ... incomplete-documentation
195656 
195657  These functions have been deprecated from use.
195658  */
195659  /* */
195660 
195662  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
195663 
195664  // JJW (10/16/2008): Changed to a single function in Node.code, and put
195665  // getVariant() in #if 0 block to prevent confusing Doxygen
195666 #if 0
195667 
195668  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
195670  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
195671 #endif
195672  /* */
195673 
195674 
195675 
195676 
195677  public:
195678  /* name Traversal Support Functions
195679  \brief Traversal support functions ... incomplete-documentation
195680 
195681  These functions have been made public as part of the design, but they are suggested for internal use
195682  or by particularly knowledgable users for specialized tools or applications.
195683  */
195684  /* */
195685 
195686  // DQ (11/26/2005): Support for visitor pattern mechanims
195687  // (inferior to ROSE traversal mechanism, experimental).
195691 
195692  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
195694  virtual void accept (ROSE_VisitorPattern & visitor) override;
195695 
195696  // DQ (12/26/2005): Support for traversal based on the memory pool
195699  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
195700 
195703  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
195704 
195705  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
195706  // This traversal helps support internal tools that call static member functions.
195707  // note: this function operates on the memory pools.
195710  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
195711  /* */
195712 
195713 
195714  public:
195715  /* name Memory Allocation Functions
195716  \brief Memory allocations functions ... incomplete-documentation
195717 
195718  These functions have been made public as part of the design, but they are suggested for internal use
195719  or by particularly knowledgable users for specialized tools or applications.
195720  */
195721  /* */
195722 
195733  virtual bool isInMemoryPool() override;
195734 
195745  virtual void checkDataMemberPointersIfInMemoryPool() override;
195746 
195747  // DQ (4/30/2006): Modified to be a const function.
195762  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
195763 
195773  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
195774 
195786  virtual long getChildIndex( SgNode* childNode ) const override;
195787 
195788  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
195789  // comment here (changed to be a C style comment and not be a doxygen comment).
195790  /* \brief Constructor for use by AST File I/O Mechanism
195791 
195792  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
195793  which obtained via fast binary file I/O from disk.
195794  */
195795  // SgOmpWorkshareStatement( SgOmpWorkshareStatementStorageClass& source );
195796 
195797 
195798 
195799 
195800 
195801  // JH (10/24/2005): methods added to support the ast file IO
195802  private:
195803 
195804  /* name AST Memory Allocation Support Functions
195805  \brief Memory allocations support....
195806 
195807  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
195808  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
195809  and support the AST File I/O Mechanism.
195810  */
195811  /* */
195812 
195813  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
195814  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
195815  that I use the same type everywhere, if any changes are made. THe second one declares the type
195816  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
195817  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
195818  a correspinding one in the AST_FILE_IO class!
195819  */
195820  // DQ (9/2/2015): This typedef is no longer used, we can't define the
195821  // comment here (changed to be a C style comment and not be a doxygen comment).
195822  /* \brief Typedef used for low level memory access.
195823  */
195824  // typedef unsigned char* TestType;
195825 
195826  // DQ (9/2/2015): This typedef is no longer used, we can't define the
195827  // comment here (changed to be a C style comment and not be a doxygen comment).
195828  /* \brief Typedef used to hold memory addresses as values.
195829  */
195830  // typedef unsigned long AddressType;
195831 
195832 
195833 
195834  // necessary, to have direct access to the p_freepointer and the private methods !
195836  friend class AST_FILE_IO;
195837 
195839  friend class SgOmpWorkshareStatementStorageClass;
195840 
195842  friend class AstSpecificDataManagingClass;
195843 
195845  friend class AstSpecificDataManagingClassStorageClass;
195846 
195847  public:
195849  SgOmpWorkshareStatement( const SgOmpWorkshareStatementStorageClass& source );
195850 
195851  // private: // JJW hack
195852  /*
195853  name AST Memory Allocation Support Variables
195854  Memory allocations support variables
195855 
195856  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
195857  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
195858  and support the AST File I/O Mechanism.
195859  */
195860  /* */
195861 
195862  public:
195863 
195864  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
195865  // to current node (so that it will work cleanly with build functions to specify patterns).
195866  // virtual SgNode* addRegExpAttribute();
195873 
195874 // *** COMMON CODE SECTION ENDS HERE ***
195875 
195876 
195877 // End of memberFunctionString
195878 // Start of memberFunctionString
195879 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
195880 
195881  // the generated cast function
195882  // friend ROSE_DLL_API SgOmpWorkshareStatement* isSgOmpWorkshareStatement ( SgNode* s );
195883 
195885 
195886 
195887 // End of memberFunctionString
195888 // Start of memberFunctionString
195889 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
195890 
195891  void post_construction_initialization() override;
195892 
195893 
195894 // End of memberFunctionString
195895 
195896 
195897  public:
195898  virtual ~SgOmpWorkshareStatement();
195899 
195900 
195901  public:
195902  SgOmpWorkshareStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
195904 
195905  protected:
195906 
195907 
195908 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
195909 
195910 
195911  };
195912 #endif
195913 
195914 // postdeclarations for SgOmpWorkshareStatement
195915 
195916 /* #line 195917 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
195917 
195918 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
195919 
195920 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
195921 
195922 
195923 /* #line 195924 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
195924 
195925 
195926 
195927 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
195928 
195929 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
195930 // This code is automatically generated for each
195931 // terminal and non-terminal within the defined
195932 // grammar. There is a simple way to change the
195933 // code to fix bugs etc. See the ROSE README file
195934 // for directions.
195935 
195936 // tps: (02/22/2010): Adding DLL export requirements
195937 #include "rosedll.h"
195938 
195939 // predeclarations for SgUpirFieldBodyStatement
195940 
195941 /* #line 195942 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
195942 
195943 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
195944 
195945 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
195946 
195947 #if 1
195948 // Class Definition for SgUpirFieldBodyStatement
195950  {
195951  public:
195952 
195953 
195954 /* #line 195955 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
195955 
195956  virtual SgNode* copy ( SgCopyHelp& help) const override;
195957 // Start of memberFunctionString
195958 /* #line 19536 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
195959 
195960  public:
195961 
195962 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
195963  virtual unsigned int cfgIndexForEnd() const override;
195964  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
195965  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
195966 #endif
195967 
195968 
195969 
195970 // End of memberFunctionString
195971 // Start of memberFunctionString
195972 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
195973 
195974 // *** COMMON CODE SECTION BEGINS HERE ***
195975 
195976  public:
195977 
195978  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
195979  // and not required which is required to match the other aspects of the copy mechanism code generation.
195980  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
195981  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
195982  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
195983  // virtual SgNode* copy ( const SgCopyHelp & help) const;
195984 
195986  virtual std::string class_name() const override;
195987 
195989  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
195990 
195992  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
195993  // static const VariantT static_variant = V_SgUpirFieldBodyStatement;
195994  enum { static_variant = V_SgUpirFieldBodyStatement };
195995 
195996  /* the generated cast function */
195998  ROSE_DLL_API friend SgUpirFieldBodyStatement* isSgUpirFieldBodyStatement( SgNode * s );
195999 
196001  ROSE_DLL_API friend const SgUpirFieldBodyStatement* isSgUpirFieldBodyStatement( const SgNode * s );
196002 
196003  // ******************************************
196004  // * Memory Pool / New / Delete
196005  // ******************************************
196006 
196007  public:
196009  static const unsigned pool_size; //
196011  static std::vector<unsigned char *> pools; //
196013  static SgUpirFieldBodyStatement * next_node; //
196014 
196016  static unsigned long initializeStorageClassArray(SgUpirFieldBodyStatementStorageClass *); //
196017 
196019  static void clearMemoryPool(); //
196020  static void deleteMemoryPool(); //
196021 
196023  static void extendMemoryPoolForFileIO(); //
196024 
196026  static SgUpirFieldBodyStatement * getPointerFromGlobalIndex(unsigned long); //
196028  static SgUpirFieldBodyStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
196029 
196031  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
196033  static void resetValidFreepointers(); //
196035  static unsigned long getNumberOfLastValidPointer(); //
196036 
196037 
196038 #if defined(INLINE_FUNCTIONS)
196039 
196040  inline void *operator new (size_t size);
196041 #else
196042 
196043  void *operator new (size_t size);
196044 #endif
196045 
196046  void operator delete (void* pointer, size_t size);
196047 
196048  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
196049  void operator delete (void* pointer)
196050  {
196051  // This is the generated delete operator...
196052  SgUpirFieldBodyStatement::operator delete (pointer,sizeof(SgUpirFieldBodyStatement));
196053  }
196054 
196056  static size_t numberOfNodes();
196057 
196059  static size_t memoryUsage();
196060 
196061  // End of scope which started in IR nodes specific code
196062  /* */
196063 
196064  /* name Internal Functions
196065  \brief Internal functions ... incomplete-documentation
196066 
196067  These functions have been made public as part of the design, but they are suggested for internal use
196068  or by particularly knowledgeable users for specialized tools or applications.
196069 
196070  \internal We could not make these private because they are required by user for special purposes. And
196071  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
196072 
196073  */
196074 
196075  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
196076  // overridden in every class by *generated* implementation
196078  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
196079  // MS: 06/28/02 container of names of variables or container indices
196080  // used used in the traversal to access AST successor nodes
196081  // overridden in every class by *generated* implementation
196084  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
196085 
196086  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
196087  // than all the vector copies. The implementation for these functions is generated for each class.
196089  virtual size_t get_numberOfTraversalSuccessors() override;
196091  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
196093  virtual size_t get_childIndex(SgNode *child) override;
196094 
196095 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
196096  // MS: 08/16/2002 method for generating RTI information
196098  virtual RTIReturnType roseRTI() override;
196099 #endif
196100  /* */
196101 
196102 
196103 
196104  /* name Deprecated Functions
196105  \brief Deprecated functions ... incomplete-documentation
196106 
196107  These functions have been deprecated from use.
196108  */
196109  /* */
196110 
196112  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
196113 
196114  // JJW (10/16/2008): Changed to a single function in Node.code, and put
196115  // getVariant() in #if 0 block to prevent confusing Doxygen
196116 #if 0
196117 
196118  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
196120  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
196121 #endif
196122  /* */
196123 
196124 
196125 
196126 
196127  public:
196128  /* name Traversal Support Functions
196129  \brief Traversal support functions ... incomplete-documentation
196130 
196131  These functions have been made public as part of the design, but they are suggested for internal use
196132  or by particularly knowledgable users for specialized tools or applications.
196133  */
196134  /* */
196135 
196136  // DQ (11/26/2005): Support for visitor pattern mechanims
196137  // (inferior to ROSE traversal mechanism, experimental).
196141 
196142  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
196144  virtual void accept (ROSE_VisitorPattern & visitor) override;
196145 
196146  // DQ (12/26/2005): Support for traversal based on the memory pool
196149  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
196150 
196153  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
196154 
196155  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
196156  // This traversal helps support internal tools that call static member functions.
196157  // note: this function operates on the memory pools.
196160  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
196161  /* */
196162 
196163 
196164  public:
196165  /* name Memory Allocation Functions
196166  \brief Memory allocations functions ... incomplete-documentation
196167 
196168  These functions have been made public as part of the design, but they are suggested for internal use
196169  or by particularly knowledgable users for specialized tools or applications.
196170  */
196171  /* */
196172 
196183  virtual bool isInMemoryPool() override;
196184 
196195  virtual void checkDataMemberPointersIfInMemoryPool() override;
196196 
196197  // DQ (4/30/2006): Modified to be a const function.
196212  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
196213 
196223  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
196224 
196236  virtual long getChildIndex( SgNode* childNode ) const override;
196237 
196238  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
196239  // comment here (changed to be a C style comment and not be a doxygen comment).
196240  /* \brief Constructor for use by AST File I/O Mechanism
196241 
196242  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
196243  which obtained via fast binary file I/O from disk.
196244  */
196245  // SgUpirFieldBodyStatement( SgUpirFieldBodyStatementStorageClass& source );
196246 
196247 
196248 
196249 
196250 
196251  // JH (10/24/2005): methods added to support the ast file IO
196252  private:
196253 
196254  /* name AST Memory Allocation Support Functions
196255  \brief Memory allocations support....
196256 
196257  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
196258  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
196259  and support the AST File I/O Mechanism.
196260  */
196261  /* */
196262 
196263  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
196264  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
196265  that I use the same type everywhere, if any changes are made. THe second one declares the type
196266  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
196267  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
196268  a correspinding one in the AST_FILE_IO class!
196269  */
196270  // DQ (9/2/2015): This typedef is no longer used, we can't define the
196271  // comment here (changed to be a C style comment and not be a doxygen comment).
196272  /* \brief Typedef used for low level memory access.
196273  */
196274  // typedef unsigned char* TestType;
196275 
196276  // DQ (9/2/2015): This typedef is no longer used, we can't define the
196277  // comment here (changed to be a C style comment and not be a doxygen comment).
196278  /* \brief Typedef used to hold memory addresses as values.
196279  */
196280  // typedef unsigned long AddressType;
196281 
196282 
196283 
196284  // necessary, to have direct access to the p_freepointer and the private methods !
196286  friend class AST_FILE_IO;
196287 
196289  friend class SgUpirFieldBodyStatementStorageClass;
196290 
196292  friend class AstSpecificDataManagingClass;
196293 
196295  friend class AstSpecificDataManagingClassStorageClass;
196296 
196297  public:
196299  SgUpirFieldBodyStatement( const SgUpirFieldBodyStatementStorageClass& source );
196300 
196301  // private: // JJW hack
196302  /*
196303  name AST Memory Allocation Support Variables
196304  Memory allocations support variables
196305 
196306  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
196307  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
196308  and support the AST File I/O Mechanism.
196309  */
196310  /* */
196311 
196312  public:
196313 
196314  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
196315  // to current node (so that it will work cleanly with build functions to specify patterns).
196316  // virtual SgNode* addRegExpAttribute();
196323 
196324 // *** COMMON CODE SECTION ENDS HERE ***
196325 
196326 
196327 // End of memberFunctionString
196328 // Start of memberFunctionString
196329 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
196330 
196331  // the generated cast function
196332  // friend ROSE_DLL_API SgUpirFieldBodyStatement* isSgUpirFieldBodyStatement ( SgNode* s );
196333 
196335 
196336 
196337 // End of memberFunctionString
196338 // Start of memberFunctionString
196339 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
196340 
196341  void post_construction_initialization() override;
196342 
196343 
196344 // End of memberFunctionString
196345 
196346  public:
196347  const SgOmpClausePtrList& get_clauses() const;
196348  SgOmpClausePtrList& get_clauses();
196349 
196350 
196351  public:
196352  virtual ~SgUpirFieldBodyStatement();
196353 
196354 
196355  public:
196356  SgUpirFieldBodyStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
196358 
196359  protected:
196360 // Start of memberFunctionString
196361 SgOmpClausePtrList p_clauses;
196362 
196363 // End of memberFunctionString
196364 
196365 
196366 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
196367 
196368 
196369  };
196370 #endif
196371 
196372 // postdeclarations for SgUpirFieldBodyStatement
196373 
196374 /* #line 196375 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
196375 
196376 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
196377 
196378 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
196379 
196380 
196381 /* #line 196382 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
196382 
196383 
196384 
196385 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
196386 
196387 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
196388 // This code is automatically generated for each
196389 // terminal and non-terminal within the defined
196390 // grammar. There is a simple way to change the
196391 // code to fix bugs etc. See the ROSE README file
196392 // for directions.
196393 
196394 // tps: (02/22/2010): Adding DLL export requirements
196395 #include "rosedll.h"
196396 
196397 // predeclarations for SgUpirSpmdStatement
196398 
196399 /* #line 196400 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
196400 
196401 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
196402 
196403 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
196404 
196405 #if 1
196406 // Class Definition for SgUpirSpmdStatement
196408  {
196409  public:
196410 
196411 
196412 /* #line 196413 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
196413 
196414  virtual SgNode* copy ( SgCopyHelp& help) const override;
196415 // Start of memberFunctionString
196416 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
196417 
196418 // *** COMMON CODE SECTION BEGINS HERE ***
196419 
196420  public:
196421 
196422  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
196423  // and not required which is required to match the other aspects of the copy mechanism code generation.
196424  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
196425  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
196426  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
196427  // virtual SgNode* copy ( const SgCopyHelp & help) const;
196428 
196430  virtual std::string class_name() const override;
196431 
196433  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
196434 
196436  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
196437  // static const VariantT static_variant = V_SgUpirSpmdStatement;
196438  enum { static_variant = V_SgUpirSpmdStatement };
196439 
196440  /* the generated cast function */
196442  ROSE_DLL_API friend SgUpirSpmdStatement* isSgUpirSpmdStatement( SgNode * s );
196443 
196445  ROSE_DLL_API friend const SgUpirSpmdStatement* isSgUpirSpmdStatement( const SgNode * s );
196446 
196447  // ******************************************
196448  // * Memory Pool / New / Delete
196449  // ******************************************
196450 
196451  public:
196453  static const unsigned pool_size; //
196455  static std::vector<unsigned char *> pools; //
196457  static SgUpirSpmdStatement * next_node; //
196458 
196460  static unsigned long initializeStorageClassArray(SgUpirSpmdStatementStorageClass *); //
196461 
196463  static void clearMemoryPool(); //
196464  static void deleteMemoryPool(); //
196465 
196467  static void extendMemoryPoolForFileIO(); //
196468 
196470  static SgUpirSpmdStatement * getPointerFromGlobalIndex(unsigned long); //
196472  static SgUpirSpmdStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
196473 
196475  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
196477  static void resetValidFreepointers(); //
196479  static unsigned long getNumberOfLastValidPointer(); //
196480 
196481 
196482 #if defined(INLINE_FUNCTIONS)
196483 
196484  inline void *operator new (size_t size);
196485 #else
196486 
196487  void *operator new (size_t size);
196488 #endif
196489 
196490  void operator delete (void* pointer, size_t size);
196491 
196492  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
196493  void operator delete (void* pointer)
196494  {
196495  // This is the generated delete operator...
196496  SgUpirSpmdStatement::operator delete (pointer,sizeof(SgUpirSpmdStatement));
196497  }
196498 
196500  static size_t numberOfNodes();
196501 
196503  static size_t memoryUsage();
196504 
196505  // End of scope which started in IR nodes specific code
196506  /* */
196507 
196508  /* name Internal Functions
196509  \brief Internal functions ... incomplete-documentation
196510 
196511  These functions have been made public as part of the design, but they are suggested for internal use
196512  or by particularly knowledgeable users for specialized tools or applications.
196513 
196514  \internal We could not make these private because they are required by user for special purposes. And
196515  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
196516 
196517  */
196518 
196519  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
196520  // overridden in every class by *generated* implementation
196522  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
196523  // MS: 06/28/02 container of names of variables or container indices
196524  // used used in the traversal to access AST successor nodes
196525  // overridden in every class by *generated* implementation
196528  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
196529 
196530  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
196531  // than all the vector copies. The implementation for these functions is generated for each class.
196533  virtual size_t get_numberOfTraversalSuccessors() override;
196535  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
196537  virtual size_t get_childIndex(SgNode *child) override;
196538 
196539 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
196540  // MS: 08/16/2002 method for generating RTI information
196542  virtual RTIReturnType roseRTI() override;
196543 #endif
196544  /* */
196545 
196546 
196547 
196548  /* name Deprecated Functions
196549  \brief Deprecated functions ... incomplete-documentation
196550 
196551  These functions have been deprecated from use.
196552  */
196553  /* */
196554 
196556  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
196557 
196558  // JJW (10/16/2008): Changed to a single function in Node.code, and put
196559  // getVariant() in #if 0 block to prevent confusing Doxygen
196560 #if 0
196561 
196562  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
196564  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
196565 #endif
196566  /* */
196567 
196568 
196569 
196570 
196571  public:
196572  /* name Traversal Support Functions
196573  \brief Traversal support functions ... incomplete-documentation
196574 
196575  These functions have been made public as part of the design, but they are suggested for internal use
196576  or by particularly knowledgable users for specialized tools or applications.
196577  */
196578  /* */
196579 
196580  // DQ (11/26/2005): Support for visitor pattern mechanims
196581  // (inferior to ROSE traversal mechanism, experimental).
196585 
196586  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
196588  virtual void accept (ROSE_VisitorPattern & visitor) override;
196589 
196590  // DQ (12/26/2005): Support for traversal based on the memory pool
196593  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
196594 
196597  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
196598 
196599  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
196600  // This traversal helps support internal tools that call static member functions.
196601  // note: this function operates on the memory pools.
196604  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
196605  /* */
196606 
196607 
196608  public:
196609  /* name Memory Allocation Functions
196610  \brief Memory allocations functions ... incomplete-documentation
196611 
196612  These functions have been made public as part of the design, but they are suggested for internal use
196613  or by particularly knowledgable users for specialized tools or applications.
196614  */
196615  /* */
196616 
196627  virtual bool isInMemoryPool() override;
196628 
196639  virtual void checkDataMemberPointersIfInMemoryPool() override;
196640 
196641  // DQ (4/30/2006): Modified to be a const function.
196656  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
196657 
196667  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
196668 
196680  virtual long getChildIndex( SgNode* childNode ) const override;
196681 
196682  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
196683  // comment here (changed to be a C style comment and not be a doxygen comment).
196684  /* \brief Constructor for use by AST File I/O Mechanism
196685 
196686  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
196687  which obtained via fast binary file I/O from disk.
196688  */
196689  // SgUpirSpmdStatement( SgUpirSpmdStatementStorageClass& source );
196690 
196691 
196692 
196693 
196694 
196695  // JH (10/24/2005): methods added to support the ast file IO
196696  private:
196697 
196698  /* name AST Memory Allocation Support Functions
196699  \brief Memory allocations support....
196700 
196701  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
196702  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
196703  and support the AST File I/O Mechanism.
196704  */
196705  /* */
196706 
196707  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
196708  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
196709  that I use the same type everywhere, if any changes are made. THe second one declares the type
196710  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
196711  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
196712  a correspinding one in the AST_FILE_IO class!
196713  */
196714  // DQ (9/2/2015): This typedef is no longer used, we can't define the
196715  // comment here (changed to be a C style comment and not be a doxygen comment).
196716  /* \brief Typedef used for low level memory access.
196717  */
196718  // typedef unsigned char* TestType;
196719 
196720  // DQ (9/2/2015): This typedef is no longer used, we can't define the
196721  // comment here (changed to be a C style comment and not be a doxygen comment).
196722  /* \brief Typedef used to hold memory addresses as values.
196723  */
196724  // typedef unsigned long AddressType;
196725 
196726 
196727 
196728  // necessary, to have direct access to the p_freepointer and the private methods !
196730  friend class AST_FILE_IO;
196731 
196733  friend class SgUpirSpmdStatementStorageClass;
196734 
196736  friend class AstSpecificDataManagingClass;
196737 
196739  friend class AstSpecificDataManagingClassStorageClass;
196740 
196741  public:
196743  SgUpirSpmdStatement( const SgUpirSpmdStatementStorageClass& source );
196744 
196745  // private: // JJW hack
196746  /*
196747  name AST Memory Allocation Support Variables
196748  Memory allocations support variables
196749 
196750  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
196751  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
196752  and support the AST File I/O Mechanism.
196753  */
196754  /* */
196755 
196756  public:
196757 
196758  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
196759  // to current node (so that it will work cleanly with build functions to specify patterns).
196760  // virtual SgNode* addRegExpAttribute();
196767 
196768 // *** COMMON CODE SECTION ENDS HERE ***
196769 
196770 
196771 // End of memberFunctionString
196772 // Start of memberFunctionString
196773 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
196774 
196775  // the generated cast function
196776  // friend ROSE_DLL_API SgUpirSpmdStatement* isSgUpirSpmdStatement ( SgNode* s );
196777 
196779 
196780 
196781 // End of memberFunctionString
196782 // Start of memberFunctionString
196783 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
196784 
196785  void post_construction_initialization() override;
196786 
196787 
196788 // End of memberFunctionString
196789 
196790 
196791  public:
196792  virtual ~SgUpirSpmdStatement();
196793 
196794 
196795  public:
196796  SgUpirSpmdStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
196798 
196799  protected:
196800 
196801 
196802 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
196803 
196804 
196805  };
196806 #endif
196807 
196808 // postdeclarations for SgUpirSpmdStatement
196809 
196810 /* #line 196811 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
196811 
196812 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
196813 
196814 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
196815 
196816 
196817 /* #line 196818 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
196818 
196819 
196820 
196821 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
196822 
196823 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
196824 // This code is automatically generated for each
196825 // terminal and non-terminal within the defined
196826 // grammar. There is a simple way to change the
196827 // code to fix bugs etc. See the ROSE README file
196828 // for directions.
196829 
196830 // tps: (02/22/2010): Adding DLL export requirements
196831 #include "rosedll.h"
196832 
196833 // predeclarations for SgOmpTeamsStatement
196834 
196835 /* #line 196836 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
196836 
196837 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
196838 
196839 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
196840 
196841 #if 1
196842 // Class Definition for SgOmpTeamsStatement
196844  {
196845  public:
196846 
196847 
196848 /* #line 196849 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
196849 
196850  virtual SgNode* copy ( SgCopyHelp& help) const override;
196851 // Start of memberFunctionString
196852 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
196853 
196854 // *** COMMON CODE SECTION BEGINS HERE ***
196855 
196856  public:
196857 
196858  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
196859  // and not required which is required to match the other aspects of the copy mechanism code generation.
196860  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
196861  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
196862  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
196863  // virtual SgNode* copy ( const SgCopyHelp & help) const;
196864 
196866  virtual std::string class_name() const override;
196867 
196869  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
196870 
196872  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
196873  // static const VariantT static_variant = V_SgOmpTeamsStatement;
196874  enum { static_variant = V_SgOmpTeamsStatement };
196875 
196876  /* the generated cast function */
196878  ROSE_DLL_API friend SgOmpTeamsStatement* isSgOmpTeamsStatement( SgNode * s );
196879 
196881  ROSE_DLL_API friend const SgOmpTeamsStatement* isSgOmpTeamsStatement( const SgNode * s );
196882 
196883  // ******************************************
196884  // * Memory Pool / New / Delete
196885  // ******************************************
196886 
196887  public:
196889  static const unsigned pool_size; //
196891  static std::vector<unsigned char *> pools; //
196893  static SgOmpTeamsStatement * next_node; //
196894 
196896  static unsigned long initializeStorageClassArray(SgOmpTeamsStatementStorageClass *); //
196897 
196899  static void clearMemoryPool(); //
196900  static void deleteMemoryPool(); //
196901 
196903  static void extendMemoryPoolForFileIO(); //
196904 
196906  static SgOmpTeamsStatement * getPointerFromGlobalIndex(unsigned long); //
196908  static SgOmpTeamsStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
196909 
196911  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
196913  static void resetValidFreepointers(); //
196915  static unsigned long getNumberOfLastValidPointer(); //
196916 
196917 
196918 #if defined(INLINE_FUNCTIONS)
196919 
196920  inline void *operator new (size_t size);
196921 #else
196922 
196923  void *operator new (size_t size);
196924 #endif
196925 
196926  void operator delete (void* pointer, size_t size);
196927 
196928  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
196929  void operator delete (void* pointer)
196930  {
196931  // This is the generated delete operator...
196932  SgOmpTeamsStatement::operator delete (pointer,sizeof(SgOmpTeamsStatement));
196933  }
196934 
196936  static size_t numberOfNodes();
196937 
196939  static size_t memoryUsage();
196940 
196941  // End of scope which started in IR nodes specific code
196942  /* */
196943 
196944  /* name Internal Functions
196945  \brief Internal functions ... incomplete-documentation
196946 
196947  These functions have been made public as part of the design, but they are suggested for internal use
196948  or by particularly knowledgeable users for specialized tools or applications.
196949 
196950  \internal We could not make these private because they are required by user for special purposes. And
196951  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
196952 
196953  */
196954 
196955  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
196956  // overridden in every class by *generated* implementation
196958  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
196959  // MS: 06/28/02 container of names of variables or container indices
196960  // used used in the traversal to access AST successor nodes
196961  // overridden in every class by *generated* implementation
196964  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
196965 
196966  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
196967  // than all the vector copies. The implementation for these functions is generated for each class.
196969  virtual size_t get_numberOfTraversalSuccessors() override;
196971  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
196973  virtual size_t get_childIndex(SgNode *child) override;
196974 
196975 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
196976  // MS: 08/16/2002 method for generating RTI information
196978  virtual RTIReturnType roseRTI() override;
196979 #endif
196980  /* */
196981 
196982 
196983 
196984  /* name Deprecated Functions
196985  \brief Deprecated functions ... incomplete-documentation
196986 
196987  These functions have been deprecated from use.
196988  */
196989  /* */
196990 
196992  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
196993 
196994  // JJW (10/16/2008): Changed to a single function in Node.code, and put
196995  // getVariant() in #if 0 block to prevent confusing Doxygen
196996 #if 0
196997 
196998  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
197000  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
197001 #endif
197002  /* */
197003 
197004 
197005 
197006 
197007  public:
197008  /* name Traversal Support Functions
197009  \brief Traversal support functions ... incomplete-documentation
197010 
197011  These functions have been made public as part of the design, but they are suggested for internal use
197012  or by particularly knowledgable users for specialized tools or applications.
197013  */
197014  /* */
197015 
197016  // DQ (11/26/2005): Support for visitor pattern mechanims
197017  // (inferior to ROSE traversal mechanism, experimental).
197021 
197022  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
197024  virtual void accept (ROSE_VisitorPattern & visitor) override;
197025 
197026  // DQ (12/26/2005): Support for traversal based on the memory pool
197029  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
197030 
197033  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
197034 
197035  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
197036  // This traversal helps support internal tools that call static member functions.
197037  // note: this function operates on the memory pools.
197040  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
197041  /* */
197042 
197043 
197044  public:
197045  /* name Memory Allocation Functions
197046  \brief Memory allocations functions ... incomplete-documentation
197047 
197048  These functions have been made public as part of the design, but they are suggested for internal use
197049  or by particularly knowledgable users for specialized tools or applications.
197050  */
197051  /* */
197052 
197063  virtual bool isInMemoryPool() override;
197064 
197075  virtual void checkDataMemberPointersIfInMemoryPool() override;
197076 
197077  // DQ (4/30/2006): Modified to be a const function.
197092  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
197093 
197103  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
197104 
197116  virtual long getChildIndex( SgNode* childNode ) const override;
197117 
197118  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
197119  // comment here (changed to be a C style comment and not be a doxygen comment).
197120  /* \brief Constructor for use by AST File I/O Mechanism
197121 
197122  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
197123  which obtained via fast binary file I/O from disk.
197124  */
197125  // SgOmpTeamsStatement( SgOmpTeamsStatementStorageClass& source );
197126 
197127 
197128 
197129 
197130 
197131  // JH (10/24/2005): methods added to support the ast file IO
197132  private:
197133 
197134  /* name AST Memory Allocation Support Functions
197135  \brief Memory allocations support....
197136 
197137  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
197138  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
197139  and support the AST File I/O Mechanism.
197140  */
197141  /* */
197142 
197143  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
197144  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
197145  that I use the same type everywhere, if any changes are made. THe second one declares the type
197146  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
197147  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
197148  a correspinding one in the AST_FILE_IO class!
197149  */
197150  // DQ (9/2/2015): This typedef is no longer used, we can't define the
197151  // comment here (changed to be a C style comment and not be a doxygen comment).
197152  /* \brief Typedef used for low level memory access.
197153  */
197154  // typedef unsigned char* TestType;
197155 
197156  // DQ (9/2/2015): This typedef is no longer used, we can't define the
197157  // comment here (changed to be a C style comment and not be a doxygen comment).
197158  /* \brief Typedef used to hold memory addresses as values.
197159  */
197160  // typedef unsigned long AddressType;
197161 
197162 
197163 
197164  // necessary, to have direct access to the p_freepointer and the private methods !
197166  friend class AST_FILE_IO;
197167 
197169  friend class SgOmpTeamsStatementStorageClass;
197170 
197172  friend class AstSpecificDataManagingClass;
197173 
197175  friend class AstSpecificDataManagingClassStorageClass;
197176 
197177  public:
197179  SgOmpTeamsStatement( const SgOmpTeamsStatementStorageClass& source );
197180 
197181  // private: // JJW hack
197182  /*
197183  name AST Memory Allocation Support Variables
197184  Memory allocations support variables
197185 
197186  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
197187  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
197188  and support the AST File I/O Mechanism.
197189  */
197190  /* */
197191 
197192  public:
197193 
197194  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
197195  // to current node (so that it will work cleanly with build functions to specify patterns).
197196  // virtual SgNode* addRegExpAttribute();
197203 
197204 // *** COMMON CODE SECTION ENDS HERE ***
197205 
197206 
197207 // End of memberFunctionString
197208 // Start of memberFunctionString
197209 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
197210 
197211  // the generated cast function
197212  // friend ROSE_DLL_API SgOmpTeamsStatement* isSgOmpTeamsStatement ( SgNode* s );
197213 
197215 
197216 
197217 // End of memberFunctionString
197218 // Start of memberFunctionString
197219 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
197220 
197221  void post_construction_initialization() override;
197222 
197223 
197224 // End of memberFunctionString
197225 
197226 
197227  public:
197228  virtual ~SgOmpTeamsStatement();
197229 
197230 
197231  public:
197232  SgOmpTeamsStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
197234 
197235  protected:
197236 
197237 
197238 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
197239 
197240 
197241  };
197242 #endif
197243 
197244 // postdeclarations for SgOmpTeamsStatement
197245 
197246 /* #line 197247 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
197247 
197248 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
197249 
197250 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
197251 
197252 
197253 /* #line 197254 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
197254 
197255 
197256 
197257 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
197258 
197259 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
197260 // This code is automatically generated for each
197261 // terminal and non-terminal within the defined
197262 // grammar. There is a simple way to change the
197263 // code to fix bugs etc. See the ROSE README file
197264 // for directions.
197265 
197266 // tps: (02/22/2010): Adding DLL export requirements
197267 #include "rosedll.h"
197268 
197269 // predeclarations for SgOmpSingleStatement
197270 
197271 /* #line 197272 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
197272 
197273 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
197274 
197275 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
197276 
197277 #if 1
197278 // Class Definition for SgOmpSingleStatement
197280  {
197281  public:
197282 
197283 
197284 /* #line 197285 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
197285 
197286  virtual SgNode* copy ( SgCopyHelp& help) const override;
197287 // Start of memberFunctionString
197288 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
197289 
197290 // *** COMMON CODE SECTION BEGINS HERE ***
197291 
197292  public:
197293 
197294  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
197295  // and not required which is required to match the other aspects of the copy mechanism code generation.
197296  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
197297  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
197298  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
197299  // virtual SgNode* copy ( const SgCopyHelp & help) const;
197300 
197302  virtual std::string class_name() const override;
197303 
197305  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
197306 
197308  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
197309  // static const VariantT static_variant = V_SgOmpSingleStatement;
197310  enum { static_variant = V_SgOmpSingleStatement };
197311 
197312  /* the generated cast function */
197314  ROSE_DLL_API friend SgOmpSingleStatement* isSgOmpSingleStatement( SgNode * s );
197315 
197317  ROSE_DLL_API friend const SgOmpSingleStatement* isSgOmpSingleStatement( const SgNode * s );
197318 
197319  // ******************************************
197320  // * Memory Pool / New / Delete
197321  // ******************************************
197322 
197323  public:
197325  static const unsigned pool_size; //
197327  static std::vector<unsigned char *> pools; //
197329  static SgOmpSingleStatement * next_node; //
197330 
197332  static unsigned long initializeStorageClassArray(SgOmpSingleStatementStorageClass *); //
197333 
197335  static void clearMemoryPool(); //
197336  static void deleteMemoryPool(); //
197337 
197339  static void extendMemoryPoolForFileIO(); //
197340 
197342  static SgOmpSingleStatement * getPointerFromGlobalIndex(unsigned long); //
197344  static SgOmpSingleStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
197345 
197347  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
197349  static void resetValidFreepointers(); //
197351  static unsigned long getNumberOfLastValidPointer(); //
197352 
197353 
197354 #if defined(INLINE_FUNCTIONS)
197355 
197356  inline void *operator new (size_t size);
197357 #else
197358 
197359  void *operator new (size_t size);
197360 #endif
197361 
197362  void operator delete (void* pointer, size_t size);
197363 
197364  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
197365  void operator delete (void* pointer)
197366  {
197367  // This is the generated delete operator...
197368  SgOmpSingleStatement::operator delete (pointer,sizeof(SgOmpSingleStatement));
197369  }
197370 
197372  static size_t numberOfNodes();
197373 
197375  static size_t memoryUsage();
197376 
197377  // End of scope which started in IR nodes specific code
197378  /* */
197379 
197380  /* name Internal Functions
197381  \brief Internal functions ... incomplete-documentation
197382 
197383  These functions have been made public as part of the design, but they are suggested for internal use
197384  or by particularly knowledgeable users for specialized tools or applications.
197385 
197386  \internal We could not make these private because they are required by user for special purposes. And
197387  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
197388 
197389  */
197390 
197391  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
197392  // overridden in every class by *generated* implementation
197394  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
197395  // MS: 06/28/02 container of names of variables or container indices
197396  // used used in the traversal to access AST successor nodes
197397  // overridden in every class by *generated* implementation
197400  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
197401 
197402  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
197403  // than all the vector copies. The implementation for these functions is generated for each class.
197405  virtual size_t get_numberOfTraversalSuccessors() override;
197407  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
197409  virtual size_t get_childIndex(SgNode *child) override;
197410 
197411 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
197412  // MS: 08/16/2002 method for generating RTI information
197414  virtual RTIReturnType roseRTI() override;
197415 #endif
197416  /* */
197417 
197418 
197419 
197420  /* name Deprecated Functions
197421  \brief Deprecated functions ... incomplete-documentation
197422 
197423  These functions have been deprecated from use.
197424  */
197425  /* */
197426 
197428  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
197429 
197430  // JJW (10/16/2008): Changed to a single function in Node.code, and put
197431  // getVariant() in #if 0 block to prevent confusing Doxygen
197432 #if 0
197433 
197434  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
197436  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
197437 #endif
197438  /* */
197439 
197440 
197441 
197442 
197443  public:
197444  /* name Traversal Support Functions
197445  \brief Traversal support functions ... incomplete-documentation
197446 
197447  These functions have been made public as part of the design, but they are suggested for internal use
197448  or by particularly knowledgable users for specialized tools or applications.
197449  */
197450  /* */
197451 
197452  // DQ (11/26/2005): Support for visitor pattern mechanims
197453  // (inferior to ROSE traversal mechanism, experimental).
197457 
197458  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
197460  virtual void accept (ROSE_VisitorPattern & visitor) override;
197461 
197462  // DQ (12/26/2005): Support for traversal based on the memory pool
197465  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
197466 
197469  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
197470 
197471  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
197472  // This traversal helps support internal tools that call static member functions.
197473  // note: this function operates on the memory pools.
197476  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
197477  /* */
197478 
197479 
197480  public:
197481  /* name Memory Allocation Functions
197482  \brief Memory allocations functions ... incomplete-documentation
197483 
197484  These functions have been made public as part of the design, but they are suggested for internal use
197485  or by particularly knowledgable users for specialized tools or applications.
197486  */
197487  /* */
197488 
197499  virtual bool isInMemoryPool() override;
197500 
197511  virtual void checkDataMemberPointersIfInMemoryPool() override;
197512 
197513  // DQ (4/30/2006): Modified to be a const function.
197528  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
197529 
197539  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
197540 
197552  virtual long getChildIndex( SgNode* childNode ) const override;
197553 
197554  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
197555  // comment here (changed to be a C style comment and not be a doxygen comment).
197556  /* \brief Constructor for use by AST File I/O Mechanism
197557 
197558  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
197559  which obtained via fast binary file I/O from disk.
197560  */
197561  // SgOmpSingleStatement( SgOmpSingleStatementStorageClass& source );
197562 
197563 
197564 
197565 
197566 
197567  // JH (10/24/2005): methods added to support the ast file IO
197568  private:
197569 
197570  /* name AST Memory Allocation Support Functions
197571  \brief Memory allocations support....
197572 
197573  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
197574  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
197575  and support the AST File I/O Mechanism.
197576  */
197577  /* */
197578 
197579  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
197580  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
197581  that I use the same type everywhere, if any changes are made. THe second one declares the type
197582  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
197583  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
197584  a correspinding one in the AST_FILE_IO class!
197585  */
197586  // DQ (9/2/2015): This typedef is no longer used, we can't define the
197587  // comment here (changed to be a C style comment and not be a doxygen comment).
197588  /* \brief Typedef used for low level memory access.
197589  */
197590  // typedef unsigned char* TestType;
197591 
197592  // DQ (9/2/2015): This typedef is no longer used, we can't define the
197593  // comment here (changed to be a C style comment and not be a doxygen comment).
197594  /* \brief Typedef used to hold memory addresses as values.
197595  */
197596  // typedef unsigned long AddressType;
197597 
197598 
197599 
197600  // necessary, to have direct access to the p_freepointer and the private methods !
197602  friend class AST_FILE_IO;
197603 
197605  friend class SgOmpSingleStatementStorageClass;
197606 
197608  friend class AstSpecificDataManagingClass;
197609 
197611  friend class AstSpecificDataManagingClassStorageClass;
197612 
197613  public:
197615  SgOmpSingleStatement( const SgOmpSingleStatementStorageClass& source );
197616 
197617  // private: // JJW hack
197618  /*
197619  name AST Memory Allocation Support Variables
197620  Memory allocations support variables
197621 
197622  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
197623  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
197624  and support the AST File I/O Mechanism.
197625  */
197626  /* */
197627 
197628  public:
197629 
197630  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
197631  // to current node (so that it will work cleanly with build functions to specify patterns).
197632  // virtual SgNode* addRegExpAttribute();
197639 
197640 // *** COMMON CODE SECTION ENDS HERE ***
197641 
197642 
197643 // End of memberFunctionString
197644 // Start of memberFunctionString
197645 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
197646 
197647  // the generated cast function
197648  // friend ROSE_DLL_API SgOmpSingleStatement* isSgOmpSingleStatement ( SgNode* s );
197649 
197651 
197652 
197653 // End of memberFunctionString
197654 // Start of memberFunctionString
197655 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
197656 
197657  void post_construction_initialization() override;
197658 
197659 
197660 // End of memberFunctionString
197661 
197662 
197663  public:
197664  virtual ~SgOmpSingleStatement();
197665 
197666 
197667  public:
197668  SgOmpSingleStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
197670 
197671  protected:
197672 
197673 
197674 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
197675 
197676 
197677  };
197678 #endif
197679 
197680 // postdeclarations for SgOmpSingleStatement
197681 
197682 /* #line 197683 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
197683 
197684 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
197685 
197686 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
197687 
197688 
197689 /* #line 197690 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
197690 
197691 
197692 
197693 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
197694 
197695 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
197696 // This code is automatically generated for each
197697 // terminal and non-terminal within the defined
197698 // grammar. There is a simple way to change the
197699 // code to fix bugs etc. See the ROSE README file
197700 // for directions.
197701 
197702 // tps: (02/22/2010): Adding DLL export requirements
197703 #include "rosedll.h"
197704 
197705 // predeclarations for SgOmpAtomicStatement
197706 
197707 /* #line 197708 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
197708 
197709 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
197710 
197711 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
197712 
197713 #if 1
197714 // Class Definition for SgOmpAtomicStatement
197716  {
197717  public:
197718 
197719 
197720 /* #line 197721 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
197721 
197722  virtual SgNode* copy ( SgCopyHelp& help) const override;
197723 // Start of memberFunctionString
197724 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
197725 
197726 // *** COMMON CODE SECTION BEGINS HERE ***
197727 
197728  public:
197729 
197730  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
197731  // and not required which is required to match the other aspects of the copy mechanism code generation.
197732  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
197733  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
197734  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
197735  // virtual SgNode* copy ( const SgCopyHelp & help) const;
197736 
197738  virtual std::string class_name() const override;
197739 
197741  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
197742 
197744  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
197745  // static const VariantT static_variant = V_SgOmpAtomicStatement;
197746  enum { static_variant = V_SgOmpAtomicStatement };
197747 
197748  /* the generated cast function */
197750  ROSE_DLL_API friend SgOmpAtomicStatement* isSgOmpAtomicStatement( SgNode * s );
197751 
197753  ROSE_DLL_API friend const SgOmpAtomicStatement* isSgOmpAtomicStatement( const SgNode * s );
197754 
197755  // ******************************************
197756  // * Memory Pool / New / Delete
197757  // ******************************************
197758 
197759  public:
197761  static const unsigned pool_size; //
197763  static std::vector<unsigned char *> pools; //
197765  static SgOmpAtomicStatement * next_node; //
197766 
197768  static unsigned long initializeStorageClassArray(SgOmpAtomicStatementStorageClass *); //
197769 
197771  static void clearMemoryPool(); //
197772  static void deleteMemoryPool(); //
197773 
197775  static void extendMemoryPoolForFileIO(); //
197776 
197778  static SgOmpAtomicStatement * getPointerFromGlobalIndex(unsigned long); //
197780  static SgOmpAtomicStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
197781 
197783  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
197785  static void resetValidFreepointers(); //
197787  static unsigned long getNumberOfLastValidPointer(); //
197788 
197789 
197790 #if defined(INLINE_FUNCTIONS)
197791 
197792  inline void *operator new (size_t size);
197793 #else
197794 
197795  void *operator new (size_t size);
197796 #endif
197797 
197798  void operator delete (void* pointer, size_t size);
197799 
197800  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
197801  void operator delete (void* pointer)
197802  {
197803  // This is the generated delete operator...
197804  SgOmpAtomicStatement::operator delete (pointer,sizeof(SgOmpAtomicStatement));
197805  }
197806 
197808  static size_t numberOfNodes();
197809 
197811  static size_t memoryUsage();
197812 
197813  // End of scope which started in IR nodes specific code
197814  /* */
197815 
197816  /* name Internal Functions
197817  \brief Internal functions ... incomplete-documentation
197818 
197819  These functions have been made public as part of the design, but they are suggested for internal use
197820  or by particularly knowledgeable users for specialized tools or applications.
197821 
197822  \internal We could not make these private because they are required by user for special purposes. And
197823  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
197824 
197825  */
197826 
197827  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
197828  // overridden in every class by *generated* implementation
197830  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
197831  // MS: 06/28/02 container of names of variables or container indices
197832  // used used in the traversal to access AST successor nodes
197833  // overridden in every class by *generated* implementation
197836  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
197837 
197838  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
197839  // than all the vector copies. The implementation for these functions is generated for each class.
197841  virtual size_t get_numberOfTraversalSuccessors() override;
197843  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
197845  virtual size_t get_childIndex(SgNode *child) override;
197846 
197847 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
197848  // MS: 08/16/2002 method for generating RTI information
197850  virtual RTIReturnType roseRTI() override;
197851 #endif
197852  /* */
197853 
197854 
197855 
197856  /* name Deprecated Functions
197857  \brief Deprecated functions ... incomplete-documentation
197858 
197859  These functions have been deprecated from use.
197860  */
197861  /* */
197862 
197864  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
197865 
197866  // JJW (10/16/2008): Changed to a single function in Node.code, and put
197867  // getVariant() in #if 0 block to prevent confusing Doxygen
197868 #if 0
197869 
197870  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
197872  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
197873 #endif
197874  /* */
197875 
197876 
197877 
197878 
197879  public:
197880  /* name Traversal Support Functions
197881  \brief Traversal support functions ... incomplete-documentation
197882 
197883  These functions have been made public as part of the design, but they are suggested for internal use
197884  or by particularly knowledgable users for specialized tools or applications.
197885  */
197886  /* */
197887 
197888  // DQ (11/26/2005): Support for visitor pattern mechanims
197889  // (inferior to ROSE traversal mechanism, experimental).
197893 
197894  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
197896  virtual void accept (ROSE_VisitorPattern & visitor) override;
197897 
197898  // DQ (12/26/2005): Support for traversal based on the memory pool
197901  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
197902 
197905  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
197906 
197907  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
197908  // This traversal helps support internal tools that call static member functions.
197909  // note: this function operates on the memory pools.
197912  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
197913  /* */
197914 
197915 
197916  public:
197917  /* name Memory Allocation Functions
197918  \brief Memory allocations functions ... incomplete-documentation
197919 
197920  These functions have been made public as part of the design, but they are suggested for internal use
197921  or by particularly knowledgable users for specialized tools or applications.
197922  */
197923  /* */
197924 
197935  virtual bool isInMemoryPool() override;
197936 
197947  virtual void checkDataMemberPointersIfInMemoryPool() override;
197948 
197949  // DQ (4/30/2006): Modified to be a const function.
197964  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
197965 
197975  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
197976 
197988  virtual long getChildIndex( SgNode* childNode ) const override;
197989 
197990  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
197991  // comment here (changed to be a C style comment and not be a doxygen comment).
197992  /* \brief Constructor for use by AST File I/O Mechanism
197993 
197994  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
197995  which obtained via fast binary file I/O from disk.
197996  */
197997  // SgOmpAtomicStatement( SgOmpAtomicStatementStorageClass& source );
197998 
197999 
198000 
198001 
198002 
198003  // JH (10/24/2005): methods added to support the ast file IO
198004  private:
198005 
198006  /* name AST Memory Allocation Support Functions
198007  \brief Memory allocations support....
198008 
198009  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
198010  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
198011  and support the AST File I/O Mechanism.
198012  */
198013  /* */
198014 
198015  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
198016  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
198017  that I use the same type everywhere, if any changes are made. THe second one declares the type
198018  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
198019  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
198020  a correspinding one in the AST_FILE_IO class!
198021  */
198022  // DQ (9/2/2015): This typedef is no longer used, we can't define the
198023  // comment here (changed to be a C style comment and not be a doxygen comment).
198024  /* \brief Typedef used for low level memory access.
198025  */
198026  // typedef unsigned char* TestType;
198027 
198028  // DQ (9/2/2015): This typedef is no longer used, we can't define the
198029  // comment here (changed to be a C style comment and not be a doxygen comment).
198030  /* \brief Typedef used to hold memory addresses as values.
198031  */
198032  // typedef unsigned long AddressType;
198033 
198034 
198035 
198036  // necessary, to have direct access to the p_freepointer and the private methods !
198038  friend class AST_FILE_IO;
198039 
198041  friend class SgOmpAtomicStatementStorageClass;
198042 
198044  friend class AstSpecificDataManagingClass;
198045 
198047  friend class AstSpecificDataManagingClassStorageClass;
198048 
198049  public:
198051  SgOmpAtomicStatement( const SgOmpAtomicStatementStorageClass& source );
198052 
198053  // private: // JJW hack
198054  /*
198055  name AST Memory Allocation Support Variables
198056  Memory allocations support variables
198057 
198058  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
198059  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
198060  and support the AST File I/O Mechanism.
198061  */
198062  /* */
198063 
198064  public:
198065 
198066  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
198067  // to current node (so that it will work cleanly with build functions to specify patterns).
198068  // virtual SgNode* addRegExpAttribute();
198075 
198076 // *** COMMON CODE SECTION ENDS HERE ***
198077 
198078 
198079 // End of memberFunctionString
198080 // Start of memberFunctionString
198081 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
198082 
198083  // the generated cast function
198084  // friend ROSE_DLL_API SgOmpAtomicStatement* isSgOmpAtomicStatement ( SgNode* s );
198085 
198087 
198088 
198089 // End of memberFunctionString
198090 // Start of memberFunctionString
198091 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
198092 
198093  void post_construction_initialization() override;
198094 
198095 
198096 // End of memberFunctionString
198097 
198098 
198099  public:
198100  virtual ~SgOmpAtomicStatement();
198101 
198102 
198103  public:
198104  SgOmpAtomicStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
198106 
198107  protected:
198108 
198109 
198110 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
198111 
198112 
198113  };
198114 #endif
198115 
198116 // postdeclarations for SgOmpAtomicStatement
198117 
198118 /* #line 198119 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
198119 
198120 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
198121 
198122 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
198123 
198124 
198125 /* #line 198126 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
198126 
198127 
198128 
198129 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
198130 
198131 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
198132 // This code is automatically generated for each
198133 // terminal and non-terminal within the defined
198134 // grammar. There is a simple way to change the
198135 // code to fix bugs etc. See the ROSE README file
198136 // for directions.
198137 
198138 // tps: (02/22/2010): Adding DLL export requirements
198139 #include "rosedll.h"
198140 
198141 // predeclarations for SgOmpScanStatement
198142 
198143 /* #line 198144 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
198144 
198145 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
198146 
198147 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
198148 
198149 #if 1
198150 // Class Definition for SgOmpScanStatement
198152  {
198153  public:
198154 
198155 
198156 /* #line 198157 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
198157 
198158  virtual SgNode* copy ( SgCopyHelp& help) const override;
198159 // Start of memberFunctionString
198160 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
198161 
198162 // *** COMMON CODE SECTION BEGINS HERE ***
198163 
198164  public:
198165 
198166  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
198167  // and not required which is required to match the other aspects of the copy mechanism code generation.
198168  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
198169  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
198170  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
198171  // virtual SgNode* copy ( const SgCopyHelp & help) const;
198172 
198174  virtual std::string class_name() const override;
198175 
198177  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
198178 
198180  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
198181  // static const VariantT static_variant = V_SgOmpScanStatement;
198182  enum { static_variant = V_SgOmpScanStatement };
198183 
198184  /* the generated cast function */
198186  ROSE_DLL_API friend SgOmpScanStatement* isSgOmpScanStatement( SgNode * s );
198187 
198189  ROSE_DLL_API friend const SgOmpScanStatement* isSgOmpScanStatement( const SgNode * s );
198190 
198191  // ******************************************
198192  // * Memory Pool / New / Delete
198193  // ******************************************
198194 
198195  public:
198197  static const unsigned pool_size; //
198199  static std::vector<unsigned char *> pools; //
198201  static SgOmpScanStatement * next_node; //
198202 
198204  static unsigned long initializeStorageClassArray(SgOmpScanStatementStorageClass *); //
198205 
198207  static void clearMemoryPool(); //
198208  static void deleteMemoryPool(); //
198209 
198211  static void extendMemoryPoolForFileIO(); //
198212 
198214  static SgOmpScanStatement * getPointerFromGlobalIndex(unsigned long); //
198216  static SgOmpScanStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
198217 
198219  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
198221  static void resetValidFreepointers(); //
198223  static unsigned long getNumberOfLastValidPointer(); //
198224 
198225 
198226 #if defined(INLINE_FUNCTIONS)
198227 
198228  inline void *operator new (size_t size);
198229 #else
198230 
198231  void *operator new (size_t size);
198232 #endif
198233 
198234  void operator delete (void* pointer, size_t size);
198235 
198236  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
198237  void operator delete (void* pointer)
198238  {
198239  // This is the generated delete operator...
198240  SgOmpScanStatement::operator delete (pointer,sizeof(SgOmpScanStatement));
198241  }
198242 
198244  static size_t numberOfNodes();
198245 
198247  static size_t memoryUsage();
198248 
198249  // End of scope which started in IR nodes specific code
198250  /* */
198251 
198252  /* name Internal Functions
198253  \brief Internal functions ... incomplete-documentation
198254 
198255  These functions have been made public as part of the design, but they are suggested for internal use
198256  or by particularly knowledgeable users for specialized tools or applications.
198257 
198258  \internal We could not make these private because they are required by user for special purposes. And
198259  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
198260 
198261  */
198262 
198263  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
198264  // overridden in every class by *generated* implementation
198266  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
198267  // MS: 06/28/02 container of names of variables or container indices
198268  // used used in the traversal to access AST successor nodes
198269  // overridden in every class by *generated* implementation
198272  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
198273 
198274  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
198275  // than all the vector copies. The implementation for these functions is generated for each class.
198277  virtual size_t get_numberOfTraversalSuccessors() override;
198279  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
198281  virtual size_t get_childIndex(SgNode *child) override;
198282 
198283 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
198284  // MS: 08/16/2002 method for generating RTI information
198286  virtual RTIReturnType roseRTI() override;
198287 #endif
198288  /* */
198289 
198290 
198291 
198292  /* name Deprecated Functions
198293  \brief Deprecated functions ... incomplete-documentation
198294 
198295  These functions have been deprecated from use.
198296  */
198297  /* */
198298 
198300  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
198301 
198302  // JJW (10/16/2008): Changed to a single function in Node.code, and put
198303  // getVariant() in #if 0 block to prevent confusing Doxygen
198304 #if 0
198305 
198306  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
198308  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
198309 #endif
198310  /* */
198311 
198312 
198313 
198314 
198315  public:
198316  /* name Traversal Support Functions
198317  \brief Traversal support functions ... incomplete-documentation
198318 
198319  These functions have been made public as part of the design, but they are suggested for internal use
198320  or by particularly knowledgable users for specialized tools or applications.
198321  */
198322  /* */
198323 
198324  // DQ (11/26/2005): Support for visitor pattern mechanims
198325  // (inferior to ROSE traversal mechanism, experimental).
198329 
198330  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
198332  virtual void accept (ROSE_VisitorPattern & visitor) override;
198333 
198334  // DQ (12/26/2005): Support for traversal based on the memory pool
198337  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
198338 
198341  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
198342 
198343  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
198344  // This traversal helps support internal tools that call static member functions.
198345  // note: this function operates on the memory pools.
198348  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
198349  /* */
198350 
198351 
198352  public:
198353  /* name Memory Allocation Functions
198354  \brief Memory allocations functions ... incomplete-documentation
198355 
198356  These functions have been made public as part of the design, but they are suggested for internal use
198357  or by particularly knowledgable users for specialized tools or applications.
198358  */
198359  /* */
198360 
198371  virtual bool isInMemoryPool() override;
198372 
198383  virtual void checkDataMemberPointersIfInMemoryPool() override;
198384 
198385  // DQ (4/30/2006): Modified to be a const function.
198400  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
198401 
198411  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
198412 
198424  virtual long getChildIndex( SgNode* childNode ) const override;
198425 
198426  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
198427  // comment here (changed to be a C style comment and not be a doxygen comment).
198428  /* \brief Constructor for use by AST File I/O Mechanism
198429 
198430  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
198431  which obtained via fast binary file I/O from disk.
198432  */
198433  // SgOmpScanStatement( SgOmpScanStatementStorageClass& source );
198434 
198435 
198436 
198437 
198438 
198439  // JH (10/24/2005): methods added to support the ast file IO
198440  private:
198441 
198442  /* name AST Memory Allocation Support Functions
198443  \brief Memory allocations support....
198444 
198445  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
198446  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
198447  and support the AST File I/O Mechanism.
198448  */
198449  /* */
198450 
198451  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
198452  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
198453  that I use the same type everywhere, if any changes are made. THe second one declares the type
198454  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
198455  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
198456  a correspinding one in the AST_FILE_IO class!
198457  */
198458  // DQ (9/2/2015): This typedef is no longer used, we can't define the
198459  // comment here (changed to be a C style comment and not be a doxygen comment).
198460  /* \brief Typedef used for low level memory access.
198461  */
198462  // typedef unsigned char* TestType;
198463 
198464  // DQ (9/2/2015): This typedef is no longer used, we can't define the
198465  // comment here (changed to be a C style comment and not be a doxygen comment).
198466  /* \brief Typedef used to hold memory addresses as values.
198467  */
198468  // typedef unsigned long AddressType;
198469 
198470 
198471 
198472  // necessary, to have direct access to the p_freepointer and the private methods !
198474  friend class AST_FILE_IO;
198475 
198477  friend class SgOmpScanStatementStorageClass;
198478 
198480  friend class AstSpecificDataManagingClass;
198481 
198483  friend class AstSpecificDataManagingClassStorageClass;
198484 
198485  public:
198487  SgOmpScanStatement( const SgOmpScanStatementStorageClass& source );
198488 
198489  // private: // JJW hack
198490  /*
198491  name AST Memory Allocation Support Variables
198492  Memory allocations support variables
198493 
198494  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
198495  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
198496  and support the AST File I/O Mechanism.
198497  */
198498  /* */
198499 
198500  public:
198501 
198502  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
198503  // to current node (so that it will work cleanly with build functions to specify patterns).
198504  // virtual SgNode* addRegExpAttribute();
198511 
198512 // *** COMMON CODE SECTION ENDS HERE ***
198513 
198514 
198515 // End of memberFunctionString
198516 // Start of memberFunctionString
198517 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
198518 
198519  // the generated cast function
198520  // friend ROSE_DLL_API SgOmpScanStatement* isSgOmpScanStatement ( SgNode* s );
198521 
198523 
198524 
198525 // End of memberFunctionString
198526 // Start of memberFunctionString
198527 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
198528 
198529  void post_construction_initialization() override;
198530 
198531 
198532 // End of memberFunctionString
198533 
198534 
198535  public:
198536  virtual ~SgOmpScanStatement();
198537 
198538 
198539  public:
198540  SgOmpScanStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
198542 
198543  protected:
198544 
198545 
198546 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
198547 
198548 
198549  };
198550 #endif
198551 
198552 // postdeclarations for SgOmpScanStatement
198553 
198554 /* #line 198555 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
198555 
198556 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
198557 
198558 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
198559 
198560 
198561 /* #line 198562 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
198562 
198563 
198564 
198565 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
198566 
198567 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
198568 // This code is automatically generated for each
198569 // terminal and non-terminal within the defined
198570 // grammar. There is a simple way to change the
198571 // code to fix bugs etc. See the ROSE README file
198572 // for directions.
198573 
198574 // tps: (02/22/2010): Adding DLL export requirements
198575 #include "rosedll.h"
198576 
198577 // predeclarations for SgOmpMetadirectiveStatement
198578 
198579 /* #line 198580 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
198580 
198581 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
198582 
198583 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
198584 
198585 #if 1
198586 // Class Definition for SgOmpMetadirectiveStatement
198588  {
198589  public:
198590 
198591 
198592 /* #line 198593 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
198593 
198594  virtual SgNode* copy ( SgCopyHelp& help) const override;
198595 // Start of memberFunctionString
198596 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
198597 
198598 // *** COMMON CODE SECTION BEGINS HERE ***
198599 
198600  public:
198601 
198602  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
198603  // and not required which is required to match the other aspects of the copy mechanism code generation.
198604  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
198605  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
198606  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
198607  // virtual SgNode* copy ( const SgCopyHelp & help) const;
198608 
198610  virtual std::string class_name() const override;
198611 
198613  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
198614 
198616  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
198617  // static const VariantT static_variant = V_SgOmpMetadirectiveStatement;
198618  enum { static_variant = V_SgOmpMetadirectiveStatement };
198619 
198620  /* the generated cast function */
198622  ROSE_DLL_API friend SgOmpMetadirectiveStatement* isSgOmpMetadirectiveStatement( SgNode * s );
198623 
198625  ROSE_DLL_API friend const SgOmpMetadirectiveStatement* isSgOmpMetadirectiveStatement( const SgNode * s );
198626 
198627  // ******************************************
198628  // * Memory Pool / New / Delete
198629  // ******************************************
198630 
198631  public:
198633  static const unsigned pool_size; //
198635  static std::vector<unsigned char *> pools; //
198637  static SgOmpMetadirectiveStatement * next_node; //
198638 
198640  static unsigned long initializeStorageClassArray(SgOmpMetadirectiveStatementStorageClass *); //
198641 
198643  static void clearMemoryPool(); //
198644  static void deleteMemoryPool(); //
198645 
198647  static void extendMemoryPoolForFileIO(); //
198648 
198650  static SgOmpMetadirectiveStatement * getPointerFromGlobalIndex(unsigned long); //
198652  static SgOmpMetadirectiveStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
198653 
198655  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
198657  static void resetValidFreepointers(); //
198659  static unsigned long getNumberOfLastValidPointer(); //
198660 
198661 
198662 #if defined(INLINE_FUNCTIONS)
198663 
198664  inline void *operator new (size_t size);
198665 #else
198666 
198667  void *operator new (size_t size);
198668 #endif
198669 
198670  void operator delete (void* pointer, size_t size);
198671 
198672  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
198673  void operator delete (void* pointer)
198674  {
198675  // This is the generated delete operator...
198676  SgOmpMetadirectiveStatement::operator delete (pointer,sizeof(SgOmpMetadirectiveStatement));
198677  }
198678 
198680  static size_t numberOfNodes();
198681 
198683  static size_t memoryUsage();
198684 
198685  // End of scope which started in IR nodes specific code
198686  /* */
198687 
198688  /* name Internal Functions
198689  \brief Internal functions ... incomplete-documentation
198690 
198691  These functions have been made public as part of the design, but they are suggested for internal use
198692  or by particularly knowledgeable users for specialized tools or applications.
198693 
198694  \internal We could not make these private because they are required by user for special purposes. And
198695  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
198696 
198697  */
198698 
198699  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
198700  // overridden in every class by *generated* implementation
198702  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
198703  // MS: 06/28/02 container of names of variables or container indices
198704  // used used in the traversal to access AST successor nodes
198705  // overridden in every class by *generated* implementation
198708  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
198709 
198710  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
198711  // than all the vector copies. The implementation for these functions is generated for each class.
198713  virtual size_t get_numberOfTraversalSuccessors() override;
198715  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
198717  virtual size_t get_childIndex(SgNode *child) override;
198718 
198719 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
198720  // MS: 08/16/2002 method for generating RTI information
198722  virtual RTIReturnType roseRTI() override;
198723 #endif
198724  /* */
198725 
198726 
198727 
198728  /* name Deprecated Functions
198729  \brief Deprecated functions ... incomplete-documentation
198730 
198731  These functions have been deprecated from use.
198732  */
198733  /* */
198734 
198736  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
198737 
198738  // JJW (10/16/2008): Changed to a single function in Node.code, and put
198739  // getVariant() in #if 0 block to prevent confusing Doxygen
198740 #if 0
198741 
198742  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
198744  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
198745 #endif
198746  /* */
198747 
198748 
198749 
198750 
198751  public:
198752  /* name Traversal Support Functions
198753  \brief Traversal support functions ... incomplete-documentation
198754 
198755  These functions have been made public as part of the design, but they are suggested for internal use
198756  or by particularly knowledgable users for specialized tools or applications.
198757  */
198758  /* */
198759 
198760  // DQ (11/26/2005): Support for visitor pattern mechanims
198761  // (inferior to ROSE traversal mechanism, experimental).
198765 
198766  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
198768  virtual void accept (ROSE_VisitorPattern & visitor) override;
198769 
198770  // DQ (12/26/2005): Support for traversal based on the memory pool
198773  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
198774 
198777  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
198778 
198779  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
198780  // This traversal helps support internal tools that call static member functions.
198781  // note: this function operates on the memory pools.
198784  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
198785  /* */
198786 
198787 
198788  public:
198789  /* name Memory Allocation Functions
198790  \brief Memory allocations functions ... incomplete-documentation
198791 
198792  These functions have been made public as part of the design, but they are suggested for internal use
198793  or by particularly knowledgable users for specialized tools or applications.
198794  */
198795  /* */
198796 
198807  virtual bool isInMemoryPool() override;
198808 
198819  virtual void checkDataMemberPointersIfInMemoryPool() override;
198820 
198821  // DQ (4/30/2006): Modified to be a const function.
198836  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
198837 
198847  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
198848 
198860  virtual long getChildIndex( SgNode* childNode ) const override;
198861 
198862  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
198863  // comment here (changed to be a C style comment and not be a doxygen comment).
198864  /* \brief Constructor for use by AST File I/O Mechanism
198865 
198866  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
198867  which obtained via fast binary file I/O from disk.
198868  */
198869  // SgOmpMetadirectiveStatement( SgOmpMetadirectiveStatementStorageClass& source );
198870 
198871 
198872 
198873 
198874 
198875  // JH (10/24/2005): methods added to support the ast file IO
198876  private:
198877 
198878  /* name AST Memory Allocation Support Functions
198879  \brief Memory allocations support....
198880 
198881  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
198882  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
198883  and support the AST File I/O Mechanism.
198884  */
198885  /* */
198886 
198887  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
198888  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
198889  that I use the same type everywhere, if any changes are made. THe second one declares the type
198890  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
198891  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
198892  a correspinding one in the AST_FILE_IO class!
198893  */
198894  // DQ (9/2/2015): This typedef is no longer used, we can't define the
198895  // comment here (changed to be a C style comment and not be a doxygen comment).
198896  /* \brief Typedef used for low level memory access.
198897  */
198898  // typedef unsigned char* TestType;
198899 
198900  // DQ (9/2/2015): This typedef is no longer used, we can't define the
198901  // comment here (changed to be a C style comment and not be a doxygen comment).
198902  /* \brief Typedef used to hold memory addresses as values.
198903  */
198904  // typedef unsigned long AddressType;
198905 
198906 
198907 
198908  // necessary, to have direct access to the p_freepointer and the private methods !
198910  friend class AST_FILE_IO;
198911 
198913  friend class SgOmpMetadirectiveStatementStorageClass;
198914 
198916  friend class AstSpecificDataManagingClass;
198917 
198919  friend class AstSpecificDataManagingClassStorageClass;
198920 
198921  public:
198923  SgOmpMetadirectiveStatement( const SgOmpMetadirectiveStatementStorageClass& source );
198924 
198925  // private: // JJW hack
198926  /*
198927  name AST Memory Allocation Support Variables
198928  Memory allocations support variables
198929 
198930  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
198931  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
198932  and support the AST File I/O Mechanism.
198933  */
198934  /* */
198935 
198936  public:
198937 
198938  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
198939  // to current node (so that it will work cleanly with build functions to specify patterns).
198940  // virtual SgNode* addRegExpAttribute();
198947 
198948 // *** COMMON CODE SECTION ENDS HERE ***
198949 
198950 
198951 // End of memberFunctionString
198952 // Start of memberFunctionString
198953 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
198954 
198955  // the generated cast function
198956  // friend ROSE_DLL_API SgOmpMetadirectiveStatement* isSgOmpMetadirectiveStatement ( SgNode* s );
198957 
198959 
198960 
198961 // End of memberFunctionString
198962 // Start of memberFunctionString
198963 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
198964 
198965  void post_construction_initialization() override;
198966 
198967 
198968 // End of memberFunctionString
198969 
198970 
198971  public:
198972  virtual ~SgOmpMetadirectiveStatement();
198973 
198974 
198975  public:
198976  SgOmpMetadirectiveStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
198978 
198979  protected:
198980 
198981 
198982 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
198983 
198984 
198985  };
198986 #endif
198987 
198988 // postdeclarations for SgOmpMetadirectiveStatement
198989 
198990 /* #line 198991 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
198991 
198992 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
198993 
198994 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
198995 
198996 
198997 /* #line 198998 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
198998 
198999 
199000 
199001 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
199002 
199003 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
199004 // This code is automatically generated for each
199005 // terminal and non-terminal within the defined
199006 // grammar. There is a simple way to change the
199007 // code to fix bugs etc. See the ROSE README file
199008 // for directions.
199009 
199010 // tps: (02/22/2010): Adding DLL export requirements
199011 #include "rosedll.h"
199012 
199013 // predeclarations for SgOmpLoopStatement
199014 
199015 /* #line 199016 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
199016 
199017 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
199018 
199019 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
199020 
199021 #if 1
199022 // Class Definition for SgOmpLoopStatement
199024  {
199025  public:
199026 
199027 
199028 /* #line 199029 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
199029 
199030  virtual SgNode* copy ( SgCopyHelp& help) const override;
199031 // Start of memberFunctionString
199032 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
199033 
199034 // *** COMMON CODE SECTION BEGINS HERE ***
199035 
199036  public:
199037 
199038  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
199039  // and not required which is required to match the other aspects of the copy mechanism code generation.
199040  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
199041  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
199042  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
199043  // virtual SgNode* copy ( const SgCopyHelp & help) const;
199044 
199046  virtual std::string class_name() const override;
199047 
199049  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
199050 
199052  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
199053  // static const VariantT static_variant = V_SgOmpLoopStatement;
199054  enum { static_variant = V_SgOmpLoopStatement };
199055 
199056  /* the generated cast function */
199058  ROSE_DLL_API friend SgOmpLoopStatement* isSgOmpLoopStatement( SgNode * s );
199059 
199061  ROSE_DLL_API friend const SgOmpLoopStatement* isSgOmpLoopStatement( const SgNode * s );
199062 
199063  // ******************************************
199064  // * Memory Pool / New / Delete
199065  // ******************************************
199066 
199067  public:
199069  static const unsigned pool_size; //
199071  static std::vector<unsigned char *> pools; //
199073  static SgOmpLoopStatement * next_node; //
199074 
199076  static unsigned long initializeStorageClassArray(SgOmpLoopStatementStorageClass *); //
199077 
199079  static void clearMemoryPool(); //
199080  static void deleteMemoryPool(); //
199081 
199083  static void extendMemoryPoolForFileIO(); //
199084 
199086  static SgOmpLoopStatement * getPointerFromGlobalIndex(unsigned long); //
199088  static SgOmpLoopStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
199089 
199091  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
199093  static void resetValidFreepointers(); //
199095  static unsigned long getNumberOfLastValidPointer(); //
199096 
199097 
199098 #if defined(INLINE_FUNCTIONS)
199099 
199100  inline void *operator new (size_t size);
199101 #else
199102 
199103  void *operator new (size_t size);
199104 #endif
199105 
199106  void operator delete (void* pointer, size_t size);
199107 
199108  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
199109  void operator delete (void* pointer)
199110  {
199111  // This is the generated delete operator...
199112  SgOmpLoopStatement::operator delete (pointer,sizeof(SgOmpLoopStatement));
199113  }
199114 
199116  static size_t numberOfNodes();
199117 
199119  static size_t memoryUsage();
199120 
199121  // End of scope which started in IR nodes specific code
199122  /* */
199123 
199124  /* name Internal Functions
199125  \brief Internal functions ... incomplete-documentation
199126 
199127  These functions have been made public as part of the design, but they are suggested for internal use
199128  or by particularly knowledgeable users for specialized tools or applications.
199129 
199130  \internal We could not make these private because they are required by user for special purposes. And
199131  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
199132 
199133  */
199134 
199135  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
199136  // overridden in every class by *generated* implementation
199138  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
199139  // MS: 06/28/02 container of names of variables or container indices
199140  // used used in the traversal to access AST successor nodes
199141  // overridden in every class by *generated* implementation
199144  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
199145 
199146  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
199147  // than all the vector copies. The implementation for these functions is generated for each class.
199149  virtual size_t get_numberOfTraversalSuccessors() override;
199151  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
199153  virtual size_t get_childIndex(SgNode *child) override;
199154 
199155 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
199156  // MS: 08/16/2002 method for generating RTI information
199158  virtual RTIReturnType roseRTI() override;
199159 #endif
199160  /* */
199161 
199162 
199163 
199164  /* name Deprecated Functions
199165  \brief Deprecated functions ... incomplete-documentation
199166 
199167  These functions have been deprecated from use.
199168  */
199169  /* */
199170 
199172  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
199173 
199174  // JJW (10/16/2008): Changed to a single function in Node.code, and put
199175  // getVariant() in #if 0 block to prevent confusing Doxygen
199176 #if 0
199177 
199178  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
199180  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
199181 #endif
199182  /* */
199183 
199184 
199185 
199186 
199187  public:
199188  /* name Traversal Support Functions
199189  \brief Traversal support functions ... incomplete-documentation
199190 
199191  These functions have been made public as part of the design, but they are suggested for internal use
199192  or by particularly knowledgable users for specialized tools or applications.
199193  */
199194  /* */
199195 
199196  // DQ (11/26/2005): Support for visitor pattern mechanims
199197  // (inferior to ROSE traversal mechanism, experimental).
199201 
199202  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
199204  virtual void accept (ROSE_VisitorPattern & visitor) override;
199205 
199206  // DQ (12/26/2005): Support for traversal based on the memory pool
199209  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
199210 
199213  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
199214 
199215  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
199216  // This traversal helps support internal tools that call static member functions.
199217  // note: this function operates on the memory pools.
199220  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
199221  /* */
199222 
199223 
199224  public:
199225  /* name Memory Allocation Functions
199226  \brief Memory allocations functions ... incomplete-documentation
199227 
199228  These functions have been made public as part of the design, but they are suggested for internal use
199229  or by particularly knowledgable users for specialized tools or applications.
199230  */
199231  /* */
199232 
199243  virtual bool isInMemoryPool() override;
199244 
199255  virtual void checkDataMemberPointersIfInMemoryPool() override;
199256 
199257  // DQ (4/30/2006): Modified to be a const function.
199272  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
199273 
199283  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
199284 
199296  virtual long getChildIndex( SgNode* childNode ) const override;
199297 
199298  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
199299  // comment here (changed to be a C style comment and not be a doxygen comment).
199300  /* \brief Constructor for use by AST File I/O Mechanism
199301 
199302  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
199303  which obtained via fast binary file I/O from disk.
199304  */
199305  // SgOmpLoopStatement( SgOmpLoopStatementStorageClass& source );
199306 
199307 
199308 
199309 
199310 
199311  // JH (10/24/2005): methods added to support the ast file IO
199312  private:
199313 
199314  /* name AST Memory Allocation Support Functions
199315  \brief Memory allocations support....
199316 
199317  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
199318  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
199319  and support the AST File I/O Mechanism.
199320  */
199321  /* */
199322 
199323  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
199324  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
199325  that I use the same type everywhere, if any changes are made. THe second one declares the type
199326  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
199327  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
199328  a correspinding one in the AST_FILE_IO class!
199329  */
199330  // DQ (9/2/2015): This typedef is no longer used, we can't define the
199331  // comment here (changed to be a C style comment and not be a doxygen comment).
199332  /* \brief Typedef used for low level memory access.
199333  */
199334  // typedef unsigned char* TestType;
199335 
199336  // DQ (9/2/2015): This typedef is no longer used, we can't define the
199337  // comment here (changed to be a C style comment and not be a doxygen comment).
199338  /* \brief Typedef used to hold memory addresses as values.
199339  */
199340  // typedef unsigned long AddressType;
199341 
199342 
199343 
199344  // necessary, to have direct access to the p_freepointer and the private methods !
199346  friend class AST_FILE_IO;
199347 
199349  friend class SgOmpLoopStatementStorageClass;
199350 
199352  friend class AstSpecificDataManagingClass;
199353 
199355  friend class AstSpecificDataManagingClassStorageClass;
199356 
199357  public:
199359  SgOmpLoopStatement( const SgOmpLoopStatementStorageClass& source );
199360 
199361  // private: // JJW hack
199362  /*
199363  name AST Memory Allocation Support Variables
199364  Memory allocations support variables
199365 
199366  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
199367  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
199368  and support the AST File I/O Mechanism.
199369  */
199370  /* */
199371 
199372  public:
199373 
199374  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
199375  // to current node (so that it will work cleanly with build functions to specify patterns).
199376  // virtual SgNode* addRegExpAttribute();
199383 
199384 // *** COMMON CODE SECTION ENDS HERE ***
199385 
199386 
199387 // End of memberFunctionString
199388 // Start of memberFunctionString
199389 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
199390 
199391  // the generated cast function
199392  // friend ROSE_DLL_API SgOmpLoopStatement* isSgOmpLoopStatement ( SgNode* s );
199393 
199395 
199396 
199397 // End of memberFunctionString
199398 // Start of memberFunctionString
199399 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
199400 
199401  void post_construction_initialization() override;
199402 
199403 
199404 // End of memberFunctionString
199405 
199406 
199407  public:
199408  virtual ~SgOmpLoopStatement();
199409 
199410 
199411  public:
199412  SgOmpLoopStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
199414 
199415  protected:
199416 
199417 
199418 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
199419 
199420 
199421  };
199422 #endif
199423 
199424 // postdeclarations for SgOmpLoopStatement
199425 
199426 /* #line 199427 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
199427 
199428 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
199429 
199430 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
199431 
199432 
199433 /* #line 199434 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
199434 
199435 
199436 
199437 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
199438 
199439 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
199440 // This code is automatically generated for each
199441 // terminal and non-terminal within the defined
199442 // grammar. There is a simple way to change the
199443 // code to fix bugs etc. See the ROSE README file
199444 // for directions.
199445 
199446 // tps: (02/22/2010): Adding DLL export requirements
199447 #include "rosedll.h"
199448 
199449 // predeclarations for SgOmpOrderedStatement
199450 
199451 /* #line 199452 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
199452 
199453 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
199454 
199455 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
199456 
199457 #if 1
199458 // Class Definition for SgOmpOrderedStatement
199460  {
199461  public:
199462 
199463 
199464 /* #line 199465 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
199465 
199466  virtual SgNode* copy ( SgCopyHelp& help) const override;
199467 // Start of memberFunctionString
199468 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
199469 
199470 // *** COMMON CODE SECTION BEGINS HERE ***
199471 
199472  public:
199473 
199474  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
199475  // and not required which is required to match the other aspects of the copy mechanism code generation.
199476  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
199477  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
199478  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
199479  // virtual SgNode* copy ( const SgCopyHelp & help) const;
199480 
199482  virtual std::string class_name() const override;
199483 
199485  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
199486 
199488  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
199489  // static const VariantT static_variant = V_SgOmpOrderedStatement;
199490  enum { static_variant = V_SgOmpOrderedStatement };
199491 
199492  /* the generated cast function */
199494  ROSE_DLL_API friend SgOmpOrderedStatement* isSgOmpOrderedStatement( SgNode * s );
199495 
199497  ROSE_DLL_API friend const SgOmpOrderedStatement* isSgOmpOrderedStatement( const SgNode * s );
199498 
199499  // ******************************************
199500  // * Memory Pool / New / Delete
199501  // ******************************************
199502 
199503  public:
199505  static const unsigned pool_size; //
199507  static std::vector<unsigned char *> pools; //
199509  static SgOmpOrderedStatement * next_node; //
199510 
199512  static unsigned long initializeStorageClassArray(SgOmpOrderedStatementStorageClass *); //
199513 
199515  static void clearMemoryPool(); //
199516  static void deleteMemoryPool(); //
199517 
199519  static void extendMemoryPoolForFileIO(); //
199520 
199522  static SgOmpOrderedStatement * getPointerFromGlobalIndex(unsigned long); //
199524  static SgOmpOrderedStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
199525 
199527  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
199529  static void resetValidFreepointers(); //
199531  static unsigned long getNumberOfLastValidPointer(); //
199532 
199533 
199534 #if defined(INLINE_FUNCTIONS)
199535 
199536  inline void *operator new (size_t size);
199537 #else
199538 
199539  void *operator new (size_t size);
199540 #endif
199541 
199542  void operator delete (void* pointer, size_t size);
199543 
199544  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
199545  void operator delete (void* pointer)
199546  {
199547  // This is the generated delete operator...
199548  SgOmpOrderedStatement::operator delete (pointer,sizeof(SgOmpOrderedStatement));
199549  }
199550 
199552  static size_t numberOfNodes();
199553 
199555  static size_t memoryUsage();
199556 
199557  // End of scope which started in IR nodes specific code
199558  /* */
199559 
199560  /* name Internal Functions
199561  \brief Internal functions ... incomplete-documentation
199562 
199563  These functions have been made public as part of the design, but they are suggested for internal use
199564  or by particularly knowledgeable users for specialized tools or applications.
199565 
199566  \internal We could not make these private because they are required by user for special purposes. And
199567  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
199568 
199569  */
199570 
199571  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
199572  // overridden in every class by *generated* implementation
199574  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
199575  // MS: 06/28/02 container of names of variables or container indices
199576  // used used in the traversal to access AST successor nodes
199577  // overridden in every class by *generated* implementation
199580  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
199581 
199582  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
199583  // than all the vector copies. The implementation for these functions is generated for each class.
199585  virtual size_t get_numberOfTraversalSuccessors() override;
199587  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
199589  virtual size_t get_childIndex(SgNode *child) override;
199590 
199591 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
199592  // MS: 08/16/2002 method for generating RTI information
199594  virtual RTIReturnType roseRTI() override;
199595 #endif
199596  /* */
199597 
199598 
199599 
199600  /* name Deprecated Functions
199601  \brief Deprecated functions ... incomplete-documentation
199602 
199603  These functions have been deprecated from use.
199604  */
199605  /* */
199606 
199608  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
199609 
199610  // JJW (10/16/2008): Changed to a single function in Node.code, and put
199611  // getVariant() in #if 0 block to prevent confusing Doxygen
199612 #if 0
199613 
199614  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
199616  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
199617 #endif
199618  /* */
199619 
199620 
199621 
199622 
199623  public:
199624  /* name Traversal Support Functions
199625  \brief Traversal support functions ... incomplete-documentation
199626 
199627  These functions have been made public as part of the design, but they are suggested for internal use
199628  or by particularly knowledgable users for specialized tools or applications.
199629  */
199630  /* */
199631 
199632  // DQ (11/26/2005): Support for visitor pattern mechanims
199633  // (inferior to ROSE traversal mechanism, experimental).
199637 
199638  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
199640  virtual void accept (ROSE_VisitorPattern & visitor) override;
199641 
199642  // DQ (12/26/2005): Support for traversal based on the memory pool
199645  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
199646 
199649  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
199650 
199651  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
199652  // This traversal helps support internal tools that call static member functions.
199653  // note: this function operates on the memory pools.
199656  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
199657  /* */
199658 
199659 
199660  public:
199661  /* name Memory Allocation Functions
199662  \brief Memory allocations functions ... incomplete-documentation
199663 
199664  These functions have been made public as part of the design, but they are suggested for internal use
199665  or by particularly knowledgable users for specialized tools or applications.
199666  */
199667  /* */
199668 
199679  virtual bool isInMemoryPool() override;
199680 
199691  virtual void checkDataMemberPointersIfInMemoryPool() override;
199692 
199693  // DQ (4/30/2006): Modified to be a const function.
199708  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
199709 
199719  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
199720 
199732  virtual long getChildIndex( SgNode* childNode ) const override;
199733 
199734  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
199735  // comment here (changed to be a C style comment and not be a doxygen comment).
199736  /* \brief Constructor for use by AST File I/O Mechanism
199737 
199738  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
199739  which obtained via fast binary file I/O from disk.
199740  */
199741  // SgOmpOrderedStatement( SgOmpOrderedStatementStorageClass& source );
199742 
199743 
199744 
199745 
199746 
199747  // JH (10/24/2005): methods added to support the ast file IO
199748  private:
199749 
199750  /* name AST Memory Allocation Support Functions
199751  \brief Memory allocations support....
199752 
199753  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
199754  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
199755  and support the AST File I/O Mechanism.
199756  */
199757  /* */
199758 
199759  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
199760  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
199761  that I use the same type everywhere, if any changes are made. THe second one declares the type
199762  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
199763  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
199764  a correspinding one in the AST_FILE_IO class!
199765  */
199766  // DQ (9/2/2015): This typedef is no longer used, we can't define the
199767  // comment here (changed to be a C style comment and not be a doxygen comment).
199768  /* \brief Typedef used for low level memory access.
199769  */
199770  // typedef unsigned char* TestType;
199771 
199772  // DQ (9/2/2015): This typedef is no longer used, we can't define the
199773  // comment here (changed to be a C style comment and not be a doxygen comment).
199774  /* \brief Typedef used to hold memory addresses as values.
199775  */
199776  // typedef unsigned long AddressType;
199777 
199778 
199779 
199780  // necessary, to have direct access to the p_freepointer and the private methods !
199782  friend class AST_FILE_IO;
199783 
199785  friend class SgOmpOrderedStatementStorageClass;
199786 
199788  friend class AstSpecificDataManagingClass;
199789 
199791  friend class AstSpecificDataManagingClassStorageClass;
199792 
199793  public:
199795  SgOmpOrderedStatement( const SgOmpOrderedStatementStorageClass& source );
199796 
199797  // private: // JJW hack
199798  /*
199799  name AST Memory Allocation Support Variables
199800  Memory allocations support variables
199801 
199802  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
199803  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
199804  and support the AST File I/O Mechanism.
199805  */
199806  /* */
199807 
199808  public:
199809 
199810  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
199811  // to current node (so that it will work cleanly with build functions to specify patterns).
199812  // virtual SgNode* addRegExpAttribute();
199819 
199820 // *** COMMON CODE SECTION ENDS HERE ***
199821 
199822 
199823 // End of memberFunctionString
199824 // Start of memberFunctionString
199825 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
199826 
199827  // the generated cast function
199828  // friend ROSE_DLL_API SgOmpOrderedStatement* isSgOmpOrderedStatement ( SgNode* s );
199829 
199831 
199832 
199833 // End of memberFunctionString
199834 // Start of memberFunctionString
199835 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
199836 
199837  void post_construction_initialization() override;
199838 
199839 
199840 // End of memberFunctionString
199841 
199842 
199843  public:
199844  virtual ~SgOmpOrderedStatement();
199845 
199846 
199847  public:
199848  SgOmpOrderedStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
199850 
199851  protected:
199852 
199853 
199854 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
199855 
199856 
199857  };
199858 #endif
199859 
199860 // postdeclarations for SgOmpOrderedStatement
199861 
199862 /* #line 199863 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
199863 
199864 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
199865 
199866 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
199867 
199868 
199869 /* #line 199870 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
199870 
199871 
199872 
199873 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
199874 
199875 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
199876 // This code is automatically generated for each
199877 // terminal and non-terminal within the defined
199878 // grammar. There is a simple way to change the
199879 // code to fix bugs etc. See the ROSE README file
199880 // for directions.
199881 
199882 // tps: (02/22/2010): Adding DLL export requirements
199883 #include "rosedll.h"
199884 
199885 // predeclarations for SgOmpTaskgroupStatement
199886 
199887 /* #line 199888 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
199888 
199889 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
199890 
199891 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
199892 
199893 #if 1
199894 // Class Definition for SgOmpTaskgroupStatement
199896  {
199897  public:
199898 
199899 
199900 /* #line 199901 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
199901 
199902  virtual SgNode* copy ( SgCopyHelp& help) const override;
199903 // Start of memberFunctionString
199904 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
199905 
199906 // *** COMMON CODE SECTION BEGINS HERE ***
199907 
199908  public:
199909 
199910  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
199911  // and not required which is required to match the other aspects of the copy mechanism code generation.
199912  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
199913  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
199914  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
199915  // virtual SgNode* copy ( const SgCopyHelp & help) const;
199916 
199918  virtual std::string class_name() const override;
199919 
199921  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
199922 
199924  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
199925  // static const VariantT static_variant = V_SgOmpTaskgroupStatement;
199926  enum { static_variant = V_SgOmpTaskgroupStatement };
199927 
199928  /* the generated cast function */
199930  ROSE_DLL_API friend SgOmpTaskgroupStatement* isSgOmpTaskgroupStatement( SgNode * s );
199931 
199933  ROSE_DLL_API friend const SgOmpTaskgroupStatement* isSgOmpTaskgroupStatement( const SgNode * s );
199934 
199935  // ******************************************
199936  // * Memory Pool / New / Delete
199937  // ******************************************
199938 
199939  public:
199941  static const unsigned pool_size; //
199943  static std::vector<unsigned char *> pools; //
199945  static SgOmpTaskgroupStatement * next_node; //
199946 
199948  static unsigned long initializeStorageClassArray(SgOmpTaskgroupStatementStorageClass *); //
199949 
199951  static void clearMemoryPool(); //
199952  static void deleteMemoryPool(); //
199953 
199955  static void extendMemoryPoolForFileIO(); //
199956 
199958  static SgOmpTaskgroupStatement * getPointerFromGlobalIndex(unsigned long); //
199960  static SgOmpTaskgroupStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
199961 
199963  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
199965  static void resetValidFreepointers(); //
199967  static unsigned long getNumberOfLastValidPointer(); //
199968 
199969 
199970 #if defined(INLINE_FUNCTIONS)
199971 
199972  inline void *operator new (size_t size);
199973 #else
199974 
199975  void *operator new (size_t size);
199976 #endif
199977 
199978  void operator delete (void* pointer, size_t size);
199979 
199980  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
199981  void operator delete (void* pointer)
199982  {
199983  // This is the generated delete operator...
199984  SgOmpTaskgroupStatement::operator delete (pointer,sizeof(SgOmpTaskgroupStatement));
199985  }
199986 
199988  static size_t numberOfNodes();
199989 
199991  static size_t memoryUsage();
199992 
199993  // End of scope which started in IR nodes specific code
199994  /* */
199995 
199996  /* name Internal Functions
199997  \brief Internal functions ... incomplete-documentation
199998 
199999  These functions have been made public as part of the design, but they are suggested for internal use
200000  or by particularly knowledgeable users for specialized tools or applications.
200001 
200002  \internal We could not make these private because they are required by user for special purposes. And
200003  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
200004 
200005  */
200006 
200007  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
200008  // overridden in every class by *generated* implementation
200010  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
200011  // MS: 06/28/02 container of names of variables or container indices
200012  // used used in the traversal to access AST successor nodes
200013  // overridden in every class by *generated* implementation
200016  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
200017 
200018  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
200019  // than all the vector copies. The implementation for these functions is generated for each class.
200021  virtual size_t get_numberOfTraversalSuccessors() override;
200023  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
200025  virtual size_t get_childIndex(SgNode *child) override;
200026 
200027 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
200028  // MS: 08/16/2002 method for generating RTI information
200030  virtual RTIReturnType roseRTI() override;
200031 #endif
200032  /* */
200033 
200034 
200035 
200036  /* name Deprecated Functions
200037  \brief Deprecated functions ... incomplete-documentation
200038 
200039  These functions have been deprecated from use.
200040  */
200041  /* */
200042 
200044  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
200045 
200046  // JJW (10/16/2008): Changed to a single function in Node.code, and put
200047  // getVariant() in #if 0 block to prevent confusing Doxygen
200048 #if 0
200049 
200050  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
200052  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
200053 #endif
200054  /* */
200055 
200056 
200057 
200058 
200059  public:
200060  /* name Traversal Support Functions
200061  \brief Traversal support functions ... incomplete-documentation
200062 
200063  These functions have been made public as part of the design, but they are suggested for internal use
200064  or by particularly knowledgable users for specialized tools or applications.
200065  */
200066  /* */
200067 
200068  // DQ (11/26/2005): Support for visitor pattern mechanims
200069  // (inferior to ROSE traversal mechanism, experimental).
200073 
200074  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
200076  virtual void accept (ROSE_VisitorPattern & visitor) override;
200077 
200078  // DQ (12/26/2005): Support for traversal based on the memory pool
200081  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
200082 
200085  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
200086 
200087  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
200088  // This traversal helps support internal tools that call static member functions.
200089  // note: this function operates on the memory pools.
200092  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
200093  /* */
200094 
200095 
200096  public:
200097  /* name Memory Allocation Functions
200098  \brief Memory allocations functions ... incomplete-documentation
200099 
200100  These functions have been made public as part of the design, but they are suggested for internal use
200101  or by particularly knowledgable users for specialized tools or applications.
200102  */
200103  /* */
200104 
200115  virtual bool isInMemoryPool() override;
200116 
200127  virtual void checkDataMemberPointersIfInMemoryPool() override;
200128 
200129  // DQ (4/30/2006): Modified to be a const function.
200144  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
200145 
200155  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
200156 
200168  virtual long getChildIndex( SgNode* childNode ) const override;
200169 
200170  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
200171  // comment here (changed to be a C style comment and not be a doxygen comment).
200172  /* \brief Constructor for use by AST File I/O Mechanism
200173 
200174  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
200175  which obtained via fast binary file I/O from disk.
200176  */
200177  // SgOmpTaskgroupStatement( SgOmpTaskgroupStatementStorageClass& source );
200178 
200179 
200180 
200181 
200182 
200183  // JH (10/24/2005): methods added to support the ast file IO
200184  private:
200185 
200186  /* name AST Memory Allocation Support Functions
200187  \brief Memory allocations support....
200188 
200189  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
200190  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
200191  and support the AST File I/O Mechanism.
200192  */
200193  /* */
200194 
200195  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
200196  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
200197  that I use the same type everywhere, if any changes are made. THe second one declares the type
200198  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
200199  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
200200  a correspinding one in the AST_FILE_IO class!
200201  */
200202  // DQ (9/2/2015): This typedef is no longer used, we can't define the
200203  // comment here (changed to be a C style comment and not be a doxygen comment).
200204  /* \brief Typedef used for low level memory access.
200205  */
200206  // typedef unsigned char* TestType;
200207 
200208  // DQ (9/2/2015): This typedef is no longer used, we can't define the
200209  // comment here (changed to be a C style comment and not be a doxygen comment).
200210  /* \brief Typedef used to hold memory addresses as values.
200211  */
200212  // typedef unsigned long AddressType;
200213 
200214 
200215 
200216  // necessary, to have direct access to the p_freepointer and the private methods !
200218  friend class AST_FILE_IO;
200219 
200221  friend class SgOmpTaskgroupStatementStorageClass;
200222 
200224  friend class AstSpecificDataManagingClass;
200225 
200227  friend class AstSpecificDataManagingClassStorageClass;
200228 
200229  public:
200231  SgOmpTaskgroupStatement( const SgOmpTaskgroupStatementStorageClass& source );
200232 
200233  // private: // JJW hack
200234  /*
200235  name AST Memory Allocation Support Variables
200236  Memory allocations support variables
200237 
200238  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
200239  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
200240  and support the AST File I/O Mechanism.
200241  */
200242  /* */
200243 
200244  public:
200245 
200246  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
200247  // to current node (so that it will work cleanly with build functions to specify patterns).
200248  // virtual SgNode* addRegExpAttribute();
200255 
200256 // *** COMMON CODE SECTION ENDS HERE ***
200257 
200258 
200259 // End of memberFunctionString
200260 // Start of memberFunctionString
200261 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
200262 
200263  // the generated cast function
200264  // friend ROSE_DLL_API SgOmpTaskgroupStatement* isSgOmpTaskgroupStatement ( SgNode* s );
200265 
200267 
200268 
200269 // End of memberFunctionString
200270 // Start of memberFunctionString
200271 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
200272 
200273  void post_construction_initialization() override;
200274 
200275 
200276 // End of memberFunctionString
200277 
200278 
200279  public:
200280  virtual ~SgOmpTaskgroupStatement();
200281 
200282 
200283  public:
200284  SgOmpTaskgroupStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
200286 
200287  protected:
200288 
200289 
200290 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
200291 
200292 
200293  };
200294 #endif
200295 
200296 // postdeclarations for SgOmpTaskgroupStatement
200297 
200298 /* #line 200299 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
200299 
200300 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
200301 
200302 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
200303 
200304 
200305 /* #line 200306 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
200306 
200307 
200308 
200309 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
200310 
200311 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
200312 // This code is automatically generated for each
200313 // terminal and non-terminal within the defined
200314 // grammar. There is a simple way to change the
200315 // code to fix bugs etc. See the ROSE README file
200316 // for directions.
200317 
200318 // tps: (02/22/2010): Adding DLL export requirements
200319 #include "rosedll.h"
200320 
200321 // predeclarations for SgOmpTaskloopStatement
200322 
200323 /* #line 200324 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
200324 
200325 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
200326 
200327 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
200328 
200329 #if 1
200330 // Class Definition for SgOmpTaskloopStatement
200332  {
200333  public:
200334 
200335 
200336 /* #line 200337 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
200337 
200338  virtual SgNode* copy ( SgCopyHelp& help) const override;
200339 // Start of memberFunctionString
200340 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
200341 
200342 // *** COMMON CODE SECTION BEGINS HERE ***
200343 
200344  public:
200345 
200346  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
200347  // and not required which is required to match the other aspects of the copy mechanism code generation.
200348  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
200349  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
200350  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
200351  // virtual SgNode* copy ( const SgCopyHelp & help) const;
200352 
200354  virtual std::string class_name() const override;
200355 
200357  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
200358 
200360  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
200361  // static const VariantT static_variant = V_SgOmpTaskloopStatement;
200362  enum { static_variant = V_SgOmpTaskloopStatement };
200363 
200364  /* the generated cast function */
200366  ROSE_DLL_API friend SgOmpTaskloopStatement* isSgOmpTaskloopStatement( SgNode * s );
200367 
200369  ROSE_DLL_API friend const SgOmpTaskloopStatement* isSgOmpTaskloopStatement( const SgNode * s );
200370 
200371  // ******************************************
200372  // * Memory Pool / New / Delete
200373  // ******************************************
200374 
200375  public:
200377  static const unsigned pool_size; //
200379  static std::vector<unsigned char *> pools; //
200381  static SgOmpTaskloopStatement * next_node; //
200382 
200384  static unsigned long initializeStorageClassArray(SgOmpTaskloopStatementStorageClass *); //
200385 
200387  static void clearMemoryPool(); //
200388  static void deleteMemoryPool(); //
200389 
200391  static void extendMemoryPoolForFileIO(); //
200392 
200394  static SgOmpTaskloopStatement * getPointerFromGlobalIndex(unsigned long); //
200396  static SgOmpTaskloopStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
200397 
200399  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
200401  static void resetValidFreepointers(); //
200403  static unsigned long getNumberOfLastValidPointer(); //
200404 
200405 
200406 #if defined(INLINE_FUNCTIONS)
200407 
200408  inline void *operator new (size_t size);
200409 #else
200410 
200411  void *operator new (size_t size);
200412 #endif
200413 
200414  void operator delete (void* pointer, size_t size);
200415 
200416  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
200417  void operator delete (void* pointer)
200418  {
200419  // This is the generated delete operator...
200420  SgOmpTaskloopStatement::operator delete (pointer,sizeof(SgOmpTaskloopStatement));
200421  }
200422 
200424  static size_t numberOfNodes();
200425 
200427  static size_t memoryUsage();
200428 
200429  // End of scope which started in IR nodes specific code
200430  /* */
200431 
200432  /* name Internal Functions
200433  \brief Internal functions ... incomplete-documentation
200434 
200435  These functions have been made public as part of the design, but they are suggested for internal use
200436  or by particularly knowledgeable users for specialized tools or applications.
200437 
200438  \internal We could not make these private because they are required by user for special purposes. And
200439  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
200440 
200441  */
200442 
200443  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
200444  // overridden in every class by *generated* implementation
200446  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
200447  // MS: 06/28/02 container of names of variables or container indices
200448  // used used in the traversal to access AST successor nodes
200449  // overridden in every class by *generated* implementation
200452  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
200453 
200454  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
200455  // than all the vector copies. The implementation for these functions is generated for each class.
200457  virtual size_t get_numberOfTraversalSuccessors() override;
200459  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
200461  virtual size_t get_childIndex(SgNode *child) override;
200462 
200463 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
200464  // MS: 08/16/2002 method for generating RTI information
200466  virtual RTIReturnType roseRTI() override;
200467 #endif
200468  /* */
200469 
200470 
200471 
200472  /* name Deprecated Functions
200473  \brief Deprecated functions ... incomplete-documentation
200474 
200475  These functions have been deprecated from use.
200476  */
200477  /* */
200478 
200480  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
200481 
200482  // JJW (10/16/2008): Changed to a single function in Node.code, and put
200483  // getVariant() in #if 0 block to prevent confusing Doxygen
200484 #if 0
200485 
200486  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
200488  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
200489 #endif
200490  /* */
200491 
200492 
200493 
200494 
200495  public:
200496  /* name Traversal Support Functions
200497  \brief Traversal support functions ... incomplete-documentation
200498 
200499  These functions have been made public as part of the design, but they are suggested for internal use
200500  or by particularly knowledgable users for specialized tools or applications.
200501  */
200502  /* */
200503 
200504  // DQ (11/26/2005): Support for visitor pattern mechanims
200505  // (inferior to ROSE traversal mechanism, experimental).
200509 
200510  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
200512  virtual void accept (ROSE_VisitorPattern & visitor) override;
200513 
200514  // DQ (12/26/2005): Support for traversal based on the memory pool
200517  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
200518 
200521  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
200522 
200523  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
200524  // This traversal helps support internal tools that call static member functions.
200525  // note: this function operates on the memory pools.
200528  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
200529  /* */
200530 
200531 
200532  public:
200533  /* name Memory Allocation Functions
200534  \brief Memory allocations functions ... incomplete-documentation
200535 
200536  These functions have been made public as part of the design, but they are suggested for internal use
200537  or by particularly knowledgable users for specialized tools or applications.
200538  */
200539  /* */
200540 
200551  virtual bool isInMemoryPool() override;
200552 
200563  virtual void checkDataMemberPointersIfInMemoryPool() override;
200564 
200565  // DQ (4/30/2006): Modified to be a const function.
200580  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
200581 
200591  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
200592 
200604  virtual long getChildIndex( SgNode* childNode ) const override;
200605 
200606  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
200607  // comment here (changed to be a C style comment and not be a doxygen comment).
200608  /* \brief Constructor for use by AST File I/O Mechanism
200609 
200610  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
200611  which obtained via fast binary file I/O from disk.
200612  */
200613  // SgOmpTaskloopStatement( SgOmpTaskloopStatementStorageClass& source );
200614 
200615 
200616 
200617 
200618 
200619  // JH (10/24/2005): methods added to support the ast file IO
200620  private:
200621 
200622  /* name AST Memory Allocation Support Functions
200623  \brief Memory allocations support....
200624 
200625  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
200626  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
200627  and support the AST File I/O Mechanism.
200628  */
200629  /* */
200630 
200631  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
200632  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
200633  that I use the same type everywhere, if any changes are made. THe second one declares the type
200634  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
200635  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
200636  a correspinding one in the AST_FILE_IO class!
200637  */
200638  // DQ (9/2/2015): This typedef is no longer used, we can't define the
200639  // comment here (changed to be a C style comment and not be a doxygen comment).
200640  /* \brief Typedef used for low level memory access.
200641  */
200642  // typedef unsigned char* TestType;
200643 
200644  // DQ (9/2/2015): This typedef is no longer used, we can't define the
200645  // comment here (changed to be a C style comment and not be a doxygen comment).
200646  /* \brief Typedef used to hold memory addresses as values.
200647  */
200648  // typedef unsigned long AddressType;
200649 
200650 
200651 
200652  // necessary, to have direct access to the p_freepointer and the private methods !
200654  friend class AST_FILE_IO;
200655 
200657  friend class SgOmpTaskloopStatementStorageClass;
200658 
200660  friend class AstSpecificDataManagingClass;
200661 
200663  friend class AstSpecificDataManagingClassStorageClass;
200664 
200665  public:
200667  SgOmpTaskloopStatement( const SgOmpTaskloopStatementStorageClass& source );
200668 
200669  // private: // JJW hack
200670  /*
200671  name AST Memory Allocation Support Variables
200672  Memory allocations support variables
200673 
200674  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
200675  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
200676  and support the AST File I/O Mechanism.
200677  */
200678  /* */
200679 
200680  public:
200681 
200682  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
200683  // to current node (so that it will work cleanly with build functions to specify patterns).
200684  // virtual SgNode* addRegExpAttribute();
200691 
200692 // *** COMMON CODE SECTION ENDS HERE ***
200693 
200694 
200695 // End of memberFunctionString
200696 // Start of memberFunctionString
200697 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
200698 
200699  // the generated cast function
200700  // friend ROSE_DLL_API SgOmpTaskloopStatement* isSgOmpTaskloopStatement ( SgNode* s );
200701 
200703 
200704 
200705 // End of memberFunctionString
200706 // Start of memberFunctionString
200707 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
200708 
200709  void post_construction_initialization() override;
200710 
200711 
200712 // End of memberFunctionString
200713 
200714 
200715  public:
200716  virtual ~SgOmpTaskloopStatement();
200717 
200718 
200719  public:
200720  SgOmpTaskloopStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
200722 
200723  protected:
200724 
200725 
200726 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
200727 
200728 
200729  };
200730 #endif
200731 
200732 // postdeclarations for SgOmpTaskloopStatement
200733 
200734 /* #line 200735 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
200735 
200736 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
200737 
200738 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
200739 
200740 
200741 /* #line 200742 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
200742 
200743 
200744 
200745 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
200746 
200747 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
200748 // This code is automatically generated for each
200749 // terminal and non-terminal within the defined
200750 // grammar. There is a simple way to change the
200751 // code to fix bugs etc. See the ROSE README file
200752 // for directions.
200753 
200754 // tps: (02/22/2010): Adding DLL export requirements
200755 #include "rosedll.h"
200756 
200757 // predeclarations for SgOmpDepobjStatement
200758 
200759 /* #line 200760 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
200760 
200761 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
200762 
200763 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
200764 
200765 #if 1
200766 // Class Definition for SgOmpDepobjStatement
200768  {
200769  public:
200770 
200771 
200772 /* #line 200773 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
200773 
200774  virtual SgNode* copy ( SgCopyHelp& help) const override;
200775 // Start of memberFunctionString
200776 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
200777 
200778 // *** COMMON CODE SECTION BEGINS HERE ***
200779 
200780  public:
200781 
200782  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
200783  // and not required which is required to match the other aspects of the copy mechanism code generation.
200784  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
200785  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
200786  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
200787  // virtual SgNode* copy ( const SgCopyHelp & help) const;
200788 
200790  virtual std::string class_name() const override;
200791 
200793  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
200794 
200796  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
200797  // static const VariantT static_variant = V_SgOmpDepobjStatement;
200798  enum { static_variant = V_SgOmpDepobjStatement };
200799 
200800  /* the generated cast function */
200802  ROSE_DLL_API friend SgOmpDepobjStatement* isSgOmpDepobjStatement( SgNode * s );
200803 
200805  ROSE_DLL_API friend const SgOmpDepobjStatement* isSgOmpDepobjStatement( const SgNode * s );
200806 
200807  // ******************************************
200808  // * Memory Pool / New / Delete
200809  // ******************************************
200810 
200811  public:
200813  static const unsigned pool_size; //
200815  static std::vector<unsigned char *> pools; //
200817  static SgOmpDepobjStatement * next_node; //
200818 
200820  static unsigned long initializeStorageClassArray(SgOmpDepobjStatementStorageClass *); //
200821 
200823  static void clearMemoryPool(); //
200824  static void deleteMemoryPool(); //
200825 
200827  static void extendMemoryPoolForFileIO(); //
200828 
200830  static SgOmpDepobjStatement * getPointerFromGlobalIndex(unsigned long); //
200832  static SgOmpDepobjStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
200833 
200835  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
200837  static void resetValidFreepointers(); //
200839  static unsigned long getNumberOfLastValidPointer(); //
200840 
200841 
200842 #if defined(INLINE_FUNCTIONS)
200843 
200844  inline void *operator new (size_t size);
200845 #else
200846 
200847  void *operator new (size_t size);
200848 #endif
200849 
200850  void operator delete (void* pointer, size_t size);
200851 
200852  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
200853  void operator delete (void* pointer)
200854  {
200855  // This is the generated delete operator...
200856  SgOmpDepobjStatement::operator delete (pointer,sizeof(SgOmpDepobjStatement));
200857  }
200858 
200860  static size_t numberOfNodes();
200861 
200863  static size_t memoryUsage();
200864 
200865  // End of scope which started in IR nodes specific code
200866  /* */
200867 
200868  /* name Internal Functions
200869  \brief Internal functions ... incomplete-documentation
200870 
200871  These functions have been made public as part of the design, but they are suggested for internal use
200872  or by particularly knowledgeable users for specialized tools or applications.
200873 
200874  \internal We could not make these private because they are required by user for special purposes. And
200875  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
200876 
200877  */
200878 
200879  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
200880  // overridden in every class by *generated* implementation
200882  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
200883  // MS: 06/28/02 container of names of variables or container indices
200884  // used used in the traversal to access AST successor nodes
200885  // overridden in every class by *generated* implementation
200888  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
200889 
200890  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
200891  // than all the vector copies. The implementation for these functions is generated for each class.
200893  virtual size_t get_numberOfTraversalSuccessors() override;
200895  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
200897  virtual size_t get_childIndex(SgNode *child) override;
200898 
200899 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
200900  // MS: 08/16/2002 method for generating RTI information
200902  virtual RTIReturnType roseRTI() override;
200903 #endif
200904  /* */
200905 
200906 
200907 
200908  /* name Deprecated Functions
200909  \brief Deprecated functions ... incomplete-documentation
200910 
200911  These functions have been deprecated from use.
200912  */
200913  /* */
200914 
200916  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
200917 
200918  // JJW (10/16/2008): Changed to a single function in Node.code, and put
200919  // getVariant() in #if 0 block to prevent confusing Doxygen
200920 #if 0
200921 
200922  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
200924  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
200925 #endif
200926  /* */
200927 
200928 
200929 
200930 
200931  public:
200932  /* name Traversal Support Functions
200933  \brief Traversal support functions ... incomplete-documentation
200934 
200935  These functions have been made public as part of the design, but they are suggested for internal use
200936  or by particularly knowledgable users for specialized tools or applications.
200937  */
200938  /* */
200939 
200940  // DQ (11/26/2005): Support for visitor pattern mechanims
200941  // (inferior to ROSE traversal mechanism, experimental).
200945 
200946  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
200948  virtual void accept (ROSE_VisitorPattern & visitor) override;
200949 
200950  // DQ (12/26/2005): Support for traversal based on the memory pool
200953  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
200954 
200957  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
200958 
200959  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
200960  // This traversal helps support internal tools that call static member functions.
200961  // note: this function operates on the memory pools.
200964  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
200965  /* */
200966 
200967 
200968  public:
200969  /* name Memory Allocation Functions
200970  \brief Memory allocations functions ... incomplete-documentation
200971 
200972  These functions have been made public as part of the design, but they are suggested for internal use
200973  or by particularly knowledgable users for specialized tools or applications.
200974  */
200975  /* */
200976 
200987  virtual bool isInMemoryPool() override;
200988 
200999  virtual void checkDataMemberPointersIfInMemoryPool() override;
201000 
201001  // DQ (4/30/2006): Modified to be a const function.
201016  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
201017 
201027  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
201028 
201040  virtual long getChildIndex( SgNode* childNode ) const override;
201041 
201042  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
201043  // comment here (changed to be a C style comment and not be a doxygen comment).
201044  /* \brief Constructor for use by AST File I/O Mechanism
201045 
201046  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
201047  which obtained via fast binary file I/O from disk.
201048  */
201049  // SgOmpDepobjStatement( SgOmpDepobjStatementStorageClass& source );
201050 
201051 
201052 
201053 
201054 
201055  // JH (10/24/2005): methods added to support the ast file IO
201056  private:
201057 
201058  /* name AST Memory Allocation Support Functions
201059  \brief Memory allocations support....
201060 
201061  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
201062  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
201063  and support the AST File I/O Mechanism.
201064  */
201065  /* */
201066 
201067  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
201068  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
201069  that I use the same type everywhere, if any changes are made. THe second one declares the type
201070  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
201071  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
201072  a correspinding one in the AST_FILE_IO class!
201073  */
201074  // DQ (9/2/2015): This typedef is no longer used, we can't define the
201075  // comment here (changed to be a C style comment and not be a doxygen comment).
201076  /* \brief Typedef used for low level memory access.
201077  */
201078  // typedef unsigned char* TestType;
201079 
201080  // DQ (9/2/2015): This typedef is no longer used, we can't define the
201081  // comment here (changed to be a C style comment and not be a doxygen comment).
201082  /* \brief Typedef used to hold memory addresses as values.
201083  */
201084  // typedef unsigned long AddressType;
201085 
201086 
201087 
201088  // necessary, to have direct access to the p_freepointer and the private methods !
201090  friend class AST_FILE_IO;
201091 
201093  friend class SgOmpDepobjStatementStorageClass;
201094 
201096  friend class AstSpecificDataManagingClass;
201097 
201099  friend class AstSpecificDataManagingClassStorageClass;
201100 
201101  public:
201103  SgOmpDepobjStatement( const SgOmpDepobjStatementStorageClass& source );
201104 
201105  // private: // JJW hack
201106  /*
201107  name AST Memory Allocation Support Variables
201108  Memory allocations support variables
201109 
201110  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
201111  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
201112  and support the AST File I/O Mechanism.
201113  */
201114  /* */
201115 
201116  public:
201117 
201118  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
201119  // to current node (so that it will work cleanly with build functions to specify patterns).
201120  // virtual SgNode* addRegExpAttribute();
201127 
201128 // *** COMMON CODE SECTION ENDS HERE ***
201129 
201130 
201131 // End of memberFunctionString
201132 // Start of memberFunctionString
201133 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
201134 
201135  // the generated cast function
201136  // friend ROSE_DLL_API SgOmpDepobjStatement* isSgOmpDepobjStatement ( SgNode* s );
201137 
201139 
201140 
201141 // End of memberFunctionString
201142 // Start of memberFunctionString
201143 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
201144 
201145  void post_construction_initialization() override;
201146 
201147 
201148 // End of memberFunctionString
201149 
201150  public:
201151  SgName get_name() const /* (getDataAccessFunctionPrototypeString) */;
201152  void set_name(SgName name) /* (getDataAccessFunctionPrototypeString) */;
201153 
201154 
201155  public:
201156  virtual ~SgOmpDepobjStatement();
201157 
201158 
201159  public:
201160  SgOmpDepobjStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL, SgName name = "");
201161  SgOmpDepobjStatement(SgStatement* body, SgName name);
201162 
201163  protected:
201164 // Start of memberFunctionString
201165 SgName p_name;
201166 
201167 // End of memberFunctionString
201168 
201169 
201170 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
201171 
201172 
201173  };
201174 #endif
201175 
201176 // postdeclarations for SgOmpDepobjStatement
201177 
201178 /* #line 201179 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
201179 
201180 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
201181 
201182 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
201183 
201184 
201185 /* #line 201186 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
201186 
201187 
201188 
201189 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
201190 
201191 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
201192 // This code is automatically generated for each
201193 // terminal and non-terminal within the defined
201194 // grammar. There is a simple way to change the
201195 // code to fix bugs etc. See the ROSE README file
201196 // for directions.
201197 
201198 // tps: (02/22/2010): Adding DLL export requirements
201199 #include "rosedll.h"
201200 
201201 // predeclarations for SgOmpTargetEnterDataStatement
201202 
201203 /* #line 201204 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
201204 
201205 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
201206 
201207 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
201208 
201209 #if 1
201210 // Class Definition for SgOmpTargetEnterDataStatement
201212  {
201213  public:
201214 
201215 
201216 /* #line 201217 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
201217 
201218  virtual SgNode* copy ( SgCopyHelp& help) const override;
201219 // Start of memberFunctionString
201220 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
201221 
201222 // *** COMMON CODE SECTION BEGINS HERE ***
201223 
201224  public:
201225 
201226  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
201227  // and not required which is required to match the other aspects of the copy mechanism code generation.
201228  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
201229  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
201230  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
201231  // virtual SgNode* copy ( const SgCopyHelp & help) const;
201232 
201234  virtual std::string class_name() const override;
201235 
201237  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
201238 
201240  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
201241  // static const VariantT static_variant = V_SgOmpTargetEnterDataStatement;
201242  enum { static_variant = V_SgOmpTargetEnterDataStatement };
201243 
201244  /* the generated cast function */
201246  ROSE_DLL_API friend SgOmpTargetEnterDataStatement* isSgOmpTargetEnterDataStatement( SgNode * s );
201247 
201249  ROSE_DLL_API friend const SgOmpTargetEnterDataStatement* isSgOmpTargetEnterDataStatement( const SgNode * s );
201250 
201251  // ******************************************
201252  // * Memory Pool / New / Delete
201253  // ******************************************
201254 
201255  public:
201257  static const unsigned pool_size; //
201259  static std::vector<unsigned char *> pools; //
201261  static SgOmpTargetEnterDataStatement * next_node; //
201262 
201264  static unsigned long initializeStorageClassArray(SgOmpTargetEnterDataStatementStorageClass *); //
201265 
201267  static void clearMemoryPool(); //
201268  static void deleteMemoryPool(); //
201269 
201271  static void extendMemoryPoolForFileIO(); //
201272 
201274  static SgOmpTargetEnterDataStatement * getPointerFromGlobalIndex(unsigned long); //
201276  static SgOmpTargetEnterDataStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
201277 
201279  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
201281  static void resetValidFreepointers(); //
201283  static unsigned long getNumberOfLastValidPointer(); //
201284 
201285 
201286 #if defined(INLINE_FUNCTIONS)
201287 
201288  inline void *operator new (size_t size);
201289 #else
201290 
201291  void *operator new (size_t size);
201292 #endif
201293 
201294  void operator delete (void* pointer, size_t size);
201295 
201296  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
201297  void operator delete (void* pointer)
201298  {
201299  // This is the generated delete operator...
201300  SgOmpTargetEnterDataStatement::operator delete (pointer,sizeof(SgOmpTargetEnterDataStatement));
201301  }
201302 
201304  static size_t numberOfNodes();
201305 
201307  static size_t memoryUsage();
201308 
201309  // End of scope which started in IR nodes specific code
201310  /* */
201311 
201312  /* name Internal Functions
201313  \brief Internal functions ... incomplete-documentation
201314 
201315  These functions have been made public as part of the design, but they are suggested for internal use
201316  or by particularly knowledgeable users for specialized tools or applications.
201317 
201318  \internal We could not make these private because they are required by user for special purposes. And
201319  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
201320 
201321  */
201322 
201323  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
201324  // overridden in every class by *generated* implementation
201326  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
201327  // MS: 06/28/02 container of names of variables or container indices
201328  // used used in the traversal to access AST successor nodes
201329  // overridden in every class by *generated* implementation
201332  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
201333 
201334  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
201335  // than all the vector copies. The implementation for these functions is generated for each class.
201337  virtual size_t get_numberOfTraversalSuccessors() override;
201339  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
201341  virtual size_t get_childIndex(SgNode *child) override;
201342 
201343 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
201344  // MS: 08/16/2002 method for generating RTI information
201346  virtual RTIReturnType roseRTI() override;
201347 #endif
201348  /* */
201349 
201350 
201351 
201352  /* name Deprecated Functions
201353  \brief Deprecated functions ... incomplete-documentation
201354 
201355  These functions have been deprecated from use.
201356  */
201357  /* */
201358 
201360  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
201361 
201362  // JJW (10/16/2008): Changed to a single function in Node.code, and put
201363  // getVariant() in #if 0 block to prevent confusing Doxygen
201364 #if 0
201365 
201366  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
201368  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
201369 #endif
201370  /* */
201371 
201372 
201373 
201374 
201375  public:
201376  /* name Traversal Support Functions
201377  \brief Traversal support functions ... incomplete-documentation
201378 
201379  These functions have been made public as part of the design, but they are suggested for internal use
201380  or by particularly knowledgable users for specialized tools or applications.
201381  */
201382  /* */
201383 
201384  // DQ (11/26/2005): Support for visitor pattern mechanims
201385  // (inferior to ROSE traversal mechanism, experimental).
201389 
201390  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
201392  virtual void accept (ROSE_VisitorPattern & visitor) override;
201393 
201394  // DQ (12/26/2005): Support for traversal based on the memory pool
201397  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
201398 
201401  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
201402 
201403  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
201404  // This traversal helps support internal tools that call static member functions.
201405  // note: this function operates on the memory pools.
201408  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
201409  /* */
201410 
201411 
201412  public:
201413  /* name Memory Allocation Functions
201414  \brief Memory allocations functions ... incomplete-documentation
201415 
201416  These functions have been made public as part of the design, but they are suggested for internal use
201417  or by particularly knowledgable users for specialized tools or applications.
201418  */
201419  /* */
201420 
201431  virtual bool isInMemoryPool() override;
201432 
201443  virtual void checkDataMemberPointersIfInMemoryPool() override;
201444 
201445  // DQ (4/30/2006): Modified to be a const function.
201460  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
201461 
201471  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
201472 
201484  virtual long getChildIndex( SgNode* childNode ) const override;
201485 
201486  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
201487  // comment here (changed to be a C style comment and not be a doxygen comment).
201488  /* \brief Constructor for use by AST File I/O Mechanism
201489 
201490  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
201491  which obtained via fast binary file I/O from disk.
201492  */
201493  // SgOmpTargetEnterDataStatement( SgOmpTargetEnterDataStatementStorageClass& source );
201494 
201495 
201496 
201497 
201498 
201499  // JH (10/24/2005): methods added to support the ast file IO
201500  private:
201501 
201502  /* name AST Memory Allocation Support Functions
201503  \brief Memory allocations support....
201504 
201505  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
201506  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
201507  and support the AST File I/O Mechanism.
201508  */
201509  /* */
201510 
201511  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
201512  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
201513  that I use the same type everywhere, if any changes are made. THe second one declares the type
201514  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
201515  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
201516  a correspinding one in the AST_FILE_IO class!
201517  */
201518  // DQ (9/2/2015): This typedef is no longer used, we can't define the
201519  // comment here (changed to be a C style comment and not be a doxygen comment).
201520  /* \brief Typedef used for low level memory access.
201521  */
201522  // typedef unsigned char* TestType;
201523 
201524  // DQ (9/2/2015): This typedef is no longer used, we can't define the
201525  // comment here (changed to be a C style comment and not be a doxygen comment).
201526  /* \brief Typedef used to hold memory addresses as values.
201527  */
201528  // typedef unsigned long AddressType;
201529 
201530 
201531 
201532  // necessary, to have direct access to the p_freepointer and the private methods !
201534  friend class AST_FILE_IO;
201535 
201537  friend class SgOmpTargetEnterDataStatementStorageClass;
201538 
201540  friend class AstSpecificDataManagingClass;
201541 
201543  friend class AstSpecificDataManagingClassStorageClass;
201544 
201545  public:
201547  SgOmpTargetEnterDataStatement( const SgOmpTargetEnterDataStatementStorageClass& source );
201548 
201549  // private: // JJW hack
201550  /*
201551  name AST Memory Allocation Support Variables
201552  Memory allocations support variables
201553 
201554  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
201555  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
201556  and support the AST File I/O Mechanism.
201557  */
201558  /* */
201559 
201560  public:
201561 
201562  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
201563  // to current node (so that it will work cleanly with build functions to specify patterns).
201564  // virtual SgNode* addRegExpAttribute();
201571 
201572 // *** COMMON CODE SECTION ENDS HERE ***
201573 
201574 
201575 // End of memberFunctionString
201576 // Start of memberFunctionString
201577 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
201578 
201579  // the generated cast function
201580  // friend ROSE_DLL_API SgOmpTargetEnterDataStatement* isSgOmpTargetEnterDataStatement ( SgNode* s );
201581 
201583 
201584 
201585 // End of memberFunctionString
201586 // Start of memberFunctionString
201587 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
201588 
201589  void post_construction_initialization() override;
201590 
201591 
201592 // End of memberFunctionString
201593 
201594 
201595  public:
201596  virtual ~SgOmpTargetEnterDataStatement();
201597 
201598 
201599  public:
201600  SgOmpTargetEnterDataStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
201602 
201603  protected:
201604 
201605 
201606 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
201607 
201608 
201609  };
201610 #endif
201611 
201612 // postdeclarations for SgOmpTargetEnterDataStatement
201613 
201614 /* #line 201615 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
201615 
201616 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
201617 
201618 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
201619 
201620 
201621 /* #line 201622 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
201622 
201623 
201624 
201625 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
201626 
201627 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
201628 // This code is automatically generated for each
201629 // terminal and non-terminal within the defined
201630 // grammar. There is a simple way to change the
201631 // code to fix bugs etc. See the ROSE README file
201632 // for directions.
201633 
201634 // tps: (02/22/2010): Adding DLL export requirements
201635 #include "rosedll.h"
201636 
201637 // predeclarations for SgOmpTargetExitDataStatement
201638 
201639 /* #line 201640 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
201640 
201641 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
201642 
201643 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
201644 
201645 #if 1
201646 // Class Definition for SgOmpTargetExitDataStatement
201648  {
201649  public:
201650 
201651 
201652 /* #line 201653 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
201653 
201654  virtual SgNode* copy ( SgCopyHelp& help) const override;
201655 // Start of memberFunctionString
201656 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
201657 
201658 // *** COMMON CODE SECTION BEGINS HERE ***
201659 
201660  public:
201661 
201662  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
201663  // and not required which is required to match the other aspects of the copy mechanism code generation.
201664  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
201665  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
201666  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
201667  // virtual SgNode* copy ( const SgCopyHelp & help) const;
201668 
201670  virtual std::string class_name() const override;
201671 
201673  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
201674 
201676  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
201677  // static const VariantT static_variant = V_SgOmpTargetExitDataStatement;
201678  enum { static_variant = V_SgOmpTargetExitDataStatement };
201679 
201680  /* the generated cast function */
201682  ROSE_DLL_API friend SgOmpTargetExitDataStatement* isSgOmpTargetExitDataStatement( SgNode * s );
201683 
201685  ROSE_DLL_API friend const SgOmpTargetExitDataStatement* isSgOmpTargetExitDataStatement( const SgNode * s );
201686 
201687  // ******************************************
201688  // * Memory Pool / New / Delete
201689  // ******************************************
201690 
201691  public:
201693  static const unsigned pool_size; //
201695  static std::vector<unsigned char *> pools; //
201697  static SgOmpTargetExitDataStatement * next_node; //
201698 
201700  static unsigned long initializeStorageClassArray(SgOmpTargetExitDataStatementStorageClass *); //
201701 
201703  static void clearMemoryPool(); //
201704  static void deleteMemoryPool(); //
201705 
201707  static void extendMemoryPoolForFileIO(); //
201708 
201710  static SgOmpTargetExitDataStatement * getPointerFromGlobalIndex(unsigned long); //
201712  static SgOmpTargetExitDataStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
201713 
201715  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
201717  static void resetValidFreepointers(); //
201719  static unsigned long getNumberOfLastValidPointer(); //
201720 
201721 
201722 #if defined(INLINE_FUNCTIONS)
201723 
201724  inline void *operator new (size_t size);
201725 #else
201726 
201727  void *operator new (size_t size);
201728 #endif
201729 
201730  void operator delete (void* pointer, size_t size);
201731 
201732  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
201733  void operator delete (void* pointer)
201734  {
201735  // This is the generated delete operator...
201736  SgOmpTargetExitDataStatement::operator delete (pointer,sizeof(SgOmpTargetExitDataStatement));
201737  }
201738 
201740  static size_t numberOfNodes();
201741 
201743  static size_t memoryUsage();
201744 
201745  // End of scope which started in IR nodes specific code
201746  /* */
201747 
201748  /* name Internal Functions
201749  \brief Internal functions ... incomplete-documentation
201750 
201751  These functions have been made public as part of the design, but they are suggested for internal use
201752  or by particularly knowledgeable users for specialized tools or applications.
201753 
201754  \internal We could not make these private because they are required by user for special purposes. And
201755  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
201756 
201757  */
201758 
201759  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
201760  // overridden in every class by *generated* implementation
201762  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
201763  // MS: 06/28/02 container of names of variables or container indices
201764  // used used in the traversal to access AST successor nodes
201765  // overridden in every class by *generated* implementation
201768  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
201769 
201770  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
201771  // than all the vector copies. The implementation for these functions is generated for each class.
201773  virtual size_t get_numberOfTraversalSuccessors() override;
201775  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
201777  virtual size_t get_childIndex(SgNode *child) override;
201778 
201779 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
201780  // MS: 08/16/2002 method for generating RTI information
201782  virtual RTIReturnType roseRTI() override;
201783 #endif
201784  /* */
201785 
201786 
201787 
201788  /* name Deprecated Functions
201789  \brief Deprecated functions ... incomplete-documentation
201790 
201791  These functions have been deprecated from use.
201792  */
201793  /* */
201794 
201796  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
201797 
201798  // JJW (10/16/2008): Changed to a single function in Node.code, and put
201799  // getVariant() in #if 0 block to prevent confusing Doxygen
201800 #if 0
201801 
201802  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
201804  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
201805 #endif
201806  /* */
201807 
201808 
201809 
201810 
201811  public:
201812  /* name Traversal Support Functions
201813  \brief Traversal support functions ... incomplete-documentation
201814 
201815  These functions have been made public as part of the design, but they are suggested for internal use
201816  or by particularly knowledgable users for specialized tools or applications.
201817  */
201818  /* */
201819 
201820  // DQ (11/26/2005): Support for visitor pattern mechanims
201821  // (inferior to ROSE traversal mechanism, experimental).
201825 
201826  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
201828  virtual void accept (ROSE_VisitorPattern & visitor) override;
201829 
201830  // DQ (12/26/2005): Support for traversal based on the memory pool
201833  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
201834 
201837  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
201838 
201839  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
201840  // This traversal helps support internal tools that call static member functions.
201841  // note: this function operates on the memory pools.
201844  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
201845  /* */
201846 
201847 
201848  public:
201849  /* name Memory Allocation Functions
201850  \brief Memory allocations functions ... incomplete-documentation
201851 
201852  These functions have been made public as part of the design, but they are suggested for internal use
201853  or by particularly knowledgable users for specialized tools or applications.
201854  */
201855  /* */
201856 
201867  virtual bool isInMemoryPool() override;
201868 
201879  virtual void checkDataMemberPointersIfInMemoryPool() override;
201880 
201881  // DQ (4/30/2006): Modified to be a const function.
201896  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
201897 
201907  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
201908 
201920  virtual long getChildIndex( SgNode* childNode ) const override;
201921 
201922  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
201923  // comment here (changed to be a C style comment and not be a doxygen comment).
201924  /* \brief Constructor for use by AST File I/O Mechanism
201925 
201926  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
201927  which obtained via fast binary file I/O from disk.
201928  */
201929  // SgOmpTargetExitDataStatement( SgOmpTargetExitDataStatementStorageClass& source );
201930 
201931 
201932 
201933 
201934 
201935  // JH (10/24/2005): methods added to support the ast file IO
201936  private:
201937 
201938  /* name AST Memory Allocation Support Functions
201939  \brief Memory allocations support....
201940 
201941  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
201942  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
201943  and support the AST File I/O Mechanism.
201944  */
201945  /* */
201946 
201947  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
201948  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
201949  that I use the same type everywhere, if any changes are made. THe second one declares the type
201950  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
201951  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
201952  a correspinding one in the AST_FILE_IO class!
201953  */
201954  // DQ (9/2/2015): This typedef is no longer used, we can't define the
201955  // comment here (changed to be a C style comment and not be a doxygen comment).
201956  /* \brief Typedef used for low level memory access.
201957  */
201958  // typedef unsigned char* TestType;
201959 
201960  // DQ (9/2/2015): This typedef is no longer used, we can't define the
201961  // comment here (changed to be a C style comment and not be a doxygen comment).
201962  /* \brief Typedef used to hold memory addresses as values.
201963  */
201964  // typedef unsigned long AddressType;
201965 
201966 
201967 
201968  // necessary, to have direct access to the p_freepointer and the private methods !
201970  friend class AST_FILE_IO;
201971 
201973  friend class SgOmpTargetExitDataStatementStorageClass;
201974 
201976  friend class AstSpecificDataManagingClass;
201977 
201979  friend class AstSpecificDataManagingClassStorageClass;
201980 
201981  public:
201983  SgOmpTargetExitDataStatement( const SgOmpTargetExitDataStatementStorageClass& source );
201984 
201985  // private: // JJW hack
201986  /*
201987  name AST Memory Allocation Support Variables
201988  Memory allocations support variables
201989 
201990  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
201991  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
201992  and support the AST File I/O Mechanism.
201993  */
201994  /* */
201995 
201996  public:
201997 
201998  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
201999  // to current node (so that it will work cleanly with build functions to specify patterns).
202000  // virtual SgNode* addRegExpAttribute();
202007 
202008 // *** COMMON CODE SECTION ENDS HERE ***
202009 
202010 
202011 // End of memberFunctionString
202012 // Start of memberFunctionString
202013 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
202014 
202015  // the generated cast function
202016  // friend ROSE_DLL_API SgOmpTargetExitDataStatement* isSgOmpTargetExitDataStatement ( SgNode* s );
202017 
202019 
202020 
202021 // End of memberFunctionString
202022 // Start of memberFunctionString
202023 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
202024 
202025  void post_construction_initialization() override;
202026 
202027 
202028 // End of memberFunctionString
202029 
202030 
202031  public:
202032  virtual ~SgOmpTargetExitDataStatement();
202033 
202034 
202035  public:
202036  SgOmpTargetExitDataStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
202038 
202039  protected:
202040 
202041 
202042 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
202043 
202044 
202045  };
202046 #endif
202047 
202048 // postdeclarations for SgOmpTargetExitDataStatement
202049 
202050 /* #line 202051 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
202051 
202052 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
202053 
202054 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
202055 
202056 
202057 /* #line 202058 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
202058 
202059 
202060 
202061 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
202062 
202063 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
202064 // This code is automatically generated for each
202065 // terminal and non-terminal within the defined
202066 // grammar. There is a simple way to change the
202067 // code to fix bugs etc. See the ROSE README file
202068 // for directions.
202069 
202070 // tps: (02/22/2010): Adding DLL export requirements
202071 #include "rosedll.h"
202072 
202073 // predeclarations for SgOmpParallelMasterStatement
202074 
202075 /* #line 202076 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
202076 
202077 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
202078 
202079 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
202080 
202081 #if 1
202082 // Class Definition for SgOmpParallelMasterStatement
202084  {
202085  public:
202086 
202087 
202088 /* #line 202089 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
202089 
202090  virtual SgNode* copy ( SgCopyHelp& help) const override;
202091 // Start of memberFunctionString
202092 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
202093 
202094 // *** COMMON CODE SECTION BEGINS HERE ***
202095 
202096  public:
202097 
202098  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
202099  // and not required which is required to match the other aspects of the copy mechanism code generation.
202100  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
202101  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
202102  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
202103  // virtual SgNode* copy ( const SgCopyHelp & help) const;
202104 
202106  virtual std::string class_name() const override;
202107 
202109  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
202110 
202112  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
202113  // static const VariantT static_variant = V_SgOmpParallelMasterStatement;
202114  enum { static_variant = V_SgOmpParallelMasterStatement };
202115 
202116  /* the generated cast function */
202118  ROSE_DLL_API friend SgOmpParallelMasterStatement* isSgOmpParallelMasterStatement( SgNode * s );
202119 
202121  ROSE_DLL_API friend const SgOmpParallelMasterStatement* isSgOmpParallelMasterStatement( const SgNode * s );
202122 
202123  // ******************************************
202124  // * Memory Pool / New / Delete
202125  // ******************************************
202126 
202127  public:
202129  static const unsigned pool_size; //
202131  static std::vector<unsigned char *> pools; //
202133  static SgOmpParallelMasterStatement * next_node; //
202134 
202136  static unsigned long initializeStorageClassArray(SgOmpParallelMasterStatementStorageClass *); //
202137 
202139  static void clearMemoryPool(); //
202140  static void deleteMemoryPool(); //
202141 
202143  static void extendMemoryPoolForFileIO(); //
202144 
202146  static SgOmpParallelMasterStatement * getPointerFromGlobalIndex(unsigned long); //
202148  static SgOmpParallelMasterStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
202149 
202151  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
202153  static void resetValidFreepointers(); //
202155  static unsigned long getNumberOfLastValidPointer(); //
202156 
202157 
202158 #if defined(INLINE_FUNCTIONS)
202159 
202160  inline void *operator new (size_t size);
202161 #else
202162 
202163  void *operator new (size_t size);
202164 #endif
202165 
202166  void operator delete (void* pointer, size_t size);
202167 
202168  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
202169  void operator delete (void* pointer)
202170  {
202171  // This is the generated delete operator...
202172  SgOmpParallelMasterStatement::operator delete (pointer,sizeof(SgOmpParallelMasterStatement));
202173  }
202174 
202176  static size_t numberOfNodes();
202177 
202179  static size_t memoryUsage();
202180 
202181  // End of scope which started in IR nodes specific code
202182  /* */
202183 
202184  /* name Internal Functions
202185  \brief Internal functions ... incomplete-documentation
202186 
202187  These functions have been made public as part of the design, but they are suggested for internal use
202188  or by particularly knowledgeable users for specialized tools or applications.
202189 
202190  \internal We could not make these private because they are required by user for special purposes. And
202191  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
202192 
202193  */
202194 
202195  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
202196  // overridden in every class by *generated* implementation
202198  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
202199  // MS: 06/28/02 container of names of variables or container indices
202200  // used used in the traversal to access AST successor nodes
202201  // overridden in every class by *generated* implementation
202204  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
202205 
202206  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
202207  // than all the vector copies. The implementation for these functions is generated for each class.
202209  virtual size_t get_numberOfTraversalSuccessors() override;
202211  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
202213  virtual size_t get_childIndex(SgNode *child) override;
202214 
202215 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
202216  // MS: 08/16/2002 method for generating RTI information
202218  virtual RTIReturnType roseRTI() override;
202219 #endif
202220  /* */
202221 
202222 
202223 
202224  /* name Deprecated Functions
202225  \brief Deprecated functions ... incomplete-documentation
202226 
202227  These functions have been deprecated from use.
202228  */
202229  /* */
202230 
202232  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
202233 
202234  // JJW (10/16/2008): Changed to a single function in Node.code, and put
202235  // getVariant() in #if 0 block to prevent confusing Doxygen
202236 #if 0
202237 
202238  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
202240  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
202241 #endif
202242  /* */
202243 
202244 
202245 
202246 
202247  public:
202248  /* name Traversal Support Functions
202249  \brief Traversal support functions ... incomplete-documentation
202250 
202251  These functions have been made public as part of the design, but they are suggested for internal use
202252  or by particularly knowledgable users for specialized tools or applications.
202253  */
202254  /* */
202255 
202256  // DQ (11/26/2005): Support for visitor pattern mechanims
202257  // (inferior to ROSE traversal mechanism, experimental).
202261 
202262  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
202264  virtual void accept (ROSE_VisitorPattern & visitor) override;
202265 
202266  // DQ (12/26/2005): Support for traversal based on the memory pool
202269  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
202270 
202273  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
202274 
202275  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
202276  // This traversal helps support internal tools that call static member functions.
202277  // note: this function operates on the memory pools.
202280  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
202281  /* */
202282 
202283 
202284  public:
202285  /* name Memory Allocation Functions
202286  \brief Memory allocations functions ... incomplete-documentation
202287 
202288  These functions have been made public as part of the design, but they are suggested for internal use
202289  or by particularly knowledgable users for specialized tools or applications.
202290  */
202291  /* */
202292 
202303  virtual bool isInMemoryPool() override;
202304 
202315  virtual void checkDataMemberPointersIfInMemoryPool() override;
202316 
202317  // DQ (4/30/2006): Modified to be a const function.
202332  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
202333 
202343  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
202344 
202356  virtual long getChildIndex( SgNode* childNode ) const override;
202357 
202358  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
202359  // comment here (changed to be a C style comment and not be a doxygen comment).
202360  /* \brief Constructor for use by AST File I/O Mechanism
202361 
202362  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
202363  which obtained via fast binary file I/O from disk.
202364  */
202365  // SgOmpParallelMasterStatement( SgOmpParallelMasterStatementStorageClass& source );
202366 
202367 
202368 
202369 
202370 
202371  // JH (10/24/2005): methods added to support the ast file IO
202372  private:
202373 
202374  /* name AST Memory Allocation Support Functions
202375  \brief Memory allocations support....
202376 
202377  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
202378  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
202379  and support the AST File I/O Mechanism.
202380  */
202381  /* */
202382 
202383  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
202384  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
202385  that I use the same type everywhere, if any changes are made. THe second one declares the type
202386  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
202387  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
202388  a correspinding one in the AST_FILE_IO class!
202389  */
202390  // DQ (9/2/2015): This typedef is no longer used, we can't define the
202391  // comment here (changed to be a C style comment and not be a doxygen comment).
202392  /* \brief Typedef used for low level memory access.
202393  */
202394  // typedef unsigned char* TestType;
202395 
202396  // DQ (9/2/2015): This typedef is no longer used, we can't define the
202397  // comment here (changed to be a C style comment and not be a doxygen comment).
202398  /* \brief Typedef used to hold memory addresses as values.
202399  */
202400  // typedef unsigned long AddressType;
202401 
202402 
202403 
202404  // necessary, to have direct access to the p_freepointer and the private methods !
202406  friend class AST_FILE_IO;
202407 
202409  friend class SgOmpParallelMasterStatementStorageClass;
202410 
202412  friend class AstSpecificDataManagingClass;
202413 
202415  friend class AstSpecificDataManagingClassStorageClass;
202416 
202417  public:
202419  SgOmpParallelMasterStatement( const SgOmpParallelMasterStatementStorageClass& source );
202420 
202421  // private: // JJW hack
202422  /*
202423  name AST Memory Allocation Support Variables
202424  Memory allocations support variables
202425 
202426  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
202427  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
202428  and support the AST File I/O Mechanism.
202429  */
202430  /* */
202431 
202432  public:
202433 
202434  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
202435  // to current node (so that it will work cleanly with build functions to specify patterns).
202436  // virtual SgNode* addRegExpAttribute();
202443 
202444 // *** COMMON CODE SECTION ENDS HERE ***
202445 
202446 
202447 // End of memberFunctionString
202448 // Start of memberFunctionString
202449 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
202450 
202451  // the generated cast function
202452  // friend ROSE_DLL_API SgOmpParallelMasterStatement* isSgOmpParallelMasterStatement ( SgNode* s );
202453 
202455 
202456 
202457 // End of memberFunctionString
202458 // Start of memberFunctionString
202459 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
202460 
202461  void post_construction_initialization() override;
202462 
202463 
202464 // End of memberFunctionString
202465 
202466 
202467  public:
202468  virtual ~SgOmpParallelMasterStatement();
202469 
202470 
202471  public:
202472  SgOmpParallelMasterStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
202474 
202475  protected:
202476 
202477 
202478 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
202479 
202480 
202481  };
202482 #endif
202483 
202484 // postdeclarations for SgOmpParallelMasterStatement
202485 
202486 /* #line 202487 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
202487 
202488 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
202489 
202490 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
202491 
202492 
202493 /* #line 202494 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
202494 
202495 
202496 
202497 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
202498 
202499 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
202500 // This code is automatically generated for each
202501 // terminal and non-terminal within the defined
202502 // grammar. There is a simple way to change the
202503 // code to fix bugs etc. See the ROSE README file
202504 // for directions.
202505 
202506 // tps: (02/22/2010): Adding DLL export requirements
202507 #include "rosedll.h"
202508 
202509 // predeclarations for SgOmpMasterTaskloopStatement
202510 
202511 /* #line 202512 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
202512 
202513 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
202514 
202515 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
202516 
202517 #if 1
202518 // Class Definition for SgOmpMasterTaskloopStatement
202520  {
202521  public:
202522 
202523 
202524 /* #line 202525 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
202525 
202526  virtual SgNode* copy ( SgCopyHelp& help) const override;
202527 // Start of memberFunctionString
202528 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
202529 
202530 // *** COMMON CODE SECTION BEGINS HERE ***
202531 
202532  public:
202533 
202534  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
202535  // and not required which is required to match the other aspects of the copy mechanism code generation.
202536  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
202537  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
202538  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
202539  // virtual SgNode* copy ( const SgCopyHelp & help) const;
202540 
202542  virtual std::string class_name() const override;
202543 
202545  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
202546 
202548  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
202549  // static const VariantT static_variant = V_SgOmpMasterTaskloopStatement;
202550  enum { static_variant = V_SgOmpMasterTaskloopStatement };
202551 
202552  /* the generated cast function */
202554  ROSE_DLL_API friend SgOmpMasterTaskloopStatement* isSgOmpMasterTaskloopStatement( SgNode * s );
202555 
202557  ROSE_DLL_API friend const SgOmpMasterTaskloopStatement* isSgOmpMasterTaskloopStatement( const SgNode * s );
202558 
202559  // ******************************************
202560  // * Memory Pool / New / Delete
202561  // ******************************************
202562 
202563  public:
202565  static const unsigned pool_size; //
202567  static std::vector<unsigned char *> pools; //
202569  static SgOmpMasterTaskloopStatement * next_node; //
202570 
202572  static unsigned long initializeStorageClassArray(SgOmpMasterTaskloopStatementStorageClass *); //
202573 
202575  static void clearMemoryPool(); //
202576  static void deleteMemoryPool(); //
202577 
202579  static void extendMemoryPoolForFileIO(); //
202580 
202582  static SgOmpMasterTaskloopStatement * getPointerFromGlobalIndex(unsigned long); //
202584  static SgOmpMasterTaskloopStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
202585 
202587  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
202589  static void resetValidFreepointers(); //
202591  static unsigned long getNumberOfLastValidPointer(); //
202592 
202593 
202594 #if defined(INLINE_FUNCTIONS)
202595 
202596  inline void *operator new (size_t size);
202597 #else
202598 
202599  void *operator new (size_t size);
202600 #endif
202601 
202602  void operator delete (void* pointer, size_t size);
202603 
202604  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
202605  void operator delete (void* pointer)
202606  {
202607  // This is the generated delete operator...
202608  SgOmpMasterTaskloopStatement::operator delete (pointer,sizeof(SgOmpMasterTaskloopStatement));
202609  }
202610 
202612  static size_t numberOfNodes();
202613 
202615  static size_t memoryUsage();
202616 
202617  // End of scope which started in IR nodes specific code
202618  /* */
202619 
202620  /* name Internal Functions
202621  \brief Internal functions ... incomplete-documentation
202622 
202623  These functions have been made public as part of the design, but they are suggested for internal use
202624  or by particularly knowledgeable users for specialized tools or applications.
202625 
202626  \internal We could not make these private because they are required by user for special purposes. And
202627  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
202628 
202629  */
202630 
202631  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
202632  // overridden in every class by *generated* implementation
202634  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
202635  // MS: 06/28/02 container of names of variables or container indices
202636  // used used in the traversal to access AST successor nodes
202637  // overridden in every class by *generated* implementation
202640  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
202641 
202642  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
202643  // than all the vector copies. The implementation for these functions is generated for each class.
202645  virtual size_t get_numberOfTraversalSuccessors() override;
202647  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
202649  virtual size_t get_childIndex(SgNode *child) override;
202650 
202651 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
202652  // MS: 08/16/2002 method for generating RTI information
202654  virtual RTIReturnType roseRTI() override;
202655 #endif
202656  /* */
202657 
202658 
202659 
202660  /* name Deprecated Functions
202661  \brief Deprecated functions ... incomplete-documentation
202662 
202663  These functions have been deprecated from use.
202664  */
202665  /* */
202666 
202668  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
202669 
202670  // JJW (10/16/2008): Changed to a single function in Node.code, and put
202671  // getVariant() in #if 0 block to prevent confusing Doxygen
202672 #if 0
202673 
202674  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
202676  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
202677 #endif
202678  /* */
202679 
202680 
202681 
202682 
202683  public:
202684  /* name Traversal Support Functions
202685  \brief Traversal support functions ... incomplete-documentation
202686 
202687  These functions have been made public as part of the design, but they are suggested for internal use
202688  or by particularly knowledgable users for specialized tools or applications.
202689  */
202690  /* */
202691 
202692  // DQ (11/26/2005): Support for visitor pattern mechanims
202693  // (inferior to ROSE traversal mechanism, experimental).
202697 
202698  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
202700  virtual void accept (ROSE_VisitorPattern & visitor) override;
202701 
202702  // DQ (12/26/2005): Support for traversal based on the memory pool
202705  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
202706 
202709  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
202710 
202711  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
202712  // This traversal helps support internal tools that call static member functions.
202713  // note: this function operates on the memory pools.
202716  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
202717  /* */
202718 
202719 
202720  public:
202721  /* name Memory Allocation Functions
202722  \brief Memory allocations functions ... incomplete-documentation
202723 
202724  These functions have been made public as part of the design, but they are suggested for internal use
202725  or by particularly knowledgable users for specialized tools or applications.
202726  */
202727  /* */
202728 
202739  virtual bool isInMemoryPool() override;
202740 
202751  virtual void checkDataMemberPointersIfInMemoryPool() override;
202752 
202753  // DQ (4/30/2006): Modified to be a const function.
202768  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
202769 
202779  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
202780 
202792  virtual long getChildIndex( SgNode* childNode ) const override;
202793 
202794  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
202795  // comment here (changed to be a C style comment and not be a doxygen comment).
202796  /* \brief Constructor for use by AST File I/O Mechanism
202797 
202798  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
202799  which obtained via fast binary file I/O from disk.
202800  */
202801  // SgOmpMasterTaskloopStatement( SgOmpMasterTaskloopStatementStorageClass& source );
202802 
202803 
202804 
202805 
202806 
202807  // JH (10/24/2005): methods added to support the ast file IO
202808  private:
202809 
202810  /* name AST Memory Allocation Support Functions
202811  \brief Memory allocations support....
202812 
202813  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
202814  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
202815  and support the AST File I/O Mechanism.
202816  */
202817  /* */
202818 
202819  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
202820  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
202821  that I use the same type everywhere, if any changes are made. THe second one declares the type
202822  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
202823  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
202824  a correspinding one in the AST_FILE_IO class!
202825  */
202826  // DQ (9/2/2015): This typedef is no longer used, we can't define the
202827  // comment here (changed to be a C style comment and not be a doxygen comment).
202828  /* \brief Typedef used for low level memory access.
202829  */
202830  // typedef unsigned char* TestType;
202831 
202832  // DQ (9/2/2015): This typedef is no longer used, we can't define the
202833  // comment here (changed to be a C style comment and not be a doxygen comment).
202834  /* \brief Typedef used to hold memory addresses as values.
202835  */
202836  // typedef unsigned long AddressType;
202837 
202838 
202839 
202840  // necessary, to have direct access to the p_freepointer and the private methods !
202842  friend class AST_FILE_IO;
202843 
202845  friend class SgOmpMasterTaskloopStatementStorageClass;
202846 
202848  friend class AstSpecificDataManagingClass;
202849 
202851  friend class AstSpecificDataManagingClassStorageClass;
202852 
202853  public:
202855  SgOmpMasterTaskloopStatement( const SgOmpMasterTaskloopStatementStorageClass& source );
202856 
202857  // private: // JJW hack
202858  /*
202859  name AST Memory Allocation Support Variables
202860  Memory allocations support variables
202861 
202862  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
202863  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
202864  and support the AST File I/O Mechanism.
202865  */
202866  /* */
202867 
202868  public:
202869 
202870  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
202871  // to current node (so that it will work cleanly with build functions to specify patterns).
202872  // virtual SgNode* addRegExpAttribute();
202879 
202880 // *** COMMON CODE SECTION ENDS HERE ***
202881 
202882 
202883 // End of memberFunctionString
202884 // Start of memberFunctionString
202885 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
202886 
202887  // the generated cast function
202888  // friend ROSE_DLL_API SgOmpMasterTaskloopStatement* isSgOmpMasterTaskloopStatement ( SgNode* s );
202889 
202891 
202892 
202893 // End of memberFunctionString
202894 // Start of memberFunctionString
202895 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
202896 
202897  void post_construction_initialization() override;
202898 
202899 
202900 // End of memberFunctionString
202901 
202902 
202903  public:
202904  virtual ~SgOmpMasterTaskloopStatement();
202905 
202906 
202907  public:
202908  SgOmpMasterTaskloopStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
202910 
202911  protected:
202912 
202913 
202914 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
202915 
202916 
202917  };
202918 #endif
202919 
202920 // postdeclarations for SgOmpMasterTaskloopStatement
202921 
202922 /* #line 202923 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
202923 
202924 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
202925 
202926 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
202927 
202928 
202929 /* #line 202930 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
202930 
202931 
202932 
202933 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
202934 
202935 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
202936 // This code is automatically generated for each
202937 // terminal and non-terminal within the defined
202938 // grammar. There is a simple way to change the
202939 // code to fix bugs etc. See the ROSE README file
202940 // for directions.
202941 
202942 // tps: (02/22/2010): Adding DLL export requirements
202943 #include "rosedll.h"
202944 
202945 // predeclarations for SgOmpTaskStatement
202946 
202947 /* #line 202948 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
202948 
202949 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
202950 
202951 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
202952 
202953 #if 1
202954 // Class Definition for SgOmpTaskStatement
202956  {
202957  public:
202958 
202959 
202960 /* #line 202961 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
202961 
202962  virtual SgNode* copy ( SgCopyHelp& help) const override;
202963 // Start of memberFunctionString
202964 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
202965 
202966 // *** COMMON CODE SECTION BEGINS HERE ***
202967 
202968  public:
202969 
202970  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
202971  // and not required which is required to match the other aspects of the copy mechanism code generation.
202972  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
202973  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
202974  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
202975  // virtual SgNode* copy ( const SgCopyHelp & help) const;
202976 
202978  virtual std::string class_name() const override;
202979 
202981  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
202982 
202984  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
202985  // static const VariantT static_variant = V_SgOmpTaskStatement;
202986  enum { static_variant = V_SgOmpTaskStatement };
202987 
202988  /* the generated cast function */
202990  ROSE_DLL_API friend SgOmpTaskStatement* isSgOmpTaskStatement( SgNode * s );
202991 
202993  ROSE_DLL_API friend const SgOmpTaskStatement* isSgOmpTaskStatement( const SgNode * s );
202994 
202995  // ******************************************
202996  // * Memory Pool / New / Delete
202997  // ******************************************
202998 
202999  public:
203001  static const unsigned pool_size; //
203003  static std::vector<unsigned char *> pools; //
203005  static SgOmpTaskStatement * next_node; //
203006 
203008  static unsigned long initializeStorageClassArray(SgOmpTaskStatementStorageClass *); //
203009 
203011  static void clearMemoryPool(); //
203012  static void deleteMemoryPool(); //
203013 
203015  static void extendMemoryPoolForFileIO(); //
203016 
203018  static SgOmpTaskStatement * getPointerFromGlobalIndex(unsigned long); //
203020  static SgOmpTaskStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
203021 
203023  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
203025  static void resetValidFreepointers(); //
203027  static unsigned long getNumberOfLastValidPointer(); //
203028 
203029 
203030 #if defined(INLINE_FUNCTIONS)
203031 
203032  inline void *operator new (size_t size);
203033 #else
203034 
203035  void *operator new (size_t size);
203036 #endif
203037 
203038  void operator delete (void* pointer, size_t size);
203039 
203040  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
203041  void operator delete (void* pointer)
203042  {
203043  // This is the generated delete operator...
203044  SgOmpTaskStatement::operator delete (pointer,sizeof(SgOmpTaskStatement));
203045  }
203046 
203048  static size_t numberOfNodes();
203049 
203051  static size_t memoryUsage();
203052 
203053  // End of scope which started in IR nodes specific code
203054  /* */
203055 
203056  /* name Internal Functions
203057  \brief Internal functions ... incomplete-documentation
203058 
203059  These functions have been made public as part of the design, but they are suggested for internal use
203060  or by particularly knowledgeable users for specialized tools or applications.
203061 
203062  \internal We could not make these private because they are required by user for special purposes. And
203063  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
203064 
203065  */
203066 
203067  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
203068  // overridden in every class by *generated* implementation
203070  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
203071  // MS: 06/28/02 container of names of variables or container indices
203072  // used used in the traversal to access AST successor nodes
203073  // overridden in every class by *generated* implementation
203076  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
203077 
203078  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
203079  // than all the vector copies. The implementation for these functions is generated for each class.
203081  virtual size_t get_numberOfTraversalSuccessors() override;
203083  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
203085  virtual size_t get_childIndex(SgNode *child) override;
203086 
203087 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
203088  // MS: 08/16/2002 method for generating RTI information
203090  virtual RTIReturnType roseRTI() override;
203091 #endif
203092  /* */
203093 
203094 
203095 
203096  /* name Deprecated Functions
203097  \brief Deprecated functions ... incomplete-documentation
203098 
203099  These functions have been deprecated from use.
203100  */
203101  /* */
203102 
203104  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
203105 
203106  // JJW (10/16/2008): Changed to a single function in Node.code, and put
203107  // getVariant() in #if 0 block to prevent confusing Doxygen
203108 #if 0
203109 
203110  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
203112  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
203113 #endif
203114  /* */
203115 
203116 
203117 
203118 
203119  public:
203120  /* name Traversal Support Functions
203121  \brief Traversal support functions ... incomplete-documentation
203122 
203123  These functions have been made public as part of the design, but they are suggested for internal use
203124  or by particularly knowledgable users for specialized tools or applications.
203125  */
203126  /* */
203127 
203128  // DQ (11/26/2005): Support for visitor pattern mechanims
203129  // (inferior to ROSE traversal mechanism, experimental).
203133 
203134  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
203136  virtual void accept (ROSE_VisitorPattern & visitor) override;
203137 
203138  // DQ (12/26/2005): Support for traversal based on the memory pool
203141  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
203142 
203145  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
203146 
203147  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
203148  // This traversal helps support internal tools that call static member functions.
203149  // note: this function operates on the memory pools.
203152  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
203153  /* */
203154 
203155 
203156  public:
203157  /* name Memory Allocation Functions
203158  \brief Memory allocations functions ... incomplete-documentation
203159 
203160  These functions have been made public as part of the design, but they are suggested for internal use
203161  or by particularly knowledgable users for specialized tools or applications.
203162  */
203163  /* */
203164 
203175  virtual bool isInMemoryPool() override;
203176 
203187  virtual void checkDataMemberPointersIfInMemoryPool() override;
203188 
203189  // DQ (4/30/2006): Modified to be a const function.
203204  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
203205 
203215  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
203216 
203228  virtual long getChildIndex( SgNode* childNode ) const override;
203229 
203230  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
203231  // comment here (changed to be a C style comment and not be a doxygen comment).
203232  /* \brief Constructor for use by AST File I/O Mechanism
203233 
203234  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
203235  which obtained via fast binary file I/O from disk.
203236  */
203237  // SgOmpTaskStatement( SgOmpTaskStatementStorageClass& source );
203238 
203239 
203240 
203241 
203242 
203243  // JH (10/24/2005): methods added to support the ast file IO
203244  private:
203245 
203246  /* name AST Memory Allocation Support Functions
203247  \brief Memory allocations support....
203248 
203249  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
203250  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
203251  and support the AST File I/O Mechanism.
203252  */
203253  /* */
203254 
203255  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
203256  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
203257  that I use the same type everywhere, if any changes are made. THe second one declares the type
203258  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
203259  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
203260  a correspinding one in the AST_FILE_IO class!
203261  */
203262  // DQ (9/2/2015): This typedef is no longer used, we can't define the
203263  // comment here (changed to be a C style comment and not be a doxygen comment).
203264  /* \brief Typedef used for low level memory access.
203265  */
203266  // typedef unsigned char* TestType;
203267 
203268  // DQ (9/2/2015): This typedef is no longer used, we can't define the
203269  // comment here (changed to be a C style comment and not be a doxygen comment).
203270  /* \brief Typedef used to hold memory addresses as values.
203271  */
203272  // typedef unsigned long AddressType;
203273 
203274 
203275 
203276  // necessary, to have direct access to the p_freepointer and the private methods !
203278  friend class AST_FILE_IO;
203279 
203281  friend class SgOmpTaskStatementStorageClass;
203282 
203284  friend class AstSpecificDataManagingClass;
203285 
203287  friend class AstSpecificDataManagingClassStorageClass;
203288 
203289  public:
203291  SgOmpTaskStatement( const SgOmpTaskStatementStorageClass& source );
203292 
203293  // private: // JJW hack
203294  /*
203295  name AST Memory Allocation Support Variables
203296  Memory allocations support variables
203297 
203298  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
203299  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
203300  and support the AST File I/O Mechanism.
203301  */
203302  /* */
203303 
203304  public:
203305 
203306  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
203307  // to current node (so that it will work cleanly with build functions to specify patterns).
203308  // virtual SgNode* addRegExpAttribute();
203315 
203316 // *** COMMON CODE SECTION ENDS HERE ***
203317 
203318 
203319 // End of memberFunctionString
203320 // Start of memberFunctionString
203321 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
203322 
203323  // the generated cast function
203324  // friend ROSE_DLL_API SgOmpTaskStatement* isSgOmpTaskStatement ( SgNode* s );
203325 
203327 
203328 
203329 // End of memberFunctionString
203330 // Start of memberFunctionString
203331 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
203332 
203333  void post_construction_initialization() override;
203334 
203335 
203336 // End of memberFunctionString
203337 
203338 
203339  public:
203340  virtual ~SgOmpTaskStatement();
203341 
203342 
203343  public:
203344  SgOmpTaskStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
203346 
203347  protected:
203348 
203349 
203350 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
203351 
203352 
203353  };
203354 #endif
203355 
203356 // postdeclarations for SgOmpTaskStatement
203357 
203358 /* #line 203359 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
203359 
203360 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
203361 
203362 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
203363 
203364 
203365 /* #line 203366 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
203366 
203367 
203368 
203369 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
203370 
203371 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
203372 // This code is automatically generated for each
203373 // terminal and non-terminal within the defined
203374 // grammar. There is a simple way to change the
203375 // code to fix bugs etc. See the ROSE README file
203376 // for directions.
203377 
203378 // tps: (02/22/2010): Adding DLL export requirements
203379 #include "rosedll.h"
203380 
203381 // predeclarations for SgOmpDoStatement
203382 
203383 /* #line 203384 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
203384 
203385 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
203386 
203387 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
203388 
203389 #if 1
203390 // Class Definition for SgOmpDoStatement
203391 class ROSE_DLL_API SgOmpDoStatement : public SgUpirFieldBodyStatement
203392  {
203393  public:
203394 
203395 
203396 /* #line 203397 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
203397 
203398  virtual SgNode* copy ( SgCopyHelp& help) const override;
203399 // Start of memberFunctionString
203400 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
203401 
203402 // *** COMMON CODE SECTION BEGINS HERE ***
203403 
203404  public:
203405 
203406  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
203407  // and not required which is required to match the other aspects of the copy mechanism code generation.
203408  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
203409  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
203410  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
203411  // virtual SgNode* copy ( const SgCopyHelp & help) const;
203412 
203414  virtual std::string class_name() const override;
203415 
203417  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
203418 
203420  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
203421  // static const VariantT static_variant = V_SgOmpDoStatement;
203422  enum { static_variant = V_SgOmpDoStatement };
203423 
203424  /* the generated cast function */
203426  ROSE_DLL_API friend SgOmpDoStatement* isSgOmpDoStatement( SgNode * s );
203427 
203429  ROSE_DLL_API friend const SgOmpDoStatement* isSgOmpDoStatement( const SgNode * s );
203430 
203431  // ******************************************
203432  // * Memory Pool / New / Delete
203433  // ******************************************
203434 
203435  public:
203437  static const unsigned pool_size; //
203439  static std::vector<unsigned char *> pools; //
203441  static SgOmpDoStatement * next_node; //
203442 
203444  static unsigned long initializeStorageClassArray(SgOmpDoStatementStorageClass *); //
203445 
203447  static void clearMemoryPool(); //
203448  static void deleteMemoryPool(); //
203449 
203451  static void extendMemoryPoolForFileIO(); //
203452 
203454  static SgOmpDoStatement * getPointerFromGlobalIndex(unsigned long); //
203456  static SgOmpDoStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
203457 
203459  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
203461  static void resetValidFreepointers(); //
203463  static unsigned long getNumberOfLastValidPointer(); //
203464 
203465 
203466 #if defined(INLINE_FUNCTIONS)
203467 
203468  inline void *operator new (size_t size);
203469 #else
203470 
203471  void *operator new (size_t size);
203472 #endif
203473 
203474  void operator delete (void* pointer, size_t size);
203475 
203476  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
203477  void operator delete (void* pointer)
203478  {
203479  // This is the generated delete operator...
203480  SgOmpDoStatement::operator delete (pointer,sizeof(SgOmpDoStatement));
203481  }
203482 
203484  static size_t numberOfNodes();
203485 
203487  static size_t memoryUsage();
203488 
203489  // End of scope which started in IR nodes specific code
203490  /* */
203491 
203492  /* name Internal Functions
203493  \brief Internal functions ... incomplete-documentation
203494 
203495  These functions have been made public as part of the design, but they are suggested for internal use
203496  or by particularly knowledgeable users for specialized tools or applications.
203497 
203498  \internal We could not make these private because they are required by user for special purposes. And
203499  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
203500 
203501  */
203502 
203503  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
203504  // overridden in every class by *generated* implementation
203506  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
203507  // MS: 06/28/02 container of names of variables or container indices
203508  // used used in the traversal to access AST successor nodes
203509  // overridden in every class by *generated* implementation
203512  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
203513 
203514  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
203515  // than all the vector copies. The implementation for these functions is generated for each class.
203517  virtual size_t get_numberOfTraversalSuccessors() override;
203519  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
203521  virtual size_t get_childIndex(SgNode *child) override;
203522 
203523 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
203524  // MS: 08/16/2002 method for generating RTI information
203526  virtual RTIReturnType roseRTI() override;
203527 #endif
203528  /* */
203529 
203530 
203531 
203532  /* name Deprecated Functions
203533  \brief Deprecated functions ... incomplete-documentation
203534 
203535  These functions have been deprecated from use.
203536  */
203537  /* */
203538 
203540  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
203541 
203542  // JJW (10/16/2008): Changed to a single function in Node.code, and put
203543  // getVariant() in #if 0 block to prevent confusing Doxygen
203544 #if 0
203545 
203546  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
203548  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
203549 #endif
203550  /* */
203551 
203552 
203553 
203554 
203555  public:
203556  /* name Traversal Support Functions
203557  \brief Traversal support functions ... incomplete-documentation
203558 
203559  These functions have been made public as part of the design, but they are suggested for internal use
203560  or by particularly knowledgable users for specialized tools or applications.
203561  */
203562  /* */
203563 
203564  // DQ (11/26/2005): Support for visitor pattern mechanims
203565  // (inferior to ROSE traversal mechanism, experimental).
203569 
203570  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
203572  virtual void accept (ROSE_VisitorPattern & visitor) override;
203573 
203574  // DQ (12/26/2005): Support for traversal based on the memory pool
203577  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
203578 
203581  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
203582 
203583  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
203584  // This traversal helps support internal tools that call static member functions.
203585  // note: this function operates on the memory pools.
203588  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
203589  /* */
203590 
203591 
203592  public:
203593  /* name Memory Allocation Functions
203594  \brief Memory allocations functions ... incomplete-documentation
203595 
203596  These functions have been made public as part of the design, but they are suggested for internal use
203597  or by particularly knowledgable users for specialized tools or applications.
203598  */
203599  /* */
203600 
203611  virtual bool isInMemoryPool() override;
203612 
203623  virtual void checkDataMemberPointersIfInMemoryPool() override;
203624 
203625  // DQ (4/30/2006): Modified to be a const function.
203640  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
203641 
203651  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
203652 
203664  virtual long getChildIndex( SgNode* childNode ) const override;
203665 
203666  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
203667  // comment here (changed to be a C style comment and not be a doxygen comment).
203668  /* \brief Constructor for use by AST File I/O Mechanism
203669 
203670  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
203671  which obtained via fast binary file I/O from disk.
203672  */
203673  // SgOmpDoStatement( SgOmpDoStatementStorageClass& source );
203674 
203675 
203676 
203677 
203678 
203679  // JH (10/24/2005): methods added to support the ast file IO
203680  private:
203681 
203682  /* name AST Memory Allocation Support Functions
203683  \brief Memory allocations support....
203684 
203685  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
203686  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
203687  and support the AST File I/O Mechanism.
203688  */
203689  /* */
203690 
203691  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
203692  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
203693  that I use the same type everywhere, if any changes are made. THe second one declares the type
203694  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
203695  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
203696  a correspinding one in the AST_FILE_IO class!
203697  */
203698  // DQ (9/2/2015): This typedef is no longer used, we can't define the
203699  // comment here (changed to be a C style comment and not be a doxygen comment).
203700  /* \brief Typedef used for low level memory access.
203701  */
203702  // typedef unsigned char* TestType;
203703 
203704  // DQ (9/2/2015): This typedef is no longer used, we can't define the
203705  // comment here (changed to be a C style comment and not be a doxygen comment).
203706  /* \brief Typedef used to hold memory addresses as values.
203707  */
203708  // typedef unsigned long AddressType;
203709 
203710 
203711 
203712  // necessary, to have direct access to the p_freepointer and the private methods !
203714  friend class AST_FILE_IO;
203715 
203717  friend class SgOmpDoStatementStorageClass;
203718 
203720  friend class AstSpecificDataManagingClass;
203721 
203723  friend class AstSpecificDataManagingClassStorageClass;
203724 
203725  public:
203727  SgOmpDoStatement( const SgOmpDoStatementStorageClass& source );
203728 
203729  // private: // JJW hack
203730  /*
203731  name AST Memory Allocation Support Variables
203732  Memory allocations support variables
203733 
203734  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
203735  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
203736  and support the AST File I/O Mechanism.
203737  */
203738  /* */
203739 
203740  public:
203741 
203742  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
203743  // to current node (so that it will work cleanly with build functions to specify patterns).
203744  // virtual SgNode* addRegExpAttribute();
203751 
203752 // *** COMMON CODE SECTION ENDS HERE ***
203753 
203754 
203755 // End of memberFunctionString
203756 // Start of memberFunctionString
203757 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
203758 
203759  // the generated cast function
203760  // friend ROSE_DLL_API SgOmpDoStatement* isSgOmpDoStatement ( SgNode* s );
203761 
203763 
203764 
203765 // End of memberFunctionString
203766 // Start of memberFunctionString
203767 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
203768 
203769  void post_construction_initialization() override;
203770 
203771 
203772 // End of memberFunctionString
203773 
203774 
203775  public:
203776  virtual ~SgOmpDoStatement();
203777 
203778 
203779  public:
203780  SgOmpDoStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
203781  SgOmpDoStatement(SgStatement* body);
203782 
203783  protected:
203784 
203785 
203786 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
203787 
203788 
203789  };
203790 #endif
203791 
203792 // postdeclarations for SgOmpDoStatement
203793 
203794 /* #line 203795 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
203795 
203796 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
203797 
203798 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
203799 
203800 
203801 /* #line 203802 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
203802 
203803 
203804 
203805 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
203806 
203807 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
203808 // This code is automatically generated for each
203809 // terminal and non-terminal within the defined
203810 // grammar. There is a simple way to change the
203811 // code to fix bugs etc. See the ROSE README file
203812 // for directions.
203813 
203814 // tps: (02/22/2010): Adding DLL export requirements
203815 #include "rosedll.h"
203816 
203817 // predeclarations for SgOmpSectionsStatement
203818 
203819 /* #line 203820 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
203820 
203821 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
203822 
203823 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
203824 
203825 #if 1
203826 // Class Definition for SgOmpSectionsStatement
203828  {
203829  public:
203830 
203831 
203832 /* #line 203833 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
203833 
203834  virtual SgNode* copy ( SgCopyHelp& help) const override;
203835 // Start of memberFunctionString
203836 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
203837 
203838 // *** COMMON CODE SECTION BEGINS HERE ***
203839 
203840  public:
203841 
203842  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
203843  // and not required which is required to match the other aspects of the copy mechanism code generation.
203844  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
203845  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
203846  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
203847  // virtual SgNode* copy ( const SgCopyHelp & help) const;
203848 
203850  virtual std::string class_name() const override;
203851 
203853  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
203854 
203856  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
203857  // static const VariantT static_variant = V_SgOmpSectionsStatement;
203858  enum { static_variant = V_SgOmpSectionsStatement };
203859 
203860  /* the generated cast function */
203862  ROSE_DLL_API friend SgOmpSectionsStatement* isSgOmpSectionsStatement( SgNode * s );
203863 
203865  ROSE_DLL_API friend const SgOmpSectionsStatement* isSgOmpSectionsStatement( const SgNode * s );
203866 
203867  // ******************************************
203868  // * Memory Pool / New / Delete
203869  // ******************************************
203870 
203871  public:
203873  static const unsigned pool_size; //
203875  static std::vector<unsigned char *> pools; //
203877  static SgOmpSectionsStatement * next_node; //
203878 
203880  static unsigned long initializeStorageClassArray(SgOmpSectionsStatementStorageClass *); //
203881 
203883  static void clearMemoryPool(); //
203884  static void deleteMemoryPool(); //
203885 
203887  static void extendMemoryPoolForFileIO(); //
203888 
203890  static SgOmpSectionsStatement * getPointerFromGlobalIndex(unsigned long); //
203892  static SgOmpSectionsStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
203893 
203895  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
203897  static void resetValidFreepointers(); //
203899  static unsigned long getNumberOfLastValidPointer(); //
203900 
203901 
203902 #if defined(INLINE_FUNCTIONS)
203903 
203904  inline void *operator new (size_t size);
203905 #else
203906 
203907  void *operator new (size_t size);
203908 #endif
203909 
203910  void operator delete (void* pointer, size_t size);
203911 
203912  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
203913  void operator delete (void* pointer)
203914  {
203915  // This is the generated delete operator...
203916  SgOmpSectionsStatement::operator delete (pointer,sizeof(SgOmpSectionsStatement));
203917  }
203918 
203920  static size_t numberOfNodes();
203921 
203923  static size_t memoryUsage();
203924 
203925  // End of scope which started in IR nodes specific code
203926  /* */
203927 
203928  /* name Internal Functions
203929  \brief Internal functions ... incomplete-documentation
203930 
203931  These functions have been made public as part of the design, but they are suggested for internal use
203932  or by particularly knowledgeable users for specialized tools or applications.
203933 
203934  \internal We could not make these private because they are required by user for special purposes. And
203935  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
203936 
203937  */
203938 
203939  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
203940  // overridden in every class by *generated* implementation
203942  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
203943  // MS: 06/28/02 container of names of variables or container indices
203944  // used used in the traversal to access AST successor nodes
203945  // overridden in every class by *generated* implementation
203948  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
203949 
203950  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
203951  // than all the vector copies. The implementation for these functions is generated for each class.
203953  virtual size_t get_numberOfTraversalSuccessors() override;
203955  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
203957  virtual size_t get_childIndex(SgNode *child) override;
203958 
203959 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
203960  // MS: 08/16/2002 method for generating RTI information
203962  virtual RTIReturnType roseRTI() override;
203963 #endif
203964  /* */
203965 
203966 
203967 
203968  /* name Deprecated Functions
203969  \brief Deprecated functions ... incomplete-documentation
203970 
203971  These functions have been deprecated from use.
203972  */
203973  /* */
203974 
203976  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
203977 
203978  // JJW (10/16/2008): Changed to a single function in Node.code, and put
203979  // getVariant() in #if 0 block to prevent confusing Doxygen
203980 #if 0
203981 
203982  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
203984  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
203985 #endif
203986  /* */
203987 
203988 
203989 
203990 
203991  public:
203992  /* name Traversal Support Functions
203993  \brief Traversal support functions ... incomplete-documentation
203994 
203995  These functions have been made public as part of the design, but they are suggested for internal use
203996  or by particularly knowledgable users for specialized tools or applications.
203997  */
203998  /* */
203999 
204000  // DQ (11/26/2005): Support for visitor pattern mechanims
204001  // (inferior to ROSE traversal mechanism, experimental).
204005 
204006  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
204008  virtual void accept (ROSE_VisitorPattern & visitor) override;
204009 
204010  // DQ (12/26/2005): Support for traversal based on the memory pool
204013  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
204014 
204017  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
204018 
204019  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
204020  // This traversal helps support internal tools that call static member functions.
204021  // note: this function operates on the memory pools.
204024  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
204025  /* */
204026 
204027 
204028  public:
204029  /* name Memory Allocation Functions
204030  \brief Memory allocations functions ... incomplete-documentation
204031 
204032  These functions have been made public as part of the design, but they are suggested for internal use
204033  or by particularly knowledgable users for specialized tools or applications.
204034  */
204035  /* */
204036 
204047  virtual bool isInMemoryPool() override;
204048 
204059  virtual void checkDataMemberPointersIfInMemoryPool() override;
204060 
204061  // DQ (4/30/2006): Modified to be a const function.
204076  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
204077 
204087  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
204088 
204100  virtual long getChildIndex( SgNode* childNode ) const override;
204101 
204102  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
204103  // comment here (changed to be a C style comment and not be a doxygen comment).
204104  /* \brief Constructor for use by AST File I/O Mechanism
204105 
204106  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
204107  which obtained via fast binary file I/O from disk.
204108  */
204109  // SgOmpSectionsStatement( SgOmpSectionsStatementStorageClass& source );
204110 
204111 
204112 
204113 
204114 
204115  // JH (10/24/2005): methods added to support the ast file IO
204116  private:
204117 
204118  /* name AST Memory Allocation Support Functions
204119  \brief Memory allocations support....
204120 
204121  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
204122  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
204123  and support the AST File I/O Mechanism.
204124  */
204125  /* */
204126 
204127  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
204128  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
204129  that I use the same type everywhere, if any changes are made. THe second one declares the type
204130  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
204131  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
204132  a correspinding one in the AST_FILE_IO class!
204133  */
204134  // DQ (9/2/2015): This typedef is no longer used, we can't define the
204135  // comment here (changed to be a C style comment and not be a doxygen comment).
204136  /* \brief Typedef used for low level memory access.
204137  */
204138  // typedef unsigned char* TestType;
204139 
204140  // DQ (9/2/2015): This typedef is no longer used, we can't define the
204141  // comment here (changed to be a C style comment and not be a doxygen comment).
204142  /* \brief Typedef used to hold memory addresses as values.
204143  */
204144  // typedef unsigned long AddressType;
204145 
204146 
204147 
204148  // necessary, to have direct access to the p_freepointer and the private methods !
204150  friend class AST_FILE_IO;
204151 
204153  friend class SgOmpSectionsStatementStorageClass;
204154 
204156  friend class AstSpecificDataManagingClass;
204157 
204159  friend class AstSpecificDataManagingClassStorageClass;
204160 
204161  public:
204163  SgOmpSectionsStatement( const SgOmpSectionsStatementStorageClass& source );
204164 
204165  // private: // JJW hack
204166  /*
204167  name AST Memory Allocation Support Variables
204168  Memory allocations support variables
204169 
204170  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
204171  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
204172  and support the AST File I/O Mechanism.
204173  */
204174  /* */
204175 
204176  public:
204177 
204178  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
204179  // to current node (so that it will work cleanly with build functions to specify patterns).
204180  // virtual SgNode* addRegExpAttribute();
204187 
204188 // *** COMMON CODE SECTION ENDS HERE ***
204189 
204190 
204191 // End of memberFunctionString
204192 // Start of memberFunctionString
204193 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
204194 
204195  // the generated cast function
204196  // friend ROSE_DLL_API SgOmpSectionsStatement* isSgOmpSectionsStatement ( SgNode* s );
204197 
204199 
204200 
204201 // End of memberFunctionString
204202 // Start of memberFunctionString
204203 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
204204 
204205  void post_construction_initialization() override;
204206 
204207 
204208 // End of memberFunctionString
204209 
204210 
204211  public:
204212  virtual ~SgOmpSectionsStatement();
204213 
204214 
204215  public:
204216  SgOmpSectionsStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
204218 
204219  protected:
204220 
204221 
204222 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
204223 
204224 
204225  };
204226 #endif
204227 
204228 // postdeclarations for SgOmpSectionsStatement
204229 
204230 /* #line 204231 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
204231 
204232 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
204233 
204234 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
204235 
204236 
204237 /* #line 204238 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
204238 
204239 
204240 
204241 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
204242 
204243 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
204244 // This code is automatically generated for each
204245 // terminal and non-terminal within the defined
204246 // grammar. There is a simple way to change the
204247 // code to fix bugs etc. See the ROSE README file
204248 // for directions.
204249 
204250 // tps: (02/22/2010): Adding DLL export requirements
204251 #include "rosedll.h"
204252 
204253 // predeclarations for SgUpirTaskStatement
204254 
204255 /* #line 204256 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
204256 
204257 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
204258 
204259 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
204260 
204261 #if 1
204262 // Class Definition for SgUpirTaskStatement
204264  {
204265  public:
204266 
204267 
204268 /* #line 204269 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
204269 
204270  virtual SgNode* copy ( SgCopyHelp& help) const override;
204271 // Start of memberFunctionString
204272 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
204273 
204274 // *** COMMON CODE SECTION BEGINS HERE ***
204275 
204276  public:
204277 
204278  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
204279  // and not required which is required to match the other aspects of the copy mechanism code generation.
204280  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
204281  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
204282  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
204283  // virtual SgNode* copy ( const SgCopyHelp & help) const;
204284 
204286  virtual std::string class_name() const override;
204287 
204289  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
204290 
204292  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
204293  // static const VariantT static_variant = V_SgUpirTaskStatement;
204294  enum { static_variant = V_SgUpirTaskStatement };
204295 
204296  /* the generated cast function */
204298  ROSE_DLL_API friend SgUpirTaskStatement* isSgUpirTaskStatement( SgNode * s );
204299 
204301  ROSE_DLL_API friend const SgUpirTaskStatement* isSgUpirTaskStatement( const SgNode * s );
204302 
204303  // ******************************************
204304  // * Memory Pool / New / Delete
204305  // ******************************************
204306 
204307  public:
204309  static const unsigned pool_size; //
204311  static std::vector<unsigned char *> pools; //
204313  static SgUpirTaskStatement * next_node; //
204314 
204316  static unsigned long initializeStorageClassArray(SgUpirTaskStatementStorageClass *); //
204317 
204319  static void clearMemoryPool(); //
204320  static void deleteMemoryPool(); //
204321 
204323  static void extendMemoryPoolForFileIO(); //
204324 
204326  static SgUpirTaskStatement * getPointerFromGlobalIndex(unsigned long); //
204328  static SgUpirTaskStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
204329 
204331  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
204333  static void resetValidFreepointers(); //
204335  static unsigned long getNumberOfLastValidPointer(); //
204336 
204337 
204338 #if defined(INLINE_FUNCTIONS)
204339 
204340  inline void *operator new (size_t size);
204341 #else
204342 
204343  void *operator new (size_t size);
204344 #endif
204345 
204346  void operator delete (void* pointer, size_t size);
204347 
204348  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
204349  void operator delete (void* pointer)
204350  {
204351  // This is the generated delete operator...
204352  SgUpirTaskStatement::operator delete (pointer,sizeof(SgUpirTaskStatement));
204353  }
204354 
204356  static size_t numberOfNodes();
204357 
204359  static size_t memoryUsage();
204360 
204361  // End of scope which started in IR nodes specific code
204362  /* */
204363 
204364  /* name Internal Functions
204365  \brief Internal functions ... incomplete-documentation
204366 
204367  These functions have been made public as part of the design, but they are suggested for internal use
204368  or by particularly knowledgeable users for specialized tools or applications.
204369 
204370  \internal We could not make these private because they are required by user for special purposes. And
204371  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
204372 
204373  */
204374 
204375  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
204376  // overridden in every class by *generated* implementation
204378  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
204379  // MS: 06/28/02 container of names of variables or container indices
204380  // used used in the traversal to access AST successor nodes
204381  // overridden in every class by *generated* implementation
204384  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
204385 
204386  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
204387  // than all the vector copies. The implementation for these functions is generated for each class.
204389  virtual size_t get_numberOfTraversalSuccessors() override;
204391  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
204393  virtual size_t get_childIndex(SgNode *child) override;
204394 
204395 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
204396  // MS: 08/16/2002 method for generating RTI information
204398  virtual RTIReturnType roseRTI() override;
204399 #endif
204400  /* */
204401 
204402 
204403 
204404  /* name Deprecated Functions
204405  \brief Deprecated functions ... incomplete-documentation
204406 
204407  These functions have been deprecated from use.
204408  */
204409  /* */
204410 
204412  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
204413 
204414  // JJW (10/16/2008): Changed to a single function in Node.code, and put
204415  // getVariant() in #if 0 block to prevent confusing Doxygen
204416 #if 0
204417 
204418  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
204420  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
204421 #endif
204422  /* */
204423 
204424 
204425 
204426 
204427  public:
204428  /* name Traversal Support Functions
204429  \brief Traversal support functions ... incomplete-documentation
204430 
204431  These functions have been made public as part of the design, but they are suggested for internal use
204432  or by particularly knowledgable users for specialized tools or applications.
204433  */
204434  /* */
204435 
204436  // DQ (11/26/2005): Support for visitor pattern mechanims
204437  // (inferior to ROSE traversal mechanism, experimental).
204441 
204442  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
204444  virtual void accept (ROSE_VisitorPattern & visitor) override;
204445 
204446  // DQ (12/26/2005): Support for traversal based on the memory pool
204449  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
204450 
204453  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
204454 
204455  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
204456  // This traversal helps support internal tools that call static member functions.
204457  // note: this function operates on the memory pools.
204460  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
204461  /* */
204462 
204463 
204464  public:
204465  /* name Memory Allocation Functions
204466  \brief Memory allocations functions ... incomplete-documentation
204467 
204468  These functions have been made public as part of the design, but they are suggested for internal use
204469  or by particularly knowledgable users for specialized tools or applications.
204470  */
204471  /* */
204472 
204483  virtual bool isInMemoryPool() override;
204484 
204495  virtual void checkDataMemberPointersIfInMemoryPool() override;
204496 
204497  // DQ (4/30/2006): Modified to be a const function.
204512  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
204513 
204523  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
204524 
204536  virtual long getChildIndex( SgNode* childNode ) const override;
204537 
204538  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
204539  // comment here (changed to be a C style comment and not be a doxygen comment).
204540  /* \brief Constructor for use by AST File I/O Mechanism
204541 
204542  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
204543  which obtained via fast binary file I/O from disk.
204544  */
204545  // SgUpirTaskStatement( SgUpirTaskStatementStorageClass& source );
204546 
204547 
204548 
204549 
204550 
204551  // JH (10/24/2005): methods added to support the ast file IO
204552  private:
204553 
204554  /* name AST Memory Allocation Support Functions
204555  \brief Memory allocations support....
204556 
204557  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
204558  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
204559  and support the AST File I/O Mechanism.
204560  */
204561  /* */
204562 
204563  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
204564  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
204565  that I use the same type everywhere, if any changes are made. THe second one declares the type
204566  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
204567  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
204568  a correspinding one in the AST_FILE_IO class!
204569  */
204570  // DQ (9/2/2015): This typedef is no longer used, we can't define the
204571  // comment here (changed to be a C style comment and not be a doxygen comment).
204572  /* \brief Typedef used for low level memory access.
204573  */
204574  // typedef unsigned char* TestType;
204575 
204576  // DQ (9/2/2015): This typedef is no longer used, we can't define the
204577  // comment here (changed to be a C style comment and not be a doxygen comment).
204578  /* \brief Typedef used to hold memory addresses as values.
204579  */
204580  // typedef unsigned long AddressType;
204581 
204582 
204583 
204584  // necessary, to have direct access to the p_freepointer and the private methods !
204586  friend class AST_FILE_IO;
204587 
204589  friend class SgUpirTaskStatementStorageClass;
204590 
204592  friend class AstSpecificDataManagingClass;
204593 
204595  friend class AstSpecificDataManagingClassStorageClass;
204596 
204597  public:
204599  SgUpirTaskStatement( const SgUpirTaskStatementStorageClass& source );
204600 
204601  // private: // JJW hack
204602  /*
204603  name AST Memory Allocation Support Variables
204604  Memory allocations support variables
204605 
204606  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
204607  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
204608  and support the AST File I/O Mechanism.
204609  */
204610  /* */
204611 
204612  public:
204613 
204614  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
204615  // to current node (so that it will work cleanly with build functions to specify patterns).
204616  // virtual SgNode* addRegExpAttribute();
204623 
204624 // *** COMMON CODE SECTION ENDS HERE ***
204625 
204626 
204627 // End of memberFunctionString
204628 // Start of memberFunctionString
204629 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
204630 
204631  // the generated cast function
204632  // friend ROSE_DLL_API SgUpirTaskStatement* isSgUpirTaskStatement ( SgNode* s );
204633 
204635 
204636 
204637 // End of memberFunctionString
204638 // Start of memberFunctionString
204639 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
204640 
204641  void post_construction_initialization() override;
204642 
204643 
204644 // End of memberFunctionString
204645 
204646 
204647  public:
204648  virtual ~SgUpirTaskStatement();
204649 
204650 
204651  public:
204652  SgUpirTaskStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
204654 
204655  protected:
204656 
204657 
204658 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
204659 
204660 
204661  };
204662 #endif
204663 
204664 // postdeclarations for SgUpirTaskStatement
204665 
204666 /* #line 204667 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
204667 
204668 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
204669 
204670 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
204671 
204672 
204673 /* #line 204674 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
204674 
204675 
204676 
204677 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
204678 
204679 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
204680 // This code is automatically generated for each
204681 // terminal and non-terminal within the defined
204682 // grammar. There is a simple way to change the
204683 // code to fix bugs etc. See the ROSE README file
204684 // for directions.
204685 
204686 // tps: (02/22/2010): Adding DLL export requirements
204687 #include "rosedll.h"
204688 
204689 // predeclarations for SgOmpTargetDataStatement
204690 
204691 /* #line 204692 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
204692 
204693 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
204694 
204695 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
204696 
204697 #if 1
204698 // Class Definition for SgOmpTargetDataStatement
204700  {
204701  public:
204702 
204703 
204704 /* #line 204705 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
204705 
204706  virtual SgNode* copy ( SgCopyHelp& help) const override;
204707 // Start of memberFunctionString
204708 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
204709 
204710 // *** COMMON CODE SECTION BEGINS HERE ***
204711 
204712  public:
204713 
204714  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
204715  // and not required which is required to match the other aspects of the copy mechanism code generation.
204716  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
204717  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
204718  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
204719  // virtual SgNode* copy ( const SgCopyHelp & help) const;
204720 
204722  virtual std::string class_name() const override;
204723 
204725  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
204726 
204728  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
204729  // static const VariantT static_variant = V_SgOmpTargetDataStatement;
204730  enum { static_variant = V_SgOmpTargetDataStatement };
204731 
204732  /* the generated cast function */
204734  ROSE_DLL_API friend SgOmpTargetDataStatement* isSgOmpTargetDataStatement( SgNode * s );
204735 
204737  ROSE_DLL_API friend const SgOmpTargetDataStatement* isSgOmpTargetDataStatement( const SgNode * s );
204738 
204739  // ******************************************
204740  // * Memory Pool / New / Delete
204741  // ******************************************
204742 
204743  public:
204745  static const unsigned pool_size; //
204747  static std::vector<unsigned char *> pools; //
204749  static SgOmpTargetDataStatement * next_node; //
204750 
204752  static unsigned long initializeStorageClassArray(SgOmpTargetDataStatementStorageClass *); //
204753 
204755  static void clearMemoryPool(); //
204756  static void deleteMemoryPool(); //
204757 
204759  static void extendMemoryPoolForFileIO(); //
204760 
204762  static SgOmpTargetDataStatement * getPointerFromGlobalIndex(unsigned long); //
204764  static SgOmpTargetDataStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
204765 
204767  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
204769  static void resetValidFreepointers(); //
204771  static unsigned long getNumberOfLastValidPointer(); //
204772 
204773 
204774 #if defined(INLINE_FUNCTIONS)
204775 
204776  inline void *operator new (size_t size);
204777 #else
204778 
204779  void *operator new (size_t size);
204780 #endif
204781 
204782  void operator delete (void* pointer, size_t size);
204783 
204784  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
204785  void operator delete (void* pointer)
204786  {
204787  // This is the generated delete operator...
204788  SgOmpTargetDataStatement::operator delete (pointer,sizeof(SgOmpTargetDataStatement));
204789  }
204790 
204792  static size_t numberOfNodes();
204793 
204795  static size_t memoryUsage();
204796 
204797  // End of scope which started in IR nodes specific code
204798  /* */
204799 
204800  /* name Internal Functions
204801  \brief Internal functions ... incomplete-documentation
204802 
204803  These functions have been made public as part of the design, but they are suggested for internal use
204804  or by particularly knowledgeable users for specialized tools or applications.
204805 
204806  \internal We could not make these private because they are required by user for special purposes. And
204807  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
204808 
204809  */
204810 
204811  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
204812  // overridden in every class by *generated* implementation
204814  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
204815  // MS: 06/28/02 container of names of variables or container indices
204816  // used used in the traversal to access AST successor nodes
204817  // overridden in every class by *generated* implementation
204820  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
204821 
204822  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
204823  // than all the vector copies. The implementation for these functions is generated for each class.
204825  virtual size_t get_numberOfTraversalSuccessors() override;
204827  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
204829  virtual size_t get_childIndex(SgNode *child) override;
204830 
204831 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
204832  // MS: 08/16/2002 method for generating RTI information
204834  virtual RTIReturnType roseRTI() override;
204835 #endif
204836  /* */
204837 
204838 
204839 
204840  /* name Deprecated Functions
204841  \brief Deprecated functions ... incomplete-documentation
204842 
204843  These functions have been deprecated from use.
204844  */
204845  /* */
204846 
204848  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
204849 
204850  // JJW (10/16/2008): Changed to a single function in Node.code, and put
204851  // getVariant() in #if 0 block to prevent confusing Doxygen
204852 #if 0
204853 
204854  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
204856  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
204857 #endif
204858  /* */
204859 
204860 
204861 
204862 
204863  public:
204864  /* name Traversal Support Functions
204865  \brief Traversal support functions ... incomplete-documentation
204866 
204867  These functions have been made public as part of the design, but they are suggested for internal use
204868  or by particularly knowledgable users for specialized tools or applications.
204869  */
204870  /* */
204871 
204872  // DQ (11/26/2005): Support for visitor pattern mechanims
204873  // (inferior to ROSE traversal mechanism, experimental).
204877 
204878  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
204880  virtual void accept (ROSE_VisitorPattern & visitor) override;
204881 
204882  // DQ (12/26/2005): Support for traversal based on the memory pool
204885  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
204886 
204889  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
204890 
204891  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
204892  // This traversal helps support internal tools that call static member functions.
204893  // note: this function operates on the memory pools.
204896  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
204897  /* */
204898 
204899 
204900  public:
204901  /* name Memory Allocation Functions
204902  \brief Memory allocations functions ... incomplete-documentation
204903 
204904  These functions have been made public as part of the design, but they are suggested for internal use
204905  or by particularly knowledgable users for specialized tools or applications.
204906  */
204907  /* */
204908 
204919  virtual bool isInMemoryPool() override;
204920 
204931  virtual void checkDataMemberPointersIfInMemoryPool() override;
204932 
204933  // DQ (4/30/2006): Modified to be a const function.
204948  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
204949 
204959  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
204960 
204972  virtual long getChildIndex( SgNode* childNode ) const override;
204973 
204974  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
204975  // comment here (changed to be a C style comment and not be a doxygen comment).
204976  /* \brief Constructor for use by AST File I/O Mechanism
204977 
204978  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
204979  which obtained via fast binary file I/O from disk.
204980  */
204981  // SgOmpTargetDataStatement( SgOmpTargetDataStatementStorageClass& source );
204982 
204983 
204984 
204985 
204986 
204987  // JH (10/24/2005): methods added to support the ast file IO
204988  private:
204989 
204990  /* name AST Memory Allocation Support Functions
204991  \brief Memory allocations support....
204992 
204993  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
204994  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
204995  and support the AST File I/O Mechanism.
204996  */
204997  /* */
204998 
204999  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
205000  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
205001  that I use the same type everywhere, if any changes are made. THe second one declares the type
205002  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
205003  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
205004  a correspinding one in the AST_FILE_IO class!
205005  */
205006  // DQ (9/2/2015): This typedef is no longer used, we can't define the
205007  // comment here (changed to be a C style comment and not be a doxygen comment).
205008  /* \brief Typedef used for low level memory access.
205009  */
205010  // typedef unsigned char* TestType;
205011 
205012  // DQ (9/2/2015): This typedef is no longer used, we can't define the
205013  // comment here (changed to be a C style comment and not be a doxygen comment).
205014  /* \brief Typedef used to hold memory addresses as values.
205015  */
205016  // typedef unsigned long AddressType;
205017 
205018 
205019 
205020  // necessary, to have direct access to the p_freepointer and the private methods !
205022  friend class AST_FILE_IO;
205023 
205025  friend class SgOmpTargetDataStatementStorageClass;
205026 
205028  friend class AstSpecificDataManagingClass;
205029 
205031  friend class AstSpecificDataManagingClassStorageClass;
205032 
205033  public:
205035  SgOmpTargetDataStatement( const SgOmpTargetDataStatementStorageClass& source );
205036 
205037  // private: // JJW hack
205038  /*
205039  name AST Memory Allocation Support Variables
205040  Memory allocations support variables
205041 
205042  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
205043  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
205044  and support the AST File I/O Mechanism.
205045  */
205046  /* */
205047 
205048  public:
205049 
205050  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
205051  // to current node (so that it will work cleanly with build functions to specify patterns).
205052  // virtual SgNode* addRegExpAttribute();
205059 
205060 // *** COMMON CODE SECTION ENDS HERE ***
205061 
205062 
205063 // End of memberFunctionString
205064 // Start of memberFunctionString
205065 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
205066 
205067  // the generated cast function
205068  // friend ROSE_DLL_API SgOmpTargetDataStatement* isSgOmpTargetDataStatement ( SgNode* s );
205069 
205071 
205072 
205073 // End of memberFunctionString
205074 // Start of memberFunctionString
205075 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
205076 
205077  void post_construction_initialization() override;
205078 
205079 
205080 // End of memberFunctionString
205081 
205082 
205083  public:
205084  virtual ~SgOmpTargetDataStatement();
205085 
205086 
205087  public:
205088  SgOmpTargetDataStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
205090 
205091  protected:
205092 
205093 
205094 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
205095 
205096 
205097  };
205098 #endif
205099 
205100 // postdeclarations for SgOmpTargetDataStatement
205101 
205102 /* #line 205103 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
205103 
205104 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
205105 
205106 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
205107 
205108 
205109 /* #line 205110 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
205110 
205111 
205112 
205113 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
205114 
205115 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
205116 // This code is automatically generated for each
205117 // terminal and non-terminal within the defined
205118 // grammar. There is a simple way to change the
205119 // code to fix bugs etc. See the ROSE README file
205120 // for directions.
205121 
205122 // tps: (02/22/2010): Adding DLL export requirements
205123 #include "rosedll.h"
205124 
205125 // predeclarations for SgOmpTargetParallelForStatement
205126 
205127 /* #line 205128 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
205128 
205129 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
205130 
205131 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
205132 
205133 #if 1
205134 // Class Definition for SgOmpTargetParallelForStatement
205136  {
205137  public:
205138 
205139 
205140 /* #line 205141 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
205141 
205142  virtual SgNode* copy ( SgCopyHelp& help) const override;
205143 // Start of memberFunctionString
205144 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
205145 
205146 // *** COMMON CODE SECTION BEGINS HERE ***
205147 
205148  public:
205149 
205150  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
205151  // and not required which is required to match the other aspects of the copy mechanism code generation.
205152  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
205153  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
205154  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
205155  // virtual SgNode* copy ( const SgCopyHelp & help) const;
205156 
205158  virtual std::string class_name() const override;
205159 
205161  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
205162 
205164  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
205165  // static const VariantT static_variant = V_SgOmpTargetParallelForStatement;
205166  enum { static_variant = V_SgOmpTargetParallelForStatement };
205167 
205168  /* the generated cast function */
205170  ROSE_DLL_API friend SgOmpTargetParallelForStatement* isSgOmpTargetParallelForStatement( SgNode * s );
205171 
205173  ROSE_DLL_API friend const SgOmpTargetParallelForStatement* isSgOmpTargetParallelForStatement( const SgNode * s );
205174 
205175  // ******************************************
205176  // * Memory Pool / New / Delete
205177  // ******************************************
205178 
205179  public:
205181  static const unsigned pool_size; //
205183  static std::vector<unsigned char *> pools; //
205185  static SgOmpTargetParallelForStatement * next_node; //
205186 
205188  static unsigned long initializeStorageClassArray(SgOmpTargetParallelForStatementStorageClass *); //
205189 
205191  static void clearMemoryPool(); //
205192  static void deleteMemoryPool(); //
205193 
205195  static void extendMemoryPoolForFileIO(); //
205196 
205198  static SgOmpTargetParallelForStatement * getPointerFromGlobalIndex(unsigned long); //
205200  static SgOmpTargetParallelForStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
205201 
205203  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
205205  static void resetValidFreepointers(); //
205207  static unsigned long getNumberOfLastValidPointer(); //
205208 
205209 
205210 #if defined(INLINE_FUNCTIONS)
205211 
205212  inline void *operator new (size_t size);
205213 #else
205214 
205215  void *operator new (size_t size);
205216 #endif
205217 
205218  void operator delete (void* pointer, size_t size);
205219 
205220  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
205221  void operator delete (void* pointer)
205222  {
205223  // This is the generated delete operator...
205224  SgOmpTargetParallelForStatement::operator delete (pointer,sizeof(SgOmpTargetParallelForStatement));
205225  }
205226 
205228  static size_t numberOfNodes();
205229 
205231  static size_t memoryUsage();
205232 
205233  // End of scope which started in IR nodes specific code
205234  /* */
205235 
205236  /* name Internal Functions
205237  \brief Internal functions ... incomplete-documentation
205238 
205239  These functions have been made public as part of the design, but they are suggested for internal use
205240  or by particularly knowledgeable users for specialized tools or applications.
205241 
205242  \internal We could not make these private because they are required by user for special purposes. And
205243  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
205244 
205245  */
205246 
205247  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
205248  // overridden in every class by *generated* implementation
205250  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
205251  // MS: 06/28/02 container of names of variables or container indices
205252  // used used in the traversal to access AST successor nodes
205253  // overridden in every class by *generated* implementation
205256  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
205257 
205258  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
205259  // than all the vector copies. The implementation for these functions is generated for each class.
205261  virtual size_t get_numberOfTraversalSuccessors() override;
205263  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
205265  virtual size_t get_childIndex(SgNode *child) override;
205266 
205267 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
205268  // MS: 08/16/2002 method for generating RTI information
205270  virtual RTIReturnType roseRTI() override;
205271 #endif
205272  /* */
205273 
205274 
205275 
205276  /* name Deprecated Functions
205277  \brief Deprecated functions ... incomplete-documentation
205278 
205279  These functions have been deprecated from use.
205280  */
205281  /* */
205282 
205284  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
205285 
205286  // JJW (10/16/2008): Changed to a single function in Node.code, and put
205287  // getVariant() in #if 0 block to prevent confusing Doxygen
205288 #if 0
205289 
205290  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
205292  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
205293 #endif
205294  /* */
205295 
205296 
205297 
205298 
205299  public:
205300  /* name Traversal Support Functions
205301  \brief Traversal support functions ... incomplete-documentation
205302 
205303  These functions have been made public as part of the design, but they are suggested for internal use
205304  or by particularly knowledgable users for specialized tools or applications.
205305  */
205306  /* */
205307 
205308  // DQ (11/26/2005): Support for visitor pattern mechanims
205309  // (inferior to ROSE traversal mechanism, experimental).
205313 
205314  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
205316  virtual void accept (ROSE_VisitorPattern & visitor) override;
205317 
205318  // DQ (12/26/2005): Support for traversal based on the memory pool
205321  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
205322 
205325  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
205326 
205327  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
205328  // This traversal helps support internal tools that call static member functions.
205329  // note: this function operates on the memory pools.
205332  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
205333  /* */
205334 
205335 
205336  public:
205337  /* name Memory Allocation Functions
205338  \brief Memory allocations functions ... incomplete-documentation
205339 
205340  These functions have been made public as part of the design, but they are suggested for internal use
205341  or by particularly knowledgable users for specialized tools or applications.
205342  */
205343  /* */
205344 
205355  virtual bool isInMemoryPool() override;
205356 
205367  virtual void checkDataMemberPointersIfInMemoryPool() override;
205368 
205369  // DQ (4/30/2006): Modified to be a const function.
205384  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
205385 
205395  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
205396 
205408  virtual long getChildIndex( SgNode* childNode ) const override;
205409 
205410  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
205411  // comment here (changed to be a C style comment and not be a doxygen comment).
205412  /* \brief Constructor for use by AST File I/O Mechanism
205413 
205414  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
205415  which obtained via fast binary file I/O from disk.
205416  */
205417  // SgOmpTargetParallelForStatement( SgOmpTargetParallelForStatementStorageClass& source );
205418 
205419 
205420 
205421 
205422 
205423  // JH (10/24/2005): methods added to support the ast file IO
205424  private:
205425 
205426  /* name AST Memory Allocation Support Functions
205427  \brief Memory allocations support....
205428 
205429  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
205430  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
205431  and support the AST File I/O Mechanism.
205432  */
205433  /* */
205434 
205435  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
205436  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
205437  that I use the same type everywhere, if any changes are made. THe second one declares the type
205438  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
205439  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
205440  a correspinding one in the AST_FILE_IO class!
205441  */
205442  // DQ (9/2/2015): This typedef is no longer used, we can't define the
205443  // comment here (changed to be a C style comment and not be a doxygen comment).
205444  /* \brief Typedef used for low level memory access.
205445  */
205446  // typedef unsigned char* TestType;
205447 
205448  // DQ (9/2/2015): This typedef is no longer used, we can't define the
205449  // comment here (changed to be a C style comment and not be a doxygen comment).
205450  /* \brief Typedef used to hold memory addresses as values.
205451  */
205452  // typedef unsigned long AddressType;
205453 
205454 
205455 
205456  // necessary, to have direct access to the p_freepointer and the private methods !
205458  friend class AST_FILE_IO;
205459 
205461  friend class SgOmpTargetParallelForStatementStorageClass;
205462 
205464  friend class AstSpecificDataManagingClass;
205465 
205467  friend class AstSpecificDataManagingClassStorageClass;
205468 
205469  public:
205471  SgOmpTargetParallelForStatement( const SgOmpTargetParallelForStatementStorageClass& source );
205472 
205473  // private: // JJW hack
205474  /*
205475  name AST Memory Allocation Support Variables
205476  Memory allocations support variables
205477 
205478  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
205479  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
205480  and support the AST File I/O Mechanism.
205481  */
205482  /* */
205483 
205484  public:
205485 
205486  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
205487  // to current node (so that it will work cleanly with build functions to specify patterns).
205488  // virtual SgNode* addRegExpAttribute();
205495 
205496 // *** COMMON CODE SECTION ENDS HERE ***
205497 
205498 
205499 // End of memberFunctionString
205500 // Start of memberFunctionString
205501 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
205502 
205503  // the generated cast function
205504  // friend ROSE_DLL_API SgOmpTargetParallelForStatement* isSgOmpTargetParallelForStatement ( SgNode* s );
205505 
205507 
205508 
205509 // End of memberFunctionString
205510 // Start of memberFunctionString
205511 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
205512 
205513  void post_construction_initialization() override;
205514 
205515 
205516 // End of memberFunctionString
205517 
205518 
205519  public:
205520  virtual ~SgOmpTargetParallelForStatement();
205521 
205522 
205523  public:
205524  SgOmpTargetParallelForStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
205526 
205527  protected:
205528 
205529 
205530 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
205531 
205532 
205533  };
205534 #endif
205535 
205536 // postdeclarations for SgOmpTargetParallelForStatement
205537 
205538 /* #line 205539 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
205539 
205540 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
205541 
205542 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
205543 
205544 
205545 /* #line 205546 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
205546 
205547 
205548 
205549 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
205550 
205551 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
205552 // This code is automatically generated for each
205553 // terminal and non-terminal within the defined
205554 // grammar. There is a simple way to change the
205555 // code to fix bugs etc. See the ROSE README file
205556 // for directions.
205557 
205558 // tps: (02/22/2010): Adding DLL export requirements
205559 #include "rosedll.h"
205560 
205561 // predeclarations for SgOmpParallelLoopStatement
205562 
205563 /* #line 205564 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
205564 
205565 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
205566 
205567 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
205568 
205569 #if 1
205570 // Class Definition for SgOmpParallelLoopStatement
205572  {
205573  public:
205574 
205575 
205576 /* #line 205577 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
205577 
205578  virtual SgNode* copy ( SgCopyHelp& help) const override;
205579 // Start of memberFunctionString
205580 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
205581 
205582 // *** COMMON CODE SECTION BEGINS HERE ***
205583 
205584  public:
205585 
205586  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
205587  // and not required which is required to match the other aspects of the copy mechanism code generation.
205588  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
205589  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
205590  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
205591  // virtual SgNode* copy ( const SgCopyHelp & help) const;
205592 
205594  virtual std::string class_name() const override;
205595 
205597  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
205598 
205600  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
205601  // static const VariantT static_variant = V_SgOmpParallelLoopStatement;
205602  enum { static_variant = V_SgOmpParallelLoopStatement };
205603 
205604  /* the generated cast function */
205606  ROSE_DLL_API friend SgOmpParallelLoopStatement* isSgOmpParallelLoopStatement( SgNode * s );
205607 
205609  ROSE_DLL_API friend const SgOmpParallelLoopStatement* isSgOmpParallelLoopStatement( const SgNode * s );
205610 
205611  // ******************************************
205612  // * Memory Pool / New / Delete
205613  // ******************************************
205614 
205615  public:
205617  static const unsigned pool_size; //
205619  static std::vector<unsigned char *> pools; //
205621  static SgOmpParallelLoopStatement * next_node; //
205622 
205624  static unsigned long initializeStorageClassArray(SgOmpParallelLoopStatementStorageClass *); //
205625 
205627  static void clearMemoryPool(); //
205628  static void deleteMemoryPool(); //
205629 
205631  static void extendMemoryPoolForFileIO(); //
205632 
205634  static SgOmpParallelLoopStatement * getPointerFromGlobalIndex(unsigned long); //
205636  static SgOmpParallelLoopStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
205637 
205639  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
205641  static void resetValidFreepointers(); //
205643  static unsigned long getNumberOfLastValidPointer(); //
205644 
205645 
205646 #if defined(INLINE_FUNCTIONS)
205647 
205648  inline void *operator new (size_t size);
205649 #else
205650 
205651  void *operator new (size_t size);
205652 #endif
205653 
205654  void operator delete (void* pointer, size_t size);
205655 
205656  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
205657  void operator delete (void* pointer)
205658  {
205659  // This is the generated delete operator...
205660  SgOmpParallelLoopStatement::operator delete (pointer,sizeof(SgOmpParallelLoopStatement));
205661  }
205662 
205664  static size_t numberOfNodes();
205665 
205667  static size_t memoryUsage();
205668 
205669  // End of scope which started in IR nodes specific code
205670  /* */
205671 
205672  /* name Internal Functions
205673  \brief Internal functions ... incomplete-documentation
205674 
205675  These functions have been made public as part of the design, but they are suggested for internal use
205676  or by particularly knowledgeable users for specialized tools or applications.
205677 
205678  \internal We could not make these private because they are required by user for special purposes. And
205679  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
205680 
205681  */
205682 
205683  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
205684  // overridden in every class by *generated* implementation
205686  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
205687  // MS: 06/28/02 container of names of variables or container indices
205688  // used used in the traversal to access AST successor nodes
205689  // overridden in every class by *generated* implementation
205692  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
205693 
205694  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
205695  // than all the vector copies. The implementation for these functions is generated for each class.
205697  virtual size_t get_numberOfTraversalSuccessors() override;
205699  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
205701  virtual size_t get_childIndex(SgNode *child) override;
205702 
205703 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
205704  // MS: 08/16/2002 method for generating RTI information
205706  virtual RTIReturnType roseRTI() override;
205707 #endif
205708  /* */
205709 
205710 
205711 
205712  /* name Deprecated Functions
205713  \brief Deprecated functions ... incomplete-documentation
205714 
205715  These functions have been deprecated from use.
205716  */
205717  /* */
205718 
205720  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
205721 
205722  // JJW (10/16/2008): Changed to a single function in Node.code, and put
205723  // getVariant() in #if 0 block to prevent confusing Doxygen
205724 #if 0
205725 
205726  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
205728  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
205729 #endif
205730  /* */
205731 
205732 
205733 
205734 
205735  public:
205736  /* name Traversal Support Functions
205737  \brief Traversal support functions ... incomplete-documentation
205738 
205739  These functions have been made public as part of the design, but they are suggested for internal use
205740  or by particularly knowledgable users for specialized tools or applications.
205741  */
205742  /* */
205743 
205744  // DQ (11/26/2005): Support for visitor pattern mechanims
205745  // (inferior to ROSE traversal mechanism, experimental).
205749 
205750  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
205752  virtual void accept (ROSE_VisitorPattern & visitor) override;
205753 
205754  // DQ (12/26/2005): Support for traversal based on the memory pool
205757  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
205758 
205761  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
205762 
205763  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
205764  // This traversal helps support internal tools that call static member functions.
205765  // note: this function operates on the memory pools.
205768  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
205769  /* */
205770 
205771 
205772  public:
205773  /* name Memory Allocation Functions
205774  \brief Memory allocations functions ... incomplete-documentation
205775 
205776  These functions have been made public as part of the design, but they are suggested for internal use
205777  or by particularly knowledgable users for specialized tools or applications.
205778  */
205779  /* */
205780 
205791  virtual bool isInMemoryPool() override;
205792 
205803  virtual void checkDataMemberPointersIfInMemoryPool() override;
205804 
205805  // DQ (4/30/2006): Modified to be a const function.
205820  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
205821 
205831  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
205832 
205844  virtual long getChildIndex( SgNode* childNode ) const override;
205845 
205846  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
205847  // comment here (changed to be a C style comment and not be a doxygen comment).
205848  /* \brief Constructor for use by AST File I/O Mechanism
205849 
205850  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
205851  which obtained via fast binary file I/O from disk.
205852  */
205853  // SgOmpParallelLoopStatement( SgOmpParallelLoopStatementStorageClass& source );
205854 
205855 
205856 
205857 
205858 
205859  // JH (10/24/2005): methods added to support the ast file IO
205860  private:
205861 
205862  /* name AST Memory Allocation Support Functions
205863  \brief Memory allocations support....
205864 
205865  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
205866  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
205867  and support the AST File I/O Mechanism.
205868  */
205869  /* */
205870 
205871  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
205872  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
205873  that I use the same type everywhere, if any changes are made. THe second one declares the type
205874  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
205875  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
205876  a correspinding one in the AST_FILE_IO class!
205877  */
205878  // DQ (9/2/2015): This typedef is no longer used, we can't define the
205879  // comment here (changed to be a C style comment and not be a doxygen comment).
205880  /* \brief Typedef used for low level memory access.
205881  */
205882  // typedef unsigned char* TestType;
205883 
205884  // DQ (9/2/2015): This typedef is no longer used, we can't define the
205885  // comment here (changed to be a C style comment and not be a doxygen comment).
205886  /* \brief Typedef used to hold memory addresses as values.
205887  */
205888  // typedef unsigned long AddressType;
205889 
205890 
205891 
205892  // necessary, to have direct access to the p_freepointer and the private methods !
205894  friend class AST_FILE_IO;
205895 
205897  friend class SgOmpParallelLoopStatementStorageClass;
205898 
205900  friend class AstSpecificDataManagingClass;
205901 
205903  friend class AstSpecificDataManagingClassStorageClass;
205904 
205905  public:
205907  SgOmpParallelLoopStatement( const SgOmpParallelLoopStatementStorageClass& source );
205908 
205909  // private: // JJW hack
205910  /*
205911  name AST Memory Allocation Support Variables
205912  Memory allocations support variables
205913 
205914  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
205915  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
205916  and support the AST File I/O Mechanism.
205917  */
205918  /* */
205919 
205920  public:
205921 
205922  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
205923  // to current node (so that it will work cleanly with build functions to specify patterns).
205924  // virtual SgNode* addRegExpAttribute();
205931 
205932 // *** COMMON CODE SECTION ENDS HERE ***
205933 
205934 
205935 // End of memberFunctionString
205936 // Start of memberFunctionString
205937 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
205938 
205939  // the generated cast function
205940  // friend ROSE_DLL_API SgOmpParallelLoopStatement* isSgOmpParallelLoopStatement ( SgNode* s );
205941 
205943 
205944 
205945 // End of memberFunctionString
205946 // Start of memberFunctionString
205947 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
205948 
205949  void post_construction_initialization() override;
205950 
205951 
205952 // End of memberFunctionString
205953 
205954 
205955  public:
205956  virtual ~SgOmpParallelLoopStatement();
205957 
205958 
205959  public:
205960  SgOmpParallelLoopStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
205962 
205963  protected:
205964 
205965 
205966 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
205967 
205968 
205969  };
205970 #endif
205971 
205972 // postdeclarations for SgOmpParallelLoopStatement
205973 
205974 /* #line 205975 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
205975 
205976 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
205977 
205978 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
205979 
205980 
205981 /* #line 205982 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
205982 
205983 
205984 
205985 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
205986 
205987 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
205988 // This code is automatically generated for each
205989 // terminal and non-terminal within the defined
205990 // grammar. There is a simple way to change the
205991 // code to fix bugs etc. See the ROSE README file
205992 // for directions.
205993 
205994 // tps: (02/22/2010): Adding DLL export requirements
205995 #include "rosedll.h"
205996 
205997 // predeclarations for SgOmpTargetParallelStatement
205998 
205999 /* #line 206000 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
206000 
206001 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
206002 
206003 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
206004 
206005 #if 1
206006 // Class Definition for SgOmpTargetParallelStatement
206008  {
206009  public:
206010 
206011 
206012 /* #line 206013 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
206013 
206014  virtual SgNode* copy ( SgCopyHelp& help) const override;
206015 // Start of memberFunctionString
206016 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
206017 
206018 // *** COMMON CODE SECTION BEGINS HERE ***
206019 
206020  public:
206021 
206022  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
206023  // and not required which is required to match the other aspects of the copy mechanism code generation.
206024  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
206025  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
206026  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
206027  // virtual SgNode* copy ( const SgCopyHelp & help) const;
206028 
206030  virtual std::string class_name() const override;
206031 
206033  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
206034 
206036  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
206037  // static const VariantT static_variant = V_SgOmpTargetParallelStatement;
206038  enum { static_variant = V_SgOmpTargetParallelStatement };
206039 
206040  /* the generated cast function */
206042  ROSE_DLL_API friend SgOmpTargetParallelStatement* isSgOmpTargetParallelStatement( SgNode * s );
206043 
206045  ROSE_DLL_API friend const SgOmpTargetParallelStatement* isSgOmpTargetParallelStatement( const SgNode * s );
206046 
206047  // ******************************************
206048  // * Memory Pool / New / Delete
206049  // ******************************************
206050 
206051  public:
206053  static const unsigned pool_size; //
206055  static std::vector<unsigned char *> pools; //
206057  static SgOmpTargetParallelStatement * next_node; //
206058 
206060  static unsigned long initializeStorageClassArray(SgOmpTargetParallelStatementStorageClass *); //
206061 
206063  static void clearMemoryPool(); //
206064  static void deleteMemoryPool(); //
206065 
206067  static void extendMemoryPoolForFileIO(); //
206068 
206070  static SgOmpTargetParallelStatement * getPointerFromGlobalIndex(unsigned long); //
206072  static SgOmpTargetParallelStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
206073 
206075  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
206077  static void resetValidFreepointers(); //
206079  static unsigned long getNumberOfLastValidPointer(); //
206080 
206081 
206082 #if defined(INLINE_FUNCTIONS)
206083 
206084  inline void *operator new (size_t size);
206085 #else
206086 
206087  void *operator new (size_t size);
206088 #endif
206089 
206090  void operator delete (void* pointer, size_t size);
206091 
206092  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
206093  void operator delete (void* pointer)
206094  {
206095  // This is the generated delete operator...
206096  SgOmpTargetParallelStatement::operator delete (pointer,sizeof(SgOmpTargetParallelStatement));
206097  }
206098 
206100  static size_t numberOfNodes();
206101 
206103  static size_t memoryUsage();
206104 
206105  // End of scope which started in IR nodes specific code
206106  /* */
206107 
206108  /* name Internal Functions
206109  \brief Internal functions ... incomplete-documentation
206110 
206111  These functions have been made public as part of the design, but they are suggested for internal use
206112  or by particularly knowledgeable users for specialized tools or applications.
206113 
206114  \internal We could not make these private because they are required by user for special purposes. And
206115  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
206116 
206117  */
206118 
206119  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
206120  // overridden in every class by *generated* implementation
206122  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
206123  // MS: 06/28/02 container of names of variables or container indices
206124  // used used in the traversal to access AST successor nodes
206125  // overridden in every class by *generated* implementation
206128  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
206129 
206130  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
206131  // than all the vector copies. The implementation for these functions is generated for each class.
206133  virtual size_t get_numberOfTraversalSuccessors() override;
206135  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
206137  virtual size_t get_childIndex(SgNode *child) override;
206138 
206139 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
206140  // MS: 08/16/2002 method for generating RTI information
206142  virtual RTIReturnType roseRTI() override;
206143 #endif
206144  /* */
206145 
206146 
206147 
206148  /* name Deprecated Functions
206149  \brief Deprecated functions ... incomplete-documentation
206150 
206151  These functions have been deprecated from use.
206152  */
206153  /* */
206154 
206156  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
206157 
206158  // JJW (10/16/2008): Changed to a single function in Node.code, and put
206159  // getVariant() in #if 0 block to prevent confusing Doxygen
206160 #if 0
206161 
206162  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
206164  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
206165 #endif
206166  /* */
206167 
206168 
206169 
206170 
206171  public:
206172  /* name Traversal Support Functions
206173  \brief Traversal support functions ... incomplete-documentation
206174 
206175  These functions have been made public as part of the design, but they are suggested for internal use
206176  or by particularly knowledgable users for specialized tools or applications.
206177  */
206178  /* */
206179 
206180  // DQ (11/26/2005): Support for visitor pattern mechanims
206181  // (inferior to ROSE traversal mechanism, experimental).
206185 
206186  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
206188  virtual void accept (ROSE_VisitorPattern & visitor) override;
206189 
206190  // DQ (12/26/2005): Support for traversal based on the memory pool
206193  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
206194 
206197  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
206198 
206199  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
206200  // This traversal helps support internal tools that call static member functions.
206201  // note: this function operates on the memory pools.
206204  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
206205  /* */
206206 
206207 
206208  public:
206209  /* name Memory Allocation Functions
206210  \brief Memory allocations functions ... incomplete-documentation
206211 
206212  These functions have been made public as part of the design, but they are suggested for internal use
206213  or by particularly knowledgable users for specialized tools or applications.
206214  */
206215  /* */
206216 
206227  virtual bool isInMemoryPool() override;
206228 
206239  virtual void checkDataMemberPointersIfInMemoryPool() override;
206240 
206241  // DQ (4/30/2006): Modified to be a const function.
206256  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
206257 
206267  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
206268 
206280  virtual long getChildIndex( SgNode* childNode ) const override;
206281 
206282  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
206283  // comment here (changed to be a C style comment and not be a doxygen comment).
206284  /* \brief Constructor for use by AST File I/O Mechanism
206285 
206286  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
206287  which obtained via fast binary file I/O from disk.
206288  */
206289  // SgOmpTargetParallelStatement( SgOmpTargetParallelStatementStorageClass& source );
206290 
206291 
206292 
206293 
206294 
206295  // JH (10/24/2005): methods added to support the ast file IO
206296  private:
206297 
206298  /* name AST Memory Allocation Support Functions
206299  \brief Memory allocations support....
206300 
206301  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
206302  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
206303  and support the AST File I/O Mechanism.
206304  */
206305  /* */
206306 
206307  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
206308  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
206309  that I use the same type everywhere, if any changes are made. THe second one declares the type
206310  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
206311  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
206312  a correspinding one in the AST_FILE_IO class!
206313  */
206314  // DQ (9/2/2015): This typedef is no longer used, we can't define the
206315  // comment here (changed to be a C style comment and not be a doxygen comment).
206316  /* \brief Typedef used for low level memory access.
206317  */
206318  // typedef unsigned char* TestType;
206319 
206320  // DQ (9/2/2015): This typedef is no longer used, we can't define the
206321  // comment here (changed to be a C style comment and not be a doxygen comment).
206322  /* \brief Typedef used to hold memory addresses as values.
206323  */
206324  // typedef unsigned long AddressType;
206325 
206326 
206327 
206328  // necessary, to have direct access to the p_freepointer and the private methods !
206330  friend class AST_FILE_IO;
206331 
206333  friend class SgOmpTargetParallelStatementStorageClass;
206334 
206336  friend class AstSpecificDataManagingClass;
206337 
206339  friend class AstSpecificDataManagingClassStorageClass;
206340 
206341  public:
206343  SgOmpTargetParallelStatement( const SgOmpTargetParallelStatementStorageClass& source );
206344 
206345  // private: // JJW hack
206346  /*
206347  name AST Memory Allocation Support Variables
206348  Memory allocations support variables
206349 
206350  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
206351  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
206352  and support the AST File I/O Mechanism.
206353  */
206354  /* */
206355 
206356  public:
206357 
206358  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
206359  // to current node (so that it will work cleanly with build functions to specify patterns).
206360  // virtual SgNode* addRegExpAttribute();
206367 
206368 // *** COMMON CODE SECTION ENDS HERE ***
206369 
206370 
206371 // End of memberFunctionString
206372 // Start of memberFunctionString
206373 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
206374 
206375  // the generated cast function
206376  // friend ROSE_DLL_API SgOmpTargetParallelStatement* isSgOmpTargetParallelStatement ( SgNode* s );
206377 
206379 
206380 
206381 // End of memberFunctionString
206382 // Start of memberFunctionString
206383 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
206384 
206385  void post_construction_initialization() override;
206386 
206387 
206388 // End of memberFunctionString
206389 
206390 
206391  public:
206392  virtual ~SgOmpTargetParallelStatement();
206393 
206394 
206395  public:
206396  SgOmpTargetParallelStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
206398 
206399  protected:
206400 
206401 
206402 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
206403 
206404 
206405  };
206406 #endif
206407 
206408 // postdeclarations for SgOmpTargetParallelStatement
206409 
206410 /* #line 206411 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
206411 
206412 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
206413 
206414 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
206415 
206416 
206417 /* #line 206418 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
206418 
206419 
206420 
206421 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
206422 
206423 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
206424 // This code is automatically generated for each
206425 // terminal and non-terminal within the defined
206426 // grammar. There is a simple way to change the
206427 // code to fix bugs etc. See the ROSE README file
206428 // for directions.
206429 
206430 // tps: (02/22/2010): Adding DLL export requirements
206431 #include "rosedll.h"
206432 
206433 // predeclarations for SgOmpTargetParallelForSimdStatement
206434 
206435 /* #line 206436 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
206436 
206437 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
206438 
206439 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
206440 
206441 #if 1
206442 // Class Definition for SgOmpTargetParallelForSimdStatement
206444  {
206445  public:
206446 
206447 
206448 /* #line 206449 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
206449 
206450  virtual SgNode* copy ( SgCopyHelp& help) const override;
206451 // Start of memberFunctionString
206452 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
206453 
206454 // *** COMMON CODE SECTION BEGINS HERE ***
206455 
206456  public:
206457 
206458  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
206459  // and not required which is required to match the other aspects of the copy mechanism code generation.
206460  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
206461  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
206462  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
206463  // virtual SgNode* copy ( const SgCopyHelp & help) const;
206464 
206466  virtual std::string class_name() const override;
206467 
206469  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
206470 
206472  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
206473  // static const VariantT static_variant = V_SgOmpTargetParallelForSimdStatement;
206474  enum { static_variant = V_SgOmpTargetParallelForSimdStatement };
206475 
206476  /* the generated cast function */
206478  ROSE_DLL_API friend SgOmpTargetParallelForSimdStatement* isSgOmpTargetParallelForSimdStatement( SgNode * s );
206479 
206481  ROSE_DLL_API friend const SgOmpTargetParallelForSimdStatement* isSgOmpTargetParallelForSimdStatement( const SgNode * s );
206482 
206483  // ******************************************
206484  // * Memory Pool / New / Delete
206485  // ******************************************
206486 
206487  public:
206489  static const unsigned pool_size; //
206491  static std::vector<unsigned char *> pools; //
206493  static SgOmpTargetParallelForSimdStatement * next_node; //
206494 
206496  static unsigned long initializeStorageClassArray(SgOmpTargetParallelForSimdStatementStorageClass *); //
206497 
206499  static void clearMemoryPool(); //
206500  static void deleteMemoryPool(); //
206501 
206503  static void extendMemoryPoolForFileIO(); //
206504 
206506  static SgOmpTargetParallelForSimdStatement * getPointerFromGlobalIndex(unsigned long); //
206508  static SgOmpTargetParallelForSimdStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
206509 
206511  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
206513  static void resetValidFreepointers(); //
206515  static unsigned long getNumberOfLastValidPointer(); //
206516 
206517 
206518 #if defined(INLINE_FUNCTIONS)
206519 
206520  inline void *operator new (size_t size);
206521 #else
206522 
206523  void *operator new (size_t size);
206524 #endif
206525 
206526  void operator delete (void* pointer, size_t size);
206527 
206528  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
206529  void operator delete (void* pointer)
206530  {
206531  // This is the generated delete operator...
206532  SgOmpTargetParallelForSimdStatement::operator delete (pointer,sizeof(SgOmpTargetParallelForSimdStatement));
206533  }
206534 
206536  static size_t numberOfNodes();
206537 
206539  static size_t memoryUsage();
206540 
206541  // End of scope which started in IR nodes specific code
206542  /* */
206543 
206544  /* name Internal Functions
206545  \brief Internal functions ... incomplete-documentation
206546 
206547  These functions have been made public as part of the design, but they are suggested for internal use
206548  or by particularly knowledgeable users for specialized tools or applications.
206549 
206550  \internal We could not make these private because they are required by user for special purposes. And
206551  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
206552 
206553  */
206554 
206555  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
206556  // overridden in every class by *generated* implementation
206558  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
206559  // MS: 06/28/02 container of names of variables or container indices
206560  // used used in the traversal to access AST successor nodes
206561  // overridden in every class by *generated* implementation
206564  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
206565 
206566  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
206567  // than all the vector copies. The implementation for these functions is generated for each class.
206569  virtual size_t get_numberOfTraversalSuccessors() override;
206571  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
206573  virtual size_t get_childIndex(SgNode *child) override;
206574 
206575 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
206576  // MS: 08/16/2002 method for generating RTI information
206578  virtual RTIReturnType roseRTI() override;
206579 #endif
206580  /* */
206581 
206582 
206583 
206584  /* name Deprecated Functions
206585  \brief Deprecated functions ... incomplete-documentation
206586 
206587  These functions have been deprecated from use.
206588  */
206589  /* */
206590 
206592  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
206593 
206594  // JJW (10/16/2008): Changed to a single function in Node.code, and put
206595  // getVariant() in #if 0 block to prevent confusing Doxygen
206596 #if 0
206597 
206598  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
206600  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
206601 #endif
206602  /* */
206603 
206604 
206605 
206606 
206607  public:
206608  /* name Traversal Support Functions
206609  \brief Traversal support functions ... incomplete-documentation
206610 
206611  These functions have been made public as part of the design, but they are suggested for internal use
206612  or by particularly knowledgable users for specialized tools or applications.
206613  */
206614  /* */
206615 
206616  // DQ (11/26/2005): Support for visitor pattern mechanims
206617  // (inferior to ROSE traversal mechanism, experimental).
206621 
206622  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
206624  virtual void accept (ROSE_VisitorPattern & visitor) override;
206625 
206626  // DQ (12/26/2005): Support for traversal based on the memory pool
206629  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
206630 
206633  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
206634 
206635  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
206636  // This traversal helps support internal tools that call static member functions.
206637  // note: this function operates on the memory pools.
206640  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
206641  /* */
206642 
206643 
206644  public:
206645  /* name Memory Allocation Functions
206646  \brief Memory allocations functions ... incomplete-documentation
206647 
206648  These functions have been made public as part of the design, but they are suggested for internal use
206649  or by particularly knowledgable users for specialized tools or applications.
206650  */
206651  /* */
206652 
206663  virtual bool isInMemoryPool() override;
206664 
206675  virtual void checkDataMemberPointersIfInMemoryPool() override;
206676 
206677  // DQ (4/30/2006): Modified to be a const function.
206692  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
206693 
206703  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
206704 
206716  virtual long getChildIndex( SgNode* childNode ) const override;
206717 
206718  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
206719  // comment here (changed to be a C style comment and not be a doxygen comment).
206720  /* \brief Constructor for use by AST File I/O Mechanism
206721 
206722  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
206723  which obtained via fast binary file I/O from disk.
206724  */
206725  // SgOmpTargetParallelForSimdStatement( SgOmpTargetParallelForSimdStatementStorageClass& source );
206726 
206727 
206728 
206729 
206730 
206731  // JH (10/24/2005): methods added to support the ast file IO
206732  private:
206733 
206734  /* name AST Memory Allocation Support Functions
206735  \brief Memory allocations support....
206736 
206737  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
206738  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
206739  and support the AST File I/O Mechanism.
206740  */
206741  /* */
206742 
206743  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
206744  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
206745  that I use the same type everywhere, if any changes are made. THe second one declares the type
206746  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
206747  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
206748  a correspinding one in the AST_FILE_IO class!
206749  */
206750  // DQ (9/2/2015): This typedef is no longer used, we can't define the
206751  // comment here (changed to be a C style comment and not be a doxygen comment).
206752  /* \brief Typedef used for low level memory access.
206753  */
206754  // typedef unsigned char* TestType;
206755 
206756  // DQ (9/2/2015): This typedef is no longer used, we can't define the
206757  // comment here (changed to be a C style comment and not be a doxygen comment).
206758  /* \brief Typedef used to hold memory addresses as values.
206759  */
206760  // typedef unsigned long AddressType;
206761 
206762 
206763 
206764  // necessary, to have direct access to the p_freepointer and the private methods !
206766  friend class AST_FILE_IO;
206767 
206769  friend class SgOmpTargetParallelForSimdStatementStorageClass;
206770 
206772  friend class AstSpecificDataManagingClass;
206773 
206775  friend class AstSpecificDataManagingClassStorageClass;
206776 
206777  public:
206779  SgOmpTargetParallelForSimdStatement( const SgOmpTargetParallelForSimdStatementStorageClass& source );
206780 
206781  // private: // JJW hack
206782  /*
206783  name AST Memory Allocation Support Variables
206784  Memory allocations support variables
206785 
206786  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
206787  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
206788  and support the AST File I/O Mechanism.
206789  */
206790  /* */
206791 
206792  public:
206793 
206794  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
206795  // to current node (so that it will work cleanly with build functions to specify patterns).
206796  // virtual SgNode* addRegExpAttribute();
206803 
206804 // *** COMMON CODE SECTION ENDS HERE ***
206805 
206806 
206807 // End of memberFunctionString
206808 // Start of memberFunctionString
206809 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
206810 
206811  // the generated cast function
206812  // friend ROSE_DLL_API SgOmpTargetParallelForSimdStatement* isSgOmpTargetParallelForSimdStatement ( SgNode* s );
206813 
206815 
206816 
206817 // End of memberFunctionString
206818 // Start of memberFunctionString
206819 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
206820 
206821  void post_construction_initialization() override;
206822 
206823 
206824 // End of memberFunctionString
206825 
206826 
206827  public:
206829 
206830 
206831  public:
206832  SgOmpTargetParallelForSimdStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
206834 
206835  protected:
206836 
206837 
206838 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
206839 
206840 
206841  };
206842 #endif
206843 
206844 // postdeclarations for SgOmpTargetParallelForSimdStatement
206845 
206846 /* #line 206847 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
206847 
206848 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
206849 
206850 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
206851 
206852 
206853 /* #line 206854 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
206854 
206855 
206856 
206857 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
206858 
206859 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
206860 // This code is automatically generated for each
206861 // terminal and non-terminal within the defined
206862 // grammar. There is a simple way to change the
206863 // code to fix bugs etc. See the ROSE README file
206864 // for directions.
206865 
206866 // tps: (02/22/2010): Adding DLL export requirements
206867 #include "rosedll.h"
206868 
206869 // predeclarations for SgOmpTargetParallelLoopStatement
206870 
206871 /* #line 206872 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
206872 
206873 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
206874 
206875 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
206876 
206877 #if 1
206878 // Class Definition for SgOmpTargetParallelLoopStatement
206880  {
206881  public:
206882 
206883 
206884 /* #line 206885 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
206885 
206886  virtual SgNode* copy ( SgCopyHelp& help) const override;
206887 // Start of memberFunctionString
206888 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
206889 
206890 // *** COMMON CODE SECTION BEGINS HERE ***
206891 
206892  public:
206893 
206894  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
206895  // and not required which is required to match the other aspects of the copy mechanism code generation.
206896  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
206897  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
206898  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
206899  // virtual SgNode* copy ( const SgCopyHelp & help) const;
206900 
206902  virtual std::string class_name() const override;
206903 
206905  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
206906 
206908  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
206909  // static const VariantT static_variant = V_SgOmpTargetParallelLoopStatement;
206910  enum { static_variant = V_SgOmpTargetParallelLoopStatement };
206911 
206912  /* the generated cast function */
206914  ROSE_DLL_API friend SgOmpTargetParallelLoopStatement* isSgOmpTargetParallelLoopStatement( SgNode * s );
206915 
206917  ROSE_DLL_API friend const SgOmpTargetParallelLoopStatement* isSgOmpTargetParallelLoopStatement( const SgNode * s );
206918 
206919  // ******************************************
206920  // * Memory Pool / New / Delete
206921  // ******************************************
206922 
206923  public:
206925  static const unsigned pool_size; //
206927  static std::vector<unsigned char *> pools; //
206929  static SgOmpTargetParallelLoopStatement * next_node; //
206930 
206932  static unsigned long initializeStorageClassArray(SgOmpTargetParallelLoopStatementStorageClass *); //
206933 
206935  static void clearMemoryPool(); //
206936  static void deleteMemoryPool(); //
206937 
206939  static void extendMemoryPoolForFileIO(); //
206940 
206942  static SgOmpTargetParallelLoopStatement * getPointerFromGlobalIndex(unsigned long); //
206944  static SgOmpTargetParallelLoopStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
206945 
206947  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
206949  static void resetValidFreepointers(); //
206951  static unsigned long getNumberOfLastValidPointer(); //
206952 
206953 
206954 #if defined(INLINE_FUNCTIONS)
206955 
206956  inline void *operator new (size_t size);
206957 #else
206958 
206959  void *operator new (size_t size);
206960 #endif
206961 
206962  void operator delete (void* pointer, size_t size);
206963 
206964  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
206965  void operator delete (void* pointer)
206966  {
206967  // This is the generated delete operator...
206968  SgOmpTargetParallelLoopStatement::operator delete (pointer,sizeof(SgOmpTargetParallelLoopStatement));
206969  }
206970 
206972  static size_t numberOfNodes();
206973 
206975  static size_t memoryUsage();
206976 
206977  // End of scope which started in IR nodes specific code
206978  /* */
206979 
206980  /* name Internal Functions
206981  \brief Internal functions ... incomplete-documentation
206982 
206983  These functions have been made public as part of the design, but they are suggested for internal use
206984  or by particularly knowledgeable users for specialized tools or applications.
206985 
206986  \internal We could not make these private because they are required by user for special purposes. And
206987  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
206988 
206989  */
206990 
206991  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
206992  // overridden in every class by *generated* implementation
206994  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
206995  // MS: 06/28/02 container of names of variables or container indices
206996  // used used in the traversal to access AST successor nodes
206997  // overridden in every class by *generated* implementation
207000  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
207001 
207002  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
207003  // than all the vector copies. The implementation for these functions is generated for each class.
207005  virtual size_t get_numberOfTraversalSuccessors() override;
207007  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
207009  virtual size_t get_childIndex(SgNode *child) override;
207010 
207011 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
207012  // MS: 08/16/2002 method for generating RTI information
207014  virtual RTIReturnType roseRTI() override;
207015 #endif
207016  /* */
207017 
207018 
207019 
207020  /* name Deprecated Functions
207021  \brief Deprecated functions ... incomplete-documentation
207022 
207023  These functions have been deprecated from use.
207024  */
207025  /* */
207026 
207028  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
207029 
207030  // JJW (10/16/2008): Changed to a single function in Node.code, and put
207031  // getVariant() in #if 0 block to prevent confusing Doxygen
207032 #if 0
207033 
207034  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
207036  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
207037 #endif
207038  /* */
207039 
207040 
207041 
207042 
207043  public:
207044  /* name Traversal Support Functions
207045  \brief Traversal support functions ... incomplete-documentation
207046 
207047  These functions have been made public as part of the design, but they are suggested for internal use
207048  or by particularly knowledgable users for specialized tools or applications.
207049  */
207050  /* */
207051 
207052  // DQ (11/26/2005): Support for visitor pattern mechanims
207053  // (inferior to ROSE traversal mechanism, experimental).
207057 
207058  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
207060  virtual void accept (ROSE_VisitorPattern & visitor) override;
207061 
207062  // DQ (12/26/2005): Support for traversal based on the memory pool
207065  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
207066 
207069  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
207070 
207071  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
207072  // This traversal helps support internal tools that call static member functions.
207073  // note: this function operates on the memory pools.
207076  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
207077  /* */
207078 
207079 
207080  public:
207081  /* name Memory Allocation Functions
207082  \brief Memory allocations functions ... incomplete-documentation
207083 
207084  These functions have been made public as part of the design, but they are suggested for internal use
207085  or by particularly knowledgable users for specialized tools or applications.
207086  */
207087  /* */
207088 
207099  virtual bool isInMemoryPool() override;
207100 
207111  virtual void checkDataMemberPointersIfInMemoryPool() override;
207112 
207113  // DQ (4/30/2006): Modified to be a const function.
207128  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
207129 
207139  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
207140 
207152  virtual long getChildIndex( SgNode* childNode ) const override;
207153 
207154  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
207155  // comment here (changed to be a C style comment and not be a doxygen comment).
207156  /* \brief Constructor for use by AST File I/O Mechanism
207157 
207158  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
207159  which obtained via fast binary file I/O from disk.
207160  */
207161  // SgOmpTargetParallelLoopStatement( SgOmpTargetParallelLoopStatementStorageClass& source );
207162 
207163 
207164 
207165 
207166 
207167  // JH (10/24/2005): methods added to support the ast file IO
207168  private:
207169 
207170  /* name AST Memory Allocation Support Functions
207171  \brief Memory allocations support....
207172 
207173  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
207174  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
207175  and support the AST File I/O Mechanism.
207176  */
207177  /* */
207178 
207179  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
207180  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
207181  that I use the same type everywhere, if any changes are made. THe second one declares the type
207182  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
207183  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
207184  a correspinding one in the AST_FILE_IO class!
207185  */
207186  // DQ (9/2/2015): This typedef is no longer used, we can't define the
207187  // comment here (changed to be a C style comment and not be a doxygen comment).
207188  /* \brief Typedef used for low level memory access.
207189  */
207190  // typedef unsigned char* TestType;
207191 
207192  // DQ (9/2/2015): This typedef is no longer used, we can't define the
207193  // comment here (changed to be a C style comment and not be a doxygen comment).
207194  /* \brief Typedef used to hold memory addresses as values.
207195  */
207196  // typedef unsigned long AddressType;
207197 
207198 
207199 
207200  // necessary, to have direct access to the p_freepointer and the private methods !
207202  friend class AST_FILE_IO;
207203 
207205  friend class SgOmpTargetParallelLoopStatementStorageClass;
207206 
207208  friend class AstSpecificDataManagingClass;
207209 
207211  friend class AstSpecificDataManagingClassStorageClass;
207212 
207213  public:
207215  SgOmpTargetParallelLoopStatement( const SgOmpTargetParallelLoopStatementStorageClass& source );
207216 
207217  // private: // JJW hack
207218  /*
207219  name AST Memory Allocation Support Variables
207220  Memory allocations support variables
207221 
207222  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
207223  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
207224  and support the AST File I/O Mechanism.
207225  */
207226  /* */
207227 
207228  public:
207229 
207230  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
207231  // to current node (so that it will work cleanly with build functions to specify patterns).
207232  // virtual SgNode* addRegExpAttribute();
207239 
207240 // *** COMMON CODE SECTION ENDS HERE ***
207241 
207242 
207243 // End of memberFunctionString
207244 // Start of memberFunctionString
207245 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
207246 
207247  // the generated cast function
207248  // friend ROSE_DLL_API SgOmpTargetParallelLoopStatement* isSgOmpTargetParallelLoopStatement ( SgNode* s );
207249 
207251 
207252 
207253 // End of memberFunctionString
207254 // Start of memberFunctionString
207255 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
207256 
207257  void post_construction_initialization() override;
207258 
207259 
207260 // End of memberFunctionString
207261 
207262 
207263  public:
207265 
207266 
207267  public:
207268  SgOmpTargetParallelLoopStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
207270 
207271  protected:
207272 
207273 
207274 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
207275 
207276 
207277  };
207278 #endif
207279 
207280 // postdeclarations for SgOmpTargetParallelLoopStatement
207281 
207282 /* #line 207283 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
207283 
207284 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
207285 
207286 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
207287 
207288 
207289 /* #line 207290 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
207290 
207291 
207292 
207293 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
207294 
207295 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
207296 // This code is automatically generated for each
207297 // terminal and non-terminal within the defined
207298 // grammar. There is a simple way to change the
207299 // code to fix bugs etc. See the ROSE README file
207300 // for directions.
207301 
207302 // tps: (02/22/2010): Adding DLL export requirements
207303 #include "rosedll.h"
207304 
207305 // predeclarations for SgOmpTargetSimdStatement
207306 
207307 /* #line 207308 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
207308 
207309 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
207310 
207311 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
207312 
207313 #if 1
207314 // Class Definition for SgOmpTargetSimdStatement
207316  {
207317  public:
207318 
207319 
207320 /* #line 207321 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
207321 
207322  virtual SgNode* copy ( SgCopyHelp& help) const override;
207323 // Start of memberFunctionString
207324 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
207325 
207326 // *** COMMON CODE SECTION BEGINS HERE ***
207327 
207328  public:
207329 
207330  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
207331  // and not required which is required to match the other aspects of the copy mechanism code generation.
207332  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
207333  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
207334  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
207335  // virtual SgNode* copy ( const SgCopyHelp & help) const;
207336 
207338  virtual std::string class_name() const override;
207339 
207341  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
207342 
207344  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
207345  // static const VariantT static_variant = V_SgOmpTargetSimdStatement;
207346  enum { static_variant = V_SgOmpTargetSimdStatement };
207347 
207348  /* the generated cast function */
207350  ROSE_DLL_API friend SgOmpTargetSimdStatement* isSgOmpTargetSimdStatement( SgNode * s );
207351 
207353  ROSE_DLL_API friend const SgOmpTargetSimdStatement* isSgOmpTargetSimdStatement( const SgNode * s );
207354 
207355  // ******************************************
207356  // * Memory Pool / New / Delete
207357  // ******************************************
207358 
207359  public:
207361  static const unsigned pool_size; //
207363  static std::vector<unsigned char *> pools; //
207365  static SgOmpTargetSimdStatement * next_node; //
207366 
207368  static unsigned long initializeStorageClassArray(SgOmpTargetSimdStatementStorageClass *); //
207369 
207371  static void clearMemoryPool(); //
207372  static void deleteMemoryPool(); //
207373 
207375  static void extendMemoryPoolForFileIO(); //
207376 
207378  static SgOmpTargetSimdStatement * getPointerFromGlobalIndex(unsigned long); //
207380  static SgOmpTargetSimdStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
207381 
207383  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
207385  static void resetValidFreepointers(); //
207387  static unsigned long getNumberOfLastValidPointer(); //
207388 
207389 
207390 #if defined(INLINE_FUNCTIONS)
207391 
207392  inline void *operator new (size_t size);
207393 #else
207394 
207395  void *operator new (size_t size);
207396 #endif
207397 
207398  void operator delete (void* pointer, size_t size);
207399 
207400  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
207401  void operator delete (void* pointer)
207402  {
207403  // This is the generated delete operator...
207404  SgOmpTargetSimdStatement::operator delete (pointer,sizeof(SgOmpTargetSimdStatement));
207405  }
207406 
207408  static size_t numberOfNodes();
207409 
207411  static size_t memoryUsage();
207412 
207413  // End of scope which started in IR nodes specific code
207414  /* */
207415 
207416  /* name Internal Functions
207417  \brief Internal functions ... incomplete-documentation
207418 
207419  These functions have been made public as part of the design, but they are suggested for internal use
207420  or by particularly knowledgeable users for specialized tools or applications.
207421 
207422  \internal We could not make these private because they are required by user for special purposes. And
207423  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
207424 
207425  */
207426 
207427  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
207428  // overridden in every class by *generated* implementation
207430  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
207431  // MS: 06/28/02 container of names of variables or container indices
207432  // used used in the traversal to access AST successor nodes
207433  // overridden in every class by *generated* implementation
207436  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
207437 
207438  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
207439  // than all the vector copies. The implementation for these functions is generated for each class.
207441  virtual size_t get_numberOfTraversalSuccessors() override;
207443  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
207445  virtual size_t get_childIndex(SgNode *child) override;
207446 
207447 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
207448  // MS: 08/16/2002 method for generating RTI information
207450  virtual RTIReturnType roseRTI() override;
207451 #endif
207452  /* */
207453 
207454 
207455 
207456  /* name Deprecated Functions
207457  \brief Deprecated functions ... incomplete-documentation
207458 
207459  These functions have been deprecated from use.
207460  */
207461  /* */
207462 
207464  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
207465 
207466  // JJW (10/16/2008): Changed to a single function in Node.code, and put
207467  // getVariant() in #if 0 block to prevent confusing Doxygen
207468 #if 0
207469 
207470  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
207472  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
207473 #endif
207474  /* */
207475 
207476 
207477 
207478 
207479  public:
207480  /* name Traversal Support Functions
207481  \brief Traversal support functions ... incomplete-documentation
207482 
207483  These functions have been made public as part of the design, but they are suggested for internal use
207484  or by particularly knowledgable users for specialized tools or applications.
207485  */
207486  /* */
207487 
207488  // DQ (11/26/2005): Support for visitor pattern mechanims
207489  // (inferior to ROSE traversal mechanism, experimental).
207493 
207494  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
207496  virtual void accept (ROSE_VisitorPattern & visitor) override;
207497 
207498  // DQ (12/26/2005): Support for traversal based on the memory pool
207501  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
207502 
207505  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
207506 
207507  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
207508  // This traversal helps support internal tools that call static member functions.
207509  // note: this function operates on the memory pools.
207512  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
207513  /* */
207514 
207515 
207516  public:
207517  /* name Memory Allocation Functions
207518  \brief Memory allocations functions ... incomplete-documentation
207519 
207520  These functions have been made public as part of the design, but they are suggested for internal use
207521  or by particularly knowledgable users for specialized tools or applications.
207522  */
207523  /* */
207524 
207535  virtual bool isInMemoryPool() override;
207536 
207547  virtual void checkDataMemberPointersIfInMemoryPool() override;
207548 
207549  // DQ (4/30/2006): Modified to be a const function.
207564  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
207565 
207575  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
207576 
207588  virtual long getChildIndex( SgNode* childNode ) const override;
207589 
207590  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
207591  // comment here (changed to be a C style comment and not be a doxygen comment).
207592  /* \brief Constructor for use by AST File I/O Mechanism
207593 
207594  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
207595  which obtained via fast binary file I/O from disk.
207596  */
207597  // SgOmpTargetSimdStatement( SgOmpTargetSimdStatementStorageClass& source );
207598 
207599 
207600 
207601 
207602 
207603  // JH (10/24/2005): methods added to support the ast file IO
207604  private:
207605 
207606  /* name AST Memory Allocation Support Functions
207607  \brief Memory allocations support....
207608 
207609  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
207610  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
207611  and support the AST File I/O Mechanism.
207612  */
207613  /* */
207614 
207615  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
207616  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
207617  that I use the same type everywhere, if any changes are made. THe second one declares the type
207618  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
207619  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
207620  a correspinding one in the AST_FILE_IO class!
207621  */
207622  // DQ (9/2/2015): This typedef is no longer used, we can't define the
207623  // comment here (changed to be a C style comment and not be a doxygen comment).
207624  /* \brief Typedef used for low level memory access.
207625  */
207626  // typedef unsigned char* TestType;
207627 
207628  // DQ (9/2/2015): This typedef is no longer used, we can't define the
207629  // comment here (changed to be a C style comment and not be a doxygen comment).
207630  /* \brief Typedef used to hold memory addresses as values.
207631  */
207632  // typedef unsigned long AddressType;
207633 
207634 
207635 
207636  // necessary, to have direct access to the p_freepointer and the private methods !
207638  friend class AST_FILE_IO;
207639 
207641  friend class SgOmpTargetSimdStatementStorageClass;
207642 
207644  friend class AstSpecificDataManagingClass;
207645 
207647  friend class AstSpecificDataManagingClassStorageClass;
207648 
207649  public:
207651  SgOmpTargetSimdStatement( const SgOmpTargetSimdStatementStorageClass& source );
207652 
207653  // private: // JJW hack
207654  /*
207655  name AST Memory Allocation Support Variables
207656  Memory allocations support variables
207657 
207658  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
207659  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
207660  and support the AST File I/O Mechanism.
207661  */
207662  /* */
207663 
207664  public:
207665 
207666  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
207667  // to current node (so that it will work cleanly with build functions to specify patterns).
207668  // virtual SgNode* addRegExpAttribute();
207675 
207676 // *** COMMON CODE SECTION ENDS HERE ***
207677 
207678 
207679 // End of memberFunctionString
207680 // Start of memberFunctionString
207681 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
207682 
207683  // the generated cast function
207684  // friend ROSE_DLL_API SgOmpTargetSimdStatement* isSgOmpTargetSimdStatement ( SgNode* s );
207685 
207687 
207688 
207689 // End of memberFunctionString
207690 // Start of memberFunctionString
207691 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
207692 
207693  void post_construction_initialization() override;
207694 
207695 
207696 // End of memberFunctionString
207697 
207698 
207699  public:
207700  virtual ~SgOmpTargetSimdStatement();
207701 
207702 
207703  public:
207704  SgOmpTargetSimdStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
207706 
207707  protected:
207708 
207709 
207710 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
207711 
207712 
207713  };
207714 #endif
207715 
207716 // postdeclarations for SgOmpTargetSimdStatement
207717 
207718 /* #line 207719 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
207719 
207720 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
207721 
207722 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
207723 
207724 
207725 /* #line 207726 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
207726 
207727 
207728 
207729 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
207730 
207731 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
207732 // This code is automatically generated for each
207733 // terminal and non-terminal within the defined
207734 // grammar. There is a simple way to change the
207735 // code to fix bugs etc. See the ROSE README file
207736 // for directions.
207737 
207738 // tps: (02/22/2010): Adding DLL export requirements
207739 #include "rosedll.h"
207740 
207741 // predeclarations for SgOmpTargetTeamsStatement
207742 
207743 /* #line 207744 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
207744 
207745 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
207746 
207747 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
207748 
207749 #if 1
207750 // Class Definition for SgOmpTargetTeamsStatement
207752  {
207753  public:
207754 
207755 
207756 /* #line 207757 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
207757 
207758  virtual SgNode* copy ( SgCopyHelp& help) const override;
207759 // Start of memberFunctionString
207760 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
207761 
207762 // *** COMMON CODE SECTION BEGINS HERE ***
207763 
207764  public:
207765 
207766  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
207767  // and not required which is required to match the other aspects of the copy mechanism code generation.
207768  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
207769  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
207770  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
207771  // virtual SgNode* copy ( const SgCopyHelp & help) const;
207772 
207774  virtual std::string class_name() const override;
207775 
207777  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
207778 
207780  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
207781  // static const VariantT static_variant = V_SgOmpTargetTeamsStatement;
207782  enum { static_variant = V_SgOmpTargetTeamsStatement };
207783 
207784  /* the generated cast function */
207786  ROSE_DLL_API friend SgOmpTargetTeamsStatement* isSgOmpTargetTeamsStatement( SgNode * s );
207787 
207789  ROSE_DLL_API friend const SgOmpTargetTeamsStatement* isSgOmpTargetTeamsStatement( const SgNode * s );
207790 
207791  // ******************************************
207792  // * Memory Pool / New / Delete
207793  // ******************************************
207794 
207795  public:
207797  static const unsigned pool_size; //
207799  static std::vector<unsigned char *> pools; //
207801  static SgOmpTargetTeamsStatement * next_node; //
207802 
207804  static unsigned long initializeStorageClassArray(SgOmpTargetTeamsStatementStorageClass *); //
207805 
207807  static void clearMemoryPool(); //
207808  static void deleteMemoryPool(); //
207809 
207811  static void extendMemoryPoolForFileIO(); //
207812 
207814  static SgOmpTargetTeamsStatement * getPointerFromGlobalIndex(unsigned long); //
207816  static SgOmpTargetTeamsStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
207817 
207819  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
207821  static void resetValidFreepointers(); //
207823  static unsigned long getNumberOfLastValidPointer(); //
207824 
207825 
207826 #if defined(INLINE_FUNCTIONS)
207827 
207828  inline void *operator new (size_t size);
207829 #else
207830 
207831  void *operator new (size_t size);
207832 #endif
207833 
207834  void operator delete (void* pointer, size_t size);
207835 
207836  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
207837  void operator delete (void* pointer)
207838  {
207839  // This is the generated delete operator...
207840  SgOmpTargetTeamsStatement::operator delete (pointer,sizeof(SgOmpTargetTeamsStatement));
207841  }
207842 
207844  static size_t numberOfNodes();
207845 
207847  static size_t memoryUsage();
207848 
207849  // End of scope which started in IR nodes specific code
207850  /* */
207851 
207852  /* name Internal Functions
207853  \brief Internal functions ... incomplete-documentation
207854 
207855  These functions have been made public as part of the design, but they are suggested for internal use
207856  or by particularly knowledgeable users for specialized tools or applications.
207857 
207858  \internal We could not make these private because they are required by user for special purposes. And
207859  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
207860 
207861  */
207862 
207863  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
207864  // overridden in every class by *generated* implementation
207866  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
207867  // MS: 06/28/02 container of names of variables or container indices
207868  // used used in the traversal to access AST successor nodes
207869  // overridden in every class by *generated* implementation
207872  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
207873 
207874  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
207875  // than all the vector copies. The implementation for these functions is generated for each class.
207877  virtual size_t get_numberOfTraversalSuccessors() override;
207879  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
207881  virtual size_t get_childIndex(SgNode *child) override;
207882 
207883 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
207884  // MS: 08/16/2002 method for generating RTI information
207886  virtual RTIReturnType roseRTI() override;
207887 #endif
207888  /* */
207889 
207890 
207891 
207892  /* name Deprecated Functions
207893  \brief Deprecated functions ... incomplete-documentation
207894 
207895  These functions have been deprecated from use.
207896  */
207897  /* */
207898 
207900  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
207901 
207902  // JJW (10/16/2008): Changed to a single function in Node.code, and put
207903  // getVariant() in #if 0 block to prevent confusing Doxygen
207904 #if 0
207905 
207906  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
207908  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
207909 #endif
207910  /* */
207911 
207912 
207913 
207914 
207915  public:
207916  /* name Traversal Support Functions
207917  \brief Traversal support functions ... incomplete-documentation
207918 
207919  These functions have been made public as part of the design, but they are suggested for internal use
207920  or by particularly knowledgable users for specialized tools or applications.
207921  */
207922  /* */
207923 
207924  // DQ (11/26/2005): Support for visitor pattern mechanims
207925  // (inferior to ROSE traversal mechanism, experimental).
207929 
207930  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
207932  virtual void accept (ROSE_VisitorPattern & visitor) override;
207933 
207934  // DQ (12/26/2005): Support for traversal based on the memory pool
207937  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
207938 
207941  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
207942 
207943  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
207944  // This traversal helps support internal tools that call static member functions.
207945  // note: this function operates on the memory pools.
207948  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
207949  /* */
207950 
207951 
207952  public:
207953  /* name Memory Allocation Functions
207954  \brief Memory allocations functions ... incomplete-documentation
207955 
207956  These functions have been made public as part of the design, but they are suggested for internal use
207957  or by particularly knowledgable users for specialized tools or applications.
207958  */
207959  /* */
207960 
207971  virtual bool isInMemoryPool() override;
207972 
207983  virtual void checkDataMemberPointersIfInMemoryPool() override;
207984 
207985  // DQ (4/30/2006): Modified to be a const function.
208000  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
208001 
208011  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
208012 
208024  virtual long getChildIndex( SgNode* childNode ) const override;
208025 
208026  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
208027  // comment here (changed to be a C style comment and not be a doxygen comment).
208028  /* \brief Constructor for use by AST File I/O Mechanism
208029 
208030  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
208031  which obtained via fast binary file I/O from disk.
208032  */
208033  // SgOmpTargetTeamsStatement( SgOmpTargetTeamsStatementStorageClass& source );
208034 
208035 
208036 
208037 
208038 
208039  // JH (10/24/2005): methods added to support the ast file IO
208040  private:
208041 
208042  /* name AST Memory Allocation Support Functions
208043  \brief Memory allocations support....
208044 
208045  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
208046  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
208047  and support the AST File I/O Mechanism.
208048  */
208049  /* */
208050 
208051  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
208052  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
208053  that I use the same type everywhere, if any changes are made. THe second one declares the type
208054  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
208055  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
208056  a correspinding one in the AST_FILE_IO class!
208057  */
208058  // DQ (9/2/2015): This typedef is no longer used, we can't define the
208059  // comment here (changed to be a C style comment and not be a doxygen comment).
208060  /* \brief Typedef used for low level memory access.
208061  */
208062  // typedef unsigned char* TestType;
208063 
208064  // DQ (9/2/2015): This typedef is no longer used, we can't define the
208065  // comment here (changed to be a C style comment and not be a doxygen comment).
208066  /* \brief Typedef used to hold memory addresses as values.
208067  */
208068  // typedef unsigned long AddressType;
208069 
208070 
208071 
208072  // necessary, to have direct access to the p_freepointer and the private methods !
208074  friend class AST_FILE_IO;
208075 
208077  friend class SgOmpTargetTeamsStatementStorageClass;
208078 
208080  friend class AstSpecificDataManagingClass;
208081 
208083  friend class AstSpecificDataManagingClassStorageClass;
208084 
208085  public:
208087  SgOmpTargetTeamsStatement( const SgOmpTargetTeamsStatementStorageClass& source );
208088 
208089  // private: // JJW hack
208090  /*
208091  name AST Memory Allocation Support Variables
208092  Memory allocations support variables
208093 
208094  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
208095  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
208096  and support the AST File I/O Mechanism.
208097  */
208098  /* */
208099 
208100  public:
208101 
208102  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
208103  // to current node (so that it will work cleanly with build functions to specify patterns).
208104  // virtual SgNode* addRegExpAttribute();
208111 
208112 // *** COMMON CODE SECTION ENDS HERE ***
208113 
208114 
208115 // End of memberFunctionString
208116 // Start of memberFunctionString
208117 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
208118 
208119  // the generated cast function
208120  // friend ROSE_DLL_API SgOmpTargetTeamsStatement* isSgOmpTargetTeamsStatement ( SgNode* s );
208121 
208123 
208124 
208125 // End of memberFunctionString
208126 // Start of memberFunctionString
208127 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
208128 
208129  void post_construction_initialization() override;
208130 
208131 
208132 // End of memberFunctionString
208133 
208134 
208135  public:
208136  virtual ~SgOmpTargetTeamsStatement();
208137 
208138 
208139  public:
208140  SgOmpTargetTeamsStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
208142 
208143  protected:
208144 
208145 
208146 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
208147 
208148 
208149  };
208150 #endif
208151 
208152 // postdeclarations for SgOmpTargetTeamsStatement
208153 
208154 /* #line 208155 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
208155 
208156 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
208157 
208158 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
208159 
208160 
208161 /* #line 208162 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
208162 
208163 
208164 
208165 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
208166 
208167 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
208168 // This code is automatically generated for each
208169 // terminal and non-terminal within the defined
208170 // grammar. There is a simple way to change the
208171 // code to fix bugs etc. See the ROSE README file
208172 // for directions.
208173 
208174 // tps: (02/22/2010): Adding DLL export requirements
208175 #include "rosedll.h"
208176 
208177 // predeclarations for SgOmpTargetTeamsDistributeStatement
208178 
208179 /* #line 208180 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
208180 
208181 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
208182 
208183 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
208184 
208185 #if 1
208186 // Class Definition for SgOmpTargetTeamsDistributeStatement
208188  {
208189  public:
208190 
208191 
208192 /* #line 208193 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
208193 
208194  virtual SgNode* copy ( SgCopyHelp& help) const override;
208195 // Start of memberFunctionString
208196 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
208197 
208198 // *** COMMON CODE SECTION BEGINS HERE ***
208199 
208200  public:
208201 
208202  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
208203  // and not required which is required to match the other aspects of the copy mechanism code generation.
208204  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
208205  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
208206  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
208207  // virtual SgNode* copy ( const SgCopyHelp & help) const;
208208 
208210  virtual std::string class_name() const override;
208211 
208213  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
208214 
208216  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
208217  // static const VariantT static_variant = V_SgOmpTargetTeamsDistributeStatement;
208218  enum { static_variant = V_SgOmpTargetTeamsDistributeStatement };
208219 
208220  /* the generated cast function */
208222  ROSE_DLL_API friend SgOmpTargetTeamsDistributeStatement* isSgOmpTargetTeamsDistributeStatement( SgNode * s );
208223 
208225  ROSE_DLL_API friend const SgOmpTargetTeamsDistributeStatement* isSgOmpTargetTeamsDistributeStatement( const SgNode * s );
208226 
208227  // ******************************************
208228  // * Memory Pool / New / Delete
208229  // ******************************************
208230 
208231  public:
208233  static const unsigned pool_size; //
208235  static std::vector<unsigned char *> pools; //
208237  static SgOmpTargetTeamsDistributeStatement * next_node; //
208238 
208240  static unsigned long initializeStorageClassArray(SgOmpTargetTeamsDistributeStatementStorageClass *); //
208241 
208243  static void clearMemoryPool(); //
208244  static void deleteMemoryPool(); //
208245 
208247  static void extendMemoryPoolForFileIO(); //
208248 
208250  static SgOmpTargetTeamsDistributeStatement * getPointerFromGlobalIndex(unsigned long); //
208252  static SgOmpTargetTeamsDistributeStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
208253 
208255  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
208257  static void resetValidFreepointers(); //
208259  static unsigned long getNumberOfLastValidPointer(); //
208260 
208261 
208262 #if defined(INLINE_FUNCTIONS)
208263 
208264  inline void *operator new (size_t size);
208265 #else
208266 
208267  void *operator new (size_t size);
208268 #endif
208269 
208270  void operator delete (void* pointer, size_t size);
208271 
208272  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
208273  void operator delete (void* pointer)
208274  {
208275  // This is the generated delete operator...
208276  SgOmpTargetTeamsDistributeStatement::operator delete (pointer,sizeof(SgOmpTargetTeamsDistributeStatement));
208277  }
208278 
208280  static size_t numberOfNodes();
208281 
208283  static size_t memoryUsage();
208284 
208285  // End of scope which started in IR nodes specific code
208286  /* */
208287 
208288  /* name Internal Functions
208289  \brief Internal functions ... incomplete-documentation
208290 
208291  These functions have been made public as part of the design, but they are suggested for internal use
208292  or by particularly knowledgeable users for specialized tools or applications.
208293 
208294  \internal We could not make these private because they are required by user for special purposes. And
208295  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
208296 
208297  */
208298 
208299  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
208300  // overridden in every class by *generated* implementation
208302  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
208303  // MS: 06/28/02 container of names of variables or container indices
208304  // used used in the traversal to access AST successor nodes
208305  // overridden in every class by *generated* implementation
208308  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
208309 
208310  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
208311  // than all the vector copies. The implementation for these functions is generated for each class.
208313  virtual size_t get_numberOfTraversalSuccessors() override;
208315  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
208317  virtual size_t get_childIndex(SgNode *child) override;
208318 
208319 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
208320  // MS: 08/16/2002 method for generating RTI information
208322  virtual RTIReturnType roseRTI() override;
208323 #endif
208324  /* */
208325 
208326 
208327 
208328  /* name Deprecated Functions
208329  \brief Deprecated functions ... incomplete-documentation
208330 
208331  These functions have been deprecated from use.
208332  */
208333  /* */
208334 
208336  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
208337 
208338  // JJW (10/16/2008): Changed to a single function in Node.code, and put
208339  // getVariant() in #if 0 block to prevent confusing Doxygen
208340 #if 0
208341 
208342  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
208344  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
208345 #endif
208346  /* */
208347 
208348 
208349 
208350 
208351  public:
208352  /* name Traversal Support Functions
208353  \brief Traversal support functions ... incomplete-documentation
208354 
208355  These functions have been made public as part of the design, but they are suggested for internal use
208356  or by particularly knowledgable users for specialized tools or applications.
208357  */
208358  /* */
208359 
208360  // DQ (11/26/2005): Support for visitor pattern mechanims
208361  // (inferior to ROSE traversal mechanism, experimental).
208365 
208366  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
208368  virtual void accept (ROSE_VisitorPattern & visitor) override;
208369 
208370  // DQ (12/26/2005): Support for traversal based on the memory pool
208373  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
208374 
208377  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
208378 
208379  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
208380  // This traversal helps support internal tools that call static member functions.
208381  // note: this function operates on the memory pools.
208384  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
208385  /* */
208386 
208387 
208388  public:
208389  /* name Memory Allocation Functions
208390  \brief Memory allocations functions ... incomplete-documentation
208391 
208392  These functions have been made public as part of the design, but they are suggested for internal use
208393  or by particularly knowledgable users for specialized tools or applications.
208394  */
208395  /* */
208396 
208407  virtual bool isInMemoryPool() override;
208408 
208419  virtual void checkDataMemberPointersIfInMemoryPool() override;
208420 
208421  // DQ (4/30/2006): Modified to be a const function.
208436  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
208437 
208447  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
208448 
208460  virtual long getChildIndex( SgNode* childNode ) const override;
208461 
208462  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
208463  // comment here (changed to be a C style comment and not be a doxygen comment).
208464  /* \brief Constructor for use by AST File I/O Mechanism
208465 
208466  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
208467  which obtained via fast binary file I/O from disk.
208468  */
208469  // SgOmpTargetTeamsDistributeStatement( SgOmpTargetTeamsDistributeStatementStorageClass& source );
208470 
208471 
208472 
208473 
208474 
208475  // JH (10/24/2005): methods added to support the ast file IO
208476  private:
208477 
208478  /* name AST Memory Allocation Support Functions
208479  \brief Memory allocations support....
208480 
208481  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
208482  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
208483  and support the AST File I/O Mechanism.
208484  */
208485  /* */
208486 
208487  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
208488  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
208489  that I use the same type everywhere, if any changes are made. THe second one declares the type
208490  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
208491  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
208492  a correspinding one in the AST_FILE_IO class!
208493  */
208494  // DQ (9/2/2015): This typedef is no longer used, we can't define the
208495  // comment here (changed to be a C style comment and not be a doxygen comment).
208496  /* \brief Typedef used for low level memory access.
208497  */
208498  // typedef unsigned char* TestType;
208499 
208500  // DQ (9/2/2015): This typedef is no longer used, we can't define the
208501  // comment here (changed to be a C style comment and not be a doxygen comment).
208502  /* \brief Typedef used to hold memory addresses as values.
208503  */
208504  // typedef unsigned long AddressType;
208505 
208506 
208507 
208508  // necessary, to have direct access to the p_freepointer and the private methods !
208510  friend class AST_FILE_IO;
208511 
208513  friend class SgOmpTargetTeamsDistributeStatementStorageClass;
208514 
208516  friend class AstSpecificDataManagingClass;
208517 
208519  friend class AstSpecificDataManagingClassStorageClass;
208520 
208521  public:
208523  SgOmpTargetTeamsDistributeStatement( const SgOmpTargetTeamsDistributeStatementStorageClass& source );
208524 
208525  // private: // JJW hack
208526  /*
208527  name AST Memory Allocation Support Variables
208528  Memory allocations support variables
208529 
208530  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
208531  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
208532  and support the AST File I/O Mechanism.
208533  */
208534  /* */
208535 
208536  public:
208537 
208538  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
208539  // to current node (so that it will work cleanly with build functions to specify patterns).
208540  // virtual SgNode* addRegExpAttribute();
208547 
208548 // *** COMMON CODE SECTION ENDS HERE ***
208549 
208550 
208551 // End of memberFunctionString
208552 // Start of memberFunctionString
208553 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
208554 
208555  // the generated cast function
208556  // friend ROSE_DLL_API SgOmpTargetTeamsDistributeStatement* isSgOmpTargetTeamsDistributeStatement ( SgNode* s );
208557 
208559 
208560 
208561 // End of memberFunctionString
208562 // Start of memberFunctionString
208563 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
208564 
208565  void post_construction_initialization() override;
208566 
208567 
208568 // End of memberFunctionString
208569 
208570 
208571  public:
208573 
208574 
208575  public:
208576  SgOmpTargetTeamsDistributeStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
208578 
208579  protected:
208580 
208581 
208582 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
208583 
208584 
208585  };
208586 #endif
208587 
208588 // postdeclarations for SgOmpTargetTeamsDistributeStatement
208589 
208590 /* #line 208591 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
208591 
208592 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
208593 
208594 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
208595 
208596 
208597 /* #line 208598 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
208598 
208599 
208600 
208601 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
208602 
208603 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
208604 // This code is automatically generated for each
208605 // terminal and non-terminal within the defined
208606 // grammar. There is a simple way to change the
208607 // code to fix bugs etc. See the ROSE README file
208608 // for directions.
208609 
208610 // tps: (02/22/2010): Adding DLL export requirements
208611 #include "rosedll.h"
208612 
208613 // predeclarations for SgOmpTargetTeamsDistributeSimdStatement
208614 
208615 /* #line 208616 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
208616 
208617 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
208618 
208619 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
208620 
208621 #if 1
208622 // Class Definition for SgOmpTargetTeamsDistributeSimdStatement
208624  {
208625  public:
208626 
208627 
208628 /* #line 208629 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
208629 
208630  virtual SgNode* copy ( SgCopyHelp& help) const override;
208631 // Start of memberFunctionString
208632 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
208633 
208634 // *** COMMON CODE SECTION BEGINS HERE ***
208635 
208636  public:
208637 
208638  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
208639  // and not required which is required to match the other aspects of the copy mechanism code generation.
208640  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
208641  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
208642  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
208643  // virtual SgNode* copy ( const SgCopyHelp & help) const;
208644 
208646  virtual std::string class_name() const override;
208647 
208649  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
208650 
208652  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
208653  // static const VariantT static_variant = V_SgOmpTargetTeamsDistributeSimdStatement;
208654  enum { static_variant = V_SgOmpTargetTeamsDistributeSimdStatement };
208655 
208656  /* the generated cast function */
208658  ROSE_DLL_API friend SgOmpTargetTeamsDistributeSimdStatement* isSgOmpTargetTeamsDistributeSimdStatement( SgNode * s );
208659 
208661  ROSE_DLL_API friend const SgOmpTargetTeamsDistributeSimdStatement* isSgOmpTargetTeamsDistributeSimdStatement( const SgNode * s );
208662 
208663  // ******************************************
208664  // * Memory Pool / New / Delete
208665  // ******************************************
208666 
208667  public:
208669  static const unsigned pool_size; //
208671  static std::vector<unsigned char *> pools; //
208673  static SgOmpTargetTeamsDistributeSimdStatement * next_node; //
208674 
208676  static unsigned long initializeStorageClassArray(SgOmpTargetTeamsDistributeSimdStatementStorageClass *); //
208677 
208679  static void clearMemoryPool(); //
208680  static void deleteMemoryPool(); //
208681 
208683  static void extendMemoryPoolForFileIO(); //
208684 
208686  static SgOmpTargetTeamsDistributeSimdStatement * getPointerFromGlobalIndex(unsigned long); //
208688  static SgOmpTargetTeamsDistributeSimdStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
208689 
208691  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
208693  static void resetValidFreepointers(); //
208695  static unsigned long getNumberOfLastValidPointer(); //
208696 
208697 
208698 #if defined(INLINE_FUNCTIONS)
208699 
208700  inline void *operator new (size_t size);
208701 #else
208702 
208703  void *operator new (size_t size);
208704 #endif
208705 
208706  void operator delete (void* pointer, size_t size);
208707 
208708  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
208709  void operator delete (void* pointer)
208710  {
208711  // This is the generated delete operator...
208712  SgOmpTargetTeamsDistributeSimdStatement::operator delete (pointer,sizeof(SgOmpTargetTeamsDistributeSimdStatement));
208713  }
208714 
208716  static size_t numberOfNodes();
208717 
208719  static size_t memoryUsage();
208720 
208721  // End of scope which started in IR nodes specific code
208722  /* */
208723 
208724  /* name Internal Functions
208725  \brief Internal functions ... incomplete-documentation
208726 
208727  These functions have been made public as part of the design, but they are suggested for internal use
208728  or by particularly knowledgeable users for specialized tools or applications.
208729 
208730  \internal We could not make these private because they are required by user for special purposes. And
208731  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
208732 
208733  */
208734 
208735  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
208736  // overridden in every class by *generated* implementation
208738  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
208739  // MS: 06/28/02 container of names of variables or container indices
208740  // used used in the traversal to access AST successor nodes
208741  // overridden in every class by *generated* implementation
208744  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
208745 
208746  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
208747  // than all the vector copies. The implementation for these functions is generated for each class.
208749  virtual size_t get_numberOfTraversalSuccessors() override;
208751  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
208753  virtual size_t get_childIndex(SgNode *child) override;
208754 
208755 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
208756  // MS: 08/16/2002 method for generating RTI information
208758  virtual RTIReturnType roseRTI() override;
208759 #endif
208760  /* */
208761 
208762 
208763 
208764  /* name Deprecated Functions
208765  \brief Deprecated functions ... incomplete-documentation
208766 
208767  These functions have been deprecated from use.
208768  */
208769  /* */
208770 
208772  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
208773 
208774  // JJW (10/16/2008): Changed to a single function in Node.code, and put
208775  // getVariant() in #if 0 block to prevent confusing Doxygen
208776 #if 0
208777 
208778  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
208780  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
208781 #endif
208782  /* */
208783 
208784 
208785 
208786 
208787  public:
208788  /* name Traversal Support Functions
208789  \brief Traversal support functions ... incomplete-documentation
208790 
208791  These functions have been made public as part of the design, but they are suggested for internal use
208792  or by particularly knowledgable users for specialized tools or applications.
208793  */
208794  /* */
208795 
208796  // DQ (11/26/2005): Support for visitor pattern mechanims
208797  // (inferior to ROSE traversal mechanism, experimental).
208801 
208802  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
208804  virtual void accept (ROSE_VisitorPattern & visitor) override;
208805 
208806  // DQ (12/26/2005): Support for traversal based on the memory pool
208809  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
208810 
208813  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
208814 
208815  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
208816  // This traversal helps support internal tools that call static member functions.
208817  // note: this function operates on the memory pools.
208820  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
208821  /* */
208822 
208823 
208824  public:
208825  /* name Memory Allocation Functions
208826  \brief Memory allocations functions ... incomplete-documentation
208827 
208828  These functions have been made public as part of the design, but they are suggested for internal use
208829  or by particularly knowledgable users for specialized tools or applications.
208830  */
208831  /* */
208832 
208843  virtual bool isInMemoryPool() override;
208844 
208855  virtual void checkDataMemberPointersIfInMemoryPool() override;
208856 
208857  // DQ (4/30/2006): Modified to be a const function.
208872  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
208873 
208883  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
208884 
208896  virtual long getChildIndex( SgNode* childNode ) const override;
208897 
208898  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
208899  // comment here (changed to be a C style comment and not be a doxygen comment).
208900  /* \brief Constructor for use by AST File I/O Mechanism
208901 
208902  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
208903  which obtained via fast binary file I/O from disk.
208904  */
208905  // SgOmpTargetTeamsDistributeSimdStatement( SgOmpTargetTeamsDistributeSimdStatementStorageClass& source );
208906 
208907 
208908 
208909 
208910 
208911  // JH (10/24/2005): methods added to support the ast file IO
208912  private:
208913 
208914  /* name AST Memory Allocation Support Functions
208915  \brief Memory allocations support....
208916 
208917  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
208918  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
208919  and support the AST File I/O Mechanism.
208920  */
208921  /* */
208922 
208923  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
208924  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
208925  that I use the same type everywhere, if any changes are made. THe second one declares the type
208926  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
208927  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
208928  a correspinding one in the AST_FILE_IO class!
208929  */
208930  // DQ (9/2/2015): This typedef is no longer used, we can't define the
208931  // comment here (changed to be a C style comment and not be a doxygen comment).
208932  /* \brief Typedef used for low level memory access.
208933  */
208934  // typedef unsigned char* TestType;
208935 
208936  // DQ (9/2/2015): This typedef is no longer used, we can't define the
208937  // comment here (changed to be a C style comment and not be a doxygen comment).
208938  /* \brief Typedef used to hold memory addresses as values.
208939  */
208940  // typedef unsigned long AddressType;
208941 
208942 
208943 
208944  // necessary, to have direct access to the p_freepointer and the private methods !
208946  friend class AST_FILE_IO;
208947 
208949  friend class SgOmpTargetTeamsDistributeSimdStatementStorageClass;
208950 
208952  friend class AstSpecificDataManagingClass;
208953 
208955  friend class AstSpecificDataManagingClassStorageClass;
208956 
208957  public:
208959  SgOmpTargetTeamsDistributeSimdStatement( const SgOmpTargetTeamsDistributeSimdStatementStorageClass& source );
208960 
208961  // private: // JJW hack
208962  /*
208963  name AST Memory Allocation Support Variables
208964  Memory allocations support variables
208965 
208966  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
208967  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
208968  and support the AST File I/O Mechanism.
208969  */
208970  /* */
208971 
208972  public:
208973 
208974  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
208975  // to current node (so that it will work cleanly with build functions to specify patterns).
208976  // virtual SgNode* addRegExpAttribute();
208983 
208984 // *** COMMON CODE SECTION ENDS HERE ***
208985 
208986 
208987 // End of memberFunctionString
208988 // Start of memberFunctionString
208989 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
208990 
208991  // the generated cast function
208992  // friend ROSE_DLL_API SgOmpTargetTeamsDistributeSimdStatement* isSgOmpTargetTeamsDistributeSimdStatement ( SgNode* s );
208993 
208995 
208996 
208997 // End of memberFunctionString
208998 // Start of memberFunctionString
208999 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
209000 
209001  void post_construction_initialization() override;
209002 
209003 
209004 // End of memberFunctionString
209005 
209006 
209007  public:
209009 
209010 
209011  public:
209012  SgOmpTargetTeamsDistributeSimdStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
209014 
209015  protected:
209016 
209017 
209018 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
209019 
209020 
209021  };
209022 #endif
209023 
209024 // postdeclarations for SgOmpTargetTeamsDistributeSimdStatement
209025 
209026 /* #line 209027 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
209027 
209028 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
209029 
209030 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
209031 
209032 
209033 /* #line 209034 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
209034 
209035 
209036 
209037 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
209038 
209039 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
209040 // This code is automatically generated for each
209041 // terminal and non-terminal within the defined
209042 // grammar. There is a simple way to change the
209043 // code to fix bugs etc. See the ROSE README file
209044 // for directions.
209045 
209046 // tps: (02/22/2010): Adding DLL export requirements
209047 #include "rosedll.h"
209048 
209049 // predeclarations for SgOmpTargetTeamsLoopStatement
209050 
209051 /* #line 209052 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
209052 
209053 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
209054 
209055 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
209056 
209057 #if 1
209058 // Class Definition for SgOmpTargetTeamsLoopStatement
209060  {
209061  public:
209062 
209063 
209064 /* #line 209065 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
209065 
209066  virtual SgNode* copy ( SgCopyHelp& help) const override;
209067 // Start of memberFunctionString
209068 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
209069 
209070 // *** COMMON CODE SECTION BEGINS HERE ***
209071 
209072  public:
209073 
209074  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
209075  // and not required which is required to match the other aspects of the copy mechanism code generation.
209076  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
209077  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
209078  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
209079  // virtual SgNode* copy ( const SgCopyHelp & help) const;
209080 
209082  virtual std::string class_name() const override;
209083 
209085  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
209086 
209088  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
209089  // static const VariantT static_variant = V_SgOmpTargetTeamsLoopStatement;
209090  enum { static_variant = V_SgOmpTargetTeamsLoopStatement };
209091 
209092  /* the generated cast function */
209094  ROSE_DLL_API friend SgOmpTargetTeamsLoopStatement* isSgOmpTargetTeamsLoopStatement( SgNode * s );
209095 
209097  ROSE_DLL_API friend const SgOmpTargetTeamsLoopStatement* isSgOmpTargetTeamsLoopStatement( const SgNode * s );
209098 
209099  // ******************************************
209100  // * Memory Pool / New / Delete
209101  // ******************************************
209102 
209103  public:
209105  static const unsigned pool_size; //
209107  static std::vector<unsigned char *> pools; //
209109  static SgOmpTargetTeamsLoopStatement * next_node; //
209110 
209112  static unsigned long initializeStorageClassArray(SgOmpTargetTeamsLoopStatementStorageClass *); //
209113 
209115  static void clearMemoryPool(); //
209116  static void deleteMemoryPool(); //
209117 
209119  static void extendMemoryPoolForFileIO(); //
209120 
209122  static SgOmpTargetTeamsLoopStatement * getPointerFromGlobalIndex(unsigned long); //
209124  static SgOmpTargetTeamsLoopStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
209125 
209127  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
209129  static void resetValidFreepointers(); //
209131  static unsigned long getNumberOfLastValidPointer(); //
209132 
209133 
209134 #if defined(INLINE_FUNCTIONS)
209135 
209136  inline void *operator new (size_t size);
209137 #else
209138 
209139  void *operator new (size_t size);
209140 #endif
209141 
209142  void operator delete (void* pointer, size_t size);
209143 
209144  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
209145  void operator delete (void* pointer)
209146  {
209147  // This is the generated delete operator...
209148  SgOmpTargetTeamsLoopStatement::operator delete (pointer,sizeof(SgOmpTargetTeamsLoopStatement));
209149  }
209150 
209152  static size_t numberOfNodes();
209153 
209155  static size_t memoryUsage();
209156 
209157  // End of scope which started in IR nodes specific code
209158  /* */
209159 
209160  /* name Internal Functions
209161  \brief Internal functions ... incomplete-documentation
209162 
209163  These functions have been made public as part of the design, but they are suggested for internal use
209164  or by particularly knowledgeable users for specialized tools or applications.
209165 
209166  \internal We could not make these private because they are required by user for special purposes. And
209167  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
209168 
209169  */
209170 
209171  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
209172  // overridden in every class by *generated* implementation
209174  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
209175  // MS: 06/28/02 container of names of variables or container indices
209176  // used used in the traversal to access AST successor nodes
209177  // overridden in every class by *generated* implementation
209180  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
209181 
209182  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
209183  // than all the vector copies. The implementation for these functions is generated for each class.
209185  virtual size_t get_numberOfTraversalSuccessors() override;
209187  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
209189  virtual size_t get_childIndex(SgNode *child) override;
209190 
209191 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
209192  // MS: 08/16/2002 method for generating RTI information
209194  virtual RTIReturnType roseRTI() override;
209195 #endif
209196  /* */
209197 
209198 
209199 
209200  /* name Deprecated Functions
209201  \brief Deprecated functions ... incomplete-documentation
209202 
209203  These functions have been deprecated from use.
209204  */
209205  /* */
209206 
209208  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
209209 
209210  // JJW (10/16/2008): Changed to a single function in Node.code, and put
209211  // getVariant() in #if 0 block to prevent confusing Doxygen
209212 #if 0
209213 
209214  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
209216  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
209217 #endif
209218  /* */
209219 
209220 
209221 
209222 
209223  public:
209224  /* name Traversal Support Functions
209225  \brief Traversal support functions ... incomplete-documentation
209226 
209227  These functions have been made public as part of the design, but they are suggested for internal use
209228  or by particularly knowledgable users for specialized tools or applications.
209229  */
209230  /* */
209231 
209232  // DQ (11/26/2005): Support for visitor pattern mechanims
209233  // (inferior to ROSE traversal mechanism, experimental).
209237 
209238  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
209240  virtual void accept (ROSE_VisitorPattern & visitor) override;
209241 
209242  // DQ (12/26/2005): Support for traversal based on the memory pool
209245  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
209246 
209249  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
209250 
209251  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
209252  // This traversal helps support internal tools that call static member functions.
209253  // note: this function operates on the memory pools.
209256  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
209257  /* */
209258 
209259 
209260  public:
209261  /* name Memory Allocation Functions
209262  \brief Memory allocations functions ... incomplete-documentation
209263 
209264  These functions have been made public as part of the design, but they are suggested for internal use
209265  or by particularly knowledgable users for specialized tools or applications.
209266  */
209267  /* */
209268 
209279  virtual bool isInMemoryPool() override;
209280 
209291  virtual void checkDataMemberPointersIfInMemoryPool() override;
209292 
209293  // DQ (4/30/2006): Modified to be a const function.
209308  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
209309 
209319  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
209320 
209332  virtual long getChildIndex( SgNode* childNode ) const override;
209333 
209334  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
209335  // comment here (changed to be a C style comment and not be a doxygen comment).
209336  /* \brief Constructor for use by AST File I/O Mechanism
209337 
209338  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
209339  which obtained via fast binary file I/O from disk.
209340  */
209341  // SgOmpTargetTeamsLoopStatement( SgOmpTargetTeamsLoopStatementStorageClass& source );
209342 
209343 
209344 
209345 
209346 
209347  // JH (10/24/2005): methods added to support the ast file IO
209348  private:
209349 
209350  /* name AST Memory Allocation Support Functions
209351  \brief Memory allocations support....
209352 
209353  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
209354  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
209355  and support the AST File I/O Mechanism.
209356  */
209357  /* */
209358 
209359  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
209360  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
209361  that I use the same type everywhere, if any changes are made. THe second one declares the type
209362  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
209363  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
209364  a correspinding one in the AST_FILE_IO class!
209365  */
209366  // DQ (9/2/2015): This typedef is no longer used, we can't define the
209367  // comment here (changed to be a C style comment and not be a doxygen comment).
209368  /* \brief Typedef used for low level memory access.
209369  */
209370  // typedef unsigned char* TestType;
209371 
209372  // DQ (9/2/2015): This typedef is no longer used, we can't define the
209373  // comment here (changed to be a C style comment and not be a doxygen comment).
209374  /* \brief Typedef used to hold memory addresses as values.
209375  */
209376  // typedef unsigned long AddressType;
209377 
209378 
209379 
209380  // necessary, to have direct access to the p_freepointer and the private methods !
209382  friend class AST_FILE_IO;
209383 
209385  friend class SgOmpTargetTeamsLoopStatementStorageClass;
209386 
209388  friend class AstSpecificDataManagingClass;
209389 
209391  friend class AstSpecificDataManagingClassStorageClass;
209392 
209393  public:
209395  SgOmpTargetTeamsLoopStatement( const SgOmpTargetTeamsLoopStatementStorageClass& source );
209396 
209397  // private: // JJW hack
209398  /*
209399  name AST Memory Allocation Support Variables
209400  Memory allocations support variables
209401 
209402  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
209403  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
209404  and support the AST File I/O Mechanism.
209405  */
209406  /* */
209407 
209408  public:
209409 
209410  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
209411  // to current node (so that it will work cleanly with build functions to specify patterns).
209412  // virtual SgNode* addRegExpAttribute();
209419 
209420 // *** COMMON CODE SECTION ENDS HERE ***
209421 
209422 
209423 // End of memberFunctionString
209424 // Start of memberFunctionString
209425 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
209426 
209427  // the generated cast function
209428  // friend ROSE_DLL_API SgOmpTargetTeamsLoopStatement* isSgOmpTargetTeamsLoopStatement ( SgNode* s );
209429 
209431 
209432 
209433 // End of memberFunctionString
209434 // Start of memberFunctionString
209435 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
209436 
209437  void post_construction_initialization() override;
209438 
209439 
209440 // End of memberFunctionString
209441 
209442 
209443  public:
209444  virtual ~SgOmpTargetTeamsLoopStatement();
209445 
209446 
209447  public:
209448  SgOmpTargetTeamsLoopStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
209450 
209451  protected:
209452 
209453 
209454 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
209455 
209456 
209457  };
209458 #endif
209459 
209460 // postdeclarations for SgOmpTargetTeamsLoopStatement
209461 
209462 /* #line 209463 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
209463 
209464 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
209465 
209466 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
209467 
209468 
209469 /* #line 209470 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
209470 
209471 
209472 
209473 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
209474 
209475 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
209476 // This code is automatically generated for each
209477 // terminal and non-terminal within the defined
209478 // grammar. There is a simple way to change the
209479 // code to fix bugs etc. See the ROSE README file
209480 // for directions.
209481 
209482 // tps: (02/22/2010): Adding DLL export requirements
209483 #include "rosedll.h"
209484 
209485 // predeclarations for SgOmpTargetTeamsDistributeParallelForStatement
209486 
209487 /* #line 209488 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
209488 
209489 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
209490 
209491 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
209492 
209493 #if 1
209494 // Class Definition for SgOmpTargetTeamsDistributeParallelForStatement
209496  {
209497  public:
209498 
209499 
209500 /* #line 209501 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
209501 
209502  virtual SgNode* copy ( SgCopyHelp& help) const override;
209503 // Start of memberFunctionString
209504 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
209505 
209506 // *** COMMON CODE SECTION BEGINS HERE ***
209507 
209508  public:
209509 
209510  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
209511  // and not required which is required to match the other aspects of the copy mechanism code generation.
209512  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
209513  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
209514  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
209515  // virtual SgNode* copy ( const SgCopyHelp & help) const;
209516 
209518  virtual std::string class_name() const override;
209519 
209521  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
209522 
209524  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
209525  // static const VariantT static_variant = V_SgOmpTargetTeamsDistributeParallelForStatement;
209526  enum { static_variant = V_SgOmpTargetTeamsDistributeParallelForStatement };
209527 
209528  /* the generated cast function */
209530  ROSE_DLL_API friend SgOmpTargetTeamsDistributeParallelForStatement* isSgOmpTargetTeamsDistributeParallelForStatement( SgNode * s );
209531 
209533  ROSE_DLL_API friend const SgOmpTargetTeamsDistributeParallelForStatement* isSgOmpTargetTeamsDistributeParallelForStatement( const SgNode * s );
209534 
209535  // ******************************************
209536  // * Memory Pool / New / Delete
209537  // ******************************************
209538 
209539  public:
209541  static const unsigned pool_size; //
209543  static std::vector<unsigned char *> pools; //
209545  static SgOmpTargetTeamsDistributeParallelForStatement * next_node; //
209546 
209548  static unsigned long initializeStorageClassArray(SgOmpTargetTeamsDistributeParallelForStatementStorageClass *); //
209549 
209551  static void clearMemoryPool(); //
209552  static void deleteMemoryPool(); //
209553 
209555  static void extendMemoryPoolForFileIO(); //
209556 
209558  static SgOmpTargetTeamsDistributeParallelForStatement * getPointerFromGlobalIndex(unsigned long); //
209560  static SgOmpTargetTeamsDistributeParallelForStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
209561 
209563  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
209565  static void resetValidFreepointers(); //
209567  static unsigned long getNumberOfLastValidPointer(); //
209568 
209569 
209570 #if defined(INLINE_FUNCTIONS)
209571 
209572  inline void *operator new (size_t size);
209573 #else
209574 
209575  void *operator new (size_t size);
209576 #endif
209577 
209578  void operator delete (void* pointer, size_t size);
209579 
209580  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
209581  void operator delete (void* pointer)
209582  {
209583  // This is the generated delete operator...
209584  SgOmpTargetTeamsDistributeParallelForStatement::operator delete (pointer,sizeof(SgOmpTargetTeamsDistributeParallelForStatement));
209585  }
209586 
209588  static size_t numberOfNodes();
209589 
209591  static size_t memoryUsage();
209592 
209593  // End of scope which started in IR nodes specific code
209594  /* */
209595 
209596  /* name Internal Functions
209597  \brief Internal functions ... incomplete-documentation
209598 
209599  These functions have been made public as part of the design, but they are suggested for internal use
209600  or by particularly knowledgeable users for specialized tools or applications.
209601 
209602  \internal We could not make these private because they are required by user for special purposes. And
209603  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
209604 
209605  */
209606 
209607  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
209608  // overridden in every class by *generated* implementation
209610  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
209611  // MS: 06/28/02 container of names of variables or container indices
209612  // used used in the traversal to access AST successor nodes
209613  // overridden in every class by *generated* implementation
209616  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
209617 
209618  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
209619  // than all the vector copies. The implementation for these functions is generated for each class.
209621  virtual size_t get_numberOfTraversalSuccessors() override;
209623  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
209625  virtual size_t get_childIndex(SgNode *child) override;
209626 
209627 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
209628  // MS: 08/16/2002 method for generating RTI information
209630  virtual RTIReturnType roseRTI() override;
209631 #endif
209632  /* */
209633 
209634 
209635 
209636  /* name Deprecated Functions
209637  \brief Deprecated functions ... incomplete-documentation
209638 
209639  These functions have been deprecated from use.
209640  */
209641  /* */
209642 
209644  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
209645 
209646  // JJW (10/16/2008): Changed to a single function in Node.code, and put
209647  // getVariant() in #if 0 block to prevent confusing Doxygen
209648 #if 0
209649 
209650  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
209652  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
209653 #endif
209654  /* */
209655 
209656 
209657 
209658 
209659  public:
209660  /* name Traversal Support Functions
209661  \brief Traversal support functions ... incomplete-documentation
209662 
209663  These functions have been made public as part of the design, but they are suggested for internal use
209664  or by particularly knowledgable users for specialized tools or applications.
209665  */
209666  /* */
209667 
209668  // DQ (11/26/2005): Support for visitor pattern mechanims
209669  // (inferior to ROSE traversal mechanism, experimental).
209673 
209674  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
209676  virtual void accept (ROSE_VisitorPattern & visitor) override;
209677 
209678  // DQ (12/26/2005): Support for traversal based on the memory pool
209681  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
209682 
209685  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
209686 
209687  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
209688  // This traversal helps support internal tools that call static member functions.
209689  // note: this function operates on the memory pools.
209692  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
209693  /* */
209694 
209695 
209696  public:
209697  /* name Memory Allocation Functions
209698  \brief Memory allocations functions ... incomplete-documentation
209699 
209700  These functions have been made public as part of the design, but they are suggested for internal use
209701  or by particularly knowledgable users for specialized tools or applications.
209702  */
209703  /* */
209704 
209715  virtual bool isInMemoryPool() override;
209716 
209727  virtual void checkDataMemberPointersIfInMemoryPool() override;
209728 
209729  // DQ (4/30/2006): Modified to be a const function.
209744  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
209745 
209755  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
209756 
209768  virtual long getChildIndex( SgNode* childNode ) const override;
209769 
209770  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
209771  // comment here (changed to be a C style comment and not be a doxygen comment).
209772  /* \brief Constructor for use by AST File I/O Mechanism
209773 
209774  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
209775  which obtained via fast binary file I/O from disk.
209776  */
209777  // SgOmpTargetTeamsDistributeParallelForStatement( SgOmpTargetTeamsDistributeParallelForStatementStorageClass& source );
209778 
209779 
209780 
209781 
209782 
209783  // JH (10/24/2005): methods added to support the ast file IO
209784  private:
209785 
209786  /* name AST Memory Allocation Support Functions
209787  \brief Memory allocations support....
209788 
209789  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
209790  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
209791  and support the AST File I/O Mechanism.
209792  */
209793  /* */
209794 
209795  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
209796  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
209797  that I use the same type everywhere, if any changes are made. THe second one declares the type
209798  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
209799  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
209800  a correspinding one in the AST_FILE_IO class!
209801  */
209802  // DQ (9/2/2015): This typedef is no longer used, we can't define the
209803  // comment here (changed to be a C style comment and not be a doxygen comment).
209804  /* \brief Typedef used for low level memory access.
209805  */
209806  // typedef unsigned char* TestType;
209807 
209808  // DQ (9/2/2015): This typedef is no longer used, we can't define the
209809  // comment here (changed to be a C style comment and not be a doxygen comment).
209810  /* \brief Typedef used to hold memory addresses as values.
209811  */
209812  // typedef unsigned long AddressType;
209813 
209814 
209815 
209816  // necessary, to have direct access to the p_freepointer and the private methods !
209818  friend class AST_FILE_IO;
209819 
209821  friend class SgOmpTargetTeamsDistributeParallelForStatementStorageClass;
209822 
209824  friend class AstSpecificDataManagingClass;
209825 
209827  friend class AstSpecificDataManagingClassStorageClass;
209828 
209829  public:
209831  SgOmpTargetTeamsDistributeParallelForStatement( const SgOmpTargetTeamsDistributeParallelForStatementStorageClass& source );
209832 
209833  // private: // JJW hack
209834  /*
209835  name AST Memory Allocation Support Variables
209836  Memory allocations support variables
209837 
209838  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
209839  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
209840  and support the AST File I/O Mechanism.
209841  */
209842  /* */
209843 
209844  public:
209845 
209846  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
209847  // to current node (so that it will work cleanly with build functions to specify patterns).
209848  // virtual SgNode* addRegExpAttribute();
209855 
209856 // *** COMMON CODE SECTION ENDS HERE ***
209857 
209858 
209859 // End of memberFunctionString
209860 // Start of memberFunctionString
209861 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
209862 
209863  // the generated cast function
209864  // friend ROSE_DLL_API SgOmpTargetTeamsDistributeParallelForStatement* isSgOmpTargetTeamsDistributeParallelForStatement ( SgNode* s );
209865 
209867 
209868 
209869 // End of memberFunctionString
209870 // Start of memberFunctionString
209871 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
209872 
209873  void post_construction_initialization() override;
209874 
209875 
209876 // End of memberFunctionString
209877 
209878 
209879  public:
209881 
209882 
209883  public:
209884  SgOmpTargetTeamsDistributeParallelForStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
209886 
209887  protected:
209888 
209889 
209890 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
209891 
209892 
209893  };
209894 #endif
209895 
209896 // postdeclarations for SgOmpTargetTeamsDistributeParallelForStatement
209897 
209898 /* #line 209899 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
209899 
209900 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
209901 
209902 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
209903 
209904 
209905 /* #line 209906 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
209906 
209907 
209908 
209909 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
209910 
209911 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
209912 // This code is automatically generated for each
209913 // terminal and non-terminal within the defined
209914 // grammar. There is a simple way to change the
209915 // code to fix bugs etc. See the ROSE README file
209916 // for directions.
209917 
209918 // tps: (02/22/2010): Adding DLL export requirements
209919 #include "rosedll.h"
209920 
209921 // predeclarations for SgOmpTargetTeamsDistributeParallelForSimdStatement
209922 
209923 /* #line 209924 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
209924 
209925 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
209926 
209927 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
209928 
209929 #if 1
209930 // Class Definition for SgOmpTargetTeamsDistributeParallelForSimdStatement
209932  {
209933  public:
209934 
209935 
209936 /* #line 209937 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
209937 
209938  virtual SgNode* copy ( SgCopyHelp& help) const override;
209939 // Start of memberFunctionString
209940 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
209941 
209942 // *** COMMON CODE SECTION BEGINS HERE ***
209943 
209944  public:
209945 
209946  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
209947  // and not required which is required to match the other aspects of the copy mechanism code generation.
209948  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
209949  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
209950  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
209951  // virtual SgNode* copy ( const SgCopyHelp & help) const;
209952 
209954  virtual std::string class_name() const override;
209955 
209957  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
209958 
209960  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
209961  // static const VariantT static_variant = V_SgOmpTargetTeamsDistributeParallelForSimdStatement;
209962  enum { static_variant = V_SgOmpTargetTeamsDistributeParallelForSimdStatement };
209963 
209964  /* the generated cast function */
209966  ROSE_DLL_API friend SgOmpTargetTeamsDistributeParallelForSimdStatement* isSgOmpTargetTeamsDistributeParallelForSimdStatement( SgNode * s );
209967 
209969  ROSE_DLL_API friend const SgOmpTargetTeamsDistributeParallelForSimdStatement* isSgOmpTargetTeamsDistributeParallelForSimdStatement( const SgNode * s );
209970 
209971  // ******************************************
209972  // * Memory Pool / New / Delete
209973  // ******************************************
209974 
209975  public:
209977  static const unsigned pool_size; //
209979  static std::vector<unsigned char *> pools; //
209982 
209984  static unsigned long initializeStorageClassArray(SgOmpTargetTeamsDistributeParallelForSimdStatementStorageClass *); //
209985 
209987  static void clearMemoryPool(); //
209988  static void deleteMemoryPool(); //
209989 
209991  static void extendMemoryPoolForFileIO(); //
209992 
209994  static SgOmpTargetTeamsDistributeParallelForSimdStatement * getPointerFromGlobalIndex(unsigned long); //
209996  static SgOmpTargetTeamsDistributeParallelForSimdStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
209997 
209999  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
210001  static void resetValidFreepointers(); //
210003  static unsigned long getNumberOfLastValidPointer(); //
210004 
210005 
210006 #if defined(INLINE_FUNCTIONS)
210007 
210008  inline void *operator new (size_t size);
210009 #else
210010 
210011  void *operator new (size_t size);
210012 #endif
210013 
210014  void operator delete (void* pointer, size_t size);
210015 
210016  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
210017  void operator delete (void* pointer)
210018  {
210019  // This is the generated delete operator...
210020  SgOmpTargetTeamsDistributeParallelForSimdStatement::operator delete (pointer,sizeof(SgOmpTargetTeamsDistributeParallelForSimdStatement));
210021  }
210022 
210024  static size_t numberOfNodes();
210025 
210027  static size_t memoryUsage();
210028 
210029  // End of scope which started in IR nodes specific code
210030  /* */
210031 
210032  /* name Internal Functions
210033  \brief Internal functions ... incomplete-documentation
210034 
210035  These functions have been made public as part of the design, but they are suggested for internal use
210036  or by particularly knowledgeable users for specialized tools or applications.
210037 
210038  \internal We could not make these private because they are required by user for special purposes. And
210039  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
210040 
210041  */
210042 
210043  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
210044  // overridden in every class by *generated* implementation
210046  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
210047  // MS: 06/28/02 container of names of variables or container indices
210048  // used used in the traversal to access AST successor nodes
210049  // overridden in every class by *generated* implementation
210052  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
210053 
210054  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
210055  // than all the vector copies. The implementation for these functions is generated for each class.
210057  virtual size_t get_numberOfTraversalSuccessors() override;
210059  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
210061  virtual size_t get_childIndex(SgNode *child) override;
210062 
210063 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
210064  // MS: 08/16/2002 method for generating RTI information
210066  virtual RTIReturnType roseRTI() override;
210067 #endif
210068  /* */
210069 
210070 
210071 
210072  /* name Deprecated Functions
210073  \brief Deprecated functions ... incomplete-documentation
210074 
210075  These functions have been deprecated from use.
210076  */
210077  /* */
210078 
210080  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
210081 
210082  // JJW (10/16/2008): Changed to a single function in Node.code, and put
210083  // getVariant() in #if 0 block to prevent confusing Doxygen
210084 #if 0
210085 
210086  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
210088  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
210089 #endif
210090  /* */
210091 
210092 
210093 
210094 
210095  public:
210096  /* name Traversal Support Functions
210097  \brief Traversal support functions ... incomplete-documentation
210098 
210099  These functions have been made public as part of the design, but they are suggested for internal use
210100  or by particularly knowledgable users for specialized tools or applications.
210101  */
210102  /* */
210103 
210104  // DQ (11/26/2005): Support for visitor pattern mechanims
210105  // (inferior to ROSE traversal mechanism, experimental).
210109 
210110  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
210112  virtual void accept (ROSE_VisitorPattern & visitor) override;
210113 
210114  // DQ (12/26/2005): Support for traversal based on the memory pool
210117  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
210118 
210121  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
210122 
210123  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
210124  // This traversal helps support internal tools that call static member functions.
210125  // note: this function operates on the memory pools.
210128  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
210129  /* */
210130 
210131 
210132  public:
210133  /* name Memory Allocation Functions
210134  \brief Memory allocations functions ... incomplete-documentation
210135 
210136  These functions have been made public as part of the design, but they are suggested for internal use
210137  or by particularly knowledgable users for specialized tools or applications.
210138  */
210139  /* */
210140 
210151  virtual bool isInMemoryPool() override;
210152 
210163  virtual void checkDataMemberPointersIfInMemoryPool() override;
210164 
210165  // DQ (4/30/2006): Modified to be a const function.
210180  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
210181 
210191  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
210192 
210204  virtual long getChildIndex( SgNode* childNode ) const override;
210205 
210206  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
210207  // comment here (changed to be a C style comment and not be a doxygen comment).
210208  /* \brief Constructor for use by AST File I/O Mechanism
210209 
210210  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
210211  which obtained via fast binary file I/O from disk.
210212  */
210213  // SgOmpTargetTeamsDistributeParallelForSimdStatement( SgOmpTargetTeamsDistributeParallelForSimdStatementStorageClass& source );
210214 
210215 
210216 
210217 
210218 
210219  // JH (10/24/2005): methods added to support the ast file IO
210220  private:
210221 
210222  /* name AST Memory Allocation Support Functions
210223  \brief Memory allocations support....
210224 
210225  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
210226  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
210227  and support the AST File I/O Mechanism.
210228  */
210229  /* */
210230 
210231  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
210232  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
210233  that I use the same type everywhere, if any changes are made. THe second one declares the type
210234  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
210235  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
210236  a correspinding one in the AST_FILE_IO class!
210237  */
210238  // DQ (9/2/2015): This typedef is no longer used, we can't define the
210239  // comment here (changed to be a C style comment and not be a doxygen comment).
210240  /* \brief Typedef used for low level memory access.
210241  */
210242  // typedef unsigned char* TestType;
210243 
210244  // DQ (9/2/2015): This typedef is no longer used, we can't define the
210245  // comment here (changed to be a C style comment and not be a doxygen comment).
210246  /* \brief Typedef used to hold memory addresses as values.
210247  */
210248  // typedef unsigned long AddressType;
210249 
210250 
210251 
210252  // necessary, to have direct access to the p_freepointer and the private methods !
210254  friend class AST_FILE_IO;
210255 
210257  friend class SgOmpTargetTeamsDistributeParallelForSimdStatementStorageClass;
210258 
210260  friend class AstSpecificDataManagingClass;
210261 
210263  friend class AstSpecificDataManagingClassStorageClass;
210264 
210265  public:
210267  SgOmpTargetTeamsDistributeParallelForSimdStatement( const SgOmpTargetTeamsDistributeParallelForSimdStatementStorageClass& source );
210268 
210269  // private: // JJW hack
210270  /*
210271  name AST Memory Allocation Support Variables
210272  Memory allocations support variables
210273 
210274  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
210275  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
210276  and support the AST File I/O Mechanism.
210277  */
210278  /* */
210279 
210280  public:
210281 
210282  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
210283  // to current node (so that it will work cleanly with build functions to specify patterns).
210284  // virtual SgNode* addRegExpAttribute();
210291 
210292 // *** COMMON CODE SECTION ENDS HERE ***
210293 
210294 
210295 // End of memberFunctionString
210296 // Start of memberFunctionString
210297 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
210298 
210299  // the generated cast function
210300  // friend ROSE_DLL_API SgOmpTargetTeamsDistributeParallelForSimdStatement* isSgOmpTargetTeamsDistributeParallelForSimdStatement ( SgNode* s );
210301 
210303 
210304 
210305 // End of memberFunctionString
210306 // Start of memberFunctionString
210307 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
210308 
210309  void post_construction_initialization() override;
210310 
210311 
210312 // End of memberFunctionString
210313 
210314 
210315  public:
210317 
210318 
210319  public:
210322 
210323  protected:
210324 
210325 
210326 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
210327 
210328 
210329  };
210330 #endif
210331 
210332 // postdeclarations for SgOmpTargetTeamsDistributeParallelForSimdStatement
210333 
210334 /* #line 210335 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
210335 
210336 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
210337 
210338 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
210339 
210340 
210341 /* #line 210342 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
210342 
210343 
210344 
210345 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
210346 
210347 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
210348 // This code is automatically generated for each
210349 // terminal and non-terminal within the defined
210350 // grammar. There is a simple way to change the
210351 // code to fix bugs etc. See the ROSE README file
210352 // for directions.
210353 
210354 // tps: (02/22/2010): Adding DLL export requirements
210355 #include "rosedll.h"
210356 
210357 // predeclarations for SgOmpDistributeSimdStatement
210358 
210359 /* #line 210360 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
210360 
210361 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
210362 
210363 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
210364 
210365 #if 1
210366 // Class Definition for SgOmpDistributeSimdStatement
210368  {
210369  public:
210370 
210371 
210372 /* #line 210373 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
210373 
210374  virtual SgNode* copy ( SgCopyHelp& help) const override;
210375 // Start of memberFunctionString
210376 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
210377 
210378 // *** COMMON CODE SECTION BEGINS HERE ***
210379 
210380  public:
210381 
210382  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
210383  // and not required which is required to match the other aspects of the copy mechanism code generation.
210384  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
210385  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
210386  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
210387  // virtual SgNode* copy ( const SgCopyHelp & help) const;
210388 
210390  virtual std::string class_name() const override;
210391 
210393  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
210394 
210396  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
210397  // static const VariantT static_variant = V_SgOmpDistributeSimdStatement;
210398  enum { static_variant = V_SgOmpDistributeSimdStatement };
210399 
210400  /* the generated cast function */
210402  ROSE_DLL_API friend SgOmpDistributeSimdStatement* isSgOmpDistributeSimdStatement( SgNode * s );
210403 
210405  ROSE_DLL_API friend const SgOmpDistributeSimdStatement* isSgOmpDistributeSimdStatement( const SgNode * s );
210406 
210407  // ******************************************
210408  // * Memory Pool / New / Delete
210409  // ******************************************
210410 
210411  public:
210413  static const unsigned pool_size; //
210415  static std::vector<unsigned char *> pools; //
210417  static SgOmpDistributeSimdStatement * next_node; //
210418 
210420  static unsigned long initializeStorageClassArray(SgOmpDistributeSimdStatementStorageClass *); //
210421 
210423  static void clearMemoryPool(); //
210424  static void deleteMemoryPool(); //
210425 
210427  static void extendMemoryPoolForFileIO(); //
210428 
210430  static SgOmpDistributeSimdStatement * getPointerFromGlobalIndex(unsigned long); //
210432  static SgOmpDistributeSimdStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
210433 
210435  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
210437  static void resetValidFreepointers(); //
210439  static unsigned long getNumberOfLastValidPointer(); //
210440 
210441 
210442 #if defined(INLINE_FUNCTIONS)
210443 
210444  inline void *operator new (size_t size);
210445 #else
210446 
210447  void *operator new (size_t size);
210448 #endif
210449 
210450  void operator delete (void* pointer, size_t size);
210451 
210452  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
210453  void operator delete (void* pointer)
210454  {
210455  // This is the generated delete operator...
210456  SgOmpDistributeSimdStatement::operator delete (pointer,sizeof(SgOmpDistributeSimdStatement));
210457  }
210458 
210460  static size_t numberOfNodes();
210461 
210463  static size_t memoryUsage();
210464 
210465  // End of scope which started in IR nodes specific code
210466  /* */
210467 
210468  /* name Internal Functions
210469  \brief Internal functions ... incomplete-documentation
210470 
210471  These functions have been made public as part of the design, but they are suggested for internal use
210472  or by particularly knowledgeable users for specialized tools or applications.
210473 
210474  \internal We could not make these private because they are required by user for special purposes. And
210475  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
210476 
210477  */
210478 
210479  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
210480  // overridden in every class by *generated* implementation
210482  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
210483  // MS: 06/28/02 container of names of variables or container indices
210484  // used used in the traversal to access AST successor nodes
210485  // overridden in every class by *generated* implementation
210488  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
210489 
210490  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
210491  // than all the vector copies. The implementation for these functions is generated for each class.
210493  virtual size_t get_numberOfTraversalSuccessors() override;
210495  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
210497  virtual size_t get_childIndex(SgNode *child) override;
210498 
210499 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
210500  // MS: 08/16/2002 method for generating RTI information
210502  virtual RTIReturnType roseRTI() override;
210503 #endif
210504  /* */
210505 
210506 
210507 
210508  /* name Deprecated Functions
210509  \brief Deprecated functions ... incomplete-documentation
210510 
210511  These functions have been deprecated from use.
210512  */
210513  /* */
210514 
210516  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
210517 
210518  // JJW (10/16/2008): Changed to a single function in Node.code, and put
210519  // getVariant() in #if 0 block to prevent confusing Doxygen
210520 #if 0
210521 
210522  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
210524  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
210525 #endif
210526  /* */
210527 
210528 
210529 
210530 
210531  public:
210532  /* name Traversal Support Functions
210533  \brief Traversal support functions ... incomplete-documentation
210534 
210535  These functions have been made public as part of the design, but they are suggested for internal use
210536  or by particularly knowledgable users for specialized tools or applications.
210537  */
210538  /* */
210539 
210540  // DQ (11/26/2005): Support for visitor pattern mechanims
210541  // (inferior to ROSE traversal mechanism, experimental).
210545 
210546  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
210548  virtual void accept (ROSE_VisitorPattern & visitor) override;
210549 
210550  // DQ (12/26/2005): Support for traversal based on the memory pool
210553  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
210554 
210557  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
210558 
210559  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
210560  // This traversal helps support internal tools that call static member functions.
210561  // note: this function operates on the memory pools.
210564  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
210565  /* */
210566 
210567 
210568  public:
210569  /* name Memory Allocation Functions
210570  \brief Memory allocations functions ... incomplete-documentation
210571 
210572  These functions have been made public as part of the design, but they are suggested for internal use
210573  or by particularly knowledgable users for specialized tools or applications.
210574  */
210575  /* */
210576 
210587  virtual bool isInMemoryPool() override;
210588 
210599  virtual void checkDataMemberPointersIfInMemoryPool() override;
210600 
210601  // DQ (4/30/2006): Modified to be a const function.
210616  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
210617 
210627  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
210628 
210640  virtual long getChildIndex( SgNode* childNode ) const override;
210641 
210642  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
210643  // comment here (changed to be a C style comment and not be a doxygen comment).
210644  /* \brief Constructor for use by AST File I/O Mechanism
210645 
210646  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
210647  which obtained via fast binary file I/O from disk.
210648  */
210649  // SgOmpDistributeSimdStatement( SgOmpDistributeSimdStatementStorageClass& source );
210650 
210651 
210652 
210653 
210654 
210655  // JH (10/24/2005): methods added to support the ast file IO
210656  private:
210657 
210658  /* name AST Memory Allocation Support Functions
210659  \brief Memory allocations support....
210660 
210661  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
210662  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
210663  and support the AST File I/O Mechanism.
210664  */
210665  /* */
210666 
210667  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
210668  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
210669  that I use the same type everywhere, if any changes are made. THe second one declares the type
210670  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
210671  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
210672  a correspinding one in the AST_FILE_IO class!
210673  */
210674  // DQ (9/2/2015): This typedef is no longer used, we can't define the
210675  // comment here (changed to be a C style comment and not be a doxygen comment).
210676  /* \brief Typedef used for low level memory access.
210677  */
210678  // typedef unsigned char* TestType;
210679 
210680  // DQ (9/2/2015): This typedef is no longer used, we can't define the
210681  // comment here (changed to be a C style comment and not be a doxygen comment).
210682  /* \brief Typedef used to hold memory addresses as values.
210683  */
210684  // typedef unsigned long AddressType;
210685 
210686 
210687 
210688  // necessary, to have direct access to the p_freepointer and the private methods !
210690  friend class AST_FILE_IO;
210691 
210693  friend class SgOmpDistributeSimdStatementStorageClass;
210694 
210696  friend class AstSpecificDataManagingClass;
210697 
210699  friend class AstSpecificDataManagingClassStorageClass;
210700 
210701  public:
210703  SgOmpDistributeSimdStatement( const SgOmpDistributeSimdStatementStorageClass& source );
210704 
210705  // private: // JJW hack
210706  /*
210707  name AST Memory Allocation Support Variables
210708  Memory allocations support variables
210709 
210710  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
210711  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
210712  and support the AST File I/O Mechanism.
210713  */
210714  /* */
210715 
210716  public:
210717 
210718  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
210719  // to current node (so that it will work cleanly with build functions to specify patterns).
210720  // virtual SgNode* addRegExpAttribute();
210727 
210728 // *** COMMON CODE SECTION ENDS HERE ***
210729 
210730 
210731 // End of memberFunctionString
210732 // Start of memberFunctionString
210733 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
210734 
210735  // the generated cast function
210736  // friend ROSE_DLL_API SgOmpDistributeSimdStatement* isSgOmpDistributeSimdStatement ( SgNode* s );
210737 
210739 
210740 
210741 // End of memberFunctionString
210742 // Start of memberFunctionString
210743 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
210744 
210745  void post_construction_initialization() override;
210746 
210747 
210748 // End of memberFunctionString
210749 
210750 
210751  public:
210752  virtual ~SgOmpDistributeSimdStatement();
210753 
210754 
210755  public:
210756  SgOmpDistributeSimdStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
210758 
210759  protected:
210760 
210761 
210762 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
210763 
210764 
210765  };
210766 #endif
210767 
210768 // postdeclarations for SgOmpDistributeSimdStatement
210769 
210770 /* #line 210771 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
210771 
210772 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
210773 
210774 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
210775 
210776 
210777 /* #line 210778 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
210778 
210779 
210780 
210781 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
210782 
210783 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
210784 // This code is automatically generated for each
210785 // terminal and non-terminal within the defined
210786 // grammar. There is a simple way to change the
210787 // code to fix bugs etc. See the ROSE README file
210788 // for directions.
210789 
210790 // tps: (02/22/2010): Adding DLL export requirements
210791 #include "rosedll.h"
210792 
210793 // predeclarations for SgOmpDistributeParallelForStatement
210794 
210795 /* #line 210796 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
210796 
210797 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
210798 
210799 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
210800 
210801 #if 1
210802 // Class Definition for SgOmpDistributeParallelForStatement
210804  {
210805  public:
210806 
210807 
210808 /* #line 210809 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
210809 
210810  virtual SgNode* copy ( SgCopyHelp& help) const override;
210811 // Start of memberFunctionString
210812 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
210813 
210814 // *** COMMON CODE SECTION BEGINS HERE ***
210815 
210816  public:
210817 
210818  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
210819  // and not required which is required to match the other aspects of the copy mechanism code generation.
210820  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
210821  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
210822  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
210823  // virtual SgNode* copy ( const SgCopyHelp & help) const;
210824 
210826  virtual std::string class_name() const override;
210827 
210829  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
210830 
210832  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
210833  // static const VariantT static_variant = V_SgOmpDistributeParallelForStatement;
210834  enum { static_variant = V_SgOmpDistributeParallelForStatement };
210835 
210836  /* the generated cast function */
210838  ROSE_DLL_API friend SgOmpDistributeParallelForStatement* isSgOmpDistributeParallelForStatement( SgNode * s );
210839 
210841  ROSE_DLL_API friend const SgOmpDistributeParallelForStatement* isSgOmpDistributeParallelForStatement( const SgNode * s );
210842 
210843  // ******************************************
210844  // * Memory Pool / New / Delete
210845  // ******************************************
210846 
210847  public:
210849  static const unsigned pool_size; //
210851  static std::vector<unsigned char *> pools; //
210853  static SgOmpDistributeParallelForStatement * next_node; //
210854 
210856  static unsigned long initializeStorageClassArray(SgOmpDistributeParallelForStatementStorageClass *); //
210857 
210859  static void clearMemoryPool(); //
210860  static void deleteMemoryPool(); //
210861 
210863  static void extendMemoryPoolForFileIO(); //
210864 
210866  static SgOmpDistributeParallelForStatement * getPointerFromGlobalIndex(unsigned long); //
210868  static SgOmpDistributeParallelForStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
210869 
210871  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
210873  static void resetValidFreepointers(); //
210875  static unsigned long getNumberOfLastValidPointer(); //
210876 
210877 
210878 #if defined(INLINE_FUNCTIONS)
210879 
210880  inline void *operator new (size_t size);
210881 #else
210882 
210883  void *operator new (size_t size);
210884 #endif
210885 
210886  void operator delete (void* pointer, size_t size);
210887 
210888  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
210889  void operator delete (void* pointer)
210890  {
210891  // This is the generated delete operator...
210892  SgOmpDistributeParallelForStatement::operator delete (pointer,sizeof(SgOmpDistributeParallelForStatement));
210893  }
210894 
210896  static size_t numberOfNodes();
210897 
210899  static size_t memoryUsage();
210900 
210901  // End of scope which started in IR nodes specific code
210902  /* */
210903 
210904  /* name Internal Functions
210905  \brief Internal functions ... incomplete-documentation
210906 
210907  These functions have been made public as part of the design, but they are suggested for internal use
210908  or by particularly knowledgeable users for specialized tools or applications.
210909 
210910  \internal We could not make these private because they are required by user for special purposes. And
210911  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
210912 
210913  */
210914 
210915  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
210916  // overridden in every class by *generated* implementation
210918  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
210919  // MS: 06/28/02 container of names of variables or container indices
210920  // used used in the traversal to access AST successor nodes
210921  // overridden in every class by *generated* implementation
210924  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
210925 
210926  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
210927  // than all the vector copies. The implementation for these functions is generated for each class.
210929  virtual size_t get_numberOfTraversalSuccessors() override;
210931  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
210933  virtual size_t get_childIndex(SgNode *child) override;
210934 
210935 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
210936  // MS: 08/16/2002 method for generating RTI information
210938  virtual RTIReturnType roseRTI() override;
210939 #endif
210940  /* */
210941 
210942 
210943 
210944  /* name Deprecated Functions
210945  \brief Deprecated functions ... incomplete-documentation
210946 
210947  These functions have been deprecated from use.
210948  */
210949  /* */
210950 
210952  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
210953 
210954  // JJW (10/16/2008): Changed to a single function in Node.code, and put
210955  // getVariant() in #if 0 block to prevent confusing Doxygen
210956 #if 0
210957 
210958  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
210960  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
210961 #endif
210962  /* */
210963 
210964 
210965 
210966 
210967  public:
210968  /* name Traversal Support Functions
210969  \brief Traversal support functions ... incomplete-documentation
210970 
210971  These functions have been made public as part of the design, but they are suggested for internal use
210972  or by particularly knowledgable users for specialized tools or applications.
210973  */
210974  /* */
210975 
210976  // DQ (11/26/2005): Support for visitor pattern mechanims
210977  // (inferior to ROSE traversal mechanism, experimental).
210981 
210982  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
210984  virtual void accept (ROSE_VisitorPattern & visitor) override;
210985 
210986  // DQ (12/26/2005): Support for traversal based on the memory pool
210989  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
210990 
210993  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
210994 
210995  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
210996  // This traversal helps support internal tools that call static member functions.
210997  // note: this function operates on the memory pools.
211000  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
211001  /* */
211002 
211003 
211004  public:
211005  /* name Memory Allocation Functions
211006  \brief Memory allocations functions ... incomplete-documentation
211007 
211008  These functions have been made public as part of the design, but they are suggested for internal use
211009  or by particularly knowledgable users for specialized tools or applications.
211010  */
211011  /* */
211012 
211023  virtual bool isInMemoryPool() override;
211024 
211035  virtual void checkDataMemberPointersIfInMemoryPool() override;
211036 
211037  // DQ (4/30/2006): Modified to be a const function.
211052  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
211053 
211063  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
211064 
211076  virtual long getChildIndex( SgNode* childNode ) const override;
211077 
211078  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
211079  // comment here (changed to be a C style comment and not be a doxygen comment).
211080  /* \brief Constructor for use by AST File I/O Mechanism
211081 
211082  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
211083  which obtained via fast binary file I/O from disk.
211084  */
211085  // SgOmpDistributeParallelForStatement( SgOmpDistributeParallelForStatementStorageClass& source );
211086 
211087 
211088 
211089 
211090 
211091  // JH (10/24/2005): methods added to support the ast file IO
211092  private:
211093 
211094  /* name AST Memory Allocation Support Functions
211095  \brief Memory allocations support....
211096 
211097  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
211098  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
211099  and support the AST File I/O Mechanism.
211100  */
211101  /* */
211102 
211103  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
211104  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
211105  that I use the same type everywhere, if any changes are made. THe second one declares the type
211106  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
211107  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
211108  a correspinding one in the AST_FILE_IO class!
211109  */
211110  // DQ (9/2/2015): This typedef is no longer used, we can't define the
211111  // comment here (changed to be a C style comment and not be a doxygen comment).
211112  /* \brief Typedef used for low level memory access.
211113  */
211114  // typedef unsigned char* TestType;
211115 
211116  // DQ (9/2/2015): This typedef is no longer used, we can't define the
211117  // comment here (changed to be a C style comment and not be a doxygen comment).
211118  /* \brief Typedef used to hold memory addresses as values.
211119  */
211120  // typedef unsigned long AddressType;
211121 
211122 
211123 
211124  // necessary, to have direct access to the p_freepointer and the private methods !
211126  friend class AST_FILE_IO;
211127 
211129  friend class SgOmpDistributeParallelForStatementStorageClass;
211130 
211132  friend class AstSpecificDataManagingClass;
211133 
211135  friend class AstSpecificDataManagingClassStorageClass;
211136 
211137  public:
211139  SgOmpDistributeParallelForStatement( const SgOmpDistributeParallelForStatementStorageClass& source );
211140 
211141  // private: // JJW hack
211142  /*
211143  name AST Memory Allocation Support Variables
211144  Memory allocations support variables
211145 
211146  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
211147  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
211148  and support the AST File I/O Mechanism.
211149  */
211150  /* */
211151 
211152  public:
211153 
211154  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
211155  // to current node (so that it will work cleanly with build functions to specify patterns).
211156  // virtual SgNode* addRegExpAttribute();
211163 
211164 // *** COMMON CODE SECTION ENDS HERE ***
211165 
211166 
211167 // End of memberFunctionString
211168 // Start of memberFunctionString
211169 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
211170 
211171  // the generated cast function
211172  // friend ROSE_DLL_API SgOmpDistributeParallelForStatement* isSgOmpDistributeParallelForStatement ( SgNode* s );
211173 
211175 
211176 
211177 // End of memberFunctionString
211178 // Start of memberFunctionString
211179 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
211180 
211181  void post_construction_initialization() override;
211182 
211183 
211184 // End of memberFunctionString
211185 
211186 
211187  public:
211189 
211190 
211191  public:
211192  SgOmpDistributeParallelForStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
211194 
211195  protected:
211196 
211197 
211198 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
211199 
211200 
211201  };
211202 #endif
211203 
211204 // postdeclarations for SgOmpDistributeParallelForStatement
211205 
211206 /* #line 211207 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
211207 
211208 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
211209 
211210 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
211211 
211212 
211213 /* #line 211214 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
211214 
211215 
211216 
211217 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
211218 
211219 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
211220 // This code is automatically generated for each
211221 // terminal and non-terminal within the defined
211222 // grammar. There is a simple way to change the
211223 // code to fix bugs etc. See the ROSE README file
211224 // for directions.
211225 
211226 // tps: (02/22/2010): Adding DLL export requirements
211227 #include "rosedll.h"
211228 
211229 // predeclarations for SgOmpDistributeParallelForSimdStatement
211230 
211231 /* #line 211232 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
211232 
211233 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
211234 
211235 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
211236 
211237 #if 1
211238 // Class Definition for SgOmpDistributeParallelForSimdStatement
211240  {
211241  public:
211242 
211243 
211244 /* #line 211245 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
211245 
211246  virtual SgNode* copy ( SgCopyHelp& help) const override;
211247 // Start of memberFunctionString
211248 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
211249 
211250 // *** COMMON CODE SECTION BEGINS HERE ***
211251 
211252  public:
211253 
211254  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
211255  // and not required which is required to match the other aspects of the copy mechanism code generation.
211256  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
211257  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
211258  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
211259  // virtual SgNode* copy ( const SgCopyHelp & help) const;
211260 
211262  virtual std::string class_name() const override;
211263 
211265  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
211266 
211268  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
211269  // static const VariantT static_variant = V_SgOmpDistributeParallelForSimdStatement;
211270  enum { static_variant = V_SgOmpDistributeParallelForSimdStatement };
211271 
211272  /* the generated cast function */
211274  ROSE_DLL_API friend SgOmpDistributeParallelForSimdStatement* isSgOmpDistributeParallelForSimdStatement( SgNode * s );
211275 
211277  ROSE_DLL_API friend const SgOmpDistributeParallelForSimdStatement* isSgOmpDistributeParallelForSimdStatement( const SgNode * s );
211278 
211279  // ******************************************
211280  // * Memory Pool / New / Delete
211281  // ******************************************
211282 
211283  public:
211285  static const unsigned pool_size; //
211287  static std::vector<unsigned char *> pools; //
211289  static SgOmpDistributeParallelForSimdStatement * next_node; //
211290 
211292  static unsigned long initializeStorageClassArray(SgOmpDistributeParallelForSimdStatementStorageClass *); //
211293 
211295  static void clearMemoryPool(); //
211296  static void deleteMemoryPool(); //
211297 
211299  static void extendMemoryPoolForFileIO(); //
211300 
211302  static SgOmpDistributeParallelForSimdStatement * getPointerFromGlobalIndex(unsigned long); //
211304  static SgOmpDistributeParallelForSimdStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
211305 
211307  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
211309  static void resetValidFreepointers(); //
211311  static unsigned long getNumberOfLastValidPointer(); //
211312 
211313 
211314 #if defined(INLINE_FUNCTIONS)
211315 
211316  inline void *operator new (size_t size);
211317 #else
211318 
211319  void *operator new (size_t size);
211320 #endif
211321 
211322  void operator delete (void* pointer, size_t size);
211323 
211324  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
211325  void operator delete (void* pointer)
211326  {
211327  // This is the generated delete operator...
211328  SgOmpDistributeParallelForSimdStatement::operator delete (pointer,sizeof(SgOmpDistributeParallelForSimdStatement));
211329  }
211330 
211332  static size_t numberOfNodes();
211333 
211335  static size_t memoryUsage();
211336 
211337  // End of scope which started in IR nodes specific code
211338  /* */
211339 
211340  /* name Internal Functions
211341  \brief Internal functions ... incomplete-documentation
211342 
211343  These functions have been made public as part of the design, but they are suggested for internal use
211344  or by particularly knowledgeable users for specialized tools or applications.
211345 
211346  \internal We could not make these private because they are required by user for special purposes. And
211347  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
211348 
211349  */
211350 
211351  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
211352  // overridden in every class by *generated* implementation
211354  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
211355  // MS: 06/28/02 container of names of variables or container indices
211356  // used used in the traversal to access AST successor nodes
211357  // overridden in every class by *generated* implementation
211360  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
211361 
211362  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
211363  // than all the vector copies. The implementation for these functions is generated for each class.
211365  virtual size_t get_numberOfTraversalSuccessors() override;
211367  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
211369  virtual size_t get_childIndex(SgNode *child) override;
211370 
211371 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
211372  // MS: 08/16/2002 method for generating RTI information
211374  virtual RTIReturnType roseRTI() override;
211375 #endif
211376  /* */
211377 
211378 
211379 
211380  /* name Deprecated Functions
211381  \brief Deprecated functions ... incomplete-documentation
211382 
211383  These functions have been deprecated from use.
211384  */
211385  /* */
211386 
211388  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
211389 
211390  // JJW (10/16/2008): Changed to a single function in Node.code, and put
211391  // getVariant() in #if 0 block to prevent confusing Doxygen
211392 #if 0
211393 
211394  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
211396  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
211397 #endif
211398  /* */
211399 
211400 
211401 
211402 
211403  public:
211404  /* name Traversal Support Functions
211405  \brief Traversal support functions ... incomplete-documentation
211406 
211407  These functions have been made public as part of the design, but they are suggested for internal use
211408  or by particularly knowledgable users for specialized tools or applications.
211409  */
211410  /* */
211411 
211412  // DQ (11/26/2005): Support for visitor pattern mechanims
211413  // (inferior to ROSE traversal mechanism, experimental).
211417 
211418  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
211420  virtual void accept (ROSE_VisitorPattern & visitor) override;
211421 
211422  // DQ (12/26/2005): Support for traversal based on the memory pool
211425  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
211426 
211429  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
211430 
211431  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
211432  // This traversal helps support internal tools that call static member functions.
211433  // note: this function operates on the memory pools.
211436  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
211437  /* */
211438 
211439 
211440  public:
211441  /* name Memory Allocation Functions
211442  \brief Memory allocations functions ... incomplete-documentation
211443 
211444  These functions have been made public as part of the design, but they are suggested for internal use
211445  or by particularly knowledgable users for specialized tools or applications.
211446  */
211447  /* */
211448 
211459  virtual bool isInMemoryPool() override;
211460 
211471  virtual void checkDataMemberPointersIfInMemoryPool() override;
211472 
211473  // DQ (4/30/2006): Modified to be a const function.
211488  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
211489 
211499  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
211500 
211512  virtual long getChildIndex( SgNode* childNode ) const override;
211513 
211514  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
211515  // comment here (changed to be a C style comment and not be a doxygen comment).
211516  /* \brief Constructor for use by AST File I/O Mechanism
211517 
211518  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
211519  which obtained via fast binary file I/O from disk.
211520  */
211521  // SgOmpDistributeParallelForSimdStatement( SgOmpDistributeParallelForSimdStatementStorageClass& source );
211522 
211523 
211524 
211525 
211526 
211527  // JH (10/24/2005): methods added to support the ast file IO
211528  private:
211529 
211530  /* name AST Memory Allocation Support Functions
211531  \brief Memory allocations support....
211532 
211533  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
211534  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
211535  and support the AST File I/O Mechanism.
211536  */
211537  /* */
211538 
211539  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
211540  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
211541  that I use the same type everywhere, if any changes are made. THe second one declares the type
211542  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
211543  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
211544  a correspinding one in the AST_FILE_IO class!
211545  */
211546  // DQ (9/2/2015): This typedef is no longer used, we can't define the
211547  // comment here (changed to be a C style comment and not be a doxygen comment).
211548  /* \brief Typedef used for low level memory access.
211549  */
211550  // typedef unsigned char* TestType;
211551 
211552  // DQ (9/2/2015): This typedef is no longer used, we can't define the
211553  // comment here (changed to be a C style comment and not be a doxygen comment).
211554  /* \brief Typedef used to hold memory addresses as values.
211555  */
211556  // typedef unsigned long AddressType;
211557 
211558 
211559 
211560  // necessary, to have direct access to the p_freepointer and the private methods !
211562  friend class AST_FILE_IO;
211563 
211565  friend class SgOmpDistributeParallelForSimdStatementStorageClass;
211566 
211568  friend class AstSpecificDataManagingClass;
211569 
211571  friend class AstSpecificDataManagingClassStorageClass;
211572 
211573  public:
211575  SgOmpDistributeParallelForSimdStatement( const SgOmpDistributeParallelForSimdStatementStorageClass& source );
211576 
211577  // private: // JJW hack
211578  /*
211579  name AST Memory Allocation Support Variables
211580  Memory allocations support variables
211581 
211582  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
211583  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
211584  and support the AST File I/O Mechanism.
211585  */
211586  /* */
211587 
211588  public:
211589 
211590  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
211591  // to current node (so that it will work cleanly with build functions to specify patterns).
211592  // virtual SgNode* addRegExpAttribute();
211599 
211600 // *** COMMON CODE SECTION ENDS HERE ***
211601 
211602 
211603 // End of memberFunctionString
211604 // Start of memberFunctionString
211605 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
211606 
211607  // the generated cast function
211608  // friend ROSE_DLL_API SgOmpDistributeParallelForSimdStatement* isSgOmpDistributeParallelForSimdStatement ( SgNode* s );
211609 
211611 
211612 
211613 // End of memberFunctionString
211614 // Start of memberFunctionString
211615 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
211616 
211617  void post_construction_initialization() override;
211618 
211619 
211620 // End of memberFunctionString
211621 
211622 
211623  public:
211625 
211626 
211627  public:
211628  SgOmpDistributeParallelForSimdStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
211630 
211631  protected:
211632 
211633 
211634 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
211635 
211636 
211637  };
211638 #endif
211639 
211640 // postdeclarations for SgOmpDistributeParallelForSimdStatement
211641 
211642 /* #line 211643 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
211643 
211644 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
211645 
211646 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
211647 
211648 
211649 /* #line 211650 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
211650 
211651 
211652 
211653 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
211654 
211655 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
211656 // This code is automatically generated for each
211657 // terminal and non-terminal within the defined
211658 // grammar. There is a simple way to change the
211659 // code to fix bugs etc. See the ROSE README file
211660 // for directions.
211661 
211662 // tps: (02/22/2010): Adding DLL export requirements
211663 #include "rosedll.h"
211664 
211665 // predeclarations for SgOmpTaskloopSimdStatement
211666 
211667 /* #line 211668 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
211668 
211669 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
211670 
211671 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
211672 
211673 #if 1
211674 // Class Definition for SgOmpTaskloopSimdStatement
211676  {
211677  public:
211678 
211679 
211680 /* #line 211681 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
211681 
211682  virtual SgNode* copy ( SgCopyHelp& help) const override;
211683 // Start of memberFunctionString
211684 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
211685 
211686 // *** COMMON CODE SECTION BEGINS HERE ***
211687 
211688  public:
211689 
211690  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
211691  // and not required which is required to match the other aspects of the copy mechanism code generation.
211692  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
211693  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
211694  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
211695  // virtual SgNode* copy ( const SgCopyHelp & help) const;
211696 
211698  virtual std::string class_name() const override;
211699 
211701  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
211702 
211704  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
211705  // static const VariantT static_variant = V_SgOmpTaskloopSimdStatement;
211706  enum { static_variant = V_SgOmpTaskloopSimdStatement };
211707 
211708  /* the generated cast function */
211710  ROSE_DLL_API friend SgOmpTaskloopSimdStatement* isSgOmpTaskloopSimdStatement( SgNode * s );
211711 
211713  ROSE_DLL_API friend const SgOmpTaskloopSimdStatement* isSgOmpTaskloopSimdStatement( const SgNode * s );
211714 
211715  // ******************************************
211716  // * Memory Pool / New / Delete
211717  // ******************************************
211718 
211719  public:
211721  static const unsigned pool_size; //
211723  static std::vector<unsigned char *> pools; //
211725  static SgOmpTaskloopSimdStatement * next_node; //
211726 
211728  static unsigned long initializeStorageClassArray(SgOmpTaskloopSimdStatementStorageClass *); //
211729 
211731  static void clearMemoryPool(); //
211732  static void deleteMemoryPool(); //
211733 
211735  static void extendMemoryPoolForFileIO(); //
211736 
211738  static SgOmpTaskloopSimdStatement * getPointerFromGlobalIndex(unsigned long); //
211740  static SgOmpTaskloopSimdStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
211741 
211743  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
211745  static void resetValidFreepointers(); //
211747  static unsigned long getNumberOfLastValidPointer(); //
211748 
211749 
211750 #if defined(INLINE_FUNCTIONS)
211751 
211752  inline void *operator new (size_t size);
211753 #else
211754 
211755  void *operator new (size_t size);
211756 #endif
211757 
211758  void operator delete (void* pointer, size_t size);
211759 
211760  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
211761  void operator delete (void* pointer)
211762  {
211763  // This is the generated delete operator...
211764  SgOmpTaskloopSimdStatement::operator delete (pointer,sizeof(SgOmpTaskloopSimdStatement));
211765  }
211766 
211768  static size_t numberOfNodes();
211769 
211771  static size_t memoryUsage();
211772 
211773  // End of scope which started in IR nodes specific code
211774  /* */
211775 
211776  /* name Internal Functions
211777  \brief Internal functions ... incomplete-documentation
211778 
211779  These functions have been made public as part of the design, but they are suggested for internal use
211780  or by particularly knowledgeable users for specialized tools or applications.
211781 
211782  \internal We could not make these private because they are required by user for special purposes. And
211783  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
211784 
211785  */
211786 
211787  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
211788  // overridden in every class by *generated* implementation
211790  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
211791  // MS: 06/28/02 container of names of variables or container indices
211792  // used used in the traversal to access AST successor nodes
211793  // overridden in every class by *generated* implementation
211796  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
211797 
211798  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
211799  // than all the vector copies. The implementation for these functions is generated for each class.
211801  virtual size_t get_numberOfTraversalSuccessors() override;
211803  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
211805  virtual size_t get_childIndex(SgNode *child) override;
211806 
211807 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
211808  // MS: 08/16/2002 method for generating RTI information
211810  virtual RTIReturnType roseRTI() override;
211811 #endif
211812  /* */
211813 
211814 
211815 
211816  /* name Deprecated Functions
211817  \brief Deprecated functions ... incomplete-documentation
211818 
211819  These functions have been deprecated from use.
211820  */
211821  /* */
211822 
211824  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
211825 
211826  // JJW (10/16/2008): Changed to a single function in Node.code, and put
211827  // getVariant() in #if 0 block to prevent confusing Doxygen
211828 #if 0
211829 
211830  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
211832  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
211833 #endif
211834  /* */
211835 
211836 
211837 
211838 
211839  public:
211840  /* name Traversal Support Functions
211841  \brief Traversal support functions ... incomplete-documentation
211842 
211843  These functions have been made public as part of the design, but they are suggested for internal use
211844  or by particularly knowledgable users for specialized tools or applications.
211845  */
211846  /* */
211847 
211848  // DQ (11/26/2005): Support for visitor pattern mechanims
211849  // (inferior to ROSE traversal mechanism, experimental).
211853 
211854  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
211856  virtual void accept (ROSE_VisitorPattern & visitor) override;
211857 
211858  // DQ (12/26/2005): Support for traversal based on the memory pool
211861  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
211862 
211865  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
211866 
211867  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
211868  // This traversal helps support internal tools that call static member functions.
211869  // note: this function operates on the memory pools.
211872  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
211873  /* */
211874 
211875 
211876  public:
211877  /* name Memory Allocation Functions
211878  \brief Memory allocations functions ... incomplete-documentation
211879 
211880  These functions have been made public as part of the design, but they are suggested for internal use
211881  or by particularly knowledgable users for specialized tools or applications.
211882  */
211883  /* */
211884 
211895  virtual bool isInMemoryPool() override;
211896 
211907  virtual void checkDataMemberPointersIfInMemoryPool() override;
211908 
211909  // DQ (4/30/2006): Modified to be a const function.
211924  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
211925 
211935  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
211936 
211948  virtual long getChildIndex( SgNode* childNode ) const override;
211949 
211950  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
211951  // comment here (changed to be a C style comment and not be a doxygen comment).
211952  /* \brief Constructor for use by AST File I/O Mechanism
211953 
211954  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
211955  which obtained via fast binary file I/O from disk.
211956  */
211957  // SgOmpTaskloopSimdStatement( SgOmpTaskloopSimdStatementStorageClass& source );
211958 
211959 
211960 
211961 
211962 
211963  // JH (10/24/2005): methods added to support the ast file IO
211964  private:
211965 
211966  /* name AST Memory Allocation Support Functions
211967  \brief Memory allocations support....
211968 
211969  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
211970  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
211971  and support the AST File I/O Mechanism.
211972  */
211973  /* */
211974 
211975  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
211976  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
211977  that I use the same type everywhere, if any changes are made. THe second one declares the type
211978  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
211979  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
211980  a correspinding one in the AST_FILE_IO class!
211981  */
211982  // DQ (9/2/2015): This typedef is no longer used, we can't define the
211983  // comment here (changed to be a C style comment and not be a doxygen comment).
211984  /* \brief Typedef used for low level memory access.
211985  */
211986  // typedef unsigned char* TestType;
211987 
211988  // DQ (9/2/2015): This typedef is no longer used, we can't define the
211989  // comment here (changed to be a C style comment and not be a doxygen comment).
211990  /* \brief Typedef used to hold memory addresses as values.
211991  */
211992  // typedef unsigned long AddressType;
211993 
211994 
211995 
211996  // necessary, to have direct access to the p_freepointer and the private methods !
211998  friend class AST_FILE_IO;
211999 
212001  friend class SgOmpTaskloopSimdStatementStorageClass;
212002 
212004  friend class AstSpecificDataManagingClass;
212005 
212007  friend class AstSpecificDataManagingClassStorageClass;
212008 
212009  public:
212011  SgOmpTaskloopSimdStatement( const SgOmpTaskloopSimdStatementStorageClass& source );
212012 
212013  // private: // JJW hack
212014  /*
212015  name AST Memory Allocation Support Variables
212016  Memory allocations support variables
212017 
212018  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
212019  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
212020  and support the AST File I/O Mechanism.
212021  */
212022  /* */
212023 
212024  public:
212025 
212026  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
212027  // to current node (so that it will work cleanly with build functions to specify patterns).
212028  // virtual SgNode* addRegExpAttribute();
212035 
212036 // *** COMMON CODE SECTION ENDS HERE ***
212037 
212038 
212039 // End of memberFunctionString
212040 // Start of memberFunctionString
212041 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
212042 
212043  // the generated cast function
212044  // friend ROSE_DLL_API SgOmpTaskloopSimdStatement* isSgOmpTaskloopSimdStatement ( SgNode* s );
212045 
212047 
212048 
212049 // End of memberFunctionString
212050 // Start of memberFunctionString
212051 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
212052 
212053  void post_construction_initialization() override;
212054 
212055 
212056 // End of memberFunctionString
212057 
212058 
212059  public:
212060  virtual ~SgOmpTaskloopSimdStatement();
212061 
212062 
212063  public:
212064  SgOmpTaskloopSimdStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
212066 
212067  protected:
212068 
212069 
212070 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
212071 
212072 
212073  };
212074 #endif
212075 
212076 // postdeclarations for SgOmpTaskloopSimdStatement
212077 
212078 /* #line 212079 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
212079 
212080 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
212081 
212082 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
212083 
212084 
212085 /* #line 212086 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
212086 
212087 
212088 
212089 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
212090 
212091 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
212092 // This code is automatically generated for each
212093 // terminal and non-terminal within the defined
212094 // grammar. There is a simple way to change the
212095 // code to fix bugs etc. See the ROSE README file
212096 // for directions.
212097 
212098 // tps: (02/22/2010): Adding DLL export requirements
212099 #include "rosedll.h"
212100 
212101 // predeclarations for SgOmpMasterTaskloopSimdStatement
212102 
212103 /* #line 212104 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
212104 
212105 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
212106 
212107 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
212108 
212109 #if 1
212110 // Class Definition for SgOmpMasterTaskloopSimdStatement
212112  {
212113  public:
212114 
212115 
212116 /* #line 212117 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
212117 
212118  virtual SgNode* copy ( SgCopyHelp& help) const override;
212119 // Start of memberFunctionString
212120 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
212121 
212122 // *** COMMON CODE SECTION BEGINS HERE ***
212123 
212124  public:
212125 
212126  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
212127  // and not required which is required to match the other aspects of the copy mechanism code generation.
212128  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
212129  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
212130  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
212131  // virtual SgNode* copy ( const SgCopyHelp & help) const;
212132 
212134  virtual std::string class_name() const override;
212135 
212137  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
212138 
212140  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
212141  // static const VariantT static_variant = V_SgOmpMasterTaskloopSimdStatement;
212142  enum { static_variant = V_SgOmpMasterTaskloopSimdStatement };
212143 
212144  /* the generated cast function */
212146  ROSE_DLL_API friend SgOmpMasterTaskloopSimdStatement* isSgOmpMasterTaskloopSimdStatement( SgNode * s );
212147 
212149  ROSE_DLL_API friend const SgOmpMasterTaskloopSimdStatement* isSgOmpMasterTaskloopSimdStatement( const SgNode * s );
212150 
212151  // ******************************************
212152  // * Memory Pool / New / Delete
212153  // ******************************************
212154 
212155  public:
212157  static const unsigned pool_size; //
212159  static std::vector<unsigned char *> pools; //
212161  static SgOmpMasterTaskloopSimdStatement * next_node; //
212162 
212164  static unsigned long initializeStorageClassArray(SgOmpMasterTaskloopSimdStatementStorageClass *); //
212165 
212167  static void clearMemoryPool(); //
212168  static void deleteMemoryPool(); //
212169 
212171  static void extendMemoryPoolForFileIO(); //
212172 
212174  static SgOmpMasterTaskloopSimdStatement * getPointerFromGlobalIndex(unsigned long); //
212176  static SgOmpMasterTaskloopSimdStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
212177 
212179  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
212181  static void resetValidFreepointers(); //
212183  static unsigned long getNumberOfLastValidPointer(); //
212184 
212185 
212186 #if defined(INLINE_FUNCTIONS)
212187 
212188  inline void *operator new (size_t size);
212189 #else
212190 
212191  void *operator new (size_t size);
212192 #endif
212193 
212194  void operator delete (void* pointer, size_t size);
212195 
212196  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
212197  void operator delete (void* pointer)
212198  {
212199  // This is the generated delete operator...
212200  SgOmpMasterTaskloopSimdStatement::operator delete (pointer,sizeof(SgOmpMasterTaskloopSimdStatement));
212201  }
212202 
212204  static size_t numberOfNodes();
212205 
212207  static size_t memoryUsage();
212208 
212209  // End of scope which started in IR nodes specific code
212210  /* */
212211 
212212  /* name Internal Functions
212213  \brief Internal functions ... incomplete-documentation
212214 
212215  These functions have been made public as part of the design, but they are suggested for internal use
212216  or by particularly knowledgeable users for specialized tools or applications.
212217 
212218  \internal We could not make these private because they are required by user for special purposes. And
212219  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
212220 
212221  */
212222 
212223  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
212224  // overridden in every class by *generated* implementation
212226  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
212227  // MS: 06/28/02 container of names of variables or container indices
212228  // used used in the traversal to access AST successor nodes
212229  // overridden in every class by *generated* implementation
212232  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
212233 
212234  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
212235  // than all the vector copies. The implementation for these functions is generated for each class.
212237  virtual size_t get_numberOfTraversalSuccessors() override;
212239  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
212241  virtual size_t get_childIndex(SgNode *child) override;
212242 
212243 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
212244  // MS: 08/16/2002 method for generating RTI information
212246  virtual RTIReturnType roseRTI() override;
212247 #endif
212248  /* */
212249 
212250 
212251 
212252  /* name Deprecated Functions
212253  \brief Deprecated functions ... incomplete-documentation
212254 
212255  These functions have been deprecated from use.
212256  */
212257  /* */
212258 
212260  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
212261 
212262  // JJW (10/16/2008): Changed to a single function in Node.code, and put
212263  // getVariant() in #if 0 block to prevent confusing Doxygen
212264 #if 0
212265 
212266  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
212268  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
212269 #endif
212270  /* */
212271 
212272 
212273 
212274 
212275  public:
212276  /* name Traversal Support Functions
212277  \brief Traversal support functions ... incomplete-documentation
212278 
212279  These functions have been made public as part of the design, but they are suggested for internal use
212280  or by particularly knowledgable users for specialized tools or applications.
212281  */
212282  /* */
212283 
212284  // DQ (11/26/2005): Support for visitor pattern mechanims
212285  // (inferior to ROSE traversal mechanism, experimental).
212289 
212290  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
212292  virtual void accept (ROSE_VisitorPattern & visitor) override;
212293 
212294  // DQ (12/26/2005): Support for traversal based on the memory pool
212297  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
212298 
212301  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
212302 
212303  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
212304  // This traversal helps support internal tools that call static member functions.
212305  // note: this function operates on the memory pools.
212308  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
212309  /* */
212310 
212311 
212312  public:
212313  /* name Memory Allocation Functions
212314  \brief Memory allocations functions ... incomplete-documentation
212315 
212316  These functions have been made public as part of the design, but they are suggested for internal use
212317  or by particularly knowledgable users for specialized tools or applications.
212318  */
212319  /* */
212320 
212331  virtual bool isInMemoryPool() override;
212332 
212343  virtual void checkDataMemberPointersIfInMemoryPool() override;
212344 
212345  // DQ (4/30/2006): Modified to be a const function.
212360  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
212361 
212371  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
212372 
212384  virtual long getChildIndex( SgNode* childNode ) const override;
212385 
212386  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
212387  // comment here (changed to be a C style comment and not be a doxygen comment).
212388  /* \brief Constructor for use by AST File I/O Mechanism
212389 
212390  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
212391  which obtained via fast binary file I/O from disk.
212392  */
212393  // SgOmpMasterTaskloopSimdStatement( SgOmpMasterTaskloopSimdStatementStorageClass& source );
212394 
212395 
212396 
212397 
212398 
212399  // JH (10/24/2005): methods added to support the ast file IO
212400  private:
212401 
212402  /* name AST Memory Allocation Support Functions
212403  \brief Memory allocations support....
212404 
212405  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
212406  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
212407  and support the AST File I/O Mechanism.
212408  */
212409  /* */
212410 
212411  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
212412  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
212413  that I use the same type everywhere, if any changes are made. THe second one declares the type
212414  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
212415  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
212416  a correspinding one in the AST_FILE_IO class!
212417  */
212418  // DQ (9/2/2015): This typedef is no longer used, we can't define the
212419  // comment here (changed to be a C style comment and not be a doxygen comment).
212420  /* \brief Typedef used for low level memory access.
212421  */
212422  // typedef unsigned char* TestType;
212423 
212424  // DQ (9/2/2015): This typedef is no longer used, we can't define the
212425  // comment here (changed to be a C style comment and not be a doxygen comment).
212426  /* \brief Typedef used to hold memory addresses as values.
212427  */
212428  // typedef unsigned long AddressType;
212429 
212430 
212431 
212432  // necessary, to have direct access to the p_freepointer and the private methods !
212434  friend class AST_FILE_IO;
212435 
212437  friend class SgOmpMasterTaskloopSimdStatementStorageClass;
212438 
212440  friend class AstSpecificDataManagingClass;
212441 
212443  friend class AstSpecificDataManagingClassStorageClass;
212444 
212445  public:
212447  SgOmpMasterTaskloopSimdStatement( const SgOmpMasterTaskloopSimdStatementStorageClass& source );
212448 
212449  // private: // JJW hack
212450  /*
212451  name AST Memory Allocation Support Variables
212452  Memory allocations support variables
212453 
212454  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
212455  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
212456  and support the AST File I/O Mechanism.
212457  */
212458  /* */
212459 
212460  public:
212461 
212462  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
212463  // to current node (so that it will work cleanly with build functions to specify patterns).
212464  // virtual SgNode* addRegExpAttribute();
212471 
212472 // *** COMMON CODE SECTION ENDS HERE ***
212473 
212474 
212475 // End of memberFunctionString
212476 // Start of memberFunctionString
212477 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
212478 
212479  // the generated cast function
212480  // friend ROSE_DLL_API SgOmpMasterTaskloopSimdStatement* isSgOmpMasterTaskloopSimdStatement ( SgNode* s );
212481 
212483 
212484 
212485 // End of memberFunctionString
212486 // Start of memberFunctionString
212487 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
212488 
212489  void post_construction_initialization() override;
212490 
212491 
212492 // End of memberFunctionString
212493 
212494 
212495  public:
212497 
212498 
212499  public:
212500  SgOmpMasterTaskloopSimdStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
212502 
212503  protected:
212504 
212505 
212506 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
212507 
212508 
212509  };
212510 #endif
212511 
212512 // postdeclarations for SgOmpMasterTaskloopSimdStatement
212513 
212514 /* #line 212515 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
212515 
212516 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
212517 
212518 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
212519 
212520 
212521 /* #line 212522 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
212522 
212523 
212524 
212525 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
212526 
212527 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
212528 // This code is automatically generated for each
212529 // terminal and non-terminal within the defined
212530 // grammar. There is a simple way to change the
212531 // code to fix bugs etc. See the ROSE README file
212532 // for directions.
212533 
212534 // tps: (02/22/2010): Adding DLL export requirements
212535 #include "rosedll.h"
212536 
212537 // predeclarations for SgOmpParallelMasterTaskloopStatement
212538 
212539 /* #line 212540 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
212540 
212541 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
212542 
212543 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
212544 
212545 #if 1
212546 // Class Definition for SgOmpParallelMasterTaskloopStatement
212548  {
212549  public:
212550 
212551 
212552 /* #line 212553 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
212553 
212554  virtual SgNode* copy ( SgCopyHelp& help) const override;
212555 // Start of memberFunctionString
212556 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
212557 
212558 // *** COMMON CODE SECTION BEGINS HERE ***
212559 
212560  public:
212561 
212562  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
212563  // and not required which is required to match the other aspects of the copy mechanism code generation.
212564  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
212565  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
212566  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
212567  // virtual SgNode* copy ( const SgCopyHelp & help) const;
212568 
212570  virtual std::string class_name() const override;
212571 
212573  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
212574 
212576  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
212577  // static const VariantT static_variant = V_SgOmpParallelMasterTaskloopStatement;
212578  enum { static_variant = V_SgOmpParallelMasterTaskloopStatement };
212579 
212580  /* the generated cast function */
212582  ROSE_DLL_API friend SgOmpParallelMasterTaskloopStatement* isSgOmpParallelMasterTaskloopStatement( SgNode * s );
212583 
212585  ROSE_DLL_API friend const SgOmpParallelMasterTaskloopStatement* isSgOmpParallelMasterTaskloopStatement( const SgNode * s );
212586 
212587  // ******************************************
212588  // * Memory Pool / New / Delete
212589  // ******************************************
212590 
212591  public:
212593  static const unsigned pool_size; //
212595  static std::vector<unsigned char *> pools; //
212597  static SgOmpParallelMasterTaskloopStatement * next_node; //
212598 
212600  static unsigned long initializeStorageClassArray(SgOmpParallelMasterTaskloopStatementStorageClass *); //
212601 
212603  static void clearMemoryPool(); //
212604  static void deleteMemoryPool(); //
212605 
212607  static void extendMemoryPoolForFileIO(); //
212608 
212610  static SgOmpParallelMasterTaskloopStatement * getPointerFromGlobalIndex(unsigned long); //
212612  static SgOmpParallelMasterTaskloopStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
212613 
212615  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
212617  static void resetValidFreepointers(); //
212619  static unsigned long getNumberOfLastValidPointer(); //
212620 
212621 
212622 #if defined(INLINE_FUNCTIONS)
212623 
212624  inline void *operator new (size_t size);
212625 #else
212626 
212627  void *operator new (size_t size);
212628 #endif
212629 
212630  void operator delete (void* pointer, size_t size);
212631 
212632  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
212633  void operator delete (void* pointer)
212634  {
212635  // This is the generated delete operator...
212636  SgOmpParallelMasterTaskloopStatement::operator delete (pointer,sizeof(SgOmpParallelMasterTaskloopStatement));
212637  }
212638 
212640  static size_t numberOfNodes();
212641 
212643  static size_t memoryUsage();
212644 
212645  // End of scope which started in IR nodes specific code
212646  /* */
212647 
212648  /* name Internal Functions
212649  \brief Internal functions ... incomplete-documentation
212650 
212651  These functions have been made public as part of the design, but they are suggested for internal use
212652  or by particularly knowledgeable users for specialized tools or applications.
212653 
212654  \internal We could not make these private because they are required by user for special purposes. And
212655  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
212656 
212657  */
212658 
212659  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
212660  // overridden in every class by *generated* implementation
212662  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
212663  // MS: 06/28/02 container of names of variables or container indices
212664  // used used in the traversal to access AST successor nodes
212665  // overridden in every class by *generated* implementation
212668  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
212669 
212670  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
212671  // than all the vector copies. The implementation for these functions is generated for each class.
212673  virtual size_t get_numberOfTraversalSuccessors() override;
212675  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
212677  virtual size_t get_childIndex(SgNode *child) override;
212678 
212679 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
212680  // MS: 08/16/2002 method for generating RTI information
212682  virtual RTIReturnType roseRTI() override;
212683 #endif
212684  /* */
212685 
212686 
212687 
212688  /* name Deprecated Functions
212689  \brief Deprecated functions ... incomplete-documentation
212690 
212691  These functions have been deprecated from use.
212692  */
212693  /* */
212694 
212696  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
212697 
212698  // JJW (10/16/2008): Changed to a single function in Node.code, and put
212699  // getVariant() in #if 0 block to prevent confusing Doxygen
212700 #if 0
212701 
212702  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
212704  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
212705 #endif
212706  /* */
212707 
212708 
212709 
212710 
212711  public:
212712  /* name Traversal Support Functions
212713  \brief Traversal support functions ... incomplete-documentation
212714 
212715  These functions have been made public as part of the design, but they are suggested for internal use
212716  or by particularly knowledgable users for specialized tools or applications.
212717  */
212718  /* */
212719 
212720  // DQ (11/26/2005): Support for visitor pattern mechanims
212721  // (inferior to ROSE traversal mechanism, experimental).
212725 
212726  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
212728  virtual void accept (ROSE_VisitorPattern & visitor) override;
212729 
212730  // DQ (12/26/2005): Support for traversal based on the memory pool
212733  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
212734 
212737  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
212738 
212739  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
212740  // This traversal helps support internal tools that call static member functions.
212741  // note: this function operates on the memory pools.
212744  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
212745  /* */
212746 
212747 
212748  public:
212749  /* name Memory Allocation Functions
212750  \brief Memory allocations functions ... incomplete-documentation
212751 
212752  These functions have been made public as part of the design, but they are suggested for internal use
212753  or by particularly knowledgable users for specialized tools or applications.
212754  */
212755  /* */
212756 
212767  virtual bool isInMemoryPool() override;
212768 
212779  virtual void checkDataMemberPointersIfInMemoryPool() override;
212780 
212781  // DQ (4/30/2006): Modified to be a const function.
212796  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
212797 
212807  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
212808 
212820  virtual long getChildIndex( SgNode* childNode ) const override;
212821 
212822  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
212823  // comment here (changed to be a C style comment and not be a doxygen comment).
212824  /* \brief Constructor for use by AST File I/O Mechanism
212825 
212826  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
212827  which obtained via fast binary file I/O from disk.
212828  */
212829  // SgOmpParallelMasterTaskloopStatement( SgOmpParallelMasterTaskloopStatementStorageClass& source );
212830 
212831 
212832 
212833 
212834 
212835  // JH (10/24/2005): methods added to support the ast file IO
212836  private:
212837 
212838  /* name AST Memory Allocation Support Functions
212839  \brief Memory allocations support....
212840 
212841  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
212842  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
212843  and support the AST File I/O Mechanism.
212844  */
212845  /* */
212846 
212847  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
212848  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
212849  that I use the same type everywhere, if any changes are made. THe second one declares the type
212850  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
212851  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
212852  a correspinding one in the AST_FILE_IO class!
212853  */
212854  // DQ (9/2/2015): This typedef is no longer used, we can't define the
212855  // comment here (changed to be a C style comment and not be a doxygen comment).
212856  /* \brief Typedef used for low level memory access.
212857  */
212858  // typedef unsigned char* TestType;
212859 
212860  // DQ (9/2/2015): This typedef is no longer used, we can't define the
212861  // comment here (changed to be a C style comment and not be a doxygen comment).
212862  /* \brief Typedef used to hold memory addresses as values.
212863  */
212864  // typedef unsigned long AddressType;
212865 
212866 
212867 
212868  // necessary, to have direct access to the p_freepointer and the private methods !
212870  friend class AST_FILE_IO;
212871 
212873  friend class SgOmpParallelMasterTaskloopStatementStorageClass;
212874 
212876  friend class AstSpecificDataManagingClass;
212877 
212879  friend class AstSpecificDataManagingClassStorageClass;
212880 
212881  public:
212883  SgOmpParallelMasterTaskloopStatement( const SgOmpParallelMasterTaskloopStatementStorageClass& source );
212884 
212885  // private: // JJW hack
212886  /*
212887  name AST Memory Allocation Support Variables
212888  Memory allocations support variables
212889 
212890  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
212891  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
212892  and support the AST File I/O Mechanism.
212893  */
212894  /* */
212895 
212896  public:
212897 
212898  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
212899  // to current node (so that it will work cleanly with build functions to specify patterns).
212900  // virtual SgNode* addRegExpAttribute();
212907 
212908 // *** COMMON CODE SECTION ENDS HERE ***
212909 
212910 
212911 // End of memberFunctionString
212912 // Start of memberFunctionString
212913 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
212914 
212915  // the generated cast function
212916  // friend ROSE_DLL_API SgOmpParallelMasterTaskloopStatement* isSgOmpParallelMasterTaskloopStatement ( SgNode* s );
212917 
212919 
212920 
212921 // End of memberFunctionString
212922 // Start of memberFunctionString
212923 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
212924 
212925  void post_construction_initialization() override;
212926 
212927 
212928 // End of memberFunctionString
212929 
212930 
212931  public:
212933 
212934 
212935  public:
212936  SgOmpParallelMasterTaskloopStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
212938 
212939  protected:
212940 
212941 
212942 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
212943 
212944 
212945  };
212946 #endif
212947 
212948 // postdeclarations for SgOmpParallelMasterTaskloopStatement
212949 
212950 /* #line 212951 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
212951 
212952 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
212953 
212954 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
212955 
212956 
212957 /* #line 212958 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
212958 
212959 
212960 
212961 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
212962 
212963 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
212964 // This code is automatically generated for each
212965 // terminal and non-terminal within the defined
212966 // grammar. There is a simple way to change the
212967 // code to fix bugs etc. See the ROSE README file
212968 // for directions.
212969 
212970 // tps: (02/22/2010): Adding DLL export requirements
212971 #include "rosedll.h"
212972 
212973 // predeclarations for SgOmpParallelMasterTaskloopSimdStatement
212974 
212975 /* #line 212976 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
212976 
212977 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
212978 
212979 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
212980 
212981 #if 1
212982 // Class Definition for SgOmpParallelMasterTaskloopSimdStatement
212984  {
212985  public:
212986 
212987 
212988 /* #line 212989 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
212989 
212990  virtual SgNode* copy ( SgCopyHelp& help) const override;
212991 // Start of memberFunctionString
212992 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
212993 
212994 // *** COMMON CODE SECTION BEGINS HERE ***
212995 
212996  public:
212997 
212998  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
212999  // and not required which is required to match the other aspects of the copy mechanism code generation.
213000  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
213001  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
213002  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
213003  // virtual SgNode* copy ( const SgCopyHelp & help) const;
213004 
213006  virtual std::string class_name() const override;
213007 
213009  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
213010 
213012  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
213013  // static const VariantT static_variant = V_SgOmpParallelMasterTaskloopSimdStatement;
213014  enum { static_variant = V_SgOmpParallelMasterTaskloopSimdStatement };
213015 
213016  /* the generated cast function */
213018  ROSE_DLL_API friend SgOmpParallelMasterTaskloopSimdStatement* isSgOmpParallelMasterTaskloopSimdStatement( SgNode * s );
213019 
213021  ROSE_DLL_API friend const SgOmpParallelMasterTaskloopSimdStatement* isSgOmpParallelMasterTaskloopSimdStatement( const SgNode * s );
213022 
213023  // ******************************************
213024  // * Memory Pool / New / Delete
213025  // ******************************************
213026 
213027  public:
213029  static const unsigned pool_size; //
213031  static std::vector<unsigned char *> pools; //
213033  static SgOmpParallelMasterTaskloopSimdStatement * next_node; //
213034 
213036  static unsigned long initializeStorageClassArray(SgOmpParallelMasterTaskloopSimdStatementStorageClass *); //
213037 
213039  static void clearMemoryPool(); //
213040  static void deleteMemoryPool(); //
213041 
213043  static void extendMemoryPoolForFileIO(); //
213044 
213046  static SgOmpParallelMasterTaskloopSimdStatement * getPointerFromGlobalIndex(unsigned long); //
213048  static SgOmpParallelMasterTaskloopSimdStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
213049 
213051  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
213053  static void resetValidFreepointers(); //
213055  static unsigned long getNumberOfLastValidPointer(); //
213056 
213057 
213058 #if defined(INLINE_FUNCTIONS)
213059 
213060  inline void *operator new (size_t size);
213061 #else
213062 
213063  void *operator new (size_t size);
213064 #endif
213065 
213066  void operator delete (void* pointer, size_t size);
213067 
213068  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
213069  void operator delete (void* pointer)
213070  {
213071  // This is the generated delete operator...
213072  SgOmpParallelMasterTaskloopSimdStatement::operator delete (pointer,sizeof(SgOmpParallelMasterTaskloopSimdStatement));
213073  }
213074 
213076  static size_t numberOfNodes();
213077 
213079  static size_t memoryUsage();
213080 
213081  // End of scope which started in IR nodes specific code
213082  /* */
213083 
213084  /* name Internal Functions
213085  \brief Internal functions ... incomplete-documentation
213086 
213087  These functions have been made public as part of the design, but they are suggested for internal use
213088  or by particularly knowledgeable users for specialized tools or applications.
213089 
213090  \internal We could not make these private because they are required by user for special purposes. And
213091  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
213092 
213093  */
213094 
213095  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
213096  // overridden in every class by *generated* implementation
213098  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
213099  // MS: 06/28/02 container of names of variables or container indices
213100  // used used in the traversal to access AST successor nodes
213101  // overridden in every class by *generated* implementation
213104  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
213105 
213106  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
213107  // than all the vector copies. The implementation for these functions is generated for each class.
213109  virtual size_t get_numberOfTraversalSuccessors() override;
213111  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
213113  virtual size_t get_childIndex(SgNode *child) override;
213114 
213115 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
213116  // MS: 08/16/2002 method for generating RTI information
213118  virtual RTIReturnType roseRTI() override;
213119 #endif
213120  /* */
213121 
213122 
213123 
213124  /* name Deprecated Functions
213125  \brief Deprecated functions ... incomplete-documentation
213126 
213127  These functions have been deprecated from use.
213128  */
213129  /* */
213130 
213132  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
213133 
213134  // JJW (10/16/2008): Changed to a single function in Node.code, and put
213135  // getVariant() in #if 0 block to prevent confusing Doxygen
213136 #if 0
213137 
213138  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
213140  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
213141 #endif
213142  /* */
213143 
213144 
213145 
213146 
213147  public:
213148  /* name Traversal Support Functions
213149  \brief Traversal support functions ... incomplete-documentation
213150 
213151  These functions have been made public as part of the design, but they are suggested for internal use
213152  or by particularly knowledgable users for specialized tools or applications.
213153  */
213154  /* */
213155 
213156  // DQ (11/26/2005): Support for visitor pattern mechanims
213157  // (inferior to ROSE traversal mechanism, experimental).
213161 
213162  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
213164  virtual void accept (ROSE_VisitorPattern & visitor) override;
213165 
213166  // DQ (12/26/2005): Support for traversal based on the memory pool
213169  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
213170 
213173  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
213174 
213175  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
213176  // This traversal helps support internal tools that call static member functions.
213177  // note: this function operates on the memory pools.
213180  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
213181  /* */
213182 
213183 
213184  public:
213185  /* name Memory Allocation Functions
213186  \brief Memory allocations functions ... incomplete-documentation
213187 
213188  These functions have been made public as part of the design, but they are suggested for internal use
213189  or by particularly knowledgable users for specialized tools or applications.
213190  */
213191  /* */
213192 
213203  virtual bool isInMemoryPool() override;
213204 
213215  virtual void checkDataMemberPointersIfInMemoryPool() override;
213216 
213217  // DQ (4/30/2006): Modified to be a const function.
213232  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
213233 
213243  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
213244 
213256  virtual long getChildIndex( SgNode* childNode ) const override;
213257 
213258  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
213259  // comment here (changed to be a C style comment and not be a doxygen comment).
213260  /* \brief Constructor for use by AST File I/O Mechanism
213261 
213262  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
213263  which obtained via fast binary file I/O from disk.
213264  */
213265  // SgOmpParallelMasterTaskloopSimdStatement( SgOmpParallelMasterTaskloopSimdStatementStorageClass& source );
213266 
213267 
213268 
213269 
213270 
213271  // JH (10/24/2005): methods added to support the ast file IO
213272  private:
213273 
213274  /* name AST Memory Allocation Support Functions
213275  \brief Memory allocations support....
213276 
213277  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
213278  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
213279  and support the AST File I/O Mechanism.
213280  */
213281  /* */
213282 
213283  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
213284  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
213285  that I use the same type everywhere, if any changes are made. THe second one declares the type
213286  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
213287  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
213288  a correspinding one in the AST_FILE_IO class!
213289  */
213290  // DQ (9/2/2015): This typedef is no longer used, we can't define the
213291  // comment here (changed to be a C style comment and not be a doxygen comment).
213292  /* \brief Typedef used for low level memory access.
213293  */
213294  // typedef unsigned char* TestType;
213295 
213296  // DQ (9/2/2015): This typedef is no longer used, we can't define the
213297  // comment here (changed to be a C style comment and not be a doxygen comment).
213298  /* \brief Typedef used to hold memory addresses as values.
213299  */
213300  // typedef unsigned long AddressType;
213301 
213302 
213303 
213304  // necessary, to have direct access to the p_freepointer and the private methods !
213306  friend class AST_FILE_IO;
213307 
213309  friend class SgOmpParallelMasterTaskloopSimdStatementStorageClass;
213310 
213312  friend class AstSpecificDataManagingClass;
213313 
213315  friend class AstSpecificDataManagingClassStorageClass;
213316 
213317  public:
213319  SgOmpParallelMasterTaskloopSimdStatement( const SgOmpParallelMasterTaskloopSimdStatementStorageClass& source );
213320 
213321  // private: // JJW hack
213322  /*
213323  name AST Memory Allocation Support Variables
213324  Memory allocations support variables
213325 
213326  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
213327  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
213328  and support the AST File I/O Mechanism.
213329  */
213330  /* */
213331 
213332  public:
213333 
213334  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
213335  // to current node (so that it will work cleanly with build functions to specify patterns).
213336  // virtual SgNode* addRegExpAttribute();
213343 
213344 // *** COMMON CODE SECTION ENDS HERE ***
213345 
213346 
213347 // End of memberFunctionString
213348 // Start of memberFunctionString
213349 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
213350 
213351  // the generated cast function
213352  // friend ROSE_DLL_API SgOmpParallelMasterTaskloopSimdStatement* isSgOmpParallelMasterTaskloopSimdStatement ( SgNode* s );
213353 
213355 
213356 
213357 // End of memberFunctionString
213358 // Start of memberFunctionString
213359 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
213360 
213361  void post_construction_initialization() override;
213362 
213363 
213364 // End of memberFunctionString
213365 
213366 
213367  public:
213369 
213370 
213371  public:
213372  SgOmpParallelMasterTaskloopSimdStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
213374 
213375  protected:
213376 
213377 
213378 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
213379 
213380 
213381  };
213382 #endif
213383 
213384 // postdeclarations for SgOmpParallelMasterTaskloopSimdStatement
213385 
213386 /* #line 213387 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
213387 
213388 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
213389 
213390 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
213391 
213392 
213393 /* #line 213394 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
213394 
213395 
213396 
213397 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
213398 
213399 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
213400 // This code is automatically generated for each
213401 // terminal and non-terminal within the defined
213402 // grammar. There is a simple way to change the
213403 // code to fix bugs etc. See the ROSE README file
213404 // for directions.
213405 
213406 // tps: (02/22/2010): Adding DLL export requirements
213407 #include "rosedll.h"
213408 
213409 // predeclarations for SgOmpTeamsDistributeStatement
213410 
213411 /* #line 213412 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
213412 
213413 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
213414 
213415 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
213416 
213417 #if 1
213418 // Class Definition for SgOmpTeamsDistributeStatement
213420  {
213421  public:
213422 
213423 
213424 /* #line 213425 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
213425 
213426  virtual SgNode* copy ( SgCopyHelp& help) const override;
213427 // Start of memberFunctionString
213428 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
213429 
213430 // *** COMMON CODE SECTION BEGINS HERE ***
213431 
213432  public:
213433 
213434  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
213435  // and not required which is required to match the other aspects of the copy mechanism code generation.
213436  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
213437  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
213438  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
213439  // virtual SgNode* copy ( const SgCopyHelp & help) const;
213440 
213442  virtual std::string class_name() const override;
213443 
213445  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
213446 
213448  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
213449  // static const VariantT static_variant = V_SgOmpTeamsDistributeStatement;
213450  enum { static_variant = V_SgOmpTeamsDistributeStatement };
213451 
213452  /* the generated cast function */
213454  ROSE_DLL_API friend SgOmpTeamsDistributeStatement* isSgOmpTeamsDistributeStatement( SgNode * s );
213455 
213457  ROSE_DLL_API friend const SgOmpTeamsDistributeStatement* isSgOmpTeamsDistributeStatement( const SgNode * s );
213458 
213459  // ******************************************
213460  // * Memory Pool / New / Delete
213461  // ******************************************
213462 
213463  public:
213465  static const unsigned pool_size; //
213467  static std::vector<unsigned char *> pools; //
213469  static SgOmpTeamsDistributeStatement * next_node; //
213470 
213472  static unsigned long initializeStorageClassArray(SgOmpTeamsDistributeStatementStorageClass *); //
213473 
213475  static void clearMemoryPool(); //
213476  static void deleteMemoryPool(); //
213477 
213479  static void extendMemoryPoolForFileIO(); //
213480 
213482  static SgOmpTeamsDistributeStatement * getPointerFromGlobalIndex(unsigned long); //
213484  static SgOmpTeamsDistributeStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
213485 
213487  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
213489  static void resetValidFreepointers(); //
213491  static unsigned long getNumberOfLastValidPointer(); //
213492 
213493 
213494 #if defined(INLINE_FUNCTIONS)
213495 
213496  inline void *operator new (size_t size);
213497 #else
213498 
213499  void *operator new (size_t size);
213500 #endif
213501 
213502  void operator delete (void* pointer, size_t size);
213503 
213504  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
213505  void operator delete (void* pointer)
213506  {
213507  // This is the generated delete operator...
213508  SgOmpTeamsDistributeStatement::operator delete (pointer,sizeof(SgOmpTeamsDistributeStatement));
213509  }
213510 
213512  static size_t numberOfNodes();
213513 
213515  static size_t memoryUsage();
213516 
213517  // End of scope which started in IR nodes specific code
213518  /* */
213519 
213520  /* name Internal Functions
213521  \brief Internal functions ... incomplete-documentation
213522 
213523  These functions have been made public as part of the design, but they are suggested for internal use
213524  or by particularly knowledgeable users for specialized tools or applications.
213525 
213526  \internal We could not make these private because they are required by user for special purposes. And
213527  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
213528 
213529  */
213530 
213531  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
213532  // overridden in every class by *generated* implementation
213534  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
213535  // MS: 06/28/02 container of names of variables or container indices
213536  // used used in the traversal to access AST successor nodes
213537  // overridden in every class by *generated* implementation
213540  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
213541 
213542  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
213543  // than all the vector copies. The implementation for these functions is generated for each class.
213545  virtual size_t get_numberOfTraversalSuccessors() override;
213547  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
213549  virtual size_t get_childIndex(SgNode *child) override;
213550 
213551 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
213552  // MS: 08/16/2002 method for generating RTI information
213554  virtual RTIReturnType roseRTI() override;
213555 #endif
213556  /* */
213557 
213558 
213559 
213560  /* name Deprecated Functions
213561  \brief Deprecated functions ... incomplete-documentation
213562 
213563  These functions have been deprecated from use.
213564  */
213565  /* */
213566 
213568  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
213569 
213570  // JJW (10/16/2008): Changed to a single function in Node.code, and put
213571  // getVariant() in #if 0 block to prevent confusing Doxygen
213572 #if 0
213573 
213574  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
213576  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
213577 #endif
213578  /* */
213579 
213580 
213581 
213582 
213583  public:
213584  /* name Traversal Support Functions
213585  \brief Traversal support functions ... incomplete-documentation
213586 
213587  These functions have been made public as part of the design, but they are suggested for internal use
213588  or by particularly knowledgable users for specialized tools or applications.
213589  */
213590  /* */
213591 
213592  // DQ (11/26/2005): Support for visitor pattern mechanims
213593  // (inferior to ROSE traversal mechanism, experimental).
213597 
213598  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
213600  virtual void accept (ROSE_VisitorPattern & visitor) override;
213601 
213602  // DQ (12/26/2005): Support for traversal based on the memory pool
213605  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
213606 
213609  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
213610 
213611  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
213612  // This traversal helps support internal tools that call static member functions.
213613  // note: this function operates on the memory pools.
213616  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
213617  /* */
213618 
213619 
213620  public:
213621  /* name Memory Allocation Functions
213622  \brief Memory allocations functions ... incomplete-documentation
213623 
213624  These functions have been made public as part of the design, but they are suggested for internal use
213625  or by particularly knowledgable users for specialized tools or applications.
213626  */
213627  /* */
213628 
213639  virtual bool isInMemoryPool() override;
213640 
213651  virtual void checkDataMemberPointersIfInMemoryPool() override;
213652 
213653  // DQ (4/30/2006): Modified to be a const function.
213668  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
213669 
213679  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
213680 
213692  virtual long getChildIndex( SgNode* childNode ) const override;
213693 
213694  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
213695  // comment here (changed to be a C style comment and not be a doxygen comment).
213696  /* \brief Constructor for use by AST File I/O Mechanism
213697 
213698  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
213699  which obtained via fast binary file I/O from disk.
213700  */
213701  // SgOmpTeamsDistributeStatement( SgOmpTeamsDistributeStatementStorageClass& source );
213702 
213703 
213704 
213705 
213706 
213707  // JH (10/24/2005): methods added to support the ast file IO
213708  private:
213709 
213710  /* name AST Memory Allocation Support Functions
213711  \brief Memory allocations support....
213712 
213713  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
213714  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
213715  and support the AST File I/O Mechanism.
213716  */
213717  /* */
213718 
213719  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
213720  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
213721  that I use the same type everywhere, if any changes are made. THe second one declares the type
213722  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
213723  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
213724  a correspinding one in the AST_FILE_IO class!
213725  */
213726  // DQ (9/2/2015): This typedef is no longer used, we can't define the
213727  // comment here (changed to be a C style comment and not be a doxygen comment).
213728  /* \brief Typedef used for low level memory access.
213729  */
213730  // typedef unsigned char* TestType;
213731 
213732  // DQ (9/2/2015): This typedef is no longer used, we can't define the
213733  // comment here (changed to be a C style comment and not be a doxygen comment).
213734  /* \brief Typedef used to hold memory addresses as values.
213735  */
213736  // typedef unsigned long AddressType;
213737 
213738 
213739 
213740  // necessary, to have direct access to the p_freepointer and the private methods !
213742  friend class AST_FILE_IO;
213743 
213745  friend class SgOmpTeamsDistributeStatementStorageClass;
213746 
213748  friend class AstSpecificDataManagingClass;
213749 
213751  friend class AstSpecificDataManagingClassStorageClass;
213752 
213753  public:
213755  SgOmpTeamsDistributeStatement( const SgOmpTeamsDistributeStatementStorageClass& source );
213756 
213757  // private: // JJW hack
213758  /*
213759  name AST Memory Allocation Support Variables
213760  Memory allocations support variables
213761 
213762  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
213763  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
213764  and support the AST File I/O Mechanism.
213765  */
213766  /* */
213767 
213768  public:
213769 
213770  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
213771  // to current node (so that it will work cleanly with build functions to specify patterns).
213772  // virtual SgNode* addRegExpAttribute();
213779 
213780 // *** COMMON CODE SECTION ENDS HERE ***
213781 
213782 
213783 // End of memberFunctionString
213784 // Start of memberFunctionString
213785 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
213786 
213787  // the generated cast function
213788  // friend ROSE_DLL_API SgOmpTeamsDistributeStatement* isSgOmpTeamsDistributeStatement ( SgNode* s );
213789 
213791 
213792 
213793 // End of memberFunctionString
213794 // Start of memberFunctionString
213795 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
213796 
213797  void post_construction_initialization() override;
213798 
213799 
213800 // End of memberFunctionString
213801 
213802 
213803  public:
213804  virtual ~SgOmpTeamsDistributeStatement();
213805 
213806 
213807  public:
213808  SgOmpTeamsDistributeStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
213810 
213811  protected:
213812 
213813 
213814 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
213815 
213816 
213817  };
213818 #endif
213819 
213820 // postdeclarations for SgOmpTeamsDistributeStatement
213821 
213822 /* #line 213823 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
213823 
213824 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
213825 
213826 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
213827 
213828 
213829 /* #line 213830 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
213830 
213831 
213832 
213833 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
213834 
213835 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
213836 // This code is automatically generated for each
213837 // terminal and non-terminal within the defined
213838 // grammar. There is a simple way to change the
213839 // code to fix bugs etc. See the ROSE README file
213840 // for directions.
213841 
213842 // tps: (02/22/2010): Adding DLL export requirements
213843 #include "rosedll.h"
213844 
213845 // predeclarations for SgOmpTeamsDistributeSimdStatement
213846 
213847 /* #line 213848 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
213848 
213849 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
213850 
213851 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
213852 
213853 #if 1
213854 // Class Definition for SgOmpTeamsDistributeSimdStatement
213856  {
213857  public:
213858 
213859 
213860 /* #line 213861 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
213861 
213862  virtual SgNode* copy ( SgCopyHelp& help) const override;
213863 // Start of memberFunctionString
213864 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
213865 
213866 // *** COMMON CODE SECTION BEGINS HERE ***
213867 
213868  public:
213869 
213870  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
213871  // and not required which is required to match the other aspects of the copy mechanism code generation.
213872  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
213873  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
213874  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
213875  // virtual SgNode* copy ( const SgCopyHelp & help) const;
213876 
213878  virtual std::string class_name() const override;
213879 
213881  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
213882 
213884  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
213885  // static const VariantT static_variant = V_SgOmpTeamsDistributeSimdStatement;
213886  enum { static_variant = V_SgOmpTeamsDistributeSimdStatement };
213887 
213888  /* the generated cast function */
213890  ROSE_DLL_API friend SgOmpTeamsDistributeSimdStatement* isSgOmpTeamsDistributeSimdStatement( SgNode * s );
213891 
213893  ROSE_DLL_API friend const SgOmpTeamsDistributeSimdStatement* isSgOmpTeamsDistributeSimdStatement( const SgNode * s );
213894 
213895  // ******************************************
213896  // * Memory Pool / New / Delete
213897  // ******************************************
213898 
213899  public:
213901  static const unsigned pool_size; //
213903  static std::vector<unsigned char *> pools; //
213905  static SgOmpTeamsDistributeSimdStatement * next_node; //
213906 
213908  static unsigned long initializeStorageClassArray(SgOmpTeamsDistributeSimdStatementStorageClass *); //
213909 
213911  static void clearMemoryPool(); //
213912  static void deleteMemoryPool(); //
213913 
213915  static void extendMemoryPoolForFileIO(); //
213916 
213918  static SgOmpTeamsDistributeSimdStatement * getPointerFromGlobalIndex(unsigned long); //
213920  static SgOmpTeamsDistributeSimdStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
213921 
213923  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
213925  static void resetValidFreepointers(); //
213927  static unsigned long getNumberOfLastValidPointer(); //
213928 
213929 
213930 #if defined(INLINE_FUNCTIONS)
213931 
213932  inline void *operator new (size_t size);
213933 #else
213934 
213935  void *operator new (size_t size);
213936 #endif
213937 
213938  void operator delete (void* pointer, size_t size);
213939 
213940  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
213941  void operator delete (void* pointer)
213942  {
213943  // This is the generated delete operator...
213944  SgOmpTeamsDistributeSimdStatement::operator delete (pointer,sizeof(SgOmpTeamsDistributeSimdStatement));
213945  }
213946 
213948  static size_t numberOfNodes();
213949 
213951  static size_t memoryUsage();
213952 
213953  // End of scope which started in IR nodes specific code
213954  /* */
213955 
213956  /* name Internal Functions
213957  \brief Internal functions ... incomplete-documentation
213958 
213959  These functions have been made public as part of the design, but they are suggested for internal use
213960  or by particularly knowledgeable users for specialized tools or applications.
213961 
213962  \internal We could not make these private because they are required by user for special purposes. And
213963  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
213964 
213965  */
213966 
213967  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
213968  // overridden in every class by *generated* implementation
213970  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
213971  // MS: 06/28/02 container of names of variables or container indices
213972  // used used in the traversal to access AST successor nodes
213973  // overridden in every class by *generated* implementation
213976  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
213977 
213978  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
213979  // than all the vector copies. The implementation for these functions is generated for each class.
213981  virtual size_t get_numberOfTraversalSuccessors() override;
213983  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
213985  virtual size_t get_childIndex(SgNode *child) override;
213986 
213987 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
213988  // MS: 08/16/2002 method for generating RTI information
213990  virtual RTIReturnType roseRTI() override;
213991 #endif
213992  /* */
213993 
213994 
213995 
213996  /* name Deprecated Functions
213997  \brief Deprecated functions ... incomplete-documentation
213998 
213999  These functions have been deprecated from use.
214000  */
214001  /* */
214002 
214004  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
214005 
214006  // JJW (10/16/2008): Changed to a single function in Node.code, and put
214007  // getVariant() in #if 0 block to prevent confusing Doxygen
214008 #if 0
214009 
214010  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
214012  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
214013 #endif
214014  /* */
214015 
214016 
214017 
214018 
214019  public:
214020  /* name Traversal Support Functions
214021  \brief Traversal support functions ... incomplete-documentation
214022 
214023  These functions have been made public as part of the design, but they are suggested for internal use
214024  or by particularly knowledgable users for specialized tools or applications.
214025  */
214026  /* */
214027 
214028  // DQ (11/26/2005): Support for visitor pattern mechanims
214029  // (inferior to ROSE traversal mechanism, experimental).
214033 
214034  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
214036  virtual void accept (ROSE_VisitorPattern & visitor) override;
214037 
214038  // DQ (12/26/2005): Support for traversal based on the memory pool
214041  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
214042 
214045  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
214046 
214047  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
214048  // This traversal helps support internal tools that call static member functions.
214049  // note: this function operates on the memory pools.
214052  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
214053  /* */
214054 
214055 
214056  public:
214057  /* name Memory Allocation Functions
214058  \brief Memory allocations functions ... incomplete-documentation
214059 
214060  These functions have been made public as part of the design, but they are suggested for internal use
214061  or by particularly knowledgable users for specialized tools or applications.
214062  */
214063  /* */
214064 
214075  virtual bool isInMemoryPool() override;
214076 
214087  virtual void checkDataMemberPointersIfInMemoryPool() override;
214088 
214089  // DQ (4/30/2006): Modified to be a const function.
214104  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
214105 
214115  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
214116 
214128  virtual long getChildIndex( SgNode* childNode ) const override;
214129 
214130  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
214131  // comment here (changed to be a C style comment and not be a doxygen comment).
214132  /* \brief Constructor for use by AST File I/O Mechanism
214133 
214134  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
214135  which obtained via fast binary file I/O from disk.
214136  */
214137  // SgOmpTeamsDistributeSimdStatement( SgOmpTeamsDistributeSimdStatementStorageClass& source );
214138 
214139 
214140 
214141 
214142 
214143  // JH (10/24/2005): methods added to support the ast file IO
214144  private:
214145 
214146  /* name AST Memory Allocation Support Functions
214147  \brief Memory allocations support....
214148 
214149  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
214150  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
214151  and support the AST File I/O Mechanism.
214152  */
214153  /* */
214154 
214155  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
214156  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
214157  that I use the same type everywhere, if any changes are made. THe second one declares the type
214158  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
214159  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
214160  a correspinding one in the AST_FILE_IO class!
214161  */
214162  // DQ (9/2/2015): This typedef is no longer used, we can't define the
214163  // comment here (changed to be a C style comment and not be a doxygen comment).
214164  /* \brief Typedef used for low level memory access.
214165  */
214166  // typedef unsigned char* TestType;
214167 
214168  // DQ (9/2/2015): This typedef is no longer used, we can't define the
214169  // comment here (changed to be a C style comment and not be a doxygen comment).
214170  /* \brief Typedef used to hold memory addresses as values.
214171  */
214172  // typedef unsigned long AddressType;
214173 
214174 
214175 
214176  // necessary, to have direct access to the p_freepointer and the private methods !
214178  friend class AST_FILE_IO;
214179 
214181  friend class SgOmpTeamsDistributeSimdStatementStorageClass;
214182 
214184  friend class AstSpecificDataManagingClass;
214185 
214187  friend class AstSpecificDataManagingClassStorageClass;
214188 
214189  public:
214191  SgOmpTeamsDistributeSimdStatement( const SgOmpTeamsDistributeSimdStatementStorageClass& source );
214192 
214193  // private: // JJW hack
214194  /*
214195  name AST Memory Allocation Support Variables
214196  Memory allocations support variables
214197 
214198  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
214199  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
214200  and support the AST File I/O Mechanism.
214201  */
214202  /* */
214203 
214204  public:
214205 
214206  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
214207  // to current node (so that it will work cleanly with build functions to specify patterns).
214208  // virtual SgNode* addRegExpAttribute();
214215 
214216 // *** COMMON CODE SECTION ENDS HERE ***
214217 
214218 
214219 // End of memberFunctionString
214220 // Start of memberFunctionString
214221 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
214222 
214223  // the generated cast function
214224  // friend ROSE_DLL_API SgOmpTeamsDistributeSimdStatement* isSgOmpTeamsDistributeSimdStatement ( SgNode* s );
214225 
214227 
214228 
214229 // End of memberFunctionString
214230 // Start of memberFunctionString
214231 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
214232 
214233  void post_construction_initialization() override;
214234 
214235 
214236 // End of memberFunctionString
214237 
214238 
214239  public:
214241 
214242 
214243  public:
214244  SgOmpTeamsDistributeSimdStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
214246 
214247  protected:
214248 
214249 
214250 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
214251 
214252 
214253  };
214254 #endif
214255 
214256 // postdeclarations for SgOmpTeamsDistributeSimdStatement
214257 
214258 /* #line 214259 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
214259 
214260 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
214261 
214262 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
214263 
214264 
214265 /* #line 214266 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
214266 
214267 
214268 
214269 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
214270 
214271 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
214272 // This code is automatically generated for each
214273 // terminal and non-terminal within the defined
214274 // grammar. There is a simple way to change the
214275 // code to fix bugs etc. See the ROSE README file
214276 // for directions.
214277 
214278 // tps: (02/22/2010): Adding DLL export requirements
214279 #include "rosedll.h"
214280 
214281 // predeclarations for SgOmpTeamsDistributeParallelForStatement
214282 
214283 /* #line 214284 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
214284 
214285 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
214286 
214287 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
214288 
214289 #if 1
214290 // Class Definition for SgOmpTeamsDistributeParallelForStatement
214292  {
214293  public:
214294 
214295 
214296 /* #line 214297 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
214297 
214298  virtual SgNode* copy ( SgCopyHelp& help) const override;
214299 // Start of memberFunctionString
214300 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
214301 
214302 // *** COMMON CODE SECTION BEGINS HERE ***
214303 
214304  public:
214305 
214306  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
214307  // and not required which is required to match the other aspects of the copy mechanism code generation.
214308  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
214309  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
214310  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
214311  // virtual SgNode* copy ( const SgCopyHelp & help) const;
214312 
214314  virtual std::string class_name() const override;
214315 
214317  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
214318 
214320  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
214321  // static const VariantT static_variant = V_SgOmpTeamsDistributeParallelForStatement;
214322  enum { static_variant = V_SgOmpTeamsDistributeParallelForStatement };
214323 
214324  /* the generated cast function */
214326  ROSE_DLL_API friend SgOmpTeamsDistributeParallelForStatement* isSgOmpTeamsDistributeParallelForStatement( SgNode * s );
214327 
214329  ROSE_DLL_API friend const SgOmpTeamsDistributeParallelForStatement* isSgOmpTeamsDistributeParallelForStatement( const SgNode * s );
214330 
214331  // ******************************************
214332  // * Memory Pool / New / Delete
214333  // ******************************************
214334 
214335  public:
214337  static const unsigned pool_size; //
214339  static std::vector<unsigned char *> pools; //
214341  static SgOmpTeamsDistributeParallelForStatement * next_node; //
214342 
214344  static unsigned long initializeStorageClassArray(SgOmpTeamsDistributeParallelForStatementStorageClass *); //
214345 
214347  static void clearMemoryPool(); //
214348  static void deleteMemoryPool(); //
214349 
214351  static void extendMemoryPoolForFileIO(); //
214352 
214354  static SgOmpTeamsDistributeParallelForStatement * getPointerFromGlobalIndex(unsigned long); //
214356  static SgOmpTeamsDistributeParallelForStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
214357 
214359  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
214361  static void resetValidFreepointers(); //
214363  static unsigned long getNumberOfLastValidPointer(); //
214364 
214365 
214366 #if defined(INLINE_FUNCTIONS)
214367 
214368  inline void *operator new (size_t size);
214369 #else
214370 
214371  void *operator new (size_t size);
214372 #endif
214373 
214374  void operator delete (void* pointer, size_t size);
214375 
214376  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
214377  void operator delete (void* pointer)
214378  {
214379  // This is the generated delete operator...
214380  SgOmpTeamsDistributeParallelForStatement::operator delete (pointer,sizeof(SgOmpTeamsDistributeParallelForStatement));
214381  }
214382 
214384  static size_t numberOfNodes();
214385 
214387  static size_t memoryUsage();
214388 
214389  // End of scope which started in IR nodes specific code
214390  /* */
214391 
214392  /* name Internal Functions
214393  \brief Internal functions ... incomplete-documentation
214394 
214395  These functions have been made public as part of the design, but they are suggested for internal use
214396  or by particularly knowledgeable users for specialized tools or applications.
214397 
214398  \internal We could not make these private because they are required by user for special purposes. And
214399  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
214400 
214401  */
214402 
214403  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
214404  // overridden in every class by *generated* implementation
214406  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
214407  // MS: 06/28/02 container of names of variables or container indices
214408  // used used in the traversal to access AST successor nodes
214409  // overridden in every class by *generated* implementation
214412  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
214413 
214414  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
214415  // than all the vector copies. The implementation for these functions is generated for each class.
214417  virtual size_t get_numberOfTraversalSuccessors() override;
214419  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
214421  virtual size_t get_childIndex(SgNode *child) override;
214422 
214423 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
214424  // MS: 08/16/2002 method for generating RTI information
214426  virtual RTIReturnType roseRTI() override;
214427 #endif
214428  /* */
214429 
214430 
214431 
214432  /* name Deprecated Functions
214433  \brief Deprecated functions ... incomplete-documentation
214434 
214435  These functions have been deprecated from use.
214436  */
214437  /* */
214438 
214440  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
214441 
214442  // JJW (10/16/2008): Changed to a single function in Node.code, and put
214443  // getVariant() in #if 0 block to prevent confusing Doxygen
214444 #if 0
214445 
214446  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
214448  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
214449 #endif
214450  /* */
214451 
214452 
214453 
214454 
214455  public:
214456  /* name Traversal Support Functions
214457  \brief Traversal support functions ... incomplete-documentation
214458 
214459  These functions have been made public as part of the design, but they are suggested for internal use
214460  or by particularly knowledgable users for specialized tools or applications.
214461  */
214462  /* */
214463 
214464  // DQ (11/26/2005): Support for visitor pattern mechanims
214465  // (inferior to ROSE traversal mechanism, experimental).
214469 
214470  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
214472  virtual void accept (ROSE_VisitorPattern & visitor) override;
214473 
214474  // DQ (12/26/2005): Support for traversal based on the memory pool
214477  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
214478 
214481  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
214482 
214483  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
214484  // This traversal helps support internal tools that call static member functions.
214485  // note: this function operates on the memory pools.
214488  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
214489  /* */
214490 
214491 
214492  public:
214493  /* name Memory Allocation Functions
214494  \brief Memory allocations functions ... incomplete-documentation
214495 
214496  These functions have been made public as part of the design, but they are suggested for internal use
214497  or by particularly knowledgable users for specialized tools or applications.
214498  */
214499  /* */
214500 
214511  virtual bool isInMemoryPool() override;
214512 
214523  virtual void checkDataMemberPointersIfInMemoryPool() override;
214524 
214525  // DQ (4/30/2006): Modified to be a const function.
214540  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
214541 
214551  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
214552 
214564  virtual long getChildIndex( SgNode* childNode ) const override;
214565 
214566  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
214567  // comment here (changed to be a C style comment and not be a doxygen comment).
214568  /* \brief Constructor for use by AST File I/O Mechanism
214569 
214570  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
214571  which obtained via fast binary file I/O from disk.
214572  */
214573  // SgOmpTeamsDistributeParallelForStatement( SgOmpTeamsDistributeParallelForStatementStorageClass& source );
214574 
214575 
214576 
214577 
214578 
214579  // JH (10/24/2005): methods added to support the ast file IO
214580  private:
214581 
214582  /* name AST Memory Allocation Support Functions
214583  \brief Memory allocations support....
214584 
214585  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
214586  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
214587  and support the AST File I/O Mechanism.
214588  */
214589  /* */
214590 
214591  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
214592  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
214593  that I use the same type everywhere, if any changes are made. THe second one declares the type
214594  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
214595  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
214596  a correspinding one in the AST_FILE_IO class!
214597  */
214598  // DQ (9/2/2015): This typedef is no longer used, we can't define the
214599  // comment here (changed to be a C style comment and not be a doxygen comment).
214600  /* \brief Typedef used for low level memory access.
214601  */
214602  // typedef unsigned char* TestType;
214603 
214604  // DQ (9/2/2015): This typedef is no longer used, we can't define the
214605  // comment here (changed to be a C style comment and not be a doxygen comment).
214606  /* \brief Typedef used to hold memory addresses as values.
214607  */
214608  // typedef unsigned long AddressType;
214609 
214610 
214611 
214612  // necessary, to have direct access to the p_freepointer and the private methods !
214614  friend class AST_FILE_IO;
214615 
214617  friend class SgOmpTeamsDistributeParallelForStatementStorageClass;
214618 
214620  friend class AstSpecificDataManagingClass;
214621 
214623  friend class AstSpecificDataManagingClassStorageClass;
214624 
214625  public:
214627  SgOmpTeamsDistributeParallelForStatement( const SgOmpTeamsDistributeParallelForStatementStorageClass& source );
214628 
214629  // private: // JJW hack
214630  /*
214631  name AST Memory Allocation Support Variables
214632  Memory allocations support variables
214633 
214634  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
214635  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
214636  and support the AST File I/O Mechanism.
214637  */
214638  /* */
214639 
214640  public:
214641 
214642  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
214643  // to current node (so that it will work cleanly with build functions to specify patterns).
214644  // virtual SgNode* addRegExpAttribute();
214651 
214652 // *** COMMON CODE SECTION ENDS HERE ***
214653 
214654 
214655 // End of memberFunctionString
214656 // Start of memberFunctionString
214657 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
214658 
214659  // the generated cast function
214660  // friend ROSE_DLL_API SgOmpTeamsDistributeParallelForStatement* isSgOmpTeamsDistributeParallelForStatement ( SgNode* s );
214661 
214663 
214664 
214665 // End of memberFunctionString
214666 // Start of memberFunctionString
214667 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
214668 
214669  void post_construction_initialization() override;
214670 
214671 
214672 // End of memberFunctionString
214673 
214674 
214675  public:
214677 
214678 
214679  public:
214680  SgOmpTeamsDistributeParallelForStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
214682 
214683  protected:
214684 
214685 
214686 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
214687 
214688 
214689  };
214690 #endif
214691 
214692 // postdeclarations for SgOmpTeamsDistributeParallelForStatement
214693 
214694 /* #line 214695 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
214695 
214696 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
214697 
214698 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
214699 
214700 
214701 /* #line 214702 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
214702 
214703 
214704 
214705 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
214706 
214707 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
214708 // This code is automatically generated for each
214709 // terminal and non-terminal within the defined
214710 // grammar. There is a simple way to change the
214711 // code to fix bugs etc. See the ROSE README file
214712 // for directions.
214713 
214714 // tps: (02/22/2010): Adding DLL export requirements
214715 #include "rosedll.h"
214716 
214717 // predeclarations for SgOmpTeamsDistributeParallelForSimdStatement
214718 
214719 /* #line 214720 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
214720 
214721 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
214722 
214723 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
214724 
214725 #if 1
214726 // Class Definition for SgOmpTeamsDistributeParallelForSimdStatement
214728  {
214729  public:
214730 
214731 
214732 /* #line 214733 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
214733 
214734  virtual SgNode* copy ( SgCopyHelp& help) const override;
214735 // Start of memberFunctionString
214736 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
214737 
214738 // *** COMMON CODE SECTION BEGINS HERE ***
214739 
214740  public:
214741 
214742  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
214743  // and not required which is required to match the other aspects of the copy mechanism code generation.
214744  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
214745  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
214746  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
214747  // virtual SgNode* copy ( const SgCopyHelp & help) const;
214748 
214750  virtual std::string class_name() const override;
214751 
214753  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
214754 
214756  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
214757  // static const VariantT static_variant = V_SgOmpTeamsDistributeParallelForSimdStatement;
214758  enum { static_variant = V_SgOmpTeamsDistributeParallelForSimdStatement };
214759 
214760  /* the generated cast function */
214762  ROSE_DLL_API friend SgOmpTeamsDistributeParallelForSimdStatement* isSgOmpTeamsDistributeParallelForSimdStatement( SgNode * s );
214763 
214765  ROSE_DLL_API friend const SgOmpTeamsDistributeParallelForSimdStatement* isSgOmpTeamsDistributeParallelForSimdStatement( const SgNode * s );
214766 
214767  // ******************************************
214768  // * Memory Pool / New / Delete
214769  // ******************************************
214770 
214771  public:
214773  static const unsigned pool_size; //
214775  static std::vector<unsigned char *> pools; //
214777  static SgOmpTeamsDistributeParallelForSimdStatement * next_node; //
214778 
214780  static unsigned long initializeStorageClassArray(SgOmpTeamsDistributeParallelForSimdStatementStorageClass *); //
214781 
214783  static void clearMemoryPool(); //
214784  static void deleteMemoryPool(); //
214785 
214787  static void extendMemoryPoolForFileIO(); //
214788 
214790  static SgOmpTeamsDistributeParallelForSimdStatement * getPointerFromGlobalIndex(unsigned long); //
214792  static SgOmpTeamsDistributeParallelForSimdStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
214793 
214795  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
214797  static void resetValidFreepointers(); //
214799  static unsigned long getNumberOfLastValidPointer(); //
214800 
214801 
214802 #if defined(INLINE_FUNCTIONS)
214803 
214804  inline void *operator new (size_t size);
214805 #else
214806 
214807  void *operator new (size_t size);
214808 #endif
214809 
214810  void operator delete (void* pointer, size_t size);
214811 
214812  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
214813  void operator delete (void* pointer)
214814  {
214815  // This is the generated delete operator...
214816  SgOmpTeamsDistributeParallelForSimdStatement::operator delete (pointer,sizeof(SgOmpTeamsDistributeParallelForSimdStatement));
214817  }
214818 
214820  static size_t numberOfNodes();
214821 
214823  static size_t memoryUsage();
214824 
214825  // End of scope which started in IR nodes specific code
214826  /* */
214827 
214828  /* name Internal Functions
214829  \brief Internal functions ... incomplete-documentation
214830 
214831  These functions have been made public as part of the design, but they are suggested for internal use
214832  or by particularly knowledgeable users for specialized tools or applications.
214833 
214834  \internal We could not make these private because they are required by user for special purposes. And
214835  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
214836 
214837  */
214838 
214839  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
214840  // overridden in every class by *generated* implementation
214842  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
214843  // MS: 06/28/02 container of names of variables or container indices
214844  // used used in the traversal to access AST successor nodes
214845  // overridden in every class by *generated* implementation
214848  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
214849 
214850  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
214851  // than all the vector copies. The implementation for these functions is generated for each class.
214853  virtual size_t get_numberOfTraversalSuccessors() override;
214855  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
214857  virtual size_t get_childIndex(SgNode *child) override;
214858 
214859 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
214860  // MS: 08/16/2002 method for generating RTI information
214862  virtual RTIReturnType roseRTI() override;
214863 #endif
214864  /* */
214865 
214866 
214867 
214868  /* name Deprecated Functions
214869  \brief Deprecated functions ... incomplete-documentation
214870 
214871  These functions have been deprecated from use.
214872  */
214873  /* */
214874 
214876  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
214877 
214878  // JJW (10/16/2008): Changed to a single function in Node.code, and put
214879  // getVariant() in #if 0 block to prevent confusing Doxygen
214880 #if 0
214881 
214882  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
214884  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
214885 #endif
214886  /* */
214887 
214888 
214889 
214890 
214891  public:
214892  /* name Traversal Support Functions
214893  \brief Traversal support functions ... incomplete-documentation
214894 
214895  These functions have been made public as part of the design, but they are suggested for internal use
214896  or by particularly knowledgable users for specialized tools or applications.
214897  */
214898  /* */
214899 
214900  // DQ (11/26/2005): Support for visitor pattern mechanims
214901  // (inferior to ROSE traversal mechanism, experimental).
214905 
214906  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
214908  virtual void accept (ROSE_VisitorPattern & visitor) override;
214909 
214910  // DQ (12/26/2005): Support for traversal based on the memory pool
214913  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
214914 
214917  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
214918 
214919  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
214920  // This traversal helps support internal tools that call static member functions.
214921  // note: this function operates on the memory pools.
214924  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
214925  /* */
214926 
214927 
214928  public:
214929  /* name Memory Allocation Functions
214930  \brief Memory allocations functions ... incomplete-documentation
214931 
214932  These functions have been made public as part of the design, but they are suggested for internal use
214933  or by particularly knowledgable users for specialized tools or applications.
214934  */
214935  /* */
214936 
214947  virtual bool isInMemoryPool() override;
214948 
214959  virtual void checkDataMemberPointersIfInMemoryPool() override;
214960 
214961  // DQ (4/30/2006): Modified to be a const function.
214976  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
214977 
214987  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
214988 
215000  virtual long getChildIndex( SgNode* childNode ) const override;
215001 
215002  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
215003  // comment here (changed to be a C style comment and not be a doxygen comment).
215004  /* \brief Constructor for use by AST File I/O Mechanism
215005 
215006  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
215007  which obtained via fast binary file I/O from disk.
215008  */
215009  // SgOmpTeamsDistributeParallelForSimdStatement( SgOmpTeamsDistributeParallelForSimdStatementStorageClass& source );
215010 
215011 
215012 
215013 
215014 
215015  // JH (10/24/2005): methods added to support the ast file IO
215016  private:
215017 
215018  /* name AST Memory Allocation Support Functions
215019  \brief Memory allocations support....
215020 
215021  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
215022  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
215023  and support the AST File I/O Mechanism.
215024  */
215025  /* */
215026 
215027  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
215028  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
215029  that I use the same type everywhere, if any changes are made. THe second one declares the type
215030  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
215031  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
215032  a correspinding one in the AST_FILE_IO class!
215033  */
215034  // DQ (9/2/2015): This typedef is no longer used, we can't define the
215035  // comment here (changed to be a C style comment and not be a doxygen comment).
215036  /* \brief Typedef used for low level memory access.
215037  */
215038  // typedef unsigned char* TestType;
215039 
215040  // DQ (9/2/2015): This typedef is no longer used, we can't define the
215041  // comment here (changed to be a C style comment and not be a doxygen comment).
215042  /* \brief Typedef used to hold memory addresses as values.
215043  */
215044  // typedef unsigned long AddressType;
215045 
215046 
215047 
215048  // necessary, to have direct access to the p_freepointer and the private methods !
215050  friend class AST_FILE_IO;
215051 
215053  friend class SgOmpTeamsDistributeParallelForSimdStatementStorageClass;
215054 
215056  friend class AstSpecificDataManagingClass;
215057 
215059  friend class AstSpecificDataManagingClassStorageClass;
215060 
215061  public:
215063  SgOmpTeamsDistributeParallelForSimdStatement( const SgOmpTeamsDistributeParallelForSimdStatementStorageClass& source );
215064 
215065  // private: // JJW hack
215066  /*
215067  name AST Memory Allocation Support Variables
215068  Memory allocations support variables
215069 
215070  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
215071  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
215072  and support the AST File I/O Mechanism.
215073  */
215074  /* */
215075 
215076  public:
215077 
215078  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
215079  // to current node (so that it will work cleanly with build functions to specify patterns).
215080  // virtual SgNode* addRegExpAttribute();
215087 
215088 // *** COMMON CODE SECTION ENDS HERE ***
215089 
215090 
215091 // End of memberFunctionString
215092 // Start of memberFunctionString
215093 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
215094 
215095  // the generated cast function
215096  // friend ROSE_DLL_API SgOmpTeamsDistributeParallelForSimdStatement* isSgOmpTeamsDistributeParallelForSimdStatement ( SgNode* s );
215097 
215099 
215100 
215101 // End of memberFunctionString
215102 // Start of memberFunctionString
215103 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
215104 
215105  void post_construction_initialization() override;
215106 
215107 
215108 // End of memberFunctionString
215109 
215110 
215111  public:
215113 
215114 
215115  public:
215116  SgOmpTeamsDistributeParallelForSimdStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
215118 
215119  protected:
215120 
215121 
215122 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
215123 
215124 
215125  };
215126 #endif
215127 
215128 // postdeclarations for SgOmpTeamsDistributeParallelForSimdStatement
215129 
215130 /* #line 215131 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
215131 
215132 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
215133 
215134 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
215135 
215136 
215137 /* #line 215138 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
215138 
215139 
215140 
215141 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
215142 
215143 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
215144 // This code is automatically generated for each
215145 // terminal and non-terminal within the defined
215146 // grammar. There is a simple way to change the
215147 // code to fix bugs etc. See the ROSE README file
215148 // for directions.
215149 
215150 // tps: (02/22/2010): Adding DLL export requirements
215151 #include "rosedll.h"
215152 
215153 // predeclarations for SgOmpTeamsLoopStatement
215154 
215155 /* #line 215156 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
215156 
215157 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
215158 
215159 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
215160 
215161 #if 1
215162 // Class Definition for SgOmpTeamsLoopStatement
215164  {
215165  public:
215166 
215167 
215168 /* #line 215169 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
215169 
215170  virtual SgNode* copy ( SgCopyHelp& help) const override;
215171 // Start of memberFunctionString
215172 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
215173 
215174 // *** COMMON CODE SECTION BEGINS HERE ***
215175 
215176  public:
215177 
215178  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
215179  // and not required which is required to match the other aspects of the copy mechanism code generation.
215180  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
215181  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
215182  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
215183  // virtual SgNode* copy ( const SgCopyHelp & help) const;
215184 
215186  virtual std::string class_name() const override;
215187 
215189  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
215190 
215192  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
215193  // static const VariantT static_variant = V_SgOmpTeamsLoopStatement;
215194  enum { static_variant = V_SgOmpTeamsLoopStatement };
215195 
215196  /* the generated cast function */
215198  ROSE_DLL_API friend SgOmpTeamsLoopStatement* isSgOmpTeamsLoopStatement( SgNode * s );
215199 
215201  ROSE_DLL_API friend const SgOmpTeamsLoopStatement* isSgOmpTeamsLoopStatement( const SgNode * s );
215202 
215203  // ******************************************
215204  // * Memory Pool / New / Delete
215205  // ******************************************
215206 
215207  public:
215209  static const unsigned pool_size; //
215211  static std::vector<unsigned char *> pools; //
215213  static SgOmpTeamsLoopStatement * next_node; //
215214 
215216  static unsigned long initializeStorageClassArray(SgOmpTeamsLoopStatementStorageClass *); //
215217 
215219  static void clearMemoryPool(); //
215220  static void deleteMemoryPool(); //
215221 
215223  static void extendMemoryPoolForFileIO(); //
215224 
215226  static SgOmpTeamsLoopStatement * getPointerFromGlobalIndex(unsigned long); //
215228  static SgOmpTeamsLoopStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
215229 
215231  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
215233  static void resetValidFreepointers(); //
215235  static unsigned long getNumberOfLastValidPointer(); //
215236 
215237 
215238 #if defined(INLINE_FUNCTIONS)
215239 
215240  inline void *operator new (size_t size);
215241 #else
215242 
215243  void *operator new (size_t size);
215244 #endif
215245 
215246  void operator delete (void* pointer, size_t size);
215247 
215248  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
215249  void operator delete (void* pointer)
215250  {
215251  // This is the generated delete operator...
215252  SgOmpTeamsLoopStatement::operator delete (pointer,sizeof(SgOmpTeamsLoopStatement));
215253  }
215254 
215256  static size_t numberOfNodes();
215257 
215259  static size_t memoryUsage();
215260 
215261  // End of scope which started in IR nodes specific code
215262  /* */
215263 
215264  /* name Internal Functions
215265  \brief Internal functions ... incomplete-documentation
215266 
215267  These functions have been made public as part of the design, but they are suggested for internal use
215268  or by particularly knowledgeable users for specialized tools or applications.
215269 
215270  \internal We could not make these private because they are required by user for special purposes. And
215271  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
215272 
215273  */
215274 
215275  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
215276  // overridden in every class by *generated* implementation
215278  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
215279  // MS: 06/28/02 container of names of variables or container indices
215280  // used used in the traversal to access AST successor nodes
215281  // overridden in every class by *generated* implementation
215284  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
215285 
215286  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
215287  // than all the vector copies. The implementation for these functions is generated for each class.
215289  virtual size_t get_numberOfTraversalSuccessors() override;
215291  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
215293  virtual size_t get_childIndex(SgNode *child) override;
215294 
215295 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
215296  // MS: 08/16/2002 method for generating RTI information
215298  virtual RTIReturnType roseRTI() override;
215299 #endif
215300  /* */
215301 
215302 
215303 
215304  /* name Deprecated Functions
215305  \brief Deprecated functions ... incomplete-documentation
215306 
215307  These functions have been deprecated from use.
215308  */
215309  /* */
215310 
215312  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
215313 
215314  // JJW (10/16/2008): Changed to a single function in Node.code, and put
215315  // getVariant() in #if 0 block to prevent confusing Doxygen
215316 #if 0
215317 
215318  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
215320  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
215321 #endif
215322  /* */
215323 
215324 
215325 
215326 
215327  public:
215328  /* name Traversal Support Functions
215329  \brief Traversal support functions ... incomplete-documentation
215330 
215331  These functions have been made public as part of the design, but they are suggested for internal use
215332  or by particularly knowledgable users for specialized tools or applications.
215333  */
215334  /* */
215335 
215336  // DQ (11/26/2005): Support for visitor pattern mechanims
215337  // (inferior to ROSE traversal mechanism, experimental).
215341 
215342  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
215344  virtual void accept (ROSE_VisitorPattern & visitor) override;
215345 
215346  // DQ (12/26/2005): Support for traversal based on the memory pool
215349  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
215350 
215353  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
215354 
215355  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
215356  // This traversal helps support internal tools that call static member functions.
215357  // note: this function operates on the memory pools.
215360  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
215361  /* */
215362 
215363 
215364  public:
215365  /* name Memory Allocation Functions
215366  \brief Memory allocations functions ... incomplete-documentation
215367 
215368  These functions have been made public as part of the design, but they are suggested for internal use
215369  or by particularly knowledgable users for specialized tools or applications.
215370  */
215371  /* */
215372 
215383  virtual bool isInMemoryPool() override;
215384 
215395  virtual void checkDataMemberPointersIfInMemoryPool() override;
215396 
215397  // DQ (4/30/2006): Modified to be a const function.
215412  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
215413 
215423  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
215424 
215436  virtual long getChildIndex( SgNode* childNode ) const override;
215437 
215438  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
215439  // comment here (changed to be a C style comment and not be a doxygen comment).
215440  /* \brief Constructor for use by AST File I/O Mechanism
215441 
215442  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
215443  which obtained via fast binary file I/O from disk.
215444  */
215445  // SgOmpTeamsLoopStatement( SgOmpTeamsLoopStatementStorageClass& source );
215446 
215447 
215448 
215449 
215450 
215451  // JH (10/24/2005): methods added to support the ast file IO
215452  private:
215453 
215454  /* name AST Memory Allocation Support Functions
215455  \brief Memory allocations support....
215456 
215457  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
215458  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
215459  and support the AST File I/O Mechanism.
215460  */
215461  /* */
215462 
215463  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
215464  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
215465  that I use the same type everywhere, if any changes are made. THe second one declares the type
215466  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
215467  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
215468  a correspinding one in the AST_FILE_IO class!
215469  */
215470  // DQ (9/2/2015): This typedef is no longer used, we can't define the
215471  // comment here (changed to be a C style comment and not be a doxygen comment).
215472  /* \brief Typedef used for low level memory access.
215473  */
215474  // typedef unsigned char* TestType;
215475 
215476  // DQ (9/2/2015): This typedef is no longer used, we can't define the
215477  // comment here (changed to be a C style comment and not be a doxygen comment).
215478  /* \brief Typedef used to hold memory addresses as values.
215479  */
215480  // typedef unsigned long AddressType;
215481 
215482 
215483 
215484  // necessary, to have direct access to the p_freepointer and the private methods !
215486  friend class AST_FILE_IO;
215487 
215489  friend class SgOmpTeamsLoopStatementStorageClass;
215490 
215492  friend class AstSpecificDataManagingClass;
215493 
215495  friend class AstSpecificDataManagingClassStorageClass;
215496 
215497  public:
215499  SgOmpTeamsLoopStatement( const SgOmpTeamsLoopStatementStorageClass& source );
215500 
215501  // private: // JJW hack
215502  /*
215503  name AST Memory Allocation Support Variables
215504  Memory allocations support variables
215505 
215506  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
215507  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
215508  and support the AST File I/O Mechanism.
215509  */
215510  /* */
215511 
215512  public:
215513 
215514  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
215515  // to current node (so that it will work cleanly with build functions to specify patterns).
215516  // virtual SgNode* addRegExpAttribute();
215523 
215524 // *** COMMON CODE SECTION ENDS HERE ***
215525 
215526 
215527 // End of memberFunctionString
215528 // Start of memberFunctionString
215529 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
215530 
215531  // the generated cast function
215532  // friend ROSE_DLL_API SgOmpTeamsLoopStatement* isSgOmpTeamsLoopStatement ( SgNode* s );
215533 
215535 
215536 
215537 // End of memberFunctionString
215538 // Start of memberFunctionString
215539 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
215540 
215541  void post_construction_initialization() override;
215542 
215543 
215544 // End of memberFunctionString
215545 
215546 
215547  public:
215548  virtual ~SgOmpTeamsLoopStatement();
215549 
215550 
215551  public:
215552  SgOmpTeamsLoopStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
215554 
215555  protected:
215556 
215557 
215558 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
215559 
215560 
215561  };
215562 #endif
215563 
215564 // postdeclarations for SgOmpTeamsLoopStatement
215565 
215566 /* #line 215567 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
215567 
215568 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
215569 
215570 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
215571 
215572 
215573 /* #line 215574 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
215574 
215575 
215576 
215577 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
215578 
215579 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
215580 // This code is automatically generated for each
215581 // terminal and non-terminal within the defined
215582 // grammar. There is a simple way to change the
215583 // code to fix bugs etc. See the ROSE README file
215584 // for directions.
215585 
215586 // tps: (02/22/2010): Adding DLL export requirements
215587 #include "rosedll.h"
215588 
215589 // predeclarations for SgOmpForSimdStatement
215590 
215591 /* #line 215592 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
215592 
215593 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
215594 
215595 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
215596 
215597 #if 1
215598 // Class Definition for SgOmpForSimdStatement
215600  {
215601  public:
215602 
215603 
215604 /* #line 215605 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
215605 
215606  virtual SgNode* copy ( SgCopyHelp& help) const override;
215607 // Start of memberFunctionString
215608 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
215609 
215610 // *** COMMON CODE SECTION BEGINS HERE ***
215611 
215612  public:
215613 
215614  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
215615  // and not required which is required to match the other aspects of the copy mechanism code generation.
215616  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
215617  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
215618  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
215619  // virtual SgNode* copy ( const SgCopyHelp & help) const;
215620 
215622  virtual std::string class_name() const override;
215623 
215625  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
215626 
215628  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
215629  // static const VariantT static_variant = V_SgOmpForSimdStatement;
215630  enum { static_variant = V_SgOmpForSimdStatement };
215631 
215632  /* the generated cast function */
215634  ROSE_DLL_API friend SgOmpForSimdStatement* isSgOmpForSimdStatement( SgNode * s );
215635 
215637  ROSE_DLL_API friend const SgOmpForSimdStatement* isSgOmpForSimdStatement( const SgNode * s );
215638 
215639  // ******************************************
215640  // * Memory Pool / New / Delete
215641  // ******************************************
215642 
215643  public:
215645  static const unsigned pool_size; //
215647  static std::vector<unsigned char *> pools; //
215649  static SgOmpForSimdStatement * next_node; //
215650 
215652  static unsigned long initializeStorageClassArray(SgOmpForSimdStatementStorageClass *); //
215653 
215655  static void clearMemoryPool(); //
215656  static void deleteMemoryPool(); //
215657 
215659  static void extendMemoryPoolForFileIO(); //
215660 
215662  static SgOmpForSimdStatement * getPointerFromGlobalIndex(unsigned long); //
215664  static SgOmpForSimdStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
215665 
215667  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
215669  static void resetValidFreepointers(); //
215671  static unsigned long getNumberOfLastValidPointer(); //
215672 
215673 
215674 #if defined(INLINE_FUNCTIONS)
215675 
215676  inline void *operator new (size_t size);
215677 #else
215678 
215679  void *operator new (size_t size);
215680 #endif
215681 
215682  void operator delete (void* pointer, size_t size);
215683 
215684  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
215685  void operator delete (void* pointer)
215686  {
215687  // This is the generated delete operator...
215688  SgOmpForSimdStatement::operator delete (pointer,sizeof(SgOmpForSimdStatement));
215689  }
215690 
215692  static size_t numberOfNodes();
215693 
215695  static size_t memoryUsage();
215696 
215697  // End of scope which started in IR nodes specific code
215698  /* */
215699 
215700  /* name Internal Functions
215701  \brief Internal functions ... incomplete-documentation
215702 
215703  These functions have been made public as part of the design, but they are suggested for internal use
215704  or by particularly knowledgeable users for specialized tools or applications.
215705 
215706  \internal We could not make these private because they are required by user for special purposes. And
215707  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
215708 
215709  */
215710 
215711  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
215712  // overridden in every class by *generated* implementation
215714  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
215715  // MS: 06/28/02 container of names of variables or container indices
215716  // used used in the traversal to access AST successor nodes
215717  // overridden in every class by *generated* implementation
215720  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
215721 
215722  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
215723  // than all the vector copies. The implementation for these functions is generated for each class.
215725  virtual size_t get_numberOfTraversalSuccessors() override;
215727  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
215729  virtual size_t get_childIndex(SgNode *child) override;
215730 
215731 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
215732  // MS: 08/16/2002 method for generating RTI information
215734  virtual RTIReturnType roseRTI() override;
215735 #endif
215736  /* */
215737 
215738 
215739 
215740  /* name Deprecated Functions
215741  \brief Deprecated functions ... incomplete-documentation
215742 
215743  These functions have been deprecated from use.
215744  */
215745  /* */
215746 
215748  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
215749 
215750  // JJW (10/16/2008): Changed to a single function in Node.code, and put
215751  // getVariant() in #if 0 block to prevent confusing Doxygen
215752 #if 0
215753 
215754  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
215756  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
215757 #endif
215758  /* */
215759 
215760 
215761 
215762 
215763  public:
215764  /* name Traversal Support Functions
215765  \brief Traversal support functions ... incomplete-documentation
215766 
215767  These functions have been made public as part of the design, but they are suggested for internal use
215768  or by particularly knowledgable users for specialized tools or applications.
215769  */
215770  /* */
215771 
215772  // DQ (11/26/2005): Support for visitor pattern mechanims
215773  // (inferior to ROSE traversal mechanism, experimental).
215777 
215778  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
215780  virtual void accept (ROSE_VisitorPattern & visitor) override;
215781 
215782  // DQ (12/26/2005): Support for traversal based on the memory pool
215785  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
215786 
215789  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
215790 
215791  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
215792  // This traversal helps support internal tools that call static member functions.
215793  // note: this function operates on the memory pools.
215796  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
215797  /* */
215798 
215799 
215800  public:
215801  /* name Memory Allocation Functions
215802  \brief Memory allocations functions ... incomplete-documentation
215803 
215804  These functions have been made public as part of the design, but they are suggested for internal use
215805  or by particularly knowledgable users for specialized tools or applications.
215806  */
215807  /* */
215808 
215819  virtual bool isInMemoryPool() override;
215820 
215831  virtual void checkDataMemberPointersIfInMemoryPool() override;
215832 
215833  // DQ (4/30/2006): Modified to be a const function.
215848  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
215849 
215859  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
215860 
215872  virtual long getChildIndex( SgNode* childNode ) const override;
215873 
215874  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
215875  // comment here (changed to be a C style comment and not be a doxygen comment).
215876  /* \brief Constructor for use by AST File I/O Mechanism
215877 
215878  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
215879  which obtained via fast binary file I/O from disk.
215880  */
215881  // SgOmpForSimdStatement( SgOmpForSimdStatementStorageClass& source );
215882 
215883 
215884 
215885 
215886 
215887  // JH (10/24/2005): methods added to support the ast file IO
215888  private:
215889 
215890  /* name AST Memory Allocation Support Functions
215891  \brief Memory allocations support....
215892 
215893  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
215894  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
215895  and support the AST File I/O Mechanism.
215896  */
215897  /* */
215898 
215899  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
215900  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
215901  that I use the same type everywhere, if any changes are made. THe second one declares the type
215902  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
215903  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
215904  a correspinding one in the AST_FILE_IO class!
215905  */
215906  // DQ (9/2/2015): This typedef is no longer used, we can't define the
215907  // comment here (changed to be a C style comment and not be a doxygen comment).
215908  /* \brief Typedef used for low level memory access.
215909  */
215910  // typedef unsigned char* TestType;
215911 
215912  // DQ (9/2/2015): This typedef is no longer used, we can't define the
215913  // comment here (changed to be a C style comment and not be a doxygen comment).
215914  /* \brief Typedef used to hold memory addresses as values.
215915  */
215916  // typedef unsigned long AddressType;
215917 
215918 
215919 
215920  // necessary, to have direct access to the p_freepointer and the private methods !
215922  friend class AST_FILE_IO;
215923 
215925  friend class SgOmpForSimdStatementStorageClass;
215926 
215928  friend class AstSpecificDataManagingClass;
215929 
215931  friend class AstSpecificDataManagingClassStorageClass;
215932 
215933  public:
215935  SgOmpForSimdStatement( const SgOmpForSimdStatementStorageClass& source );
215936 
215937  // private: // JJW hack
215938  /*
215939  name AST Memory Allocation Support Variables
215940  Memory allocations support variables
215941 
215942  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
215943  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
215944  and support the AST File I/O Mechanism.
215945  */
215946  /* */
215947 
215948  public:
215949 
215950  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
215951  // to current node (so that it will work cleanly with build functions to specify patterns).
215952  // virtual SgNode* addRegExpAttribute();
215959 
215960 // *** COMMON CODE SECTION ENDS HERE ***
215961 
215962 
215963 // End of memberFunctionString
215964 // Start of memberFunctionString
215965 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
215966 
215967  // the generated cast function
215968  // friend ROSE_DLL_API SgOmpForSimdStatement* isSgOmpForSimdStatement ( SgNode* s );
215969 
215971 
215972 
215973 // End of memberFunctionString
215974 // Start of memberFunctionString
215975 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
215976 
215977  void post_construction_initialization() override;
215978 
215979 
215980 // End of memberFunctionString
215981 
215982 
215983  public:
215984  virtual ~SgOmpForSimdStatement();
215985 
215986 
215987  public:
215988  SgOmpForSimdStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
215990 
215991  protected:
215992 
215993 
215994 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
215995 
215996 
215997  };
215998 #endif
215999 
216000 // postdeclarations for SgOmpForSimdStatement
216001 
216002 /* #line 216003 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
216003 
216004 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
216005 
216006 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
216007 
216008 
216009 /* #line 216010 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
216010 
216011 
216012 
216013 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
216014 
216015 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
216016 // This code is automatically generated for each
216017 // terminal and non-terminal within the defined
216018 // grammar. There is a simple way to change the
216019 // code to fix bugs etc. See the ROSE README file
216020 // for directions.
216021 
216022 // tps: (02/22/2010): Adding DLL export requirements
216023 #include "rosedll.h"
216024 
216025 // predeclarations for SgOmpCriticalStatement
216026 
216027 /* #line 216028 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
216028 
216029 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
216030 
216031 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
216032 
216033 #if 1
216034 // Class Definition for SgOmpCriticalStatement
216036  {
216037  public:
216038 
216039 
216040 /* #line 216041 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
216041 
216042  virtual SgNode* copy ( SgCopyHelp& help) const override;
216043 // Start of memberFunctionString
216044 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
216045 
216046 // *** COMMON CODE SECTION BEGINS HERE ***
216047 
216048  public:
216049 
216050  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
216051  // and not required which is required to match the other aspects of the copy mechanism code generation.
216052  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
216053  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
216054  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
216055  // virtual SgNode* copy ( const SgCopyHelp & help) const;
216056 
216058  virtual std::string class_name() const override;
216059 
216061  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
216062 
216064  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
216065  // static const VariantT static_variant = V_SgOmpCriticalStatement;
216066  enum { static_variant = V_SgOmpCriticalStatement };
216067 
216068  /* the generated cast function */
216070  ROSE_DLL_API friend SgOmpCriticalStatement* isSgOmpCriticalStatement( SgNode * s );
216071 
216073  ROSE_DLL_API friend const SgOmpCriticalStatement* isSgOmpCriticalStatement( const SgNode * s );
216074 
216075  // ******************************************
216076  // * Memory Pool / New / Delete
216077  // ******************************************
216078 
216079  public:
216081  static const unsigned pool_size; //
216083  static std::vector<unsigned char *> pools; //
216085  static SgOmpCriticalStatement * next_node; //
216086 
216088  static unsigned long initializeStorageClassArray(SgOmpCriticalStatementStorageClass *); //
216089 
216091  static void clearMemoryPool(); //
216092  static void deleteMemoryPool(); //
216093 
216095  static void extendMemoryPoolForFileIO(); //
216096 
216098  static SgOmpCriticalStatement * getPointerFromGlobalIndex(unsigned long); //
216100  static SgOmpCriticalStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
216101 
216103  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
216105  static void resetValidFreepointers(); //
216107  static unsigned long getNumberOfLastValidPointer(); //
216108 
216109 
216110 #if defined(INLINE_FUNCTIONS)
216111 
216112  inline void *operator new (size_t size);
216113 #else
216114 
216115  void *operator new (size_t size);
216116 #endif
216117 
216118  void operator delete (void* pointer, size_t size);
216119 
216120  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
216121  void operator delete (void* pointer)
216122  {
216123  // This is the generated delete operator...
216124  SgOmpCriticalStatement::operator delete (pointer,sizeof(SgOmpCriticalStatement));
216125  }
216126 
216128  static size_t numberOfNodes();
216129 
216131  static size_t memoryUsage();
216132 
216133  // End of scope which started in IR nodes specific code
216134  /* */
216135 
216136  /* name Internal Functions
216137  \brief Internal functions ... incomplete-documentation
216138 
216139  These functions have been made public as part of the design, but they are suggested for internal use
216140  or by particularly knowledgeable users for specialized tools or applications.
216141 
216142  \internal We could not make these private because they are required by user for special purposes. And
216143  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
216144 
216145  */
216146 
216147  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
216148  // overridden in every class by *generated* implementation
216150  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
216151  // MS: 06/28/02 container of names of variables or container indices
216152  // used used in the traversal to access AST successor nodes
216153  // overridden in every class by *generated* implementation
216156  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
216157 
216158  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
216159  // than all the vector copies. The implementation for these functions is generated for each class.
216161  virtual size_t get_numberOfTraversalSuccessors() override;
216163  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
216165  virtual size_t get_childIndex(SgNode *child) override;
216166 
216167 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
216168  // MS: 08/16/2002 method for generating RTI information
216170  virtual RTIReturnType roseRTI() override;
216171 #endif
216172  /* */
216173 
216174 
216175 
216176  /* name Deprecated Functions
216177  \brief Deprecated functions ... incomplete-documentation
216178 
216179  These functions have been deprecated from use.
216180  */
216181  /* */
216182 
216184  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
216185 
216186  // JJW (10/16/2008): Changed to a single function in Node.code, and put
216187  // getVariant() in #if 0 block to prevent confusing Doxygen
216188 #if 0
216189 
216190  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
216192  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
216193 #endif
216194  /* */
216195 
216196 
216197 
216198 
216199  public:
216200  /* name Traversal Support Functions
216201  \brief Traversal support functions ... incomplete-documentation
216202 
216203  These functions have been made public as part of the design, but they are suggested for internal use
216204  or by particularly knowledgable users for specialized tools or applications.
216205  */
216206  /* */
216207 
216208  // DQ (11/26/2005): Support for visitor pattern mechanims
216209  // (inferior to ROSE traversal mechanism, experimental).
216213 
216214  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
216216  virtual void accept (ROSE_VisitorPattern & visitor) override;
216217 
216218  // DQ (12/26/2005): Support for traversal based on the memory pool
216221  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
216222 
216225  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
216226 
216227  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
216228  // This traversal helps support internal tools that call static member functions.
216229  // note: this function operates on the memory pools.
216232  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
216233  /* */
216234 
216235 
216236  public:
216237  /* name Memory Allocation Functions
216238  \brief Memory allocations functions ... incomplete-documentation
216239 
216240  These functions have been made public as part of the design, but they are suggested for internal use
216241  or by particularly knowledgable users for specialized tools or applications.
216242  */
216243  /* */
216244 
216255  virtual bool isInMemoryPool() override;
216256 
216267  virtual void checkDataMemberPointersIfInMemoryPool() override;
216268 
216269  // DQ (4/30/2006): Modified to be a const function.
216284  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
216285 
216295  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
216296 
216308  virtual long getChildIndex( SgNode* childNode ) const override;
216309 
216310  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
216311  // comment here (changed to be a C style comment and not be a doxygen comment).
216312  /* \brief Constructor for use by AST File I/O Mechanism
216313 
216314  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
216315  which obtained via fast binary file I/O from disk.
216316  */
216317  // SgOmpCriticalStatement( SgOmpCriticalStatementStorageClass& source );
216318 
216319 
216320 
216321 
216322 
216323  // JH (10/24/2005): methods added to support the ast file IO
216324  private:
216325 
216326  /* name AST Memory Allocation Support Functions
216327  \brief Memory allocations support....
216328 
216329  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
216330  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
216331  and support the AST File I/O Mechanism.
216332  */
216333  /* */
216334 
216335  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
216336  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
216337  that I use the same type everywhere, if any changes are made. THe second one declares the type
216338  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
216339  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
216340  a correspinding one in the AST_FILE_IO class!
216341  */
216342  // DQ (9/2/2015): This typedef is no longer used, we can't define the
216343  // comment here (changed to be a C style comment and not be a doxygen comment).
216344  /* \brief Typedef used for low level memory access.
216345  */
216346  // typedef unsigned char* TestType;
216347 
216348  // DQ (9/2/2015): This typedef is no longer used, we can't define the
216349  // comment here (changed to be a C style comment and not be a doxygen comment).
216350  /* \brief Typedef used to hold memory addresses as values.
216351  */
216352  // typedef unsigned long AddressType;
216353 
216354 
216355 
216356  // necessary, to have direct access to the p_freepointer and the private methods !
216358  friend class AST_FILE_IO;
216359 
216361  friend class SgOmpCriticalStatementStorageClass;
216362 
216364  friend class AstSpecificDataManagingClass;
216365 
216367  friend class AstSpecificDataManagingClassStorageClass;
216368 
216369  public:
216371  SgOmpCriticalStatement( const SgOmpCriticalStatementStorageClass& source );
216372 
216373  // private: // JJW hack
216374  /*
216375  name AST Memory Allocation Support Variables
216376  Memory allocations support variables
216377 
216378  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
216379  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
216380  and support the AST File I/O Mechanism.
216381  */
216382  /* */
216383 
216384  public:
216385 
216386  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
216387  // to current node (so that it will work cleanly with build functions to specify patterns).
216388  // virtual SgNode* addRegExpAttribute();
216395 
216396 // *** COMMON CODE SECTION ENDS HERE ***
216397 
216398 
216399 // End of memberFunctionString
216400 // Start of memberFunctionString
216401 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
216402 
216403  // the generated cast function
216404  // friend ROSE_DLL_API SgOmpCriticalStatement* isSgOmpCriticalStatement ( SgNode* s );
216405 
216407 
216408 
216409 // End of memberFunctionString
216410 // Start of memberFunctionString
216411 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
216412 
216413  void post_construction_initialization() override;
216414 
216415 
216416 // End of memberFunctionString
216417 
216418  public:
216419  SgName get_name() const /* (getDataAccessFunctionPrototypeString) */;
216420  void set_name(SgName name) /* (getDataAccessFunctionPrototypeString) */;
216421 
216422 
216423  public:
216424  virtual ~SgOmpCriticalStatement();
216425 
216426 
216427  public:
216428  SgOmpCriticalStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL, SgName name = "");
216429  SgOmpCriticalStatement(SgStatement* body, SgName name);
216430 
216431  protected:
216432 // Start of memberFunctionString
216433 SgName p_name;
216434 
216435 // End of memberFunctionString
216436 
216437 
216438 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
216439 
216440 
216441  };
216442 #endif
216443 
216444 // postdeclarations for SgOmpCriticalStatement
216445 
216446 /* #line 216447 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
216447 
216448 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
216449 
216450 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
216451 
216452 
216453 /* #line 216454 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
216454 
216455 
216456 
216457 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
216458 
216459 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
216460 // This code is automatically generated for each
216461 // terminal and non-terminal within the defined
216462 // grammar. There is a simple way to change the
216463 // code to fix bugs etc. See the ROSE README file
216464 // for directions.
216465 
216466 // tps: (02/22/2010): Adding DLL export requirements
216467 #include "rosedll.h"
216468 
216469 // predeclarations for SgOmpDistributeStatement
216470 
216471 /* #line 216472 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
216472 
216473 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
216474 
216475 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
216476 
216477 #if 1
216478 // Class Definition for SgOmpDistributeStatement
216480  {
216481  public:
216482 
216483 
216484 /* #line 216485 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
216485 
216486  virtual SgNode* copy ( SgCopyHelp& help) const override;
216487 // Start of memberFunctionString
216488 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
216489 
216490 // *** COMMON CODE SECTION BEGINS HERE ***
216491 
216492  public:
216493 
216494  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
216495  // and not required which is required to match the other aspects of the copy mechanism code generation.
216496  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
216497  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
216498  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
216499  // virtual SgNode* copy ( const SgCopyHelp & help) const;
216500 
216502  virtual std::string class_name() const override;
216503 
216505  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
216506 
216508  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
216509  // static const VariantT static_variant = V_SgOmpDistributeStatement;
216510  enum { static_variant = V_SgOmpDistributeStatement };
216511 
216512  /* the generated cast function */
216514  ROSE_DLL_API friend SgOmpDistributeStatement* isSgOmpDistributeStatement( SgNode * s );
216515 
216517  ROSE_DLL_API friend const SgOmpDistributeStatement* isSgOmpDistributeStatement( const SgNode * s );
216518 
216519  // ******************************************
216520  // * Memory Pool / New / Delete
216521  // ******************************************
216522 
216523  public:
216525  static const unsigned pool_size; //
216527  static std::vector<unsigned char *> pools; //
216529  static SgOmpDistributeStatement * next_node; //
216530 
216532  static unsigned long initializeStorageClassArray(SgOmpDistributeStatementStorageClass *); //
216533 
216535  static void clearMemoryPool(); //
216536  static void deleteMemoryPool(); //
216537 
216539  static void extendMemoryPoolForFileIO(); //
216540 
216542  static SgOmpDistributeStatement * getPointerFromGlobalIndex(unsigned long); //
216544  static SgOmpDistributeStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
216545 
216547  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
216549  static void resetValidFreepointers(); //
216551  static unsigned long getNumberOfLastValidPointer(); //
216552 
216553 
216554 #if defined(INLINE_FUNCTIONS)
216555 
216556  inline void *operator new (size_t size);
216557 #else
216558 
216559  void *operator new (size_t size);
216560 #endif
216561 
216562  void operator delete (void* pointer, size_t size);
216563 
216564  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
216565  void operator delete (void* pointer)
216566  {
216567  // This is the generated delete operator...
216568  SgOmpDistributeStatement::operator delete (pointer,sizeof(SgOmpDistributeStatement));
216569  }
216570 
216572  static size_t numberOfNodes();
216573 
216575  static size_t memoryUsage();
216576 
216577  // End of scope which started in IR nodes specific code
216578  /* */
216579 
216580  /* name Internal Functions
216581  \brief Internal functions ... incomplete-documentation
216582 
216583  These functions have been made public as part of the design, but they are suggested for internal use
216584  or by particularly knowledgeable users for specialized tools or applications.
216585 
216586  \internal We could not make these private because they are required by user for special purposes. And
216587  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
216588 
216589  */
216590 
216591  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
216592  // overridden in every class by *generated* implementation
216594  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
216595  // MS: 06/28/02 container of names of variables or container indices
216596  // used used in the traversal to access AST successor nodes
216597  // overridden in every class by *generated* implementation
216600  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
216601 
216602  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
216603  // than all the vector copies. The implementation for these functions is generated for each class.
216605  virtual size_t get_numberOfTraversalSuccessors() override;
216607  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
216609  virtual size_t get_childIndex(SgNode *child) override;
216610 
216611 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
216612  // MS: 08/16/2002 method for generating RTI information
216614  virtual RTIReturnType roseRTI() override;
216615 #endif
216616  /* */
216617 
216618 
216619 
216620  /* name Deprecated Functions
216621  \brief Deprecated functions ... incomplete-documentation
216622 
216623  These functions have been deprecated from use.
216624  */
216625  /* */
216626 
216628  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
216629 
216630  // JJW (10/16/2008): Changed to a single function in Node.code, and put
216631  // getVariant() in #if 0 block to prevent confusing Doxygen
216632 #if 0
216633 
216634  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
216636  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
216637 #endif
216638  /* */
216639 
216640 
216641 
216642 
216643  public:
216644  /* name Traversal Support Functions
216645  \brief Traversal support functions ... incomplete-documentation
216646 
216647  These functions have been made public as part of the design, but they are suggested for internal use
216648  or by particularly knowledgable users for specialized tools or applications.
216649  */
216650  /* */
216651 
216652  // DQ (11/26/2005): Support for visitor pattern mechanims
216653  // (inferior to ROSE traversal mechanism, experimental).
216657 
216658  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
216660  virtual void accept (ROSE_VisitorPattern & visitor) override;
216661 
216662  // DQ (12/26/2005): Support for traversal based on the memory pool
216665  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
216666 
216669  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
216670 
216671  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
216672  // This traversal helps support internal tools that call static member functions.
216673  // note: this function operates on the memory pools.
216676  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
216677  /* */
216678 
216679 
216680  public:
216681  /* name Memory Allocation Functions
216682  \brief Memory allocations functions ... incomplete-documentation
216683 
216684  These functions have been made public as part of the design, but they are suggested for internal use
216685  or by particularly knowledgable users for specialized tools or applications.
216686  */
216687  /* */
216688 
216699  virtual bool isInMemoryPool() override;
216700 
216711  virtual void checkDataMemberPointersIfInMemoryPool() override;
216712 
216713  // DQ (4/30/2006): Modified to be a const function.
216728  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
216729 
216739  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
216740 
216752  virtual long getChildIndex( SgNode* childNode ) const override;
216753 
216754  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
216755  // comment here (changed to be a C style comment and not be a doxygen comment).
216756  /* \brief Constructor for use by AST File I/O Mechanism
216757 
216758  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
216759  which obtained via fast binary file I/O from disk.
216760  */
216761  // SgOmpDistributeStatement( SgOmpDistributeStatementStorageClass& source );
216762 
216763 
216764 
216765 
216766 
216767  // JH (10/24/2005): methods added to support the ast file IO
216768  private:
216769 
216770  /* name AST Memory Allocation Support Functions
216771  \brief Memory allocations support....
216772 
216773  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
216774  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
216775  and support the AST File I/O Mechanism.
216776  */
216777  /* */
216778 
216779  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
216780  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
216781  that I use the same type everywhere, if any changes are made. THe second one declares the type
216782  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
216783  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
216784  a correspinding one in the AST_FILE_IO class!
216785  */
216786  // DQ (9/2/2015): This typedef is no longer used, we can't define the
216787  // comment here (changed to be a C style comment and not be a doxygen comment).
216788  /* \brief Typedef used for low level memory access.
216789  */
216790  // typedef unsigned char* TestType;
216791 
216792  // DQ (9/2/2015): This typedef is no longer used, we can't define the
216793  // comment here (changed to be a C style comment and not be a doxygen comment).
216794  /* \brief Typedef used to hold memory addresses as values.
216795  */
216796  // typedef unsigned long AddressType;
216797 
216798 
216799 
216800  // necessary, to have direct access to the p_freepointer and the private methods !
216802  friend class AST_FILE_IO;
216803 
216805  friend class SgOmpDistributeStatementStorageClass;
216806 
216808  friend class AstSpecificDataManagingClass;
216809 
216811  friend class AstSpecificDataManagingClassStorageClass;
216812 
216813  public:
216815  SgOmpDistributeStatement( const SgOmpDistributeStatementStorageClass& source );
216816 
216817  // private: // JJW hack
216818  /*
216819  name AST Memory Allocation Support Variables
216820  Memory allocations support variables
216821 
216822  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
216823  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
216824  and support the AST File I/O Mechanism.
216825  */
216826  /* */
216827 
216828  public:
216829 
216830  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
216831  // to current node (so that it will work cleanly with build functions to specify patterns).
216832  // virtual SgNode* addRegExpAttribute();
216839 
216840 // *** COMMON CODE SECTION ENDS HERE ***
216841 
216842 
216843 // End of memberFunctionString
216844 // Start of memberFunctionString
216845 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
216846 
216847  // the generated cast function
216848  // friend ROSE_DLL_API SgOmpDistributeStatement* isSgOmpDistributeStatement ( SgNode* s );
216849 
216851 
216852 
216853 // End of memberFunctionString
216854 // Start of memberFunctionString
216855 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
216856 
216857  void post_construction_initialization() override;
216858 
216859 
216860 // End of memberFunctionString
216861 
216862 
216863  public:
216864  virtual ~SgOmpDistributeStatement();
216865 
216866 
216867  public:
216868  SgOmpDistributeStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
216870 
216871  protected:
216872 
216873 
216874 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
216875 
216876 
216877  };
216878 #endif
216879 
216880 // postdeclarations for SgOmpDistributeStatement
216881 
216882 /* #line 216883 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
216883 
216884 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
216885 
216886 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
216887 
216888 
216889 /* #line 216890 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
216890 
216891 
216892 
216893 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
216894 
216895 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
216896 // This code is automatically generated for each
216897 // terminal and non-terminal within the defined
216898 // grammar. There is a simple way to change the
216899 // code to fix bugs etc. See the ROSE README file
216900 // for directions.
216901 
216902 // tps: (02/22/2010): Adding DLL export requirements
216903 #include "rosedll.h"
216904 
216905 // predeclarations for SgOmpUnrollStatement
216906 
216907 /* #line 216908 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
216908 
216909 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
216910 
216911 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
216912 
216913 #if 1
216914 // Class Definition for SgOmpUnrollStatement
216916  {
216917  public:
216918 
216919 
216920 /* #line 216921 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
216921 
216922  virtual SgNode* copy ( SgCopyHelp& help) const override;
216923 // Start of memberFunctionString
216924 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
216925 
216926 // *** COMMON CODE SECTION BEGINS HERE ***
216927 
216928  public:
216929 
216930  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
216931  // and not required which is required to match the other aspects of the copy mechanism code generation.
216932  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
216933  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
216934  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
216935  // virtual SgNode* copy ( const SgCopyHelp & help) const;
216936 
216938  virtual std::string class_name() const override;
216939 
216941  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
216942 
216944  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
216945  // static const VariantT static_variant = V_SgOmpUnrollStatement;
216946  enum { static_variant = V_SgOmpUnrollStatement };
216947 
216948  /* the generated cast function */
216950  ROSE_DLL_API friend SgOmpUnrollStatement* isSgOmpUnrollStatement( SgNode * s );
216951 
216953  ROSE_DLL_API friend const SgOmpUnrollStatement* isSgOmpUnrollStatement( const SgNode * s );
216954 
216955  // ******************************************
216956  // * Memory Pool / New / Delete
216957  // ******************************************
216958 
216959  public:
216961  static const unsigned pool_size; //
216963  static std::vector<unsigned char *> pools; //
216965  static SgOmpUnrollStatement * next_node; //
216966 
216968  static unsigned long initializeStorageClassArray(SgOmpUnrollStatementStorageClass *); //
216969 
216971  static void clearMemoryPool(); //
216972  static void deleteMemoryPool(); //
216973 
216975  static void extendMemoryPoolForFileIO(); //
216976 
216978  static SgOmpUnrollStatement * getPointerFromGlobalIndex(unsigned long); //
216980  static SgOmpUnrollStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
216981 
216983  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
216985  static void resetValidFreepointers(); //
216987  static unsigned long getNumberOfLastValidPointer(); //
216988 
216989 
216990 #if defined(INLINE_FUNCTIONS)
216991 
216992  inline void *operator new (size_t size);
216993 #else
216994 
216995  void *operator new (size_t size);
216996 #endif
216997 
216998  void operator delete (void* pointer, size_t size);
216999 
217000  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
217001  void operator delete (void* pointer)
217002  {
217003  // This is the generated delete operator...
217004  SgOmpUnrollStatement::operator delete (pointer,sizeof(SgOmpUnrollStatement));
217005  }
217006 
217008  static size_t numberOfNodes();
217009 
217011  static size_t memoryUsage();
217012 
217013  // End of scope which started in IR nodes specific code
217014  /* */
217015 
217016  /* name Internal Functions
217017  \brief Internal functions ... incomplete-documentation
217018 
217019  These functions have been made public as part of the design, but they are suggested for internal use
217020  or by particularly knowledgeable users for specialized tools or applications.
217021 
217022  \internal We could not make these private because they are required by user for special purposes. And
217023  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
217024 
217025  */
217026 
217027  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
217028  // overridden in every class by *generated* implementation
217030  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
217031  // MS: 06/28/02 container of names of variables or container indices
217032  // used used in the traversal to access AST successor nodes
217033  // overridden in every class by *generated* implementation
217036  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
217037 
217038  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
217039  // than all the vector copies. The implementation for these functions is generated for each class.
217041  virtual size_t get_numberOfTraversalSuccessors() override;
217043  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
217045  virtual size_t get_childIndex(SgNode *child) override;
217046 
217047 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
217048  // MS: 08/16/2002 method for generating RTI information
217050  virtual RTIReturnType roseRTI() override;
217051 #endif
217052  /* */
217053 
217054 
217055 
217056  /* name Deprecated Functions
217057  \brief Deprecated functions ... incomplete-documentation
217058 
217059  These functions have been deprecated from use.
217060  */
217061  /* */
217062 
217064  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
217065 
217066  // JJW (10/16/2008): Changed to a single function in Node.code, and put
217067  // getVariant() in #if 0 block to prevent confusing Doxygen
217068 #if 0
217069 
217070  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
217072  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
217073 #endif
217074  /* */
217075 
217076 
217077 
217078 
217079  public:
217080  /* name Traversal Support Functions
217081  \brief Traversal support functions ... incomplete-documentation
217082 
217083  These functions have been made public as part of the design, but they are suggested for internal use
217084  or by particularly knowledgable users for specialized tools or applications.
217085  */
217086  /* */
217087 
217088  // DQ (11/26/2005): Support for visitor pattern mechanims
217089  // (inferior to ROSE traversal mechanism, experimental).
217093 
217094  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
217096  virtual void accept (ROSE_VisitorPattern & visitor) override;
217097 
217098  // DQ (12/26/2005): Support for traversal based on the memory pool
217101  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
217102 
217105  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
217106 
217107  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
217108  // This traversal helps support internal tools that call static member functions.
217109  // note: this function operates on the memory pools.
217112  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
217113  /* */
217114 
217115 
217116  public:
217117  /* name Memory Allocation Functions
217118  \brief Memory allocations functions ... incomplete-documentation
217119 
217120  These functions have been made public as part of the design, but they are suggested for internal use
217121  or by particularly knowledgable users for specialized tools or applications.
217122  */
217123  /* */
217124 
217135  virtual bool isInMemoryPool() override;
217136 
217147  virtual void checkDataMemberPointersIfInMemoryPool() override;
217148 
217149  // DQ (4/30/2006): Modified to be a const function.
217164  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
217165 
217175  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
217176 
217188  virtual long getChildIndex( SgNode* childNode ) const override;
217189 
217190  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
217191  // comment here (changed to be a C style comment and not be a doxygen comment).
217192  /* \brief Constructor for use by AST File I/O Mechanism
217193 
217194  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
217195  which obtained via fast binary file I/O from disk.
217196  */
217197  // SgOmpUnrollStatement( SgOmpUnrollStatementStorageClass& source );
217198 
217199 
217200 
217201 
217202 
217203  // JH (10/24/2005): methods added to support the ast file IO
217204  private:
217205 
217206  /* name AST Memory Allocation Support Functions
217207  \brief Memory allocations support....
217208 
217209  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
217210  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
217211  and support the AST File I/O Mechanism.
217212  */
217213  /* */
217214 
217215  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
217216  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
217217  that I use the same type everywhere, if any changes are made. THe second one declares the type
217218  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
217219  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
217220  a correspinding one in the AST_FILE_IO class!
217221  */
217222  // DQ (9/2/2015): This typedef is no longer used, we can't define the
217223  // comment here (changed to be a C style comment and not be a doxygen comment).
217224  /* \brief Typedef used for low level memory access.
217225  */
217226  // typedef unsigned char* TestType;
217227 
217228  // DQ (9/2/2015): This typedef is no longer used, we can't define the
217229  // comment here (changed to be a C style comment and not be a doxygen comment).
217230  /* \brief Typedef used to hold memory addresses as values.
217231  */
217232  // typedef unsigned long AddressType;
217233 
217234 
217235 
217236  // necessary, to have direct access to the p_freepointer and the private methods !
217238  friend class AST_FILE_IO;
217239 
217241  friend class SgOmpUnrollStatementStorageClass;
217242 
217244  friend class AstSpecificDataManagingClass;
217245 
217247  friend class AstSpecificDataManagingClassStorageClass;
217248 
217249  public:
217251  SgOmpUnrollStatement( const SgOmpUnrollStatementStorageClass& source );
217252 
217253  // private: // JJW hack
217254  /*
217255  name AST Memory Allocation Support Variables
217256  Memory allocations support variables
217257 
217258  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
217259  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
217260  and support the AST File I/O Mechanism.
217261  */
217262  /* */
217263 
217264  public:
217265 
217266  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
217267  // to current node (so that it will work cleanly with build functions to specify patterns).
217268  // virtual SgNode* addRegExpAttribute();
217275 
217276 // *** COMMON CODE SECTION ENDS HERE ***
217277 
217278 
217279 // End of memberFunctionString
217280 // Start of memberFunctionString
217281 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
217282 
217283  // the generated cast function
217284  // friend ROSE_DLL_API SgOmpUnrollStatement* isSgOmpUnrollStatement ( SgNode* s );
217285 
217287 
217288 
217289 // End of memberFunctionString
217290 // Start of memberFunctionString
217291 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
217292 
217293  void post_construction_initialization() override;
217294 
217295 
217296 // End of memberFunctionString
217297 
217298 
217299  public:
217300  virtual ~SgOmpUnrollStatement();
217301 
217302 
217303  public:
217304  SgOmpUnrollStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
217306 
217307  protected:
217308 
217309 
217310 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
217311 
217312 
217313  };
217314 #endif
217315 
217316 // postdeclarations for SgOmpUnrollStatement
217317 
217318 /* #line 217319 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
217319 
217320 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
217321 
217322 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
217323 
217324 
217325 /* #line 217326 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
217326 
217327 
217328 
217329 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
217330 
217331 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
217332 // This code is automatically generated for each
217333 // terminal and non-terminal within the defined
217334 // grammar. There is a simple way to change the
217335 // code to fix bugs etc. See the ROSE README file
217336 // for directions.
217337 
217338 // tps: (02/22/2010): Adding DLL export requirements
217339 #include "rosedll.h"
217340 
217341 // predeclarations for SgOmpTileStatement
217342 
217343 /* #line 217344 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
217344 
217345 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
217346 
217347 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
217348 
217349 #if 1
217350 // Class Definition for SgOmpTileStatement
217352  {
217353  public:
217354 
217355 
217356 /* #line 217357 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
217357 
217358  virtual SgNode* copy ( SgCopyHelp& help) const override;
217359 // Start of memberFunctionString
217360 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
217361 
217362 // *** COMMON CODE SECTION BEGINS HERE ***
217363 
217364  public:
217365 
217366  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
217367  // and not required which is required to match the other aspects of the copy mechanism code generation.
217368  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
217369  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
217370  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
217371  // virtual SgNode* copy ( const SgCopyHelp & help) const;
217372 
217374  virtual std::string class_name() const override;
217375 
217377  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
217378 
217380  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
217381  // static const VariantT static_variant = V_SgOmpTileStatement;
217382  enum { static_variant = V_SgOmpTileStatement };
217383 
217384  /* the generated cast function */
217386  ROSE_DLL_API friend SgOmpTileStatement* isSgOmpTileStatement( SgNode * s );
217387 
217389  ROSE_DLL_API friend const SgOmpTileStatement* isSgOmpTileStatement( const SgNode * s );
217390 
217391  // ******************************************
217392  // * Memory Pool / New / Delete
217393  // ******************************************
217394 
217395  public:
217397  static const unsigned pool_size; //
217399  static std::vector<unsigned char *> pools; //
217401  static SgOmpTileStatement * next_node; //
217402 
217404  static unsigned long initializeStorageClassArray(SgOmpTileStatementStorageClass *); //
217405 
217407  static void clearMemoryPool(); //
217408  static void deleteMemoryPool(); //
217409 
217411  static void extendMemoryPoolForFileIO(); //
217412 
217414  static SgOmpTileStatement * getPointerFromGlobalIndex(unsigned long); //
217416  static SgOmpTileStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
217417 
217419  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
217421  static void resetValidFreepointers(); //
217423  static unsigned long getNumberOfLastValidPointer(); //
217424 
217425 
217426 #if defined(INLINE_FUNCTIONS)
217427 
217428  inline void *operator new (size_t size);
217429 #else
217430 
217431  void *operator new (size_t size);
217432 #endif
217433 
217434  void operator delete (void* pointer, size_t size);
217435 
217436  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
217437  void operator delete (void* pointer)
217438  {
217439  // This is the generated delete operator...
217440  SgOmpTileStatement::operator delete (pointer,sizeof(SgOmpTileStatement));
217441  }
217442 
217444  static size_t numberOfNodes();
217445 
217447  static size_t memoryUsage();
217448 
217449  // End of scope which started in IR nodes specific code
217450  /* */
217451 
217452  /* name Internal Functions
217453  \brief Internal functions ... incomplete-documentation
217454 
217455  These functions have been made public as part of the design, but they are suggested for internal use
217456  or by particularly knowledgeable users for specialized tools or applications.
217457 
217458  \internal We could not make these private because they are required by user for special purposes. And
217459  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
217460 
217461  */
217462 
217463  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
217464  // overridden in every class by *generated* implementation
217466  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
217467  // MS: 06/28/02 container of names of variables or container indices
217468  // used used in the traversal to access AST successor nodes
217469  // overridden in every class by *generated* implementation
217472  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
217473 
217474  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
217475  // than all the vector copies. The implementation for these functions is generated for each class.
217477  virtual size_t get_numberOfTraversalSuccessors() override;
217479  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
217481  virtual size_t get_childIndex(SgNode *child) override;
217482 
217483 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
217484  // MS: 08/16/2002 method for generating RTI information
217486  virtual RTIReturnType roseRTI() override;
217487 #endif
217488  /* */
217489 
217490 
217491 
217492  /* name Deprecated Functions
217493  \brief Deprecated functions ... incomplete-documentation
217494 
217495  These functions have been deprecated from use.
217496  */
217497  /* */
217498 
217500  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
217501 
217502  // JJW (10/16/2008): Changed to a single function in Node.code, and put
217503  // getVariant() in #if 0 block to prevent confusing Doxygen
217504 #if 0
217505 
217506  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
217508  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
217509 #endif
217510  /* */
217511 
217512 
217513 
217514 
217515  public:
217516  /* name Traversal Support Functions
217517  \brief Traversal support functions ... incomplete-documentation
217518 
217519  These functions have been made public as part of the design, but they are suggested for internal use
217520  or by particularly knowledgable users for specialized tools or applications.
217521  */
217522  /* */
217523 
217524  // DQ (11/26/2005): Support for visitor pattern mechanims
217525  // (inferior to ROSE traversal mechanism, experimental).
217529 
217530  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
217532  virtual void accept (ROSE_VisitorPattern & visitor) override;
217533 
217534  // DQ (12/26/2005): Support for traversal based on the memory pool
217537  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
217538 
217541  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
217542 
217543  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
217544  // This traversal helps support internal tools that call static member functions.
217545  // note: this function operates on the memory pools.
217548  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
217549  /* */
217550 
217551 
217552  public:
217553  /* name Memory Allocation Functions
217554  \brief Memory allocations functions ... incomplete-documentation
217555 
217556  These functions have been made public as part of the design, but they are suggested for internal use
217557  or by particularly knowledgable users for specialized tools or applications.
217558  */
217559  /* */
217560 
217571  virtual bool isInMemoryPool() override;
217572 
217583  virtual void checkDataMemberPointersIfInMemoryPool() override;
217584 
217585  // DQ (4/30/2006): Modified to be a const function.
217600  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
217601 
217611  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
217612 
217624  virtual long getChildIndex( SgNode* childNode ) const override;
217625 
217626  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
217627  // comment here (changed to be a C style comment and not be a doxygen comment).
217628  /* \brief Constructor for use by AST File I/O Mechanism
217629 
217630  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
217631  which obtained via fast binary file I/O from disk.
217632  */
217633  // SgOmpTileStatement( SgOmpTileStatementStorageClass& source );
217634 
217635 
217636 
217637 
217638 
217639  // JH (10/24/2005): methods added to support the ast file IO
217640  private:
217641 
217642  /* name AST Memory Allocation Support Functions
217643  \brief Memory allocations support....
217644 
217645  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
217646  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
217647  and support the AST File I/O Mechanism.
217648  */
217649  /* */
217650 
217651  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
217652  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
217653  that I use the same type everywhere, if any changes are made. THe second one declares the type
217654  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
217655  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
217656  a correspinding one in the AST_FILE_IO class!
217657  */
217658  // DQ (9/2/2015): This typedef is no longer used, we can't define the
217659  // comment here (changed to be a C style comment and not be a doxygen comment).
217660  /* \brief Typedef used for low level memory access.
217661  */
217662  // typedef unsigned char* TestType;
217663 
217664  // DQ (9/2/2015): This typedef is no longer used, we can't define the
217665  // comment here (changed to be a C style comment and not be a doxygen comment).
217666  /* \brief Typedef used to hold memory addresses as values.
217667  */
217668  // typedef unsigned long AddressType;
217669 
217670 
217671 
217672  // necessary, to have direct access to the p_freepointer and the private methods !
217674  friend class AST_FILE_IO;
217675 
217677  friend class SgOmpTileStatementStorageClass;
217678 
217680  friend class AstSpecificDataManagingClass;
217681 
217683  friend class AstSpecificDataManagingClassStorageClass;
217684 
217685  public:
217687  SgOmpTileStatement( const SgOmpTileStatementStorageClass& source );
217688 
217689  // private: // JJW hack
217690  /*
217691  name AST Memory Allocation Support Variables
217692  Memory allocations support variables
217693 
217694  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
217695  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
217696  and support the AST File I/O Mechanism.
217697  */
217698  /* */
217699 
217700  public:
217701 
217702  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
217703  // to current node (so that it will work cleanly with build functions to specify patterns).
217704  // virtual SgNode* addRegExpAttribute();
217711 
217712 // *** COMMON CODE SECTION ENDS HERE ***
217713 
217714 
217715 // End of memberFunctionString
217716 // Start of memberFunctionString
217717 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
217718 
217719  // the generated cast function
217720  // friend ROSE_DLL_API SgOmpTileStatement* isSgOmpTileStatement ( SgNode* s );
217721 
217723 
217724 
217725 // End of memberFunctionString
217726 // Start of memberFunctionString
217727 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
217728 
217729  void post_construction_initialization() override;
217730 
217731 
217732 // End of memberFunctionString
217733 
217734 
217735  public:
217736  virtual ~SgOmpTileStatement();
217737 
217738 
217739  public:
217740  SgOmpTileStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
217742 
217743  protected:
217744 
217745 
217746 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
217747 
217748 
217749  };
217750 #endif
217751 
217752 // postdeclarations for SgOmpTileStatement
217753 
217754 /* #line 217755 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
217755 
217756 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
217757 
217758 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
217759 
217760 
217761 /* #line 217762 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
217762 
217763 
217764 
217765 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
217766 
217767 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
217768 // This code is automatically generated for each
217769 // terminal and non-terminal within the defined
217770 // grammar. There is a simple way to change the
217771 // code to fix bugs etc. See the ROSE README file
217772 // for directions.
217773 
217774 // tps: (02/22/2010): Adding DLL export requirements
217775 #include "rosedll.h"
217776 
217777 // predeclarations for SgUpirLoopStatement
217778 
217779 /* #line 217780 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
217780 
217781 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
217782 
217783 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
217784 
217785 #if 1
217786 // Class Definition for SgUpirLoopStatement
217788  {
217789  public:
217790 
217791 
217792 /* #line 217793 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
217793 
217794  virtual SgNode* copy ( SgCopyHelp& help) const override;
217795 // Start of memberFunctionString
217796 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
217797 
217798 // *** COMMON CODE SECTION BEGINS HERE ***
217799 
217800  public:
217801 
217802  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
217803  // and not required which is required to match the other aspects of the copy mechanism code generation.
217804  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
217805  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
217806  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
217807  // virtual SgNode* copy ( const SgCopyHelp & help) const;
217808 
217810  virtual std::string class_name() const override;
217811 
217813  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
217814 
217816  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
217817  // static const VariantT static_variant = V_SgUpirLoopStatement;
217818  enum { static_variant = V_SgUpirLoopStatement };
217819 
217820  /* the generated cast function */
217822  ROSE_DLL_API friend SgUpirLoopStatement* isSgUpirLoopStatement( SgNode * s );
217823 
217825  ROSE_DLL_API friend const SgUpirLoopStatement* isSgUpirLoopStatement( const SgNode * s );
217826 
217827  // ******************************************
217828  // * Memory Pool / New / Delete
217829  // ******************************************
217830 
217831  public:
217833  static const unsigned pool_size; //
217835  static std::vector<unsigned char *> pools; //
217837  static SgUpirLoopStatement * next_node; //
217838 
217840  static unsigned long initializeStorageClassArray(SgUpirLoopStatementStorageClass *); //
217841 
217843  static void clearMemoryPool(); //
217844  static void deleteMemoryPool(); //
217845 
217847  static void extendMemoryPoolForFileIO(); //
217848 
217850  static SgUpirLoopStatement * getPointerFromGlobalIndex(unsigned long); //
217852  static SgUpirLoopStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
217853 
217855  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
217857  static void resetValidFreepointers(); //
217859  static unsigned long getNumberOfLastValidPointer(); //
217860 
217861 
217862 #if defined(INLINE_FUNCTIONS)
217863 
217864  inline void *operator new (size_t size);
217865 #else
217866 
217867  void *operator new (size_t size);
217868 #endif
217869 
217870  void operator delete (void* pointer, size_t size);
217871 
217872  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
217873  void operator delete (void* pointer)
217874  {
217875  // This is the generated delete operator...
217876  SgUpirLoopStatement::operator delete (pointer,sizeof(SgUpirLoopStatement));
217877  }
217878 
217880  static size_t numberOfNodes();
217881 
217883  static size_t memoryUsage();
217884 
217885  // End of scope which started in IR nodes specific code
217886  /* */
217887 
217888  /* name Internal Functions
217889  \brief Internal functions ... incomplete-documentation
217890 
217891  These functions have been made public as part of the design, but they are suggested for internal use
217892  or by particularly knowledgeable users for specialized tools or applications.
217893 
217894  \internal We could not make these private because they are required by user for special purposes. And
217895  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
217896 
217897  */
217898 
217899  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
217900  // overridden in every class by *generated* implementation
217902  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
217903  // MS: 06/28/02 container of names of variables or container indices
217904  // used used in the traversal to access AST successor nodes
217905  // overridden in every class by *generated* implementation
217908  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
217909 
217910  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
217911  // than all the vector copies. The implementation for these functions is generated for each class.
217913  virtual size_t get_numberOfTraversalSuccessors() override;
217915  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
217917  virtual size_t get_childIndex(SgNode *child) override;
217918 
217919 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
217920  // MS: 08/16/2002 method for generating RTI information
217922  virtual RTIReturnType roseRTI() override;
217923 #endif
217924  /* */
217925 
217926 
217927 
217928  /* name Deprecated Functions
217929  \brief Deprecated functions ... incomplete-documentation
217930 
217931  These functions have been deprecated from use.
217932  */
217933  /* */
217934 
217936  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
217937 
217938  // JJW (10/16/2008): Changed to a single function in Node.code, and put
217939  // getVariant() in #if 0 block to prevent confusing Doxygen
217940 #if 0
217941 
217942  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
217944  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
217945 #endif
217946  /* */
217947 
217948 
217949 
217950 
217951  public:
217952  /* name Traversal Support Functions
217953  \brief Traversal support functions ... incomplete-documentation
217954 
217955  These functions have been made public as part of the design, but they are suggested for internal use
217956  or by particularly knowledgable users for specialized tools or applications.
217957  */
217958  /* */
217959 
217960  // DQ (11/26/2005): Support for visitor pattern mechanims
217961  // (inferior to ROSE traversal mechanism, experimental).
217965 
217966  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
217968  virtual void accept (ROSE_VisitorPattern & visitor) override;
217969 
217970  // DQ (12/26/2005): Support for traversal based on the memory pool
217973  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
217974 
217977  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
217978 
217979  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
217980  // This traversal helps support internal tools that call static member functions.
217981  // note: this function operates on the memory pools.
217984  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
217985  /* */
217986 
217987 
217988  public:
217989  /* name Memory Allocation Functions
217990  \brief Memory allocations functions ... incomplete-documentation
217991 
217992  These functions have been made public as part of the design, but they are suggested for internal use
217993  or by particularly knowledgable users for specialized tools or applications.
217994  */
217995  /* */
217996 
218007  virtual bool isInMemoryPool() override;
218008 
218019  virtual void checkDataMemberPointersIfInMemoryPool() override;
218020 
218021  // DQ (4/30/2006): Modified to be a const function.
218036  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
218037 
218047  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
218048 
218060  virtual long getChildIndex( SgNode* childNode ) const override;
218061 
218062  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
218063  // comment here (changed to be a C style comment and not be a doxygen comment).
218064  /* \brief Constructor for use by AST File I/O Mechanism
218065 
218066  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
218067  which obtained via fast binary file I/O from disk.
218068  */
218069  // SgUpirLoopStatement( SgUpirLoopStatementStorageClass& source );
218070 
218071 
218072 
218073 
218074 
218075  // JH (10/24/2005): methods added to support the ast file IO
218076  private:
218077 
218078  /* name AST Memory Allocation Support Functions
218079  \brief Memory allocations support....
218080 
218081  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
218082  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
218083  and support the AST File I/O Mechanism.
218084  */
218085  /* */
218086 
218087  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
218088  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
218089  that I use the same type everywhere, if any changes are made. THe second one declares the type
218090  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
218091  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
218092  a correspinding one in the AST_FILE_IO class!
218093  */
218094  // DQ (9/2/2015): This typedef is no longer used, we can't define the
218095  // comment here (changed to be a C style comment and not be a doxygen comment).
218096  /* \brief Typedef used for low level memory access.
218097  */
218098  // typedef unsigned char* TestType;
218099 
218100  // DQ (9/2/2015): This typedef is no longer used, we can't define the
218101  // comment here (changed to be a C style comment and not be a doxygen comment).
218102  /* \brief Typedef used to hold memory addresses as values.
218103  */
218104  // typedef unsigned long AddressType;
218105 
218106 
218107 
218108  // necessary, to have direct access to the p_freepointer and the private methods !
218110  friend class AST_FILE_IO;
218111 
218113  friend class SgUpirLoopStatementStorageClass;
218114 
218116  friend class AstSpecificDataManagingClass;
218117 
218119  friend class AstSpecificDataManagingClassStorageClass;
218120 
218121  public:
218123  SgUpirLoopStatement( const SgUpirLoopStatementStorageClass& source );
218124 
218125  // private: // JJW hack
218126  /*
218127  name AST Memory Allocation Support Variables
218128  Memory allocations support variables
218129 
218130  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
218131  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
218132  and support the AST File I/O Mechanism.
218133  */
218134  /* */
218135 
218136  public:
218137 
218138  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
218139  // to current node (so that it will work cleanly with build functions to specify patterns).
218140  // virtual SgNode* addRegExpAttribute();
218147 
218148 // *** COMMON CODE SECTION ENDS HERE ***
218149 
218150 
218151 // End of memberFunctionString
218152 // Start of memberFunctionString
218153 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
218154 
218155  // the generated cast function
218156  // friend ROSE_DLL_API SgUpirLoopStatement* isSgUpirLoopStatement ( SgNode* s );
218157 
218159 
218160 
218161 // End of memberFunctionString
218162 // Start of memberFunctionString
218163 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
218164 
218165  void post_construction_initialization() override;
218166 
218167 
218168 // End of memberFunctionString
218169 
218170  public:
218171  SgInitializedName* get_induction() const;
218172  void set_induction(SgInitializedName* induction);
218173 
218174  public:
218175  SgExpression* get_lower_bound() const;
218176  void set_lower_bound(SgExpression* lower_bound);
218177 
218178  public:
218179  SgExpression* get_upper_bound() const;
218180  void set_upper_bound(SgExpression* upper_bound);
218181 
218182  public:
218183  SgExpression* get_step() const;
218184  void set_step(SgExpression* step);
218185 
218186  public:
218187  bool get_incremental() const;
218188  void set_incremental(bool incremental);
218189 
218190 
218191  public:
218192  virtual ~SgUpirLoopStatement();
218193 
218194 
218195  public:
218196  SgUpirLoopStatement(Sg_File_Info* startOfConstruct , SgStatement* body = NULL);
218198 
218199  protected:
218200 // Start of memberFunctionString
218201 SgInitializedName* p_induction;
218202 
218203 // End of memberFunctionString
218204 // Start of memberFunctionString
218205 SgExpression* p_lower_bound;
218206 
218207 // End of memberFunctionString
218208 // Start of memberFunctionString
218209 SgExpression* p_upper_bound;
218210 
218211 // End of memberFunctionString
218212 // Start of memberFunctionString
218213 SgExpression* p_step;
218214 
218215 // End of memberFunctionString
218216 // Start of memberFunctionString
218217 bool p_incremental;
218218 
218219 // End of memberFunctionString
218220 
218221 
218222 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
218223 
218224 
218225  };
218226 #endif
218227 
218228 // postdeclarations for SgUpirLoopStatement
218229 
218230 /* #line 218231 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
218231 
218232 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
218233 
218234 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
218235 
218236 
218237 /* #line 218238 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
218238 
218239 
218240 
218241 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
218242 
218243 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
218244 // This code is automatically generated for each
218245 // terminal and non-terminal within the defined
218246 // grammar. There is a simple way to change the
218247 // code to fix bugs etc. See the ROSE README file
218248 // for directions.
218249 
218250 // tps: (02/22/2010): Adding DLL export requirements
218251 #include "rosedll.h"
218252 
218253 // predeclarations for SgUpirFieldStatement
218254 
218255 /* #line 218256 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
218256 
218257 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
218258 
218259 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
218260 
218261 #if 1
218262 // Class Definition for SgUpirFieldStatement
218263 class ROSE_DLL_API SgUpirFieldStatement : public SgUpirBaseStatement
218264  {
218265  public:
218266 
218267 
218268 /* #line 218269 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
218269 
218270  virtual SgNode* copy ( SgCopyHelp& help) const override;
218271 // Start of memberFunctionString
218272 /* #line 19514 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
218273 
218274 
218275 
218276 // End of memberFunctionString
218277 // Start of memberFunctionString
218278 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
218279 
218280 // *** COMMON CODE SECTION BEGINS HERE ***
218281 
218282  public:
218283 
218284  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
218285  // and not required which is required to match the other aspects of the copy mechanism code generation.
218286  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
218287  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
218288  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
218289  // virtual SgNode* copy ( const SgCopyHelp & help) const;
218290 
218292  virtual std::string class_name() const override;
218293 
218295  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
218296 
218298  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
218299  // static const VariantT static_variant = V_SgUpirFieldStatement;
218300  enum { static_variant = V_SgUpirFieldStatement };
218301 
218302  /* the generated cast function */
218304  ROSE_DLL_API friend SgUpirFieldStatement* isSgUpirFieldStatement( SgNode * s );
218305 
218307  ROSE_DLL_API friend const SgUpirFieldStatement* isSgUpirFieldStatement( const SgNode * s );
218308 
218309  // ******************************************
218310  // * Memory Pool / New / Delete
218311  // ******************************************
218312 
218313  public:
218315  static const unsigned pool_size; //
218317  static std::vector<unsigned char *> pools; //
218319  static SgUpirFieldStatement * next_node; //
218320 
218322  static unsigned long initializeStorageClassArray(SgUpirFieldStatementStorageClass *); //
218323 
218325  static void clearMemoryPool(); //
218326  static void deleteMemoryPool(); //
218327 
218329  static void extendMemoryPoolForFileIO(); //
218330 
218332  static SgUpirFieldStatement * getPointerFromGlobalIndex(unsigned long); //
218334  static SgUpirFieldStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
218335 
218337  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
218339  static void resetValidFreepointers(); //
218341  static unsigned long getNumberOfLastValidPointer(); //
218342 
218343 
218344 #if defined(INLINE_FUNCTIONS)
218345 
218346  inline void *operator new (size_t size);
218347 #else
218348 
218349  void *operator new (size_t size);
218350 #endif
218351 
218352  void operator delete (void* pointer, size_t size);
218353 
218354  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
218355  void operator delete (void* pointer)
218356  {
218357  // This is the generated delete operator...
218358  SgUpirFieldStatement::operator delete (pointer,sizeof(SgUpirFieldStatement));
218359  }
218360 
218362  static size_t numberOfNodes();
218363 
218365  static size_t memoryUsage();
218366 
218367  // End of scope which started in IR nodes specific code
218368  /* */
218369 
218370  /* name Internal Functions
218371  \brief Internal functions ... incomplete-documentation
218372 
218373  These functions have been made public as part of the design, but they are suggested for internal use
218374  or by particularly knowledgeable users for specialized tools or applications.
218375 
218376  \internal We could not make these private because they are required by user for special purposes. And
218377  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
218378 
218379  */
218380 
218381  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
218382  // overridden in every class by *generated* implementation
218384  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
218385  // MS: 06/28/02 container of names of variables or container indices
218386  // used used in the traversal to access AST successor nodes
218387  // overridden in every class by *generated* implementation
218390  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
218391 
218392  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
218393  // than all the vector copies. The implementation for these functions is generated for each class.
218395  virtual size_t get_numberOfTraversalSuccessors() override;
218397  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
218399  virtual size_t get_childIndex(SgNode *child) override;
218400 
218401 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
218402  // MS: 08/16/2002 method for generating RTI information
218404  virtual RTIReturnType roseRTI() override;
218405 #endif
218406  /* */
218407 
218408 
218409 
218410  /* name Deprecated Functions
218411  \brief Deprecated functions ... incomplete-documentation
218412 
218413  These functions have been deprecated from use.
218414  */
218415  /* */
218416 
218418  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
218419 
218420  // JJW (10/16/2008): Changed to a single function in Node.code, and put
218421  // getVariant() in #if 0 block to prevent confusing Doxygen
218422 #if 0
218423 
218424  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
218426  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
218427 #endif
218428  /* */
218429 
218430 
218431 
218432 
218433  public:
218434  /* name Traversal Support Functions
218435  \brief Traversal support functions ... incomplete-documentation
218436 
218437  These functions have been made public as part of the design, but they are suggested for internal use
218438  or by particularly knowledgable users for specialized tools or applications.
218439  */
218440  /* */
218441 
218442  // DQ (11/26/2005): Support for visitor pattern mechanims
218443  // (inferior to ROSE traversal mechanism, experimental).
218447 
218448  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
218450  virtual void accept (ROSE_VisitorPattern & visitor) override;
218451 
218452  // DQ (12/26/2005): Support for traversal based on the memory pool
218455  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
218456 
218459  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
218460 
218461  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
218462  // This traversal helps support internal tools that call static member functions.
218463  // note: this function operates on the memory pools.
218466  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
218467  /* */
218468 
218469 
218470  public:
218471  /* name Memory Allocation Functions
218472  \brief Memory allocations functions ... incomplete-documentation
218473 
218474  These functions have been made public as part of the design, but they are suggested for internal use
218475  or by particularly knowledgable users for specialized tools or applications.
218476  */
218477  /* */
218478 
218489  virtual bool isInMemoryPool() override;
218490 
218501  virtual void checkDataMemberPointersIfInMemoryPool() override;
218502 
218503  // DQ (4/30/2006): Modified to be a const function.
218518  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
218519 
218529  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
218530 
218542  virtual long getChildIndex( SgNode* childNode ) const override;
218543 
218544  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
218545  // comment here (changed to be a C style comment and not be a doxygen comment).
218546  /* \brief Constructor for use by AST File I/O Mechanism
218547 
218548  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
218549  which obtained via fast binary file I/O from disk.
218550  */
218551  // SgUpirFieldStatement( SgUpirFieldStatementStorageClass& source );
218552 
218553 
218554 
218555 
218556 
218557  // JH (10/24/2005): methods added to support the ast file IO
218558  private:
218559 
218560  /* name AST Memory Allocation Support Functions
218561  \brief Memory allocations support....
218562 
218563  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
218564  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
218565  and support the AST File I/O Mechanism.
218566  */
218567  /* */
218568 
218569  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
218570  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
218571  that I use the same type everywhere, if any changes are made. THe second one declares the type
218572  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
218573  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
218574  a correspinding one in the AST_FILE_IO class!
218575  */
218576  // DQ (9/2/2015): This typedef is no longer used, we can't define the
218577  // comment here (changed to be a C style comment and not be a doxygen comment).
218578  /* \brief Typedef used for low level memory access.
218579  */
218580  // typedef unsigned char* TestType;
218581 
218582  // DQ (9/2/2015): This typedef is no longer used, we can't define the
218583  // comment here (changed to be a C style comment and not be a doxygen comment).
218584  /* \brief Typedef used to hold memory addresses as values.
218585  */
218586  // typedef unsigned long AddressType;
218587 
218588 
218589 
218590  // necessary, to have direct access to the p_freepointer and the private methods !
218592  friend class AST_FILE_IO;
218593 
218595  friend class SgUpirFieldStatementStorageClass;
218596 
218598  friend class AstSpecificDataManagingClass;
218599 
218601  friend class AstSpecificDataManagingClassStorageClass;
218602 
218603  public:
218605  SgUpirFieldStatement( const SgUpirFieldStatementStorageClass& source );
218606 
218607  // private: // JJW hack
218608  /*
218609  name AST Memory Allocation Support Variables
218610  Memory allocations support variables
218611 
218612  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
218613  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
218614  and support the AST File I/O Mechanism.
218615  */
218616  /* */
218617 
218618  public:
218619 
218620  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
218621  // to current node (so that it will work cleanly with build functions to specify patterns).
218622  // virtual SgNode* addRegExpAttribute();
218629 
218630 // *** COMMON CODE SECTION ENDS HERE ***
218631 
218632 
218633 // End of memberFunctionString
218634 // Start of memberFunctionString
218635 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
218636 
218637  // the generated cast function
218638  // friend ROSE_DLL_API SgUpirFieldStatement* isSgUpirFieldStatement ( SgNode* s );
218639 
218641 
218642 
218643 // End of memberFunctionString
218644 // Start of memberFunctionString
218645 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
218646 
218647  void post_construction_initialization() override;
218648 
218649 
218650 // End of memberFunctionString
218651 
218652  public:
218653  const SgOmpClausePtrList& get_clauses() const;
218654  SgOmpClausePtrList& get_clauses();
218655 
218656 
218657  public:
218658  virtual ~SgUpirFieldStatement();
218659 
218660 
218661  public:
218662  SgUpirFieldStatement(Sg_File_Info* startOfConstruct );
218664 
218665  protected:
218666 // Start of memberFunctionString
218667 SgOmpClausePtrList p_clauses;
218668 
218669 // End of memberFunctionString
218670 
218671 
218672 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
218673 
218674 
218675  };
218676 #endif
218677 
218678 // postdeclarations for SgUpirFieldStatement
218679 
218680 /* #line 218681 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
218681 
218682 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
218683 
218684 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
218685 
218686 
218687 /* #line 218688 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
218688 
218689 
218690 
218691 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
218692 
218693 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
218694 // This code is automatically generated for each
218695 // terminal and non-terminal within the defined
218696 // grammar. There is a simple way to change the
218697 // code to fix bugs etc. See the ROSE README file
218698 // for directions.
218699 
218700 // tps: (02/22/2010): Adding DLL export requirements
218701 #include "rosedll.h"
218702 
218703 // predeclarations for SgOmpCancelStatement
218704 
218705 /* #line 218706 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
218706 
218707 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
218708 
218709 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
218710 
218711 #if 1
218712 // Class Definition for SgOmpCancelStatement
218713 class ROSE_DLL_API SgOmpCancelStatement : public SgUpirFieldStatement
218714  {
218715  public:
218716 
218717 
218718 /* #line 218719 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
218719 
218720  virtual SgNode* copy ( SgCopyHelp& help) const override;
218721 // Start of memberFunctionString
218722 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
218723 
218724 // *** COMMON CODE SECTION BEGINS HERE ***
218725 
218726  public:
218727 
218728  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
218729  // and not required which is required to match the other aspects of the copy mechanism code generation.
218730  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
218731  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
218732  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
218733  // virtual SgNode* copy ( const SgCopyHelp & help) const;
218734 
218736  virtual std::string class_name() const override;
218737 
218739  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
218740 
218742  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
218743  // static const VariantT static_variant = V_SgOmpCancelStatement;
218744  enum { static_variant = V_SgOmpCancelStatement };
218745 
218746  /* the generated cast function */
218748  ROSE_DLL_API friend SgOmpCancelStatement* isSgOmpCancelStatement( SgNode * s );
218749 
218751  ROSE_DLL_API friend const SgOmpCancelStatement* isSgOmpCancelStatement( const SgNode * s );
218752 
218753  // ******************************************
218754  // * Memory Pool / New / Delete
218755  // ******************************************
218756 
218757  public:
218759  static const unsigned pool_size; //
218761  static std::vector<unsigned char *> pools; //
218763  static SgOmpCancelStatement * next_node; //
218764 
218766  static unsigned long initializeStorageClassArray(SgOmpCancelStatementStorageClass *); //
218767 
218769  static void clearMemoryPool(); //
218770  static void deleteMemoryPool(); //
218771 
218773  static void extendMemoryPoolForFileIO(); //
218774 
218776  static SgOmpCancelStatement * getPointerFromGlobalIndex(unsigned long); //
218778  static SgOmpCancelStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
218779 
218781  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
218783  static void resetValidFreepointers(); //
218785  static unsigned long getNumberOfLastValidPointer(); //
218786 
218787 
218788 #if defined(INLINE_FUNCTIONS)
218789 
218790  inline void *operator new (size_t size);
218791 #else
218792 
218793  void *operator new (size_t size);
218794 #endif
218795 
218796  void operator delete (void* pointer, size_t size);
218797 
218798  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
218799  void operator delete (void* pointer)
218800  {
218801  // This is the generated delete operator...
218802  SgOmpCancelStatement::operator delete (pointer,sizeof(SgOmpCancelStatement));
218803  }
218804 
218806  static size_t numberOfNodes();
218807 
218809  static size_t memoryUsage();
218810 
218811  // End of scope which started in IR nodes specific code
218812  /* */
218813 
218814  /* name Internal Functions
218815  \brief Internal functions ... incomplete-documentation
218816 
218817  These functions have been made public as part of the design, but they are suggested for internal use
218818  or by particularly knowledgeable users for specialized tools or applications.
218819 
218820  \internal We could not make these private because they are required by user for special purposes. And
218821  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
218822 
218823  */
218824 
218825  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
218826  // overridden in every class by *generated* implementation
218828  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
218829  // MS: 06/28/02 container of names of variables or container indices
218830  // used used in the traversal to access AST successor nodes
218831  // overridden in every class by *generated* implementation
218834  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
218835 
218836  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
218837  // than all the vector copies. The implementation for these functions is generated for each class.
218839  virtual size_t get_numberOfTraversalSuccessors() override;
218841  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
218843  virtual size_t get_childIndex(SgNode *child) override;
218844 
218845 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
218846  // MS: 08/16/2002 method for generating RTI information
218848  virtual RTIReturnType roseRTI() override;
218849 #endif
218850  /* */
218851 
218852 
218853 
218854  /* name Deprecated Functions
218855  \brief Deprecated functions ... incomplete-documentation
218856 
218857  These functions have been deprecated from use.
218858  */
218859  /* */
218860 
218862  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
218863 
218864  // JJW (10/16/2008): Changed to a single function in Node.code, and put
218865  // getVariant() in #if 0 block to prevent confusing Doxygen
218866 #if 0
218867 
218868  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
218870  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
218871 #endif
218872  /* */
218873 
218874 
218875 
218876 
218877  public:
218878  /* name Traversal Support Functions
218879  \brief Traversal support functions ... incomplete-documentation
218880 
218881  These functions have been made public as part of the design, but they are suggested for internal use
218882  or by particularly knowledgable users for specialized tools or applications.
218883  */
218884  /* */
218885 
218886  // DQ (11/26/2005): Support for visitor pattern mechanims
218887  // (inferior to ROSE traversal mechanism, experimental).
218891 
218892  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
218894  virtual void accept (ROSE_VisitorPattern & visitor) override;
218895 
218896  // DQ (12/26/2005): Support for traversal based on the memory pool
218899  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
218900 
218903  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
218904 
218905  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
218906  // This traversal helps support internal tools that call static member functions.
218907  // note: this function operates on the memory pools.
218910  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
218911  /* */
218912 
218913 
218914  public:
218915  /* name Memory Allocation Functions
218916  \brief Memory allocations functions ... incomplete-documentation
218917 
218918  These functions have been made public as part of the design, but they are suggested for internal use
218919  or by particularly knowledgable users for specialized tools or applications.
218920  */
218921  /* */
218922 
218933  virtual bool isInMemoryPool() override;
218934 
218945  virtual void checkDataMemberPointersIfInMemoryPool() override;
218946 
218947  // DQ (4/30/2006): Modified to be a const function.
218962  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
218963 
218973  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
218974 
218986  virtual long getChildIndex( SgNode* childNode ) const override;
218987 
218988  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
218989  // comment here (changed to be a C style comment and not be a doxygen comment).
218990  /* \brief Constructor for use by AST File I/O Mechanism
218991 
218992  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
218993  which obtained via fast binary file I/O from disk.
218994  */
218995  // SgOmpCancelStatement( SgOmpCancelStatementStorageClass& source );
218996 
218997 
218998 
218999 
219000 
219001  // JH (10/24/2005): methods added to support the ast file IO
219002  private:
219003 
219004  /* name AST Memory Allocation Support Functions
219005  \brief Memory allocations support....
219006 
219007  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
219008  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
219009  and support the AST File I/O Mechanism.
219010  */
219011  /* */
219012 
219013  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
219014  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
219015  that I use the same type everywhere, if any changes are made. THe second one declares the type
219016  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
219017  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
219018  a correspinding one in the AST_FILE_IO class!
219019  */
219020  // DQ (9/2/2015): This typedef is no longer used, we can't define the
219021  // comment here (changed to be a C style comment and not be a doxygen comment).
219022  /* \brief Typedef used for low level memory access.
219023  */
219024  // typedef unsigned char* TestType;
219025 
219026  // DQ (9/2/2015): This typedef is no longer used, we can't define the
219027  // comment here (changed to be a C style comment and not be a doxygen comment).
219028  /* \brief Typedef used to hold memory addresses as values.
219029  */
219030  // typedef unsigned long AddressType;
219031 
219032 
219033 
219034  // necessary, to have direct access to the p_freepointer and the private methods !
219036  friend class AST_FILE_IO;
219037 
219039  friend class SgOmpCancelStatementStorageClass;
219040 
219042  friend class AstSpecificDataManagingClass;
219043 
219045  friend class AstSpecificDataManagingClassStorageClass;
219046 
219047  public:
219049  SgOmpCancelStatement( const SgOmpCancelStatementStorageClass& source );
219050 
219051  // private: // JJW hack
219052  /*
219053  name AST Memory Allocation Support Variables
219054  Memory allocations support variables
219055 
219056  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
219057  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
219058  and support the AST File I/O Mechanism.
219059  */
219060  /* */
219061 
219062  public:
219063 
219064  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
219065  // to current node (so that it will work cleanly with build functions to specify patterns).
219066  // virtual SgNode* addRegExpAttribute();
219073 
219074 // *** COMMON CODE SECTION ENDS HERE ***
219075 
219076 
219077 // End of memberFunctionString
219078 // Start of memberFunctionString
219079 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
219080 
219081  // the generated cast function
219082  // friend ROSE_DLL_API SgOmpCancelStatement* isSgOmpCancelStatement ( SgNode* s );
219083 
219085 
219086 
219087 // End of memberFunctionString
219088 // Start of memberFunctionString
219089 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
219090 
219091  void post_construction_initialization() override;
219092 
219093 
219094 // End of memberFunctionString
219095 
219096 
219097  public:
219098  virtual ~SgOmpCancelStatement();
219099 
219100 
219101  public:
219102  SgOmpCancelStatement(Sg_File_Info* startOfConstruct );
219104 
219105  protected:
219106 
219107 
219108 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
219109 
219110 
219111  };
219112 #endif
219113 
219114 // postdeclarations for SgOmpCancelStatement
219115 
219116 /* #line 219117 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
219117 
219118 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
219119 
219120 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
219121 
219122 
219123 /* #line 219124 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
219124 
219125 
219126 
219127 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
219128 
219129 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
219130 // This code is automatically generated for each
219131 // terminal and non-terminal within the defined
219132 // grammar. There is a simple way to change the
219133 // code to fix bugs etc. See the ROSE README file
219134 // for directions.
219135 
219136 // tps: (02/22/2010): Adding DLL export requirements
219137 #include "rosedll.h"
219138 
219139 // predeclarations for SgOmpCancellationPointStatement
219140 
219141 /* #line 219142 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
219142 
219143 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
219144 
219145 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
219146 
219147 #if 1
219148 // Class Definition for SgOmpCancellationPointStatement
219150  {
219151  public:
219152 
219153 
219154 /* #line 219155 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
219155 
219156  virtual SgNode* copy ( SgCopyHelp& help) const override;
219157 // Start of memberFunctionString
219158 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
219159 
219160 // *** COMMON CODE SECTION BEGINS HERE ***
219161 
219162  public:
219163 
219164  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
219165  // and not required which is required to match the other aspects of the copy mechanism code generation.
219166  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
219167  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
219168  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
219169  // virtual SgNode* copy ( const SgCopyHelp & help) const;
219170 
219172  virtual std::string class_name() const override;
219173 
219175  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
219176 
219178  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
219179  // static const VariantT static_variant = V_SgOmpCancellationPointStatement;
219180  enum { static_variant = V_SgOmpCancellationPointStatement };
219181 
219182  /* the generated cast function */
219184  ROSE_DLL_API friend SgOmpCancellationPointStatement* isSgOmpCancellationPointStatement( SgNode * s );
219185 
219187  ROSE_DLL_API friend const SgOmpCancellationPointStatement* isSgOmpCancellationPointStatement( const SgNode * s );
219188 
219189  // ******************************************
219190  // * Memory Pool / New / Delete
219191  // ******************************************
219192 
219193  public:
219195  static const unsigned pool_size; //
219197  static std::vector<unsigned char *> pools; //
219199  static SgOmpCancellationPointStatement * next_node; //
219200 
219202  static unsigned long initializeStorageClassArray(SgOmpCancellationPointStatementStorageClass *); //
219203 
219205  static void clearMemoryPool(); //
219206  static void deleteMemoryPool(); //
219207 
219209  static void extendMemoryPoolForFileIO(); //
219210 
219212  static SgOmpCancellationPointStatement * getPointerFromGlobalIndex(unsigned long); //
219214  static SgOmpCancellationPointStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
219215 
219217  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
219219  static void resetValidFreepointers(); //
219221  static unsigned long getNumberOfLastValidPointer(); //
219222 
219223 
219224 #if defined(INLINE_FUNCTIONS)
219225 
219226  inline void *operator new (size_t size);
219227 #else
219228 
219229  void *operator new (size_t size);
219230 #endif
219231 
219232  void operator delete (void* pointer, size_t size);
219233 
219234  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
219235  void operator delete (void* pointer)
219236  {
219237  // This is the generated delete operator...
219238  SgOmpCancellationPointStatement::operator delete (pointer,sizeof(SgOmpCancellationPointStatement));
219239  }
219240 
219242  static size_t numberOfNodes();
219243 
219245  static size_t memoryUsage();
219246 
219247  // End of scope which started in IR nodes specific code
219248  /* */
219249 
219250  /* name Internal Functions
219251  \brief Internal functions ... incomplete-documentation
219252 
219253  These functions have been made public as part of the design, but they are suggested for internal use
219254  or by particularly knowledgeable users for specialized tools or applications.
219255 
219256  \internal We could not make these private because they are required by user for special purposes. And
219257  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
219258 
219259  */
219260 
219261  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
219262  // overridden in every class by *generated* implementation
219264  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
219265  // MS: 06/28/02 container of names of variables or container indices
219266  // used used in the traversal to access AST successor nodes
219267  // overridden in every class by *generated* implementation
219270  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
219271 
219272  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
219273  // than all the vector copies. The implementation for these functions is generated for each class.
219275  virtual size_t get_numberOfTraversalSuccessors() override;
219277  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
219279  virtual size_t get_childIndex(SgNode *child) override;
219280 
219281 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
219282  // MS: 08/16/2002 method for generating RTI information
219284  virtual RTIReturnType roseRTI() override;
219285 #endif
219286  /* */
219287 
219288 
219289 
219290  /* name Deprecated Functions
219291  \brief Deprecated functions ... incomplete-documentation
219292 
219293  These functions have been deprecated from use.
219294  */
219295  /* */
219296 
219298  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
219299 
219300  // JJW (10/16/2008): Changed to a single function in Node.code, and put
219301  // getVariant() in #if 0 block to prevent confusing Doxygen
219302 #if 0
219303 
219304  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
219306  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
219307 #endif
219308  /* */
219309 
219310 
219311 
219312 
219313  public:
219314  /* name Traversal Support Functions
219315  \brief Traversal support functions ... incomplete-documentation
219316 
219317  These functions have been made public as part of the design, but they are suggested for internal use
219318  or by particularly knowledgable users for specialized tools or applications.
219319  */
219320  /* */
219321 
219322  // DQ (11/26/2005): Support for visitor pattern mechanims
219323  // (inferior to ROSE traversal mechanism, experimental).
219327 
219328  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
219330  virtual void accept (ROSE_VisitorPattern & visitor) override;
219331 
219332  // DQ (12/26/2005): Support for traversal based on the memory pool
219335  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
219336 
219339  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
219340 
219341  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
219342  // This traversal helps support internal tools that call static member functions.
219343  // note: this function operates on the memory pools.
219346  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
219347  /* */
219348 
219349 
219350  public:
219351  /* name Memory Allocation Functions
219352  \brief Memory allocations functions ... incomplete-documentation
219353 
219354  These functions have been made public as part of the design, but they are suggested for internal use
219355  or by particularly knowledgable users for specialized tools or applications.
219356  */
219357  /* */
219358 
219369  virtual bool isInMemoryPool() override;
219370 
219381  virtual void checkDataMemberPointersIfInMemoryPool() override;
219382 
219383  // DQ (4/30/2006): Modified to be a const function.
219398  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
219399 
219409  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
219410 
219422  virtual long getChildIndex( SgNode* childNode ) const override;
219423 
219424  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
219425  // comment here (changed to be a C style comment and not be a doxygen comment).
219426  /* \brief Constructor for use by AST File I/O Mechanism
219427 
219428  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
219429  which obtained via fast binary file I/O from disk.
219430  */
219431  // SgOmpCancellationPointStatement( SgOmpCancellationPointStatementStorageClass& source );
219432 
219433 
219434 
219435 
219436 
219437  // JH (10/24/2005): methods added to support the ast file IO
219438  private:
219439 
219440  /* name AST Memory Allocation Support Functions
219441  \brief Memory allocations support....
219442 
219443  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
219444  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
219445  and support the AST File I/O Mechanism.
219446  */
219447  /* */
219448 
219449  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
219450  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
219451  that I use the same type everywhere, if any changes are made. THe second one declares the type
219452  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
219453  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
219454  a correspinding one in the AST_FILE_IO class!
219455  */
219456  // DQ (9/2/2015): This typedef is no longer used, we can't define the
219457  // comment here (changed to be a C style comment and not be a doxygen comment).
219458  /* \brief Typedef used for low level memory access.
219459  */
219460  // typedef unsigned char* TestType;
219461 
219462  // DQ (9/2/2015): This typedef is no longer used, we can't define the
219463  // comment here (changed to be a C style comment and not be a doxygen comment).
219464  /* \brief Typedef used to hold memory addresses as values.
219465  */
219466  // typedef unsigned long AddressType;
219467 
219468 
219469 
219470  // necessary, to have direct access to the p_freepointer and the private methods !
219472  friend class AST_FILE_IO;
219473 
219475  friend class SgOmpCancellationPointStatementStorageClass;
219476 
219478  friend class AstSpecificDataManagingClass;
219479 
219481  friend class AstSpecificDataManagingClassStorageClass;
219482 
219483  public:
219485  SgOmpCancellationPointStatement( const SgOmpCancellationPointStatementStorageClass& source );
219486 
219487  // private: // JJW hack
219488  /*
219489  name AST Memory Allocation Support Variables
219490  Memory allocations support variables
219491 
219492  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
219493  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
219494  and support the AST File I/O Mechanism.
219495  */
219496  /* */
219497 
219498  public:
219499 
219500  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
219501  // to current node (so that it will work cleanly with build functions to specify patterns).
219502  // virtual SgNode* addRegExpAttribute();
219509 
219510 // *** COMMON CODE SECTION ENDS HERE ***
219511 
219512 
219513 // End of memberFunctionString
219514 // Start of memberFunctionString
219515 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
219516 
219517  // the generated cast function
219518  // friend ROSE_DLL_API SgOmpCancellationPointStatement* isSgOmpCancellationPointStatement ( SgNode* s );
219519 
219521 
219522 
219523 // End of memberFunctionString
219524 // Start of memberFunctionString
219525 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
219526 
219527  void post_construction_initialization() override;
219528 
219529 
219530 // End of memberFunctionString
219531 
219532 
219533  public:
219534  virtual ~SgOmpCancellationPointStatement();
219535 
219536 
219537  public:
219538  SgOmpCancellationPointStatement(Sg_File_Info* startOfConstruct );
219540 
219541  protected:
219542 
219543 
219544 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
219545 
219546 
219547  };
219548 #endif
219549 
219550 // postdeclarations for SgOmpCancellationPointStatement
219551 
219552 /* #line 219553 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
219553 
219554 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
219555 
219556 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
219557 
219558 
219559 /* #line 219560 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
219560 
219561 
219562 
219563 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
219564 
219565 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
219566 // This code is automatically generated for each
219567 // terminal and non-terminal within the defined
219568 // grammar. There is a simple way to change the
219569 // code to fix bugs etc. See the ROSE README file
219570 // for directions.
219571 
219572 // tps: (02/22/2010): Adding DLL export requirements
219573 #include "rosedll.h"
219574 
219575 // predeclarations for SgOmpTargetUpdateStatement
219576 
219577 /* #line 219578 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
219578 
219579 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
219580 
219581 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
219582 
219583 #if 1
219584 // Class Definition for SgOmpTargetUpdateStatement
219586  {
219587  public:
219588 
219589 
219590 /* #line 219591 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
219591 
219592  virtual SgNode* copy ( SgCopyHelp& help) const override;
219593 // Start of memberFunctionString
219594 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
219595 
219596 // *** COMMON CODE SECTION BEGINS HERE ***
219597 
219598  public:
219599 
219600  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
219601  // and not required which is required to match the other aspects of the copy mechanism code generation.
219602  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
219603  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
219604  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
219605  // virtual SgNode* copy ( const SgCopyHelp & help) const;
219606 
219608  virtual std::string class_name() const override;
219609 
219611  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
219612 
219614  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
219615  // static const VariantT static_variant = V_SgOmpTargetUpdateStatement;
219616  enum { static_variant = V_SgOmpTargetUpdateStatement };
219617 
219618  /* the generated cast function */
219620  ROSE_DLL_API friend SgOmpTargetUpdateStatement* isSgOmpTargetUpdateStatement( SgNode * s );
219621 
219623  ROSE_DLL_API friend const SgOmpTargetUpdateStatement* isSgOmpTargetUpdateStatement( const SgNode * s );
219624 
219625  // ******************************************
219626  // * Memory Pool / New / Delete
219627  // ******************************************
219628 
219629  public:
219631  static const unsigned pool_size; //
219633  static std::vector<unsigned char *> pools; //
219635  static SgOmpTargetUpdateStatement * next_node; //
219636 
219638  static unsigned long initializeStorageClassArray(SgOmpTargetUpdateStatementStorageClass *); //
219639 
219641  static void clearMemoryPool(); //
219642  static void deleteMemoryPool(); //
219643 
219645  static void extendMemoryPoolForFileIO(); //
219646 
219648  static SgOmpTargetUpdateStatement * getPointerFromGlobalIndex(unsigned long); //
219650  static SgOmpTargetUpdateStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
219651 
219653  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
219655  static void resetValidFreepointers(); //
219657  static unsigned long getNumberOfLastValidPointer(); //
219658 
219659 
219660 #if defined(INLINE_FUNCTIONS)
219661 
219662  inline void *operator new (size_t size);
219663 #else
219664 
219665  void *operator new (size_t size);
219666 #endif
219667 
219668  void operator delete (void* pointer, size_t size);
219669 
219670  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
219671  void operator delete (void* pointer)
219672  {
219673  // This is the generated delete operator...
219674  SgOmpTargetUpdateStatement::operator delete (pointer,sizeof(SgOmpTargetUpdateStatement));
219675  }
219676 
219678  static size_t numberOfNodes();
219679 
219681  static size_t memoryUsage();
219682 
219683  // End of scope which started in IR nodes specific code
219684  /* */
219685 
219686  /* name Internal Functions
219687  \brief Internal functions ... incomplete-documentation
219688 
219689  These functions have been made public as part of the design, but they are suggested for internal use
219690  or by particularly knowledgeable users for specialized tools or applications.
219691 
219692  \internal We could not make these private because they are required by user for special purposes. And
219693  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
219694 
219695  */
219696 
219697  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
219698  // overridden in every class by *generated* implementation
219700  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
219701  // MS: 06/28/02 container of names of variables or container indices
219702  // used used in the traversal to access AST successor nodes
219703  // overridden in every class by *generated* implementation
219706  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
219707 
219708  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
219709  // than all the vector copies. The implementation for these functions is generated for each class.
219711  virtual size_t get_numberOfTraversalSuccessors() override;
219713  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
219715  virtual size_t get_childIndex(SgNode *child) override;
219716 
219717 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
219718  // MS: 08/16/2002 method for generating RTI information
219720  virtual RTIReturnType roseRTI() override;
219721 #endif
219722  /* */
219723 
219724 
219725 
219726  /* name Deprecated Functions
219727  \brief Deprecated functions ... incomplete-documentation
219728 
219729  These functions have been deprecated from use.
219730  */
219731  /* */
219732 
219734  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
219735 
219736  // JJW (10/16/2008): Changed to a single function in Node.code, and put
219737  // getVariant() in #if 0 block to prevent confusing Doxygen
219738 #if 0
219739 
219740  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
219742  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
219743 #endif
219744  /* */
219745 
219746 
219747 
219748 
219749  public:
219750  /* name Traversal Support Functions
219751  \brief Traversal support functions ... incomplete-documentation
219752 
219753  These functions have been made public as part of the design, but they are suggested for internal use
219754  or by particularly knowledgable users for specialized tools or applications.
219755  */
219756  /* */
219757 
219758  // DQ (11/26/2005): Support for visitor pattern mechanims
219759  // (inferior to ROSE traversal mechanism, experimental).
219763 
219764  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
219766  virtual void accept (ROSE_VisitorPattern & visitor) override;
219767 
219768  // DQ (12/26/2005): Support for traversal based on the memory pool
219771  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
219772 
219775  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
219776 
219777  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
219778  // This traversal helps support internal tools that call static member functions.
219779  // note: this function operates on the memory pools.
219782  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
219783  /* */
219784 
219785 
219786  public:
219787  /* name Memory Allocation Functions
219788  \brief Memory allocations functions ... incomplete-documentation
219789 
219790  These functions have been made public as part of the design, but they are suggested for internal use
219791  or by particularly knowledgable users for specialized tools or applications.
219792  */
219793  /* */
219794 
219805  virtual bool isInMemoryPool() override;
219806 
219817  virtual void checkDataMemberPointersIfInMemoryPool() override;
219818 
219819  // DQ (4/30/2006): Modified to be a const function.
219834  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
219835 
219845  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
219846 
219858  virtual long getChildIndex( SgNode* childNode ) const override;
219859 
219860  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
219861  // comment here (changed to be a C style comment and not be a doxygen comment).
219862  /* \brief Constructor for use by AST File I/O Mechanism
219863 
219864  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
219865  which obtained via fast binary file I/O from disk.
219866  */
219867  // SgOmpTargetUpdateStatement( SgOmpTargetUpdateStatementStorageClass& source );
219868 
219869 
219870 
219871 
219872 
219873  // JH (10/24/2005): methods added to support the ast file IO
219874  private:
219875 
219876  /* name AST Memory Allocation Support Functions
219877  \brief Memory allocations support....
219878 
219879  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
219880  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
219881  and support the AST File I/O Mechanism.
219882  */
219883  /* */
219884 
219885  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
219886  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
219887  that I use the same type everywhere, if any changes are made. THe second one declares the type
219888  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
219889  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
219890  a correspinding one in the AST_FILE_IO class!
219891  */
219892  // DQ (9/2/2015): This typedef is no longer used, we can't define the
219893  // comment here (changed to be a C style comment and not be a doxygen comment).
219894  /* \brief Typedef used for low level memory access.
219895  */
219896  // typedef unsigned char* TestType;
219897 
219898  // DQ (9/2/2015): This typedef is no longer used, we can't define the
219899  // comment here (changed to be a C style comment and not be a doxygen comment).
219900  /* \brief Typedef used to hold memory addresses as values.
219901  */
219902  // typedef unsigned long AddressType;
219903 
219904 
219905 
219906  // necessary, to have direct access to the p_freepointer and the private methods !
219908  friend class AST_FILE_IO;
219909 
219911  friend class SgOmpTargetUpdateStatementStorageClass;
219912 
219914  friend class AstSpecificDataManagingClass;
219915 
219917  friend class AstSpecificDataManagingClassStorageClass;
219918 
219919  public:
219921  SgOmpTargetUpdateStatement( const SgOmpTargetUpdateStatementStorageClass& source );
219922 
219923  // private: // JJW hack
219924  /*
219925  name AST Memory Allocation Support Variables
219926  Memory allocations support variables
219927 
219928  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
219929  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
219930  and support the AST File I/O Mechanism.
219931  */
219932  /* */
219933 
219934  public:
219935 
219936  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
219937  // to current node (so that it will work cleanly with build functions to specify patterns).
219938  // virtual SgNode* addRegExpAttribute();
219945 
219946 // *** COMMON CODE SECTION ENDS HERE ***
219947 
219948 
219949 // End of memberFunctionString
219950 // Start of memberFunctionString
219951 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
219952 
219953  // the generated cast function
219954  // friend ROSE_DLL_API SgOmpTargetUpdateStatement* isSgOmpTargetUpdateStatement ( SgNode* s );
219955 
219957 
219958 
219959 // End of memberFunctionString
219960 // Start of memberFunctionString
219961 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
219962 
219963  void post_construction_initialization() override;
219964 
219965 
219966 // End of memberFunctionString
219967 
219968 
219969  public:
219970  virtual ~SgOmpTargetUpdateStatement();
219971 
219972 
219973  public:
219974  SgOmpTargetUpdateStatement(Sg_File_Info* startOfConstruct );
219976 
219977  protected:
219978 
219979 
219980 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
219981 
219982 
219983  };
219984 #endif
219985 
219986 // postdeclarations for SgOmpTargetUpdateStatement
219987 
219988 /* #line 219989 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
219989 
219990 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
219991 
219992 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
219993 
219994 
219995 /* #line 219996 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
219996 
219997 
219998 
219999 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
220000 
220001 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
220002 // This code is automatically generated for each
220003 // terminal and non-terminal within the defined
220004 // grammar. There is a simple way to change the
220005 // code to fix bugs etc. See the ROSE README file
220006 // for directions.
220007 
220008 // tps: (02/22/2010): Adding DLL export requirements
220009 #include "rosedll.h"
220010 
220011 // predeclarations for SgOmpFlushStatement
220012 
220013 /* #line 220014 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
220014 
220015 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
220016 
220017 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
220018 
220019 #if 1
220020 // Class Definition for SgOmpFlushStatement
220021 class ROSE_DLL_API SgOmpFlushStatement : public SgUpirFieldStatement
220022  {
220023  public:
220024 
220025 
220026 /* #line 220027 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
220027 
220028  virtual SgNode* copy ( SgCopyHelp& help) const override;
220029 // Start of memberFunctionString
220030 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
220031 
220032 // *** COMMON CODE SECTION BEGINS HERE ***
220033 
220034  public:
220035 
220036  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
220037  // and not required which is required to match the other aspects of the copy mechanism code generation.
220038  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
220039  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
220040  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
220041  // virtual SgNode* copy ( const SgCopyHelp & help) const;
220042 
220044  virtual std::string class_name() const override;
220045 
220047  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
220048 
220050  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
220051  // static const VariantT static_variant = V_SgOmpFlushStatement;
220052  enum { static_variant = V_SgOmpFlushStatement };
220053 
220054  /* the generated cast function */
220056  ROSE_DLL_API friend SgOmpFlushStatement* isSgOmpFlushStatement( SgNode * s );
220057 
220059  ROSE_DLL_API friend const SgOmpFlushStatement* isSgOmpFlushStatement( const SgNode * s );
220060 
220061  // ******************************************
220062  // * Memory Pool / New / Delete
220063  // ******************************************
220064 
220065  public:
220067  static const unsigned pool_size; //
220069  static std::vector<unsigned char *> pools; //
220071  static SgOmpFlushStatement * next_node; //
220072 
220074  static unsigned long initializeStorageClassArray(SgOmpFlushStatementStorageClass *); //
220075 
220077  static void clearMemoryPool(); //
220078  static void deleteMemoryPool(); //
220079 
220081  static void extendMemoryPoolForFileIO(); //
220082 
220084  static SgOmpFlushStatement * getPointerFromGlobalIndex(unsigned long); //
220086  static SgOmpFlushStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
220087 
220089  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
220091  static void resetValidFreepointers(); //
220093  static unsigned long getNumberOfLastValidPointer(); //
220094 
220095 
220096 #if defined(INLINE_FUNCTIONS)
220097 
220098  inline void *operator new (size_t size);
220099 #else
220100 
220101  void *operator new (size_t size);
220102 #endif
220103 
220104  void operator delete (void* pointer, size_t size);
220105 
220106  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
220107  void operator delete (void* pointer)
220108  {
220109  // This is the generated delete operator...
220110  SgOmpFlushStatement::operator delete (pointer,sizeof(SgOmpFlushStatement));
220111  }
220112 
220114  static size_t numberOfNodes();
220115 
220117  static size_t memoryUsage();
220118 
220119  // End of scope which started in IR nodes specific code
220120  /* */
220121 
220122  /* name Internal Functions
220123  \brief Internal functions ... incomplete-documentation
220124 
220125  These functions have been made public as part of the design, but they are suggested for internal use
220126  or by particularly knowledgeable users for specialized tools or applications.
220127 
220128  \internal We could not make these private because they are required by user for special purposes. And
220129  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
220130 
220131  */
220132 
220133  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
220134  // overridden in every class by *generated* implementation
220136  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
220137  // MS: 06/28/02 container of names of variables or container indices
220138  // used used in the traversal to access AST successor nodes
220139  // overridden in every class by *generated* implementation
220142  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
220143 
220144  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
220145  // than all the vector copies. The implementation for these functions is generated for each class.
220147  virtual size_t get_numberOfTraversalSuccessors() override;
220149  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
220151  virtual size_t get_childIndex(SgNode *child) override;
220152 
220153 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
220154  // MS: 08/16/2002 method for generating RTI information
220156  virtual RTIReturnType roseRTI() override;
220157 #endif
220158  /* */
220159 
220160 
220161 
220162  /* name Deprecated Functions
220163  \brief Deprecated functions ... incomplete-documentation
220164 
220165  These functions have been deprecated from use.
220166  */
220167  /* */
220168 
220170  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
220171 
220172  // JJW (10/16/2008): Changed to a single function in Node.code, and put
220173  // getVariant() in #if 0 block to prevent confusing Doxygen
220174 #if 0
220175 
220176  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
220178  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
220179 #endif
220180  /* */
220181 
220182 
220183 
220184 
220185  public:
220186  /* name Traversal Support Functions
220187  \brief Traversal support functions ... incomplete-documentation
220188 
220189  These functions have been made public as part of the design, but they are suggested for internal use
220190  or by particularly knowledgable users for specialized tools or applications.
220191  */
220192  /* */
220193 
220194  // DQ (11/26/2005): Support for visitor pattern mechanims
220195  // (inferior to ROSE traversal mechanism, experimental).
220199 
220200  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
220202  virtual void accept (ROSE_VisitorPattern & visitor) override;
220203 
220204  // DQ (12/26/2005): Support for traversal based on the memory pool
220207  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
220208 
220211  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
220212 
220213  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
220214  // This traversal helps support internal tools that call static member functions.
220215  // note: this function operates on the memory pools.
220218  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
220219  /* */
220220 
220221 
220222  public:
220223  /* name Memory Allocation Functions
220224  \brief Memory allocations functions ... incomplete-documentation
220225 
220226  These functions have been made public as part of the design, but they are suggested for internal use
220227  or by particularly knowledgable users for specialized tools or applications.
220228  */
220229  /* */
220230 
220241  virtual bool isInMemoryPool() override;
220242 
220253  virtual void checkDataMemberPointersIfInMemoryPool() override;
220254 
220255  // DQ (4/30/2006): Modified to be a const function.
220270  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
220271 
220281  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
220282 
220294  virtual long getChildIndex( SgNode* childNode ) const override;
220295 
220296  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
220297  // comment here (changed to be a C style comment and not be a doxygen comment).
220298  /* \brief Constructor for use by AST File I/O Mechanism
220299 
220300  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
220301  which obtained via fast binary file I/O from disk.
220302  */
220303  // SgOmpFlushStatement( SgOmpFlushStatementStorageClass& source );
220304 
220305 
220306 
220307 
220308 
220309  // JH (10/24/2005): methods added to support the ast file IO
220310  private:
220311 
220312  /* name AST Memory Allocation Support Functions
220313  \brief Memory allocations support....
220314 
220315  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
220316  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
220317  and support the AST File I/O Mechanism.
220318  */
220319  /* */
220320 
220321  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
220322  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
220323  that I use the same type everywhere, if any changes are made. THe second one declares the type
220324  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
220325  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
220326  a correspinding one in the AST_FILE_IO class!
220327  */
220328  // DQ (9/2/2015): This typedef is no longer used, we can't define the
220329  // comment here (changed to be a C style comment and not be a doxygen comment).
220330  /* \brief Typedef used for low level memory access.
220331  */
220332  // typedef unsigned char* TestType;
220333 
220334  // DQ (9/2/2015): This typedef is no longer used, we can't define the
220335  // comment here (changed to be a C style comment and not be a doxygen comment).
220336  /* \brief Typedef used to hold memory addresses as values.
220337  */
220338  // typedef unsigned long AddressType;
220339 
220340 
220341 
220342  // necessary, to have direct access to the p_freepointer and the private methods !
220344  friend class AST_FILE_IO;
220345 
220347  friend class SgOmpFlushStatementStorageClass;
220348 
220350  friend class AstSpecificDataManagingClass;
220351 
220353  friend class AstSpecificDataManagingClassStorageClass;
220354 
220355  public:
220357  SgOmpFlushStatement( const SgOmpFlushStatementStorageClass& source );
220358 
220359  // private: // JJW hack
220360  /*
220361  name AST Memory Allocation Support Variables
220362  Memory allocations support variables
220363 
220364  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
220365  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
220366  and support the AST File I/O Mechanism.
220367  */
220368  /* */
220369 
220370  public:
220371 
220372  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
220373  // to current node (so that it will work cleanly with build functions to specify patterns).
220374  // virtual SgNode* addRegExpAttribute();
220381 
220382 // *** COMMON CODE SECTION ENDS HERE ***
220383 
220384 
220385 // End of memberFunctionString
220386 // Start of memberFunctionString
220387 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
220388 
220389  // the generated cast function
220390  // friend ROSE_DLL_API SgOmpFlushStatement* isSgOmpFlushStatement ( SgNode* s );
220391 
220393 
220394 
220395 // End of memberFunctionString
220396 // Start of memberFunctionString
220397 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
220398 
220399  void post_construction_initialization() override;
220400 
220401 
220402 // End of memberFunctionString
220403 
220404  public:
220405  const SgVarRefExpPtrList& get_variables() const;
220406  SgVarRefExpPtrList& get_variables();
220407 
220408 
220409  public:
220410  virtual ~SgOmpFlushStatement();
220411 
220412 
220413  public:
220414  SgOmpFlushStatement(Sg_File_Info* startOfConstruct );
220415  SgOmpFlushStatement();
220416 
220417  protected:
220418 // Start of memberFunctionString
220419 SgVarRefExpPtrList p_variables;
220420 
220421 // End of memberFunctionString
220422 
220423 
220424 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
220425 
220426 
220427  };
220428 #endif
220429 
220430 // postdeclarations for SgOmpFlushStatement
220431 
220432 /* #line 220433 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
220433 
220434 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
220435 
220436 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
220437 
220438 
220439 /* #line 220440 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
220440 
220441 
220442 
220443 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
220444 
220445 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
220446 // This code is automatically generated for each
220447 // terminal and non-terminal within the defined
220448 // grammar. There is a simple way to change the
220449 // code to fix bugs etc. See the ROSE README file
220450 // for directions.
220451 
220452 // tps: (02/22/2010): Adding DLL export requirements
220453 #include "rosedll.h"
220454 
220455 // predeclarations for SgOmpAllocateStatement
220456 
220457 /* #line 220458 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
220458 
220459 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
220460 
220461 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
220462 
220463 #if 1
220464 // Class Definition for SgOmpAllocateStatement
220466  {
220467  public:
220468 
220469 
220470 /* #line 220471 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
220471 
220472  virtual SgNode* copy ( SgCopyHelp& help) const override;
220473 // Start of memberFunctionString
220474 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
220475 
220476 // *** COMMON CODE SECTION BEGINS HERE ***
220477 
220478  public:
220479 
220480  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
220481  // and not required which is required to match the other aspects of the copy mechanism code generation.
220482  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
220483  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
220484  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
220485  // virtual SgNode* copy ( const SgCopyHelp & help) const;
220486 
220488  virtual std::string class_name() const override;
220489 
220491  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
220492 
220494  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
220495  // static const VariantT static_variant = V_SgOmpAllocateStatement;
220496  enum { static_variant = V_SgOmpAllocateStatement };
220497 
220498  /* the generated cast function */
220500  ROSE_DLL_API friend SgOmpAllocateStatement* isSgOmpAllocateStatement( SgNode * s );
220501 
220503  ROSE_DLL_API friend const SgOmpAllocateStatement* isSgOmpAllocateStatement( const SgNode * s );
220504 
220505  // ******************************************
220506  // * Memory Pool / New / Delete
220507  // ******************************************
220508 
220509  public:
220511  static const unsigned pool_size; //
220513  static std::vector<unsigned char *> pools; //
220515  static SgOmpAllocateStatement * next_node; //
220516 
220518  static unsigned long initializeStorageClassArray(SgOmpAllocateStatementStorageClass *); //
220519 
220521  static void clearMemoryPool(); //
220522  static void deleteMemoryPool(); //
220523 
220525  static void extendMemoryPoolForFileIO(); //
220526 
220528  static SgOmpAllocateStatement * getPointerFromGlobalIndex(unsigned long); //
220530  static SgOmpAllocateStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
220531 
220533  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
220535  static void resetValidFreepointers(); //
220537  static unsigned long getNumberOfLastValidPointer(); //
220538 
220539 
220540 #if defined(INLINE_FUNCTIONS)
220541 
220542  inline void *operator new (size_t size);
220543 #else
220544 
220545  void *operator new (size_t size);
220546 #endif
220547 
220548  void operator delete (void* pointer, size_t size);
220549 
220550  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
220551  void operator delete (void* pointer)
220552  {
220553  // This is the generated delete operator...
220554  SgOmpAllocateStatement::operator delete (pointer,sizeof(SgOmpAllocateStatement));
220555  }
220556 
220558  static size_t numberOfNodes();
220559 
220561  static size_t memoryUsage();
220562 
220563  // End of scope which started in IR nodes specific code
220564  /* */
220565 
220566  /* name Internal Functions
220567  \brief Internal functions ... incomplete-documentation
220568 
220569  These functions have been made public as part of the design, but they are suggested for internal use
220570  or by particularly knowledgeable users for specialized tools or applications.
220571 
220572  \internal We could not make these private because they are required by user for special purposes. And
220573  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
220574 
220575  */
220576 
220577  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
220578  // overridden in every class by *generated* implementation
220580  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
220581  // MS: 06/28/02 container of names of variables or container indices
220582  // used used in the traversal to access AST successor nodes
220583  // overridden in every class by *generated* implementation
220586  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
220587 
220588  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
220589  // than all the vector copies. The implementation for these functions is generated for each class.
220591  virtual size_t get_numberOfTraversalSuccessors() override;
220593  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
220595  virtual size_t get_childIndex(SgNode *child) override;
220596 
220597 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
220598  // MS: 08/16/2002 method for generating RTI information
220600  virtual RTIReturnType roseRTI() override;
220601 #endif
220602  /* */
220603 
220604 
220605 
220606  /* name Deprecated Functions
220607  \brief Deprecated functions ... incomplete-documentation
220608 
220609  These functions have been deprecated from use.
220610  */
220611  /* */
220612 
220614  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
220615 
220616  // JJW (10/16/2008): Changed to a single function in Node.code, and put
220617  // getVariant() in #if 0 block to prevent confusing Doxygen
220618 #if 0
220619 
220620  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
220622  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
220623 #endif
220624  /* */
220625 
220626 
220627 
220628 
220629  public:
220630  /* name Traversal Support Functions
220631  \brief Traversal support functions ... incomplete-documentation
220632 
220633  These functions have been made public as part of the design, but they are suggested for internal use
220634  or by particularly knowledgable users for specialized tools or applications.
220635  */
220636  /* */
220637 
220638  // DQ (11/26/2005): Support for visitor pattern mechanims
220639  // (inferior to ROSE traversal mechanism, experimental).
220643 
220644  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
220646  virtual void accept (ROSE_VisitorPattern & visitor) override;
220647 
220648  // DQ (12/26/2005): Support for traversal based on the memory pool
220651  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
220652 
220655  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
220656 
220657  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
220658  // This traversal helps support internal tools that call static member functions.
220659  // note: this function operates on the memory pools.
220662  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
220663  /* */
220664 
220665 
220666  public:
220667  /* name Memory Allocation Functions
220668  \brief Memory allocations functions ... incomplete-documentation
220669 
220670  These functions have been made public as part of the design, but they are suggested for internal use
220671  or by particularly knowledgable users for specialized tools or applications.
220672  */
220673  /* */
220674 
220685  virtual bool isInMemoryPool() override;
220686 
220697  virtual void checkDataMemberPointersIfInMemoryPool() override;
220698 
220699  // DQ (4/30/2006): Modified to be a const function.
220714  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
220715 
220725  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
220726 
220738  virtual long getChildIndex( SgNode* childNode ) const override;
220739 
220740  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
220741  // comment here (changed to be a C style comment and not be a doxygen comment).
220742  /* \brief Constructor for use by AST File I/O Mechanism
220743 
220744  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
220745  which obtained via fast binary file I/O from disk.
220746  */
220747  // SgOmpAllocateStatement( SgOmpAllocateStatementStorageClass& source );
220748 
220749 
220750 
220751 
220752 
220753  // JH (10/24/2005): methods added to support the ast file IO
220754  private:
220755 
220756  /* name AST Memory Allocation Support Functions
220757  \brief Memory allocations support....
220758 
220759  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
220760  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
220761  and support the AST File I/O Mechanism.
220762  */
220763  /* */
220764 
220765  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
220766  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
220767  that I use the same type everywhere, if any changes are made. THe second one declares the type
220768  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
220769  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
220770  a correspinding one in the AST_FILE_IO class!
220771  */
220772  // DQ (9/2/2015): This typedef is no longer used, we can't define the
220773  // comment here (changed to be a C style comment and not be a doxygen comment).
220774  /* \brief Typedef used for low level memory access.
220775  */
220776  // typedef unsigned char* TestType;
220777 
220778  // DQ (9/2/2015): This typedef is no longer used, we can't define the
220779  // comment here (changed to be a C style comment and not be a doxygen comment).
220780  /* \brief Typedef used to hold memory addresses as values.
220781  */
220782  // typedef unsigned long AddressType;
220783 
220784 
220785 
220786  // necessary, to have direct access to the p_freepointer and the private methods !
220788  friend class AST_FILE_IO;
220789 
220791  friend class SgOmpAllocateStatementStorageClass;
220792 
220794  friend class AstSpecificDataManagingClass;
220795 
220797  friend class AstSpecificDataManagingClassStorageClass;
220798 
220799  public:
220801  SgOmpAllocateStatement( const SgOmpAllocateStatementStorageClass& source );
220802 
220803  // private: // JJW hack
220804  /*
220805  name AST Memory Allocation Support Variables
220806  Memory allocations support variables
220807 
220808  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
220809  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
220810  and support the AST File I/O Mechanism.
220811  */
220812  /* */
220813 
220814  public:
220815 
220816  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
220817  // to current node (so that it will work cleanly with build functions to specify patterns).
220818  // virtual SgNode* addRegExpAttribute();
220825 
220826 // *** COMMON CODE SECTION ENDS HERE ***
220827 
220828 
220829 // End of memberFunctionString
220830 // Start of memberFunctionString
220831 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
220832 
220833  // the generated cast function
220834  // friend ROSE_DLL_API SgOmpAllocateStatement* isSgOmpAllocateStatement ( SgNode* s );
220835 
220837 
220838 
220839 // End of memberFunctionString
220840 // Start of memberFunctionString
220841 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
220842 
220843  void post_construction_initialization() override;
220844 
220845 
220846 // End of memberFunctionString
220847 
220848  public:
220849  const SgVarRefExpPtrList& get_variables() const;
220850  SgVarRefExpPtrList& get_variables();
220851 
220852 
220853  public:
220854  virtual ~SgOmpAllocateStatement();
220855 
220856 
220857  public:
220858  SgOmpAllocateStatement(Sg_File_Info* startOfConstruct );
220860 
220861  protected:
220862 // Start of memberFunctionString
220863 SgVarRefExpPtrList p_variables;
220864 
220865 // End of memberFunctionString
220866 
220867 
220868 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
220869 
220870 
220871  };
220872 #endif
220873 
220874 // postdeclarations for SgOmpAllocateStatement
220875 
220876 /* #line 220877 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
220877 
220878 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
220879 
220880 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
220881 
220882 
220883 /* #line 220884 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
220884 
220885 
220886 
220887 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
220888 
220889 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
220890 // This code is automatically generated for each
220891 // terminal and non-terminal within the defined
220892 // grammar. There is a simple way to change the
220893 // code to fix bugs etc. See the ROSE README file
220894 // for directions.
220895 
220896 // tps: (02/22/2010): Adding DLL export requirements
220897 #include "rosedll.h"
220898 
220899 // predeclarations for SgOmpOrderedDependStatement
220900 
220901 /* #line 220902 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
220902 
220903 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
220904 
220905 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
220906 
220907 #if 1
220908 // Class Definition for SgOmpOrderedDependStatement
220910  {
220911  public:
220912 
220913 
220914 /* #line 220915 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
220915 
220916  virtual SgNode* copy ( SgCopyHelp& help) const override;
220917 // Start of memberFunctionString
220918 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
220919 
220920 // *** COMMON CODE SECTION BEGINS HERE ***
220921 
220922  public:
220923 
220924  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
220925  // and not required which is required to match the other aspects of the copy mechanism code generation.
220926  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
220927  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
220928  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
220929  // virtual SgNode* copy ( const SgCopyHelp & help) const;
220930 
220932  virtual std::string class_name() const override;
220933 
220935  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
220936 
220938  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
220939  // static const VariantT static_variant = V_SgOmpOrderedDependStatement;
220940  enum { static_variant = V_SgOmpOrderedDependStatement };
220941 
220942  /* the generated cast function */
220944  ROSE_DLL_API friend SgOmpOrderedDependStatement* isSgOmpOrderedDependStatement( SgNode * s );
220945 
220947  ROSE_DLL_API friend const SgOmpOrderedDependStatement* isSgOmpOrderedDependStatement( const SgNode * s );
220948 
220949  // ******************************************
220950  // * Memory Pool / New / Delete
220951  // ******************************************
220952 
220953  public:
220955  static const unsigned pool_size; //
220957  static std::vector<unsigned char *> pools; //
220959  static SgOmpOrderedDependStatement * next_node; //
220960 
220962  static unsigned long initializeStorageClassArray(SgOmpOrderedDependStatementStorageClass *); //
220963 
220965  static void clearMemoryPool(); //
220966  static void deleteMemoryPool(); //
220967 
220969  static void extendMemoryPoolForFileIO(); //
220970 
220972  static SgOmpOrderedDependStatement * getPointerFromGlobalIndex(unsigned long); //
220974  static SgOmpOrderedDependStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
220975 
220977  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
220979  static void resetValidFreepointers(); //
220981  static unsigned long getNumberOfLastValidPointer(); //
220982 
220983 
220984 #if defined(INLINE_FUNCTIONS)
220985 
220986  inline void *operator new (size_t size);
220987 #else
220988 
220989  void *operator new (size_t size);
220990 #endif
220991 
220992  void operator delete (void* pointer, size_t size);
220993 
220994  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
220995  void operator delete (void* pointer)
220996  {
220997  // This is the generated delete operator...
220998  SgOmpOrderedDependStatement::operator delete (pointer,sizeof(SgOmpOrderedDependStatement));
220999  }
221000 
221002  static size_t numberOfNodes();
221003 
221005  static size_t memoryUsage();
221006 
221007  // End of scope which started in IR nodes specific code
221008  /* */
221009 
221010  /* name Internal Functions
221011  \brief Internal functions ... incomplete-documentation
221012 
221013  These functions have been made public as part of the design, but they are suggested for internal use
221014  or by particularly knowledgeable users for specialized tools or applications.
221015 
221016  \internal We could not make these private because they are required by user for special purposes. And
221017  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
221018 
221019  */
221020 
221021  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
221022  // overridden in every class by *generated* implementation
221024  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
221025  // MS: 06/28/02 container of names of variables or container indices
221026  // used used in the traversal to access AST successor nodes
221027  // overridden in every class by *generated* implementation
221030  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
221031 
221032  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
221033  // than all the vector copies. The implementation for these functions is generated for each class.
221035  virtual size_t get_numberOfTraversalSuccessors() override;
221037  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
221039  virtual size_t get_childIndex(SgNode *child) override;
221040 
221041 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
221042  // MS: 08/16/2002 method for generating RTI information
221044  virtual RTIReturnType roseRTI() override;
221045 #endif
221046  /* */
221047 
221048 
221049 
221050  /* name Deprecated Functions
221051  \brief Deprecated functions ... incomplete-documentation
221052 
221053  These functions have been deprecated from use.
221054  */
221055  /* */
221056 
221058  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
221059 
221060  // JJW (10/16/2008): Changed to a single function in Node.code, and put
221061  // getVariant() in #if 0 block to prevent confusing Doxygen
221062 #if 0
221063 
221064  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
221066  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
221067 #endif
221068  /* */
221069 
221070 
221071 
221072 
221073  public:
221074  /* name Traversal Support Functions
221075  \brief Traversal support functions ... incomplete-documentation
221076 
221077  These functions have been made public as part of the design, but they are suggested for internal use
221078  or by particularly knowledgable users for specialized tools or applications.
221079  */
221080  /* */
221081 
221082  // DQ (11/26/2005): Support for visitor pattern mechanims
221083  // (inferior to ROSE traversal mechanism, experimental).
221087 
221088  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
221090  virtual void accept (ROSE_VisitorPattern & visitor) override;
221091 
221092  // DQ (12/26/2005): Support for traversal based on the memory pool
221095  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
221096 
221099  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
221100 
221101  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
221102  // This traversal helps support internal tools that call static member functions.
221103  // note: this function operates on the memory pools.
221106  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
221107  /* */
221108 
221109 
221110  public:
221111  /* name Memory Allocation Functions
221112  \brief Memory allocations functions ... incomplete-documentation
221113 
221114  These functions have been made public as part of the design, but they are suggested for internal use
221115  or by particularly knowledgable users for specialized tools or applications.
221116  */
221117  /* */
221118 
221129  virtual bool isInMemoryPool() override;
221130 
221141  virtual void checkDataMemberPointersIfInMemoryPool() override;
221142 
221143  // DQ (4/30/2006): Modified to be a const function.
221158  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
221159 
221169  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
221170 
221182  virtual long getChildIndex( SgNode* childNode ) const override;
221183 
221184  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
221185  // comment here (changed to be a C style comment and not be a doxygen comment).
221186  /* \brief Constructor for use by AST File I/O Mechanism
221187 
221188  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
221189  which obtained via fast binary file I/O from disk.
221190  */
221191  // SgOmpOrderedDependStatement( SgOmpOrderedDependStatementStorageClass& source );
221192 
221193 
221194 
221195 
221196 
221197  // JH (10/24/2005): methods added to support the ast file IO
221198  private:
221199 
221200  /* name AST Memory Allocation Support Functions
221201  \brief Memory allocations support....
221202 
221203  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
221204  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
221205  and support the AST File I/O Mechanism.
221206  */
221207  /* */
221208 
221209  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
221210  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
221211  that I use the same type everywhere, if any changes are made. THe second one declares the type
221212  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
221213  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
221214  a correspinding one in the AST_FILE_IO class!
221215  */
221216  // DQ (9/2/2015): This typedef is no longer used, we can't define the
221217  // comment here (changed to be a C style comment and not be a doxygen comment).
221218  /* \brief Typedef used for low level memory access.
221219  */
221220  // typedef unsigned char* TestType;
221221 
221222  // DQ (9/2/2015): This typedef is no longer used, we can't define the
221223  // comment here (changed to be a C style comment and not be a doxygen comment).
221224  /* \brief Typedef used to hold memory addresses as values.
221225  */
221226  // typedef unsigned long AddressType;
221227 
221228 
221229 
221230  // necessary, to have direct access to the p_freepointer and the private methods !
221232  friend class AST_FILE_IO;
221233 
221235  friend class SgOmpOrderedDependStatementStorageClass;
221236 
221238  friend class AstSpecificDataManagingClass;
221239 
221241  friend class AstSpecificDataManagingClassStorageClass;
221242 
221243  public:
221245  SgOmpOrderedDependStatement( const SgOmpOrderedDependStatementStorageClass& source );
221246 
221247  // private: // JJW hack
221248  /*
221249  name AST Memory Allocation Support Variables
221250  Memory allocations support variables
221251 
221252  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
221253  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
221254  and support the AST File I/O Mechanism.
221255  */
221256  /* */
221257 
221258  public:
221259 
221260  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
221261  // to current node (so that it will work cleanly with build functions to specify patterns).
221262  // virtual SgNode* addRegExpAttribute();
221269 
221270 // *** COMMON CODE SECTION ENDS HERE ***
221271 
221272 
221273 // End of memberFunctionString
221274 // Start of memberFunctionString
221275 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
221276 
221277  // the generated cast function
221278  // friend ROSE_DLL_API SgOmpOrderedDependStatement* isSgOmpOrderedDependStatement ( SgNode* s );
221279 
221281 
221282 
221283 // End of memberFunctionString
221284 // Start of memberFunctionString
221285 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
221286 
221287  void post_construction_initialization() override;
221288 
221289 
221290 // End of memberFunctionString
221291 
221292 
221293  public:
221294  virtual ~SgOmpOrderedDependStatement();
221295 
221296 
221297  public:
221298  SgOmpOrderedDependStatement(Sg_File_Info* startOfConstruct );
221300 
221301  protected:
221302 
221303 
221304 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
221305 
221306 
221307  };
221308 #endif
221309 
221310 // postdeclarations for SgOmpOrderedDependStatement
221311 
221312 /* #line 221313 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
221313 
221314 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
221315 
221316 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
221317 
221318 
221319 /* #line 221320 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
221320 
221321 
221322 
221323 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
221324 
221325 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
221326 // This code is automatically generated for each
221327 // terminal and non-terminal within the defined
221328 // grammar. There is a simple way to change the
221329 // code to fix bugs etc. See the ROSE README file
221330 // for directions.
221331 
221332 // tps: (02/22/2010): Adding DLL export requirements
221333 #include "rosedll.h"
221334 
221335 // predeclarations for SgUpirSyncStatement
221336 
221337 /* #line 221338 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
221338 
221339 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
221340 
221341 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
221342 
221343 #if 1
221344 // Class Definition for SgUpirSyncStatement
221345 class ROSE_DLL_API SgUpirSyncStatement : public SgUpirFieldStatement
221346  {
221347  public:
221348 
221349 
221350 /* #line 221351 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
221351 
221352  virtual SgNode* copy ( SgCopyHelp& help) const override;
221353 // Start of memberFunctionString
221354 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
221355 
221356 // *** COMMON CODE SECTION BEGINS HERE ***
221357 
221358  public:
221359 
221360  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
221361  // and not required which is required to match the other aspects of the copy mechanism code generation.
221362  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
221363  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
221364  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
221365  // virtual SgNode* copy ( const SgCopyHelp & help) const;
221366 
221368  virtual std::string class_name() const override;
221369 
221371  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
221372 
221374  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
221375  // static const VariantT static_variant = V_SgUpirSyncStatement;
221376  enum { static_variant = V_SgUpirSyncStatement };
221377 
221378  /* the generated cast function */
221380  ROSE_DLL_API friend SgUpirSyncStatement* isSgUpirSyncStatement( SgNode * s );
221381 
221383  ROSE_DLL_API friend const SgUpirSyncStatement* isSgUpirSyncStatement( const SgNode * s );
221384 
221385  // ******************************************
221386  // * Memory Pool / New / Delete
221387  // ******************************************
221388 
221389  public:
221391  static const unsigned pool_size; //
221393  static std::vector<unsigned char *> pools; //
221395  static SgUpirSyncStatement * next_node; //
221396 
221398  static unsigned long initializeStorageClassArray(SgUpirSyncStatementStorageClass *); //
221399 
221401  static void clearMemoryPool(); //
221402  static void deleteMemoryPool(); //
221403 
221405  static void extendMemoryPoolForFileIO(); //
221406 
221408  static SgUpirSyncStatement * getPointerFromGlobalIndex(unsigned long); //
221410  static SgUpirSyncStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
221411 
221413  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
221415  static void resetValidFreepointers(); //
221417  static unsigned long getNumberOfLastValidPointer(); //
221418 
221419 
221420 #if defined(INLINE_FUNCTIONS)
221421 
221422  inline void *operator new (size_t size);
221423 #else
221424 
221425  void *operator new (size_t size);
221426 #endif
221427 
221428  void operator delete (void* pointer, size_t size);
221429 
221430  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
221431  void operator delete (void* pointer)
221432  {
221433  // This is the generated delete operator...
221434  SgUpirSyncStatement::operator delete (pointer,sizeof(SgUpirSyncStatement));
221435  }
221436 
221438  static size_t numberOfNodes();
221439 
221441  static size_t memoryUsage();
221442 
221443  // End of scope which started in IR nodes specific code
221444  /* */
221445 
221446  /* name Internal Functions
221447  \brief Internal functions ... incomplete-documentation
221448 
221449  These functions have been made public as part of the design, but they are suggested for internal use
221450  or by particularly knowledgeable users for specialized tools or applications.
221451 
221452  \internal We could not make these private because they are required by user for special purposes. And
221453  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
221454 
221455  */
221456 
221457  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
221458  // overridden in every class by *generated* implementation
221460  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
221461  // MS: 06/28/02 container of names of variables or container indices
221462  // used used in the traversal to access AST successor nodes
221463  // overridden in every class by *generated* implementation
221466  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
221467 
221468  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
221469  // than all the vector copies. The implementation for these functions is generated for each class.
221471  virtual size_t get_numberOfTraversalSuccessors() override;
221473  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
221475  virtual size_t get_childIndex(SgNode *child) override;
221476 
221477 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
221478  // MS: 08/16/2002 method for generating RTI information
221480  virtual RTIReturnType roseRTI() override;
221481 #endif
221482  /* */
221483 
221484 
221485 
221486  /* name Deprecated Functions
221487  \brief Deprecated functions ... incomplete-documentation
221488 
221489  These functions have been deprecated from use.
221490  */
221491  /* */
221492 
221494  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
221495 
221496  // JJW (10/16/2008): Changed to a single function in Node.code, and put
221497  // getVariant() in #if 0 block to prevent confusing Doxygen
221498 #if 0
221499 
221500  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
221502  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
221503 #endif
221504  /* */
221505 
221506 
221507 
221508 
221509  public:
221510  /* name Traversal Support Functions
221511  \brief Traversal support functions ... incomplete-documentation
221512 
221513  These functions have been made public as part of the design, but they are suggested for internal use
221514  or by particularly knowledgable users for specialized tools or applications.
221515  */
221516  /* */
221517 
221518  // DQ (11/26/2005): Support for visitor pattern mechanims
221519  // (inferior to ROSE traversal mechanism, experimental).
221523 
221524  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
221526  virtual void accept (ROSE_VisitorPattern & visitor) override;
221527 
221528  // DQ (12/26/2005): Support for traversal based on the memory pool
221531  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
221532 
221535  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
221536 
221537  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
221538  // This traversal helps support internal tools that call static member functions.
221539  // note: this function operates on the memory pools.
221542  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
221543  /* */
221544 
221545 
221546  public:
221547  /* name Memory Allocation Functions
221548  \brief Memory allocations functions ... incomplete-documentation
221549 
221550  These functions have been made public as part of the design, but they are suggested for internal use
221551  or by particularly knowledgable users for specialized tools or applications.
221552  */
221553  /* */
221554 
221565  virtual bool isInMemoryPool() override;
221566 
221577  virtual void checkDataMemberPointersIfInMemoryPool() override;
221578 
221579  // DQ (4/30/2006): Modified to be a const function.
221594  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
221595 
221605  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
221606 
221618  virtual long getChildIndex( SgNode* childNode ) const override;
221619 
221620  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
221621  // comment here (changed to be a C style comment and not be a doxygen comment).
221622  /* \brief Constructor for use by AST File I/O Mechanism
221623 
221624  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
221625  which obtained via fast binary file I/O from disk.
221626  */
221627  // SgUpirSyncStatement( SgUpirSyncStatementStorageClass& source );
221628 
221629 
221630 
221631 
221632 
221633  // JH (10/24/2005): methods added to support the ast file IO
221634  private:
221635 
221636  /* name AST Memory Allocation Support Functions
221637  \brief Memory allocations support....
221638 
221639  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
221640  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
221641  and support the AST File I/O Mechanism.
221642  */
221643  /* */
221644 
221645  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
221646  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
221647  that I use the same type everywhere, if any changes are made. THe second one declares the type
221648  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
221649  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
221650  a correspinding one in the AST_FILE_IO class!
221651  */
221652  // DQ (9/2/2015): This typedef is no longer used, we can't define the
221653  // comment here (changed to be a C style comment and not be a doxygen comment).
221654  /* \brief Typedef used for low level memory access.
221655  */
221656  // typedef unsigned char* TestType;
221657 
221658  // DQ (9/2/2015): This typedef is no longer used, we can't define the
221659  // comment here (changed to be a C style comment and not be a doxygen comment).
221660  /* \brief Typedef used to hold memory addresses as values.
221661  */
221662  // typedef unsigned long AddressType;
221663 
221664 
221665 
221666  // necessary, to have direct access to the p_freepointer and the private methods !
221668  friend class AST_FILE_IO;
221669 
221671  friend class SgUpirSyncStatementStorageClass;
221672 
221674  friend class AstSpecificDataManagingClass;
221675 
221677  friend class AstSpecificDataManagingClassStorageClass;
221678 
221679  public:
221681  SgUpirSyncStatement( const SgUpirSyncStatementStorageClass& source );
221682 
221683  // private: // JJW hack
221684  /*
221685  name AST Memory Allocation Support Variables
221686  Memory allocations support variables
221687 
221688  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
221689  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
221690  and support the AST File I/O Mechanism.
221691  */
221692  /* */
221693 
221694  public:
221695 
221696  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
221697  // to current node (so that it will work cleanly with build functions to specify patterns).
221698  // virtual SgNode* addRegExpAttribute();
221705 
221706 // *** COMMON CODE SECTION ENDS HERE ***
221707 
221708 
221709 // End of memberFunctionString
221710 // Start of memberFunctionString
221711 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
221712 
221713  // the generated cast function
221714  // friend ROSE_DLL_API SgUpirSyncStatement* isSgUpirSyncStatement ( SgNode* s );
221715 
221717 
221718 
221719 // End of memberFunctionString
221720 // Start of memberFunctionString
221721 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
221722 
221723  void post_construction_initialization() override;
221724 
221725 
221726 // End of memberFunctionString
221727 
221728 
221729  public:
221730  virtual ~SgUpirSyncStatement();
221731 
221732 
221733  public:
221734  SgUpirSyncStatement(Sg_File_Info* startOfConstruct );
221735  SgUpirSyncStatement();
221736 
221737  protected:
221738 
221739 
221740 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
221741 
221742 
221743  };
221744 #endif
221745 
221746 // postdeclarations for SgUpirSyncStatement
221747 
221748 /* #line 221749 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
221749 
221750 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
221751 
221752 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
221753 
221754 
221755 /* #line 221756 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
221756 
221757 
221758 
221759 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
221760 
221761 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
221762 // This code is automatically generated for each
221763 // terminal and non-terminal within the defined
221764 // grammar. There is a simple way to change the
221765 // code to fix bugs etc. See the ROSE README file
221766 // for directions.
221767 
221768 // tps: (02/22/2010): Adding DLL export requirements
221769 #include "rosedll.h"
221770 
221771 // predeclarations for SgUpirLoopParallelStatement
221772 
221773 /* #line 221774 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
221774 
221775 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
221776 
221777 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
221778 
221779 #if 1
221780 // Class Definition for SgUpirLoopParallelStatement
221782  {
221783  public:
221784 
221785 
221786 /* #line 221787 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
221787 
221788  virtual SgNode* copy ( SgCopyHelp& help) const override;
221789 // Start of memberFunctionString
221790 /* #line 18997 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
221791 
221792  virtual bool replace_child(SgStatement *,SgStatement *, bool extractListFromBasicBlock = false) override;
221793 
221794  public:
221795 
221796 
221797 // End of memberFunctionString
221798 // Start of memberFunctionString
221799 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
221800 
221801 // *** COMMON CODE SECTION BEGINS HERE ***
221802 
221803  public:
221804 
221805  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
221806  // and not required which is required to match the other aspects of the copy mechanism code generation.
221807  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
221808  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
221809  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
221810  // virtual SgNode* copy ( const SgCopyHelp & help) const;
221811 
221813  virtual std::string class_name() const override;
221814 
221816  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
221817 
221819  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
221820  // static const VariantT static_variant = V_SgUpirLoopParallelStatement;
221821  enum { static_variant = V_SgUpirLoopParallelStatement };
221822 
221823  /* the generated cast function */
221825  ROSE_DLL_API friend SgUpirLoopParallelStatement* isSgUpirLoopParallelStatement( SgNode * s );
221826 
221828  ROSE_DLL_API friend const SgUpirLoopParallelStatement* isSgUpirLoopParallelStatement( const SgNode * s );
221829 
221830  // ******************************************
221831  // * Memory Pool / New / Delete
221832  // ******************************************
221833 
221834  public:
221836  static const unsigned pool_size; //
221838  static std::vector<unsigned char *> pools; //
221840  static SgUpirLoopParallelStatement * next_node; //
221841 
221843  static unsigned long initializeStorageClassArray(SgUpirLoopParallelStatementStorageClass *); //
221844 
221846  static void clearMemoryPool(); //
221847  static void deleteMemoryPool(); //
221848 
221850  static void extendMemoryPoolForFileIO(); //
221851 
221853  static SgUpirLoopParallelStatement * getPointerFromGlobalIndex(unsigned long); //
221855  static SgUpirLoopParallelStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
221856 
221858  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
221860  static void resetValidFreepointers(); //
221862  static unsigned long getNumberOfLastValidPointer(); //
221863 
221864 
221865 #if defined(INLINE_FUNCTIONS)
221866 
221867  inline void *operator new (size_t size);
221868 #else
221869 
221870  void *operator new (size_t size);
221871 #endif
221872 
221873  void operator delete (void* pointer, size_t size);
221874 
221875  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
221876  void operator delete (void* pointer)
221877  {
221878  // This is the generated delete operator...
221879  SgUpirLoopParallelStatement::operator delete (pointer,sizeof(SgUpirLoopParallelStatement));
221880  }
221881 
221883  static size_t numberOfNodes();
221884 
221886  static size_t memoryUsage();
221887 
221888  // End of scope which started in IR nodes specific code
221889  /* */
221890 
221891  /* name Internal Functions
221892  \brief Internal functions ... incomplete-documentation
221893 
221894  These functions have been made public as part of the design, but they are suggested for internal use
221895  or by particularly knowledgeable users for specialized tools or applications.
221896 
221897  \internal We could not make these private because they are required by user for special purposes. And
221898  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
221899 
221900  */
221901 
221902  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
221903  // overridden in every class by *generated* implementation
221905  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
221906  // MS: 06/28/02 container of names of variables or container indices
221907  // used used in the traversal to access AST successor nodes
221908  // overridden in every class by *generated* implementation
221911  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
221912 
221913  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
221914  // than all the vector copies. The implementation for these functions is generated for each class.
221916  virtual size_t get_numberOfTraversalSuccessors() override;
221918  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
221920  virtual size_t get_childIndex(SgNode *child) override;
221921 
221922 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
221923  // MS: 08/16/2002 method for generating RTI information
221925  virtual RTIReturnType roseRTI() override;
221926 #endif
221927  /* */
221928 
221929 
221930 
221931  /* name Deprecated Functions
221932  \brief Deprecated functions ... incomplete-documentation
221933 
221934  These functions have been deprecated from use.
221935  */
221936  /* */
221937 
221939  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
221940 
221941  // JJW (10/16/2008): Changed to a single function in Node.code, and put
221942  // getVariant() in #if 0 block to prevent confusing Doxygen
221943 #if 0
221944 
221945  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
221947  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
221948 #endif
221949  /* */
221950 
221951 
221952 
221953 
221954  public:
221955  /* name Traversal Support Functions
221956  \brief Traversal support functions ... incomplete-documentation
221957 
221958  These functions have been made public as part of the design, but they are suggested for internal use
221959  or by particularly knowledgable users for specialized tools or applications.
221960  */
221961  /* */
221962 
221963  // DQ (11/26/2005): Support for visitor pattern mechanims
221964  // (inferior to ROSE traversal mechanism, experimental).
221968 
221969  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
221971  virtual void accept (ROSE_VisitorPattern & visitor) override;
221972 
221973  // DQ (12/26/2005): Support for traversal based on the memory pool
221976  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
221977 
221980  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
221981 
221982  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
221983  // This traversal helps support internal tools that call static member functions.
221984  // note: this function operates on the memory pools.
221987  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
221988  /* */
221989 
221990 
221991  public:
221992  /* name Memory Allocation Functions
221993  \brief Memory allocations functions ... incomplete-documentation
221994 
221995  These functions have been made public as part of the design, but they are suggested for internal use
221996  or by particularly knowledgable users for specialized tools or applications.
221997  */
221998  /* */
221999 
222010  virtual bool isInMemoryPool() override;
222011 
222022  virtual void checkDataMemberPointersIfInMemoryPool() override;
222023 
222024  // DQ (4/30/2006): Modified to be a const function.
222039  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
222040 
222050  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
222051 
222063  virtual long getChildIndex( SgNode* childNode ) const override;
222064 
222065  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
222066  // comment here (changed to be a C style comment and not be a doxygen comment).
222067  /* \brief Constructor for use by AST File I/O Mechanism
222068 
222069  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
222070  which obtained via fast binary file I/O from disk.
222071  */
222072  // SgUpirLoopParallelStatement( SgUpirLoopParallelStatementStorageClass& source );
222073 
222074 
222075 
222076 
222077 
222078  // JH (10/24/2005): methods added to support the ast file IO
222079  private:
222080 
222081  /* name AST Memory Allocation Support Functions
222082  \brief Memory allocations support....
222083 
222084  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
222085  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
222086  and support the AST File I/O Mechanism.
222087  */
222088  /* */
222089 
222090  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
222091  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
222092  that I use the same type everywhere, if any changes are made. THe second one declares the type
222093  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
222094  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
222095  a correspinding one in the AST_FILE_IO class!
222096  */
222097  // DQ (9/2/2015): This typedef is no longer used, we can't define the
222098  // comment here (changed to be a C style comment and not be a doxygen comment).
222099  /* \brief Typedef used for low level memory access.
222100  */
222101  // typedef unsigned char* TestType;
222102 
222103  // DQ (9/2/2015): This typedef is no longer used, we can't define the
222104  // comment here (changed to be a C style comment and not be a doxygen comment).
222105  /* \brief Typedef used to hold memory addresses as values.
222106  */
222107  // typedef unsigned long AddressType;
222108 
222109 
222110 
222111  // necessary, to have direct access to the p_freepointer and the private methods !
222113  friend class AST_FILE_IO;
222114 
222116  friend class SgUpirLoopParallelStatementStorageClass;
222117 
222119  friend class AstSpecificDataManagingClass;
222120 
222122  friend class AstSpecificDataManagingClassStorageClass;
222123 
222124  public:
222126  SgUpirLoopParallelStatement( const SgUpirLoopParallelStatementStorageClass& source );
222127 
222128  // private: // JJW hack
222129  /*
222130  name AST Memory Allocation Support Variables
222131  Memory allocations support variables
222132 
222133  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
222134  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
222135  and support the AST File I/O Mechanism.
222136  */
222137  /* */
222138 
222139  public:
222140 
222141  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
222142  // to current node (so that it will work cleanly with build functions to specify patterns).
222143  // virtual SgNode* addRegExpAttribute();
222150 
222151 // *** COMMON CODE SECTION ENDS HERE ***
222152 
222153 
222154 // End of memberFunctionString
222155 // Start of memberFunctionString
222156 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
222157 
222158  // the generated cast function
222159  // friend ROSE_DLL_API SgUpirLoopParallelStatement* isSgUpirLoopParallelStatement ( SgNode* s );
222160 
222162 
222163 
222164 // End of memberFunctionString
222165 // Start of memberFunctionString
222166 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
222167 
222168  void post_construction_initialization() override;
222169 
222170 
222171 // End of memberFunctionString
222172 
222173  public:
222174  SgStatement* get_worksharing() const;
222175  void set_worksharing(SgStatement* worksharing);
222176 
222177  public:
222178  SgStatement* get_simd() const;
222179  void set_simd(SgStatement* simd);
222180 
222181  public:
222182  SgStatement* get_taskloop() const;
222183  void set_taskloop(SgStatement* taskloop);
222184 
222185  public:
222186  SgStatement* get_loop() const;
222187  void set_loop(SgStatement* loop);
222188 
222189 
222190  public:
222191  virtual ~SgUpirLoopParallelStatement();
222192 
222193 
222194  public:
222195  SgUpirLoopParallelStatement(Sg_File_Info* startOfConstruct );
222197 
222198  protected:
222199 // Start of memberFunctionString
222200 SgStatement* p_worksharing;
222201 
222202 // End of memberFunctionString
222203 // Start of memberFunctionString
222204 SgStatement* p_simd;
222205 
222206 // End of memberFunctionString
222207 // Start of memberFunctionString
222208 SgStatement* p_taskloop;
222209 
222210 // End of memberFunctionString
222211 // Start of memberFunctionString
222212 SgStatement* p_loop;
222213 
222214 // End of memberFunctionString
222215 
222216 
222217 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
222218 
222219 
222220  };
222221 #endif
222222 
222223 // postdeclarations for SgUpirLoopParallelStatement
222224 
222225 /* #line 222226 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
222226 
222227 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
222228 
222229 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
222230 
222231 
222232 /* #line 222233 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
222233 
222234 
222235 
222236 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
222237 
222238 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
222239 // This code is automatically generated for each
222240 // terminal and non-terminal within the defined
222241 // grammar. There is a simple way to change the
222242 // code to fix bugs etc. See the ROSE README file
222243 // for directions.
222244 
222245 // tps: (02/22/2010): Adding DLL export requirements
222246 #include "rosedll.h"
222247 
222248 // predeclarations for SgUpirWorksharingStatement
222249 
222250 /* #line 222251 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
222251 
222252 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
222253 
222254 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
222255 
222256 #if 1
222257 // Class Definition for SgUpirWorksharingStatement
222259  {
222260  public:
222261 
222262 
222263 /* #line 222264 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
222264 
222265  virtual SgNode* copy ( SgCopyHelp& help) const override;
222266 // Start of memberFunctionString
222267 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
222268 
222269 // *** COMMON CODE SECTION BEGINS HERE ***
222270 
222271  public:
222272 
222273  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
222274  // and not required which is required to match the other aspects of the copy mechanism code generation.
222275  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
222276  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
222277  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
222278  // virtual SgNode* copy ( const SgCopyHelp & help) const;
222279 
222281  virtual std::string class_name() const override;
222282 
222284  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
222285 
222287  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
222288  // static const VariantT static_variant = V_SgUpirWorksharingStatement;
222289  enum { static_variant = V_SgUpirWorksharingStatement };
222290 
222291  /* the generated cast function */
222293  ROSE_DLL_API friend SgUpirWorksharingStatement* isSgUpirWorksharingStatement( SgNode * s );
222294 
222296  ROSE_DLL_API friend const SgUpirWorksharingStatement* isSgUpirWorksharingStatement( const SgNode * s );
222297 
222298  // ******************************************
222299  // * Memory Pool / New / Delete
222300  // ******************************************
222301 
222302  public:
222304  static const unsigned pool_size; //
222306  static std::vector<unsigned char *> pools; //
222308  static SgUpirWorksharingStatement * next_node; //
222309 
222311  static unsigned long initializeStorageClassArray(SgUpirWorksharingStatementStorageClass *); //
222312 
222314  static void clearMemoryPool(); //
222315  static void deleteMemoryPool(); //
222316 
222318  static void extendMemoryPoolForFileIO(); //
222319 
222321  static SgUpirWorksharingStatement * getPointerFromGlobalIndex(unsigned long); //
222323  static SgUpirWorksharingStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
222324 
222326  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
222328  static void resetValidFreepointers(); //
222330  static unsigned long getNumberOfLastValidPointer(); //
222331 
222332 
222333 #if defined(INLINE_FUNCTIONS)
222334 
222335  inline void *operator new (size_t size);
222336 #else
222337 
222338  void *operator new (size_t size);
222339 #endif
222340 
222341  void operator delete (void* pointer, size_t size);
222342 
222343  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
222344  void operator delete (void* pointer)
222345  {
222346  // This is the generated delete operator...
222347  SgUpirWorksharingStatement::operator delete (pointer,sizeof(SgUpirWorksharingStatement));
222348  }
222349 
222351  static size_t numberOfNodes();
222352 
222354  static size_t memoryUsage();
222355 
222356  // End of scope which started in IR nodes specific code
222357  /* */
222358 
222359  /* name Internal Functions
222360  \brief Internal functions ... incomplete-documentation
222361 
222362  These functions have been made public as part of the design, but they are suggested for internal use
222363  or by particularly knowledgeable users for specialized tools or applications.
222364 
222365  \internal We could not make these private because they are required by user for special purposes. And
222366  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
222367 
222368  */
222369 
222370  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
222371  // overridden in every class by *generated* implementation
222373  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
222374  // MS: 06/28/02 container of names of variables or container indices
222375  // used used in the traversal to access AST successor nodes
222376  // overridden in every class by *generated* implementation
222379  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
222380 
222381  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
222382  // than all the vector copies. The implementation for these functions is generated for each class.
222384  virtual size_t get_numberOfTraversalSuccessors() override;
222386  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
222388  virtual size_t get_childIndex(SgNode *child) override;
222389 
222390 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
222391  // MS: 08/16/2002 method for generating RTI information
222393  virtual RTIReturnType roseRTI() override;
222394 #endif
222395  /* */
222396 
222397 
222398 
222399  /* name Deprecated Functions
222400  \brief Deprecated functions ... incomplete-documentation
222401 
222402  These functions have been deprecated from use.
222403  */
222404  /* */
222405 
222407  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
222408 
222409  // JJW (10/16/2008): Changed to a single function in Node.code, and put
222410  // getVariant() in #if 0 block to prevent confusing Doxygen
222411 #if 0
222412 
222413  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
222415  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
222416 #endif
222417  /* */
222418 
222419 
222420 
222421 
222422  public:
222423  /* name Traversal Support Functions
222424  \brief Traversal support functions ... incomplete-documentation
222425 
222426  These functions have been made public as part of the design, but they are suggested for internal use
222427  or by particularly knowledgable users for specialized tools or applications.
222428  */
222429  /* */
222430 
222431  // DQ (11/26/2005): Support for visitor pattern mechanims
222432  // (inferior to ROSE traversal mechanism, experimental).
222436 
222437  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
222439  virtual void accept (ROSE_VisitorPattern & visitor) override;
222440 
222441  // DQ (12/26/2005): Support for traversal based on the memory pool
222444  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
222445 
222448  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
222449 
222450  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
222451  // This traversal helps support internal tools that call static member functions.
222452  // note: this function operates on the memory pools.
222455  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
222456  /* */
222457 
222458 
222459  public:
222460  /* name Memory Allocation Functions
222461  \brief Memory allocations functions ... incomplete-documentation
222462 
222463  These functions have been made public as part of the design, but they are suggested for internal use
222464  or by particularly knowledgable users for specialized tools or applications.
222465  */
222466  /* */
222467 
222478  virtual bool isInMemoryPool() override;
222479 
222490  virtual void checkDataMemberPointersIfInMemoryPool() override;
222491 
222492  // DQ (4/30/2006): Modified to be a const function.
222507  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
222508 
222518  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
222519 
222531  virtual long getChildIndex( SgNode* childNode ) const override;
222532 
222533  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
222534  // comment here (changed to be a C style comment and not be a doxygen comment).
222535  /* \brief Constructor for use by AST File I/O Mechanism
222536 
222537  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
222538  which obtained via fast binary file I/O from disk.
222539  */
222540  // SgUpirWorksharingStatement( SgUpirWorksharingStatementStorageClass& source );
222541 
222542 
222543 
222544 
222545 
222546  // JH (10/24/2005): methods added to support the ast file IO
222547  private:
222548 
222549  /* name AST Memory Allocation Support Functions
222550  \brief Memory allocations support....
222551 
222552  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
222553  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
222554  and support the AST File I/O Mechanism.
222555  */
222556  /* */
222557 
222558  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
222559  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
222560  that I use the same type everywhere, if any changes are made. THe second one declares the type
222561  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
222562  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
222563  a correspinding one in the AST_FILE_IO class!
222564  */
222565  // DQ (9/2/2015): This typedef is no longer used, we can't define the
222566  // comment here (changed to be a C style comment and not be a doxygen comment).
222567  /* \brief Typedef used for low level memory access.
222568  */
222569  // typedef unsigned char* TestType;
222570 
222571  // DQ (9/2/2015): This typedef is no longer used, we can't define the
222572  // comment here (changed to be a C style comment and not be a doxygen comment).
222573  /* \brief Typedef used to hold memory addresses as values.
222574  */
222575  // typedef unsigned long AddressType;
222576 
222577 
222578 
222579  // necessary, to have direct access to the p_freepointer and the private methods !
222581  friend class AST_FILE_IO;
222582 
222584  friend class SgUpirWorksharingStatementStorageClass;
222585 
222587  friend class AstSpecificDataManagingClass;
222588 
222590  friend class AstSpecificDataManagingClassStorageClass;
222591 
222592  public:
222594  SgUpirWorksharingStatement( const SgUpirWorksharingStatementStorageClass& source );
222595 
222596  // private: // JJW hack
222597  /*
222598  name AST Memory Allocation Support Variables
222599  Memory allocations support variables
222600 
222601  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
222602  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
222603  and support the AST File I/O Mechanism.
222604  */
222605  /* */
222606 
222607  public:
222608 
222609  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
222610  // to current node (so that it will work cleanly with build functions to specify patterns).
222611  // virtual SgNode* addRegExpAttribute();
222618 
222619 // *** COMMON CODE SECTION ENDS HERE ***
222620 
222621 
222622 // End of memberFunctionString
222623 // Start of memberFunctionString
222624 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
222625 
222626  // the generated cast function
222627  // friend ROSE_DLL_API SgUpirWorksharingStatement* isSgUpirWorksharingStatement ( SgNode* s );
222628 
222630 
222631 
222632 // End of memberFunctionString
222633 // Start of memberFunctionString
222634 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
222635 
222636  void post_construction_initialization() override;
222637 
222638 
222639 // End of memberFunctionString
222640 
222641 
222642  public:
222643  virtual ~SgUpirWorksharingStatement();
222644 
222645 
222646  public:
222647  SgUpirWorksharingStatement(Sg_File_Info* startOfConstruct );
222649 
222650  protected:
222651 
222652 
222653 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
222654 
222655 
222656  };
222657 #endif
222658 
222659 // postdeclarations for SgUpirWorksharingStatement
222660 
222661 /* #line 222662 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
222662 
222663 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
222664 
222665 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
222666 
222667 
222668 /* #line 222669 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
222669 
222670 
222671 
222672 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
222673 
222674 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
222675 // This code is automatically generated for each
222676 // terminal and non-terminal within the defined
222677 // grammar. There is a simple way to change the
222678 // code to fix bugs etc. See the ROSE README file
222679 // for directions.
222680 
222681 // tps: (02/22/2010): Adding DLL export requirements
222682 #include "rosedll.h"
222683 
222684 // predeclarations for SgUpirSimdStatement
222685 
222686 /* #line 222687 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
222687 
222688 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
222689 
222690 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
222691 
222692 #if 1
222693 // Class Definition for SgUpirSimdStatement
222694 class ROSE_DLL_API SgUpirSimdStatement : public SgUpirFieldStatement
222695  {
222696  public:
222697 
222698 
222699 /* #line 222700 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
222700 
222701  virtual SgNode* copy ( SgCopyHelp& help) const override;
222702 // Start of memberFunctionString
222703 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
222704 
222705 // *** COMMON CODE SECTION BEGINS HERE ***
222706 
222707  public:
222708 
222709  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
222710  // and not required which is required to match the other aspects of the copy mechanism code generation.
222711  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
222712  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
222713  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
222714  // virtual SgNode* copy ( const SgCopyHelp & help) const;
222715 
222717  virtual std::string class_name() const override;
222718 
222720  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
222721 
222723  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
222724  // static const VariantT static_variant = V_SgUpirSimdStatement;
222725  enum { static_variant = V_SgUpirSimdStatement };
222726 
222727  /* the generated cast function */
222729  ROSE_DLL_API friend SgUpirSimdStatement* isSgUpirSimdStatement( SgNode * s );
222730 
222732  ROSE_DLL_API friend const SgUpirSimdStatement* isSgUpirSimdStatement( const SgNode * s );
222733 
222734  // ******************************************
222735  // * Memory Pool / New / Delete
222736  // ******************************************
222737 
222738  public:
222740  static const unsigned pool_size; //
222742  static std::vector<unsigned char *> pools; //
222744  static SgUpirSimdStatement * next_node; //
222745 
222747  static unsigned long initializeStorageClassArray(SgUpirSimdStatementStorageClass *); //
222748 
222750  static void clearMemoryPool(); //
222751  static void deleteMemoryPool(); //
222752 
222754  static void extendMemoryPoolForFileIO(); //
222755 
222757  static SgUpirSimdStatement * getPointerFromGlobalIndex(unsigned long); //
222759  static SgUpirSimdStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
222760 
222762  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
222764  static void resetValidFreepointers(); //
222766  static unsigned long getNumberOfLastValidPointer(); //
222767 
222768 
222769 #if defined(INLINE_FUNCTIONS)
222770 
222771  inline void *operator new (size_t size);
222772 #else
222773 
222774  void *operator new (size_t size);
222775 #endif
222776 
222777  void operator delete (void* pointer, size_t size);
222778 
222779  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
222780  void operator delete (void* pointer)
222781  {
222782  // This is the generated delete operator...
222783  SgUpirSimdStatement::operator delete (pointer,sizeof(SgUpirSimdStatement));
222784  }
222785 
222787  static size_t numberOfNodes();
222788 
222790  static size_t memoryUsage();
222791 
222792  // End of scope which started in IR nodes specific code
222793  /* */
222794 
222795  /* name Internal Functions
222796  \brief Internal functions ... incomplete-documentation
222797 
222798  These functions have been made public as part of the design, but they are suggested for internal use
222799  or by particularly knowledgeable users for specialized tools or applications.
222800 
222801  \internal We could not make these private because they are required by user for special purposes. And
222802  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
222803 
222804  */
222805 
222806  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
222807  // overridden in every class by *generated* implementation
222809  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
222810  // MS: 06/28/02 container of names of variables or container indices
222811  // used used in the traversal to access AST successor nodes
222812  // overridden in every class by *generated* implementation
222815  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
222816 
222817  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
222818  // than all the vector copies. The implementation for these functions is generated for each class.
222820  virtual size_t get_numberOfTraversalSuccessors() override;
222822  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
222824  virtual size_t get_childIndex(SgNode *child) override;
222825 
222826 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
222827  // MS: 08/16/2002 method for generating RTI information
222829  virtual RTIReturnType roseRTI() override;
222830 #endif
222831  /* */
222832 
222833 
222834 
222835  /* name Deprecated Functions
222836  \brief Deprecated functions ... incomplete-documentation
222837 
222838  These functions have been deprecated from use.
222839  */
222840  /* */
222841 
222843  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
222844 
222845  // JJW (10/16/2008): Changed to a single function in Node.code, and put
222846  // getVariant() in #if 0 block to prevent confusing Doxygen
222847 #if 0
222848 
222849  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
222851  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
222852 #endif
222853  /* */
222854 
222855 
222856 
222857 
222858  public:
222859  /* name Traversal Support Functions
222860  \brief Traversal support functions ... incomplete-documentation
222861 
222862  These functions have been made public as part of the design, but they are suggested for internal use
222863  or by particularly knowledgable users for specialized tools or applications.
222864  */
222865  /* */
222866 
222867  // DQ (11/26/2005): Support for visitor pattern mechanims
222868  // (inferior to ROSE traversal mechanism, experimental).
222872 
222873  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
222875  virtual void accept (ROSE_VisitorPattern & visitor) override;
222876 
222877  // DQ (12/26/2005): Support for traversal based on the memory pool
222880  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
222881 
222884  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
222885 
222886  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
222887  // This traversal helps support internal tools that call static member functions.
222888  // note: this function operates on the memory pools.
222891  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
222892  /* */
222893 
222894 
222895  public:
222896  /* name Memory Allocation Functions
222897  \brief Memory allocations functions ... incomplete-documentation
222898 
222899  These functions have been made public as part of the design, but they are suggested for internal use
222900  or by particularly knowledgable users for specialized tools or applications.
222901  */
222902  /* */
222903 
222914  virtual bool isInMemoryPool() override;
222915 
222926  virtual void checkDataMemberPointersIfInMemoryPool() override;
222927 
222928  // DQ (4/30/2006): Modified to be a const function.
222943  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
222944 
222954  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
222955 
222967  virtual long getChildIndex( SgNode* childNode ) const override;
222968 
222969  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
222970  // comment here (changed to be a C style comment and not be a doxygen comment).
222971  /* \brief Constructor for use by AST File I/O Mechanism
222972 
222973  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
222974  which obtained via fast binary file I/O from disk.
222975  */
222976  // SgUpirSimdStatement( SgUpirSimdStatementStorageClass& source );
222977 
222978 
222979 
222980 
222981 
222982  // JH (10/24/2005): methods added to support the ast file IO
222983  private:
222984 
222985  /* name AST Memory Allocation Support Functions
222986  \brief Memory allocations support....
222987 
222988  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
222989  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
222990  and support the AST File I/O Mechanism.
222991  */
222992  /* */
222993 
222994  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
222995  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
222996  that I use the same type everywhere, if any changes are made. THe second one declares the type
222997  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
222998  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
222999  a correspinding one in the AST_FILE_IO class!
223000  */
223001  // DQ (9/2/2015): This typedef is no longer used, we can't define the
223002  // comment here (changed to be a C style comment and not be a doxygen comment).
223003  /* \brief Typedef used for low level memory access.
223004  */
223005  // typedef unsigned char* TestType;
223006 
223007  // DQ (9/2/2015): This typedef is no longer used, we can't define the
223008  // comment here (changed to be a C style comment and not be a doxygen comment).
223009  /* \brief Typedef used to hold memory addresses as values.
223010  */
223011  // typedef unsigned long AddressType;
223012 
223013 
223014 
223015  // necessary, to have direct access to the p_freepointer and the private methods !
223017  friend class AST_FILE_IO;
223018 
223020  friend class SgUpirSimdStatementStorageClass;
223021 
223023  friend class AstSpecificDataManagingClass;
223024 
223026  friend class AstSpecificDataManagingClassStorageClass;
223027 
223028  public:
223030  SgUpirSimdStatement( const SgUpirSimdStatementStorageClass& source );
223031 
223032  // private: // JJW hack
223033  /*
223034  name AST Memory Allocation Support Variables
223035  Memory allocations support variables
223036 
223037  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
223038  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
223039  and support the AST File I/O Mechanism.
223040  */
223041  /* */
223042 
223043  public:
223044 
223045  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
223046  // to current node (so that it will work cleanly with build functions to specify patterns).
223047  // virtual SgNode* addRegExpAttribute();
223054 
223055 // *** COMMON CODE SECTION ENDS HERE ***
223056 
223057 
223058 // End of memberFunctionString
223059 // Start of memberFunctionString
223060 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
223061 
223062  // the generated cast function
223063  // friend ROSE_DLL_API SgUpirSimdStatement* isSgUpirSimdStatement ( SgNode* s );
223064 
223066 
223067 
223068 // End of memberFunctionString
223069 // Start of memberFunctionString
223070 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
223071 
223072  void post_construction_initialization() override;
223073 
223074 
223075 // End of memberFunctionString
223076 
223077 
223078  public:
223079  virtual ~SgUpirSimdStatement();
223080 
223081 
223082  public:
223083  SgUpirSimdStatement(Sg_File_Info* startOfConstruct );
223084  SgUpirSimdStatement();
223085 
223086  protected:
223087 
223088 
223089 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
223090 
223091 
223092  };
223093 #endif
223094 
223095 // postdeclarations for SgUpirSimdStatement
223096 
223097 /* #line 223098 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
223098 
223099 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
223100 
223101 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
223102 
223103 
223104 /* #line 223105 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
223105 
223106 
223107 
223108 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
223109 
223110 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
223111 // This code is automatically generated for each
223112 // terminal and non-terminal within the defined
223113 // grammar. There is a simple way to change the
223114 // code to fix bugs etc. See the ROSE README file
223115 // for directions.
223116 
223117 // tps: (02/22/2010): Adding DLL export requirements
223118 #include "rosedll.h"
223119 
223120 // predeclarations for SgOmpDeclareMapperStatement
223121 
223122 /* #line 223123 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
223123 
223124 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
223125 
223126 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
223127 
223128 #if 1
223129 // Class Definition for SgOmpDeclareMapperStatement
223131  {
223132  public:
223133 
223134 
223135 /* #line 223136 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
223136 
223137  virtual SgNode* copy ( SgCopyHelp& help) const override;
223138 // Start of memberFunctionString
223139 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
223140 
223141 // *** COMMON CODE SECTION BEGINS HERE ***
223142 
223143  public:
223144 
223145  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
223146  // and not required which is required to match the other aspects of the copy mechanism code generation.
223147  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
223148  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
223149  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
223150  // virtual SgNode* copy ( const SgCopyHelp & help) const;
223151 
223153  virtual std::string class_name() const override;
223154 
223156  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
223157 
223159  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
223160  // static const VariantT static_variant = V_SgOmpDeclareMapperStatement;
223161  enum { static_variant = V_SgOmpDeclareMapperStatement };
223162 
223163  /* the generated cast function */
223165  ROSE_DLL_API friend SgOmpDeclareMapperStatement* isSgOmpDeclareMapperStatement( SgNode * s );
223166 
223168  ROSE_DLL_API friend const SgOmpDeclareMapperStatement* isSgOmpDeclareMapperStatement( const SgNode * s );
223169 
223170  // ******************************************
223171  // * Memory Pool / New / Delete
223172  // ******************************************
223173 
223174  public:
223176  static const unsigned pool_size; //
223178  static std::vector<unsigned char *> pools; //
223180  static SgOmpDeclareMapperStatement * next_node; //
223181 
223183  static unsigned long initializeStorageClassArray(SgOmpDeclareMapperStatementStorageClass *); //
223184 
223186  static void clearMemoryPool(); //
223187  static void deleteMemoryPool(); //
223188 
223190  static void extendMemoryPoolForFileIO(); //
223191 
223193  static SgOmpDeclareMapperStatement * getPointerFromGlobalIndex(unsigned long); //
223195  static SgOmpDeclareMapperStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
223196 
223198  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
223200  static void resetValidFreepointers(); //
223202  static unsigned long getNumberOfLastValidPointer(); //
223203 
223204 
223205 #if defined(INLINE_FUNCTIONS)
223206 
223207  inline void *operator new (size_t size);
223208 #else
223209 
223210  void *operator new (size_t size);
223211 #endif
223212 
223213  void operator delete (void* pointer, size_t size);
223214 
223215  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
223216  void operator delete (void* pointer)
223217  {
223218  // This is the generated delete operator...
223219  SgOmpDeclareMapperStatement::operator delete (pointer,sizeof(SgOmpDeclareMapperStatement));
223220  }
223221 
223223  static size_t numberOfNodes();
223224 
223226  static size_t memoryUsage();
223227 
223228  // End of scope which started in IR nodes specific code
223229  /* */
223230 
223231  /* name Internal Functions
223232  \brief Internal functions ... incomplete-documentation
223233 
223234  These functions have been made public as part of the design, but they are suggested for internal use
223235  or by particularly knowledgeable users for specialized tools or applications.
223236 
223237  \internal We could not make these private because they are required by user for special purposes. And
223238  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
223239 
223240  */
223241 
223242  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
223243  // overridden in every class by *generated* implementation
223245  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
223246  // MS: 06/28/02 container of names of variables or container indices
223247  // used used in the traversal to access AST successor nodes
223248  // overridden in every class by *generated* implementation
223251  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
223252 
223253  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
223254  // than all the vector copies. The implementation for these functions is generated for each class.
223256  virtual size_t get_numberOfTraversalSuccessors() override;
223258  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
223260  virtual size_t get_childIndex(SgNode *child) override;
223261 
223262 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
223263  // MS: 08/16/2002 method for generating RTI information
223265  virtual RTIReturnType roseRTI() override;
223266 #endif
223267  /* */
223268 
223269 
223270 
223271  /* name Deprecated Functions
223272  \brief Deprecated functions ... incomplete-documentation
223273 
223274  These functions have been deprecated from use.
223275  */
223276  /* */
223277 
223279  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
223280 
223281  // JJW (10/16/2008): Changed to a single function in Node.code, and put
223282  // getVariant() in #if 0 block to prevent confusing Doxygen
223283 #if 0
223284 
223285  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
223287  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
223288 #endif
223289  /* */
223290 
223291 
223292 
223293 
223294  public:
223295  /* name Traversal Support Functions
223296  \brief Traversal support functions ... incomplete-documentation
223297 
223298  These functions have been made public as part of the design, but they are suggested for internal use
223299  or by particularly knowledgable users for specialized tools or applications.
223300  */
223301  /* */
223302 
223303  // DQ (11/26/2005): Support for visitor pattern mechanims
223304  // (inferior to ROSE traversal mechanism, experimental).
223308 
223309  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
223311  virtual void accept (ROSE_VisitorPattern & visitor) override;
223312 
223313  // DQ (12/26/2005): Support for traversal based on the memory pool
223316  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
223317 
223320  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
223321 
223322  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
223323  // This traversal helps support internal tools that call static member functions.
223324  // note: this function operates on the memory pools.
223327  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
223328  /* */
223329 
223330 
223331  public:
223332  /* name Memory Allocation Functions
223333  \brief Memory allocations functions ... incomplete-documentation
223334 
223335  These functions have been made public as part of the design, but they are suggested for internal use
223336  or by particularly knowledgable users for specialized tools or applications.
223337  */
223338  /* */
223339 
223350  virtual bool isInMemoryPool() override;
223351 
223362  virtual void checkDataMemberPointersIfInMemoryPool() override;
223363 
223364  // DQ (4/30/2006): Modified to be a const function.
223379  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
223380 
223390  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
223391 
223403  virtual long getChildIndex( SgNode* childNode ) const override;
223404 
223405  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
223406  // comment here (changed to be a C style comment and not be a doxygen comment).
223407  /* \brief Constructor for use by AST File I/O Mechanism
223408 
223409  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
223410  which obtained via fast binary file I/O from disk.
223411  */
223412  // SgOmpDeclareMapperStatement( SgOmpDeclareMapperStatementStorageClass& source );
223413 
223414 
223415 
223416 
223417 
223418  // JH (10/24/2005): methods added to support the ast file IO
223419  private:
223420 
223421  /* name AST Memory Allocation Support Functions
223422  \brief Memory allocations support....
223423 
223424  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
223425  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
223426  and support the AST File I/O Mechanism.
223427  */
223428  /* */
223429 
223430  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
223431  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
223432  that I use the same type everywhere, if any changes are made. THe second one declares the type
223433  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
223434  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
223435  a correspinding one in the AST_FILE_IO class!
223436  */
223437  // DQ (9/2/2015): This typedef is no longer used, we can't define the
223438  // comment here (changed to be a C style comment and not be a doxygen comment).
223439  /* \brief Typedef used for low level memory access.
223440  */
223441  // typedef unsigned char* TestType;
223442 
223443  // DQ (9/2/2015): This typedef is no longer used, we can't define the
223444  // comment here (changed to be a C style comment and not be a doxygen comment).
223445  /* \brief Typedef used to hold memory addresses as values.
223446  */
223447  // typedef unsigned long AddressType;
223448 
223449 
223450 
223451  // necessary, to have direct access to the p_freepointer and the private methods !
223453  friend class AST_FILE_IO;
223454 
223456  friend class SgOmpDeclareMapperStatementStorageClass;
223457 
223459  friend class AstSpecificDataManagingClass;
223460 
223462  friend class AstSpecificDataManagingClassStorageClass;
223463 
223464  public:
223466  SgOmpDeclareMapperStatement( const SgOmpDeclareMapperStatementStorageClass& source );
223467 
223468  // private: // JJW hack
223469  /*
223470  name AST Memory Allocation Support Variables
223471  Memory allocations support variables
223472 
223473  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
223474  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
223475  and support the AST File I/O Mechanism.
223476  */
223477  /* */
223478 
223479  public:
223480 
223481  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
223482  // to current node (so that it will work cleanly with build functions to specify patterns).
223483  // virtual SgNode* addRegExpAttribute();
223490 
223491 // *** COMMON CODE SECTION ENDS HERE ***
223492 
223493 
223494 // End of memberFunctionString
223495 // Start of memberFunctionString
223496 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
223497 
223498  // the generated cast function
223499  // friend ROSE_DLL_API SgOmpDeclareMapperStatement* isSgOmpDeclareMapperStatement ( SgNode* s );
223500 
223502 
223503 
223504 // End of memberFunctionString
223505 // Start of memberFunctionString
223506 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
223507 
223508  void post_construction_initialization() override;
223509 
223510 
223511 // End of memberFunctionString
223512 
223513 
223514  public:
223515  virtual ~SgOmpDeclareMapperStatement();
223516 
223517 
223518  public:
223519  SgOmpDeclareMapperStatement(Sg_File_Info* startOfConstruct );
223521 
223522  protected:
223523 
223524 
223525 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
223526 
223527 
223528  };
223529 #endif
223530 
223531 // postdeclarations for SgOmpDeclareMapperStatement
223532 
223533 /* #line 223534 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
223534 
223535 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
223536 
223537 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
223538 
223539 
223540 /* #line 223541 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
223541 
223542 
223543 
223544 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
223545 
223546 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
223547 // This code is automatically generated for each
223548 // terminal and non-terminal within the defined
223549 // grammar. There is a simple way to change the
223550 // code to fix bugs etc. See the ROSE README file
223551 // for directions.
223552 
223553 // tps: (02/22/2010): Adding DLL export requirements
223554 #include "rosedll.h"
223555 
223556 // predeclarations for SgSequenceStatement
223557 
223558 /* #line 223559 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
223559 
223560 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
223561 
223562 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
223563 
223564 #if 1
223565 // Class Definition for SgSequenceStatement
223566 class ROSE_DLL_API SgSequenceStatement : public SgStatement
223567  {
223568  public:
223569 
223570 
223571 /* #line 223572 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
223572 
223573  virtual SgNode* copy ( SgCopyHelp& help) const override;
223574 // Start of memberFunctionString
223575 /* #line 3749 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
223576 
223577 
223578 
223579 // End of memberFunctionString
223580 // Start of memberFunctionString
223581 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
223582 
223583 // *** COMMON CODE SECTION BEGINS HERE ***
223584 
223585  public:
223586 
223587  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
223588  // and not required which is required to match the other aspects of the copy mechanism code generation.
223589  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
223590  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
223591  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
223592  // virtual SgNode* copy ( const SgCopyHelp & help) const;
223593 
223595  virtual std::string class_name() const override;
223596 
223598  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
223599 
223601  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
223602  // static const VariantT static_variant = V_SgSequenceStatement;
223603  enum { static_variant = V_SgSequenceStatement };
223604 
223605  /* the generated cast function */
223607  ROSE_DLL_API friend SgSequenceStatement* isSgSequenceStatement( SgNode * s );
223608 
223610  ROSE_DLL_API friend const SgSequenceStatement* isSgSequenceStatement( const SgNode * s );
223611 
223612  // ******************************************
223613  // * Memory Pool / New / Delete
223614  // ******************************************
223615 
223616  public:
223618  static const unsigned pool_size; //
223620  static std::vector<unsigned char *> pools; //
223622  static SgSequenceStatement * next_node; //
223623 
223625  static unsigned long initializeStorageClassArray(SgSequenceStatementStorageClass *); //
223626 
223628  static void clearMemoryPool(); //
223629  static void deleteMemoryPool(); //
223630 
223632  static void extendMemoryPoolForFileIO(); //
223633 
223635  static SgSequenceStatement * getPointerFromGlobalIndex(unsigned long); //
223637  static SgSequenceStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
223638 
223640  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
223642  static void resetValidFreepointers(); //
223644  static unsigned long getNumberOfLastValidPointer(); //
223645 
223646 
223647 #if defined(INLINE_FUNCTIONS)
223648 
223649  inline void *operator new (size_t size);
223650 #else
223651 
223652  void *operator new (size_t size);
223653 #endif
223654 
223655  void operator delete (void* pointer, size_t size);
223656 
223657  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
223658  void operator delete (void* pointer)
223659  {
223660  // This is the generated delete operator...
223661  SgSequenceStatement::operator delete (pointer,sizeof(SgSequenceStatement));
223662  }
223663 
223665  static size_t numberOfNodes();
223666 
223668  static size_t memoryUsage();
223669 
223670  // End of scope which started in IR nodes specific code
223671  /* */
223672 
223673  /* name Internal Functions
223674  \brief Internal functions ... incomplete-documentation
223675 
223676  These functions have been made public as part of the design, but they are suggested for internal use
223677  or by particularly knowledgeable users for specialized tools or applications.
223678 
223679  \internal We could not make these private because they are required by user for special purposes. And
223680  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
223681 
223682  */
223683 
223684  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
223685  // overridden in every class by *generated* implementation
223687  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
223688  // MS: 06/28/02 container of names of variables or container indices
223689  // used used in the traversal to access AST successor nodes
223690  // overridden in every class by *generated* implementation
223693  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
223694 
223695  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
223696  // than all the vector copies. The implementation for these functions is generated for each class.
223698  virtual size_t get_numberOfTraversalSuccessors() override;
223700  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
223702  virtual size_t get_childIndex(SgNode *child) override;
223703 
223704 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
223705  // MS: 08/16/2002 method for generating RTI information
223707  virtual RTIReturnType roseRTI() override;
223708 #endif
223709  /* */
223710 
223711 
223712 
223713  /* name Deprecated Functions
223714  \brief Deprecated functions ... incomplete-documentation
223715 
223716  These functions have been deprecated from use.
223717  */
223718  /* */
223719 
223721  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
223722 
223723  // JJW (10/16/2008): Changed to a single function in Node.code, and put
223724  // getVariant() in #if 0 block to prevent confusing Doxygen
223725 #if 0
223726 
223727  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
223729  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
223730 #endif
223731  /* */
223732 
223733 
223734 
223735 
223736  public:
223737  /* name Traversal Support Functions
223738  \brief Traversal support functions ... incomplete-documentation
223739 
223740  These functions have been made public as part of the design, but they are suggested for internal use
223741  or by particularly knowledgable users for specialized tools or applications.
223742  */
223743  /* */
223744 
223745  // DQ (11/26/2005): Support for visitor pattern mechanims
223746  // (inferior to ROSE traversal mechanism, experimental).
223750 
223751  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
223753  virtual void accept (ROSE_VisitorPattern & visitor) override;
223754 
223755  // DQ (12/26/2005): Support for traversal based on the memory pool
223758  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
223759 
223762  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
223763 
223764  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
223765  // This traversal helps support internal tools that call static member functions.
223766  // note: this function operates on the memory pools.
223769  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
223770  /* */
223771 
223772 
223773  public:
223774  /* name Memory Allocation Functions
223775  \brief Memory allocations functions ... incomplete-documentation
223776 
223777  These functions have been made public as part of the design, but they are suggested for internal use
223778  or by particularly knowledgable users for specialized tools or applications.
223779  */
223780  /* */
223781 
223792  virtual bool isInMemoryPool() override;
223793 
223804  virtual void checkDataMemberPointersIfInMemoryPool() override;
223805 
223806  // DQ (4/30/2006): Modified to be a const function.
223821  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
223822 
223832  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
223833 
223845  virtual long getChildIndex( SgNode* childNode ) const override;
223846 
223847  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
223848  // comment here (changed to be a C style comment and not be a doxygen comment).
223849  /* \brief Constructor for use by AST File I/O Mechanism
223850 
223851  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
223852  which obtained via fast binary file I/O from disk.
223853  */
223854  // SgSequenceStatement( SgSequenceStatementStorageClass& source );
223855 
223856 
223857 
223858 
223859 
223860  // JH (10/24/2005): methods added to support the ast file IO
223861  private:
223862 
223863  /* name AST Memory Allocation Support Functions
223864  \brief Memory allocations support....
223865 
223866  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
223867  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
223868  and support the AST File I/O Mechanism.
223869  */
223870  /* */
223871 
223872  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
223873  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
223874  that I use the same type everywhere, if any changes are made. THe second one declares the type
223875  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
223876  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
223877  a correspinding one in the AST_FILE_IO class!
223878  */
223879  // DQ (9/2/2015): This typedef is no longer used, we can't define the
223880  // comment here (changed to be a C style comment and not be a doxygen comment).
223881  /* \brief Typedef used for low level memory access.
223882  */
223883  // typedef unsigned char* TestType;
223884 
223885  // DQ (9/2/2015): This typedef is no longer used, we can't define the
223886  // comment here (changed to be a C style comment and not be a doxygen comment).
223887  /* \brief Typedef used to hold memory addresses as values.
223888  */
223889  // typedef unsigned long AddressType;
223890 
223891 
223892 
223893  // necessary, to have direct access to the p_freepointer and the private methods !
223895  friend class AST_FILE_IO;
223896 
223898  friend class SgSequenceStatementStorageClass;
223899 
223901  friend class AstSpecificDataManagingClass;
223902 
223904  friend class AstSpecificDataManagingClassStorageClass;
223905 
223906  public:
223908  SgSequenceStatement( const SgSequenceStatementStorageClass& source );
223909 
223910  // private: // JJW hack
223911  /*
223912  name AST Memory Allocation Support Variables
223913  Memory allocations support variables
223914 
223915  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
223916  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
223917  and support the AST File I/O Mechanism.
223918  */
223919  /* */
223920 
223921  public:
223922 
223923  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
223924  // to current node (so that it will work cleanly with build functions to specify patterns).
223925  // virtual SgNode* addRegExpAttribute();
223932 
223933 // *** COMMON CODE SECTION ENDS HERE ***
223934 
223935 
223936 // End of memberFunctionString
223937 // Start of memberFunctionString
223938 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
223939 
223940  // the generated cast function
223941  // friend ROSE_DLL_API SgSequenceStatement* isSgSequenceStatement ( SgNode* s );
223942 
223943  typedef SgStatement base_node_type;
223944 
223945 
223946 // End of memberFunctionString
223947 // Start of memberFunctionString
223948 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
223949 
223950  void post_construction_initialization() override;
223951 
223952 
223953 // End of memberFunctionString
223954 
223955 
223956  public:
223957  virtual ~SgSequenceStatement();
223958 
223959 
223960  public:
223961  SgSequenceStatement(Sg_File_Info* startOfConstruct );
223962  SgSequenceStatement();
223963 
223964  protected:
223965 
223966 
223967 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
223968 
223969 
223970  };
223971 #endif
223972 
223973 // postdeclarations for SgSequenceStatement
223974 
223975 /* #line 223976 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
223976 
223977 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
223978 
223979 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
223980 
223981 
223982 /* #line 223983 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
223983 
223984 
223985 
223986 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
223987 
223988 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
223989 // This code is automatically generated for each
223990 // terminal and non-terminal within the defined
223991 // grammar. There is a simple way to change the
223992 // code to fix bugs etc. See the ROSE README file
223993 // for directions.
223994 
223995 // tps: (02/22/2010): Adding DLL export requirements
223996 #include "rosedll.h"
223997 
223998 // predeclarations for SgWithStatement
223999 
224000 /* #line 224001 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
224001 
224002 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
224003 
224004 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
224005 
224006 #if 1
224007 // Class Definition for SgWithStatement
224008 class ROSE_DLL_API SgWithStatement : public SgStatement
224009  {
224010  public:
224011 
224012 
224013 /* #line 224014 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
224014 
224015  virtual SgNode* copy ( SgCopyHelp& help) const override;
224016 // Start of memberFunctionString
224017 /* #line 2311 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
224018 
224019 
224020 
224021 // End of memberFunctionString
224022 // Start of memberFunctionString
224023 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
224024 
224025 // *** COMMON CODE SECTION BEGINS HERE ***
224026 
224027  public:
224028 
224029  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
224030  // and not required which is required to match the other aspects of the copy mechanism code generation.
224031  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
224032  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
224033  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
224034  // virtual SgNode* copy ( const SgCopyHelp & help) const;
224035 
224037  virtual std::string class_name() const override;
224038 
224040  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
224041 
224043  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
224044  // static const VariantT static_variant = V_SgWithStatement;
224045  enum { static_variant = V_SgWithStatement };
224046 
224047  /* the generated cast function */
224049  ROSE_DLL_API friend SgWithStatement* isSgWithStatement( SgNode * s );
224050 
224052  ROSE_DLL_API friend const SgWithStatement* isSgWithStatement( const SgNode * s );
224053 
224054  // ******************************************
224055  // * Memory Pool / New / Delete
224056  // ******************************************
224057 
224058  public:
224060  static const unsigned pool_size; //
224062  static std::vector<unsigned char *> pools; //
224064  static SgWithStatement * next_node; //
224065 
224067  static unsigned long initializeStorageClassArray(SgWithStatementStorageClass *); //
224068 
224070  static void clearMemoryPool(); //
224071  static void deleteMemoryPool(); //
224072 
224074  static void extendMemoryPoolForFileIO(); //
224075 
224077  static SgWithStatement * getPointerFromGlobalIndex(unsigned long); //
224079  static SgWithStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
224080 
224082  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
224084  static void resetValidFreepointers(); //
224086  static unsigned long getNumberOfLastValidPointer(); //
224087 
224088 
224089 #if defined(INLINE_FUNCTIONS)
224090 
224091  inline void *operator new (size_t size);
224092 #else
224093 
224094  void *operator new (size_t size);
224095 #endif
224096 
224097  void operator delete (void* pointer, size_t size);
224098 
224099  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
224100  void operator delete (void* pointer)
224101  {
224102  // This is the generated delete operator...
224103  SgWithStatement::operator delete (pointer,sizeof(SgWithStatement));
224104  }
224105 
224107  static size_t numberOfNodes();
224108 
224110  static size_t memoryUsage();
224111 
224112  // End of scope which started in IR nodes specific code
224113  /* */
224114 
224115  /* name Internal Functions
224116  \brief Internal functions ... incomplete-documentation
224117 
224118  These functions have been made public as part of the design, but they are suggested for internal use
224119  or by particularly knowledgeable users for specialized tools or applications.
224120 
224121  \internal We could not make these private because they are required by user for special purposes. And
224122  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
224123 
224124  */
224125 
224126  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
224127  // overridden in every class by *generated* implementation
224129  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
224130  // MS: 06/28/02 container of names of variables or container indices
224131  // used used in the traversal to access AST successor nodes
224132  // overridden in every class by *generated* implementation
224135  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
224136 
224137  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
224138  // than all the vector copies. The implementation for these functions is generated for each class.
224140  virtual size_t get_numberOfTraversalSuccessors() override;
224142  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
224144  virtual size_t get_childIndex(SgNode *child) override;
224145 
224146 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
224147  // MS: 08/16/2002 method for generating RTI information
224149  virtual RTIReturnType roseRTI() override;
224150 #endif
224151  /* */
224152 
224153 
224154 
224155  /* name Deprecated Functions
224156  \brief Deprecated functions ... incomplete-documentation
224157 
224158  These functions have been deprecated from use.
224159  */
224160  /* */
224161 
224163  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
224164 
224165  // JJW (10/16/2008): Changed to a single function in Node.code, and put
224166  // getVariant() in #if 0 block to prevent confusing Doxygen
224167 #if 0
224168 
224169  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
224171  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
224172 #endif
224173  /* */
224174 
224175 
224176 
224177 
224178  public:
224179  /* name Traversal Support Functions
224180  \brief Traversal support functions ... incomplete-documentation
224181 
224182  These functions have been made public as part of the design, but they are suggested for internal use
224183  or by particularly knowledgable users for specialized tools or applications.
224184  */
224185  /* */
224186 
224187  // DQ (11/26/2005): Support for visitor pattern mechanims
224188  // (inferior to ROSE traversal mechanism, experimental).
224192 
224193  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
224195  virtual void accept (ROSE_VisitorPattern & visitor) override;
224196 
224197  // DQ (12/26/2005): Support for traversal based on the memory pool
224200  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
224201 
224204  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
224205 
224206  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
224207  // This traversal helps support internal tools that call static member functions.
224208  // note: this function operates on the memory pools.
224211  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
224212  /* */
224213 
224214 
224215  public:
224216  /* name Memory Allocation Functions
224217  \brief Memory allocations functions ... incomplete-documentation
224218 
224219  These functions have been made public as part of the design, but they are suggested for internal use
224220  or by particularly knowledgable users for specialized tools or applications.
224221  */
224222  /* */
224223 
224234  virtual bool isInMemoryPool() override;
224235 
224246  virtual void checkDataMemberPointersIfInMemoryPool() override;
224247 
224248  // DQ (4/30/2006): Modified to be a const function.
224263  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
224264 
224274  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
224275 
224287  virtual long getChildIndex( SgNode* childNode ) const override;
224288 
224289  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
224290  // comment here (changed to be a C style comment and not be a doxygen comment).
224291  /* \brief Constructor for use by AST File I/O Mechanism
224292 
224293  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
224294  which obtained via fast binary file I/O from disk.
224295  */
224296  // SgWithStatement( SgWithStatementStorageClass& source );
224297 
224298 
224299 
224300 
224301 
224302  // JH (10/24/2005): methods added to support the ast file IO
224303  private:
224304 
224305  /* name AST Memory Allocation Support Functions
224306  \brief Memory allocations support....
224307 
224308  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
224309  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
224310  and support the AST File I/O Mechanism.
224311  */
224312  /* */
224313 
224314  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
224315  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
224316  that I use the same type everywhere, if any changes are made. THe second one declares the type
224317  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
224318  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
224319  a correspinding one in the AST_FILE_IO class!
224320  */
224321  // DQ (9/2/2015): This typedef is no longer used, we can't define the
224322  // comment here (changed to be a C style comment and not be a doxygen comment).
224323  /* \brief Typedef used for low level memory access.
224324  */
224325  // typedef unsigned char* TestType;
224326 
224327  // DQ (9/2/2015): This typedef is no longer used, we can't define the
224328  // comment here (changed to be a C style comment and not be a doxygen comment).
224329  /* \brief Typedef used to hold memory addresses as values.
224330  */
224331  // typedef unsigned long AddressType;
224332 
224333 
224334 
224335  // necessary, to have direct access to the p_freepointer and the private methods !
224337  friend class AST_FILE_IO;
224338 
224340  friend class SgWithStatementStorageClass;
224341 
224343  friend class AstSpecificDataManagingClass;
224344 
224346  friend class AstSpecificDataManagingClassStorageClass;
224347 
224348  public:
224350  SgWithStatement( const SgWithStatementStorageClass& source );
224351 
224352  // private: // JJW hack
224353  /*
224354  name AST Memory Allocation Support Variables
224355  Memory allocations support variables
224356 
224357  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
224358  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
224359  and support the AST File I/O Mechanism.
224360  */
224361  /* */
224362 
224363  public:
224364 
224365  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
224366  // to current node (so that it will work cleanly with build functions to specify patterns).
224367  // virtual SgNode* addRegExpAttribute();
224374 
224375 // *** COMMON CODE SECTION ENDS HERE ***
224376 
224377 
224378 // End of memberFunctionString
224379 // Start of memberFunctionString
224380 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
224381 
224382  // the generated cast function
224383  // friend ROSE_DLL_API SgWithStatement* isSgWithStatement ( SgNode* s );
224384 
224385  typedef SgStatement base_node_type;
224386 
224387 
224388 // End of memberFunctionString
224389 // Start of memberFunctionString
224390 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
224391 
224392  void post_construction_initialization() override;
224393 
224394 
224395 // End of memberFunctionString
224396 
224397  public:
224398  SgExpression* get_expression() const;
224399  void set_expression(SgExpression* expression);
224400 
224401  public:
224402  SgStatement* get_body() const;
224403  void set_body(SgStatement* body);
224404 
224405 
224406  public:
224407  virtual ~SgWithStatement();
224408 
224409 
224410  public:
224411  SgWithStatement(Sg_File_Info* startOfConstruct , SgExpression* expression = NULL, SgStatement* body = NULL);
224412  SgWithStatement(SgExpression* expression, SgStatement* body);
224413 
224414  protected:
224415 // Start of memberFunctionString
224416 SgExpression* p_expression;
224417 
224418 // End of memberFunctionString
224419 // Start of memberFunctionString
224420 SgStatement* p_body;
224421 
224422 // End of memberFunctionString
224423 
224424 
224425 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
224426 
224427 
224428  };
224429 #endif
224430 
224431 // postdeclarations for SgWithStatement
224432 
224433 /* #line 224434 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
224434 
224435 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
224436 
224437 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
224438 
224439 
224440 /* #line 224441 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
224441 
224442 
224443 
224444 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
224445 
224446 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
224447 // This code is automatically generated for each
224448 // terminal and non-terminal within the defined
224449 // grammar. There is a simple way to change the
224450 // code to fix bugs etc. See the ROSE README file
224451 // for directions.
224452 
224453 // tps: (02/22/2010): Adding DLL export requirements
224454 #include "rosedll.h"
224455 
224456 // predeclarations for SgPassStatement
224457 
224458 /* #line 224459 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
224459 
224460 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
224461 
224462 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
224463 
224464 #if 1
224465 // Class Definition for SgPassStatement
224466 class ROSE_DLL_API SgPassStatement : public SgStatement
224467  {
224468  public:
224469 
224470 
224471 /* #line 224472 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
224472 
224473  virtual SgNode* copy ( SgCopyHelp& help) const override;
224474 // Start of memberFunctionString
224475 /* #line 2648 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
224476 
224477 
224478 
224479 // End of memberFunctionString
224480 // Start of memberFunctionString
224481 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
224482 
224483 // *** COMMON CODE SECTION BEGINS HERE ***
224484 
224485  public:
224486 
224487  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
224488  // and not required which is required to match the other aspects of the copy mechanism code generation.
224489  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
224490  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
224491  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
224492  // virtual SgNode* copy ( const SgCopyHelp & help) const;
224493 
224495  virtual std::string class_name() const override;
224496 
224498  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
224499 
224501  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
224502  // static const VariantT static_variant = V_SgPassStatement;
224503  enum { static_variant = V_SgPassStatement };
224504 
224505  /* the generated cast function */
224507  ROSE_DLL_API friend SgPassStatement* isSgPassStatement( SgNode * s );
224508 
224510  ROSE_DLL_API friend const SgPassStatement* isSgPassStatement( const SgNode * s );
224511 
224512  // ******************************************
224513  // * Memory Pool / New / Delete
224514  // ******************************************
224515 
224516  public:
224518  static const unsigned pool_size; //
224520  static std::vector<unsigned char *> pools; //
224522  static SgPassStatement * next_node; //
224523 
224525  static unsigned long initializeStorageClassArray(SgPassStatementStorageClass *); //
224526 
224528  static void clearMemoryPool(); //
224529  static void deleteMemoryPool(); //
224530 
224532  static void extendMemoryPoolForFileIO(); //
224533 
224535  static SgPassStatement * getPointerFromGlobalIndex(unsigned long); //
224537  static SgPassStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
224538 
224540  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
224542  static void resetValidFreepointers(); //
224544  static unsigned long getNumberOfLastValidPointer(); //
224545 
224546 
224547 #if defined(INLINE_FUNCTIONS)
224548 
224549  inline void *operator new (size_t size);
224550 #else
224551 
224552  void *operator new (size_t size);
224553 #endif
224554 
224555  void operator delete (void* pointer, size_t size);
224556 
224557  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
224558  void operator delete (void* pointer)
224559  {
224560  // This is the generated delete operator...
224561  SgPassStatement::operator delete (pointer,sizeof(SgPassStatement));
224562  }
224563 
224565  static size_t numberOfNodes();
224566 
224568  static size_t memoryUsage();
224569 
224570  // End of scope which started in IR nodes specific code
224571  /* */
224572 
224573  /* name Internal Functions
224574  \brief Internal functions ... incomplete-documentation
224575 
224576  These functions have been made public as part of the design, but they are suggested for internal use
224577  or by particularly knowledgeable users for specialized tools or applications.
224578 
224579  \internal We could not make these private because they are required by user for special purposes. And
224580  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
224581 
224582  */
224583 
224584  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
224585  // overridden in every class by *generated* implementation
224587  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
224588  // MS: 06/28/02 container of names of variables or container indices
224589  // used used in the traversal to access AST successor nodes
224590  // overridden in every class by *generated* implementation
224593  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
224594 
224595  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
224596  // than all the vector copies. The implementation for these functions is generated for each class.
224598  virtual size_t get_numberOfTraversalSuccessors() override;
224600  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
224602  virtual size_t get_childIndex(SgNode *child) override;
224603 
224604 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
224605  // MS: 08/16/2002 method for generating RTI information
224607  virtual RTIReturnType roseRTI() override;
224608 #endif
224609  /* */
224610 
224611 
224612 
224613  /* name Deprecated Functions
224614  \brief Deprecated functions ... incomplete-documentation
224615 
224616  These functions have been deprecated from use.
224617  */
224618  /* */
224619 
224621  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
224622 
224623  // JJW (10/16/2008): Changed to a single function in Node.code, and put
224624  // getVariant() in #if 0 block to prevent confusing Doxygen
224625 #if 0
224626 
224627  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
224629  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
224630 #endif
224631  /* */
224632 
224633 
224634 
224635 
224636  public:
224637  /* name Traversal Support Functions
224638  \brief Traversal support functions ... incomplete-documentation
224639 
224640  These functions have been made public as part of the design, but they are suggested for internal use
224641  or by particularly knowledgable users for specialized tools or applications.
224642  */
224643  /* */
224644 
224645  // DQ (11/26/2005): Support for visitor pattern mechanims
224646  // (inferior to ROSE traversal mechanism, experimental).
224650 
224651  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
224653  virtual void accept (ROSE_VisitorPattern & visitor) override;
224654 
224655  // DQ (12/26/2005): Support for traversal based on the memory pool
224658  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
224659 
224662  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
224663 
224664  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
224665  // This traversal helps support internal tools that call static member functions.
224666  // note: this function operates on the memory pools.
224669  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
224670  /* */
224671 
224672 
224673  public:
224674  /* name Memory Allocation Functions
224675  \brief Memory allocations functions ... incomplete-documentation
224676 
224677  These functions have been made public as part of the design, but they are suggested for internal use
224678  or by particularly knowledgable users for specialized tools or applications.
224679  */
224680  /* */
224681 
224692  virtual bool isInMemoryPool() override;
224693 
224704  virtual void checkDataMemberPointersIfInMemoryPool() override;
224705 
224706  // DQ (4/30/2006): Modified to be a const function.
224721  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
224722 
224732  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
224733 
224745  virtual long getChildIndex( SgNode* childNode ) const override;
224746 
224747  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
224748  // comment here (changed to be a C style comment and not be a doxygen comment).
224749  /* \brief Constructor for use by AST File I/O Mechanism
224750 
224751  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
224752  which obtained via fast binary file I/O from disk.
224753  */
224754  // SgPassStatement( SgPassStatementStorageClass& source );
224755 
224756 
224757 
224758 
224759 
224760  // JH (10/24/2005): methods added to support the ast file IO
224761  private:
224762 
224763  /* name AST Memory Allocation Support Functions
224764  \brief Memory allocations support....
224765 
224766  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
224767  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
224768  and support the AST File I/O Mechanism.
224769  */
224770  /* */
224771 
224772  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
224773  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
224774  that I use the same type everywhere, if any changes are made. THe second one declares the type
224775  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
224776  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
224777  a correspinding one in the AST_FILE_IO class!
224778  */
224779  // DQ (9/2/2015): This typedef is no longer used, we can't define the
224780  // comment here (changed to be a C style comment and not be a doxygen comment).
224781  /* \brief Typedef used for low level memory access.
224782  */
224783  // typedef unsigned char* TestType;
224784 
224785  // DQ (9/2/2015): This typedef is no longer used, we can't define the
224786  // comment here (changed to be a C style comment and not be a doxygen comment).
224787  /* \brief Typedef used to hold memory addresses as values.
224788  */
224789  // typedef unsigned long AddressType;
224790 
224791 
224792 
224793  // necessary, to have direct access to the p_freepointer and the private methods !
224795  friend class AST_FILE_IO;
224796 
224798  friend class SgPassStatementStorageClass;
224799 
224801  friend class AstSpecificDataManagingClass;
224802 
224804  friend class AstSpecificDataManagingClassStorageClass;
224805 
224806  public:
224808  SgPassStatement( const SgPassStatementStorageClass& source );
224809 
224810  // private: // JJW hack
224811  /*
224812  name AST Memory Allocation Support Variables
224813  Memory allocations support variables
224814 
224815  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
224816  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
224817  and support the AST File I/O Mechanism.
224818  */
224819  /* */
224820 
224821  public:
224822 
224823  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
224824  // to current node (so that it will work cleanly with build functions to specify patterns).
224825  // virtual SgNode* addRegExpAttribute();
224832 
224833 // *** COMMON CODE SECTION ENDS HERE ***
224834 
224835 
224836 // End of memberFunctionString
224837 // Start of memberFunctionString
224838 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
224839 
224840  // the generated cast function
224841  // friend ROSE_DLL_API SgPassStatement* isSgPassStatement ( SgNode* s );
224842 
224843  typedef SgStatement base_node_type;
224844 
224845 
224846 // End of memberFunctionString
224847 // Start of memberFunctionString
224848 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
224849 
224850  void post_construction_initialization() override;
224851 
224852 
224853 // End of memberFunctionString
224854 
224855 
224856  public:
224857  virtual ~SgPassStatement();
224858 
224859 
224860  public:
224861  SgPassStatement(Sg_File_Info* startOfConstruct );
224862  SgPassStatement();
224863 
224864  protected:
224865 
224866 
224867 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
224868 
224869 
224870  };
224871 #endif
224872 
224873 // postdeclarations for SgPassStatement
224874 
224875 /* #line 224876 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
224876 
224877 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
224878 
224879 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
224880 
224881 
224882 /* #line 224883 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
224883 
224884 
224885 
224886 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
224887 
224888 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
224889 // This code is automatically generated for each
224890 // terminal and non-terminal within the defined
224891 // grammar. There is a simple way to change the
224892 // code to fix bugs etc. See the ROSE README file
224893 // for directions.
224894 
224895 // tps: (02/22/2010): Adding DLL export requirements
224896 #include "rosedll.h"
224897 
224898 // predeclarations for SgAssertStmt
224899 
224900 /* #line 224901 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
224901 
224902 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
224903 
224904 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
224905 
224906 #if 1
224907 // Class Definition for SgAssertStmt
224908 class ROSE_DLL_API SgAssertStmt : public SgStatement
224909  {
224910  public:
224911 
224912 
224913 /* #line 224914 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
224914 
224915  virtual SgNode* copy ( SgCopyHelp& help) const override;
224916 // Start of memberFunctionString
224917 /* #line 2627 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
224918 
224919 
224920 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
224921  virtual unsigned int cfgIndexForEnd() const override;
224922  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
224923  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
224924 #endif
224925 
224926 
224927 
224928 // End of memberFunctionString
224929 // Start of memberFunctionString
224930 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
224931 
224932 // *** COMMON CODE SECTION BEGINS HERE ***
224933 
224934  public:
224935 
224936  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
224937  // and not required which is required to match the other aspects of the copy mechanism code generation.
224938  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
224939  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
224940  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
224941  // virtual SgNode* copy ( const SgCopyHelp & help) const;
224942 
224944  virtual std::string class_name() const override;
224945 
224947  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
224948 
224950  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
224951  // static const VariantT static_variant = V_SgAssertStmt;
224952  enum { static_variant = V_SgAssertStmt };
224953 
224954  /* the generated cast function */
224956  ROSE_DLL_API friend SgAssertStmt* isSgAssertStmt( SgNode * s );
224957 
224959  ROSE_DLL_API friend const SgAssertStmt* isSgAssertStmt( const SgNode * s );
224960 
224961  // ******************************************
224962  // * Memory Pool / New / Delete
224963  // ******************************************
224964 
224965  public:
224967  static const unsigned pool_size; //
224969  static std::vector<unsigned char *> pools; //
224971  static SgAssertStmt * next_node; //
224972 
224974  static unsigned long initializeStorageClassArray(SgAssertStmtStorageClass *); //
224975 
224977  static void clearMemoryPool(); //
224978  static void deleteMemoryPool(); //
224979 
224981  static void extendMemoryPoolForFileIO(); //
224982 
224984  static SgAssertStmt * getPointerFromGlobalIndex(unsigned long); //
224986  static SgAssertStmt * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
224987 
224989  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
224991  static void resetValidFreepointers(); //
224993  static unsigned long getNumberOfLastValidPointer(); //
224994 
224995 
224996 #if defined(INLINE_FUNCTIONS)
224997 
224998  inline void *operator new (size_t size);
224999 #else
225000 
225001  void *operator new (size_t size);
225002 #endif
225003 
225004  void operator delete (void* pointer, size_t size);
225005 
225006  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
225007  void operator delete (void* pointer)
225008  {
225009  // This is the generated delete operator...
225010  SgAssertStmt::operator delete (pointer,sizeof(SgAssertStmt));
225011  }
225012 
225014  static size_t numberOfNodes();
225015 
225017  static size_t memoryUsage();
225018 
225019  // End of scope which started in IR nodes specific code
225020  /* */
225021 
225022  /* name Internal Functions
225023  \brief Internal functions ... incomplete-documentation
225024 
225025  These functions have been made public as part of the design, but they are suggested for internal use
225026  or by particularly knowledgeable users for specialized tools or applications.
225027 
225028  \internal We could not make these private because they are required by user for special purposes. And
225029  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
225030 
225031  */
225032 
225033  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
225034  // overridden in every class by *generated* implementation
225036  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
225037  // MS: 06/28/02 container of names of variables or container indices
225038  // used used in the traversal to access AST successor nodes
225039  // overridden in every class by *generated* implementation
225042  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
225043 
225044  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
225045  // than all the vector copies. The implementation for these functions is generated for each class.
225047  virtual size_t get_numberOfTraversalSuccessors() override;
225049  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
225051  virtual size_t get_childIndex(SgNode *child) override;
225052 
225053 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
225054  // MS: 08/16/2002 method for generating RTI information
225056  virtual RTIReturnType roseRTI() override;
225057 #endif
225058  /* */
225059 
225060 
225061 
225062  /* name Deprecated Functions
225063  \brief Deprecated functions ... incomplete-documentation
225064 
225065  These functions have been deprecated from use.
225066  */
225067  /* */
225068 
225070  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
225071 
225072  // JJW (10/16/2008): Changed to a single function in Node.code, and put
225073  // getVariant() in #if 0 block to prevent confusing Doxygen
225074 #if 0
225075 
225076  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
225078  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
225079 #endif
225080  /* */
225081 
225082 
225083 
225084 
225085  public:
225086  /* name Traversal Support Functions
225087  \brief Traversal support functions ... incomplete-documentation
225088 
225089  These functions have been made public as part of the design, but they are suggested for internal use
225090  or by particularly knowledgable users for specialized tools or applications.
225091  */
225092  /* */
225093 
225094  // DQ (11/26/2005): Support for visitor pattern mechanims
225095  // (inferior to ROSE traversal mechanism, experimental).
225099 
225100  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
225102  virtual void accept (ROSE_VisitorPattern & visitor) override;
225103 
225104  // DQ (12/26/2005): Support for traversal based on the memory pool
225107  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
225108 
225111  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
225112 
225113  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
225114  // This traversal helps support internal tools that call static member functions.
225115  // note: this function operates on the memory pools.
225118  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
225119  /* */
225120 
225121 
225122  public:
225123  /* name Memory Allocation Functions
225124  \brief Memory allocations functions ... incomplete-documentation
225125 
225126  These functions have been made public as part of the design, but they are suggested for internal use
225127  or by particularly knowledgable users for specialized tools or applications.
225128  */
225129  /* */
225130 
225141  virtual bool isInMemoryPool() override;
225142 
225153  virtual void checkDataMemberPointersIfInMemoryPool() override;
225154 
225155  // DQ (4/30/2006): Modified to be a const function.
225170  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
225171 
225181  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
225182 
225194  virtual long getChildIndex( SgNode* childNode ) const override;
225195 
225196  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
225197  // comment here (changed to be a C style comment and not be a doxygen comment).
225198  /* \brief Constructor for use by AST File I/O Mechanism
225199 
225200  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
225201  which obtained via fast binary file I/O from disk.
225202  */
225203  // SgAssertStmt( SgAssertStmtStorageClass& source );
225204 
225205 
225206 
225207 
225208 
225209  // JH (10/24/2005): methods added to support the ast file IO
225210  private:
225211 
225212  /* name AST Memory Allocation Support Functions
225213  \brief Memory allocations support....
225214 
225215  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
225216  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
225217  and support the AST File I/O Mechanism.
225218  */
225219  /* */
225220 
225221  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
225222  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
225223  that I use the same type everywhere, if any changes are made. THe second one declares the type
225224  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
225225  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
225226  a correspinding one in the AST_FILE_IO class!
225227  */
225228  // DQ (9/2/2015): This typedef is no longer used, we can't define the
225229  // comment here (changed to be a C style comment and not be a doxygen comment).
225230  /* \brief Typedef used for low level memory access.
225231  */
225232  // typedef unsigned char* TestType;
225233 
225234  // DQ (9/2/2015): This typedef is no longer used, we can't define the
225235  // comment here (changed to be a C style comment and not be a doxygen comment).
225236  /* \brief Typedef used to hold memory addresses as values.
225237  */
225238  // typedef unsigned long AddressType;
225239 
225240 
225241 
225242  // necessary, to have direct access to the p_freepointer and the private methods !
225244  friend class AST_FILE_IO;
225245 
225247  friend class SgAssertStmtStorageClass;
225248 
225250  friend class AstSpecificDataManagingClass;
225251 
225253  friend class AstSpecificDataManagingClassStorageClass;
225254 
225255  public:
225257  SgAssertStmt( const SgAssertStmtStorageClass& source );
225258 
225259  // private: // JJW hack
225260  /*
225261  name AST Memory Allocation Support Variables
225262  Memory allocations support variables
225263 
225264  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
225265  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
225266  and support the AST File I/O Mechanism.
225267  */
225268  /* */
225269 
225270  public:
225271 
225272  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
225273  // to current node (so that it will work cleanly with build functions to specify patterns).
225274  // virtual SgNode* addRegExpAttribute();
225280  SgAssertStmt* addRegExpAttribute(std::string s, AstRegExAttribute* a);
225281 
225282 // *** COMMON CODE SECTION ENDS HERE ***
225283 
225284 
225285 // End of memberFunctionString
225286 // Start of memberFunctionString
225287 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
225288 
225289  // the generated cast function
225290  // friend ROSE_DLL_API SgAssertStmt* isSgAssertStmt ( SgNode* s );
225291 
225292  typedef SgStatement base_node_type;
225293 
225294 
225295 // End of memberFunctionString
225296 // Start of memberFunctionString
225297 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
225298 
225299  void post_construction_initialization() override;
225300 
225301 
225302 // End of memberFunctionString
225303 
225304  public:
225305  SgExpression* get_test() const;
225306  void set_test(SgExpression* test);
225307 
225308  public:
225309  SgExpression* get_exception_argument() const;
225310  void set_exception_argument(SgExpression* exception_argument);
225311 
225312 
225313  public:
225314  virtual ~SgAssertStmt();
225315 
225316 
225317  public:
225318  SgAssertStmt(Sg_File_Info* startOfConstruct , SgExpression* test = NULL);
225319  SgAssertStmt(SgExpression* test);
225320 
225321  protected:
225322 // Start of memberFunctionString
225323 SgExpression* p_test;
225324 
225325 // End of memberFunctionString
225326 // Start of memberFunctionString
225327 SgExpression* p_exception_argument;
225328 
225329 // End of memberFunctionString
225330 
225331 
225332 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
225333 
225334 
225335  };
225336 #endif
225337 
225338 // postdeclarations for SgAssertStmt
225339 
225340 /* #line 225341 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
225341 
225342 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
225343 
225344 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
225345 
225346 
225347 /* #line 225348 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
225348 
225349 
225350 
225351 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
225352 
225353 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
225354 // This code is automatically generated for each
225355 // terminal and non-terminal within the defined
225356 // grammar. There is a simple way to change the
225357 // code to fix bugs etc. See the ROSE README file
225358 // for directions.
225359 
225360 // tps: (02/22/2010): Adding DLL export requirements
225361 #include "rosedll.h"
225362 
225363 // predeclarations for SgExecStatement
225364 
225365 /* #line 225366 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
225366 
225367 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
225368 
225369 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
225370 
225371 #if 1
225372 // Class Definition for SgExecStatement
225373 class ROSE_DLL_API SgExecStatement : public SgStatement
225374  {
225375  public:
225376 
225377 
225378 /* #line 225379 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
225379 
225380  virtual SgNode* copy ( SgCopyHelp& help) const override;
225381 // Start of memberFunctionString
225382 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
225383 
225384 // *** COMMON CODE SECTION BEGINS HERE ***
225385 
225386  public:
225387 
225388  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
225389  // and not required which is required to match the other aspects of the copy mechanism code generation.
225390  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
225391  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
225392  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
225393  // virtual SgNode* copy ( const SgCopyHelp & help) const;
225394 
225396  virtual std::string class_name() const override;
225397 
225399  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
225400 
225402  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
225403  // static const VariantT static_variant = V_SgExecStatement;
225404  enum { static_variant = V_SgExecStatement };
225405 
225406  /* the generated cast function */
225408  ROSE_DLL_API friend SgExecStatement* isSgExecStatement( SgNode * s );
225409 
225411  ROSE_DLL_API friend const SgExecStatement* isSgExecStatement( const SgNode * s );
225412 
225413  // ******************************************
225414  // * Memory Pool / New / Delete
225415  // ******************************************
225416 
225417  public:
225419  static const unsigned pool_size; //
225421  static std::vector<unsigned char *> pools; //
225423  static SgExecStatement * next_node; //
225424 
225426  static unsigned long initializeStorageClassArray(SgExecStatementStorageClass *); //
225427 
225429  static void clearMemoryPool(); //
225430  static void deleteMemoryPool(); //
225431 
225433  static void extendMemoryPoolForFileIO(); //
225434 
225436  static SgExecStatement * getPointerFromGlobalIndex(unsigned long); //
225438  static SgExecStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
225439 
225441  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
225443  static void resetValidFreepointers(); //
225445  static unsigned long getNumberOfLastValidPointer(); //
225446 
225447 
225448 #if defined(INLINE_FUNCTIONS)
225449 
225450  inline void *operator new (size_t size);
225451 #else
225452 
225453  void *operator new (size_t size);
225454 #endif
225455 
225456  void operator delete (void* pointer, size_t size);
225457 
225458  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
225459  void operator delete (void* pointer)
225460  {
225461  // This is the generated delete operator...
225462  SgExecStatement::operator delete (pointer,sizeof(SgExecStatement));
225463  }
225464 
225466  static size_t numberOfNodes();
225467 
225469  static size_t memoryUsage();
225470 
225471  // End of scope which started in IR nodes specific code
225472  /* */
225473 
225474  /* name Internal Functions
225475  \brief Internal functions ... incomplete-documentation
225476 
225477  These functions have been made public as part of the design, but they are suggested for internal use
225478  or by particularly knowledgeable users for specialized tools or applications.
225479 
225480  \internal We could not make these private because they are required by user for special purposes. And
225481  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
225482 
225483  */
225484 
225485  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
225486  // overridden in every class by *generated* implementation
225488  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
225489  // MS: 06/28/02 container of names of variables or container indices
225490  // used used in the traversal to access AST successor nodes
225491  // overridden in every class by *generated* implementation
225494  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
225495 
225496  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
225497  // than all the vector copies. The implementation for these functions is generated for each class.
225499  virtual size_t get_numberOfTraversalSuccessors() override;
225501  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
225503  virtual size_t get_childIndex(SgNode *child) override;
225504 
225505 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
225506  // MS: 08/16/2002 method for generating RTI information
225508  virtual RTIReturnType roseRTI() override;
225509 #endif
225510  /* */
225511 
225512 
225513 
225514  /* name Deprecated Functions
225515  \brief Deprecated functions ... incomplete-documentation
225516 
225517  These functions have been deprecated from use.
225518  */
225519  /* */
225520 
225522  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
225523 
225524  // JJW (10/16/2008): Changed to a single function in Node.code, and put
225525  // getVariant() in #if 0 block to prevent confusing Doxygen
225526 #if 0
225527 
225528  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
225530  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
225531 #endif
225532  /* */
225533 
225534 
225535 
225536 
225537  public:
225538  /* name Traversal Support Functions
225539  \brief Traversal support functions ... incomplete-documentation
225540 
225541  These functions have been made public as part of the design, but they are suggested for internal use
225542  or by particularly knowledgable users for specialized tools or applications.
225543  */
225544  /* */
225545 
225546  // DQ (11/26/2005): Support for visitor pattern mechanims
225547  // (inferior to ROSE traversal mechanism, experimental).
225551 
225552  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
225554  virtual void accept (ROSE_VisitorPattern & visitor) override;
225555 
225556  // DQ (12/26/2005): Support for traversal based on the memory pool
225559  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
225560 
225563  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
225564 
225565  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
225566  // This traversal helps support internal tools that call static member functions.
225567  // note: this function operates on the memory pools.
225570  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
225571  /* */
225572 
225573 
225574  public:
225575  /* name Memory Allocation Functions
225576  \brief Memory allocations functions ... incomplete-documentation
225577 
225578  These functions have been made public as part of the design, but they are suggested for internal use
225579  or by particularly knowledgable users for specialized tools or applications.
225580  */
225581  /* */
225582 
225593  virtual bool isInMemoryPool() override;
225594 
225605  virtual void checkDataMemberPointersIfInMemoryPool() override;
225606 
225607  // DQ (4/30/2006): Modified to be a const function.
225622  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
225623 
225633  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
225634 
225646  virtual long getChildIndex( SgNode* childNode ) const override;
225647 
225648  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
225649  // comment here (changed to be a C style comment and not be a doxygen comment).
225650  /* \brief Constructor for use by AST File I/O Mechanism
225651 
225652  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
225653  which obtained via fast binary file I/O from disk.
225654  */
225655  // SgExecStatement( SgExecStatementStorageClass& source );
225656 
225657 
225658 
225659 
225660 
225661  // JH (10/24/2005): methods added to support the ast file IO
225662  private:
225663 
225664  /* name AST Memory Allocation Support Functions
225665  \brief Memory allocations support....
225666 
225667  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
225668  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
225669  and support the AST File I/O Mechanism.
225670  */
225671  /* */
225672 
225673  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
225674  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
225675  that I use the same type everywhere, if any changes are made. THe second one declares the type
225676  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
225677  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
225678  a correspinding one in the AST_FILE_IO class!
225679  */
225680  // DQ (9/2/2015): This typedef is no longer used, we can't define the
225681  // comment here (changed to be a C style comment and not be a doxygen comment).
225682  /* \brief Typedef used for low level memory access.
225683  */
225684  // typedef unsigned char* TestType;
225685 
225686  // DQ (9/2/2015): This typedef is no longer used, we can't define the
225687  // comment here (changed to be a C style comment and not be a doxygen comment).
225688  /* \brief Typedef used to hold memory addresses as values.
225689  */
225690  // typedef unsigned long AddressType;
225691 
225692 
225693 
225694  // necessary, to have direct access to the p_freepointer and the private methods !
225696  friend class AST_FILE_IO;
225697 
225699  friend class SgExecStatementStorageClass;
225700 
225702  friend class AstSpecificDataManagingClass;
225703 
225705  friend class AstSpecificDataManagingClassStorageClass;
225706 
225707  public:
225709  SgExecStatement( const SgExecStatementStorageClass& source );
225710 
225711  // private: // JJW hack
225712  /*
225713  name AST Memory Allocation Support Variables
225714  Memory allocations support variables
225715 
225716  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
225717  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
225718  and support the AST File I/O Mechanism.
225719  */
225720  /* */
225721 
225722  public:
225723 
225724  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
225725  // to current node (so that it will work cleanly with build functions to specify patterns).
225726  // virtual SgNode* addRegExpAttribute();
225733 
225734 // *** COMMON CODE SECTION ENDS HERE ***
225735 
225736 
225737 // End of memberFunctionString
225738 // Start of memberFunctionString
225739 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
225740 
225741  // the generated cast function
225742  // friend ROSE_DLL_API SgExecStatement* isSgExecStatement ( SgNode* s );
225743 
225744  typedef SgStatement base_node_type;
225745 
225746 
225747 // End of memberFunctionString
225748 // Start of memberFunctionString
225749 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
225750 
225751  void post_construction_initialization() override;
225752 
225753 
225754 // End of memberFunctionString
225755 
225756  public:
225757  SgExpression* get_executable() const;
225758  void set_executable(SgExpression* executable);
225759 
225760  public:
225761  SgExpression* get_globals() const;
225762  void set_globals(SgExpression* globals);
225763 
225764  public:
225765  SgExpression* get_locals() const;
225766  void set_locals(SgExpression* locals);
225767 
225768 
225769  public:
225770  virtual ~SgExecStatement();
225771 
225772 
225773  public:
225774  SgExecStatement(Sg_File_Info* startOfConstruct , SgExpression* executable = NULL, SgExpression* globals = NULL, SgExpression* locals = NULL);
225775  SgExecStatement(SgExpression* executable, SgExpression* globals, SgExpression* locals);
225776 
225777  protected:
225778 // Start of memberFunctionString
225780 
225781 // End of memberFunctionString
225782 // Start of memberFunctionString
225784 
225785 // End of memberFunctionString
225786 // Start of memberFunctionString
225788 
225789 // End of memberFunctionString
225790 
225791 
225792 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
225793 
225794 
225795  };
225796 #endif
225797 
225798 // postdeclarations for SgExecStatement
225799 
225800 /* #line 225801 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
225801 
225802 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
225803 
225804 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
225805 
225806 
225807 /* #line 225808 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
225808 
225809 
225810 
225811 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
225812 
225813 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
225814 // This code is automatically generated for each
225815 // terminal and non-terminal within the defined
225816 // grammar. There is a simple way to change the
225817 // code to fix bugs etc. See the ROSE README file
225818 // for directions.
225819 
225820 // tps: (02/22/2010): Adding DLL export requirements
225821 #include "rosedll.h"
225822 
225823 // predeclarations for SgImageControlStatement
225824 
225825 /* #line 225826 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
225826 
225827 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
225828 
225829 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
225830 
225831 #if 1
225832 // Class Definition for SgImageControlStatement
225833 class ROSE_DLL_API SgImageControlStatement : public SgStatement
225834  {
225835  public:
225836 
225837 
225838 /* #line 225839 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
225839 
225840  virtual SgNode* copy ( SgCopyHelp& help) const override;
225841 // Start of memberFunctionString
225842 /* #line 3429 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
225843 
225844  // This is a base class for all the image control statements.
225845  // Except for allocate and deallocate statements
225846 
225847  public:
225850  {
225851  e_unknown,
225852  e_sync_all,
225853  e_sync_images,
225854  e_sync_memory,
225855  e_sync_team,
225856  e_change_team,
225857  e_critical,
225858  e_event_post,
225859  e_event_wait,
225860  e_form_team,
225861  e_lock,
225862  e_unlock,
225863  // e_allocate, /* does not derive from SgImageControlStatement */
225864  // e_deallocate, /* does not derive from SgImageControlStatement */
225865  e_last_image_control_statement
225866  };
225867 
225868 
225869 
225870 // End of memberFunctionString
225871 // Start of memberFunctionString
225872 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
225873 
225874 // *** COMMON CODE SECTION BEGINS HERE ***
225875 
225876  public:
225877 
225878  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
225879  // and not required which is required to match the other aspects of the copy mechanism code generation.
225880  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
225881  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
225882  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
225883  // virtual SgNode* copy ( const SgCopyHelp & help) const;
225884 
225886  virtual std::string class_name() const override;
225887 
225889  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
225890 
225892  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
225893  // static const VariantT static_variant = V_SgImageControlStatement;
225894  enum { static_variant = V_SgImageControlStatement };
225895 
225896  /* the generated cast function */
225898  ROSE_DLL_API friend SgImageControlStatement* isSgImageControlStatement( SgNode * s );
225899 
225901  ROSE_DLL_API friend const SgImageControlStatement* isSgImageControlStatement( const SgNode * s );
225902 
225903  // ******************************************
225904  // * Memory Pool / New / Delete
225905  // ******************************************
225906 
225907  public:
225909  static const unsigned pool_size; //
225911  static std::vector<unsigned char *> pools; //
225913  static SgImageControlStatement * next_node; //
225914 
225916  static unsigned long initializeStorageClassArray(SgImageControlStatementStorageClass *); //
225917 
225919  static void clearMemoryPool(); //
225920  static void deleteMemoryPool(); //
225921 
225923  static void extendMemoryPoolForFileIO(); //
225924 
225926  static SgImageControlStatement * getPointerFromGlobalIndex(unsigned long); //
225928  static SgImageControlStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
225929 
225931  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
225933  static void resetValidFreepointers(); //
225935  static unsigned long getNumberOfLastValidPointer(); //
225936 
225937 
225938 #if defined(INLINE_FUNCTIONS)
225939 
225940  inline void *operator new (size_t size);
225941 #else
225942 
225943  void *operator new (size_t size);
225944 #endif
225945 
225946  void operator delete (void* pointer, size_t size);
225947 
225948  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
225949  void operator delete (void* pointer)
225950  {
225951  // This is the generated delete operator...
225952  SgImageControlStatement::operator delete (pointer,sizeof(SgImageControlStatement));
225953  }
225954 
225956  static size_t numberOfNodes();
225957 
225959  static size_t memoryUsage();
225960 
225961  // End of scope which started in IR nodes specific code
225962  /* */
225963 
225964  /* name Internal Functions
225965  \brief Internal functions ... incomplete-documentation
225966 
225967  These functions have been made public as part of the design, but they are suggested for internal use
225968  or by particularly knowledgeable users for specialized tools or applications.
225969 
225970  \internal We could not make these private because they are required by user for special purposes. And
225971  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
225972 
225973  */
225974 
225975  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
225976  // overridden in every class by *generated* implementation
225978  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
225979  // MS: 06/28/02 container of names of variables or container indices
225980  // used used in the traversal to access AST successor nodes
225981  // overridden in every class by *generated* implementation
225984  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
225985 
225986  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
225987  // than all the vector copies. The implementation for these functions is generated for each class.
225989  virtual size_t get_numberOfTraversalSuccessors() override;
225991  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
225993  virtual size_t get_childIndex(SgNode *child) override;
225994 
225995 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
225996  // MS: 08/16/2002 method for generating RTI information
225998  virtual RTIReturnType roseRTI() override;
225999 #endif
226000  /* */
226001 
226002 
226003 
226004  /* name Deprecated Functions
226005  \brief Deprecated functions ... incomplete-documentation
226006 
226007  These functions have been deprecated from use.
226008  */
226009  /* */
226010 
226012  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
226013 
226014  // JJW (10/16/2008): Changed to a single function in Node.code, and put
226015  // getVariant() in #if 0 block to prevent confusing Doxygen
226016 #if 0
226017 
226018  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
226020  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
226021 #endif
226022  /* */
226023 
226024 
226025 
226026 
226027  public:
226028  /* name Traversal Support Functions
226029  \brief Traversal support functions ... incomplete-documentation
226030 
226031  These functions have been made public as part of the design, but they are suggested for internal use
226032  or by particularly knowledgable users for specialized tools or applications.
226033  */
226034  /* */
226035 
226036  // DQ (11/26/2005): Support for visitor pattern mechanims
226037  // (inferior to ROSE traversal mechanism, experimental).
226041 
226042  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
226044  virtual void accept (ROSE_VisitorPattern & visitor) override;
226045 
226046  // DQ (12/26/2005): Support for traversal based on the memory pool
226049  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
226050 
226053  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
226054 
226055  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
226056  // This traversal helps support internal tools that call static member functions.
226057  // note: this function operates on the memory pools.
226060  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
226061  /* */
226062 
226063 
226064  public:
226065  /* name Memory Allocation Functions
226066  \brief Memory allocations functions ... incomplete-documentation
226067 
226068  These functions have been made public as part of the design, but they are suggested for internal use
226069  or by particularly knowledgable users for specialized tools or applications.
226070  */
226071  /* */
226072 
226083  virtual bool isInMemoryPool() override;
226084 
226095  virtual void checkDataMemberPointersIfInMemoryPool() override;
226096 
226097  // DQ (4/30/2006): Modified to be a const function.
226112  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
226113 
226123  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
226124 
226136  virtual long getChildIndex( SgNode* childNode ) const override;
226137 
226138  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
226139  // comment here (changed to be a C style comment and not be a doxygen comment).
226140  /* \brief Constructor for use by AST File I/O Mechanism
226141 
226142  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
226143  which obtained via fast binary file I/O from disk.
226144  */
226145  // SgImageControlStatement( SgImageControlStatementStorageClass& source );
226146 
226147 
226148 
226149 
226150 
226151  // JH (10/24/2005): methods added to support the ast file IO
226152  private:
226153 
226154  /* name AST Memory Allocation Support Functions
226155  \brief Memory allocations support....
226156 
226157  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
226158  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
226159  and support the AST File I/O Mechanism.
226160  */
226161  /* */
226162 
226163  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
226164  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
226165  that I use the same type everywhere, if any changes are made. THe second one declares the type
226166  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
226167  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
226168  a correspinding one in the AST_FILE_IO class!
226169  */
226170  // DQ (9/2/2015): This typedef is no longer used, we can't define the
226171  // comment here (changed to be a C style comment and not be a doxygen comment).
226172  /* \brief Typedef used for low level memory access.
226173  */
226174  // typedef unsigned char* TestType;
226175 
226176  // DQ (9/2/2015): This typedef is no longer used, we can't define the
226177  // comment here (changed to be a C style comment and not be a doxygen comment).
226178  /* \brief Typedef used to hold memory addresses as values.
226179  */
226180  // typedef unsigned long AddressType;
226181 
226182 
226183 
226184  // necessary, to have direct access to the p_freepointer and the private methods !
226186  friend class AST_FILE_IO;
226187 
226189  friend class SgImageControlStatementStorageClass;
226190 
226192  friend class AstSpecificDataManagingClass;
226193 
226195  friend class AstSpecificDataManagingClassStorageClass;
226196 
226197  public:
226199  SgImageControlStatement( const SgImageControlStatementStorageClass& source );
226200 
226201  // private: // JJW hack
226202  /*
226203  name AST Memory Allocation Support Variables
226204  Memory allocations support variables
226205 
226206  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
226207  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
226208  and support the AST File I/O Mechanism.
226209  */
226210  /* */
226211 
226212  public:
226213 
226214  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
226215  // to current node (so that it will work cleanly with build functions to specify patterns).
226216  // virtual SgNode* addRegExpAttribute();
226223 
226224 // *** COMMON CODE SECTION ENDS HERE ***
226225 
226226 
226227 // End of memberFunctionString
226228 // Start of memberFunctionString
226229 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
226230 
226231  // the generated cast function
226232  // friend ROSE_DLL_API SgImageControlStatement* isSgImageControlStatement ( SgNode* s );
226233 
226234  typedef SgStatement base_node_type;
226235 
226236 
226237 // End of memberFunctionString
226238 // Start of memberFunctionString
226239 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
226240 
226241  void post_construction_initialization() override;
226242 
226243 
226244 // End of memberFunctionString
226245 
226246  public:
226247  SgImageControlStatement::image_control_statement_enum get_image_control_statement() const;
226248  void set_image_control_statement(SgImageControlStatement::image_control_statement_enum image_control_statement);
226249 
226250  public:
226251  SgExpression* get_stat() const;
226252  void set_stat(SgExpression* stat);
226253 
226254  public:
226255  SgExpression* get_err_msg() const;
226256  void set_err_msg(SgExpression* err_msg);
226257 
226258  public:
226259  SgExpression* get_acquired_lock() const;
226260  void set_acquired_lock(SgExpression* acquired_lock);
226261 
226262 
226263  public:
226264  virtual ~SgImageControlStatement();
226265 
226266 
226267  public:
226268  SgImageControlStatement(Sg_File_Info* startOfConstruct );
226270 
226271  protected:
226272 // Start of memberFunctionString
226274 
226275 // End of memberFunctionString
226276 // Start of memberFunctionString
226277 SgExpression* p_stat;
226278 
226279 // End of memberFunctionString
226280 // Start of memberFunctionString
226281 SgExpression* p_err_msg;
226282 
226283 // End of memberFunctionString
226284 // Start of memberFunctionString
226285 SgExpression* p_acquired_lock;
226286 
226287 // End of memberFunctionString
226288 
226289 
226290 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
226291 
226292 
226293  };
226294 #endif
226295 
226296 // postdeclarations for SgImageControlStatement
226297 
226298 /* #line 226299 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
226299 
226300 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
226301 
226302 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
226303 
226304 
226305 /* #line 226306 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
226306 
226307 
226308 
226309 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
226310 
226311 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
226312 // This code is automatically generated for each
226313 // terminal and non-terminal within the defined
226314 // grammar. There is a simple way to change the
226315 // code to fix bugs etc. See the ROSE README file
226316 // for directions.
226317 
226318 // tps: (02/22/2010): Adding DLL export requirements
226319 #include "rosedll.h"
226320 
226321 // predeclarations for SgSyncAllStatement
226322 
226323 /* #line 226324 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
226324 
226325 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
226326 
226327 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
226328 
226329 #if 1
226330 // Class Definition for SgSyncAllStatement
226332  {
226333  public:
226334 
226335 
226336 /* #line 226337 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
226337 
226338  virtual SgNode* copy ( SgCopyHelp& help) const override;
226339 // Start of memberFunctionString
226340 /* #line 3456 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
226341 
226342 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
226343  virtual unsigned int cfgIndexForEnd() const override;
226344  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
226345  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
226346 #endif
226347 
226348 
226349 // End of memberFunctionString
226350 // Start of memberFunctionString
226351 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
226352 
226353 // *** COMMON CODE SECTION BEGINS HERE ***
226354 
226355  public:
226356 
226357  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
226358  // and not required which is required to match the other aspects of the copy mechanism code generation.
226359  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
226360  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
226361  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
226362  // virtual SgNode* copy ( const SgCopyHelp & help) const;
226363 
226365  virtual std::string class_name() const override;
226366 
226368  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
226369 
226371  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
226372  // static const VariantT static_variant = V_SgSyncAllStatement;
226373  enum { static_variant = V_SgSyncAllStatement };
226374 
226375  /* the generated cast function */
226377  ROSE_DLL_API friend SgSyncAllStatement* isSgSyncAllStatement( SgNode * s );
226378 
226380  ROSE_DLL_API friend const SgSyncAllStatement* isSgSyncAllStatement( const SgNode * s );
226381 
226382  // ******************************************
226383  // * Memory Pool / New / Delete
226384  // ******************************************
226385 
226386  public:
226388  static const unsigned pool_size; //
226390  static std::vector<unsigned char *> pools; //
226392  static SgSyncAllStatement * next_node; //
226393 
226395  static unsigned long initializeStorageClassArray(SgSyncAllStatementStorageClass *); //
226396 
226398  static void clearMemoryPool(); //
226399  static void deleteMemoryPool(); //
226400 
226402  static void extendMemoryPoolForFileIO(); //
226403 
226405  static SgSyncAllStatement * getPointerFromGlobalIndex(unsigned long); //
226407  static SgSyncAllStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
226408 
226410  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
226412  static void resetValidFreepointers(); //
226414  static unsigned long getNumberOfLastValidPointer(); //
226415 
226416 
226417 #if defined(INLINE_FUNCTIONS)
226418 
226419  inline void *operator new (size_t size);
226420 #else
226421 
226422  void *operator new (size_t size);
226423 #endif
226424 
226425  void operator delete (void* pointer, size_t size);
226426 
226427  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
226428  void operator delete (void* pointer)
226429  {
226430  // This is the generated delete operator...
226431  SgSyncAllStatement::operator delete (pointer,sizeof(SgSyncAllStatement));
226432  }
226433 
226435  static size_t numberOfNodes();
226436 
226438  static size_t memoryUsage();
226439 
226440  // End of scope which started in IR nodes specific code
226441  /* */
226442 
226443  /* name Internal Functions
226444  \brief Internal functions ... incomplete-documentation
226445 
226446  These functions have been made public as part of the design, but they are suggested for internal use
226447  or by particularly knowledgeable users for specialized tools or applications.
226448 
226449  \internal We could not make these private because they are required by user for special purposes. And
226450  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
226451 
226452  */
226453 
226454  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
226455  // overridden in every class by *generated* implementation
226457  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
226458  // MS: 06/28/02 container of names of variables or container indices
226459  // used used in the traversal to access AST successor nodes
226460  // overridden in every class by *generated* implementation
226463  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
226464 
226465  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
226466  // than all the vector copies. The implementation for these functions is generated for each class.
226468  virtual size_t get_numberOfTraversalSuccessors() override;
226470  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
226472  virtual size_t get_childIndex(SgNode *child) override;
226473 
226474 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
226475  // MS: 08/16/2002 method for generating RTI information
226477  virtual RTIReturnType roseRTI() override;
226478 #endif
226479  /* */
226480 
226481 
226482 
226483  /* name Deprecated Functions
226484  \brief Deprecated functions ... incomplete-documentation
226485 
226486  These functions have been deprecated from use.
226487  */
226488  /* */
226489 
226491  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
226492 
226493  // JJW (10/16/2008): Changed to a single function in Node.code, and put
226494  // getVariant() in #if 0 block to prevent confusing Doxygen
226495 #if 0
226496 
226497  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
226499  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
226500 #endif
226501  /* */
226502 
226503 
226504 
226505 
226506  public:
226507  /* name Traversal Support Functions
226508  \brief Traversal support functions ... incomplete-documentation
226509 
226510  These functions have been made public as part of the design, but they are suggested for internal use
226511  or by particularly knowledgable users for specialized tools or applications.
226512  */
226513  /* */
226514 
226515  // DQ (11/26/2005): Support for visitor pattern mechanims
226516  // (inferior to ROSE traversal mechanism, experimental).
226520 
226521  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
226523  virtual void accept (ROSE_VisitorPattern & visitor) override;
226524 
226525  // DQ (12/26/2005): Support for traversal based on the memory pool
226528  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
226529 
226532  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
226533 
226534  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
226535  // This traversal helps support internal tools that call static member functions.
226536  // note: this function operates on the memory pools.
226539  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
226540  /* */
226541 
226542 
226543  public:
226544  /* name Memory Allocation Functions
226545  \brief Memory allocations functions ... incomplete-documentation
226546 
226547  These functions have been made public as part of the design, but they are suggested for internal use
226548  or by particularly knowledgable users for specialized tools or applications.
226549  */
226550  /* */
226551 
226562  virtual bool isInMemoryPool() override;
226563 
226574  virtual void checkDataMemberPointersIfInMemoryPool() override;
226575 
226576  // DQ (4/30/2006): Modified to be a const function.
226591  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
226592 
226602  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
226603 
226615  virtual long getChildIndex( SgNode* childNode ) const override;
226616 
226617  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
226618  // comment here (changed to be a C style comment and not be a doxygen comment).
226619  /* \brief Constructor for use by AST File I/O Mechanism
226620 
226621  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
226622  which obtained via fast binary file I/O from disk.
226623  */
226624  // SgSyncAllStatement( SgSyncAllStatementStorageClass& source );
226625 
226626 
226627 
226628 
226629 
226630  // JH (10/24/2005): methods added to support the ast file IO
226631  private:
226632 
226633  /* name AST Memory Allocation Support Functions
226634  \brief Memory allocations support....
226635 
226636  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
226637  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
226638  and support the AST File I/O Mechanism.
226639  */
226640  /* */
226641 
226642  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
226643  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
226644  that I use the same type everywhere, if any changes are made. THe second one declares the type
226645  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
226646  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
226647  a correspinding one in the AST_FILE_IO class!
226648  */
226649  // DQ (9/2/2015): This typedef is no longer used, we can't define the
226650  // comment here (changed to be a C style comment and not be a doxygen comment).
226651  /* \brief Typedef used for low level memory access.
226652  */
226653  // typedef unsigned char* TestType;
226654 
226655  // DQ (9/2/2015): This typedef is no longer used, we can't define the
226656  // comment here (changed to be a C style comment and not be a doxygen comment).
226657  /* \brief Typedef used to hold memory addresses as values.
226658  */
226659  // typedef unsigned long AddressType;
226660 
226661 
226662 
226663  // necessary, to have direct access to the p_freepointer and the private methods !
226665  friend class AST_FILE_IO;
226666 
226668  friend class SgSyncAllStatementStorageClass;
226669 
226671  friend class AstSpecificDataManagingClass;
226672 
226674  friend class AstSpecificDataManagingClassStorageClass;
226675 
226676  public:
226678  SgSyncAllStatement( const SgSyncAllStatementStorageClass& source );
226679 
226680  // private: // JJW hack
226681  /*
226682  name AST Memory Allocation Support Variables
226683  Memory allocations support variables
226684 
226685  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
226686  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
226687  and support the AST File I/O Mechanism.
226688  */
226689  /* */
226690 
226691  public:
226692 
226693  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
226694  // to current node (so that it will work cleanly with build functions to specify patterns).
226695  // virtual SgNode* addRegExpAttribute();
226702 
226703 // *** COMMON CODE SECTION ENDS HERE ***
226704 
226705 
226706 // End of memberFunctionString
226707 // Start of memberFunctionString
226708 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
226709 
226710  // the generated cast function
226711  // friend ROSE_DLL_API SgSyncAllStatement* isSgSyncAllStatement ( SgNode* s );
226712 
226714 
226715 
226716 // End of memberFunctionString
226717 // Start of memberFunctionString
226718 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
226719 
226720  void post_construction_initialization() override;
226721 
226722 
226723 // End of memberFunctionString
226724 
226725 
226726  public:
226727  virtual ~SgSyncAllStatement();
226728 
226729 
226730  public:
226731  SgSyncAllStatement(Sg_File_Info* startOfConstruct );
226732  SgSyncAllStatement();
226733 
226734  protected:
226735 
226736 
226737 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
226738 
226739 
226740  };
226741 #endif
226742 
226743 // postdeclarations for SgSyncAllStatement
226744 
226745 /* #line 226746 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
226746 
226747 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
226748 
226749 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
226750 
226751 
226752 /* #line 226753 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
226753 
226754 
226755 
226756 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
226757 
226758 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
226759 // This code is automatically generated for each
226760 // terminal and non-terminal within the defined
226761 // grammar. There is a simple way to change the
226762 // code to fix bugs etc. See the ROSE README file
226763 // for directions.
226764 
226765 // tps: (02/22/2010): Adding DLL export requirements
226766 #include "rosedll.h"
226767 
226768 // predeclarations for SgSyncImagesStatement
226769 
226770 /* #line 226771 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
226771 
226772 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
226773 
226774 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
226775 
226776 #if 1
226777 // Class Definition for SgSyncImagesStatement
226779  {
226780  public:
226781 
226782 
226783 /* #line 226784 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
226784 
226785  virtual SgNode* copy ( SgCopyHelp& help) const override;
226786 // Start of memberFunctionString
226787 /* #line 3464 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
226788 
226789 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
226790  virtual unsigned int cfgIndexForEnd() const override;
226791  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
226792  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
226793 #endif
226794 
226795 
226796 // End of memberFunctionString
226797 // Start of memberFunctionString
226798 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
226799 
226800 // *** COMMON CODE SECTION BEGINS HERE ***
226801 
226802  public:
226803 
226804  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
226805  // and not required which is required to match the other aspects of the copy mechanism code generation.
226806  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
226807  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
226808  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
226809  // virtual SgNode* copy ( const SgCopyHelp & help) const;
226810 
226812  virtual std::string class_name() const override;
226813 
226815  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
226816 
226818  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
226819  // static const VariantT static_variant = V_SgSyncImagesStatement;
226820  enum { static_variant = V_SgSyncImagesStatement };
226821 
226822  /* the generated cast function */
226824  ROSE_DLL_API friend SgSyncImagesStatement* isSgSyncImagesStatement( SgNode * s );
226825 
226827  ROSE_DLL_API friend const SgSyncImagesStatement* isSgSyncImagesStatement( const SgNode * s );
226828 
226829  // ******************************************
226830  // * Memory Pool / New / Delete
226831  // ******************************************
226832 
226833  public:
226835  static const unsigned pool_size; //
226837  static std::vector<unsigned char *> pools; //
226839  static SgSyncImagesStatement * next_node; //
226840 
226842  static unsigned long initializeStorageClassArray(SgSyncImagesStatementStorageClass *); //
226843 
226845  static void clearMemoryPool(); //
226846  static void deleteMemoryPool(); //
226847 
226849  static void extendMemoryPoolForFileIO(); //
226850 
226852  static SgSyncImagesStatement * getPointerFromGlobalIndex(unsigned long); //
226854  static SgSyncImagesStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
226855 
226857  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
226859  static void resetValidFreepointers(); //
226861  static unsigned long getNumberOfLastValidPointer(); //
226862 
226863 
226864 #if defined(INLINE_FUNCTIONS)
226865 
226866  inline void *operator new (size_t size);
226867 #else
226868 
226869  void *operator new (size_t size);
226870 #endif
226871 
226872  void operator delete (void* pointer, size_t size);
226873 
226874  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
226875  void operator delete (void* pointer)
226876  {
226877  // This is the generated delete operator...
226878  SgSyncImagesStatement::operator delete (pointer,sizeof(SgSyncImagesStatement));
226879  }
226880 
226882  static size_t numberOfNodes();
226883 
226885  static size_t memoryUsage();
226886 
226887  // End of scope which started in IR nodes specific code
226888  /* */
226889 
226890  /* name Internal Functions
226891  \brief Internal functions ... incomplete-documentation
226892 
226893  These functions have been made public as part of the design, but they are suggested for internal use
226894  or by particularly knowledgeable users for specialized tools or applications.
226895 
226896  \internal We could not make these private because they are required by user for special purposes. And
226897  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
226898 
226899  */
226900 
226901  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
226902  // overridden in every class by *generated* implementation
226904  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
226905  // MS: 06/28/02 container of names of variables or container indices
226906  // used used in the traversal to access AST successor nodes
226907  // overridden in every class by *generated* implementation
226910  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
226911 
226912  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
226913  // than all the vector copies. The implementation for these functions is generated for each class.
226915  virtual size_t get_numberOfTraversalSuccessors() override;
226917  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
226919  virtual size_t get_childIndex(SgNode *child) override;
226920 
226921 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
226922  // MS: 08/16/2002 method for generating RTI information
226924  virtual RTIReturnType roseRTI() override;
226925 #endif
226926  /* */
226927 
226928 
226929 
226930  /* name Deprecated Functions
226931  \brief Deprecated functions ... incomplete-documentation
226932 
226933  These functions have been deprecated from use.
226934  */
226935  /* */
226936 
226938  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
226939 
226940  // JJW (10/16/2008): Changed to a single function in Node.code, and put
226941  // getVariant() in #if 0 block to prevent confusing Doxygen
226942 #if 0
226943 
226944  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
226946  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
226947 #endif
226948  /* */
226949 
226950 
226951 
226952 
226953  public:
226954  /* name Traversal Support Functions
226955  \brief Traversal support functions ... incomplete-documentation
226956 
226957  These functions have been made public as part of the design, but they are suggested for internal use
226958  or by particularly knowledgable users for specialized tools or applications.
226959  */
226960  /* */
226961 
226962  // DQ (11/26/2005): Support for visitor pattern mechanims
226963  // (inferior to ROSE traversal mechanism, experimental).
226967 
226968  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
226970  virtual void accept (ROSE_VisitorPattern & visitor) override;
226971 
226972  // DQ (12/26/2005): Support for traversal based on the memory pool
226975  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
226976 
226979  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
226980 
226981  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
226982  // This traversal helps support internal tools that call static member functions.
226983  // note: this function operates on the memory pools.
226986  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
226987  /* */
226988 
226989 
226990  public:
226991  /* name Memory Allocation Functions
226992  \brief Memory allocations functions ... incomplete-documentation
226993 
226994  These functions have been made public as part of the design, but they are suggested for internal use
226995  or by particularly knowledgable users for specialized tools or applications.
226996  */
226997  /* */
226998 
227009  virtual bool isInMemoryPool() override;
227010 
227021  virtual void checkDataMemberPointersIfInMemoryPool() override;
227022 
227023  // DQ (4/30/2006): Modified to be a const function.
227038  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
227039 
227049  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
227050 
227062  virtual long getChildIndex( SgNode* childNode ) const override;
227063 
227064  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
227065  // comment here (changed to be a C style comment and not be a doxygen comment).
227066  /* \brief Constructor for use by AST File I/O Mechanism
227067 
227068  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
227069  which obtained via fast binary file I/O from disk.
227070  */
227071  // SgSyncImagesStatement( SgSyncImagesStatementStorageClass& source );
227072 
227073 
227074 
227075 
227076 
227077  // JH (10/24/2005): methods added to support the ast file IO
227078  private:
227079 
227080  /* name AST Memory Allocation Support Functions
227081  \brief Memory allocations support....
227082 
227083  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
227084  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
227085  and support the AST File I/O Mechanism.
227086  */
227087  /* */
227088 
227089  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
227090  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
227091  that I use the same type everywhere, if any changes are made. THe second one declares the type
227092  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
227093  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
227094  a correspinding one in the AST_FILE_IO class!
227095  */
227096  // DQ (9/2/2015): This typedef is no longer used, we can't define the
227097  // comment here (changed to be a C style comment and not be a doxygen comment).
227098  /* \brief Typedef used for low level memory access.
227099  */
227100  // typedef unsigned char* TestType;
227101 
227102  // DQ (9/2/2015): This typedef is no longer used, we can't define the
227103  // comment here (changed to be a C style comment and not be a doxygen comment).
227104  /* \brief Typedef used to hold memory addresses as values.
227105  */
227106  // typedef unsigned long AddressType;
227107 
227108 
227109 
227110  // necessary, to have direct access to the p_freepointer and the private methods !
227112  friend class AST_FILE_IO;
227113 
227115  friend class SgSyncImagesStatementStorageClass;
227116 
227118  friend class AstSpecificDataManagingClass;
227119 
227121  friend class AstSpecificDataManagingClassStorageClass;
227122 
227123  public:
227125  SgSyncImagesStatement( const SgSyncImagesStatementStorageClass& source );
227126 
227127  // private: // JJW hack
227128  /*
227129  name AST Memory Allocation Support Variables
227130  Memory allocations support variables
227131 
227132  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
227133  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
227134  and support the AST File I/O Mechanism.
227135  */
227136  /* */
227137 
227138  public:
227139 
227140  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
227141  // to current node (so that it will work cleanly with build functions to specify patterns).
227142  // virtual SgNode* addRegExpAttribute();
227149 
227150 // *** COMMON CODE SECTION ENDS HERE ***
227151 
227152 
227153 // End of memberFunctionString
227154 // Start of memberFunctionString
227155 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
227156 
227157  // the generated cast function
227158  // friend ROSE_DLL_API SgSyncImagesStatement* isSgSyncImagesStatement ( SgNode* s );
227159 
227161 
227162 
227163 // End of memberFunctionString
227164 // Start of memberFunctionString
227165 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
227166 
227167  void post_construction_initialization() override;
227168 
227169 
227170 // End of memberFunctionString
227171 
227172  public:
227173  SgExpression* get_image_set() const;
227174  void set_image_set(SgExpression* image_set);
227175 
227176 
227177  public:
227178  virtual ~SgSyncImagesStatement();
227179 
227180 
227181  public:
227182  SgSyncImagesStatement(Sg_File_Info* startOfConstruct , SgExpression* image_set = NULL);
227183  SgSyncImagesStatement(SgExpression* image_set);
227184 
227185  protected:
227186 // Start of memberFunctionString
227187 SgExpression* p_image_set;
227188 
227189 // End of memberFunctionString
227190 
227191 
227192 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
227193 
227194 
227195  };
227196 #endif
227197 
227198 // postdeclarations for SgSyncImagesStatement
227199 
227200 /* #line 227201 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
227201 
227202 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
227203 
227204 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
227205 
227206 
227207 /* #line 227208 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
227208 
227209 
227210 
227211 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
227212 
227213 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
227214 // This code is automatically generated for each
227215 // terminal and non-terminal within the defined
227216 // grammar. There is a simple way to change the
227217 // code to fix bugs etc. See the ROSE README file
227218 // for directions.
227219 
227220 // tps: (02/22/2010): Adding DLL export requirements
227221 #include "rosedll.h"
227222 
227223 // predeclarations for SgSyncMemoryStatement
227224 
227225 /* #line 227226 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
227226 
227227 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
227228 
227229 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
227230 
227231 #if 1
227232 // Class Definition for SgSyncMemoryStatement
227234  {
227235  public:
227236 
227237 
227238 /* #line 227239 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
227239 
227240  virtual SgNode* copy ( SgCopyHelp& help) const override;
227241 // Start of memberFunctionString
227242 /* #line 3472 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
227243 
227244 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
227245  virtual unsigned int cfgIndexForEnd() const override;
227246  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
227247  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
227248 #endif
227249 
227250 
227251 // End of memberFunctionString
227252 // Start of memberFunctionString
227253 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
227254 
227255 // *** COMMON CODE SECTION BEGINS HERE ***
227256 
227257  public:
227258 
227259  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
227260  // and not required which is required to match the other aspects of the copy mechanism code generation.
227261  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
227262  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
227263  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
227264  // virtual SgNode* copy ( const SgCopyHelp & help) const;
227265 
227267  virtual std::string class_name() const override;
227268 
227270  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
227271 
227273  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
227274  // static const VariantT static_variant = V_SgSyncMemoryStatement;
227275  enum { static_variant = V_SgSyncMemoryStatement };
227276 
227277  /* the generated cast function */
227279  ROSE_DLL_API friend SgSyncMemoryStatement* isSgSyncMemoryStatement( SgNode * s );
227280 
227282  ROSE_DLL_API friend const SgSyncMemoryStatement* isSgSyncMemoryStatement( const SgNode * s );
227283 
227284  // ******************************************
227285  // * Memory Pool / New / Delete
227286  // ******************************************
227287 
227288  public:
227290  static const unsigned pool_size; //
227292  static std::vector<unsigned char *> pools; //
227294  static SgSyncMemoryStatement * next_node; //
227295 
227297  static unsigned long initializeStorageClassArray(SgSyncMemoryStatementStorageClass *); //
227298 
227300  static void clearMemoryPool(); //
227301  static void deleteMemoryPool(); //
227302 
227304  static void extendMemoryPoolForFileIO(); //
227305 
227307  static SgSyncMemoryStatement * getPointerFromGlobalIndex(unsigned long); //
227309  static SgSyncMemoryStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
227310 
227312  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
227314  static void resetValidFreepointers(); //
227316  static unsigned long getNumberOfLastValidPointer(); //
227317 
227318 
227319 #if defined(INLINE_FUNCTIONS)
227320 
227321  inline void *operator new (size_t size);
227322 #else
227323 
227324  void *operator new (size_t size);
227325 #endif
227326 
227327  void operator delete (void* pointer, size_t size);
227328 
227329  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
227330  void operator delete (void* pointer)
227331  {
227332  // This is the generated delete operator...
227333  SgSyncMemoryStatement::operator delete (pointer,sizeof(SgSyncMemoryStatement));
227334  }
227335 
227337  static size_t numberOfNodes();
227338 
227340  static size_t memoryUsage();
227341 
227342  // End of scope which started in IR nodes specific code
227343  /* */
227344 
227345  /* name Internal Functions
227346  \brief Internal functions ... incomplete-documentation
227347 
227348  These functions have been made public as part of the design, but they are suggested for internal use
227349  or by particularly knowledgeable users for specialized tools or applications.
227350 
227351  \internal We could not make these private because they are required by user for special purposes. And
227352  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
227353 
227354  */
227355 
227356  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
227357  // overridden in every class by *generated* implementation
227359  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
227360  // MS: 06/28/02 container of names of variables or container indices
227361  // used used in the traversal to access AST successor nodes
227362  // overridden in every class by *generated* implementation
227365  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
227366 
227367  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
227368  // than all the vector copies. The implementation for these functions is generated for each class.
227370  virtual size_t get_numberOfTraversalSuccessors() override;
227372  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
227374  virtual size_t get_childIndex(SgNode *child) override;
227375 
227376 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
227377  // MS: 08/16/2002 method for generating RTI information
227379  virtual RTIReturnType roseRTI() override;
227380 #endif
227381  /* */
227382 
227383 
227384 
227385  /* name Deprecated Functions
227386  \brief Deprecated functions ... incomplete-documentation
227387 
227388  These functions have been deprecated from use.
227389  */
227390  /* */
227391 
227393  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
227394 
227395  // JJW (10/16/2008): Changed to a single function in Node.code, and put
227396  // getVariant() in #if 0 block to prevent confusing Doxygen
227397 #if 0
227398 
227399  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
227401  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
227402 #endif
227403  /* */
227404 
227405 
227406 
227407 
227408  public:
227409  /* name Traversal Support Functions
227410  \brief Traversal support functions ... incomplete-documentation
227411 
227412  These functions have been made public as part of the design, but they are suggested for internal use
227413  or by particularly knowledgable users for specialized tools or applications.
227414  */
227415  /* */
227416 
227417  // DQ (11/26/2005): Support for visitor pattern mechanims
227418  // (inferior to ROSE traversal mechanism, experimental).
227422 
227423  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
227425  virtual void accept (ROSE_VisitorPattern & visitor) override;
227426 
227427  // DQ (12/26/2005): Support for traversal based on the memory pool
227430  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
227431 
227434  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
227435 
227436  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
227437  // This traversal helps support internal tools that call static member functions.
227438  // note: this function operates on the memory pools.
227441  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
227442  /* */
227443 
227444 
227445  public:
227446  /* name Memory Allocation Functions
227447  \brief Memory allocations functions ... incomplete-documentation
227448 
227449  These functions have been made public as part of the design, but they are suggested for internal use
227450  or by particularly knowledgable users for specialized tools or applications.
227451  */
227452  /* */
227453 
227464  virtual bool isInMemoryPool() override;
227465 
227476  virtual void checkDataMemberPointersIfInMemoryPool() override;
227477 
227478  // DQ (4/30/2006): Modified to be a const function.
227493  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
227494 
227504  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
227505 
227517  virtual long getChildIndex( SgNode* childNode ) const override;
227518 
227519  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
227520  // comment here (changed to be a C style comment and not be a doxygen comment).
227521  /* \brief Constructor for use by AST File I/O Mechanism
227522 
227523  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
227524  which obtained via fast binary file I/O from disk.
227525  */
227526  // SgSyncMemoryStatement( SgSyncMemoryStatementStorageClass& source );
227527 
227528 
227529 
227530 
227531 
227532  // JH (10/24/2005): methods added to support the ast file IO
227533  private:
227534 
227535  /* name AST Memory Allocation Support Functions
227536  \brief Memory allocations support....
227537 
227538  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
227539  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
227540  and support the AST File I/O Mechanism.
227541  */
227542  /* */
227543 
227544  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
227545  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
227546  that I use the same type everywhere, if any changes are made. THe second one declares the type
227547  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
227548  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
227549  a correspinding one in the AST_FILE_IO class!
227550  */
227551  // DQ (9/2/2015): This typedef is no longer used, we can't define the
227552  // comment here (changed to be a C style comment and not be a doxygen comment).
227553  /* \brief Typedef used for low level memory access.
227554  */
227555  // typedef unsigned char* TestType;
227556 
227557  // DQ (9/2/2015): This typedef is no longer used, we can't define the
227558  // comment here (changed to be a C style comment and not be a doxygen comment).
227559  /* \brief Typedef used to hold memory addresses as values.
227560  */
227561  // typedef unsigned long AddressType;
227562 
227563 
227564 
227565  // necessary, to have direct access to the p_freepointer and the private methods !
227567  friend class AST_FILE_IO;
227568 
227570  friend class SgSyncMemoryStatementStorageClass;
227571 
227573  friend class AstSpecificDataManagingClass;
227574 
227576  friend class AstSpecificDataManagingClassStorageClass;
227577 
227578  public:
227580  SgSyncMemoryStatement( const SgSyncMemoryStatementStorageClass& source );
227581 
227582  // private: // JJW hack
227583  /*
227584  name AST Memory Allocation Support Variables
227585  Memory allocations support variables
227586 
227587  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
227588  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
227589  and support the AST File I/O Mechanism.
227590  */
227591  /* */
227592 
227593  public:
227594 
227595  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
227596  // to current node (so that it will work cleanly with build functions to specify patterns).
227597  // virtual SgNode* addRegExpAttribute();
227604 
227605 // *** COMMON CODE SECTION ENDS HERE ***
227606 
227607 
227608 // End of memberFunctionString
227609 // Start of memberFunctionString
227610 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
227611 
227612  // the generated cast function
227613  // friend ROSE_DLL_API SgSyncMemoryStatement* isSgSyncMemoryStatement ( SgNode* s );
227614 
227616 
227617 
227618 // End of memberFunctionString
227619 // Start of memberFunctionString
227620 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
227621 
227622  void post_construction_initialization() override;
227623 
227624 
227625 // End of memberFunctionString
227626 
227627 
227628  public:
227629  virtual ~SgSyncMemoryStatement();
227630 
227631 
227632  public:
227633  SgSyncMemoryStatement(Sg_File_Info* startOfConstruct );
227635 
227636  protected:
227637 
227638 
227639 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
227640 
227641 
227642  };
227643 #endif
227644 
227645 // postdeclarations for SgSyncMemoryStatement
227646 
227647 /* #line 227648 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
227648 
227649 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
227650 
227651 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
227652 
227653 
227654 /* #line 227655 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
227655 
227656 
227657 
227658 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
227659 
227660 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
227661 // This code is automatically generated for each
227662 // terminal and non-terminal within the defined
227663 // grammar. There is a simple way to change the
227664 // code to fix bugs etc. See the ROSE README file
227665 // for directions.
227666 
227667 // tps: (02/22/2010): Adding DLL export requirements
227668 #include "rosedll.h"
227669 
227670 // predeclarations for SgSyncTeamStatement
227671 
227672 /* #line 227673 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
227673 
227674 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
227675 
227676 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
227677 
227678 #if 1
227679 // Class Definition for SgSyncTeamStatement
227681  {
227682  public:
227683 
227684 
227685 /* #line 227686 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
227686 
227687  virtual SgNode* copy ( SgCopyHelp& help) const override;
227688 // Start of memberFunctionString
227689 /* #line 3480 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
227690 
227691 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
227692  virtual unsigned int cfgIndexForEnd() const override;
227693  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
227694  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
227695 #endif
227696 
227697 
227698 // End of memberFunctionString
227699 // Start of memberFunctionString
227700 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
227701 
227702 // *** COMMON CODE SECTION BEGINS HERE ***
227703 
227704  public:
227705 
227706  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
227707  // and not required which is required to match the other aspects of the copy mechanism code generation.
227708  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
227709  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
227710  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
227711  // virtual SgNode* copy ( const SgCopyHelp & help) const;
227712 
227714  virtual std::string class_name() const override;
227715 
227717  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
227718 
227720  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
227721  // static const VariantT static_variant = V_SgSyncTeamStatement;
227722  enum { static_variant = V_SgSyncTeamStatement };
227723 
227724  /* the generated cast function */
227726  ROSE_DLL_API friend SgSyncTeamStatement* isSgSyncTeamStatement( SgNode * s );
227727 
227729  ROSE_DLL_API friend const SgSyncTeamStatement* isSgSyncTeamStatement( const SgNode * s );
227730 
227731  // ******************************************
227732  // * Memory Pool / New / Delete
227733  // ******************************************
227734 
227735  public:
227737  static const unsigned pool_size; //
227739  static std::vector<unsigned char *> pools; //
227741  static SgSyncTeamStatement * next_node; //
227742 
227744  static unsigned long initializeStorageClassArray(SgSyncTeamStatementStorageClass *); //
227745 
227747  static void clearMemoryPool(); //
227748  static void deleteMemoryPool(); //
227749 
227751  static void extendMemoryPoolForFileIO(); //
227752 
227754  static SgSyncTeamStatement * getPointerFromGlobalIndex(unsigned long); //
227756  static SgSyncTeamStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
227757 
227759  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
227761  static void resetValidFreepointers(); //
227763  static unsigned long getNumberOfLastValidPointer(); //
227764 
227765 
227766 #if defined(INLINE_FUNCTIONS)
227767 
227768  inline void *operator new (size_t size);
227769 #else
227770 
227771  void *operator new (size_t size);
227772 #endif
227773 
227774  void operator delete (void* pointer, size_t size);
227775 
227776  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
227777  void operator delete (void* pointer)
227778  {
227779  // This is the generated delete operator...
227780  SgSyncTeamStatement::operator delete (pointer,sizeof(SgSyncTeamStatement));
227781  }
227782 
227784  static size_t numberOfNodes();
227785 
227787  static size_t memoryUsage();
227788 
227789  // End of scope which started in IR nodes specific code
227790  /* */
227791 
227792  /* name Internal Functions
227793  \brief Internal functions ... incomplete-documentation
227794 
227795  These functions have been made public as part of the design, but they are suggested for internal use
227796  or by particularly knowledgeable users for specialized tools or applications.
227797 
227798  \internal We could not make these private because they are required by user for special purposes. And
227799  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
227800 
227801  */
227802 
227803  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
227804  // overridden in every class by *generated* implementation
227806  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
227807  // MS: 06/28/02 container of names of variables or container indices
227808  // used used in the traversal to access AST successor nodes
227809  // overridden in every class by *generated* implementation
227812  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
227813 
227814  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
227815  // than all the vector copies. The implementation for these functions is generated for each class.
227817  virtual size_t get_numberOfTraversalSuccessors() override;
227819  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
227821  virtual size_t get_childIndex(SgNode *child) override;
227822 
227823 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
227824  // MS: 08/16/2002 method for generating RTI information
227826  virtual RTIReturnType roseRTI() override;
227827 #endif
227828  /* */
227829 
227830 
227831 
227832  /* name Deprecated Functions
227833  \brief Deprecated functions ... incomplete-documentation
227834 
227835  These functions have been deprecated from use.
227836  */
227837  /* */
227838 
227840  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
227841 
227842  // JJW (10/16/2008): Changed to a single function in Node.code, and put
227843  // getVariant() in #if 0 block to prevent confusing Doxygen
227844 #if 0
227845 
227846  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
227848  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
227849 #endif
227850  /* */
227851 
227852 
227853 
227854 
227855  public:
227856  /* name Traversal Support Functions
227857  \brief Traversal support functions ... incomplete-documentation
227858 
227859  These functions have been made public as part of the design, but they are suggested for internal use
227860  or by particularly knowledgable users for specialized tools or applications.
227861  */
227862  /* */
227863 
227864  // DQ (11/26/2005): Support for visitor pattern mechanims
227865  // (inferior to ROSE traversal mechanism, experimental).
227869 
227870  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
227872  virtual void accept (ROSE_VisitorPattern & visitor) override;
227873 
227874  // DQ (12/26/2005): Support for traversal based on the memory pool
227877  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
227878 
227881  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
227882 
227883  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
227884  // This traversal helps support internal tools that call static member functions.
227885  // note: this function operates on the memory pools.
227888  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
227889  /* */
227890 
227891 
227892  public:
227893  /* name Memory Allocation Functions
227894  \brief Memory allocations functions ... incomplete-documentation
227895 
227896  These functions have been made public as part of the design, but they are suggested for internal use
227897  or by particularly knowledgable users for specialized tools or applications.
227898  */
227899  /* */
227900 
227911  virtual bool isInMemoryPool() override;
227912 
227923  virtual void checkDataMemberPointersIfInMemoryPool() override;
227924 
227925  // DQ (4/30/2006): Modified to be a const function.
227940  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
227941 
227951  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
227952 
227964  virtual long getChildIndex( SgNode* childNode ) const override;
227965 
227966  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
227967  // comment here (changed to be a C style comment and not be a doxygen comment).
227968  /* \brief Constructor for use by AST File I/O Mechanism
227969 
227970  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
227971  which obtained via fast binary file I/O from disk.
227972  */
227973  // SgSyncTeamStatement( SgSyncTeamStatementStorageClass& source );
227974 
227975 
227976 
227977 
227978 
227979  // JH (10/24/2005): methods added to support the ast file IO
227980  private:
227981 
227982  /* name AST Memory Allocation Support Functions
227983  \brief Memory allocations support....
227984 
227985  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
227986  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
227987  and support the AST File I/O Mechanism.
227988  */
227989  /* */
227990 
227991  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
227992  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
227993  that I use the same type everywhere, if any changes are made. THe second one declares the type
227994  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
227995  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
227996  a correspinding one in the AST_FILE_IO class!
227997  */
227998  // DQ (9/2/2015): This typedef is no longer used, we can't define the
227999  // comment here (changed to be a C style comment and not be a doxygen comment).
228000  /* \brief Typedef used for low level memory access.
228001  */
228002  // typedef unsigned char* TestType;
228003 
228004  // DQ (9/2/2015): This typedef is no longer used, we can't define the
228005  // comment here (changed to be a C style comment and not be a doxygen comment).
228006  /* \brief Typedef used to hold memory addresses as values.
228007  */
228008  // typedef unsigned long AddressType;
228009 
228010 
228011 
228012  // necessary, to have direct access to the p_freepointer and the private methods !
228014  friend class AST_FILE_IO;
228015 
228017  friend class SgSyncTeamStatementStorageClass;
228018 
228020  friend class AstSpecificDataManagingClass;
228021 
228023  friend class AstSpecificDataManagingClassStorageClass;
228024 
228025  public:
228027  SgSyncTeamStatement( const SgSyncTeamStatementStorageClass& source );
228028 
228029  // private: // JJW hack
228030  /*
228031  name AST Memory Allocation Support Variables
228032  Memory allocations support variables
228033 
228034  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
228035  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
228036  and support the AST File I/O Mechanism.
228037  */
228038  /* */
228039 
228040  public:
228041 
228042  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
228043  // to current node (so that it will work cleanly with build functions to specify patterns).
228044  // virtual SgNode* addRegExpAttribute();
228051 
228052 // *** COMMON CODE SECTION ENDS HERE ***
228053 
228054 
228055 // End of memberFunctionString
228056 // Start of memberFunctionString
228057 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
228058 
228059  // the generated cast function
228060  // friend ROSE_DLL_API SgSyncTeamStatement* isSgSyncTeamStatement ( SgNode* s );
228061 
228063 
228064 
228065 // End of memberFunctionString
228066 // Start of memberFunctionString
228067 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
228068 
228069  void post_construction_initialization() override;
228070 
228071 
228072 // End of memberFunctionString
228073 
228074  public:
228075  SgExpression* get_team_value() const;
228076  void set_team_value(SgExpression* team_value);
228077 
228078 
228079  public:
228080  virtual ~SgSyncTeamStatement();
228081 
228082 
228083  public:
228084  SgSyncTeamStatement(Sg_File_Info* startOfConstruct , SgExpression* team_value = NULL);
228085  SgSyncTeamStatement(SgExpression* team_value);
228086 
228087  protected:
228088 // Start of memberFunctionString
228089 SgExpression* p_team_value;
228090 
228091 // End of memberFunctionString
228092 
228093 
228094 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
228095 
228096 
228097  };
228098 #endif
228099 
228100 // postdeclarations for SgSyncTeamStatement
228101 
228102 /* #line 228103 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
228103 
228104 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
228105 
228106 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
228107 
228108 
228109 /* #line 228110 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
228110 
228111 
228112 
228113 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
228114 
228115 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
228116 // This code is automatically generated for each
228117 // terminal and non-terminal within the defined
228118 // grammar. There is a simple way to change the
228119 // code to fix bugs etc. See the ROSE README file
228120 // for directions.
228121 
228122 // tps: (02/22/2010): Adding DLL export requirements
228123 #include "rosedll.h"
228124 
228125 // predeclarations for SgLockStatement
228126 
228127 /* #line 228128 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
228128 
228129 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
228130 
228131 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
228132 
228133 #if 1
228134 // Class Definition for SgLockStatement
228135 class ROSE_DLL_API SgLockStatement : public SgImageControlStatement
228136  {
228137  public:
228138 
228139 
228140 /* #line 228141 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
228141 
228142  virtual SgNode* copy ( SgCopyHelp& help) const override;
228143 // Start of memberFunctionString
228144 /* #line 3488 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
228145 
228146 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
228147  virtual unsigned int cfgIndexForEnd() const override;
228148  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
228149  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
228150 #endif
228151 
228152 
228153 // End of memberFunctionString
228154 // Start of memberFunctionString
228155 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
228156 
228157 // *** COMMON CODE SECTION BEGINS HERE ***
228158 
228159  public:
228160 
228161  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
228162  // and not required which is required to match the other aspects of the copy mechanism code generation.
228163  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
228164  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
228165  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
228166  // virtual SgNode* copy ( const SgCopyHelp & help) const;
228167 
228169  virtual std::string class_name() const override;
228170 
228172  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
228173 
228175  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
228176  // static const VariantT static_variant = V_SgLockStatement;
228177  enum { static_variant = V_SgLockStatement };
228178 
228179  /* the generated cast function */
228181  ROSE_DLL_API friend SgLockStatement* isSgLockStatement( SgNode * s );
228182 
228184  ROSE_DLL_API friend const SgLockStatement* isSgLockStatement( const SgNode * s );
228185 
228186  // ******************************************
228187  // * Memory Pool / New / Delete
228188  // ******************************************
228189 
228190  public:
228192  static const unsigned pool_size; //
228194  static std::vector<unsigned char *> pools; //
228196  static SgLockStatement * next_node; //
228197 
228199  static unsigned long initializeStorageClassArray(SgLockStatementStorageClass *); //
228200 
228202  static void clearMemoryPool(); //
228203  static void deleteMemoryPool(); //
228204 
228206  static void extendMemoryPoolForFileIO(); //
228207 
228209  static SgLockStatement * getPointerFromGlobalIndex(unsigned long); //
228211  static SgLockStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
228212 
228214  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
228216  static void resetValidFreepointers(); //
228218  static unsigned long getNumberOfLastValidPointer(); //
228219 
228220 
228221 #if defined(INLINE_FUNCTIONS)
228222 
228223  inline void *operator new (size_t size);
228224 #else
228225 
228226  void *operator new (size_t size);
228227 #endif
228228 
228229  void operator delete (void* pointer, size_t size);
228230 
228231  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
228232  void operator delete (void* pointer)
228233  {
228234  // This is the generated delete operator...
228235  SgLockStatement::operator delete (pointer,sizeof(SgLockStatement));
228236  }
228237 
228239  static size_t numberOfNodes();
228240 
228242  static size_t memoryUsage();
228243 
228244  // End of scope which started in IR nodes specific code
228245  /* */
228246 
228247  /* name Internal Functions
228248  \brief Internal functions ... incomplete-documentation
228249 
228250  These functions have been made public as part of the design, but they are suggested for internal use
228251  or by particularly knowledgeable users for specialized tools or applications.
228252 
228253  \internal We could not make these private because they are required by user for special purposes. And
228254  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
228255 
228256  */
228257 
228258  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
228259  // overridden in every class by *generated* implementation
228261  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
228262  // MS: 06/28/02 container of names of variables or container indices
228263  // used used in the traversal to access AST successor nodes
228264  // overridden in every class by *generated* implementation
228267  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
228268 
228269  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
228270  // than all the vector copies. The implementation for these functions is generated for each class.
228272  virtual size_t get_numberOfTraversalSuccessors() override;
228274  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
228276  virtual size_t get_childIndex(SgNode *child) override;
228277 
228278 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
228279  // MS: 08/16/2002 method for generating RTI information
228281  virtual RTIReturnType roseRTI() override;
228282 #endif
228283  /* */
228284 
228285 
228286 
228287  /* name Deprecated Functions
228288  \brief Deprecated functions ... incomplete-documentation
228289 
228290  These functions have been deprecated from use.
228291  */
228292  /* */
228293 
228295  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
228296 
228297  // JJW (10/16/2008): Changed to a single function in Node.code, and put
228298  // getVariant() in #if 0 block to prevent confusing Doxygen
228299 #if 0
228300 
228301  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
228303  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
228304 #endif
228305  /* */
228306 
228307 
228308 
228309 
228310  public:
228311  /* name Traversal Support Functions
228312  \brief Traversal support functions ... incomplete-documentation
228313 
228314  These functions have been made public as part of the design, but they are suggested for internal use
228315  or by particularly knowledgable users for specialized tools or applications.
228316  */
228317  /* */
228318 
228319  // DQ (11/26/2005): Support for visitor pattern mechanims
228320  // (inferior to ROSE traversal mechanism, experimental).
228324 
228325  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
228327  virtual void accept (ROSE_VisitorPattern & visitor) override;
228328 
228329  // DQ (12/26/2005): Support for traversal based on the memory pool
228332  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
228333 
228336  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
228337 
228338  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
228339  // This traversal helps support internal tools that call static member functions.
228340  // note: this function operates on the memory pools.
228343  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
228344  /* */
228345 
228346 
228347  public:
228348  /* name Memory Allocation Functions
228349  \brief Memory allocations functions ... incomplete-documentation
228350 
228351  These functions have been made public as part of the design, but they are suggested for internal use
228352  or by particularly knowledgable users for specialized tools or applications.
228353  */
228354  /* */
228355 
228366  virtual bool isInMemoryPool() override;
228367 
228378  virtual void checkDataMemberPointersIfInMemoryPool() override;
228379 
228380  // DQ (4/30/2006): Modified to be a const function.
228395  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
228396 
228406  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
228407 
228419  virtual long getChildIndex( SgNode* childNode ) const override;
228420 
228421  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
228422  // comment here (changed to be a C style comment and not be a doxygen comment).
228423  /* \brief Constructor for use by AST File I/O Mechanism
228424 
228425  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
228426  which obtained via fast binary file I/O from disk.
228427  */
228428  // SgLockStatement( SgLockStatementStorageClass& source );
228429 
228430 
228431 
228432 
228433 
228434  // JH (10/24/2005): methods added to support the ast file IO
228435  private:
228436 
228437  /* name AST Memory Allocation Support Functions
228438  \brief Memory allocations support....
228439 
228440  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
228441  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
228442  and support the AST File I/O Mechanism.
228443  */
228444  /* */
228445 
228446  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
228447  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
228448  that I use the same type everywhere, if any changes are made. THe second one declares the type
228449  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
228450  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
228451  a correspinding one in the AST_FILE_IO class!
228452  */
228453  // DQ (9/2/2015): This typedef is no longer used, we can't define the
228454  // comment here (changed to be a C style comment and not be a doxygen comment).
228455  /* \brief Typedef used for low level memory access.
228456  */
228457  // typedef unsigned char* TestType;
228458 
228459  // DQ (9/2/2015): This typedef is no longer used, we can't define the
228460  // comment here (changed to be a C style comment and not be a doxygen comment).
228461  /* \brief Typedef used to hold memory addresses as values.
228462  */
228463  // typedef unsigned long AddressType;
228464 
228465 
228466 
228467  // necessary, to have direct access to the p_freepointer and the private methods !
228469  friend class AST_FILE_IO;
228470 
228472  friend class SgLockStatementStorageClass;
228473 
228475  friend class AstSpecificDataManagingClass;
228476 
228478  friend class AstSpecificDataManagingClassStorageClass;
228479 
228480  public:
228482  SgLockStatement( const SgLockStatementStorageClass& source );
228483 
228484  // private: // JJW hack
228485  /*
228486  name AST Memory Allocation Support Variables
228487  Memory allocations support variables
228488 
228489  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
228490  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
228491  and support the AST File I/O Mechanism.
228492  */
228493  /* */
228494 
228495  public:
228496 
228497  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
228498  // to current node (so that it will work cleanly with build functions to specify patterns).
228499  // virtual SgNode* addRegExpAttribute();
228506 
228507 // *** COMMON CODE SECTION ENDS HERE ***
228508 
228509 
228510 // End of memberFunctionString
228511 // Start of memberFunctionString
228512 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
228513 
228514  // the generated cast function
228515  // friend ROSE_DLL_API SgLockStatement* isSgLockStatement ( SgNode* s );
228516 
228518 
228519 
228520 // End of memberFunctionString
228521 // Start of memberFunctionString
228522 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
228523 
228524  void post_construction_initialization() override;
228525 
228526 
228527 // End of memberFunctionString
228528 
228529  public:
228530  SgExpression* get_lock_variable() const;
228531  void set_lock_variable(SgExpression* lock_variable);
228532 
228533 
228534  public:
228535  virtual ~SgLockStatement();
228536 
228537 
228538  public:
228539  SgLockStatement(Sg_File_Info* startOfConstruct , SgExpression* lock_variable = NULL);
228540  SgLockStatement(SgExpression* lock_variable);
228541 
228542  protected:
228543 // Start of memberFunctionString
228544 SgExpression* p_lock_variable;
228545 
228546 // End of memberFunctionString
228547 
228548 
228549 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
228550 
228551 
228552  };
228553 #endif
228554 
228555 // postdeclarations for SgLockStatement
228556 
228557 /* #line 228558 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
228558 
228559 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
228560 
228561 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
228562 
228563 
228564 /* #line 228565 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
228565 
228566 
228567 
228568 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
228569 
228570 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
228571 // This code is automatically generated for each
228572 // terminal and non-terminal within the defined
228573 // grammar. There is a simple way to change the
228574 // code to fix bugs etc. See the ROSE README file
228575 // for directions.
228576 
228577 // tps: (02/22/2010): Adding DLL export requirements
228578 #include "rosedll.h"
228579 
228580 // predeclarations for SgUnlockStatement
228581 
228582 /* #line 228583 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
228583 
228584 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
228585 
228586 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
228587 
228588 #if 1
228589 // Class Definition for SgUnlockStatement
228590 class ROSE_DLL_API SgUnlockStatement : public SgImageControlStatement
228591  {
228592  public:
228593 
228594 
228595 /* #line 228596 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
228596 
228597  virtual SgNode* copy ( SgCopyHelp& help) const override;
228598 // Start of memberFunctionString
228599 /* #line 3496 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
228600 
228601 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
228602  virtual unsigned int cfgIndexForEnd() const override;
228603  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
228604  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
228605 #endif
228606 
228607 
228608 // End of memberFunctionString
228609 // Start of memberFunctionString
228610 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
228611 
228612 // *** COMMON CODE SECTION BEGINS HERE ***
228613 
228614  public:
228615 
228616  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
228617  // and not required which is required to match the other aspects of the copy mechanism code generation.
228618  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
228619  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
228620  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
228621  // virtual SgNode* copy ( const SgCopyHelp & help) const;
228622 
228624  virtual std::string class_name() const override;
228625 
228627  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
228628 
228630  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
228631  // static const VariantT static_variant = V_SgUnlockStatement;
228632  enum { static_variant = V_SgUnlockStatement };
228633 
228634  /* the generated cast function */
228636  ROSE_DLL_API friend SgUnlockStatement* isSgUnlockStatement( SgNode * s );
228637 
228639  ROSE_DLL_API friend const SgUnlockStatement* isSgUnlockStatement( const SgNode * s );
228640 
228641  // ******************************************
228642  // * Memory Pool / New / Delete
228643  // ******************************************
228644 
228645  public:
228647  static const unsigned pool_size; //
228649  static std::vector<unsigned char *> pools; //
228651  static SgUnlockStatement * next_node; //
228652 
228654  static unsigned long initializeStorageClassArray(SgUnlockStatementStorageClass *); //
228655 
228657  static void clearMemoryPool(); //
228658  static void deleteMemoryPool(); //
228659 
228661  static void extendMemoryPoolForFileIO(); //
228662 
228664  static SgUnlockStatement * getPointerFromGlobalIndex(unsigned long); //
228666  static SgUnlockStatement * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
228667 
228669  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
228671  static void resetValidFreepointers(); //
228673  static unsigned long getNumberOfLastValidPointer(); //
228674 
228675 
228676 #if defined(INLINE_FUNCTIONS)
228677 
228678  inline void *operator new (size_t size);
228679 #else
228680 
228681  void *operator new (size_t size);
228682 #endif
228683 
228684  void operator delete (void* pointer, size_t size);
228685 
228686  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
228687  void operator delete (void* pointer)
228688  {
228689  // This is the generated delete operator...
228690  SgUnlockStatement::operator delete (pointer,sizeof(SgUnlockStatement));
228691  }
228692 
228694  static size_t numberOfNodes();
228695 
228697  static size_t memoryUsage();
228698 
228699  // End of scope which started in IR nodes specific code
228700  /* */
228701 
228702  /* name Internal Functions
228703  \brief Internal functions ... incomplete-documentation
228704 
228705  These functions have been made public as part of the design, but they are suggested for internal use
228706  or by particularly knowledgeable users for specialized tools or applications.
228707 
228708  \internal We could not make these private because they are required by user for special purposes. And
228709  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
228710 
228711  */
228712 
228713  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
228714  // overridden in every class by *generated* implementation
228716  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
228717  // MS: 06/28/02 container of names of variables or container indices
228718  // used used in the traversal to access AST successor nodes
228719  // overridden in every class by *generated* implementation
228722  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
228723 
228724  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
228725  // than all the vector copies. The implementation for these functions is generated for each class.
228727  virtual size_t get_numberOfTraversalSuccessors() override;
228729  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
228731  virtual size_t get_childIndex(SgNode *child) override;
228732 
228733 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
228734  // MS: 08/16/2002 method for generating RTI information
228736  virtual RTIReturnType roseRTI() override;
228737 #endif
228738  /* */
228739 
228740 
228741 
228742  /* name Deprecated Functions
228743  \brief Deprecated functions ... incomplete-documentation
228744 
228745  These functions have been deprecated from use.
228746  */
228747  /* */
228748 
228750  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
228751 
228752  // JJW (10/16/2008): Changed to a single function in Node.code, and put
228753  // getVariant() in #if 0 block to prevent confusing Doxygen
228754 #if 0
228755 
228756  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
228758  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
228759 #endif
228760  /* */
228761 
228762 
228763 
228764 
228765  public:
228766  /* name Traversal Support Functions
228767  \brief Traversal support functions ... incomplete-documentation
228768 
228769  These functions have been made public as part of the design, but they are suggested for internal use
228770  or by particularly knowledgable users for specialized tools or applications.
228771  */
228772  /* */
228773 
228774  // DQ (11/26/2005): Support for visitor pattern mechanims
228775  // (inferior to ROSE traversal mechanism, experimental).
228779 
228780  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
228782  virtual void accept (ROSE_VisitorPattern & visitor) override;
228783 
228784  // DQ (12/26/2005): Support for traversal based on the memory pool
228787  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
228788 
228791  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
228792 
228793  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
228794  // This traversal helps support internal tools that call static member functions.
228795  // note: this function operates on the memory pools.
228798  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
228799  /* */
228800 
228801 
228802  public:
228803  /* name Memory Allocation Functions
228804  \brief Memory allocations functions ... incomplete-documentation
228805 
228806  These functions have been made public as part of the design, but they are suggested for internal use
228807  or by particularly knowledgable users for specialized tools or applications.
228808  */
228809  /* */
228810 
228821  virtual bool isInMemoryPool() override;
228822 
228833  virtual void checkDataMemberPointersIfInMemoryPool() override;
228834 
228835  // DQ (4/30/2006): Modified to be a const function.
228850  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
228851 
228861  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
228862 
228874  virtual long getChildIndex( SgNode* childNode ) const override;
228875 
228876  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
228877  // comment here (changed to be a C style comment and not be a doxygen comment).
228878  /* \brief Constructor for use by AST File I/O Mechanism
228879 
228880  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
228881  which obtained via fast binary file I/O from disk.
228882  */
228883  // SgUnlockStatement( SgUnlockStatementStorageClass& source );
228884 
228885 
228886 
228887 
228888 
228889  // JH (10/24/2005): methods added to support the ast file IO
228890  private:
228891 
228892  /* name AST Memory Allocation Support Functions
228893  \brief Memory allocations support....
228894 
228895  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
228896  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
228897  and support the AST File I/O Mechanism.
228898  */
228899  /* */
228900 
228901  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
228902  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
228903  that I use the same type everywhere, if any changes are made. THe second one declares the type
228904  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
228905  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
228906  a correspinding one in the AST_FILE_IO class!
228907  */
228908  // DQ (9/2/2015): This typedef is no longer used, we can't define the
228909  // comment here (changed to be a C style comment and not be a doxygen comment).
228910  /* \brief Typedef used for low level memory access.
228911  */
228912  // typedef unsigned char* TestType;
228913 
228914  // DQ (9/2/2015): This typedef is no longer used, we can't define the
228915  // comment here (changed to be a C style comment and not be a doxygen comment).
228916  /* \brief Typedef used to hold memory addresses as values.
228917  */
228918  // typedef unsigned long AddressType;
228919 
228920 
228921 
228922  // necessary, to have direct access to the p_freepointer and the private methods !
228924  friend class AST_FILE_IO;
228925 
228927  friend class SgUnlockStatementStorageClass;
228928 
228930  friend class AstSpecificDataManagingClass;
228931 
228933  friend class AstSpecificDataManagingClassStorageClass;
228934 
228935  public:
228937  SgUnlockStatement( const SgUnlockStatementStorageClass& source );
228938 
228939  // private: // JJW hack
228940  /*
228941  name AST Memory Allocation Support Variables
228942  Memory allocations support variables
228943 
228944  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
228945  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
228946  and support the AST File I/O Mechanism.
228947  */
228948  /* */
228949 
228950  public:
228951 
228952  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
228953  // to current node (so that it will work cleanly with build functions to specify patterns).
228954  // virtual SgNode* addRegExpAttribute();
228961 
228962 // *** COMMON CODE SECTION ENDS HERE ***
228963 
228964 
228965 // End of memberFunctionString
228966 // Start of memberFunctionString
228967 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
228968 
228969  // the generated cast function
228970  // friend ROSE_DLL_API SgUnlockStatement* isSgUnlockStatement ( SgNode* s );
228971 
228973 
228974 
228975 // End of memberFunctionString
228976 // Start of memberFunctionString
228977 /* #line 740 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Statement.code" */
228978 
228979  void post_construction_initialization() override;
228980 
228981 
228982 // End of memberFunctionString
228983 
228984  public:
228985  SgExpression* get_lock_variable() const;
228986  void set_lock_variable(SgExpression* lock_variable);
228987 
228988 
228989  public:
228990  virtual ~SgUnlockStatement();
228991 
228992 
228993  public:
228994  SgUnlockStatement(Sg_File_Info* startOfConstruct , SgExpression* lock_variable = NULL);
228995  SgUnlockStatement(SgExpression* lock_variable);
228996 
228997  protected:
228998 // Start of memberFunctionString
228999 SgExpression* p_lock_variable;
229000 
229001 // End of memberFunctionString
229002 
229003 
229004 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
229005 
229006 
229007  };
229008 #endif
229009 
229010 // postdeclarations for SgUnlockStatement
229011 
229012 /* #line 229013 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
229013 
229014 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
229015 
229016 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
229017 
229018 
229019 /* #line 229020 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
229020 
229021 
229022 
229023 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
229024 
229025 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
229026 // This code is automatically generated for each
229027 // terminal and non-terminal within the defined
229028 // grammar. There is a simple way to change the
229029 // code to fix bugs etc. See the ROSE README file
229030 // for directions.
229031 
229032 // tps: (02/22/2010): Adding DLL export requirements
229033 #include "rosedll.h"
229034 
229035 // predeclarations for SgExpression
229036 
229037 /* #line 229038 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
229038 
229039 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
229040 
229041 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
229042 
229043 #if 1
229044 // Class Definition for SgExpression
229045 class ROSE_DLL_API SgExpression : public SgLocatedNode
229046  {
229047  public:
229048 
229049 
229050 /* #line 229051 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
229051 
229052  virtual SgNode* copy ( SgCopyHelp& help) const override;
229053 // Start of memberFunctionString
229054 /* #line 7 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
229055 
229056 
229058 
229060  public:
229061  // SgExpression();
229062  // SgExpression(Sg_File_Info* info);
229063 
229065  // SgAttributePtrList& get_uattributes();
229066 
229068  virtual int replace_expression(SgExpression *oldChild,SgExpression *newChild);
229069 
229071  // void output_pragma(ostream& os);
229072 
229073  // Set pragmas associated with this expression
229074  // note: pragmas are typically associated with statements not expressions
229075  // void set_pragma() ROSE_DEPRECATED_FUNCTION;
229076 
229078  virtual SgType* get_type() const;
229079 
229080  // set the type \attention{why does this not take a parameter?}
229081  // DQ (1/14/2006): Because the type is computed internally (often from operands stored internally).
229082  // virtual void set_type();
229083 
229085  virtual int precedence() const ;
229086 
229087  // DQ (8/21/2004): Support for pragmas (this is the old Sage II support for pragmas)
229088  // It is largely redundant to the newer statement based pragma support. However, this
229089  // is support for pragmas on a expression level. I'm not clear if this is important
229090  // to support.
229091  // void add_pragma(int cnt, SgPragma** plist);
229092  // SgPragma* add_pragma(char *nm);
229093  // SgPragma* get_pragma(char *nm) const;
229094  // int remove_pragma(char *nm);
229095 
229096  // get attribute
229097  // SgAttribute* get_user_attribute(char *nm) const;
229098  // SgAttribute* add_user_attribute(char *nm, SgAttribute* attr);
229099  // int remove_user_attribute(char *nm);
229100 
229101  public:
229102 
229103 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
229104  // Overriding SgNode versions of these
229105  virtual unsigned int cfgIndexForEnd() const override;
229106  virtual bool cfgIsIndexInteresting(unsigned int index) const override;
229107  virtual unsigned int cfgFindChildIndex(SgNode* n) override;
229108  virtual unsigned int cfgFindNextChildIndex(SgNode* n) override;
229109  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
229110  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
229111 #endif
229112 
229113  // get lvalue
229114  virtual bool isDefinable() const;
229115  virtual bool isUsedAsDefinable() const;
229116  virtual bool isLValue() const;
229117  virtual bool isUsedAsLValue() const; // Calls parent.isChildUsedAsLValue(this)
229118  virtual bool isChildUsedAsLValue(const SgExpression* child) const; // INTERNAL Recursively call up the chain to answer the child
229119 
229120  // DQ (11/6/2006): use this to return the operatorPosition
229121  // (instead of the startOfConstruct as it is used for SgStatement objects)
229122  virtual Sg_File_Info* get_file_info(void) const override;
229123  virtual void set_file_info(Sg_File_Info* X) override;
229124 
229125 #if ALT_FIXUP_COPY
229126  // DQ (11/7/2007): These need to be called separately (see documentation)
229127  virtual void fixupCopy_scopes (SgNode* copy, SgCopyHelp & help) const override;
229128  virtual void fixupCopy_symbols (SgNode* copy, SgCopyHelp & help) const override;
229129  virtual void fixupCopy_references (SgNode* copy, SgCopyHelp & help) const override;
229130 #else
229131  // DQ (11/1/2007): Added fixup function to set scopes not set properly by the ROSETTA generated copy!
229132  virtual void fixupCopy(SgNode* copy, SgCopyHelp & help) const;
229133 #endif
229134 
229135  // DQ (5/29/2011): Added to support for new qualified name generation
229137  SgName get_qualified_name_prefix() const;
229138 
229139  // DQ (6/2/2011): Added to support for new qualified name generation
229141  SgName get_qualified_name_prefix_for_referenced_type() const;
229142 
229143  // DQ (6/2/2011): Added virtual functions so that we can define specialized versions at specific IR nodes.
229144  virtual int get_name_qualification_length () const;
229145  virtual void set_name_qualification_length ( int name_qualification_length );
229146  virtual bool get_type_elaboration_required () const;
229147  virtual void set_type_elaboration_required ( bool type_elaboration_required );
229148  virtual bool get_global_qualification_required () const;
229149  virtual void set_global_qualification_required ( bool global_qualification_required );
229150 
229151  // DQ (4/16/2019): Added virtual functions so that we can define specialized versions at specific IR nodes.
229152  virtual int get_name_qualification_for_pointer_to_member_class_length () const;
229153  virtual void set_name_qualification_for_pointer_to_member_class_length ( int name_qualification_length );
229154  virtual bool get_type_elaboration_for_pointer_to_member_class_required () const;
229155  virtual void set_type_elaboration_for_pointer_to_member_class_required ( bool type_elaboration_required );
229156  virtual bool get_global_qualification_for_pointer_to_member_class_required () const;
229157  virtual void set_global_qualification_for_pointer_to_member_class_required ( bool global_qualification_required );
229158 
229159  // DQ (9/23/2011): Use the vitual function version so that we can test within ROSE (part of incremental testing of new original expression tree support).
229160  // DQ (9/19/2011): Put back the original code (non-virtual functions) so that we can test against previously passing tests.
229161  // DQ (9/16/2011): Modified to make this a virtual function and added set_originalExpressionTree().
229162  // DQ (6/21/2011): Get the original expression if this is an IR node where it is defined and it is a valid pointer.
229163 #if 1
229164  virtual SgExpression* get_originalExpressionTree() const;
229165 #else
229166  SgExpression* get_originalExpressionTree() const;
229167 #endif
229168 #if 1
229169  // DQ (9/19/2011): Modify this to be virtual as a single step for testing ROSE.
229170  virtual void set_originalExpressionTree(SgExpression* X);
229171 #else
229172  // DQ (9/19/2011): Added non-virtual set_originalExpressionTree() function so that code in fixupConstantFoldedValues.C would compile.
229173  void set_originalExpressionTree(SgExpression* X);
229174 #endif
229175 
229185  bool hasExplicitType();
229186 
229189  void set_explicitly_stored_type( SgType* type );
229190 
229191 
229192 
229193 // End of memberFunctionString
229194 // Start of memberFunctionString
229195 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
229196 
229197  void post_construction_initialization() override;
229198 
229199 
229200 // End of memberFunctionString
229201 // Start of memberFunctionString
229202 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
229203 
229204 // *** COMMON CODE SECTION BEGINS HERE ***
229205 
229206  public:
229207 
229208  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
229209  // and not required which is required to match the other aspects of the copy mechanism code generation.
229210  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
229211  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
229212  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
229213  // virtual SgNode* copy ( const SgCopyHelp & help) const;
229214 
229216  virtual std::string class_name() const override;
229217 
229219  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
229220 
229222  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
229223  // static const VariantT static_variant = V_SgExpression;
229224  enum { static_variant = V_SgExpression };
229225 
229226  /* the generated cast function */
229228  ROSE_DLL_API friend SgExpression* isSgExpression( SgNode * s );
229229 
229231  ROSE_DLL_API friend const SgExpression* isSgExpression( const SgNode * s );
229232 
229233  // ******************************************
229234  // * Memory Pool / New / Delete
229235  // ******************************************
229236 
229237  public:
229239  static const unsigned pool_size; //
229241  static std::vector<unsigned char *> pools; //
229243  static SgExpression * next_node; //
229244 
229246  static unsigned long initializeStorageClassArray(SgExpressionStorageClass *); //
229247 
229249  static void clearMemoryPool(); //
229250  static void deleteMemoryPool(); //
229251 
229253  static void extendMemoryPoolForFileIO(); //
229254 
229256  static SgExpression * getPointerFromGlobalIndex(unsigned long); //
229258  static SgExpression * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
229259 
229261  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
229263  static void resetValidFreepointers(); //
229265  static unsigned long getNumberOfLastValidPointer(); //
229266 
229267 
229268 #if defined(INLINE_FUNCTIONS)
229269 
229270  inline void *operator new (size_t size);
229271 #else
229272 
229273  void *operator new (size_t size);
229274 #endif
229275 
229276  void operator delete (void* pointer, size_t size);
229277 
229278  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
229279  void operator delete (void* pointer)
229280  {
229281  // This is the generated delete operator...
229282  SgExpression::operator delete (pointer,sizeof(SgExpression));
229283  }
229284 
229286  static size_t numberOfNodes();
229287 
229289  static size_t memoryUsage();
229290 
229291  // End of scope which started in IR nodes specific code
229292  /* */
229293 
229294  /* name Internal Functions
229295  \brief Internal functions ... incomplete-documentation
229296 
229297  These functions have been made public as part of the design, but they are suggested for internal use
229298  or by particularly knowledgeable users for specialized tools or applications.
229299 
229300  \internal We could not make these private because they are required by user for special purposes. And
229301  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
229302 
229303  */
229304 
229305  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
229306  // overridden in every class by *generated* implementation
229308  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
229309  // MS: 06/28/02 container of names of variables or container indices
229310  // used used in the traversal to access AST successor nodes
229311  // overridden in every class by *generated* implementation
229314  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
229315 
229316  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
229317  // than all the vector copies. The implementation for these functions is generated for each class.
229319  virtual size_t get_numberOfTraversalSuccessors() override;
229321  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
229323  virtual size_t get_childIndex(SgNode *child) override;
229324 
229325 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
229326  // MS: 08/16/2002 method for generating RTI information
229328  virtual RTIReturnType roseRTI() override;
229329 #endif
229330  /* */
229331 
229332 
229333 
229334  /* name Deprecated Functions
229335  \brief Deprecated functions ... incomplete-documentation
229336 
229337  These functions have been deprecated from use.
229338  */
229339  /* */
229340 
229342  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
229343 
229344  // JJW (10/16/2008): Changed to a single function in Node.code, and put
229345  // getVariant() in #if 0 block to prevent confusing Doxygen
229346 #if 0
229347 
229348  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
229350  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
229351 #endif
229352  /* */
229353 
229354 
229355 
229356 
229357  public:
229358  /* name Traversal Support Functions
229359  \brief Traversal support functions ... incomplete-documentation
229360 
229361  These functions have been made public as part of the design, but they are suggested for internal use
229362  or by particularly knowledgable users for specialized tools or applications.
229363  */
229364  /* */
229365 
229366  // DQ (11/26/2005): Support for visitor pattern mechanims
229367  // (inferior to ROSE traversal mechanism, experimental).
229371 
229372  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
229374  virtual void accept (ROSE_VisitorPattern & visitor) override;
229375 
229376  // DQ (12/26/2005): Support for traversal based on the memory pool
229379  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
229380 
229383  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
229384 
229385  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
229386  // This traversal helps support internal tools that call static member functions.
229387  // note: this function operates on the memory pools.
229390  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
229391  /* */
229392 
229393 
229394  public:
229395  /* name Memory Allocation Functions
229396  \brief Memory allocations functions ... incomplete-documentation
229397 
229398  These functions have been made public as part of the design, but they are suggested for internal use
229399  or by particularly knowledgable users for specialized tools or applications.
229400  */
229401  /* */
229402 
229413  virtual bool isInMemoryPool() override;
229414 
229425  virtual void checkDataMemberPointersIfInMemoryPool() override;
229426 
229427  // DQ (4/30/2006): Modified to be a const function.
229442  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
229443 
229453  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
229454 
229466  virtual long getChildIndex( SgNode* childNode ) const override;
229467 
229468  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
229469  // comment here (changed to be a C style comment and not be a doxygen comment).
229470  /* \brief Constructor for use by AST File I/O Mechanism
229471 
229472  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
229473  which obtained via fast binary file I/O from disk.
229474  */
229475  // SgExpression( SgExpressionStorageClass& source );
229476 
229477 
229478 
229479 
229480 
229481  // JH (10/24/2005): methods added to support the ast file IO
229482  private:
229483 
229484  /* name AST Memory Allocation Support Functions
229485  \brief Memory allocations support....
229486 
229487  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
229488  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
229489  and support the AST File I/O Mechanism.
229490  */
229491  /* */
229492 
229493  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
229494  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
229495  that I use the same type everywhere, if any changes are made. THe second one declares the type
229496  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
229497  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
229498  a correspinding one in the AST_FILE_IO class!
229499  */
229500  // DQ (9/2/2015): This typedef is no longer used, we can't define the
229501  // comment here (changed to be a C style comment and not be a doxygen comment).
229502  /* \brief Typedef used for low level memory access.
229503  */
229504  // typedef unsigned char* TestType;
229505 
229506  // DQ (9/2/2015): This typedef is no longer used, we can't define the
229507  // comment here (changed to be a C style comment and not be a doxygen comment).
229508  /* \brief Typedef used to hold memory addresses as values.
229509  */
229510  // typedef unsigned long AddressType;
229511 
229512 
229513 
229514  // necessary, to have direct access to the p_freepointer and the private methods !
229516  friend class AST_FILE_IO;
229517 
229519  friend class SgExpressionStorageClass;
229520 
229522  friend class AstSpecificDataManagingClass;
229523 
229525  friend class AstSpecificDataManagingClassStorageClass;
229526 
229527  public:
229529  SgExpression( const SgExpressionStorageClass& source );
229530 
229531  // private: // JJW hack
229532  /*
229533  name AST Memory Allocation Support Variables
229534  Memory allocations support variables
229535 
229536  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
229537  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
229538  and support the AST File I/O Mechanism.
229539  */
229540  /* */
229541 
229542  public:
229543 
229544  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
229545  // to current node (so that it will work cleanly with build functions to specify patterns).
229546  // virtual SgNode* addRegExpAttribute();
229552  SgExpression* addRegExpAttribute(std::string s, AstRegExAttribute* a);
229553 
229554 // *** COMMON CODE SECTION ENDS HERE ***
229555 
229556 
229557 // End of memberFunctionString
229558 // Start of memberFunctionString
229559 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
229560 
229561  // the generated cast function
229562  // friend ROSE_DLL_API SgExpression* isSgExpression ( SgNode* s );
229563 
229564  typedef SgLocatedNode base_node_type;
229565 
229566 
229567 // End of memberFunctionString
229568 
229569  public:
229570  bool get_need_paren() const;
229571  void set_need_paren(bool need_paren);
229572 
229573  public:
229574  bool get_lvalue() const;
229575  void set_lvalue(bool lvalue);
229576 
229577  public:
229578  bool get_global_qualified_name() const;
229579  void set_global_qualified_name(bool global_qualified_name);
229580 
229581  public:
229582  Sg_File_Info* get_operatorPosition() const;
229583  void set_operatorPosition(Sg_File_Info* operatorPosition);
229584 
229585 
229586  public:
229587  virtual ~SgExpression();
229588 
229589 
229590  public:
229591  SgExpression(Sg_File_Info* startOfConstruct );
229592  SgExpression();
229593 
229594  protected:
229595 // Start of memberFunctionString
229597 
229598 // End of memberFunctionString
229599 // Start of memberFunctionString
229601 
229602 // End of memberFunctionString
229603 // Start of memberFunctionString
229604 bool p_global_qualified_name;
229605 
229606 // End of memberFunctionString
229607 // Start of memberFunctionString
229608 Sg_File_Info* p_operatorPosition;
229609 
229610 // End of memberFunctionString
229611 
229612 
229613 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
229614 
229615 
229616  };
229617 #endif
229618 
229619 // postdeclarations for SgExpression
229620 
229621 /* #line 229622 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
229622 
229623 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
229624 
229625 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
229626 
229627 
229628 /* #line 229629 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
229629 
229630 
229631 
229632 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
229633 
229634 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
229635 // This code is automatically generated for each
229636 // terminal and non-terminal within the defined
229637 // grammar. There is a simple way to change the
229638 // code to fix bugs etc. See the ROSE README file
229639 // for directions.
229640 
229641 // tps: (02/22/2010): Adding DLL export requirements
229642 #include "rosedll.h"
229643 
229644 // predeclarations for SgUnaryOp
229645 
229646 /* #line 229647 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
229647 
229648 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
229649 
229650 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
229651 
229652 #if 1
229653 // Class Definition for SgUnaryOp
229654 class ROSE_DLL_API SgUnaryOp : public SgExpression
229655  {
229656  public:
229657 
229658 
229659 /* #line 229660 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
229660 
229661  virtual SgNode* copy ( SgCopyHelp& help) const override;
229662 // Start of memberFunctionString
229663 /* #line 190 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
229664 
229665  int length() const ROSE_DEPRECATED_FUNCTION;
229666  bool empty() const ROSE_DEPRECATED_FUNCTION;
229667  // void operator_unparse( const char *, Unparse_Info &, ostream & );
229668 
229669 
229670 // End of memberFunctionString
229671 // Start of memberFunctionString
229672 /* #line 184 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
229673 
229674  SgExpression *get_next( int& n) const ROSE_DEPRECATED_FUNCTION;
229675  int replace_expression( SgExpression *, SgExpression *) override ROSE_DEPRECATED_FUNCTION;
229676 
229677 
229678 // End of memberFunctionString
229679 // Start of memberFunctionString
229680 /* #line 202 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
229681 
229682 
229683  SgExpression* get_operand() const;
229684  void set_operand (SgExpression * exp);
229685  SgType* get_type() const override;
229686 
229687  // Enums are not properly scoped in the class declaration and are assigned
229688  // to a global scope so we have to change the name to make it unique across
229689  // different grammars
229699  {
229700  prefix=0 ,
229701  postfix
229702  };
229703 
229704 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
229705  virtual unsigned int cfgIndexForEnd() const override;
229706  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
229707  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
229708 #endif
229709 
229710 
229711 
229712 // End of memberFunctionString
229713 // Start of memberFunctionString
229714 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
229715 
229716 // *** COMMON CODE SECTION BEGINS HERE ***
229717 
229718  public:
229719 
229720  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
229721  // and not required which is required to match the other aspects of the copy mechanism code generation.
229722  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
229723  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
229724  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
229725  // virtual SgNode* copy ( const SgCopyHelp & help) const;
229726 
229728  virtual std::string class_name() const override;
229729 
229731  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
229732 
229734  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
229735  // static const VariantT static_variant = V_SgUnaryOp;
229736  enum { static_variant = V_SgUnaryOp };
229737 
229738  /* the generated cast function */
229740  ROSE_DLL_API friend SgUnaryOp* isSgUnaryOp( SgNode * s );
229741 
229743  ROSE_DLL_API friend const SgUnaryOp* isSgUnaryOp( const SgNode * s );
229744 
229745  // ******************************************
229746  // * Memory Pool / New / Delete
229747  // ******************************************
229748 
229749  public:
229751  static const unsigned pool_size; //
229753  static std::vector<unsigned char *> pools; //
229755  static SgUnaryOp * next_node; //
229756 
229758  static unsigned long initializeStorageClassArray(SgUnaryOpStorageClass *); //
229759 
229761  static void clearMemoryPool(); //
229762  static void deleteMemoryPool(); //
229763 
229765  static void extendMemoryPoolForFileIO(); //
229766 
229768  static SgUnaryOp * getPointerFromGlobalIndex(unsigned long); //
229770  static SgUnaryOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
229771 
229773  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
229775  static void resetValidFreepointers(); //
229777  static unsigned long getNumberOfLastValidPointer(); //
229778 
229779 
229780 #if defined(INLINE_FUNCTIONS)
229781 
229782  inline void *operator new (size_t size);
229783 #else
229784 
229785  void *operator new (size_t size);
229786 #endif
229787 
229788  void operator delete (void* pointer, size_t size);
229789 
229790  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
229791  void operator delete (void* pointer)
229792  {
229793  // This is the generated delete operator...
229794  SgUnaryOp::operator delete (pointer,sizeof(SgUnaryOp));
229795  }
229796 
229798  static size_t numberOfNodes();
229799 
229801  static size_t memoryUsage();
229802 
229803  // End of scope which started in IR nodes specific code
229804  /* */
229805 
229806  /* name Internal Functions
229807  \brief Internal functions ... incomplete-documentation
229808 
229809  These functions have been made public as part of the design, but they are suggested for internal use
229810  or by particularly knowledgeable users for specialized tools or applications.
229811 
229812  \internal We could not make these private because they are required by user for special purposes. And
229813  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
229814 
229815  */
229816 
229817  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
229818  // overridden in every class by *generated* implementation
229820  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
229821  // MS: 06/28/02 container of names of variables or container indices
229822  // used used in the traversal to access AST successor nodes
229823  // overridden in every class by *generated* implementation
229826  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
229827 
229828  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
229829  // than all the vector copies. The implementation for these functions is generated for each class.
229831  virtual size_t get_numberOfTraversalSuccessors() override;
229833  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
229835  virtual size_t get_childIndex(SgNode *child) override;
229836 
229837 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
229838  // MS: 08/16/2002 method for generating RTI information
229840  virtual RTIReturnType roseRTI() override;
229841 #endif
229842  /* */
229843 
229844 
229845 
229846  /* name Deprecated Functions
229847  \brief Deprecated functions ... incomplete-documentation
229848 
229849  These functions have been deprecated from use.
229850  */
229851  /* */
229852 
229854  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
229855 
229856  // JJW (10/16/2008): Changed to a single function in Node.code, and put
229857  // getVariant() in #if 0 block to prevent confusing Doxygen
229858 #if 0
229859 
229860  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
229862  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
229863 #endif
229864  /* */
229865 
229866 
229867 
229868 
229869  public:
229870  /* name Traversal Support Functions
229871  \brief Traversal support functions ... incomplete-documentation
229872 
229873  These functions have been made public as part of the design, but they are suggested for internal use
229874  or by particularly knowledgable users for specialized tools or applications.
229875  */
229876  /* */
229877 
229878  // DQ (11/26/2005): Support for visitor pattern mechanims
229879  // (inferior to ROSE traversal mechanism, experimental).
229883 
229884  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
229886  virtual void accept (ROSE_VisitorPattern & visitor) override;
229887 
229888  // DQ (12/26/2005): Support for traversal based on the memory pool
229891  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
229892 
229895  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
229896 
229897  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
229898  // This traversal helps support internal tools that call static member functions.
229899  // note: this function operates on the memory pools.
229902  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
229903  /* */
229904 
229905 
229906  public:
229907  /* name Memory Allocation Functions
229908  \brief Memory allocations functions ... incomplete-documentation
229909 
229910  These functions have been made public as part of the design, but they are suggested for internal use
229911  or by particularly knowledgable users for specialized tools or applications.
229912  */
229913  /* */
229914 
229925  virtual bool isInMemoryPool() override;
229926 
229937  virtual void checkDataMemberPointersIfInMemoryPool() override;
229938 
229939  // DQ (4/30/2006): Modified to be a const function.
229954  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
229955 
229965  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
229966 
229978  virtual long getChildIndex( SgNode* childNode ) const override;
229979 
229980  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
229981  // comment here (changed to be a C style comment and not be a doxygen comment).
229982  /* \brief Constructor for use by AST File I/O Mechanism
229983 
229984  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
229985  which obtained via fast binary file I/O from disk.
229986  */
229987  // SgUnaryOp( SgUnaryOpStorageClass& source );
229988 
229989 
229990 
229991 
229992 
229993  // JH (10/24/2005): methods added to support the ast file IO
229994  private:
229995 
229996  /* name AST Memory Allocation Support Functions
229997  \brief Memory allocations support....
229998 
229999  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
230000  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
230001  and support the AST File I/O Mechanism.
230002  */
230003  /* */
230004 
230005  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
230006  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
230007  that I use the same type everywhere, if any changes are made. THe second one declares the type
230008  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
230009  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
230010  a correspinding one in the AST_FILE_IO class!
230011  */
230012  // DQ (9/2/2015): This typedef is no longer used, we can't define the
230013  // comment here (changed to be a C style comment and not be a doxygen comment).
230014  /* \brief Typedef used for low level memory access.
230015  */
230016  // typedef unsigned char* TestType;
230017 
230018  // DQ (9/2/2015): This typedef is no longer used, we can't define the
230019  // comment here (changed to be a C style comment and not be a doxygen comment).
230020  /* \brief Typedef used to hold memory addresses as values.
230021  */
230022  // typedef unsigned long AddressType;
230023 
230024 
230025 
230026  // necessary, to have direct access to the p_freepointer and the private methods !
230028  friend class AST_FILE_IO;
230029 
230031  friend class SgUnaryOpStorageClass;
230032 
230034  friend class AstSpecificDataManagingClass;
230035 
230037  friend class AstSpecificDataManagingClassStorageClass;
230038 
230039  public:
230041  SgUnaryOp( const SgUnaryOpStorageClass& source );
230042 
230043  // private: // JJW hack
230044  /*
230045  name AST Memory Allocation Support Variables
230046  Memory allocations support variables
230047 
230048  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
230049  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
230050  and support the AST File I/O Mechanism.
230051  */
230052  /* */
230053 
230054  public:
230055 
230056  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
230057  // to current node (so that it will work cleanly with build functions to specify patterns).
230058  // virtual SgNode* addRegExpAttribute();
230064  SgUnaryOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
230065 
230066 // *** COMMON CODE SECTION ENDS HERE ***
230067 
230068 
230069 // End of memberFunctionString
230070 // Start of memberFunctionString
230071 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
230072 
230073  // the generated cast function
230074  // friend ROSE_DLL_API SgUnaryOp* isSgUnaryOp ( SgNode* s );
230075 
230076  typedef SgExpression base_node_type;
230077 
230078 
230079 // End of memberFunctionString
230080 // Start of memberFunctionString
230081 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
230082 
230083  void post_construction_initialization() override;
230084 
230085 
230086 // End of memberFunctionString
230087 
230088  public:
230089  SgExpression* get_operand_i() const;
230090  void set_operand_i(SgExpression* operand_i);
230091 
230092 
230093  public:
230094  SgUnaryOp::Sgop_mode get_mode() const;
230095  void set_mode(SgUnaryOp::Sgop_mode mode);
230096 
230097 
230098  public:
230099  virtual ~SgUnaryOp();
230100 
230101 
230102  public:
230103  SgUnaryOp(Sg_File_Info* startOfConstruct , SgExpression* operand_i = NULL, SgType* expression_type = NULL);
230104  SgUnaryOp(SgExpression* operand_i, SgType* expression_type);
230105 
230106  protected:
230107 // Start of memberFunctionString
230109 
230110 // End of memberFunctionString
230111 // Start of memberFunctionString
230113 
230114 // End of memberFunctionString
230115 // Start of memberFunctionString
230117 
230118 // End of memberFunctionString
230119 
230120 
230121 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
230122 
230123 
230124  };
230125 #endif
230126 
230127 // postdeclarations for SgUnaryOp
230128 
230129 /* #line 230130 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
230130 
230131 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
230132 
230133 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
230134 
230135 
230136 /* #line 230137 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
230137 
230138 
230139 
230140 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
230141 
230142 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
230143 // This code is automatically generated for each
230144 // terminal and non-terminal within the defined
230145 // grammar. There is a simple way to change the
230146 // code to fix bugs etc. See the ROSE README file
230147 // for directions.
230148 
230149 // tps: (02/22/2010): Adding DLL export requirements
230150 #include "rosedll.h"
230151 
230152 // predeclarations for SgExpressionRoot
230153 
230154 /* #line 230155 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
230155 
230156 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
230157 
230158 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
230159 
230160 #if 1
230161 // Class Definition for SgExpressionRoot
230162 class ROSE_DLL_API SgExpressionRoot : public SgUnaryOp
230163  {
230164  public:
230165 
230166 
230167 /* #line 230168 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
230168 
230169  virtual SgNode* copy ( SgCopyHelp& help) const override;
230170 // Start of memberFunctionString
230171 /* #line 249 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
230172 
230173  // QY: 9/30/2004: removed stmt pointer inside exprRoot. Use parent pointer instead.
230174  // void initialize_root (SgExpression* exp, SgStatement* stmt);
230175 
230176  // DQ (12/17/2006): Removed to clean up code (not used, I think).
230177  // void set_statement( SgStatement* stmt );
230178  // SgStatement* get_statement() const;
230179 
230180 
230181 
230182 // End of memberFunctionString
230183 // Start of memberFunctionString
230184 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
230185 
230186 // *** COMMON CODE SECTION BEGINS HERE ***
230187 
230188  public:
230189 
230190  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
230191  // and not required which is required to match the other aspects of the copy mechanism code generation.
230192  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
230193  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
230194  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
230195  // virtual SgNode* copy ( const SgCopyHelp & help) const;
230196 
230198  virtual std::string class_name() const override;
230199 
230201  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
230202 
230204  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
230205  // static const VariantT static_variant = V_SgExpressionRoot;
230206  enum { static_variant = V_SgExpressionRoot };
230207 
230208  /* the generated cast function */
230210  ROSE_DLL_API friend SgExpressionRoot* isSgExpressionRoot( SgNode * s );
230211 
230213  ROSE_DLL_API friend const SgExpressionRoot* isSgExpressionRoot( const SgNode * s );
230214 
230215  // ******************************************
230216  // * Memory Pool / New / Delete
230217  // ******************************************
230218 
230219  public:
230221  static const unsigned pool_size; //
230223  static std::vector<unsigned char *> pools; //
230225  static SgExpressionRoot * next_node; //
230226 
230228  static unsigned long initializeStorageClassArray(SgExpressionRootStorageClass *); //
230229 
230231  static void clearMemoryPool(); //
230232  static void deleteMemoryPool(); //
230233 
230235  static void extendMemoryPoolForFileIO(); //
230236 
230238  static SgExpressionRoot * getPointerFromGlobalIndex(unsigned long); //
230240  static SgExpressionRoot * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
230241 
230243  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
230245  static void resetValidFreepointers(); //
230247  static unsigned long getNumberOfLastValidPointer(); //
230248 
230249 
230250 #if defined(INLINE_FUNCTIONS)
230251 
230252  inline void *operator new (size_t size);
230253 #else
230254 
230255  void *operator new (size_t size);
230256 #endif
230257 
230258  void operator delete (void* pointer, size_t size);
230259 
230260  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
230261  void operator delete (void* pointer)
230262  {
230263  // This is the generated delete operator...
230264  SgExpressionRoot::operator delete (pointer,sizeof(SgExpressionRoot));
230265  }
230266 
230268  static size_t numberOfNodes();
230269 
230271  static size_t memoryUsage();
230272 
230273  // End of scope which started in IR nodes specific code
230274  /* */
230275 
230276  /* name Internal Functions
230277  \brief Internal functions ... incomplete-documentation
230278 
230279  These functions have been made public as part of the design, but they are suggested for internal use
230280  or by particularly knowledgeable users for specialized tools or applications.
230281 
230282  \internal We could not make these private because they are required by user for special purposes. And
230283  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
230284 
230285  */
230286 
230287  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
230288  // overridden in every class by *generated* implementation
230290  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
230291  // MS: 06/28/02 container of names of variables or container indices
230292  // used used in the traversal to access AST successor nodes
230293  // overridden in every class by *generated* implementation
230296  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
230297 
230298  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
230299  // than all the vector copies. The implementation for these functions is generated for each class.
230301  virtual size_t get_numberOfTraversalSuccessors() override;
230303  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
230305  virtual size_t get_childIndex(SgNode *child) override;
230306 
230307 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
230308  // MS: 08/16/2002 method for generating RTI information
230310  virtual RTIReturnType roseRTI() override;
230311 #endif
230312  /* */
230313 
230314 
230315 
230316  /* name Deprecated Functions
230317  \brief Deprecated functions ... incomplete-documentation
230318 
230319  These functions have been deprecated from use.
230320  */
230321  /* */
230322 
230324  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
230325 
230326  // JJW (10/16/2008): Changed to a single function in Node.code, and put
230327  // getVariant() in #if 0 block to prevent confusing Doxygen
230328 #if 0
230329 
230330  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
230332  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
230333 #endif
230334  /* */
230335 
230336 
230337 
230338 
230339  public:
230340  /* name Traversal Support Functions
230341  \brief Traversal support functions ... incomplete-documentation
230342 
230343  These functions have been made public as part of the design, but they are suggested for internal use
230344  or by particularly knowledgable users for specialized tools or applications.
230345  */
230346  /* */
230347 
230348  // DQ (11/26/2005): Support for visitor pattern mechanims
230349  // (inferior to ROSE traversal mechanism, experimental).
230353 
230354  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
230356  virtual void accept (ROSE_VisitorPattern & visitor) override;
230357 
230358  // DQ (12/26/2005): Support for traversal based on the memory pool
230361  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
230362 
230365  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
230366 
230367  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
230368  // This traversal helps support internal tools that call static member functions.
230369  // note: this function operates on the memory pools.
230372  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
230373  /* */
230374 
230375 
230376  public:
230377  /* name Memory Allocation Functions
230378  \brief Memory allocations functions ... incomplete-documentation
230379 
230380  These functions have been made public as part of the design, but they are suggested for internal use
230381  or by particularly knowledgable users for specialized tools or applications.
230382  */
230383  /* */
230384 
230395  virtual bool isInMemoryPool() override;
230396 
230407  virtual void checkDataMemberPointersIfInMemoryPool() override;
230408 
230409  // DQ (4/30/2006): Modified to be a const function.
230424  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
230425 
230435  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
230436 
230448  virtual long getChildIndex( SgNode* childNode ) const override;
230449 
230450  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
230451  // comment here (changed to be a C style comment and not be a doxygen comment).
230452  /* \brief Constructor for use by AST File I/O Mechanism
230453 
230454  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
230455  which obtained via fast binary file I/O from disk.
230456  */
230457  // SgExpressionRoot( SgExpressionRootStorageClass& source );
230458 
230459 
230460 
230461 
230462 
230463  // JH (10/24/2005): methods added to support the ast file IO
230464  private:
230465 
230466  /* name AST Memory Allocation Support Functions
230467  \brief Memory allocations support....
230468 
230469  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
230470  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
230471  and support the AST File I/O Mechanism.
230472  */
230473  /* */
230474 
230475  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
230476  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
230477  that I use the same type everywhere, if any changes are made. THe second one declares the type
230478  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
230479  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
230480  a correspinding one in the AST_FILE_IO class!
230481  */
230482  // DQ (9/2/2015): This typedef is no longer used, we can't define the
230483  // comment here (changed to be a C style comment and not be a doxygen comment).
230484  /* \brief Typedef used for low level memory access.
230485  */
230486  // typedef unsigned char* TestType;
230487 
230488  // DQ (9/2/2015): This typedef is no longer used, we can't define the
230489  // comment here (changed to be a C style comment and not be a doxygen comment).
230490  /* \brief Typedef used to hold memory addresses as values.
230491  */
230492  // typedef unsigned long AddressType;
230493 
230494 
230495 
230496  // necessary, to have direct access to the p_freepointer and the private methods !
230498  friend class AST_FILE_IO;
230499 
230501  friend class SgExpressionRootStorageClass;
230502 
230504  friend class AstSpecificDataManagingClass;
230505 
230507  friend class AstSpecificDataManagingClassStorageClass;
230508 
230509  public:
230511  SgExpressionRoot( const SgExpressionRootStorageClass& source );
230512 
230513  // private: // JJW hack
230514  /*
230515  name AST Memory Allocation Support Variables
230516  Memory allocations support variables
230517 
230518  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
230519  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
230520  and support the AST File I/O Mechanism.
230521  */
230522  /* */
230523 
230524  public:
230525 
230526  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
230527  // to current node (so that it will work cleanly with build functions to specify patterns).
230528  // virtual SgNode* addRegExpAttribute();
230535 
230536 // *** COMMON CODE SECTION ENDS HERE ***
230537 
230538 
230539 // End of memberFunctionString
230540 // Start of memberFunctionString
230541 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
230542 
230543  // the generated cast function
230544  // friend ROSE_DLL_API SgExpressionRoot* isSgExpressionRoot ( SgNode* s );
230545 
230546  typedef SgUnaryOp base_node_type;
230547 
230548 
230549 // End of memberFunctionString
230550 // Start of memberFunctionString
230551 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
230552 
230553  void post_construction_initialization() override;
230554 
230555 
230556 // End of memberFunctionString
230557 
230558 
230559  public:
230560  virtual ~SgExpressionRoot();
230561 
230562 
230563  public:
230564  SgExpressionRoot(Sg_File_Info* startOfConstruct , SgExpression* operand_i = NULL, SgType* expression_type = NULL);
230565  SgExpressionRoot(SgExpression* operand_i, SgType* expression_type);
230566 
230567  protected:
230568 
230569 
230570 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
230571 
230572 
230573  };
230574 #endif
230575 
230576 // postdeclarations for SgExpressionRoot
230577 
230578 /* #line 230579 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
230579 
230580 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
230581 
230582 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
230583 
230584 
230585 /* #line 230586 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
230586 
230587 
230588 
230589 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
230590 
230591 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
230592 // This code is automatically generated for each
230593 // terminal and non-terminal within the defined
230594 // grammar. There is a simple way to change the
230595 // code to fix bugs etc. See the ROSE README file
230596 // for directions.
230597 
230598 // tps: (02/22/2010): Adding DLL export requirements
230599 #include "rosedll.h"
230600 
230601 // predeclarations for SgMinusOp
230602 
230603 /* #line 230604 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
230604 
230605 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
230606 
230607 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
230608 
230609 #if 1
230610 // Class Definition for SgMinusOp
230611 class ROSE_DLL_API SgMinusOp : public SgUnaryOp
230612  {
230613  public:
230614 
230615 
230616 /* #line 230617 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
230617 
230618  virtual SgNode* copy ( SgCopyHelp& help) const override;
230619 // Start of memberFunctionString
230620 /* #line 968 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
230621 
230622 
230623 
230624 // End of memberFunctionString
230625 // Start of memberFunctionString
230626 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
230627 
230628 // *** COMMON CODE SECTION BEGINS HERE ***
230629 
230630  public:
230631 
230632  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
230633  // and not required which is required to match the other aspects of the copy mechanism code generation.
230634  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
230635  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
230636  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
230637  // virtual SgNode* copy ( const SgCopyHelp & help) const;
230638 
230640  virtual std::string class_name() const override;
230641 
230643  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
230644 
230646  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
230647  // static const VariantT static_variant = V_SgMinusOp;
230648  enum { static_variant = V_SgMinusOp };
230649 
230650  /* the generated cast function */
230652  ROSE_DLL_API friend SgMinusOp* isSgMinusOp( SgNode * s );
230653 
230655  ROSE_DLL_API friend const SgMinusOp* isSgMinusOp( const SgNode * s );
230656 
230657  // ******************************************
230658  // * Memory Pool / New / Delete
230659  // ******************************************
230660 
230661  public:
230663  static const unsigned pool_size; //
230665  static std::vector<unsigned char *> pools; //
230667  static SgMinusOp * next_node; //
230668 
230670  static unsigned long initializeStorageClassArray(SgMinusOpStorageClass *); //
230671 
230673  static void clearMemoryPool(); //
230674  static void deleteMemoryPool(); //
230675 
230677  static void extendMemoryPoolForFileIO(); //
230678 
230680  static SgMinusOp * getPointerFromGlobalIndex(unsigned long); //
230682  static SgMinusOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
230683 
230685  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
230687  static void resetValidFreepointers(); //
230689  static unsigned long getNumberOfLastValidPointer(); //
230690 
230691 
230692 #if defined(INLINE_FUNCTIONS)
230693 
230694  inline void *operator new (size_t size);
230695 #else
230696 
230697  void *operator new (size_t size);
230698 #endif
230699 
230700  void operator delete (void* pointer, size_t size);
230701 
230702  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
230703  void operator delete (void* pointer)
230704  {
230705  // This is the generated delete operator...
230706  SgMinusOp::operator delete (pointer,sizeof(SgMinusOp));
230707  }
230708 
230710  static size_t numberOfNodes();
230711 
230713  static size_t memoryUsage();
230714 
230715  // End of scope which started in IR nodes specific code
230716  /* */
230717 
230718  /* name Internal Functions
230719  \brief Internal functions ... incomplete-documentation
230720 
230721  These functions have been made public as part of the design, but they are suggested for internal use
230722  or by particularly knowledgeable users for specialized tools or applications.
230723 
230724  \internal We could not make these private because they are required by user for special purposes. And
230725  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
230726 
230727  */
230728 
230729  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
230730  // overridden in every class by *generated* implementation
230732  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
230733  // MS: 06/28/02 container of names of variables or container indices
230734  // used used in the traversal to access AST successor nodes
230735  // overridden in every class by *generated* implementation
230738  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
230739 
230740  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
230741  // than all the vector copies. The implementation for these functions is generated for each class.
230743  virtual size_t get_numberOfTraversalSuccessors() override;
230745  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
230747  virtual size_t get_childIndex(SgNode *child) override;
230748 
230749 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
230750  // MS: 08/16/2002 method for generating RTI information
230752  virtual RTIReturnType roseRTI() override;
230753 #endif
230754  /* */
230755 
230756 
230757 
230758  /* name Deprecated Functions
230759  \brief Deprecated functions ... incomplete-documentation
230760 
230761  These functions have been deprecated from use.
230762  */
230763  /* */
230764 
230766  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
230767 
230768  // JJW (10/16/2008): Changed to a single function in Node.code, and put
230769  // getVariant() in #if 0 block to prevent confusing Doxygen
230770 #if 0
230771 
230772  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
230774  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
230775 #endif
230776  /* */
230777 
230778 
230779 
230780 
230781  public:
230782  /* name Traversal Support Functions
230783  \brief Traversal support functions ... incomplete-documentation
230784 
230785  These functions have been made public as part of the design, but they are suggested for internal use
230786  or by particularly knowledgable users for specialized tools or applications.
230787  */
230788  /* */
230789 
230790  // DQ (11/26/2005): Support for visitor pattern mechanims
230791  // (inferior to ROSE traversal mechanism, experimental).
230795 
230796  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
230798  virtual void accept (ROSE_VisitorPattern & visitor) override;
230799 
230800  // DQ (12/26/2005): Support for traversal based on the memory pool
230803  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
230804 
230807  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
230808 
230809  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
230810  // This traversal helps support internal tools that call static member functions.
230811  // note: this function operates on the memory pools.
230814  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
230815  /* */
230816 
230817 
230818  public:
230819  /* name Memory Allocation Functions
230820  \brief Memory allocations functions ... incomplete-documentation
230821 
230822  These functions have been made public as part of the design, but they are suggested for internal use
230823  or by particularly knowledgable users for specialized tools or applications.
230824  */
230825  /* */
230826 
230837  virtual bool isInMemoryPool() override;
230838 
230849  virtual void checkDataMemberPointersIfInMemoryPool() override;
230850 
230851  // DQ (4/30/2006): Modified to be a const function.
230866  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
230867 
230877  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
230878 
230890  virtual long getChildIndex( SgNode* childNode ) const override;
230891 
230892  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
230893  // comment here (changed to be a C style comment and not be a doxygen comment).
230894  /* \brief Constructor for use by AST File I/O Mechanism
230895 
230896  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
230897  which obtained via fast binary file I/O from disk.
230898  */
230899  // SgMinusOp( SgMinusOpStorageClass& source );
230900 
230901 
230902 
230903 
230904 
230905  // JH (10/24/2005): methods added to support the ast file IO
230906  private:
230907 
230908  /* name AST Memory Allocation Support Functions
230909  \brief Memory allocations support....
230910 
230911  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
230912  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
230913  and support the AST File I/O Mechanism.
230914  */
230915  /* */
230916 
230917  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
230918  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
230919  that I use the same type everywhere, if any changes are made. THe second one declares the type
230920  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
230921  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
230922  a correspinding one in the AST_FILE_IO class!
230923  */
230924  // DQ (9/2/2015): This typedef is no longer used, we can't define the
230925  // comment here (changed to be a C style comment and not be a doxygen comment).
230926  /* \brief Typedef used for low level memory access.
230927  */
230928  // typedef unsigned char* TestType;
230929 
230930  // DQ (9/2/2015): This typedef is no longer used, we can't define the
230931  // comment here (changed to be a C style comment and not be a doxygen comment).
230932  /* \brief Typedef used to hold memory addresses as values.
230933  */
230934  // typedef unsigned long AddressType;
230935 
230936 
230937 
230938  // necessary, to have direct access to the p_freepointer and the private methods !
230940  friend class AST_FILE_IO;
230941 
230943  friend class SgMinusOpStorageClass;
230944 
230946  friend class AstSpecificDataManagingClass;
230947 
230949  friend class AstSpecificDataManagingClassStorageClass;
230950 
230951  public:
230953  SgMinusOp( const SgMinusOpStorageClass& source );
230954 
230955  // private: // JJW hack
230956  /*
230957  name AST Memory Allocation Support Variables
230958  Memory allocations support variables
230959 
230960  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
230961  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
230962  and support the AST File I/O Mechanism.
230963  */
230964  /* */
230965 
230966  public:
230967 
230968  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
230969  // to current node (so that it will work cleanly with build functions to specify patterns).
230970  // virtual SgNode* addRegExpAttribute();
230976  SgMinusOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
230977 
230978 // *** COMMON CODE SECTION ENDS HERE ***
230979 
230980 
230981 // End of memberFunctionString
230982 // Start of memberFunctionString
230983 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
230984 
230985  // the generated cast function
230986  // friend ROSE_DLL_API SgMinusOp* isSgMinusOp ( SgNode* s );
230987 
230988  typedef SgUnaryOp base_node_type;
230989 
230990 
230991 // End of memberFunctionString
230992 // Start of memberFunctionString
230993 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
230994 
230995  void post_construction_initialization() override;
230996 
230997 
230998 // End of memberFunctionString
230999 // Start of memberFunctionString
231000 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
231001 
231002  int precedence() const override { return 15; }
231003 
231004 
231005 // End of memberFunctionString
231006 
231007 
231008  public:
231009  virtual ~SgMinusOp();
231010 
231011 
231012  public:
231013  SgMinusOp(Sg_File_Info* startOfConstruct , SgExpression* operand_i = NULL, SgType* expression_type = NULL);
231014  SgMinusOp(SgExpression* operand_i, SgType* expression_type);
231015 
231016  protected:
231017 
231018 
231019 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
231020 
231021 
231022  };
231023 #endif
231024 
231025 // postdeclarations for SgMinusOp
231026 
231027 /* #line 231028 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
231028 
231029 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
231030 
231031 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
231032 
231033 
231034 /* #line 231035 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
231035 
231036 
231037 
231038 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
231039 
231040 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
231041 // This code is automatically generated for each
231042 // terminal and non-terminal within the defined
231043 // grammar. There is a simple way to change the
231044 // code to fix bugs etc. See the ROSE README file
231045 // for directions.
231046 
231047 // tps: (02/22/2010): Adding DLL export requirements
231048 #include "rosedll.h"
231049 
231050 // predeclarations for SgUnaryAddOp
231051 
231052 /* #line 231053 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
231053 
231054 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
231055 
231056 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
231057 
231058 #if 1
231059 // Class Definition for SgUnaryAddOp
231060 class ROSE_DLL_API SgUnaryAddOp : public SgUnaryOp
231061  {
231062  public:
231063 
231064 
231065 /* #line 231066 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
231066 
231067  virtual SgNode* copy ( SgCopyHelp& help) const override;
231068 // Start of memberFunctionString
231069 /* #line 974 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
231070 
231071 
231072 
231073 // End of memberFunctionString
231074 // Start of memberFunctionString
231075 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
231076 
231077 // *** COMMON CODE SECTION BEGINS HERE ***
231078 
231079  public:
231080 
231081  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
231082  // and not required which is required to match the other aspects of the copy mechanism code generation.
231083  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
231084  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
231085  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
231086  // virtual SgNode* copy ( const SgCopyHelp & help) const;
231087 
231089  virtual std::string class_name() const override;
231090 
231092  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
231093 
231095  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
231096  // static const VariantT static_variant = V_SgUnaryAddOp;
231097  enum { static_variant = V_SgUnaryAddOp };
231098 
231099  /* the generated cast function */
231101  ROSE_DLL_API friend SgUnaryAddOp* isSgUnaryAddOp( SgNode * s );
231102 
231104  ROSE_DLL_API friend const SgUnaryAddOp* isSgUnaryAddOp( const SgNode * s );
231105 
231106  // ******************************************
231107  // * Memory Pool / New / Delete
231108  // ******************************************
231109 
231110  public:
231112  static const unsigned pool_size; //
231114  static std::vector<unsigned char *> pools; //
231116  static SgUnaryAddOp * next_node; //
231117 
231119  static unsigned long initializeStorageClassArray(SgUnaryAddOpStorageClass *); //
231120 
231122  static void clearMemoryPool(); //
231123  static void deleteMemoryPool(); //
231124 
231126  static void extendMemoryPoolForFileIO(); //
231127 
231129  static SgUnaryAddOp * getPointerFromGlobalIndex(unsigned long); //
231131  static SgUnaryAddOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
231132 
231134  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
231136  static void resetValidFreepointers(); //
231138  static unsigned long getNumberOfLastValidPointer(); //
231139 
231140 
231141 #if defined(INLINE_FUNCTIONS)
231142 
231143  inline void *operator new (size_t size);
231144 #else
231145 
231146  void *operator new (size_t size);
231147 #endif
231148 
231149  void operator delete (void* pointer, size_t size);
231150 
231151  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
231152  void operator delete (void* pointer)
231153  {
231154  // This is the generated delete operator...
231155  SgUnaryAddOp::operator delete (pointer,sizeof(SgUnaryAddOp));
231156  }
231157 
231159  static size_t numberOfNodes();
231160 
231162  static size_t memoryUsage();
231163 
231164  // End of scope which started in IR nodes specific code
231165  /* */
231166 
231167  /* name Internal Functions
231168  \brief Internal functions ... incomplete-documentation
231169 
231170  These functions have been made public as part of the design, but they are suggested for internal use
231171  or by particularly knowledgeable users for specialized tools or applications.
231172 
231173  \internal We could not make these private because they are required by user for special purposes. And
231174  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
231175 
231176  */
231177 
231178  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
231179  // overridden in every class by *generated* implementation
231181  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
231182  // MS: 06/28/02 container of names of variables or container indices
231183  // used used in the traversal to access AST successor nodes
231184  // overridden in every class by *generated* implementation
231187  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
231188 
231189  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
231190  // than all the vector copies. The implementation for these functions is generated for each class.
231192  virtual size_t get_numberOfTraversalSuccessors() override;
231194  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
231196  virtual size_t get_childIndex(SgNode *child) override;
231197 
231198 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
231199  // MS: 08/16/2002 method for generating RTI information
231201  virtual RTIReturnType roseRTI() override;
231202 #endif
231203  /* */
231204 
231205 
231206 
231207  /* name Deprecated Functions
231208  \brief Deprecated functions ... incomplete-documentation
231209 
231210  These functions have been deprecated from use.
231211  */
231212  /* */
231213 
231215  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
231216 
231217  // JJW (10/16/2008): Changed to a single function in Node.code, and put
231218  // getVariant() in #if 0 block to prevent confusing Doxygen
231219 #if 0
231220 
231221  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
231223  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
231224 #endif
231225  /* */
231226 
231227 
231228 
231229 
231230  public:
231231  /* name Traversal Support Functions
231232  \brief Traversal support functions ... incomplete-documentation
231233 
231234  These functions have been made public as part of the design, but they are suggested for internal use
231235  or by particularly knowledgable users for specialized tools or applications.
231236  */
231237  /* */
231238 
231239  // DQ (11/26/2005): Support for visitor pattern mechanims
231240  // (inferior to ROSE traversal mechanism, experimental).
231244 
231245  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
231247  virtual void accept (ROSE_VisitorPattern & visitor) override;
231248 
231249  // DQ (12/26/2005): Support for traversal based on the memory pool
231252  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
231253 
231256  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
231257 
231258  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
231259  // This traversal helps support internal tools that call static member functions.
231260  // note: this function operates on the memory pools.
231263  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
231264  /* */
231265 
231266 
231267  public:
231268  /* name Memory Allocation Functions
231269  \brief Memory allocations functions ... incomplete-documentation
231270 
231271  These functions have been made public as part of the design, but they are suggested for internal use
231272  or by particularly knowledgable users for specialized tools or applications.
231273  */
231274  /* */
231275 
231286  virtual bool isInMemoryPool() override;
231287 
231298  virtual void checkDataMemberPointersIfInMemoryPool() override;
231299 
231300  // DQ (4/30/2006): Modified to be a const function.
231315  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
231316 
231326  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
231327 
231339  virtual long getChildIndex( SgNode* childNode ) const override;
231340 
231341  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
231342  // comment here (changed to be a C style comment and not be a doxygen comment).
231343  /* \brief Constructor for use by AST File I/O Mechanism
231344 
231345  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
231346  which obtained via fast binary file I/O from disk.
231347  */
231348  // SgUnaryAddOp( SgUnaryAddOpStorageClass& source );
231349 
231350 
231351 
231352 
231353 
231354  // JH (10/24/2005): methods added to support the ast file IO
231355  private:
231356 
231357  /* name AST Memory Allocation Support Functions
231358  \brief Memory allocations support....
231359 
231360  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
231361  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
231362  and support the AST File I/O Mechanism.
231363  */
231364  /* */
231365 
231366  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
231367  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
231368  that I use the same type everywhere, if any changes are made. THe second one declares the type
231369  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
231370  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
231371  a correspinding one in the AST_FILE_IO class!
231372  */
231373  // DQ (9/2/2015): This typedef is no longer used, we can't define the
231374  // comment here (changed to be a C style comment and not be a doxygen comment).
231375  /* \brief Typedef used for low level memory access.
231376  */
231377  // typedef unsigned char* TestType;
231378 
231379  // DQ (9/2/2015): This typedef is no longer used, we can't define the
231380  // comment here (changed to be a C style comment and not be a doxygen comment).
231381  /* \brief Typedef used to hold memory addresses as values.
231382  */
231383  // typedef unsigned long AddressType;
231384 
231385 
231386 
231387  // necessary, to have direct access to the p_freepointer and the private methods !
231389  friend class AST_FILE_IO;
231390 
231392  friend class SgUnaryAddOpStorageClass;
231393 
231395  friend class AstSpecificDataManagingClass;
231396 
231398  friend class AstSpecificDataManagingClassStorageClass;
231399 
231400  public:
231402  SgUnaryAddOp( const SgUnaryAddOpStorageClass& source );
231403 
231404  // private: // JJW hack
231405  /*
231406  name AST Memory Allocation Support Variables
231407  Memory allocations support variables
231408 
231409  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
231410  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
231411  and support the AST File I/O Mechanism.
231412  */
231413  /* */
231414 
231415  public:
231416 
231417  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
231418  // to current node (so that it will work cleanly with build functions to specify patterns).
231419  // virtual SgNode* addRegExpAttribute();
231425  SgUnaryAddOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
231426 
231427 // *** COMMON CODE SECTION ENDS HERE ***
231428 
231429 
231430 // End of memberFunctionString
231431 // Start of memberFunctionString
231432 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
231433 
231434  // the generated cast function
231435  // friend ROSE_DLL_API SgUnaryAddOp* isSgUnaryAddOp ( SgNode* s );
231436 
231437  typedef SgUnaryOp base_node_type;
231438 
231439 
231440 // End of memberFunctionString
231441 // Start of memberFunctionString
231442 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
231443 
231444  void post_construction_initialization() override;
231445 
231446 
231447 // End of memberFunctionString
231448 // Start of memberFunctionString
231449 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
231450 
231451  int precedence() const override { return 15; }
231452 
231453 
231454 // End of memberFunctionString
231455 
231456 
231457  public:
231458  virtual ~SgUnaryAddOp();
231459 
231460 
231461  public:
231462  SgUnaryAddOp(Sg_File_Info* startOfConstruct , SgExpression* operand_i = NULL, SgType* expression_type = NULL);
231463  SgUnaryAddOp(SgExpression* operand_i, SgType* expression_type);
231464 
231465  protected:
231466 
231467 
231468 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
231469 
231470 
231471  };
231472 #endif
231473 
231474 // postdeclarations for SgUnaryAddOp
231475 
231476 /* #line 231477 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
231477 
231478 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
231479 
231480 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
231481 
231482 
231483 /* #line 231484 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
231484 
231485 
231486 
231487 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
231488 
231489 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
231490 // This code is automatically generated for each
231491 // terminal and non-terminal within the defined
231492 // grammar. There is a simple way to change the
231493 // code to fix bugs etc. See the ROSE README file
231494 // for directions.
231495 
231496 // tps: (02/22/2010): Adding DLL export requirements
231497 #include "rosedll.h"
231498 
231499 // predeclarations for SgNotOp
231500 
231501 /* #line 231502 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
231502 
231503 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
231504 
231505 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
231506 
231507 #if 1
231508 // Class Definition for SgNotOp
231509 class ROSE_DLL_API SgNotOp : public SgUnaryOp
231510  {
231511  public:
231512 
231513 
231514 /* #line 231515 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
231515 
231516  virtual SgNode* copy ( SgCopyHelp& help) const override;
231517 // Start of memberFunctionString
231518 /* #line 1122 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
231519 
231520  SgType* get_type() const override;
231521 
231522 
231523 
231524 // End of memberFunctionString
231525 // Start of memberFunctionString
231526 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
231527 
231528 // *** COMMON CODE SECTION BEGINS HERE ***
231529 
231530  public:
231531 
231532  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
231533  // and not required which is required to match the other aspects of the copy mechanism code generation.
231534  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
231535  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
231536  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
231537  // virtual SgNode* copy ( const SgCopyHelp & help) const;
231538 
231540  virtual std::string class_name() const override;
231541 
231543  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
231544 
231546  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
231547  // static const VariantT static_variant = V_SgNotOp;
231548  enum { static_variant = V_SgNotOp };
231549 
231550  /* the generated cast function */
231552  ROSE_DLL_API friend SgNotOp* isSgNotOp( SgNode * s );
231553 
231555  ROSE_DLL_API friend const SgNotOp* isSgNotOp( const SgNode * s );
231556 
231557  // ******************************************
231558  // * Memory Pool / New / Delete
231559  // ******************************************
231560 
231561  public:
231563  static const unsigned pool_size; //
231565  static std::vector<unsigned char *> pools; //
231567  static SgNotOp * next_node; //
231568 
231570  static unsigned long initializeStorageClassArray(SgNotOpStorageClass *); //
231571 
231573  static void clearMemoryPool(); //
231574  static void deleteMemoryPool(); //
231575 
231577  static void extendMemoryPoolForFileIO(); //
231578 
231580  static SgNotOp * getPointerFromGlobalIndex(unsigned long); //
231582  static SgNotOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
231583 
231585  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
231587  static void resetValidFreepointers(); //
231589  static unsigned long getNumberOfLastValidPointer(); //
231590 
231591 
231592 #if defined(INLINE_FUNCTIONS)
231593 
231594  inline void *operator new (size_t size);
231595 #else
231596 
231597  void *operator new (size_t size);
231598 #endif
231599 
231600  void operator delete (void* pointer, size_t size);
231601 
231602  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
231603  void operator delete (void* pointer)
231604  {
231605  // This is the generated delete operator...
231606  SgNotOp::operator delete (pointer,sizeof(SgNotOp));
231607  }
231608 
231610  static size_t numberOfNodes();
231611 
231613  static size_t memoryUsage();
231614 
231615  // End of scope which started in IR nodes specific code
231616  /* */
231617 
231618  /* name Internal Functions
231619  \brief Internal functions ... incomplete-documentation
231620 
231621  These functions have been made public as part of the design, but they are suggested for internal use
231622  or by particularly knowledgeable users for specialized tools or applications.
231623 
231624  \internal We could not make these private because they are required by user for special purposes. And
231625  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
231626 
231627  */
231628 
231629  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
231630  // overridden in every class by *generated* implementation
231632  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
231633  // MS: 06/28/02 container of names of variables or container indices
231634  // used used in the traversal to access AST successor nodes
231635  // overridden in every class by *generated* implementation
231638  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
231639 
231640  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
231641  // than all the vector copies. The implementation for these functions is generated for each class.
231643  virtual size_t get_numberOfTraversalSuccessors() override;
231645  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
231647  virtual size_t get_childIndex(SgNode *child) override;
231648 
231649 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
231650  // MS: 08/16/2002 method for generating RTI information
231652  virtual RTIReturnType roseRTI() override;
231653 #endif
231654  /* */
231655 
231656 
231657 
231658  /* name Deprecated Functions
231659  \brief Deprecated functions ... incomplete-documentation
231660 
231661  These functions have been deprecated from use.
231662  */
231663  /* */
231664 
231666  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
231667 
231668  // JJW (10/16/2008): Changed to a single function in Node.code, and put
231669  // getVariant() in #if 0 block to prevent confusing Doxygen
231670 #if 0
231671 
231672  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
231674  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
231675 #endif
231676  /* */
231677 
231678 
231679 
231680 
231681  public:
231682  /* name Traversal Support Functions
231683  \brief Traversal support functions ... incomplete-documentation
231684 
231685  These functions have been made public as part of the design, but they are suggested for internal use
231686  or by particularly knowledgable users for specialized tools or applications.
231687  */
231688  /* */
231689 
231690  // DQ (11/26/2005): Support for visitor pattern mechanims
231691  // (inferior to ROSE traversal mechanism, experimental).
231695 
231696  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
231698  virtual void accept (ROSE_VisitorPattern & visitor) override;
231699 
231700  // DQ (12/26/2005): Support for traversal based on the memory pool
231703  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
231704 
231707  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
231708 
231709  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
231710  // This traversal helps support internal tools that call static member functions.
231711  // note: this function operates on the memory pools.
231714  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
231715  /* */
231716 
231717 
231718  public:
231719  /* name Memory Allocation Functions
231720  \brief Memory allocations functions ... incomplete-documentation
231721 
231722  These functions have been made public as part of the design, but they are suggested for internal use
231723  or by particularly knowledgable users for specialized tools or applications.
231724  */
231725  /* */
231726 
231737  virtual bool isInMemoryPool() override;
231738 
231749  virtual void checkDataMemberPointersIfInMemoryPool() override;
231750 
231751  // DQ (4/30/2006): Modified to be a const function.
231766  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
231767 
231777  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
231778 
231790  virtual long getChildIndex( SgNode* childNode ) const override;
231791 
231792  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
231793  // comment here (changed to be a C style comment and not be a doxygen comment).
231794  /* \brief Constructor for use by AST File I/O Mechanism
231795 
231796  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
231797  which obtained via fast binary file I/O from disk.
231798  */
231799  // SgNotOp( SgNotOpStorageClass& source );
231800 
231801 
231802 
231803 
231804 
231805  // JH (10/24/2005): methods added to support the ast file IO
231806  private:
231807 
231808  /* name AST Memory Allocation Support Functions
231809  \brief Memory allocations support....
231810 
231811  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
231812  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
231813  and support the AST File I/O Mechanism.
231814  */
231815  /* */
231816 
231817  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
231818  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
231819  that I use the same type everywhere, if any changes are made. THe second one declares the type
231820  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
231821  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
231822  a correspinding one in the AST_FILE_IO class!
231823  */
231824  // DQ (9/2/2015): This typedef is no longer used, we can't define the
231825  // comment here (changed to be a C style comment and not be a doxygen comment).
231826  /* \brief Typedef used for low level memory access.
231827  */
231828  // typedef unsigned char* TestType;
231829 
231830  // DQ (9/2/2015): This typedef is no longer used, we can't define the
231831  // comment here (changed to be a C style comment and not be a doxygen comment).
231832  /* \brief Typedef used to hold memory addresses as values.
231833  */
231834  // typedef unsigned long AddressType;
231835 
231836 
231837 
231838  // necessary, to have direct access to the p_freepointer and the private methods !
231840  friend class AST_FILE_IO;
231841 
231843  friend class SgNotOpStorageClass;
231844 
231846  friend class AstSpecificDataManagingClass;
231847 
231849  friend class AstSpecificDataManagingClassStorageClass;
231850 
231851  public:
231853  SgNotOp( const SgNotOpStorageClass& source );
231854 
231855  // private: // JJW hack
231856  /*
231857  name AST Memory Allocation Support Variables
231858  Memory allocations support variables
231859 
231860  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
231861  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
231862  and support the AST File I/O Mechanism.
231863  */
231864  /* */
231865 
231866  public:
231867 
231868  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
231869  // to current node (so that it will work cleanly with build functions to specify patterns).
231870  // virtual SgNode* addRegExpAttribute();
231876  SgNotOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
231877 
231878 // *** COMMON CODE SECTION ENDS HERE ***
231879 
231880 
231881 // End of memberFunctionString
231882 // Start of memberFunctionString
231883 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
231884 
231885  // the generated cast function
231886  // friend ROSE_DLL_API SgNotOp* isSgNotOp ( SgNode* s );
231887 
231888  typedef SgUnaryOp base_node_type;
231889 
231890 
231891 // End of memberFunctionString
231892 // Start of memberFunctionString
231893 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
231894 
231895  void post_construction_initialization() override;
231896 
231897 
231898 // End of memberFunctionString
231899 // Start of memberFunctionString
231900 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
231901 
231902  int precedence() const override { return 15; }
231903 
231904 
231905 // End of memberFunctionString
231906 
231907 
231908  public:
231909  virtual ~SgNotOp();
231910 
231911 
231912  public:
231913  SgNotOp(Sg_File_Info* startOfConstruct , SgExpression* operand_i = NULL, SgType* expression_type = NULL);
231914  SgNotOp(SgExpression* operand_i, SgType* expression_type);
231915 
231916  protected:
231917 
231918 
231919 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
231920 
231921 
231922  };
231923 #endif
231924 
231925 // postdeclarations for SgNotOp
231926 
231927 /* #line 231928 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
231928 
231929 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
231930 
231931 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
231932 
231933 
231934 /* #line 231935 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
231935 
231936 
231937 
231938 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
231939 
231940 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
231941 // This code is automatically generated for each
231942 // terminal and non-terminal within the defined
231943 // grammar. There is a simple way to change the
231944 // code to fix bugs etc. See the ROSE README file
231945 // for directions.
231946 
231947 // tps: (02/22/2010): Adding DLL export requirements
231948 #include "rosedll.h"
231949 
231950 // predeclarations for SgPointerDerefExp
231951 
231952 /* #line 231953 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
231953 
231954 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
231955 
231956 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
231957 
231958 #if 1
231959 // Class Definition for SgPointerDerefExp
231960 class ROSE_DLL_API SgPointerDerefExp : public SgUnaryOp
231961  {
231962  public:
231963 
231964 
231965 /* #line 231966 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
231966 
231967  virtual SgNode* copy ( SgCopyHelp& help) const override;
231968 // Start of memberFunctionString
231969 /* #line 1128 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
231970 
231971  SgType* get_type() const override;
231972 
231973  // get lvalue
231974  virtual bool isLValue() const override;
231975  virtual bool isChildUsedAsLValue(const SgExpression* child) const override; // INTERNAL Recursively call up the chain to answer the child
231976 
231977 
231978 
231979 // End of memberFunctionString
231980 // Start of memberFunctionString
231981 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
231982 
231983 // *** COMMON CODE SECTION BEGINS HERE ***
231984 
231985  public:
231986 
231987  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
231988  // and not required which is required to match the other aspects of the copy mechanism code generation.
231989  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
231990  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
231991  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
231992  // virtual SgNode* copy ( const SgCopyHelp & help) const;
231993 
231995  virtual std::string class_name() const override;
231996 
231998  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
231999 
232001  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
232002  // static const VariantT static_variant = V_SgPointerDerefExp;
232003  enum { static_variant = V_SgPointerDerefExp };
232004 
232005  /* the generated cast function */
232007  ROSE_DLL_API friend SgPointerDerefExp* isSgPointerDerefExp( SgNode * s );
232008 
232010  ROSE_DLL_API friend const SgPointerDerefExp* isSgPointerDerefExp( const SgNode * s );
232011 
232012  // ******************************************
232013  // * Memory Pool / New / Delete
232014  // ******************************************
232015 
232016  public:
232018  static const unsigned pool_size; //
232020  static std::vector<unsigned char *> pools; //
232022  static SgPointerDerefExp * next_node; //
232023 
232025  static unsigned long initializeStorageClassArray(SgPointerDerefExpStorageClass *); //
232026 
232028  static void clearMemoryPool(); //
232029  static void deleteMemoryPool(); //
232030 
232032  static void extendMemoryPoolForFileIO(); //
232033 
232035  static SgPointerDerefExp * getPointerFromGlobalIndex(unsigned long); //
232037  static SgPointerDerefExp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
232038 
232040  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
232042  static void resetValidFreepointers(); //
232044  static unsigned long getNumberOfLastValidPointer(); //
232045 
232046 
232047 #if defined(INLINE_FUNCTIONS)
232048 
232049  inline void *operator new (size_t size);
232050 #else
232051 
232052  void *operator new (size_t size);
232053 #endif
232054 
232055  void operator delete (void* pointer, size_t size);
232056 
232057  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
232058  void operator delete (void* pointer)
232059  {
232060  // This is the generated delete operator...
232061  SgPointerDerefExp::operator delete (pointer,sizeof(SgPointerDerefExp));
232062  }
232063 
232065  static size_t numberOfNodes();
232066 
232068  static size_t memoryUsage();
232069 
232070  // End of scope which started in IR nodes specific code
232071  /* */
232072 
232073  /* name Internal Functions
232074  \brief Internal functions ... incomplete-documentation
232075 
232076  These functions have been made public as part of the design, but they are suggested for internal use
232077  or by particularly knowledgeable users for specialized tools or applications.
232078 
232079  \internal We could not make these private because they are required by user for special purposes. And
232080  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
232081 
232082  */
232083 
232084  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
232085  // overridden in every class by *generated* implementation
232087  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
232088  // MS: 06/28/02 container of names of variables or container indices
232089  // used used in the traversal to access AST successor nodes
232090  // overridden in every class by *generated* implementation
232093  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
232094 
232095  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
232096  // than all the vector copies. The implementation for these functions is generated for each class.
232098  virtual size_t get_numberOfTraversalSuccessors() override;
232100  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
232102  virtual size_t get_childIndex(SgNode *child) override;
232103 
232104 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
232105  // MS: 08/16/2002 method for generating RTI information
232107  virtual RTIReturnType roseRTI() override;
232108 #endif
232109  /* */
232110 
232111 
232112 
232113  /* name Deprecated Functions
232114  \brief Deprecated functions ... incomplete-documentation
232115 
232116  These functions have been deprecated from use.
232117  */
232118  /* */
232119 
232121  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
232122 
232123  // JJW (10/16/2008): Changed to a single function in Node.code, and put
232124  // getVariant() in #if 0 block to prevent confusing Doxygen
232125 #if 0
232126 
232127  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
232129  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
232130 #endif
232131  /* */
232132 
232133 
232134 
232135 
232136  public:
232137  /* name Traversal Support Functions
232138  \brief Traversal support functions ... incomplete-documentation
232139 
232140  These functions have been made public as part of the design, but they are suggested for internal use
232141  or by particularly knowledgable users for specialized tools or applications.
232142  */
232143  /* */
232144 
232145  // DQ (11/26/2005): Support for visitor pattern mechanims
232146  // (inferior to ROSE traversal mechanism, experimental).
232150 
232151  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
232153  virtual void accept (ROSE_VisitorPattern & visitor) override;
232154 
232155  // DQ (12/26/2005): Support for traversal based on the memory pool
232158  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
232159 
232162  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
232163 
232164  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
232165  // This traversal helps support internal tools that call static member functions.
232166  // note: this function operates on the memory pools.
232169  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
232170  /* */
232171 
232172 
232173  public:
232174  /* name Memory Allocation Functions
232175  \brief Memory allocations functions ... incomplete-documentation
232176 
232177  These functions have been made public as part of the design, but they are suggested for internal use
232178  or by particularly knowledgable users for specialized tools or applications.
232179  */
232180  /* */
232181 
232192  virtual bool isInMemoryPool() override;
232193 
232204  virtual void checkDataMemberPointersIfInMemoryPool() override;
232205 
232206  // DQ (4/30/2006): Modified to be a const function.
232221  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
232222 
232232  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
232233 
232245  virtual long getChildIndex( SgNode* childNode ) const override;
232246 
232247  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
232248  // comment here (changed to be a C style comment and not be a doxygen comment).
232249  /* \brief Constructor for use by AST File I/O Mechanism
232250 
232251  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
232252  which obtained via fast binary file I/O from disk.
232253  */
232254  // SgPointerDerefExp( SgPointerDerefExpStorageClass& source );
232255 
232256 
232257 
232258 
232259 
232260  // JH (10/24/2005): methods added to support the ast file IO
232261  private:
232262 
232263  /* name AST Memory Allocation Support Functions
232264  \brief Memory allocations support....
232265 
232266  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
232267  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
232268  and support the AST File I/O Mechanism.
232269  */
232270  /* */
232271 
232272  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
232273  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
232274  that I use the same type everywhere, if any changes are made. THe second one declares the type
232275  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
232276  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
232277  a correspinding one in the AST_FILE_IO class!
232278  */
232279  // DQ (9/2/2015): This typedef is no longer used, we can't define the
232280  // comment here (changed to be a C style comment and not be a doxygen comment).
232281  /* \brief Typedef used for low level memory access.
232282  */
232283  // typedef unsigned char* TestType;
232284 
232285  // DQ (9/2/2015): This typedef is no longer used, we can't define the
232286  // comment here (changed to be a C style comment and not be a doxygen comment).
232287  /* \brief Typedef used to hold memory addresses as values.
232288  */
232289  // typedef unsigned long AddressType;
232290 
232291 
232292 
232293  // necessary, to have direct access to the p_freepointer and the private methods !
232295  friend class AST_FILE_IO;
232296 
232298  friend class SgPointerDerefExpStorageClass;
232299 
232301  friend class AstSpecificDataManagingClass;
232302 
232304  friend class AstSpecificDataManagingClassStorageClass;
232305 
232306  public:
232308  SgPointerDerefExp( const SgPointerDerefExpStorageClass& source );
232309 
232310  // private: // JJW hack
232311  /*
232312  name AST Memory Allocation Support Variables
232313  Memory allocations support variables
232314 
232315  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
232316  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
232317  and support the AST File I/O Mechanism.
232318  */
232319  /* */
232320 
232321  public:
232322 
232323  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
232324  // to current node (so that it will work cleanly with build functions to specify patterns).
232325  // virtual SgNode* addRegExpAttribute();
232332 
232333 // *** COMMON CODE SECTION ENDS HERE ***
232334 
232335 
232336 // End of memberFunctionString
232337 // Start of memberFunctionString
232338 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
232339 
232340  // the generated cast function
232341  // friend ROSE_DLL_API SgPointerDerefExp* isSgPointerDerefExp ( SgNode* s );
232342 
232343  typedef SgUnaryOp base_node_type;
232344 
232345 
232346 // End of memberFunctionString
232347 // Start of memberFunctionString
232348 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
232349 
232350  void post_construction_initialization() override;
232351 
232352 
232353 // End of memberFunctionString
232354 // Start of memberFunctionString
232355 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
232356 
232357  int precedence() const override { return 15; }
232358 
232359 
232360 // End of memberFunctionString
232361 
232362 
232363  public:
232364  virtual ~SgPointerDerefExp();
232365 
232366 
232367  public:
232368  SgPointerDerefExp(Sg_File_Info* startOfConstruct , SgExpression* operand_i = NULL, SgType* expression_type = NULL);
232369  SgPointerDerefExp(SgExpression* operand_i, SgType* expression_type);
232370 
232371  protected:
232372 
232373 
232374 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
232375 
232376 
232377  };
232378 #endif
232379 
232380 // postdeclarations for SgPointerDerefExp
232381 
232382 /* #line 232383 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
232383 
232384 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
232385 
232386 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
232387 
232388 
232389 /* #line 232390 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
232390 
232391 
232392 
232393 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
232394 
232395 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
232396 // This code is automatically generated for each
232397 // terminal and non-terminal within the defined
232398 // grammar. There is a simple way to change the
232399 // code to fix bugs etc. See the ROSE README file
232400 // for directions.
232401 
232402 // tps: (02/22/2010): Adding DLL export requirements
232403 #include "rosedll.h"
232404 
232405 // predeclarations for SgAddressOfOp
232406 
232407 /* #line 232408 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
232408 
232409 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
232410 
232411 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
232412 
232413 #if 1
232414 // Class Definition for SgAddressOfOp
232415 class ROSE_DLL_API SgAddressOfOp : public SgUnaryOp
232416  {
232417  public:
232418 
232419 
232420 /* #line 232421 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
232421 
232422  virtual SgNode* copy ( SgCopyHelp& help) const override;
232423 // Start of memberFunctionString
232424 /* #line 1138 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
232425 
232426  SgType* get_type() const override;
232427 
232428  // get lvalue
232429  virtual bool isLValue() const override;
232430  virtual bool isChildUsedAsLValue(const SgExpression* child) const override; // INTERNAL Recursively call up the chain to answer the child
232431 
232432  // DQ (7/16/2014): Shared types from expressions in UPC have some expected symantics that are not a matter of returning the result of get_type().
232433  // This function supports the get_type() function.
232434  SgType* checkForSharedTypeAndReturnSharedType( SgType* possibleReturnType ) const;
232435 
232436 
232437 
232438 // End of memberFunctionString
232439 // Start of memberFunctionString
232440 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
232441 
232442 // *** COMMON CODE SECTION BEGINS HERE ***
232443 
232444  public:
232445 
232446  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
232447  // and not required which is required to match the other aspects of the copy mechanism code generation.
232448  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
232449  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
232450  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
232451  // virtual SgNode* copy ( const SgCopyHelp & help) const;
232452 
232454  virtual std::string class_name() const override;
232455 
232457  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
232458 
232460  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
232461  // static const VariantT static_variant = V_SgAddressOfOp;
232462  enum { static_variant = V_SgAddressOfOp };
232463 
232464  /* the generated cast function */
232466  ROSE_DLL_API friend SgAddressOfOp* isSgAddressOfOp( SgNode * s );
232467 
232469  ROSE_DLL_API friend const SgAddressOfOp* isSgAddressOfOp( const SgNode * s );
232470 
232471  // ******************************************
232472  // * Memory Pool / New / Delete
232473  // ******************************************
232474 
232475  public:
232477  static const unsigned pool_size; //
232479  static std::vector<unsigned char *> pools; //
232481  static SgAddressOfOp * next_node; //
232482 
232484  static unsigned long initializeStorageClassArray(SgAddressOfOpStorageClass *); //
232485 
232487  static void clearMemoryPool(); //
232488  static void deleteMemoryPool(); //
232489 
232491  static void extendMemoryPoolForFileIO(); //
232492 
232494  static SgAddressOfOp * getPointerFromGlobalIndex(unsigned long); //
232496  static SgAddressOfOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
232497 
232499  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
232501  static void resetValidFreepointers(); //
232503  static unsigned long getNumberOfLastValidPointer(); //
232504 
232505 
232506 #if defined(INLINE_FUNCTIONS)
232507 
232508  inline void *operator new (size_t size);
232509 #else
232510 
232511  void *operator new (size_t size);
232512 #endif
232513 
232514  void operator delete (void* pointer, size_t size);
232515 
232516  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
232517  void operator delete (void* pointer)
232518  {
232519  // This is the generated delete operator...
232520  SgAddressOfOp::operator delete (pointer,sizeof(SgAddressOfOp));
232521  }
232522 
232524  static size_t numberOfNodes();
232525 
232527  static size_t memoryUsage();
232528 
232529  // End of scope which started in IR nodes specific code
232530  /* */
232531 
232532  /* name Internal Functions
232533  \brief Internal functions ... incomplete-documentation
232534 
232535  These functions have been made public as part of the design, but they are suggested for internal use
232536  or by particularly knowledgeable users for specialized tools or applications.
232537 
232538  \internal We could not make these private because they are required by user for special purposes. And
232539  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
232540 
232541  */
232542 
232543  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
232544  // overridden in every class by *generated* implementation
232546  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
232547  // MS: 06/28/02 container of names of variables or container indices
232548  // used used in the traversal to access AST successor nodes
232549  // overridden in every class by *generated* implementation
232552  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
232553 
232554  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
232555  // than all the vector copies. The implementation for these functions is generated for each class.
232557  virtual size_t get_numberOfTraversalSuccessors() override;
232559  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
232561  virtual size_t get_childIndex(SgNode *child) override;
232562 
232563 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
232564  // MS: 08/16/2002 method for generating RTI information
232566  virtual RTIReturnType roseRTI() override;
232567 #endif
232568  /* */
232569 
232570 
232571 
232572  /* name Deprecated Functions
232573  \brief Deprecated functions ... incomplete-documentation
232574 
232575  These functions have been deprecated from use.
232576  */
232577  /* */
232578 
232580  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
232581 
232582  // JJW (10/16/2008): Changed to a single function in Node.code, and put
232583  // getVariant() in #if 0 block to prevent confusing Doxygen
232584 #if 0
232585 
232586  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
232588  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
232589 #endif
232590  /* */
232591 
232592 
232593 
232594 
232595  public:
232596  /* name Traversal Support Functions
232597  \brief Traversal support functions ... incomplete-documentation
232598 
232599  These functions have been made public as part of the design, but they are suggested for internal use
232600  or by particularly knowledgable users for specialized tools or applications.
232601  */
232602  /* */
232603 
232604  // DQ (11/26/2005): Support for visitor pattern mechanims
232605  // (inferior to ROSE traversal mechanism, experimental).
232609 
232610  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
232612  virtual void accept (ROSE_VisitorPattern & visitor) override;
232613 
232614  // DQ (12/26/2005): Support for traversal based on the memory pool
232617  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
232618 
232621  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
232622 
232623  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
232624  // This traversal helps support internal tools that call static member functions.
232625  // note: this function operates on the memory pools.
232628  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
232629  /* */
232630 
232631 
232632  public:
232633  /* name Memory Allocation Functions
232634  \brief Memory allocations functions ... incomplete-documentation
232635 
232636  These functions have been made public as part of the design, but they are suggested for internal use
232637  or by particularly knowledgable users for specialized tools or applications.
232638  */
232639  /* */
232640 
232651  virtual bool isInMemoryPool() override;
232652 
232663  virtual void checkDataMemberPointersIfInMemoryPool() override;
232664 
232665  // DQ (4/30/2006): Modified to be a const function.
232680  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
232681 
232691  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
232692 
232704  virtual long getChildIndex( SgNode* childNode ) const override;
232705 
232706  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
232707  // comment here (changed to be a C style comment and not be a doxygen comment).
232708  /* \brief Constructor for use by AST File I/O Mechanism
232709 
232710  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
232711  which obtained via fast binary file I/O from disk.
232712  */
232713  // SgAddressOfOp( SgAddressOfOpStorageClass& source );
232714 
232715 
232716 
232717 
232718 
232719  // JH (10/24/2005): methods added to support the ast file IO
232720  private:
232721 
232722  /* name AST Memory Allocation Support Functions
232723  \brief Memory allocations support....
232724 
232725  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
232726  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
232727  and support the AST File I/O Mechanism.
232728  */
232729  /* */
232730 
232731  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
232732  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
232733  that I use the same type everywhere, if any changes are made. THe second one declares the type
232734  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
232735  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
232736  a correspinding one in the AST_FILE_IO class!
232737  */
232738  // DQ (9/2/2015): This typedef is no longer used, we can't define the
232739  // comment here (changed to be a C style comment and not be a doxygen comment).
232740  /* \brief Typedef used for low level memory access.
232741  */
232742  // typedef unsigned char* TestType;
232743 
232744  // DQ (9/2/2015): This typedef is no longer used, we can't define the
232745  // comment here (changed to be a C style comment and not be a doxygen comment).
232746  /* \brief Typedef used to hold memory addresses as values.
232747  */
232748  // typedef unsigned long AddressType;
232749 
232750 
232751 
232752  // necessary, to have direct access to the p_freepointer and the private methods !
232754  friend class AST_FILE_IO;
232755 
232757  friend class SgAddressOfOpStorageClass;
232758 
232760  friend class AstSpecificDataManagingClass;
232761 
232763  friend class AstSpecificDataManagingClassStorageClass;
232764 
232765  public:
232767  SgAddressOfOp( const SgAddressOfOpStorageClass& source );
232768 
232769  // private: // JJW hack
232770  /*
232771  name AST Memory Allocation Support Variables
232772  Memory allocations support variables
232773 
232774  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
232775  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
232776  and support the AST File I/O Mechanism.
232777  */
232778  /* */
232779 
232780  public:
232781 
232782  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
232783  // to current node (so that it will work cleanly with build functions to specify patterns).
232784  // virtual SgNode* addRegExpAttribute();
232790  SgAddressOfOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
232791 
232792 // *** COMMON CODE SECTION ENDS HERE ***
232793 
232794 
232795 // End of memberFunctionString
232796 // Start of memberFunctionString
232797 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
232798 
232799  // the generated cast function
232800  // friend ROSE_DLL_API SgAddressOfOp* isSgAddressOfOp ( SgNode* s );
232801 
232802  typedef SgUnaryOp base_node_type;
232803 
232804 
232805 // End of memberFunctionString
232806 // Start of memberFunctionString
232807 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
232808 
232809  void post_construction_initialization() override;
232810 
232811 
232812 // End of memberFunctionString
232813 // Start of memberFunctionString
232814 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
232815 
232816  int precedence() const override { return 15; }
232817 
232818 
232819 // End of memberFunctionString
232820 
232821  public:
232822  SgExpression* get_originalExpressionTree() const override /* (getDataAccessFunctionPrototypeString) */;
232823  void set_originalExpressionTree(SgExpression* originalExpressionTree) override /* (getDataAccessFunctionPrototypeString) */;
232824 
232825 
232826  public:
232827  virtual ~SgAddressOfOp();
232828 
232829 
232830  public:
232831  SgAddressOfOp(Sg_File_Info* startOfConstruct , SgExpression* operand_i = NULL, SgType* expression_type = NULL);
232832  SgAddressOfOp(SgExpression* operand_i, SgType* expression_type);
232833 
232834  protected:
232835 // Start of memberFunctionString
232836 SgExpression* p_originalExpressionTree;
232837 
232838 // End of memberFunctionString
232839 
232840 
232841 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
232842 
232843 
232844  };
232845 #endif
232846 
232847 // postdeclarations for SgAddressOfOp
232848 
232849 /* #line 232850 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
232850 
232851 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
232852 
232853 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
232854 
232855 
232856 /* #line 232857 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
232857 
232858 
232859 
232860 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
232861 
232862 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
232863 // This code is automatically generated for each
232864 // terminal and non-terminal within the defined
232865 // grammar. There is a simple way to change the
232866 // code to fix bugs etc. See the ROSE README file
232867 // for directions.
232868 
232869 // tps: (02/22/2010): Adding DLL export requirements
232870 #include "rosedll.h"
232871 
232872 // predeclarations for SgMinusMinusOp
232873 
232874 /* #line 232875 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
232875 
232876 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
232877 
232878 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
232879 
232880 #if 1
232881 // Class Definition for SgMinusMinusOp
232882 class ROSE_DLL_API SgMinusMinusOp : public SgUnaryOp
232883  {
232884  public:
232885 
232886 
232887 /* #line 232888 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
232888 
232889  virtual SgNode* copy ( SgCopyHelp& help) const override;
232890 // Start of memberFunctionString
232891 /* #line 1152 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
232892 
232893  SgMinusMinusOp ( Sg_File_Info* file_info, SgExpression* operand_i, Sgop_mode a_mode );
232894  SgMinusMinusOp ( SgExpression* operand_i, Sgop_mode a_mode );
232895 
232896  // get lvalue
232897  virtual bool isLValue() const override;
232898  virtual bool isChildUsedAsLValue(const SgExpression* child) const override; // INTERNAL Recursively call up the chain to answer the child
232899 
232900 
232901 
232902 // End of memberFunctionString
232903 // Start of memberFunctionString
232904 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
232905 
232906 // *** COMMON CODE SECTION BEGINS HERE ***
232907 
232908  public:
232909 
232910  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
232911  // and not required which is required to match the other aspects of the copy mechanism code generation.
232912  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
232913  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
232914  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
232915  // virtual SgNode* copy ( const SgCopyHelp & help) const;
232916 
232918  virtual std::string class_name() const override;
232919 
232921  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
232922 
232924  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
232925  // static const VariantT static_variant = V_SgMinusMinusOp;
232926  enum { static_variant = V_SgMinusMinusOp };
232927 
232928  /* the generated cast function */
232930  ROSE_DLL_API friend SgMinusMinusOp* isSgMinusMinusOp( SgNode * s );
232931 
232933  ROSE_DLL_API friend const SgMinusMinusOp* isSgMinusMinusOp( const SgNode * s );
232934 
232935  // ******************************************
232936  // * Memory Pool / New / Delete
232937  // ******************************************
232938 
232939  public:
232941  static const unsigned pool_size; //
232943  static std::vector<unsigned char *> pools; //
232945  static SgMinusMinusOp * next_node; //
232946 
232948  static unsigned long initializeStorageClassArray(SgMinusMinusOpStorageClass *); //
232949 
232951  static void clearMemoryPool(); //
232952  static void deleteMemoryPool(); //
232953 
232955  static void extendMemoryPoolForFileIO(); //
232956 
232958  static SgMinusMinusOp * getPointerFromGlobalIndex(unsigned long); //
232960  static SgMinusMinusOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
232961 
232963  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
232965  static void resetValidFreepointers(); //
232967  static unsigned long getNumberOfLastValidPointer(); //
232968 
232969 
232970 #if defined(INLINE_FUNCTIONS)
232971 
232972  inline void *operator new (size_t size);
232973 #else
232974 
232975  void *operator new (size_t size);
232976 #endif
232977 
232978  void operator delete (void* pointer, size_t size);
232979 
232980  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
232981  void operator delete (void* pointer)
232982  {
232983  // This is the generated delete operator...
232984  SgMinusMinusOp::operator delete (pointer,sizeof(SgMinusMinusOp));
232985  }
232986 
232988  static size_t numberOfNodes();
232989 
232991  static size_t memoryUsage();
232992 
232993  // End of scope which started in IR nodes specific code
232994  /* */
232995 
232996  /* name Internal Functions
232997  \brief Internal functions ... incomplete-documentation
232998 
232999  These functions have been made public as part of the design, but they are suggested for internal use
233000  or by particularly knowledgeable users for specialized tools or applications.
233001 
233002  \internal We could not make these private because they are required by user for special purposes. And
233003  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
233004 
233005  */
233006 
233007  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
233008  // overridden in every class by *generated* implementation
233010  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
233011  // MS: 06/28/02 container of names of variables or container indices
233012  // used used in the traversal to access AST successor nodes
233013  // overridden in every class by *generated* implementation
233016  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
233017 
233018  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
233019  // than all the vector copies. The implementation for these functions is generated for each class.
233021  virtual size_t get_numberOfTraversalSuccessors() override;
233023  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
233025  virtual size_t get_childIndex(SgNode *child) override;
233026 
233027 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
233028  // MS: 08/16/2002 method for generating RTI information
233030  virtual RTIReturnType roseRTI() override;
233031 #endif
233032  /* */
233033 
233034 
233035 
233036  /* name Deprecated Functions
233037  \brief Deprecated functions ... incomplete-documentation
233038 
233039  These functions have been deprecated from use.
233040  */
233041  /* */
233042 
233044  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
233045 
233046  // JJW (10/16/2008): Changed to a single function in Node.code, and put
233047  // getVariant() in #if 0 block to prevent confusing Doxygen
233048 #if 0
233049 
233050  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
233052  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
233053 #endif
233054  /* */
233055 
233056 
233057 
233058 
233059  public:
233060  /* name Traversal Support Functions
233061  \brief Traversal support functions ... incomplete-documentation
233062 
233063  These functions have been made public as part of the design, but they are suggested for internal use
233064  or by particularly knowledgable users for specialized tools or applications.
233065  */
233066  /* */
233067 
233068  // DQ (11/26/2005): Support for visitor pattern mechanims
233069  // (inferior to ROSE traversal mechanism, experimental).
233073 
233074  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
233076  virtual void accept (ROSE_VisitorPattern & visitor) override;
233077 
233078  // DQ (12/26/2005): Support for traversal based on the memory pool
233081  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
233082 
233085  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
233086 
233087  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
233088  // This traversal helps support internal tools that call static member functions.
233089  // note: this function operates on the memory pools.
233092  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
233093  /* */
233094 
233095 
233096  public:
233097  /* name Memory Allocation Functions
233098  \brief Memory allocations functions ... incomplete-documentation
233099 
233100  These functions have been made public as part of the design, but they are suggested for internal use
233101  or by particularly knowledgable users for specialized tools or applications.
233102  */
233103  /* */
233104 
233115  virtual bool isInMemoryPool() override;
233116 
233127  virtual void checkDataMemberPointersIfInMemoryPool() override;
233128 
233129  // DQ (4/30/2006): Modified to be a const function.
233144  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
233145 
233155  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
233156 
233168  virtual long getChildIndex( SgNode* childNode ) const override;
233169 
233170  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
233171  // comment here (changed to be a C style comment and not be a doxygen comment).
233172  /* \brief Constructor for use by AST File I/O Mechanism
233173 
233174  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
233175  which obtained via fast binary file I/O from disk.
233176  */
233177  // SgMinusMinusOp( SgMinusMinusOpStorageClass& source );
233178 
233179 
233180 
233181 
233182 
233183  // JH (10/24/2005): methods added to support the ast file IO
233184  private:
233185 
233186  /* name AST Memory Allocation Support Functions
233187  \brief Memory allocations support....
233188 
233189  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
233190  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
233191  and support the AST File I/O Mechanism.
233192  */
233193  /* */
233194 
233195  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
233196  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
233197  that I use the same type everywhere, if any changes are made. THe second one declares the type
233198  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
233199  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
233200  a correspinding one in the AST_FILE_IO class!
233201  */
233202  // DQ (9/2/2015): This typedef is no longer used, we can't define the
233203  // comment here (changed to be a C style comment and not be a doxygen comment).
233204  /* \brief Typedef used for low level memory access.
233205  */
233206  // typedef unsigned char* TestType;
233207 
233208  // DQ (9/2/2015): This typedef is no longer used, we can't define the
233209  // comment here (changed to be a C style comment and not be a doxygen comment).
233210  /* \brief Typedef used to hold memory addresses as values.
233211  */
233212  // typedef unsigned long AddressType;
233213 
233214 
233215 
233216  // necessary, to have direct access to the p_freepointer and the private methods !
233218  friend class AST_FILE_IO;
233219 
233221  friend class SgMinusMinusOpStorageClass;
233222 
233224  friend class AstSpecificDataManagingClass;
233225 
233227  friend class AstSpecificDataManagingClassStorageClass;
233228 
233229  public:
233231  SgMinusMinusOp( const SgMinusMinusOpStorageClass& source );
233232 
233233  // private: // JJW hack
233234  /*
233235  name AST Memory Allocation Support Variables
233236  Memory allocations support variables
233237 
233238  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
233239  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
233240  and support the AST File I/O Mechanism.
233241  */
233242  /* */
233243 
233244  public:
233245 
233246  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
233247  // to current node (so that it will work cleanly with build functions to specify patterns).
233248  // virtual SgNode* addRegExpAttribute();
233255 
233256 // *** COMMON CODE SECTION ENDS HERE ***
233257 
233258 
233259 // End of memberFunctionString
233260 // Start of memberFunctionString
233261 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
233262 
233263  // the generated cast function
233264  // friend ROSE_DLL_API SgMinusMinusOp* isSgMinusMinusOp ( SgNode* s );
233265 
233266  typedef SgUnaryOp base_node_type;
233267 
233268 
233269 // End of memberFunctionString
233270 // Start of memberFunctionString
233271 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
233272 
233273  void post_construction_initialization() override;
233274 
233275 
233276 // End of memberFunctionString
233277 // Start of memberFunctionString
233278 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
233279 
233280  int precedence() const override { return 15; }
233281 
233282 
233283 // End of memberFunctionString
233284 
233285 
233286  public:
233287  virtual ~SgMinusMinusOp();
233288 
233289 
233290  public:
233291  SgMinusMinusOp(Sg_File_Info* startOfConstruct , SgExpression* operand_i = NULL, SgType* expression_type = NULL);
233292  SgMinusMinusOp(SgExpression* operand_i, SgType* expression_type);
233293 
233294  protected:
233295 
233296 
233297 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
233298 
233299 
233300  };
233301 #endif
233302 
233303 // postdeclarations for SgMinusMinusOp
233304 
233305 /* #line 233306 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
233306 
233307 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
233308 
233309 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
233310 
233311 
233312 /* #line 233313 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
233313 
233314 
233315 
233316 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
233317 
233318 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
233319 // This code is automatically generated for each
233320 // terminal and non-terminal within the defined
233321 // grammar. There is a simple way to change the
233322 // code to fix bugs etc. See the ROSE README file
233323 // for directions.
233324 
233325 // tps: (02/22/2010): Adding DLL export requirements
233326 #include "rosedll.h"
233327 
233328 // predeclarations for SgPlusPlusOp
233329 
233330 /* #line 233331 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
233331 
233332 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
233333 
233334 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
233335 
233336 #if 1
233337 // Class Definition for SgPlusPlusOp
233338 class ROSE_DLL_API SgPlusPlusOp : public SgUnaryOp
233339  {
233340  public:
233341 
233342 
233343 /* #line 233344 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
233344 
233345  virtual SgNode* copy ( SgCopyHelp& help) const override;
233346 // Start of memberFunctionString
233347 /* #line 1163 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
233348 
233349  SgPlusPlusOp ( Sg_File_Info* file_info, SgExpression* operand_i, Sgop_mode a_mode );
233350  SgPlusPlusOp ( SgExpression* operand_i, Sgop_mode a_mode );
233351 
233352  // get lvalue
233353  virtual bool isLValue() const override;
233354  virtual bool isChildUsedAsLValue(const SgExpression* child) const override; // INTERNAL Recursively call up the chain to answer the child
233355 
233356 
233357 
233358 // End of memberFunctionString
233359 // Start of memberFunctionString
233360 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
233361 
233362 // *** COMMON CODE SECTION BEGINS HERE ***
233363 
233364  public:
233365 
233366  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
233367  // and not required which is required to match the other aspects of the copy mechanism code generation.
233368  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
233369  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
233370  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
233371  // virtual SgNode* copy ( const SgCopyHelp & help) const;
233372 
233374  virtual std::string class_name() const override;
233375 
233377  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
233378 
233380  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
233381  // static const VariantT static_variant = V_SgPlusPlusOp;
233382  enum { static_variant = V_SgPlusPlusOp };
233383 
233384  /* the generated cast function */
233386  ROSE_DLL_API friend SgPlusPlusOp* isSgPlusPlusOp( SgNode * s );
233387 
233389  ROSE_DLL_API friend const SgPlusPlusOp* isSgPlusPlusOp( const SgNode * s );
233390 
233391  // ******************************************
233392  // * Memory Pool / New / Delete
233393  // ******************************************
233394 
233395  public:
233397  static const unsigned pool_size; //
233399  static std::vector<unsigned char *> pools; //
233401  static SgPlusPlusOp * next_node; //
233402 
233404  static unsigned long initializeStorageClassArray(SgPlusPlusOpStorageClass *); //
233405 
233407  static void clearMemoryPool(); //
233408  static void deleteMemoryPool(); //
233409 
233411  static void extendMemoryPoolForFileIO(); //
233412 
233414  static SgPlusPlusOp * getPointerFromGlobalIndex(unsigned long); //
233416  static SgPlusPlusOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
233417 
233419  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
233421  static void resetValidFreepointers(); //
233423  static unsigned long getNumberOfLastValidPointer(); //
233424 
233425 
233426 #if defined(INLINE_FUNCTIONS)
233427 
233428  inline void *operator new (size_t size);
233429 #else
233430 
233431  void *operator new (size_t size);
233432 #endif
233433 
233434  void operator delete (void* pointer, size_t size);
233435 
233436  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
233437  void operator delete (void* pointer)
233438  {
233439  // This is the generated delete operator...
233440  SgPlusPlusOp::operator delete (pointer,sizeof(SgPlusPlusOp));
233441  }
233442 
233444  static size_t numberOfNodes();
233445 
233447  static size_t memoryUsage();
233448 
233449  // End of scope which started in IR nodes specific code
233450  /* */
233451 
233452  /* name Internal Functions
233453  \brief Internal functions ... incomplete-documentation
233454 
233455  These functions have been made public as part of the design, but they are suggested for internal use
233456  or by particularly knowledgeable users for specialized tools or applications.
233457 
233458  \internal We could not make these private because they are required by user for special purposes. And
233459  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
233460 
233461  */
233462 
233463  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
233464  // overridden in every class by *generated* implementation
233466  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
233467  // MS: 06/28/02 container of names of variables or container indices
233468  // used used in the traversal to access AST successor nodes
233469  // overridden in every class by *generated* implementation
233472  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
233473 
233474  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
233475  // than all the vector copies. The implementation for these functions is generated for each class.
233477  virtual size_t get_numberOfTraversalSuccessors() override;
233479  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
233481  virtual size_t get_childIndex(SgNode *child) override;
233482 
233483 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
233484  // MS: 08/16/2002 method for generating RTI information
233486  virtual RTIReturnType roseRTI() override;
233487 #endif
233488  /* */
233489 
233490 
233491 
233492  /* name Deprecated Functions
233493  \brief Deprecated functions ... incomplete-documentation
233494 
233495  These functions have been deprecated from use.
233496  */
233497  /* */
233498 
233500  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
233501 
233502  // JJW (10/16/2008): Changed to a single function in Node.code, and put
233503  // getVariant() in #if 0 block to prevent confusing Doxygen
233504 #if 0
233505 
233506  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
233508  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
233509 #endif
233510  /* */
233511 
233512 
233513 
233514 
233515  public:
233516  /* name Traversal Support Functions
233517  \brief Traversal support functions ... incomplete-documentation
233518 
233519  These functions have been made public as part of the design, but they are suggested for internal use
233520  or by particularly knowledgable users for specialized tools or applications.
233521  */
233522  /* */
233523 
233524  // DQ (11/26/2005): Support for visitor pattern mechanims
233525  // (inferior to ROSE traversal mechanism, experimental).
233529 
233530  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
233532  virtual void accept (ROSE_VisitorPattern & visitor) override;
233533 
233534  // DQ (12/26/2005): Support for traversal based on the memory pool
233537  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
233538 
233541  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
233542 
233543  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
233544  // This traversal helps support internal tools that call static member functions.
233545  // note: this function operates on the memory pools.
233548  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
233549  /* */
233550 
233551 
233552  public:
233553  /* name Memory Allocation Functions
233554  \brief Memory allocations functions ... incomplete-documentation
233555 
233556  These functions have been made public as part of the design, but they are suggested for internal use
233557  or by particularly knowledgable users for specialized tools or applications.
233558  */
233559  /* */
233560 
233571  virtual bool isInMemoryPool() override;
233572 
233583  virtual void checkDataMemberPointersIfInMemoryPool() override;
233584 
233585  // DQ (4/30/2006): Modified to be a const function.
233600  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
233601 
233611  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
233612 
233624  virtual long getChildIndex( SgNode* childNode ) const override;
233625 
233626  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
233627  // comment here (changed to be a C style comment and not be a doxygen comment).
233628  /* \brief Constructor for use by AST File I/O Mechanism
233629 
233630  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
233631  which obtained via fast binary file I/O from disk.
233632  */
233633  // SgPlusPlusOp( SgPlusPlusOpStorageClass& source );
233634 
233635 
233636 
233637 
233638 
233639  // JH (10/24/2005): methods added to support the ast file IO
233640  private:
233641 
233642  /* name AST Memory Allocation Support Functions
233643  \brief Memory allocations support....
233644 
233645  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
233646  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
233647  and support the AST File I/O Mechanism.
233648  */
233649  /* */
233650 
233651  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
233652  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
233653  that I use the same type everywhere, if any changes are made. THe second one declares the type
233654  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
233655  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
233656  a correspinding one in the AST_FILE_IO class!
233657  */
233658  // DQ (9/2/2015): This typedef is no longer used, we can't define the
233659  // comment here (changed to be a C style comment and not be a doxygen comment).
233660  /* \brief Typedef used for low level memory access.
233661  */
233662  // typedef unsigned char* TestType;
233663 
233664  // DQ (9/2/2015): This typedef is no longer used, we can't define the
233665  // comment here (changed to be a C style comment and not be a doxygen comment).
233666  /* \brief Typedef used to hold memory addresses as values.
233667  */
233668  // typedef unsigned long AddressType;
233669 
233670 
233671 
233672  // necessary, to have direct access to the p_freepointer and the private methods !
233674  friend class AST_FILE_IO;
233675 
233677  friend class SgPlusPlusOpStorageClass;
233678 
233680  friend class AstSpecificDataManagingClass;
233681 
233683  friend class AstSpecificDataManagingClassStorageClass;
233684 
233685  public:
233687  SgPlusPlusOp( const SgPlusPlusOpStorageClass& source );
233688 
233689  // private: // JJW hack
233690  /*
233691  name AST Memory Allocation Support Variables
233692  Memory allocations support variables
233693 
233694  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
233695  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
233696  and support the AST File I/O Mechanism.
233697  */
233698  /* */
233699 
233700  public:
233701 
233702  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
233703  // to current node (so that it will work cleanly with build functions to specify patterns).
233704  // virtual SgNode* addRegExpAttribute();
233710  SgPlusPlusOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
233711 
233712 // *** COMMON CODE SECTION ENDS HERE ***
233713 
233714 
233715 // End of memberFunctionString
233716 // Start of memberFunctionString
233717 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
233718 
233719  // the generated cast function
233720  // friend ROSE_DLL_API SgPlusPlusOp* isSgPlusPlusOp ( SgNode* s );
233721 
233722  typedef SgUnaryOp base_node_type;
233723 
233724 
233725 // End of memberFunctionString
233726 // Start of memberFunctionString
233727 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
233728 
233729  void post_construction_initialization() override;
233730 
233731 
233732 // End of memberFunctionString
233733 // Start of memberFunctionString
233734 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
233735 
233736  int precedence() const override { return 15; }
233737 
233738 
233739 // End of memberFunctionString
233740 
233741 
233742  public:
233743  virtual ~SgPlusPlusOp();
233744 
233745 
233746  public:
233747  SgPlusPlusOp(Sg_File_Info* startOfConstruct , SgExpression* operand_i = NULL, SgType* expression_type = NULL);
233748  SgPlusPlusOp(SgExpression* operand_i, SgType* expression_type);
233749 
233750  protected:
233751 
233752 
233753 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
233754 
233755 
233756  };
233757 #endif
233758 
233759 // postdeclarations for SgPlusPlusOp
233760 
233761 /* #line 233762 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
233762 
233763 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
233764 
233765 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
233766 
233767 
233768 /* #line 233769 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
233769 
233770 
233771 
233772 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
233773 
233774 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
233775 // This code is automatically generated for each
233776 // terminal and non-terminal within the defined
233777 // grammar. There is a simple way to change the
233778 // code to fix bugs etc. See the ROSE README file
233779 // for directions.
233780 
233781 // tps: (02/22/2010): Adding DLL export requirements
233782 #include "rosedll.h"
233783 
233784 // predeclarations for SgBitComplementOp
233785 
233786 /* #line 233787 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
233787 
233788 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
233789 
233790 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
233791 
233792 #if 1
233793 // Class Definition for SgBitComplementOp
233794 class ROSE_DLL_API SgBitComplementOp : public SgUnaryOp
233795  {
233796  public:
233797 
233798 
233799 /* #line 233800 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
233800 
233801  virtual SgNode* copy ( SgCopyHelp& help) const override;
233802 // Start of memberFunctionString
233803 /* #line 1174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
233804 
233805 
233806 
233807 // End of memberFunctionString
233808 // Start of memberFunctionString
233809 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
233810 
233811 // *** COMMON CODE SECTION BEGINS HERE ***
233812 
233813  public:
233814 
233815  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
233816  // and not required which is required to match the other aspects of the copy mechanism code generation.
233817  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
233818  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
233819  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
233820  // virtual SgNode* copy ( const SgCopyHelp & help) const;
233821 
233823  virtual std::string class_name() const override;
233824 
233826  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
233827 
233829  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
233830  // static const VariantT static_variant = V_SgBitComplementOp;
233831  enum { static_variant = V_SgBitComplementOp };
233832 
233833  /* the generated cast function */
233835  ROSE_DLL_API friend SgBitComplementOp* isSgBitComplementOp( SgNode * s );
233836 
233838  ROSE_DLL_API friend const SgBitComplementOp* isSgBitComplementOp( const SgNode * s );
233839 
233840  // ******************************************
233841  // * Memory Pool / New / Delete
233842  // ******************************************
233843 
233844  public:
233846  static const unsigned pool_size; //
233848  static std::vector<unsigned char *> pools; //
233850  static SgBitComplementOp * next_node; //
233851 
233853  static unsigned long initializeStorageClassArray(SgBitComplementOpStorageClass *); //
233854 
233856  static void clearMemoryPool(); //
233857  static void deleteMemoryPool(); //
233858 
233860  static void extendMemoryPoolForFileIO(); //
233861 
233863  static SgBitComplementOp * getPointerFromGlobalIndex(unsigned long); //
233865  static SgBitComplementOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
233866 
233868  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
233870  static void resetValidFreepointers(); //
233872  static unsigned long getNumberOfLastValidPointer(); //
233873 
233874 
233875 #if defined(INLINE_FUNCTIONS)
233876 
233877  inline void *operator new (size_t size);
233878 #else
233879 
233880  void *operator new (size_t size);
233881 #endif
233882 
233883  void operator delete (void* pointer, size_t size);
233884 
233885  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
233886  void operator delete (void* pointer)
233887  {
233888  // This is the generated delete operator...
233889  SgBitComplementOp::operator delete (pointer,sizeof(SgBitComplementOp));
233890  }
233891 
233893  static size_t numberOfNodes();
233894 
233896  static size_t memoryUsage();
233897 
233898  // End of scope which started in IR nodes specific code
233899  /* */
233900 
233901  /* name Internal Functions
233902  \brief Internal functions ... incomplete-documentation
233903 
233904  These functions have been made public as part of the design, but they are suggested for internal use
233905  or by particularly knowledgeable users for specialized tools or applications.
233906 
233907  \internal We could not make these private because they are required by user for special purposes. And
233908  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
233909 
233910  */
233911 
233912  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
233913  // overridden in every class by *generated* implementation
233915  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
233916  // MS: 06/28/02 container of names of variables or container indices
233917  // used used in the traversal to access AST successor nodes
233918  // overridden in every class by *generated* implementation
233921  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
233922 
233923  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
233924  // than all the vector copies. The implementation for these functions is generated for each class.
233926  virtual size_t get_numberOfTraversalSuccessors() override;
233928  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
233930  virtual size_t get_childIndex(SgNode *child) override;
233931 
233932 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
233933  // MS: 08/16/2002 method for generating RTI information
233935  virtual RTIReturnType roseRTI() override;
233936 #endif
233937  /* */
233938 
233939 
233940 
233941  /* name Deprecated Functions
233942  \brief Deprecated functions ... incomplete-documentation
233943 
233944  These functions have been deprecated from use.
233945  */
233946  /* */
233947 
233949  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
233950 
233951  // JJW (10/16/2008): Changed to a single function in Node.code, and put
233952  // getVariant() in #if 0 block to prevent confusing Doxygen
233953 #if 0
233954 
233955  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
233957  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
233958 #endif
233959  /* */
233960 
233961 
233962 
233963 
233964  public:
233965  /* name Traversal Support Functions
233966  \brief Traversal support functions ... incomplete-documentation
233967 
233968  These functions have been made public as part of the design, but they are suggested for internal use
233969  or by particularly knowledgable users for specialized tools or applications.
233970  */
233971  /* */
233972 
233973  // DQ (11/26/2005): Support for visitor pattern mechanims
233974  // (inferior to ROSE traversal mechanism, experimental).
233978 
233979  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
233981  virtual void accept (ROSE_VisitorPattern & visitor) override;
233982 
233983  // DQ (12/26/2005): Support for traversal based on the memory pool
233986  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
233987 
233990  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
233991 
233992  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
233993  // This traversal helps support internal tools that call static member functions.
233994  // note: this function operates on the memory pools.
233997  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
233998  /* */
233999 
234000 
234001  public:
234002  /* name Memory Allocation Functions
234003  \brief Memory allocations functions ... incomplete-documentation
234004 
234005  These functions have been made public as part of the design, but they are suggested for internal use
234006  or by particularly knowledgable users for specialized tools or applications.
234007  */
234008  /* */
234009 
234020  virtual bool isInMemoryPool() override;
234021 
234032  virtual void checkDataMemberPointersIfInMemoryPool() override;
234033 
234034  // DQ (4/30/2006): Modified to be a const function.
234049  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
234050 
234060  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
234061 
234073  virtual long getChildIndex( SgNode* childNode ) const override;
234074 
234075  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
234076  // comment here (changed to be a C style comment and not be a doxygen comment).
234077  /* \brief Constructor for use by AST File I/O Mechanism
234078 
234079  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
234080  which obtained via fast binary file I/O from disk.
234081  */
234082  // SgBitComplementOp( SgBitComplementOpStorageClass& source );
234083 
234084 
234085 
234086 
234087 
234088  // JH (10/24/2005): methods added to support the ast file IO
234089  private:
234090 
234091  /* name AST Memory Allocation Support Functions
234092  \brief Memory allocations support....
234093 
234094  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
234095  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
234096  and support the AST File I/O Mechanism.
234097  */
234098  /* */
234099 
234100  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
234101  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
234102  that I use the same type everywhere, if any changes are made. THe second one declares the type
234103  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
234104  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
234105  a correspinding one in the AST_FILE_IO class!
234106  */
234107  // DQ (9/2/2015): This typedef is no longer used, we can't define the
234108  // comment here (changed to be a C style comment and not be a doxygen comment).
234109  /* \brief Typedef used for low level memory access.
234110  */
234111  // typedef unsigned char* TestType;
234112 
234113  // DQ (9/2/2015): This typedef is no longer used, we can't define the
234114  // comment here (changed to be a C style comment and not be a doxygen comment).
234115  /* \brief Typedef used to hold memory addresses as values.
234116  */
234117  // typedef unsigned long AddressType;
234118 
234119 
234120 
234121  // necessary, to have direct access to the p_freepointer and the private methods !
234123  friend class AST_FILE_IO;
234124 
234126  friend class SgBitComplementOpStorageClass;
234127 
234129  friend class AstSpecificDataManagingClass;
234130 
234132  friend class AstSpecificDataManagingClassStorageClass;
234133 
234134  public:
234136  SgBitComplementOp( const SgBitComplementOpStorageClass& source );
234137 
234138  // private: // JJW hack
234139  /*
234140  name AST Memory Allocation Support Variables
234141  Memory allocations support variables
234142 
234143  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
234144  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
234145  and support the AST File I/O Mechanism.
234146  */
234147  /* */
234148 
234149  public:
234150 
234151  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
234152  // to current node (so that it will work cleanly with build functions to specify patterns).
234153  // virtual SgNode* addRegExpAttribute();
234160 
234161 // *** COMMON CODE SECTION ENDS HERE ***
234162 
234163 
234164 // End of memberFunctionString
234165 // Start of memberFunctionString
234166 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
234167 
234168  // the generated cast function
234169  // friend ROSE_DLL_API SgBitComplementOp* isSgBitComplementOp ( SgNode* s );
234170 
234171  typedef SgUnaryOp base_node_type;
234172 
234173 
234174 // End of memberFunctionString
234175 // Start of memberFunctionString
234176 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
234177 
234178  void post_construction_initialization() override;
234179 
234180 
234181 // End of memberFunctionString
234182 // Start of memberFunctionString
234183 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
234184 
234185  int precedence() const override { return 15; }
234186 
234187 
234188 // End of memberFunctionString
234189 
234190 
234191  public:
234192  virtual ~SgBitComplementOp();
234193 
234194 
234195  public:
234196  SgBitComplementOp(Sg_File_Info* startOfConstruct , SgExpression* operand_i = NULL, SgType* expression_type = NULL);
234197  SgBitComplementOp(SgExpression* operand_i, SgType* expression_type);
234198 
234199  protected:
234200 
234201 
234202 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
234203 
234204 
234205  };
234206 #endif
234207 
234208 // postdeclarations for SgBitComplementOp
234209 
234210 /* #line 234211 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
234211 
234212 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
234213 
234214 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
234215 
234216 
234217 /* #line 234218 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
234218 
234219 
234220 
234221 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
234222 
234223 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
234224 // This code is automatically generated for each
234225 // terminal and non-terminal within the defined
234226 // grammar. There is a simple way to change the
234227 // code to fix bugs etc. See the ROSE README file
234228 // for directions.
234229 
234230 // tps: (02/22/2010): Adding DLL export requirements
234231 #include "rosedll.h"
234232 
234233 // predeclarations for SgCastExp
234234 
234235 /* #line 234236 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
234236 
234237 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
234238 
234239 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
234240 
234241 #if 1
234242 // Class Definition for SgCastExp
234243 class ROSE_DLL_API SgCastExp : public SgUnaryOp
234244  {
234245  public:
234246 
234247 
234248 /* #line 234249 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
234249 
234250  virtual SgNode* copy ( SgCopyHelp& help) const override;
234251 // Start of memberFunctionString
234252 /* #line 1205 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
234253 
234254  // DQ (6/14/2005): Modified to make enum name consistant with elsewhere in ROSE (Sage III)
234255  // enum Sg_e_cast_type
234264  {
234265  e_unknown = 0,
234266  e_default = 1,
234267  e_C_style_cast = 2,
234268  e_const_cast = 3,
234269  e_static_cast = 4,
234270  e_dynamic_cast = 5,
234271  e_reinterpret_cast = 6,
234272  // DQ (8/22/2016): Adding more comprehensive setting of cast semantics (as part of improved C++ cast support).
234273  // Not clear if these really need to be present.
234274  // e_reference_cast = 7, /*!< C++ reference cast (base class cast) */
234275  // e_rvalue_reference_cast = 8, /*!< C++ rvalue reference cast (base class cast to rvalue) */
234276  e_safe_cast = 8,
234277  e_last_cast
234278  };
234279 
234280  // Sg_e_cast_type cast_type();
234281  cast_type_enum cast_type() const;
234282 
234283  // DQ (1/16/2006): Added to support special version of get_type which uses the p_expression_type
234284  // (one of the few places where we have to store the expression type explicitly).
234285  SgType* get_type() const override;
234286 
234287 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
234288  virtual unsigned int cfgFindChildIndex(SgNode* n) override; // CFG children do not match traversalSuccessorContainer
234289 #endif
234290 
234291  // DQ (1/17/2008): Added to permit the type to be set.
234292  void set_type (SgType* type);
234293 
234294  // get lvalue
234295  virtual bool isLValue() const override;
234296  virtual bool isChildUsedAsLValue(const SgExpression* child) const override; // INTERNAL Recursively call up the chain to answer the child
234297 
234298  // DQ (10/24/2014): Added support to determine when cast should be allowable.
234299  // This is used in the SageInterace support for evaluation of constant expressions.
234300  bool cast_looses_precision();
234301 
234302  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
234303  int get_name_qualification_length() const override;
234304  void set_name_qualification_length(int name_qualification_length) override;
234305 
234306  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
234307  bool get_type_elaboration_required() const override;
234308  void set_type_elaboration_required(bool type_elaboration_required) override;
234309 
234310  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
234311  bool get_global_qualification_required() const override;
234312  void set_global_qualification_required(bool global_qualification_required) override;
234313 
234314  static std::string cast_type_to_string ( enum cast_type_enum );
234315 
234316  // DQ (4/15/2019): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
234317  int get_name_qualification_for_pointer_to_member_class_length() const override;
234318  void set_name_qualification_for_pointer_to_member_class_length(int name_qualification_length) override;
234319 
234320  // DQ (4/15/2019): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
234321  bool get_type_elaboration_for_pointer_to_member_class_required() const override;
234322  void set_type_elaboration_for_pointer_to_member_class_required(bool type_elaboration_required) override;
234323 
234324  // DQ (4/15/2019): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
234325  bool get_global_qualification_for_pointer_to_member_class_required() const override;
234326  void set_global_qualification_for_pointer_to_member_class_required(bool global_qualification_required) override;
234327 
234328 
234329 
234330 // End of memberFunctionString
234331 // Start of memberFunctionString
234332 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
234333 
234334 // *** COMMON CODE SECTION BEGINS HERE ***
234335 
234336  public:
234337 
234338  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
234339  // and not required which is required to match the other aspects of the copy mechanism code generation.
234340  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
234341  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
234342  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
234343  // virtual SgNode* copy ( const SgCopyHelp & help) const;
234344 
234346  virtual std::string class_name() const override;
234347 
234349  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
234350 
234352  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
234353  // static const VariantT static_variant = V_SgCastExp;
234354  enum { static_variant = V_SgCastExp };
234355 
234356  /* the generated cast function */
234358  ROSE_DLL_API friend SgCastExp* isSgCastExp( SgNode * s );
234359 
234361  ROSE_DLL_API friend const SgCastExp* isSgCastExp( const SgNode * s );
234362 
234363  // ******************************************
234364  // * Memory Pool / New / Delete
234365  // ******************************************
234366 
234367  public:
234369  static const unsigned pool_size; //
234371  static std::vector<unsigned char *> pools; //
234373  static SgCastExp * next_node; //
234374 
234376  static unsigned long initializeStorageClassArray(SgCastExpStorageClass *); //
234377 
234379  static void clearMemoryPool(); //
234380  static void deleteMemoryPool(); //
234381 
234383  static void extendMemoryPoolForFileIO(); //
234384 
234386  static SgCastExp * getPointerFromGlobalIndex(unsigned long); //
234388  static SgCastExp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
234389 
234391  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
234393  static void resetValidFreepointers(); //
234395  static unsigned long getNumberOfLastValidPointer(); //
234396 
234397 
234398 #if defined(INLINE_FUNCTIONS)
234399 
234400  inline void *operator new (size_t size);
234401 #else
234402 
234403  void *operator new (size_t size);
234404 #endif
234405 
234406  void operator delete (void* pointer, size_t size);
234407 
234408  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
234409  void operator delete (void* pointer)
234410  {
234411  // This is the generated delete operator...
234412  SgCastExp::operator delete (pointer,sizeof(SgCastExp));
234413  }
234414 
234416  static size_t numberOfNodes();
234417 
234419  static size_t memoryUsage();
234420 
234421  // End of scope which started in IR nodes specific code
234422  /* */
234423 
234424  /* name Internal Functions
234425  \brief Internal functions ... incomplete-documentation
234426 
234427  These functions have been made public as part of the design, but they are suggested for internal use
234428  or by particularly knowledgeable users for specialized tools or applications.
234429 
234430  \internal We could not make these private because they are required by user for special purposes. And
234431  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
234432 
234433  */
234434 
234435  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
234436  // overridden in every class by *generated* implementation
234438  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
234439  // MS: 06/28/02 container of names of variables or container indices
234440  // used used in the traversal to access AST successor nodes
234441  // overridden in every class by *generated* implementation
234444  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
234445 
234446  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
234447  // than all the vector copies. The implementation for these functions is generated for each class.
234449  virtual size_t get_numberOfTraversalSuccessors() override;
234451  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
234453  virtual size_t get_childIndex(SgNode *child) override;
234454 
234455 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
234456  // MS: 08/16/2002 method for generating RTI information
234458  virtual RTIReturnType roseRTI() override;
234459 #endif
234460  /* */
234461 
234462 
234463 
234464  /* name Deprecated Functions
234465  \brief Deprecated functions ... incomplete-documentation
234466 
234467  These functions have been deprecated from use.
234468  */
234469  /* */
234470 
234472  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
234473 
234474  // JJW (10/16/2008): Changed to a single function in Node.code, and put
234475  // getVariant() in #if 0 block to prevent confusing Doxygen
234476 #if 0
234477 
234478  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
234480  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
234481 #endif
234482  /* */
234483 
234484 
234485 
234486 
234487  public:
234488  /* name Traversal Support Functions
234489  \brief Traversal support functions ... incomplete-documentation
234490 
234491  These functions have been made public as part of the design, but they are suggested for internal use
234492  or by particularly knowledgable users for specialized tools or applications.
234493  */
234494  /* */
234495 
234496  // DQ (11/26/2005): Support for visitor pattern mechanims
234497  // (inferior to ROSE traversal mechanism, experimental).
234501 
234502  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
234504  virtual void accept (ROSE_VisitorPattern & visitor) override;
234505 
234506  // DQ (12/26/2005): Support for traversal based on the memory pool
234509  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
234510 
234513  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
234514 
234515  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
234516  // This traversal helps support internal tools that call static member functions.
234517  // note: this function operates on the memory pools.
234520  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
234521  /* */
234522 
234523 
234524  public:
234525  /* name Memory Allocation Functions
234526  \brief Memory allocations functions ... incomplete-documentation
234527 
234528  These functions have been made public as part of the design, but they are suggested for internal use
234529  or by particularly knowledgable users for specialized tools or applications.
234530  */
234531  /* */
234532 
234543  virtual bool isInMemoryPool() override;
234544 
234555  virtual void checkDataMemberPointersIfInMemoryPool() override;
234556 
234557  // DQ (4/30/2006): Modified to be a const function.
234572  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
234573 
234583  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
234584 
234596  virtual long getChildIndex( SgNode* childNode ) const override;
234597 
234598  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
234599  // comment here (changed to be a C style comment and not be a doxygen comment).
234600  /* \brief Constructor for use by AST File I/O Mechanism
234601 
234602  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
234603  which obtained via fast binary file I/O from disk.
234604  */
234605  // SgCastExp( SgCastExpStorageClass& source );
234606 
234607 
234608 
234609 
234610 
234611  // JH (10/24/2005): methods added to support the ast file IO
234612  private:
234613 
234614  /* name AST Memory Allocation Support Functions
234615  \brief Memory allocations support....
234616 
234617  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
234618  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
234619  and support the AST File I/O Mechanism.
234620  */
234621  /* */
234622 
234623  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
234624  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
234625  that I use the same type everywhere, if any changes are made. THe second one declares the type
234626  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
234627  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
234628  a correspinding one in the AST_FILE_IO class!
234629  */
234630  // DQ (9/2/2015): This typedef is no longer used, we can't define the
234631  // comment here (changed to be a C style comment and not be a doxygen comment).
234632  /* \brief Typedef used for low level memory access.
234633  */
234634  // typedef unsigned char* TestType;
234635 
234636  // DQ (9/2/2015): This typedef is no longer used, we can't define the
234637  // comment here (changed to be a C style comment and not be a doxygen comment).
234638  /* \brief Typedef used to hold memory addresses as values.
234639  */
234640  // typedef unsigned long AddressType;
234641 
234642 
234643 
234644  // necessary, to have direct access to the p_freepointer and the private methods !
234646  friend class AST_FILE_IO;
234647 
234649  friend class SgCastExpStorageClass;
234650 
234652  friend class AstSpecificDataManagingClass;
234653 
234655  friend class AstSpecificDataManagingClassStorageClass;
234656 
234657  public:
234659  SgCastExp( const SgCastExpStorageClass& source );
234660 
234661  // private: // JJW hack
234662  /*
234663  name AST Memory Allocation Support Variables
234664  Memory allocations support variables
234665 
234666  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
234667  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
234668  and support the AST File I/O Mechanism.
234669  */
234670  /* */
234671 
234672  public:
234673 
234674  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
234675  // to current node (so that it will work cleanly with build functions to specify patterns).
234676  // virtual SgNode* addRegExpAttribute();
234682  SgCastExp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
234683 
234684 // *** COMMON CODE SECTION ENDS HERE ***
234685 
234686 
234687 // End of memberFunctionString
234688 // Start of memberFunctionString
234689 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
234690 
234691  // the generated cast function
234692  // friend ROSE_DLL_API SgCastExp* isSgCastExp ( SgNode* s );
234693 
234694  typedef SgUnaryOp base_node_type;
234695 
234696 
234697 // End of memberFunctionString
234698 // Start of memberFunctionString
234699 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
234700 
234701  void post_construction_initialization() override;
234702 
234703 
234704 // End of memberFunctionString
234705 // Start of memberFunctionString
234706 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
234707 
234708  int precedence() const override { return 15; }
234709 
234710 
234711 // End of memberFunctionString
234712 
234713  public:
234714  SgCastExp::cast_type_enum get_cast_type() const;
234715  void set_cast_type(SgCastExp::cast_type_enum cast_type);
234716 
234717  public:
234718  SgExpression* get_originalExpressionTree() const override /* (getDataAccessFunctionPrototypeString) */;
234719  void set_originalExpressionTree(SgExpression* originalExpressionTree) override /* (getDataAccessFunctionPrototypeString) */;
234720 
234721 
234722 
234723 
234724  public:
234725  bool get_castContainsBaseTypeDefiningDeclaration() const;
234726  void set_castContainsBaseTypeDefiningDeclaration(bool castContainsBaseTypeDefiningDeclaration);
234727 
234728 
234729 
234730 
234731 
234732  public:
234733  virtual ~SgCastExp();
234734 
234735 
234736  public:
234737  SgCastExp(Sg_File_Info* startOfConstruct , SgExpression* operand_i = NULL, SgType* expression_type = NULL, SgCastExp::cast_type_enum cast_type = SgCastExp::e_C_style_cast);
234738  SgCastExp(SgExpression* operand_i, SgType* expression_type, SgCastExp::cast_type_enum cast_type);
234739 
234740  protected:
234741 // Start of memberFunctionString
234742 SgCastExp::cast_type_enum p_cast_type;
234743 
234744 // End of memberFunctionString
234745 // Start of memberFunctionString
234746 SgExpression* p_originalExpressionTree;
234747 
234748 // End of memberFunctionString
234749 // Start of memberFunctionString
234750 int p_name_qualification_length;
234751 
234752 // End of memberFunctionString
234753 // Start of memberFunctionString
234754 bool p_type_elaboration_required;
234755 
234756 // End of memberFunctionString
234757 // Start of memberFunctionString
234758 bool p_global_qualification_required;
234759 
234760 // End of memberFunctionString
234761 // Start of memberFunctionString
234762 bool p_castContainsBaseTypeDefiningDeclaration;
234763 
234764 // End of memberFunctionString
234765 // Start of memberFunctionString
234766 int p_name_qualification_for_pointer_to_member_class_length;
234767 
234768 // End of memberFunctionString
234769 // Start of memberFunctionString
234770 bool p_type_elaboration_for_pointer_to_member_class_required;
234771 
234772 // End of memberFunctionString
234773 // Start of memberFunctionString
234774 bool p_global_qualification_for_pointer_to_member_class_required;
234775 
234776 // End of memberFunctionString
234777 
234778 
234779 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
234780 
234781 
234782  };
234783 #endif
234784 
234785 // postdeclarations for SgCastExp
234786 
234787 /* #line 234788 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
234788 
234789 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
234790 
234791 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
234792 
234793 
234794 /* #line 234795 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
234795 
234796 
234797 
234798 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
234799 
234800 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
234801 // This code is automatically generated for each
234802 // terminal and non-terminal within the defined
234803 // grammar. There is a simple way to change the
234804 // code to fix bugs etc. See the ROSE README file
234805 // for directions.
234806 
234807 // tps: (02/22/2010): Adding DLL export requirements
234808 #include "rosedll.h"
234809 
234810 // predeclarations for SgThrowOp
234811 
234812 /* #line 234813 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
234813 
234814 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
234815 
234816 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
234817 
234818 #if 1
234819 // Class Definition for SgThrowOp
234820 class ROSE_DLL_API SgThrowOp : public SgUnaryOp
234821  {
234822  public:
234823 
234824 
234825 /* #line 234826 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
234826 
234827  virtual SgNode* copy ( SgCopyHelp& help) const override;
234828 // Start of memberFunctionString
234829 /* #line 1452 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
234830 
234831 
234834  {
234835  unknown_throw = 0 ,
234836  throw_expression ,
234837  // throw_exception_specification /*! takes a list of types */, JJW (8/6/2008) -- SgThrowOp is not used for exception specifications
234838  rethrow
234839  };
234840 
234841  // DQ (1/16/2006): Added to support special version of get_type()
234842  SgType* get_type() const override;
234843 
234844 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
234845  unsigned int cfgIndexForEnd() const override;
234846  std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
234847  std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
234848 #endif
234849 
234850 
234851 
234852 // End of memberFunctionString
234853 // Start of memberFunctionString
234854 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
234855 
234856 // *** COMMON CODE SECTION BEGINS HERE ***
234857 
234858  public:
234859 
234860  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
234861  // and not required which is required to match the other aspects of the copy mechanism code generation.
234862  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
234863  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
234864  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
234865  // virtual SgNode* copy ( const SgCopyHelp & help) const;
234866 
234868  virtual std::string class_name() const override;
234869 
234871  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
234872 
234874  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
234875  // static const VariantT static_variant = V_SgThrowOp;
234876  enum { static_variant = V_SgThrowOp };
234877 
234878  /* the generated cast function */
234880  ROSE_DLL_API friend SgThrowOp* isSgThrowOp( SgNode * s );
234881 
234883  ROSE_DLL_API friend const SgThrowOp* isSgThrowOp( const SgNode * s );
234884 
234885  // ******************************************
234886  // * Memory Pool / New / Delete
234887  // ******************************************
234888 
234889  public:
234891  static const unsigned pool_size; //
234893  static std::vector<unsigned char *> pools; //
234895  static SgThrowOp * next_node; //
234896 
234898  static unsigned long initializeStorageClassArray(SgThrowOpStorageClass *); //
234899 
234901  static void clearMemoryPool(); //
234902  static void deleteMemoryPool(); //
234903 
234905  static void extendMemoryPoolForFileIO(); //
234906 
234908  static SgThrowOp * getPointerFromGlobalIndex(unsigned long); //
234910  static SgThrowOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
234911 
234913  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
234915  static void resetValidFreepointers(); //
234917  static unsigned long getNumberOfLastValidPointer(); //
234918 
234919 
234920 #if defined(INLINE_FUNCTIONS)
234921 
234922  inline void *operator new (size_t size);
234923 #else
234924 
234925  void *operator new (size_t size);
234926 #endif
234927 
234928  void operator delete (void* pointer, size_t size);
234929 
234930  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
234931  void operator delete (void* pointer)
234932  {
234933  // This is the generated delete operator...
234934  SgThrowOp::operator delete (pointer,sizeof(SgThrowOp));
234935  }
234936 
234938  static size_t numberOfNodes();
234939 
234941  static size_t memoryUsage();
234942 
234943  // End of scope which started in IR nodes specific code
234944  /* */
234945 
234946  /* name Internal Functions
234947  \brief Internal functions ... incomplete-documentation
234948 
234949  These functions have been made public as part of the design, but they are suggested for internal use
234950  or by particularly knowledgeable users for specialized tools or applications.
234951 
234952  \internal We could not make these private because they are required by user for special purposes. And
234953  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
234954 
234955  */
234956 
234957  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
234958  // overridden in every class by *generated* implementation
234960  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
234961  // MS: 06/28/02 container of names of variables or container indices
234962  // used used in the traversal to access AST successor nodes
234963  // overridden in every class by *generated* implementation
234966  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
234967 
234968  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
234969  // than all the vector copies. The implementation for these functions is generated for each class.
234971  virtual size_t get_numberOfTraversalSuccessors() override;
234973  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
234975  virtual size_t get_childIndex(SgNode *child) override;
234976 
234977 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
234978  // MS: 08/16/2002 method for generating RTI information
234980  virtual RTIReturnType roseRTI() override;
234981 #endif
234982  /* */
234983 
234984 
234985 
234986  /* name Deprecated Functions
234987  \brief Deprecated functions ... incomplete-documentation
234988 
234989  These functions have been deprecated from use.
234990  */
234991  /* */
234992 
234994  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
234995 
234996  // JJW (10/16/2008): Changed to a single function in Node.code, and put
234997  // getVariant() in #if 0 block to prevent confusing Doxygen
234998 #if 0
234999 
235000  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
235002  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
235003 #endif
235004  /* */
235005 
235006 
235007 
235008 
235009  public:
235010  /* name Traversal Support Functions
235011  \brief Traversal support functions ... incomplete-documentation
235012 
235013  These functions have been made public as part of the design, but they are suggested for internal use
235014  or by particularly knowledgable users for specialized tools or applications.
235015  */
235016  /* */
235017 
235018  // DQ (11/26/2005): Support for visitor pattern mechanims
235019  // (inferior to ROSE traversal mechanism, experimental).
235023 
235024  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
235026  virtual void accept (ROSE_VisitorPattern & visitor) override;
235027 
235028  // DQ (12/26/2005): Support for traversal based on the memory pool
235031  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
235032 
235035  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
235036 
235037  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
235038  // This traversal helps support internal tools that call static member functions.
235039  // note: this function operates on the memory pools.
235042  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
235043  /* */
235044 
235045 
235046  public:
235047  /* name Memory Allocation Functions
235048  \brief Memory allocations functions ... incomplete-documentation
235049 
235050  These functions have been made public as part of the design, but they are suggested for internal use
235051  or by particularly knowledgable users for specialized tools or applications.
235052  */
235053  /* */
235054 
235065  virtual bool isInMemoryPool() override;
235066 
235077  virtual void checkDataMemberPointersIfInMemoryPool() override;
235078 
235079  // DQ (4/30/2006): Modified to be a const function.
235094  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
235095 
235105  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
235106 
235118  virtual long getChildIndex( SgNode* childNode ) const override;
235119 
235120  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
235121  // comment here (changed to be a C style comment and not be a doxygen comment).
235122  /* \brief Constructor for use by AST File I/O Mechanism
235123 
235124  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
235125  which obtained via fast binary file I/O from disk.
235126  */
235127  // SgThrowOp( SgThrowOpStorageClass& source );
235128 
235129 
235130 
235131 
235132 
235133  // JH (10/24/2005): methods added to support the ast file IO
235134  private:
235135 
235136  /* name AST Memory Allocation Support Functions
235137  \brief Memory allocations support....
235138 
235139  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
235140  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
235141  and support the AST File I/O Mechanism.
235142  */
235143  /* */
235144 
235145  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
235146  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
235147  that I use the same type everywhere, if any changes are made. THe second one declares the type
235148  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
235149  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
235150  a correspinding one in the AST_FILE_IO class!
235151  */
235152  // DQ (9/2/2015): This typedef is no longer used, we can't define the
235153  // comment here (changed to be a C style comment and not be a doxygen comment).
235154  /* \brief Typedef used for low level memory access.
235155  */
235156  // typedef unsigned char* TestType;
235157 
235158  // DQ (9/2/2015): This typedef is no longer used, we can't define the
235159  // comment here (changed to be a C style comment and not be a doxygen comment).
235160  /* \brief Typedef used to hold memory addresses as values.
235161  */
235162  // typedef unsigned long AddressType;
235163 
235164 
235165 
235166  // necessary, to have direct access to the p_freepointer and the private methods !
235168  friend class AST_FILE_IO;
235169 
235171  friend class SgThrowOpStorageClass;
235172 
235174  friend class AstSpecificDataManagingClass;
235175 
235177  friend class AstSpecificDataManagingClassStorageClass;
235178 
235179  public:
235181  SgThrowOp( const SgThrowOpStorageClass& source );
235182 
235183  // private: // JJW hack
235184  /*
235185  name AST Memory Allocation Support Variables
235186  Memory allocations support variables
235187 
235188  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
235189  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
235190  and support the AST File I/O Mechanism.
235191  */
235192  /* */
235193 
235194  public:
235195 
235196  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
235197  // to current node (so that it will work cleanly with build functions to specify patterns).
235198  // virtual SgNode* addRegExpAttribute();
235204  SgThrowOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
235205 
235206 // *** COMMON CODE SECTION ENDS HERE ***
235207 
235208 
235209 // End of memberFunctionString
235210 // Start of memberFunctionString
235211 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
235212 
235213  // the generated cast function
235214  // friend ROSE_DLL_API SgThrowOp* isSgThrowOp ( SgNode* s );
235215 
235216  typedef SgUnaryOp base_node_type;
235217 
235218 
235219 // End of memberFunctionString
235220 // Start of memberFunctionString
235221 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
235222 
235223  void post_construction_initialization() override;
235224 
235225 
235226 // End of memberFunctionString
235227 // Start of memberFunctionString
235228 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
235229 
235230  int precedence() const override { return 15; }
235231 
235232 
235233 // End of memberFunctionString
235234 
235235  public:
235236  SgThrowOp::e_throw_kind get_throwKind() const;
235237  void set_throwKind(SgThrowOp::e_throw_kind throwKind);
235238 
235239 
235240  public:
235241  virtual ~SgThrowOp();
235242 
235243 
235244  public:
235245  SgThrowOp(Sg_File_Info* startOfConstruct , SgExpression* operand_i = NULL, SgType* expression_type = NULL, SgThrowOp::e_throw_kind throwKind = SgThrowOp::unknown_throw);
235246  SgThrowOp(SgExpression* operand_i, SgType* expression_type, SgThrowOp::e_throw_kind throwKind);
235247 
235248  protected:
235249 // Start of memberFunctionString
235251 
235252 // End of memberFunctionString
235253 
235254 
235255 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
235256 
235257 
235258  };
235259 #endif
235260 
235261 // postdeclarations for SgThrowOp
235262 
235263 /* #line 235264 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
235264 
235265 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
235266 
235267 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
235268 
235269 
235270 /* #line 235271 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
235271 
235272 
235273 
235274 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
235275 
235276 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
235277 // This code is automatically generated for each
235278 // terminal and non-terminal within the defined
235279 // grammar. There is a simple way to change the
235280 // code to fix bugs etc. See the ROSE README file
235281 // for directions.
235282 
235283 // tps: (02/22/2010): Adding DLL export requirements
235284 #include "rosedll.h"
235285 
235286 // predeclarations for SgRealPartOp
235287 
235288 /* #line 235289 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
235289 
235290 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
235291 
235292 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
235293 
235294 #if 1
235295 // Class Definition for SgRealPartOp
235296 class ROSE_DLL_API SgRealPartOp : public SgUnaryOp
235297  {
235298  public:
235299 
235300 
235301 /* #line 235302 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
235302 
235303  virtual SgNode* copy ( SgCopyHelp& help) const override;
235304 // Start of memberFunctionString
235305 /* #line 1178 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
235306 
235307 
235308 
235309 // End of memberFunctionString
235310 // Start of memberFunctionString
235311 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
235312 
235313 // *** COMMON CODE SECTION BEGINS HERE ***
235314 
235315  public:
235316 
235317  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
235318  // and not required which is required to match the other aspects of the copy mechanism code generation.
235319  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
235320  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
235321  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
235322  // virtual SgNode* copy ( const SgCopyHelp & help) const;
235323 
235325  virtual std::string class_name() const override;
235326 
235328  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
235329 
235331  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
235332  // static const VariantT static_variant = V_SgRealPartOp;
235333  enum { static_variant = V_SgRealPartOp };
235334 
235335  /* the generated cast function */
235337  ROSE_DLL_API friend SgRealPartOp* isSgRealPartOp( SgNode * s );
235338 
235340  ROSE_DLL_API friend const SgRealPartOp* isSgRealPartOp( const SgNode * s );
235341 
235342  // ******************************************
235343  // * Memory Pool / New / Delete
235344  // ******************************************
235345 
235346  public:
235348  static const unsigned pool_size; //
235350  static std::vector<unsigned char *> pools; //
235352  static SgRealPartOp * next_node; //
235353 
235355  static unsigned long initializeStorageClassArray(SgRealPartOpStorageClass *); //
235356 
235358  static void clearMemoryPool(); //
235359  static void deleteMemoryPool(); //
235360 
235362  static void extendMemoryPoolForFileIO(); //
235363 
235365  static SgRealPartOp * getPointerFromGlobalIndex(unsigned long); //
235367  static SgRealPartOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
235368 
235370  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
235372  static void resetValidFreepointers(); //
235374  static unsigned long getNumberOfLastValidPointer(); //
235375 
235376 
235377 #if defined(INLINE_FUNCTIONS)
235378 
235379  inline void *operator new (size_t size);
235380 #else
235381 
235382  void *operator new (size_t size);
235383 #endif
235384 
235385  void operator delete (void* pointer, size_t size);
235386 
235387  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
235388  void operator delete (void* pointer)
235389  {
235390  // This is the generated delete operator...
235391  SgRealPartOp::operator delete (pointer,sizeof(SgRealPartOp));
235392  }
235393 
235395  static size_t numberOfNodes();
235396 
235398  static size_t memoryUsage();
235399 
235400  // End of scope which started in IR nodes specific code
235401  /* */
235402 
235403  /* name Internal Functions
235404  \brief Internal functions ... incomplete-documentation
235405 
235406  These functions have been made public as part of the design, but they are suggested for internal use
235407  or by particularly knowledgeable users for specialized tools or applications.
235408 
235409  \internal We could not make these private because they are required by user for special purposes. And
235410  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
235411 
235412  */
235413 
235414  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
235415  // overridden in every class by *generated* implementation
235417  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
235418  // MS: 06/28/02 container of names of variables or container indices
235419  // used used in the traversal to access AST successor nodes
235420  // overridden in every class by *generated* implementation
235423  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
235424 
235425  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
235426  // than all the vector copies. The implementation for these functions is generated for each class.
235428  virtual size_t get_numberOfTraversalSuccessors() override;
235430  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
235432  virtual size_t get_childIndex(SgNode *child) override;
235433 
235434 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
235435  // MS: 08/16/2002 method for generating RTI information
235437  virtual RTIReturnType roseRTI() override;
235438 #endif
235439  /* */
235440 
235441 
235442 
235443  /* name Deprecated Functions
235444  \brief Deprecated functions ... incomplete-documentation
235445 
235446  These functions have been deprecated from use.
235447  */
235448  /* */
235449 
235451  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
235452 
235453  // JJW (10/16/2008): Changed to a single function in Node.code, and put
235454  // getVariant() in #if 0 block to prevent confusing Doxygen
235455 #if 0
235456 
235457  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
235459  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
235460 #endif
235461  /* */
235462 
235463 
235464 
235465 
235466  public:
235467  /* name Traversal Support Functions
235468  \brief Traversal support functions ... incomplete-documentation
235469 
235470  These functions have been made public as part of the design, but they are suggested for internal use
235471  or by particularly knowledgable users for specialized tools or applications.
235472  */
235473  /* */
235474 
235475  // DQ (11/26/2005): Support for visitor pattern mechanims
235476  // (inferior to ROSE traversal mechanism, experimental).
235480 
235481  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
235483  virtual void accept (ROSE_VisitorPattern & visitor) override;
235484 
235485  // DQ (12/26/2005): Support for traversal based on the memory pool
235488  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
235489 
235492  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
235493 
235494  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
235495  // This traversal helps support internal tools that call static member functions.
235496  // note: this function operates on the memory pools.
235499  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
235500  /* */
235501 
235502 
235503  public:
235504  /* name Memory Allocation Functions
235505  \brief Memory allocations functions ... incomplete-documentation
235506 
235507  These functions have been made public as part of the design, but they are suggested for internal use
235508  or by particularly knowledgable users for specialized tools or applications.
235509  */
235510  /* */
235511 
235522  virtual bool isInMemoryPool() override;
235523 
235534  virtual void checkDataMemberPointersIfInMemoryPool() override;
235535 
235536  // DQ (4/30/2006): Modified to be a const function.
235551  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
235552 
235562  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
235563 
235575  virtual long getChildIndex( SgNode* childNode ) const override;
235576 
235577  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
235578  // comment here (changed to be a C style comment and not be a doxygen comment).
235579  /* \brief Constructor for use by AST File I/O Mechanism
235580 
235581  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
235582  which obtained via fast binary file I/O from disk.
235583  */
235584  // SgRealPartOp( SgRealPartOpStorageClass& source );
235585 
235586 
235587 
235588 
235589 
235590  // JH (10/24/2005): methods added to support the ast file IO
235591  private:
235592 
235593  /* name AST Memory Allocation Support Functions
235594  \brief Memory allocations support....
235595 
235596  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
235597  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
235598  and support the AST File I/O Mechanism.
235599  */
235600  /* */
235601 
235602  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
235603  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
235604  that I use the same type everywhere, if any changes are made. THe second one declares the type
235605  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
235606  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
235607  a correspinding one in the AST_FILE_IO class!
235608  */
235609  // DQ (9/2/2015): This typedef is no longer used, we can't define the
235610  // comment here (changed to be a C style comment and not be a doxygen comment).
235611  /* \brief Typedef used for low level memory access.
235612  */
235613  // typedef unsigned char* TestType;
235614 
235615  // DQ (9/2/2015): This typedef is no longer used, we can't define the
235616  // comment here (changed to be a C style comment and not be a doxygen comment).
235617  /* \brief Typedef used to hold memory addresses as values.
235618  */
235619  // typedef unsigned long AddressType;
235620 
235621 
235622 
235623  // necessary, to have direct access to the p_freepointer and the private methods !
235625  friend class AST_FILE_IO;
235626 
235628  friend class SgRealPartOpStorageClass;
235629 
235631  friend class AstSpecificDataManagingClass;
235632 
235634  friend class AstSpecificDataManagingClassStorageClass;
235635 
235636  public:
235638  SgRealPartOp( const SgRealPartOpStorageClass& source );
235639 
235640  // private: // JJW hack
235641  /*
235642  name AST Memory Allocation Support Variables
235643  Memory allocations support variables
235644 
235645  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
235646  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
235647  and support the AST File I/O Mechanism.
235648  */
235649  /* */
235650 
235651  public:
235652 
235653  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
235654  // to current node (so that it will work cleanly with build functions to specify patterns).
235655  // virtual SgNode* addRegExpAttribute();
235661  SgRealPartOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
235662 
235663 // *** COMMON CODE SECTION ENDS HERE ***
235664 
235665 
235666 // End of memberFunctionString
235667 // Start of memberFunctionString
235668 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
235669 
235670  // the generated cast function
235671  // friend ROSE_DLL_API SgRealPartOp* isSgRealPartOp ( SgNode* s );
235672 
235673  typedef SgUnaryOp base_node_type;
235674 
235675 
235676 // End of memberFunctionString
235677 // Start of memberFunctionString
235678 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
235679 
235680  void post_construction_initialization() override;
235681 
235682 
235683 // End of memberFunctionString
235684 // Start of memberFunctionString
235685 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
235686 
235687  int precedence() const override { return 15; }
235688 
235689 
235690 // End of memberFunctionString
235691 
235692 
235693  public:
235694  virtual ~SgRealPartOp();
235695 
235696 
235697  public:
235698  SgRealPartOp(Sg_File_Info* startOfConstruct , SgExpression* operand_i = NULL, SgType* expression_type = NULL);
235699  SgRealPartOp(SgExpression* operand_i, SgType* expression_type);
235700 
235701  protected:
235702 
235703 
235704 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
235705 
235706 
235707  };
235708 #endif
235709 
235710 // postdeclarations for SgRealPartOp
235711 
235712 /* #line 235713 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
235713 
235714 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
235715 
235716 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
235717 
235718 
235719 /* #line 235720 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
235720 
235721 
235722 
235723 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
235724 
235725 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
235726 // This code is automatically generated for each
235727 // terminal and non-terminal within the defined
235728 // grammar. There is a simple way to change the
235729 // code to fix bugs etc. See the ROSE README file
235730 // for directions.
235731 
235732 // tps: (02/22/2010): Adding DLL export requirements
235733 #include "rosedll.h"
235734 
235735 // predeclarations for SgImagPartOp
235736 
235737 /* #line 235738 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
235738 
235739 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
235740 
235741 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
235742 
235743 #if 1
235744 // Class Definition for SgImagPartOp
235745 class ROSE_DLL_API SgImagPartOp : public SgUnaryOp
235746  {
235747  public:
235748 
235749 
235750 /* #line 235751 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
235751 
235752  virtual SgNode* copy ( SgCopyHelp& help) const override;
235753 // Start of memberFunctionString
235754 /* #line 1182 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
235755 
235756 
235757 
235758 // End of memberFunctionString
235759 // Start of memberFunctionString
235760 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
235761 
235762 // *** COMMON CODE SECTION BEGINS HERE ***
235763 
235764  public:
235765 
235766  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
235767  // and not required which is required to match the other aspects of the copy mechanism code generation.
235768  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
235769  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
235770  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
235771  // virtual SgNode* copy ( const SgCopyHelp & help) const;
235772 
235774  virtual std::string class_name() const override;
235775 
235777  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
235778 
235780  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
235781  // static const VariantT static_variant = V_SgImagPartOp;
235782  enum { static_variant = V_SgImagPartOp };
235783 
235784  /* the generated cast function */
235786  ROSE_DLL_API friend SgImagPartOp* isSgImagPartOp( SgNode * s );
235787 
235789  ROSE_DLL_API friend const SgImagPartOp* isSgImagPartOp( const SgNode * s );
235790 
235791  // ******************************************
235792  // * Memory Pool / New / Delete
235793  // ******************************************
235794 
235795  public:
235797  static const unsigned pool_size; //
235799  static std::vector<unsigned char *> pools; //
235801  static SgImagPartOp * next_node; //
235802 
235804  static unsigned long initializeStorageClassArray(SgImagPartOpStorageClass *); //
235805 
235807  static void clearMemoryPool(); //
235808  static void deleteMemoryPool(); //
235809 
235811  static void extendMemoryPoolForFileIO(); //
235812 
235814  static SgImagPartOp * getPointerFromGlobalIndex(unsigned long); //
235816  static SgImagPartOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
235817 
235819  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
235821  static void resetValidFreepointers(); //
235823  static unsigned long getNumberOfLastValidPointer(); //
235824 
235825 
235826 #if defined(INLINE_FUNCTIONS)
235827 
235828  inline void *operator new (size_t size);
235829 #else
235830 
235831  void *operator new (size_t size);
235832 #endif
235833 
235834  void operator delete (void* pointer, size_t size);
235835 
235836  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
235837  void operator delete (void* pointer)
235838  {
235839  // This is the generated delete operator...
235840  SgImagPartOp::operator delete (pointer,sizeof(SgImagPartOp));
235841  }
235842 
235844  static size_t numberOfNodes();
235845 
235847  static size_t memoryUsage();
235848 
235849  // End of scope which started in IR nodes specific code
235850  /* */
235851 
235852  /* name Internal Functions
235853  \brief Internal functions ... incomplete-documentation
235854 
235855  These functions have been made public as part of the design, but they are suggested for internal use
235856  or by particularly knowledgeable users for specialized tools or applications.
235857 
235858  \internal We could not make these private because they are required by user for special purposes. And
235859  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
235860 
235861  */
235862 
235863  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
235864  // overridden in every class by *generated* implementation
235866  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
235867  // MS: 06/28/02 container of names of variables or container indices
235868  // used used in the traversal to access AST successor nodes
235869  // overridden in every class by *generated* implementation
235872  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
235873 
235874  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
235875  // than all the vector copies. The implementation for these functions is generated for each class.
235877  virtual size_t get_numberOfTraversalSuccessors() override;
235879  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
235881  virtual size_t get_childIndex(SgNode *child) override;
235882 
235883 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
235884  // MS: 08/16/2002 method for generating RTI information
235886  virtual RTIReturnType roseRTI() override;
235887 #endif
235888  /* */
235889 
235890 
235891 
235892  /* name Deprecated Functions
235893  \brief Deprecated functions ... incomplete-documentation
235894 
235895  These functions have been deprecated from use.
235896  */
235897  /* */
235898 
235900  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
235901 
235902  // JJW (10/16/2008): Changed to a single function in Node.code, and put
235903  // getVariant() in #if 0 block to prevent confusing Doxygen
235904 #if 0
235905 
235906  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
235908  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
235909 #endif
235910  /* */
235911 
235912 
235913 
235914 
235915  public:
235916  /* name Traversal Support Functions
235917  \brief Traversal support functions ... incomplete-documentation
235918 
235919  These functions have been made public as part of the design, but they are suggested for internal use
235920  or by particularly knowledgable users for specialized tools or applications.
235921  */
235922  /* */
235923 
235924  // DQ (11/26/2005): Support for visitor pattern mechanims
235925  // (inferior to ROSE traversal mechanism, experimental).
235929 
235930  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
235932  virtual void accept (ROSE_VisitorPattern & visitor) override;
235933 
235934  // DQ (12/26/2005): Support for traversal based on the memory pool
235937  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
235938 
235941  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
235942 
235943  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
235944  // This traversal helps support internal tools that call static member functions.
235945  // note: this function operates on the memory pools.
235948  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
235949  /* */
235950 
235951 
235952  public:
235953  /* name Memory Allocation Functions
235954  \brief Memory allocations functions ... incomplete-documentation
235955 
235956  These functions have been made public as part of the design, but they are suggested for internal use
235957  or by particularly knowledgable users for specialized tools or applications.
235958  */
235959  /* */
235960 
235971  virtual bool isInMemoryPool() override;
235972 
235983  virtual void checkDataMemberPointersIfInMemoryPool() override;
235984 
235985  // DQ (4/30/2006): Modified to be a const function.
236000  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
236001 
236011  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
236012 
236024  virtual long getChildIndex( SgNode* childNode ) const override;
236025 
236026  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
236027  // comment here (changed to be a C style comment and not be a doxygen comment).
236028  /* \brief Constructor for use by AST File I/O Mechanism
236029 
236030  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
236031  which obtained via fast binary file I/O from disk.
236032  */
236033  // SgImagPartOp( SgImagPartOpStorageClass& source );
236034 
236035 
236036 
236037 
236038 
236039  // JH (10/24/2005): methods added to support the ast file IO
236040  private:
236041 
236042  /* name AST Memory Allocation Support Functions
236043  \brief Memory allocations support....
236044 
236045  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
236046  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
236047  and support the AST File I/O Mechanism.
236048  */
236049  /* */
236050 
236051  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
236052  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
236053  that I use the same type everywhere, if any changes are made. THe second one declares the type
236054  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
236055  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
236056  a correspinding one in the AST_FILE_IO class!
236057  */
236058  // DQ (9/2/2015): This typedef is no longer used, we can't define the
236059  // comment here (changed to be a C style comment and not be a doxygen comment).
236060  /* \brief Typedef used for low level memory access.
236061  */
236062  // typedef unsigned char* TestType;
236063 
236064  // DQ (9/2/2015): This typedef is no longer used, we can't define the
236065  // comment here (changed to be a C style comment and not be a doxygen comment).
236066  /* \brief Typedef used to hold memory addresses as values.
236067  */
236068  // typedef unsigned long AddressType;
236069 
236070 
236071 
236072  // necessary, to have direct access to the p_freepointer and the private methods !
236074  friend class AST_FILE_IO;
236075 
236077  friend class SgImagPartOpStorageClass;
236078 
236080  friend class AstSpecificDataManagingClass;
236081 
236083  friend class AstSpecificDataManagingClassStorageClass;
236084 
236085  public:
236087  SgImagPartOp( const SgImagPartOpStorageClass& source );
236088 
236089  // private: // JJW hack
236090  /*
236091  name AST Memory Allocation Support Variables
236092  Memory allocations support variables
236093 
236094  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
236095  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
236096  and support the AST File I/O Mechanism.
236097  */
236098  /* */
236099 
236100  public:
236101 
236102  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
236103  // to current node (so that it will work cleanly with build functions to specify patterns).
236104  // virtual SgNode* addRegExpAttribute();
236110  SgImagPartOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
236111 
236112 // *** COMMON CODE SECTION ENDS HERE ***
236113 
236114 
236115 // End of memberFunctionString
236116 // Start of memberFunctionString
236117 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
236118 
236119  // the generated cast function
236120  // friend ROSE_DLL_API SgImagPartOp* isSgImagPartOp ( SgNode* s );
236121 
236122  typedef SgUnaryOp base_node_type;
236123 
236124 
236125 // End of memberFunctionString
236126 // Start of memberFunctionString
236127 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
236128 
236129  void post_construction_initialization() override;
236130 
236131 
236132 // End of memberFunctionString
236133 // Start of memberFunctionString
236134 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
236135 
236136  int precedence() const override { return 15; }
236137 
236138 
236139 // End of memberFunctionString
236140 
236141 
236142  public:
236143  virtual ~SgImagPartOp();
236144 
236145 
236146  public:
236147  SgImagPartOp(Sg_File_Info* startOfConstruct , SgExpression* operand_i = NULL, SgType* expression_type = NULL);
236148  SgImagPartOp(SgExpression* operand_i, SgType* expression_type);
236149 
236150  protected:
236151 
236152 
236153 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
236154 
236155 
236156  };
236157 #endif
236158 
236159 // postdeclarations for SgImagPartOp
236160 
236161 /* #line 236162 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
236162 
236163 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
236164 
236165 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
236166 
236167 
236168 /* #line 236169 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
236169 
236170 
236171 
236172 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
236173 
236174 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
236175 // This code is automatically generated for each
236176 // terminal and non-terminal within the defined
236177 // grammar. There is a simple way to change the
236178 // code to fix bugs etc. See the ROSE README file
236179 // for directions.
236180 
236181 // tps: (02/22/2010): Adding DLL export requirements
236182 #include "rosedll.h"
236183 
236184 // predeclarations for SgConjugateOp
236185 
236186 /* #line 236187 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
236187 
236188 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
236189 
236190 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
236191 
236192 #if 1
236193 // Class Definition for SgConjugateOp
236194 class ROSE_DLL_API SgConjugateOp : public SgUnaryOp
236195  {
236196  public:
236197 
236198 
236199 /* #line 236200 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
236200 
236201  virtual SgNode* copy ( SgCopyHelp& help) const override;
236202 // Start of memberFunctionString
236203 /* #line 1186 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
236204 
236205 
236206 
236207 // End of memberFunctionString
236208 // Start of memberFunctionString
236209 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
236210 
236211 // *** COMMON CODE SECTION BEGINS HERE ***
236212 
236213  public:
236214 
236215  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
236216  // and not required which is required to match the other aspects of the copy mechanism code generation.
236217  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
236218  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
236219  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
236220  // virtual SgNode* copy ( const SgCopyHelp & help) const;
236221 
236223  virtual std::string class_name() const override;
236224 
236226  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
236227 
236229  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
236230  // static const VariantT static_variant = V_SgConjugateOp;
236231  enum { static_variant = V_SgConjugateOp };
236232 
236233  /* the generated cast function */
236235  ROSE_DLL_API friend SgConjugateOp* isSgConjugateOp( SgNode * s );
236236 
236238  ROSE_DLL_API friend const SgConjugateOp* isSgConjugateOp( const SgNode * s );
236239 
236240  // ******************************************
236241  // * Memory Pool / New / Delete
236242  // ******************************************
236243 
236244  public:
236246  static const unsigned pool_size; //
236248  static std::vector<unsigned char *> pools; //
236250  static SgConjugateOp * next_node; //
236251 
236253  static unsigned long initializeStorageClassArray(SgConjugateOpStorageClass *); //
236254 
236256  static void clearMemoryPool(); //
236257  static void deleteMemoryPool(); //
236258 
236260  static void extendMemoryPoolForFileIO(); //
236261 
236263  static SgConjugateOp * getPointerFromGlobalIndex(unsigned long); //
236265  static SgConjugateOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
236266 
236268  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
236270  static void resetValidFreepointers(); //
236272  static unsigned long getNumberOfLastValidPointer(); //
236273 
236274 
236275 #if defined(INLINE_FUNCTIONS)
236276 
236277  inline void *operator new (size_t size);
236278 #else
236279 
236280  void *operator new (size_t size);
236281 #endif
236282 
236283  void operator delete (void* pointer, size_t size);
236284 
236285  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
236286  void operator delete (void* pointer)
236287  {
236288  // This is the generated delete operator...
236289  SgConjugateOp::operator delete (pointer,sizeof(SgConjugateOp));
236290  }
236291 
236293  static size_t numberOfNodes();
236294 
236296  static size_t memoryUsage();
236297 
236298  // End of scope which started in IR nodes specific code
236299  /* */
236300 
236301  /* name Internal Functions
236302  \brief Internal functions ... incomplete-documentation
236303 
236304  These functions have been made public as part of the design, but they are suggested for internal use
236305  or by particularly knowledgeable users for specialized tools or applications.
236306 
236307  \internal We could not make these private because they are required by user for special purposes. And
236308  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
236309 
236310  */
236311 
236312  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
236313  // overridden in every class by *generated* implementation
236315  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
236316  // MS: 06/28/02 container of names of variables or container indices
236317  // used used in the traversal to access AST successor nodes
236318  // overridden in every class by *generated* implementation
236321  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
236322 
236323  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
236324  // than all the vector copies. The implementation for these functions is generated for each class.
236326  virtual size_t get_numberOfTraversalSuccessors() override;
236328  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
236330  virtual size_t get_childIndex(SgNode *child) override;
236331 
236332 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
236333  // MS: 08/16/2002 method for generating RTI information
236335  virtual RTIReturnType roseRTI() override;
236336 #endif
236337  /* */
236338 
236339 
236340 
236341  /* name Deprecated Functions
236342  \brief Deprecated functions ... incomplete-documentation
236343 
236344  These functions have been deprecated from use.
236345  */
236346  /* */
236347 
236349  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
236350 
236351  // JJW (10/16/2008): Changed to a single function in Node.code, and put
236352  // getVariant() in #if 0 block to prevent confusing Doxygen
236353 #if 0
236354 
236355  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
236357  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
236358 #endif
236359  /* */
236360 
236361 
236362 
236363 
236364  public:
236365  /* name Traversal Support Functions
236366  \brief Traversal support functions ... incomplete-documentation
236367 
236368  These functions have been made public as part of the design, but they are suggested for internal use
236369  or by particularly knowledgable users for specialized tools or applications.
236370  */
236371  /* */
236372 
236373  // DQ (11/26/2005): Support for visitor pattern mechanims
236374  // (inferior to ROSE traversal mechanism, experimental).
236378 
236379  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
236381  virtual void accept (ROSE_VisitorPattern & visitor) override;
236382 
236383  // DQ (12/26/2005): Support for traversal based on the memory pool
236386  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
236387 
236390  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
236391 
236392  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
236393  // This traversal helps support internal tools that call static member functions.
236394  // note: this function operates on the memory pools.
236397  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
236398  /* */
236399 
236400 
236401  public:
236402  /* name Memory Allocation Functions
236403  \brief Memory allocations functions ... incomplete-documentation
236404 
236405  These functions have been made public as part of the design, but they are suggested for internal use
236406  or by particularly knowledgable users for specialized tools or applications.
236407  */
236408  /* */
236409 
236420  virtual bool isInMemoryPool() override;
236421 
236432  virtual void checkDataMemberPointersIfInMemoryPool() override;
236433 
236434  // DQ (4/30/2006): Modified to be a const function.
236449  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
236450 
236460  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
236461 
236473  virtual long getChildIndex( SgNode* childNode ) const override;
236474 
236475  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
236476  // comment here (changed to be a C style comment and not be a doxygen comment).
236477  /* \brief Constructor for use by AST File I/O Mechanism
236478 
236479  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
236480  which obtained via fast binary file I/O from disk.
236481  */
236482  // SgConjugateOp( SgConjugateOpStorageClass& source );
236483 
236484 
236485 
236486 
236487 
236488  // JH (10/24/2005): methods added to support the ast file IO
236489  private:
236490 
236491  /* name AST Memory Allocation Support Functions
236492  \brief Memory allocations support....
236493 
236494  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
236495  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
236496  and support the AST File I/O Mechanism.
236497  */
236498  /* */
236499 
236500  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
236501  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
236502  that I use the same type everywhere, if any changes are made. THe second one declares the type
236503  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
236504  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
236505  a correspinding one in the AST_FILE_IO class!
236506  */
236507  // DQ (9/2/2015): This typedef is no longer used, we can't define the
236508  // comment here (changed to be a C style comment and not be a doxygen comment).
236509  /* \brief Typedef used for low level memory access.
236510  */
236511  // typedef unsigned char* TestType;
236512 
236513  // DQ (9/2/2015): This typedef is no longer used, we can't define the
236514  // comment here (changed to be a C style comment and not be a doxygen comment).
236515  /* \brief Typedef used to hold memory addresses as values.
236516  */
236517  // typedef unsigned long AddressType;
236518 
236519 
236520 
236521  // necessary, to have direct access to the p_freepointer and the private methods !
236523  friend class AST_FILE_IO;
236524 
236526  friend class SgConjugateOpStorageClass;
236527 
236529  friend class AstSpecificDataManagingClass;
236530 
236532  friend class AstSpecificDataManagingClassStorageClass;
236533 
236534  public:
236536  SgConjugateOp( const SgConjugateOpStorageClass& source );
236537 
236538  // private: // JJW hack
236539  /*
236540  name AST Memory Allocation Support Variables
236541  Memory allocations support variables
236542 
236543  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
236544  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
236545  and support the AST File I/O Mechanism.
236546  */
236547  /* */
236548 
236549  public:
236550 
236551  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
236552  // to current node (so that it will work cleanly with build functions to specify patterns).
236553  // virtual SgNode* addRegExpAttribute();
236559  SgConjugateOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
236560 
236561 // *** COMMON CODE SECTION ENDS HERE ***
236562 
236563 
236564 // End of memberFunctionString
236565 // Start of memberFunctionString
236566 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
236567 
236568  // the generated cast function
236569  // friend ROSE_DLL_API SgConjugateOp* isSgConjugateOp ( SgNode* s );
236570 
236571  typedef SgUnaryOp base_node_type;
236572 
236573 
236574 // End of memberFunctionString
236575 // Start of memberFunctionString
236576 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
236577 
236578  void post_construction_initialization() override;
236579 
236580 
236581 // End of memberFunctionString
236582 // Start of memberFunctionString
236583 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
236584 
236585  int precedence() const override { return 15; }
236586 
236587 
236588 // End of memberFunctionString
236589 
236590 
236591  public:
236592  virtual ~SgConjugateOp();
236593 
236594 
236595  public:
236596  SgConjugateOp(Sg_File_Info* startOfConstruct , SgExpression* operand_i = NULL, SgType* expression_type = NULL);
236597  SgConjugateOp(SgExpression* operand_i, SgType* expression_type);
236598 
236599  protected:
236600 
236601 
236602 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
236603 
236604 
236605  };
236606 #endif
236607 
236608 // postdeclarations for SgConjugateOp
236609 
236610 /* #line 236611 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
236611 
236612 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
236613 
236614 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
236615 
236616 
236617 /* #line 236618 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
236618 
236619 
236620 
236621 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
236622 
236623 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
236624 // This code is automatically generated for each
236625 // terminal and non-terminal within the defined
236626 // grammar. There is a simple way to change the
236627 // code to fix bugs etc. See the ROSE README file
236628 // for directions.
236629 
236630 // tps: (02/22/2010): Adding DLL export requirements
236631 #include "rosedll.h"
236632 
236633 // predeclarations for SgUserDefinedUnaryOp
236634 
236635 /* #line 236636 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
236636 
236637 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
236638 
236639 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
236640 
236641 #if 1
236642 // Class Definition for SgUserDefinedUnaryOp
236643 class ROSE_DLL_API SgUserDefinedUnaryOp : public SgUnaryOp
236644  {
236645  public:
236646 
236647 
236648 /* #line 236649 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
236649 
236650  virtual SgNode* copy ( SgCopyHelp& help) const override;
236651 // Start of memberFunctionString
236652 /* #line 1851 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
236653 
236654  SgType* get_type() const override;
236655 
236656 
236657 // End of memberFunctionString
236658 // Start of memberFunctionString
236659 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
236660 
236661 // *** COMMON CODE SECTION BEGINS HERE ***
236662 
236663  public:
236664 
236665  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
236666  // and not required which is required to match the other aspects of the copy mechanism code generation.
236667  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
236668  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
236669  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
236670  // virtual SgNode* copy ( const SgCopyHelp & help) const;
236671 
236673  virtual std::string class_name() const override;
236674 
236676  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
236677 
236679  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
236680  // static const VariantT static_variant = V_SgUserDefinedUnaryOp;
236681  enum { static_variant = V_SgUserDefinedUnaryOp };
236682 
236683  /* the generated cast function */
236685  ROSE_DLL_API friend SgUserDefinedUnaryOp* isSgUserDefinedUnaryOp( SgNode * s );
236686 
236688  ROSE_DLL_API friend const SgUserDefinedUnaryOp* isSgUserDefinedUnaryOp( const SgNode * s );
236689 
236690  // ******************************************
236691  // * Memory Pool / New / Delete
236692  // ******************************************
236693 
236694  public:
236696  static const unsigned pool_size; //
236698  static std::vector<unsigned char *> pools; //
236700  static SgUserDefinedUnaryOp * next_node; //
236701 
236703  static unsigned long initializeStorageClassArray(SgUserDefinedUnaryOpStorageClass *); //
236704 
236706  static void clearMemoryPool(); //
236707  static void deleteMemoryPool(); //
236708 
236710  static void extendMemoryPoolForFileIO(); //
236711 
236713  static SgUserDefinedUnaryOp * getPointerFromGlobalIndex(unsigned long); //
236715  static SgUserDefinedUnaryOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
236716 
236718  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
236720  static void resetValidFreepointers(); //
236722  static unsigned long getNumberOfLastValidPointer(); //
236723 
236724 
236725 #if defined(INLINE_FUNCTIONS)
236726 
236727  inline void *operator new (size_t size);
236728 #else
236729 
236730  void *operator new (size_t size);
236731 #endif
236732 
236733  void operator delete (void* pointer, size_t size);
236734 
236735  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
236736  void operator delete (void* pointer)
236737  {
236738  // This is the generated delete operator...
236739  SgUserDefinedUnaryOp::operator delete (pointer,sizeof(SgUserDefinedUnaryOp));
236740  }
236741 
236743  static size_t numberOfNodes();
236744 
236746  static size_t memoryUsage();
236747 
236748  // End of scope which started in IR nodes specific code
236749  /* */
236750 
236751  /* name Internal Functions
236752  \brief Internal functions ... incomplete-documentation
236753 
236754  These functions have been made public as part of the design, but they are suggested for internal use
236755  or by particularly knowledgeable users for specialized tools or applications.
236756 
236757  \internal We could not make these private because they are required by user for special purposes. And
236758  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
236759 
236760  */
236761 
236762  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
236763  // overridden in every class by *generated* implementation
236765  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
236766  // MS: 06/28/02 container of names of variables or container indices
236767  // used used in the traversal to access AST successor nodes
236768  // overridden in every class by *generated* implementation
236771  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
236772 
236773  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
236774  // than all the vector copies. The implementation for these functions is generated for each class.
236776  virtual size_t get_numberOfTraversalSuccessors() override;
236778  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
236780  virtual size_t get_childIndex(SgNode *child) override;
236781 
236782 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
236783  // MS: 08/16/2002 method for generating RTI information
236785  virtual RTIReturnType roseRTI() override;
236786 #endif
236787  /* */
236788 
236789 
236790 
236791  /* name Deprecated Functions
236792  \brief Deprecated functions ... incomplete-documentation
236793 
236794  These functions have been deprecated from use.
236795  */
236796  /* */
236797 
236799  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
236800 
236801  // JJW (10/16/2008): Changed to a single function in Node.code, and put
236802  // getVariant() in #if 0 block to prevent confusing Doxygen
236803 #if 0
236804 
236805  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
236807  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
236808 #endif
236809  /* */
236810 
236811 
236812 
236813 
236814  public:
236815  /* name Traversal Support Functions
236816  \brief Traversal support functions ... incomplete-documentation
236817 
236818  These functions have been made public as part of the design, but they are suggested for internal use
236819  or by particularly knowledgable users for specialized tools or applications.
236820  */
236821  /* */
236822 
236823  // DQ (11/26/2005): Support for visitor pattern mechanims
236824  // (inferior to ROSE traversal mechanism, experimental).
236828 
236829  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
236831  virtual void accept (ROSE_VisitorPattern & visitor) override;
236832 
236833  // DQ (12/26/2005): Support for traversal based on the memory pool
236836  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
236837 
236840  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
236841 
236842  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
236843  // This traversal helps support internal tools that call static member functions.
236844  // note: this function operates on the memory pools.
236847  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
236848  /* */
236849 
236850 
236851  public:
236852  /* name Memory Allocation Functions
236853  \brief Memory allocations functions ... incomplete-documentation
236854 
236855  These functions have been made public as part of the design, but they are suggested for internal use
236856  or by particularly knowledgable users for specialized tools or applications.
236857  */
236858  /* */
236859 
236870  virtual bool isInMemoryPool() override;
236871 
236882  virtual void checkDataMemberPointersIfInMemoryPool() override;
236883 
236884  // DQ (4/30/2006): Modified to be a const function.
236899  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
236900 
236910  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
236911 
236923  virtual long getChildIndex( SgNode* childNode ) const override;
236924 
236925  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
236926  // comment here (changed to be a C style comment and not be a doxygen comment).
236927  /* \brief Constructor for use by AST File I/O Mechanism
236928 
236929  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
236930  which obtained via fast binary file I/O from disk.
236931  */
236932  // SgUserDefinedUnaryOp( SgUserDefinedUnaryOpStorageClass& source );
236933 
236934 
236935 
236936 
236937 
236938  // JH (10/24/2005): methods added to support the ast file IO
236939  private:
236940 
236941  /* name AST Memory Allocation Support Functions
236942  \brief Memory allocations support....
236943 
236944  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
236945  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
236946  and support the AST File I/O Mechanism.
236947  */
236948  /* */
236949 
236950  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
236951  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
236952  that I use the same type everywhere, if any changes are made. THe second one declares the type
236953  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
236954  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
236955  a correspinding one in the AST_FILE_IO class!
236956  */
236957  // DQ (9/2/2015): This typedef is no longer used, we can't define the
236958  // comment here (changed to be a C style comment and not be a doxygen comment).
236959  /* \brief Typedef used for low level memory access.
236960  */
236961  // typedef unsigned char* TestType;
236962 
236963  // DQ (9/2/2015): This typedef is no longer used, we can't define the
236964  // comment here (changed to be a C style comment and not be a doxygen comment).
236965  /* \brief Typedef used to hold memory addresses as values.
236966  */
236967  // typedef unsigned long AddressType;
236968 
236969 
236970 
236971  // necessary, to have direct access to the p_freepointer and the private methods !
236973  friend class AST_FILE_IO;
236974 
236976  friend class SgUserDefinedUnaryOpStorageClass;
236977 
236979  friend class AstSpecificDataManagingClass;
236980 
236982  friend class AstSpecificDataManagingClassStorageClass;
236983 
236984  public:
236986  SgUserDefinedUnaryOp( const SgUserDefinedUnaryOpStorageClass& source );
236987 
236988  // private: // JJW hack
236989  /*
236990  name AST Memory Allocation Support Variables
236991  Memory allocations support variables
236992 
236993  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
236994  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
236995  and support the AST File I/O Mechanism.
236996  */
236997  /* */
236998 
236999  public:
237000 
237001  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
237002  // to current node (so that it will work cleanly with build functions to specify patterns).
237003  // virtual SgNode* addRegExpAttribute();
237010 
237011 // *** COMMON CODE SECTION ENDS HERE ***
237012 
237013 
237014 // End of memberFunctionString
237015 // Start of memberFunctionString
237016 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
237017 
237018  // the generated cast function
237019  // friend ROSE_DLL_API SgUserDefinedUnaryOp* isSgUserDefinedUnaryOp ( SgNode* s );
237020 
237021  typedef SgUnaryOp base_node_type;
237022 
237023 
237024 // End of memberFunctionString
237025 // Start of memberFunctionString
237026 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
237027 
237028  void post_construction_initialization() override;
237029 
237030 
237031 // End of memberFunctionString
237032 // Start of memberFunctionString
237033 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
237034 
237035  int precedence() const override { return 2; }
237036 
237037 
237038 // End of memberFunctionString
237039 
237040  public:
237041  SgName get_operator_name() const;
237042  void set_operator_name(SgName operator_name);
237043 
237044  public:
237045  SgFunctionSymbol* get_symbol() const;
237046  void set_symbol(SgFunctionSymbol* symbol);
237047 
237048 
237049  public:
237050  virtual ~SgUserDefinedUnaryOp();
237051 
237052 
237053  public:
237054  SgUserDefinedUnaryOp(Sg_File_Info* startOfConstruct , SgExpression* operand_i = NULL, SgType* expression_type = NULL, SgName operator_name = "", SgFunctionSymbol* symbol = NULL);
237055  SgUserDefinedUnaryOp(SgExpression* operand_i, SgType* expression_type, SgName operator_name, SgFunctionSymbol* symbol);
237056 
237057  protected:
237058 // Start of memberFunctionString
237059 SgName p_operator_name;
237060 
237061 // End of memberFunctionString
237062 // Start of memberFunctionString
237063 SgFunctionSymbol* p_symbol;
237064 
237065 // End of memberFunctionString
237066 
237067 
237068 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
237069 
237070 
237071  };
237072 #endif
237073 
237074 // postdeclarations for SgUserDefinedUnaryOp
237075 
237076 /* #line 237077 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
237077 
237078 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
237079 
237080 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
237081 
237082 
237083 /* #line 237084 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
237084 
237085 
237086 
237087 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
237088 
237089 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
237090 // This code is automatically generated for each
237091 // terminal and non-terminal within the defined
237092 // grammar. There is a simple way to change the
237093 // code to fix bugs etc. See the ROSE README file
237094 // for directions.
237095 
237096 // tps: (02/22/2010): Adding DLL export requirements
237097 #include "rosedll.h"
237098 
237099 // predeclarations for SgMatrixTransposeOp
237100 
237101 /* #line 237102 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
237102 
237103 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
237104 
237105 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
237106 
237107 #if 1
237108 // Class Definition for SgMatrixTransposeOp
237109 class ROSE_DLL_API SgMatrixTransposeOp : public SgUnaryOp
237110  {
237111  public:
237112 
237113 
237114 /* #line 237115 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
237115 
237116  virtual SgNode* copy ( SgCopyHelp& help) const override;
237117 // Start of memberFunctionString
237118 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
237119 
237120 // *** COMMON CODE SECTION BEGINS HERE ***
237121 
237122  public:
237123 
237124  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
237125  // and not required which is required to match the other aspects of the copy mechanism code generation.
237126  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
237127  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
237128  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
237129  // virtual SgNode* copy ( const SgCopyHelp & help) const;
237130 
237132  virtual std::string class_name() const override;
237133 
237135  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
237136 
237138  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
237139  // static const VariantT static_variant = V_SgMatrixTransposeOp;
237140  enum { static_variant = V_SgMatrixTransposeOp };
237141 
237142  /* the generated cast function */
237144  ROSE_DLL_API friend SgMatrixTransposeOp* isSgMatrixTransposeOp( SgNode * s );
237145 
237147  ROSE_DLL_API friend const SgMatrixTransposeOp* isSgMatrixTransposeOp( const SgNode * s );
237148 
237149  // ******************************************
237150  // * Memory Pool / New / Delete
237151  // ******************************************
237152 
237153  public:
237155  static const unsigned pool_size; //
237157  static std::vector<unsigned char *> pools; //
237159  static SgMatrixTransposeOp * next_node; //
237160 
237162  static unsigned long initializeStorageClassArray(SgMatrixTransposeOpStorageClass *); //
237163 
237165  static void clearMemoryPool(); //
237166  static void deleteMemoryPool(); //
237167 
237169  static void extendMemoryPoolForFileIO(); //
237170 
237172  static SgMatrixTransposeOp * getPointerFromGlobalIndex(unsigned long); //
237174  static SgMatrixTransposeOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
237175 
237177  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
237179  static void resetValidFreepointers(); //
237181  static unsigned long getNumberOfLastValidPointer(); //
237182 
237183 
237184 #if defined(INLINE_FUNCTIONS)
237185 
237186  inline void *operator new (size_t size);
237187 #else
237188 
237189  void *operator new (size_t size);
237190 #endif
237191 
237192  void operator delete (void* pointer, size_t size);
237193 
237194  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
237195  void operator delete (void* pointer)
237196  {
237197  // This is the generated delete operator...
237198  SgMatrixTransposeOp::operator delete (pointer,sizeof(SgMatrixTransposeOp));
237199  }
237200 
237202  static size_t numberOfNodes();
237203 
237205  static size_t memoryUsage();
237206 
237207  // End of scope which started in IR nodes specific code
237208  /* */
237209 
237210  /* name Internal Functions
237211  \brief Internal functions ... incomplete-documentation
237212 
237213  These functions have been made public as part of the design, but they are suggested for internal use
237214  or by particularly knowledgeable users for specialized tools or applications.
237215 
237216  \internal We could not make these private because they are required by user for special purposes. And
237217  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
237218 
237219  */
237220 
237221  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
237222  // overridden in every class by *generated* implementation
237224  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
237225  // MS: 06/28/02 container of names of variables or container indices
237226  // used used in the traversal to access AST successor nodes
237227  // overridden in every class by *generated* implementation
237230  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
237231 
237232  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
237233  // than all the vector copies. The implementation for these functions is generated for each class.
237235  virtual size_t get_numberOfTraversalSuccessors() override;
237237  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
237239  virtual size_t get_childIndex(SgNode *child) override;
237240 
237241 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
237242  // MS: 08/16/2002 method for generating RTI information
237244  virtual RTIReturnType roseRTI() override;
237245 #endif
237246  /* */
237247 
237248 
237249 
237250  /* name Deprecated Functions
237251  \brief Deprecated functions ... incomplete-documentation
237252 
237253  These functions have been deprecated from use.
237254  */
237255  /* */
237256 
237258  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
237259 
237260  // JJW (10/16/2008): Changed to a single function in Node.code, and put
237261  // getVariant() in #if 0 block to prevent confusing Doxygen
237262 #if 0
237263 
237264  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
237266  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
237267 #endif
237268  /* */
237269 
237270 
237271 
237272 
237273  public:
237274  /* name Traversal Support Functions
237275  \brief Traversal support functions ... incomplete-documentation
237276 
237277  These functions have been made public as part of the design, but they are suggested for internal use
237278  or by particularly knowledgable users for specialized tools or applications.
237279  */
237280  /* */
237281 
237282  // DQ (11/26/2005): Support for visitor pattern mechanims
237283  // (inferior to ROSE traversal mechanism, experimental).
237287 
237288  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
237290  virtual void accept (ROSE_VisitorPattern & visitor) override;
237291 
237292  // DQ (12/26/2005): Support for traversal based on the memory pool
237295  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
237296 
237299  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
237300 
237301  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
237302  // This traversal helps support internal tools that call static member functions.
237303  // note: this function operates on the memory pools.
237306  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
237307  /* */
237308 
237309 
237310  public:
237311  /* name Memory Allocation Functions
237312  \brief Memory allocations functions ... incomplete-documentation
237313 
237314  These functions have been made public as part of the design, but they are suggested for internal use
237315  or by particularly knowledgable users for specialized tools or applications.
237316  */
237317  /* */
237318 
237329  virtual bool isInMemoryPool() override;
237330 
237341  virtual void checkDataMemberPointersIfInMemoryPool() override;
237342 
237343  // DQ (4/30/2006): Modified to be a const function.
237358  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
237359 
237369  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
237370 
237382  virtual long getChildIndex( SgNode* childNode ) const override;
237383 
237384  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
237385  // comment here (changed to be a C style comment and not be a doxygen comment).
237386  /* \brief Constructor for use by AST File I/O Mechanism
237387 
237388  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
237389  which obtained via fast binary file I/O from disk.
237390  */
237391  // SgMatrixTransposeOp( SgMatrixTransposeOpStorageClass& source );
237392 
237393 
237394 
237395 
237396 
237397  // JH (10/24/2005): methods added to support the ast file IO
237398  private:
237399 
237400  /* name AST Memory Allocation Support Functions
237401  \brief Memory allocations support....
237402 
237403  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
237404  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
237405  and support the AST File I/O Mechanism.
237406  */
237407  /* */
237408 
237409  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
237410  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
237411  that I use the same type everywhere, if any changes are made. THe second one declares the type
237412  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
237413  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
237414  a correspinding one in the AST_FILE_IO class!
237415  */
237416  // DQ (9/2/2015): This typedef is no longer used, we can't define the
237417  // comment here (changed to be a C style comment and not be a doxygen comment).
237418  /* \brief Typedef used for low level memory access.
237419  */
237420  // typedef unsigned char* TestType;
237421 
237422  // DQ (9/2/2015): This typedef is no longer used, we can't define the
237423  // comment here (changed to be a C style comment and not be a doxygen comment).
237424  /* \brief Typedef used to hold memory addresses as values.
237425  */
237426  // typedef unsigned long AddressType;
237427 
237428 
237429 
237430  // necessary, to have direct access to the p_freepointer and the private methods !
237432  friend class AST_FILE_IO;
237433 
237435  friend class SgMatrixTransposeOpStorageClass;
237436 
237438  friend class AstSpecificDataManagingClass;
237439 
237441  friend class AstSpecificDataManagingClassStorageClass;
237442 
237443  public:
237445  SgMatrixTransposeOp( const SgMatrixTransposeOpStorageClass& source );
237446 
237447  // private: // JJW hack
237448  /*
237449  name AST Memory Allocation Support Variables
237450  Memory allocations support variables
237451 
237452  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
237453  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
237454  and support the AST File I/O Mechanism.
237455  */
237456  /* */
237457 
237458  public:
237459 
237460  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
237461  // to current node (so that it will work cleanly with build functions to specify patterns).
237462  // virtual SgNode* addRegExpAttribute();
237469 
237470 // *** COMMON CODE SECTION ENDS HERE ***
237471 
237472 
237473 // End of memberFunctionString
237474 // Start of memberFunctionString
237475 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
237476 
237477  // the generated cast function
237478  // friend ROSE_DLL_API SgMatrixTransposeOp* isSgMatrixTransposeOp ( SgNode* s );
237479 
237480  typedef SgUnaryOp base_node_type;
237481 
237482 
237483 // End of memberFunctionString
237484 // Start of memberFunctionString
237485 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
237486 
237487  void post_construction_initialization() override;
237488 
237489 
237490 // End of memberFunctionString
237491 // Start of memberFunctionString
237492 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
237493 
237494  int precedence() const override { return 15; }
237495 
237496 
237497 // End of memberFunctionString
237498 
237499  public:
237500  bool get_is_conjugate() const;
237501  void set_is_conjugate(bool is_conjugate);
237502 
237503 
237504  public:
237505  virtual ~SgMatrixTransposeOp();
237506 
237507 
237508  public:
237509  SgMatrixTransposeOp(Sg_File_Info* startOfConstruct , SgExpression* operand_i = NULL, SgType* expression_type = NULL);
237510  SgMatrixTransposeOp(SgExpression* operand_i, SgType* expression_type);
237511 
237512  protected:
237513 // Start of memberFunctionString
237514 bool p_is_conjugate;
237515 
237516 // End of memberFunctionString
237517 
237518 
237519 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
237520 
237521 
237522  };
237523 #endif
237524 
237525 // postdeclarations for SgMatrixTransposeOp
237526 
237527 /* #line 237528 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
237528 
237529 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
237530 
237531 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
237532 
237533 
237534 /* #line 237535 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
237535 
237536 
237537 
237538 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
237539 
237540 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
237541 // This code is automatically generated for each
237542 // terminal and non-terminal within the defined
237543 // grammar. There is a simple way to change the
237544 // code to fix bugs etc. See the ROSE README file
237545 // for directions.
237546 
237547 // tps: (02/22/2010): Adding DLL export requirements
237548 #include "rosedll.h"
237549 
237550 // predeclarations for SgBinaryOp
237551 
237552 /* #line 237553 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
237553 
237554 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
237555 
237556 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
237557 
237558 #if 1
237559 // Class Definition for SgBinaryOp
237560 class ROSE_DLL_API SgBinaryOp : public SgExpression
237561  {
237562  public:
237563 
237564 
237565 /* #line 237566 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
237566 
237567  virtual SgNode* copy ( SgCopyHelp& help) const override;
237568 // Start of memberFunctionString
237569 /* #line 190 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
237570 
237571  int length() const ROSE_DEPRECATED_FUNCTION;
237572  bool empty() const ROSE_DEPRECATED_FUNCTION;
237573  // void operator_unparse( const char *, Unparse_Info &, ostream & );
237574 
237575 
237576 // End of memberFunctionString
237577 // Start of memberFunctionString
237578 /* #line 184 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
237579 
237580  SgExpression *get_next( int& n) const ROSE_DEPRECATED_FUNCTION;
237581  int replace_expression( SgExpression *, SgExpression *) override ROSE_DEPRECATED_FUNCTION;
237582 
237583 
237584 // End of memberFunctionString
237585 // Start of memberFunctionString
237586 /* #line 233 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
237587 
237588  SgExpression* get_lhs_operand() const;
237589  void set_lhs_operand(SgExpression * exp);
237590  SgExpression* get_rhs_operand() const;
237591  void set_rhs_operand(SgExpression * exp);
237592  SgType* get_type() const override;
237593 
237594 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
237595  virtual unsigned int cfgIndexForEnd() const override;
237596  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
237597  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
237598 #endif
237599 
237600 
237601 
237602 // End of memberFunctionString
237603 // Start of memberFunctionString
237604 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
237605 
237606 // *** COMMON CODE SECTION BEGINS HERE ***
237607 
237608  public:
237609 
237610  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
237611  // and not required which is required to match the other aspects of the copy mechanism code generation.
237612  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
237613  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
237614  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
237615  // virtual SgNode* copy ( const SgCopyHelp & help) const;
237616 
237618  virtual std::string class_name() const override;
237619 
237621  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
237622 
237624  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
237625  // static const VariantT static_variant = V_SgBinaryOp;
237626  enum { static_variant = V_SgBinaryOp };
237627 
237628  /* the generated cast function */
237630  ROSE_DLL_API friend SgBinaryOp* isSgBinaryOp( SgNode * s );
237631 
237633  ROSE_DLL_API friend const SgBinaryOp* isSgBinaryOp( const SgNode * s );
237634 
237635  // ******************************************
237636  // * Memory Pool / New / Delete
237637  // ******************************************
237638 
237639  public:
237641  static const unsigned pool_size; //
237643  static std::vector<unsigned char *> pools; //
237645  static SgBinaryOp * next_node; //
237646 
237648  static unsigned long initializeStorageClassArray(SgBinaryOpStorageClass *); //
237649 
237651  static void clearMemoryPool(); //
237652  static void deleteMemoryPool(); //
237653 
237655  static void extendMemoryPoolForFileIO(); //
237656 
237658  static SgBinaryOp * getPointerFromGlobalIndex(unsigned long); //
237660  static SgBinaryOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
237661 
237663  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
237665  static void resetValidFreepointers(); //
237667  static unsigned long getNumberOfLastValidPointer(); //
237668 
237669 
237670 #if defined(INLINE_FUNCTIONS)
237671 
237672  inline void *operator new (size_t size);
237673 #else
237674 
237675  void *operator new (size_t size);
237676 #endif
237677 
237678  void operator delete (void* pointer, size_t size);
237679 
237680  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
237681  void operator delete (void* pointer)
237682  {
237683  // This is the generated delete operator...
237684  SgBinaryOp::operator delete (pointer,sizeof(SgBinaryOp));
237685  }
237686 
237688  static size_t numberOfNodes();
237689 
237691  static size_t memoryUsage();
237692 
237693  // End of scope which started in IR nodes specific code
237694  /* */
237695 
237696  /* name Internal Functions
237697  \brief Internal functions ... incomplete-documentation
237698 
237699  These functions have been made public as part of the design, but they are suggested for internal use
237700  or by particularly knowledgeable users for specialized tools or applications.
237701 
237702  \internal We could not make these private because they are required by user for special purposes. And
237703  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
237704 
237705  */
237706 
237707  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
237708  // overridden in every class by *generated* implementation
237710  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
237711  // MS: 06/28/02 container of names of variables or container indices
237712  // used used in the traversal to access AST successor nodes
237713  // overridden in every class by *generated* implementation
237716  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
237717 
237718  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
237719  // than all the vector copies. The implementation for these functions is generated for each class.
237721  virtual size_t get_numberOfTraversalSuccessors() override;
237723  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
237725  virtual size_t get_childIndex(SgNode *child) override;
237726 
237727 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
237728  // MS: 08/16/2002 method for generating RTI information
237730  virtual RTIReturnType roseRTI() override;
237731 #endif
237732  /* */
237733 
237734 
237735 
237736  /* name Deprecated Functions
237737  \brief Deprecated functions ... incomplete-documentation
237738 
237739  These functions have been deprecated from use.
237740  */
237741  /* */
237742 
237744  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
237745 
237746  // JJW (10/16/2008): Changed to a single function in Node.code, and put
237747  // getVariant() in #if 0 block to prevent confusing Doxygen
237748 #if 0
237749 
237750  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
237752  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
237753 #endif
237754  /* */
237755 
237756 
237757 
237758 
237759  public:
237760  /* name Traversal Support Functions
237761  \brief Traversal support functions ... incomplete-documentation
237762 
237763  These functions have been made public as part of the design, but they are suggested for internal use
237764  or by particularly knowledgable users for specialized tools or applications.
237765  */
237766  /* */
237767 
237768  // DQ (11/26/2005): Support for visitor pattern mechanims
237769  // (inferior to ROSE traversal mechanism, experimental).
237773 
237774  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
237776  virtual void accept (ROSE_VisitorPattern & visitor) override;
237777 
237778  // DQ (12/26/2005): Support for traversal based on the memory pool
237781  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
237782 
237785  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
237786 
237787  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
237788  // This traversal helps support internal tools that call static member functions.
237789  // note: this function operates on the memory pools.
237792  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
237793  /* */
237794 
237795 
237796  public:
237797  /* name Memory Allocation Functions
237798  \brief Memory allocations functions ... incomplete-documentation
237799 
237800  These functions have been made public as part of the design, but they are suggested for internal use
237801  or by particularly knowledgable users for specialized tools or applications.
237802  */
237803  /* */
237804 
237815  virtual bool isInMemoryPool() override;
237816 
237827  virtual void checkDataMemberPointersIfInMemoryPool() override;
237828 
237829  // DQ (4/30/2006): Modified to be a const function.
237844  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
237845 
237855  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
237856 
237868  virtual long getChildIndex( SgNode* childNode ) const override;
237869 
237870  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
237871  // comment here (changed to be a C style comment and not be a doxygen comment).
237872  /* \brief Constructor for use by AST File I/O Mechanism
237873 
237874  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
237875  which obtained via fast binary file I/O from disk.
237876  */
237877  // SgBinaryOp( SgBinaryOpStorageClass& source );
237878 
237879 
237880 
237881 
237882 
237883  // JH (10/24/2005): methods added to support the ast file IO
237884  private:
237885 
237886  /* name AST Memory Allocation Support Functions
237887  \brief Memory allocations support....
237888 
237889  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
237890  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
237891  and support the AST File I/O Mechanism.
237892  */
237893  /* */
237894 
237895  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
237896  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
237897  that I use the same type everywhere, if any changes are made. THe second one declares the type
237898  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
237899  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
237900  a correspinding one in the AST_FILE_IO class!
237901  */
237902  // DQ (9/2/2015): This typedef is no longer used, we can't define the
237903  // comment here (changed to be a C style comment and not be a doxygen comment).
237904  /* \brief Typedef used for low level memory access.
237905  */
237906  // typedef unsigned char* TestType;
237907 
237908  // DQ (9/2/2015): This typedef is no longer used, we can't define the
237909  // comment here (changed to be a C style comment and not be a doxygen comment).
237910  /* \brief Typedef used to hold memory addresses as values.
237911  */
237912  // typedef unsigned long AddressType;
237913 
237914 
237915 
237916  // necessary, to have direct access to the p_freepointer and the private methods !
237918  friend class AST_FILE_IO;
237919 
237921  friend class SgBinaryOpStorageClass;
237922 
237924  friend class AstSpecificDataManagingClass;
237925 
237927  friend class AstSpecificDataManagingClassStorageClass;
237928 
237929  public:
237931  SgBinaryOp( const SgBinaryOpStorageClass& source );
237932 
237933  // private: // JJW hack
237934  /*
237935  name AST Memory Allocation Support Variables
237936  Memory allocations support variables
237937 
237938  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
237939  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
237940  and support the AST File I/O Mechanism.
237941  */
237942  /* */
237943 
237944  public:
237945 
237946  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
237947  // to current node (so that it will work cleanly with build functions to specify patterns).
237948  // virtual SgNode* addRegExpAttribute();
237954  SgBinaryOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
237955 
237956 // *** COMMON CODE SECTION ENDS HERE ***
237957 
237958 
237959 // End of memberFunctionString
237960 // Start of memberFunctionString
237961 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
237962 
237963  // the generated cast function
237964  // friend ROSE_DLL_API SgBinaryOp* isSgBinaryOp ( SgNode* s );
237965 
237966  typedef SgExpression base_node_type;
237967 
237968 
237969 // End of memberFunctionString
237970 // Start of memberFunctionString
237971 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
237972 
237973  void post_construction_initialization() override;
237974 
237975 
237976 // End of memberFunctionString
237977 
237978  public:
237979  SgExpression* get_lhs_operand_i() const;
237980  void set_lhs_operand_i(SgExpression* lhs_operand_i);
237981 
237982  public:
237983  SgExpression* get_rhs_operand_i() const;
237984  void set_rhs_operand_i(SgExpression* rhs_operand_i);
237985 
237986 
237987  public:
237988  SgExpression* get_originalExpressionTree() const override /* (getDataAccessFunctionPrototypeString) */;
237989  void set_originalExpressionTree(SgExpression* originalExpressionTree) override /* (getDataAccessFunctionPrototypeString) */;
237990 
237991 
237992  public:
237993  virtual ~SgBinaryOp();
237994 
237995 
237996  public:
237997  SgBinaryOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
237998  SgBinaryOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
237999 
238000  protected:
238001 // Start of memberFunctionString
238002 SgExpression* p_lhs_operand_i;
238003 
238004 // End of memberFunctionString
238005 // Start of memberFunctionString
238006 SgExpression* p_rhs_operand_i;
238007 
238008 // End of memberFunctionString
238009 // Start of memberFunctionString
238010 SgType* p_expression_type;
238011 
238012 // End of memberFunctionString
238013 // Start of memberFunctionString
238014 SgExpression* p_originalExpressionTree;
238015 
238016 // End of memberFunctionString
238017 
238018 
238019 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
238020 
238021 
238022  };
238023 #endif
238024 
238025 // postdeclarations for SgBinaryOp
238026 
238027 /* #line 238028 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
238028 
238029 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
238030 
238031 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
238032 
238033 
238034 /* #line 238035 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
238035 
238036 
238037 
238038 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
238039 
238040 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
238041 // This code is automatically generated for each
238042 // terminal and non-terminal within the defined
238043 // grammar. There is a simple way to change the
238044 // code to fix bugs etc. See the ROSE README file
238045 // for directions.
238046 
238047 // tps: (02/22/2010): Adding DLL export requirements
238048 #include "rosedll.h"
238049 
238050 // predeclarations for SgArrowExp
238051 
238052 /* #line 238053 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
238053 
238054 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
238055 
238056 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
238057 
238058 #if 1
238059 // Class Definition for SgArrowExp
238060 class ROSE_DLL_API SgArrowExp : public SgBinaryOp
238061  {
238062  public:
238063 
238064 
238065 /* #line 238066 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
238066 
238067  virtual SgNode* copy ( SgCopyHelp& help) const override;
238068 // Start of memberFunctionString
238069 /* #line 778 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
238070 
238071  SgType* get_type() const override;
238072 
238073  // get lvalue
238074  virtual bool isLValue() const override;
238075  virtual bool isChildUsedAsLValue(const SgExpression* child) const override; // INTERNAL Recursively call up the chain to answer the child
238076 
238077  // DQ (7/16/2014): Shared types from expressions in UPC have some expected symantics that are not a matter of returning the result of get_type().
238078  // This function supports the get_type() function.
238079  SgType* checkForSharedTypeAndReturnSharedType( SgType* possibleReturnType ) const;
238080 
238081 
238082 
238083 // End of memberFunctionString
238084 // Start of memberFunctionString
238085 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
238086 
238087 // *** COMMON CODE SECTION BEGINS HERE ***
238088 
238089  public:
238090 
238091  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
238092  // and not required which is required to match the other aspects of the copy mechanism code generation.
238093  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
238094  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
238095  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
238096  // virtual SgNode* copy ( const SgCopyHelp & help) const;
238097 
238099  virtual std::string class_name() const override;
238100 
238102  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
238103 
238105  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
238106  // static const VariantT static_variant = V_SgArrowExp;
238107  enum { static_variant = V_SgArrowExp };
238108 
238109  /* the generated cast function */
238111  ROSE_DLL_API friend SgArrowExp* isSgArrowExp( SgNode * s );
238112 
238114  ROSE_DLL_API friend const SgArrowExp* isSgArrowExp( const SgNode * s );
238115 
238116  // ******************************************
238117  // * Memory Pool / New / Delete
238118  // ******************************************
238119 
238120  public:
238122  static const unsigned pool_size; //
238124  static std::vector<unsigned char *> pools; //
238126  static SgArrowExp * next_node; //
238127 
238129  static unsigned long initializeStorageClassArray(SgArrowExpStorageClass *); //
238130 
238132  static void clearMemoryPool(); //
238133  static void deleteMemoryPool(); //
238134 
238136  static void extendMemoryPoolForFileIO(); //
238137 
238139  static SgArrowExp * getPointerFromGlobalIndex(unsigned long); //
238141  static SgArrowExp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
238142 
238144  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
238146  static void resetValidFreepointers(); //
238148  static unsigned long getNumberOfLastValidPointer(); //
238149 
238150 
238151 #if defined(INLINE_FUNCTIONS)
238152 
238153  inline void *operator new (size_t size);
238154 #else
238155 
238156  void *operator new (size_t size);
238157 #endif
238158 
238159  void operator delete (void* pointer, size_t size);
238160 
238161  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
238162  void operator delete (void* pointer)
238163  {
238164  // This is the generated delete operator...
238165  SgArrowExp::operator delete (pointer,sizeof(SgArrowExp));
238166  }
238167 
238169  static size_t numberOfNodes();
238170 
238172  static size_t memoryUsage();
238173 
238174  // End of scope which started in IR nodes specific code
238175  /* */
238176 
238177  /* name Internal Functions
238178  \brief Internal functions ... incomplete-documentation
238179 
238180  These functions have been made public as part of the design, but they are suggested for internal use
238181  or by particularly knowledgeable users for specialized tools or applications.
238182 
238183  \internal We could not make these private because they are required by user for special purposes. And
238184  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
238185 
238186  */
238187 
238188  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
238189  // overridden in every class by *generated* implementation
238191  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
238192  // MS: 06/28/02 container of names of variables or container indices
238193  // used used in the traversal to access AST successor nodes
238194  // overridden in every class by *generated* implementation
238197  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
238198 
238199  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
238200  // than all the vector copies. The implementation for these functions is generated for each class.
238202  virtual size_t get_numberOfTraversalSuccessors() override;
238204  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
238206  virtual size_t get_childIndex(SgNode *child) override;
238207 
238208 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
238209  // MS: 08/16/2002 method for generating RTI information
238211  virtual RTIReturnType roseRTI() override;
238212 #endif
238213  /* */
238214 
238215 
238216 
238217  /* name Deprecated Functions
238218  \brief Deprecated functions ... incomplete-documentation
238219 
238220  These functions have been deprecated from use.
238221  */
238222  /* */
238223 
238225  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
238226 
238227  // JJW (10/16/2008): Changed to a single function in Node.code, and put
238228  // getVariant() in #if 0 block to prevent confusing Doxygen
238229 #if 0
238230 
238231  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
238233  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
238234 #endif
238235  /* */
238236 
238237 
238238 
238239 
238240  public:
238241  /* name Traversal Support Functions
238242  \brief Traversal support functions ... incomplete-documentation
238243 
238244  These functions have been made public as part of the design, but they are suggested for internal use
238245  or by particularly knowledgable users for specialized tools or applications.
238246  */
238247  /* */
238248 
238249  // DQ (11/26/2005): Support for visitor pattern mechanims
238250  // (inferior to ROSE traversal mechanism, experimental).
238254 
238255  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
238257  virtual void accept (ROSE_VisitorPattern & visitor) override;
238258 
238259  // DQ (12/26/2005): Support for traversal based on the memory pool
238262  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
238263 
238266  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
238267 
238268  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
238269  // This traversal helps support internal tools that call static member functions.
238270  // note: this function operates on the memory pools.
238273  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
238274  /* */
238275 
238276 
238277  public:
238278  /* name Memory Allocation Functions
238279  \brief Memory allocations functions ... incomplete-documentation
238280 
238281  These functions have been made public as part of the design, but they are suggested for internal use
238282  or by particularly knowledgable users for specialized tools or applications.
238283  */
238284  /* */
238285 
238296  virtual bool isInMemoryPool() override;
238297 
238308  virtual void checkDataMemberPointersIfInMemoryPool() override;
238309 
238310  // DQ (4/30/2006): Modified to be a const function.
238325  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
238326 
238336  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
238337 
238349  virtual long getChildIndex( SgNode* childNode ) const override;
238350 
238351  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
238352  // comment here (changed to be a C style comment and not be a doxygen comment).
238353  /* \brief Constructor for use by AST File I/O Mechanism
238354 
238355  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
238356  which obtained via fast binary file I/O from disk.
238357  */
238358  // SgArrowExp( SgArrowExpStorageClass& source );
238359 
238360 
238361 
238362 
238363 
238364  // JH (10/24/2005): methods added to support the ast file IO
238365  private:
238366 
238367  /* name AST Memory Allocation Support Functions
238368  \brief Memory allocations support....
238369 
238370  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
238371  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
238372  and support the AST File I/O Mechanism.
238373  */
238374  /* */
238375 
238376  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
238377  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
238378  that I use the same type everywhere, if any changes are made. THe second one declares the type
238379  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
238380  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
238381  a correspinding one in the AST_FILE_IO class!
238382  */
238383  // DQ (9/2/2015): This typedef is no longer used, we can't define the
238384  // comment here (changed to be a C style comment and not be a doxygen comment).
238385  /* \brief Typedef used for low level memory access.
238386  */
238387  // typedef unsigned char* TestType;
238388 
238389  // DQ (9/2/2015): This typedef is no longer used, we can't define the
238390  // comment here (changed to be a C style comment and not be a doxygen comment).
238391  /* \brief Typedef used to hold memory addresses as values.
238392  */
238393  // typedef unsigned long AddressType;
238394 
238395 
238396 
238397  // necessary, to have direct access to the p_freepointer and the private methods !
238399  friend class AST_FILE_IO;
238400 
238402  friend class SgArrowExpStorageClass;
238403 
238405  friend class AstSpecificDataManagingClass;
238406 
238408  friend class AstSpecificDataManagingClassStorageClass;
238409 
238410  public:
238412  SgArrowExp( const SgArrowExpStorageClass& source );
238413 
238414  // private: // JJW hack
238415  /*
238416  name AST Memory Allocation Support Variables
238417  Memory allocations support variables
238418 
238419  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
238420  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
238421  and support the AST File I/O Mechanism.
238422  */
238423  /* */
238424 
238425  public:
238426 
238427  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
238428  // to current node (so that it will work cleanly with build functions to specify patterns).
238429  // virtual SgNode* addRegExpAttribute();
238435  SgArrowExp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
238436 
238437 // *** COMMON CODE SECTION ENDS HERE ***
238438 
238439 
238440 // End of memberFunctionString
238441 // Start of memberFunctionString
238442 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
238443 
238444  // the generated cast function
238445  // friend ROSE_DLL_API SgArrowExp* isSgArrowExp ( SgNode* s );
238446 
238447  typedef SgBinaryOp base_node_type;
238448 
238449 
238450 // End of memberFunctionString
238451 // Start of memberFunctionString
238452 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
238453 
238454  void post_construction_initialization() override;
238455 
238456 
238457 // End of memberFunctionString
238458 // Start of memberFunctionString
238459 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
238460 
238461  int precedence() const override { return 16; }
238462 
238463 
238464 // End of memberFunctionString
238465 
238466 
238467  public:
238468  virtual ~SgArrowExp();
238469 
238470 
238471  public:
238472  SgArrowExp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
238473  SgArrowExp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
238474 
238475  protected:
238476 
238477 
238478 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
238479 
238480 
238481  };
238482 #endif
238483 
238484 // postdeclarations for SgArrowExp
238485 
238486 /* #line 238487 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
238487 
238488 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
238489 
238490 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
238491 
238492 
238493 /* #line 238494 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
238494 
238495 
238496 
238497 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
238498 
238499 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
238500 // This code is automatically generated for each
238501 // terminal and non-terminal within the defined
238502 // grammar. There is a simple way to change the
238503 // code to fix bugs etc. See the ROSE README file
238504 // for directions.
238505 
238506 // tps: (02/22/2010): Adding DLL export requirements
238507 #include "rosedll.h"
238508 
238509 // predeclarations for SgDotExp
238510 
238511 /* #line 238512 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
238512 
238513 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
238514 
238515 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
238516 
238517 #if 1
238518 // Class Definition for SgDotExp
238519 class ROSE_DLL_API SgDotExp : public SgBinaryOp
238520  {
238521  public:
238522 
238523 
238524 /* #line 238525 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
238525 
238526  virtual SgNode* copy ( SgCopyHelp& help) const override;
238527 // Start of memberFunctionString
238528 /* #line 792 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
238529 
238530  SgType* get_type() const override;
238531 
238532  // get lvalue
238533  virtual bool isLValue() const override;
238534  virtual bool isChildUsedAsLValue(const SgExpression* child) const override; // INTERNAL Recursively call up the chain to answer the child
238535 
238536 
238537 
238538 // End of memberFunctionString
238539 // Start of memberFunctionString
238540 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
238541 
238542 // *** COMMON CODE SECTION BEGINS HERE ***
238543 
238544  public:
238545 
238546  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
238547  // and not required which is required to match the other aspects of the copy mechanism code generation.
238548  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
238549  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
238550  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
238551  // virtual SgNode* copy ( const SgCopyHelp & help) const;
238552 
238554  virtual std::string class_name() const override;
238555 
238557  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
238558 
238560  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
238561  // static const VariantT static_variant = V_SgDotExp;
238562  enum { static_variant = V_SgDotExp };
238563 
238564  /* the generated cast function */
238566  ROSE_DLL_API friend SgDotExp* isSgDotExp( SgNode * s );
238567 
238569  ROSE_DLL_API friend const SgDotExp* isSgDotExp( const SgNode * s );
238570 
238571  // ******************************************
238572  // * Memory Pool / New / Delete
238573  // ******************************************
238574 
238575  public:
238577  static const unsigned pool_size; //
238579  static std::vector<unsigned char *> pools; //
238581  static SgDotExp * next_node; //
238582 
238584  static unsigned long initializeStorageClassArray(SgDotExpStorageClass *); //
238585 
238587  static void clearMemoryPool(); //
238588  static void deleteMemoryPool(); //
238589 
238591  static void extendMemoryPoolForFileIO(); //
238592 
238594  static SgDotExp * getPointerFromGlobalIndex(unsigned long); //
238596  static SgDotExp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
238597 
238599  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
238601  static void resetValidFreepointers(); //
238603  static unsigned long getNumberOfLastValidPointer(); //
238604 
238605 
238606 #if defined(INLINE_FUNCTIONS)
238607 
238608  inline void *operator new (size_t size);
238609 #else
238610 
238611  void *operator new (size_t size);
238612 #endif
238613 
238614  void operator delete (void* pointer, size_t size);
238615 
238616  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
238617  void operator delete (void* pointer)
238618  {
238619  // This is the generated delete operator...
238620  SgDotExp::operator delete (pointer,sizeof(SgDotExp));
238621  }
238622 
238624  static size_t numberOfNodes();
238625 
238627  static size_t memoryUsage();
238628 
238629  // End of scope which started in IR nodes specific code
238630  /* */
238631 
238632  /* name Internal Functions
238633  \brief Internal functions ... incomplete-documentation
238634 
238635  These functions have been made public as part of the design, but they are suggested for internal use
238636  or by particularly knowledgeable users for specialized tools or applications.
238637 
238638  \internal We could not make these private because they are required by user for special purposes. And
238639  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
238640 
238641  */
238642 
238643  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
238644  // overridden in every class by *generated* implementation
238646  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
238647  // MS: 06/28/02 container of names of variables or container indices
238648  // used used in the traversal to access AST successor nodes
238649  // overridden in every class by *generated* implementation
238652  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
238653 
238654  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
238655  // than all the vector copies. The implementation for these functions is generated for each class.
238657  virtual size_t get_numberOfTraversalSuccessors() override;
238659  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
238661  virtual size_t get_childIndex(SgNode *child) override;
238662 
238663 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
238664  // MS: 08/16/2002 method for generating RTI information
238666  virtual RTIReturnType roseRTI() override;
238667 #endif
238668  /* */
238669 
238670 
238671 
238672  /* name Deprecated Functions
238673  \brief Deprecated functions ... incomplete-documentation
238674 
238675  These functions have been deprecated from use.
238676  */
238677  /* */
238678 
238680  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
238681 
238682  // JJW (10/16/2008): Changed to a single function in Node.code, and put
238683  // getVariant() in #if 0 block to prevent confusing Doxygen
238684 #if 0
238685 
238686  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
238688  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
238689 #endif
238690  /* */
238691 
238692 
238693 
238694 
238695  public:
238696  /* name Traversal Support Functions
238697  \brief Traversal support functions ... incomplete-documentation
238698 
238699  These functions have been made public as part of the design, but they are suggested for internal use
238700  or by particularly knowledgable users for specialized tools or applications.
238701  */
238702  /* */
238703 
238704  // DQ (11/26/2005): Support for visitor pattern mechanims
238705  // (inferior to ROSE traversal mechanism, experimental).
238709 
238710  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
238712  virtual void accept (ROSE_VisitorPattern & visitor) override;
238713 
238714  // DQ (12/26/2005): Support for traversal based on the memory pool
238717  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
238718 
238721  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
238722 
238723  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
238724  // This traversal helps support internal tools that call static member functions.
238725  // note: this function operates on the memory pools.
238728  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
238729  /* */
238730 
238731 
238732  public:
238733  /* name Memory Allocation Functions
238734  \brief Memory allocations functions ... incomplete-documentation
238735 
238736  These functions have been made public as part of the design, but they are suggested for internal use
238737  or by particularly knowledgable users for specialized tools or applications.
238738  */
238739  /* */
238740 
238751  virtual bool isInMemoryPool() override;
238752 
238763  virtual void checkDataMemberPointersIfInMemoryPool() override;
238764 
238765  // DQ (4/30/2006): Modified to be a const function.
238780  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
238781 
238791  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
238792 
238804  virtual long getChildIndex( SgNode* childNode ) const override;
238805 
238806  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
238807  // comment here (changed to be a C style comment and not be a doxygen comment).
238808  /* \brief Constructor for use by AST File I/O Mechanism
238809 
238810  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
238811  which obtained via fast binary file I/O from disk.
238812  */
238813  // SgDotExp( SgDotExpStorageClass& source );
238814 
238815 
238816 
238817 
238818 
238819  // JH (10/24/2005): methods added to support the ast file IO
238820  private:
238821 
238822  /* name AST Memory Allocation Support Functions
238823  \brief Memory allocations support....
238824 
238825  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
238826  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
238827  and support the AST File I/O Mechanism.
238828  */
238829  /* */
238830 
238831  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
238832  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
238833  that I use the same type everywhere, if any changes are made. THe second one declares the type
238834  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
238835  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
238836  a correspinding one in the AST_FILE_IO class!
238837  */
238838  // DQ (9/2/2015): This typedef is no longer used, we can't define the
238839  // comment here (changed to be a C style comment and not be a doxygen comment).
238840  /* \brief Typedef used for low level memory access.
238841  */
238842  // typedef unsigned char* TestType;
238843 
238844  // DQ (9/2/2015): This typedef is no longer used, we can't define the
238845  // comment here (changed to be a C style comment and not be a doxygen comment).
238846  /* \brief Typedef used to hold memory addresses as values.
238847  */
238848  // typedef unsigned long AddressType;
238849 
238850 
238851 
238852  // necessary, to have direct access to the p_freepointer and the private methods !
238854  friend class AST_FILE_IO;
238855 
238857  friend class SgDotExpStorageClass;
238858 
238860  friend class AstSpecificDataManagingClass;
238861 
238863  friend class AstSpecificDataManagingClassStorageClass;
238864 
238865  public:
238867  SgDotExp( const SgDotExpStorageClass& source );
238868 
238869  // private: // JJW hack
238870  /*
238871  name AST Memory Allocation Support Variables
238872  Memory allocations support variables
238873 
238874  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
238875  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
238876  and support the AST File I/O Mechanism.
238877  */
238878  /* */
238879 
238880  public:
238881 
238882  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
238883  // to current node (so that it will work cleanly with build functions to specify patterns).
238884  // virtual SgNode* addRegExpAttribute();
238890  SgDotExp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
238891 
238892 // *** COMMON CODE SECTION ENDS HERE ***
238893 
238894 
238895 // End of memberFunctionString
238896 // Start of memberFunctionString
238897 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
238898 
238899  // the generated cast function
238900  // friend ROSE_DLL_API SgDotExp* isSgDotExp ( SgNode* s );
238901 
238902  typedef SgBinaryOp base_node_type;
238903 
238904 
238905 // End of memberFunctionString
238906 // Start of memberFunctionString
238907 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
238908 
238909  void post_construction_initialization() override;
238910 
238911 
238912 // End of memberFunctionString
238913 // Start of memberFunctionString
238914 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
238915 
238916  int precedence() const override { return 16; }
238917 
238918 
238919 // End of memberFunctionString
238920 
238921 
238922  public:
238923  virtual ~SgDotExp();
238924 
238925 
238926  public:
238927  SgDotExp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
238928  SgDotExp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
238929 
238930  protected:
238931 
238932 
238933 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
238934 
238935 
238936  };
238937 #endif
238938 
238939 // postdeclarations for SgDotExp
238940 
238941 /* #line 238942 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
238942 
238943 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
238944 
238945 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
238946 
238947 
238948 /* #line 238949 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
238949 
238950 
238951 
238952 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
238953 
238954 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
238955 // This code is automatically generated for each
238956 // terminal and non-terminal within the defined
238957 // grammar. There is a simple way to change the
238958 // code to fix bugs etc. See the ROSE README file
238959 // for directions.
238960 
238961 // tps: (02/22/2010): Adding DLL export requirements
238962 #include "rosedll.h"
238963 
238964 // predeclarations for SgDotStarOp
238965 
238966 /* #line 238967 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
238967 
238968 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
238969 
238970 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
238971 
238972 #if 1
238973 // Class Definition for SgDotStarOp
238974 class ROSE_DLL_API SgDotStarOp : public SgBinaryOp
238975  {
238976  public:
238977 
238978 
238979 /* #line 238980 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
238980 
238981  virtual SgNode* copy ( SgCopyHelp& help) const override;
238982 // Start of memberFunctionString
238983 /* #line 802 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
238984 
238985  SgType* get_type() const override;
238986 
238987  // get lvalue
238988  virtual bool isLValue() const override;
238989  virtual bool isChildUsedAsLValue(const SgExpression* child) const override; // INTERNAL Recursively call up the chain to answer the child
238990 
238991 
238992 
238993 // End of memberFunctionString
238994 // Start of memberFunctionString
238995 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
238996 
238997 // *** COMMON CODE SECTION BEGINS HERE ***
238998 
238999  public:
239000 
239001  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
239002  // and not required which is required to match the other aspects of the copy mechanism code generation.
239003  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
239004  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
239005  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
239006  // virtual SgNode* copy ( const SgCopyHelp & help) const;
239007 
239009  virtual std::string class_name() const override;
239010 
239012  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
239013 
239015  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
239016  // static const VariantT static_variant = V_SgDotStarOp;
239017  enum { static_variant = V_SgDotStarOp };
239018 
239019  /* the generated cast function */
239021  ROSE_DLL_API friend SgDotStarOp* isSgDotStarOp( SgNode * s );
239022 
239024  ROSE_DLL_API friend const SgDotStarOp* isSgDotStarOp( const SgNode * s );
239025 
239026  // ******************************************
239027  // * Memory Pool / New / Delete
239028  // ******************************************
239029 
239030  public:
239032  static const unsigned pool_size; //
239034  static std::vector<unsigned char *> pools; //
239036  static SgDotStarOp * next_node; //
239037 
239039  static unsigned long initializeStorageClassArray(SgDotStarOpStorageClass *); //
239040 
239042  static void clearMemoryPool(); //
239043  static void deleteMemoryPool(); //
239044 
239046  static void extendMemoryPoolForFileIO(); //
239047 
239049  static SgDotStarOp * getPointerFromGlobalIndex(unsigned long); //
239051  static SgDotStarOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
239052 
239054  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
239056  static void resetValidFreepointers(); //
239058  static unsigned long getNumberOfLastValidPointer(); //
239059 
239060 
239061 #if defined(INLINE_FUNCTIONS)
239062 
239063  inline void *operator new (size_t size);
239064 #else
239065 
239066  void *operator new (size_t size);
239067 #endif
239068 
239069  void operator delete (void* pointer, size_t size);
239070 
239071  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
239072  void operator delete (void* pointer)
239073  {
239074  // This is the generated delete operator...
239075  SgDotStarOp::operator delete (pointer,sizeof(SgDotStarOp));
239076  }
239077 
239079  static size_t numberOfNodes();
239080 
239082  static size_t memoryUsage();
239083 
239084  // End of scope which started in IR nodes specific code
239085  /* */
239086 
239087  /* name Internal Functions
239088  \brief Internal functions ... incomplete-documentation
239089 
239090  These functions have been made public as part of the design, but they are suggested for internal use
239091  or by particularly knowledgeable users for specialized tools or applications.
239092 
239093  \internal We could not make these private because they are required by user for special purposes. And
239094  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
239095 
239096  */
239097 
239098  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
239099  // overridden in every class by *generated* implementation
239101  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
239102  // MS: 06/28/02 container of names of variables or container indices
239103  // used used in the traversal to access AST successor nodes
239104  // overridden in every class by *generated* implementation
239107  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
239108 
239109  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
239110  // than all the vector copies. The implementation for these functions is generated for each class.
239112  virtual size_t get_numberOfTraversalSuccessors() override;
239114  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
239116  virtual size_t get_childIndex(SgNode *child) override;
239117 
239118 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
239119  // MS: 08/16/2002 method for generating RTI information
239121  virtual RTIReturnType roseRTI() override;
239122 #endif
239123  /* */
239124 
239125 
239126 
239127  /* name Deprecated Functions
239128  \brief Deprecated functions ... incomplete-documentation
239129 
239130  These functions have been deprecated from use.
239131  */
239132  /* */
239133 
239135  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
239136 
239137  // JJW (10/16/2008): Changed to a single function in Node.code, and put
239138  // getVariant() in #if 0 block to prevent confusing Doxygen
239139 #if 0
239140 
239141  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
239143  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
239144 #endif
239145  /* */
239146 
239147 
239148 
239149 
239150  public:
239151  /* name Traversal Support Functions
239152  \brief Traversal support functions ... incomplete-documentation
239153 
239154  These functions have been made public as part of the design, but they are suggested for internal use
239155  or by particularly knowledgable users for specialized tools or applications.
239156  */
239157  /* */
239158 
239159  // DQ (11/26/2005): Support for visitor pattern mechanims
239160  // (inferior to ROSE traversal mechanism, experimental).
239164 
239165  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
239167  virtual void accept (ROSE_VisitorPattern & visitor) override;
239168 
239169  // DQ (12/26/2005): Support for traversal based on the memory pool
239172  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
239173 
239176  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
239177 
239178  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
239179  // This traversal helps support internal tools that call static member functions.
239180  // note: this function operates on the memory pools.
239183  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
239184  /* */
239185 
239186 
239187  public:
239188  /* name Memory Allocation Functions
239189  \brief Memory allocations functions ... incomplete-documentation
239190 
239191  These functions have been made public as part of the design, but they are suggested for internal use
239192  or by particularly knowledgable users for specialized tools or applications.
239193  */
239194  /* */
239195 
239206  virtual bool isInMemoryPool() override;
239207 
239218  virtual void checkDataMemberPointersIfInMemoryPool() override;
239219 
239220  // DQ (4/30/2006): Modified to be a const function.
239235  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
239236 
239246  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
239247 
239259  virtual long getChildIndex( SgNode* childNode ) const override;
239260 
239261  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
239262  // comment here (changed to be a C style comment and not be a doxygen comment).
239263  /* \brief Constructor for use by AST File I/O Mechanism
239264 
239265  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
239266  which obtained via fast binary file I/O from disk.
239267  */
239268  // SgDotStarOp( SgDotStarOpStorageClass& source );
239269 
239270 
239271 
239272 
239273 
239274  // JH (10/24/2005): methods added to support the ast file IO
239275  private:
239276 
239277  /* name AST Memory Allocation Support Functions
239278  \brief Memory allocations support....
239279 
239280  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
239281  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
239282  and support the AST File I/O Mechanism.
239283  */
239284  /* */
239285 
239286  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
239287  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
239288  that I use the same type everywhere, if any changes are made. THe second one declares the type
239289  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
239290  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
239291  a correspinding one in the AST_FILE_IO class!
239292  */
239293  // DQ (9/2/2015): This typedef is no longer used, we can't define the
239294  // comment here (changed to be a C style comment and not be a doxygen comment).
239295  /* \brief Typedef used for low level memory access.
239296  */
239297  // typedef unsigned char* TestType;
239298 
239299  // DQ (9/2/2015): This typedef is no longer used, we can't define the
239300  // comment here (changed to be a C style comment and not be a doxygen comment).
239301  /* \brief Typedef used to hold memory addresses as values.
239302  */
239303  // typedef unsigned long AddressType;
239304 
239305 
239306 
239307  // necessary, to have direct access to the p_freepointer and the private methods !
239309  friend class AST_FILE_IO;
239310 
239312  friend class SgDotStarOpStorageClass;
239313 
239315  friend class AstSpecificDataManagingClass;
239316 
239318  friend class AstSpecificDataManagingClassStorageClass;
239319 
239320  public:
239322  SgDotStarOp( const SgDotStarOpStorageClass& source );
239323 
239324  // private: // JJW hack
239325  /*
239326  name AST Memory Allocation Support Variables
239327  Memory allocations support variables
239328 
239329  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
239330  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
239331  and support the AST File I/O Mechanism.
239332  */
239333  /* */
239334 
239335  public:
239336 
239337  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
239338  // to current node (so that it will work cleanly with build functions to specify patterns).
239339  // virtual SgNode* addRegExpAttribute();
239345  SgDotStarOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
239346 
239347 // *** COMMON CODE SECTION ENDS HERE ***
239348 
239349 
239350 // End of memberFunctionString
239351 // Start of memberFunctionString
239352 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
239353 
239354  // the generated cast function
239355  // friend ROSE_DLL_API SgDotStarOp* isSgDotStarOp ( SgNode* s );
239356 
239357  typedef SgBinaryOp base_node_type;
239358 
239359 
239360 // End of memberFunctionString
239361 // Start of memberFunctionString
239362 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
239363 
239364  void post_construction_initialization() override;
239365 
239366 
239367 // End of memberFunctionString
239368 // Start of memberFunctionString
239369 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
239370 
239371  int precedence() const override { return 14; }
239372 
239373 
239374 // End of memberFunctionString
239375 
239376 
239377  public:
239378  virtual ~SgDotStarOp();
239379 
239380 
239381  public:
239382  SgDotStarOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
239383  SgDotStarOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
239384 
239385  protected:
239386 
239387 
239388 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
239389 
239390 
239391  };
239392 #endif
239393 
239394 // postdeclarations for SgDotStarOp
239395 
239396 /* #line 239397 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
239397 
239398 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
239399 
239400 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
239401 
239402 
239403 /* #line 239404 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
239404 
239405 
239406 
239407 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
239408 
239409 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
239410 // This code is automatically generated for each
239411 // terminal and non-terminal within the defined
239412 // grammar. There is a simple way to change the
239413 // code to fix bugs etc. See the ROSE README file
239414 // for directions.
239415 
239416 // tps: (02/22/2010): Adding DLL export requirements
239417 #include "rosedll.h"
239418 
239419 // predeclarations for SgArrowStarOp
239420 
239421 /* #line 239422 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
239422 
239423 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
239424 
239425 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
239426 
239427 #if 1
239428 // Class Definition for SgArrowStarOp
239429 class ROSE_DLL_API SgArrowStarOp : public SgBinaryOp
239430  {
239431  public:
239432 
239433 
239434 /* #line 239435 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
239435 
239436  virtual SgNode* copy ( SgCopyHelp& help) const override;
239437 // Start of memberFunctionString
239438 /* #line 812 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
239439 
239440  SgType* get_type() const override;
239441 
239442  // get lvalue
239443  virtual bool isLValue() const override;
239444  virtual bool isChildUsedAsLValue(const SgExpression* child) const override; // INTERNAL Recursively call up the chain to answer the child
239445 
239446 
239447 
239448 // End of memberFunctionString
239449 // Start of memberFunctionString
239450 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
239451 
239452 // *** COMMON CODE SECTION BEGINS HERE ***
239453 
239454  public:
239455 
239456  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
239457  // and not required which is required to match the other aspects of the copy mechanism code generation.
239458  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
239459  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
239460  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
239461  // virtual SgNode* copy ( const SgCopyHelp & help) const;
239462 
239464  virtual std::string class_name() const override;
239465 
239467  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
239468 
239470  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
239471  // static const VariantT static_variant = V_SgArrowStarOp;
239472  enum { static_variant = V_SgArrowStarOp };
239473 
239474  /* the generated cast function */
239476  ROSE_DLL_API friend SgArrowStarOp* isSgArrowStarOp( SgNode * s );
239477 
239479  ROSE_DLL_API friend const SgArrowStarOp* isSgArrowStarOp( const SgNode * s );
239480 
239481  // ******************************************
239482  // * Memory Pool / New / Delete
239483  // ******************************************
239484 
239485  public:
239487  static const unsigned pool_size; //
239489  static std::vector<unsigned char *> pools; //
239491  static SgArrowStarOp * next_node; //
239492 
239494  static unsigned long initializeStorageClassArray(SgArrowStarOpStorageClass *); //
239495 
239497  static void clearMemoryPool(); //
239498  static void deleteMemoryPool(); //
239499 
239501  static void extendMemoryPoolForFileIO(); //
239502 
239504  static SgArrowStarOp * getPointerFromGlobalIndex(unsigned long); //
239506  static SgArrowStarOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
239507 
239509  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
239511  static void resetValidFreepointers(); //
239513  static unsigned long getNumberOfLastValidPointer(); //
239514 
239515 
239516 #if defined(INLINE_FUNCTIONS)
239517 
239518  inline void *operator new (size_t size);
239519 #else
239520 
239521  void *operator new (size_t size);
239522 #endif
239523 
239524  void operator delete (void* pointer, size_t size);
239525 
239526  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
239527  void operator delete (void* pointer)
239528  {
239529  // This is the generated delete operator...
239530  SgArrowStarOp::operator delete (pointer,sizeof(SgArrowStarOp));
239531  }
239532 
239534  static size_t numberOfNodes();
239535 
239537  static size_t memoryUsage();
239538 
239539  // End of scope which started in IR nodes specific code
239540  /* */
239541 
239542  /* name Internal Functions
239543  \brief Internal functions ... incomplete-documentation
239544 
239545  These functions have been made public as part of the design, but they are suggested for internal use
239546  or by particularly knowledgeable users for specialized tools or applications.
239547 
239548  \internal We could not make these private because they are required by user for special purposes. And
239549  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
239550 
239551  */
239552 
239553  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
239554  // overridden in every class by *generated* implementation
239556  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
239557  // MS: 06/28/02 container of names of variables or container indices
239558  // used used in the traversal to access AST successor nodes
239559  // overridden in every class by *generated* implementation
239562  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
239563 
239564  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
239565  // than all the vector copies. The implementation for these functions is generated for each class.
239567  virtual size_t get_numberOfTraversalSuccessors() override;
239569  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
239571  virtual size_t get_childIndex(SgNode *child) override;
239572 
239573 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
239574  // MS: 08/16/2002 method for generating RTI information
239576  virtual RTIReturnType roseRTI() override;
239577 #endif
239578  /* */
239579 
239580 
239581 
239582  /* name Deprecated Functions
239583  \brief Deprecated functions ... incomplete-documentation
239584 
239585  These functions have been deprecated from use.
239586  */
239587  /* */
239588 
239590  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
239591 
239592  // JJW (10/16/2008): Changed to a single function in Node.code, and put
239593  // getVariant() in #if 0 block to prevent confusing Doxygen
239594 #if 0
239595 
239596  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
239598  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
239599 #endif
239600  /* */
239601 
239602 
239603 
239604 
239605  public:
239606  /* name Traversal Support Functions
239607  \brief Traversal support functions ... incomplete-documentation
239608 
239609  These functions have been made public as part of the design, but they are suggested for internal use
239610  or by particularly knowledgable users for specialized tools or applications.
239611  */
239612  /* */
239613 
239614  // DQ (11/26/2005): Support for visitor pattern mechanims
239615  // (inferior to ROSE traversal mechanism, experimental).
239619 
239620  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
239622  virtual void accept (ROSE_VisitorPattern & visitor) override;
239623 
239624  // DQ (12/26/2005): Support for traversal based on the memory pool
239627  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
239628 
239631  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
239632 
239633  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
239634  // This traversal helps support internal tools that call static member functions.
239635  // note: this function operates on the memory pools.
239638  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
239639  /* */
239640 
239641 
239642  public:
239643  /* name Memory Allocation Functions
239644  \brief Memory allocations functions ... incomplete-documentation
239645 
239646  These functions have been made public as part of the design, but they are suggested for internal use
239647  or by particularly knowledgable users for specialized tools or applications.
239648  */
239649  /* */
239650 
239661  virtual bool isInMemoryPool() override;
239662 
239673  virtual void checkDataMemberPointersIfInMemoryPool() override;
239674 
239675  // DQ (4/30/2006): Modified to be a const function.
239690  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
239691 
239701  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
239702 
239714  virtual long getChildIndex( SgNode* childNode ) const override;
239715 
239716  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
239717  // comment here (changed to be a C style comment and not be a doxygen comment).
239718  /* \brief Constructor for use by AST File I/O Mechanism
239719 
239720  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
239721  which obtained via fast binary file I/O from disk.
239722  */
239723  // SgArrowStarOp( SgArrowStarOpStorageClass& source );
239724 
239725 
239726 
239727 
239728 
239729  // JH (10/24/2005): methods added to support the ast file IO
239730  private:
239731 
239732  /* name AST Memory Allocation Support Functions
239733  \brief Memory allocations support....
239734 
239735  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
239736  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
239737  and support the AST File I/O Mechanism.
239738  */
239739  /* */
239740 
239741  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
239742  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
239743  that I use the same type everywhere, if any changes are made. THe second one declares the type
239744  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
239745  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
239746  a correspinding one in the AST_FILE_IO class!
239747  */
239748  // DQ (9/2/2015): This typedef is no longer used, we can't define the
239749  // comment here (changed to be a C style comment and not be a doxygen comment).
239750  /* \brief Typedef used for low level memory access.
239751  */
239752  // typedef unsigned char* TestType;
239753 
239754  // DQ (9/2/2015): This typedef is no longer used, we can't define the
239755  // comment here (changed to be a C style comment and not be a doxygen comment).
239756  /* \brief Typedef used to hold memory addresses as values.
239757  */
239758  // typedef unsigned long AddressType;
239759 
239760 
239761 
239762  // necessary, to have direct access to the p_freepointer and the private methods !
239764  friend class AST_FILE_IO;
239765 
239767  friend class SgArrowStarOpStorageClass;
239768 
239770  friend class AstSpecificDataManagingClass;
239771 
239773  friend class AstSpecificDataManagingClassStorageClass;
239774 
239775  public:
239777  SgArrowStarOp( const SgArrowStarOpStorageClass& source );
239778 
239779  // private: // JJW hack
239780  /*
239781  name AST Memory Allocation Support Variables
239782  Memory allocations support variables
239783 
239784  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
239785  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
239786  and support the AST File I/O Mechanism.
239787  */
239788  /* */
239789 
239790  public:
239791 
239792  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
239793  // to current node (so that it will work cleanly with build functions to specify patterns).
239794  // virtual SgNode* addRegExpAttribute();
239800  SgArrowStarOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
239801 
239802 // *** COMMON CODE SECTION ENDS HERE ***
239803 
239804 
239805 // End of memberFunctionString
239806 // Start of memberFunctionString
239807 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
239808 
239809  // the generated cast function
239810  // friend ROSE_DLL_API SgArrowStarOp* isSgArrowStarOp ( SgNode* s );
239811 
239812  typedef SgBinaryOp base_node_type;
239813 
239814 
239815 // End of memberFunctionString
239816 // Start of memberFunctionString
239817 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
239818 
239819  void post_construction_initialization() override;
239820 
239821 
239822 // End of memberFunctionString
239823 // Start of memberFunctionString
239824 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
239825 
239826  int precedence() const override { return 14; }
239827 
239828 
239829 // End of memberFunctionString
239830 
239831 
239832  public:
239833  virtual ~SgArrowStarOp();
239834 
239835 
239836  public:
239837  SgArrowStarOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
239838  SgArrowStarOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
239839 
239840  protected:
239841 
239842 
239843 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
239844 
239845 
239846  };
239847 #endif
239848 
239849 // postdeclarations for SgArrowStarOp
239850 
239851 /* #line 239852 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
239852 
239853 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
239854 
239855 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
239856 
239857 
239858 /* #line 239859 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
239859 
239860 
239861 
239862 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
239863 
239864 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
239865 // This code is automatically generated for each
239866 // terminal and non-terminal within the defined
239867 // grammar. There is a simple way to change the
239868 // code to fix bugs etc. See the ROSE README file
239869 // for directions.
239870 
239871 // tps: (02/22/2010): Adding DLL export requirements
239872 #include "rosedll.h"
239873 
239874 // predeclarations for SgEqualityOp
239875 
239876 /* #line 239877 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
239877 
239878 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
239879 
239880 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
239881 
239882 #if 1
239883 // Class Definition for SgEqualityOp
239884 class ROSE_DLL_API SgEqualityOp : public SgBinaryOp
239885  {
239886  public:
239887 
239888 
239889 /* #line 239890 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
239890 
239891  virtual SgNode* copy ( SgCopyHelp& help) const override;
239892 // Start of memberFunctionString
239893 /* #line 827 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
239894 
239895 /* #line 822 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
239896 
239897  // DQ (6/20/2006): Used for all relational operators
239898  virtual SgType* get_type() const override;
239899 
239900 
239901 
239902 
239903 // End of memberFunctionString
239904 // Start of memberFunctionString
239905 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
239906 
239907 // *** COMMON CODE SECTION BEGINS HERE ***
239908 
239909  public:
239910 
239911  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
239912  // and not required which is required to match the other aspects of the copy mechanism code generation.
239913  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
239914  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
239915  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
239916  // virtual SgNode* copy ( const SgCopyHelp & help) const;
239917 
239919  virtual std::string class_name() const override;
239920 
239922  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
239923 
239925  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
239926  // static const VariantT static_variant = V_SgEqualityOp;
239927  enum { static_variant = V_SgEqualityOp };
239928 
239929  /* the generated cast function */
239931  ROSE_DLL_API friend SgEqualityOp* isSgEqualityOp( SgNode * s );
239932 
239934  ROSE_DLL_API friend const SgEqualityOp* isSgEqualityOp( const SgNode * s );
239935 
239936  // ******************************************
239937  // * Memory Pool / New / Delete
239938  // ******************************************
239939 
239940  public:
239942  static const unsigned pool_size; //
239944  static std::vector<unsigned char *> pools; //
239946  static SgEqualityOp * next_node; //
239947 
239949  static unsigned long initializeStorageClassArray(SgEqualityOpStorageClass *); //
239950 
239952  static void clearMemoryPool(); //
239953  static void deleteMemoryPool(); //
239954 
239956  static void extendMemoryPoolForFileIO(); //
239957 
239959  static SgEqualityOp * getPointerFromGlobalIndex(unsigned long); //
239961  static SgEqualityOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
239962 
239964  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
239966  static void resetValidFreepointers(); //
239968  static unsigned long getNumberOfLastValidPointer(); //
239969 
239970 
239971 #if defined(INLINE_FUNCTIONS)
239972 
239973  inline void *operator new (size_t size);
239974 #else
239975 
239976  void *operator new (size_t size);
239977 #endif
239978 
239979  void operator delete (void* pointer, size_t size);
239980 
239981  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
239982  void operator delete (void* pointer)
239983  {
239984  // This is the generated delete operator...
239985  SgEqualityOp::operator delete (pointer,sizeof(SgEqualityOp));
239986  }
239987 
239989  static size_t numberOfNodes();
239990 
239992  static size_t memoryUsage();
239993 
239994  // End of scope which started in IR nodes specific code
239995  /* */
239996 
239997  /* name Internal Functions
239998  \brief Internal functions ... incomplete-documentation
239999 
240000  These functions have been made public as part of the design, but they are suggested for internal use
240001  or by particularly knowledgeable users for specialized tools or applications.
240002 
240003  \internal We could not make these private because they are required by user for special purposes. And
240004  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
240005 
240006  */
240007 
240008  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
240009  // overridden in every class by *generated* implementation
240011  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
240012  // MS: 06/28/02 container of names of variables or container indices
240013  // used used in the traversal to access AST successor nodes
240014  // overridden in every class by *generated* implementation
240017  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
240018 
240019  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
240020  // than all the vector copies. The implementation for these functions is generated for each class.
240022  virtual size_t get_numberOfTraversalSuccessors() override;
240024  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
240026  virtual size_t get_childIndex(SgNode *child) override;
240027 
240028 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
240029  // MS: 08/16/2002 method for generating RTI information
240031  virtual RTIReturnType roseRTI() override;
240032 #endif
240033  /* */
240034 
240035 
240036 
240037  /* name Deprecated Functions
240038  \brief Deprecated functions ... incomplete-documentation
240039 
240040  These functions have been deprecated from use.
240041  */
240042  /* */
240043 
240045  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
240046 
240047  // JJW (10/16/2008): Changed to a single function in Node.code, and put
240048  // getVariant() in #if 0 block to prevent confusing Doxygen
240049 #if 0
240050 
240051  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
240053  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
240054 #endif
240055  /* */
240056 
240057 
240058 
240059 
240060  public:
240061  /* name Traversal Support Functions
240062  \brief Traversal support functions ... incomplete-documentation
240063 
240064  These functions have been made public as part of the design, but they are suggested for internal use
240065  or by particularly knowledgable users for specialized tools or applications.
240066  */
240067  /* */
240068 
240069  // DQ (11/26/2005): Support for visitor pattern mechanims
240070  // (inferior to ROSE traversal mechanism, experimental).
240074 
240075  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
240077  virtual void accept (ROSE_VisitorPattern & visitor) override;
240078 
240079  // DQ (12/26/2005): Support for traversal based on the memory pool
240082  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
240083 
240086  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
240087 
240088  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
240089  // This traversal helps support internal tools that call static member functions.
240090  // note: this function operates on the memory pools.
240093  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
240094  /* */
240095 
240096 
240097  public:
240098  /* name Memory Allocation Functions
240099  \brief Memory allocations functions ... incomplete-documentation
240100 
240101  These functions have been made public as part of the design, but they are suggested for internal use
240102  or by particularly knowledgable users for specialized tools or applications.
240103  */
240104  /* */
240105 
240116  virtual bool isInMemoryPool() override;
240117 
240128  virtual void checkDataMemberPointersIfInMemoryPool() override;
240129 
240130  // DQ (4/30/2006): Modified to be a const function.
240145  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
240146 
240156  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
240157 
240169  virtual long getChildIndex( SgNode* childNode ) const override;
240170 
240171  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
240172  // comment here (changed to be a C style comment and not be a doxygen comment).
240173  /* \brief Constructor for use by AST File I/O Mechanism
240174 
240175  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
240176  which obtained via fast binary file I/O from disk.
240177  */
240178  // SgEqualityOp( SgEqualityOpStorageClass& source );
240179 
240180 
240181 
240182 
240183 
240184  // JH (10/24/2005): methods added to support the ast file IO
240185  private:
240186 
240187  /* name AST Memory Allocation Support Functions
240188  \brief Memory allocations support....
240189 
240190  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
240191  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
240192  and support the AST File I/O Mechanism.
240193  */
240194  /* */
240195 
240196  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
240197  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
240198  that I use the same type everywhere, if any changes are made. THe second one declares the type
240199  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
240200  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
240201  a correspinding one in the AST_FILE_IO class!
240202  */
240203  // DQ (9/2/2015): This typedef is no longer used, we can't define the
240204  // comment here (changed to be a C style comment and not be a doxygen comment).
240205  /* \brief Typedef used for low level memory access.
240206  */
240207  // typedef unsigned char* TestType;
240208 
240209  // DQ (9/2/2015): This typedef is no longer used, we can't define the
240210  // comment here (changed to be a C style comment and not be a doxygen comment).
240211  /* \brief Typedef used to hold memory addresses as values.
240212  */
240213  // typedef unsigned long AddressType;
240214 
240215 
240216 
240217  // necessary, to have direct access to the p_freepointer and the private methods !
240219  friend class AST_FILE_IO;
240220 
240222  friend class SgEqualityOpStorageClass;
240223 
240225  friend class AstSpecificDataManagingClass;
240226 
240228  friend class AstSpecificDataManagingClassStorageClass;
240229 
240230  public:
240232  SgEqualityOp( const SgEqualityOpStorageClass& source );
240233 
240234  // private: // JJW hack
240235  /*
240236  name AST Memory Allocation Support Variables
240237  Memory allocations support variables
240238 
240239  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
240240  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
240241  and support the AST File I/O Mechanism.
240242  */
240243  /* */
240244 
240245  public:
240246 
240247  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
240248  // to current node (so that it will work cleanly with build functions to specify patterns).
240249  // virtual SgNode* addRegExpAttribute();
240255  SgEqualityOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
240256 
240257 // *** COMMON CODE SECTION ENDS HERE ***
240258 
240259 
240260 // End of memberFunctionString
240261 // Start of memberFunctionString
240262 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
240263 
240264  // the generated cast function
240265  // friend ROSE_DLL_API SgEqualityOp* isSgEqualityOp ( SgNode* s );
240266 
240267  typedef SgBinaryOp base_node_type;
240268 
240269 
240270 // End of memberFunctionString
240271 // Start of memberFunctionString
240272 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
240273 
240274  void post_construction_initialization() override;
240275 
240276 
240277 // End of memberFunctionString
240278 // Start of memberFunctionString
240279 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
240280 
240281  int precedence() const override { return 9; }
240282 
240283 
240284 // End of memberFunctionString
240285 
240286 
240287  public:
240288  virtual ~SgEqualityOp();
240289 
240290 
240291  public:
240292  SgEqualityOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
240293  SgEqualityOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
240294 
240295  protected:
240296 
240297 
240298 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
240299 
240300 
240301  };
240302 #endif
240303 
240304 // postdeclarations for SgEqualityOp
240305 
240306 /* #line 240307 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
240307 
240308 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
240309 
240310 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
240311 
240312 
240313 /* #line 240314 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
240314 
240315 
240316 
240317 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
240318 
240319 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
240320 // This code is automatically generated for each
240321 // terminal and non-terminal within the defined
240322 // grammar. There is a simple way to change the
240323 // code to fix bugs etc. See the ROSE README file
240324 // for directions.
240325 
240326 // tps: (02/22/2010): Adding DLL export requirements
240327 #include "rosedll.h"
240328 
240329 // predeclarations for SgLessThanOp
240330 
240331 /* #line 240332 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
240332 
240333 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
240334 
240335 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
240336 
240337 #if 1
240338 // Class Definition for SgLessThanOp
240339 class ROSE_DLL_API SgLessThanOp : public SgBinaryOp
240340  {
240341  public:
240342 
240343 
240344 /* #line 240345 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
240345 
240346  virtual SgNode* copy ( SgCopyHelp& help) const override;
240347 // Start of memberFunctionString
240348 /* #line 831 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
240349 
240350 /* #line 822 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
240351 
240352  // DQ (6/20/2006): Used for all relational operators
240353  virtual SgType* get_type() const override;
240354 
240355 
240356 
240357 
240358 // End of memberFunctionString
240359 // Start of memberFunctionString
240360 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
240361 
240362 // *** COMMON CODE SECTION BEGINS HERE ***
240363 
240364  public:
240365 
240366  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
240367  // and not required which is required to match the other aspects of the copy mechanism code generation.
240368  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
240369  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
240370  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
240371  // virtual SgNode* copy ( const SgCopyHelp & help) const;
240372 
240374  virtual std::string class_name() const override;
240375 
240377  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
240378 
240380  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
240381  // static const VariantT static_variant = V_SgLessThanOp;
240382  enum { static_variant = V_SgLessThanOp };
240383 
240384  /* the generated cast function */
240386  ROSE_DLL_API friend SgLessThanOp* isSgLessThanOp( SgNode * s );
240387 
240389  ROSE_DLL_API friend const SgLessThanOp* isSgLessThanOp( const SgNode * s );
240390 
240391  // ******************************************
240392  // * Memory Pool / New / Delete
240393  // ******************************************
240394 
240395  public:
240397  static const unsigned pool_size; //
240399  static std::vector<unsigned char *> pools; //
240401  static SgLessThanOp * next_node; //
240402 
240404  static unsigned long initializeStorageClassArray(SgLessThanOpStorageClass *); //
240405 
240407  static void clearMemoryPool(); //
240408  static void deleteMemoryPool(); //
240409 
240411  static void extendMemoryPoolForFileIO(); //
240412 
240414  static SgLessThanOp * getPointerFromGlobalIndex(unsigned long); //
240416  static SgLessThanOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
240417 
240419  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
240421  static void resetValidFreepointers(); //
240423  static unsigned long getNumberOfLastValidPointer(); //
240424 
240425 
240426 #if defined(INLINE_FUNCTIONS)
240427 
240428  inline void *operator new (size_t size);
240429 #else
240430 
240431  void *operator new (size_t size);
240432 #endif
240433 
240434  void operator delete (void* pointer, size_t size);
240435 
240436  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
240437  void operator delete (void* pointer)
240438  {
240439  // This is the generated delete operator...
240440  SgLessThanOp::operator delete (pointer,sizeof(SgLessThanOp));
240441  }
240442 
240444  static size_t numberOfNodes();
240445 
240447  static size_t memoryUsage();
240448 
240449  // End of scope which started in IR nodes specific code
240450  /* */
240451 
240452  /* name Internal Functions
240453  \brief Internal functions ... incomplete-documentation
240454 
240455  These functions have been made public as part of the design, but they are suggested for internal use
240456  or by particularly knowledgeable users for specialized tools or applications.
240457 
240458  \internal We could not make these private because they are required by user for special purposes. And
240459  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
240460 
240461  */
240462 
240463  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
240464  // overridden in every class by *generated* implementation
240466  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
240467  // MS: 06/28/02 container of names of variables or container indices
240468  // used used in the traversal to access AST successor nodes
240469  // overridden in every class by *generated* implementation
240472  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
240473 
240474  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
240475  // than all the vector copies. The implementation for these functions is generated for each class.
240477  virtual size_t get_numberOfTraversalSuccessors() override;
240479  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
240481  virtual size_t get_childIndex(SgNode *child) override;
240482 
240483 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
240484  // MS: 08/16/2002 method for generating RTI information
240486  virtual RTIReturnType roseRTI() override;
240487 #endif
240488  /* */
240489 
240490 
240491 
240492  /* name Deprecated Functions
240493  \brief Deprecated functions ... incomplete-documentation
240494 
240495  These functions have been deprecated from use.
240496  */
240497  /* */
240498 
240500  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
240501 
240502  // JJW (10/16/2008): Changed to a single function in Node.code, and put
240503  // getVariant() in #if 0 block to prevent confusing Doxygen
240504 #if 0
240505 
240506  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
240508  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
240509 #endif
240510  /* */
240511 
240512 
240513 
240514 
240515  public:
240516  /* name Traversal Support Functions
240517  \brief Traversal support functions ... incomplete-documentation
240518 
240519  These functions have been made public as part of the design, but they are suggested for internal use
240520  or by particularly knowledgable users for specialized tools or applications.
240521  */
240522  /* */
240523 
240524  // DQ (11/26/2005): Support for visitor pattern mechanims
240525  // (inferior to ROSE traversal mechanism, experimental).
240529 
240530  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
240532  virtual void accept (ROSE_VisitorPattern & visitor) override;
240533 
240534  // DQ (12/26/2005): Support for traversal based on the memory pool
240537  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
240538 
240541  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
240542 
240543  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
240544  // This traversal helps support internal tools that call static member functions.
240545  // note: this function operates on the memory pools.
240548  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
240549  /* */
240550 
240551 
240552  public:
240553  /* name Memory Allocation Functions
240554  \brief Memory allocations functions ... incomplete-documentation
240555 
240556  These functions have been made public as part of the design, but they are suggested for internal use
240557  or by particularly knowledgable users for specialized tools or applications.
240558  */
240559  /* */
240560 
240571  virtual bool isInMemoryPool() override;
240572 
240583  virtual void checkDataMemberPointersIfInMemoryPool() override;
240584 
240585  // DQ (4/30/2006): Modified to be a const function.
240600  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
240601 
240611  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
240612 
240624  virtual long getChildIndex( SgNode* childNode ) const override;
240625 
240626  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
240627  // comment here (changed to be a C style comment and not be a doxygen comment).
240628  /* \brief Constructor for use by AST File I/O Mechanism
240629 
240630  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
240631  which obtained via fast binary file I/O from disk.
240632  */
240633  // SgLessThanOp( SgLessThanOpStorageClass& source );
240634 
240635 
240636 
240637 
240638 
240639  // JH (10/24/2005): methods added to support the ast file IO
240640  private:
240641 
240642  /* name AST Memory Allocation Support Functions
240643  \brief Memory allocations support....
240644 
240645  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
240646  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
240647  and support the AST File I/O Mechanism.
240648  */
240649  /* */
240650 
240651  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
240652  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
240653  that I use the same type everywhere, if any changes are made. THe second one declares the type
240654  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
240655  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
240656  a correspinding one in the AST_FILE_IO class!
240657  */
240658  // DQ (9/2/2015): This typedef is no longer used, we can't define the
240659  // comment here (changed to be a C style comment and not be a doxygen comment).
240660  /* \brief Typedef used for low level memory access.
240661  */
240662  // typedef unsigned char* TestType;
240663 
240664  // DQ (9/2/2015): This typedef is no longer used, we can't define the
240665  // comment here (changed to be a C style comment and not be a doxygen comment).
240666  /* \brief Typedef used to hold memory addresses as values.
240667  */
240668  // typedef unsigned long AddressType;
240669 
240670 
240671 
240672  // necessary, to have direct access to the p_freepointer and the private methods !
240674  friend class AST_FILE_IO;
240675 
240677  friend class SgLessThanOpStorageClass;
240678 
240680  friend class AstSpecificDataManagingClass;
240681 
240683  friend class AstSpecificDataManagingClassStorageClass;
240684 
240685  public:
240687  SgLessThanOp( const SgLessThanOpStorageClass& source );
240688 
240689  // private: // JJW hack
240690  /*
240691  name AST Memory Allocation Support Variables
240692  Memory allocations support variables
240693 
240694  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
240695  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
240696  and support the AST File I/O Mechanism.
240697  */
240698  /* */
240699 
240700  public:
240701 
240702  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
240703  // to current node (so that it will work cleanly with build functions to specify patterns).
240704  // virtual SgNode* addRegExpAttribute();
240710  SgLessThanOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
240711 
240712 // *** COMMON CODE SECTION ENDS HERE ***
240713 
240714 
240715 // End of memberFunctionString
240716 // Start of memberFunctionString
240717 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
240718 
240719  // the generated cast function
240720  // friend ROSE_DLL_API SgLessThanOp* isSgLessThanOp ( SgNode* s );
240721 
240722  typedef SgBinaryOp base_node_type;
240723 
240724 
240725 // End of memberFunctionString
240726 // Start of memberFunctionString
240727 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
240728 
240729  void post_construction_initialization() override;
240730 
240731 
240732 // End of memberFunctionString
240733 // Start of memberFunctionString
240734 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
240735 
240736  int precedence() const override { return 10; }
240737 
240738 
240739 // End of memberFunctionString
240740 
240741 
240742  public:
240743  virtual ~SgLessThanOp();
240744 
240745 
240746  public:
240747  SgLessThanOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
240748  SgLessThanOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
240749 
240750  protected:
240751 
240752 
240753 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
240754 
240755 
240756  };
240757 #endif
240758 
240759 // postdeclarations for SgLessThanOp
240760 
240761 /* #line 240762 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
240762 
240763 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
240764 
240765 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
240766 
240767 
240768 /* #line 240769 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
240769 
240770 
240771 
240772 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
240773 
240774 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
240775 // This code is automatically generated for each
240776 // terminal and non-terminal within the defined
240777 // grammar. There is a simple way to change the
240778 // code to fix bugs etc. See the ROSE README file
240779 // for directions.
240780 
240781 // tps: (02/22/2010): Adding DLL export requirements
240782 #include "rosedll.h"
240783 
240784 // predeclarations for SgGreaterThanOp
240785 
240786 /* #line 240787 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
240787 
240788 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
240789 
240790 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
240791 
240792 #if 1
240793 // Class Definition for SgGreaterThanOp
240794 class ROSE_DLL_API SgGreaterThanOp : public SgBinaryOp
240795  {
240796  public:
240797 
240798 
240799 /* #line 240800 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
240800 
240801  virtual SgNode* copy ( SgCopyHelp& help) const override;
240802 // Start of memberFunctionString
240803 /* #line 835 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
240804 
240805 /* #line 822 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
240806 
240807  // DQ (6/20/2006): Used for all relational operators
240808  virtual SgType* get_type() const override;
240809 
240810 
240811 
240812 
240813 // End of memberFunctionString
240814 // Start of memberFunctionString
240815 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
240816 
240817 // *** COMMON CODE SECTION BEGINS HERE ***
240818 
240819  public:
240820 
240821  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
240822  // and not required which is required to match the other aspects of the copy mechanism code generation.
240823  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
240824  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
240825  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
240826  // virtual SgNode* copy ( const SgCopyHelp & help) const;
240827 
240829  virtual std::string class_name() const override;
240830 
240832  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
240833 
240835  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
240836  // static const VariantT static_variant = V_SgGreaterThanOp;
240837  enum { static_variant = V_SgGreaterThanOp };
240838 
240839  /* the generated cast function */
240841  ROSE_DLL_API friend SgGreaterThanOp* isSgGreaterThanOp( SgNode * s );
240842 
240844  ROSE_DLL_API friend const SgGreaterThanOp* isSgGreaterThanOp( const SgNode * s );
240845 
240846  // ******************************************
240847  // * Memory Pool / New / Delete
240848  // ******************************************
240849 
240850  public:
240852  static const unsigned pool_size; //
240854  static std::vector<unsigned char *> pools; //
240856  static SgGreaterThanOp * next_node; //
240857 
240859  static unsigned long initializeStorageClassArray(SgGreaterThanOpStorageClass *); //
240860 
240862  static void clearMemoryPool(); //
240863  static void deleteMemoryPool(); //
240864 
240866  static void extendMemoryPoolForFileIO(); //
240867 
240869  static SgGreaterThanOp * getPointerFromGlobalIndex(unsigned long); //
240871  static SgGreaterThanOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
240872 
240874  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
240876  static void resetValidFreepointers(); //
240878  static unsigned long getNumberOfLastValidPointer(); //
240879 
240880 
240881 #if defined(INLINE_FUNCTIONS)
240882 
240883  inline void *operator new (size_t size);
240884 #else
240885 
240886  void *operator new (size_t size);
240887 #endif
240888 
240889  void operator delete (void* pointer, size_t size);
240890 
240891  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
240892  void operator delete (void* pointer)
240893  {
240894  // This is the generated delete operator...
240895  SgGreaterThanOp::operator delete (pointer,sizeof(SgGreaterThanOp));
240896  }
240897 
240899  static size_t numberOfNodes();
240900 
240902  static size_t memoryUsage();
240903 
240904  // End of scope which started in IR nodes specific code
240905  /* */
240906 
240907  /* name Internal Functions
240908  \brief Internal functions ... incomplete-documentation
240909 
240910  These functions have been made public as part of the design, but they are suggested for internal use
240911  or by particularly knowledgeable users for specialized tools or applications.
240912 
240913  \internal We could not make these private because they are required by user for special purposes. And
240914  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
240915 
240916  */
240917 
240918  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
240919  // overridden in every class by *generated* implementation
240921  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
240922  // MS: 06/28/02 container of names of variables or container indices
240923  // used used in the traversal to access AST successor nodes
240924  // overridden in every class by *generated* implementation
240927  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
240928 
240929  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
240930  // than all the vector copies. The implementation for these functions is generated for each class.
240932  virtual size_t get_numberOfTraversalSuccessors() override;
240934  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
240936  virtual size_t get_childIndex(SgNode *child) override;
240937 
240938 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
240939  // MS: 08/16/2002 method for generating RTI information
240941  virtual RTIReturnType roseRTI() override;
240942 #endif
240943  /* */
240944 
240945 
240946 
240947  /* name Deprecated Functions
240948  \brief Deprecated functions ... incomplete-documentation
240949 
240950  These functions have been deprecated from use.
240951  */
240952  /* */
240953 
240955  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
240956 
240957  // JJW (10/16/2008): Changed to a single function in Node.code, and put
240958  // getVariant() in #if 0 block to prevent confusing Doxygen
240959 #if 0
240960 
240961  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
240963  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
240964 #endif
240965  /* */
240966 
240967 
240968 
240969 
240970  public:
240971  /* name Traversal Support Functions
240972  \brief Traversal support functions ... incomplete-documentation
240973 
240974  These functions have been made public as part of the design, but they are suggested for internal use
240975  or by particularly knowledgable users for specialized tools or applications.
240976  */
240977  /* */
240978 
240979  // DQ (11/26/2005): Support for visitor pattern mechanims
240980  // (inferior to ROSE traversal mechanism, experimental).
240984 
240985  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
240987  virtual void accept (ROSE_VisitorPattern & visitor) override;
240988 
240989  // DQ (12/26/2005): Support for traversal based on the memory pool
240992  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
240993 
240996  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
240997 
240998  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
240999  // This traversal helps support internal tools that call static member functions.
241000  // note: this function operates on the memory pools.
241003  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
241004  /* */
241005 
241006 
241007  public:
241008  /* name Memory Allocation Functions
241009  \brief Memory allocations functions ... incomplete-documentation
241010 
241011  These functions have been made public as part of the design, but they are suggested for internal use
241012  or by particularly knowledgable users for specialized tools or applications.
241013  */
241014  /* */
241015 
241026  virtual bool isInMemoryPool() override;
241027 
241038  virtual void checkDataMemberPointersIfInMemoryPool() override;
241039 
241040  // DQ (4/30/2006): Modified to be a const function.
241055  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
241056 
241066  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
241067 
241079  virtual long getChildIndex( SgNode* childNode ) const override;
241080 
241081  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
241082  // comment here (changed to be a C style comment and not be a doxygen comment).
241083  /* \brief Constructor for use by AST File I/O Mechanism
241084 
241085  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
241086  which obtained via fast binary file I/O from disk.
241087  */
241088  // SgGreaterThanOp( SgGreaterThanOpStorageClass& source );
241089 
241090 
241091 
241092 
241093 
241094  // JH (10/24/2005): methods added to support the ast file IO
241095  private:
241096 
241097  /* name AST Memory Allocation Support Functions
241098  \brief Memory allocations support....
241099 
241100  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
241101  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
241102  and support the AST File I/O Mechanism.
241103  */
241104  /* */
241105 
241106  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
241107  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
241108  that I use the same type everywhere, if any changes are made. THe second one declares the type
241109  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
241110  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
241111  a correspinding one in the AST_FILE_IO class!
241112  */
241113  // DQ (9/2/2015): This typedef is no longer used, we can't define the
241114  // comment here (changed to be a C style comment and not be a doxygen comment).
241115  /* \brief Typedef used for low level memory access.
241116  */
241117  // typedef unsigned char* TestType;
241118 
241119  // DQ (9/2/2015): This typedef is no longer used, we can't define the
241120  // comment here (changed to be a C style comment and not be a doxygen comment).
241121  /* \brief Typedef used to hold memory addresses as values.
241122  */
241123  // typedef unsigned long AddressType;
241124 
241125 
241126 
241127  // necessary, to have direct access to the p_freepointer and the private methods !
241129  friend class AST_FILE_IO;
241130 
241132  friend class SgGreaterThanOpStorageClass;
241133 
241135  friend class AstSpecificDataManagingClass;
241136 
241138  friend class AstSpecificDataManagingClassStorageClass;
241139 
241140  public:
241142  SgGreaterThanOp( const SgGreaterThanOpStorageClass& source );
241143 
241144  // private: // JJW hack
241145  /*
241146  name AST Memory Allocation Support Variables
241147  Memory allocations support variables
241148 
241149  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
241150  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
241151  and support the AST File I/O Mechanism.
241152  */
241153  /* */
241154 
241155  public:
241156 
241157  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
241158  // to current node (so that it will work cleanly with build functions to specify patterns).
241159  // virtual SgNode* addRegExpAttribute();
241166 
241167 // *** COMMON CODE SECTION ENDS HERE ***
241168 
241169 
241170 // End of memberFunctionString
241171 // Start of memberFunctionString
241172 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
241173 
241174  // the generated cast function
241175  // friend ROSE_DLL_API SgGreaterThanOp* isSgGreaterThanOp ( SgNode* s );
241176 
241177  typedef SgBinaryOp base_node_type;
241178 
241179 
241180 // End of memberFunctionString
241181 // Start of memberFunctionString
241182 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
241183 
241184  void post_construction_initialization() override;
241185 
241186 
241187 // End of memberFunctionString
241188 // Start of memberFunctionString
241189 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
241190 
241191  int precedence() const override { return 10; }
241192 
241193 
241194 // End of memberFunctionString
241195 
241196 
241197  public:
241198  virtual ~SgGreaterThanOp();
241199 
241200 
241201  public:
241202  SgGreaterThanOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
241203  SgGreaterThanOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
241204 
241205  protected:
241206 
241207 
241208 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
241209 
241210 
241211  };
241212 #endif
241213 
241214 // postdeclarations for SgGreaterThanOp
241215 
241216 /* #line 241217 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
241217 
241218 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
241219 
241220 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
241221 
241222 
241223 /* #line 241224 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
241224 
241225 
241226 
241227 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
241228 
241229 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
241230 // This code is automatically generated for each
241231 // terminal and non-terminal within the defined
241232 // grammar. There is a simple way to change the
241233 // code to fix bugs etc. See the ROSE README file
241234 // for directions.
241235 
241236 // tps: (02/22/2010): Adding DLL export requirements
241237 #include "rosedll.h"
241238 
241239 // predeclarations for SgNotEqualOp
241240 
241241 /* #line 241242 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
241242 
241243 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
241244 
241245 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
241246 
241247 #if 1
241248 // Class Definition for SgNotEqualOp
241249 class ROSE_DLL_API SgNotEqualOp : public SgBinaryOp
241250  {
241251  public:
241252 
241253 
241254 /* #line 241255 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
241255 
241256  virtual SgNode* copy ( SgCopyHelp& help) const override;
241257 // Start of memberFunctionString
241258 /* #line 839 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
241259 
241260 /* #line 822 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
241261 
241262  // DQ (6/20/2006): Used for all relational operators
241263  virtual SgType* get_type() const override;
241264 
241265 
241266 
241267 
241268 // End of memberFunctionString
241269 // Start of memberFunctionString
241270 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
241271 
241272 // *** COMMON CODE SECTION BEGINS HERE ***
241273 
241274  public:
241275 
241276  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
241277  // and not required which is required to match the other aspects of the copy mechanism code generation.
241278  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
241279  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
241280  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
241281  // virtual SgNode* copy ( const SgCopyHelp & help) const;
241282 
241284  virtual std::string class_name() const override;
241285 
241287  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
241288 
241290  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
241291  // static const VariantT static_variant = V_SgNotEqualOp;
241292  enum { static_variant = V_SgNotEqualOp };
241293 
241294  /* the generated cast function */
241296  ROSE_DLL_API friend SgNotEqualOp* isSgNotEqualOp( SgNode * s );
241297 
241299  ROSE_DLL_API friend const SgNotEqualOp* isSgNotEqualOp( const SgNode * s );
241300 
241301  // ******************************************
241302  // * Memory Pool / New / Delete
241303  // ******************************************
241304 
241305  public:
241307  static const unsigned pool_size; //
241309  static std::vector<unsigned char *> pools; //
241311  static SgNotEqualOp * next_node; //
241312 
241314  static unsigned long initializeStorageClassArray(SgNotEqualOpStorageClass *); //
241315 
241317  static void clearMemoryPool(); //
241318  static void deleteMemoryPool(); //
241319 
241321  static void extendMemoryPoolForFileIO(); //
241322 
241324  static SgNotEqualOp * getPointerFromGlobalIndex(unsigned long); //
241326  static SgNotEqualOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
241327 
241329  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
241331  static void resetValidFreepointers(); //
241333  static unsigned long getNumberOfLastValidPointer(); //
241334 
241335 
241336 #if defined(INLINE_FUNCTIONS)
241337 
241338  inline void *operator new (size_t size);
241339 #else
241340 
241341  void *operator new (size_t size);
241342 #endif
241343 
241344  void operator delete (void* pointer, size_t size);
241345 
241346  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
241347  void operator delete (void* pointer)
241348  {
241349  // This is the generated delete operator...
241350  SgNotEqualOp::operator delete (pointer,sizeof(SgNotEqualOp));
241351  }
241352 
241354  static size_t numberOfNodes();
241355 
241357  static size_t memoryUsage();
241358 
241359  // End of scope which started in IR nodes specific code
241360  /* */
241361 
241362  /* name Internal Functions
241363  \brief Internal functions ... incomplete-documentation
241364 
241365  These functions have been made public as part of the design, but they are suggested for internal use
241366  or by particularly knowledgeable users for specialized tools or applications.
241367 
241368  \internal We could not make these private because they are required by user for special purposes. And
241369  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
241370 
241371  */
241372 
241373  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
241374  // overridden in every class by *generated* implementation
241376  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
241377  // MS: 06/28/02 container of names of variables or container indices
241378  // used used in the traversal to access AST successor nodes
241379  // overridden in every class by *generated* implementation
241382  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
241383 
241384  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
241385  // than all the vector copies. The implementation for these functions is generated for each class.
241387  virtual size_t get_numberOfTraversalSuccessors() override;
241389  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
241391  virtual size_t get_childIndex(SgNode *child) override;
241392 
241393 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
241394  // MS: 08/16/2002 method for generating RTI information
241396  virtual RTIReturnType roseRTI() override;
241397 #endif
241398  /* */
241399 
241400 
241401 
241402  /* name Deprecated Functions
241403  \brief Deprecated functions ... incomplete-documentation
241404 
241405  These functions have been deprecated from use.
241406  */
241407  /* */
241408 
241410  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
241411 
241412  // JJW (10/16/2008): Changed to a single function in Node.code, and put
241413  // getVariant() in #if 0 block to prevent confusing Doxygen
241414 #if 0
241415 
241416  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
241418  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
241419 #endif
241420  /* */
241421 
241422 
241423 
241424 
241425  public:
241426  /* name Traversal Support Functions
241427  \brief Traversal support functions ... incomplete-documentation
241428 
241429  These functions have been made public as part of the design, but they are suggested for internal use
241430  or by particularly knowledgable users for specialized tools or applications.
241431  */
241432  /* */
241433 
241434  // DQ (11/26/2005): Support for visitor pattern mechanims
241435  // (inferior to ROSE traversal mechanism, experimental).
241439 
241440  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
241442  virtual void accept (ROSE_VisitorPattern & visitor) override;
241443 
241444  // DQ (12/26/2005): Support for traversal based on the memory pool
241447  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
241448 
241451  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
241452 
241453  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
241454  // This traversal helps support internal tools that call static member functions.
241455  // note: this function operates on the memory pools.
241458  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
241459  /* */
241460 
241461 
241462  public:
241463  /* name Memory Allocation Functions
241464  \brief Memory allocations functions ... incomplete-documentation
241465 
241466  These functions have been made public as part of the design, but they are suggested for internal use
241467  or by particularly knowledgable users for specialized tools or applications.
241468  */
241469  /* */
241470 
241481  virtual bool isInMemoryPool() override;
241482 
241493  virtual void checkDataMemberPointersIfInMemoryPool() override;
241494 
241495  // DQ (4/30/2006): Modified to be a const function.
241510  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
241511 
241521  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
241522 
241534  virtual long getChildIndex( SgNode* childNode ) const override;
241535 
241536  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
241537  // comment here (changed to be a C style comment and not be a doxygen comment).
241538  /* \brief Constructor for use by AST File I/O Mechanism
241539 
241540  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
241541  which obtained via fast binary file I/O from disk.
241542  */
241543  // SgNotEqualOp( SgNotEqualOpStorageClass& source );
241544 
241545 
241546 
241547 
241548 
241549  // JH (10/24/2005): methods added to support the ast file IO
241550  private:
241551 
241552  /* name AST Memory Allocation Support Functions
241553  \brief Memory allocations support....
241554 
241555  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
241556  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
241557  and support the AST File I/O Mechanism.
241558  */
241559  /* */
241560 
241561  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
241562  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
241563  that I use the same type everywhere, if any changes are made. THe second one declares the type
241564  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
241565  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
241566  a correspinding one in the AST_FILE_IO class!
241567  */
241568  // DQ (9/2/2015): This typedef is no longer used, we can't define the
241569  // comment here (changed to be a C style comment and not be a doxygen comment).
241570  /* \brief Typedef used for low level memory access.
241571  */
241572  // typedef unsigned char* TestType;
241573 
241574  // DQ (9/2/2015): This typedef is no longer used, we can't define the
241575  // comment here (changed to be a C style comment and not be a doxygen comment).
241576  /* \brief Typedef used to hold memory addresses as values.
241577  */
241578  // typedef unsigned long AddressType;
241579 
241580 
241581 
241582  // necessary, to have direct access to the p_freepointer and the private methods !
241584  friend class AST_FILE_IO;
241585 
241587  friend class SgNotEqualOpStorageClass;
241588 
241590  friend class AstSpecificDataManagingClass;
241591 
241593  friend class AstSpecificDataManagingClassStorageClass;
241594 
241595  public:
241597  SgNotEqualOp( const SgNotEqualOpStorageClass& source );
241598 
241599  // private: // JJW hack
241600  /*
241601  name AST Memory Allocation Support Variables
241602  Memory allocations support variables
241603 
241604  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
241605  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
241606  and support the AST File I/O Mechanism.
241607  */
241608  /* */
241609 
241610  public:
241611 
241612  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
241613  // to current node (so that it will work cleanly with build functions to specify patterns).
241614  // virtual SgNode* addRegExpAttribute();
241620  SgNotEqualOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
241621 
241622 // *** COMMON CODE SECTION ENDS HERE ***
241623 
241624 
241625 // End of memberFunctionString
241626 // Start of memberFunctionString
241627 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
241628 
241629  // the generated cast function
241630  // friend ROSE_DLL_API SgNotEqualOp* isSgNotEqualOp ( SgNode* s );
241631 
241632  typedef SgBinaryOp base_node_type;
241633 
241634 
241635 // End of memberFunctionString
241636 // Start of memberFunctionString
241637 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
241638 
241639  void post_construction_initialization() override;
241640 
241641 
241642 // End of memberFunctionString
241643 // Start of memberFunctionString
241644 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
241645 
241646  int precedence() const override { return 9; }
241647 
241648 
241649 // End of memberFunctionString
241650 
241651 
241652  public:
241653  virtual ~SgNotEqualOp();
241654 
241655 
241656  public:
241657  SgNotEqualOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
241658  SgNotEqualOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
241659 
241660  protected:
241661 
241662 
241663 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
241664 
241665 
241666  };
241667 #endif
241668 
241669 // postdeclarations for SgNotEqualOp
241670 
241671 /* #line 241672 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
241672 
241673 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
241674 
241675 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
241676 
241677 
241678 /* #line 241679 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
241679 
241680 
241681 
241682 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
241683 
241684 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
241685 // This code is automatically generated for each
241686 // terminal and non-terminal within the defined
241687 // grammar. There is a simple way to change the
241688 // code to fix bugs etc. See the ROSE README file
241689 // for directions.
241690 
241691 // tps: (02/22/2010): Adding DLL export requirements
241692 #include "rosedll.h"
241693 
241694 // predeclarations for SgLessOrEqualOp
241695 
241696 /* #line 241697 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
241697 
241698 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
241699 
241700 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
241701 
241702 #if 1
241703 // Class Definition for SgLessOrEqualOp
241704 class ROSE_DLL_API SgLessOrEqualOp : public SgBinaryOp
241705  {
241706  public:
241707 
241708 
241709 /* #line 241710 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
241710 
241711  virtual SgNode* copy ( SgCopyHelp& help) const override;
241712 // Start of memberFunctionString
241713 /* #line 843 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
241714 
241715 /* #line 822 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
241716 
241717  // DQ (6/20/2006): Used for all relational operators
241718  virtual SgType* get_type() const override;
241719 
241720 
241721 
241722 
241723 // End of memberFunctionString
241724 // Start of memberFunctionString
241725 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
241726 
241727 // *** COMMON CODE SECTION BEGINS HERE ***
241728 
241729  public:
241730 
241731  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
241732  // and not required which is required to match the other aspects of the copy mechanism code generation.
241733  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
241734  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
241735  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
241736  // virtual SgNode* copy ( const SgCopyHelp & help) const;
241737 
241739  virtual std::string class_name() const override;
241740 
241742  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
241743 
241745  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
241746  // static const VariantT static_variant = V_SgLessOrEqualOp;
241747  enum { static_variant = V_SgLessOrEqualOp };
241748 
241749  /* the generated cast function */
241751  ROSE_DLL_API friend SgLessOrEqualOp* isSgLessOrEqualOp( SgNode * s );
241752 
241754  ROSE_DLL_API friend const SgLessOrEqualOp* isSgLessOrEqualOp( const SgNode * s );
241755 
241756  // ******************************************
241757  // * Memory Pool / New / Delete
241758  // ******************************************
241759 
241760  public:
241762  static const unsigned pool_size; //
241764  static std::vector<unsigned char *> pools; //
241766  static SgLessOrEqualOp * next_node; //
241767 
241769  static unsigned long initializeStorageClassArray(SgLessOrEqualOpStorageClass *); //
241770 
241772  static void clearMemoryPool(); //
241773  static void deleteMemoryPool(); //
241774 
241776  static void extendMemoryPoolForFileIO(); //
241777 
241779  static SgLessOrEqualOp * getPointerFromGlobalIndex(unsigned long); //
241781  static SgLessOrEqualOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
241782 
241784  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
241786  static void resetValidFreepointers(); //
241788  static unsigned long getNumberOfLastValidPointer(); //
241789 
241790 
241791 #if defined(INLINE_FUNCTIONS)
241792 
241793  inline void *operator new (size_t size);
241794 #else
241795 
241796  void *operator new (size_t size);
241797 #endif
241798 
241799  void operator delete (void* pointer, size_t size);
241800 
241801  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
241802  void operator delete (void* pointer)
241803  {
241804  // This is the generated delete operator...
241805  SgLessOrEqualOp::operator delete (pointer,sizeof(SgLessOrEqualOp));
241806  }
241807 
241809  static size_t numberOfNodes();
241810 
241812  static size_t memoryUsage();
241813 
241814  // End of scope which started in IR nodes specific code
241815  /* */
241816 
241817  /* name Internal Functions
241818  \brief Internal functions ... incomplete-documentation
241819 
241820  These functions have been made public as part of the design, but they are suggested for internal use
241821  or by particularly knowledgeable users for specialized tools or applications.
241822 
241823  \internal We could not make these private because they are required by user for special purposes. And
241824  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
241825 
241826  */
241827 
241828  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
241829  // overridden in every class by *generated* implementation
241831  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
241832  // MS: 06/28/02 container of names of variables or container indices
241833  // used used in the traversal to access AST successor nodes
241834  // overridden in every class by *generated* implementation
241837  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
241838 
241839  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
241840  // than all the vector copies. The implementation for these functions is generated for each class.
241842  virtual size_t get_numberOfTraversalSuccessors() override;
241844  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
241846  virtual size_t get_childIndex(SgNode *child) override;
241847 
241848 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
241849  // MS: 08/16/2002 method for generating RTI information
241851  virtual RTIReturnType roseRTI() override;
241852 #endif
241853  /* */
241854 
241855 
241856 
241857  /* name Deprecated Functions
241858  \brief Deprecated functions ... incomplete-documentation
241859 
241860  These functions have been deprecated from use.
241861  */
241862  /* */
241863 
241865  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
241866 
241867  // JJW (10/16/2008): Changed to a single function in Node.code, and put
241868  // getVariant() in #if 0 block to prevent confusing Doxygen
241869 #if 0
241870 
241871  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
241873  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
241874 #endif
241875  /* */
241876 
241877 
241878 
241879 
241880  public:
241881  /* name Traversal Support Functions
241882  \brief Traversal support functions ... incomplete-documentation
241883 
241884  These functions have been made public as part of the design, but they are suggested for internal use
241885  or by particularly knowledgable users for specialized tools or applications.
241886  */
241887  /* */
241888 
241889  // DQ (11/26/2005): Support for visitor pattern mechanims
241890  // (inferior to ROSE traversal mechanism, experimental).
241894 
241895  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
241897  virtual void accept (ROSE_VisitorPattern & visitor) override;
241898 
241899  // DQ (12/26/2005): Support for traversal based on the memory pool
241902  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
241903 
241906  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
241907 
241908  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
241909  // This traversal helps support internal tools that call static member functions.
241910  // note: this function operates on the memory pools.
241913  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
241914  /* */
241915 
241916 
241917  public:
241918  /* name Memory Allocation Functions
241919  \brief Memory allocations functions ... incomplete-documentation
241920 
241921  These functions have been made public as part of the design, but they are suggested for internal use
241922  or by particularly knowledgable users for specialized tools or applications.
241923  */
241924  /* */
241925 
241936  virtual bool isInMemoryPool() override;
241937 
241948  virtual void checkDataMemberPointersIfInMemoryPool() override;
241949 
241950  // DQ (4/30/2006): Modified to be a const function.
241965  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
241966 
241976  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
241977 
241989  virtual long getChildIndex( SgNode* childNode ) const override;
241990 
241991  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
241992  // comment here (changed to be a C style comment and not be a doxygen comment).
241993  /* \brief Constructor for use by AST File I/O Mechanism
241994 
241995  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
241996  which obtained via fast binary file I/O from disk.
241997  */
241998  // SgLessOrEqualOp( SgLessOrEqualOpStorageClass& source );
241999 
242000 
242001 
242002 
242003 
242004  // JH (10/24/2005): methods added to support the ast file IO
242005  private:
242006 
242007  /* name AST Memory Allocation Support Functions
242008  \brief Memory allocations support....
242009 
242010  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
242011  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
242012  and support the AST File I/O Mechanism.
242013  */
242014  /* */
242015 
242016  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
242017  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
242018  that I use the same type everywhere, if any changes are made. THe second one declares the type
242019  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
242020  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
242021  a correspinding one in the AST_FILE_IO class!
242022  */
242023  // DQ (9/2/2015): This typedef is no longer used, we can't define the
242024  // comment here (changed to be a C style comment and not be a doxygen comment).
242025  /* \brief Typedef used for low level memory access.
242026  */
242027  // typedef unsigned char* TestType;
242028 
242029  // DQ (9/2/2015): This typedef is no longer used, we can't define the
242030  // comment here (changed to be a C style comment and not be a doxygen comment).
242031  /* \brief Typedef used to hold memory addresses as values.
242032  */
242033  // typedef unsigned long AddressType;
242034 
242035 
242036 
242037  // necessary, to have direct access to the p_freepointer and the private methods !
242039  friend class AST_FILE_IO;
242040 
242042  friend class SgLessOrEqualOpStorageClass;
242043 
242045  friend class AstSpecificDataManagingClass;
242046 
242048  friend class AstSpecificDataManagingClassStorageClass;
242049 
242050  public:
242052  SgLessOrEqualOp( const SgLessOrEqualOpStorageClass& source );
242053 
242054  // private: // JJW hack
242055  /*
242056  name AST Memory Allocation Support Variables
242057  Memory allocations support variables
242058 
242059  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
242060  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
242061  and support the AST File I/O Mechanism.
242062  */
242063  /* */
242064 
242065  public:
242066 
242067  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
242068  // to current node (so that it will work cleanly with build functions to specify patterns).
242069  // virtual SgNode* addRegExpAttribute();
242076 
242077 // *** COMMON CODE SECTION ENDS HERE ***
242078 
242079 
242080 // End of memberFunctionString
242081 // Start of memberFunctionString
242082 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
242083 
242084  // the generated cast function
242085  // friend ROSE_DLL_API SgLessOrEqualOp* isSgLessOrEqualOp ( SgNode* s );
242086 
242087  typedef SgBinaryOp base_node_type;
242088 
242089 
242090 // End of memberFunctionString
242091 // Start of memberFunctionString
242092 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
242093 
242094  void post_construction_initialization() override;
242095 
242096 
242097 // End of memberFunctionString
242098 // Start of memberFunctionString
242099 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
242100 
242101  int precedence() const override { return 10; }
242102 
242103 
242104 // End of memberFunctionString
242105 
242106 
242107  public:
242108  virtual ~SgLessOrEqualOp();
242109 
242110 
242111  public:
242112  SgLessOrEqualOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
242113  SgLessOrEqualOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
242114 
242115  protected:
242116 
242117 
242118 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
242119 
242120 
242121  };
242122 #endif
242123 
242124 // postdeclarations for SgLessOrEqualOp
242125 
242126 /* #line 242127 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
242127 
242128 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
242129 
242130 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
242131 
242132 
242133 /* #line 242134 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
242134 
242135 
242136 
242137 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
242138 
242139 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
242140 // This code is automatically generated for each
242141 // terminal and non-terminal within the defined
242142 // grammar. There is a simple way to change the
242143 // code to fix bugs etc. See the ROSE README file
242144 // for directions.
242145 
242146 // tps: (02/22/2010): Adding DLL export requirements
242147 #include "rosedll.h"
242148 
242149 // predeclarations for SgGreaterOrEqualOp
242150 
242151 /* #line 242152 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
242152 
242153 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
242154 
242155 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
242156 
242157 #if 1
242158 // Class Definition for SgGreaterOrEqualOp
242159 class ROSE_DLL_API SgGreaterOrEqualOp : public SgBinaryOp
242160  {
242161  public:
242162 
242163 
242164 /* #line 242165 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
242165 
242166  virtual SgNode* copy ( SgCopyHelp& help) const override;
242167 // Start of memberFunctionString
242168 /* #line 847 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
242169 
242170 /* #line 822 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
242171 
242172  // DQ (6/20/2006): Used for all relational operators
242173  virtual SgType* get_type() const override;
242174 
242175 
242176 
242177 
242178 // End of memberFunctionString
242179 // Start of memberFunctionString
242180 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
242181 
242182 // *** COMMON CODE SECTION BEGINS HERE ***
242183 
242184  public:
242185 
242186  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
242187  // and not required which is required to match the other aspects of the copy mechanism code generation.
242188  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
242189  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
242190  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
242191  // virtual SgNode* copy ( const SgCopyHelp & help) const;
242192 
242194  virtual std::string class_name() const override;
242195 
242197  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
242198 
242200  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
242201  // static const VariantT static_variant = V_SgGreaterOrEqualOp;
242202  enum { static_variant = V_SgGreaterOrEqualOp };
242203 
242204  /* the generated cast function */
242206  ROSE_DLL_API friend SgGreaterOrEqualOp* isSgGreaterOrEqualOp( SgNode * s );
242207 
242209  ROSE_DLL_API friend const SgGreaterOrEqualOp* isSgGreaterOrEqualOp( const SgNode * s );
242210 
242211  // ******************************************
242212  // * Memory Pool / New / Delete
242213  // ******************************************
242214 
242215  public:
242217  static const unsigned pool_size; //
242219  static std::vector<unsigned char *> pools; //
242221  static SgGreaterOrEqualOp * next_node; //
242222 
242224  static unsigned long initializeStorageClassArray(SgGreaterOrEqualOpStorageClass *); //
242225 
242227  static void clearMemoryPool(); //
242228  static void deleteMemoryPool(); //
242229 
242231  static void extendMemoryPoolForFileIO(); //
242232 
242234  static SgGreaterOrEqualOp * getPointerFromGlobalIndex(unsigned long); //
242236  static SgGreaterOrEqualOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
242237 
242239  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
242241  static void resetValidFreepointers(); //
242243  static unsigned long getNumberOfLastValidPointer(); //
242244 
242245 
242246 #if defined(INLINE_FUNCTIONS)
242247 
242248  inline void *operator new (size_t size);
242249 #else
242250 
242251  void *operator new (size_t size);
242252 #endif
242253 
242254  void operator delete (void* pointer, size_t size);
242255 
242256  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
242257  void operator delete (void* pointer)
242258  {
242259  // This is the generated delete operator...
242260  SgGreaterOrEqualOp::operator delete (pointer,sizeof(SgGreaterOrEqualOp));
242261  }
242262 
242264  static size_t numberOfNodes();
242265 
242267  static size_t memoryUsage();
242268 
242269  // End of scope which started in IR nodes specific code
242270  /* */
242271 
242272  /* name Internal Functions
242273  \brief Internal functions ... incomplete-documentation
242274 
242275  These functions have been made public as part of the design, but they are suggested for internal use
242276  or by particularly knowledgeable users for specialized tools or applications.
242277 
242278  \internal We could not make these private because they are required by user for special purposes. And
242279  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
242280 
242281  */
242282 
242283  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
242284  // overridden in every class by *generated* implementation
242286  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
242287  // MS: 06/28/02 container of names of variables or container indices
242288  // used used in the traversal to access AST successor nodes
242289  // overridden in every class by *generated* implementation
242292  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
242293 
242294  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
242295  // than all the vector copies. The implementation for these functions is generated for each class.
242297  virtual size_t get_numberOfTraversalSuccessors() override;
242299  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
242301  virtual size_t get_childIndex(SgNode *child) override;
242302 
242303 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
242304  // MS: 08/16/2002 method for generating RTI information
242306  virtual RTIReturnType roseRTI() override;
242307 #endif
242308  /* */
242309 
242310 
242311 
242312  /* name Deprecated Functions
242313  \brief Deprecated functions ... incomplete-documentation
242314 
242315  These functions have been deprecated from use.
242316  */
242317  /* */
242318 
242320  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
242321 
242322  // JJW (10/16/2008): Changed to a single function in Node.code, and put
242323  // getVariant() in #if 0 block to prevent confusing Doxygen
242324 #if 0
242325 
242326  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
242328  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
242329 #endif
242330  /* */
242331 
242332 
242333 
242334 
242335  public:
242336  /* name Traversal Support Functions
242337  \brief Traversal support functions ... incomplete-documentation
242338 
242339  These functions have been made public as part of the design, but they are suggested for internal use
242340  or by particularly knowledgable users for specialized tools or applications.
242341  */
242342  /* */
242343 
242344  // DQ (11/26/2005): Support for visitor pattern mechanims
242345  // (inferior to ROSE traversal mechanism, experimental).
242349 
242350  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
242352  virtual void accept (ROSE_VisitorPattern & visitor) override;
242353 
242354  // DQ (12/26/2005): Support for traversal based on the memory pool
242357  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
242358 
242361  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
242362 
242363  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
242364  // This traversal helps support internal tools that call static member functions.
242365  // note: this function operates on the memory pools.
242368  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
242369  /* */
242370 
242371 
242372  public:
242373  /* name Memory Allocation Functions
242374  \brief Memory allocations functions ... incomplete-documentation
242375 
242376  These functions have been made public as part of the design, but they are suggested for internal use
242377  or by particularly knowledgable users for specialized tools or applications.
242378  */
242379  /* */
242380 
242391  virtual bool isInMemoryPool() override;
242392 
242403  virtual void checkDataMemberPointersIfInMemoryPool() override;
242404 
242405  // DQ (4/30/2006): Modified to be a const function.
242420  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
242421 
242431  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
242432 
242444  virtual long getChildIndex( SgNode* childNode ) const override;
242445 
242446  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
242447  // comment here (changed to be a C style comment and not be a doxygen comment).
242448  /* \brief Constructor for use by AST File I/O Mechanism
242449 
242450  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
242451  which obtained via fast binary file I/O from disk.
242452  */
242453  // SgGreaterOrEqualOp( SgGreaterOrEqualOpStorageClass& source );
242454 
242455 
242456 
242457 
242458 
242459  // JH (10/24/2005): methods added to support the ast file IO
242460  private:
242461 
242462  /* name AST Memory Allocation Support Functions
242463  \brief Memory allocations support....
242464 
242465  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
242466  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
242467  and support the AST File I/O Mechanism.
242468  */
242469  /* */
242470 
242471  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
242472  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
242473  that I use the same type everywhere, if any changes are made. THe second one declares the type
242474  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
242475  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
242476  a correspinding one in the AST_FILE_IO class!
242477  */
242478  // DQ (9/2/2015): This typedef is no longer used, we can't define the
242479  // comment here (changed to be a C style comment and not be a doxygen comment).
242480  /* \brief Typedef used for low level memory access.
242481  */
242482  // typedef unsigned char* TestType;
242483 
242484  // DQ (9/2/2015): This typedef is no longer used, we can't define the
242485  // comment here (changed to be a C style comment and not be a doxygen comment).
242486  /* \brief Typedef used to hold memory addresses as values.
242487  */
242488  // typedef unsigned long AddressType;
242489 
242490 
242491 
242492  // necessary, to have direct access to the p_freepointer and the private methods !
242494  friend class AST_FILE_IO;
242495 
242497  friend class SgGreaterOrEqualOpStorageClass;
242498 
242500  friend class AstSpecificDataManagingClass;
242501 
242503  friend class AstSpecificDataManagingClassStorageClass;
242504 
242505  public:
242507  SgGreaterOrEqualOp( const SgGreaterOrEqualOpStorageClass& source );
242508 
242509  // private: // JJW hack
242510  /*
242511  name AST Memory Allocation Support Variables
242512  Memory allocations support variables
242513 
242514  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
242515  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
242516  and support the AST File I/O Mechanism.
242517  */
242518  /* */
242519 
242520  public:
242521 
242522  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
242523  // to current node (so that it will work cleanly with build functions to specify patterns).
242524  // virtual SgNode* addRegExpAttribute();
242531 
242532 // *** COMMON CODE SECTION ENDS HERE ***
242533 
242534 
242535 // End of memberFunctionString
242536 // Start of memberFunctionString
242537 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
242538 
242539  // the generated cast function
242540  // friend ROSE_DLL_API SgGreaterOrEqualOp* isSgGreaterOrEqualOp ( SgNode* s );
242541 
242542  typedef SgBinaryOp base_node_type;
242543 
242544 
242545 // End of memberFunctionString
242546 // Start of memberFunctionString
242547 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
242548 
242549  void post_construction_initialization() override;
242550 
242551 
242552 // End of memberFunctionString
242553 // Start of memberFunctionString
242554 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
242555 
242556  int precedence() const override { return 10; }
242557 
242558 
242559 // End of memberFunctionString
242560 
242561 
242562  public:
242563  virtual ~SgGreaterOrEqualOp();
242564 
242565 
242566  public:
242567  SgGreaterOrEqualOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
242568  SgGreaterOrEqualOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
242569 
242570  protected:
242571 
242572 
242573 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
242574 
242575 
242576  };
242577 #endif
242578 
242579 // postdeclarations for SgGreaterOrEqualOp
242580 
242581 /* #line 242582 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
242582 
242583 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
242584 
242585 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
242586 
242587 
242588 /* #line 242589 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
242589 
242590 
242591 
242592 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
242593 
242594 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
242595 // This code is automatically generated for each
242596 // terminal and non-terminal within the defined
242597 // grammar. There is a simple way to change the
242598 // code to fix bugs etc. See the ROSE README file
242599 // for directions.
242600 
242601 // tps: (02/22/2010): Adding DLL export requirements
242602 #include "rosedll.h"
242603 
242604 // predeclarations for SgAddOp
242605 
242606 /* #line 242607 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
242607 
242608 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
242609 
242610 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
242611 
242612 #if 1
242613 // Class Definition for SgAddOp
242614 class ROSE_DLL_API SgAddOp : public SgBinaryOp
242615  {
242616  public:
242617 
242618 
242619 /* #line 242620 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
242620 
242621  virtual SgNode* copy ( SgCopyHelp& help) const override;
242622 // Start of memberFunctionString
242623 /* #line 852 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
242624 
242625 
242626 
242627 // End of memberFunctionString
242628 // Start of memberFunctionString
242629 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
242630 
242631 // *** COMMON CODE SECTION BEGINS HERE ***
242632 
242633  public:
242634 
242635  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
242636  // and not required which is required to match the other aspects of the copy mechanism code generation.
242637  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
242638  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
242639  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
242640  // virtual SgNode* copy ( const SgCopyHelp & help) const;
242641 
242643  virtual std::string class_name() const override;
242644 
242646  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
242647 
242649  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
242650  // static const VariantT static_variant = V_SgAddOp;
242651  enum { static_variant = V_SgAddOp };
242652 
242653  /* the generated cast function */
242655  ROSE_DLL_API friend SgAddOp* isSgAddOp( SgNode * s );
242656 
242658  ROSE_DLL_API friend const SgAddOp* isSgAddOp( const SgNode * s );
242659 
242660  // ******************************************
242661  // * Memory Pool / New / Delete
242662  // ******************************************
242663 
242664  public:
242666  static const unsigned pool_size; //
242668  static std::vector<unsigned char *> pools; //
242670  static SgAddOp * next_node; //
242671 
242673  static unsigned long initializeStorageClassArray(SgAddOpStorageClass *); //
242674 
242676  static void clearMemoryPool(); //
242677  static void deleteMemoryPool(); //
242678 
242680  static void extendMemoryPoolForFileIO(); //
242681 
242683  static SgAddOp * getPointerFromGlobalIndex(unsigned long); //
242685  static SgAddOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
242686 
242688  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
242690  static void resetValidFreepointers(); //
242692  static unsigned long getNumberOfLastValidPointer(); //
242693 
242694 
242695 #if defined(INLINE_FUNCTIONS)
242696 
242697  inline void *operator new (size_t size);
242698 #else
242699 
242700  void *operator new (size_t size);
242701 #endif
242702 
242703  void operator delete (void* pointer, size_t size);
242704 
242705  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
242706  void operator delete (void* pointer)
242707  {
242708  // This is the generated delete operator...
242709  SgAddOp::operator delete (pointer,sizeof(SgAddOp));
242710  }
242711 
242713  static size_t numberOfNodes();
242714 
242716  static size_t memoryUsage();
242717 
242718  // End of scope which started in IR nodes specific code
242719  /* */
242720 
242721  /* name Internal Functions
242722  \brief Internal functions ... incomplete-documentation
242723 
242724  These functions have been made public as part of the design, but they are suggested for internal use
242725  or by particularly knowledgeable users for specialized tools or applications.
242726 
242727  \internal We could not make these private because they are required by user for special purposes. And
242728  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
242729 
242730  */
242731 
242732  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
242733  // overridden in every class by *generated* implementation
242735  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
242736  // MS: 06/28/02 container of names of variables or container indices
242737  // used used in the traversal to access AST successor nodes
242738  // overridden in every class by *generated* implementation
242741  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
242742 
242743  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
242744  // than all the vector copies. The implementation for these functions is generated for each class.
242746  virtual size_t get_numberOfTraversalSuccessors() override;
242748  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
242750  virtual size_t get_childIndex(SgNode *child) override;
242751 
242752 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
242753  // MS: 08/16/2002 method for generating RTI information
242755  virtual RTIReturnType roseRTI() override;
242756 #endif
242757  /* */
242758 
242759 
242760 
242761  /* name Deprecated Functions
242762  \brief Deprecated functions ... incomplete-documentation
242763 
242764  These functions have been deprecated from use.
242765  */
242766  /* */
242767 
242769  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
242770 
242771  // JJW (10/16/2008): Changed to a single function in Node.code, and put
242772  // getVariant() in #if 0 block to prevent confusing Doxygen
242773 #if 0
242774 
242775  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
242777  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
242778 #endif
242779  /* */
242780 
242781 
242782 
242783 
242784  public:
242785  /* name Traversal Support Functions
242786  \brief Traversal support functions ... incomplete-documentation
242787 
242788  These functions have been made public as part of the design, but they are suggested for internal use
242789  or by particularly knowledgable users for specialized tools or applications.
242790  */
242791  /* */
242792 
242793  // DQ (11/26/2005): Support for visitor pattern mechanims
242794  // (inferior to ROSE traversal mechanism, experimental).
242798 
242799  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
242801  virtual void accept (ROSE_VisitorPattern & visitor) override;
242802 
242803  // DQ (12/26/2005): Support for traversal based on the memory pool
242806  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
242807 
242810  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
242811 
242812  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
242813  // This traversal helps support internal tools that call static member functions.
242814  // note: this function operates on the memory pools.
242817  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
242818  /* */
242819 
242820 
242821  public:
242822  /* name Memory Allocation Functions
242823  \brief Memory allocations functions ... incomplete-documentation
242824 
242825  These functions have been made public as part of the design, but they are suggested for internal use
242826  or by particularly knowledgable users for specialized tools or applications.
242827  */
242828  /* */
242829 
242840  virtual bool isInMemoryPool() override;
242841 
242852  virtual void checkDataMemberPointersIfInMemoryPool() override;
242853 
242854  // DQ (4/30/2006): Modified to be a const function.
242869  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
242870 
242880  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
242881 
242893  virtual long getChildIndex( SgNode* childNode ) const override;
242894 
242895  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
242896  // comment here (changed to be a C style comment and not be a doxygen comment).
242897  /* \brief Constructor for use by AST File I/O Mechanism
242898 
242899  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
242900  which obtained via fast binary file I/O from disk.
242901  */
242902  // SgAddOp( SgAddOpStorageClass& source );
242903 
242904 
242905 
242906 
242907 
242908  // JH (10/24/2005): methods added to support the ast file IO
242909  private:
242910 
242911  /* name AST Memory Allocation Support Functions
242912  \brief Memory allocations support....
242913 
242914  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
242915  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
242916  and support the AST File I/O Mechanism.
242917  */
242918  /* */
242919 
242920  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
242921  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
242922  that I use the same type everywhere, if any changes are made. THe second one declares the type
242923  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
242924  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
242925  a correspinding one in the AST_FILE_IO class!
242926  */
242927  // DQ (9/2/2015): This typedef is no longer used, we can't define the
242928  // comment here (changed to be a C style comment and not be a doxygen comment).
242929  /* \brief Typedef used for low level memory access.
242930  */
242931  // typedef unsigned char* TestType;
242932 
242933  // DQ (9/2/2015): This typedef is no longer used, we can't define the
242934  // comment here (changed to be a C style comment and not be a doxygen comment).
242935  /* \brief Typedef used to hold memory addresses as values.
242936  */
242937  // typedef unsigned long AddressType;
242938 
242939 
242940 
242941  // necessary, to have direct access to the p_freepointer and the private methods !
242943  friend class AST_FILE_IO;
242944 
242946  friend class SgAddOpStorageClass;
242947 
242949  friend class AstSpecificDataManagingClass;
242950 
242952  friend class AstSpecificDataManagingClassStorageClass;
242953 
242954  public:
242956  SgAddOp( const SgAddOpStorageClass& source );
242957 
242958  // private: // JJW hack
242959  /*
242960  name AST Memory Allocation Support Variables
242961  Memory allocations support variables
242962 
242963  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
242964  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
242965  and support the AST File I/O Mechanism.
242966  */
242967  /* */
242968 
242969  public:
242970 
242971  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
242972  // to current node (so that it will work cleanly with build functions to specify patterns).
242973  // virtual SgNode* addRegExpAttribute();
242979  SgAddOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
242980 
242981 // *** COMMON CODE SECTION ENDS HERE ***
242982 
242983 
242984 // End of memberFunctionString
242985 // Start of memberFunctionString
242986 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
242987 
242988  // the generated cast function
242989  // friend ROSE_DLL_API SgAddOp* isSgAddOp ( SgNode* s );
242990 
242991  typedef SgBinaryOp base_node_type;
242992 
242993 
242994 // End of memberFunctionString
242995 // Start of memberFunctionString
242996 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
242997 
242998  void post_construction_initialization() override;
242999 
243000 
243001 // End of memberFunctionString
243002 // Start of memberFunctionString
243003 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
243004 
243005  int precedence() const override { return 12; }
243006 
243007 
243008 // End of memberFunctionString
243009 
243010 
243011  public:
243012  virtual ~SgAddOp();
243013 
243014 
243015  public:
243016  SgAddOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
243017  SgAddOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
243018 
243019  protected:
243020 
243021 
243022 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
243023 
243024 
243025  };
243026 #endif
243027 
243028 // postdeclarations for SgAddOp
243029 
243030 /* #line 243031 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
243031 
243032 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
243033 
243034 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
243035 
243036 
243037 /* #line 243038 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
243038 
243039 
243040 
243041 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
243042 
243043 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
243044 // This code is automatically generated for each
243045 // terminal and non-terminal within the defined
243046 // grammar. There is a simple way to change the
243047 // code to fix bugs etc. See the ROSE README file
243048 // for directions.
243049 
243050 // tps: (02/22/2010): Adding DLL export requirements
243051 #include "rosedll.h"
243052 
243053 // predeclarations for SgSubtractOp
243054 
243055 /* #line 243056 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
243056 
243057 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
243058 
243059 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
243060 
243061 #if 1
243062 // Class Definition for SgSubtractOp
243063 class ROSE_DLL_API SgSubtractOp : public SgBinaryOp
243064  {
243065  public:
243066 
243067 
243068 /* #line 243069 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
243069 
243070  virtual SgNode* copy ( SgCopyHelp& help) const override;
243071 // Start of memberFunctionString
243072 /* #line 855 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
243073 
243074 
243075 
243076 // End of memberFunctionString
243077 // Start of memberFunctionString
243078 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
243079 
243080 // *** COMMON CODE SECTION BEGINS HERE ***
243081 
243082  public:
243083 
243084  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
243085  // and not required which is required to match the other aspects of the copy mechanism code generation.
243086  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
243087  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
243088  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
243089  // virtual SgNode* copy ( const SgCopyHelp & help) const;
243090 
243092  virtual std::string class_name() const override;
243093 
243095  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
243096 
243098  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
243099  // static const VariantT static_variant = V_SgSubtractOp;
243100  enum { static_variant = V_SgSubtractOp };
243101 
243102  /* the generated cast function */
243104  ROSE_DLL_API friend SgSubtractOp* isSgSubtractOp( SgNode * s );
243105 
243107  ROSE_DLL_API friend const SgSubtractOp* isSgSubtractOp( const SgNode * s );
243108 
243109  // ******************************************
243110  // * Memory Pool / New / Delete
243111  // ******************************************
243112 
243113  public:
243115  static const unsigned pool_size; //
243117  static std::vector<unsigned char *> pools; //
243119  static SgSubtractOp * next_node; //
243120 
243122  static unsigned long initializeStorageClassArray(SgSubtractOpStorageClass *); //
243123 
243125  static void clearMemoryPool(); //
243126  static void deleteMemoryPool(); //
243127 
243129  static void extendMemoryPoolForFileIO(); //
243130 
243132  static SgSubtractOp * getPointerFromGlobalIndex(unsigned long); //
243134  static SgSubtractOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
243135 
243137  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
243139  static void resetValidFreepointers(); //
243141  static unsigned long getNumberOfLastValidPointer(); //
243142 
243143 
243144 #if defined(INLINE_FUNCTIONS)
243145 
243146  inline void *operator new (size_t size);
243147 #else
243148 
243149  void *operator new (size_t size);
243150 #endif
243151 
243152  void operator delete (void* pointer, size_t size);
243153 
243154  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
243155  void operator delete (void* pointer)
243156  {
243157  // This is the generated delete operator...
243158  SgSubtractOp::operator delete (pointer,sizeof(SgSubtractOp));
243159  }
243160 
243162  static size_t numberOfNodes();
243163 
243165  static size_t memoryUsage();
243166 
243167  // End of scope which started in IR nodes specific code
243168  /* */
243169 
243170  /* name Internal Functions
243171  \brief Internal functions ... incomplete-documentation
243172 
243173  These functions have been made public as part of the design, but they are suggested for internal use
243174  or by particularly knowledgeable users for specialized tools or applications.
243175 
243176  \internal We could not make these private because they are required by user for special purposes. And
243177  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
243178 
243179  */
243180 
243181  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
243182  // overridden in every class by *generated* implementation
243184  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
243185  // MS: 06/28/02 container of names of variables or container indices
243186  // used used in the traversal to access AST successor nodes
243187  // overridden in every class by *generated* implementation
243190  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
243191 
243192  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
243193  // than all the vector copies. The implementation for these functions is generated for each class.
243195  virtual size_t get_numberOfTraversalSuccessors() override;
243197  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
243199  virtual size_t get_childIndex(SgNode *child) override;
243200 
243201 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
243202  // MS: 08/16/2002 method for generating RTI information
243204  virtual RTIReturnType roseRTI() override;
243205 #endif
243206  /* */
243207 
243208 
243209 
243210  /* name Deprecated Functions
243211  \brief Deprecated functions ... incomplete-documentation
243212 
243213  These functions have been deprecated from use.
243214  */
243215  /* */
243216 
243218  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
243219 
243220  // JJW (10/16/2008): Changed to a single function in Node.code, and put
243221  // getVariant() in #if 0 block to prevent confusing Doxygen
243222 #if 0
243223 
243224  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
243226  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
243227 #endif
243228  /* */
243229 
243230 
243231 
243232 
243233  public:
243234  /* name Traversal Support Functions
243235  \brief Traversal support functions ... incomplete-documentation
243236 
243237  These functions have been made public as part of the design, but they are suggested for internal use
243238  or by particularly knowledgable users for specialized tools or applications.
243239  */
243240  /* */
243241 
243242  // DQ (11/26/2005): Support for visitor pattern mechanims
243243  // (inferior to ROSE traversal mechanism, experimental).
243247 
243248  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
243250  virtual void accept (ROSE_VisitorPattern & visitor) override;
243251 
243252  // DQ (12/26/2005): Support for traversal based on the memory pool
243255  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
243256 
243259  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
243260 
243261  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
243262  // This traversal helps support internal tools that call static member functions.
243263  // note: this function operates on the memory pools.
243266  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
243267  /* */
243268 
243269 
243270  public:
243271  /* name Memory Allocation Functions
243272  \brief Memory allocations functions ... incomplete-documentation
243273 
243274  These functions have been made public as part of the design, but they are suggested for internal use
243275  or by particularly knowledgable users for specialized tools or applications.
243276  */
243277  /* */
243278 
243289  virtual bool isInMemoryPool() override;
243290 
243301  virtual void checkDataMemberPointersIfInMemoryPool() override;
243302 
243303  // DQ (4/30/2006): Modified to be a const function.
243318  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
243319 
243329  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
243330 
243342  virtual long getChildIndex( SgNode* childNode ) const override;
243343 
243344  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
243345  // comment here (changed to be a C style comment and not be a doxygen comment).
243346  /* \brief Constructor for use by AST File I/O Mechanism
243347 
243348  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
243349  which obtained via fast binary file I/O from disk.
243350  */
243351  // SgSubtractOp( SgSubtractOpStorageClass& source );
243352 
243353 
243354 
243355 
243356 
243357  // JH (10/24/2005): methods added to support the ast file IO
243358  private:
243359 
243360  /* name AST Memory Allocation Support Functions
243361  \brief Memory allocations support....
243362 
243363  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
243364  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
243365  and support the AST File I/O Mechanism.
243366  */
243367  /* */
243368 
243369  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
243370  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
243371  that I use the same type everywhere, if any changes are made. THe second one declares the type
243372  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
243373  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
243374  a correspinding one in the AST_FILE_IO class!
243375  */
243376  // DQ (9/2/2015): This typedef is no longer used, we can't define the
243377  // comment here (changed to be a C style comment and not be a doxygen comment).
243378  /* \brief Typedef used for low level memory access.
243379  */
243380  // typedef unsigned char* TestType;
243381 
243382  // DQ (9/2/2015): This typedef is no longer used, we can't define the
243383  // comment here (changed to be a C style comment and not be a doxygen comment).
243384  /* \brief Typedef used to hold memory addresses as values.
243385  */
243386  // typedef unsigned long AddressType;
243387 
243388 
243389 
243390  // necessary, to have direct access to the p_freepointer and the private methods !
243392  friend class AST_FILE_IO;
243393 
243395  friend class SgSubtractOpStorageClass;
243396 
243398  friend class AstSpecificDataManagingClass;
243399 
243401  friend class AstSpecificDataManagingClassStorageClass;
243402 
243403  public:
243405  SgSubtractOp( const SgSubtractOpStorageClass& source );
243406 
243407  // private: // JJW hack
243408  /*
243409  name AST Memory Allocation Support Variables
243410  Memory allocations support variables
243411 
243412  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
243413  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
243414  and support the AST File I/O Mechanism.
243415  */
243416  /* */
243417 
243418  public:
243419 
243420  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
243421  // to current node (so that it will work cleanly with build functions to specify patterns).
243422  // virtual SgNode* addRegExpAttribute();
243428  SgSubtractOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
243429 
243430 // *** COMMON CODE SECTION ENDS HERE ***
243431 
243432 
243433 // End of memberFunctionString
243434 // Start of memberFunctionString
243435 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
243436 
243437  // the generated cast function
243438  // friend ROSE_DLL_API SgSubtractOp* isSgSubtractOp ( SgNode* s );
243439 
243440  typedef SgBinaryOp base_node_type;
243441 
243442 
243443 // End of memberFunctionString
243444 // Start of memberFunctionString
243445 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
243446 
243447  void post_construction_initialization() override;
243448 
243449 
243450 // End of memberFunctionString
243451 // Start of memberFunctionString
243452 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
243453 
243454  int precedence() const override { return 12; }
243455 
243456 
243457 // End of memberFunctionString
243458 
243459 
243460  public:
243461  virtual ~SgSubtractOp();
243462 
243463 
243464  public:
243465  SgSubtractOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
243466  SgSubtractOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
243467 
243468  protected:
243469 
243470 
243471 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
243472 
243473 
243474  };
243475 #endif
243476 
243477 // postdeclarations for SgSubtractOp
243478 
243479 /* #line 243480 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
243480 
243481 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
243482 
243483 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
243484 
243485 
243486 /* #line 243487 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
243487 
243488 
243489 
243490 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
243491 
243492 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
243493 // This code is automatically generated for each
243494 // terminal and non-terminal within the defined
243495 // grammar. There is a simple way to change the
243496 // code to fix bugs etc. See the ROSE README file
243497 // for directions.
243498 
243499 // tps: (02/22/2010): Adding DLL export requirements
243500 #include "rosedll.h"
243501 
243502 // predeclarations for SgMultiplyOp
243503 
243504 /* #line 243505 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
243505 
243506 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
243507 
243508 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
243509 
243510 #if 1
243511 // Class Definition for SgMultiplyOp
243512 class ROSE_DLL_API SgMultiplyOp : public SgBinaryOp
243513  {
243514  public:
243515 
243516 
243517 /* #line 243518 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
243518 
243519  virtual SgNode* copy ( SgCopyHelp& help) const override;
243520 // Start of memberFunctionString
243521 /* #line 859 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
243522 
243523 
243524 
243525 // End of memberFunctionString
243526 // Start of memberFunctionString
243527 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
243528 
243529 // *** COMMON CODE SECTION BEGINS HERE ***
243530 
243531  public:
243532 
243533  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
243534  // and not required which is required to match the other aspects of the copy mechanism code generation.
243535  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
243536  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
243537  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
243538  // virtual SgNode* copy ( const SgCopyHelp & help) const;
243539 
243541  virtual std::string class_name() const override;
243542 
243544  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
243545 
243547  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
243548  // static const VariantT static_variant = V_SgMultiplyOp;
243549  enum { static_variant = V_SgMultiplyOp };
243550 
243551  /* the generated cast function */
243553  ROSE_DLL_API friend SgMultiplyOp* isSgMultiplyOp( SgNode * s );
243554 
243556  ROSE_DLL_API friend const SgMultiplyOp* isSgMultiplyOp( const SgNode * s );
243557 
243558  // ******************************************
243559  // * Memory Pool / New / Delete
243560  // ******************************************
243561 
243562  public:
243564  static const unsigned pool_size; //
243566  static std::vector<unsigned char *> pools; //
243568  static SgMultiplyOp * next_node; //
243569 
243571  static unsigned long initializeStorageClassArray(SgMultiplyOpStorageClass *); //
243572 
243574  static void clearMemoryPool(); //
243575  static void deleteMemoryPool(); //
243576 
243578  static void extendMemoryPoolForFileIO(); //
243579 
243581  static SgMultiplyOp * getPointerFromGlobalIndex(unsigned long); //
243583  static SgMultiplyOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
243584 
243586  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
243588  static void resetValidFreepointers(); //
243590  static unsigned long getNumberOfLastValidPointer(); //
243591 
243592 
243593 #if defined(INLINE_FUNCTIONS)
243594 
243595  inline void *operator new (size_t size);
243596 #else
243597 
243598  void *operator new (size_t size);
243599 #endif
243600 
243601  void operator delete (void* pointer, size_t size);
243602 
243603  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
243604  void operator delete (void* pointer)
243605  {
243606  // This is the generated delete operator...
243607  SgMultiplyOp::operator delete (pointer,sizeof(SgMultiplyOp));
243608  }
243609 
243611  static size_t numberOfNodes();
243612 
243614  static size_t memoryUsage();
243615 
243616  // End of scope which started in IR nodes specific code
243617  /* */
243618 
243619  /* name Internal Functions
243620  \brief Internal functions ... incomplete-documentation
243621 
243622  These functions have been made public as part of the design, but they are suggested for internal use
243623  or by particularly knowledgeable users for specialized tools or applications.
243624 
243625  \internal We could not make these private because they are required by user for special purposes. And
243626  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
243627 
243628  */
243629 
243630  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
243631  // overridden in every class by *generated* implementation
243633  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
243634  // MS: 06/28/02 container of names of variables or container indices
243635  // used used in the traversal to access AST successor nodes
243636  // overridden in every class by *generated* implementation
243639  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
243640 
243641  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
243642  // than all the vector copies. The implementation for these functions is generated for each class.
243644  virtual size_t get_numberOfTraversalSuccessors() override;
243646  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
243648  virtual size_t get_childIndex(SgNode *child) override;
243649 
243650 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
243651  // MS: 08/16/2002 method for generating RTI information
243653  virtual RTIReturnType roseRTI() override;
243654 #endif
243655  /* */
243656 
243657 
243658 
243659  /* name Deprecated Functions
243660  \brief Deprecated functions ... incomplete-documentation
243661 
243662  These functions have been deprecated from use.
243663  */
243664  /* */
243665 
243667  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
243668 
243669  // JJW (10/16/2008): Changed to a single function in Node.code, and put
243670  // getVariant() in #if 0 block to prevent confusing Doxygen
243671 #if 0
243672 
243673  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
243675  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
243676 #endif
243677  /* */
243678 
243679 
243680 
243681 
243682  public:
243683  /* name Traversal Support Functions
243684  \brief Traversal support functions ... incomplete-documentation
243685 
243686  These functions have been made public as part of the design, but they are suggested for internal use
243687  or by particularly knowledgable users for specialized tools or applications.
243688  */
243689  /* */
243690 
243691  // DQ (11/26/2005): Support for visitor pattern mechanims
243692  // (inferior to ROSE traversal mechanism, experimental).
243696 
243697  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
243699  virtual void accept (ROSE_VisitorPattern & visitor) override;
243700 
243701  // DQ (12/26/2005): Support for traversal based on the memory pool
243704  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
243705 
243708  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
243709 
243710  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
243711  // This traversal helps support internal tools that call static member functions.
243712  // note: this function operates on the memory pools.
243715  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
243716  /* */
243717 
243718 
243719  public:
243720  /* name Memory Allocation Functions
243721  \brief Memory allocations functions ... incomplete-documentation
243722 
243723  These functions have been made public as part of the design, but they are suggested for internal use
243724  or by particularly knowledgable users for specialized tools or applications.
243725  */
243726  /* */
243727 
243738  virtual bool isInMemoryPool() override;
243739 
243750  virtual void checkDataMemberPointersIfInMemoryPool() override;
243751 
243752  // DQ (4/30/2006): Modified to be a const function.
243767  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
243768 
243778  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
243779 
243791  virtual long getChildIndex( SgNode* childNode ) const override;
243792 
243793  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
243794  // comment here (changed to be a C style comment and not be a doxygen comment).
243795  /* \brief Constructor for use by AST File I/O Mechanism
243796 
243797  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
243798  which obtained via fast binary file I/O from disk.
243799  */
243800  // SgMultiplyOp( SgMultiplyOpStorageClass& source );
243801 
243802 
243803 
243804 
243805 
243806  // JH (10/24/2005): methods added to support the ast file IO
243807  private:
243808 
243809  /* name AST Memory Allocation Support Functions
243810  \brief Memory allocations support....
243811 
243812  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
243813  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
243814  and support the AST File I/O Mechanism.
243815  */
243816  /* */
243817 
243818  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
243819  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
243820  that I use the same type everywhere, if any changes are made. THe second one declares the type
243821  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
243822  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
243823  a correspinding one in the AST_FILE_IO class!
243824  */
243825  // DQ (9/2/2015): This typedef is no longer used, we can't define the
243826  // comment here (changed to be a C style comment and not be a doxygen comment).
243827  /* \brief Typedef used for low level memory access.
243828  */
243829  // typedef unsigned char* TestType;
243830 
243831  // DQ (9/2/2015): This typedef is no longer used, we can't define the
243832  // comment here (changed to be a C style comment and not be a doxygen comment).
243833  /* \brief Typedef used to hold memory addresses as values.
243834  */
243835  // typedef unsigned long AddressType;
243836 
243837 
243838 
243839  // necessary, to have direct access to the p_freepointer and the private methods !
243841  friend class AST_FILE_IO;
243842 
243844  friend class SgMultiplyOpStorageClass;
243845 
243847  friend class AstSpecificDataManagingClass;
243848 
243850  friend class AstSpecificDataManagingClassStorageClass;
243851 
243852  public:
243854  SgMultiplyOp( const SgMultiplyOpStorageClass& source );
243855 
243856  // private: // JJW hack
243857  /*
243858  name AST Memory Allocation Support Variables
243859  Memory allocations support variables
243860 
243861  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
243862  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
243863  and support the AST File I/O Mechanism.
243864  */
243865  /* */
243866 
243867  public:
243868 
243869  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
243870  // to current node (so that it will work cleanly with build functions to specify patterns).
243871  // virtual SgNode* addRegExpAttribute();
243877  SgMultiplyOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
243878 
243879 // *** COMMON CODE SECTION ENDS HERE ***
243880 
243881 
243882 // End of memberFunctionString
243883 // Start of memberFunctionString
243884 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
243885 
243886  // the generated cast function
243887  // friend ROSE_DLL_API SgMultiplyOp* isSgMultiplyOp ( SgNode* s );
243888 
243889  typedef SgBinaryOp base_node_type;
243890 
243891 
243892 // End of memberFunctionString
243893 // Start of memberFunctionString
243894 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
243895 
243896  void post_construction_initialization() override;
243897 
243898 
243899 // End of memberFunctionString
243900 // Start of memberFunctionString
243901 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
243902 
243903  int precedence() const override { return 13; }
243904 
243905 
243906 // End of memberFunctionString
243907 
243908 
243909  public:
243910  virtual ~SgMultiplyOp();
243911 
243912 
243913  public:
243914  SgMultiplyOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
243915  SgMultiplyOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
243916 
243917  protected:
243918 
243919 
243920 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
243921 
243922 
243923  };
243924 #endif
243925 
243926 // postdeclarations for SgMultiplyOp
243927 
243928 /* #line 243929 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
243929 
243930 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
243931 
243932 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
243933 
243934 
243935 /* #line 243936 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
243936 
243937 
243938 
243939 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
243940 
243941 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
243942 // This code is automatically generated for each
243943 // terminal and non-terminal within the defined
243944 // grammar. There is a simple way to change the
243945 // code to fix bugs etc. See the ROSE README file
243946 // for directions.
243947 
243948 // tps: (02/22/2010): Adding DLL export requirements
243949 #include "rosedll.h"
243950 
243951 // predeclarations for SgDivideOp
243952 
243953 /* #line 243954 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
243954 
243955 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
243956 
243957 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
243958 
243959 #if 1
243960 // Class Definition for SgDivideOp
243961 class ROSE_DLL_API SgDivideOp : public SgBinaryOp
243962  {
243963  public:
243964 
243965 
243966 /* #line 243967 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
243967 
243968  virtual SgNode* copy ( SgCopyHelp& help) const override;
243969 // Start of memberFunctionString
243970 /* #line 863 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
243971 
243972 
243973 
243974 // End of memberFunctionString
243975 // Start of memberFunctionString
243976 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
243977 
243978 // *** COMMON CODE SECTION BEGINS HERE ***
243979 
243980  public:
243981 
243982  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
243983  // and not required which is required to match the other aspects of the copy mechanism code generation.
243984  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
243985  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
243986  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
243987  // virtual SgNode* copy ( const SgCopyHelp & help) const;
243988 
243990  virtual std::string class_name() const override;
243991 
243993  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
243994 
243996  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
243997  // static const VariantT static_variant = V_SgDivideOp;
243998  enum { static_variant = V_SgDivideOp };
243999 
244000  /* the generated cast function */
244002  ROSE_DLL_API friend SgDivideOp* isSgDivideOp( SgNode * s );
244003 
244005  ROSE_DLL_API friend const SgDivideOp* isSgDivideOp( const SgNode * s );
244006 
244007  // ******************************************
244008  // * Memory Pool / New / Delete
244009  // ******************************************
244010 
244011  public:
244013  static const unsigned pool_size; //
244015  static std::vector<unsigned char *> pools; //
244017  static SgDivideOp * next_node; //
244018 
244020  static unsigned long initializeStorageClassArray(SgDivideOpStorageClass *); //
244021 
244023  static void clearMemoryPool(); //
244024  static void deleteMemoryPool(); //
244025 
244027  static void extendMemoryPoolForFileIO(); //
244028 
244030  static SgDivideOp * getPointerFromGlobalIndex(unsigned long); //
244032  static SgDivideOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
244033 
244035  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
244037  static void resetValidFreepointers(); //
244039  static unsigned long getNumberOfLastValidPointer(); //
244040 
244041 
244042 #if defined(INLINE_FUNCTIONS)
244043 
244044  inline void *operator new (size_t size);
244045 #else
244046 
244047  void *operator new (size_t size);
244048 #endif
244049 
244050  void operator delete (void* pointer, size_t size);
244051 
244052  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
244053  void operator delete (void* pointer)
244054  {
244055  // This is the generated delete operator...
244056  SgDivideOp::operator delete (pointer,sizeof(SgDivideOp));
244057  }
244058 
244060  static size_t numberOfNodes();
244061 
244063  static size_t memoryUsage();
244064 
244065  // End of scope which started in IR nodes specific code
244066  /* */
244067 
244068  /* name Internal Functions
244069  \brief Internal functions ... incomplete-documentation
244070 
244071  These functions have been made public as part of the design, but they are suggested for internal use
244072  or by particularly knowledgeable users for specialized tools or applications.
244073 
244074  \internal We could not make these private because they are required by user for special purposes. And
244075  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
244076 
244077  */
244078 
244079  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
244080  // overridden in every class by *generated* implementation
244082  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
244083  // MS: 06/28/02 container of names of variables or container indices
244084  // used used in the traversal to access AST successor nodes
244085  // overridden in every class by *generated* implementation
244088  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
244089 
244090  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
244091  // than all the vector copies. The implementation for these functions is generated for each class.
244093  virtual size_t get_numberOfTraversalSuccessors() override;
244095  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
244097  virtual size_t get_childIndex(SgNode *child) override;
244098 
244099 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
244100  // MS: 08/16/2002 method for generating RTI information
244102  virtual RTIReturnType roseRTI() override;
244103 #endif
244104  /* */
244105 
244106 
244107 
244108  /* name Deprecated Functions
244109  \brief Deprecated functions ... incomplete-documentation
244110 
244111  These functions have been deprecated from use.
244112  */
244113  /* */
244114 
244116  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
244117 
244118  // JJW (10/16/2008): Changed to a single function in Node.code, and put
244119  // getVariant() in #if 0 block to prevent confusing Doxygen
244120 #if 0
244121 
244122  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
244124  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
244125 #endif
244126  /* */
244127 
244128 
244129 
244130 
244131  public:
244132  /* name Traversal Support Functions
244133  \brief Traversal support functions ... incomplete-documentation
244134 
244135  These functions have been made public as part of the design, but they are suggested for internal use
244136  or by particularly knowledgable users for specialized tools or applications.
244137  */
244138  /* */
244139 
244140  // DQ (11/26/2005): Support for visitor pattern mechanims
244141  // (inferior to ROSE traversal mechanism, experimental).
244145 
244146  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
244148  virtual void accept (ROSE_VisitorPattern & visitor) override;
244149 
244150  // DQ (12/26/2005): Support for traversal based on the memory pool
244153  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
244154 
244157  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
244158 
244159  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
244160  // This traversal helps support internal tools that call static member functions.
244161  // note: this function operates on the memory pools.
244164  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
244165  /* */
244166 
244167 
244168  public:
244169  /* name Memory Allocation Functions
244170  \brief Memory allocations functions ... incomplete-documentation
244171 
244172  These functions have been made public as part of the design, but they are suggested for internal use
244173  or by particularly knowledgable users for specialized tools or applications.
244174  */
244175  /* */
244176 
244187  virtual bool isInMemoryPool() override;
244188 
244199  virtual void checkDataMemberPointersIfInMemoryPool() override;
244200 
244201  // DQ (4/30/2006): Modified to be a const function.
244216  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
244217 
244227  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
244228 
244240  virtual long getChildIndex( SgNode* childNode ) const override;
244241 
244242  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
244243  // comment here (changed to be a C style comment and not be a doxygen comment).
244244  /* \brief Constructor for use by AST File I/O Mechanism
244245 
244246  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
244247  which obtained via fast binary file I/O from disk.
244248  */
244249  // SgDivideOp( SgDivideOpStorageClass& source );
244250 
244251 
244252 
244253 
244254 
244255  // JH (10/24/2005): methods added to support the ast file IO
244256  private:
244257 
244258  /* name AST Memory Allocation Support Functions
244259  \brief Memory allocations support....
244260 
244261  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
244262  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
244263  and support the AST File I/O Mechanism.
244264  */
244265  /* */
244266 
244267  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
244268  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
244269  that I use the same type everywhere, if any changes are made. THe second one declares the type
244270  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
244271  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
244272  a correspinding one in the AST_FILE_IO class!
244273  */
244274  // DQ (9/2/2015): This typedef is no longer used, we can't define the
244275  // comment here (changed to be a C style comment and not be a doxygen comment).
244276  /* \brief Typedef used for low level memory access.
244277  */
244278  // typedef unsigned char* TestType;
244279 
244280  // DQ (9/2/2015): This typedef is no longer used, we can't define the
244281  // comment here (changed to be a C style comment and not be a doxygen comment).
244282  /* \brief Typedef used to hold memory addresses as values.
244283  */
244284  // typedef unsigned long AddressType;
244285 
244286 
244287 
244288  // necessary, to have direct access to the p_freepointer and the private methods !
244290  friend class AST_FILE_IO;
244291 
244293  friend class SgDivideOpStorageClass;
244294 
244296  friend class AstSpecificDataManagingClass;
244297 
244299  friend class AstSpecificDataManagingClassStorageClass;
244300 
244301  public:
244303  SgDivideOp( const SgDivideOpStorageClass& source );
244304 
244305  // private: // JJW hack
244306  /*
244307  name AST Memory Allocation Support Variables
244308  Memory allocations support variables
244309 
244310  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
244311  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
244312  and support the AST File I/O Mechanism.
244313  */
244314  /* */
244315 
244316  public:
244317 
244318  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
244319  // to current node (so that it will work cleanly with build functions to specify patterns).
244320  // virtual SgNode* addRegExpAttribute();
244326  SgDivideOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
244327 
244328 // *** COMMON CODE SECTION ENDS HERE ***
244329 
244330 
244331 // End of memberFunctionString
244332 // Start of memberFunctionString
244333 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
244334 
244335  // the generated cast function
244336  // friend ROSE_DLL_API SgDivideOp* isSgDivideOp ( SgNode* s );
244337 
244338  typedef SgBinaryOp base_node_type;
244339 
244340 
244341 // End of memberFunctionString
244342 // Start of memberFunctionString
244343 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
244344 
244345  void post_construction_initialization() override;
244346 
244347 
244348 // End of memberFunctionString
244349 // Start of memberFunctionString
244350 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
244351 
244352  int precedence() const override { return 13; }
244353 
244354 
244355 // End of memberFunctionString
244356 
244357 
244358  public:
244359  virtual ~SgDivideOp();
244360 
244361 
244362  public:
244363  SgDivideOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
244364  SgDivideOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
244365 
244366  protected:
244367 
244368 
244369 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
244370 
244371 
244372  };
244373 #endif
244374 
244375 // postdeclarations for SgDivideOp
244376 
244377 /* #line 244378 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
244378 
244379 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
244380 
244381 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
244382 
244383 
244384 /* #line 244385 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
244385 
244386 
244387 
244388 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
244389 
244390 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
244391 // This code is automatically generated for each
244392 // terminal and non-terminal within the defined
244393 // grammar. There is a simple way to change the
244394 // code to fix bugs etc. See the ROSE README file
244395 // for directions.
244396 
244397 // tps: (02/22/2010): Adding DLL export requirements
244398 #include "rosedll.h"
244399 
244400 // predeclarations for SgIntegerDivideOp
244401 
244402 /* #line 244403 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
244403 
244404 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
244405 
244406 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
244407 
244408 #if 1
244409 // Class Definition for SgIntegerDivideOp
244410 class ROSE_DLL_API SgIntegerDivideOp : public SgBinaryOp
244411  {
244412  public:
244413 
244414 
244415 /* #line 244416 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
244416 
244417  virtual SgNode* copy ( SgCopyHelp& help) const override;
244418 // Start of memberFunctionString
244419 /* #line 867 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
244420 
244421 
244422 
244423 // End of memberFunctionString
244424 // Start of memberFunctionString
244425 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
244426 
244427 // *** COMMON CODE SECTION BEGINS HERE ***
244428 
244429  public:
244430 
244431  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
244432  // and not required which is required to match the other aspects of the copy mechanism code generation.
244433  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
244434  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
244435  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
244436  // virtual SgNode* copy ( const SgCopyHelp & help) const;
244437 
244439  virtual std::string class_name() const override;
244440 
244442  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
244443 
244445  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
244446  // static const VariantT static_variant = V_SgIntegerDivideOp;
244447  enum { static_variant = V_SgIntegerDivideOp };
244448 
244449  /* the generated cast function */
244451  ROSE_DLL_API friend SgIntegerDivideOp* isSgIntegerDivideOp( SgNode * s );
244452 
244454  ROSE_DLL_API friend const SgIntegerDivideOp* isSgIntegerDivideOp( const SgNode * s );
244455 
244456  // ******************************************
244457  // * Memory Pool / New / Delete
244458  // ******************************************
244459 
244460  public:
244462  static const unsigned pool_size; //
244464  static std::vector<unsigned char *> pools; //
244466  static SgIntegerDivideOp * next_node; //
244467 
244469  static unsigned long initializeStorageClassArray(SgIntegerDivideOpStorageClass *); //
244470 
244472  static void clearMemoryPool(); //
244473  static void deleteMemoryPool(); //
244474 
244476  static void extendMemoryPoolForFileIO(); //
244477 
244479  static SgIntegerDivideOp * getPointerFromGlobalIndex(unsigned long); //
244481  static SgIntegerDivideOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
244482 
244484  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
244486  static void resetValidFreepointers(); //
244488  static unsigned long getNumberOfLastValidPointer(); //
244489 
244490 
244491 #if defined(INLINE_FUNCTIONS)
244492 
244493  inline void *operator new (size_t size);
244494 #else
244495 
244496  void *operator new (size_t size);
244497 #endif
244498 
244499  void operator delete (void* pointer, size_t size);
244500 
244501  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
244502  void operator delete (void* pointer)
244503  {
244504  // This is the generated delete operator...
244505  SgIntegerDivideOp::operator delete (pointer,sizeof(SgIntegerDivideOp));
244506  }
244507 
244509  static size_t numberOfNodes();
244510 
244512  static size_t memoryUsage();
244513 
244514  // End of scope which started in IR nodes specific code
244515  /* */
244516 
244517  /* name Internal Functions
244518  \brief Internal functions ... incomplete-documentation
244519 
244520  These functions have been made public as part of the design, but they are suggested for internal use
244521  or by particularly knowledgeable users for specialized tools or applications.
244522 
244523  \internal We could not make these private because they are required by user for special purposes. And
244524  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
244525 
244526  */
244527 
244528  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
244529  // overridden in every class by *generated* implementation
244531  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
244532  // MS: 06/28/02 container of names of variables or container indices
244533  // used used in the traversal to access AST successor nodes
244534  // overridden in every class by *generated* implementation
244537  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
244538 
244539  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
244540  // than all the vector copies. The implementation for these functions is generated for each class.
244542  virtual size_t get_numberOfTraversalSuccessors() override;
244544  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
244546  virtual size_t get_childIndex(SgNode *child) override;
244547 
244548 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
244549  // MS: 08/16/2002 method for generating RTI information
244551  virtual RTIReturnType roseRTI() override;
244552 #endif
244553  /* */
244554 
244555 
244556 
244557  /* name Deprecated Functions
244558  \brief Deprecated functions ... incomplete-documentation
244559 
244560  These functions have been deprecated from use.
244561  */
244562  /* */
244563 
244565  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
244566 
244567  // JJW (10/16/2008): Changed to a single function in Node.code, and put
244568  // getVariant() in #if 0 block to prevent confusing Doxygen
244569 #if 0
244570 
244571  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
244573  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
244574 #endif
244575  /* */
244576 
244577 
244578 
244579 
244580  public:
244581  /* name Traversal Support Functions
244582  \brief Traversal support functions ... incomplete-documentation
244583 
244584  These functions have been made public as part of the design, but they are suggested for internal use
244585  or by particularly knowledgable users for specialized tools or applications.
244586  */
244587  /* */
244588 
244589  // DQ (11/26/2005): Support for visitor pattern mechanims
244590  // (inferior to ROSE traversal mechanism, experimental).
244594 
244595  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
244597  virtual void accept (ROSE_VisitorPattern & visitor) override;
244598 
244599  // DQ (12/26/2005): Support for traversal based on the memory pool
244602  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
244603 
244606  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
244607 
244608  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
244609  // This traversal helps support internal tools that call static member functions.
244610  // note: this function operates on the memory pools.
244613  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
244614  /* */
244615 
244616 
244617  public:
244618  /* name Memory Allocation Functions
244619  \brief Memory allocations functions ... incomplete-documentation
244620 
244621  These functions have been made public as part of the design, but they are suggested for internal use
244622  or by particularly knowledgable users for specialized tools or applications.
244623  */
244624  /* */
244625 
244636  virtual bool isInMemoryPool() override;
244637 
244648  virtual void checkDataMemberPointersIfInMemoryPool() override;
244649 
244650  // DQ (4/30/2006): Modified to be a const function.
244665  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
244666 
244676  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
244677 
244689  virtual long getChildIndex( SgNode* childNode ) const override;
244690 
244691  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
244692  // comment here (changed to be a C style comment and not be a doxygen comment).
244693  /* \brief Constructor for use by AST File I/O Mechanism
244694 
244695  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
244696  which obtained via fast binary file I/O from disk.
244697  */
244698  // SgIntegerDivideOp( SgIntegerDivideOpStorageClass& source );
244699 
244700 
244701 
244702 
244703 
244704  // JH (10/24/2005): methods added to support the ast file IO
244705  private:
244706 
244707  /* name AST Memory Allocation Support Functions
244708  \brief Memory allocations support....
244709 
244710  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
244711  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
244712  and support the AST File I/O Mechanism.
244713  */
244714  /* */
244715 
244716  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
244717  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
244718  that I use the same type everywhere, if any changes are made. THe second one declares the type
244719  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
244720  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
244721  a correspinding one in the AST_FILE_IO class!
244722  */
244723  // DQ (9/2/2015): This typedef is no longer used, we can't define the
244724  // comment here (changed to be a C style comment and not be a doxygen comment).
244725  /* \brief Typedef used for low level memory access.
244726  */
244727  // typedef unsigned char* TestType;
244728 
244729  // DQ (9/2/2015): This typedef is no longer used, we can't define the
244730  // comment here (changed to be a C style comment and not be a doxygen comment).
244731  /* \brief Typedef used to hold memory addresses as values.
244732  */
244733  // typedef unsigned long AddressType;
244734 
244735 
244736 
244737  // necessary, to have direct access to the p_freepointer and the private methods !
244739  friend class AST_FILE_IO;
244740 
244742  friend class SgIntegerDivideOpStorageClass;
244743 
244745  friend class AstSpecificDataManagingClass;
244746 
244748  friend class AstSpecificDataManagingClassStorageClass;
244749 
244750  public:
244752  SgIntegerDivideOp( const SgIntegerDivideOpStorageClass& source );
244753 
244754  // private: // JJW hack
244755  /*
244756  name AST Memory Allocation Support Variables
244757  Memory allocations support variables
244758 
244759  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
244760  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
244761  and support the AST File I/O Mechanism.
244762  */
244763  /* */
244764 
244765  public:
244766 
244767  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
244768  // to current node (so that it will work cleanly with build functions to specify patterns).
244769  // virtual SgNode* addRegExpAttribute();
244776 
244777 // *** COMMON CODE SECTION ENDS HERE ***
244778 
244779 
244780 // End of memberFunctionString
244781 // Start of memberFunctionString
244782 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
244783 
244784  // the generated cast function
244785  // friend ROSE_DLL_API SgIntegerDivideOp* isSgIntegerDivideOp ( SgNode* s );
244786 
244787  typedef SgBinaryOp base_node_type;
244788 
244789 
244790 // End of memberFunctionString
244791 // Start of memberFunctionString
244792 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
244793 
244794  void post_construction_initialization() override;
244795 
244796 
244797 // End of memberFunctionString
244798 // Start of memberFunctionString
244799 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
244800 
244801  int precedence() const override { return 13; }
244802 
244803 
244804 // End of memberFunctionString
244805 
244806 
244807  public:
244808  virtual ~SgIntegerDivideOp();
244809 
244810 
244811  public:
244812  SgIntegerDivideOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
244813  SgIntegerDivideOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
244814 
244815  protected:
244816 
244817 
244818 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
244819 
244820 
244821  };
244822 #endif
244823 
244824 // postdeclarations for SgIntegerDivideOp
244825 
244826 /* #line 244827 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
244827 
244828 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
244829 
244830 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
244831 
244832 
244833 /* #line 244834 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
244834 
244835 
244836 
244837 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
244838 
244839 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
244840 // This code is automatically generated for each
244841 // terminal and non-terminal within the defined
244842 // grammar. There is a simple way to change the
244843 // code to fix bugs etc. See the ROSE README file
244844 // for directions.
244845 
244846 // tps: (02/22/2010): Adding DLL export requirements
244847 #include "rosedll.h"
244848 
244849 // predeclarations for SgModOp
244850 
244851 /* #line 244852 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
244852 
244853 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
244854 
244855 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
244856 
244857 #if 1
244858 // Class Definition for SgModOp
244859 class ROSE_DLL_API SgModOp : public SgBinaryOp
244860  {
244861  public:
244862 
244863 
244864 /* #line 244865 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
244865 
244866  virtual SgNode* copy ( SgCopyHelp& help) const override;
244867 // Start of memberFunctionString
244868 /* #line 871 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
244869 
244870 
244871 
244872 // End of memberFunctionString
244873 // Start of memberFunctionString
244874 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
244875 
244876 // *** COMMON CODE SECTION BEGINS HERE ***
244877 
244878  public:
244879 
244880  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
244881  // and not required which is required to match the other aspects of the copy mechanism code generation.
244882  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
244883  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
244884  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
244885  // virtual SgNode* copy ( const SgCopyHelp & help) const;
244886 
244888  virtual std::string class_name() const override;
244889 
244891  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
244892 
244894  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
244895  // static const VariantT static_variant = V_SgModOp;
244896  enum { static_variant = V_SgModOp };
244897 
244898  /* the generated cast function */
244900  ROSE_DLL_API friend SgModOp* isSgModOp( SgNode * s );
244901 
244903  ROSE_DLL_API friend const SgModOp* isSgModOp( const SgNode * s );
244904 
244905  // ******************************************
244906  // * Memory Pool / New / Delete
244907  // ******************************************
244908 
244909  public:
244911  static const unsigned pool_size; //
244913  static std::vector<unsigned char *> pools; //
244915  static SgModOp * next_node; //
244916 
244918  static unsigned long initializeStorageClassArray(SgModOpStorageClass *); //
244919 
244921  static void clearMemoryPool(); //
244922  static void deleteMemoryPool(); //
244923 
244925  static void extendMemoryPoolForFileIO(); //
244926 
244928  static SgModOp * getPointerFromGlobalIndex(unsigned long); //
244930  static SgModOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
244931 
244933  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
244935  static void resetValidFreepointers(); //
244937  static unsigned long getNumberOfLastValidPointer(); //
244938 
244939 
244940 #if defined(INLINE_FUNCTIONS)
244941 
244942  inline void *operator new (size_t size);
244943 #else
244944 
244945  void *operator new (size_t size);
244946 #endif
244947 
244948  void operator delete (void* pointer, size_t size);
244949 
244950  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
244951  void operator delete (void* pointer)
244952  {
244953  // This is the generated delete operator...
244954  SgModOp::operator delete (pointer,sizeof(SgModOp));
244955  }
244956 
244958  static size_t numberOfNodes();
244959 
244961  static size_t memoryUsage();
244962 
244963  // End of scope which started in IR nodes specific code
244964  /* */
244965 
244966  /* name Internal Functions
244967  \brief Internal functions ... incomplete-documentation
244968 
244969  These functions have been made public as part of the design, but they are suggested for internal use
244970  or by particularly knowledgeable users for specialized tools or applications.
244971 
244972  \internal We could not make these private because they are required by user for special purposes. And
244973  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
244974 
244975  */
244976 
244977  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
244978  // overridden in every class by *generated* implementation
244980  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
244981  // MS: 06/28/02 container of names of variables or container indices
244982  // used used in the traversal to access AST successor nodes
244983  // overridden in every class by *generated* implementation
244986  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
244987 
244988  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
244989  // than all the vector copies. The implementation for these functions is generated for each class.
244991  virtual size_t get_numberOfTraversalSuccessors() override;
244993  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
244995  virtual size_t get_childIndex(SgNode *child) override;
244996 
244997 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
244998  // MS: 08/16/2002 method for generating RTI information
245000  virtual RTIReturnType roseRTI() override;
245001 #endif
245002  /* */
245003 
245004 
245005 
245006  /* name Deprecated Functions
245007  \brief Deprecated functions ... incomplete-documentation
245008 
245009  These functions have been deprecated from use.
245010  */
245011  /* */
245012 
245014  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
245015 
245016  // JJW (10/16/2008): Changed to a single function in Node.code, and put
245017  // getVariant() in #if 0 block to prevent confusing Doxygen
245018 #if 0
245019 
245020  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
245022  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
245023 #endif
245024  /* */
245025 
245026 
245027 
245028 
245029  public:
245030  /* name Traversal Support Functions
245031  \brief Traversal support functions ... incomplete-documentation
245032 
245033  These functions have been made public as part of the design, but they are suggested for internal use
245034  or by particularly knowledgable users for specialized tools or applications.
245035  */
245036  /* */
245037 
245038  // DQ (11/26/2005): Support for visitor pattern mechanims
245039  // (inferior to ROSE traversal mechanism, experimental).
245043 
245044  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
245046  virtual void accept (ROSE_VisitorPattern & visitor) override;
245047 
245048  // DQ (12/26/2005): Support for traversal based on the memory pool
245051  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
245052 
245055  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
245056 
245057  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
245058  // This traversal helps support internal tools that call static member functions.
245059  // note: this function operates on the memory pools.
245062  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
245063  /* */
245064 
245065 
245066  public:
245067  /* name Memory Allocation Functions
245068  \brief Memory allocations functions ... incomplete-documentation
245069 
245070  These functions have been made public as part of the design, but they are suggested for internal use
245071  or by particularly knowledgable users for specialized tools or applications.
245072  */
245073  /* */
245074 
245085  virtual bool isInMemoryPool() override;
245086 
245097  virtual void checkDataMemberPointersIfInMemoryPool() override;
245098 
245099  // DQ (4/30/2006): Modified to be a const function.
245114  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
245115 
245125  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
245126 
245138  virtual long getChildIndex( SgNode* childNode ) const override;
245139 
245140  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
245141  // comment here (changed to be a C style comment and not be a doxygen comment).
245142  /* \brief Constructor for use by AST File I/O Mechanism
245143 
245144  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
245145  which obtained via fast binary file I/O from disk.
245146  */
245147  // SgModOp( SgModOpStorageClass& source );
245148 
245149 
245150 
245151 
245152 
245153  // JH (10/24/2005): methods added to support the ast file IO
245154  private:
245155 
245156  /* name AST Memory Allocation Support Functions
245157  \brief Memory allocations support....
245158 
245159  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
245160  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
245161  and support the AST File I/O Mechanism.
245162  */
245163  /* */
245164 
245165  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
245166  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
245167  that I use the same type everywhere, if any changes are made. THe second one declares the type
245168  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
245169  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
245170  a correspinding one in the AST_FILE_IO class!
245171  */
245172  // DQ (9/2/2015): This typedef is no longer used, we can't define the
245173  // comment here (changed to be a C style comment and not be a doxygen comment).
245174  /* \brief Typedef used for low level memory access.
245175  */
245176  // typedef unsigned char* TestType;
245177 
245178  // DQ (9/2/2015): This typedef is no longer used, we can't define the
245179  // comment here (changed to be a C style comment and not be a doxygen comment).
245180  /* \brief Typedef used to hold memory addresses as values.
245181  */
245182  // typedef unsigned long AddressType;
245183 
245184 
245185 
245186  // necessary, to have direct access to the p_freepointer and the private methods !
245188  friend class AST_FILE_IO;
245189 
245191  friend class SgModOpStorageClass;
245192 
245194  friend class AstSpecificDataManagingClass;
245195 
245197  friend class AstSpecificDataManagingClassStorageClass;
245198 
245199  public:
245201  SgModOp( const SgModOpStorageClass& source );
245202 
245203  // private: // JJW hack
245204  /*
245205  name AST Memory Allocation Support Variables
245206  Memory allocations support variables
245207 
245208  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
245209  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
245210  and support the AST File I/O Mechanism.
245211  */
245212  /* */
245213 
245214  public:
245215 
245216  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
245217  // to current node (so that it will work cleanly with build functions to specify patterns).
245218  // virtual SgNode* addRegExpAttribute();
245224  SgModOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
245225 
245226 // *** COMMON CODE SECTION ENDS HERE ***
245227 
245228 
245229 // End of memberFunctionString
245230 // Start of memberFunctionString
245231 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
245232 
245233  // the generated cast function
245234  // friend ROSE_DLL_API SgModOp* isSgModOp ( SgNode* s );
245235 
245236  typedef SgBinaryOp base_node_type;
245237 
245238 
245239 // End of memberFunctionString
245240 // Start of memberFunctionString
245241 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
245242 
245243  void post_construction_initialization() override;
245244 
245245 
245246 // End of memberFunctionString
245247 // Start of memberFunctionString
245248 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
245249 
245250  int precedence() const override { return 13; }
245251 
245252 
245253 // End of memberFunctionString
245254 
245255 
245256  public:
245257  virtual ~SgModOp();
245258 
245259 
245260  public:
245261  SgModOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
245262  SgModOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
245263 
245264  protected:
245265 
245266 
245267 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
245268 
245269 
245270  };
245271 #endif
245272 
245273 // postdeclarations for SgModOp
245274 
245275 /* #line 245276 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
245276 
245277 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
245278 
245279 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
245280 
245281 
245282 /* #line 245283 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
245283 
245284 
245285 
245286 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
245287 
245288 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
245289 // This code is automatically generated for each
245290 // terminal and non-terminal within the defined
245291 // grammar. There is a simple way to change the
245292 // code to fix bugs etc. See the ROSE README file
245293 // for directions.
245294 
245295 // tps: (02/22/2010): Adding DLL export requirements
245296 #include "rosedll.h"
245297 
245298 // predeclarations for SgAndOp
245299 
245300 /* #line 245301 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
245301 
245302 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
245303 
245304 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
245305 
245306 #if 1
245307 // Class Definition for SgAndOp
245308 class ROSE_DLL_API SgAndOp : public SgBinaryOp
245309  {
245310  public:
245311 
245312 
245313 /* #line 245314 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
245314 
245315  virtual SgNode* copy ( SgCopyHelp& help) const override;
245316 // Start of memberFunctionString
245317 /* #line 911 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
245318 
245319  SgType* get_type() const override;
245320 
245321 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
245322  virtual bool cfgIsIndexInteresting(unsigned int) const override;
245323  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
245324  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
245325 #endif
245326 
245327 
245328 
245329 // End of memberFunctionString
245330 // Start of memberFunctionString
245331 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
245332 
245333 // *** COMMON CODE SECTION BEGINS HERE ***
245334 
245335  public:
245336 
245337  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
245338  // and not required which is required to match the other aspects of the copy mechanism code generation.
245339  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
245340  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
245341  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
245342  // virtual SgNode* copy ( const SgCopyHelp & help) const;
245343 
245345  virtual std::string class_name() const override;
245346 
245348  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
245349 
245351  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
245352  // static const VariantT static_variant = V_SgAndOp;
245353  enum { static_variant = V_SgAndOp };
245354 
245355  /* the generated cast function */
245357  ROSE_DLL_API friend SgAndOp* isSgAndOp( SgNode * s );
245358 
245360  ROSE_DLL_API friend const SgAndOp* isSgAndOp( const SgNode * s );
245361 
245362  // ******************************************
245363  // * Memory Pool / New / Delete
245364  // ******************************************
245365 
245366  public:
245368  static const unsigned pool_size; //
245370  static std::vector<unsigned char *> pools; //
245372  static SgAndOp * next_node; //
245373 
245375  static unsigned long initializeStorageClassArray(SgAndOpStorageClass *); //
245376 
245378  static void clearMemoryPool(); //
245379  static void deleteMemoryPool(); //
245380 
245382  static void extendMemoryPoolForFileIO(); //
245383 
245385  static SgAndOp * getPointerFromGlobalIndex(unsigned long); //
245387  static SgAndOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
245388 
245390  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
245392  static void resetValidFreepointers(); //
245394  static unsigned long getNumberOfLastValidPointer(); //
245395 
245396 
245397 #if defined(INLINE_FUNCTIONS)
245398 
245399  inline void *operator new (size_t size);
245400 #else
245401 
245402  void *operator new (size_t size);
245403 #endif
245404 
245405  void operator delete (void* pointer, size_t size);
245406 
245407  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
245408  void operator delete (void* pointer)
245409  {
245410  // This is the generated delete operator...
245411  SgAndOp::operator delete (pointer,sizeof(SgAndOp));
245412  }
245413 
245415  static size_t numberOfNodes();
245416 
245418  static size_t memoryUsage();
245419 
245420  // End of scope which started in IR nodes specific code
245421  /* */
245422 
245423  /* name Internal Functions
245424  \brief Internal functions ... incomplete-documentation
245425 
245426  These functions have been made public as part of the design, but they are suggested for internal use
245427  or by particularly knowledgeable users for specialized tools or applications.
245428 
245429  \internal We could not make these private because they are required by user for special purposes. And
245430  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
245431 
245432  */
245433 
245434  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
245435  // overridden in every class by *generated* implementation
245437  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
245438  // MS: 06/28/02 container of names of variables or container indices
245439  // used used in the traversal to access AST successor nodes
245440  // overridden in every class by *generated* implementation
245443  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
245444 
245445  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
245446  // than all the vector copies. The implementation for these functions is generated for each class.
245448  virtual size_t get_numberOfTraversalSuccessors() override;
245450  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
245452  virtual size_t get_childIndex(SgNode *child) override;
245453 
245454 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
245455  // MS: 08/16/2002 method for generating RTI information
245457  virtual RTIReturnType roseRTI() override;
245458 #endif
245459  /* */
245460 
245461 
245462 
245463  /* name Deprecated Functions
245464  \brief Deprecated functions ... incomplete-documentation
245465 
245466  These functions have been deprecated from use.
245467  */
245468  /* */
245469 
245471  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
245472 
245473  // JJW (10/16/2008): Changed to a single function in Node.code, and put
245474  // getVariant() in #if 0 block to prevent confusing Doxygen
245475 #if 0
245476 
245477  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
245479  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
245480 #endif
245481  /* */
245482 
245483 
245484 
245485 
245486  public:
245487  /* name Traversal Support Functions
245488  \brief Traversal support functions ... incomplete-documentation
245489 
245490  These functions have been made public as part of the design, but they are suggested for internal use
245491  or by particularly knowledgable users for specialized tools or applications.
245492  */
245493  /* */
245494 
245495  // DQ (11/26/2005): Support for visitor pattern mechanims
245496  // (inferior to ROSE traversal mechanism, experimental).
245500 
245501  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
245503  virtual void accept (ROSE_VisitorPattern & visitor) override;
245504 
245505  // DQ (12/26/2005): Support for traversal based on the memory pool
245508  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
245509 
245512  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
245513 
245514  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
245515  // This traversal helps support internal tools that call static member functions.
245516  // note: this function operates on the memory pools.
245519  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
245520  /* */
245521 
245522 
245523  public:
245524  /* name Memory Allocation Functions
245525  \brief Memory allocations functions ... incomplete-documentation
245526 
245527  These functions have been made public as part of the design, but they are suggested for internal use
245528  or by particularly knowledgable users for specialized tools or applications.
245529  */
245530  /* */
245531 
245542  virtual bool isInMemoryPool() override;
245543 
245554  virtual void checkDataMemberPointersIfInMemoryPool() override;
245555 
245556  // DQ (4/30/2006): Modified to be a const function.
245571  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
245572 
245582  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
245583 
245595  virtual long getChildIndex( SgNode* childNode ) const override;
245596 
245597  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
245598  // comment here (changed to be a C style comment and not be a doxygen comment).
245599  /* \brief Constructor for use by AST File I/O Mechanism
245600 
245601  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
245602  which obtained via fast binary file I/O from disk.
245603  */
245604  // SgAndOp( SgAndOpStorageClass& source );
245605 
245606 
245607 
245608 
245609 
245610  // JH (10/24/2005): methods added to support the ast file IO
245611  private:
245612 
245613  /* name AST Memory Allocation Support Functions
245614  \brief Memory allocations support....
245615 
245616  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
245617  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
245618  and support the AST File I/O Mechanism.
245619  */
245620  /* */
245621 
245622  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
245623  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
245624  that I use the same type everywhere, if any changes are made. THe second one declares the type
245625  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
245626  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
245627  a correspinding one in the AST_FILE_IO class!
245628  */
245629  // DQ (9/2/2015): This typedef is no longer used, we can't define the
245630  // comment here (changed to be a C style comment and not be a doxygen comment).
245631  /* \brief Typedef used for low level memory access.
245632  */
245633  // typedef unsigned char* TestType;
245634 
245635  // DQ (9/2/2015): This typedef is no longer used, we can't define the
245636  // comment here (changed to be a C style comment and not be a doxygen comment).
245637  /* \brief Typedef used to hold memory addresses as values.
245638  */
245639  // typedef unsigned long AddressType;
245640 
245641 
245642 
245643  // necessary, to have direct access to the p_freepointer and the private methods !
245645  friend class AST_FILE_IO;
245646 
245648  friend class SgAndOpStorageClass;
245649 
245651  friend class AstSpecificDataManagingClass;
245652 
245654  friend class AstSpecificDataManagingClassStorageClass;
245655 
245656  public:
245658  SgAndOp( const SgAndOpStorageClass& source );
245659 
245660  // private: // JJW hack
245661  /*
245662  name AST Memory Allocation Support Variables
245663  Memory allocations support variables
245664 
245665  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
245666  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
245667  and support the AST File I/O Mechanism.
245668  */
245669  /* */
245670 
245671  public:
245672 
245673  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
245674  // to current node (so that it will work cleanly with build functions to specify patterns).
245675  // virtual SgNode* addRegExpAttribute();
245681  SgAndOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
245682 
245683 // *** COMMON CODE SECTION ENDS HERE ***
245684 
245685 
245686 // End of memberFunctionString
245687 // Start of memberFunctionString
245688 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
245689 
245690  // the generated cast function
245691  // friend ROSE_DLL_API SgAndOp* isSgAndOp ( SgNode* s );
245692 
245693  typedef SgBinaryOp base_node_type;
245694 
245695 
245696 // End of memberFunctionString
245697 // Start of memberFunctionString
245698 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
245699 
245700  void post_construction_initialization() override;
245701 
245702 
245703 // End of memberFunctionString
245704 // Start of memberFunctionString
245705 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
245706 
245707  int precedence() const override { return 5; }
245708 
245709 
245710 // End of memberFunctionString
245711 
245712 
245713  public:
245714  virtual ~SgAndOp();
245715 
245716 
245717  public:
245718  SgAndOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
245719  SgAndOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
245720 
245721  protected:
245722 
245723 
245724 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
245725 
245726 
245727  };
245728 #endif
245729 
245730 // postdeclarations for SgAndOp
245731 
245732 /* #line 245733 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
245733 
245734 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
245735 
245736 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
245737 
245738 
245739 /* #line 245740 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
245740 
245741 
245742 
245743 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
245744 
245745 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
245746 // This code is automatically generated for each
245747 // terminal and non-terminal within the defined
245748 // grammar. There is a simple way to change the
245749 // code to fix bugs etc. See the ROSE README file
245750 // for directions.
245751 
245752 // tps: (02/22/2010): Adding DLL export requirements
245753 #include "rosedll.h"
245754 
245755 // predeclarations for SgOrOp
245756 
245757 /* #line 245758 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
245758 
245759 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
245760 
245761 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
245762 
245763 #if 1
245764 // Class Definition for SgOrOp
245765 class ROSE_DLL_API SgOrOp : public SgBinaryOp
245766  {
245767  public:
245768 
245769 
245770 /* #line 245771 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
245771 
245772  virtual SgNode* copy ( SgCopyHelp& help) const override;
245773 // Start of memberFunctionString
245774 /* #line 923 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
245775 
245776  SgType* get_type() const override;
245777 
245778 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
245779  virtual bool cfgIsIndexInteresting(unsigned int) const override;
245780  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
245781  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
245782 #endif
245783 
245784 
245785 
245786 // End of memberFunctionString
245787 // Start of memberFunctionString
245788 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
245789 
245790 // *** COMMON CODE SECTION BEGINS HERE ***
245791 
245792  public:
245793 
245794  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
245795  // and not required which is required to match the other aspects of the copy mechanism code generation.
245796  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
245797  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
245798  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
245799  // virtual SgNode* copy ( const SgCopyHelp & help) const;
245800 
245802  virtual std::string class_name() const override;
245803 
245805  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
245806 
245808  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
245809  // static const VariantT static_variant = V_SgOrOp;
245810  enum { static_variant = V_SgOrOp };
245811 
245812  /* the generated cast function */
245814  ROSE_DLL_API friend SgOrOp* isSgOrOp( SgNode * s );
245815 
245817  ROSE_DLL_API friend const SgOrOp* isSgOrOp( const SgNode * s );
245818 
245819  // ******************************************
245820  // * Memory Pool / New / Delete
245821  // ******************************************
245822 
245823  public:
245825  static const unsigned pool_size; //
245827  static std::vector<unsigned char *> pools; //
245829  static SgOrOp * next_node; //
245830 
245832  static unsigned long initializeStorageClassArray(SgOrOpStorageClass *); //
245833 
245835  static void clearMemoryPool(); //
245836  static void deleteMemoryPool(); //
245837 
245839  static void extendMemoryPoolForFileIO(); //
245840 
245842  static SgOrOp * getPointerFromGlobalIndex(unsigned long); //
245844  static SgOrOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
245845 
245847  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
245849  static void resetValidFreepointers(); //
245851  static unsigned long getNumberOfLastValidPointer(); //
245852 
245853 
245854 #if defined(INLINE_FUNCTIONS)
245855 
245856  inline void *operator new (size_t size);
245857 #else
245858 
245859  void *operator new (size_t size);
245860 #endif
245861 
245862  void operator delete (void* pointer, size_t size);
245863 
245864  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
245865  void operator delete (void* pointer)
245866  {
245867  // This is the generated delete operator...
245868  SgOrOp::operator delete (pointer,sizeof(SgOrOp));
245869  }
245870 
245872  static size_t numberOfNodes();
245873 
245875  static size_t memoryUsage();
245876 
245877  // End of scope which started in IR nodes specific code
245878  /* */
245879 
245880  /* name Internal Functions
245881  \brief Internal functions ... incomplete-documentation
245882 
245883  These functions have been made public as part of the design, but they are suggested for internal use
245884  or by particularly knowledgeable users for specialized tools or applications.
245885 
245886  \internal We could not make these private because they are required by user for special purposes. And
245887  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
245888 
245889  */
245890 
245891  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
245892  // overridden in every class by *generated* implementation
245894  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
245895  // MS: 06/28/02 container of names of variables or container indices
245896  // used used in the traversal to access AST successor nodes
245897  // overridden in every class by *generated* implementation
245900  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
245901 
245902  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
245903  // than all the vector copies. The implementation for these functions is generated for each class.
245905  virtual size_t get_numberOfTraversalSuccessors() override;
245907  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
245909  virtual size_t get_childIndex(SgNode *child) override;
245910 
245911 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
245912  // MS: 08/16/2002 method for generating RTI information
245914  virtual RTIReturnType roseRTI() override;
245915 #endif
245916  /* */
245917 
245918 
245919 
245920  /* name Deprecated Functions
245921  \brief Deprecated functions ... incomplete-documentation
245922 
245923  These functions have been deprecated from use.
245924  */
245925  /* */
245926 
245928  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
245929 
245930  // JJW (10/16/2008): Changed to a single function in Node.code, and put
245931  // getVariant() in #if 0 block to prevent confusing Doxygen
245932 #if 0
245933 
245934  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
245936  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
245937 #endif
245938  /* */
245939 
245940 
245941 
245942 
245943  public:
245944  /* name Traversal Support Functions
245945  \brief Traversal support functions ... incomplete-documentation
245946 
245947  These functions have been made public as part of the design, but they are suggested for internal use
245948  or by particularly knowledgable users for specialized tools or applications.
245949  */
245950  /* */
245951 
245952  // DQ (11/26/2005): Support for visitor pattern mechanims
245953  // (inferior to ROSE traversal mechanism, experimental).
245957 
245958  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
245960  virtual void accept (ROSE_VisitorPattern & visitor) override;
245961 
245962  // DQ (12/26/2005): Support for traversal based on the memory pool
245965  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
245966 
245969  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
245970 
245971  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
245972  // This traversal helps support internal tools that call static member functions.
245973  // note: this function operates on the memory pools.
245976  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
245977  /* */
245978 
245979 
245980  public:
245981  /* name Memory Allocation Functions
245982  \brief Memory allocations functions ... incomplete-documentation
245983 
245984  These functions have been made public as part of the design, but they are suggested for internal use
245985  or by particularly knowledgable users for specialized tools or applications.
245986  */
245987  /* */
245988 
245999  virtual bool isInMemoryPool() override;
246000 
246011  virtual void checkDataMemberPointersIfInMemoryPool() override;
246012 
246013  // DQ (4/30/2006): Modified to be a const function.
246028  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
246029 
246039  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
246040 
246052  virtual long getChildIndex( SgNode* childNode ) const override;
246053 
246054  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
246055  // comment here (changed to be a C style comment and not be a doxygen comment).
246056  /* \brief Constructor for use by AST File I/O Mechanism
246057 
246058  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
246059  which obtained via fast binary file I/O from disk.
246060  */
246061  // SgOrOp( SgOrOpStorageClass& source );
246062 
246063 
246064 
246065 
246066 
246067  // JH (10/24/2005): methods added to support the ast file IO
246068  private:
246069 
246070  /* name AST Memory Allocation Support Functions
246071  \brief Memory allocations support....
246072 
246073  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
246074  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
246075  and support the AST File I/O Mechanism.
246076  */
246077  /* */
246078 
246079  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
246080  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
246081  that I use the same type everywhere, if any changes are made. THe second one declares the type
246082  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
246083  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
246084  a correspinding one in the AST_FILE_IO class!
246085  */
246086  // DQ (9/2/2015): This typedef is no longer used, we can't define the
246087  // comment here (changed to be a C style comment and not be a doxygen comment).
246088  /* \brief Typedef used for low level memory access.
246089  */
246090  // typedef unsigned char* TestType;
246091 
246092  // DQ (9/2/2015): This typedef is no longer used, we can't define the
246093  // comment here (changed to be a C style comment and not be a doxygen comment).
246094  /* \brief Typedef used to hold memory addresses as values.
246095  */
246096  // typedef unsigned long AddressType;
246097 
246098 
246099 
246100  // necessary, to have direct access to the p_freepointer and the private methods !
246102  friend class AST_FILE_IO;
246103 
246105  friend class SgOrOpStorageClass;
246106 
246108  friend class AstSpecificDataManagingClass;
246109 
246111  friend class AstSpecificDataManagingClassStorageClass;
246112 
246113  public:
246115  SgOrOp( const SgOrOpStorageClass& source );
246116 
246117  // private: // JJW hack
246118  /*
246119  name AST Memory Allocation Support Variables
246120  Memory allocations support variables
246121 
246122  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
246123  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
246124  and support the AST File I/O Mechanism.
246125  */
246126  /* */
246127 
246128  public:
246129 
246130  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
246131  // to current node (so that it will work cleanly with build functions to specify patterns).
246132  // virtual SgNode* addRegExpAttribute();
246138  SgOrOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
246139 
246140 // *** COMMON CODE SECTION ENDS HERE ***
246141 
246142 
246143 // End of memberFunctionString
246144 // Start of memberFunctionString
246145 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
246146 
246147  // the generated cast function
246148  // friend ROSE_DLL_API SgOrOp* isSgOrOp ( SgNode* s );
246149 
246150  typedef SgBinaryOp base_node_type;
246151 
246152 
246153 // End of memberFunctionString
246154 // Start of memberFunctionString
246155 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
246156 
246157  void post_construction_initialization() override;
246158 
246159 
246160 // End of memberFunctionString
246161 // Start of memberFunctionString
246162 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
246163 
246164  int precedence() const override { return 4; }
246165 
246166 
246167 // End of memberFunctionString
246168 
246169 
246170  public:
246171  virtual ~SgOrOp();
246172 
246173 
246174  public:
246175  SgOrOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
246176  SgOrOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
246177 
246178  protected:
246179 
246180 
246181 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
246182 
246183 
246184  };
246185 #endif
246186 
246187 // postdeclarations for SgOrOp
246188 
246189 /* #line 246190 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
246190 
246191 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
246192 
246193 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
246194 
246195 
246196 /* #line 246197 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
246197 
246198 
246199 
246200 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
246201 
246202 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
246203 // This code is automatically generated for each
246204 // terminal and non-terminal within the defined
246205 // grammar. There is a simple way to change the
246206 // code to fix bugs etc. See the ROSE README file
246207 // for directions.
246208 
246209 // tps: (02/22/2010): Adding DLL export requirements
246210 #include "rosedll.h"
246211 
246212 // predeclarations for SgBitXorOp
246213 
246214 /* #line 246215 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
246215 
246216 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
246217 
246218 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
246219 
246220 #if 1
246221 // Class Definition for SgBitXorOp
246222 class ROSE_DLL_API SgBitXorOp : public SgBinaryOp
246223  {
246224  public:
246225 
246226 
246227 /* #line 246228 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
246228 
246229  virtual SgNode* copy ( SgCopyHelp& help) const override;
246230 // Start of memberFunctionString
246231 /* #line 935 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
246232 
246233 
246234 
246235 // End of memberFunctionString
246236 // Start of memberFunctionString
246237 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
246238 
246239 // *** COMMON CODE SECTION BEGINS HERE ***
246240 
246241  public:
246242 
246243  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
246244  // and not required which is required to match the other aspects of the copy mechanism code generation.
246245  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
246246  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
246247  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
246248  // virtual SgNode* copy ( const SgCopyHelp & help) const;
246249 
246251  virtual std::string class_name() const override;
246252 
246254  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
246255 
246257  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
246258  // static const VariantT static_variant = V_SgBitXorOp;
246259  enum { static_variant = V_SgBitXorOp };
246260 
246261  /* the generated cast function */
246263  ROSE_DLL_API friend SgBitXorOp* isSgBitXorOp( SgNode * s );
246264 
246266  ROSE_DLL_API friend const SgBitXorOp* isSgBitXorOp( const SgNode * s );
246267 
246268  // ******************************************
246269  // * Memory Pool / New / Delete
246270  // ******************************************
246271 
246272  public:
246274  static const unsigned pool_size; //
246276  static std::vector<unsigned char *> pools; //
246278  static SgBitXorOp * next_node; //
246279 
246281  static unsigned long initializeStorageClassArray(SgBitXorOpStorageClass *); //
246282 
246284  static void clearMemoryPool(); //
246285  static void deleteMemoryPool(); //
246286 
246288  static void extendMemoryPoolForFileIO(); //
246289 
246291  static SgBitXorOp * getPointerFromGlobalIndex(unsigned long); //
246293  static SgBitXorOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
246294 
246296  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
246298  static void resetValidFreepointers(); //
246300  static unsigned long getNumberOfLastValidPointer(); //
246301 
246302 
246303 #if defined(INLINE_FUNCTIONS)
246304 
246305  inline void *operator new (size_t size);
246306 #else
246307 
246308  void *operator new (size_t size);
246309 #endif
246310 
246311  void operator delete (void* pointer, size_t size);
246312 
246313  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
246314  void operator delete (void* pointer)
246315  {
246316  // This is the generated delete operator...
246317  SgBitXorOp::operator delete (pointer,sizeof(SgBitXorOp));
246318  }
246319 
246321  static size_t numberOfNodes();
246322 
246324  static size_t memoryUsage();
246325 
246326  // End of scope which started in IR nodes specific code
246327  /* */
246328 
246329  /* name Internal Functions
246330  \brief Internal functions ... incomplete-documentation
246331 
246332  These functions have been made public as part of the design, but they are suggested for internal use
246333  or by particularly knowledgeable users for specialized tools or applications.
246334 
246335  \internal We could not make these private because they are required by user for special purposes. And
246336  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
246337 
246338  */
246339 
246340  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
246341  // overridden in every class by *generated* implementation
246343  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
246344  // MS: 06/28/02 container of names of variables or container indices
246345  // used used in the traversal to access AST successor nodes
246346  // overridden in every class by *generated* implementation
246349  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
246350 
246351  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
246352  // than all the vector copies. The implementation for these functions is generated for each class.
246354  virtual size_t get_numberOfTraversalSuccessors() override;
246356  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
246358  virtual size_t get_childIndex(SgNode *child) override;
246359 
246360 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
246361  // MS: 08/16/2002 method for generating RTI information
246363  virtual RTIReturnType roseRTI() override;
246364 #endif
246365  /* */
246366 
246367 
246368 
246369  /* name Deprecated Functions
246370  \brief Deprecated functions ... incomplete-documentation
246371 
246372  These functions have been deprecated from use.
246373  */
246374  /* */
246375 
246377  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
246378 
246379  // JJW (10/16/2008): Changed to a single function in Node.code, and put
246380  // getVariant() in #if 0 block to prevent confusing Doxygen
246381 #if 0
246382 
246383  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
246385  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
246386 #endif
246387  /* */
246388 
246389 
246390 
246391 
246392  public:
246393  /* name Traversal Support Functions
246394  \brief Traversal support functions ... incomplete-documentation
246395 
246396  These functions have been made public as part of the design, but they are suggested for internal use
246397  or by particularly knowledgable users for specialized tools or applications.
246398  */
246399  /* */
246400 
246401  // DQ (11/26/2005): Support for visitor pattern mechanims
246402  // (inferior to ROSE traversal mechanism, experimental).
246406 
246407  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
246409  virtual void accept (ROSE_VisitorPattern & visitor) override;
246410 
246411  // DQ (12/26/2005): Support for traversal based on the memory pool
246414  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
246415 
246418  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
246419 
246420  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
246421  // This traversal helps support internal tools that call static member functions.
246422  // note: this function operates on the memory pools.
246425  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
246426  /* */
246427 
246428 
246429  public:
246430  /* name Memory Allocation Functions
246431  \brief Memory allocations functions ... incomplete-documentation
246432 
246433  These functions have been made public as part of the design, but they are suggested for internal use
246434  or by particularly knowledgable users for specialized tools or applications.
246435  */
246436  /* */
246437 
246448  virtual bool isInMemoryPool() override;
246449 
246460  virtual void checkDataMemberPointersIfInMemoryPool() override;
246461 
246462  // DQ (4/30/2006): Modified to be a const function.
246477  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
246478 
246488  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
246489 
246501  virtual long getChildIndex( SgNode* childNode ) const override;
246502 
246503  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
246504  // comment here (changed to be a C style comment and not be a doxygen comment).
246505  /* \brief Constructor for use by AST File I/O Mechanism
246506 
246507  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
246508  which obtained via fast binary file I/O from disk.
246509  */
246510  // SgBitXorOp( SgBitXorOpStorageClass& source );
246511 
246512 
246513 
246514 
246515 
246516  // JH (10/24/2005): methods added to support the ast file IO
246517  private:
246518 
246519  /* name AST Memory Allocation Support Functions
246520  \brief Memory allocations support....
246521 
246522  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
246523  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
246524  and support the AST File I/O Mechanism.
246525  */
246526  /* */
246527 
246528  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
246529  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
246530  that I use the same type everywhere, if any changes are made. THe second one declares the type
246531  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
246532  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
246533  a correspinding one in the AST_FILE_IO class!
246534  */
246535  // DQ (9/2/2015): This typedef is no longer used, we can't define the
246536  // comment here (changed to be a C style comment and not be a doxygen comment).
246537  /* \brief Typedef used for low level memory access.
246538  */
246539  // typedef unsigned char* TestType;
246540 
246541  // DQ (9/2/2015): This typedef is no longer used, we can't define the
246542  // comment here (changed to be a C style comment and not be a doxygen comment).
246543  /* \brief Typedef used to hold memory addresses as values.
246544  */
246545  // typedef unsigned long AddressType;
246546 
246547 
246548 
246549  // necessary, to have direct access to the p_freepointer and the private methods !
246551  friend class AST_FILE_IO;
246552 
246554  friend class SgBitXorOpStorageClass;
246555 
246557  friend class AstSpecificDataManagingClass;
246558 
246560  friend class AstSpecificDataManagingClassStorageClass;
246561 
246562  public:
246564  SgBitXorOp( const SgBitXorOpStorageClass& source );
246565 
246566  // private: // JJW hack
246567  /*
246568  name AST Memory Allocation Support Variables
246569  Memory allocations support variables
246570 
246571  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
246572  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
246573  and support the AST File I/O Mechanism.
246574  */
246575  /* */
246576 
246577  public:
246578 
246579  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
246580  // to current node (so that it will work cleanly with build functions to specify patterns).
246581  // virtual SgNode* addRegExpAttribute();
246587  SgBitXorOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
246588 
246589 // *** COMMON CODE SECTION ENDS HERE ***
246590 
246591 
246592 // End of memberFunctionString
246593 // Start of memberFunctionString
246594 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
246595 
246596  // the generated cast function
246597  // friend ROSE_DLL_API SgBitXorOp* isSgBitXorOp ( SgNode* s );
246598 
246599  typedef SgBinaryOp base_node_type;
246600 
246601 
246602 // End of memberFunctionString
246603 // Start of memberFunctionString
246604 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
246605 
246606  void post_construction_initialization() override;
246607 
246608 
246609 // End of memberFunctionString
246610 // Start of memberFunctionString
246611 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
246612 
246613  int precedence() const override { return 7; }
246614 
246615 
246616 // End of memberFunctionString
246617 
246618 
246619  public:
246620  virtual ~SgBitXorOp();
246621 
246622 
246623  public:
246624  SgBitXorOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
246625  SgBitXorOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
246626 
246627  protected:
246628 
246629 
246630 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
246631 
246632 
246633  };
246634 #endif
246635 
246636 // postdeclarations for SgBitXorOp
246637 
246638 /* #line 246639 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
246639 
246640 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
246641 
246642 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
246643 
246644 
246645 /* #line 246646 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
246646 
246647 
246648 
246649 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
246650 
246651 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
246652 // This code is automatically generated for each
246653 // terminal and non-terminal within the defined
246654 // grammar. There is a simple way to change the
246655 // code to fix bugs etc. See the ROSE README file
246656 // for directions.
246657 
246658 // tps: (02/22/2010): Adding DLL export requirements
246659 #include "rosedll.h"
246660 
246661 // predeclarations for SgBitAndOp
246662 
246663 /* #line 246664 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
246664 
246665 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
246666 
246667 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
246668 
246669 #if 1
246670 // Class Definition for SgBitAndOp
246671 class ROSE_DLL_API SgBitAndOp : public SgBinaryOp
246672  {
246673  public:
246674 
246675 
246676 /* #line 246677 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
246677 
246678  virtual SgNode* copy ( SgCopyHelp& help) const override;
246679 // Start of memberFunctionString
246680 /* #line 938 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
246681 
246682 
246683 
246684 // End of memberFunctionString
246685 // Start of memberFunctionString
246686 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
246687 
246688 // *** COMMON CODE SECTION BEGINS HERE ***
246689 
246690  public:
246691 
246692  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
246693  // and not required which is required to match the other aspects of the copy mechanism code generation.
246694  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
246695  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
246696  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
246697  // virtual SgNode* copy ( const SgCopyHelp & help) const;
246698 
246700  virtual std::string class_name() const override;
246701 
246703  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
246704 
246706  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
246707  // static const VariantT static_variant = V_SgBitAndOp;
246708  enum { static_variant = V_SgBitAndOp };
246709 
246710  /* the generated cast function */
246712  ROSE_DLL_API friend SgBitAndOp* isSgBitAndOp( SgNode * s );
246713 
246715  ROSE_DLL_API friend const SgBitAndOp* isSgBitAndOp( const SgNode * s );
246716 
246717  // ******************************************
246718  // * Memory Pool / New / Delete
246719  // ******************************************
246720 
246721  public:
246723  static const unsigned pool_size; //
246725  static std::vector<unsigned char *> pools; //
246727  static SgBitAndOp * next_node; //
246728 
246730  static unsigned long initializeStorageClassArray(SgBitAndOpStorageClass *); //
246731 
246733  static void clearMemoryPool(); //
246734  static void deleteMemoryPool(); //
246735 
246737  static void extendMemoryPoolForFileIO(); //
246738 
246740  static SgBitAndOp * getPointerFromGlobalIndex(unsigned long); //
246742  static SgBitAndOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
246743 
246745  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
246747  static void resetValidFreepointers(); //
246749  static unsigned long getNumberOfLastValidPointer(); //
246750 
246751 
246752 #if defined(INLINE_FUNCTIONS)
246753 
246754  inline void *operator new (size_t size);
246755 #else
246756 
246757  void *operator new (size_t size);
246758 #endif
246759 
246760  void operator delete (void* pointer, size_t size);
246761 
246762  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
246763  void operator delete (void* pointer)
246764  {
246765  // This is the generated delete operator...
246766  SgBitAndOp::operator delete (pointer,sizeof(SgBitAndOp));
246767  }
246768 
246770  static size_t numberOfNodes();
246771 
246773  static size_t memoryUsage();
246774 
246775  // End of scope which started in IR nodes specific code
246776  /* */
246777 
246778  /* name Internal Functions
246779  \brief Internal functions ... incomplete-documentation
246780 
246781  These functions have been made public as part of the design, but they are suggested for internal use
246782  or by particularly knowledgeable users for specialized tools or applications.
246783 
246784  \internal We could not make these private because they are required by user for special purposes. And
246785  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
246786 
246787  */
246788 
246789  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
246790  // overridden in every class by *generated* implementation
246792  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
246793  // MS: 06/28/02 container of names of variables or container indices
246794  // used used in the traversal to access AST successor nodes
246795  // overridden in every class by *generated* implementation
246798  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
246799 
246800  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
246801  // than all the vector copies. The implementation for these functions is generated for each class.
246803  virtual size_t get_numberOfTraversalSuccessors() override;
246805  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
246807  virtual size_t get_childIndex(SgNode *child) override;
246808 
246809 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
246810  // MS: 08/16/2002 method for generating RTI information
246812  virtual RTIReturnType roseRTI() override;
246813 #endif
246814  /* */
246815 
246816 
246817 
246818  /* name Deprecated Functions
246819  \brief Deprecated functions ... incomplete-documentation
246820 
246821  These functions have been deprecated from use.
246822  */
246823  /* */
246824 
246826  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
246827 
246828  // JJW (10/16/2008): Changed to a single function in Node.code, and put
246829  // getVariant() in #if 0 block to prevent confusing Doxygen
246830 #if 0
246831 
246832  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
246834  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
246835 #endif
246836  /* */
246837 
246838 
246839 
246840 
246841  public:
246842  /* name Traversal Support Functions
246843  \brief Traversal support functions ... incomplete-documentation
246844 
246845  These functions have been made public as part of the design, but they are suggested for internal use
246846  or by particularly knowledgable users for specialized tools or applications.
246847  */
246848  /* */
246849 
246850  // DQ (11/26/2005): Support for visitor pattern mechanims
246851  // (inferior to ROSE traversal mechanism, experimental).
246855 
246856  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
246858  virtual void accept (ROSE_VisitorPattern & visitor) override;
246859 
246860  // DQ (12/26/2005): Support for traversal based on the memory pool
246863  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
246864 
246867  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
246868 
246869  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
246870  // This traversal helps support internal tools that call static member functions.
246871  // note: this function operates on the memory pools.
246874  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
246875  /* */
246876 
246877 
246878  public:
246879  /* name Memory Allocation Functions
246880  \brief Memory allocations functions ... incomplete-documentation
246881 
246882  These functions have been made public as part of the design, but they are suggested for internal use
246883  or by particularly knowledgable users for specialized tools or applications.
246884  */
246885  /* */
246886 
246897  virtual bool isInMemoryPool() override;
246898 
246909  virtual void checkDataMemberPointersIfInMemoryPool() override;
246910 
246911  // DQ (4/30/2006): Modified to be a const function.
246926  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
246927 
246937  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
246938 
246950  virtual long getChildIndex( SgNode* childNode ) const override;
246951 
246952  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
246953  // comment here (changed to be a C style comment and not be a doxygen comment).
246954  /* \brief Constructor for use by AST File I/O Mechanism
246955 
246956  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
246957  which obtained via fast binary file I/O from disk.
246958  */
246959  // SgBitAndOp( SgBitAndOpStorageClass& source );
246960 
246961 
246962 
246963 
246964 
246965  // JH (10/24/2005): methods added to support the ast file IO
246966  private:
246967 
246968  /* name AST Memory Allocation Support Functions
246969  \brief Memory allocations support....
246970 
246971  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
246972  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
246973  and support the AST File I/O Mechanism.
246974  */
246975  /* */
246976 
246977  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
246978  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
246979  that I use the same type everywhere, if any changes are made. THe second one declares the type
246980  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
246981  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
246982  a correspinding one in the AST_FILE_IO class!
246983  */
246984  // DQ (9/2/2015): This typedef is no longer used, we can't define the
246985  // comment here (changed to be a C style comment and not be a doxygen comment).
246986  /* \brief Typedef used for low level memory access.
246987  */
246988  // typedef unsigned char* TestType;
246989 
246990  // DQ (9/2/2015): This typedef is no longer used, we can't define the
246991  // comment here (changed to be a C style comment and not be a doxygen comment).
246992  /* \brief Typedef used to hold memory addresses as values.
246993  */
246994  // typedef unsigned long AddressType;
246995 
246996 
246997 
246998  // necessary, to have direct access to the p_freepointer and the private methods !
247000  friend class AST_FILE_IO;
247001 
247003  friend class SgBitAndOpStorageClass;
247004 
247006  friend class AstSpecificDataManagingClass;
247007 
247009  friend class AstSpecificDataManagingClassStorageClass;
247010 
247011  public:
247013  SgBitAndOp( const SgBitAndOpStorageClass& source );
247014 
247015  // private: // JJW hack
247016  /*
247017  name AST Memory Allocation Support Variables
247018  Memory allocations support variables
247019 
247020  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
247021  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
247022  and support the AST File I/O Mechanism.
247023  */
247024  /* */
247025 
247026  public:
247027 
247028  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
247029  // to current node (so that it will work cleanly with build functions to specify patterns).
247030  // virtual SgNode* addRegExpAttribute();
247036  SgBitAndOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
247037 
247038 // *** COMMON CODE SECTION ENDS HERE ***
247039 
247040 
247041 // End of memberFunctionString
247042 // Start of memberFunctionString
247043 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
247044 
247045  // the generated cast function
247046  // friend ROSE_DLL_API SgBitAndOp* isSgBitAndOp ( SgNode* s );
247047 
247048  typedef SgBinaryOp base_node_type;
247049 
247050 
247051 // End of memberFunctionString
247052 // Start of memberFunctionString
247053 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
247054 
247055  void post_construction_initialization() override;
247056 
247057 
247058 // End of memberFunctionString
247059 // Start of memberFunctionString
247060 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
247061 
247062  int precedence() const override { return 8; }
247063 
247064 
247065 // End of memberFunctionString
247066 
247067 
247068  public:
247069  virtual ~SgBitAndOp();
247070 
247071 
247072  public:
247073  SgBitAndOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
247074  SgBitAndOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
247075 
247076  protected:
247077 
247078 
247079 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
247080 
247081 
247082  };
247083 #endif
247084 
247085 // postdeclarations for SgBitAndOp
247086 
247087 /* #line 247088 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
247088 
247089 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
247090 
247091 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
247092 
247093 
247094 /* #line 247095 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
247095 
247096 
247097 
247098 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
247099 
247100 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
247101 // This code is automatically generated for each
247102 // terminal and non-terminal within the defined
247103 // grammar. There is a simple way to change the
247104 // code to fix bugs etc. See the ROSE README file
247105 // for directions.
247106 
247107 // tps: (02/22/2010): Adding DLL export requirements
247108 #include "rosedll.h"
247109 
247110 // predeclarations for SgBitOrOp
247111 
247112 /* #line 247113 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
247113 
247114 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
247115 
247116 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
247117 
247118 #if 1
247119 // Class Definition for SgBitOrOp
247120 class ROSE_DLL_API SgBitOrOp : public SgBinaryOp
247121  {
247122  public:
247123 
247124 
247125 /* #line 247126 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
247126 
247127  virtual SgNode* copy ( SgCopyHelp& help) const override;
247128 // Start of memberFunctionString
247129 /* #line 941 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
247130 
247131 
247132 
247133 // End of memberFunctionString
247134 // Start of memberFunctionString
247135 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
247136 
247137 // *** COMMON CODE SECTION BEGINS HERE ***
247138 
247139  public:
247140 
247141  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
247142  // and not required which is required to match the other aspects of the copy mechanism code generation.
247143  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
247144  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
247145  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
247146  // virtual SgNode* copy ( const SgCopyHelp & help) const;
247147 
247149  virtual std::string class_name() const override;
247150 
247152  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
247153 
247155  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
247156  // static const VariantT static_variant = V_SgBitOrOp;
247157  enum { static_variant = V_SgBitOrOp };
247158 
247159  /* the generated cast function */
247161  ROSE_DLL_API friend SgBitOrOp* isSgBitOrOp( SgNode * s );
247162 
247164  ROSE_DLL_API friend const SgBitOrOp* isSgBitOrOp( const SgNode * s );
247165 
247166  // ******************************************
247167  // * Memory Pool / New / Delete
247168  // ******************************************
247169 
247170  public:
247172  static const unsigned pool_size; //
247174  static std::vector<unsigned char *> pools; //
247176  static SgBitOrOp * next_node; //
247177 
247179  static unsigned long initializeStorageClassArray(SgBitOrOpStorageClass *); //
247180 
247182  static void clearMemoryPool(); //
247183  static void deleteMemoryPool(); //
247184 
247186  static void extendMemoryPoolForFileIO(); //
247187 
247189  static SgBitOrOp * getPointerFromGlobalIndex(unsigned long); //
247191  static SgBitOrOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
247192 
247194  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
247196  static void resetValidFreepointers(); //
247198  static unsigned long getNumberOfLastValidPointer(); //
247199 
247200 
247201 #if defined(INLINE_FUNCTIONS)
247202 
247203  inline void *operator new (size_t size);
247204 #else
247205 
247206  void *operator new (size_t size);
247207 #endif
247208 
247209  void operator delete (void* pointer, size_t size);
247210 
247211  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
247212  void operator delete (void* pointer)
247213  {
247214  // This is the generated delete operator...
247215  SgBitOrOp::operator delete (pointer,sizeof(SgBitOrOp));
247216  }
247217 
247219  static size_t numberOfNodes();
247220 
247222  static size_t memoryUsage();
247223 
247224  // End of scope which started in IR nodes specific code
247225  /* */
247226 
247227  /* name Internal Functions
247228  \brief Internal functions ... incomplete-documentation
247229 
247230  These functions have been made public as part of the design, but they are suggested for internal use
247231  or by particularly knowledgeable users for specialized tools or applications.
247232 
247233  \internal We could not make these private because they are required by user for special purposes. And
247234  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
247235 
247236  */
247237 
247238  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
247239  // overridden in every class by *generated* implementation
247241  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
247242  // MS: 06/28/02 container of names of variables or container indices
247243  // used used in the traversal to access AST successor nodes
247244  // overridden in every class by *generated* implementation
247247  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
247248 
247249  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
247250  // than all the vector copies. The implementation for these functions is generated for each class.
247252  virtual size_t get_numberOfTraversalSuccessors() override;
247254  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
247256  virtual size_t get_childIndex(SgNode *child) override;
247257 
247258 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
247259  // MS: 08/16/2002 method for generating RTI information
247261  virtual RTIReturnType roseRTI() override;
247262 #endif
247263  /* */
247264 
247265 
247266 
247267  /* name Deprecated Functions
247268  \brief Deprecated functions ... incomplete-documentation
247269 
247270  These functions have been deprecated from use.
247271  */
247272  /* */
247273 
247275  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
247276 
247277  // JJW (10/16/2008): Changed to a single function in Node.code, and put
247278  // getVariant() in #if 0 block to prevent confusing Doxygen
247279 #if 0
247280 
247281  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
247283  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
247284 #endif
247285  /* */
247286 
247287 
247288 
247289 
247290  public:
247291  /* name Traversal Support Functions
247292  \brief Traversal support functions ... incomplete-documentation
247293 
247294  These functions have been made public as part of the design, but they are suggested for internal use
247295  or by particularly knowledgable users for specialized tools or applications.
247296  */
247297  /* */
247298 
247299  // DQ (11/26/2005): Support for visitor pattern mechanims
247300  // (inferior to ROSE traversal mechanism, experimental).
247304 
247305  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
247307  virtual void accept (ROSE_VisitorPattern & visitor) override;
247308 
247309  // DQ (12/26/2005): Support for traversal based on the memory pool
247312  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
247313 
247316  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
247317 
247318  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
247319  // This traversal helps support internal tools that call static member functions.
247320  // note: this function operates on the memory pools.
247323  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
247324  /* */
247325 
247326 
247327  public:
247328  /* name Memory Allocation Functions
247329  \brief Memory allocations functions ... incomplete-documentation
247330 
247331  These functions have been made public as part of the design, but they are suggested for internal use
247332  or by particularly knowledgable users for specialized tools or applications.
247333  */
247334  /* */
247335 
247346  virtual bool isInMemoryPool() override;
247347 
247358  virtual void checkDataMemberPointersIfInMemoryPool() override;
247359 
247360  // DQ (4/30/2006): Modified to be a const function.
247375  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
247376 
247386  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
247387 
247399  virtual long getChildIndex( SgNode* childNode ) const override;
247400 
247401  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
247402  // comment here (changed to be a C style comment and not be a doxygen comment).
247403  /* \brief Constructor for use by AST File I/O Mechanism
247404 
247405  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
247406  which obtained via fast binary file I/O from disk.
247407  */
247408  // SgBitOrOp( SgBitOrOpStorageClass& source );
247409 
247410 
247411 
247412 
247413 
247414  // JH (10/24/2005): methods added to support the ast file IO
247415  private:
247416 
247417  /* name AST Memory Allocation Support Functions
247418  \brief Memory allocations support....
247419 
247420  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
247421  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
247422  and support the AST File I/O Mechanism.
247423  */
247424  /* */
247425 
247426  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
247427  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
247428  that I use the same type everywhere, if any changes are made. THe second one declares the type
247429  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
247430  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
247431  a correspinding one in the AST_FILE_IO class!
247432  */
247433  // DQ (9/2/2015): This typedef is no longer used, we can't define the
247434  // comment here (changed to be a C style comment and not be a doxygen comment).
247435  /* \brief Typedef used for low level memory access.
247436  */
247437  // typedef unsigned char* TestType;
247438 
247439  // DQ (9/2/2015): This typedef is no longer used, we can't define the
247440  // comment here (changed to be a C style comment and not be a doxygen comment).
247441  /* \brief Typedef used to hold memory addresses as values.
247442  */
247443  // typedef unsigned long AddressType;
247444 
247445 
247446 
247447  // necessary, to have direct access to the p_freepointer and the private methods !
247449  friend class AST_FILE_IO;
247450 
247452  friend class SgBitOrOpStorageClass;
247453 
247455  friend class AstSpecificDataManagingClass;
247456 
247458  friend class AstSpecificDataManagingClassStorageClass;
247459 
247460  public:
247462  SgBitOrOp( const SgBitOrOpStorageClass& source );
247463 
247464  // private: // JJW hack
247465  /*
247466  name AST Memory Allocation Support Variables
247467  Memory allocations support variables
247468 
247469  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
247470  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
247471  and support the AST File I/O Mechanism.
247472  */
247473  /* */
247474 
247475  public:
247476 
247477  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
247478  // to current node (so that it will work cleanly with build functions to specify patterns).
247479  // virtual SgNode* addRegExpAttribute();
247485  SgBitOrOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
247486 
247487 // *** COMMON CODE SECTION ENDS HERE ***
247488 
247489 
247490 // End of memberFunctionString
247491 // Start of memberFunctionString
247492 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
247493 
247494  // the generated cast function
247495  // friend ROSE_DLL_API SgBitOrOp* isSgBitOrOp ( SgNode* s );
247496 
247497  typedef SgBinaryOp base_node_type;
247498 
247499 
247500 // End of memberFunctionString
247501 // Start of memberFunctionString
247502 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
247503 
247504  void post_construction_initialization() override;
247505 
247506 
247507 // End of memberFunctionString
247508 // Start of memberFunctionString
247509 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
247510 
247511  int precedence() const override { return 6; }
247512 
247513 
247514 // End of memberFunctionString
247515 
247516 
247517  public:
247518  virtual ~SgBitOrOp();
247519 
247520 
247521  public:
247522  SgBitOrOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
247523  SgBitOrOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
247524 
247525  protected:
247526 
247527 
247528 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
247529 
247530 
247531  };
247532 #endif
247533 
247534 // postdeclarations for SgBitOrOp
247535 
247536 /* #line 247537 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
247537 
247538 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
247539 
247540 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
247541 
247542 
247543 /* #line 247544 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
247544 
247545 
247546 
247547 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
247548 
247549 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
247550 // This code is automatically generated for each
247551 // terminal and non-terminal within the defined
247552 // grammar. There is a simple way to change the
247553 // code to fix bugs etc. See the ROSE README file
247554 // for directions.
247555 
247556 // tps: (02/22/2010): Adding DLL export requirements
247557 #include "rosedll.h"
247558 
247559 // predeclarations for SgBitEqvOp
247560 
247561 /* #line 247562 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
247562 
247563 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
247564 
247565 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
247566 
247567 #if 1
247568 // Class Definition for SgBitEqvOp
247569 class ROSE_DLL_API SgBitEqvOp : public SgBinaryOp
247570  {
247571  public:
247572 
247573 
247574 /* #line 247575 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
247575 
247576  virtual SgNode* copy ( SgCopyHelp& help) const override;
247577 // Start of memberFunctionString
247578 /* #line 945 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
247579 
247580 
247581 
247582 // End of memberFunctionString
247583 // Start of memberFunctionString
247584 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
247585 
247586 // *** COMMON CODE SECTION BEGINS HERE ***
247587 
247588  public:
247589 
247590  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
247591  // and not required which is required to match the other aspects of the copy mechanism code generation.
247592  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
247593  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
247594  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
247595  // virtual SgNode* copy ( const SgCopyHelp & help) const;
247596 
247598  virtual std::string class_name() const override;
247599 
247601  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
247602 
247604  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
247605  // static const VariantT static_variant = V_SgBitEqvOp;
247606  enum { static_variant = V_SgBitEqvOp };
247607 
247608  /* the generated cast function */
247610  ROSE_DLL_API friend SgBitEqvOp* isSgBitEqvOp( SgNode * s );
247611 
247613  ROSE_DLL_API friend const SgBitEqvOp* isSgBitEqvOp( const SgNode * s );
247614 
247615  // ******************************************
247616  // * Memory Pool / New / Delete
247617  // ******************************************
247618 
247619  public:
247621  static const unsigned pool_size; //
247623  static std::vector<unsigned char *> pools; //
247625  static SgBitEqvOp * next_node; //
247626 
247628  static unsigned long initializeStorageClassArray(SgBitEqvOpStorageClass *); //
247629 
247631  static void clearMemoryPool(); //
247632  static void deleteMemoryPool(); //
247633 
247635  static void extendMemoryPoolForFileIO(); //
247636 
247638  static SgBitEqvOp * getPointerFromGlobalIndex(unsigned long); //
247640  static SgBitEqvOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
247641 
247643  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
247645  static void resetValidFreepointers(); //
247647  static unsigned long getNumberOfLastValidPointer(); //
247648 
247649 
247650 #if defined(INLINE_FUNCTIONS)
247651 
247652  inline void *operator new (size_t size);
247653 #else
247654 
247655  void *operator new (size_t size);
247656 #endif
247657 
247658  void operator delete (void* pointer, size_t size);
247659 
247660  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
247661  void operator delete (void* pointer)
247662  {
247663  // This is the generated delete operator...
247664  SgBitEqvOp::operator delete (pointer,sizeof(SgBitEqvOp));
247665  }
247666 
247668  static size_t numberOfNodes();
247669 
247671  static size_t memoryUsage();
247672 
247673  // End of scope which started in IR nodes specific code
247674  /* */
247675 
247676  /* name Internal Functions
247677  \brief Internal functions ... incomplete-documentation
247678 
247679  These functions have been made public as part of the design, but they are suggested for internal use
247680  or by particularly knowledgeable users for specialized tools or applications.
247681 
247682  \internal We could not make these private because they are required by user for special purposes. And
247683  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
247684 
247685  */
247686 
247687  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
247688  // overridden in every class by *generated* implementation
247690  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
247691  // MS: 06/28/02 container of names of variables or container indices
247692  // used used in the traversal to access AST successor nodes
247693  // overridden in every class by *generated* implementation
247696  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
247697 
247698  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
247699  // than all the vector copies. The implementation for these functions is generated for each class.
247701  virtual size_t get_numberOfTraversalSuccessors() override;
247703  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
247705  virtual size_t get_childIndex(SgNode *child) override;
247706 
247707 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
247708  // MS: 08/16/2002 method for generating RTI information
247710  virtual RTIReturnType roseRTI() override;
247711 #endif
247712  /* */
247713 
247714 
247715 
247716  /* name Deprecated Functions
247717  \brief Deprecated functions ... incomplete-documentation
247718 
247719  These functions have been deprecated from use.
247720  */
247721  /* */
247722 
247724  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
247725 
247726  // JJW (10/16/2008): Changed to a single function in Node.code, and put
247727  // getVariant() in #if 0 block to prevent confusing Doxygen
247728 #if 0
247729 
247730  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
247732  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
247733 #endif
247734  /* */
247735 
247736 
247737 
247738 
247739  public:
247740  /* name Traversal Support Functions
247741  \brief Traversal support functions ... incomplete-documentation
247742 
247743  These functions have been made public as part of the design, but they are suggested for internal use
247744  or by particularly knowledgable users for specialized tools or applications.
247745  */
247746  /* */
247747 
247748  // DQ (11/26/2005): Support for visitor pattern mechanims
247749  // (inferior to ROSE traversal mechanism, experimental).
247753 
247754  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
247756  virtual void accept (ROSE_VisitorPattern & visitor) override;
247757 
247758  // DQ (12/26/2005): Support for traversal based on the memory pool
247761  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
247762 
247765  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
247766 
247767  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
247768  // This traversal helps support internal tools that call static member functions.
247769  // note: this function operates on the memory pools.
247772  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
247773  /* */
247774 
247775 
247776  public:
247777  /* name Memory Allocation Functions
247778  \brief Memory allocations functions ... incomplete-documentation
247779 
247780  These functions have been made public as part of the design, but they are suggested for internal use
247781  or by particularly knowledgable users for specialized tools or applications.
247782  */
247783  /* */
247784 
247795  virtual bool isInMemoryPool() override;
247796 
247807  virtual void checkDataMemberPointersIfInMemoryPool() override;
247808 
247809  // DQ (4/30/2006): Modified to be a const function.
247824  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
247825 
247835  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
247836 
247848  virtual long getChildIndex( SgNode* childNode ) const override;
247849 
247850  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
247851  // comment here (changed to be a C style comment and not be a doxygen comment).
247852  /* \brief Constructor for use by AST File I/O Mechanism
247853 
247854  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
247855  which obtained via fast binary file I/O from disk.
247856  */
247857  // SgBitEqvOp( SgBitEqvOpStorageClass& source );
247858 
247859 
247860 
247861 
247862 
247863  // JH (10/24/2005): methods added to support the ast file IO
247864  private:
247865 
247866  /* name AST Memory Allocation Support Functions
247867  \brief Memory allocations support....
247868 
247869  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
247870  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
247871  and support the AST File I/O Mechanism.
247872  */
247873  /* */
247874 
247875  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
247876  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
247877  that I use the same type everywhere, if any changes are made. THe second one declares the type
247878  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
247879  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
247880  a correspinding one in the AST_FILE_IO class!
247881  */
247882  // DQ (9/2/2015): This typedef is no longer used, we can't define the
247883  // comment here (changed to be a C style comment and not be a doxygen comment).
247884  /* \brief Typedef used for low level memory access.
247885  */
247886  // typedef unsigned char* TestType;
247887 
247888  // DQ (9/2/2015): This typedef is no longer used, we can't define the
247889  // comment here (changed to be a C style comment and not be a doxygen comment).
247890  /* \brief Typedef used to hold memory addresses as values.
247891  */
247892  // typedef unsigned long AddressType;
247893 
247894 
247895 
247896  // necessary, to have direct access to the p_freepointer and the private methods !
247898  friend class AST_FILE_IO;
247899 
247901  friend class SgBitEqvOpStorageClass;
247902 
247904  friend class AstSpecificDataManagingClass;
247905 
247907  friend class AstSpecificDataManagingClassStorageClass;
247908 
247909  public:
247911  SgBitEqvOp( const SgBitEqvOpStorageClass& source );
247912 
247913  // private: // JJW hack
247914  /*
247915  name AST Memory Allocation Support Variables
247916  Memory allocations support variables
247917 
247918  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
247919  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
247920  and support the AST File I/O Mechanism.
247921  */
247922  /* */
247923 
247924  public:
247925 
247926  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
247927  // to current node (so that it will work cleanly with build functions to specify patterns).
247928  // virtual SgNode* addRegExpAttribute();
247934  SgBitEqvOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
247935 
247936 // *** COMMON CODE SECTION ENDS HERE ***
247937 
247938 
247939 // End of memberFunctionString
247940 // Start of memberFunctionString
247941 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
247942 
247943  // the generated cast function
247944  // friend ROSE_DLL_API SgBitEqvOp* isSgBitEqvOp ( SgNode* s );
247945 
247946  typedef SgBinaryOp base_node_type;
247947 
247948 
247949 // End of memberFunctionString
247950 // Start of memberFunctionString
247951 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
247952 
247953  void post_construction_initialization() override;
247954 
247955 
247956 // End of memberFunctionString
247957 // Start of memberFunctionString
247958 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
247959 
247960  int precedence() const override { return 6; }
247961 
247962 
247963 // End of memberFunctionString
247964 
247965 
247966  public:
247967  virtual ~SgBitEqvOp();
247968 
247969 
247970  public:
247971  SgBitEqvOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
247972  SgBitEqvOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
247973 
247974  protected:
247975 
247976 
247977 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
247978 
247979 
247980  };
247981 #endif
247982 
247983 // postdeclarations for SgBitEqvOp
247984 
247985 /* #line 247986 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
247986 
247987 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
247988 
247989 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
247990 
247991 
247992 /* #line 247993 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
247993 
247994 
247995 
247996 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
247997 
247998 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
247999 // This code is automatically generated for each
248000 // terminal and non-terminal within the defined
248001 // grammar. There is a simple way to change the
248002 // code to fix bugs etc. See the ROSE README file
248003 // for directions.
248004 
248005 // tps: (02/22/2010): Adding DLL export requirements
248006 #include "rosedll.h"
248007 
248008 // predeclarations for SgCommaOpExp
248009 
248010 /* #line 248011 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
248011 
248012 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
248013 
248014 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
248015 
248016 #if 1
248017 // Class Definition for SgCommaOpExp
248018 class ROSE_DLL_API SgCommaOpExp : public SgBinaryOp
248019  {
248020  public:
248021 
248022 
248023 /* #line 248024 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
248024 
248025  virtual SgNode* copy ( SgCopyHelp& help) const override;
248026 // Start of memberFunctionString
248027 /* #line 949 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
248028 
248029 
248030  // get the type associated with this expression (using the rhs)
248031  virtual SgType* get_type() const override;
248032 
248033  // get lvalue
248034  virtual bool isLValue() const override;
248035  virtual bool isChildUsedAsLValue(const SgExpression* child) const override; // INTERNAL Recursively call up the chain to answer the child
248036 
248037 
248038 
248039 // End of memberFunctionString
248040 // Start of memberFunctionString
248041 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
248042 
248043 // *** COMMON CODE SECTION BEGINS HERE ***
248044 
248045  public:
248046 
248047  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
248048  // and not required which is required to match the other aspects of the copy mechanism code generation.
248049  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
248050  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
248051  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
248052  // virtual SgNode* copy ( const SgCopyHelp & help) const;
248053 
248055  virtual std::string class_name() const override;
248056 
248058  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
248059 
248061  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
248062  // static const VariantT static_variant = V_SgCommaOpExp;
248063  enum { static_variant = V_SgCommaOpExp };
248064 
248065  /* the generated cast function */
248067  ROSE_DLL_API friend SgCommaOpExp* isSgCommaOpExp( SgNode * s );
248068 
248070  ROSE_DLL_API friend const SgCommaOpExp* isSgCommaOpExp( const SgNode * s );
248071 
248072  // ******************************************
248073  // * Memory Pool / New / Delete
248074  // ******************************************
248075 
248076  public:
248078  static const unsigned pool_size; //
248080  static std::vector<unsigned char *> pools; //
248082  static SgCommaOpExp * next_node; //
248083 
248085  static unsigned long initializeStorageClassArray(SgCommaOpExpStorageClass *); //
248086 
248088  static void clearMemoryPool(); //
248089  static void deleteMemoryPool(); //
248090 
248092  static void extendMemoryPoolForFileIO(); //
248093 
248095  static SgCommaOpExp * getPointerFromGlobalIndex(unsigned long); //
248097  static SgCommaOpExp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
248098 
248100  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
248102  static void resetValidFreepointers(); //
248104  static unsigned long getNumberOfLastValidPointer(); //
248105 
248106 
248107 #if defined(INLINE_FUNCTIONS)
248108 
248109  inline void *operator new (size_t size);
248110 #else
248111 
248112  void *operator new (size_t size);
248113 #endif
248114 
248115  void operator delete (void* pointer, size_t size);
248116 
248117  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
248118  void operator delete (void* pointer)
248119  {
248120  // This is the generated delete operator...
248121  SgCommaOpExp::operator delete (pointer,sizeof(SgCommaOpExp));
248122  }
248123 
248125  static size_t numberOfNodes();
248126 
248128  static size_t memoryUsage();
248129 
248130  // End of scope which started in IR nodes specific code
248131  /* */
248132 
248133  /* name Internal Functions
248134  \brief Internal functions ... incomplete-documentation
248135 
248136  These functions have been made public as part of the design, but they are suggested for internal use
248137  or by particularly knowledgeable users for specialized tools or applications.
248138 
248139  \internal We could not make these private because they are required by user for special purposes. And
248140  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
248141 
248142  */
248143 
248144  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
248145  // overridden in every class by *generated* implementation
248147  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
248148  // MS: 06/28/02 container of names of variables or container indices
248149  // used used in the traversal to access AST successor nodes
248150  // overridden in every class by *generated* implementation
248153  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
248154 
248155  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
248156  // than all the vector copies. The implementation for these functions is generated for each class.
248158  virtual size_t get_numberOfTraversalSuccessors() override;
248160  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
248162  virtual size_t get_childIndex(SgNode *child) override;
248163 
248164 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
248165  // MS: 08/16/2002 method for generating RTI information
248167  virtual RTIReturnType roseRTI() override;
248168 #endif
248169  /* */
248170 
248171 
248172 
248173  /* name Deprecated Functions
248174  \brief Deprecated functions ... incomplete-documentation
248175 
248176  These functions have been deprecated from use.
248177  */
248178  /* */
248179 
248181  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
248182 
248183  // JJW (10/16/2008): Changed to a single function in Node.code, and put
248184  // getVariant() in #if 0 block to prevent confusing Doxygen
248185 #if 0
248186 
248187  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
248189  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
248190 #endif
248191  /* */
248192 
248193 
248194 
248195 
248196  public:
248197  /* name Traversal Support Functions
248198  \brief Traversal support functions ... incomplete-documentation
248199 
248200  These functions have been made public as part of the design, but they are suggested for internal use
248201  or by particularly knowledgable users for specialized tools or applications.
248202  */
248203  /* */
248204 
248205  // DQ (11/26/2005): Support for visitor pattern mechanims
248206  // (inferior to ROSE traversal mechanism, experimental).
248210 
248211  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
248213  virtual void accept (ROSE_VisitorPattern & visitor) override;
248214 
248215  // DQ (12/26/2005): Support for traversal based on the memory pool
248218  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
248219 
248222  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
248223 
248224  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
248225  // This traversal helps support internal tools that call static member functions.
248226  // note: this function operates on the memory pools.
248229  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
248230  /* */
248231 
248232 
248233  public:
248234  /* name Memory Allocation Functions
248235  \brief Memory allocations functions ... incomplete-documentation
248236 
248237  These functions have been made public as part of the design, but they are suggested for internal use
248238  or by particularly knowledgable users for specialized tools or applications.
248239  */
248240  /* */
248241 
248252  virtual bool isInMemoryPool() override;
248253 
248264  virtual void checkDataMemberPointersIfInMemoryPool() override;
248265 
248266  // DQ (4/30/2006): Modified to be a const function.
248281  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
248282 
248292  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
248293 
248305  virtual long getChildIndex( SgNode* childNode ) const override;
248306 
248307  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
248308  // comment here (changed to be a C style comment and not be a doxygen comment).
248309  /* \brief Constructor for use by AST File I/O Mechanism
248310 
248311  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
248312  which obtained via fast binary file I/O from disk.
248313  */
248314  // SgCommaOpExp( SgCommaOpExpStorageClass& source );
248315 
248316 
248317 
248318 
248319 
248320  // JH (10/24/2005): methods added to support the ast file IO
248321  private:
248322 
248323  /* name AST Memory Allocation Support Functions
248324  \brief Memory allocations support....
248325 
248326  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
248327  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
248328  and support the AST File I/O Mechanism.
248329  */
248330  /* */
248331 
248332  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
248333  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
248334  that I use the same type everywhere, if any changes are made. THe second one declares the type
248335  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
248336  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
248337  a correspinding one in the AST_FILE_IO class!
248338  */
248339  // DQ (9/2/2015): This typedef is no longer used, we can't define the
248340  // comment here (changed to be a C style comment and not be a doxygen comment).
248341  /* \brief Typedef used for low level memory access.
248342  */
248343  // typedef unsigned char* TestType;
248344 
248345  // DQ (9/2/2015): This typedef is no longer used, we can't define the
248346  // comment here (changed to be a C style comment and not be a doxygen comment).
248347  /* \brief Typedef used to hold memory addresses as values.
248348  */
248349  // typedef unsigned long AddressType;
248350 
248351 
248352 
248353  // necessary, to have direct access to the p_freepointer and the private methods !
248355  friend class AST_FILE_IO;
248356 
248358  friend class SgCommaOpExpStorageClass;
248359 
248361  friend class AstSpecificDataManagingClass;
248362 
248364  friend class AstSpecificDataManagingClassStorageClass;
248365 
248366  public:
248368  SgCommaOpExp( const SgCommaOpExpStorageClass& source );
248369 
248370  // private: // JJW hack
248371  /*
248372  name AST Memory Allocation Support Variables
248373  Memory allocations support variables
248374 
248375  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
248376  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
248377  and support the AST File I/O Mechanism.
248378  */
248379  /* */
248380 
248381  public:
248382 
248383  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
248384  // to current node (so that it will work cleanly with build functions to specify patterns).
248385  // virtual SgNode* addRegExpAttribute();
248391  SgCommaOpExp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
248392 
248393 // *** COMMON CODE SECTION ENDS HERE ***
248394 
248395 
248396 // End of memberFunctionString
248397 // Start of memberFunctionString
248398 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
248399 
248400  // the generated cast function
248401  // friend ROSE_DLL_API SgCommaOpExp* isSgCommaOpExp ( SgNode* s );
248402 
248403  typedef SgBinaryOp base_node_type;
248404 
248405 
248406 // End of memberFunctionString
248407 // Start of memberFunctionString
248408 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
248409 
248410  void post_construction_initialization() override;
248411 
248412 
248413 // End of memberFunctionString
248414 // Start of memberFunctionString
248415 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
248416 
248417  int precedence() const override { return 1; }
248418 
248419 
248420 // End of memberFunctionString
248421 
248422 
248423  public:
248424  virtual ~SgCommaOpExp();
248425 
248426 
248427  public:
248428  SgCommaOpExp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
248429  SgCommaOpExp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
248430 
248431  protected:
248432 
248433 
248434 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
248435 
248436 
248437  };
248438 #endif
248439 
248440 // postdeclarations for SgCommaOpExp
248441 
248442 /* #line 248443 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
248443 
248444 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
248445 
248446 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
248447 
248448 
248449 /* #line 248450 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
248450 
248451 
248452 
248453 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
248454 
248455 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
248456 // This code is automatically generated for each
248457 // terminal and non-terminal within the defined
248458 // grammar. There is a simple way to change the
248459 // code to fix bugs etc. See the ROSE README file
248460 // for directions.
248461 
248462 // tps: (02/22/2010): Adding DLL export requirements
248463 #include "rosedll.h"
248464 
248465 // predeclarations for SgLshiftOp
248466 
248467 /* #line 248468 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
248468 
248469 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
248470 
248471 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
248472 
248473 #if 1
248474 // Class Definition for SgLshiftOp
248475 class ROSE_DLL_API SgLshiftOp : public SgBinaryOp
248476  {
248477  public:
248478 
248479 
248480 /* #line 248481 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
248481 
248482  virtual SgNode* copy ( SgCopyHelp& help) const override;
248483 // Start of memberFunctionString
248484 /* #line 961 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
248485 
248486 
248487 
248488 // End of memberFunctionString
248489 // Start of memberFunctionString
248490 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
248491 
248492 // *** COMMON CODE SECTION BEGINS HERE ***
248493 
248494  public:
248495 
248496  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
248497  // and not required which is required to match the other aspects of the copy mechanism code generation.
248498  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
248499  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
248500  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
248501  // virtual SgNode* copy ( const SgCopyHelp & help) const;
248502 
248504  virtual std::string class_name() const override;
248505 
248507  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
248508 
248510  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
248511  // static const VariantT static_variant = V_SgLshiftOp;
248512  enum { static_variant = V_SgLshiftOp };
248513 
248514  /* the generated cast function */
248516  ROSE_DLL_API friend SgLshiftOp* isSgLshiftOp( SgNode * s );
248517 
248519  ROSE_DLL_API friend const SgLshiftOp* isSgLshiftOp( const SgNode * s );
248520 
248521  // ******************************************
248522  // * Memory Pool / New / Delete
248523  // ******************************************
248524 
248525  public:
248527  static const unsigned pool_size; //
248529  static std::vector<unsigned char *> pools; //
248531  static SgLshiftOp * next_node; //
248532 
248534  static unsigned long initializeStorageClassArray(SgLshiftOpStorageClass *); //
248535 
248537  static void clearMemoryPool(); //
248538  static void deleteMemoryPool(); //
248539 
248541  static void extendMemoryPoolForFileIO(); //
248542 
248544  static SgLshiftOp * getPointerFromGlobalIndex(unsigned long); //
248546  static SgLshiftOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
248547 
248549  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
248551  static void resetValidFreepointers(); //
248553  static unsigned long getNumberOfLastValidPointer(); //
248554 
248555 
248556 #if defined(INLINE_FUNCTIONS)
248557 
248558  inline void *operator new (size_t size);
248559 #else
248560 
248561  void *operator new (size_t size);
248562 #endif
248563 
248564  void operator delete (void* pointer, size_t size);
248565 
248566  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
248567  void operator delete (void* pointer)
248568  {
248569  // This is the generated delete operator...
248570  SgLshiftOp::operator delete (pointer,sizeof(SgLshiftOp));
248571  }
248572 
248574  static size_t numberOfNodes();
248575 
248577  static size_t memoryUsage();
248578 
248579  // End of scope which started in IR nodes specific code
248580  /* */
248581 
248582  /* name Internal Functions
248583  \brief Internal functions ... incomplete-documentation
248584 
248585  These functions have been made public as part of the design, but they are suggested for internal use
248586  or by particularly knowledgeable users for specialized tools or applications.
248587 
248588  \internal We could not make these private because they are required by user for special purposes. And
248589  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
248590 
248591  */
248592 
248593  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
248594  // overridden in every class by *generated* implementation
248596  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
248597  // MS: 06/28/02 container of names of variables or container indices
248598  // used used in the traversal to access AST successor nodes
248599  // overridden in every class by *generated* implementation
248602  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
248603 
248604  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
248605  // than all the vector copies. The implementation for these functions is generated for each class.
248607  virtual size_t get_numberOfTraversalSuccessors() override;
248609  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
248611  virtual size_t get_childIndex(SgNode *child) override;
248612 
248613 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
248614  // MS: 08/16/2002 method for generating RTI information
248616  virtual RTIReturnType roseRTI() override;
248617 #endif
248618  /* */
248619 
248620 
248621 
248622  /* name Deprecated Functions
248623  \brief Deprecated functions ... incomplete-documentation
248624 
248625  These functions have been deprecated from use.
248626  */
248627  /* */
248628 
248630  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
248631 
248632  // JJW (10/16/2008): Changed to a single function in Node.code, and put
248633  // getVariant() in #if 0 block to prevent confusing Doxygen
248634 #if 0
248635 
248636  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
248638  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
248639 #endif
248640  /* */
248641 
248642 
248643 
248644 
248645  public:
248646  /* name Traversal Support Functions
248647  \brief Traversal support functions ... incomplete-documentation
248648 
248649  These functions have been made public as part of the design, but they are suggested for internal use
248650  or by particularly knowledgable users for specialized tools or applications.
248651  */
248652  /* */
248653 
248654  // DQ (11/26/2005): Support for visitor pattern mechanims
248655  // (inferior to ROSE traversal mechanism, experimental).
248659 
248660  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
248662  virtual void accept (ROSE_VisitorPattern & visitor) override;
248663 
248664  // DQ (12/26/2005): Support for traversal based on the memory pool
248667  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
248668 
248671  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
248672 
248673  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
248674  // This traversal helps support internal tools that call static member functions.
248675  // note: this function operates on the memory pools.
248678  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
248679  /* */
248680 
248681 
248682  public:
248683  /* name Memory Allocation Functions
248684  \brief Memory allocations functions ... incomplete-documentation
248685 
248686  These functions have been made public as part of the design, but they are suggested for internal use
248687  or by particularly knowledgable users for specialized tools or applications.
248688  */
248689  /* */
248690 
248701  virtual bool isInMemoryPool() override;
248702 
248713  virtual void checkDataMemberPointersIfInMemoryPool() override;
248714 
248715  // DQ (4/30/2006): Modified to be a const function.
248730  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
248731 
248741  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
248742 
248754  virtual long getChildIndex( SgNode* childNode ) const override;
248755 
248756  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
248757  // comment here (changed to be a C style comment and not be a doxygen comment).
248758  /* \brief Constructor for use by AST File I/O Mechanism
248759 
248760  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
248761  which obtained via fast binary file I/O from disk.
248762  */
248763  // SgLshiftOp( SgLshiftOpStorageClass& source );
248764 
248765 
248766 
248767 
248768 
248769  // JH (10/24/2005): methods added to support the ast file IO
248770  private:
248771 
248772  /* name AST Memory Allocation Support Functions
248773  \brief Memory allocations support....
248774 
248775  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
248776  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
248777  and support the AST File I/O Mechanism.
248778  */
248779  /* */
248780 
248781  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
248782  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
248783  that I use the same type everywhere, if any changes are made. THe second one declares the type
248784  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
248785  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
248786  a correspinding one in the AST_FILE_IO class!
248787  */
248788  // DQ (9/2/2015): This typedef is no longer used, we can't define the
248789  // comment here (changed to be a C style comment and not be a doxygen comment).
248790  /* \brief Typedef used for low level memory access.
248791  */
248792  // typedef unsigned char* TestType;
248793 
248794  // DQ (9/2/2015): This typedef is no longer used, we can't define the
248795  // comment here (changed to be a C style comment and not be a doxygen comment).
248796  /* \brief Typedef used to hold memory addresses as values.
248797  */
248798  // typedef unsigned long AddressType;
248799 
248800 
248801 
248802  // necessary, to have direct access to the p_freepointer and the private methods !
248804  friend class AST_FILE_IO;
248805 
248807  friend class SgLshiftOpStorageClass;
248808 
248810  friend class AstSpecificDataManagingClass;
248811 
248813  friend class AstSpecificDataManagingClassStorageClass;
248814 
248815  public:
248817  SgLshiftOp( const SgLshiftOpStorageClass& source );
248818 
248819  // private: // JJW hack
248820  /*
248821  name AST Memory Allocation Support Variables
248822  Memory allocations support variables
248823 
248824  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
248825  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
248826  and support the AST File I/O Mechanism.
248827  */
248828  /* */
248829 
248830  public:
248831 
248832  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
248833  // to current node (so that it will work cleanly with build functions to specify patterns).
248834  // virtual SgNode* addRegExpAttribute();
248840  SgLshiftOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
248841 
248842 // *** COMMON CODE SECTION ENDS HERE ***
248843 
248844 
248845 // End of memberFunctionString
248846 // Start of memberFunctionString
248847 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
248848 
248849  // the generated cast function
248850  // friend ROSE_DLL_API SgLshiftOp* isSgLshiftOp ( SgNode* s );
248851 
248852  typedef SgBinaryOp base_node_type;
248853 
248854 
248855 // End of memberFunctionString
248856 // Start of memberFunctionString
248857 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
248858 
248859  void post_construction_initialization() override;
248860 
248861 
248862 // End of memberFunctionString
248863 // Start of memberFunctionString
248864 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
248865 
248866  int precedence() const override { return 11; }
248867 
248868 
248869 // End of memberFunctionString
248870 
248871 
248872  public:
248873  virtual ~SgLshiftOp();
248874 
248875 
248876  public:
248877  SgLshiftOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
248878  SgLshiftOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
248879 
248880  protected:
248881 
248882 
248883 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
248884 
248885 
248886  };
248887 #endif
248888 
248889 // postdeclarations for SgLshiftOp
248890 
248891 /* #line 248892 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
248892 
248893 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
248894 
248895 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
248896 
248897 
248898 /* #line 248899 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
248899 
248900 
248901 
248902 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
248903 
248904 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
248905 // This code is automatically generated for each
248906 // terminal and non-terminal within the defined
248907 // grammar. There is a simple way to change the
248908 // code to fix bugs etc. See the ROSE README file
248909 // for directions.
248910 
248911 // tps: (02/22/2010): Adding DLL export requirements
248912 #include "rosedll.h"
248913 
248914 // predeclarations for SgRshiftOp
248915 
248916 /* #line 248917 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
248917 
248918 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
248919 
248920 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
248921 
248922 #if 1
248923 // Class Definition for SgRshiftOp
248924 class ROSE_DLL_API SgRshiftOp : public SgBinaryOp
248925  {
248926  public:
248927 
248928 
248929 /* #line 248930 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
248930 
248931  virtual SgNode* copy ( SgCopyHelp& help) const override;
248932 // Start of memberFunctionString
248933 /* #line 965 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
248934 
248935 
248936 
248937 // End of memberFunctionString
248938 // Start of memberFunctionString
248939 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
248940 
248941 // *** COMMON CODE SECTION BEGINS HERE ***
248942 
248943  public:
248944 
248945  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
248946  // and not required which is required to match the other aspects of the copy mechanism code generation.
248947  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
248948  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
248949  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
248950  // virtual SgNode* copy ( const SgCopyHelp & help) const;
248951 
248953  virtual std::string class_name() const override;
248954 
248956  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
248957 
248959  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
248960  // static const VariantT static_variant = V_SgRshiftOp;
248961  enum { static_variant = V_SgRshiftOp };
248962 
248963  /* the generated cast function */
248965  ROSE_DLL_API friend SgRshiftOp* isSgRshiftOp( SgNode * s );
248966 
248968  ROSE_DLL_API friend const SgRshiftOp* isSgRshiftOp( const SgNode * s );
248969 
248970  // ******************************************
248971  // * Memory Pool / New / Delete
248972  // ******************************************
248973 
248974  public:
248976  static const unsigned pool_size; //
248978  static std::vector<unsigned char *> pools; //
248980  static SgRshiftOp * next_node; //
248981 
248983  static unsigned long initializeStorageClassArray(SgRshiftOpStorageClass *); //
248984 
248986  static void clearMemoryPool(); //
248987  static void deleteMemoryPool(); //
248988 
248990  static void extendMemoryPoolForFileIO(); //
248991 
248993  static SgRshiftOp * getPointerFromGlobalIndex(unsigned long); //
248995  static SgRshiftOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
248996 
248998  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
249000  static void resetValidFreepointers(); //
249002  static unsigned long getNumberOfLastValidPointer(); //
249003 
249004 
249005 #if defined(INLINE_FUNCTIONS)
249006 
249007  inline void *operator new (size_t size);
249008 #else
249009 
249010  void *operator new (size_t size);
249011 #endif
249012 
249013  void operator delete (void* pointer, size_t size);
249014 
249015  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
249016  void operator delete (void* pointer)
249017  {
249018  // This is the generated delete operator...
249019  SgRshiftOp::operator delete (pointer,sizeof(SgRshiftOp));
249020  }
249021 
249023  static size_t numberOfNodes();
249024 
249026  static size_t memoryUsage();
249027 
249028  // End of scope which started in IR nodes specific code
249029  /* */
249030 
249031  /* name Internal Functions
249032  \brief Internal functions ... incomplete-documentation
249033 
249034  These functions have been made public as part of the design, but they are suggested for internal use
249035  or by particularly knowledgeable users for specialized tools or applications.
249036 
249037  \internal We could not make these private because they are required by user for special purposes. And
249038  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
249039 
249040  */
249041 
249042  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
249043  // overridden in every class by *generated* implementation
249045  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
249046  // MS: 06/28/02 container of names of variables or container indices
249047  // used used in the traversal to access AST successor nodes
249048  // overridden in every class by *generated* implementation
249051  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
249052 
249053  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
249054  // than all the vector copies. The implementation for these functions is generated for each class.
249056  virtual size_t get_numberOfTraversalSuccessors() override;
249058  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
249060  virtual size_t get_childIndex(SgNode *child) override;
249061 
249062 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
249063  // MS: 08/16/2002 method for generating RTI information
249065  virtual RTIReturnType roseRTI() override;
249066 #endif
249067  /* */
249068 
249069 
249070 
249071  /* name Deprecated Functions
249072  \brief Deprecated functions ... incomplete-documentation
249073 
249074  These functions have been deprecated from use.
249075  */
249076  /* */
249077 
249079  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
249080 
249081  // JJW (10/16/2008): Changed to a single function in Node.code, and put
249082  // getVariant() in #if 0 block to prevent confusing Doxygen
249083 #if 0
249084 
249085  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
249087  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
249088 #endif
249089  /* */
249090 
249091 
249092 
249093 
249094  public:
249095  /* name Traversal Support Functions
249096  \brief Traversal support functions ... incomplete-documentation
249097 
249098  These functions have been made public as part of the design, but they are suggested for internal use
249099  or by particularly knowledgable users for specialized tools or applications.
249100  */
249101  /* */
249102 
249103  // DQ (11/26/2005): Support for visitor pattern mechanims
249104  // (inferior to ROSE traversal mechanism, experimental).
249108 
249109  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
249111  virtual void accept (ROSE_VisitorPattern & visitor) override;
249112 
249113  // DQ (12/26/2005): Support for traversal based on the memory pool
249116  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
249117 
249120  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
249121 
249122  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
249123  // This traversal helps support internal tools that call static member functions.
249124  // note: this function operates on the memory pools.
249127  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
249128  /* */
249129 
249130 
249131  public:
249132  /* name Memory Allocation Functions
249133  \brief Memory allocations functions ... incomplete-documentation
249134 
249135  These functions have been made public as part of the design, but they are suggested for internal use
249136  or by particularly knowledgable users for specialized tools or applications.
249137  */
249138  /* */
249139 
249150  virtual bool isInMemoryPool() override;
249151 
249162  virtual void checkDataMemberPointersIfInMemoryPool() override;
249163 
249164  // DQ (4/30/2006): Modified to be a const function.
249179  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
249180 
249190  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
249191 
249203  virtual long getChildIndex( SgNode* childNode ) const override;
249204 
249205  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
249206  // comment here (changed to be a C style comment and not be a doxygen comment).
249207  /* \brief Constructor for use by AST File I/O Mechanism
249208 
249209  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
249210  which obtained via fast binary file I/O from disk.
249211  */
249212  // SgRshiftOp( SgRshiftOpStorageClass& source );
249213 
249214 
249215 
249216 
249217 
249218  // JH (10/24/2005): methods added to support the ast file IO
249219  private:
249220 
249221  /* name AST Memory Allocation Support Functions
249222  \brief Memory allocations support....
249223 
249224  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
249225  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
249226  and support the AST File I/O Mechanism.
249227  */
249228  /* */
249229 
249230  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
249231  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
249232  that I use the same type everywhere, if any changes are made. THe second one declares the type
249233  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
249234  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
249235  a correspinding one in the AST_FILE_IO class!
249236  */
249237  // DQ (9/2/2015): This typedef is no longer used, we can't define the
249238  // comment here (changed to be a C style comment and not be a doxygen comment).
249239  /* \brief Typedef used for low level memory access.
249240  */
249241  // typedef unsigned char* TestType;
249242 
249243  // DQ (9/2/2015): This typedef is no longer used, we can't define the
249244  // comment here (changed to be a C style comment and not be a doxygen comment).
249245  /* \brief Typedef used to hold memory addresses as values.
249246  */
249247  // typedef unsigned long AddressType;
249248 
249249 
249250 
249251  // necessary, to have direct access to the p_freepointer and the private methods !
249253  friend class AST_FILE_IO;
249254 
249256  friend class SgRshiftOpStorageClass;
249257 
249259  friend class AstSpecificDataManagingClass;
249260 
249262  friend class AstSpecificDataManagingClassStorageClass;
249263 
249264  public:
249266  SgRshiftOp( const SgRshiftOpStorageClass& source );
249267 
249268  // private: // JJW hack
249269  /*
249270  name AST Memory Allocation Support Variables
249271  Memory allocations support variables
249272 
249273  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
249274  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
249275  and support the AST File I/O Mechanism.
249276  */
249277  /* */
249278 
249279  public:
249280 
249281  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
249282  // to current node (so that it will work cleanly with build functions to specify patterns).
249283  // virtual SgNode* addRegExpAttribute();
249289  SgRshiftOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
249290 
249291 // *** COMMON CODE SECTION ENDS HERE ***
249292 
249293 
249294 // End of memberFunctionString
249295 // Start of memberFunctionString
249296 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
249297 
249298  // the generated cast function
249299  // friend ROSE_DLL_API SgRshiftOp* isSgRshiftOp ( SgNode* s );
249300 
249301  typedef SgBinaryOp base_node_type;
249302 
249303 
249304 // End of memberFunctionString
249305 // Start of memberFunctionString
249306 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
249307 
249308  void post_construction_initialization() override;
249309 
249310 
249311 // End of memberFunctionString
249312 // Start of memberFunctionString
249313 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
249314 
249315  int precedence() const override { return 11; }
249316 
249317 
249318 // End of memberFunctionString
249319 
249320 
249321  public:
249322  virtual ~SgRshiftOp();
249323 
249324 
249325  public:
249326  SgRshiftOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
249327  SgRshiftOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
249328 
249329  protected:
249330 
249331 
249332 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
249333 
249334 
249335  };
249336 #endif
249337 
249338 // postdeclarations for SgRshiftOp
249339 
249340 /* #line 249341 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
249341 
249342 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
249343 
249344 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
249345 
249346 
249347 /* #line 249348 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
249348 
249349 
249350 
249351 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
249352 
249353 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
249354 // This code is automatically generated for each
249355 // terminal and non-terminal within the defined
249356 // grammar. There is a simple way to change the
249357 // code to fix bugs etc. See the ROSE README file
249358 // for directions.
249359 
249360 // tps: (02/22/2010): Adding DLL export requirements
249361 #include "rosedll.h"
249362 
249363 // predeclarations for SgPntrArrRefExp
249364 
249365 /* #line 249366 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
249366 
249367 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
249368 
249369 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
249370 
249371 #if 1
249372 // Class Definition for SgPntrArrRefExp
249373 class ROSE_DLL_API SgPntrArrRefExp : public SgBinaryOp
249374  {
249375  public:
249376 
249377 
249378 /* #line 249379 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
249379 
249380  virtual SgNode* copy ( SgCopyHelp& help) const override;
249381 // Start of memberFunctionString
249382 /* #line 1283 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
249383 
249384  // DQ (1/16/2006): Added to support special version of get_type.
249385  // returns get_lhs_operand()->get_type() (maybe we should call get_base_type() ???)
249386  SgType* get_type() const override;
249387 
249388  // get lvalue
249389  virtual bool isLValue() const override;
249390  virtual bool isChildUsedAsLValue(const SgExpression* child) const override; // INTERNAL Recursively call up the chain to answer the child
249391 
249392 
249393 
249394 // End of memberFunctionString
249395 // Start of memberFunctionString
249396 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
249397 
249398 // *** COMMON CODE SECTION BEGINS HERE ***
249399 
249400  public:
249401 
249402  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
249403  // and not required which is required to match the other aspects of the copy mechanism code generation.
249404  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
249405  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
249406  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
249407  // virtual SgNode* copy ( const SgCopyHelp & help) const;
249408 
249410  virtual std::string class_name() const override;
249411 
249413  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
249414 
249416  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
249417  // static const VariantT static_variant = V_SgPntrArrRefExp;
249418  enum { static_variant = V_SgPntrArrRefExp };
249419 
249420  /* the generated cast function */
249422  ROSE_DLL_API friend SgPntrArrRefExp* isSgPntrArrRefExp( SgNode * s );
249423 
249425  ROSE_DLL_API friend const SgPntrArrRefExp* isSgPntrArrRefExp( const SgNode * s );
249426 
249427  // ******************************************
249428  // * Memory Pool / New / Delete
249429  // ******************************************
249430 
249431  public:
249433  static const unsigned pool_size; //
249435  static std::vector<unsigned char *> pools; //
249437  static SgPntrArrRefExp * next_node; //
249438 
249440  static unsigned long initializeStorageClassArray(SgPntrArrRefExpStorageClass *); //
249441 
249443  static void clearMemoryPool(); //
249444  static void deleteMemoryPool(); //
249445 
249447  static void extendMemoryPoolForFileIO(); //
249448 
249450  static SgPntrArrRefExp * getPointerFromGlobalIndex(unsigned long); //
249452  static SgPntrArrRefExp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
249453 
249455  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
249457  static void resetValidFreepointers(); //
249459  static unsigned long getNumberOfLastValidPointer(); //
249460 
249461 
249462 #if defined(INLINE_FUNCTIONS)
249463 
249464  inline void *operator new (size_t size);
249465 #else
249466 
249467  void *operator new (size_t size);
249468 #endif
249469 
249470  void operator delete (void* pointer, size_t size);
249471 
249472  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
249473  void operator delete (void* pointer)
249474  {
249475  // This is the generated delete operator...
249476  SgPntrArrRefExp::operator delete (pointer,sizeof(SgPntrArrRefExp));
249477  }
249478 
249480  static size_t numberOfNodes();
249481 
249483  static size_t memoryUsage();
249484 
249485  // End of scope which started in IR nodes specific code
249486  /* */
249487 
249488  /* name Internal Functions
249489  \brief Internal functions ... incomplete-documentation
249490 
249491  These functions have been made public as part of the design, but they are suggested for internal use
249492  or by particularly knowledgeable users for specialized tools or applications.
249493 
249494  \internal We could not make these private because they are required by user for special purposes. And
249495  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
249496 
249497  */
249498 
249499  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
249500  // overridden in every class by *generated* implementation
249502  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
249503  // MS: 06/28/02 container of names of variables or container indices
249504  // used used in the traversal to access AST successor nodes
249505  // overridden in every class by *generated* implementation
249508  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
249509 
249510  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
249511  // than all the vector copies. The implementation for these functions is generated for each class.
249513  virtual size_t get_numberOfTraversalSuccessors() override;
249515  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
249517  virtual size_t get_childIndex(SgNode *child) override;
249518 
249519 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
249520  // MS: 08/16/2002 method for generating RTI information
249522  virtual RTIReturnType roseRTI() override;
249523 #endif
249524  /* */
249525 
249526 
249527 
249528  /* name Deprecated Functions
249529  \brief Deprecated functions ... incomplete-documentation
249530 
249531  These functions have been deprecated from use.
249532  */
249533  /* */
249534 
249536  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
249537 
249538  // JJW (10/16/2008): Changed to a single function in Node.code, and put
249539  // getVariant() in #if 0 block to prevent confusing Doxygen
249540 #if 0
249541 
249542  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
249544  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
249545 #endif
249546  /* */
249547 
249548 
249549 
249550 
249551  public:
249552  /* name Traversal Support Functions
249553  \brief Traversal support functions ... incomplete-documentation
249554 
249555  These functions have been made public as part of the design, but they are suggested for internal use
249556  or by particularly knowledgable users for specialized tools or applications.
249557  */
249558  /* */
249559 
249560  // DQ (11/26/2005): Support for visitor pattern mechanims
249561  // (inferior to ROSE traversal mechanism, experimental).
249565 
249566  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
249568  virtual void accept (ROSE_VisitorPattern & visitor) override;
249569 
249570  // DQ (12/26/2005): Support for traversal based on the memory pool
249573  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
249574 
249577  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
249578 
249579  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
249580  // This traversal helps support internal tools that call static member functions.
249581  // note: this function operates on the memory pools.
249584  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
249585  /* */
249586 
249587 
249588  public:
249589  /* name Memory Allocation Functions
249590  \brief Memory allocations functions ... incomplete-documentation
249591 
249592  These functions have been made public as part of the design, but they are suggested for internal use
249593  or by particularly knowledgable users for specialized tools or applications.
249594  */
249595  /* */
249596 
249607  virtual bool isInMemoryPool() override;
249608 
249619  virtual void checkDataMemberPointersIfInMemoryPool() override;
249620 
249621  // DQ (4/30/2006): Modified to be a const function.
249636  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
249637 
249647  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
249648 
249660  virtual long getChildIndex( SgNode* childNode ) const override;
249661 
249662  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
249663  // comment here (changed to be a C style comment and not be a doxygen comment).
249664  /* \brief Constructor for use by AST File I/O Mechanism
249665 
249666  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
249667  which obtained via fast binary file I/O from disk.
249668  */
249669  // SgPntrArrRefExp( SgPntrArrRefExpStorageClass& source );
249670 
249671 
249672 
249673 
249674 
249675  // JH (10/24/2005): methods added to support the ast file IO
249676  private:
249677 
249678  /* name AST Memory Allocation Support Functions
249679  \brief Memory allocations support....
249680 
249681  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
249682  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
249683  and support the AST File I/O Mechanism.
249684  */
249685  /* */
249686 
249687  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
249688  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
249689  that I use the same type everywhere, if any changes are made. THe second one declares the type
249690  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
249691  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
249692  a correspinding one in the AST_FILE_IO class!
249693  */
249694  // DQ (9/2/2015): This typedef is no longer used, we can't define the
249695  // comment here (changed to be a C style comment and not be a doxygen comment).
249696  /* \brief Typedef used for low level memory access.
249697  */
249698  // typedef unsigned char* TestType;
249699 
249700  // DQ (9/2/2015): This typedef is no longer used, we can't define the
249701  // comment here (changed to be a C style comment and not be a doxygen comment).
249702  /* \brief Typedef used to hold memory addresses as values.
249703  */
249704  // typedef unsigned long AddressType;
249705 
249706 
249707 
249708  // necessary, to have direct access to the p_freepointer and the private methods !
249710  friend class AST_FILE_IO;
249711 
249713  friend class SgPntrArrRefExpStorageClass;
249714 
249716  friend class AstSpecificDataManagingClass;
249717 
249719  friend class AstSpecificDataManagingClassStorageClass;
249720 
249721  public:
249723  SgPntrArrRefExp( const SgPntrArrRefExpStorageClass& source );
249724 
249725  // private: // JJW hack
249726  /*
249727  name AST Memory Allocation Support Variables
249728  Memory allocations support variables
249729 
249730  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
249731  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
249732  and support the AST File I/O Mechanism.
249733  */
249734  /* */
249735 
249736  public:
249737 
249738  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
249739  // to current node (so that it will work cleanly with build functions to specify patterns).
249740  // virtual SgNode* addRegExpAttribute();
249747 
249748 // *** COMMON CODE SECTION ENDS HERE ***
249749 
249750 
249751 // End of memberFunctionString
249752 // Start of memberFunctionString
249753 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
249754 
249755  // the generated cast function
249756  // friend ROSE_DLL_API SgPntrArrRefExp* isSgPntrArrRefExp ( SgNode* s );
249757 
249758  typedef SgBinaryOp base_node_type;
249759 
249760 
249761 // End of memberFunctionString
249762 // Start of memberFunctionString
249763 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
249764 
249765  void post_construction_initialization() override;
249766 
249767 
249768 // End of memberFunctionString
249769 // Start of memberFunctionString
249770 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
249771 
249772  int precedence() const override { return 16; }
249773 
249774 
249775 // End of memberFunctionString
249776 
249777 
249778  public:
249779  virtual ~SgPntrArrRefExp();
249780 
249781 
249782  public:
249783  SgPntrArrRefExp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
249784  SgPntrArrRefExp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
249785 
249786  protected:
249787 
249788 
249789 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
249790 
249791 
249792  };
249793 #endif
249794 
249795 // postdeclarations for SgPntrArrRefExp
249796 
249797 /* #line 249798 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
249798 
249799 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
249800 
249801 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
249802 
249803 
249804 /* #line 249805 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
249805 
249806 
249807 
249808 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
249809 
249810 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
249811 // This code is automatically generated for each
249812 // terminal and non-terminal within the defined
249813 // grammar. There is a simple way to change the
249814 // code to fix bugs etc. See the ROSE README file
249815 // for directions.
249816 
249817 // tps: (02/22/2010): Adding DLL export requirements
249818 #include "rosedll.h"
249819 
249820 // predeclarations for SgScopeOp
249821 
249822 /* #line 249823 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
249823 
249824 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
249825 
249826 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
249827 
249828 #if 1
249829 // Class Definition for SgScopeOp
249830 class ROSE_DLL_API SgScopeOp : public SgBinaryOp
249831  {
249832  public:
249833 
249834 
249835 /* #line 249836 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
249836 
249837  virtual SgNode* copy ( SgCopyHelp& help) const override;
249838 // Start of memberFunctionString
249839 /* #line 1400 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
249840 
249841  // get lvalue
249842  virtual bool isLValue() const override;
249843  virtual bool isChildUsedAsLValue(const SgExpression* child) const override; // INTERNAL Recursively call up the chain to answer the child
249844 
249845 
249846 // End of memberFunctionString
249847 // Start of memberFunctionString
249848 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
249849 
249850 // *** COMMON CODE SECTION BEGINS HERE ***
249851 
249852  public:
249853 
249854  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
249855  // and not required which is required to match the other aspects of the copy mechanism code generation.
249856  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
249857  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
249858  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
249859  // virtual SgNode* copy ( const SgCopyHelp & help) const;
249860 
249862  virtual std::string class_name() const override;
249863 
249865  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
249866 
249868  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
249869  // static const VariantT static_variant = V_SgScopeOp;
249870  enum { static_variant = V_SgScopeOp };
249871 
249872  /* the generated cast function */
249874  ROSE_DLL_API friend SgScopeOp* isSgScopeOp( SgNode * s );
249875 
249877  ROSE_DLL_API friend const SgScopeOp* isSgScopeOp( const SgNode * s );
249878 
249879  // ******************************************
249880  // * Memory Pool / New / Delete
249881  // ******************************************
249882 
249883  public:
249885  static const unsigned pool_size; //
249887  static std::vector<unsigned char *> pools; //
249889  static SgScopeOp * next_node; //
249890 
249892  static unsigned long initializeStorageClassArray(SgScopeOpStorageClass *); //
249893 
249895  static void clearMemoryPool(); //
249896  static void deleteMemoryPool(); //
249897 
249899  static void extendMemoryPoolForFileIO(); //
249900 
249902  static SgScopeOp * getPointerFromGlobalIndex(unsigned long); //
249904  static SgScopeOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
249905 
249907  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
249909  static void resetValidFreepointers(); //
249911  static unsigned long getNumberOfLastValidPointer(); //
249912 
249913 
249914 #if defined(INLINE_FUNCTIONS)
249915 
249916  inline void *operator new (size_t size);
249917 #else
249918 
249919  void *operator new (size_t size);
249920 #endif
249921 
249922  void operator delete (void* pointer, size_t size);
249923 
249924  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
249925  void operator delete (void* pointer)
249926  {
249927  // This is the generated delete operator...
249928  SgScopeOp::operator delete (pointer,sizeof(SgScopeOp));
249929  }
249930 
249932  static size_t numberOfNodes();
249933 
249935  static size_t memoryUsage();
249936 
249937  // End of scope which started in IR nodes specific code
249938  /* */
249939 
249940  /* name Internal Functions
249941  \brief Internal functions ... incomplete-documentation
249942 
249943  These functions have been made public as part of the design, but they are suggested for internal use
249944  or by particularly knowledgeable users for specialized tools or applications.
249945 
249946  \internal We could not make these private because they are required by user for special purposes. And
249947  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
249948 
249949  */
249950 
249951  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
249952  // overridden in every class by *generated* implementation
249954  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
249955  // MS: 06/28/02 container of names of variables or container indices
249956  // used used in the traversal to access AST successor nodes
249957  // overridden in every class by *generated* implementation
249960  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
249961 
249962  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
249963  // than all the vector copies. The implementation for these functions is generated for each class.
249965  virtual size_t get_numberOfTraversalSuccessors() override;
249967  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
249969  virtual size_t get_childIndex(SgNode *child) override;
249970 
249971 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
249972  // MS: 08/16/2002 method for generating RTI information
249974  virtual RTIReturnType roseRTI() override;
249975 #endif
249976  /* */
249977 
249978 
249979 
249980  /* name Deprecated Functions
249981  \brief Deprecated functions ... incomplete-documentation
249982 
249983  These functions have been deprecated from use.
249984  */
249985  /* */
249986 
249988  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
249989 
249990  // JJW (10/16/2008): Changed to a single function in Node.code, and put
249991  // getVariant() in #if 0 block to prevent confusing Doxygen
249992 #if 0
249993 
249994  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
249996  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
249997 #endif
249998  /* */
249999 
250000 
250001 
250002 
250003  public:
250004  /* name Traversal Support Functions
250005  \brief Traversal support functions ... incomplete-documentation
250006 
250007  These functions have been made public as part of the design, but they are suggested for internal use
250008  or by particularly knowledgable users for specialized tools or applications.
250009  */
250010  /* */
250011 
250012  // DQ (11/26/2005): Support for visitor pattern mechanims
250013  // (inferior to ROSE traversal mechanism, experimental).
250017 
250018  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
250020  virtual void accept (ROSE_VisitorPattern & visitor) override;
250021 
250022  // DQ (12/26/2005): Support for traversal based on the memory pool
250025  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
250026 
250029  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
250030 
250031  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
250032  // This traversal helps support internal tools that call static member functions.
250033  // note: this function operates on the memory pools.
250036  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
250037  /* */
250038 
250039 
250040  public:
250041  /* name Memory Allocation Functions
250042  \brief Memory allocations functions ... incomplete-documentation
250043 
250044  These functions have been made public as part of the design, but they are suggested for internal use
250045  or by particularly knowledgable users for specialized tools or applications.
250046  */
250047  /* */
250048 
250059  virtual bool isInMemoryPool() override;
250060 
250071  virtual void checkDataMemberPointersIfInMemoryPool() override;
250072 
250073  // DQ (4/30/2006): Modified to be a const function.
250088  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
250089 
250099  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
250100 
250112  virtual long getChildIndex( SgNode* childNode ) const override;
250113 
250114  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
250115  // comment here (changed to be a C style comment and not be a doxygen comment).
250116  /* \brief Constructor for use by AST File I/O Mechanism
250117 
250118  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
250119  which obtained via fast binary file I/O from disk.
250120  */
250121  // SgScopeOp( SgScopeOpStorageClass& source );
250122 
250123 
250124 
250125 
250126 
250127  // JH (10/24/2005): methods added to support the ast file IO
250128  private:
250129 
250130  /* name AST Memory Allocation Support Functions
250131  \brief Memory allocations support....
250132 
250133  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
250134  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
250135  and support the AST File I/O Mechanism.
250136  */
250137  /* */
250138 
250139  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
250140  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
250141  that I use the same type everywhere, if any changes are made. THe second one declares the type
250142  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
250143  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
250144  a correspinding one in the AST_FILE_IO class!
250145  */
250146  // DQ (9/2/2015): This typedef is no longer used, we can't define the
250147  // comment here (changed to be a C style comment and not be a doxygen comment).
250148  /* \brief Typedef used for low level memory access.
250149  */
250150  // typedef unsigned char* TestType;
250151 
250152  // DQ (9/2/2015): This typedef is no longer used, we can't define the
250153  // comment here (changed to be a C style comment and not be a doxygen comment).
250154  /* \brief Typedef used to hold memory addresses as values.
250155  */
250156  // typedef unsigned long AddressType;
250157 
250158 
250159 
250160  // necessary, to have direct access to the p_freepointer and the private methods !
250162  friend class AST_FILE_IO;
250163 
250165  friend class SgScopeOpStorageClass;
250166 
250168  friend class AstSpecificDataManagingClass;
250169 
250171  friend class AstSpecificDataManagingClassStorageClass;
250172 
250173  public:
250175  SgScopeOp( const SgScopeOpStorageClass& source );
250176 
250177  // private: // JJW hack
250178  /*
250179  name AST Memory Allocation Support Variables
250180  Memory allocations support variables
250181 
250182  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
250183  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
250184  and support the AST File I/O Mechanism.
250185  */
250186  /* */
250187 
250188  public:
250189 
250190  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
250191  // to current node (so that it will work cleanly with build functions to specify patterns).
250192  // virtual SgNode* addRegExpAttribute();
250198  SgScopeOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
250199 
250200 // *** COMMON CODE SECTION ENDS HERE ***
250201 
250202 
250203 // End of memberFunctionString
250204 // Start of memberFunctionString
250205 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
250206 
250207  // the generated cast function
250208  // friend ROSE_DLL_API SgScopeOp* isSgScopeOp ( SgNode* s );
250209 
250210  typedef SgBinaryOp base_node_type;
250211 
250212 
250213 // End of memberFunctionString
250214 // Start of memberFunctionString
250215 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
250216 
250217  void post_construction_initialization() override;
250218 
250219 
250220 // End of memberFunctionString
250221 // Start of memberFunctionString
250222 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
250223 
250224  int precedence() const override { return 17; }
250225 
250226 
250227 // End of memberFunctionString
250228 
250229 
250230  public:
250231  virtual ~SgScopeOp();
250232 
250233 
250234  public:
250235  SgScopeOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
250236  SgScopeOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
250237 
250238  protected:
250239 
250240 
250241 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
250242 
250243 
250244  };
250245 #endif
250246 
250247 // postdeclarations for SgScopeOp
250248 
250249 /* #line 250250 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
250250 
250251 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
250252 
250253 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
250254 
250255 
250256 /* #line 250257 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
250257 
250258 
250259 
250260 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
250261 
250262 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
250263 // This code is automatically generated for each
250264 // terminal and non-terminal within the defined
250265 // grammar. There is a simple way to change the
250266 // code to fix bugs etc. See the ROSE README file
250267 // for directions.
250268 
250269 // tps: (02/22/2010): Adding DLL export requirements
250270 #include "rosedll.h"
250271 
250272 // predeclarations for SgAssignOp
250273 
250274 /* #line 250275 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
250275 
250276 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
250277 
250278 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
250279 
250280 #if 1
250281 // Class Definition for SgAssignOp
250282 class ROSE_DLL_API SgAssignOp : public SgBinaryOp
250283  {
250284  public:
250285 
250286 
250287 /* #line 250288 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
250288 
250289  virtual SgNode* copy ( SgCopyHelp& help) const override;
250290 // Start of memberFunctionString
250291 /* #line 1407 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
250292 
250293 
250294  // get lvalue
250295  virtual bool isLValue() const override;
250296  virtual bool isChildUsedAsLValue(const SgExpression* child) const override; // INTERNAL Recursively call up the chain to answer the child
250297 
250298 
250299 
250300 // End of memberFunctionString
250301 // Start of memberFunctionString
250302 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
250303 
250304 // *** COMMON CODE SECTION BEGINS HERE ***
250305 
250306  public:
250307 
250308  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
250309  // and not required which is required to match the other aspects of the copy mechanism code generation.
250310  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
250311  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
250312  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
250313  // virtual SgNode* copy ( const SgCopyHelp & help) const;
250314 
250316  virtual std::string class_name() const override;
250317 
250319  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
250320 
250322  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
250323  // static const VariantT static_variant = V_SgAssignOp;
250324  enum { static_variant = V_SgAssignOp };
250325 
250326  /* the generated cast function */
250328  ROSE_DLL_API friend SgAssignOp* isSgAssignOp( SgNode * s );
250329 
250331  ROSE_DLL_API friend const SgAssignOp* isSgAssignOp( const SgNode * s );
250332 
250333  // ******************************************
250334  // * Memory Pool / New / Delete
250335  // ******************************************
250336 
250337  public:
250339  static const unsigned pool_size; //
250341  static std::vector<unsigned char *> pools; //
250343  static SgAssignOp * next_node; //
250344 
250346  static unsigned long initializeStorageClassArray(SgAssignOpStorageClass *); //
250347 
250349  static void clearMemoryPool(); //
250350  static void deleteMemoryPool(); //
250351 
250353  static void extendMemoryPoolForFileIO(); //
250354 
250356  static SgAssignOp * getPointerFromGlobalIndex(unsigned long); //
250358  static SgAssignOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
250359 
250361  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
250363  static void resetValidFreepointers(); //
250365  static unsigned long getNumberOfLastValidPointer(); //
250366 
250367 
250368 #if defined(INLINE_FUNCTIONS)
250369 
250370  inline void *operator new (size_t size);
250371 #else
250372 
250373  void *operator new (size_t size);
250374 #endif
250375 
250376  void operator delete (void* pointer, size_t size);
250377 
250378  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
250379  void operator delete (void* pointer)
250380  {
250381  // This is the generated delete operator...
250382  SgAssignOp::operator delete (pointer,sizeof(SgAssignOp));
250383  }
250384 
250386  static size_t numberOfNodes();
250387 
250389  static size_t memoryUsage();
250390 
250391  // End of scope which started in IR nodes specific code
250392  /* */
250393 
250394  /* name Internal Functions
250395  \brief Internal functions ... incomplete-documentation
250396 
250397  These functions have been made public as part of the design, but they are suggested for internal use
250398  or by particularly knowledgeable users for specialized tools or applications.
250399 
250400  \internal We could not make these private because they are required by user for special purposes. And
250401  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
250402 
250403  */
250404 
250405  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
250406  // overridden in every class by *generated* implementation
250408  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
250409  // MS: 06/28/02 container of names of variables or container indices
250410  // used used in the traversal to access AST successor nodes
250411  // overridden in every class by *generated* implementation
250414  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
250415 
250416  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
250417  // than all the vector copies. The implementation for these functions is generated for each class.
250419  virtual size_t get_numberOfTraversalSuccessors() override;
250421  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
250423  virtual size_t get_childIndex(SgNode *child) override;
250424 
250425 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
250426  // MS: 08/16/2002 method for generating RTI information
250428  virtual RTIReturnType roseRTI() override;
250429 #endif
250430  /* */
250431 
250432 
250433 
250434  /* name Deprecated Functions
250435  \brief Deprecated functions ... incomplete-documentation
250436 
250437  These functions have been deprecated from use.
250438  */
250439  /* */
250440 
250442  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
250443 
250444  // JJW (10/16/2008): Changed to a single function in Node.code, and put
250445  // getVariant() in #if 0 block to prevent confusing Doxygen
250446 #if 0
250447 
250448  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
250450  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
250451 #endif
250452  /* */
250453 
250454 
250455 
250456 
250457  public:
250458  /* name Traversal Support Functions
250459  \brief Traversal support functions ... incomplete-documentation
250460 
250461  These functions have been made public as part of the design, but they are suggested for internal use
250462  or by particularly knowledgable users for specialized tools or applications.
250463  */
250464  /* */
250465 
250466  // DQ (11/26/2005): Support for visitor pattern mechanims
250467  // (inferior to ROSE traversal mechanism, experimental).
250471 
250472  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
250474  virtual void accept (ROSE_VisitorPattern & visitor) override;
250475 
250476  // DQ (12/26/2005): Support for traversal based on the memory pool
250479  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
250480 
250483  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
250484 
250485  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
250486  // This traversal helps support internal tools that call static member functions.
250487  // note: this function operates on the memory pools.
250490  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
250491  /* */
250492 
250493 
250494  public:
250495  /* name Memory Allocation Functions
250496  \brief Memory allocations functions ... incomplete-documentation
250497 
250498  These functions have been made public as part of the design, but they are suggested for internal use
250499  or by particularly knowledgable users for specialized tools or applications.
250500  */
250501  /* */
250502 
250513  virtual bool isInMemoryPool() override;
250514 
250525  virtual void checkDataMemberPointersIfInMemoryPool() override;
250526 
250527  // DQ (4/30/2006): Modified to be a const function.
250542  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
250543 
250553  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
250554 
250566  virtual long getChildIndex( SgNode* childNode ) const override;
250567 
250568  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
250569  // comment here (changed to be a C style comment and not be a doxygen comment).
250570  /* \brief Constructor for use by AST File I/O Mechanism
250571 
250572  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
250573  which obtained via fast binary file I/O from disk.
250574  */
250575  // SgAssignOp( SgAssignOpStorageClass& source );
250576 
250577 
250578 
250579 
250580 
250581  // JH (10/24/2005): methods added to support the ast file IO
250582  private:
250583 
250584  /* name AST Memory Allocation Support Functions
250585  \brief Memory allocations support....
250586 
250587  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
250588  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
250589  and support the AST File I/O Mechanism.
250590  */
250591  /* */
250592 
250593  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
250594  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
250595  that I use the same type everywhere, if any changes are made. THe second one declares the type
250596  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
250597  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
250598  a correspinding one in the AST_FILE_IO class!
250599  */
250600  // DQ (9/2/2015): This typedef is no longer used, we can't define the
250601  // comment here (changed to be a C style comment and not be a doxygen comment).
250602  /* \brief Typedef used for low level memory access.
250603  */
250604  // typedef unsigned char* TestType;
250605 
250606  // DQ (9/2/2015): This typedef is no longer used, we can't define the
250607  // comment here (changed to be a C style comment and not be a doxygen comment).
250608  /* \brief Typedef used to hold memory addresses as values.
250609  */
250610  // typedef unsigned long AddressType;
250611 
250612 
250613 
250614  // necessary, to have direct access to the p_freepointer and the private methods !
250616  friend class AST_FILE_IO;
250617 
250619  friend class SgAssignOpStorageClass;
250620 
250622  friend class AstSpecificDataManagingClass;
250623 
250625  friend class AstSpecificDataManagingClassStorageClass;
250626 
250627  public:
250629  SgAssignOp( const SgAssignOpStorageClass& source );
250630 
250631  // private: // JJW hack
250632  /*
250633  name AST Memory Allocation Support Variables
250634  Memory allocations support variables
250635 
250636  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
250637  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
250638  and support the AST File I/O Mechanism.
250639  */
250640  /* */
250641 
250642  public:
250643 
250644  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
250645  // to current node (so that it will work cleanly with build functions to specify patterns).
250646  // virtual SgNode* addRegExpAttribute();
250652  SgAssignOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
250653 
250654 // *** COMMON CODE SECTION ENDS HERE ***
250655 
250656 
250657 // End of memberFunctionString
250658 // Start of memberFunctionString
250659 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
250660 
250661  // the generated cast function
250662  // friend ROSE_DLL_API SgAssignOp* isSgAssignOp ( SgNode* s );
250663 
250664  typedef SgBinaryOp base_node_type;
250665 
250666 
250667 // End of memberFunctionString
250668 // Start of memberFunctionString
250669 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
250670 
250671  void post_construction_initialization() override;
250672 
250673 
250674 // End of memberFunctionString
250675 // Start of memberFunctionString
250676 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
250677 
250678  int precedence() const override { return 2; }
250679 
250680 
250681 // End of memberFunctionString
250682 
250683 
250684  public:
250685  virtual ~SgAssignOp();
250686 
250687 
250688  public:
250689  SgAssignOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
250690  SgAssignOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
250691 
250692  protected:
250693 
250694 
250695 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
250696 
250697 
250698  };
250699 #endif
250700 
250701 // postdeclarations for SgAssignOp
250702 
250703 /* #line 250704 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
250704 
250705 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
250706 
250707 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
250708 
250709 
250710 /* #line 250711 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
250711 
250712 
250713 
250714 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
250715 
250716 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
250717 // This code is automatically generated for each
250718 // terminal and non-terminal within the defined
250719 // grammar. There is a simple way to change the
250720 // code to fix bugs etc. See the ROSE README file
250721 // for directions.
250722 
250723 // tps: (02/22/2010): Adding DLL export requirements
250724 #include "rosedll.h"
250725 
250726 // predeclarations for SgExponentiationOp
250727 
250728 /* #line 250729 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
250729 
250730 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
250731 
250732 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
250733 
250734 #if 1
250735 // Class Definition for SgExponentiationOp
250736 class ROSE_DLL_API SgExponentiationOp : public SgBinaryOp
250737  {
250738  public:
250739 
250740 
250741 /* #line 250742 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
250742 
250743  virtual SgNode* copy ( SgCopyHelp& help) const override;
250744 // Start of memberFunctionString
250745 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
250746 
250747 // *** COMMON CODE SECTION BEGINS HERE ***
250748 
250749  public:
250750 
250751  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
250752  // and not required which is required to match the other aspects of the copy mechanism code generation.
250753  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
250754  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
250755  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
250756  // virtual SgNode* copy ( const SgCopyHelp & help) const;
250757 
250759  virtual std::string class_name() const override;
250760 
250762  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
250763 
250765  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
250766  // static const VariantT static_variant = V_SgExponentiationOp;
250767  enum { static_variant = V_SgExponentiationOp };
250768 
250769  /* the generated cast function */
250771  ROSE_DLL_API friend SgExponentiationOp* isSgExponentiationOp( SgNode * s );
250772 
250774  ROSE_DLL_API friend const SgExponentiationOp* isSgExponentiationOp( const SgNode * s );
250775 
250776  // ******************************************
250777  // * Memory Pool / New / Delete
250778  // ******************************************
250779 
250780  public:
250782  static const unsigned pool_size; //
250784  static std::vector<unsigned char *> pools; //
250786  static SgExponentiationOp * next_node; //
250787 
250789  static unsigned long initializeStorageClassArray(SgExponentiationOpStorageClass *); //
250790 
250792  static void clearMemoryPool(); //
250793  static void deleteMemoryPool(); //
250794 
250796  static void extendMemoryPoolForFileIO(); //
250797 
250799  static SgExponentiationOp * getPointerFromGlobalIndex(unsigned long); //
250801  static SgExponentiationOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
250802 
250804  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
250806  static void resetValidFreepointers(); //
250808  static unsigned long getNumberOfLastValidPointer(); //
250809 
250810 
250811 #if defined(INLINE_FUNCTIONS)
250812 
250813  inline void *operator new (size_t size);
250814 #else
250815 
250816  void *operator new (size_t size);
250817 #endif
250818 
250819  void operator delete (void* pointer, size_t size);
250820 
250821  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
250822  void operator delete (void* pointer)
250823  {
250824  // This is the generated delete operator...
250825  SgExponentiationOp::operator delete (pointer,sizeof(SgExponentiationOp));
250826  }
250827 
250829  static size_t numberOfNodes();
250830 
250832  static size_t memoryUsage();
250833 
250834  // End of scope which started in IR nodes specific code
250835  /* */
250836 
250837  /* name Internal Functions
250838  \brief Internal functions ... incomplete-documentation
250839 
250840  These functions have been made public as part of the design, but they are suggested for internal use
250841  or by particularly knowledgeable users for specialized tools or applications.
250842 
250843  \internal We could not make these private because they are required by user for special purposes. And
250844  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
250845 
250846  */
250847 
250848  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
250849  // overridden in every class by *generated* implementation
250851  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
250852  // MS: 06/28/02 container of names of variables or container indices
250853  // used used in the traversal to access AST successor nodes
250854  // overridden in every class by *generated* implementation
250857  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
250858 
250859  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
250860  // than all the vector copies. The implementation for these functions is generated for each class.
250862  virtual size_t get_numberOfTraversalSuccessors() override;
250864  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
250866  virtual size_t get_childIndex(SgNode *child) override;
250867 
250868 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
250869  // MS: 08/16/2002 method for generating RTI information
250871  virtual RTIReturnType roseRTI() override;
250872 #endif
250873  /* */
250874 
250875 
250876 
250877  /* name Deprecated Functions
250878  \brief Deprecated functions ... incomplete-documentation
250879 
250880  These functions have been deprecated from use.
250881  */
250882  /* */
250883 
250885  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
250886 
250887  // JJW (10/16/2008): Changed to a single function in Node.code, and put
250888  // getVariant() in #if 0 block to prevent confusing Doxygen
250889 #if 0
250890 
250891  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
250893  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
250894 #endif
250895  /* */
250896 
250897 
250898 
250899 
250900  public:
250901  /* name Traversal Support Functions
250902  \brief Traversal support functions ... incomplete-documentation
250903 
250904  These functions have been made public as part of the design, but they are suggested for internal use
250905  or by particularly knowledgable users for specialized tools or applications.
250906  */
250907  /* */
250908 
250909  // DQ (11/26/2005): Support for visitor pattern mechanims
250910  // (inferior to ROSE traversal mechanism, experimental).
250914 
250915  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
250917  virtual void accept (ROSE_VisitorPattern & visitor) override;
250918 
250919  // DQ (12/26/2005): Support for traversal based on the memory pool
250922  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
250923 
250926  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
250927 
250928  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
250929  // This traversal helps support internal tools that call static member functions.
250930  // note: this function operates on the memory pools.
250933  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
250934  /* */
250935 
250936 
250937  public:
250938  /* name Memory Allocation Functions
250939  \brief Memory allocations functions ... incomplete-documentation
250940 
250941  These functions have been made public as part of the design, but they are suggested for internal use
250942  or by particularly knowledgable users for specialized tools or applications.
250943  */
250944  /* */
250945 
250956  virtual bool isInMemoryPool() override;
250957 
250968  virtual void checkDataMemberPointersIfInMemoryPool() override;
250969 
250970  // DQ (4/30/2006): Modified to be a const function.
250985  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
250986 
250996  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
250997 
251009  virtual long getChildIndex( SgNode* childNode ) const override;
251010 
251011  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
251012  // comment here (changed to be a C style comment and not be a doxygen comment).
251013  /* \brief Constructor for use by AST File I/O Mechanism
251014 
251015  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
251016  which obtained via fast binary file I/O from disk.
251017  */
251018  // SgExponentiationOp( SgExponentiationOpStorageClass& source );
251019 
251020 
251021 
251022 
251023 
251024  // JH (10/24/2005): methods added to support the ast file IO
251025  private:
251026 
251027  /* name AST Memory Allocation Support Functions
251028  \brief Memory allocations support....
251029 
251030  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
251031  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
251032  and support the AST File I/O Mechanism.
251033  */
251034  /* */
251035 
251036  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
251037  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
251038  that I use the same type everywhere, if any changes are made. THe second one declares the type
251039  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
251040  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
251041  a correspinding one in the AST_FILE_IO class!
251042  */
251043  // DQ (9/2/2015): This typedef is no longer used, we can't define the
251044  // comment here (changed to be a C style comment and not be a doxygen comment).
251045  /* \brief Typedef used for low level memory access.
251046  */
251047  // typedef unsigned char* TestType;
251048 
251049  // DQ (9/2/2015): This typedef is no longer used, we can't define the
251050  // comment here (changed to be a C style comment and not be a doxygen comment).
251051  /* \brief Typedef used to hold memory addresses as values.
251052  */
251053  // typedef unsigned long AddressType;
251054 
251055 
251056 
251057  // necessary, to have direct access to the p_freepointer and the private methods !
251059  friend class AST_FILE_IO;
251060 
251062  friend class SgExponentiationOpStorageClass;
251063 
251065  friend class AstSpecificDataManagingClass;
251066 
251068  friend class AstSpecificDataManagingClassStorageClass;
251069 
251070  public:
251072  SgExponentiationOp( const SgExponentiationOpStorageClass& source );
251073 
251074  // private: // JJW hack
251075  /*
251076  name AST Memory Allocation Support Variables
251077  Memory allocations support variables
251078 
251079  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
251080  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
251081  and support the AST File I/O Mechanism.
251082  */
251083  /* */
251084 
251085  public:
251086 
251087  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
251088  // to current node (so that it will work cleanly with build functions to specify patterns).
251089  // virtual SgNode* addRegExpAttribute();
251096 
251097 // *** COMMON CODE SECTION ENDS HERE ***
251098 
251099 
251100 // End of memberFunctionString
251101 // Start of memberFunctionString
251102 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
251103 
251104  // the generated cast function
251105  // friend ROSE_DLL_API SgExponentiationOp* isSgExponentiationOp ( SgNode* s );
251106 
251107  typedef SgBinaryOp base_node_type;
251108 
251109 
251110 // End of memberFunctionString
251111 // Start of memberFunctionString
251112 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
251113 
251114  void post_construction_initialization() override;
251115 
251116 
251117 // End of memberFunctionString
251118 // Start of memberFunctionString
251119 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
251120 
251121  int precedence() const override { return 2; }
251122 
251123 
251124 // End of memberFunctionString
251125 
251126 
251127  public:
251128  virtual ~SgExponentiationOp();
251129 
251130 
251131  public:
251132  SgExponentiationOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
251133  SgExponentiationOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
251134 
251135  protected:
251136 
251137 
251138 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
251139 
251140 
251141  };
251142 #endif
251143 
251144 // postdeclarations for SgExponentiationOp
251145 
251146 /* #line 251147 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
251147 
251148 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
251149 
251150 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
251151 
251152 
251153 /* #line 251154 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
251154 
251155 
251156 
251157 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
251158 
251159 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
251160 // This code is automatically generated for each
251161 // terminal and non-terminal within the defined
251162 // grammar. There is a simple way to change the
251163 // code to fix bugs etc. See the ROSE README file
251164 // for directions.
251165 
251166 // tps: (02/22/2010): Adding DLL export requirements
251167 #include "rosedll.h"
251168 
251169 // predeclarations for SgConcatenationOp
251170 
251171 /* #line 251172 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
251172 
251173 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
251174 
251175 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
251176 
251177 #if 1
251178 // Class Definition for SgConcatenationOp
251179 class ROSE_DLL_API SgConcatenationOp : public SgBinaryOp
251180  {
251181  public:
251182 
251183 
251184 /* #line 251185 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
251185 
251186  virtual SgNode* copy ( SgCopyHelp& help) const override;
251187 // Start of memberFunctionString
251188 /* #line 1475 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
251189 
251190 
251191 
251192 // End of memberFunctionString
251193 // Start of memberFunctionString
251194 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
251195 
251196 // *** COMMON CODE SECTION BEGINS HERE ***
251197 
251198  public:
251199 
251200  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
251201  // and not required which is required to match the other aspects of the copy mechanism code generation.
251202  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
251203  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
251204  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
251205  // virtual SgNode* copy ( const SgCopyHelp & help) const;
251206 
251208  virtual std::string class_name() const override;
251209 
251211  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
251212 
251214  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
251215  // static const VariantT static_variant = V_SgConcatenationOp;
251216  enum { static_variant = V_SgConcatenationOp };
251217 
251218  /* the generated cast function */
251220  ROSE_DLL_API friend SgConcatenationOp* isSgConcatenationOp( SgNode * s );
251221 
251223  ROSE_DLL_API friend const SgConcatenationOp* isSgConcatenationOp( const SgNode * s );
251224 
251225  // ******************************************
251226  // * Memory Pool / New / Delete
251227  // ******************************************
251228 
251229  public:
251231  static const unsigned pool_size; //
251233  static std::vector<unsigned char *> pools; //
251235  static SgConcatenationOp * next_node; //
251236 
251238  static unsigned long initializeStorageClassArray(SgConcatenationOpStorageClass *); //
251239 
251241  static void clearMemoryPool(); //
251242  static void deleteMemoryPool(); //
251243 
251245  static void extendMemoryPoolForFileIO(); //
251246 
251248  static SgConcatenationOp * getPointerFromGlobalIndex(unsigned long); //
251250  static SgConcatenationOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
251251 
251253  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
251255  static void resetValidFreepointers(); //
251257  static unsigned long getNumberOfLastValidPointer(); //
251258 
251259 
251260 #if defined(INLINE_FUNCTIONS)
251261 
251262  inline void *operator new (size_t size);
251263 #else
251264 
251265  void *operator new (size_t size);
251266 #endif
251267 
251268  void operator delete (void* pointer, size_t size);
251269 
251270  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
251271  void operator delete (void* pointer)
251272  {
251273  // This is the generated delete operator...
251274  SgConcatenationOp::operator delete (pointer,sizeof(SgConcatenationOp));
251275  }
251276 
251278  static size_t numberOfNodes();
251279 
251281  static size_t memoryUsage();
251282 
251283  // End of scope which started in IR nodes specific code
251284  /* */
251285 
251286  /* name Internal Functions
251287  \brief Internal functions ... incomplete-documentation
251288 
251289  These functions have been made public as part of the design, but they are suggested for internal use
251290  or by particularly knowledgeable users for specialized tools or applications.
251291 
251292  \internal We could not make these private because they are required by user for special purposes. And
251293  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
251294 
251295  */
251296 
251297  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
251298  // overridden in every class by *generated* implementation
251300  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
251301  // MS: 06/28/02 container of names of variables or container indices
251302  // used used in the traversal to access AST successor nodes
251303  // overridden in every class by *generated* implementation
251306  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
251307 
251308  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
251309  // than all the vector copies. The implementation for these functions is generated for each class.
251311  virtual size_t get_numberOfTraversalSuccessors() override;
251313  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
251315  virtual size_t get_childIndex(SgNode *child) override;
251316 
251317 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
251318  // MS: 08/16/2002 method for generating RTI information
251320  virtual RTIReturnType roseRTI() override;
251321 #endif
251322  /* */
251323 
251324 
251325 
251326  /* name Deprecated Functions
251327  \brief Deprecated functions ... incomplete-documentation
251328 
251329  These functions have been deprecated from use.
251330  */
251331  /* */
251332 
251334  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
251335 
251336  // JJW (10/16/2008): Changed to a single function in Node.code, and put
251337  // getVariant() in #if 0 block to prevent confusing Doxygen
251338 #if 0
251339 
251340  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
251342  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
251343 #endif
251344  /* */
251345 
251346 
251347 
251348 
251349  public:
251350  /* name Traversal Support Functions
251351  \brief Traversal support functions ... incomplete-documentation
251352 
251353  These functions have been made public as part of the design, but they are suggested for internal use
251354  or by particularly knowledgable users for specialized tools or applications.
251355  */
251356  /* */
251357 
251358  // DQ (11/26/2005): Support for visitor pattern mechanims
251359  // (inferior to ROSE traversal mechanism, experimental).
251363 
251364  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
251366  virtual void accept (ROSE_VisitorPattern & visitor) override;
251367 
251368  // DQ (12/26/2005): Support for traversal based on the memory pool
251371  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
251372 
251375  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
251376 
251377  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
251378  // This traversal helps support internal tools that call static member functions.
251379  // note: this function operates on the memory pools.
251382  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
251383  /* */
251384 
251385 
251386  public:
251387  /* name Memory Allocation Functions
251388  \brief Memory allocations functions ... incomplete-documentation
251389 
251390  These functions have been made public as part of the design, but they are suggested for internal use
251391  or by particularly knowledgable users for specialized tools or applications.
251392  */
251393  /* */
251394 
251405  virtual bool isInMemoryPool() override;
251406 
251417  virtual void checkDataMemberPointersIfInMemoryPool() override;
251418 
251419  // DQ (4/30/2006): Modified to be a const function.
251434  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
251435 
251445  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
251446 
251458  virtual long getChildIndex( SgNode* childNode ) const override;
251459 
251460  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
251461  // comment here (changed to be a C style comment and not be a doxygen comment).
251462  /* \brief Constructor for use by AST File I/O Mechanism
251463 
251464  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
251465  which obtained via fast binary file I/O from disk.
251466  */
251467  // SgConcatenationOp( SgConcatenationOpStorageClass& source );
251468 
251469 
251470 
251471 
251472 
251473  // JH (10/24/2005): methods added to support the ast file IO
251474  private:
251475 
251476  /* name AST Memory Allocation Support Functions
251477  \brief Memory allocations support....
251478 
251479  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
251480  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
251481  and support the AST File I/O Mechanism.
251482  */
251483  /* */
251484 
251485  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
251486  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
251487  that I use the same type everywhere, if any changes are made. THe second one declares the type
251488  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
251489  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
251490  a correspinding one in the AST_FILE_IO class!
251491  */
251492  // DQ (9/2/2015): This typedef is no longer used, we can't define the
251493  // comment here (changed to be a C style comment and not be a doxygen comment).
251494  /* \brief Typedef used for low level memory access.
251495  */
251496  // typedef unsigned char* TestType;
251497 
251498  // DQ (9/2/2015): This typedef is no longer used, we can't define the
251499  // comment here (changed to be a C style comment and not be a doxygen comment).
251500  /* \brief Typedef used to hold memory addresses as values.
251501  */
251502  // typedef unsigned long AddressType;
251503 
251504 
251505 
251506  // necessary, to have direct access to the p_freepointer and the private methods !
251508  friend class AST_FILE_IO;
251509 
251511  friend class SgConcatenationOpStorageClass;
251512 
251514  friend class AstSpecificDataManagingClass;
251515 
251517  friend class AstSpecificDataManagingClassStorageClass;
251518 
251519  public:
251521  SgConcatenationOp( const SgConcatenationOpStorageClass& source );
251522 
251523  // private: // JJW hack
251524  /*
251525  name AST Memory Allocation Support Variables
251526  Memory allocations support variables
251527 
251528  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
251529  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
251530  and support the AST File I/O Mechanism.
251531  */
251532  /* */
251533 
251534  public:
251535 
251536  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
251537  // to current node (so that it will work cleanly with build functions to specify patterns).
251538  // virtual SgNode* addRegExpAttribute();
251545 
251546 // *** COMMON CODE SECTION ENDS HERE ***
251547 
251548 
251549 // End of memberFunctionString
251550 // Start of memberFunctionString
251551 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
251552 
251553  // the generated cast function
251554  // friend ROSE_DLL_API SgConcatenationOp* isSgConcatenationOp ( SgNode* s );
251555 
251556  typedef SgBinaryOp base_node_type;
251557 
251558 
251559 // End of memberFunctionString
251560 // Start of memberFunctionString
251561 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
251562 
251563  void post_construction_initialization() override;
251564 
251565 
251566 // End of memberFunctionString
251567 // Start of memberFunctionString
251568 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
251569 
251570  int precedence() const override { return 3; }
251571 
251572 
251573 // End of memberFunctionString
251574 
251575 
251576  public:
251577  virtual ~SgConcatenationOp();
251578 
251579 
251580  public:
251581  SgConcatenationOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
251582  SgConcatenationOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
251583 
251584  protected:
251585 
251586 
251587 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
251588 
251589 
251590  };
251591 #endif
251592 
251593 // postdeclarations for SgConcatenationOp
251594 
251595 /* #line 251596 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
251596 
251597 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
251598 
251599 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
251600 
251601 
251602 /* #line 251603 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
251603 
251604 
251605 
251606 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
251607 
251608 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
251609 // This code is automatically generated for each
251610 // terminal and non-terminal within the defined
251611 // grammar. There is a simple way to change the
251612 // code to fix bugs etc. See the ROSE README file
251613 // for directions.
251614 
251615 // tps: (02/22/2010): Adding DLL export requirements
251616 #include "rosedll.h"
251617 
251618 // predeclarations for SgPointerAssignOp
251619 
251620 /* #line 251621 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
251621 
251622 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
251623 
251624 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
251625 
251626 #if 1
251627 // Class Definition for SgPointerAssignOp
251628 class ROSE_DLL_API SgPointerAssignOp : public SgBinaryOp
251629  {
251630  public:
251631 
251632 
251633 /* #line 251634 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
251634 
251635  virtual SgNode* copy ( SgCopyHelp& help) const override;
251636 // Start of memberFunctionString
251637 /* #line 1435 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
251638 
251639 
251640  // get lvalue
251641  virtual bool isDefinable() const override;
251642 
251643 
251644 
251645 // End of memberFunctionString
251646 // Start of memberFunctionString
251647 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
251648 
251649 // *** COMMON CODE SECTION BEGINS HERE ***
251650 
251651  public:
251652 
251653  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
251654  // and not required which is required to match the other aspects of the copy mechanism code generation.
251655  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
251656  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
251657  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
251658  // virtual SgNode* copy ( const SgCopyHelp & help) const;
251659 
251661  virtual std::string class_name() const override;
251662 
251664  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
251665 
251667  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
251668  // static const VariantT static_variant = V_SgPointerAssignOp;
251669  enum { static_variant = V_SgPointerAssignOp };
251670 
251671  /* the generated cast function */
251673  ROSE_DLL_API friend SgPointerAssignOp* isSgPointerAssignOp( SgNode * s );
251674 
251676  ROSE_DLL_API friend const SgPointerAssignOp* isSgPointerAssignOp( const SgNode * s );
251677 
251678  // ******************************************
251679  // * Memory Pool / New / Delete
251680  // ******************************************
251681 
251682  public:
251684  static const unsigned pool_size; //
251686  static std::vector<unsigned char *> pools; //
251688  static SgPointerAssignOp * next_node; //
251689 
251691  static unsigned long initializeStorageClassArray(SgPointerAssignOpStorageClass *); //
251692 
251694  static void clearMemoryPool(); //
251695  static void deleteMemoryPool(); //
251696 
251698  static void extendMemoryPoolForFileIO(); //
251699 
251701  static SgPointerAssignOp * getPointerFromGlobalIndex(unsigned long); //
251703  static SgPointerAssignOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
251704 
251706  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
251708  static void resetValidFreepointers(); //
251710  static unsigned long getNumberOfLastValidPointer(); //
251711 
251712 
251713 #if defined(INLINE_FUNCTIONS)
251714 
251715  inline void *operator new (size_t size);
251716 #else
251717 
251718  void *operator new (size_t size);
251719 #endif
251720 
251721  void operator delete (void* pointer, size_t size);
251722 
251723  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
251724  void operator delete (void* pointer)
251725  {
251726  // This is the generated delete operator...
251727  SgPointerAssignOp::operator delete (pointer,sizeof(SgPointerAssignOp));
251728  }
251729 
251731  static size_t numberOfNodes();
251732 
251734  static size_t memoryUsage();
251735 
251736  // End of scope which started in IR nodes specific code
251737  /* */
251738 
251739  /* name Internal Functions
251740  \brief Internal functions ... incomplete-documentation
251741 
251742  These functions have been made public as part of the design, but they are suggested for internal use
251743  or by particularly knowledgeable users for specialized tools or applications.
251744 
251745  \internal We could not make these private because they are required by user for special purposes. And
251746  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
251747 
251748  */
251749 
251750  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
251751  // overridden in every class by *generated* implementation
251753  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
251754  // MS: 06/28/02 container of names of variables or container indices
251755  // used used in the traversal to access AST successor nodes
251756  // overridden in every class by *generated* implementation
251759  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
251760 
251761  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
251762  // than all the vector copies. The implementation for these functions is generated for each class.
251764  virtual size_t get_numberOfTraversalSuccessors() override;
251766  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
251768  virtual size_t get_childIndex(SgNode *child) override;
251769 
251770 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
251771  // MS: 08/16/2002 method for generating RTI information
251773  virtual RTIReturnType roseRTI() override;
251774 #endif
251775  /* */
251776 
251777 
251778 
251779  /* name Deprecated Functions
251780  \brief Deprecated functions ... incomplete-documentation
251781 
251782  These functions have been deprecated from use.
251783  */
251784  /* */
251785 
251787  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
251788 
251789  // JJW (10/16/2008): Changed to a single function in Node.code, and put
251790  // getVariant() in #if 0 block to prevent confusing Doxygen
251791 #if 0
251792 
251793  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
251795  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
251796 #endif
251797  /* */
251798 
251799 
251800 
251801 
251802  public:
251803  /* name Traversal Support Functions
251804  \brief Traversal support functions ... incomplete-documentation
251805 
251806  These functions have been made public as part of the design, but they are suggested for internal use
251807  or by particularly knowledgable users for specialized tools or applications.
251808  */
251809  /* */
251810 
251811  // DQ (11/26/2005): Support for visitor pattern mechanims
251812  // (inferior to ROSE traversal mechanism, experimental).
251816 
251817  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
251819  virtual void accept (ROSE_VisitorPattern & visitor) override;
251820 
251821  // DQ (12/26/2005): Support for traversal based on the memory pool
251824  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
251825 
251828  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
251829 
251830  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
251831  // This traversal helps support internal tools that call static member functions.
251832  // note: this function operates on the memory pools.
251835  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
251836  /* */
251837 
251838 
251839  public:
251840  /* name Memory Allocation Functions
251841  \brief Memory allocations functions ... incomplete-documentation
251842 
251843  These functions have been made public as part of the design, but they are suggested for internal use
251844  or by particularly knowledgable users for specialized tools or applications.
251845  */
251846  /* */
251847 
251858  virtual bool isInMemoryPool() override;
251859 
251870  virtual void checkDataMemberPointersIfInMemoryPool() override;
251871 
251872  // DQ (4/30/2006): Modified to be a const function.
251887  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
251888 
251898  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
251899 
251911  virtual long getChildIndex( SgNode* childNode ) const override;
251912 
251913  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
251914  // comment here (changed to be a C style comment and not be a doxygen comment).
251915  /* \brief Constructor for use by AST File I/O Mechanism
251916 
251917  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
251918  which obtained via fast binary file I/O from disk.
251919  */
251920  // SgPointerAssignOp( SgPointerAssignOpStorageClass& source );
251921 
251922 
251923 
251924 
251925 
251926  // JH (10/24/2005): methods added to support the ast file IO
251927  private:
251928 
251929  /* name AST Memory Allocation Support Functions
251930  \brief Memory allocations support....
251931 
251932  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
251933  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
251934  and support the AST File I/O Mechanism.
251935  */
251936  /* */
251937 
251938  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
251939  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
251940  that I use the same type everywhere, if any changes are made. THe second one declares the type
251941  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
251942  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
251943  a correspinding one in the AST_FILE_IO class!
251944  */
251945  // DQ (9/2/2015): This typedef is no longer used, we can't define the
251946  // comment here (changed to be a C style comment and not be a doxygen comment).
251947  /* \brief Typedef used for low level memory access.
251948  */
251949  // typedef unsigned char* TestType;
251950 
251951  // DQ (9/2/2015): This typedef is no longer used, we can't define the
251952  // comment here (changed to be a C style comment and not be a doxygen comment).
251953  /* \brief Typedef used to hold memory addresses as values.
251954  */
251955  // typedef unsigned long AddressType;
251956 
251957 
251958 
251959  // necessary, to have direct access to the p_freepointer and the private methods !
251961  friend class AST_FILE_IO;
251962 
251964  friend class SgPointerAssignOpStorageClass;
251965 
251967  friend class AstSpecificDataManagingClass;
251968 
251970  friend class AstSpecificDataManagingClassStorageClass;
251971 
251972  public:
251974  SgPointerAssignOp( const SgPointerAssignOpStorageClass& source );
251975 
251976  // private: // JJW hack
251977  /*
251978  name AST Memory Allocation Support Variables
251979  Memory allocations support variables
251980 
251981  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
251982  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
251983  and support the AST File I/O Mechanism.
251984  */
251985  /* */
251986 
251987  public:
251988 
251989  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
251990  // to current node (so that it will work cleanly with build functions to specify patterns).
251991  // virtual SgNode* addRegExpAttribute();
251998 
251999 // *** COMMON CODE SECTION ENDS HERE ***
252000 
252001 
252002 // End of memberFunctionString
252003 // Start of memberFunctionString
252004 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
252005 
252006  // the generated cast function
252007  // friend ROSE_DLL_API SgPointerAssignOp* isSgPointerAssignOp ( SgNode* s );
252008 
252009  typedef SgBinaryOp base_node_type;
252010 
252011 
252012 // End of memberFunctionString
252013 // Start of memberFunctionString
252014 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
252015 
252016  void post_construction_initialization() override;
252017 
252018 
252019 // End of memberFunctionString
252020 // Start of memberFunctionString
252021 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
252022 
252023  int precedence() const override { return 2; }
252024 
252025 
252026 // End of memberFunctionString
252027 
252028 
252029  public:
252030  virtual ~SgPointerAssignOp();
252031 
252032 
252033  public:
252034  SgPointerAssignOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
252035  SgPointerAssignOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
252036 
252037  protected:
252038 
252039 
252040 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
252041 
252042 
252043  };
252044 #endif
252045 
252046 // postdeclarations for SgPointerAssignOp
252047 
252048 /* #line 252049 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
252049 
252050 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
252051 
252052 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
252053 
252054 
252055 /* #line 252056 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
252056 
252057 
252058 
252059 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
252060 
252061 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
252062 // This code is automatically generated for each
252063 // terminal and non-terminal within the defined
252064 // grammar. There is a simple way to change the
252065 // code to fix bugs etc. See the ROSE README file
252066 // for directions.
252067 
252068 // tps: (02/22/2010): Adding DLL export requirements
252069 #include "rosedll.h"
252070 
252071 // predeclarations for SgUserDefinedBinaryOp
252072 
252073 /* #line 252074 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
252074 
252075 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
252076 
252077 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
252078 
252079 #if 1
252080 // Class Definition for SgUserDefinedBinaryOp
252081 class ROSE_DLL_API SgUserDefinedBinaryOp : public SgBinaryOp
252082  {
252083  public:
252084 
252085 
252086 /* #line 252087 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
252087 
252088  virtual SgNode* copy ( SgCopyHelp& help) const override;
252089 // Start of memberFunctionString
252090 /* #line 1855 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
252091 
252092  SgType* get_type() const override;
252093 
252094 
252095 // End of memberFunctionString
252096 // Start of memberFunctionString
252097 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
252098 
252099 // *** COMMON CODE SECTION BEGINS HERE ***
252100 
252101  public:
252102 
252103  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
252104  // and not required which is required to match the other aspects of the copy mechanism code generation.
252105  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
252106  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
252107  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
252108  // virtual SgNode* copy ( const SgCopyHelp & help) const;
252109 
252111  virtual std::string class_name() const override;
252112 
252114  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
252115 
252117  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
252118  // static const VariantT static_variant = V_SgUserDefinedBinaryOp;
252119  enum { static_variant = V_SgUserDefinedBinaryOp };
252120 
252121  /* the generated cast function */
252123  ROSE_DLL_API friend SgUserDefinedBinaryOp* isSgUserDefinedBinaryOp( SgNode * s );
252124 
252126  ROSE_DLL_API friend const SgUserDefinedBinaryOp* isSgUserDefinedBinaryOp( const SgNode * s );
252127 
252128  // ******************************************
252129  // * Memory Pool / New / Delete
252130  // ******************************************
252131 
252132  public:
252134  static const unsigned pool_size; //
252136  static std::vector<unsigned char *> pools; //
252138  static SgUserDefinedBinaryOp * next_node; //
252139 
252141  static unsigned long initializeStorageClassArray(SgUserDefinedBinaryOpStorageClass *); //
252142 
252144  static void clearMemoryPool(); //
252145  static void deleteMemoryPool(); //
252146 
252148  static void extendMemoryPoolForFileIO(); //
252149 
252151  static SgUserDefinedBinaryOp * getPointerFromGlobalIndex(unsigned long); //
252153  static SgUserDefinedBinaryOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
252154 
252156  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
252158  static void resetValidFreepointers(); //
252160  static unsigned long getNumberOfLastValidPointer(); //
252161 
252162 
252163 #if defined(INLINE_FUNCTIONS)
252164 
252165  inline void *operator new (size_t size);
252166 #else
252167 
252168  void *operator new (size_t size);
252169 #endif
252170 
252171  void operator delete (void* pointer, size_t size);
252172 
252173  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
252174  void operator delete (void* pointer)
252175  {
252176  // This is the generated delete operator...
252177  SgUserDefinedBinaryOp::operator delete (pointer,sizeof(SgUserDefinedBinaryOp));
252178  }
252179 
252181  static size_t numberOfNodes();
252182 
252184  static size_t memoryUsage();
252185 
252186  // End of scope which started in IR nodes specific code
252187  /* */
252188 
252189  /* name Internal Functions
252190  \brief Internal functions ... incomplete-documentation
252191 
252192  These functions have been made public as part of the design, but they are suggested for internal use
252193  or by particularly knowledgeable users for specialized tools or applications.
252194 
252195  \internal We could not make these private because they are required by user for special purposes. And
252196  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
252197 
252198  */
252199 
252200  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
252201  // overridden in every class by *generated* implementation
252203  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
252204  // MS: 06/28/02 container of names of variables or container indices
252205  // used used in the traversal to access AST successor nodes
252206  // overridden in every class by *generated* implementation
252209  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
252210 
252211  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
252212  // than all the vector copies. The implementation for these functions is generated for each class.
252214  virtual size_t get_numberOfTraversalSuccessors() override;
252216  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
252218  virtual size_t get_childIndex(SgNode *child) override;
252219 
252220 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
252221  // MS: 08/16/2002 method for generating RTI information
252223  virtual RTIReturnType roseRTI() override;
252224 #endif
252225  /* */
252226 
252227 
252228 
252229  /* name Deprecated Functions
252230  \brief Deprecated functions ... incomplete-documentation
252231 
252232  These functions have been deprecated from use.
252233  */
252234  /* */
252235 
252237  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
252238 
252239  // JJW (10/16/2008): Changed to a single function in Node.code, and put
252240  // getVariant() in #if 0 block to prevent confusing Doxygen
252241 #if 0
252242 
252243  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
252245  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
252246 #endif
252247  /* */
252248 
252249 
252250 
252251 
252252  public:
252253  /* name Traversal Support Functions
252254  \brief Traversal support functions ... incomplete-documentation
252255 
252256  These functions have been made public as part of the design, but they are suggested for internal use
252257  or by particularly knowledgable users for specialized tools or applications.
252258  */
252259  /* */
252260 
252261  // DQ (11/26/2005): Support for visitor pattern mechanims
252262  // (inferior to ROSE traversal mechanism, experimental).
252266 
252267  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
252269  virtual void accept (ROSE_VisitorPattern & visitor) override;
252270 
252271  // DQ (12/26/2005): Support for traversal based on the memory pool
252274  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
252275 
252278  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
252279 
252280  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
252281  // This traversal helps support internal tools that call static member functions.
252282  // note: this function operates on the memory pools.
252285  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
252286  /* */
252287 
252288 
252289  public:
252290  /* name Memory Allocation Functions
252291  \brief Memory allocations functions ... incomplete-documentation
252292 
252293  These functions have been made public as part of the design, but they are suggested for internal use
252294  or by particularly knowledgable users for specialized tools or applications.
252295  */
252296  /* */
252297 
252308  virtual bool isInMemoryPool() override;
252309 
252320  virtual void checkDataMemberPointersIfInMemoryPool() override;
252321 
252322  // DQ (4/30/2006): Modified to be a const function.
252337  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
252338 
252348  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
252349 
252361  virtual long getChildIndex( SgNode* childNode ) const override;
252362 
252363  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
252364  // comment here (changed to be a C style comment and not be a doxygen comment).
252365  /* \brief Constructor for use by AST File I/O Mechanism
252366 
252367  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
252368  which obtained via fast binary file I/O from disk.
252369  */
252370  // SgUserDefinedBinaryOp( SgUserDefinedBinaryOpStorageClass& source );
252371 
252372 
252373 
252374 
252375 
252376  // JH (10/24/2005): methods added to support the ast file IO
252377  private:
252378 
252379  /* name AST Memory Allocation Support Functions
252380  \brief Memory allocations support....
252381 
252382  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
252383  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
252384  and support the AST File I/O Mechanism.
252385  */
252386  /* */
252387 
252388  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
252389  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
252390  that I use the same type everywhere, if any changes are made. THe second one declares the type
252391  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
252392  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
252393  a correspinding one in the AST_FILE_IO class!
252394  */
252395  // DQ (9/2/2015): This typedef is no longer used, we can't define the
252396  // comment here (changed to be a C style comment and not be a doxygen comment).
252397  /* \brief Typedef used for low level memory access.
252398  */
252399  // typedef unsigned char* TestType;
252400 
252401  // DQ (9/2/2015): This typedef is no longer used, we can't define the
252402  // comment here (changed to be a C style comment and not be a doxygen comment).
252403  /* \brief Typedef used to hold memory addresses as values.
252404  */
252405  // typedef unsigned long AddressType;
252406 
252407 
252408 
252409  // necessary, to have direct access to the p_freepointer and the private methods !
252411  friend class AST_FILE_IO;
252412 
252414  friend class SgUserDefinedBinaryOpStorageClass;
252415 
252417  friend class AstSpecificDataManagingClass;
252418 
252420  friend class AstSpecificDataManagingClassStorageClass;
252421 
252422  public:
252424  SgUserDefinedBinaryOp( const SgUserDefinedBinaryOpStorageClass& source );
252425 
252426  // private: // JJW hack
252427  /*
252428  name AST Memory Allocation Support Variables
252429  Memory allocations support variables
252430 
252431  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
252432  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
252433  and support the AST File I/O Mechanism.
252434  */
252435  /* */
252436 
252437  public:
252438 
252439  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
252440  // to current node (so that it will work cleanly with build functions to specify patterns).
252441  // virtual SgNode* addRegExpAttribute();
252448 
252449 // *** COMMON CODE SECTION ENDS HERE ***
252450 
252451 
252452 // End of memberFunctionString
252453 // Start of memberFunctionString
252454 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
252455 
252456  // the generated cast function
252457  // friend ROSE_DLL_API SgUserDefinedBinaryOp* isSgUserDefinedBinaryOp ( SgNode* s );
252458 
252459  typedef SgBinaryOp base_node_type;
252460 
252461 
252462 // End of memberFunctionString
252463 // Start of memberFunctionString
252464 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
252465 
252466  void post_construction_initialization() override;
252467 
252468 
252469 // End of memberFunctionString
252470 // Start of memberFunctionString
252471 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
252472 
252473  int precedence() const override { return 2; }
252474 
252475 
252476 // End of memberFunctionString
252477 
252478  public:
252479  SgName get_operator_name() const;
252480  void set_operator_name(SgName operator_name);
252481 
252482  public:
252483  SgFunctionSymbol* get_symbol() const;
252484  void set_symbol(SgFunctionSymbol* symbol);
252485 
252486 
252487  public:
252488  virtual ~SgUserDefinedBinaryOp();
252489 
252490 
252491  public:
252492  SgUserDefinedBinaryOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL, SgName operator_name = "", SgFunctionSymbol* symbol = NULL);
252493  SgUserDefinedBinaryOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type, SgName operator_name, SgFunctionSymbol* symbol);
252494 
252495  protected:
252496 // Start of memberFunctionString
252497 SgName p_operator_name;
252498 
252499 // End of memberFunctionString
252500 // Start of memberFunctionString
252501 SgFunctionSymbol* p_symbol;
252502 
252503 // End of memberFunctionString
252504 
252505 
252506 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
252507 
252508 
252509  };
252510 #endif
252511 
252512 // postdeclarations for SgUserDefinedBinaryOp
252513 
252514 /* #line 252515 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
252515 
252516 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
252517 
252518 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
252519 
252520 
252521 /* #line 252522 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
252522 
252523 
252524 
252525 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
252526 
252527 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
252528 // This code is automatically generated for each
252529 // terminal and non-terminal within the defined
252530 // grammar. There is a simple way to change the
252531 // code to fix bugs etc. See the ROSE README file
252532 // for directions.
252533 
252534 // tps: (02/22/2010): Adding DLL export requirements
252535 #include "rosedll.h"
252536 
252537 // predeclarations for SgCompoundAssignOp
252538 
252539 /* #line 252540 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
252540 
252541 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
252542 
252543 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
252544 
252545 #if 1
252546 // Class Definition for SgCompoundAssignOp
252547 class ROSE_DLL_API SgCompoundAssignOp : public SgBinaryOp
252548  {
252549  public:
252550 
252551 
252552 /* #line 252553 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
252553 
252554  virtual SgNode* copy ( SgCopyHelp& help) const override;
252555 // Start of memberFunctionString
252556 /* #line 1416 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
252557 
252558 
252559  // get lvalue
252560  virtual bool isLValue() const override;
252561  virtual bool isChildUsedAsLValue(const SgExpression* child) const override; // INTERNAL Recursively call up the chain to answer the child
252562 
252563 
252564 
252565 // End of memberFunctionString
252566 // Start of memberFunctionString
252567 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
252568 
252569 // *** COMMON CODE SECTION BEGINS HERE ***
252570 
252571  public:
252572 
252573  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
252574  // and not required which is required to match the other aspects of the copy mechanism code generation.
252575  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
252576  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
252577  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
252578  // virtual SgNode* copy ( const SgCopyHelp & help) const;
252579 
252581  virtual std::string class_name() const override;
252582 
252584  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
252585 
252587  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
252588  // static const VariantT static_variant = V_SgCompoundAssignOp;
252589  enum { static_variant = V_SgCompoundAssignOp };
252590 
252591  /* the generated cast function */
252593  ROSE_DLL_API friend SgCompoundAssignOp* isSgCompoundAssignOp( SgNode * s );
252594 
252596  ROSE_DLL_API friend const SgCompoundAssignOp* isSgCompoundAssignOp( const SgNode * s );
252597 
252598  // ******************************************
252599  // * Memory Pool / New / Delete
252600  // ******************************************
252601 
252602  public:
252604  static const unsigned pool_size; //
252606  static std::vector<unsigned char *> pools; //
252608  static SgCompoundAssignOp * next_node; //
252609 
252611  static unsigned long initializeStorageClassArray(SgCompoundAssignOpStorageClass *); //
252612 
252614  static void clearMemoryPool(); //
252615  static void deleteMemoryPool(); //
252616 
252618  static void extendMemoryPoolForFileIO(); //
252619 
252621  static SgCompoundAssignOp * getPointerFromGlobalIndex(unsigned long); //
252623  static SgCompoundAssignOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
252624 
252626  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
252628  static void resetValidFreepointers(); //
252630  static unsigned long getNumberOfLastValidPointer(); //
252631 
252632 
252633 #if defined(INLINE_FUNCTIONS)
252634 
252635  inline void *operator new (size_t size);
252636 #else
252637 
252638  void *operator new (size_t size);
252639 #endif
252640 
252641  void operator delete (void* pointer, size_t size);
252642 
252643  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
252644  void operator delete (void* pointer)
252645  {
252646  // This is the generated delete operator...
252647  SgCompoundAssignOp::operator delete (pointer,sizeof(SgCompoundAssignOp));
252648  }
252649 
252651  static size_t numberOfNodes();
252652 
252654  static size_t memoryUsage();
252655 
252656  // End of scope which started in IR nodes specific code
252657  /* */
252658 
252659  /* name Internal Functions
252660  \brief Internal functions ... incomplete-documentation
252661 
252662  These functions have been made public as part of the design, but they are suggested for internal use
252663  or by particularly knowledgeable users for specialized tools or applications.
252664 
252665  \internal We could not make these private because they are required by user for special purposes. And
252666  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
252667 
252668  */
252669 
252670  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
252671  // overridden in every class by *generated* implementation
252673  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
252674  // MS: 06/28/02 container of names of variables or container indices
252675  // used used in the traversal to access AST successor nodes
252676  // overridden in every class by *generated* implementation
252679  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
252680 
252681  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
252682  // than all the vector copies. The implementation for these functions is generated for each class.
252684  virtual size_t get_numberOfTraversalSuccessors() override;
252686  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
252688  virtual size_t get_childIndex(SgNode *child) override;
252689 
252690 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
252691  // MS: 08/16/2002 method for generating RTI information
252693  virtual RTIReturnType roseRTI() override;
252694 #endif
252695  /* */
252696 
252697 
252698 
252699  /* name Deprecated Functions
252700  \brief Deprecated functions ... incomplete-documentation
252701 
252702  These functions have been deprecated from use.
252703  */
252704  /* */
252705 
252707  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
252708 
252709  // JJW (10/16/2008): Changed to a single function in Node.code, and put
252710  // getVariant() in #if 0 block to prevent confusing Doxygen
252711 #if 0
252712 
252713  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
252715  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
252716 #endif
252717  /* */
252718 
252719 
252720 
252721 
252722  public:
252723  /* name Traversal Support Functions
252724  \brief Traversal support functions ... incomplete-documentation
252725 
252726  These functions have been made public as part of the design, but they are suggested for internal use
252727  or by particularly knowledgable users for specialized tools or applications.
252728  */
252729  /* */
252730 
252731  // DQ (11/26/2005): Support for visitor pattern mechanims
252732  // (inferior to ROSE traversal mechanism, experimental).
252736 
252737  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
252739  virtual void accept (ROSE_VisitorPattern & visitor) override;
252740 
252741  // DQ (12/26/2005): Support for traversal based on the memory pool
252744  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
252745 
252748  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
252749 
252750  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
252751  // This traversal helps support internal tools that call static member functions.
252752  // note: this function operates on the memory pools.
252755  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
252756  /* */
252757 
252758 
252759  public:
252760  /* name Memory Allocation Functions
252761  \brief Memory allocations functions ... incomplete-documentation
252762 
252763  These functions have been made public as part of the design, but they are suggested for internal use
252764  or by particularly knowledgable users for specialized tools or applications.
252765  */
252766  /* */
252767 
252778  virtual bool isInMemoryPool() override;
252779 
252790  virtual void checkDataMemberPointersIfInMemoryPool() override;
252791 
252792  // DQ (4/30/2006): Modified to be a const function.
252807  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
252808 
252818  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
252819 
252831  virtual long getChildIndex( SgNode* childNode ) const override;
252832 
252833  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
252834  // comment here (changed to be a C style comment and not be a doxygen comment).
252835  /* \brief Constructor for use by AST File I/O Mechanism
252836 
252837  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
252838  which obtained via fast binary file I/O from disk.
252839  */
252840  // SgCompoundAssignOp( SgCompoundAssignOpStorageClass& source );
252841 
252842 
252843 
252844 
252845 
252846  // JH (10/24/2005): methods added to support the ast file IO
252847  private:
252848 
252849  /* name AST Memory Allocation Support Functions
252850  \brief Memory allocations support....
252851 
252852  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
252853  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
252854  and support the AST File I/O Mechanism.
252855  */
252856  /* */
252857 
252858  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
252859  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
252860  that I use the same type everywhere, if any changes are made. THe second one declares the type
252861  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
252862  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
252863  a correspinding one in the AST_FILE_IO class!
252864  */
252865  // DQ (9/2/2015): This typedef is no longer used, we can't define the
252866  // comment here (changed to be a C style comment and not be a doxygen comment).
252867  /* \brief Typedef used for low level memory access.
252868  */
252869  // typedef unsigned char* TestType;
252870 
252871  // DQ (9/2/2015): This typedef is no longer used, we can't define the
252872  // comment here (changed to be a C style comment and not be a doxygen comment).
252873  /* \brief Typedef used to hold memory addresses as values.
252874  */
252875  // typedef unsigned long AddressType;
252876 
252877 
252878 
252879  // necessary, to have direct access to the p_freepointer and the private methods !
252881  friend class AST_FILE_IO;
252882 
252884  friend class SgCompoundAssignOpStorageClass;
252885 
252887  friend class AstSpecificDataManagingClass;
252888 
252890  friend class AstSpecificDataManagingClassStorageClass;
252891 
252892  public:
252894  SgCompoundAssignOp( const SgCompoundAssignOpStorageClass& source );
252895 
252896  // private: // JJW hack
252897  /*
252898  name AST Memory Allocation Support Variables
252899  Memory allocations support variables
252900 
252901  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
252902  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
252903  and support the AST File I/O Mechanism.
252904  */
252905  /* */
252906 
252907  public:
252908 
252909  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
252910  // to current node (so that it will work cleanly with build functions to specify patterns).
252911  // virtual SgNode* addRegExpAttribute();
252918 
252919 // *** COMMON CODE SECTION ENDS HERE ***
252920 
252921 
252922 // End of memberFunctionString
252923 // Start of memberFunctionString
252924 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
252925 
252926  // the generated cast function
252927  // friend ROSE_DLL_API SgCompoundAssignOp* isSgCompoundAssignOp ( SgNode* s );
252928 
252929  typedef SgBinaryOp base_node_type;
252930 
252931 
252932 // End of memberFunctionString
252933 // Start of memberFunctionString
252934 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
252935 
252936  void post_construction_initialization() override;
252937 
252938 
252939 // End of memberFunctionString
252940 
252941 
252942  public:
252943  virtual ~SgCompoundAssignOp();
252944 
252945 
252946  public:
252947  SgCompoundAssignOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
252948  SgCompoundAssignOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
252949 
252950  protected:
252951 
252952 
252953 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
252954 
252955 
252956  };
252957 #endif
252958 
252959 // postdeclarations for SgCompoundAssignOp
252960 
252961 /* #line 252962 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
252962 
252963 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
252964 
252965 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
252966 
252967 
252968 /* #line 252969 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
252969 
252970 
252971 
252972 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
252973 
252974 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
252975 // This code is automatically generated for each
252976 // terminal and non-terminal within the defined
252977 // grammar. There is a simple way to change the
252978 // code to fix bugs etc. See the ROSE README file
252979 // for directions.
252980 
252981 // tps: (02/22/2010): Adding DLL export requirements
252982 #include "rosedll.h"
252983 
252984 // predeclarations for SgPlusAssignOp
252985 
252986 /* #line 252987 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
252987 
252988 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
252989 
252990 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
252991 
252992 #if 1
252993 // Class Definition for SgPlusAssignOp
252994 class ROSE_DLL_API SgPlusAssignOp : public SgCompoundAssignOp
252995  {
252996  public:
252997 
252998 
252999 /* #line 253000 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
253000 
253001  virtual SgNode* copy ( SgCopyHelp& help) const override;
253002 // Start of memberFunctionString
253003 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
253004 
253005 // *** COMMON CODE SECTION BEGINS HERE ***
253006 
253007  public:
253008 
253009  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
253010  // and not required which is required to match the other aspects of the copy mechanism code generation.
253011  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
253012  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
253013  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
253014  // virtual SgNode* copy ( const SgCopyHelp & help) const;
253015 
253017  virtual std::string class_name() const override;
253018 
253020  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
253021 
253023  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
253024  // static const VariantT static_variant = V_SgPlusAssignOp;
253025  enum { static_variant = V_SgPlusAssignOp };
253026 
253027  /* the generated cast function */
253029  ROSE_DLL_API friend SgPlusAssignOp* isSgPlusAssignOp( SgNode * s );
253030 
253032  ROSE_DLL_API friend const SgPlusAssignOp* isSgPlusAssignOp( const SgNode * s );
253033 
253034  // ******************************************
253035  // * Memory Pool / New / Delete
253036  // ******************************************
253037 
253038  public:
253040  static const unsigned pool_size; //
253042  static std::vector<unsigned char *> pools; //
253044  static SgPlusAssignOp * next_node; //
253045 
253047  static unsigned long initializeStorageClassArray(SgPlusAssignOpStorageClass *); //
253048 
253050  static void clearMemoryPool(); //
253051  static void deleteMemoryPool(); //
253052 
253054  static void extendMemoryPoolForFileIO(); //
253055 
253057  static SgPlusAssignOp * getPointerFromGlobalIndex(unsigned long); //
253059  static SgPlusAssignOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
253060 
253062  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
253064  static void resetValidFreepointers(); //
253066  static unsigned long getNumberOfLastValidPointer(); //
253067 
253068 
253069 #if defined(INLINE_FUNCTIONS)
253070 
253071  inline void *operator new (size_t size);
253072 #else
253073 
253074  void *operator new (size_t size);
253075 #endif
253076 
253077  void operator delete (void* pointer, size_t size);
253078 
253079  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
253080  void operator delete (void* pointer)
253081  {
253082  // This is the generated delete operator...
253083  SgPlusAssignOp::operator delete (pointer,sizeof(SgPlusAssignOp));
253084  }
253085 
253087  static size_t numberOfNodes();
253088 
253090  static size_t memoryUsage();
253091 
253092  // End of scope which started in IR nodes specific code
253093  /* */
253094 
253095  /* name Internal Functions
253096  \brief Internal functions ... incomplete-documentation
253097 
253098  These functions have been made public as part of the design, but they are suggested for internal use
253099  or by particularly knowledgeable users for specialized tools or applications.
253100 
253101  \internal We could not make these private because they are required by user for special purposes. And
253102  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
253103 
253104  */
253105 
253106  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
253107  // overridden in every class by *generated* implementation
253109  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
253110  // MS: 06/28/02 container of names of variables or container indices
253111  // used used in the traversal to access AST successor nodes
253112  // overridden in every class by *generated* implementation
253115  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
253116 
253117  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
253118  // than all the vector copies. The implementation for these functions is generated for each class.
253120  virtual size_t get_numberOfTraversalSuccessors() override;
253122  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
253124  virtual size_t get_childIndex(SgNode *child) override;
253125 
253126 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
253127  // MS: 08/16/2002 method for generating RTI information
253129  virtual RTIReturnType roseRTI() override;
253130 #endif
253131  /* */
253132 
253133 
253134 
253135  /* name Deprecated Functions
253136  \brief Deprecated functions ... incomplete-documentation
253137 
253138  These functions have been deprecated from use.
253139  */
253140  /* */
253141 
253143  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
253144 
253145  // JJW (10/16/2008): Changed to a single function in Node.code, and put
253146  // getVariant() in #if 0 block to prevent confusing Doxygen
253147 #if 0
253148 
253149  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
253151  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
253152 #endif
253153  /* */
253154 
253155 
253156 
253157 
253158  public:
253159  /* name Traversal Support Functions
253160  \brief Traversal support functions ... incomplete-documentation
253161 
253162  These functions have been made public as part of the design, but they are suggested for internal use
253163  or by particularly knowledgable users for specialized tools or applications.
253164  */
253165  /* */
253166 
253167  // DQ (11/26/2005): Support for visitor pattern mechanims
253168  // (inferior to ROSE traversal mechanism, experimental).
253172 
253173  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
253175  virtual void accept (ROSE_VisitorPattern & visitor) override;
253176 
253177  // DQ (12/26/2005): Support for traversal based on the memory pool
253180  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
253181 
253184  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
253185 
253186  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
253187  // This traversal helps support internal tools that call static member functions.
253188  // note: this function operates on the memory pools.
253191  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
253192  /* */
253193 
253194 
253195  public:
253196  /* name Memory Allocation Functions
253197  \brief Memory allocations functions ... incomplete-documentation
253198 
253199  These functions have been made public as part of the design, but they are suggested for internal use
253200  or by particularly knowledgable users for specialized tools or applications.
253201  */
253202  /* */
253203 
253214  virtual bool isInMemoryPool() override;
253215 
253226  virtual void checkDataMemberPointersIfInMemoryPool() override;
253227 
253228  // DQ (4/30/2006): Modified to be a const function.
253243  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
253244 
253254  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
253255 
253267  virtual long getChildIndex( SgNode* childNode ) const override;
253268 
253269  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
253270  // comment here (changed to be a C style comment and not be a doxygen comment).
253271  /* \brief Constructor for use by AST File I/O Mechanism
253272 
253273  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
253274  which obtained via fast binary file I/O from disk.
253275  */
253276  // SgPlusAssignOp( SgPlusAssignOpStorageClass& source );
253277 
253278 
253279 
253280 
253281 
253282  // JH (10/24/2005): methods added to support the ast file IO
253283  private:
253284 
253285  /* name AST Memory Allocation Support Functions
253286  \brief Memory allocations support....
253287 
253288  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
253289  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
253290  and support the AST File I/O Mechanism.
253291  */
253292  /* */
253293 
253294  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
253295  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
253296  that I use the same type everywhere, if any changes are made. THe second one declares the type
253297  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
253298  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
253299  a correspinding one in the AST_FILE_IO class!
253300  */
253301  // DQ (9/2/2015): This typedef is no longer used, we can't define the
253302  // comment here (changed to be a C style comment and not be a doxygen comment).
253303  /* \brief Typedef used for low level memory access.
253304  */
253305  // typedef unsigned char* TestType;
253306 
253307  // DQ (9/2/2015): This typedef is no longer used, we can't define the
253308  // comment here (changed to be a C style comment and not be a doxygen comment).
253309  /* \brief Typedef used to hold memory addresses as values.
253310  */
253311  // typedef unsigned long AddressType;
253312 
253313 
253314 
253315  // necessary, to have direct access to the p_freepointer and the private methods !
253317  friend class AST_FILE_IO;
253318 
253320  friend class SgPlusAssignOpStorageClass;
253321 
253323  friend class AstSpecificDataManagingClass;
253324 
253326  friend class AstSpecificDataManagingClassStorageClass;
253327 
253328  public:
253330  SgPlusAssignOp( const SgPlusAssignOpStorageClass& source );
253331 
253332  // private: // JJW hack
253333  /*
253334  name AST Memory Allocation Support Variables
253335  Memory allocations support variables
253336 
253337  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
253338  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
253339  and support the AST File I/O Mechanism.
253340  */
253341  /* */
253342 
253343  public:
253344 
253345  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
253346  // to current node (so that it will work cleanly with build functions to specify patterns).
253347  // virtual SgNode* addRegExpAttribute();
253354 
253355 // *** COMMON CODE SECTION ENDS HERE ***
253356 
253357 
253358 // End of memberFunctionString
253359 // Start of memberFunctionString
253360 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
253361 
253362  // the generated cast function
253363  // friend ROSE_DLL_API SgPlusAssignOp* isSgPlusAssignOp ( SgNode* s );
253364 
253366 
253367 
253368 // End of memberFunctionString
253369 // Start of memberFunctionString
253370 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
253371 
253372  void post_construction_initialization() override;
253373 
253374 
253375 // End of memberFunctionString
253376 // Start of memberFunctionString
253377 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
253378 
253379  int precedence() const override { return 2; }
253380 
253381 
253382 // End of memberFunctionString
253383 
253384 
253385  public:
253386  virtual ~SgPlusAssignOp();
253387 
253388 
253389  public:
253390  SgPlusAssignOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
253391  SgPlusAssignOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
253392 
253393  protected:
253394 
253395 
253396 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
253397 
253398 
253399  };
253400 #endif
253401 
253402 // postdeclarations for SgPlusAssignOp
253403 
253404 /* #line 253405 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
253405 
253406 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
253407 
253408 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
253409 
253410 
253411 /* #line 253412 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
253412 
253413 
253414 
253415 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
253416 
253417 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
253418 // This code is automatically generated for each
253419 // terminal and non-terminal within the defined
253420 // grammar. There is a simple way to change the
253421 // code to fix bugs etc. See the ROSE README file
253422 // for directions.
253423 
253424 // tps: (02/22/2010): Adding DLL export requirements
253425 #include "rosedll.h"
253426 
253427 // predeclarations for SgMinusAssignOp
253428 
253429 /* #line 253430 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
253430 
253431 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
253432 
253433 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
253434 
253435 #if 1
253436 // Class Definition for SgMinusAssignOp
253437 class ROSE_DLL_API SgMinusAssignOp : public SgCompoundAssignOp
253438  {
253439  public:
253440 
253441 
253442 /* #line 253443 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
253443 
253444  virtual SgNode* copy ( SgCopyHelp& help) const override;
253445 // Start of memberFunctionString
253446 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
253447 
253448 // *** COMMON CODE SECTION BEGINS HERE ***
253449 
253450  public:
253451 
253452  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
253453  // and not required which is required to match the other aspects of the copy mechanism code generation.
253454  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
253455  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
253456  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
253457  // virtual SgNode* copy ( const SgCopyHelp & help) const;
253458 
253460  virtual std::string class_name() const override;
253461 
253463  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
253464 
253466  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
253467  // static const VariantT static_variant = V_SgMinusAssignOp;
253468  enum { static_variant = V_SgMinusAssignOp };
253469 
253470  /* the generated cast function */
253472  ROSE_DLL_API friend SgMinusAssignOp* isSgMinusAssignOp( SgNode * s );
253473 
253475  ROSE_DLL_API friend const SgMinusAssignOp* isSgMinusAssignOp( const SgNode * s );
253476 
253477  // ******************************************
253478  // * Memory Pool / New / Delete
253479  // ******************************************
253480 
253481  public:
253483  static const unsigned pool_size; //
253485  static std::vector<unsigned char *> pools; //
253487  static SgMinusAssignOp * next_node; //
253488 
253490  static unsigned long initializeStorageClassArray(SgMinusAssignOpStorageClass *); //
253491 
253493  static void clearMemoryPool(); //
253494  static void deleteMemoryPool(); //
253495 
253497  static void extendMemoryPoolForFileIO(); //
253498 
253500  static SgMinusAssignOp * getPointerFromGlobalIndex(unsigned long); //
253502  static SgMinusAssignOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
253503 
253505  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
253507  static void resetValidFreepointers(); //
253509  static unsigned long getNumberOfLastValidPointer(); //
253510 
253511 
253512 #if defined(INLINE_FUNCTIONS)
253513 
253514  inline void *operator new (size_t size);
253515 #else
253516 
253517  void *operator new (size_t size);
253518 #endif
253519 
253520  void operator delete (void* pointer, size_t size);
253521 
253522  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
253523  void operator delete (void* pointer)
253524  {
253525  // This is the generated delete operator...
253526  SgMinusAssignOp::operator delete (pointer,sizeof(SgMinusAssignOp));
253527  }
253528 
253530  static size_t numberOfNodes();
253531 
253533  static size_t memoryUsage();
253534 
253535  // End of scope which started in IR nodes specific code
253536  /* */
253537 
253538  /* name Internal Functions
253539  \brief Internal functions ... incomplete-documentation
253540 
253541  These functions have been made public as part of the design, but they are suggested for internal use
253542  or by particularly knowledgeable users for specialized tools or applications.
253543 
253544  \internal We could not make these private because they are required by user for special purposes. And
253545  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
253546 
253547  */
253548 
253549  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
253550  // overridden in every class by *generated* implementation
253552  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
253553  // MS: 06/28/02 container of names of variables or container indices
253554  // used used in the traversal to access AST successor nodes
253555  // overridden in every class by *generated* implementation
253558  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
253559 
253560  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
253561  // than all the vector copies. The implementation for these functions is generated for each class.
253563  virtual size_t get_numberOfTraversalSuccessors() override;
253565  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
253567  virtual size_t get_childIndex(SgNode *child) override;
253568 
253569 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
253570  // MS: 08/16/2002 method for generating RTI information
253572  virtual RTIReturnType roseRTI() override;
253573 #endif
253574  /* */
253575 
253576 
253577 
253578  /* name Deprecated Functions
253579  \brief Deprecated functions ... incomplete-documentation
253580 
253581  These functions have been deprecated from use.
253582  */
253583  /* */
253584 
253586  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
253587 
253588  // JJW (10/16/2008): Changed to a single function in Node.code, and put
253589  // getVariant() in #if 0 block to prevent confusing Doxygen
253590 #if 0
253591 
253592  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
253594  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
253595 #endif
253596  /* */
253597 
253598 
253599 
253600 
253601  public:
253602  /* name Traversal Support Functions
253603  \brief Traversal support functions ... incomplete-documentation
253604 
253605  These functions have been made public as part of the design, but they are suggested for internal use
253606  or by particularly knowledgable users for specialized tools or applications.
253607  */
253608  /* */
253609 
253610  // DQ (11/26/2005): Support for visitor pattern mechanims
253611  // (inferior to ROSE traversal mechanism, experimental).
253615 
253616  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
253618  virtual void accept (ROSE_VisitorPattern & visitor) override;
253619 
253620  // DQ (12/26/2005): Support for traversal based on the memory pool
253623  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
253624 
253627  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
253628 
253629  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
253630  // This traversal helps support internal tools that call static member functions.
253631  // note: this function operates on the memory pools.
253634  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
253635  /* */
253636 
253637 
253638  public:
253639  /* name Memory Allocation Functions
253640  \brief Memory allocations functions ... incomplete-documentation
253641 
253642  These functions have been made public as part of the design, but they are suggested for internal use
253643  or by particularly knowledgable users for specialized tools or applications.
253644  */
253645  /* */
253646 
253657  virtual bool isInMemoryPool() override;
253658 
253669  virtual void checkDataMemberPointersIfInMemoryPool() override;
253670 
253671  // DQ (4/30/2006): Modified to be a const function.
253686  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
253687 
253697  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
253698 
253710  virtual long getChildIndex( SgNode* childNode ) const override;
253711 
253712  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
253713  // comment here (changed to be a C style comment and not be a doxygen comment).
253714  /* \brief Constructor for use by AST File I/O Mechanism
253715 
253716  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
253717  which obtained via fast binary file I/O from disk.
253718  */
253719  // SgMinusAssignOp( SgMinusAssignOpStorageClass& source );
253720 
253721 
253722 
253723 
253724 
253725  // JH (10/24/2005): methods added to support the ast file IO
253726  private:
253727 
253728  /* name AST Memory Allocation Support Functions
253729  \brief Memory allocations support....
253730 
253731  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
253732  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
253733  and support the AST File I/O Mechanism.
253734  */
253735  /* */
253736 
253737  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
253738  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
253739  that I use the same type everywhere, if any changes are made. THe second one declares the type
253740  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
253741  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
253742  a correspinding one in the AST_FILE_IO class!
253743  */
253744  // DQ (9/2/2015): This typedef is no longer used, we can't define the
253745  // comment here (changed to be a C style comment and not be a doxygen comment).
253746  /* \brief Typedef used for low level memory access.
253747  */
253748  // typedef unsigned char* TestType;
253749 
253750  // DQ (9/2/2015): This typedef is no longer used, we can't define the
253751  // comment here (changed to be a C style comment and not be a doxygen comment).
253752  /* \brief Typedef used to hold memory addresses as values.
253753  */
253754  // typedef unsigned long AddressType;
253755 
253756 
253757 
253758  // necessary, to have direct access to the p_freepointer and the private methods !
253760  friend class AST_FILE_IO;
253761 
253763  friend class SgMinusAssignOpStorageClass;
253764 
253766  friend class AstSpecificDataManagingClass;
253767 
253769  friend class AstSpecificDataManagingClassStorageClass;
253770 
253771  public:
253773  SgMinusAssignOp( const SgMinusAssignOpStorageClass& source );
253774 
253775  // private: // JJW hack
253776  /*
253777  name AST Memory Allocation Support Variables
253778  Memory allocations support variables
253779 
253780  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
253781  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
253782  and support the AST File I/O Mechanism.
253783  */
253784  /* */
253785 
253786  public:
253787 
253788  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
253789  // to current node (so that it will work cleanly with build functions to specify patterns).
253790  // virtual SgNode* addRegExpAttribute();
253797 
253798 // *** COMMON CODE SECTION ENDS HERE ***
253799 
253800 
253801 // End of memberFunctionString
253802 // Start of memberFunctionString
253803 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
253804 
253805  // the generated cast function
253806  // friend ROSE_DLL_API SgMinusAssignOp* isSgMinusAssignOp ( SgNode* s );
253807 
253809 
253810 
253811 // End of memberFunctionString
253812 // Start of memberFunctionString
253813 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
253814 
253815  void post_construction_initialization() override;
253816 
253817 
253818 // End of memberFunctionString
253819 // Start of memberFunctionString
253820 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
253821 
253822  int precedence() const override { return 2; }
253823 
253824 
253825 // End of memberFunctionString
253826 
253827 
253828  public:
253829  virtual ~SgMinusAssignOp();
253830 
253831 
253832  public:
253833  SgMinusAssignOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
253834  SgMinusAssignOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
253835 
253836  protected:
253837 
253838 
253839 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
253840 
253841 
253842  };
253843 #endif
253844 
253845 // postdeclarations for SgMinusAssignOp
253846 
253847 /* #line 253848 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
253848 
253849 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
253850 
253851 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
253852 
253853 
253854 /* #line 253855 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
253855 
253856 
253857 
253858 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
253859 
253860 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
253861 // This code is automatically generated for each
253862 // terminal and non-terminal within the defined
253863 // grammar. There is a simple way to change the
253864 // code to fix bugs etc. See the ROSE README file
253865 // for directions.
253866 
253867 // tps: (02/22/2010): Adding DLL export requirements
253868 #include "rosedll.h"
253869 
253870 // predeclarations for SgAndAssignOp
253871 
253872 /* #line 253873 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
253873 
253874 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
253875 
253876 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
253877 
253878 #if 1
253879 // Class Definition for SgAndAssignOp
253880 class ROSE_DLL_API SgAndAssignOp : public SgCompoundAssignOp
253881  {
253882  public:
253883 
253884 
253885 /* #line 253886 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
253886 
253887  virtual SgNode* copy ( SgCopyHelp& help) const override;
253888 // Start of memberFunctionString
253889 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
253890 
253891 // *** COMMON CODE SECTION BEGINS HERE ***
253892 
253893  public:
253894 
253895  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
253896  // and not required which is required to match the other aspects of the copy mechanism code generation.
253897  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
253898  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
253899  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
253900  // virtual SgNode* copy ( const SgCopyHelp & help) const;
253901 
253903  virtual std::string class_name() const override;
253904 
253906  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
253907 
253909  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
253910  // static const VariantT static_variant = V_SgAndAssignOp;
253911  enum { static_variant = V_SgAndAssignOp };
253912 
253913  /* the generated cast function */
253915  ROSE_DLL_API friend SgAndAssignOp* isSgAndAssignOp( SgNode * s );
253916 
253918  ROSE_DLL_API friend const SgAndAssignOp* isSgAndAssignOp( const SgNode * s );
253919 
253920  // ******************************************
253921  // * Memory Pool / New / Delete
253922  // ******************************************
253923 
253924  public:
253926  static const unsigned pool_size; //
253928  static std::vector<unsigned char *> pools; //
253930  static SgAndAssignOp * next_node; //
253931 
253933  static unsigned long initializeStorageClassArray(SgAndAssignOpStorageClass *); //
253934 
253936  static void clearMemoryPool(); //
253937  static void deleteMemoryPool(); //
253938 
253940  static void extendMemoryPoolForFileIO(); //
253941 
253943  static SgAndAssignOp * getPointerFromGlobalIndex(unsigned long); //
253945  static SgAndAssignOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
253946 
253948  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
253950  static void resetValidFreepointers(); //
253952  static unsigned long getNumberOfLastValidPointer(); //
253953 
253954 
253955 #if defined(INLINE_FUNCTIONS)
253956 
253957  inline void *operator new (size_t size);
253958 #else
253959 
253960  void *operator new (size_t size);
253961 #endif
253962 
253963  void operator delete (void* pointer, size_t size);
253964 
253965  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
253966  void operator delete (void* pointer)
253967  {
253968  // This is the generated delete operator...
253969  SgAndAssignOp::operator delete (pointer,sizeof(SgAndAssignOp));
253970  }
253971 
253973  static size_t numberOfNodes();
253974 
253976  static size_t memoryUsage();
253977 
253978  // End of scope which started in IR nodes specific code
253979  /* */
253980 
253981  /* name Internal Functions
253982  \brief Internal functions ... incomplete-documentation
253983 
253984  These functions have been made public as part of the design, but they are suggested for internal use
253985  or by particularly knowledgeable users for specialized tools or applications.
253986 
253987  \internal We could not make these private because they are required by user for special purposes. And
253988  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
253989 
253990  */
253991 
253992  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
253993  // overridden in every class by *generated* implementation
253995  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
253996  // MS: 06/28/02 container of names of variables or container indices
253997  // used used in the traversal to access AST successor nodes
253998  // overridden in every class by *generated* implementation
254001  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
254002 
254003  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
254004  // than all the vector copies. The implementation for these functions is generated for each class.
254006  virtual size_t get_numberOfTraversalSuccessors() override;
254008  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
254010  virtual size_t get_childIndex(SgNode *child) override;
254011 
254012 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
254013  // MS: 08/16/2002 method for generating RTI information
254015  virtual RTIReturnType roseRTI() override;
254016 #endif
254017  /* */
254018 
254019 
254020 
254021  /* name Deprecated Functions
254022  \brief Deprecated functions ... incomplete-documentation
254023 
254024  These functions have been deprecated from use.
254025  */
254026  /* */
254027 
254029  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
254030 
254031  // JJW (10/16/2008): Changed to a single function in Node.code, and put
254032  // getVariant() in #if 0 block to prevent confusing Doxygen
254033 #if 0
254034 
254035  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
254037  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
254038 #endif
254039  /* */
254040 
254041 
254042 
254043 
254044  public:
254045  /* name Traversal Support Functions
254046  \brief Traversal support functions ... incomplete-documentation
254047 
254048  These functions have been made public as part of the design, but they are suggested for internal use
254049  or by particularly knowledgable users for specialized tools or applications.
254050  */
254051  /* */
254052 
254053  // DQ (11/26/2005): Support for visitor pattern mechanims
254054  // (inferior to ROSE traversal mechanism, experimental).
254058 
254059  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
254061  virtual void accept (ROSE_VisitorPattern & visitor) override;
254062 
254063  // DQ (12/26/2005): Support for traversal based on the memory pool
254066  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
254067 
254070  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
254071 
254072  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
254073  // This traversal helps support internal tools that call static member functions.
254074  // note: this function operates on the memory pools.
254077  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
254078  /* */
254079 
254080 
254081  public:
254082  /* name Memory Allocation Functions
254083  \brief Memory allocations functions ... incomplete-documentation
254084 
254085  These functions have been made public as part of the design, but they are suggested for internal use
254086  or by particularly knowledgable users for specialized tools or applications.
254087  */
254088  /* */
254089 
254100  virtual bool isInMemoryPool() override;
254101 
254112  virtual void checkDataMemberPointersIfInMemoryPool() override;
254113 
254114  // DQ (4/30/2006): Modified to be a const function.
254129  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
254130 
254140  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
254141 
254153  virtual long getChildIndex( SgNode* childNode ) const override;
254154 
254155  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
254156  // comment here (changed to be a C style comment and not be a doxygen comment).
254157  /* \brief Constructor for use by AST File I/O Mechanism
254158 
254159  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
254160  which obtained via fast binary file I/O from disk.
254161  */
254162  // SgAndAssignOp( SgAndAssignOpStorageClass& source );
254163 
254164 
254165 
254166 
254167 
254168  // JH (10/24/2005): methods added to support the ast file IO
254169  private:
254170 
254171  /* name AST Memory Allocation Support Functions
254172  \brief Memory allocations support....
254173 
254174  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
254175  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
254176  and support the AST File I/O Mechanism.
254177  */
254178  /* */
254179 
254180  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
254181  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
254182  that I use the same type everywhere, if any changes are made. THe second one declares the type
254183  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
254184  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
254185  a correspinding one in the AST_FILE_IO class!
254186  */
254187  // DQ (9/2/2015): This typedef is no longer used, we can't define the
254188  // comment here (changed to be a C style comment and not be a doxygen comment).
254189  /* \brief Typedef used for low level memory access.
254190  */
254191  // typedef unsigned char* TestType;
254192 
254193  // DQ (9/2/2015): This typedef is no longer used, we can't define the
254194  // comment here (changed to be a C style comment and not be a doxygen comment).
254195  /* \brief Typedef used to hold memory addresses as values.
254196  */
254197  // typedef unsigned long AddressType;
254198 
254199 
254200 
254201  // necessary, to have direct access to the p_freepointer and the private methods !
254203  friend class AST_FILE_IO;
254204 
254206  friend class SgAndAssignOpStorageClass;
254207 
254209  friend class AstSpecificDataManagingClass;
254210 
254212  friend class AstSpecificDataManagingClassStorageClass;
254213 
254214  public:
254216  SgAndAssignOp( const SgAndAssignOpStorageClass& source );
254217 
254218  // private: // JJW hack
254219  /*
254220  name AST Memory Allocation Support Variables
254221  Memory allocations support variables
254222 
254223  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
254224  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
254225  and support the AST File I/O Mechanism.
254226  */
254227  /* */
254228 
254229  public:
254230 
254231  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
254232  // to current node (so that it will work cleanly with build functions to specify patterns).
254233  // virtual SgNode* addRegExpAttribute();
254239  SgAndAssignOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
254240 
254241 // *** COMMON CODE SECTION ENDS HERE ***
254242 
254243 
254244 // End of memberFunctionString
254245 // Start of memberFunctionString
254246 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
254247 
254248  // the generated cast function
254249  // friend ROSE_DLL_API SgAndAssignOp* isSgAndAssignOp ( SgNode* s );
254250 
254252 
254253 
254254 // End of memberFunctionString
254255 // Start of memberFunctionString
254256 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
254257 
254258  void post_construction_initialization() override;
254259 
254260 
254261 // End of memberFunctionString
254262 // Start of memberFunctionString
254263 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
254264 
254265  int precedence() const override { return 2; }
254266 
254267 
254268 // End of memberFunctionString
254269 
254270 
254271  public:
254272  virtual ~SgAndAssignOp();
254273 
254274 
254275  public:
254276  SgAndAssignOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
254277  SgAndAssignOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
254278 
254279  protected:
254280 
254281 
254282 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
254283 
254284 
254285  };
254286 #endif
254287 
254288 // postdeclarations for SgAndAssignOp
254289 
254290 /* #line 254291 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
254291 
254292 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
254293 
254294 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
254295 
254296 
254297 /* #line 254298 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
254298 
254299 
254300 
254301 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
254302 
254303 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
254304 // This code is automatically generated for each
254305 // terminal and non-terminal within the defined
254306 // grammar. There is a simple way to change the
254307 // code to fix bugs etc. See the ROSE README file
254308 // for directions.
254309 
254310 // tps: (02/22/2010): Adding DLL export requirements
254311 #include "rosedll.h"
254312 
254313 // predeclarations for SgIorAssignOp
254314 
254315 /* #line 254316 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
254316 
254317 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
254318 
254319 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
254320 
254321 #if 1
254322 // Class Definition for SgIorAssignOp
254323 class ROSE_DLL_API SgIorAssignOp : public SgCompoundAssignOp
254324  {
254325  public:
254326 
254327 
254328 /* #line 254329 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
254329 
254330  virtual SgNode* copy ( SgCopyHelp& help) const override;
254331 // Start of memberFunctionString
254332 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
254333 
254334 // *** COMMON CODE SECTION BEGINS HERE ***
254335 
254336  public:
254337 
254338  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
254339  // and not required which is required to match the other aspects of the copy mechanism code generation.
254340  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
254341  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
254342  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
254343  // virtual SgNode* copy ( const SgCopyHelp & help) const;
254344 
254346  virtual std::string class_name() const override;
254347 
254349  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
254350 
254352  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
254353  // static const VariantT static_variant = V_SgIorAssignOp;
254354  enum { static_variant = V_SgIorAssignOp };
254355 
254356  /* the generated cast function */
254358  ROSE_DLL_API friend SgIorAssignOp* isSgIorAssignOp( SgNode * s );
254359 
254361  ROSE_DLL_API friend const SgIorAssignOp* isSgIorAssignOp( const SgNode * s );
254362 
254363  // ******************************************
254364  // * Memory Pool / New / Delete
254365  // ******************************************
254366 
254367  public:
254369  static const unsigned pool_size; //
254371  static std::vector<unsigned char *> pools; //
254373  static SgIorAssignOp * next_node; //
254374 
254376  static unsigned long initializeStorageClassArray(SgIorAssignOpStorageClass *); //
254377 
254379  static void clearMemoryPool(); //
254380  static void deleteMemoryPool(); //
254381 
254383  static void extendMemoryPoolForFileIO(); //
254384 
254386  static SgIorAssignOp * getPointerFromGlobalIndex(unsigned long); //
254388  static SgIorAssignOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
254389 
254391  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
254393  static void resetValidFreepointers(); //
254395  static unsigned long getNumberOfLastValidPointer(); //
254396 
254397 
254398 #if defined(INLINE_FUNCTIONS)
254399 
254400  inline void *operator new (size_t size);
254401 #else
254402 
254403  void *operator new (size_t size);
254404 #endif
254405 
254406  void operator delete (void* pointer, size_t size);
254407 
254408  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
254409  void operator delete (void* pointer)
254410  {
254411  // This is the generated delete operator...
254412  SgIorAssignOp::operator delete (pointer,sizeof(SgIorAssignOp));
254413  }
254414 
254416  static size_t numberOfNodes();
254417 
254419  static size_t memoryUsage();
254420 
254421  // End of scope which started in IR nodes specific code
254422  /* */
254423 
254424  /* name Internal Functions
254425  \brief Internal functions ... incomplete-documentation
254426 
254427  These functions have been made public as part of the design, but they are suggested for internal use
254428  or by particularly knowledgeable users for specialized tools or applications.
254429 
254430  \internal We could not make these private because they are required by user for special purposes. And
254431  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
254432 
254433  */
254434 
254435  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
254436  // overridden in every class by *generated* implementation
254438  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
254439  // MS: 06/28/02 container of names of variables or container indices
254440  // used used in the traversal to access AST successor nodes
254441  // overridden in every class by *generated* implementation
254444  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
254445 
254446  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
254447  // than all the vector copies. The implementation for these functions is generated for each class.
254449  virtual size_t get_numberOfTraversalSuccessors() override;
254451  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
254453  virtual size_t get_childIndex(SgNode *child) override;
254454 
254455 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
254456  // MS: 08/16/2002 method for generating RTI information
254458  virtual RTIReturnType roseRTI() override;
254459 #endif
254460  /* */
254461 
254462 
254463 
254464  /* name Deprecated Functions
254465  \brief Deprecated functions ... incomplete-documentation
254466 
254467  These functions have been deprecated from use.
254468  */
254469  /* */
254470 
254472  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
254473 
254474  // JJW (10/16/2008): Changed to a single function in Node.code, and put
254475  // getVariant() in #if 0 block to prevent confusing Doxygen
254476 #if 0
254477 
254478  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
254480  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
254481 #endif
254482  /* */
254483 
254484 
254485 
254486 
254487  public:
254488  /* name Traversal Support Functions
254489  \brief Traversal support functions ... incomplete-documentation
254490 
254491  These functions have been made public as part of the design, but they are suggested for internal use
254492  or by particularly knowledgable users for specialized tools or applications.
254493  */
254494  /* */
254495 
254496  // DQ (11/26/2005): Support for visitor pattern mechanims
254497  // (inferior to ROSE traversal mechanism, experimental).
254501 
254502  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
254504  virtual void accept (ROSE_VisitorPattern & visitor) override;
254505 
254506  // DQ (12/26/2005): Support for traversal based on the memory pool
254509  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
254510 
254513  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
254514 
254515  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
254516  // This traversal helps support internal tools that call static member functions.
254517  // note: this function operates on the memory pools.
254520  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
254521  /* */
254522 
254523 
254524  public:
254525  /* name Memory Allocation Functions
254526  \brief Memory allocations functions ... incomplete-documentation
254527 
254528  These functions have been made public as part of the design, but they are suggested for internal use
254529  or by particularly knowledgable users for specialized tools or applications.
254530  */
254531  /* */
254532 
254543  virtual bool isInMemoryPool() override;
254544 
254555  virtual void checkDataMemberPointersIfInMemoryPool() override;
254556 
254557  // DQ (4/30/2006): Modified to be a const function.
254572  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
254573 
254583  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
254584 
254596  virtual long getChildIndex( SgNode* childNode ) const override;
254597 
254598  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
254599  // comment here (changed to be a C style comment and not be a doxygen comment).
254600  /* \brief Constructor for use by AST File I/O Mechanism
254601 
254602  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
254603  which obtained via fast binary file I/O from disk.
254604  */
254605  // SgIorAssignOp( SgIorAssignOpStorageClass& source );
254606 
254607 
254608 
254609 
254610 
254611  // JH (10/24/2005): methods added to support the ast file IO
254612  private:
254613 
254614  /* name AST Memory Allocation Support Functions
254615  \brief Memory allocations support....
254616 
254617  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
254618  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
254619  and support the AST File I/O Mechanism.
254620  */
254621  /* */
254622 
254623  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
254624  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
254625  that I use the same type everywhere, if any changes are made. THe second one declares the type
254626  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
254627  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
254628  a correspinding one in the AST_FILE_IO class!
254629  */
254630  // DQ (9/2/2015): This typedef is no longer used, we can't define the
254631  // comment here (changed to be a C style comment and not be a doxygen comment).
254632  /* \brief Typedef used for low level memory access.
254633  */
254634  // typedef unsigned char* TestType;
254635 
254636  // DQ (9/2/2015): This typedef is no longer used, we can't define the
254637  // comment here (changed to be a C style comment and not be a doxygen comment).
254638  /* \brief Typedef used to hold memory addresses as values.
254639  */
254640  // typedef unsigned long AddressType;
254641 
254642 
254643 
254644  // necessary, to have direct access to the p_freepointer and the private methods !
254646  friend class AST_FILE_IO;
254647 
254649  friend class SgIorAssignOpStorageClass;
254650 
254652  friend class AstSpecificDataManagingClass;
254653 
254655  friend class AstSpecificDataManagingClassStorageClass;
254656 
254657  public:
254659  SgIorAssignOp( const SgIorAssignOpStorageClass& source );
254660 
254661  // private: // JJW hack
254662  /*
254663  name AST Memory Allocation Support Variables
254664  Memory allocations support variables
254665 
254666  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
254667  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
254668  and support the AST File I/O Mechanism.
254669  */
254670  /* */
254671 
254672  public:
254673 
254674  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
254675  // to current node (so that it will work cleanly with build functions to specify patterns).
254676  // virtual SgNode* addRegExpAttribute();
254682  SgIorAssignOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
254683 
254684 // *** COMMON CODE SECTION ENDS HERE ***
254685 
254686 
254687 // End of memberFunctionString
254688 // Start of memberFunctionString
254689 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
254690 
254691  // the generated cast function
254692  // friend ROSE_DLL_API SgIorAssignOp* isSgIorAssignOp ( SgNode* s );
254693 
254695 
254696 
254697 // End of memberFunctionString
254698 // Start of memberFunctionString
254699 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
254700 
254701  void post_construction_initialization() override;
254702 
254703 
254704 // End of memberFunctionString
254705 // Start of memberFunctionString
254706 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
254707 
254708  int precedence() const override { return 2; }
254709 
254710 
254711 // End of memberFunctionString
254712 
254713 
254714  public:
254715  virtual ~SgIorAssignOp();
254716 
254717 
254718  public:
254719  SgIorAssignOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
254720  SgIorAssignOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
254721 
254722  protected:
254723 
254724 
254725 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
254726 
254727 
254728  };
254729 #endif
254730 
254731 // postdeclarations for SgIorAssignOp
254732 
254733 /* #line 254734 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
254734 
254735 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
254736 
254737 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
254738 
254739 
254740 /* #line 254741 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
254741 
254742 
254743 
254744 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
254745 
254746 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
254747 // This code is automatically generated for each
254748 // terminal and non-terminal within the defined
254749 // grammar. There is a simple way to change the
254750 // code to fix bugs etc. See the ROSE README file
254751 // for directions.
254752 
254753 // tps: (02/22/2010): Adding DLL export requirements
254754 #include "rosedll.h"
254755 
254756 // predeclarations for SgMultAssignOp
254757 
254758 /* #line 254759 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
254759 
254760 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
254761 
254762 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
254763 
254764 #if 1
254765 // Class Definition for SgMultAssignOp
254766 class ROSE_DLL_API SgMultAssignOp : public SgCompoundAssignOp
254767  {
254768  public:
254769 
254770 
254771 /* #line 254772 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
254772 
254773  virtual SgNode* copy ( SgCopyHelp& help) const override;
254774 // Start of memberFunctionString
254775 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
254776 
254777 // *** COMMON CODE SECTION BEGINS HERE ***
254778 
254779  public:
254780 
254781  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
254782  // and not required which is required to match the other aspects of the copy mechanism code generation.
254783  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
254784  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
254785  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
254786  // virtual SgNode* copy ( const SgCopyHelp & help) const;
254787 
254789  virtual std::string class_name() const override;
254790 
254792  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
254793 
254795  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
254796  // static const VariantT static_variant = V_SgMultAssignOp;
254797  enum { static_variant = V_SgMultAssignOp };
254798 
254799  /* the generated cast function */
254801  ROSE_DLL_API friend SgMultAssignOp* isSgMultAssignOp( SgNode * s );
254802 
254804  ROSE_DLL_API friend const SgMultAssignOp* isSgMultAssignOp( const SgNode * s );
254805 
254806  // ******************************************
254807  // * Memory Pool / New / Delete
254808  // ******************************************
254809 
254810  public:
254812  static const unsigned pool_size; //
254814  static std::vector<unsigned char *> pools; //
254816  static SgMultAssignOp * next_node; //
254817 
254819  static unsigned long initializeStorageClassArray(SgMultAssignOpStorageClass *); //
254820 
254822  static void clearMemoryPool(); //
254823  static void deleteMemoryPool(); //
254824 
254826  static void extendMemoryPoolForFileIO(); //
254827 
254829  static SgMultAssignOp * getPointerFromGlobalIndex(unsigned long); //
254831  static SgMultAssignOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
254832 
254834  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
254836  static void resetValidFreepointers(); //
254838  static unsigned long getNumberOfLastValidPointer(); //
254839 
254840 
254841 #if defined(INLINE_FUNCTIONS)
254842 
254843  inline void *operator new (size_t size);
254844 #else
254845 
254846  void *operator new (size_t size);
254847 #endif
254848 
254849  void operator delete (void* pointer, size_t size);
254850 
254851  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
254852  void operator delete (void* pointer)
254853  {
254854  // This is the generated delete operator...
254855  SgMultAssignOp::operator delete (pointer,sizeof(SgMultAssignOp));
254856  }
254857 
254859  static size_t numberOfNodes();
254860 
254862  static size_t memoryUsage();
254863 
254864  // End of scope which started in IR nodes specific code
254865  /* */
254866 
254867  /* name Internal Functions
254868  \brief Internal functions ... incomplete-documentation
254869 
254870  These functions have been made public as part of the design, but they are suggested for internal use
254871  or by particularly knowledgeable users for specialized tools or applications.
254872 
254873  \internal We could not make these private because they are required by user for special purposes. And
254874  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
254875 
254876  */
254877 
254878  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
254879  // overridden in every class by *generated* implementation
254881  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
254882  // MS: 06/28/02 container of names of variables or container indices
254883  // used used in the traversal to access AST successor nodes
254884  // overridden in every class by *generated* implementation
254887  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
254888 
254889  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
254890  // than all the vector copies. The implementation for these functions is generated for each class.
254892  virtual size_t get_numberOfTraversalSuccessors() override;
254894  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
254896  virtual size_t get_childIndex(SgNode *child) override;
254897 
254898 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
254899  // MS: 08/16/2002 method for generating RTI information
254901  virtual RTIReturnType roseRTI() override;
254902 #endif
254903  /* */
254904 
254905 
254906 
254907  /* name Deprecated Functions
254908  \brief Deprecated functions ... incomplete-documentation
254909 
254910  These functions have been deprecated from use.
254911  */
254912  /* */
254913 
254915  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
254916 
254917  // JJW (10/16/2008): Changed to a single function in Node.code, and put
254918  // getVariant() in #if 0 block to prevent confusing Doxygen
254919 #if 0
254920 
254921  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
254923  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
254924 #endif
254925  /* */
254926 
254927 
254928 
254929 
254930  public:
254931  /* name Traversal Support Functions
254932  \brief Traversal support functions ... incomplete-documentation
254933 
254934  These functions have been made public as part of the design, but they are suggested for internal use
254935  or by particularly knowledgable users for specialized tools or applications.
254936  */
254937  /* */
254938 
254939  // DQ (11/26/2005): Support for visitor pattern mechanims
254940  // (inferior to ROSE traversal mechanism, experimental).
254944 
254945  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
254947  virtual void accept (ROSE_VisitorPattern & visitor) override;
254948 
254949  // DQ (12/26/2005): Support for traversal based on the memory pool
254952  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
254953 
254956  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
254957 
254958  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
254959  // This traversal helps support internal tools that call static member functions.
254960  // note: this function operates on the memory pools.
254963  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
254964  /* */
254965 
254966 
254967  public:
254968  /* name Memory Allocation Functions
254969  \brief Memory allocations functions ... incomplete-documentation
254970 
254971  These functions have been made public as part of the design, but they are suggested for internal use
254972  or by particularly knowledgable users for specialized tools or applications.
254973  */
254974  /* */
254975 
254986  virtual bool isInMemoryPool() override;
254987 
254998  virtual void checkDataMemberPointersIfInMemoryPool() override;
254999 
255000  // DQ (4/30/2006): Modified to be a const function.
255015  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
255016 
255026  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
255027 
255039  virtual long getChildIndex( SgNode* childNode ) const override;
255040 
255041  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
255042  // comment here (changed to be a C style comment and not be a doxygen comment).
255043  /* \brief Constructor for use by AST File I/O Mechanism
255044 
255045  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
255046  which obtained via fast binary file I/O from disk.
255047  */
255048  // SgMultAssignOp( SgMultAssignOpStorageClass& source );
255049 
255050 
255051 
255052 
255053 
255054  // JH (10/24/2005): methods added to support the ast file IO
255055  private:
255056 
255057  /* name AST Memory Allocation Support Functions
255058  \brief Memory allocations support....
255059 
255060  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
255061  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
255062  and support the AST File I/O Mechanism.
255063  */
255064  /* */
255065 
255066  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
255067  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
255068  that I use the same type everywhere, if any changes are made. THe second one declares the type
255069  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
255070  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
255071  a correspinding one in the AST_FILE_IO class!
255072  */
255073  // DQ (9/2/2015): This typedef is no longer used, we can't define the
255074  // comment here (changed to be a C style comment and not be a doxygen comment).
255075  /* \brief Typedef used for low level memory access.
255076  */
255077  // typedef unsigned char* TestType;
255078 
255079  // DQ (9/2/2015): This typedef is no longer used, we can't define the
255080  // comment here (changed to be a C style comment and not be a doxygen comment).
255081  /* \brief Typedef used to hold memory addresses as values.
255082  */
255083  // typedef unsigned long AddressType;
255084 
255085 
255086 
255087  // necessary, to have direct access to the p_freepointer and the private methods !
255089  friend class AST_FILE_IO;
255090 
255092  friend class SgMultAssignOpStorageClass;
255093 
255095  friend class AstSpecificDataManagingClass;
255096 
255098  friend class AstSpecificDataManagingClassStorageClass;
255099 
255100  public:
255102  SgMultAssignOp( const SgMultAssignOpStorageClass& source );
255103 
255104  // private: // JJW hack
255105  /*
255106  name AST Memory Allocation Support Variables
255107  Memory allocations support variables
255108 
255109  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
255110  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
255111  and support the AST File I/O Mechanism.
255112  */
255113  /* */
255114 
255115  public:
255116 
255117  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
255118  // to current node (so that it will work cleanly with build functions to specify patterns).
255119  // virtual SgNode* addRegExpAttribute();
255126 
255127 // *** COMMON CODE SECTION ENDS HERE ***
255128 
255129 
255130 // End of memberFunctionString
255131 // Start of memberFunctionString
255132 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
255133 
255134  // the generated cast function
255135  // friend ROSE_DLL_API SgMultAssignOp* isSgMultAssignOp ( SgNode* s );
255136 
255138 
255139 
255140 // End of memberFunctionString
255141 // Start of memberFunctionString
255142 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
255143 
255144  void post_construction_initialization() override;
255145 
255146 
255147 // End of memberFunctionString
255148 // Start of memberFunctionString
255149 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
255150 
255151  int precedence() const override { return 2; }
255152 
255153 
255154 // End of memberFunctionString
255155 
255156 
255157  public:
255158  virtual ~SgMultAssignOp();
255159 
255160 
255161  public:
255162  SgMultAssignOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
255163  SgMultAssignOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
255164 
255165  protected:
255166 
255167 
255168 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
255169 
255170 
255171  };
255172 #endif
255173 
255174 // postdeclarations for SgMultAssignOp
255175 
255176 /* #line 255177 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
255177 
255178 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
255179 
255180 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
255181 
255182 
255183 /* #line 255184 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
255184 
255185 
255186 
255187 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
255188 
255189 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
255190 // This code is automatically generated for each
255191 // terminal and non-terminal within the defined
255192 // grammar. There is a simple way to change the
255193 // code to fix bugs etc. See the ROSE README file
255194 // for directions.
255195 
255196 // tps: (02/22/2010): Adding DLL export requirements
255197 #include "rosedll.h"
255198 
255199 // predeclarations for SgDivAssignOp
255200 
255201 /* #line 255202 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
255202 
255203 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
255204 
255205 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
255206 
255207 #if 1
255208 // Class Definition for SgDivAssignOp
255209 class ROSE_DLL_API SgDivAssignOp : public SgCompoundAssignOp
255210  {
255211  public:
255212 
255213 
255214 /* #line 255215 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
255215 
255216  virtual SgNode* copy ( SgCopyHelp& help) const override;
255217 // Start of memberFunctionString
255218 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
255219 
255220 // *** COMMON CODE SECTION BEGINS HERE ***
255221 
255222  public:
255223 
255224  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
255225  // and not required which is required to match the other aspects of the copy mechanism code generation.
255226  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
255227  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
255228  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
255229  // virtual SgNode* copy ( const SgCopyHelp & help) const;
255230 
255232  virtual std::string class_name() const override;
255233 
255235  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
255236 
255238  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
255239  // static const VariantT static_variant = V_SgDivAssignOp;
255240  enum { static_variant = V_SgDivAssignOp };
255241 
255242  /* the generated cast function */
255244  ROSE_DLL_API friend SgDivAssignOp* isSgDivAssignOp( SgNode * s );
255245 
255247  ROSE_DLL_API friend const SgDivAssignOp* isSgDivAssignOp( const SgNode * s );
255248 
255249  // ******************************************
255250  // * Memory Pool / New / Delete
255251  // ******************************************
255252 
255253  public:
255255  static const unsigned pool_size; //
255257  static std::vector<unsigned char *> pools; //
255259  static SgDivAssignOp * next_node; //
255260 
255262  static unsigned long initializeStorageClassArray(SgDivAssignOpStorageClass *); //
255263 
255265  static void clearMemoryPool(); //
255266  static void deleteMemoryPool(); //
255267 
255269  static void extendMemoryPoolForFileIO(); //
255270 
255272  static SgDivAssignOp * getPointerFromGlobalIndex(unsigned long); //
255274  static SgDivAssignOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
255275 
255277  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
255279  static void resetValidFreepointers(); //
255281  static unsigned long getNumberOfLastValidPointer(); //
255282 
255283 
255284 #if defined(INLINE_FUNCTIONS)
255285 
255286  inline void *operator new (size_t size);
255287 #else
255288 
255289  void *operator new (size_t size);
255290 #endif
255291 
255292  void operator delete (void* pointer, size_t size);
255293 
255294  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
255295  void operator delete (void* pointer)
255296  {
255297  // This is the generated delete operator...
255298  SgDivAssignOp::operator delete (pointer,sizeof(SgDivAssignOp));
255299  }
255300 
255302  static size_t numberOfNodes();
255303 
255305  static size_t memoryUsage();
255306 
255307  // End of scope which started in IR nodes specific code
255308  /* */
255309 
255310  /* name Internal Functions
255311  \brief Internal functions ... incomplete-documentation
255312 
255313  These functions have been made public as part of the design, but they are suggested for internal use
255314  or by particularly knowledgeable users for specialized tools or applications.
255315 
255316  \internal We could not make these private because they are required by user for special purposes. And
255317  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
255318 
255319  */
255320 
255321  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
255322  // overridden in every class by *generated* implementation
255324  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
255325  // MS: 06/28/02 container of names of variables or container indices
255326  // used used in the traversal to access AST successor nodes
255327  // overridden in every class by *generated* implementation
255330  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
255331 
255332  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
255333  // than all the vector copies. The implementation for these functions is generated for each class.
255335  virtual size_t get_numberOfTraversalSuccessors() override;
255337  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
255339  virtual size_t get_childIndex(SgNode *child) override;
255340 
255341 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
255342  // MS: 08/16/2002 method for generating RTI information
255344  virtual RTIReturnType roseRTI() override;
255345 #endif
255346  /* */
255347 
255348 
255349 
255350  /* name Deprecated Functions
255351  \brief Deprecated functions ... incomplete-documentation
255352 
255353  These functions have been deprecated from use.
255354  */
255355  /* */
255356 
255358  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
255359 
255360  // JJW (10/16/2008): Changed to a single function in Node.code, and put
255361  // getVariant() in #if 0 block to prevent confusing Doxygen
255362 #if 0
255363 
255364  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
255366  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
255367 #endif
255368  /* */
255369 
255370 
255371 
255372 
255373  public:
255374  /* name Traversal Support Functions
255375  \brief Traversal support functions ... incomplete-documentation
255376 
255377  These functions have been made public as part of the design, but they are suggested for internal use
255378  or by particularly knowledgable users for specialized tools or applications.
255379  */
255380  /* */
255381 
255382  // DQ (11/26/2005): Support for visitor pattern mechanims
255383  // (inferior to ROSE traversal mechanism, experimental).
255387 
255388  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
255390  virtual void accept (ROSE_VisitorPattern & visitor) override;
255391 
255392  // DQ (12/26/2005): Support for traversal based on the memory pool
255395  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
255396 
255399  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
255400 
255401  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
255402  // This traversal helps support internal tools that call static member functions.
255403  // note: this function operates on the memory pools.
255406  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
255407  /* */
255408 
255409 
255410  public:
255411  /* name Memory Allocation Functions
255412  \brief Memory allocations functions ... incomplete-documentation
255413 
255414  These functions have been made public as part of the design, but they are suggested for internal use
255415  or by particularly knowledgable users for specialized tools or applications.
255416  */
255417  /* */
255418 
255429  virtual bool isInMemoryPool() override;
255430 
255441  virtual void checkDataMemberPointersIfInMemoryPool() override;
255442 
255443  // DQ (4/30/2006): Modified to be a const function.
255458  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
255459 
255469  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
255470 
255482  virtual long getChildIndex( SgNode* childNode ) const override;
255483 
255484  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
255485  // comment here (changed to be a C style comment and not be a doxygen comment).
255486  /* \brief Constructor for use by AST File I/O Mechanism
255487 
255488  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
255489  which obtained via fast binary file I/O from disk.
255490  */
255491  // SgDivAssignOp( SgDivAssignOpStorageClass& source );
255492 
255493 
255494 
255495 
255496 
255497  // JH (10/24/2005): methods added to support the ast file IO
255498  private:
255499 
255500  /* name AST Memory Allocation Support Functions
255501  \brief Memory allocations support....
255502 
255503  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
255504  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
255505  and support the AST File I/O Mechanism.
255506  */
255507  /* */
255508 
255509  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
255510  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
255511  that I use the same type everywhere, if any changes are made. THe second one declares the type
255512  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
255513  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
255514  a correspinding one in the AST_FILE_IO class!
255515  */
255516  // DQ (9/2/2015): This typedef is no longer used, we can't define the
255517  // comment here (changed to be a C style comment and not be a doxygen comment).
255518  /* \brief Typedef used for low level memory access.
255519  */
255520  // typedef unsigned char* TestType;
255521 
255522  // DQ (9/2/2015): This typedef is no longer used, we can't define the
255523  // comment here (changed to be a C style comment and not be a doxygen comment).
255524  /* \brief Typedef used to hold memory addresses as values.
255525  */
255526  // typedef unsigned long AddressType;
255527 
255528 
255529 
255530  // necessary, to have direct access to the p_freepointer and the private methods !
255532  friend class AST_FILE_IO;
255533 
255535  friend class SgDivAssignOpStorageClass;
255536 
255538  friend class AstSpecificDataManagingClass;
255539 
255541  friend class AstSpecificDataManagingClassStorageClass;
255542 
255543  public:
255545  SgDivAssignOp( const SgDivAssignOpStorageClass& source );
255546 
255547  // private: // JJW hack
255548  /*
255549  name AST Memory Allocation Support Variables
255550  Memory allocations support variables
255551 
255552  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
255553  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
255554  and support the AST File I/O Mechanism.
255555  */
255556  /* */
255557 
255558  public:
255559 
255560  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
255561  // to current node (so that it will work cleanly with build functions to specify patterns).
255562  // virtual SgNode* addRegExpAttribute();
255568  SgDivAssignOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
255569 
255570 // *** COMMON CODE SECTION ENDS HERE ***
255571 
255572 
255573 // End of memberFunctionString
255574 // Start of memberFunctionString
255575 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
255576 
255577  // the generated cast function
255578  // friend ROSE_DLL_API SgDivAssignOp* isSgDivAssignOp ( SgNode* s );
255579 
255581 
255582 
255583 // End of memberFunctionString
255584 // Start of memberFunctionString
255585 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
255586 
255587  void post_construction_initialization() override;
255588 
255589 
255590 // End of memberFunctionString
255591 // Start of memberFunctionString
255592 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
255593 
255594  int precedence() const override { return 2; }
255595 
255596 
255597 // End of memberFunctionString
255598 
255599 
255600  public:
255601  virtual ~SgDivAssignOp();
255602 
255603 
255604  public:
255605  SgDivAssignOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
255606  SgDivAssignOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
255607 
255608  protected:
255609 
255610 
255611 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
255612 
255613 
255614  };
255615 #endif
255616 
255617 // postdeclarations for SgDivAssignOp
255618 
255619 /* #line 255620 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
255620 
255621 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
255622 
255623 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
255624 
255625 
255626 /* #line 255627 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
255627 
255628 
255629 
255630 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
255631 
255632 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
255633 // This code is automatically generated for each
255634 // terminal and non-terminal within the defined
255635 // grammar. There is a simple way to change the
255636 // code to fix bugs etc. See the ROSE README file
255637 // for directions.
255638 
255639 // tps: (02/22/2010): Adding DLL export requirements
255640 #include "rosedll.h"
255641 
255642 // predeclarations for SgModAssignOp
255643 
255644 /* #line 255645 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
255645 
255646 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
255647 
255648 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
255649 
255650 #if 1
255651 // Class Definition for SgModAssignOp
255652 class ROSE_DLL_API SgModAssignOp : public SgCompoundAssignOp
255653  {
255654  public:
255655 
255656 
255657 /* #line 255658 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
255658 
255659  virtual SgNode* copy ( SgCopyHelp& help) const override;
255660 // Start of memberFunctionString
255661 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
255662 
255663 // *** COMMON CODE SECTION BEGINS HERE ***
255664 
255665  public:
255666 
255667  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
255668  // and not required which is required to match the other aspects of the copy mechanism code generation.
255669  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
255670  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
255671  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
255672  // virtual SgNode* copy ( const SgCopyHelp & help) const;
255673 
255675  virtual std::string class_name() const override;
255676 
255678  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
255679 
255681  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
255682  // static const VariantT static_variant = V_SgModAssignOp;
255683  enum { static_variant = V_SgModAssignOp };
255684 
255685  /* the generated cast function */
255687  ROSE_DLL_API friend SgModAssignOp* isSgModAssignOp( SgNode * s );
255688 
255690  ROSE_DLL_API friend const SgModAssignOp* isSgModAssignOp( const SgNode * s );
255691 
255692  // ******************************************
255693  // * Memory Pool / New / Delete
255694  // ******************************************
255695 
255696  public:
255698  static const unsigned pool_size; //
255700  static std::vector<unsigned char *> pools; //
255702  static SgModAssignOp * next_node; //
255703 
255705  static unsigned long initializeStorageClassArray(SgModAssignOpStorageClass *); //
255706 
255708  static void clearMemoryPool(); //
255709  static void deleteMemoryPool(); //
255710 
255712  static void extendMemoryPoolForFileIO(); //
255713 
255715  static SgModAssignOp * getPointerFromGlobalIndex(unsigned long); //
255717  static SgModAssignOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
255718 
255720  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
255722  static void resetValidFreepointers(); //
255724  static unsigned long getNumberOfLastValidPointer(); //
255725 
255726 
255727 #if defined(INLINE_FUNCTIONS)
255728 
255729  inline void *operator new (size_t size);
255730 #else
255731 
255732  void *operator new (size_t size);
255733 #endif
255734 
255735  void operator delete (void* pointer, size_t size);
255736 
255737  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
255738  void operator delete (void* pointer)
255739  {
255740  // This is the generated delete operator...
255741  SgModAssignOp::operator delete (pointer,sizeof(SgModAssignOp));
255742  }
255743 
255745  static size_t numberOfNodes();
255746 
255748  static size_t memoryUsage();
255749 
255750  // End of scope which started in IR nodes specific code
255751  /* */
255752 
255753  /* name Internal Functions
255754  \brief Internal functions ... incomplete-documentation
255755 
255756  These functions have been made public as part of the design, but they are suggested for internal use
255757  or by particularly knowledgeable users for specialized tools or applications.
255758 
255759  \internal We could not make these private because they are required by user for special purposes. And
255760  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
255761 
255762  */
255763 
255764  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
255765  // overridden in every class by *generated* implementation
255767  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
255768  // MS: 06/28/02 container of names of variables or container indices
255769  // used used in the traversal to access AST successor nodes
255770  // overridden in every class by *generated* implementation
255773  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
255774 
255775  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
255776  // than all the vector copies. The implementation for these functions is generated for each class.
255778  virtual size_t get_numberOfTraversalSuccessors() override;
255780  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
255782  virtual size_t get_childIndex(SgNode *child) override;
255783 
255784 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
255785  // MS: 08/16/2002 method for generating RTI information
255787  virtual RTIReturnType roseRTI() override;
255788 #endif
255789  /* */
255790 
255791 
255792 
255793  /* name Deprecated Functions
255794  \brief Deprecated functions ... incomplete-documentation
255795 
255796  These functions have been deprecated from use.
255797  */
255798  /* */
255799 
255801  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
255802 
255803  // JJW (10/16/2008): Changed to a single function in Node.code, and put
255804  // getVariant() in #if 0 block to prevent confusing Doxygen
255805 #if 0
255806 
255807  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
255809  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
255810 #endif
255811  /* */
255812 
255813 
255814 
255815 
255816  public:
255817  /* name Traversal Support Functions
255818  \brief Traversal support functions ... incomplete-documentation
255819 
255820  These functions have been made public as part of the design, but they are suggested for internal use
255821  or by particularly knowledgable users for specialized tools or applications.
255822  */
255823  /* */
255824 
255825  // DQ (11/26/2005): Support for visitor pattern mechanims
255826  // (inferior to ROSE traversal mechanism, experimental).
255830 
255831  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
255833  virtual void accept (ROSE_VisitorPattern & visitor) override;
255834 
255835  // DQ (12/26/2005): Support for traversal based on the memory pool
255838  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
255839 
255842  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
255843 
255844  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
255845  // This traversal helps support internal tools that call static member functions.
255846  // note: this function operates on the memory pools.
255849  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
255850  /* */
255851 
255852 
255853  public:
255854  /* name Memory Allocation Functions
255855  \brief Memory allocations functions ... incomplete-documentation
255856 
255857  These functions have been made public as part of the design, but they are suggested for internal use
255858  or by particularly knowledgable users for specialized tools or applications.
255859  */
255860  /* */
255861 
255872  virtual bool isInMemoryPool() override;
255873 
255884  virtual void checkDataMemberPointersIfInMemoryPool() override;
255885 
255886  // DQ (4/30/2006): Modified to be a const function.
255901  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
255902 
255912  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
255913 
255925  virtual long getChildIndex( SgNode* childNode ) const override;
255926 
255927  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
255928  // comment here (changed to be a C style comment and not be a doxygen comment).
255929  /* \brief Constructor for use by AST File I/O Mechanism
255930 
255931  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
255932  which obtained via fast binary file I/O from disk.
255933  */
255934  // SgModAssignOp( SgModAssignOpStorageClass& source );
255935 
255936 
255937 
255938 
255939 
255940  // JH (10/24/2005): methods added to support the ast file IO
255941  private:
255942 
255943  /* name AST Memory Allocation Support Functions
255944  \brief Memory allocations support....
255945 
255946  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
255947  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
255948  and support the AST File I/O Mechanism.
255949  */
255950  /* */
255951 
255952  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
255953  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
255954  that I use the same type everywhere, if any changes are made. THe second one declares the type
255955  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
255956  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
255957  a correspinding one in the AST_FILE_IO class!
255958  */
255959  // DQ (9/2/2015): This typedef is no longer used, we can't define the
255960  // comment here (changed to be a C style comment and not be a doxygen comment).
255961  /* \brief Typedef used for low level memory access.
255962  */
255963  // typedef unsigned char* TestType;
255964 
255965  // DQ (9/2/2015): This typedef is no longer used, we can't define the
255966  // comment here (changed to be a C style comment and not be a doxygen comment).
255967  /* \brief Typedef used to hold memory addresses as values.
255968  */
255969  // typedef unsigned long AddressType;
255970 
255971 
255972 
255973  // necessary, to have direct access to the p_freepointer and the private methods !
255975  friend class AST_FILE_IO;
255976 
255978  friend class SgModAssignOpStorageClass;
255979 
255981  friend class AstSpecificDataManagingClass;
255982 
255984  friend class AstSpecificDataManagingClassStorageClass;
255985 
255986  public:
255988  SgModAssignOp( const SgModAssignOpStorageClass& source );
255989 
255990  // private: // JJW hack
255991  /*
255992  name AST Memory Allocation Support Variables
255993  Memory allocations support variables
255994 
255995  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
255996  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
255997  and support the AST File I/O Mechanism.
255998  */
255999  /* */
256000 
256001  public:
256002 
256003  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
256004  // to current node (so that it will work cleanly with build functions to specify patterns).
256005  // virtual SgNode* addRegExpAttribute();
256011  SgModAssignOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
256012 
256013 // *** COMMON CODE SECTION ENDS HERE ***
256014 
256015 
256016 // End of memberFunctionString
256017 // Start of memberFunctionString
256018 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
256019 
256020  // the generated cast function
256021  // friend ROSE_DLL_API SgModAssignOp* isSgModAssignOp ( SgNode* s );
256022 
256024 
256025 
256026 // End of memberFunctionString
256027 // Start of memberFunctionString
256028 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
256029 
256030  void post_construction_initialization() override;
256031 
256032 
256033 // End of memberFunctionString
256034 // Start of memberFunctionString
256035 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
256036 
256037  int precedence() const override { return 2; }
256038 
256039 
256040 // End of memberFunctionString
256041 
256042 
256043  public:
256044  virtual ~SgModAssignOp();
256045 
256046 
256047  public:
256048  SgModAssignOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
256049  SgModAssignOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
256050 
256051  protected:
256052 
256053 
256054 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
256055 
256056 
256057  };
256058 #endif
256059 
256060 // postdeclarations for SgModAssignOp
256061 
256062 /* #line 256063 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
256063 
256064 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
256065 
256066 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
256067 
256068 
256069 /* #line 256070 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
256070 
256071 
256072 
256073 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
256074 
256075 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
256076 // This code is automatically generated for each
256077 // terminal and non-terminal within the defined
256078 // grammar. There is a simple way to change the
256079 // code to fix bugs etc. See the ROSE README file
256080 // for directions.
256081 
256082 // tps: (02/22/2010): Adding DLL export requirements
256083 #include "rosedll.h"
256084 
256085 // predeclarations for SgXorAssignOp
256086 
256087 /* #line 256088 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
256088 
256089 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
256090 
256091 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
256092 
256093 #if 1
256094 // Class Definition for SgXorAssignOp
256095 class ROSE_DLL_API SgXorAssignOp : public SgCompoundAssignOp
256096  {
256097  public:
256098 
256099 
256100 /* #line 256101 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
256101 
256102  virtual SgNode* copy ( SgCopyHelp& help) const override;
256103 // Start of memberFunctionString
256104 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
256105 
256106 // *** COMMON CODE SECTION BEGINS HERE ***
256107 
256108  public:
256109 
256110  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
256111  // and not required which is required to match the other aspects of the copy mechanism code generation.
256112  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
256113  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
256114  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
256115  // virtual SgNode* copy ( const SgCopyHelp & help) const;
256116 
256118  virtual std::string class_name() const override;
256119 
256121  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
256122 
256124  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
256125  // static const VariantT static_variant = V_SgXorAssignOp;
256126  enum { static_variant = V_SgXorAssignOp };
256127 
256128  /* the generated cast function */
256130  ROSE_DLL_API friend SgXorAssignOp* isSgXorAssignOp( SgNode * s );
256131 
256133  ROSE_DLL_API friend const SgXorAssignOp* isSgXorAssignOp( const SgNode * s );
256134 
256135  // ******************************************
256136  // * Memory Pool / New / Delete
256137  // ******************************************
256138 
256139  public:
256141  static const unsigned pool_size; //
256143  static std::vector<unsigned char *> pools; //
256145  static SgXorAssignOp * next_node; //
256146 
256148  static unsigned long initializeStorageClassArray(SgXorAssignOpStorageClass *); //
256149 
256151  static void clearMemoryPool(); //
256152  static void deleteMemoryPool(); //
256153 
256155  static void extendMemoryPoolForFileIO(); //
256156 
256158  static SgXorAssignOp * getPointerFromGlobalIndex(unsigned long); //
256160  static SgXorAssignOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
256161 
256163  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
256165  static void resetValidFreepointers(); //
256167  static unsigned long getNumberOfLastValidPointer(); //
256168 
256169 
256170 #if defined(INLINE_FUNCTIONS)
256171 
256172  inline void *operator new (size_t size);
256173 #else
256174 
256175  void *operator new (size_t size);
256176 #endif
256177 
256178  void operator delete (void* pointer, size_t size);
256179 
256180  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
256181  void operator delete (void* pointer)
256182  {
256183  // This is the generated delete operator...
256184  SgXorAssignOp::operator delete (pointer,sizeof(SgXorAssignOp));
256185  }
256186 
256188  static size_t numberOfNodes();
256189 
256191  static size_t memoryUsage();
256192 
256193  // End of scope which started in IR nodes specific code
256194  /* */
256195 
256196  /* name Internal Functions
256197  \brief Internal functions ... incomplete-documentation
256198 
256199  These functions have been made public as part of the design, but they are suggested for internal use
256200  or by particularly knowledgeable users for specialized tools or applications.
256201 
256202  \internal We could not make these private because they are required by user for special purposes. And
256203  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
256204 
256205  */
256206 
256207  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
256208  // overridden in every class by *generated* implementation
256210  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
256211  // MS: 06/28/02 container of names of variables or container indices
256212  // used used in the traversal to access AST successor nodes
256213  // overridden in every class by *generated* implementation
256216  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
256217 
256218  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
256219  // than all the vector copies. The implementation for these functions is generated for each class.
256221  virtual size_t get_numberOfTraversalSuccessors() override;
256223  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
256225  virtual size_t get_childIndex(SgNode *child) override;
256226 
256227 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
256228  // MS: 08/16/2002 method for generating RTI information
256230  virtual RTIReturnType roseRTI() override;
256231 #endif
256232  /* */
256233 
256234 
256235 
256236  /* name Deprecated Functions
256237  \brief Deprecated functions ... incomplete-documentation
256238 
256239  These functions have been deprecated from use.
256240  */
256241  /* */
256242 
256244  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
256245 
256246  // JJW (10/16/2008): Changed to a single function in Node.code, and put
256247  // getVariant() in #if 0 block to prevent confusing Doxygen
256248 #if 0
256249 
256250  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
256252  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
256253 #endif
256254  /* */
256255 
256256 
256257 
256258 
256259  public:
256260  /* name Traversal Support Functions
256261  \brief Traversal support functions ... incomplete-documentation
256262 
256263  These functions have been made public as part of the design, but they are suggested for internal use
256264  or by particularly knowledgable users for specialized tools or applications.
256265  */
256266  /* */
256267 
256268  // DQ (11/26/2005): Support for visitor pattern mechanims
256269  // (inferior to ROSE traversal mechanism, experimental).
256273 
256274  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
256276  virtual void accept (ROSE_VisitorPattern & visitor) override;
256277 
256278  // DQ (12/26/2005): Support for traversal based on the memory pool
256281  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
256282 
256285  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
256286 
256287  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
256288  // This traversal helps support internal tools that call static member functions.
256289  // note: this function operates on the memory pools.
256292  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
256293  /* */
256294 
256295 
256296  public:
256297  /* name Memory Allocation Functions
256298  \brief Memory allocations functions ... incomplete-documentation
256299 
256300  These functions have been made public as part of the design, but they are suggested for internal use
256301  or by particularly knowledgable users for specialized tools or applications.
256302  */
256303  /* */
256304 
256315  virtual bool isInMemoryPool() override;
256316 
256327  virtual void checkDataMemberPointersIfInMemoryPool() override;
256328 
256329  // DQ (4/30/2006): Modified to be a const function.
256344  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
256345 
256355  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
256356 
256368  virtual long getChildIndex( SgNode* childNode ) const override;
256369 
256370  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
256371  // comment here (changed to be a C style comment and not be a doxygen comment).
256372  /* \brief Constructor for use by AST File I/O Mechanism
256373 
256374  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
256375  which obtained via fast binary file I/O from disk.
256376  */
256377  // SgXorAssignOp( SgXorAssignOpStorageClass& source );
256378 
256379 
256380 
256381 
256382 
256383  // JH (10/24/2005): methods added to support the ast file IO
256384  private:
256385 
256386  /* name AST Memory Allocation Support Functions
256387  \brief Memory allocations support....
256388 
256389  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
256390  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
256391  and support the AST File I/O Mechanism.
256392  */
256393  /* */
256394 
256395  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
256396  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
256397  that I use the same type everywhere, if any changes are made. THe second one declares the type
256398  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
256399  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
256400  a correspinding one in the AST_FILE_IO class!
256401  */
256402  // DQ (9/2/2015): This typedef is no longer used, we can't define the
256403  // comment here (changed to be a C style comment and not be a doxygen comment).
256404  /* \brief Typedef used for low level memory access.
256405  */
256406  // typedef unsigned char* TestType;
256407 
256408  // DQ (9/2/2015): This typedef is no longer used, we can't define the
256409  // comment here (changed to be a C style comment and not be a doxygen comment).
256410  /* \brief Typedef used to hold memory addresses as values.
256411  */
256412  // typedef unsigned long AddressType;
256413 
256414 
256415 
256416  // necessary, to have direct access to the p_freepointer and the private methods !
256418  friend class AST_FILE_IO;
256419 
256421  friend class SgXorAssignOpStorageClass;
256422 
256424  friend class AstSpecificDataManagingClass;
256425 
256427  friend class AstSpecificDataManagingClassStorageClass;
256428 
256429  public:
256431  SgXorAssignOp( const SgXorAssignOpStorageClass& source );
256432 
256433  // private: // JJW hack
256434  /*
256435  name AST Memory Allocation Support Variables
256436  Memory allocations support variables
256437 
256438  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
256439  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
256440  and support the AST File I/O Mechanism.
256441  */
256442  /* */
256443 
256444  public:
256445 
256446  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
256447  // to current node (so that it will work cleanly with build functions to specify patterns).
256448  // virtual SgNode* addRegExpAttribute();
256454  SgXorAssignOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
256455 
256456 // *** COMMON CODE SECTION ENDS HERE ***
256457 
256458 
256459 // End of memberFunctionString
256460 // Start of memberFunctionString
256461 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
256462 
256463  // the generated cast function
256464  // friend ROSE_DLL_API SgXorAssignOp* isSgXorAssignOp ( SgNode* s );
256465 
256467 
256468 
256469 // End of memberFunctionString
256470 // Start of memberFunctionString
256471 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
256472 
256473  void post_construction_initialization() override;
256474 
256475 
256476 // End of memberFunctionString
256477 // Start of memberFunctionString
256478 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
256479 
256480  int precedence() const override { return 2; }
256481 
256482 
256483 // End of memberFunctionString
256484 
256485 
256486  public:
256487  virtual ~SgXorAssignOp();
256488 
256489 
256490  public:
256491  SgXorAssignOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
256492  SgXorAssignOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
256493 
256494  protected:
256495 
256496 
256497 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
256498 
256499 
256500  };
256501 #endif
256502 
256503 // postdeclarations for SgXorAssignOp
256504 
256505 /* #line 256506 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
256506 
256507 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
256508 
256509 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
256510 
256511 
256512 /* #line 256513 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
256513 
256514 
256515 
256516 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
256517 
256518 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
256519 // This code is automatically generated for each
256520 // terminal and non-terminal within the defined
256521 // grammar. There is a simple way to change the
256522 // code to fix bugs etc. See the ROSE README file
256523 // for directions.
256524 
256525 // tps: (02/22/2010): Adding DLL export requirements
256526 #include "rosedll.h"
256527 
256528 // predeclarations for SgLshiftAssignOp
256529 
256530 /* #line 256531 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
256531 
256532 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
256533 
256534 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
256535 
256536 #if 1
256537 // Class Definition for SgLshiftAssignOp
256538 class ROSE_DLL_API SgLshiftAssignOp : public SgCompoundAssignOp
256539  {
256540  public:
256541 
256542 
256543 /* #line 256544 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
256544 
256545  virtual SgNode* copy ( SgCopyHelp& help) const override;
256546 // Start of memberFunctionString
256547 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
256548 
256549 // *** COMMON CODE SECTION BEGINS HERE ***
256550 
256551  public:
256552 
256553  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
256554  // and not required which is required to match the other aspects of the copy mechanism code generation.
256555  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
256556  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
256557  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
256558  // virtual SgNode* copy ( const SgCopyHelp & help) const;
256559 
256561  virtual std::string class_name() const override;
256562 
256564  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
256565 
256567  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
256568  // static const VariantT static_variant = V_SgLshiftAssignOp;
256569  enum { static_variant = V_SgLshiftAssignOp };
256570 
256571  /* the generated cast function */
256573  ROSE_DLL_API friend SgLshiftAssignOp* isSgLshiftAssignOp( SgNode * s );
256574 
256576  ROSE_DLL_API friend const SgLshiftAssignOp* isSgLshiftAssignOp( const SgNode * s );
256577 
256578  // ******************************************
256579  // * Memory Pool / New / Delete
256580  // ******************************************
256581 
256582  public:
256584  static const unsigned pool_size; //
256586  static std::vector<unsigned char *> pools; //
256588  static SgLshiftAssignOp * next_node; //
256589 
256591  static unsigned long initializeStorageClassArray(SgLshiftAssignOpStorageClass *); //
256592 
256594  static void clearMemoryPool(); //
256595  static void deleteMemoryPool(); //
256596 
256598  static void extendMemoryPoolForFileIO(); //
256599 
256601  static SgLshiftAssignOp * getPointerFromGlobalIndex(unsigned long); //
256603  static SgLshiftAssignOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
256604 
256606  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
256608  static void resetValidFreepointers(); //
256610  static unsigned long getNumberOfLastValidPointer(); //
256611 
256612 
256613 #if defined(INLINE_FUNCTIONS)
256614 
256615  inline void *operator new (size_t size);
256616 #else
256617 
256618  void *operator new (size_t size);
256619 #endif
256620 
256621  void operator delete (void* pointer, size_t size);
256622 
256623  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
256624  void operator delete (void* pointer)
256625  {
256626  // This is the generated delete operator...
256627  SgLshiftAssignOp::operator delete (pointer,sizeof(SgLshiftAssignOp));
256628  }
256629 
256631  static size_t numberOfNodes();
256632 
256634  static size_t memoryUsage();
256635 
256636  // End of scope which started in IR nodes specific code
256637  /* */
256638 
256639  /* name Internal Functions
256640  \brief Internal functions ... incomplete-documentation
256641 
256642  These functions have been made public as part of the design, but they are suggested for internal use
256643  or by particularly knowledgeable users for specialized tools or applications.
256644 
256645  \internal We could not make these private because they are required by user for special purposes. And
256646  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
256647 
256648  */
256649 
256650  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
256651  // overridden in every class by *generated* implementation
256653  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
256654  // MS: 06/28/02 container of names of variables or container indices
256655  // used used in the traversal to access AST successor nodes
256656  // overridden in every class by *generated* implementation
256659  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
256660 
256661  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
256662  // than all the vector copies. The implementation for these functions is generated for each class.
256664  virtual size_t get_numberOfTraversalSuccessors() override;
256666  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
256668  virtual size_t get_childIndex(SgNode *child) override;
256669 
256670 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
256671  // MS: 08/16/2002 method for generating RTI information
256673  virtual RTIReturnType roseRTI() override;
256674 #endif
256675  /* */
256676 
256677 
256678 
256679  /* name Deprecated Functions
256680  \brief Deprecated functions ... incomplete-documentation
256681 
256682  These functions have been deprecated from use.
256683  */
256684  /* */
256685 
256687  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
256688 
256689  // JJW (10/16/2008): Changed to a single function in Node.code, and put
256690  // getVariant() in #if 0 block to prevent confusing Doxygen
256691 #if 0
256692 
256693  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
256695  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
256696 #endif
256697  /* */
256698 
256699 
256700 
256701 
256702  public:
256703  /* name Traversal Support Functions
256704  \brief Traversal support functions ... incomplete-documentation
256705 
256706  These functions have been made public as part of the design, but they are suggested for internal use
256707  or by particularly knowledgable users for specialized tools or applications.
256708  */
256709  /* */
256710 
256711  // DQ (11/26/2005): Support for visitor pattern mechanims
256712  // (inferior to ROSE traversal mechanism, experimental).
256716 
256717  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
256719  virtual void accept (ROSE_VisitorPattern & visitor) override;
256720 
256721  // DQ (12/26/2005): Support for traversal based on the memory pool
256724  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
256725 
256728  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
256729 
256730  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
256731  // This traversal helps support internal tools that call static member functions.
256732  // note: this function operates on the memory pools.
256735  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
256736  /* */
256737 
256738 
256739  public:
256740  /* name Memory Allocation Functions
256741  \brief Memory allocations functions ... incomplete-documentation
256742 
256743  These functions have been made public as part of the design, but they are suggested for internal use
256744  or by particularly knowledgable users for specialized tools or applications.
256745  */
256746  /* */
256747 
256758  virtual bool isInMemoryPool() override;
256759 
256770  virtual void checkDataMemberPointersIfInMemoryPool() override;
256771 
256772  // DQ (4/30/2006): Modified to be a const function.
256787  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
256788 
256798  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
256799 
256811  virtual long getChildIndex( SgNode* childNode ) const override;
256812 
256813  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
256814  // comment here (changed to be a C style comment and not be a doxygen comment).
256815  /* \brief Constructor for use by AST File I/O Mechanism
256816 
256817  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
256818  which obtained via fast binary file I/O from disk.
256819  */
256820  // SgLshiftAssignOp( SgLshiftAssignOpStorageClass& source );
256821 
256822 
256823 
256824 
256825 
256826  // JH (10/24/2005): methods added to support the ast file IO
256827  private:
256828 
256829  /* name AST Memory Allocation Support Functions
256830  \brief Memory allocations support....
256831 
256832  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
256833  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
256834  and support the AST File I/O Mechanism.
256835  */
256836  /* */
256837 
256838  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
256839  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
256840  that I use the same type everywhere, if any changes are made. THe second one declares the type
256841  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
256842  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
256843  a correspinding one in the AST_FILE_IO class!
256844  */
256845  // DQ (9/2/2015): This typedef is no longer used, we can't define the
256846  // comment here (changed to be a C style comment and not be a doxygen comment).
256847  /* \brief Typedef used for low level memory access.
256848  */
256849  // typedef unsigned char* TestType;
256850 
256851  // DQ (9/2/2015): This typedef is no longer used, we can't define the
256852  // comment here (changed to be a C style comment and not be a doxygen comment).
256853  /* \brief Typedef used to hold memory addresses as values.
256854  */
256855  // typedef unsigned long AddressType;
256856 
256857 
256858 
256859  // necessary, to have direct access to the p_freepointer and the private methods !
256861  friend class AST_FILE_IO;
256862 
256864  friend class SgLshiftAssignOpStorageClass;
256865 
256867  friend class AstSpecificDataManagingClass;
256868 
256870  friend class AstSpecificDataManagingClassStorageClass;
256871 
256872  public:
256874  SgLshiftAssignOp( const SgLshiftAssignOpStorageClass& source );
256875 
256876  // private: // JJW hack
256877  /*
256878  name AST Memory Allocation Support Variables
256879  Memory allocations support variables
256880 
256881  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
256882  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
256883  and support the AST File I/O Mechanism.
256884  */
256885  /* */
256886 
256887  public:
256888 
256889  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
256890  // to current node (so that it will work cleanly with build functions to specify patterns).
256891  // virtual SgNode* addRegExpAttribute();
256898 
256899 // *** COMMON CODE SECTION ENDS HERE ***
256900 
256901 
256902 // End of memberFunctionString
256903 // Start of memberFunctionString
256904 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
256905 
256906  // the generated cast function
256907  // friend ROSE_DLL_API SgLshiftAssignOp* isSgLshiftAssignOp ( SgNode* s );
256908 
256910 
256911 
256912 // End of memberFunctionString
256913 // Start of memberFunctionString
256914 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
256915 
256916  void post_construction_initialization() override;
256917 
256918 
256919 // End of memberFunctionString
256920 // Start of memberFunctionString
256921 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
256922 
256923  int precedence() const override { return 2; }
256924 
256925 
256926 // End of memberFunctionString
256927 
256928 
256929  public:
256930  virtual ~SgLshiftAssignOp();
256931 
256932 
256933  public:
256934  SgLshiftAssignOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
256935  SgLshiftAssignOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
256936 
256937  protected:
256938 
256939 
256940 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
256941 
256942 
256943  };
256944 #endif
256945 
256946 // postdeclarations for SgLshiftAssignOp
256947 
256948 /* #line 256949 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
256949 
256950 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
256951 
256952 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
256953 
256954 
256955 /* #line 256956 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
256956 
256957 
256958 
256959 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
256960 
256961 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
256962 // This code is automatically generated for each
256963 // terminal and non-terminal within the defined
256964 // grammar. There is a simple way to change the
256965 // code to fix bugs etc. See the ROSE README file
256966 // for directions.
256967 
256968 // tps: (02/22/2010): Adding DLL export requirements
256969 #include "rosedll.h"
256970 
256971 // predeclarations for SgRshiftAssignOp
256972 
256973 /* #line 256974 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
256974 
256975 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
256976 
256977 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
256978 
256979 #if 1
256980 // Class Definition for SgRshiftAssignOp
256981 class ROSE_DLL_API SgRshiftAssignOp : public SgCompoundAssignOp
256982  {
256983  public:
256984 
256985 
256986 /* #line 256987 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
256987 
256988  virtual SgNode* copy ( SgCopyHelp& help) const override;
256989 // Start of memberFunctionString
256990 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
256991 
256992 // *** COMMON CODE SECTION BEGINS HERE ***
256993 
256994  public:
256995 
256996  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
256997  // and not required which is required to match the other aspects of the copy mechanism code generation.
256998  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
256999  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
257000  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
257001  // virtual SgNode* copy ( const SgCopyHelp & help) const;
257002 
257004  virtual std::string class_name() const override;
257005 
257007  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
257008 
257010  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
257011  // static const VariantT static_variant = V_SgRshiftAssignOp;
257012  enum { static_variant = V_SgRshiftAssignOp };
257013 
257014  /* the generated cast function */
257016  ROSE_DLL_API friend SgRshiftAssignOp* isSgRshiftAssignOp( SgNode * s );
257017 
257019  ROSE_DLL_API friend const SgRshiftAssignOp* isSgRshiftAssignOp( const SgNode * s );
257020 
257021  // ******************************************
257022  // * Memory Pool / New / Delete
257023  // ******************************************
257024 
257025  public:
257027  static const unsigned pool_size; //
257029  static std::vector<unsigned char *> pools; //
257031  static SgRshiftAssignOp * next_node; //
257032 
257034  static unsigned long initializeStorageClassArray(SgRshiftAssignOpStorageClass *); //
257035 
257037  static void clearMemoryPool(); //
257038  static void deleteMemoryPool(); //
257039 
257041  static void extendMemoryPoolForFileIO(); //
257042 
257044  static SgRshiftAssignOp * getPointerFromGlobalIndex(unsigned long); //
257046  static SgRshiftAssignOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
257047 
257049  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
257051  static void resetValidFreepointers(); //
257053  static unsigned long getNumberOfLastValidPointer(); //
257054 
257055 
257056 #if defined(INLINE_FUNCTIONS)
257057 
257058  inline void *operator new (size_t size);
257059 #else
257060 
257061  void *operator new (size_t size);
257062 #endif
257063 
257064  void operator delete (void* pointer, size_t size);
257065 
257066  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
257067  void operator delete (void* pointer)
257068  {
257069  // This is the generated delete operator...
257070  SgRshiftAssignOp::operator delete (pointer,sizeof(SgRshiftAssignOp));
257071  }
257072 
257074  static size_t numberOfNodes();
257075 
257077  static size_t memoryUsage();
257078 
257079  // End of scope which started in IR nodes specific code
257080  /* */
257081 
257082  /* name Internal Functions
257083  \brief Internal functions ... incomplete-documentation
257084 
257085  These functions have been made public as part of the design, but they are suggested for internal use
257086  or by particularly knowledgeable users for specialized tools or applications.
257087 
257088  \internal We could not make these private because they are required by user for special purposes. And
257089  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
257090 
257091  */
257092 
257093  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
257094  // overridden in every class by *generated* implementation
257096  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
257097  // MS: 06/28/02 container of names of variables or container indices
257098  // used used in the traversal to access AST successor nodes
257099  // overridden in every class by *generated* implementation
257102  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
257103 
257104  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
257105  // than all the vector copies. The implementation for these functions is generated for each class.
257107  virtual size_t get_numberOfTraversalSuccessors() override;
257109  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
257111  virtual size_t get_childIndex(SgNode *child) override;
257112 
257113 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
257114  // MS: 08/16/2002 method for generating RTI information
257116  virtual RTIReturnType roseRTI() override;
257117 #endif
257118  /* */
257119 
257120 
257121 
257122  /* name Deprecated Functions
257123  \brief Deprecated functions ... incomplete-documentation
257124 
257125  These functions have been deprecated from use.
257126  */
257127  /* */
257128 
257130  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
257131 
257132  // JJW (10/16/2008): Changed to a single function in Node.code, and put
257133  // getVariant() in #if 0 block to prevent confusing Doxygen
257134 #if 0
257135 
257136  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
257138  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
257139 #endif
257140  /* */
257141 
257142 
257143 
257144 
257145  public:
257146  /* name Traversal Support Functions
257147  \brief Traversal support functions ... incomplete-documentation
257148 
257149  These functions have been made public as part of the design, but they are suggested for internal use
257150  or by particularly knowledgable users for specialized tools or applications.
257151  */
257152  /* */
257153 
257154  // DQ (11/26/2005): Support for visitor pattern mechanims
257155  // (inferior to ROSE traversal mechanism, experimental).
257159 
257160  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
257162  virtual void accept (ROSE_VisitorPattern & visitor) override;
257163 
257164  // DQ (12/26/2005): Support for traversal based on the memory pool
257167  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
257168 
257171  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
257172 
257173  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
257174  // This traversal helps support internal tools that call static member functions.
257175  // note: this function operates on the memory pools.
257178  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
257179  /* */
257180 
257181 
257182  public:
257183  /* name Memory Allocation Functions
257184  \brief Memory allocations functions ... incomplete-documentation
257185 
257186  These functions have been made public as part of the design, but they are suggested for internal use
257187  or by particularly knowledgable users for specialized tools or applications.
257188  */
257189  /* */
257190 
257201  virtual bool isInMemoryPool() override;
257202 
257213  virtual void checkDataMemberPointersIfInMemoryPool() override;
257214 
257215  // DQ (4/30/2006): Modified to be a const function.
257230  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
257231 
257241  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
257242 
257254  virtual long getChildIndex( SgNode* childNode ) const override;
257255 
257256  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
257257  // comment here (changed to be a C style comment and not be a doxygen comment).
257258  /* \brief Constructor for use by AST File I/O Mechanism
257259 
257260  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
257261  which obtained via fast binary file I/O from disk.
257262  */
257263  // SgRshiftAssignOp( SgRshiftAssignOpStorageClass& source );
257264 
257265 
257266 
257267 
257268 
257269  // JH (10/24/2005): methods added to support the ast file IO
257270  private:
257271 
257272  /* name AST Memory Allocation Support Functions
257273  \brief Memory allocations support....
257274 
257275  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
257276  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
257277  and support the AST File I/O Mechanism.
257278  */
257279  /* */
257280 
257281  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
257282  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
257283  that I use the same type everywhere, if any changes are made. THe second one declares the type
257284  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
257285  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
257286  a correspinding one in the AST_FILE_IO class!
257287  */
257288  // DQ (9/2/2015): This typedef is no longer used, we can't define the
257289  // comment here (changed to be a C style comment and not be a doxygen comment).
257290  /* \brief Typedef used for low level memory access.
257291  */
257292  // typedef unsigned char* TestType;
257293 
257294  // DQ (9/2/2015): This typedef is no longer used, we can't define the
257295  // comment here (changed to be a C style comment and not be a doxygen comment).
257296  /* \brief Typedef used to hold memory addresses as values.
257297  */
257298  // typedef unsigned long AddressType;
257299 
257300 
257301 
257302  // necessary, to have direct access to the p_freepointer and the private methods !
257304  friend class AST_FILE_IO;
257305 
257307  friend class SgRshiftAssignOpStorageClass;
257308 
257310  friend class AstSpecificDataManagingClass;
257311 
257313  friend class AstSpecificDataManagingClassStorageClass;
257314 
257315  public:
257317  SgRshiftAssignOp( const SgRshiftAssignOpStorageClass& source );
257318 
257319  // private: // JJW hack
257320  /*
257321  name AST Memory Allocation Support Variables
257322  Memory allocations support variables
257323 
257324  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
257325  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
257326  and support the AST File I/O Mechanism.
257327  */
257328  /* */
257329 
257330  public:
257331 
257332  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
257333  // to current node (so that it will work cleanly with build functions to specify patterns).
257334  // virtual SgNode* addRegExpAttribute();
257341 
257342 // *** COMMON CODE SECTION ENDS HERE ***
257343 
257344 
257345 // End of memberFunctionString
257346 // Start of memberFunctionString
257347 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
257348 
257349  // the generated cast function
257350  // friend ROSE_DLL_API SgRshiftAssignOp* isSgRshiftAssignOp ( SgNode* s );
257351 
257353 
257354 
257355 // End of memberFunctionString
257356 // Start of memberFunctionString
257357 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
257358 
257359  void post_construction_initialization() override;
257360 
257361 
257362 // End of memberFunctionString
257363 // Start of memberFunctionString
257364 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
257365 
257366  int precedence() const override { return 2; }
257367 
257368 
257369 // End of memberFunctionString
257370 
257371 
257372  public:
257373  virtual ~SgRshiftAssignOp();
257374 
257375 
257376  public:
257377  SgRshiftAssignOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
257378  SgRshiftAssignOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
257379 
257380  protected:
257381 
257382 
257383 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
257384 
257385 
257386  };
257387 #endif
257388 
257389 // postdeclarations for SgRshiftAssignOp
257390 
257391 /* #line 257392 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
257392 
257393 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
257394 
257395 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
257396 
257397 
257398 /* #line 257399 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
257399 
257400 
257401 
257402 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
257403 
257404 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
257405 // This code is automatically generated for each
257406 // terminal and non-terminal within the defined
257407 // grammar. There is a simple way to change the
257408 // code to fix bugs etc. See the ROSE README file
257409 // for directions.
257410 
257411 // tps: (02/22/2010): Adding DLL export requirements
257412 #include "rosedll.h"
257413 
257414 // predeclarations for SgIntegerDivideAssignOp
257415 
257416 /* #line 257417 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
257417 
257418 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
257419 
257420 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
257421 
257422 #if 1
257423 // Class Definition for SgIntegerDivideAssignOp
257425  {
257426  public:
257427 
257428 
257429 /* #line 257430 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
257430 
257431  virtual SgNode* copy ( SgCopyHelp& help) const override;
257432 // Start of memberFunctionString
257433 /* #line 1442 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
257434 
257435 
257436 
257437 // End of memberFunctionString
257438 // Start of memberFunctionString
257439 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
257440 
257441 // *** COMMON CODE SECTION BEGINS HERE ***
257442 
257443  public:
257444 
257445  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
257446  // and not required which is required to match the other aspects of the copy mechanism code generation.
257447  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
257448  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
257449  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
257450  // virtual SgNode* copy ( const SgCopyHelp & help) const;
257451 
257453  virtual std::string class_name() const override;
257454 
257456  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
257457 
257459  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
257460  // static const VariantT static_variant = V_SgIntegerDivideAssignOp;
257461  enum { static_variant = V_SgIntegerDivideAssignOp };
257462 
257463  /* the generated cast function */
257465  ROSE_DLL_API friend SgIntegerDivideAssignOp* isSgIntegerDivideAssignOp( SgNode * s );
257466 
257468  ROSE_DLL_API friend const SgIntegerDivideAssignOp* isSgIntegerDivideAssignOp( const SgNode * s );
257469 
257470  // ******************************************
257471  // * Memory Pool / New / Delete
257472  // ******************************************
257473 
257474  public:
257476  static const unsigned pool_size; //
257478  static std::vector<unsigned char *> pools; //
257480  static SgIntegerDivideAssignOp * next_node; //
257481 
257483  static unsigned long initializeStorageClassArray(SgIntegerDivideAssignOpStorageClass *); //
257484 
257486  static void clearMemoryPool(); //
257487  static void deleteMemoryPool(); //
257488 
257490  static void extendMemoryPoolForFileIO(); //
257491 
257493  static SgIntegerDivideAssignOp * getPointerFromGlobalIndex(unsigned long); //
257495  static SgIntegerDivideAssignOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
257496 
257498  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
257500  static void resetValidFreepointers(); //
257502  static unsigned long getNumberOfLastValidPointer(); //
257503 
257504 
257505 #if defined(INLINE_FUNCTIONS)
257506 
257507  inline void *operator new (size_t size);
257508 #else
257509 
257510  void *operator new (size_t size);
257511 #endif
257512 
257513  void operator delete (void* pointer, size_t size);
257514 
257515  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
257516  void operator delete (void* pointer)
257517  {
257518  // This is the generated delete operator...
257519  SgIntegerDivideAssignOp::operator delete (pointer,sizeof(SgIntegerDivideAssignOp));
257520  }
257521 
257523  static size_t numberOfNodes();
257524 
257526  static size_t memoryUsage();
257527 
257528  // End of scope which started in IR nodes specific code
257529  /* */
257530 
257531  /* name Internal Functions
257532  \brief Internal functions ... incomplete-documentation
257533 
257534  These functions have been made public as part of the design, but they are suggested for internal use
257535  or by particularly knowledgeable users for specialized tools or applications.
257536 
257537  \internal We could not make these private because they are required by user for special purposes. And
257538  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
257539 
257540  */
257541 
257542  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
257543  // overridden in every class by *generated* implementation
257545  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
257546  // MS: 06/28/02 container of names of variables or container indices
257547  // used used in the traversal to access AST successor nodes
257548  // overridden in every class by *generated* implementation
257551  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
257552 
257553  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
257554  // than all the vector copies. The implementation for these functions is generated for each class.
257556  virtual size_t get_numberOfTraversalSuccessors() override;
257558  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
257560  virtual size_t get_childIndex(SgNode *child) override;
257561 
257562 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
257563  // MS: 08/16/2002 method for generating RTI information
257565  virtual RTIReturnType roseRTI() override;
257566 #endif
257567  /* */
257568 
257569 
257570 
257571  /* name Deprecated Functions
257572  \brief Deprecated functions ... incomplete-documentation
257573 
257574  These functions have been deprecated from use.
257575  */
257576  /* */
257577 
257579  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
257580 
257581  // JJW (10/16/2008): Changed to a single function in Node.code, and put
257582  // getVariant() in #if 0 block to prevent confusing Doxygen
257583 #if 0
257584 
257585  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
257587  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
257588 #endif
257589  /* */
257590 
257591 
257592 
257593 
257594  public:
257595  /* name Traversal Support Functions
257596  \brief Traversal support functions ... incomplete-documentation
257597 
257598  These functions have been made public as part of the design, but they are suggested for internal use
257599  or by particularly knowledgable users for specialized tools or applications.
257600  */
257601  /* */
257602 
257603  // DQ (11/26/2005): Support for visitor pattern mechanims
257604  // (inferior to ROSE traversal mechanism, experimental).
257608 
257609  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
257611  virtual void accept (ROSE_VisitorPattern & visitor) override;
257612 
257613  // DQ (12/26/2005): Support for traversal based on the memory pool
257616  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
257617 
257620  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
257621 
257622  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
257623  // This traversal helps support internal tools that call static member functions.
257624  // note: this function operates on the memory pools.
257627  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
257628  /* */
257629 
257630 
257631  public:
257632  /* name Memory Allocation Functions
257633  \brief Memory allocations functions ... incomplete-documentation
257634 
257635  These functions have been made public as part of the design, but they are suggested for internal use
257636  or by particularly knowledgable users for specialized tools or applications.
257637  */
257638  /* */
257639 
257650  virtual bool isInMemoryPool() override;
257651 
257662  virtual void checkDataMemberPointersIfInMemoryPool() override;
257663 
257664  // DQ (4/30/2006): Modified to be a const function.
257679  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
257680 
257690  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
257691 
257703  virtual long getChildIndex( SgNode* childNode ) const override;
257704 
257705  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
257706  // comment here (changed to be a C style comment and not be a doxygen comment).
257707  /* \brief Constructor for use by AST File I/O Mechanism
257708 
257709  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
257710  which obtained via fast binary file I/O from disk.
257711  */
257712  // SgIntegerDivideAssignOp( SgIntegerDivideAssignOpStorageClass& source );
257713 
257714 
257715 
257716 
257717 
257718  // JH (10/24/2005): methods added to support the ast file IO
257719  private:
257720 
257721  /* name AST Memory Allocation Support Functions
257722  \brief Memory allocations support....
257723 
257724  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
257725  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
257726  and support the AST File I/O Mechanism.
257727  */
257728  /* */
257729 
257730  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
257731  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
257732  that I use the same type everywhere, if any changes are made. THe second one declares the type
257733  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
257734  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
257735  a correspinding one in the AST_FILE_IO class!
257736  */
257737  // DQ (9/2/2015): This typedef is no longer used, we can't define the
257738  // comment here (changed to be a C style comment and not be a doxygen comment).
257739  /* \brief Typedef used for low level memory access.
257740  */
257741  // typedef unsigned char* TestType;
257742 
257743  // DQ (9/2/2015): This typedef is no longer used, we can't define the
257744  // comment here (changed to be a C style comment and not be a doxygen comment).
257745  /* \brief Typedef used to hold memory addresses as values.
257746  */
257747  // typedef unsigned long AddressType;
257748 
257749 
257750 
257751  // necessary, to have direct access to the p_freepointer and the private methods !
257753  friend class AST_FILE_IO;
257754 
257756  friend class SgIntegerDivideAssignOpStorageClass;
257757 
257759  friend class AstSpecificDataManagingClass;
257760 
257762  friend class AstSpecificDataManagingClassStorageClass;
257763 
257764  public:
257766  SgIntegerDivideAssignOp( const SgIntegerDivideAssignOpStorageClass& source );
257767 
257768  // private: // JJW hack
257769  /*
257770  name AST Memory Allocation Support Variables
257771  Memory allocations support variables
257772 
257773  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
257774  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
257775  and support the AST File I/O Mechanism.
257776  */
257777  /* */
257778 
257779  public:
257780 
257781  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
257782  // to current node (so that it will work cleanly with build functions to specify patterns).
257783  // virtual SgNode* addRegExpAttribute();
257790 
257791 // *** COMMON CODE SECTION ENDS HERE ***
257792 
257793 
257794 // End of memberFunctionString
257795 // Start of memberFunctionString
257796 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
257797 
257798  // the generated cast function
257799  // friend ROSE_DLL_API SgIntegerDivideAssignOp* isSgIntegerDivideAssignOp ( SgNode* s );
257800 
257802 
257803 
257804 // End of memberFunctionString
257805 // Start of memberFunctionString
257806 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
257807 
257808  void post_construction_initialization() override;
257809 
257810 
257811 // End of memberFunctionString
257812 // Start of memberFunctionString
257813 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
257814 
257815  int precedence() const override { return 2; }
257816 
257817 
257818 // End of memberFunctionString
257819 
257820 
257821  public:
257822  virtual ~SgIntegerDivideAssignOp();
257823 
257824 
257825  public:
257826  SgIntegerDivideAssignOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
257827  SgIntegerDivideAssignOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
257828 
257829  protected:
257830 
257831 
257832 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
257833 
257834 
257835  };
257836 #endif
257837 
257838 // postdeclarations for SgIntegerDivideAssignOp
257839 
257840 /* #line 257841 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
257841 
257842 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
257843 
257844 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
257845 
257846 
257847 /* #line 257848 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
257848 
257849 
257850 
257851 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
257852 
257853 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
257854 // This code is automatically generated for each
257855 // terminal and non-terminal within the defined
257856 // grammar. There is a simple way to change the
257857 // code to fix bugs etc. See the ROSE README file
257858 // for directions.
257859 
257860 // tps: (02/22/2010): Adding DLL export requirements
257861 #include "rosedll.h"
257862 
257863 // predeclarations for SgExponentiationAssignOp
257864 
257865 /* #line 257866 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
257866 
257867 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
257868 
257869 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
257870 
257871 #if 1
257872 // Class Definition for SgExponentiationAssignOp
257874  {
257875  public:
257876 
257877 
257878 /* #line 257879 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
257879 
257880  virtual SgNode* copy ( SgCopyHelp& help) const override;
257881 // Start of memberFunctionString
257882 /* #line 1445 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
257883 
257884 
257885 
257886 // End of memberFunctionString
257887 // Start of memberFunctionString
257888 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
257889 
257890 // *** COMMON CODE SECTION BEGINS HERE ***
257891 
257892  public:
257893 
257894  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
257895  // and not required which is required to match the other aspects of the copy mechanism code generation.
257896  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
257897  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
257898  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
257899  // virtual SgNode* copy ( const SgCopyHelp & help) const;
257900 
257902  virtual std::string class_name() const override;
257903 
257905  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
257906 
257908  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
257909  // static const VariantT static_variant = V_SgExponentiationAssignOp;
257910  enum { static_variant = V_SgExponentiationAssignOp };
257911 
257912  /* the generated cast function */
257914  ROSE_DLL_API friend SgExponentiationAssignOp* isSgExponentiationAssignOp( SgNode * s );
257915 
257917  ROSE_DLL_API friend const SgExponentiationAssignOp* isSgExponentiationAssignOp( const SgNode * s );
257918 
257919  // ******************************************
257920  // * Memory Pool / New / Delete
257921  // ******************************************
257922 
257923  public:
257925  static const unsigned pool_size; //
257927  static std::vector<unsigned char *> pools; //
257929  static SgExponentiationAssignOp * next_node; //
257930 
257932  static unsigned long initializeStorageClassArray(SgExponentiationAssignOpStorageClass *); //
257933 
257935  static void clearMemoryPool(); //
257936  static void deleteMemoryPool(); //
257937 
257939  static void extendMemoryPoolForFileIO(); //
257940 
257942  static SgExponentiationAssignOp * getPointerFromGlobalIndex(unsigned long); //
257944  static SgExponentiationAssignOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
257945 
257947  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
257949  static void resetValidFreepointers(); //
257951  static unsigned long getNumberOfLastValidPointer(); //
257952 
257953 
257954 #if defined(INLINE_FUNCTIONS)
257955 
257956  inline void *operator new (size_t size);
257957 #else
257958 
257959  void *operator new (size_t size);
257960 #endif
257961 
257962  void operator delete (void* pointer, size_t size);
257963 
257964  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
257965  void operator delete (void* pointer)
257966  {
257967  // This is the generated delete operator...
257968  SgExponentiationAssignOp::operator delete (pointer,sizeof(SgExponentiationAssignOp));
257969  }
257970 
257972  static size_t numberOfNodes();
257973 
257975  static size_t memoryUsage();
257976 
257977  // End of scope which started in IR nodes specific code
257978  /* */
257979 
257980  /* name Internal Functions
257981  \brief Internal functions ... incomplete-documentation
257982 
257983  These functions have been made public as part of the design, but they are suggested for internal use
257984  or by particularly knowledgeable users for specialized tools or applications.
257985 
257986  \internal We could not make these private because they are required by user for special purposes. And
257987  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
257988 
257989  */
257990 
257991  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
257992  // overridden in every class by *generated* implementation
257994  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
257995  // MS: 06/28/02 container of names of variables or container indices
257996  // used used in the traversal to access AST successor nodes
257997  // overridden in every class by *generated* implementation
258000  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
258001 
258002  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
258003  // than all the vector copies. The implementation for these functions is generated for each class.
258005  virtual size_t get_numberOfTraversalSuccessors() override;
258007  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
258009  virtual size_t get_childIndex(SgNode *child) override;
258010 
258011 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
258012  // MS: 08/16/2002 method for generating RTI information
258014  virtual RTIReturnType roseRTI() override;
258015 #endif
258016  /* */
258017 
258018 
258019 
258020  /* name Deprecated Functions
258021  \brief Deprecated functions ... incomplete-documentation
258022 
258023  These functions have been deprecated from use.
258024  */
258025  /* */
258026 
258028  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
258029 
258030  // JJW (10/16/2008): Changed to a single function in Node.code, and put
258031  // getVariant() in #if 0 block to prevent confusing Doxygen
258032 #if 0
258033 
258034  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
258036  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
258037 #endif
258038  /* */
258039 
258040 
258041 
258042 
258043  public:
258044  /* name Traversal Support Functions
258045  \brief Traversal support functions ... incomplete-documentation
258046 
258047  These functions have been made public as part of the design, but they are suggested for internal use
258048  or by particularly knowledgable users for specialized tools or applications.
258049  */
258050  /* */
258051 
258052  // DQ (11/26/2005): Support for visitor pattern mechanims
258053  // (inferior to ROSE traversal mechanism, experimental).
258057 
258058  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
258060  virtual void accept (ROSE_VisitorPattern & visitor) override;
258061 
258062  // DQ (12/26/2005): Support for traversal based on the memory pool
258065  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
258066 
258069  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
258070 
258071  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
258072  // This traversal helps support internal tools that call static member functions.
258073  // note: this function operates on the memory pools.
258076  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
258077  /* */
258078 
258079 
258080  public:
258081  /* name Memory Allocation Functions
258082  \brief Memory allocations functions ... incomplete-documentation
258083 
258084  These functions have been made public as part of the design, but they are suggested for internal use
258085  or by particularly knowledgable users for specialized tools or applications.
258086  */
258087  /* */
258088 
258099  virtual bool isInMemoryPool() override;
258100 
258111  virtual void checkDataMemberPointersIfInMemoryPool() override;
258112 
258113  // DQ (4/30/2006): Modified to be a const function.
258128  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
258129 
258139  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
258140 
258152  virtual long getChildIndex( SgNode* childNode ) const override;
258153 
258154  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
258155  // comment here (changed to be a C style comment and not be a doxygen comment).
258156  /* \brief Constructor for use by AST File I/O Mechanism
258157 
258158  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
258159  which obtained via fast binary file I/O from disk.
258160  */
258161  // SgExponentiationAssignOp( SgExponentiationAssignOpStorageClass& source );
258162 
258163 
258164 
258165 
258166 
258167  // JH (10/24/2005): methods added to support the ast file IO
258168  private:
258169 
258170  /* name AST Memory Allocation Support Functions
258171  \brief Memory allocations support....
258172 
258173  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
258174  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
258175  and support the AST File I/O Mechanism.
258176  */
258177  /* */
258178 
258179  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
258180  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
258181  that I use the same type everywhere, if any changes are made. THe second one declares the type
258182  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
258183  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
258184  a correspinding one in the AST_FILE_IO class!
258185  */
258186  // DQ (9/2/2015): This typedef is no longer used, we can't define the
258187  // comment here (changed to be a C style comment and not be a doxygen comment).
258188  /* \brief Typedef used for low level memory access.
258189  */
258190  // typedef unsigned char* TestType;
258191 
258192  // DQ (9/2/2015): This typedef is no longer used, we can't define the
258193  // comment here (changed to be a C style comment and not be a doxygen comment).
258194  /* \brief Typedef used to hold memory addresses as values.
258195  */
258196  // typedef unsigned long AddressType;
258197 
258198 
258199 
258200  // necessary, to have direct access to the p_freepointer and the private methods !
258202  friend class AST_FILE_IO;
258203 
258205  friend class SgExponentiationAssignOpStorageClass;
258206 
258208  friend class AstSpecificDataManagingClass;
258209 
258211  friend class AstSpecificDataManagingClassStorageClass;
258212 
258213  public:
258215  SgExponentiationAssignOp( const SgExponentiationAssignOpStorageClass& source );
258216 
258217  // private: // JJW hack
258218  /*
258219  name AST Memory Allocation Support Variables
258220  Memory allocations support variables
258221 
258222  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
258223  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
258224  and support the AST File I/O Mechanism.
258225  */
258226  /* */
258227 
258228  public:
258229 
258230  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
258231  // to current node (so that it will work cleanly with build functions to specify patterns).
258232  // virtual SgNode* addRegExpAttribute();
258239 
258240 // *** COMMON CODE SECTION ENDS HERE ***
258241 
258242 
258243 // End of memberFunctionString
258244 // Start of memberFunctionString
258245 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
258246 
258247  // the generated cast function
258248  // friend ROSE_DLL_API SgExponentiationAssignOp* isSgExponentiationAssignOp ( SgNode* s );
258249 
258251 
258252 
258253 // End of memberFunctionString
258254 // Start of memberFunctionString
258255 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
258256 
258257  void post_construction_initialization() override;
258258 
258259 
258260 // End of memberFunctionString
258261 // Start of memberFunctionString
258262 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
258263 
258264  int precedence() const override { return 2; }
258265 
258266 
258267 // End of memberFunctionString
258268 
258269 
258270  public:
258271  virtual ~SgExponentiationAssignOp();
258272 
258273 
258274  public:
258275  SgExponentiationAssignOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
258276  SgExponentiationAssignOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
258277 
258278  protected:
258279 
258280 
258281 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
258282 
258283 
258284  };
258285 #endif
258286 
258287 // postdeclarations for SgExponentiationAssignOp
258288 
258289 /* #line 258290 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
258290 
258291 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
258292 
258293 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
258294 
258295 
258296 /* #line 258297 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
258297 
258298 
258299 
258300 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
258301 
258302 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
258303 // This code is automatically generated for each
258304 // terminal and non-terminal within the defined
258305 // grammar. There is a simple way to change the
258306 // code to fix bugs etc. See the ROSE README file
258307 // for directions.
258308 
258309 // tps: (02/22/2010): Adding DLL export requirements
258310 #include "rosedll.h"
258311 
258312 // predeclarations for SgMembershipOp
258313 
258314 /* #line 258315 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
258315 
258316 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
258317 
258318 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
258319 
258320 #if 1
258321 // Class Definition for SgMembershipOp
258322 class ROSE_DLL_API SgMembershipOp : public SgBinaryOp
258323  {
258324  public:
258325 
258326 
258327 /* #line 258328 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
258328 
258329  virtual SgNode* copy ( SgCopyHelp& help) const override;
258330 // Start of memberFunctionString
258331 /* #line 874 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
258332 
258333 /* #line 822 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
258334 
258335  // DQ (6/20/2006): Used for all relational operators
258336  virtual SgType* get_type() const override;
258337 
258338 
258339 
258340 
258341 // End of memberFunctionString
258342 // Start of memberFunctionString
258343 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
258344 
258345 // *** COMMON CODE SECTION BEGINS HERE ***
258346 
258347  public:
258348 
258349  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
258350  // and not required which is required to match the other aspects of the copy mechanism code generation.
258351  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
258352  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
258353  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
258354  // virtual SgNode* copy ( const SgCopyHelp & help) const;
258355 
258357  virtual std::string class_name() const override;
258358 
258360  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
258361 
258363  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
258364  // static const VariantT static_variant = V_SgMembershipOp;
258365  enum { static_variant = V_SgMembershipOp };
258366 
258367  /* the generated cast function */
258369  ROSE_DLL_API friend SgMembershipOp* isSgMembershipOp( SgNode * s );
258370 
258372  ROSE_DLL_API friend const SgMembershipOp* isSgMembershipOp( const SgNode * s );
258373 
258374  // ******************************************
258375  // * Memory Pool / New / Delete
258376  // ******************************************
258377 
258378  public:
258380  static const unsigned pool_size; //
258382  static std::vector<unsigned char *> pools; //
258384  static SgMembershipOp * next_node; //
258385 
258387  static unsigned long initializeStorageClassArray(SgMembershipOpStorageClass *); //
258388 
258390  static void clearMemoryPool(); //
258391  static void deleteMemoryPool(); //
258392 
258394  static void extendMemoryPoolForFileIO(); //
258395 
258397  static SgMembershipOp * getPointerFromGlobalIndex(unsigned long); //
258399  static SgMembershipOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
258400 
258402  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
258404  static void resetValidFreepointers(); //
258406  static unsigned long getNumberOfLastValidPointer(); //
258407 
258408 
258409 #if defined(INLINE_FUNCTIONS)
258410 
258411  inline void *operator new (size_t size);
258412 #else
258413 
258414  void *operator new (size_t size);
258415 #endif
258416 
258417  void operator delete (void* pointer, size_t size);
258418 
258419  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
258420  void operator delete (void* pointer)
258421  {
258422  // This is the generated delete operator...
258423  SgMembershipOp::operator delete (pointer,sizeof(SgMembershipOp));
258424  }
258425 
258427  static size_t numberOfNodes();
258428 
258430  static size_t memoryUsage();
258431 
258432  // End of scope which started in IR nodes specific code
258433  /* */
258434 
258435  /* name Internal Functions
258436  \brief Internal functions ... incomplete-documentation
258437 
258438  These functions have been made public as part of the design, but they are suggested for internal use
258439  or by particularly knowledgeable users for specialized tools or applications.
258440 
258441  \internal We could not make these private because they are required by user for special purposes. And
258442  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
258443 
258444  */
258445 
258446  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
258447  // overridden in every class by *generated* implementation
258449  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
258450  // MS: 06/28/02 container of names of variables or container indices
258451  // used used in the traversal to access AST successor nodes
258452  // overridden in every class by *generated* implementation
258455  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
258456 
258457  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
258458  // than all the vector copies. The implementation for these functions is generated for each class.
258460  virtual size_t get_numberOfTraversalSuccessors() override;
258462  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
258464  virtual size_t get_childIndex(SgNode *child) override;
258465 
258466 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
258467  // MS: 08/16/2002 method for generating RTI information
258469  virtual RTIReturnType roseRTI() override;
258470 #endif
258471  /* */
258472 
258473 
258474 
258475  /* name Deprecated Functions
258476  \brief Deprecated functions ... incomplete-documentation
258477 
258478  These functions have been deprecated from use.
258479  */
258480  /* */
258481 
258483  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
258484 
258485  // JJW (10/16/2008): Changed to a single function in Node.code, and put
258486  // getVariant() in #if 0 block to prevent confusing Doxygen
258487 #if 0
258488 
258489  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
258491  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
258492 #endif
258493  /* */
258494 
258495 
258496 
258497 
258498  public:
258499  /* name Traversal Support Functions
258500  \brief Traversal support functions ... incomplete-documentation
258501 
258502  These functions have been made public as part of the design, but they are suggested for internal use
258503  or by particularly knowledgable users for specialized tools or applications.
258504  */
258505  /* */
258506 
258507  // DQ (11/26/2005): Support for visitor pattern mechanims
258508  // (inferior to ROSE traversal mechanism, experimental).
258512 
258513  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
258515  virtual void accept (ROSE_VisitorPattern & visitor) override;
258516 
258517  // DQ (12/26/2005): Support for traversal based on the memory pool
258520  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
258521 
258524  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
258525 
258526  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
258527  // This traversal helps support internal tools that call static member functions.
258528  // note: this function operates on the memory pools.
258531  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
258532  /* */
258533 
258534 
258535  public:
258536  /* name Memory Allocation Functions
258537  \brief Memory allocations functions ... incomplete-documentation
258538 
258539  These functions have been made public as part of the design, but they are suggested for internal use
258540  or by particularly knowledgable users for specialized tools or applications.
258541  */
258542  /* */
258543 
258554  virtual bool isInMemoryPool() override;
258555 
258566  virtual void checkDataMemberPointersIfInMemoryPool() override;
258567 
258568  // DQ (4/30/2006): Modified to be a const function.
258583  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
258584 
258594  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
258595 
258607  virtual long getChildIndex( SgNode* childNode ) const override;
258608 
258609  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
258610  // comment here (changed to be a C style comment and not be a doxygen comment).
258611  /* \brief Constructor for use by AST File I/O Mechanism
258612 
258613  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
258614  which obtained via fast binary file I/O from disk.
258615  */
258616  // SgMembershipOp( SgMembershipOpStorageClass& source );
258617 
258618 
258619 
258620 
258621 
258622  // JH (10/24/2005): methods added to support the ast file IO
258623  private:
258624 
258625  /* name AST Memory Allocation Support Functions
258626  \brief Memory allocations support....
258627 
258628  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
258629  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
258630  and support the AST File I/O Mechanism.
258631  */
258632  /* */
258633 
258634  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
258635  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
258636  that I use the same type everywhere, if any changes are made. THe second one declares the type
258637  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
258638  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
258639  a correspinding one in the AST_FILE_IO class!
258640  */
258641  // DQ (9/2/2015): This typedef is no longer used, we can't define the
258642  // comment here (changed to be a C style comment and not be a doxygen comment).
258643  /* \brief Typedef used for low level memory access.
258644  */
258645  // typedef unsigned char* TestType;
258646 
258647  // DQ (9/2/2015): This typedef is no longer used, we can't define the
258648  // comment here (changed to be a C style comment and not be a doxygen comment).
258649  /* \brief Typedef used to hold memory addresses as values.
258650  */
258651  // typedef unsigned long AddressType;
258652 
258653 
258654 
258655  // necessary, to have direct access to the p_freepointer and the private methods !
258657  friend class AST_FILE_IO;
258658 
258660  friend class SgMembershipOpStorageClass;
258661 
258663  friend class AstSpecificDataManagingClass;
258664 
258666  friend class AstSpecificDataManagingClassStorageClass;
258667 
258668  public:
258670  SgMembershipOp( const SgMembershipOpStorageClass& source );
258671 
258672  // private: // JJW hack
258673  /*
258674  name AST Memory Allocation Support Variables
258675  Memory allocations support variables
258676 
258677  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
258678  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
258679  and support the AST File I/O Mechanism.
258680  */
258681  /* */
258682 
258683  public:
258684 
258685  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
258686  // to current node (so that it will work cleanly with build functions to specify patterns).
258687  // virtual SgNode* addRegExpAttribute();
258694 
258695 // *** COMMON CODE SECTION ENDS HERE ***
258696 
258697 
258698 // End of memberFunctionString
258699 // Start of memberFunctionString
258700 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
258701 
258702  // the generated cast function
258703  // friend ROSE_DLL_API SgMembershipOp* isSgMembershipOp ( SgNode* s );
258704 
258705  typedef SgBinaryOp base_node_type;
258706 
258707 
258708 // End of memberFunctionString
258709 // Start of memberFunctionString
258710 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
258711 
258712  void post_construction_initialization() override;
258713 
258714 
258715 // End of memberFunctionString
258716 // Start of memberFunctionString
258717 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
258718 
258719  int precedence() const override { return 9; }
258720 
258721 
258722 // End of memberFunctionString
258723 
258724 
258725  public:
258726  virtual ~SgMembershipOp();
258727 
258728 
258729  public:
258730  SgMembershipOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
258731  SgMembershipOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
258732 
258733  protected:
258734 
258735 
258736 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
258737 
258738 
258739  };
258740 #endif
258741 
258742 // postdeclarations for SgMembershipOp
258743 
258744 /* #line 258745 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
258745 
258746 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
258747 
258748 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
258749 
258750 
258751 /* #line 258752 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
258752 
258753 
258754 
258755 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
258756 
258757 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
258758 // This code is automatically generated for each
258759 // terminal and non-terminal within the defined
258760 // grammar. There is a simple way to change the
258761 // code to fix bugs etc. See the ROSE README file
258762 // for directions.
258763 
258764 // tps: (02/22/2010): Adding DLL export requirements
258765 #include "rosedll.h"
258766 
258767 // predeclarations for SgSpaceshipOp
258768 
258769 /* #line 258770 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
258770 
258771 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
258772 
258773 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
258774 
258775 #if 1
258776 // Class Definition for SgSpaceshipOp
258777 class ROSE_DLL_API SgSpaceshipOp : public SgBinaryOp
258778  {
258779  public:
258780 
258781 
258782 /* #line 258783 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
258783 
258784  virtual SgNode* copy ( SgCopyHelp& help) const override;
258785 // Start of memberFunctionString
258786 /* #line 727 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
258787 
258788 
258789 
258790 // End of memberFunctionString
258791 // Start of memberFunctionString
258792 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
258793 
258794 // *** COMMON CODE SECTION BEGINS HERE ***
258795 
258796  public:
258797 
258798  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
258799  // and not required which is required to match the other aspects of the copy mechanism code generation.
258800  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
258801  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
258802  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
258803  // virtual SgNode* copy ( const SgCopyHelp & help) const;
258804 
258806  virtual std::string class_name() const override;
258807 
258809  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
258810 
258812  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
258813  // static const VariantT static_variant = V_SgSpaceshipOp;
258814  enum { static_variant = V_SgSpaceshipOp };
258815 
258816  /* the generated cast function */
258818  ROSE_DLL_API friend SgSpaceshipOp* isSgSpaceshipOp( SgNode * s );
258819 
258821  ROSE_DLL_API friend const SgSpaceshipOp* isSgSpaceshipOp( const SgNode * s );
258822 
258823  // ******************************************
258824  // * Memory Pool / New / Delete
258825  // ******************************************
258826 
258827  public:
258829  static const unsigned pool_size; //
258831  static std::vector<unsigned char *> pools; //
258833  static SgSpaceshipOp * next_node; //
258834 
258836  static unsigned long initializeStorageClassArray(SgSpaceshipOpStorageClass *); //
258837 
258839  static void clearMemoryPool(); //
258840  static void deleteMemoryPool(); //
258841 
258843  static void extendMemoryPoolForFileIO(); //
258844 
258846  static SgSpaceshipOp * getPointerFromGlobalIndex(unsigned long); //
258848  static SgSpaceshipOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
258849 
258851  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
258853  static void resetValidFreepointers(); //
258855  static unsigned long getNumberOfLastValidPointer(); //
258856 
258857 
258858 #if defined(INLINE_FUNCTIONS)
258859 
258860  inline void *operator new (size_t size);
258861 #else
258862 
258863  void *operator new (size_t size);
258864 #endif
258865 
258866  void operator delete (void* pointer, size_t size);
258867 
258868  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
258869  void operator delete (void* pointer)
258870  {
258871  // This is the generated delete operator...
258872  SgSpaceshipOp::operator delete (pointer,sizeof(SgSpaceshipOp));
258873  }
258874 
258876  static size_t numberOfNodes();
258877 
258879  static size_t memoryUsage();
258880 
258881  // End of scope which started in IR nodes specific code
258882  /* */
258883 
258884  /* name Internal Functions
258885  \brief Internal functions ... incomplete-documentation
258886 
258887  These functions have been made public as part of the design, but they are suggested for internal use
258888  or by particularly knowledgeable users for specialized tools or applications.
258889 
258890  \internal We could not make these private because they are required by user for special purposes. And
258891  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
258892 
258893  */
258894 
258895  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
258896  // overridden in every class by *generated* implementation
258898  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
258899  // MS: 06/28/02 container of names of variables or container indices
258900  // used used in the traversal to access AST successor nodes
258901  // overridden in every class by *generated* implementation
258904  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
258905 
258906  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
258907  // than all the vector copies. The implementation for these functions is generated for each class.
258909  virtual size_t get_numberOfTraversalSuccessors() override;
258911  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
258913  virtual size_t get_childIndex(SgNode *child) override;
258914 
258915 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
258916  // MS: 08/16/2002 method for generating RTI information
258918  virtual RTIReturnType roseRTI() override;
258919 #endif
258920  /* */
258921 
258922 
258923 
258924  /* name Deprecated Functions
258925  \brief Deprecated functions ... incomplete-documentation
258926 
258927  These functions have been deprecated from use.
258928  */
258929  /* */
258930 
258932  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
258933 
258934  // JJW (10/16/2008): Changed to a single function in Node.code, and put
258935  // getVariant() in #if 0 block to prevent confusing Doxygen
258936 #if 0
258937 
258938  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
258940  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
258941 #endif
258942  /* */
258943 
258944 
258945 
258946 
258947  public:
258948  /* name Traversal Support Functions
258949  \brief Traversal support functions ... incomplete-documentation
258950 
258951  These functions have been made public as part of the design, but they are suggested for internal use
258952  or by particularly knowledgable users for specialized tools or applications.
258953  */
258954  /* */
258955 
258956  // DQ (11/26/2005): Support for visitor pattern mechanims
258957  // (inferior to ROSE traversal mechanism, experimental).
258961 
258962  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
258964  virtual void accept (ROSE_VisitorPattern & visitor) override;
258965 
258966  // DQ (12/26/2005): Support for traversal based on the memory pool
258969  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
258970 
258973  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
258974 
258975  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
258976  // This traversal helps support internal tools that call static member functions.
258977  // note: this function operates on the memory pools.
258980  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
258981  /* */
258982 
258983 
258984  public:
258985  /* name Memory Allocation Functions
258986  \brief Memory allocations functions ... incomplete-documentation
258987 
258988  These functions have been made public as part of the design, but they are suggested for internal use
258989  or by particularly knowledgable users for specialized tools or applications.
258990  */
258991  /* */
258992 
259003  virtual bool isInMemoryPool() override;
259004 
259015  virtual void checkDataMemberPointersIfInMemoryPool() override;
259016 
259017  // DQ (4/30/2006): Modified to be a const function.
259032  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
259033 
259043  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
259044 
259056  virtual long getChildIndex( SgNode* childNode ) const override;
259057 
259058  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
259059  // comment here (changed to be a C style comment and not be a doxygen comment).
259060  /* \brief Constructor for use by AST File I/O Mechanism
259061 
259062  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
259063  which obtained via fast binary file I/O from disk.
259064  */
259065  // SgSpaceshipOp( SgSpaceshipOpStorageClass& source );
259066 
259067 
259068 
259069 
259070 
259071  // JH (10/24/2005): methods added to support the ast file IO
259072  private:
259073 
259074  /* name AST Memory Allocation Support Functions
259075  \brief Memory allocations support....
259076 
259077  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
259078  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
259079  and support the AST File I/O Mechanism.
259080  */
259081  /* */
259082 
259083  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
259084  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
259085  that I use the same type everywhere, if any changes are made. THe second one declares the type
259086  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
259087  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
259088  a correspinding one in the AST_FILE_IO class!
259089  */
259090  // DQ (9/2/2015): This typedef is no longer used, we can't define the
259091  // comment here (changed to be a C style comment and not be a doxygen comment).
259092  /* \brief Typedef used for low level memory access.
259093  */
259094  // typedef unsigned char* TestType;
259095 
259096  // DQ (9/2/2015): This typedef is no longer used, we can't define the
259097  // comment here (changed to be a C style comment and not be a doxygen comment).
259098  /* \brief Typedef used to hold memory addresses as values.
259099  */
259100  // typedef unsigned long AddressType;
259101 
259102 
259103 
259104  // necessary, to have direct access to the p_freepointer and the private methods !
259106  friend class AST_FILE_IO;
259107 
259109  friend class SgSpaceshipOpStorageClass;
259110 
259112  friend class AstSpecificDataManagingClass;
259113 
259115  friend class AstSpecificDataManagingClassStorageClass;
259116 
259117  public:
259119  SgSpaceshipOp( const SgSpaceshipOpStorageClass& source );
259120 
259121  // private: // JJW hack
259122  /*
259123  name AST Memory Allocation Support Variables
259124  Memory allocations support variables
259125 
259126  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
259127  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
259128  and support the AST File I/O Mechanism.
259129  */
259130  /* */
259131 
259132  public:
259133 
259134  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
259135  // to current node (so that it will work cleanly with build functions to specify patterns).
259136  // virtual SgNode* addRegExpAttribute();
259142  SgSpaceshipOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
259143 
259144 // *** COMMON CODE SECTION ENDS HERE ***
259145 
259146 
259147 // End of memberFunctionString
259148 // Start of memberFunctionString
259149 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
259150 
259151  // the generated cast function
259152  // friend ROSE_DLL_API SgSpaceshipOp* isSgSpaceshipOp ( SgNode* s );
259153 
259154  typedef SgBinaryOp base_node_type;
259155 
259156 
259157 // End of memberFunctionString
259158 // Start of memberFunctionString
259159 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
259160 
259161  void post_construction_initialization() override;
259162 
259163 
259164 // End of memberFunctionString
259165 // Start of memberFunctionString
259166 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
259167 
259168  int precedence() const override { return 12; }
259169 
259170 
259171 // End of memberFunctionString
259172 
259173 
259174  public:
259175  virtual ~SgSpaceshipOp();
259176 
259177 
259178  public:
259179  SgSpaceshipOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
259180  SgSpaceshipOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
259181 
259182  protected:
259183 
259184 
259185 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
259186 
259187 
259188  };
259189 #endif
259190 
259191 // postdeclarations for SgSpaceshipOp
259192 
259193 /* #line 259194 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
259194 
259195 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
259196 
259197 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
259198 
259199 
259200 /* #line 259201 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
259201 
259202 
259203 
259204 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
259205 
259206 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
259207 // This code is automatically generated for each
259208 // terminal and non-terminal within the defined
259209 // grammar. There is a simple way to change the
259210 // code to fix bugs etc. See the ROSE README file
259211 // for directions.
259212 
259213 // tps: (02/22/2010): Adding DLL export requirements
259214 #include "rosedll.h"
259215 
259216 // predeclarations for SgNonMembershipOp
259217 
259218 /* #line 259219 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
259219 
259220 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
259221 
259222 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
259223 
259224 #if 1
259225 // Class Definition for SgNonMembershipOp
259226 class ROSE_DLL_API SgNonMembershipOp : public SgBinaryOp
259227  {
259228  public:
259229 
259230 
259231 /* #line 259232 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
259232 
259233  virtual SgNode* copy ( SgCopyHelp& help) const override;
259234 // Start of memberFunctionString
259235 /* #line 878 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
259236 
259237 /* #line 822 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
259238 
259239  // DQ (6/20/2006): Used for all relational operators
259240  virtual SgType* get_type() const override;
259241 
259242 
259243 
259244 
259245 // End of memberFunctionString
259246 // Start of memberFunctionString
259247 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
259248 
259249 // *** COMMON CODE SECTION BEGINS HERE ***
259250 
259251  public:
259252 
259253  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
259254  // and not required which is required to match the other aspects of the copy mechanism code generation.
259255  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
259256  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
259257  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
259258  // virtual SgNode* copy ( const SgCopyHelp & help) const;
259259 
259261  virtual std::string class_name() const override;
259262 
259264  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
259265 
259267  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
259268  // static const VariantT static_variant = V_SgNonMembershipOp;
259269  enum { static_variant = V_SgNonMembershipOp };
259270 
259271  /* the generated cast function */
259273  ROSE_DLL_API friend SgNonMembershipOp* isSgNonMembershipOp( SgNode * s );
259274 
259276  ROSE_DLL_API friend const SgNonMembershipOp* isSgNonMembershipOp( const SgNode * s );
259277 
259278  // ******************************************
259279  // * Memory Pool / New / Delete
259280  // ******************************************
259281 
259282  public:
259284  static const unsigned pool_size; //
259286  static std::vector<unsigned char *> pools; //
259288  static SgNonMembershipOp * next_node; //
259289 
259291  static unsigned long initializeStorageClassArray(SgNonMembershipOpStorageClass *); //
259292 
259294  static void clearMemoryPool(); //
259295  static void deleteMemoryPool(); //
259296 
259298  static void extendMemoryPoolForFileIO(); //
259299 
259301  static SgNonMembershipOp * getPointerFromGlobalIndex(unsigned long); //
259303  static SgNonMembershipOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
259304 
259306  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
259308  static void resetValidFreepointers(); //
259310  static unsigned long getNumberOfLastValidPointer(); //
259311 
259312 
259313 #if defined(INLINE_FUNCTIONS)
259314 
259315  inline void *operator new (size_t size);
259316 #else
259317 
259318  void *operator new (size_t size);
259319 #endif
259320 
259321  void operator delete (void* pointer, size_t size);
259322 
259323  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
259324  void operator delete (void* pointer)
259325  {
259326  // This is the generated delete operator...
259327  SgNonMembershipOp::operator delete (pointer,sizeof(SgNonMembershipOp));
259328  }
259329 
259331  static size_t numberOfNodes();
259332 
259334  static size_t memoryUsage();
259335 
259336  // End of scope which started in IR nodes specific code
259337  /* */
259338 
259339  /* name Internal Functions
259340  \brief Internal functions ... incomplete-documentation
259341 
259342  These functions have been made public as part of the design, but they are suggested for internal use
259343  or by particularly knowledgeable users for specialized tools or applications.
259344 
259345  \internal We could not make these private because they are required by user for special purposes. And
259346  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
259347 
259348  */
259349 
259350  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
259351  // overridden in every class by *generated* implementation
259353  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
259354  // MS: 06/28/02 container of names of variables or container indices
259355  // used used in the traversal to access AST successor nodes
259356  // overridden in every class by *generated* implementation
259359  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
259360 
259361  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
259362  // than all the vector copies. The implementation for these functions is generated for each class.
259364  virtual size_t get_numberOfTraversalSuccessors() override;
259366  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
259368  virtual size_t get_childIndex(SgNode *child) override;
259369 
259370 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
259371  // MS: 08/16/2002 method for generating RTI information
259373  virtual RTIReturnType roseRTI() override;
259374 #endif
259375  /* */
259376 
259377 
259378 
259379  /* name Deprecated Functions
259380  \brief Deprecated functions ... incomplete-documentation
259381 
259382  These functions have been deprecated from use.
259383  */
259384  /* */
259385 
259387  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
259388 
259389  // JJW (10/16/2008): Changed to a single function in Node.code, and put
259390  // getVariant() in #if 0 block to prevent confusing Doxygen
259391 #if 0
259392 
259393  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
259395  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
259396 #endif
259397  /* */
259398 
259399 
259400 
259401 
259402  public:
259403  /* name Traversal Support Functions
259404  \brief Traversal support functions ... incomplete-documentation
259405 
259406  These functions have been made public as part of the design, but they are suggested for internal use
259407  or by particularly knowledgable users for specialized tools or applications.
259408  */
259409  /* */
259410 
259411  // DQ (11/26/2005): Support for visitor pattern mechanims
259412  // (inferior to ROSE traversal mechanism, experimental).
259416 
259417  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
259419  virtual void accept (ROSE_VisitorPattern & visitor) override;
259420 
259421  // DQ (12/26/2005): Support for traversal based on the memory pool
259424  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
259425 
259428  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
259429 
259430  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
259431  // This traversal helps support internal tools that call static member functions.
259432  // note: this function operates on the memory pools.
259435  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
259436  /* */
259437 
259438 
259439  public:
259440  /* name Memory Allocation Functions
259441  \brief Memory allocations functions ... incomplete-documentation
259442 
259443  These functions have been made public as part of the design, but they are suggested for internal use
259444  or by particularly knowledgable users for specialized tools or applications.
259445  */
259446  /* */
259447 
259458  virtual bool isInMemoryPool() override;
259459 
259470  virtual void checkDataMemberPointersIfInMemoryPool() override;
259471 
259472  // DQ (4/30/2006): Modified to be a const function.
259487  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
259488 
259498  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
259499 
259511  virtual long getChildIndex( SgNode* childNode ) const override;
259512 
259513  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
259514  // comment here (changed to be a C style comment and not be a doxygen comment).
259515  /* \brief Constructor for use by AST File I/O Mechanism
259516 
259517  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
259518  which obtained via fast binary file I/O from disk.
259519  */
259520  // SgNonMembershipOp( SgNonMembershipOpStorageClass& source );
259521 
259522 
259523 
259524 
259525 
259526  // JH (10/24/2005): methods added to support the ast file IO
259527  private:
259528 
259529  /* name AST Memory Allocation Support Functions
259530  \brief Memory allocations support....
259531 
259532  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
259533  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
259534  and support the AST File I/O Mechanism.
259535  */
259536  /* */
259537 
259538  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
259539  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
259540  that I use the same type everywhere, if any changes are made. THe second one declares the type
259541  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
259542  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
259543  a correspinding one in the AST_FILE_IO class!
259544  */
259545  // DQ (9/2/2015): This typedef is no longer used, we can't define the
259546  // comment here (changed to be a C style comment and not be a doxygen comment).
259547  /* \brief Typedef used for low level memory access.
259548  */
259549  // typedef unsigned char* TestType;
259550 
259551  // DQ (9/2/2015): This typedef is no longer used, we can't define the
259552  // comment here (changed to be a C style comment and not be a doxygen comment).
259553  /* \brief Typedef used to hold memory addresses as values.
259554  */
259555  // typedef unsigned long AddressType;
259556 
259557 
259558 
259559  // necessary, to have direct access to the p_freepointer and the private methods !
259561  friend class AST_FILE_IO;
259562 
259564  friend class SgNonMembershipOpStorageClass;
259565 
259567  friend class AstSpecificDataManagingClass;
259568 
259570  friend class AstSpecificDataManagingClassStorageClass;
259571 
259572  public:
259574  SgNonMembershipOp( const SgNonMembershipOpStorageClass& source );
259575 
259576  // private: // JJW hack
259577  /*
259578  name AST Memory Allocation Support Variables
259579  Memory allocations support variables
259580 
259581  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
259582  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
259583  and support the AST File I/O Mechanism.
259584  */
259585  /* */
259586 
259587  public:
259588 
259589  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
259590  // to current node (so that it will work cleanly with build functions to specify patterns).
259591  // virtual SgNode* addRegExpAttribute();
259598 
259599 // *** COMMON CODE SECTION ENDS HERE ***
259600 
259601 
259602 // End of memberFunctionString
259603 // Start of memberFunctionString
259604 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
259605 
259606  // the generated cast function
259607  // friend ROSE_DLL_API SgNonMembershipOp* isSgNonMembershipOp ( SgNode* s );
259608 
259609  typedef SgBinaryOp base_node_type;
259610 
259611 
259612 // End of memberFunctionString
259613 // Start of memberFunctionString
259614 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
259615 
259616  void post_construction_initialization() override;
259617 
259618 
259619 // End of memberFunctionString
259620 // Start of memberFunctionString
259621 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
259622 
259623  int precedence() const override { return 9; }
259624 
259625 
259626 // End of memberFunctionString
259627 
259628 
259629  public:
259630  virtual ~SgNonMembershipOp();
259631 
259632 
259633  public:
259634  SgNonMembershipOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
259635  SgNonMembershipOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
259636 
259637  protected:
259638 
259639 
259640 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
259641 
259642 
259643  };
259644 #endif
259645 
259646 // postdeclarations for SgNonMembershipOp
259647 
259648 /* #line 259649 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
259649 
259650 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
259651 
259652 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
259653 
259654 
259655 /* #line 259656 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
259656 
259657 
259658 
259659 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
259660 
259661 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
259662 // This code is automatically generated for each
259663 // terminal and non-terminal within the defined
259664 // grammar. There is a simple way to change the
259665 // code to fix bugs etc. See the ROSE README file
259666 // for directions.
259667 
259668 // tps: (02/22/2010): Adding DLL export requirements
259669 #include "rosedll.h"
259670 
259671 // predeclarations for SgIsOp
259672 
259673 /* #line 259674 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
259674 
259675 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
259676 
259677 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
259678 
259679 #if 1
259680 // Class Definition for SgIsOp
259681 class ROSE_DLL_API SgIsOp : public SgBinaryOp
259682  {
259683  public:
259684 
259685 
259686 /* #line 259687 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
259687 
259688  virtual SgNode* copy ( SgCopyHelp& help) const override;
259689 // Start of memberFunctionString
259690 /* #line 882 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
259691 
259692 /* #line 822 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
259693 
259694  // DQ (6/20/2006): Used for all relational operators
259695  virtual SgType* get_type() const override;
259696 
259697 
259698 
259699 
259700 // End of memberFunctionString
259701 // Start of memberFunctionString
259702 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
259703 
259704 // *** COMMON CODE SECTION BEGINS HERE ***
259705 
259706  public:
259707 
259708  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
259709  // and not required which is required to match the other aspects of the copy mechanism code generation.
259710  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
259711  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
259712  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
259713  // virtual SgNode* copy ( const SgCopyHelp & help) const;
259714 
259716  virtual std::string class_name() const override;
259717 
259719  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
259720 
259722  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
259723  // static const VariantT static_variant = V_SgIsOp;
259724  enum { static_variant = V_SgIsOp };
259725 
259726  /* the generated cast function */
259728  ROSE_DLL_API friend SgIsOp* isSgIsOp( SgNode * s );
259729 
259731  ROSE_DLL_API friend const SgIsOp* isSgIsOp( const SgNode * s );
259732 
259733  // ******************************************
259734  // * Memory Pool / New / Delete
259735  // ******************************************
259736 
259737  public:
259739  static const unsigned pool_size; //
259741  static std::vector<unsigned char *> pools; //
259743  static SgIsOp * next_node; //
259744 
259746  static unsigned long initializeStorageClassArray(SgIsOpStorageClass *); //
259747 
259749  static void clearMemoryPool(); //
259750  static void deleteMemoryPool(); //
259751 
259753  static void extendMemoryPoolForFileIO(); //
259754 
259756  static SgIsOp * getPointerFromGlobalIndex(unsigned long); //
259758  static SgIsOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
259759 
259761  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
259763  static void resetValidFreepointers(); //
259765  static unsigned long getNumberOfLastValidPointer(); //
259766 
259767 
259768 #if defined(INLINE_FUNCTIONS)
259769 
259770  inline void *operator new (size_t size);
259771 #else
259772 
259773  void *operator new (size_t size);
259774 #endif
259775 
259776  void operator delete (void* pointer, size_t size);
259777 
259778  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
259779  void operator delete (void* pointer)
259780  {
259781  // This is the generated delete operator...
259782  SgIsOp::operator delete (pointer,sizeof(SgIsOp));
259783  }
259784 
259786  static size_t numberOfNodes();
259787 
259789  static size_t memoryUsage();
259790 
259791  // End of scope which started in IR nodes specific code
259792  /* */
259793 
259794  /* name Internal Functions
259795  \brief Internal functions ... incomplete-documentation
259796 
259797  These functions have been made public as part of the design, but they are suggested for internal use
259798  or by particularly knowledgeable users for specialized tools or applications.
259799 
259800  \internal We could not make these private because they are required by user for special purposes. And
259801  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
259802 
259803  */
259804 
259805  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
259806  // overridden in every class by *generated* implementation
259808  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
259809  // MS: 06/28/02 container of names of variables or container indices
259810  // used used in the traversal to access AST successor nodes
259811  // overridden in every class by *generated* implementation
259814  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
259815 
259816  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
259817  // than all the vector copies. The implementation for these functions is generated for each class.
259819  virtual size_t get_numberOfTraversalSuccessors() override;
259821  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
259823  virtual size_t get_childIndex(SgNode *child) override;
259824 
259825 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
259826  // MS: 08/16/2002 method for generating RTI information
259828  virtual RTIReturnType roseRTI() override;
259829 #endif
259830  /* */
259831 
259832 
259833 
259834  /* name Deprecated Functions
259835  \brief Deprecated functions ... incomplete-documentation
259836 
259837  These functions have been deprecated from use.
259838  */
259839  /* */
259840 
259842  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
259843 
259844  // JJW (10/16/2008): Changed to a single function in Node.code, and put
259845  // getVariant() in #if 0 block to prevent confusing Doxygen
259846 #if 0
259847 
259848  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
259850  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
259851 #endif
259852  /* */
259853 
259854 
259855 
259856 
259857  public:
259858  /* name Traversal Support Functions
259859  \brief Traversal support functions ... incomplete-documentation
259860 
259861  These functions have been made public as part of the design, but they are suggested for internal use
259862  or by particularly knowledgable users for specialized tools or applications.
259863  */
259864  /* */
259865 
259866  // DQ (11/26/2005): Support for visitor pattern mechanims
259867  // (inferior to ROSE traversal mechanism, experimental).
259871 
259872  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
259874  virtual void accept (ROSE_VisitorPattern & visitor) override;
259875 
259876  // DQ (12/26/2005): Support for traversal based on the memory pool
259879  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
259880 
259883  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
259884 
259885  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
259886  // This traversal helps support internal tools that call static member functions.
259887  // note: this function operates on the memory pools.
259890  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
259891  /* */
259892 
259893 
259894  public:
259895  /* name Memory Allocation Functions
259896  \brief Memory allocations functions ... incomplete-documentation
259897 
259898  These functions have been made public as part of the design, but they are suggested for internal use
259899  or by particularly knowledgable users for specialized tools or applications.
259900  */
259901  /* */
259902 
259913  virtual bool isInMemoryPool() override;
259914 
259925  virtual void checkDataMemberPointersIfInMemoryPool() override;
259926 
259927  // DQ (4/30/2006): Modified to be a const function.
259942  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
259943 
259953  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
259954 
259966  virtual long getChildIndex( SgNode* childNode ) const override;
259967 
259968  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
259969  // comment here (changed to be a C style comment and not be a doxygen comment).
259970  /* \brief Constructor for use by AST File I/O Mechanism
259971 
259972  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
259973  which obtained via fast binary file I/O from disk.
259974  */
259975  // SgIsOp( SgIsOpStorageClass& source );
259976 
259977 
259978 
259979 
259980 
259981  // JH (10/24/2005): methods added to support the ast file IO
259982  private:
259983 
259984  /* name AST Memory Allocation Support Functions
259985  \brief Memory allocations support....
259986 
259987  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
259988  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
259989  and support the AST File I/O Mechanism.
259990  */
259991  /* */
259992 
259993  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
259994  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
259995  that I use the same type everywhere, if any changes are made. THe second one declares the type
259996  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
259997  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
259998  a correspinding one in the AST_FILE_IO class!
259999  */
260000  // DQ (9/2/2015): This typedef is no longer used, we can't define the
260001  // comment here (changed to be a C style comment and not be a doxygen comment).
260002  /* \brief Typedef used for low level memory access.
260003  */
260004  // typedef unsigned char* TestType;
260005 
260006  // DQ (9/2/2015): This typedef is no longer used, we can't define the
260007  // comment here (changed to be a C style comment and not be a doxygen comment).
260008  /* \brief Typedef used to hold memory addresses as values.
260009  */
260010  // typedef unsigned long AddressType;
260011 
260012 
260013 
260014  // necessary, to have direct access to the p_freepointer and the private methods !
260016  friend class AST_FILE_IO;
260017 
260019  friend class SgIsOpStorageClass;
260020 
260022  friend class AstSpecificDataManagingClass;
260023 
260025  friend class AstSpecificDataManagingClassStorageClass;
260026 
260027  public:
260029  SgIsOp( const SgIsOpStorageClass& source );
260030 
260031  // private: // JJW hack
260032  /*
260033  name AST Memory Allocation Support Variables
260034  Memory allocations support variables
260035 
260036  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
260037  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
260038  and support the AST File I/O Mechanism.
260039  */
260040  /* */
260041 
260042  public:
260043 
260044  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
260045  // to current node (so that it will work cleanly with build functions to specify patterns).
260046  // virtual SgNode* addRegExpAttribute();
260052  SgIsOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
260053 
260054 // *** COMMON CODE SECTION ENDS HERE ***
260055 
260056 
260057 // End of memberFunctionString
260058 // Start of memberFunctionString
260059 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
260060 
260061  // the generated cast function
260062  // friend ROSE_DLL_API SgIsOp* isSgIsOp ( SgNode* s );
260063 
260064  typedef SgBinaryOp base_node_type;
260065 
260066 
260067 // End of memberFunctionString
260068 // Start of memberFunctionString
260069 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
260070 
260071  void post_construction_initialization() override;
260072 
260073 
260074 // End of memberFunctionString
260075 // Start of memberFunctionString
260076 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
260077 
260078  int precedence() const override { return 9; }
260079 
260080 
260081 // End of memberFunctionString
260082 
260083 
260084  public:
260085  virtual ~SgIsOp();
260086 
260087 
260088  public:
260089  SgIsOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
260090  SgIsOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
260091 
260092  protected:
260093 
260094 
260095 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
260096 
260097 
260098  };
260099 #endif
260100 
260101 // postdeclarations for SgIsOp
260102 
260103 /* #line 260104 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
260104 
260105 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
260106 
260107 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
260108 
260109 
260110 /* #line 260111 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
260111 
260112 
260113 
260114 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
260115 
260116 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
260117 // This code is automatically generated for each
260118 // terminal and non-terminal within the defined
260119 // grammar. There is a simple way to change the
260120 // code to fix bugs etc. See the ROSE README file
260121 // for directions.
260122 
260123 // tps: (02/22/2010): Adding DLL export requirements
260124 #include "rosedll.h"
260125 
260126 // predeclarations for SgIsNotOp
260127 
260128 /* #line 260129 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
260129 
260130 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
260131 
260132 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
260133 
260134 #if 1
260135 // Class Definition for SgIsNotOp
260136 class ROSE_DLL_API SgIsNotOp : public SgBinaryOp
260137  {
260138  public:
260139 
260140 
260141 /* #line 260142 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
260142 
260143  virtual SgNode* copy ( SgCopyHelp& help) const override;
260144 // Start of memberFunctionString
260145 /* #line 886 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
260146 
260147 /* #line 822 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
260148 
260149  // DQ (6/20/2006): Used for all relational operators
260150  virtual SgType* get_type() const override;
260151 
260152 
260153 
260154 
260155 // End of memberFunctionString
260156 // Start of memberFunctionString
260157 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
260158 
260159 // *** COMMON CODE SECTION BEGINS HERE ***
260160 
260161  public:
260162 
260163  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
260164  // and not required which is required to match the other aspects of the copy mechanism code generation.
260165  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
260166  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
260167  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
260168  // virtual SgNode* copy ( const SgCopyHelp & help) const;
260169 
260171  virtual std::string class_name() const override;
260172 
260174  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
260175 
260177  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
260178  // static const VariantT static_variant = V_SgIsNotOp;
260179  enum { static_variant = V_SgIsNotOp };
260180 
260181  /* the generated cast function */
260183  ROSE_DLL_API friend SgIsNotOp* isSgIsNotOp( SgNode * s );
260184 
260186  ROSE_DLL_API friend const SgIsNotOp* isSgIsNotOp( const SgNode * s );
260187 
260188  // ******************************************
260189  // * Memory Pool / New / Delete
260190  // ******************************************
260191 
260192  public:
260194  static const unsigned pool_size; //
260196  static std::vector<unsigned char *> pools; //
260198  static SgIsNotOp * next_node; //
260199 
260201  static unsigned long initializeStorageClassArray(SgIsNotOpStorageClass *); //
260202 
260204  static void clearMemoryPool(); //
260205  static void deleteMemoryPool(); //
260206 
260208  static void extendMemoryPoolForFileIO(); //
260209 
260211  static SgIsNotOp * getPointerFromGlobalIndex(unsigned long); //
260213  static SgIsNotOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
260214 
260216  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
260218  static void resetValidFreepointers(); //
260220  static unsigned long getNumberOfLastValidPointer(); //
260221 
260222 
260223 #if defined(INLINE_FUNCTIONS)
260224 
260225  inline void *operator new (size_t size);
260226 #else
260227 
260228  void *operator new (size_t size);
260229 #endif
260230 
260231  void operator delete (void* pointer, size_t size);
260232 
260233  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
260234  void operator delete (void* pointer)
260235  {
260236  // This is the generated delete operator...
260237  SgIsNotOp::operator delete (pointer,sizeof(SgIsNotOp));
260238  }
260239 
260241  static size_t numberOfNodes();
260242 
260244  static size_t memoryUsage();
260245 
260246  // End of scope which started in IR nodes specific code
260247  /* */
260248 
260249  /* name Internal Functions
260250  \brief Internal functions ... incomplete-documentation
260251 
260252  These functions have been made public as part of the design, but they are suggested for internal use
260253  or by particularly knowledgeable users for specialized tools or applications.
260254 
260255  \internal We could not make these private because they are required by user for special purposes. And
260256  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
260257 
260258  */
260259 
260260  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
260261  // overridden in every class by *generated* implementation
260263  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
260264  // MS: 06/28/02 container of names of variables or container indices
260265  // used used in the traversal to access AST successor nodes
260266  // overridden in every class by *generated* implementation
260269  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
260270 
260271  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
260272  // than all the vector copies. The implementation for these functions is generated for each class.
260274  virtual size_t get_numberOfTraversalSuccessors() override;
260276  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
260278  virtual size_t get_childIndex(SgNode *child) override;
260279 
260280 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
260281  // MS: 08/16/2002 method for generating RTI information
260283  virtual RTIReturnType roseRTI() override;
260284 #endif
260285  /* */
260286 
260287 
260288 
260289  /* name Deprecated Functions
260290  \brief Deprecated functions ... incomplete-documentation
260291 
260292  These functions have been deprecated from use.
260293  */
260294  /* */
260295 
260297  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
260298 
260299  // JJW (10/16/2008): Changed to a single function in Node.code, and put
260300  // getVariant() in #if 0 block to prevent confusing Doxygen
260301 #if 0
260302 
260303  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
260305  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
260306 #endif
260307  /* */
260308 
260309 
260310 
260311 
260312  public:
260313  /* name Traversal Support Functions
260314  \brief Traversal support functions ... incomplete-documentation
260315 
260316  These functions have been made public as part of the design, but they are suggested for internal use
260317  or by particularly knowledgable users for specialized tools or applications.
260318  */
260319  /* */
260320 
260321  // DQ (11/26/2005): Support for visitor pattern mechanims
260322  // (inferior to ROSE traversal mechanism, experimental).
260326 
260327  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
260329  virtual void accept (ROSE_VisitorPattern & visitor) override;
260330 
260331  // DQ (12/26/2005): Support for traversal based on the memory pool
260334  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
260335 
260338  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
260339 
260340  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
260341  // This traversal helps support internal tools that call static member functions.
260342  // note: this function operates on the memory pools.
260345  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
260346  /* */
260347 
260348 
260349  public:
260350  /* name Memory Allocation Functions
260351  \brief Memory allocations functions ... incomplete-documentation
260352 
260353  These functions have been made public as part of the design, but they are suggested for internal use
260354  or by particularly knowledgable users for specialized tools or applications.
260355  */
260356  /* */
260357 
260368  virtual bool isInMemoryPool() override;
260369 
260380  virtual void checkDataMemberPointersIfInMemoryPool() override;
260381 
260382  // DQ (4/30/2006): Modified to be a const function.
260397  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
260398 
260408  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
260409 
260421  virtual long getChildIndex( SgNode* childNode ) const override;
260422 
260423  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
260424  // comment here (changed to be a C style comment and not be a doxygen comment).
260425  /* \brief Constructor for use by AST File I/O Mechanism
260426 
260427  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
260428  which obtained via fast binary file I/O from disk.
260429  */
260430  // SgIsNotOp( SgIsNotOpStorageClass& source );
260431 
260432 
260433 
260434 
260435 
260436  // JH (10/24/2005): methods added to support the ast file IO
260437  private:
260438 
260439  /* name AST Memory Allocation Support Functions
260440  \brief Memory allocations support....
260441 
260442  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
260443  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
260444  and support the AST File I/O Mechanism.
260445  */
260446  /* */
260447 
260448  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
260449  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
260450  that I use the same type everywhere, if any changes are made. THe second one declares the type
260451  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
260452  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
260453  a correspinding one in the AST_FILE_IO class!
260454  */
260455  // DQ (9/2/2015): This typedef is no longer used, we can't define the
260456  // comment here (changed to be a C style comment and not be a doxygen comment).
260457  /* \brief Typedef used for low level memory access.
260458  */
260459  // typedef unsigned char* TestType;
260460 
260461  // DQ (9/2/2015): This typedef is no longer used, we can't define the
260462  // comment here (changed to be a C style comment and not be a doxygen comment).
260463  /* \brief Typedef used to hold memory addresses as values.
260464  */
260465  // typedef unsigned long AddressType;
260466 
260467 
260468 
260469  // necessary, to have direct access to the p_freepointer and the private methods !
260471  friend class AST_FILE_IO;
260472 
260474  friend class SgIsNotOpStorageClass;
260475 
260477  friend class AstSpecificDataManagingClass;
260478 
260480  friend class AstSpecificDataManagingClassStorageClass;
260481 
260482  public:
260484  SgIsNotOp( const SgIsNotOpStorageClass& source );
260485 
260486  // private: // JJW hack
260487  /*
260488  name AST Memory Allocation Support Variables
260489  Memory allocations support variables
260490 
260491  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
260492  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
260493  and support the AST File I/O Mechanism.
260494  */
260495  /* */
260496 
260497  public:
260498 
260499  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
260500  // to current node (so that it will work cleanly with build functions to specify patterns).
260501  // virtual SgNode* addRegExpAttribute();
260507  SgIsNotOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
260508 
260509 // *** COMMON CODE SECTION ENDS HERE ***
260510 
260511 
260512 // End of memberFunctionString
260513 // Start of memberFunctionString
260514 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
260515 
260516  // the generated cast function
260517  // friend ROSE_DLL_API SgIsNotOp* isSgIsNotOp ( SgNode* s );
260518 
260519  typedef SgBinaryOp base_node_type;
260520 
260521 
260522 // End of memberFunctionString
260523 // Start of memberFunctionString
260524 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
260525 
260526  void post_construction_initialization() override;
260527 
260528 
260529 // End of memberFunctionString
260530 // Start of memberFunctionString
260531 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
260532 
260533  int precedence() const override { return 9; }
260534 
260535 
260536 // End of memberFunctionString
260537 
260538 
260539  public:
260540  virtual ~SgIsNotOp();
260541 
260542 
260543  public:
260544  SgIsNotOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
260545  SgIsNotOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
260546 
260547  protected:
260548 
260549 
260550 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
260551 
260552 
260553  };
260554 #endif
260555 
260556 // postdeclarations for SgIsNotOp
260557 
260558 /* #line 260559 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
260559 
260560 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
260561 
260562 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
260563 
260564 
260565 /* #line 260566 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
260566 
260567 
260568 
260569 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
260570 
260571 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
260572 // This code is automatically generated for each
260573 // terminal and non-terminal within the defined
260574 // grammar. There is a simple way to change the
260575 // code to fix bugs etc. See the ROSE README file
260576 // for directions.
260577 
260578 // tps: (02/22/2010): Adding DLL export requirements
260579 #include "rosedll.h"
260580 
260581 // predeclarations for SgElementwiseOp
260582 
260583 /* #line 260584 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
260584 
260585 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
260586 
260587 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
260588 
260589 #if 1
260590 // Class Definition for SgElementwiseOp
260591 class ROSE_DLL_API SgElementwiseOp : public SgBinaryOp
260592  {
260593  public:
260594 
260595 
260596 /* #line 260597 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
260597 
260598  virtual SgNode* copy ( SgCopyHelp& help) const override;
260599 // Start of memberFunctionString
260600 /* #line 1425 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
260601 
260602 
260603 
260604  // virtual bool isLValue() const;
260605  // virtual bool isChildUsedAsLValue(const SgExpression* child) const; // INTERNAL Recursively call up the chain to answer the child
260606 
260607 
260608 
260609 // End of memberFunctionString
260610 // Start of memberFunctionString
260611 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
260612 
260613 // *** COMMON CODE SECTION BEGINS HERE ***
260614 
260615  public:
260616 
260617  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
260618  // and not required which is required to match the other aspects of the copy mechanism code generation.
260619  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
260620  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
260621  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
260622  // virtual SgNode* copy ( const SgCopyHelp & help) const;
260623 
260625  virtual std::string class_name() const override;
260626 
260628  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
260629 
260631  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
260632  // static const VariantT static_variant = V_SgElementwiseOp;
260633  enum { static_variant = V_SgElementwiseOp };
260634 
260635  /* the generated cast function */
260637  ROSE_DLL_API friend SgElementwiseOp* isSgElementwiseOp( SgNode * s );
260638 
260640  ROSE_DLL_API friend const SgElementwiseOp* isSgElementwiseOp( const SgNode * s );
260641 
260642  // ******************************************
260643  // * Memory Pool / New / Delete
260644  // ******************************************
260645 
260646  public:
260648  static const unsigned pool_size; //
260650  static std::vector<unsigned char *> pools; //
260652  static SgElementwiseOp * next_node; //
260653 
260655  static unsigned long initializeStorageClassArray(SgElementwiseOpStorageClass *); //
260656 
260658  static void clearMemoryPool(); //
260659  static void deleteMemoryPool(); //
260660 
260662  static void extendMemoryPoolForFileIO(); //
260663 
260665  static SgElementwiseOp * getPointerFromGlobalIndex(unsigned long); //
260667  static SgElementwiseOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
260668 
260670  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
260672  static void resetValidFreepointers(); //
260674  static unsigned long getNumberOfLastValidPointer(); //
260675 
260676 
260677 #if defined(INLINE_FUNCTIONS)
260678 
260679  inline void *operator new (size_t size);
260680 #else
260681 
260682  void *operator new (size_t size);
260683 #endif
260684 
260685  void operator delete (void* pointer, size_t size);
260686 
260687  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
260688  void operator delete (void* pointer)
260689  {
260690  // This is the generated delete operator...
260691  SgElementwiseOp::operator delete (pointer,sizeof(SgElementwiseOp));
260692  }
260693 
260695  static size_t numberOfNodes();
260696 
260698  static size_t memoryUsage();
260699 
260700  // End of scope which started in IR nodes specific code
260701  /* */
260702 
260703  /* name Internal Functions
260704  \brief Internal functions ... incomplete-documentation
260705 
260706  These functions have been made public as part of the design, but they are suggested for internal use
260707  or by particularly knowledgeable users for specialized tools or applications.
260708 
260709  \internal We could not make these private because they are required by user for special purposes. And
260710  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
260711 
260712  */
260713 
260714  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
260715  // overridden in every class by *generated* implementation
260717  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
260718  // MS: 06/28/02 container of names of variables or container indices
260719  // used used in the traversal to access AST successor nodes
260720  // overridden in every class by *generated* implementation
260723  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
260724 
260725  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
260726  // than all the vector copies. The implementation for these functions is generated for each class.
260728  virtual size_t get_numberOfTraversalSuccessors() override;
260730  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
260732  virtual size_t get_childIndex(SgNode *child) override;
260733 
260734 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
260735  // MS: 08/16/2002 method for generating RTI information
260737  virtual RTIReturnType roseRTI() override;
260738 #endif
260739  /* */
260740 
260741 
260742 
260743  /* name Deprecated Functions
260744  \brief Deprecated functions ... incomplete-documentation
260745 
260746  These functions have been deprecated from use.
260747  */
260748  /* */
260749 
260751  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
260752 
260753  // JJW (10/16/2008): Changed to a single function in Node.code, and put
260754  // getVariant() in #if 0 block to prevent confusing Doxygen
260755 #if 0
260756 
260757  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
260759  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
260760 #endif
260761  /* */
260762 
260763 
260764 
260765 
260766  public:
260767  /* name Traversal Support Functions
260768  \brief Traversal support functions ... incomplete-documentation
260769 
260770  These functions have been made public as part of the design, but they are suggested for internal use
260771  or by particularly knowledgable users for specialized tools or applications.
260772  */
260773  /* */
260774 
260775  // DQ (11/26/2005): Support for visitor pattern mechanims
260776  // (inferior to ROSE traversal mechanism, experimental).
260780 
260781  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
260783  virtual void accept (ROSE_VisitorPattern & visitor) override;
260784 
260785  // DQ (12/26/2005): Support for traversal based on the memory pool
260788  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
260789 
260792  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
260793 
260794  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
260795  // This traversal helps support internal tools that call static member functions.
260796  // note: this function operates on the memory pools.
260799  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
260800  /* */
260801 
260802 
260803  public:
260804  /* name Memory Allocation Functions
260805  \brief Memory allocations functions ... incomplete-documentation
260806 
260807  These functions have been made public as part of the design, but they are suggested for internal use
260808  or by particularly knowledgable users for specialized tools or applications.
260809  */
260810  /* */
260811 
260822  virtual bool isInMemoryPool() override;
260823 
260834  virtual void checkDataMemberPointersIfInMemoryPool() override;
260835 
260836  // DQ (4/30/2006): Modified to be a const function.
260851  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
260852 
260862  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
260863 
260875  virtual long getChildIndex( SgNode* childNode ) const override;
260876 
260877  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
260878  // comment here (changed to be a C style comment and not be a doxygen comment).
260879  /* \brief Constructor for use by AST File I/O Mechanism
260880 
260881  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
260882  which obtained via fast binary file I/O from disk.
260883  */
260884  // SgElementwiseOp( SgElementwiseOpStorageClass& source );
260885 
260886 
260887 
260888 
260889 
260890  // JH (10/24/2005): methods added to support the ast file IO
260891  private:
260892 
260893  /* name AST Memory Allocation Support Functions
260894  \brief Memory allocations support....
260895 
260896  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
260897  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
260898  and support the AST File I/O Mechanism.
260899  */
260900  /* */
260901 
260902  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
260903  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
260904  that I use the same type everywhere, if any changes are made. THe second one declares the type
260905  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
260906  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
260907  a correspinding one in the AST_FILE_IO class!
260908  */
260909  // DQ (9/2/2015): This typedef is no longer used, we can't define the
260910  // comment here (changed to be a C style comment and not be a doxygen comment).
260911  /* \brief Typedef used for low level memory access.
260912  */
260913  // typedef unsigned char* TestType;
260914 
260915  // DQ (9/2/2015): This typedef is no longer used, we can't define the
260916  // comment here (changed to be a C style comment and not be a doxygen comment).
260917  /* \brief Typedef used to hold memory addresses as values.
260918  */
260919  // typedef unsigned long AddressType;
260920 
260921 
260922 
260923  // necessary, to have direct access to the p_freepointer and the private methods !
260925  friend class AST_FILE_IO;
260926 
260928  friend class SgElementwiseOpStorageClass;
260929 
260931  friend class AstSpecificDataManagingClass;
260932 
260934  friend class AstSpecificDataManagingClassStorageClass;
260935 
260936  public:
260938  SgElementwiseOp( const SgElementwiseOpStorageClass& source );
260939 
260940  // private: // JJW hack
260941  /*
260942  name AST Memory Allocation Support Variables
260943  Memory allocations support variables
260944 
260945  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
260946  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
260947  and support the AST File I/O Mechanism.
260948  */
260949  /* */
260950 
260951  public:
260952 
260953  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
260954  // to current node (so that it will work cleanly with build functions to specify patterns).
260955  // virtual SgNode* addRegExpAttribute();
260962 
260963 // *** COMMON CODE SECTION ENDS HERE ***
260964 
260965 
260966 // End of memberFunctionString
260967 // Start of memberFunctionString
260968 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
260969 
260970  // the generated cast function
260971  // friend ROSE_DLL_API SgElementwiseOp* isSgElementwiseOp ( SgNode* s );
260972 
260973  typedef SgBinaryOp base_node_type;
260974 
260975 
260976 // End of memberFunctionString
260977 // Start of memberFunctionString
260978 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
260979 
260980  void post_construction_initialization() override;
260981 
260982 
260983 // End of memberFunctionString
260984 
260985 
260986  public:
260987  virtual ~SgElementwiseOp();
260988 
260989 
260990  public:
260991  SgElementwiseOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
260992  SgElementwiseOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
260993 
260994  protected:
260995 
260996 
260997 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
260998 
260999 
261000  };
261001 #endif
261002 
261003 // postdeclarations for SgElementwiseOp
261004 
261005 /* #line 261006 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
261006 
261007 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
261008 
261009 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
261010 
261011 
261012 /* #line 261013 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
261013 
261014 
261015 
261016 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
261017 
261018 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
261019 // This code is automatically generated for each
261020 // terminal and non-terminal within the defined
261021 // grammar. There is a simple way to change the
261022 // code to fix bugs etc. See the ROSE README file
261023 // for directions.
261024 
261025 // tps: (02/22/2010): Adding DLL export requirements
261026 #include "rosedll.h"
261027 
261028 // predeclarations for SgElementwiseMultiplyOp
261029 
261030 /* #line 261031 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
261031 
261032 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
261033 
261034 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
261035 
261036 #if 1
261037 // Class Definition for SgElementwiseMultiplyOp
261038 class ROSE_DLL_API SgElementwiseMultiplyOp : public SgElementwiseOp
261039  {
261040  public:
261041 
261042 
261043 /* #line 261044 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
261044 
261045  virtual SgNode* copy ( SgCopyHelp& help) const override;
261046 // Start of memberFunctionString
261047 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
261048 
261049 // *** COMMON CODE SECTION BEGINS HERE ***
261050 
261051  public:
261052 
261053  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
261054  // and not required which is required to match the other aspects of the copy mechanism code generation.
261055  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
261056  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
261057  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
261058  // virtual SgNode* copy ( const SgCopyHelp & help) const;
261059 
261061  virtual std::string class_name() const override;
261062 
261064  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
261065 
261067  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
261068  // static const VariantT static_variant = V_SgElementwiseMultiplyOp;
261069  enum { static_variant = V_SgElementwiseMultiplyOp };
261070 
261071  /* the generated cast function */
261073  ROSE_DLL_API friend SgElementwiseMultiplyOp* isSgElementwiseMultiplyOp( SgNode * s );
261074 
261076  ROSE_DLL_API friend const SgElementwiseMultiplyOp* isSgElementwiseMultiplyOp( const SgNode * s );
261077 
261078  // ******************************************
261079  // * Memory Pool / New / Delete
261080  // ******************************************
261081 
261082  public:
261084  static const unsigned pool_size; //
261086  static std::vector<unsigned char *> pools; //
261088  static SgElementwiseMultiplyOp * next_node; //
261089 
261091  static unsigned long initializeStorageClassArray(SgElementwiseMultiplyOpStorageClass *); //
261092 
261094  static void clearMemoryPool(); //
261095  static void deleteMemoryPool(); //
261096 
261098  static void extendMemoryPoolForFileIO(); //
261099 
261101  static SgElementwiseMultiplyOp * getPointerFromGlobalIndex(unsigned long); //
261103  static SgElementwiseMultiplyOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
261104 
261106  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
261108  static void resetValidFreepointers(); //
261110  static unsigned long getNumberOfLastValidPointer(); //
261111 
261112 
261113 #if defined(INLINE_FUNCTIONS)
261114 
261115  inline void *operator new (size_t size);
261116 #else
261117 
261118  void *operator new (size_t size);
261119 #endif
261120 
261121  void operator delete (void* pointer, size_t size);
261122 
261123  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
261124  void operator delete (void* pointer)
261125  {
261126  // This is the generated delete operator...
261127  SgElementwiseMultiplyOp::operator delete (pointer,sizeof(SgElementwiseMultiplyOp));
261128  }
261129 
261131  static size_t numberOfNodes();
261132 
261134  static size_t memoryUsage();
261135 
261136  // End of scope which started in IR nodes specific code
261137  /* */
261138 
261139  /* name Internal Functions
261140  \brief Internal functions ... incomplete-documentation
261141 
261142  These functions have been made public as part of the design, but they are suggested for internal use
261143  or by particularly knowledgeable users for specialized tools or applications.
261144 
261145  \internal We could not make these private because they are required by user for special purposes. And
261146  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
261147 
261148  */
261149 
261150  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
261151  // overridden in every class by *generated* implementation
261153  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
261154  // MS: 06/28/02 container of names of variables or container indices
261155  // used used in the traversal to access AST successor nodes
261156  // overridden in every class by *generated* implementation
261159  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
261160 
261161  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
261162  // than all the vector copies. The implementation for these functions is generated for each class.
261164  virtual size_t get_numberOfTraversalSuccessors() override;
261166  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
261168  virtual size_t get_childIndex(SgNode *child) override;
261169 
261170 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
261171  // MS: 08/16/2002 method for generating RTI information
261173  virtual RTIReturnType roseRTI() override;
261174 #endif
261175  /* */
261176 
261177 
261178 
261179  /* name Deprecated Functions
261180  \brief Deprecated functions ... incomplete-documentation
261181 
261182  These functions have been deprecated from use.
261183  */
261184  /* */
261185 
261187  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
261188 
261189  // JJW (10/16/2008): Changed to a single function in Node.code, and put
261190  // getVariant() in #if 0 block to prevent confusing Doxygen
261191 #if 0
261192 
261193  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
261195  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
261196 #endif
261197  /* */
261198 
261199 
261200 
261201 
261202  public:
261203  /* name Traversal Support Functions
261204  \brief Traversal support functions ... incomplete-documentation
261205 
261206  These functions have been made public as part of the design, but they are suggested for internal use
261207  or by particularly knowledgable users for specialized tools or applications.
261208  */
261209  /* */
261210 
261211  // DQ (11/26/2005): Support for visitor pattern mechanims
261212  // (inferior to ROSE traversal mechanism, experimental).
261216 
261217  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
261219  virtual void accept (ROSE_VisitorPattern & visitor) override;
261220 
261221  // DQ (12/26/2005): Support for traversal based on the memory pool
261224  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
261225 
261228  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
261229 
261230  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
261231  // This traversal helps support internal tools that call static member functions.
261232  // note: this function operates on the memory pools.
261235  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
261236  /* */
261237 
261238 
261239  public:
261240  /* name Memory Allocation Functions
261241  \brief Memory allocations functions ... incomplete-documentation
261242 
261243  These functions have been made public as part of the design, but they are suggested for internal use
261244  or by particularly knowledgable users for specialized tools or applications.
261245  */
261246  /* */
261247 
261258  virtual bool isInMemoryPool() override;
261259 
261270  virtual void checkDataMemberPointersIfInMemoryPool() override;
261271 
261272  // DQ (4/30/2006): Modified to be a const function.
261287  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
261288 
261298  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
261299 
261311  virtual long getChildIndex( SgNode* childNode ) const override;
261312 
261313  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
261314  // comment here (changed to be a C style comment and not be a doxygen comment).
261315  /* \brief Constructor for use by AST File I/O Mechanism
261316 
261317  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
261318  which obtained via fast binary file I/O from disk.
261319  */
261320  // SgElementwiseMultiplyOp( SgElementwiseMultiplyOpStorageClass& source );
261321 
261322 
261323 
261324 
261325 
261326  // JH (10/24/2005): methods added to support the ast file IO
261327  private:
261328 
261329  /* name AST Memory Allocation Support Functions
261330  \brief Memory allocations support....
261331 
261332  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
261333  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
261334  and support the AST File I/O Mechanism.
261335  */
261336  /* */
261337 
261338  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
261339  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
261340  that I use the same type everywhere, if any changes are made. THe second one declares the type
261341  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
261342  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
261343  a correspinding one in the AST_FILE_IO class!
261344  */
261345  // DQ (9/2/2015): This typedef is no longer used, we can't define the
261346  // comment here (changed to be a C style comment and not be a doxygen comment).
261347  /* \brief Typedef used for low level memory access.
261348  */
261349  // typedef unsigned char* TestType;
261350 
261351  // DQ (9/2/2015): This typedef is no longer used, we can't define the
261352  // comment here (changed to be a C style comment and not be a doxygen comment).
261353  /* \brief Typedef used to hold memory addresses as values.
261354  */
261355  // typedef unsigned long AddressType;
261356 
261357 
261358 
261359  // necessary, to have direct access to the p_freepointer and the private methods !
261361  friend class AST_FILE_IO;
261362 
261364  friend class SgElementwiseMultiplyOpStorageClass;
261365 
261367  friend class AstSpecificDataManagingClass;
261368 
261370  friend class AstSpecificDataManagingClassStorageClass;
261371 
261372  public:
261374  SgElementwiseMultiplyOp( const SgElementwiseMultiplyOpStorageClass& source );
261375 
261376  // private: // JJW hack
261377  /*
261378  name AST Memory Allocation Support Variables
261379  Memory allocations support variables
261380 
261381  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
261382  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
261383  and support the AST File I/O Mechanism.
261384  */
261385  /* */
261386 
261387  public:
261388 
261389  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
261390  // to current node (so that it will work cleanly with build functions to specify patterns).
261391  // virtual SgNode* addRegExpAttribute();
261398 
261399 // *** COMMON CODE SECTION ENDS HERE ***
261400 
261401 
261402 // End of memberFunctionString
261403 // Start of memberFunctionString
261404 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
261405 
261406  // the generated cast function
261407  // friend ROSE_DLL_API SgElementwiseMultiplyOp* isSgElementwiseMultiplyOp ( SgNode* s );
261408 
261410 
261411 
261412 // End of memberFunctionString
261413 // Start of memberFunctionString
261414 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
261415 
261416  void post_construction_initialization() override;
261417 
261418 
261419 // End of memberFunctionString
261420 // Start of memberFunctionString
261421 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
261422 
261423  int precedence() const override { return 13; }
261424 
261425 
261426 // End of memberFunctionString
261427 
261428 
261429  public:
261430  virtual ~SgElementwiseMultiplyOp();
261431 
261432 
261433  public:
261434  SgElementwiseMultiplyOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
261435  SgElementwiseMultiplyOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
261436 
261437  protected:
261438 
261439 
261440 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
261441 
261442 
261443  };
261444 #endif
261445 
261446 // postdeclarations for SgElementwiseMultiplyOp
261447 
261448 /* #line 261449 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
261449 
261450 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
261451 
261452 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
261453 
261454 
261455 /* #line 261456 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
261456 
261457 
261458 
261459 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
261460 
261461 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
261462 // This code is automatically generated for each
261463 // terminal and non-terminal within the defined
261464 // grammar. There is a simple way to change the
261465 // code to fix bugs etc. See the ROSE README file
261466 // for directions.
261467 
261468 // tps: (02/22/2010): Adding DLL export requirements
261469 #include "rosedll.h"
261470 
261471 // predeclarations for SgElementwisePowerOp
261472 
261473 /* #line 261474 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
261474 
261475 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
261476 
261477 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
261478 
261479 #if 1
261480 // Class Definition for SgElementwisePowerOp
261481 class ROSE_DLL_API SgElementwisePowerOp : public SgElementwiseOp
261482  {
261483  public:
261484 
261485 
261486 /* #line 261487 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
261487 
261488  virtual SgNode* copy ( SgCopyHelp& help) const override;
261489 // Start of memberFunctionString
261490 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
261491 
261492 // *** COMMON CODE SECTION BEGINS HERE ***
261493 
261494  public:
261495 
261496  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
261497  // and not required which is required to match the other aspects of the copy mechanism code generation.
261498  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
261499  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
261500  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
261501  // virtual SgNode* copy ( const SgCopyHelp & help) const;
261502 
261504  virtual std::string class_name() const override;
261505 
261507  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
261508 
261510  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
261511  // static const VariantT static_variant = V_SgElementwisePowerOp;
261512  enum { static_variant = V_SgElementwisePowerOp };
261513 
261514  /* the generated cast function */
261516  ROSE_DLL_API friend SgElementwisePowerOp* isSgElementwisePowerOp( SgNode * s );
261517 
261519  ROSE_DLL_API friend const SgElementwisePowerOp* isSgElementwisePowerOp( const SgNode * s );
261520 
261521  // ******************************************
261522  // * Memory Pool / New / Delete
261523  // ******************************************
261524 
261525  public:
261527  static const unsigned pool_size; //
261529  static std::vector<unsigned char *> pools; //
261531  static SgElementwisePowerOp * next_node; //
261532 
261534  static unsigned long initializeStorageClassArray(SgElementwisePowerOpStorageClass *); //
261535 
261537  static void clearMemoryPool(); //
261538  static void deleteMemoryPool(); //
261539 
261541  static void extendMemoryPoolForFileIO(); //
261542 
261544  static SgElementwisePowerOp * getPointerFromGlobalIndex(unsigned long); //
261546  static SgElementwisePowerOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
261547 
261549  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
261551  static void resetValidFreepointers(); //
261553  static unsigned long getNumberOfLastValidPointer(); //
261554 
261555 
261556 #if defined(INLINE_FUNCTIONS)
261557 
261558  inline void *operator new (size_t size);
261559 #else
261560 
261561  void *operator new (size_t size);
261562 #endif
261563 
261564  void operator delete (void* pointer, size_t size);
261565 
261566  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
261567  void operator delete (void* pointer)
261568  {
261569  // This is the generated delete operator...
261570  SgElementwisePowerOp::operator delete (pointer,sizeof(SgElementwisePowerOp));
261571  }
261572 
261574  static size_t numberOfNodes();
261575 
261577  static size_t memoryUsage();
261578 
261579  // End of scope which started in IR nodes specific code
261580  /* */
261581 
261582  /* name Internal Functions
261583  \brief Internal functions ... incomplete-documentation
261584 
261585  These functions have been made public as part of the design, but they are suggested for internal use
261586  or by particularly knowledgeable users for specialized tools or applications.
261587 
261588  \internal We could not make these private because they are required by user for special purposes. And
261589  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
261590 
261591  */
261592 
261593  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
261594  // overridden in every class by *generated* implementation
261596  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
261597  // MS: 06/28/02 container of names of variables or container indices
261598  // used used in the traversal to access AST successor nodes
261599  // overridden in every class by *generated* implementation
261602  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
261603 
261604  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
261605  // than all the vector copies. The implementation for these functions is generated for each class.
261607  virtual size_t get_numberOfTraversalSuccessors() override;
261609  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
261611  virtual size_t get_childIndex(SgNode *child) override;
261612 
261613 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
261614  // MS: 08/16/2002 method for generating RTI information
261616  virtual RTIReturnType roseRTI() override;
261617 #endif
261618  /* */
261619 
261620 
261621 
261622  /* name Deprecated Functions
261623  \brief Deprecated functions ... incomplete-documentation
261624 
261625  These functions have been deprecated from use.
261626  */
261627  /* */
261628 
261630  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
261631 
261632  // JJW (10/16/2008): Changed to a single function in Node.code, and put
261633  // getVariant() in #if 0 block to prevent confusing Doxygen
261634 #if 0
261635 
261636  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
261638  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
261639 #endif
261640  /* */
261641 
261642 
261643 
261644 
261645  public:
261646  /* name Traversal Support Functions
261647  \brief Traversal support functions ... incomplete-documentation
261648 
261649  These functions have been made public as part of the design, but they are suggested for internal use
261650  or by particularly knowledgable users for specialized tools or applications.
261651  */
261652  /* */
261653 
261654  // DQ (11/26/2005): Support for visitor pattern mechanims
261655  // (inferior to ROSE traversal mechanism, experimental).
261659 
261660  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
261662  virtual void accept (ROSE_VisitorPattern & visitor) override;
261663 
261664  // DQ (12/26/2005): Support for traversal based on the memory pool
261667  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
261668 
261671  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
261672 
261673  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
261674  // This traversal helps support internal tools that call static member functions.
261675  // note: this function operates on the memory pools.
261678  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
261679  /* */
261680 
261681 
261682  public:
261683  /* name Memory Allocation Functions
261684  \brief Memory allocations functions ... incomplete-documentation
261685 
261686  These functions have been made public as part of the design, but they are suggested for internal use
261687  or by particularly knowledgable users for specialized tools or applications.
261688  */
261689  /* */
261690 
261701  virtual bool isInMemoryPool() override;
261702 
261713  virtual void checkDataMemberPointersIfInMemoryPool() override;
261714 
261715  // DQ (4/30/2006): Modified to be a const function.
261730  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
261731 
261741  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
261742 
261754  virtual long getChildIndex( SgNode* childNode ) const override;
261755 
261756  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
261757  // comment here (changed to be a C style comment and not be a doxygen comment).
261758  /* \brief Constructor for use by AST File I/O Mechanism
261759 
261760  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
261761  which obtained via fast binary file I/O from disk.
261762  */
261763  // SgElementwisePowerOp( SgElementwisePowerOpStorageClass& source );
261764 
261765 
261766 
261767 
261768 
261769  // JH (10/24/2005): methods added to support the ast file IO
261770  private:
261771 
261772  /* name AST Memory Allocation Support Functions
261773  \brief Memory allocations support....
261774 
261775  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
261776  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
261777  and support the AST File I/O Mechanism.
261778  */
261779  /* */
261780 
261781  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
261782  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
261783  that I use the same type everywhere, if any changes are made. THe second one declares the type
261784  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
261785  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
261786  a correspinding one in the AST_FILE_IO class!
261787  */
261788  // DQ (9/2/2015): This typedef is no longer used, we can't define the
261789  // comment here (changed to be a C style comment and not be a doxygen comment).
261790  /* \brief Typedef used for low level memory access.
261791  */
261792  // typedef unsigned char* TestType;
261793 
261794  // DQ (9/2/2015): This typedef is no longer used, we can't define the
261795  // comment here (changed to be a C style comment and not be a doxygen comment).
261796  /* \brief Typedef used to hold memory addresses as values.
261797  */
261798  // typedef unsigned long AddressType;
261799 
261800 
261801 
261802  // necessary, to have direct access to the p_freepointer and the private methods !
261804  friend class AST_FILE_IO;
261805 
261807  friend class SgElementwisePowerOpStorageClass;
261808 
261810  friend class AstSpecificDataManagingClass;
261811 
261813  friend class AstSpecificDataManagingClassStorageClass;
261814 
261815  public:
261817  SgElementwisePowerOp( const SgElementwisePowerOpStorageClass& source );
261818 
261819  // private: // JJW hack
261820  /*
261821  name AST Memory Allocation Support Variables
261822  Memory allocations support variables
261823 
261824  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
261825  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
261826  and support the AST File I/O Mechanism.
261827  */
261828  /* */
261829 
261830  public:
261831 
261832  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
261833  // to current node (so that it will work cleanly with build functions to specify patterns).
261834  // virtual SgNode* addRegExpAttribute();
261841 
261842 // *** COMMON CODE SECTION ENDS HERE ***
261843 
261844 
261845 // End of memberFunctionString
261846 // Start of memberFunctionString
261847 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
261848 
261849  // the generated cast function
261850  // friend ROSE_DLL_API SgElementwisePowerOp* isSgElementwisePowerOp ( SgNode* s );
261851 
261853 
261854 
261855 // End of memberFunctionString
261856 // Start of memberFunctionString
261857 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
261858 
261859  void post_construction_initialization() override;
261860 
261861 
261862 // End of memberFunctionString
261863 // Start of memberFunctionString
261864 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
261865 
261866  int precedence() const override { return 14; }
261867 
261868 
261869 // End of memberFunctionString
261870 
261871 
261872  public:
261873  virtual ~SgElementwisePowerOp();
261874 
261875 
261876  public:
261877  SgElementwisePowerOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
261878  SgElementwisePowerOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
261879 
261880  protected:
261881 
261882 
261883 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
261884 
261885 
261886  };
261887 #endif
261888 
261889 // postdeclarations for SgElementwisePowerOp
261890 
261891 /* #line 261892 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
261892 
261893 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
261894 
261895 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
261896 
261897 
261898 /* #line 261899 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
261899 
261900 
261901 
261902 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
261903 
261904 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
261905 // This code is automatically generated for each
261906 // terminal and non-terminal within the defined
261907 // grammar. There is a simple way to change the
261908 // code to fix bugs etc. See the ROSE README file
261909 // for directions.
261910 
261911 // tps: (02/22/2010): Adding DLL export requirements
261912 #include "rosedll.h"
261913 
261914 // predeclarations for SgElementwiseLeftDivideOp
261915 
261916 /* #line 261917 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
261917 
261918 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
261919 
261920 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
261921 
261922 #if 1
261923 // Class Definition for SgElementwiseLeftDivideOp
261924 class ROSE_DLL_API SgElementwiseLeftDivideOp : public SgElementwiseOp
261925  {
261926  public:
261927 
261928 
261929 /* #line 261930 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
261930 
261931  virtual SgNode* copy ( SgCopyHelp& help) const override;
261932 // Start of memberFunctionString
261933 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
261934 
261935 // *** COMMON CODE SECTION BEGINS HERE ***
261936 
261937  public:
261938 
261939  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
261940  // and not required which is required to match the other aspects of the copy mechanism code generation.
261941  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
261942  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
261943  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
261944  // virtual SgNode* copy ( const SgCopyHelp & help) const;
261945 
261947  virtual std::string class_name() const override;
261948 
261950  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
261951 
261953  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
261954  // static const VariantT static_variant = V_SgElementwiseLeftDivideOp;
261955  enum { static_variant = V_SgElementwiseLeftDivideOp };
261956 
261957  /* the generated cast function */
261959  ROSE_DLL_API friend SgElementwiseLeftDivideOp* isSgElementwiseLeftDivideOp( SgNode * s );
261960 
261962  ROSE_DLL_API friend const SgElementwiseLeftDivideOp* isSgElementwiseLeftDivideOp( const SgNode * s );
261963 
261964  // ******************************************
261965  // * Memory Pool / New / Delete
261966  // ******************************************
261967 
261968  public:
261970  static const unsigned pool_size; //
261972  static std::vector<unsigned char *> pools; //
261974  static SgElementwiseLeftDivideOp * next_node; //
261975 
261977  static unsigned long initializeStorageClassArray(SgElementwiseLeftDivideOpStorageClass *); //
261978 
261980  static void clearMemoryPool(); //
261981  static void deleteMemoryPool(); //
261982 
261984  static void extendMemoryPoolForFileIO(); //
261985 
261987  static SgElementwiseLeftDivideOp * getPointerFromGlobalIndex(unsigned long); //
261989  static SgElementwiseLeftDivideOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
261990 
261992  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
261994  static void resetValidFreepointers(); //
261996  static unsigned long getNumberOfLastValidPointer(); //
261997 
261998 
261999 #if defined(INLINE_FUNCTIONS)
262000 
262001  inline void *operator new (size_t size);
262002 #else
262003 
262004  void *operator new (size_t size);
262005 #endif
262006 
262007  void operator delete (void* pointer, size_t size);
262008 
262009  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
262010  void operator delete (void* pointer)
262011  {
262012  // This is the generated delete operator...
262013  SgElementwiseLeftDivideOp::operator delete (pointer,sizeof(SgElementwiseLeftDivideOp));
262014  }
262015 
262017  static size_t numberOfNodes();
262018 
262020  static size_t memoryUsage();
262021 
262022  // End of scope which started in IR nodes specific code
262023  /* */
262024 
262025  /* name Internal Functions
262026  \brief Internal functions ... incomplete-documentation
262027 
262028  These functions have been made public as part of the design, but they are suggested for internal use
262029  or by particularly knowledgeable users for specialized tools or applications.
262030 
262031  \internal We could not make these private because they are required by user for special purposes. And
262032  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
262033 
262034  */
262035 
262036  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
262037  // overridden in every class by *generated* implementation
262039  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
262040  // MS: 06/28/02 container of names of variables or container indices
262041  // used used in the traversal to access AST successor nodes
262042  // overridden in every class by *generated* implementation
262045  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
262046 
262047  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
262048  // than all the vector copies. The implementation for these functions is generated for each class.
262050  virtual size_t get_numberOfTraversalSuccessors() override;
262052  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
262054  virtual size_t get_childIndex(SgNode *child) override;
262055 
262056 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
262057  // MS: 08/16/2002 method for generating RTI information
262059  virtual RTIReturnType roseRTI() override;
262060 #endif
262061  /* */
262062 
262063 
262064 
262065  /* name Deprecated Functions
262066  \brief Deprecated functions ... incomplete-documentation
262067 
262068  These functions have been deprecated from use.
262069  */
262070  /* */
262071 
262073  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
262074 
262075  // JJW (10/16/2008): Changed to a single function in Node.code, and put
262076  // getVariant() in #if 0 block to prevent confusing Doxygen
262077 #if 0
262078 
262079  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
262081  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
262082 #endif
262083  /* */
262084 
262085 
262086 
262087 
262088  public:
262089  /* name Traversal Support Functions
262090  \brief Traversal support functions ... incomplete-documentation
262091 
262092  These functions have been made public as part of the design, but they are suggested for internal use
262093  or by particularly knowledgable users for specialized tools or applications.
262094  */
262095  /* */
262096 
262097  // DQ (11/26/2005): Support for visitor pattern mechanims
262098  // (inferior to ROSE traversal mechanism, experimental).
262102 
262103  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
262105  virtual void accept (ROSE_VisitorPattern & visitor) override;
262106 
262107  // DQ (12/26/2005): Support for traversal based on the memory pool
262110  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
262111 
262114  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
262115 
262116  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
262117  // This traversal helps support internal tools that call static member functions.
262118  // note: this function operates on the memory pools.
262121  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
262122  /* */
262123 
262124 
262125  public:
262126  /* name Memory Allocation Functions
262127  \brief Memory allocations functions ... incomplete-documentation
262128 
262129  These functions have been made public as part of the design, but they are suggested for internal use
262130  or by particularly knowledgable users for specialized tools or applications.
262131  */
262132  /* */
262133 
262144  virtual bool isInMemoryPool() override;
262145 
262156  virtual void checkDataMemberPointersIfInMemoryPool() override;
262157 
262158  // DQ (4/30/2006): Modified to be a const function.
262173  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
262174 
262184  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
262185 
262197  virtual long getChildIndex( SgNode* childNode ) const override;
262198 
262199  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
262200  // comment here (changed to be a C style comment and not be a doxygen comment).
262201  /* \brief Constructor for use by AST File I/O Mechanism
262202 
262203  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
262204  which obtained via fast binary file I/O from disk.
262205  */
262206  // SgElementwiseLeftDivideOp( SgElementwiseLeftDivideOpStorageClass& source );
262207 
262208 
262209 
262210 
262211 
262212  // JH (10/24/2005): methods added to support the ast file IO
262213  private:
262214 
262215  /* name AST Memory Allocation Support Functions
262216  \brief Memory allocations support....
262217 
262218  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
262219  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
262220  and support the AST File I/O Mechanism.
262221  */
262222  /* */
262223 
262224  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
262225  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
262226  that I use the same type everywhere, if any changes are made. THe second one declares the type
262227  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
262228  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
262229  a correspinding one in the AST_FILE_IO class!
262230  */
262231  // DQ (9/2/2015): This typedef is no longer used, we can't define the
262232  // comment here (changed to be a C style comment and not be a doxygen comment).
262233  /* \brief Typedef used for low level memory access.
262234  */
262235  // typedef unsigned char* TestType;
262236 
262237  // DQ (9/2/2015): This typedef is no longer used, we can't define the
262238  // comment here (changed to be a C style comment and not be a doxygen comment).
262239  /* \brief Typedef used to hold memory addresses as values.
262240  */
262241  // typedef unsigned long AddressType;
262242 
262243 
262244 
262245  // necessary, to have direct access to the p_freepointer and the private methods !
262247  friend class AST_FILE_IO;
262248 
262250  friend class SgElementwiseLeftDivideOpStorageClass;
262251 
262253  friend class AstSpecificDataManagingClass;
262254 
262256  friend class AstSpecificDataManagingClassStorageClass;
262257 
262258  public:
262260  SgElementwiseLeftDivideOp( const SgElementwiseLeftDivideOpStorageClass& source );
262261 
262262  // private: // JJW hack
262263  /*
262264  name AST Memory Allocation Support Variables
262265  Memory allocations support variables
262266 
262267  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
262268  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
262269  and support the AST File I/O Mechanism.
262270  */
262271  /* */
262272 
262273  public:
262274 
262275  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
262276  // to current node (so that it will work cleanly with build functions to specify patterns).
262277  // virtual SgNode* addRegExpAttribute();
262284 
262285 // *** COMMON CODE SECTION ENDS HERE ***
262286 
262287 
262288 // End of memberFunctionString
262289 // Start of memberFunctionString
262290 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
262291 
262292  // the generated cast function
262293  // friend ROSE_DLL_API SgElementwiseLeftDivideOp* isSgElementwiseLeftDivideOp ( SgNode* s );
262294 
262296 
262297 
262298 // End of memberFunctionString
262299 // Start of memberFunctionString
262300 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
262301 
262302  void post_construction_initialization() override;
262303 
262304 
262305 // End of memberFunctionString
262306 // Start of memberFunctionString
262307 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
262308 
262309  int precedence() const override { return 13; }
262310 
262311 
262312 // End of memberFunctionString
262313 
262314 
262315  public:
262316  virtual ~SgElementwiseLeftDivideOp();
262317 
262318 
262319  public:
262320  SgElementwiseLeftDivideOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
262321  SgElementwiseLeftDivideOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
262322 
262323  protected:
262324 
262325 
262326 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
262327 
262328 
262329  };
262330 #endif
262331 
262332 // postdeclarations for SgElementwiseLeftDivideOp
262333 
262334 /* #line 262335 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
262335 
262336 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
262337 
262338 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
262339 
262340 
262341 /* #line 262342 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
262342 
262343 
262344 
262345 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
262346 
262347 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
262348 // This code is automatically generated for each
262349 // terminal and non-terminal within the defined
262350 // grammar. There is a simple way to change the
262351 // code to fix bugs etc. See the ROSE README file
262352 // for directions.
262353 
262354 // tps: (02/22/2010): Adding DLL export requirements
262355 #include "rosedll.h"
262356 
262357 // predeclarations for SgElementwiseDivideOp
262358 
262359 /* #line 262360 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
262360 
262361 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
262362 
262363 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
262364 
262365 #if 1
262366 // Class Definition for SgElementwiseDivideOp
262367 class ROSE_DLL_API SgElementwiseDivideOp : public SgElementwiseOp
262368  {
262369  public:
262370 
262371 
262372 /* #line 262373 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
262373 
262374  virtual SgNode* copy ( SgCopyHelp& help) const override;
262375 // Start of memberFunctionString
262376 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
262377 
262378 // *** COMMON CODE SECTION BEGINS HERE ***
262379 
262380  public:
262381 
262382  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
262383  // and not required which is required to match the other aspects of the copy mechanism code generation.
262384  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
262385  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
262386  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
262387  // virtual SgNode* copy ( const SgCopyHelp & help) const;
262388 
262390  virtual std::string class_name() const override;
262391 
262393  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
262394 
262396  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
262397  // static const VariantT static_variant = V_SgElementwiseDivideOp;
262398  enum { static_variant = V_SgElementwiseDivideOp };
262399 
262400  /* the generated cast function */
262402  ROSE_DLL_API friend SgElementwiseDivideOp* isSgElementwiseDivideOp( SgNode * s );
262403 
262405  ROSE_DLL_API friend const SgElementwiseDivideOp* isSgElementwiseDivideOp( const SgNode * s );
262406 
262407  // ******************************************
262408  // * Memory Pool / New / Delete
262409  // ******************************************
262410 
262411  public:
262413  static const unsigned pool_size; //
262415  static std::vector<unsigned char *> pools; //
262417  static SgElementwiseDivideOp * next_node; //
262418 
262420  static unsigned long initializeStorageClassArray(SgElementwiseDivideOpStorageClass *); //
262421 
262423  static void clearMemoryPool(); //
262424  static void deleteMemoryPool(); //
262425 
262427  static void extendMemoryPoolForFileIO(); //
262428 
262430  static SgElementwiseDivideOp * getPointerFromGlobalIndex(unsigned long); //
262432  static SgElementwiseDivideOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
262433 
262435  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
262437  static void resetValidFreepointers(); //
262439  static unsigned long getNumberOfLastValidPointer(); //
262440 
262441 
262442 #if defined(INLINE_FUNCTIONS)
262443 
262444  inline void *operator new (size_t size);
262445 #else
262446 
262447  void *operator new (size_t size);
262448 #endif
262449 
262450  void operator delete (void* pointer, size_t size);
262451 
262452  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
262453  void operator delete (void* pointer)
262454  {
262455  // This is the generated delete operator...
262456  SgElementwiseDivideOp::operator delete (pointer,sizeof(SgElementwiseDivideOp));
262457  }
262458 
262460  static size_t numberOfNodes();
262461 
262463  static size_t memoryUsage();
262464 
262465  // End of scope which started in IR nodes specific code
262466  /* */
262467 
262468  /* name Internal Functions
262469  \brief Internal functions ... incomplete-documentation
262470 
262471  These functions have been made public as part of the design, but they are suggested for internal use
262472  or by particularly knowledgeable users for specialized tools or applications.
262473 
262474  \internal We could not make these private because they are required by user for special purposes. And
262475  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
262476 
262477  */
262478 
262479  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
262480  // overridden in every class by *generated* implementation
262482  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
262483  // MS: 06/28/02 container of names of variables or container indices
262484  // used used in the traversal to access AST successor nodes
262485  // overridden in every class by *generated* implementation
262488  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
262489 
262490  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
262491  // than all the vector copies. The implementation for these functions is generated for each class.
262493  virtual size_t get_numberOfTraversalSuccessors() override;
262495  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
262497  virtual size_t get_childIndex(SgNode *child) override;
262498 
262499 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
262500  // MS: 08/16/2002 method for generating RTI information
262502  virtual RTIReturnType roseRTI() override;
262503 #endif
262504  /* */
262505 
262506 
262507 
262508  /* name Deprecated Functions
262509  \brief Deprecated functions ... incomplete-documentation
262510 
262511  These functions have been deprecated from use.
262512  */
262513  /* */
262514 
262516  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
262517 
262518  // JJW (10/16/2008): Changed to a single function in Node.code, and put
262519  // getVariant() in #if 0 block to prevent confusing Doxygen
262520 #if 0
262521 
262522  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
262524  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
262525 #endif
262526  /* */
262527 
262528 
262529 
262530 
262531  public:
262532  /* name Traversal Support Functions
262533  \brief Traversal support functions ... incomplete-documentation
262534 
262535  These functions have been made public as part of the design, but they are suggested for internal use
262536  or by particularly knowledgable users for specialized tools or applications.
262537  */
262538  /* */
262539 
262540  // DQ (11/26/2005): Support for visitor pattern mechanims
262541  // (inferior to ROSE traversal mechanism, experimental).
262545 
262546  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
262548  virtual void accept (ROSE_VisitorPattern & visitor) override;
262549 
262550  // DQ (12/26/2005): Support for traversal based on the memory pool
262553  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
262554 
262557  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
262558 
262559  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
262560  // This traversal helps support internal tools that call static member functions.
262561  // note: this function operates on the memory pools.
262564  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
262565  /* */
262566 
262567 
262568  public:
262569  /* name Memory Allocation Functions
262570  \brief Memory allocations functions ... incomplete-documentation
262571 
262572  These functions have been made public as part of the design, but they are suggested for internal use
262573  or by particularly knowledgable users for specialized tools or applications.
262574  */
262575  /* */
262576 
262587  virtual bool isInMemoryPool() override;
262588 
262599  virtual void checkDataMemberPointersIfInMemoryPool() override;
262600 
262601  // DQ (4/30/2006): Modified to be a const function.
262616  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
262617 
262627  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
262628 
262640  virtual long getChildIndex( SgNode* childNode ) const override;
262641 
262642  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
262643  // comment here (changed to be a C style comment and not be a doxygen comment).
262644  /* \brief Constructor for use by AST File I/O Mechanism
262645 
262646  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
262647  which obtained via fast binary file I/O from disk.
262648  */
262649  // SgElementwiseDivideOp( SgElementwiseDivideOpStorageClass& source );
262650 
262651 
262652 
262653 
262654 
262655  // JH (10/24/2005): methods added to support the ast file IO
262656  private:
262657 
262658  /* name AST Memory Allocation Support Functions
262659  \brief Memory allocations support....
262660 
262661  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
262662  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
262663  and support the AST File I/O Mechanism.
262664  */
262665  /* */
262666 
262667  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
262668  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
262669  that I use the same type everywhere, if any changes are made. THe second one declares the type
262670  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
262671  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
262672  a correspinding one in the AST_FILE_IO class!
262673  */
262674  // DQ (9/2/2015): This typedef is no longer used, we can't define the
262675  // comment here (changed to be a C style comment and not be a doxygen comment).
262676  /* \brief Typedef used for low level memory access.
262677  */
262678  // typedef unsigned char* TestType;
262679 
262680  // DQ (9/2/2015): This typedef is no longer used, we can't define the
262681  // comment here (changed to be a C style comment and not be a doxygen comment).
262682  /* \brief Typedef used to hold memory addresses as values.
262683  */
262684  // typedef unsigned long AddressType;
262685 
262686 
262687 
262688  // necessary, to have direct access to the p_freepointer and the private methods !
262690  friend class AST_FILE_IO;
262691 
262693  friend class SgElementwiseDivideOpStorageClass;
262694 
262696  friend class AstSpecificDataManagingClass;
262697 
262699  friend class AstSpecificDataManagingClassStorageClass;
262700 
262701  public:
262703  SgElementwiseDivideOp( const SgElementwiseDivideOpStorageClass& source );
262704 
262705  // private: // JJW hack
262706  /*
262707  name AST Memory Allocation Support Variables
262708  Memory allocations support variables
262709 
262710  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
262711  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
262712  and support the AST File I/O Mechanism.
262713  */
262714  /* */
262715 
262716  public:
262717 
262718  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
262719  // to current node (so that it will work cleanly with build functions to specify patterns).
262720  // virtual SgNode* addRegExpAttribute();
262727 
262728 // *** COMMON CODE SECTION ENDS HERE ***
262729 
262730 
262731 // End of memberFunctionString
262732 // Start of memberFunctionString
262733 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
262734 
262735  // the generated cast function
262736  // friend ROSE_DLL_API SgElementwiseDivideOp* isSgElementwiseDivideOp ( SgNode* s );
262737 
262739 
262740 
262741 // End of memberFunctionString
262742 // Start of memberFunctionString
262743 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
262744 
262745  void post_construction_initialization() override;
262746 
262747 
262748 // End of memberFunctionString
262749 // Start of memberFunctionString
262750 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
262751 
262752  int precedence() const override { return 13; }
262753 
262754 
262755 // End of memberFunctionString
262756 
262757 
262758  public:
262759  virtual ~SgElementwiseDivideOp();
262760 
262761 
262762  public:
262763  SgElementwiseDivideOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
262764  SgElementwiseDivideOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
262765 
262766  protected:
262767 
262768 
262769 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
262770 
262771 
262772  };
262773 #endif
262774 
262775 // postdeclarations for SgElementwiseDivideOp
262776 
262777 /* #line 262778 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
262778 
262779 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
262780 
262781 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
262782 
262783 
262784 /* #line 262785 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
262785 
262786 
262787 
262788 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
262789 
262790 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
262791 // This code is automatically generated for each
262792 // terminal and non-terminal within the defined
262793 // grammar. There is a simple way to change the
262794 // code to fix bugs etc. See the ROSE README file
262795 // for directions.
262796 
262797 // tps: (02/22/2010): Adding DLL export requirements
262798 #include "rosedll.h"
262799 
262800 // predeclarations for SgElementwiseAddOp
262801 
262802 /* #line 262803 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
262803 
262804 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
262805 
262806 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
262807 
262808 #if 1
262809 // Class Definition for SgElementwiseAddOp
262810 class ROSE_DLL_API SgElementwiseAddOp : public SgElementwiseOp
262811  {
262812  public:
262813 
262814 
262815 /* #line 262816 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
262816 
262817  virtual SgNode* copy ( SgCopyHelp& help) const override;
262818 // Start of memberFunctionString
262819 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
262820 
262821 // *** COMMON CODE SECTION BEGINS HERE ***
262822 
262823  public:
262824 
262825  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
262826  // and not required which is required to match the other aspects of the copy mechanism code generation.
262827  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
262828  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
262829  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
262830  // virtual SgNode* copy ( const SgCopyHelp & help) const;
262831 
262833  virtual std::string class_name() const override;
262834 
262836  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
262837 
262839  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
262840  // static const VariantT static_variant = V_SgElementwiseAddOp;
262841  enum { static_variant = V_SgElementwiseAddOp };
262842 
262843  /* the generated cast function */
262845  ROSE_DLL_API friend SgElementwiseAddOp* isSgElementwiseAddOp( SgNode * s );
262846 
262848  ROSE_DLL_API friend const SgElementwiseAddOp* isSgElementwiseAddOp( const SgNode * s );
262849 
262850  // ******************************************
262851  // * Memory Pool / New / Delete
262852  // ******************************************
262853 
262854  public:
262856  static const unsigned pool_size; //
262858  static std::vector<unsigned char *> pools; //
262860  static SgElementwiseAddOp * next_node; //
262861 
262863  static unsigned long initializeStorageClassArray(SgElementwiseAddOpStorageClass *); //
262864 
262866  static void clearMemoryPool(); //
262867  static void deleteMemoryPool(); //
262868 
262870  static void extendMemoryPoolForFileIO(); //
262871 
262873  static SgElementwiseAddOp * getPointerFromGlobalIndex(unsigned long); //
262875  static SgElementwiseAddOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
262876 
262878  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
262880  static void resetValidFreepointers(); //
262882  static unsigned long getNumberOfLastValidPointer(); //
262883 
262884 
262885 #if defined(INLINE_FUNCTIONS)
262886 
262887  inline void *operator new (size_t size);
262888 #else
262889 
262890  void *operator new (size_t size);
262891 #endif
262892 
262893  void operator delete (void* pointer, size_t size);
262894 
262895  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
262896  void operator delete (void* pointer)
262897  {
262898  // This is the generated delete operator...
262899  SgElementwiseAddOp::operator delete (pointer,sizeof(SgElementwiseAddOp));
262900  }
262901 
262903  static size_t numberOfNodes();
262904 
262906  static size_t memoryUsage();
262907 
262908  // End of scope which started in IR nodes specific code
262909  /* */
262910 
262911  /* name Internal Functions
262912  \brief Internal functions ... incomplete-documentation
262913 
262914  These functions have been made public as part of the design, but they are suggested for internal use
262915  or by particularly knowledgeable users for specialized tools or applications.
262916 
262917  \internal We could not make these private because they are required by user for special purposes. And
262918  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
262919 
262920  */
262921 
262922  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
262923  // overridden in every class by *generated* implementation
262925  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
262926  // MS: 06/28/02 container of names of variables or container indices
262927  // used used in the traversal to access AST successor nodes
262928  // overridden in every class by *generated* implementation
262931  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
262932 
262933  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
262934  // than all the vector copies. The implementation for these functions is generated for each class.
262936  virtual size_t get_numberOfTraversalSuccessors() override;
262938  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
262940  virtual size_t get_childIndex(SgNode *child) override;
262941 
262942 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
262943  // MS: 08/16/2002 method for generating RTI information
262945  virtual RTIReturnType roseRTI() override;
262946 #endif
262947  /* */
262948 
262949 
262950 
262951  /* name Deprecated Functions
262952  \brief Deprecated functions ... incomplete-documentation
262953 
262954  These functions have been deprecated from use.
262955  */
262956  /* */
262957 
262959  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
262960 
262961  // JJW (10/16/2008): Changed to a single function in Node.code, and put
262962  // getVariant() in #if 0 block to prevent confusing Doxygen
262963 #if 0
262964 
262965  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
262967  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
262968 #endif
262969  /* */
262970 
262971 
262972 
262973 
262974  public:
262975  /* name Traversal Support Functions
262976  \brief Traversal support functions ... incomplete-documentation
262977 
262978  These functions have been made public as part of the design, but they are suggested for internal use
262979  or by particularly knowledgable users for specialized tools or applications.
262980  */
262981  /* */
262982 
262983  // DQ (11/26/2005): Support for visitor pattern mechanims
262984  // (inferior to ROSE traversal mechanism, experimental).
262988 
262989  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
262991  virtual void accept (ROSE_VisitorPattern & visitor) override;
262992 
262993  // DQ (12/26/2005): Support for traversal based on the memory pool
262996  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
262997 
263000  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
263001 
263002  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
263003  // This traversal helps support internal tools that call static member functions.
263004  // note: this function operates on the memory pools.
263007  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
263008  /* */
263009 
263010 
263011  public:
263012  /* name Memory Allocation Functions
263013  \brief Memory allocations functions ... incomplete-documentation
263014 
263015  These functions have been made public as part of the design, but they are suggested for internal use
263016  or by particularly knowledgable users for specialized tools or applications.
263017  */
263018  /* */
263019 
263030  virtual bool isInMemoryPool() override;
263031 
263042  virtual void checkDataMemberPointersIfInMemoryPool() override;
263043 
263044  // DQ (4/30/2006): Modified to be a const function.
263059  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
263060 
263070  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
263071 
263083  virtual long getChildIndex( SgNode* childNode ) const override;
263084 
263085  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
263086  // comment here (changed to be a C style comment and not be a doxygen comment).
263087  /* \brief Constructor for use by AST File I/O Mechanism
263088 
263089  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
263090  which obtained via fast binary file I/O from disk.
263091  */
263092  // SgElementwiseAddOp( SgElementwiseAddOpStorageClass& source );
263093 
263094 
263095 
263096 
263097 
263098  // JH (10/24/2005): methods added to support the ast file IO
263099  private:
263100 
263101  /* name AST Memory Allocation Support Functions
263102  \brief Memory allocations support....
263103 
263104  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
263105  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
263106  and support the AST File I/O Mechanism.
263107  */
263108  /* */
263109 
263110  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
263111  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
263112  that I use the same type everywhere, if any changes are made. THe second one declares the type
263113  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
263114  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
263115  a correspinding one in the AST_FILE_IO class!
263116  */
263117  // DQ (9/2/2015): This typedef is no longer used, we can't define the
263118  // comment here (changed to be a C style comment and not be a doxygen comment).
263119  /* \brief Typedef used for low level memory access.
263120  */
263121  // typedef unsigned char* TestType;
263122 
263123  // DQ (9/2/2015): This typedef is no longer used, we can't define the
263124  // comment here (changed to be a C style comment and not be a doxygen comment).
263125  /* \brief Typedef used to hold memory addresses as values.
263126  */
263127  // typedef unsigned long AddressType;
263128 
263129 
263130 
263131  // necessary, to have direct access to the p_freepointer and the private methods !
263133  friend class AST_FILE_IO;
263134 
263136  friend class SgElementwiseAddOpStorageClass;
263137 
263139  friend class AstSpecificDataManagingClass;
263140 
263142  friend class AstSpecificDataManagingClassStorageClass;
263143 
263144  public:
263146  SgElementwiseAddOp( const SgElementwiseAddOpStorageClass& source );
263147 
263148  // private: // JJW hack
263149  /*
263150  name AST Memory Allocation Support Variables
263151  Memory allocations support variables
263152 
263153  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
263154  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
263155  and support the AST File I/O Mechanism.
263156  */
263157  /* */
263158 
263159  public:
263160 
263161  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
263162  // to current node (so that it will work cleanly with build functions to specify patterns).
263163  // virtual SgNode* addRegExpAttribute();
263170 
263171 // *** COMMON CODE SECTION ENDS HERE ***
263172 
263173 
263174 // End of memberFunctionString
263175 // Start of memberFunctionString
263176 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
263177 
263178  // the generated cast function
263179  // friend ROSE_DLL_API SgElementwiseAddOp* isSgElementwiseAddOp ( SgNode* s );
263180 
263182 
263183 
263184 // End of memberFunctionString
263185 // Start of memberFunctionString
263186 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
263187 
263188  void post_construction_initialization() override;
263189 
263190 
263191 // End of memberFunctionString
263192 // Start of memberFunctionString
263193 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
263194 
263195  int precedence() const override { return 12; }
263196 
263197 
263198 // End of memberFunctionString
263199 
263200 
263201  public:
263202  virtual ~SgElementwiseAddOp();
263203 
263204 
263205  public:
263206  SgElementwiseAddOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
263207  SgElementwiseAddOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
263208 
263209  protected:
263210 
263211 
263212 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
263213 
263214 
263215  };
263216 #endif
263217 
263218 // postdeclarations for SgElementwiseAddOp
263219 
263220 /* #line 263221 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
263221 
263222 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
263223 
263224 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
263225 
263226 
263227 /* #line 263228 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
263228 
263229 
263230 
263231 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
263232 
263233 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
263234 // This code is automatically generated for each
263235 // terminal and non-terminal within the defined
263236 // grammar. There is a simple way to change the
263237 // code to fix bugs etc. See the ROSE README file
263238 // for directions.
263239 
263240 // tps: (02/22/2010): Adding DLL export requirements
263241 #include "rosedll.h"
263242 
263243 // predeclarations for SgElementwiseSubtractOp
263244 
263245 /* #line 263246 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
263246 
263247 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
263248 
263249 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
263250 
263251 #if 1
263252 // Class Definition for SgElementwiseSubtractOp
263253 class ROSE_DLL_API SgElementwiseSubtractOp : public SgElementwiseOp
263254  {
263255  public:
263256 
263257 
263258 /* #line 263259 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
263259 
263260  virtual SgNode* copy ( SgCopyHelp& help) const override;
263261 // Start of memberFunctionString
263262 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
263263 
263264 // *** COMMON CODE SECTION BEGINS HERE ***
263265 
263266  public:
263267 
263268  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
263269  // and not required which is required to match the other aspects of the copy mechanism code generation.
263270  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
263271  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
263272  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
263273  // virtual SgNode* copy ( const SgCopyHelp & help) const;
263274 
263276  virtual std::string class_name() const override;
263277 
263279  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
263280 
263282  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
263283  // static const VariantT static_variant = V_SgElementwiseSubtractOp;
263284  enum { static_variant = V_SgElementwiseSubtractOp };
263285 
263286  /* the generated cast function */
263288  ROSE_DLL_API friend SgElementwiseSubtractOp* isSgElementwiseSubtractOp( SgNode * s );
263289 
263291  ROSE_DLL_API friend const SgElementwiseSubtractOp* isSgElementwiseSubtractOp( const SgNode * s );
263292 
263293  // ******************************************
263294  // * Memory Pool / New / Delete
263295  // ******************************************
263296 
263297  public:
263299  static const unsigned pool_size; //
263301  static std::vector<unsigned char *> pools; //
263303  static SgElementwiseSubtractOp * next_node; //
263304 
263306  static unsigned long initializeStorageClassArray(SgElementwiseSubtractOpStorageClass *); //
263307 
263309  static void clearMemoryPool(); //
263310  static void deleteMemoryPool(); //
263311 
263313  static void extendMemoryPoolForFileIO(); //
263314 
263316  static SgElementwiseSubtractOp * getPointerFromGlobalIndex(unsigned long); //
263318  static SgElementwiseSubtractOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
263319 
263321  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
263323  static void resetValidFreepointers(); //
263325  static unsigned long getNumberOfLastValidPointer(); //
263326 
263327 
263328 #if defined(INLINE_FUNCTIONS)
263329 
263330  inline void *operator new (size_t size);
263331 #else
263332 
263333  void *operator new (size_t size);
263334 #endif
263335 
263336  void operator delete (void* pointer, size_t size);
263337 
263338  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
263339  void operator delete (void* pointer)
263340  {
263341  // This is the generated delete operator...
263342  SgElementwiseSubtractOp::operator delete (pointer,sizeof(SgElementwiseSubtractOp));
263343  }
263344 
263346  static size_t numberOfNodes();
263347 
263349  static size_t memoryUsage();
263350 
263351  // End of scope which started in IR nodes specific code
263352  /* */
263353 
263354  /* name Internal Functions
263355  \brief Internal functions ... incomplete-documentation
263356 
263357  These functions have been made public as part of the design, but they are suggested for internal use
263358  or by particularly knowledgeable users for specialized tools or applications.
263359 
263360  \internal We could not make these private because they are required by user for special purposes. And
263361  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
263362 
263363  */
263364 
263365  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
263366  // overridden in every class by *generated* implementation
263368  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
263369  // MS: 06/28/02 container of names of variables or container indices
263370  // used used in the traversal to access AST successor nodes
263371  // overridden in every class by *generated* implementation
263374  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
263375 
263376  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
263377  // than all the vector copies. The implementation for these functions is generated for each class.
263379  virtual size_t get_numberOfTraversalSuccessors() override;
263381  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
263383  virtual size_t get_childIndex(SgNode *child) override;
263384 
263385 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
263386  // MS: 08/16/2002 method for generating RTI information
263388  virtual RTIReturnType roseRTI() override;
263389 #endif
263390  /* */
263391 
263392 
263393 
263394  /* name Deprecated Functions
263395  \brief Deprecated functions ... incomplete-documentation
263396 
263397  These functions have been deprecated from use.
263398  */
263399  /* */
263400 
263402  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
263403 
263404  // JJW (10/16/2008): Changed to a single function in Node.code, and put
263405  // getVariant() in #if 0 block to prevent confusing Doxygen
263406 #if 0
263407 
263408  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
263410  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
263411 #endif
263412  /* */
263413 
263414 
263415 
263416 
263417  public:
263418  /* name Traversal Support Functions
263419  \brief Traversal support functions ... incomplete-documentation
263420 
263421  These functions have been made public as part of the design, but they are suggested for internal use
263422  or by particularly knowledgable users for specialized tools or applications.
263423  */
263424  /* */
263425 
263426  // DQ (11/26/2005): Support for visitor pattern mechanims
263427  // (inferior to ROSE traversal mechanism, experimental).
263431 
263432  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
263434  virtual void accept (ROSE_VisitorPattern & visitor) override;
263435 
263436  // DQ (12/26/2005): Support for traversal based on the memory pool
263439  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
263440 
263443  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
263444 
263445  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
263446  // This traversal helps support internal tools that call static member functions.
263447  // note: this function operates on the memory pools.
263450  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
263451  /* */
263452 
263453 
263454  public:
263455  /* name Memory Allocation Functions
263456  \brief Memory allocations functions ... incomplete-documentation
263457 
263458  These functions have been made public as part of the design, but they are suggested for internal use
263459  or by particularly knowledgable users for specialized tools or applications.
263460  */
263461  /* */
263462 
263473  virtual bool isInMemoryPool() override;
263474 
263485  virtual void checkDataMemberPointersIfInMemoryPool() override;
263486 
263487  // DQ (4/30/2006): Modified to be a const function.
263502  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
263503 
263513  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
263514 
263526  virtual long getChildIndex( SgNode* childNode ) const override;
263527 
263528  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
263529  // comment here (changed to be a C style comment and not be a doxygen comment).
263530  /* \brief Constructor for use by AST File I/O Mechanism
263531 
263532  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
263533  which obtained via fast binary file I/O from disk.
263534  */
263535  // SgElementwiseSubtractOp( SgElementwiseSubtractOpStorageClass& source );
263536 
263537 
263538 
263539 
263540 
263541  // JH (10/24/2005): methods added to support the ast file IO
263542  private:
263543 
263544  /* name AST Memory Allocation Support Functions
263545  \brief Memory allocations support....
263546 
263547  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
263548  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
263549  and support the AST File I/O Mechanism.
263550  */
263551  /* */
263552 
263553  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
263554  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
263555  that I use the same type everywhere, if any changes are made. THe second one declares the type
263556  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
263557  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
263558  a correspinding one in the AST_FILE_IO class!
263559  */
263560  // DQ (9/2/2015): This typedef is no longer used, we can't define the
263561  // comment here (changed to be a C style comment and not be a doxygen comment).
263562  /* \brief Typedef used for low level memory access.
263563  */
263564  // typedef unsigned char* TestType;
263565 
263566  // DQ (9/2/2015): This typedef is no longer used, we can't define the
263567  // comment here (changed to be a C style comment and not be a doxygen comment).
263568  /* \brief Typedef used to hold memory addresses as values.
263569  */
263570  // typedef unsigned long AddressType;
263571 
263572 
263573 
263574  // necessary, to have direct access to the p_freepointer and the private methods !
263576  friend class AST_FILE_IO;
263577 
263579  friend class SgElementwiseSubtractOpStorageClass;
263580 
263582  friend class AstSpecificDataManagingClass;
263583 
263585  friend class AstSpecificDataManagingClassStorageClass;
263586 
263587  public:
263589  SgElementwiseSubtractOp( const SgElementwiseSubtractOpStorageClass& source );
263590 
263591  // private: // JJW hack
263592  /*
263593  name AST Memory Allocation Support Variables
263594  Memory allocations support variables
263595 
263596  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
263597  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
263598  and support the AST File I/O Mechanism.
263599  */
263600  /* */
263601 
263602  public:
263603 
263604  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
263605  // to current node (so that it will work cleanly with build functions to specify patterns).
263606  // virtual SgNode* addRegExpAttribute();
263613 
263614 // *** COMMON CODE SECTION ENDS HERE ***
263615 
263616 
263617 // End of memberFunctionString
263618 // Start of memberFunctionString
263619 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
263620 
263621  // the generated cast function
263622  // friend ROSE_DLL_API SgElementwiseSubtractOp* isSgElementwiseSubtractOp ( SgNode* s );
263623 
263625 
263626 
263627 // End of memberFunctionString
263628 // Start of memberFunctionString
263629 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
263630 
263631  void post_construction_initialization() override;
263632 
263633 
263634 // End of memberFunctionString
263635 // Start of memberFunctionString
263636 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
263637 
263638  int precedence() const override { return 12; }
263639 
263640 
263641 // End of memberFunctionString
263642 
263643 
263644  public:
263645  virtual ~SgElementwiseSubtractOp();
263646 
263647 
263648  public:
263649  SgElementwiseSubtractOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
263650  SgElementwiseSubtractOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
263651 
263652  protected:
263653 
263654 
263655 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
263656 
263657 
263658  };
263659 #endif
263660 
263661 // postdeclarations for SgElementwiseSubtractOp
263662 
263663 /* #line 263664 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
263664 
263665 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
263666 
263667 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
263668 
263669 
263670 /* #line 263671 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
263671 
263672 
263673 
263674 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
263675 
263676 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
263677 // This code is automatically generated for each
263678 // terminal and non-terminal within the defined
263679 // grammar. There is a simple way to change the
263680 // code to fix bugs etc. See the ROSE README file
263681 // for directions.
263682 
263683 // tps: (02/22/2010): Adding DLL export requirements
263684 #include "rosedll.h"
263685 
263686 // predeclarations for SgPowerOp
263687 
263688 /* #line 263689 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
263689 
263690 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
263691 
263692 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
263693 
263694 #if 1
263695 // Class Definition for SgPowerOp
263696 class ROSE_DLL_API SgPowerOp : public SgBinaryOp
263697  {
263698  public:
263699 
263700 
263701 /* #line 263702 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
263702 
263703  virtual SgNode* copy ( SgCopyHelp& help) const override;
263704 // Start of memberFunctionString
263705 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
263706 
263707 // *** COMMON CODE SECTION BEGINS HERE ***
263708 
263709  public:
263710 
263711  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
263712  // and not required which is required to match the other aspects of the copy mechanism code generation.
263713  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
263714  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
263715  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
263716  // virtual SgNode* copy ( const SgCopyHelp & help) const;
263717 
263719  virtual std::string class_name() const override;
263720 
263722  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
263723 
263725  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
263726  // static const VariantT static_variant = V_SgPowerOp;
263727  enum { static_variant = V_SgPowerOp };
263728 
263729  /* the generated cast function */
263731  ROSE_DLL_API friend SgPowerOp* isSgPowerOp( SgNode * s );
263732 
263734  ROSE_DLL_API friend const SgPowerOp* isSgPowerOp( const SgNode * s );
263735 
263736  // ******************************************
263737  // * Memory Pool / New / Delete
263738  // ******************************************
263739 
263740  public:
263742  static const unsigned pool_size; //
263744  static std::vector<unsigned char *> pools; //
263746  static SgPowerOp * next_node; //
263747 
263749  static unsigned long initializeStorageClassArray(SgPowerOpStorageClass *); //
263750 
263752  static void clearMemoryPool(); //
263753  static void deleteMemoryPool(); //
263754 
263756  static void extendMemoryPoolForFileIO(); //
263757 
263759  static SgPowerOp * getPointerFromGlobalIndex(unsigned long); //
263761  static SgPowerOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
263762 
263764  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
263766  static void resetValidFreepointers(); //
263768  static unsigned long getNumberOfLastValidPointer(); //
263769 
263770 
263771 #if defined(INLINE_FUNCTIONS)
263772 
263773  inline void *operator new (size_t size);
263774 #else
263775 
263776  void *operator new (size_t size);
263777 #endif
263778 
263779  void operator delete (void* pointer, size_t size);
263780 
263781  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
263782  void operator delete (void* pointer)
263783  {
263784  // This is the generated delete operator...
263785  SgPowerOp::operator delete (pointer,sizeof(SgPowerOp));
263786  }
263787 
263789  static size_t numberOfNodes();
263790 
263792  static size_t memoryUsage();
263793 
263794  // End of scope which started in IR nodes specific code
263795  /* */
263796 
263797  /* name Internal Functions
263798  \brief Internal functions ... incomplete-documentation
263799 
263800  These functions have been made public as part of the design, but they are suggested for internal use
263801  or by particularly knowledgeable users for specialized tools or applications.
263802 
263803  \internal We could not make these private because they are required by user for special purposes. And
263804  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
263805 
263806  */
263807 
263808  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
263809  // overridden in every class by *generated* implementation
263811  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
263812  // MS: 06/28/02 container of names of variables or container indices
263813  // used used in the traversal to access AST successor nodes
263814  // overridden in every class by *generated* implementation
263817  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
263818 
263819  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
263820  // than all the vector copies. The implementation for these functions is generated for each class.
263822  virtual size_t get_numberOfTraversalSuccessors() override;
263824  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
263826  virtual size_t get_childIndex(SgNode *child) override;
263827 
263828 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
263829  // MS: 08/16/2002 method for generating RTI information
263831  virtual RTIReturnType roseRTI() override;
263832 #endif
263833  /* */
263834 
263835 
263836 
263837  /* name Deprecated Functions
263838  \brief Deprecated functions ... incomplete-documentation
263839 
263840  These functions have been deprecated from use.
263841  */
263842  /* */
263843 
263845  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
263846 
263847  // JJW (10/16/2008): Changed to a single function in Node.code, and put
263848  // getVariant() in #if 0 block to prevent confusing Doxygen
263849 #if 0
263850 
263851  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
263853  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
263854 #endif
263855  /* */
263856 
263857 
263858 
263859 
263860  public:
263861  /* name Traversal Support Functions
263862  \brief Traversal support functions ... incomplete-documentation
263863 
263864  These functions have been made public as part of the design, but they are suggested for internal use
263865  or by particularly knowledgable users for specialized tools or applications.
263866  */
263867  /* */
263868 
263869  // DQ (11/26/2005): Support for visitor pattern mechanims
263870  // (inferior to ROSE traversal mechanism, experimental).
263874 
263875  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
263877  virtual void accept (ROSE_VisitorPattern & visitor) override;
263878 
263879  // DQ (12/26/2005): Support for traversal based on the memory pool
263882  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
263883 
263886  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
263887 
263888  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
263889  // This traversal helps support internal tools that call static member functions.
263890  // note: this function operates on the memory pools.
263893  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
263894  /* */
263895 
263896 
263897  public:
263898  /* name Memory Allocation Functions
263899  \brief Memory allocations functions ... incomplete-documentation
263900 
263901  These functions have been made public as part of the design, but they are suggested for internal use
263902  or by particularly knowledgable users for specialized tools or applications.
263903  */
263904  /* */
263905 
263916  virtual bool isInMemoryPool() override;
263917 
263928  virtual void checkDataMemberPointersIfInMemoryPool() override;
263929 
263930  // DQ (4/30/2006): Modified to be a const function.
263945  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
263946 
263956  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
263957 
263969  virtual long getChildIndex( SgNode* childNode ) const override;
263970 
263971  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
263972  // comment here (changed to be a C style comment and not be a doxygen comment).
263973  /* \brief Constructor for use by AST File I/O Mechanism
263974 
263975  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
263976  which obtained via fast binary file I/O from disk.
263977  */
263978  // SgPowerOp( SgPowerOpStorageClass& source );
263979 
263980 
263981 
263982 
263983 
263984  // JH (10/24/2005): methods added to support the ast file IO
263985  private:
263986 
263987  /* name AST Memory Allocation Support Functions
263988  \brief Memory allocations support....
263989 
263990  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
263991  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
263992  and support the AST File I/O Mechanism.
263993  */
263994  /* */
263995 
263996  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
263997  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
263998  that I use the same type everywhere, if any changes are made. THe second one declares the type
263999  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
264000  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
264001  a correspinding one in the AST_FILE_IO class!
264002  */
264003  // DQ (9/2/2015): This typedef is no longer used, we can't define the
264004  // comment here (changed to be a C style comment and not be a doxygen comment).
264005  /* \brief Typedef used for low level memory access.
264006  */
264007  // typedef unsigned char* TestType;
264008 
264009  // DQ (9/2/2015): This typedef is no longer used, we can't define the
264010  // comment here (changed to be a C style comment and not be a doxygen comment).
264011  /* \brief Typedef used to hold memory addresses as values.
264012  */
264013  // typedef unsigned long AddressType;
264014 
264015 
264016 
264017  // necessary, to have direct access to the p_freepointer and the private methods !
264019  friend class AST_FILE_IO;
264020 
264022  friend class SgPowerOpStorageClass;
264023 
264025  friend class AstSpecificDataManagingClass;
264026 
264028  friend class AstSpecificDataManagingClassStorageClass;
264029 
264030  public:
264032  SgPowerOp( const SgPowerOpStorageClass& source );
264033 
264034  // private: // JJW hack
264035  /*
264036  name AST Memory Allocation Support Variables
264037  Memory allocations support variables
264038 
264039  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
264040  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
264041  and support the AST File I/O Mechanism.
264042  */
264043  /* */
264044 
264045  public:
264046 
264047  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
264048  // to current node (so that it will work cleanly with build functions to specify patterns).
264049  // virtual SgNode* addRegExpAttribute();
264055  SgPowerOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
264056 
264057 // *** COMMON CODE SECTION ENDS HERE ***
264058 
264059 
264060 // End of memberFunctionString
264061 // Start of memberFunctionString
264062 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
264063 
264064  // the generated cast function
264065  // friend ROSE_DLL_API SgPowerOp* isSgPowerOp ( SgNode* s );
264066 
264067  typedef SgBinaryOp base_node_type;
264068 
264069 
264070 // End of memberFunctionString
264071 // Start of memberFunctionString
264072 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
264073 
264074  void post_construction_initialization() override;
264075 
264076 
264077 // End of memberFunctionString
264078 // Start of memberFunctionString
264079 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
264080 
264081  int precedence() const override { return 14; }
264082 
264083 
264084 // End of memberFunctionString
264085 
264086 
264087  public:
264088  virtual ~SgPowerOp();
264089 
264090 
264091  public:
264092  SgPowerOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
264093  SgPowerOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
264094 
264095  protected:
264096 
264097 
264098 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
264099 
264100 
264101  };
264102 #endif
264103 
264104 // postdeclarations for SgPowerOp
264105 
264106 /* #line 264107 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
264107 
264108 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
264109 
264110 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
264111 
264112 
264113 /* #line 264114 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
264114 
264115 
264116 
264117 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
264118 
264119 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
264120 // This code is automatically generated for each
264121 // terminal and non-terminal within the defined
264122 // grammar. There is a simple way to change the
264123 // code to fix bugs etc. See the ROSE README file
264124 // for directions.
264125 
264126 // tps: (02/22/2010): Adding DLL export requirements
264127 #include "rosedll.h"
264128 
264129 // predeclarations for SgLeftDivideOp
264130 
264131 /* #line 264132 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
264132 
264133 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
264134 
264135 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
264136 
264137 #if 1
264138 // Class Definition for SgLeftDivideOp
264139 class ROSE_DLL_API SgLeftDivideOp : public SgBinaryOp
264140  {
264141  public:
264142 
264143 
264144 /* #line 264145 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
264145 
264146  virtual SgNode* copy ( SgCopyHelp& help) const override;
264147 // Start of memberFunctionString
264148 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
264149 
264150 // *** COMMON CODE SECTION BEGINS HERE ***
264151 
264152  public:
264153 
264154  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
264155  // and not required which is required to match the other aspects of the copy mechanism code generation.
264156  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
264157  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
264158  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
264159  // virtual SgNode* copy ( const SgCopyHelp & help) const;
264160 
264162  virtual std::string class_name() const override;
264163 
264165  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
264166 
264168  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
264169  // static const VariantT static_variant = V_SgLeftDivideOp;
264170  enum { static_variant = V_SgLeftDivideOp };
264171 
264172  /* the generated cast function */
264174  ROSE_DLL_API friend SgLeftDivideOp* isSgLeftDivideOp( SgNode * s );
264175 
264177  ROSE_DLL_API friend const SgLeftDivideOp* isSgLeftDivideOp( const SgNode * s );
264178 
264179  // ******************************************
264180  // * Memory Pool / New / Delete
264181  // ******************************************
264182 
264183  public:
264185  static const unsigned pool_size; //
264187  static std::vector<unsigned char *> pools; //
264189  static SgLeftDivideOp * next_node; //
264190 
264192  static unsigned long initializeStorageClassArray(SgLeftDivideOpStorageClass *); //
264193 
264195  static void clearMemoryPool(); //
264196  static void deleteMemoryPool(); //
264197 
264199  static void extendMemoryPoolForFileIO(); //
264200 
264202  static SgLeftDivideOp * getPointerFromGlobalIndex(unsigned long); //
264204  static SgLeftDivideOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
264205 
264207  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
264209  static void resetValidFreepointers(); //
264211  static unsigned long getNumberOfLastValidPointer(); //
264212 
264213 
264214 #if defined(INLINE_FUNCTIONS)
264215 
264216  inline void *operator new (size_t size);
264217 #else
264218 
264219  void *operator new (size_t size);
264220 #endif
264221 
264222  void operator delete (void* pointer, size_t size);
264223 
264224  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
264225  void operator delete (void* pointer)
264226  {
264227  // This is the generated delete operator...
264228  SgLeftDivideOp::operator delete (pointer,sizeof(SgLeftDivideOp));
264229  }
264230 
264232  static size_t numberOfNodes();
264233 
264235  static size_t memoryUsage();
264236 
264237  // End of scope which started in IR nodes specific code
264238  /* */
264239 
264240  /* name Internal Functions
264241  \brief Internal functions ... incomplete-documentation
264242 
264243  These functions have been made public as part of the design, but they are suggested for internal use
264244  or by particularly knowledgeable users for specialized tools or applications.
264245 
264246  \internal We could not make these private because they are required by user for special purposes. And
264247  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
264248 
264249  */
264250 
264251  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
264252  // overridden in every class by *generated* implementation
264254  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
264255  // MS: 06/28/02 container of names of variables or container indices
264256  // used used in the traversal to access AST successor nodes
264257  // overridden in every class by *generated* implementation
264260  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
264261 
264262  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
264263  // than all the vector copies. The implementation for these functions is generated for each class.
264265  virtual size_t get_numberOfTraversalSuccessors() override;
264267  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
264269  virtual size_t get_childIndex(SgNode *child) override;
264270 
264271 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
264272  // MS: 08/16/2002 method for generating RTI information
264274  virtual RTIReturnType roseRTI() override;
264275 #endif
264276  /* */
264277 
264278 
264279 
264280  /* name Deprecated Functions
264281  \brief Deprecated functions ... incomplete-documentation
264282 
264283  These functions have been deprecated from use.
264284  */
264285  /* */
264286 
264288  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
264289 
264290  // JJW (10/16/2008): Changed to a single function in Node.code, and put
264291  // getVariant() in #if 0 block to prevent confusing Doxygen
264292 #if 0
264293 
264294  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
264296  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
264297 #endif
264298  /* */
264299 
264300 
264301 
264302 
264303  public:
264304  /* name Traversal Support Functions
264305  \brief Traversal support functions ... incomplete-documentation
264306 
264307  These functions have been made public as part of the design, but they are suggested for internal use
264308  or by particularly knowledgable users for specialized tools or applications.
264309  */
264310  /* */
264311 
264312  // DQ (11/26/2005): Support for visitor pattern mechanims
264313  // (inferior to ROSE traversal mechanism, experimental).
264317 
264318  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
264320  virtual void accept (ROSE_VisitorPattern & visitor) override;
264321 
264322  // DQ (12/26/2005): Support for traversal based on the memory pool
264325  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
264326 
264329  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
264330 
264331  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
264332  // This traversal helps support internal tools that call static member functions.
264333  // note: this function operates on the memory pools.
264336  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
264337  /* */
264338 
264339 
264340  public:
264341  /* name Memory Allocation Functions
264342  \brief Memory allocations functions ... incomplete-documentation
264343 
264344  These functions have been made public as part of the design, but they are suggested for internal use
264345  or by particularly knowledgable users for specialized tools or applications.
264346  */
264347  /* */
264348 
264359  virtual bool isInMemoryPool() override;
264360 
264371  virtual void checkDataMemberPointersIfInMemoryPool() override;
264372 
264373  // DQ (4/30/2006): Modified to be a const function.
264388  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
264389 
264399  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
264400 
264412  virtual long getChildIndex( SgNode* childNode ) const override;
264413 
264414  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
264415  // comment here (changed to be a C style comment and not be a doxygen comment).
264416  /* \brief Constructor for use by AST File I/O Mechanism
264417 
264418  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
264419  which obtained via fast binary file I/O from disk.
264420  */
264421  // SgLeftDivideOp( SgLeftDivideOpStorageClass& source );
264422 
264423 
264424 
264425 
264426 
264427  // JH (10/24/2005): methods added to support the ast file IO
264428  private:
264429 
264430  /* name AST Memory Allocation Support Functions
264431  \brief Memory allocations support....
264432 
264433  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
264434  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
264435  and support the AST File I/O Mechanism.
264436  */
264437  /* */
264438 
264439  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
264440  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
264441  that I use the same type everywhere, if any changes are made. THe second one declares the type
264442  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
264443  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
264444  a correspinding one in the AST_FILE_IO class!
264445  */
264446  // DQ (9/2/2015): This typedef is no longer used, we can't define the
264447  // comment here (changed to be a C style comment and not be a doxygen comment).
264448  /* \brief Typedef used for low level memory access.
264449  */
264450  // typedef unsigned char* TestType;
264451 
264452  // DQ (9/2/2015): This typedef is no longer used, we can't define the
264453  // comment here (changed to be a C style comment and not be a doxygen comment).
264454  /* \brief Typedef used to hold memory addresses as values.
264455  */
264456  // typedef unsigned long AddressType;
264457 
264458 
264459 
264460  // necessary, to have direct access to the p_freepointer and the private methods !
264462  friend class AST_FILE_IO;
264463 
264465  friend class SgLeftDivideOpStorageClass;
264466 
264468  friend class AstSpecificDataManagingClass;
264469 
264471  friend class AstSpecificDataManagingClassStorageClass;
264472 
264473  public:
264475  SgLeftDivideOp( const SgLeftDivideOpStorageClass& source );
264476 
264477  // private: // JJW hack
264478  /*
264479  name AST Memory Allocation Support Variables
264480  Memory allocations support variables
264481 
264482  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
264483  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
264484  and support the AST File I/O Mechanism.
264485  */
264486  /* */
264487 
264488  public:
264489 
264490  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
264491  // to current node (so that it will work cleanly with build functions to specify patterns).
264492  // virtual SgNode* addRegExpAttribute();
264499 
264500 // *** COMMON CODE SECTION ENDS HERE ***
264501 
264502 
264503 // End of memberFunctionString
264504 // Start of memberFunctionString
264505 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
264506 
264507  // the generated cast function
264508  // friend ROSE_DLL_API SgLeftDivideOp* isSgLeftDivideOp ( SgNode* s );
264509 
264510  typedef SgBinaryOp base_node_type;
264511 
264512 
264513 // End of memberFunctionString
264514 // Start of memberFunctionString
264515 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
264516 
264517  void post_construction_initialization() override;
264518 
264519 
264520 // End of memberFunctionString
264521 // Start of memberFunctionString
264522 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
264523 
264524  int precedence() const override { return 13; }
264525 
264526 
264527 // End of memberFunctionString
264528 
264529 
264530  public:
264531  virtual ~SgLeftDivideOp();
264532 
264533 
264534  public:
264535  SgLeftDivideOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
264536  SgLeftDivideOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
264537 
264538  protected:
264539 
264540 
264541 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
264542 
264543 
264544  };
264545 #endif
264546 
264547 // postdeclarations for SgLeftDivideOp
264548 
264549 /* #line 264550 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
264550 
264551 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
264552 
264553 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
264554 
264555 
264556 /* #line 264557 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
264557 
264558 
264559 
264560 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
264561 
264562 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
264563 // This code is automatically generated for each
264564 // terminal and non-terminal within the defined
264565 // grammar. There is a simple way to change the
264566 // code to fix bugs etc. See the ROSE README file
264567 // for directions.
264568 
264569 // tps: (02/22/2010): Adding DLL export requirements
264570 #include "rosedll.h"
264571 
264572 // predeclarations for SgSIMDBinaryOp
264573 
264574 /* #line 264575 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
264575 
264576 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
264577 
264578 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
264579 
264580 #if 1
264581 // Class Definition for SgSIMDBinaryOp
264582 class ROSE_DLL_API SgSIMDBinaryOp : public SgBinaryOp
264583  {
264584  public:
264585 
264586 
264587 /* #line 264588 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
264588 
264589  virtual SgNode* copy ( SgCopyHelp& help) const override;
264590 // Start of memberFunctionString
264591 /* #line 190 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
264592 
264593  int length() const ROSE_DEPRECATED_FUNCTION;
264594  bool empty() const ROSE_DEPRECATED_FUNCTION;
264595  // void operator_unparse( const char *, Unparse_Info &, ostream & );
264596 
264597 
264598 // End of memberFunctionString
264599 // Start of memberFunctionString
264600 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
264601 
264602 // *** COMMON CODE SECTION BEGINS HERE ***
264603 
264604  public:
264605 
264606  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
264607  // and not required which is required to match the other aspects of the copy mechanism code generation.
264608  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
264609  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
264610  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
264611  // virtual SgNode* copy ( const SgCopyHelp & help) const;
264612 
264614  virtual std::string class_name() const override;
264615 
264617  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
264618 
264620  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
264621  // static const VariantT static_variant = V_SgSIMDBinaryOp;
264622  enum { static_variant = V_SgSIMDBinaryOp };
264623 
264624  /* the generated cast function */
264626  ROSE_DLL_API friend SgSIMDBinaryOp* isSgSIMDBinaryOp( SgNode * s );
264627 
264629  ROSE_DLL_API friend const SgSIMDBinaryOp* isSgSIMDBinaryOp( const SgNode * s );
264630 
264631  // ******************************************
264632  // * Memory Pool / New / Delete
264633  // ******************************************
264634 
264635  public:
264637  static const unsigned pool_size; //
264639  static std::vector<unsigned char *> pools; //
264641  static SgSIMDBinaryOp * next_node; //
264642 
264644  static unsigned long initializeStorageClassArray(SgSIMDBinaryOpStorageClass *); //
264645 
264647  static void clearMemoryPool(); //
264648  static void deleteMemoryPool(); //
264649 
264651  static void extendMemoryPoolForFileIO(); //
264652 
264654  static SgSIMDBinaryOp * getPointerFromGlobalIndex(unsigned long); //
264656  static SgSIMDBinaryOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
264657 
264659  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
264661  static void resetValidFreepointers(); //
264663  static unsigned long getNumberOfLastValidPointer(); //
264664 
264665 
264666 #if defined(INLINE_FUNCTIONS)
264667 
264668  inline void *operator new (size_t size);
264669 #else
264670 
264671  void *operator new (size_t size);
264672 #endif
264673 
264674  void operator delete (void* pointer, size_t size);
264675 
264676  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
264677  void operator delete (void* pointer)
264678  {
264679  // This is the generated delete operator...
264680  SgSIMDBinaryOp::operator delete (pointer,sizeof(SgSIMDBinaryOp));
264681  }
264682 
264684  static size_t numberOfNodes();
264685 
264687  static size_t memoryUsage();
264688 
264689  // End of scope which started in IR nodes specific code
264690  /* */
264691 
264692  /* name Internal Functions
264693  \brief Internal functions ... incomplete-documentation
264694 
264695  These functions have been made public as part of the design, but they are suggested for internal use
264696  or by particularly knowledgeable users for specialized tools or applications.
264697 
264698  \internal We could not make these private because they are required by user for special purposes. And
264699  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
264700 
264701  */
264702 
264703  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
264704  // overridden in every class by *generated* implementation
264706  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
264707  // MS: 06/28/02 container of names of variables or container indices
264708  // used used in the traversal to access AST successor nodes
264709  // overridden in every class by *generated* implementation
264712  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
264713 
264714  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
264715  // than all the vector copies. The implementation for these functions is generated for each class.
264717  virtual size_t get_numberOfTraversalSuccessors() override;
264719  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
264721  virtual size_t get_childIndex(SgNode *child) override;
264722 
264723 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
264724  // MS: 08/16/2002 method for generating RTI information
264726  virtual RTIReturnType roseRTI() override;
264727 #endif
264728  /* */
264729 
264730 
264731 
264732  /* name Deprecated Functions
264733  \brief Deprecated functions ... incomplete-documentation
264734 
264735  These functions have been deprecated from use.
264736  */
264737  /* */
264738 
264740  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
264741 
264742  // JJW (10/16/2008): Changed to a single function in Node.code, and put
264743  // getVariant() in #if 0 block to prevent confusing Doxygen
264744 #if 0
264745 
264746  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
264748  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
264749 #endif
264750  /* */
264751 
264752 
264753 
264754 
264755  public:
264756  /* name Traversal Support Functions
264757  \brief Traversal support functions ... incomplete-documentation
264758 
264759  These functions have been made public as part of the design, but they are suggested for internal use
264760  or by particularly knowledgable users for specialized tools or applications.
264761  */
264762  /* */
264763 
264764  // DQ (11/26/2005): Support for visitor pattern mechanims
264765  // (inferior to ROSE traversal mechanism, experimental).
264769 
264770  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
264772  virtual void accept (ROSE_VisitorPattern & visitor) override;
264773 
264774  // DQ (12/26/2005): Support for traversal based on the memory pool
264777  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
264778 
264781  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
264782 
264783  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
264784  // This traversal helps support internal tools that call static member functions.
264785  // note: this function operates on the memory pools.
264788  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
264789  /* */
264790 
264791 
264792  public:
264793  /* name Memory Allocation Functions
264794  \brief Memory allocations functions ... incomplete-documentation
264795 
264796  These functions have been made public as part of the design, but they are suggested for internal use
264797  or by particularly knowledgable users for specialized tools or applications.
264798  */
264799  /* */
264800 
264811  virtual bool isInMemoryPool() override;
264812 
264823  virtual void checkDataMemberPointersIfInMemoryPool() override;
264824 
264825  // DQ (4/30/2006): Modified to be a const function.
264840  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
264841 
264851  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
264852 
264864  virtual long getChildIndex( SgNode* childNode ) const override;
264865 
264866  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
264867  // comment here (changed to be a C style comment and not be a doxygen comment).
264868  /* \brief Constructor for use by AST File I/O Mechanism
264869 
264870  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
264871  which obtained via fast binary file I/O from disk.
264872  */
264873  // SgSIMDBinaryOp( SgSIMDBinaryOpStorageClass& source );
264874 
264875 
264876 
264877 
264878 
264879  // JH (10/24/2005): methods added to support the ast file IO
264880  private:
264881 
264882  /* name AST Memory Allocation Support Functions
264883  \brief Memory allocations support....
264884 
264885  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
264886  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
264887  and support the AST File I/O Mechanism.
264888  */
264889  /* */
264890 
264891  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
264892  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
264893  that I use the same type everywhere, if any changes are made. THe second one declares the type
264894  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
264895  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
264896  a correspinding one in the AST_FILE_IO class!
264897  */
264898  // DQ (9/2/2015): This typedef is no longer used, we can't define the
264899  // comment here (changed to be a C style comment and not be a doxygen comment).
264900  /* \brief Typedef used for low level memory access.
264901  */
264902  // typedef unsigned char* TestType;
264903 
264904  // DQ (9/2/2015): This typedef is no longer used, we can't define the
264905  // comment here (changed to be a C style comment and not be a doxygen comment).
264906  /* \brief Typedef used to hold memory addresses as values.
264907  */
264908  // typedef unsigned long AddressType;
264909 
264910 
264911 
264912  // necessary, to have direct access to the p_freepointer and the private methods !
264914  friend class AST_FILE_IO;
264915 
264917  friend class SgSIMDBinaryOpStorageClass;
264918 
264920  friend class AstSpecificDataManagingClass;
264921 
264923  friend class AstSpecificDataManagingClassStorageClass;
264924 
264925  public:
264927  SgSIMDBinaryOp( const SgSIMDBinaryOpStorageClass& source );
264928 
264929  // private: // JJW hack
264930  /*
264931  name AST Memory Allocation Support Variables
264932  Memory allocations support variables
264933 
264934  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
264935  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
264936  and support the AST File I/O Mechanism.
264937  */
264938  /* */
264939 
264940  public:
264941 
264942  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
264943  // to current node (so that it will work cleanly with build functions to specify patterns).
264944  // virtual SgNode* addRegExpAttribute();
264951 
264952 // *** COMMON CODE SECTION ENDS HERE ***
264953 
264954 
264955 // End of memberFunctionString
264956 // Start of memberFunctionString
264957 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
264958 
264959  // the generated cast function
264960  // friend ROSE_DLL_API SgSIMDBinaryOp* isSgSIMDBinaryOp ( SgNode* s );
264961 
264962  typedef SgBinaryOp base_node_type;
264963 
264964 
264965 // End of memberFunctionString
264966 // Start of memberFunctionString
264967 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
264968 
264969  void post_construction_initialization() override;
264970 
264971 
264972 // End of memberFunctionString
264973 // Start of memberFunctionString
264974 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
264975 
264976  int precedence() const override { return 16; }
264977 
264978 
264979 // End of memberFunctionString
264980 
264981 
264982  public:
264983  virtual ~SgSIMDBinaryOp();
264984 
264985 
264986  public:
264987  SgSIMDBinaryOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
264988  SgSIMDBinaryOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
264989 
264990  protected:
264991 
264992 
264993 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
264994 
264995 
264996  };
264997 #endif
264998 
264999 // postdeclarations for SgSIMDBinaryOp
265000 
265001 /* #line 265002 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
265002 
265003 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
265004 
265005 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
265006 
265007 
265008 /* #line 265009 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
265009 
265010 
265011 
265012 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
265013 
265014 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
265015 // This code is automatically generated for each
265016 // terminal and non-terminal within the defined
265017 // grammar. There is a simple way to change the
265018 // code to fix bugs etc. See the ROSE README file
265019 // for directions.
265020 
265021 // tps: (02/22/2010): Adding DLL export requirements
265022 #include "rosedll.h"
265023 
265024 // predeclarations for SgSIMDAddOp
265025 
265026 /* #line 265027 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
265027 
265028 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
265029 
265030 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
265031 
265032 #if 1
265033 // Class Definition for SgSIMDAddOp
265034 class ROSE_DLL_API SgSIMDAddOp : public SgSIMDBinaryOp
265035  {
265036  public:
265037 
265038 
265039 /* #line 265040 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
265040 
265041  virtual SgNode* copy ( SgCopyHelp& help) const override;
265042 // Start of memberFunctionString
265043 /* #line 9544 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
265044 
265045 
265046 
265047 // End of memberFunctionString
265048 // Start of memberFunctionString
265049 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
265050 
265051 // *** COMMON CODE SECTION BEGINS HERE ***
265052 
265053  public:
265054 
265055  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
265056  // and not required which is required to match the other aspects of the copy mechanism code generation.
265057  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
265058  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
265059  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
265060  // virtual SgNode* copy ( const SgCopyHelp & help) const;
265061 
265063  virtual std::string class_name() const override;
265064 
265066  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
265067 
265069  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
265070  // static const VariantT static_variant = V_SgSIMDAddOp;
265071  enum { static_variant = V_SgSIMDAddOp };
265072 
265073  /* the generated cast function */
265075  ROSE_DLL_API friend SgSIMDAddOp* isSgSIMDAddOp( SgNode * s );
265076 
265078  ROSE_DLL_API friend const SgSIMDAddOp* isSgSIMDAddOp( const SgNode * s );
265079 
265080  // ******************************************
265081  // * Memory Pool / New / Delete
265082  // ******************************************
265083 
265084  public:
265086  static const unsigned pool_size; //
265088  static std::vector<unsigned char *> pools; //
265090  static SgSIMDAddOp * next_node; //
265091 
265093  static unsigned long initializeStorageClassArray(SgSIMDAddOpStorageClass *); //
265094 
265096  static void clearMemoryPool(); //
265097  static void deleteMemoryPool(); //
265098 
265100  static void extendMemoryPoolForFileIO(); //
265101 
265103  static SgSIMDAddOp * getPointerFromGlobalIndex(unsigned long); //
265105  static SgSIMDAddOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
265106 
265108  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
265110  static void resetValidFreepointers(); //
265112  static unsigned long getNumberOfLastValidPointer(); //
265113 
265114 
265115 #if defined(INLINE_FUNCTIONS)
265116 
265117  inline void *operator new (size_t size);
265118 #else
265119 
265120  void *operator new (size_t size);
265121 #endif
265122 
265123  void operator delete (void* pointer, size_t size);
265124 
265125  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
265126  void operator delete (void* pointer)
265127  {
265128  // This is the generated delete operator...
265129  SgSIMDAddOp::operator delete (pointer,sizeof(SgSIMDAddOp));
265130  }
265131 
265133  static size_t numberOfNodes();
265134 
265136  static size_t memoryUsage();
265137 
265138  // End of scope which started in IR nodes specific code
265139  /* */
265140 
265141  /* name Internal Functions
265142  \brief Internal functions ... incomplete-documentation
265143 
265144  These functions have been made public as part of the design, but they are suggested for internal use
265145  or by particularly knowledgeable users for specialized tools or applications.
265146 
265147  \internal We could not make these private because they are required by user for special purposes. And
265148  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
265149 
265150  */
265151 
265152  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
265153  // overridden in every class by *generated* implementation
265155  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
265156  // MS: 06/28/02 container of names of variables or container indices
265157  // used used in the traversal to access AST successor nodes
265158  // overridden in every class by *generated* implementation
265161  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
265162 
265163  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
265164  // than all the vector copies. The implementation for these functions is generated for each class.
265166  virtual size_t get_numberOfTraversalSuccessors() override;
265168  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
265170  virtual size_t get_childIndex(SgNode *child) override;
265171 
265172 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
265173  // MS: 08/16/2002 method for generating RTI information
265175  virtual RTIReturnType roseRTI() override;
265176 #endif
265177  /* */
265178 
265179 
265180 
265181  /* name Deprecated Functions
265182  \brief Deprecated functions ... incomplete-documentation
265183 
265184  These functions have been deprecated from use.
265185  */
265186  /* */
265187 
265189  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
265190 
265191  // JJW (10/16/2008): Changed to a single function in Node.code, and put
265192  // getVariant() in #if 0 block to prevent confusing Doxygen
265193 #if 0
265194 
265195  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
265197  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
265198 #endif
265199  /* */
265200 
265201 
265202 
265203 
265204  public:
265205  /* name Traversal Support Functions
265206  \brief Traversal support functions ... incomplete-documentation
265207 
265208  These functions have been made public as part of the design, but they are suggested for internal use
265209  or by particularly knowledgable users for specialized tools or applications.
265210  */
265211  /* */
265212 
265213  // DQ (11/26/2005): Support for visitor pattern mechanims
265214  // (inferior to ROSE traversal mechanism, experimental).
265218 
265219  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
265221  virtual void accept (ROSE_VisitorPattern & visitor) override;
265222 
265223  // DQ (12/26/2005): Support for traversal based on the memory pool
265226  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
265227 
265230  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
265231 
265232  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
265233  // This traversal helps support internal tools that call static member functions.
265234  // note: this function operates on the memory pools.
265237  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
265238  /* */
265239 
265240 
265241  public:
265242  /* name Memory Allocation Functions
265243  \brief Memory allocations functions ... incomplete-documentation
265244 
265245  These functions have been made public as part of the design, but they are suggested for internal use
265246  or by particularly knowledgable users for specialized tools or applications.
265247  */
265248  /* */
265249 
265260  virtual bool isInMemoryPool() override;
265261 
265272  virtual void checkDataMemberPointersIfInMemoryPool() override;
265273 
265274  // DQ (4/30/2006): Modified to be a const function.
265289  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
265290 
265300  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
265301 
265313  virtual long getChildIndex( SgNode* childNode ) const override;
265314 
265315  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
265316  // comment here (changed to be a C style comment and not be a doxygen comment).
265317  /* \brief Constructor for use by AST File I/O Mechanism
265318 
265319  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
265320  which obtained via fast binary file I/O from disk.
265321  */
265322  // SgSIMDAddOp( SgSIMDAddOpStorageClass& source );
265323 
265324 
265325 
265326 
265327 
265328  // JH (10/24/2005): methods added to support the ast file IO
265329  private:
265330 
265331  /* name AST Memory Allocation Support Functions
265332  \brief Memory allocations support....
265333 
265334  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
265335  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
265336  and support the AST File I/O Mechanism.
265337  */
265338  /* */
265339 
265340  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
265341  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
265342  that I use the same type everywhere, if any changes are made. THe second one declares the type
265343  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
265344  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
265345  a correspinding one in the AST_FILE_IO class!
265346  */
265347  // DQ (9/2/2015): This typedef is no longer used, we can't define the
265348  // comment here (changed to be a C style comment and not be a doxygen comment).
265349  /* \brief Typedef used for low level memory access.
265350  */
265351  // typedef unsigned char* TestType;
265352 
265353  // DQ (9/2/2015): This typedef is no longer used, we can't define the
265354  // comment here (changed to be a C style comment and not be a doxygen comment).
265355  /* \brief Typedef used to hold memory addresses as values.
265356  */
265357  // typedef unsigned long AddressType;
265358 
265359 
265360 
265361  // necessary, to have direct access to the p_freepointer and the private methods !
265363  friend class AST_FILE_IO;
265364 
265366  friend class SgSIMDAddOpStorageClass;
265367 
265369  friend class AstSpecificDataManagingClass;
265370 
265372  friend class AstSpecificDataManagingClassStorageClass;
265373 
265374  public:
265376  SgSIMDAddOp( const SgSIMDAddOpStorageClass& source );
265377 
265378  // private: // JJW hack
265379  /*
265380  name AST Memory Allocation Support Variables
265381  Memory allocations support variables
265382 
265383  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
265384  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
265385  and support the AST File I/O Mechanism.
265386  */
265387  /* */
265388 
265389  public:
265390 
265391  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
265392  // to current node (so that it will work cleanly with build functions to specify patterns).
265393  // virtual SgNode* addRegExpAttribute();
265399  SgSIMDAddOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
265400 
265401 // *** COMMON CODE SECTION ENDS HERE ***
265402 
265403 
265404 // End of memberFunctionString
265405 // Start of memberFunctionString
265406 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
265407 
265408  // the generated cast function
265409  // friend ROSE_DLL_API SgSIMDAddOp* isSgSIMDAddOp ( SgNode* s );
265410 
265411  typedef SgSIMDBinaryOp base_node_type;
265412 
265413 
265414 // End of memberFunctionString
265415 // Start of memberFunctionString
265416 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
265417 
265418  void post_construction_initialization() override;
265419 
265420 
265421 // End of memberFunctionString
265422 // Start of memberFunctionString
265423 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
265424 
265425  int precedence() const override { return 16; }
265426 
265427 
265428 // End of memberFunctionString
265429 
265430 
265431  public:
265432  virtual ~SgSIMDAddOp();
265433 
265434 
265435  public:
265436  SgSIMDAddOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
265437  SgSIMDAddOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
265438 
265439  protected:
265440 
265441 
265442 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
265443 
265444 
265445  };
265446 #endif
265447 
265448 // postdeclarations for SgSIMDAddOp
265449 
265450 /* #line 265451 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
265451 
265452 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
265453 
265454 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
265455 
265456 
265457 /* #line 265458 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
265458 
265459 
265460 
265461 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
265462 
265463 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
265464 // This code is automatically generated for each
265465 // terminal and non-terminal within the defined
265466 // grammar. There is a simple way to change the
265467 // code to fix bugs etc. See the ROSE README file
265468 // for directions.
265469 
265470 // tps: (02/22/2010): Adding DLL export requirements
265471 #include "rosedll.h"
265472 
265473 // predeclarations for SgSIMDSubOp
265474 
265475 /* #line 265476 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
265476 
265477 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
265478 
265479 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
265480 
265481 #if 1
265482 // Class Definition for SgSIMDSubOp
265483 class ROSE_DLL_API SgSIMDSubOp : public SgSIMDBinaryOp
265484  {
265485  public:
265486 
265487 
265488 /* #line 265489 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
265489 
265490  virtual SgNode* copy ( SgCopyHelp& help) const override;
265491 // Start of memberFunctionString
265492 /* #line 9548 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
265493 
265494 
265495 
265496 // End of memberFunctionString
265497 // Start of memberFunctionString
265498 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
265499 
265500 // *** COMMON CODE SECTION BEGINS HERE ***
265501 
265502  public:
265503 
265504  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
265505  // and not required which is required to match the other aspects of the copy mechanism code generation.
265506  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
265507  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
265508  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
265509  // virtual SgNode* copy ( const SgCopyHelp & help) const;
265510 
265512  virtual std::string class_name() const override;
265513 
265515  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
265516 
265518  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
265519  // static const VariantT static_variant = V_SgSIMDSubOp;
265520  enum { static_variant = V_SgSIMDSubOp };
265521 
265522  /* the generated cast function */
265524  ROSE_DLL_API friend SgSIMDSubOp* isSgSIMDSubOp( SgNode * s );
265525 
265527  ROSE_DLL_API friend const SgSIMDSubOp* isSgSIMDSubOp( const SgNode * s );
265528 
265529  // ******************************************
265530  // * Memory Pool / New / Delete
265531  // ******************************************
265532 
265533  public:
265535  static const unsigned pool_size; //
265537  static std::vector<unsigned char *> pools; //
265539  static SgSIMDSubOp * next_node; //
265540 
265542  static unsigned long initializeStorageClassArray(SgSIMDSubOpStorageClass *); //
265543 
265545  static void clearMemoryPool(); //
265546  static void deleteMemoryPool(); //
265547 
265549  static void extendMemoryPoolForFileIO(); //
265550 
265552  static SgSIMDSubOp * getPointerFromGlobalIndex(unsigned long); //
265554  static SgSIMDSubOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
265555 
265557  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
265559  static void resetValidFreepointers(); //
265561  static unsigned long getNumberOfLastValidPointer(); //
265562 
265563 
265564 #if defined(INLINE_FUNCTIONS)
265565 
265566  inline void *operator new (size_t size);
265567 #else
265568 
265569  void *operator new (size_t size);
265570 #endif
265571 
265572  void operator delete (void* pointer, size_t size);
265573 
265574  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
265575  void operator delete (void* pointer)
265576  {
265577  // This is the generated delete operator...
265578  SgSIMDSubOp::operator delete (pointer,sizeof(SgSIMDSubOp));
265579  }
265580 
265582  static size_t numberOfNodes();
265583 
265585  static size_t memoryUsage();
265586 
265587  // End of scope which started in IR nodes specific code
265588  /* */
265589 
265590  /* name Internal Functions
265591  \brief Internal functions ... incomplete-documentation
265592 
265593  These functions have been made public as part of the design, but they are suggested for internal use
265594  or by particularly knowledgeable users for specialized tools or applications.
265595 
265596  \internal We could not make these private because they are required by user for special purposes. And
265597  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
265598 
265599  */
265600 
265601  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
265602  // overridden in every class by *generated* implementation
265604  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
265605  // MS: 06/28/02 container of names of variables or container indices
265606  // used used in the traversal to access AST successor nodes
265607  // overridden in every class by *generated* implementation
265610  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
265611 
265612  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
265613  // than all the vector copies. The implementation for these functions is generated for each class.
265615  virtual size_t get_numberOfTraversalSuccessors() override;
265617  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
265619  virtual size_t get_childIndex(SgNode *child) override;
265620 
265621 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
265622  // MS: 08/16/2002 method for generating RTI information
265624  virtual RTIReturnType roseRTI() override;
265625 #endif
265626  /* */
265627 
265628 
265629 
265630  /* name Deprecated Functions
265631  \brief Deprecated functions ... incomplete-documentation
265632 
265633  These functions have been deprecated from use.
265634  */
265635  /* */
265636 
265638  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
265639 
265640  // JJW (10/16/2008): Changed to a single function in Node.code, and put
265641  // getVariant() in #if 0 block to prevent confusing Doxygen
265642 #if 0
265643 
265644  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
265646  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
265647 #endif
265648  /* */
265649 
265650 
265651 
265652 
265653  public:
265654  /* name Traversal Support Functions
265655  \brief Traversal support functions ... incomplete-documentation
265656 
265657  These functions have been made public as part of the design, but they are suggested for internal use
265658  or by particularly knowledgable users for specialized tools or applications.
265659  */
265660  /* */
265661 
265662  // DQ (11/26/2005): Support for visitor pattern mechanims
265663  // (inferior to ROSE traversal mechanism, experimental).
265667 
265668  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
265670  virtual void accept (ROSE_VisitorPattern & visitor) override;
265671 
265672  // DQ (12/26/2005): Support for traversal based on the memory pool
265675  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
265676 
265679  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
265680 
265681  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
265682  // This traversal helps support internal tools that call static member functions.
265683  // note: this function operates on the memory pools.
265686  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
265687  /* */
265688 
265689 
265690  public:
265691  /* name Memory Allocation Functions
265692  \brief Memory allocations functions ... incomplete-documentation
265693 
265694  These functions have been made public as part of the design, but they are suggested for internal use
265695  or by particularly knowledgable users for specialized tools or applications.
265696  */
265697  /* */
265698 
265709  virtual bool isInMemoryPool() override;
265710 
265721  virtual void checkDataMemberPointersIfInMemoryPool() override;
265722 
265723  // DQ (4/30/2006): Modified to be a const function.
265738  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
265739 
265749  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
265750 
265762  virtual long getChildIndex( SgNode* childNode ) const override;
265763 
265764  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
265765  // comment here (changed to be a C style comment and not be a doxygen comment).
265766  /* \brief Constructor for use by AST File I/O Mechanism
265767 
265768  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
265769  which obtained via fast binary file I/O from disk.
265770  */
265771  // SgSIMDSubOp( SgSIMDSubOpStorageClass& source );
265772 
265773 
265774 
265775 
265776 
265777  // JH (10/24/2005): methods added to support the ast file IO
265778  private:
265779 
265780  /* name AST Memory Allocation Support Functions
265781  \brief Memory allocations support....
265782 
265783  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
265784  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
265785  and support the AST File I/O Mechanism.
265786  */
265787  /* */
265788 
265789  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
265790  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
265791  that I use the same type everywhere, if any changes are made. THe second one declares the type
265792  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
265793  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
265794  a correspinding one in the AST_FILE_IO class!
265795  */
265796  // DQ (9/2/2015): This typedef is no longer used, we can't define the
265797  // comment here (changed to be a C style comment and not be a doxygen comment).
265798  /* \brief Typedef used for low level memory access.
265799  */
265800  // typedef unsigned char* TestType;
265801 
265802  // DQ (9/2/2015): This typedef is no longer used, we can't define the
265803  // comment here (changed to be a C style comment and not be a doxygen comment).
265804  /* \brief Typedef used to hold memory addresses as values.
265805  */
265806  // typedef unsigned long AddressType;
265807 
265808 
265809 
265810  // necessary, to have direct access to the p_freepointer and the private methods !
265812  friend class AST_FILE_IO;
265813 
265815  friend class SgSIMDSubOpStorageClass;
265816 
265818  friend class AstSpecificDataManagingClass;
265819 
265821  friend class AstSpecificDataManagingClassStorageClass;
265822 
265823  public:
265825  SgSIMDSubOp( const SgSIMDSubOpStorageClass& source );
265826 
265827  // private: // JJW hack
265828  /*
265829  name AST Memory Allocation Support Variables
265830  Memory allocations support variables
265831 
265832  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
265833  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
265834  and support the AST File I/O Mechanism.
265835  */
265836  /* */
265837 
265838  public:
265839 
265840  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
265841  // to current node (so that it will work cleanly with build functions to specify patterns).
265842  // virtual SgNode* addRegExpAttribute();
265848  SgSIMDSubOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
265849 
265850 // *** COMMON CODE SECTION ENDS HERE ***
265851 
265852 
265853 // End of memberFunctionString
265854 // Start of memberFunctionString
265855 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
265856 
265857  // the generated cast function
265858  // friend ROSE_DLL_API SgSIMDSubOp* isSgSIMDSubOp ( SgNode* s );
265859 
265860  typedef SgSIMDBinaryOp base_node_type;
265861 
265862 
265863 // End of memberFunctionString
265864 // Start of memberFunctionString
265865 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
265866 
265867  void post_construction_initialization() override;
265868 
265869 
265870 // End of memberFunctionString
265871 // Start of memberFunctionString
265872 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
265873 
265874  int precedence() const override { return 16; }
265875 
265876 
265877 // End of memberFunctionString
265878 
265879 
265880  public:
265881  virtual ~SgSIMDSubOp();
265882 
265883 
265884  public:
265885  SgSIMDSubOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
265886  SgSIMDSubOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
265887 
265888  protected:
265889 
265890 
265891 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
265892 
265893 
265894  };
265895 #endif
265896 
265897 // postdeclarations for SgSIMDSubOp
265898 
265899 /* #line 265900 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
265900 
265901 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
265902 
265903 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
265904 
265905 
265906 /* #line 265907 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
265907 
265908 
265909 
265910 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
265911 
265912 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
265913 // This code is automatically generated for each
265914 // terminal and non-terminal within the defined
265915 // grammar. There is a simple way to change the
265916 // code to fix bugs etc. See the ROSE README file
265917 // for directions.
265918 
265919 // tps: (02/22/2010): Adding DLL export requirements
265920 #include "rosedll.h"
265921 
265922 // predeclarations for SgSIMDMulOp
265923 
265924 /* #line 265925 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
265925 
265926 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
265927 
265928 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
265929 
265930 #if 1
265931 // Class Definition for SgSIMDMulOp
265932 class ROSE_DLL_API SgSIMDMulOp : public SgSIMDBinaryOp
265933  {
265934  public:
265935 
265936 
265937 /* #line 265938 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
265938 
265939  virtual SgNode* copy ( SgCopyHelp& help) const override;
265940 // Start of memberFunctionString
265941 /* #line 9552 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
265942 
265943 
265944 
265945 // End of memberFunctionString
265946 // Start of memberFunctionString
265947 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
265948 
265949 // *** COMMON CODE SECTION BEGINS HERE ***
265950 
265951  public:
265952 
265953  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
265954  // and not required which is required to match the other aspects of the copy mechanism code generation.
265955  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
265956  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
265957  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
265958  // virtual SgNode* copy ( const SgCopyHelp & help) const;
265959 
265961  virtual std::string class_name() const override;
265962 
265964  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
265965 
265967  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
265968  // static const VariantT static_variant = V_SgSIMDMulOp;
265969  enum { static_variant = V_SgSIMDMulOp };
265970 
265971  /* the generated cast function */
265973  ROSE_DLL_API friend SgSIMDMulOp* isSgSIMDMulOp( SgNode * s );
265974 
265976  ROSE_DLL_API friend const SgSIMDMulOp* isSgSIMDMulOp( const SgNode * s );
265977 
265978  // ******************************************
265979  // * Memory Pool / New / Delete
265980  // ******************************************
265981 
265982  public:
265984  static const unsigned pool_size; //
265986  static std::vector<unsigned char *> pools; //
265988  static SgSIMDMulOp * next_node; //
265989 
265991  static unsigned long initializeStorageClassArray(SgSIMDMulOpStorageClass *); //
265992 
265994  static void clearMemoryPool(); //
265995  static void deleteMemoryPool(); //
265996 
265998  static void extendMemoryPoolForFileIO(); //
265999 
266001  static SgSIMDMulOp * getPointerFromGlobalIndex(unsigned long); //
266003  static SgSIMDMulOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
266004 
266006  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
266008  static void resetValidFreepointers(); //
266010  static unsigned long getNumberOfLastValidPointer(); //
266011 
266012 
266013 #if defined(INLINE_FUNCTIONS)
266014 
266015  inline void *operator new (size_t size);
266016 #else
266017 
266018  void *operator new (size_t size);
266019 #endif
266020 
266021  void operator delete (void* pointer, size_t size);
266022 
266023  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
266024  void operator delete (void* pointer)
266025  {
266026  // This is the generated delete operator...
266027  SgSIMDMulOp::operator delete (pointer,sizeof(SgSIMDMulOp));
266028  }
266029 
266031  static size_t numberOfNodes();
266032 
266034  static size_t memoryUsage();
266035 
266036  // End of scope which started in IR nodes specific code
266037  /* */
266038 
266039  /* name Internal Functions
266040  \brief Internal functions ... incomplete-documentation
266041 
266042  These functions have been made public as part of the design, but they are suggested for internal use
266043  or by particularly knowledgeable users for specialized tools or applications.
266044 
266045  \internal We could not make these private because they are required by user for special purposes. And
266046  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
266047 
266048  */
266049 
266050  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
266051  // overridden in every class by *generated* implementation
266053  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
266054  // MS: 06/28/02 container of names of variables or container indices
266055  // used used in the traversal to access AST successor nodes
266056  // overridden in every class by *generated* implementation
266059  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
266060 
266061  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
266062  // than all the vector copies. The implementation for these functions is generated for each class.
266064  virtual size_t get_numberOfTraversalSuccessors() override;
266066  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
266068  virtual size_t get_childIndex(SgNode *child) override;
266069 
266070 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
266071  // MS: 08/16/2002 method for generating RTI information
266073  virtual RTIReturnType roseRTI() override;
266074 #endif
266075  /* */
266076 
266077 
266078 
266079  /* name Deprecated Functions
266080  \brief Deprecated functions ... incomplete-documentation
266081 
266082  These functions have been deprecated from use.
266083  */
266084  /* */
266085 
266087  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
266088 
266089  // JJW (10/16/2008): Changed to a single function in Node.code, and put
266090  // getVariant() in #if 0 block to prevent confusing Doxygen
266091 #if 0
266092 
266093  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
266095  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
266096 #endif
266097  /* */
266098 
266099 
266100 
266101 
266102  public:
266103  /* name Traversal Support Functions
266104  \brief Traversal support functions ... incomplete-documentation
266105 
266106  These functions have been made public as part of the design, but they are suggested for internal use
266107  or by particularly knowledgable users for specialized tools or applications.
266108  */
266109  /* */
266110 
266111  // DQ (11/26/2005): Support for visitor pattern mechanims
266112  // (inferior to ROSE traversal mechanism, experimental).
266116 
266117  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
266119  virtual void accept (ROSE_VisitorPattern & visitor) override;
266120 
266121  // DQ (12/26/2005): Support for traversal based on the memory pool
266124  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
266125 
266128  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
266129 
266130  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
266131  // This traversal helps support internal tools that call static member functions.
266132  // note: this function operates on the memory pools.
266135  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
266136  /* */
266137 
266138 
266139  public:
266140  /* name Memory Allocation Functions
266141  \brief Memory allocations functions ... incomplete-documentation
266142 
266143  These functions have been made public as part of the design, but they are suggested for internal use
266144  or by particularly knowledgable users for specialized tools or applications.
266145  */
266146  /* */
266147 
266158  virtual bool isInMemoryPool() override;
266159 
266170  virtual void checkDataMemberPointersIfInMemoryPool() override;
266171 
266172  // DQ (4/30/2006): Modified to be a const function.
266187  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
266188 
266198  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
266199 
266211  virtual long getChildIndex( SgNode* childNode ) const override;
266212 
266213  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
266214  // comment here (changed to be a C style comment and not be a doxygen comment).
266215  /* \brief Constructor for use by AST File I/O Mechanism
266216 
266217  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
266218  which obtained via fast binary file I/O from disk.
266219  */
266220  // SgSIMDMulOp( SgSIMDMulOpStorageClass& source );
266221 
266222 
266223 
266224 
266225 
266226  // JH (10/24/2005): methods added to support the ast file IO
266227  private:
266228 
266229  /* name AST Memory Allocation Support Functions
266230  \brief Memory allocations support....
266231 
266232  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
266233  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
266234  and support the AST File I/O Mechanism.
266235  */
266236  /* */
266237 
266238  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
266239  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
266240  that I use the same type everywhere, if any changes are made. THe second one declares the type
266241  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
266242  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
266243  a correspinding one in the AST_FILE_IO class!
266244  */
266245  // DQ (9/2/2015): This typedef is no longer used, we can't define the
266246  // comment here (changed to be a C style comment and not be a doxygen comment).
266247  /* \brief Typedef used for low level memory access.
266248  */
266249  // typedef unsigned char* TestType;
266250 
266251  // DQ (9/2/2015): This typedef is no longer used, we can't define the
266252  // comment here (changed to be a C style comment and not be a doxygen comment).
266253  /* \brief Typedef used to hold memory addresses as values.
266254  */
266255  // typedef unsigned long AddressType;
266256 
266257 
266258 
266259  // necessary, to have direct access to the p_freepointer and the private methods !
266261  friend class AST_FILE_IO;
266262 
266264  friend class SgSIMDMulOpStorageClass;
266265 
266267  friend class AstSpecificDataManagingClass;
266268 
266270  friend class AstSpecificDataManagingClassStorageClass;
266271 
266272  public:
266274  SgSIMDMulOp( const SgSIMDMulOpStorageClass& source );
266275 
266276  // private: // JJW hack
266277  /*
266278  name AST Memory Allocation Support Variables
266279  Memory allocations support variables
266280 
266281  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
266282  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
266283  and support the AST File I/O Mechanism.
266284  */
266285  /* */
266286 
266287  public:
266288 
266289  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
266290  // to current node (so that it will work cleanly with build functions to specify patterns).
266291  // virtual SgNode* addRegExpAttribute();
266297  SgSIMDMulOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
266298 
266299 // *** COMMON CODE SECTION ENDS HERE ***
266300 
266301 
266302 // End of memberFunctionString
266303 // Start of memberFunctionString
266304 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
266305 
266306  // the generated cast function
266307  // friend ROSE_DLL_API SgSIMDMulOp* isSgSIMDMulOp ( SgNode* s );
266308 
266309  typedef SgSIMDBinaryOp base_node_type;
266310 
266311 
266312 // End of memberFunctionString
266313 // Start of memberFunctionString
266314 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
266315 
266316  void post_construction_initialization() override;
266317 
266318 
266319 // End of memberFunctionString
266320 // Start of memberFunctionString
266321 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
266322 
266323  int precedence() const override { return 16; }
266324 
266325 
266326 // End of memberFunctionString
266327 
266328 
266329  public:
266330  virtual ~SgSIMDMulOp();
266331 
266332 
266333  public:
266334  SgSIMDMulOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
266335  SgSIMDMulOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
266336 
266337  protected:
266338 
266339 
266340 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
266341 
266342 
266343  };
266344 #endif
266345 
266346 // postdeclarations for SgSIMDMulOp
266347 
266348 /* #line 266349 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
266349 
266350 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
266351 
266352 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
266353 
266354 
266355 /* #line 266356 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
266356 
266357 
266358 
266359 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
266360 
266361 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
266362 // This code is automatically generated for each
266363 // terminal and non-terminal within the defined
266364 // grammar. There is a simple way to change the
266365 // code to fix bugs etc. See the ROSE README file
266366 // for directions.
266367 
266368 // tps: (02/22/2010): Adding DLL export requirements
266369 #include "rosedll.h"
266370 
266371 // predeclarations for SgSIMDDivOp
266372 
266373 /* #line 266374 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
266374 
266375 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
266376 
266377 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
266378 
266379 #if 1
266380 // Class Definition for SgSIMDDivOp
266381 class ROSE_DLL_API SgSIMDDivOp : public SgSIMDBinaryOp
266382  {
266383  public:
266384 
266385 
266386 /* #line 266387 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
266387 
266388  virtual SgNode* copy ( SgCopyHelp& help) const override;
266389 // Start of memberFunctionString
266390 /* #line 9556 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
266391 
266392 
266393 
266394 // End of memberFunctionString
266395 // Start of memberFunctionString
266396 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
266397 
266398 // *** COMMON CODE SECTION BEGINS HERE ***
266399 
266400  public:
266401 
266402  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
266403  // and not required which is required to match the other aspects of the copy mechanism code generation.
266404  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
266405  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
266406  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
266407  // virtual SgNode* copy ( const SgCopyHelp & help) const;
266408 
266410  virtual std::string class_name() const override;
266411 
266413  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
266414 
266416  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
266417  // static const VariantT static_variant = V_SgSIMDDivOp;
266418  enum { static_variant = V_SgSIMDDivOp };
266419 
266420  /* the generated cast function */
266422  ROSE_DLL_API friend SgSIMDDivOp* isSgSIMDDivOp( SgNode * s );
266423 
266425  ROSE_DLL_API friend const SgSIMDDivOp* isSgSIMDDivOp( const SgNode * s );
266426 
266427  // ******************************************
266428  // * Memory Pool / New / Delete
266429  // ******************************************
266430 
266431  public:
266433  static const unsigned pool_size; //
266435  static std::vector<unsigned char *> pools; //
266437  static SgSIMDDivOp * next_node; //
266438 
266440  static unsigned long initializeStorageClassArray(SgSIMDDivOpStorageClass *); //
266441 
266443  static void clearMemoryPool(); //
266444  static void deleteMemoryPool(); //
266445 
266447  static void extendMemoryPoolForFileIO(); //
266448 
266450  static SgSIMDDivOp * getPointerFromGlobalIndex(unsigned long); //
266452  static SgSIMDDivOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
266453 
266455  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
266457  static void resetValidFreepointers(); //
266459  static unsigned long getNumberOfLastValidPointer(); //
266460 
266461 
266462 #if defined(INLINE_FUNCTIONS)
266463 
266464  inline void *operator new (size_t size);
266465 #else
266466 
266467  void *operator new (size_t size);
266468 #endif
266469 
266470  void operator delete (void* pointer, size_t size);
266471 
266472  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
266473  void operator delete (void* pointer)
266474  {
266475  // This is the generated delete operator...
266476  SgSIMDDivOp::operator delete (pointer,sizeof(SgSIMDDivOp));
266477  }
266478 
266480  static size_t numberOfNodes();
266481 
266483  static size_t memoryUsage();
266484 
266485  // End of scope which started in IR nodes specific code
266486  /* */
266487 
266488  /* name Internal Functions
266489  \brief Internal functions ... incomplete-documentation
266490 
266491  These functions have been made public as part of the design, but they are suggested for internal use
266492  or by particularly knowledgeable users for specialized tools or applications.
266493 
266494  \internal We could not make these private because they are required by user for special purposes. And
266495  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
266496 
266497  */
266498 
266499  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
266500  // overridden in every class by *generated* implementation
266502  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
266503  // MS: 06/28/02 container of names of variables or container indices
266504  // used used in the traversal to access AST successor nodes
266505  // overridden in every class by *generated* implementation
266508  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
266509 
266510  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
266511  // than all the vector copies. The implementation for these functions is generated for each class.
266513  virtual size_t get_numberOfTraversalSuccessors() override;
266515  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
266517  virtual size_t get_childIndex(SgNode *child) override;
266518 
266519 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
266520  // MS: 08/16/2002 method for generating RTI information
266522  virtual RTIReturnType roseRTI() override;
266523 #endif
266524  /* */
266525 
266526 
266527 
266528  /* name Deprecated Functions
266529  \brief Deprecated functions ... incomplete-documentation
266530 
266531  These functions have been deprecated from use.
266532  */
266533  /* */
266534 
266536  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
266537 
266538  // JJW (10/16/2008): Changed to a single function in Node.code, and put
266539  // getVariant() in #if 0 block to prevent confusing Doxygen
266540 #if 0
266541 
266542  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
266544  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
266545 #endif
266546  /* */
266547 
266548 
266549 
266550 
266551  public:
266552  /* name Traversal Support Functions
266553  \brief Traversal support functions ... incomplete-documentation
266554 
266555  These functions have been made public as part of the design, but they are suggested for internal use
266556  or by particularly knowledgable users for specialized tools or applications.
266557  */
266558  /* */
266559 
266560  // DQ (11/26/2005): Support for visitor pattern mechanims
266561  // (inferior to ROSE traversal mechanism, experimental).
266565 
266566  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
266568  virtual void accept (ROSE_VisitorPattern & visitor) override;
266569 
266570  // DQ (12/26/2005): Support for traversal based on the memory pool
266573  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
266574 
266577  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
266578 
266579  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
266580  // This traversal helps support internal tools that call static member functions.
266581  // note: this function operates on the memory pools.
266584  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
266585  /* */
266586 
266587 
266588  public:
266589  /* name Memory Allocation Functions
266590  \brief Memory allocations functions ... incomplete-documentation
266591 
266592  These functions have been made public as part of the design, but they are suggested for internal use
266593  or by particularly knowledgable users for specialized tools or applications.
266594  */
266595  /* */
266596 
266607  virtual bool isInMemoryPool() override;
266608 
266619  virtual void checkDataMemberPointersIfInMemoryPool() override;
266620 
266621  // DQ (4/30/2006): Modified to be a const function.
266636  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
266637 
266647  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
266648 
266660  virtual long getChildIndex( SgNode* childNode ) const override;
266661 
266662  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
266663  // comment here (changed to be a C style comment and not be a doxygen comment).
266664  /* \brief Constructor for use by AST File I/O Mechanism
266665 
266666  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
266667  which obtained via fast binary file I/O from disk.
266668  */
266669  // SgSIMDDivOp( SgSIMDDivOpStorageClass& source );
266670 
266671 
266672 
266673 
266674 
266675  // JH (10/24/2005): methods added to support the ast file IO
266676  private:
266677 
266678  /* name AST Memory Allocation Support Functions
266679  \brief Memory allocations support....
266680 
266681  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
266682  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
266683  and support the AST File I/O Mechanism.
266684  */
266685  /* */
266686 
266687  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
266688  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
266689  that I use the same type everywhere, if any changes are made. THe second one declares the type
266690  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
266691  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
266692  a correspinding one in the AST_FILE_IO class!
266693  */
266694  // DQ (9/2/2015): This typedef is no longer used, we can't define the
266695  // comment here (changed to be a C style comment and not be a doxygen comment).
266696  /* \brief Typedef used for low level memory access.
266697  */
266698  // typedef unsigned char* TestType;
266699 
266700  // DQ (9/2/2015): This typedef is no longer used, we can't define the
266701  // comment here (changed to be a C style comment and not be a doxygen comment).
266702  /* \brief Typedef used to hold memory addresses as values.
266703  */
266704  // typedef unsigned long AddressType;
266705 
266706 
266707 
266708  // necessary, to have direct access to the p_freepointer and the private methods !
266710  friend class AST_FILE_IO;
266711 
266713  friend class SgSIMDDivOpStorageClass;
266714 
266716  friend class AstSpecificDataManagingClass;
266717 
266719  friend class AstSpecificDataManagingClassStorageClass;
266720 
266721  public:
266723  SgSIMDDivOp( const SgSIMDDivOpStorageClass& source );
266724 
266725  // private: // JJW hack
266726  /*
266727  name AST Memory Allocation Support Variables
266728  Memory allocations support variables
266729 
266730  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
266731  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
266732  and support the AST File I/O Mechanism.
266733  */
266734  /* */
266735 
266736  public:
266737 
266738  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
266739  // to current node (so that it will work cleanly with build functions to specify patterns).
266740  // virtual SgNode* addRegExpAttribute();
266746  SgSIMDDivOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
266747 
266748 // *** COMMON CODE SECTION ENDS HERE ***
266749 
266750 
266751 // End of memberFunctionString
266752 // Start of memberFunctionString
266753 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
266754 
266755  // the generated cast function
266756  // friend ROSE_DLL_API SgSIMDDivOp* isSgSIMDDivOp ( SgNode* s );
266757 
266758  typedef SgSIMDBinaryOp base_node_type;
266759 
266760 
266761 // End of memberFunctionString
266762 // Start of memberFunctionString
266763 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
266764 
266765  void post_construction_initialization() override;
266766 
266767 
266768 // End of memberFunctionString
266769 // Start of memberFunctionString
266770 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
266771 
266772  int precedence() const override { return 16; }
266773 
266774 
266775 // End of memberFunctionString
266776 
266777 
266778  public:
266779  virtual ~SgSIMDDivOp();
266780 
266781 
266782  public:
266783  SgSIMDDivOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
266784  SgSIMDDivOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
266785 
266786  protected:
266787 
266788 
266789 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
266790 
266791 
266792  };
266793 #endif
266794 
266795 // postdeclarations for SgSIMDDivOp
266796 
266797 /* #line 266798 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
266798 
266799 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
266800 
266801 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
266802 
266803 
266804 /* #line 266805 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
266805 
266806 
266807 
266808 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
266809 
266810 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
266811 // This code is automatically generated for each
266812 // terminal and non-terminal within the defined
266813 // grammar. There is a simple way to change the
266814 // code to fix bugs etc. See the ROSE README file
266815 // for directions.
266816 
266817 // tps: (02/22/2010): Adding DLL export requirements
266818 #include "rosedll.h"
266819 
266820 // predeclarations for SgSIMDFmaOp
266821 
266822 /* #line 266823 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
266823 
266824 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
266825 
266826 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
266827 
266828 #if 1
266829 // Class Definition for SgSIMDFmaOp
266830 class ROSE_DLL_API SgSIMDFmaOp : public SgSIMDBinaryOp
266831  {
266832  public:
266833 
266834 
266835 /* #line 266836 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
266836 
266837  virtual SgNode* copy ( SgCopyHelp& help) const override;
266838 // Start of memberFunctionString
266839 /* #line 9560 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
266840 
266841 
266842 
266843 // End of memberFunctionString
266844 // Start of memberFunctionString
266845 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
266846 
266847 // *** COMMON CODE SECTION BEGINS HERE ***
266848 
266849  public:
266850 
266851  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
266852  // and not required which is required to match the other aspects of the copy mechanism code generation.
266853  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
266854  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
266855  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
266856  // virtual SgNode* copy ( const SgCopyHelp & help) const;
266857 
266859  virtual std::string class_name() const override;
266860 
266862  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
266863 
266865  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
266866  // static const VariantT static_variant = V_SgSIMDFmaOp;
266867  enum { static_variant = V_SgSIMDFmaOp };
266868 
266869  /* the generated cast function */
266871  ROSE_DLL_API friend SgSIMDFmaOp* isSgSIMDFmaOp( SgNode * s );
266872 
266874  ROSE_DLL_API friend const SgSIMDFmaOp* isSgSIMDFmaOp( const SgNode * s );
266875 
266876  // ******************************************
266877  // * Memory Pool / New / Delete
266878  // ******************************************
266879 
266880  public:
266882  static const unsigned pool_size; //
266884  static std::vector<unsigned char *> pools; //
266886  static SgSIMDFmaOp * next_node; //
266887 
266889  static unsigned long initializeStorageClassArray(SgSIMDFmaOpStorageClass *); //
266890 
266892  static void clearMemoryPool(); //
266893  static void deleteMemoryPool(); //
266894 
266896  static void extendMemoryPoolForFileIO(); //
266897 
266899  static SgSIMDFmaOp * getPointerFromGlobalIndex(unsigned long); //
266901  static SgSIMDFmaOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
266902 
266904  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
266906  static void resetValidFreepointers(); //
266908  static unsigned long getNumberOfLastValidPointer(); //
266909 
266910 
266911 #if defined(INLINE_FUNCTIONS)
266912 
266913  inline void *operator new (size_t size);
266914 #else
266915 
266916  void *operator new (size_t size);
266917 #endif
266918 
266919  void operator delete (void* pointer, size_t size);
266920 
266921  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
266922  void operator delete (void* pointer)
266923  {
266924  // This is the generated delete operator...
266925  SgSIMDFmaOp::operator delete (pointer,sizeof(SgSIMDFmaOp));
266926  }
266927 
266929  static size_t numberOfNodes();
266930 
266932  static size_t memoryUsage();
266933 
266934  // End of scope which started in IR nodes specific code
266935  /* */
266936 
266937  /* name Internal Functions
266938  \brief Internal functions ... incomplete-documentation
266939 
266940  These functions have been made public as part of the design, but they are suggested for internal use
266941  or by particularly knowledgeable users for specialized tools or applications.
266942 
266943  \internal We could not make these private because they are required by user for special purposes. And
266944  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
266945 
266946  */
266947 
266948  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
266949  // overridden in every class by *generated* implementation
266951  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
266952  // MS: 06/28/02 container of names of variables or container indices
266953  // used used in the traversal to access AST successor nodes
266954  // overridden in every class by *generated* implementation
266957  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
266958 
266959  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
266960  // than all the vector copies. The implementation for these functions is generated for each class.
266962  virtual size_t get_numberOfTraversalSuccessors() override;
266964  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
266966  virtual size_t get_childIndex(SgNode *child) override;
266967 
266968 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
266969  // MS: 08/16/2002 method for generating RTI information
266971  virtual RTIReturnType roseRTI() override;
266972 #endif
266973  /* */
266974 
266975 
266976 
266977  /* name Deprecated Functions
266978  \brief Deprecated functions ... incomplete-documentation
266979 
266980  These functions have been deprecated from use.
266981  */
266982  /* */
266983 
266985  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
266986 
266987  // JJW (10/16/2008): Changed to a single function in Node.code, and put
266988  // getVariant() in #if 0 block to prevent confusing Doxygen
266989 #if 0
266990 
266991  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
266993  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
266994 #endif
266995  /* */
266996 
266997 
266998 
266999 
267000  public:
267001  /* name Traversal Support Functions
267002  \brief Traversal support functions ... incomplete-documentation
267003 
267004  These functions have been made public as part of the design, but they are suggested for internal use
267005  or by particularly knowledgable users for specialized tools or applications.
267006  */
267007  /* */
267008 
267009  // DQ (11/26/2005): Support for visitor pattern mechanims
267010  // (inferior to ROSE traversal mechanism, experimental).
267014 
267015  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
267017  virtual void accept (ROSE_VisitorPattern & visitor) override;
267018 
267019  // DQ (12/26/2005): Support for traversal based on the memory pool
267022  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
267023 
267026  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
267027 
267028  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
267029  // This traversal helps support internal tools that call static member functions.
267030  // note: this function operates on the memory pools.
267033  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
267034  /* */
267035 
267036 
267037  public:
267038  /* name Memory Allocation Functions
267039  \brief Memory allocations functions ... incomplete-documentation
267040 
267041  These functions have been made public as part of the design, but they are suggested for internal use
267042  or by particularly knowledgable users for specialized tools or applications.
267043  */
267044  /* */
267045 
267056  virtual bool isInMemoryPool() override;
267057 
267068  virtual void checkDataMemberPointersIfInMemoryPool() override;
267069 
267070  // DQ (4/30/2006): Modified to be a const function.
267085  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
267086 
267096  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
267097 
267109  virtual long getChildIndex( SgNode* childNode ) const override;
267110 
267111  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
267112  // comment here (changed to be a C style comment and not be a doxygen comment).
267113  /* \brief Constructor for use by AST File I/O Mechanism
267114 
267115  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
267116  which obtained via fast binary file I/O from disk.
267117  */
267118  // SgSIMDFmaOp( SgSIMDFmaOpStorageClass& source );
267119 
267120 
267121 
267122 
267123 
267124  // JH (10/24/2005): methods added to support the ast file IO
267125  private:
267126 
267127  /* name AST Memory Allocation Support Functions
267128  \brief Memory allocations support....
267129 
267130  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
267131  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
267132  and support the AST File I/O Mechanism.
267133  */
267134  /* */
267135 
267136  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
267137  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
267138  that I use the same type everywhere, if any changes are made. THe second one declares the type
267139  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
267140  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
267141  a correspinding one in the AST_FILE_IO class!
267142  */
267143  // DQ (9/2/2015): This typedef is no longer used, we can't define the
267144  // comment here (changed to be a C style comment and not be a doxygen comment).
267145  /* \brief Typedef used for low level memory access.
267146  */
267147  // typedef unsigned char* TestType;
267148 
267149  // DQ (9/2/2015): This typedef is no longer used, we can't define the
267150  // comment here (changed to be a C style comment and not be a doxygen comment).
267151  /* \brief Typedef used to hold memory addresses as values.
267152  */
267153  // typedef unsigned long AddressType;
267154 
267155 
267156 
267157  // necessary, to have direct access to the p_freepointer and the private methods !
267159  friend class AST_FILE_IO;
267160 
267162  friend class SgSIMDFmaOpStorageClass;
267163 
267165  friend class AstSpecificDataManagingClass;
267166 
267168  friend class AstSpecificDataManagingClassStorageClass;
267169 
267170  public:
267172  SgSIMDFmaOp( const SgSIMDFmaOpStorageClass& source );
267173 
267174  // private: // JJW hack
267175  /*
267176  name AST Memory Allocation Support Variables
267177  Memory allocations support variables
267178 
267179  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
267180  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
267181  and support the AST File I/O Mechanism.
267182  */
267183  /* */
267184 
267185  public:
267186 
267187  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
267188  // to current node (so that it will work cleanly with build functions to specify patterns).
267189  // virtual SgNode* addRegExpAttribute();
267195  SgSIMDFmaOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
267196 
267197 // *** COMMON CODE SECTION ENDS HERE ***
267198 
267199 
267200 // End of memberFunctionString
267201 // Start of memberFunctionString
267202 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
267203 
267204  // the generated cast function
267205  // friend ROSE_DLL_API SgSIMDFmaOp* isSgSIMDFmaOp ( SgNode* s );
267206 
267207  typedef SgSIMDBinaryOp base_node_type;
267208 
267209 
267210 // End of memberFunctionString
267211 // Start of memberFunctionString
267212 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
267213 
267214  void post_construction_initialization() override;
267215 
267216 
267217 // End of memberFunctionString
267218 // Start of memberFunctionString
267219 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
267220 
267221  int precedence() const override { return 16; }
267222 
267223 
267224 // End of memberFunctionString
267225 
267226 
267227  public:
267228  virtual ~SgSIMDFmaOp();
267229 
267230 
267231  public:
267232  SgSIMDFmaOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
267233  SgSIMDFmaOp(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
267234 
267235  protected:
267236 
267237 
267238 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
267239 
267240 
267241  };
267242 #endif
267243 
267244 // postdeclarations for SgSIMDFmaOp
267245 
267246 /* #line 267247 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
267247 
267248 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
267249 
267250 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
267251 
267252 
267253 /* #line 267254 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
267254 
267255 
267256 
267257 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
267258 
267259 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
267260 // This code is automatically generated for each
267261 // terminal and non-terminal within the defined
267262 // grammar. There is a simple way to change the
267263 // code to fix bugs etc. See the ROSE README file
267264 // for directions.
267265 
267266 // tps: (02/22/2010): Adding DLL export requirements
267267 #include "rosedll.h"
267268 
267269 // predeclarations for SgSIMDLoad
267270 
267271 /* #line 267272 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
267272 
267273 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
267274 
267275 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
267276 
267277 #if 1
267278 // Class Definition for SgSIMDLoad
267279 class ROSE_DLL_API SgSIMDLoad : public SgBinaryOp
267280  {
267281  public:
267282 
267283 
267284 /* #line 267285 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
267285 
267286  virtual SgNode* copy ( SgCopyHelp& help) const override;
267287 // Start of memberFunctionString
267288 /* #line 9564 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
267289 
267290 
267291 
267292 // End of memberFunctionString
267293 // Start of memberFunctionString
267294 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
267295 
267296 // *** COMMON CODE SECTION BEGINS HERE ***
267297 
267298  public:
267299 
267300  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
267301  // and not required which is required to match the other aspects of the copy mechanism code generation.
267302  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
267303  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
267304  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
267305  // virtual SgNode* copy ( const SgCopyHelp & help) const;
267306 
267308  virtual std::string class_name() const override;
267309 
267311  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
267312 
267314  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
267315  // static const VariantT static_variant = V_SgSIMDLoad;
267316  enum { static_variant = V_SgSIMDLoad };
267317 
267318  /* the generated cast function */
267320  ROSE_DLL_API friend SgSIMDLoad* isSgSIMDLoad( SgNode * s );
267321 
267323  ROSE_DLL_API friend const SgSIMDLoad* isSgSIMDLoad( const SgNode * s );
267324 
267325  // ******************************************
267326  // * Memory Pool / New / Delete
267327  // ******************************************
267328 
267329  public:
267331  static const unsigned pool_size; //
267333  static std::vector<unsigned char *> pools; //
267335  static SgSIMDLoad * next_node; //
267336 
267338  static unsigned long initializeStorageClassArray(SgSIMDLoadStorageClass *); //
267339 
267341  static void clearMemoryPool(); //
267342  static void deleteMemoryPool(); //
267343 
267345  static void extendMemoryPoolForFileIO(); //
267346 
267348  static SgSIMDLoad * getPointerFromGlobalIndex(unsigned long); //
267350  static SgSIMDLoad * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
267351 
267353  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
267355  static void resetValidFreepointers(); //
267357  static unsigned long getNumberOfLastValidPointer(); //
267358 
267359 
267360 #if defined(INLINE_FUNCTIONS)
267361 
267362  inline void *operator new (size_t size);
267363 #else
267364 
267365  void *operator new (size_t size);
267366 #endif
267367 
267368  void operator delete (void* pointer, size_t size);
267369 
267370  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
267371  void operator delete (void* pointer)
267372  {
267373  // This is the generated delete operator...
267374  SgSIMDLoad::operator delete (pointer,sizeof(SgSIMDLoad));
267375  }
267376 
267378  static size_t numberOfNodes();
267379 
267381  static size_t memoryUsage();
267382 
267383  // End of scope which started in IR nodes specific code
267384  /* */
267385 
267386  /* name Internal Functions
267387  \brief Internal functions ... incomplete-documentation
267388 
267389  These functions have been made public as part of the design, but they are suggested for internal use
267390  or by particularly knowledgeable users for specialized tools or applications.
267391 
267392  \internal We could not make these private because they are required by user for special purposes. And
267393  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
267394 
267395  */
267396 
267397  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
267398  // overridden in every class by *generated* implementation
267400  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
267401  // MS: 06/28/02 container of names of variables or container indices
267402  // used used in the traversal to access AST successor nodes
267403  // overridden in every class by *generated* implementation
267406  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
267407 
267408  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
267409  // than all the vector copies. The implementation for these functions is generated for each class.
267411  virtual size_t get_numberOfTraversalSuccessors() override;
267413  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
267415  virtual size_t get_childIndex(SgNode *child) override;
267416 
267417 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
267418  // MS: 08/16/2002 method for generating RTI information
267420  virtual RTIReturnType roseRTI() override;
267421 #endif
267422  /* */
267423 
267424 
267425 
267426  /* name Deprecated Functions
267427  \brief Deprecated functions ... incomplete-documentation
267428 
267429  These functions have been deprecated from use.
267430  */
267431  /* */
267432 
267434  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
267435 
267436  // JJW (10/16/2008): Changed to a single function in Node.code, and put
267437  // getVariant() in #if 0 block to prevent confusing Doxygen
267438 #if 0
267439 
267440  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
267442  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
267443 #endif
267444  /* */
267445 
267446 
267447 
267448 
267449  public:
267450  /* name Traversal Support Functions
267451  \brief Traversal support functions ... incomplete-documentation
267452 
267453  These functions have been made public as part of the design, but they are suggested for internal use
267454  or by particularly knowledgable users for specialized tools or applications.
267455  */
267456  /* */
267457 
267458  // DQ (11/26/2005): Support for visitor pattern mechanims
267459  // (inferior to ROSE traversal mechanism, experimental).
267463 
267464  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
267466  virtual void accept (ROSE_VisitorPattern & visitor) override;
267467 
267468  // DQ (12/26/2005): Support for traversal based on the memory pool
267471  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
267472 
267475  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
267476 
267477  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
267478  // This traversal helps support internal tools that call static member functions.
267479  // note: this function operates on the memory pools.
267482  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
267483  /* */
267484 
267485 
267486  public:
267487  /* name Memory Allocation Functions
267488  \brief Memory allocations functions ... incomplete-documentation
267489 
267490  These functions have been made public as part of the design, but they are suggested for internal use
267491  or by particularly knowledgable users for specialized tools or applications.
267492  */
267493  /* */
267494 
267505  virtual bool isInMemoryPool() override;
267506 
267517  virtual void checkDataMemberPointersIfInMemoryPool() override;
267518 
267519  // DQ (4/30/2006): Modified to be a const function.
267534  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
267535 
267545  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
267546 
267558  virtual long getChildIndex( SgNode* childNode ) const override;
267559 
267560  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
267561  // comment here (changed to be a C style comment and not be a doxygen comment).
267562  /* \brief Constructor for use by AST File I/O Mechanism
267563 
267564  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
267565  which obtained via fast binary file I/O from disk.
267566  */
267567  // SgSIMDLoad( SgSIMDLoadStorageClass& source );
267568 
267569 
267570 
267571 
267572 
267573  // JH (10/24/2005): methods added to support the ast file IO
267574  private:
267575 
267576  /* name AST Memory Allocation Support Functions
267577  \brief Memory allocations support....
267578 
267579  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
267580  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
267581  and support the AST File I/O Mechanism.
267582  */
267583  /* */
267584 
267585  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
267586  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
267587  that I use the same type everywhere, if any changes are made. THe second one declares the type
267588  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
267589  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
267590  a correspinding one in the AST_FILE_IO class!
267591  */
267592  // DQ (9/2/2015): This typedef is no longer used, we can't define the
267593  // comment here (changed to be a C style comment and not be a doxygen comment).
267594  /* \brief Typedef used for low level memory access.
267595  */
267596  // typedef unsigned char* TestType;
267597 
267598  // DQ (9/2/2015): This typedef is no longer used, we can't define the
267599  // comment here (changed to be a C style comment and not be a doxygen comment).
267600  /* \brief Typedef used to hold memory addresses as values.
267601  */
267602  // typedef unsigned long AddressType;
267603 
267604 
267605 
267606  // necessary, to have direct access to the p_freepointer and the private methods !
267608  friend class AST_FILE_IO;
267609 
267611  friend class SgSIMDLoadStorageClass;
267612 
267614  friend class AstSpecificDataManagingClass;
267615 
267617  friend class AstSpecificDataManagingClassStorageClass;
267618 
267619  public:
267621  SgSIMDLoad( const SgSIMDLoadStorageClass& source );
267622 
267623  // private: // JJW hack
267624  /*
267625  name AST Memory Allocation Support Variables
267626  Memory allocations support variables
267627 
267628  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
267629  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
267630  and support the AST File I/O Mechanism.
267631  */
267632  /* */
267633 
267634  public:
267635 
267636  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
267637  // to current node (so that it will work cleanly with build functions to specify patterns).
267638  // virtual SgNode* addRegExpAttribute();
267644  SgSIMDLoad* addRegExpAttribute(std::string s, AstRegExAttribute* a);
267645 
267646 // *** COMMON CODE SECTION ENDS HERE ***
267647 
267648 
267649 // End of memberFunctionString
267650 // Start of memberFunctionString
267651 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
267652 
267653  // the generated cast function
267654  // friend ROSE_DLL_API SgSIMDLoad* isSgSIMDLoad ( SgNode* s );
267655 
267656  typedef SgBinaryOp base_node_type;
267657 
267658 
267659 // End of memberFunctionString
267660 // Start of memberFunctionString
267661 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
267662 
267663  void post_construction_initialization() override;
267664 
267665 
267666 // End of memberFunctionString
267667 // Start of memberFunctionString
267668 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
267669 
267670  int precedence() const override { return 16; }
267671 
267672 
267673 // End of memberFunctionString
267674 
267675 
267676  public:
267677  virtual ~SgSIMDLoad();
267678 
267679 
267680  public:
267681  SgSIMDLoad(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
267682  SgSIMDLoad(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
267683 
267684  protected:
267685 
267686 
267687 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
267688 
267689 
267690  };
267691 #endif
267692 
267693 // postdeclarations for SgSIMDLoad
267694 
267695 /* #line 267696 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
267696 
267697 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
267698 
267699 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
267700 
267701 
267702 /* #line 267703 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
267703 
267704 
267705 
267706 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
267707 
267708 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
267709 // This code is automatically generated for each
267710 // terminal and non-terminal within the defined
267711 // grammar. There is a simple way to change the
267712 // code to fix bugs etc. See the ROSE README file
267713 // for directions.
267714 
267715 // tps: (02/22/2010): Adding DLL export requirements
267716 #include "rosedll.h"
267717 
267718 // predeclarations for SgSIMDBroadcast
267719 
267720 /* #line 267721 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
267721 
267722 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
267723 
267724 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
267725 
267726 #if 1
267727 // Class Definition for SgSIMDBroadcast
267728 class ROSE_DLL_API SgSIMDBroadcast : public SgBinaryOp
267729  {
267730  public:
267731 
267732 
267733 /* #line 267734 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
267734 
267735  virtual SgNode* copy ( SgCopyHelp& help) const override;
267736 // Start of memberFunctionString
267737 /* #line 9572 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
267738 
267739 
267740 
267741 // End of memberFunctionString
267742 // Start of memberFunctionString
267743 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
267744 
267745 // *** COMMON CODE SECTION BEGINS HERE ***
267746 
267747  public:
267748 
267749  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
267750  // and not required which is required to match the other aspects of the copy mechanism code generation.
267751  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
267752  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
267753  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
267754  // virtual SgNode* copy ( const SgCopyHelp & help) const;
267755 
267757  virtual std::string class_name() const override;
267758 
267760  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
267761 
267763  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
267764  // static const VariantT static_variant = V_SgSIMDBroadcast;
267765  enum { static_variant = V_SgSIMDBroadcast };
267766 
267767  /* the generated cast function */
267769  ROSE_DLL_API friend SgSIMDBroadcast* isSgSIMDBroadcast( SgNode * s );
267770 
267772  ROSE_DLL_API friend const SgSIMDBroadcast* isSgSIMDBroadcast( const SgNode * s );
267773 
267774  // ******************************************
267775  // * Memory Pool / New / Delete
267776  // ******************************************
267777 
267778  public:
267780  static const unsigned pool_size; //
267782  static std::vector<unsigned char *> pools; //
267784  static SgSIMDBroadcast * next_node; //
267785 
267787  static unsigned long initializeStorageClassArray(SgSIMDBroadcastStorageClass *); //
267788 
267790  static void clearMemoryPool(); //
267791  static void deleteMemoryPool(); //
267792 
267794  static void extendMemoryPoolForFileIO(); //
267795 
267797  static SgSIMDBroadcast * getPointerFromGlobalIndex(unsigned long); //
267799  static SgSIMDBroadcast * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
267800 
267802  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
267804  static void resetValidFreepointers(); //
267806  static unsigned long getNumberOfLastValidPointer(); //
267807 
267808 
267809 #if defined(INLINE_FUNCTIONS)
267810 
267811  inline void *operator new (size_t size);
267812 #else
267813 
267814  void *operator new (size_t size);
267815 #endif
267816 
267817  void operator delete (void* pointer, size_t size);
267818 
267819  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
267820  void operator delete (void* pointer)
267821  {
267822  // This is the generated delete operator...
267823  SgSIMDBroadcast::operator delete (pointer,sizeof(SgSIMDBroadcast));
267824  }
267825 
267827  static size_t numberOfNodes();
267828 
267830  static size_t memoryUsage();
267831 
267832  // End of scope which started in IR nodes specific code
267833  /* */
267834 
267835  /* name Internal Functions
267836  \brief Internal functions ... incomplete-documentation
267837 
267838  These functions have been made public as part of the design, but they are suggested for internal use
267839  or by particularly knowledgeable users for specialized tools or applications.
267840 
267841  \internal We could not make these private because they are required by user for special purposes. And
267842  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
267843 
267844  */
267845 
267846  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
267847  // overridden in every class by *generated* implementation
267849  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
267850  // MS: 06/28/02 container of names of variables or container indices
267851  // used used in the traversal to access AST successor nodes
267852  // overridden in every class by *generated* implementation
267855  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
267856 
267857  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
267858  // than all the vector copies. The implementation for these functions is generated for each class.
267860  virtual size_t get_numberOfTraversalSuccessors() override;
267862  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
267864  virtual size_t get_childIndex(SgNode *child) override;
267865 
267866 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
267867  // MS: 08/16/2002 method for generating RTI information
267869  virtual RTIReturnType roseRTI() override;
267870 #endif
267871  /* */
267872 
267873 
267874 
267875  /* name Deprecated Functions
267876  \brief Deprecated functions ... incomplete-documentation
267877 
267878  These functions have been deprecated from use.
267879  */
267880  /* */
267881 
267883  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
267884 
267885  // JJW (10/16/2008): Changed to a single function in Node.code, and put
267886  // getVariant() in #if 0 block to prevent confusing Doxygen
267887 #if 0
267888 
267889  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
267891  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
267892 #endif
267893  /* */
267894 
267895 
267896 
267897 
267898  public:
267899  /* name Traversal Support Functions
267900  \brief Traversal support functions ... incomplete-documentation
267901 
267902  These functions have been made public as part of the design, but they are suggested for internal use
267903  or by particularly knowledgable users for specialized tools or applications.
267904  */
267905  /* */
267906 
267907  // DQ (11/26/2005): Support for visitor pattern mechanims
267908  // (inferior to ROSE traversal mechanism, experimental).
267912 
267913  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
267915  virtual void accept (ROSE_VisitorPattern & visitor) override;
267916 
267917  // DQ (12/26/2005): Support for traversal based on the memory pool
267920  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
267921 
267924  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
267925 
267926  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
267927  // This traversal helps support internal tools that call static member functions.
267928  // note: this function operates on the memory pools.
267931  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
267932  /* */
267933 
267934 
267935  public:
267936  /* name Memory Allocation Functions
267937  \brief Memory allocations functions ... incomplete-documentation
267938 
267939  These functions have been made public as part of the design, but they are suggested for internal use
267940  or by particularly knowledgable users for specialized tools or applications.
267941  */
267942  /* */
267943 
267954  virtual bool isInMemoryPool() override;
267955 
267966  virtual void checkDataMemberPointersIfInMemoryPool() override;
267967 
267968  // DQ (4/30/2006): Modified to be a const function.
267983  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
267984 
267994  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
267995 
268007  virtual long getChildIndex( SgNode* childNode ) const override;
268008 
268009  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
268010  // comment here (changed to be a C style comment and not be a doxygen comment).
268011  /* \brief Constructor for use by AST File I/O Mechanism
268012 
268013  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
268014  which obtained via fast binary file I/O from disk.
268015  */
268016  // SgSIMDBroadcast( SgSIMDBroadcastStorageClass& source );
268017 
268018 
268019 
268020 
268021 
268022  // JH (10/24/2005): methods added to support the ast file IO
268023  private:
268024 
268025  /* name AST Memory Allocation Support Functions
268026  \brief Memory allocations support....
268027 
268028  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
268029  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
268030  and support the AST File I/O Mechanism.
268031  */
268032  /* */
268033 
268034  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
268035  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
268036  that I use the same type everywhere, if any changes are made. THe second one declares the type
268037  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
268038  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
268039  a correspinding one in the AST_FILE_IO class!
268040  */
268041  // DQ (9/2/2015): This typedef is no longer used, we can't define the
268042  // comment here (changed to be a C style comment and not be a doxygen comment).
268043  /* \brief Typedef used for low level memory access.
268044  */
268045  // typedef unsigned char* TestType;
268046 
268047  // DQ (9/2/2015): This typedef is no longer used, we can't define the
268048  // comment here (changed to be a C style comment and not be a doxygen comment).
268049  /* \brief Typedef used to hold memory addresses as values.
268050  */
268051  // typedef unsigned long AddressType;
268052 
268053 
268054 
268055  // necessary, to have direct access to the p_freepointer and the private methods !
268057  friend class AST_FILE_IO;
268058 
268060  friend class SgSIMDBroadcastStorageClass;
268061 
268063  friend class AstSpecificDataManagingClass;
268064 
268066  friend class AstSpecificDataManagingClassStorageClass;
268067 
268068  public:
268070  SgSIMDBroadcast( const SgSIMDBroadcastStorageClass& source );
268071 
268072  // private: // JJW hack
268073  /*
268074  name AST Memory Allocation Support Variables
268075  Memory allocations support variables
268076 
268077  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
268078  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
268079  and support the AST File I/O Mechanism.
268080  */
268081  /* */
268082 
268083  public:
268084 
268085  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
268086  // to current node (so that it will work cleanly with build functions to specify patterns).
268087  // virtual SgNode* addRegExpAttribute();
268094 
268095 // *** COMMON CODE SECTION ENDS HERE ***
268096 
268097 
268098 // End of memberFunctionString
268099 // Start of memberFunctionString
268100 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
268101 
268102  // the generated cast function
268103  // friend ROSE_DLL_API SgSIMDBroadcast* isSgSIMDBroadcast ( SgNode* s );
268104 
268105  typedef SgBinaryOp base_node_type;
268106 
268107 
268108 // End of memberFunctionString
268109 // Start of memberFunctionString
268110 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
268111 
268112  void post_construction_initialization() override;
268113 
268114 
268115 // End of memberFunctionString
268116 // Start of memberFunctionString
268117 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
268118 
268119  int precedence() const override { return 16; }
268120 
268121 
268122 // End of memberFunctionString
268123 
268124 
268125  public:
268126  virtual ~SgSIMDBroadcast();
268127 
268128 
268129  public:
268130  SgSIMDBroadcast(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
268131  SgSIMDBroadcast(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
268132 
268133  protected:
268134 
268135 
268136 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
268137 
268138 
268139  };
268140 #endif
268141 
268142 // postdeclarations for SgSIMDBroadcast
268143 
268144 /* #line 268145 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
268145 
268146 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
268147 
268148 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
268149 
268150 
268151 /* #line 268152 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
268152 
268153 
268154 
268155 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
268156 
268157 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
268158 // This code is automatically generated for each
268159 // terminal and non-terminal within the defined
268160 // grammar. There is a simple way to change the
268161 // code to fix bugs etc. See the ROSE README file
268162 // for directions.
268163 
268164 // tps: (02/22/2010): Adding DLL export requirements
268165 #include "rosedll.h"
268166 
268167 // predeclarations for SgSIMDStore
268168 
268169 /* #line 268170 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
268170 
268171 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
268172 
268173 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
268174 
268175 #if 1
268176 // Class Definition for SgSIMDStore
268177 class ROSE_DLL_API SgSIMDStore : public SgBinaryOp
268178  {
268179  public:
268180 
268181 
268182 /* #line 268183 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
268183 
268184  virtual SgNode* copy ( SgCopyHelp& help) const override;
268185 // Start of memberFunctionString
268186 /* #line 9580 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
268187 
268188 
268189 
268190 // End of memberFunctionString
268191 // Start of memberFunctionString
268192 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
268193 
268194 // *** COMMON CODE SECTION BEGINS HERE ***
268195 
268196  public:
268197 
268198  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
268199  // and not required which is required to match the other aspects of the copy mechanism code generation.
268200  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
268201  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
268202  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
268203  // virtual SgNode* copy ( const SgCopyHelp & help) const;
268204 
268206  virtual std::string class_name() const override;
268207 
268209  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
268210 
268212  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
268213  // static const VariantT static_variant = V_SgSIMDStore;
268214  enum { static_variant = V_SgSIMDStore };
268215 
268216  /* the generated cast function */
268218  ROSE_DLL_API friend SgSIMDStore* isSgSIMDStore( SgNode * s );
268219 
268221  ROSE_DLL_API friend const SgSIMDStore* isSgSIMDStore( const SgNode * s );
268222 
268223  // ******************************************
268224  // * Memory Pool / New / Delete
268225  // ******************************************
268226 
268227  public:
268229  static const unsigned pool_size; //
268231  static std::vector<unsigned char *> pools; //
268233  static SgSIMDStore * next_node; //
268234 
268236  static unsigned long initializeStorageClassArray(SgSIMDStoreStorageClass *); //
268237 
268239  static void clearMemoryPool(); //
268240  static void deleteMemoryPool(); //
268241 
268243  static void extendMemoryPoolForFileIO(); //
268244 
268246  static SgSIMDStore * getPointerFromGlobalIndex(unsigned long); //
268248  static SgSIMDStore * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
268249 
268251  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
268253  static void resetValidFreepointers(); //
268255  static unsigned long getNumberOfLastValidPointer(); //
268256 
268257 
268258 #if defined(INLINE_FUNCTIONS)
268259 
268260  inline void *operator new (size_t size);
268261 #else
268262 
268263  void *operator new (size_t size);
268264 #endif
268265 
268266  void operator delete (void* pointer, size_t size);
268267 
268268  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
268269  void operator delete (void* pointer)
268270  {
268271  // This is the generated delete operator...
268272  SgSIMDStore::operator delete (pointer,sizeof(SgSIMDStore));
268273  }
268274 
268276  static size_t numberOfNodes();
268277 
268279  static size_t memoryUsage();
268280 
268281  // End of scope which started in IR nodes specific code
268282  /* */
268283 
268284  /* name Internal Functions
268285  \brief Internal functions ... incomplete-documentation
268286 
268287  These functions have been made public as part of the design, but they are suggested for internal use
268288  or by particularly knowledgeable users for specialized tools or applications.
268289 
268290  \internal We could not make these private because they are required by user for special purposes. And
268291  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
268292 
268293  */
268294 
268295  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
268296  // overridden in every class by *generated* implementation
268298  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
268299  // MS: 06/28/02 container of names of variables or container indices
268300  // used used in the traversal to access AST successor nodes
268301  // overridden in every class by *generated* implementation
268304  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
268305 
268306  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
268307  // than all the vector copies. The implementation for these functions is generated for each class.
268309  virtual size_t get_numberOfTraversalSuccessors() override;
268311  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
268313  virtual size_t get_childIndex(SgNode *child) override;
268314 
268315 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
268316  // MS: 08/16/2002 method for generating RTI information
268318  virtual RTIReturnType roseRTI() override;
268319 #endif
268320  /* */
268321 
268322 
268323 
268324  /* name Deprecated Functions
268325  \brief Deprecated functions ... incomplete-documentation
268326 
268327  These functions have been deprecated from use.
268328  */
268329  /* */
268330 
268332  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
268333 
268334  // JJW (10/16/2008): Changed to a single function in Node.code, and put
268335  // getVariant() in #if 0 block to prevent confusing Doxygen
268336 #if 0
268337 
268338  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
268340  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
268341 #endif
268342  /* */
268343 
268344 
268345 
268346 
268347  public:
268348  /* name Traversal Support Functions
268349  \brief Traversal support functions ... incomplete-documentation
268350 
268351  These functions have been made public as part of the design, but they are suggested for internal use
268352  or by particularly knowledgable users for specialized tools or applications.
268353  */
268354  /* */
268355 
268356  // DQ (11/26/2005): Support for visitor pattern mechanims
268357  // (inferior to ROSE traversal mechanism, experimental).
268361 
268362  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
268364  virtual void accept (ROSE_VisitorPattern & visitor) override;
268365 
268366  // DQ (12/26/2005): Support for traversal based on the memory pool
268369  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
268370 
268373  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
268374 
268375  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
268376  // This traversal helps support internal tools that call static member functions.
268377  // note: this function operates on the memory pools.
268380  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
268381  /* */
268382 
268383 
268384  public:
268385  /* name Memory Allocation Functions
268386  \brief Memory allocations functions ... incomplete-documentation
268387 
268388  These functions have been made public as part of the design, but they are suggested for internal use
268389  or by particularly knowledgable users for specialized tools or applications.
268390  */
268391  /* */
268392 
268403  virtual bool isInMemoryPool() override;
268404 
268415  virtual void checkDataMemberPointersIfInMemoryPool() override;
268416 
268417  // DQ (4/30/2006): Modified to be a const function.
268432  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
268433 
268443  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
268444 
268456  virtual long getChildIndex( SgNode* childNode ) const override;
268457 
268458  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
268459  // comment here (changed to be a C style comment and not be a doxygen comment).
268460  /* \brief Constructor for use by AST File I/O Mechanism
268461 
268462  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
268463  which obtained via fast binary file I/O from disk.
268464  */
268465  // SgSIMDStore( SgSIMDStoreStorageClass& source );
268466 
268467 
268468 
268469 
268470 
268471  // JH (10/24/2005): methods added to support the ast file IO
268472  private:
268473 
268474  /* name AST Memory Allocation Support Functions
268475  \brief Memory allocations support....
268476 
268477  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
268478  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
268479  and support the AST File I/O Mechanism.
268480  */
268481  /* */
268482 
268483  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
268484  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
268485  that I use the same type everywhere, if any changes are made. THe second one declares the type
268486  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
268487  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
268488  a correspinding one in the AST_FILE_IO class!
268489  */
268490  // DQ (9/2/2015): This typedef is no longer used, we can't define the
268491  // comment here (changed to be a C style comment and not be a doxygen comment).
268492  /* \brief Typedef used for low level memory access.
268493  */
268494  // typedef unsigned char* TestType;
268495 
268496  // DQ (9/2/2015): This typedef is no longer used, we can't define the
268497  // comment here (changed to be a C style comment and not be a doxygen comment).
268498  /* \brief Typedef used to hold memory addresses as values.
268499  */
268500  // typedef unsigned long AddressType;
268501 
268502 
268503 
268504  // necessary, to have direct access to the p_freepointer and the private methods !
268506  friend class AST_FILE_IO;
268507 
268509  friend class SgSIMDStoreStorageClass;
268510 
268512  friend class AstSpecificDataManagingClass;
268513 
268515  friend class AstSpecificDataManagingClassStorageClass;
268516 
268517  public:
268519  SgSIMDStore( const SgSIMDStoreStorageClass& source );
268520 
268521  // private: // JJW hack
268522  /*
268523  name AST Memory Allocation Support Variables
268524  Memory allocations support variables
268525 
268526  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
268527  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
268528  and support the AST File I/O Mechanism.
268529  */
268530  /* */
268531 
268532  public:
268533 
268534  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
268535  // to current node (so that it will work cleanly with build functions to specify patterns).
268536  // virtual SgNode* addRegExpAttribute();
268542  SgSIMDStore* addRegExpAttribute(std::string s, AstRegExAttribute* a);
268543 
268544 // *** COMMON CODE SECTION ENDS HERE ***
268545 
268546 
268547 // End of memberFunctionString
268548 // Start of memberFunctionString
268549 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
268550 
268551  // the generated cast function
268552  // friend ROSE_DLL_API SgSIMDStore* isSgSIMDStore ( SgNode* s );
268553 
268554  typedef SgBinaryOp base_node_type;
268555 
268556 
268557 // End of memberFunctionString
268558 // Start of memberFunctionString
268559 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
268560 
268561  void post_construction_initialization() override;
268562 
268563 
268564 // End of memberFunctionString
268565 // Start of memberFunctionString
268566 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
268567 
268568  int precedence() const override { return 16; }
268569 
268570 
268571 // End of memberFunctionString
268572 
268573 
268574  public:
268575  virtual ~SgSIMDStore();
268576 
268577 
268578  public:
268579  SgSIMDStore(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
268580  SgSIMDStore(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
268581 
268582  protected:
268583 
268584 
268585 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
268586 
268587 
268588  };
268589 #endif
268590 
268591 // postdeclarations for SgSIMDStore
268592 
268593 /* #line 268594 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
268594 
268595 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
268596 
268597 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
268598 
268599 
268600 /* #line 268601 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
268601 
268602 
268603 
268604 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
268605 
268606 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
268607 // This code is automatically generated for each
268608 // terminal and non-terminal within the defined
268609 // grammar. There is a simple way to change the
268610 // code to fix bugs etc. See the ROSE README file
268611 // for directions.
268612 
268613 // tps: (02/22/2010): Adding DLL export requirements
268614 #include "rosedll.h"
268615 
268616 // predeclarations for SgSIMDPartialStore
268617 
268618 /* #line 268619 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
268619 
268620 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
268621 
268622 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
268623 
268624 #if 1
268625 // Class Definition for SgSIMDPartialStore
268626 class ROSE_DLL_API SgSIMDPartialStore : public SgBinaryOp
268627  {
268628  public:
268629 
268630 
268631 /* #line 268632 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
268632 
268633  virtual SgNode* copy ( SgCopyHelp& help) const override;
268634 // Start of memberFunctionString
268635 /* #line 9588 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
268636 
268637 
268638 
268639 // End of memberFunctionString
268640 // Start of memberFunctionString
268641 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
268642 
268643 // *** COMMON CODE SECTION BEGINS HERE ***
268644 
268645  public:
268646 
268647  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
268648  // and not required which is required to match the other aspects of the copy mechanism code generation.
268649  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
268650  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
268651  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
268652  // virtual SgNode* copy ( const SgCopyHelp & help) const;
268653 
268655  virtual std::string class_name() const override;
268656 
268658  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
268659 
268661  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
268662  // static const VariantT static_variant = V_SgSIMDPartialStore;
268663  enum { static_variant = V_SgSIMDPartialStore };
268664 
268665  /* the generated cast function */
268667  ROSE_DLL_API friend SgSIMDPartialStore* isSgSIMDPartialStore( SgNode * s );
268668 
268670  ROSE_DLL_API friend const SgSIMDPartialStore* isSgSIMDPartialStore( const SgNode * s );
268671 
268672  // ******************************************
268673  // * Memory Pool / New / Delete
268674  // ******************************************
268675 
268676  public:
268678  static const unsigned pool_size; //
268680  static std::vector<unsigned char *> pools; //
268682  static SgSIMDPartialStore * next_node; //
268683 
268685  static unsigned long initializeStorageClassArray(SgSIMDPartialStoreStorageClass *); //
268686 
268688  static void clearMemoryPool(); //
268689  static void deleteMemoryPool(); //
268690 
268692  static void extendMemoryPoolForFileIO(); //
268693 
268695  static SgSIMDPartialStore * getPointerFromGlobalIndex(unsigned long); //
268697  static SgSIMDPartialStore * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
268698 
268700  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
268702  static void resetValidFreepointers(); //
268704  static unsigned long getNumberOfLastValidPointer(); //
268705 
268706 
268707 #if defined(INLINE_FUNCTIONS)
268708 
268709  inline void *operator new (size_t size);
268710 #else
268711 
268712  void *operator new (size_t size);
268713 #endif
268714 
268715  void operator delete (void* pointer, size_t size);
268716 
268717  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
268718  void operator delete (void* pointer)
268719  {
268720  // This is the generated delete operator...
268721  SgSIMDPartialStore::operator delete (pointer,sizeof(SgSIMDPartialStore));
268722  }
268723 
268725  static size_t numberOfNodes();
268726 
268728  static size_t memoryUsage();
268729 
268730  // End of scope which started in IR nodes specific code
268731  /* */
268732 
268733  /* name Internal Functions
268734  \brief Internal functions ... incomplete-documentation
268735 
268736  These functions have been made public as part of the design, but they are suggested for internal use
268737  or by particularly knowledgeable users for specialized tools or applications.
268738 
268739  \internal We could not make these private because they are required by user for special purposes. And
268740  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
268741 
268742  */
268743 
268744  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
268745  // overridden in every class by *generated* implementation
268747  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
268748  // MS: 06/28/02 container of names of variables or container indices
268749  // used used in the traversal to access AST successor nodes
268750  // overridden in every class by *generated* implementation
268753  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
268754 
268755  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
268756  // than all the vector copies. The implementation for these functions is generated for each class.
268758  virtual size_t get_numberOfTraversalSuccessors() override;
268760  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
268762  virtual size_t get_childIndex(SgNode *child) override;
268763 
268764 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
268765  // MS: 08/16/2002 method for generating RTI information
268767  virtual RTIReturnType roseRTI() override;
268768 #endif
268769  /* */
268770 
268771 
268772 
268773  /* name Deprecated Functions
268774  \brief Deprecated functions ... incomplete-documentation
268775 
268776  These functions have been deprecated from use.
268777  */
268778  /* */
268779 
268781  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
268782 
268783  // JJW (10/16/2008): Changed to a single function in Node.code, and put
268784  // getVariant() in #if 0 block to prevent confusing Doxygen
268785 #if 0
268786 
268787  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
268789  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
268790 #endif
268791  /* */
268792 
268793 
268794 
268795 
268796  public:
268797  /* name Traversal Support Functions
268798  \brief Traversal support functions ... incomplete-documentation
268799 
268800  These functions have been made public as part of the design, but they are suggested for internal use
268801  or by particularly knowledgable users for specialized tools or applications.
268802  */
268803  /* */
268804 
268805  // DQ (11/26/2005): Support for visitor pattern mechanims
268806  // (inferior to ROSE traversal mechanism, experimental).
268810 
268811  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
268813  virtual void accept (ROSE_VisitorPattern & visitor) override;
268814 
268815  // DQ (12/26/2005): Support for traversal based on the memory pool
268818  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
268819 
268822  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
268823 
268824  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
268825  // This traversal helps support internal tools that call static member functions.
268826  // note: this function operates on the memory pools.
268829  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
268830  /* */
268831 
268832 
268833  public:
268834  /* name Memory Allocation Functions
268835  \brief Memory allocations functions ... incomplete-documentation
268836 
268837  These functions have been made public as part of the design, but they are suggested for internal use
268838  or by particularly knowledgable users for specialized tools or applications.
268839  */
268840  /* */
268841 
268852  virtual bool isInMemoryPool() override;
268853 
268864  virtual void checkDataMemberPointersIfInMemoryPool() override;
268865 
268866  // DQ (4/30/2006): Modified to be a const function.
268881  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
268882 
268892  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
268893 
268905  virtual long getChildIndex( SgNode* childNode ) const override;
268906 
268907  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
268908  // comment here (changed to be a C style comment and not be a doxygen comment).
268909  /* \brief Constructor for use by AST File I/O Mechanism
268910 
268911  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
268912  which obtained via fast binary file I/O from disk.
268913  */
268914  // SgSIMDPartialStore( SgSIMDPartialStoreStorageClass& source );
268915 
268916 
268917 
268918 
268919 
268920  // JH (10/24/2005): methods added to support the ast file IO
268921  private:
268922 
268923  /* name AST Memory Allocation Support Functions
268924  \brief Memory allocations support....
268925 
268926  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
268927  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
268928  and support the AST File I/O Mechanism.
268929  */
268930  /* */
268931 
268932  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
268933  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
268934  that I use the same type everywhere, if any changes are made. THe second one declares the type
268935  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
268936  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
268937  a correspinding one in the AST_FILE_IO class!
268938  */
268939  // DQ (9/2/2015): This typedef is no longer used, we can't define the
268940  // comment here (changed to be a C style comment and not be a doxygen comment).
268941  /* \brief Typedef used for low level memory access.
268942  */
268943  // typedef unsigned char* TestType;
268944 
268945  // DQ (9/2/2015): This typedef is no longer used, we can't define the
268946  // comment here (changed to be a C style comment and not be a doxygen comment).
268947  /* \brief Typedef used to hold memory addresses as values.
268948  */
268949  // typedef unsigned long AddressType;
268950 
268951 
268952 
268953  // necessary, to have direct access to the p_freepointer and the private methods !
268955  friend class AST_FILE_IO;
268956 
268958  friend class SgSIMDPartialStoreStorageClass;
268959 
268961  friend class AstSpecificDataManagingClass;
268962 
268964  friend class AstSpecificDataManagingClassStorageClass;
268965 
268966  public:
268968  SgSIMDPartialStore( const SgSIMDPartialStoreStorageClass& source );
268969 
268970  // private: // JJW hack
268971  /*
268972  name AST Memory Allocation Support Variables
268973  Memory allocations support variables
268974 
268975  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
268976  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
268977  and support the AST File I/O Mechanism.
268978  */
268979  /* */
268980 
268981  public:
268982 
268983  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
268984  // to current node (so that it will work cleanly with build functions to specify patterns).
268985  // virtual SgNode* addRegExpAttribute();
268992 
268993 // *** COMMON CODE SECTION ENDS HERE ***
268994 
268995 
268996 // End of memberFunctionString
268997 // Start of memberFunctionString
268998 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
268999 
269000  // the generated cast function
269001  // friend ROSE_DLL_API SgSIMDPartialStore* isSgSIMDPartialStore ( SgNode* s );
269002 
269003  typedef SgBinaryOp base_node_type;
269004 
269005 
269006 // End of memberFunctionString
269007 // Start of memberFunctionString
269008 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
269009 
269010  void post_construction_initialization() override;
269011 
269012 
269013 // End of memberFunctionString
269014 // Start of memberFunctionString
269015 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
269016 
269017  int precedence() const override { return 16; }
269018 
269019 
269020 // End of memberFunctionString
269021 
269022 
269023  public:
269024  virtual ~SgSIMDPartialStore();
269025 
269026 
269027  public:
269028  SgSIMDPartialStore(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
269029  SgSIMDPartialStore(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
269030 
269031  protected:
269032 
269033 
269034 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
269035 
269036 
269037  };
269038 #endif
269039 
269040 // postdeclarations for SgSIMDPartialStore
269041 
269042 /* #line 269043 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
269043 
269044 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
269045 
269046 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
269047 
269048 
269049 /* #line 269050 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
269050 
269051 
269052 
269053 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
269054 
269055 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
269056 // This code is automatically generated for each
269057 // terminal and non-terminal within the defined
269058 // grammar. There is a simple way to change the
269059 // code to fix bugs etc. See the ROSE README file
269060 // for directions.
269061 
269062 // tps: (02/22/2010): Adding DLL export requirements
269063 #include "rosedll.h"
269064 
269065 // predeclarations for SgSIMDScalarStore
269066 
269067 /* #line 269068 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
269068 
269069 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
269070 
269071 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
269072 
269073 #if 1
269074 // Class Definition for SgSIMDScalarStore
269075 class ROSE_DLL_API SgSIMDScalarStore : public SgBinaryOp
269076  {
269077  public:
269078 
269079 
269080 /* #line 269081 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
269081 
269082  virtual SgNode* copy ( SgCopyHelp& help) const override;
269083 // Start of memberFunctionString
269084 /* #line 9596 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
269085 
269086 
269087 
269088 // End of memberFunctionString
269089 // Start of memberFunctionString
269090 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
269091 
269092 // *** COMMON CODE SECTION BEGINS HERE ***
269093 
269094  public:
269095 
269096  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
269097  // and not required which is required to match the other aspects of the copy mechanism code generation.
269098  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
269099  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
269100  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
269101  // virtual SgNode* copy ( const SgCopyHelp & help) const;
269102 
269104  virtual std::string class_name() const override;
269105 
269107  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
269108 
269110  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
269111  // static const VariantT static_variant = V_SgSIMDScalarStore;
269112  enum { static_variant = V_SgSIMDScalarStore };
269113 
269114  /* the generated cast function */
269116  ROSE_DLL_API friend SgSIMDScalarStore* isSgSIMDScalarStore( SgNode * s );
269117 
269119  ROSE_DLL_API friend const SgSIMDScalarStore* isSgSIMDScalarStore( const SgNode * s );
269120 
269121  // ******************************************
269122  // * Memory Pool / New / Delete
269123  // ******************************************
269124 
269125  public:
269127  static const unsigned pool_size; //
269129  static std::vector<unsigned char *> pools; //
269131  static SgSIMDScalarStore * next_node; //
269132 
269134  static unsigned long initializeStorageClassArray(SgSIMDScalarStoreStorageClass *); //
269135 
269137  static void clearMemoryPool(); //
269138  static void deleteMemoryPool(); //
269139 
269141  static void extendMemoryPoolForFileIO(); //
269142 
269144  static SgSIMDScalarStore * getPointerFromGlobalIndex(unsigned long); //
269146  static SgSIMDScalarStore * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
269147 
269149  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
269151  static void resetValidFreepointers(); //
269153  static unsigned long getNumberOfLastValidPointer(); //
269154 
269155 
269156 #if defined(INLINE_FUNCTIONS)
269157 
269158  inline void *operator new (size_t size);
269159 #else
269160 
269161  void *operator new (size_t size);
269162 #endif
269163 
269164  void operator delete (void* pointer, size_t size);
269165 
269166  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
269167  void operator delete (void* pointer)
269168  {
269169  // This is the generated delete operator...
269170  SgSIMDScalarStore::operator delete (pointer,sizeof(SgSIMDScalarStore));
269171  }
269172 
269174  static size_t numberOfNodes();
269175 
269177  static size_t memoryUsage();
269178 
269179  // End of scope which started in IR nodes specific code
269180  /* */
269181 
269182  /* name Internal Functions
269183  \brief Internal functions ... incomplete-documentation
269184 
269185  These functions have been made public as part of the design, but they are suggested for internal use
269186  or by particularly knowledgeable users for specialized tools or applications.
269187 
269188  \internal We could not make these private because they are required by user for special purposes. And
269189  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
269190 
269191  */
269192 
269193  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
269194  // overridden in every class by *generated* implementation
269196  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
269197  // MS: 06/28/02 container of names of variables or container indices
269198  // used used in the traversal to access AST successor nodes
269199  // overridden in every class by *generated* implementation
269202  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
269203 
269204  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
269205  // than all the vector copies. The implementation for these functions is generated for each class.
269207  virtual size_t get_numberOfTraversalSuccessors() override;
269209  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
269211  virtual size_t get_childIndex(SgNode *child) override;
269212 
269213 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
269214  // MS: 08/16/2002 method for generating RTI information
269216  virtual RTIReturnType roseRTI() override;
269217 #endif
269218  /* */
269219 
269220 
269221 
269222  /* name Deprecated Functions
269223  \brief Deprecated functions ... incomplete-documentation
269224 
269225  These functions have been deprecated from use.
269226  */
269227  /* */
269228 
269230  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
269231 
269232  // JJW (10/16/2008): Changed to a single function in Node.code, and put
269233  // getVariant() in #if 0 block to prevent confusing Doxygen
269234 #if 0
269235 
269236  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
269238  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
269239 #endif
269240  /* */
269241 
269242 
269243 
269244 
269245  public:
269246  /* name Traversal Support Functions
269247  \brief Traversal support functions ... incomplete-documentation
269248 
269249  These functions have been made public as part of the design, but they are suggested for internal use
269250  or by particularly knowledgable users for specialized tools or applications.
269251  */
269252  /* */
269253 
269254  // DQ (11/26/2005): Support for visitor pattern mechanims
269255  // (inferior to ROSE traversal mechanism, experimental).
269259 
269260  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
269262  virtual void accept (ROSE_VisitorPattern & visitor) override;
269263 
269264  // DQ (12/26/2005): Support for traversal based on the memory pool
269267  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
269268 
269271  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
269272 
269273  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
269274  // This traversal helps support internal tools that call static member functions.
269275  // note: this function operates on the memory pools.
269278  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
269279  /* */
269280 
269281 
269282  public:
269283  /* name Memory Allocation Functions
269284  \brief Memory allocations functions ... incomplete-documentation
269285 
269286  These functions have been made public as part of the design, but they are suggested for internal use
269287  or by particularly knowledgable users for specialized tools or applications.
269288  */
269289  /* */
269290 
269301  virtual bool isInMemoryPool() override;
269302 
269313  virtual void checkDataMemberPointersIfInMemoryPool() override;
269314 
269315  // DQ (4/30/2006): Modified to be a const function.
269330  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
269331 
269341  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
269342 
269354  virtual long getChildIndex( SgNode* childNode ) const override;
269355 
269356  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
269357  // comment here (changed to be a C style comment and not be a doxygen comment).
269358  /* \brief Constructor for use by AST File I/O Mechanism
269359 
269360  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
269361  which obtained via fast binary file I/O from disk.
269362  */
269363  // SgSIMDScalarStore( SgSIMDScalarStoreStorageClass& source );
269364 
269365 
269366 
269367 
269368 
269369  // JH (10/24/2005): methods added to support the ast file IO
269370  private:
269371 
269372  /* name AST Memory Allocation Support Functions
269373  \brief Memory allocations support....
269374 
269375  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
269376  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
269377  and support the AST File I/O Mechanism.
269378  */
269379  /* */
269380 
269381  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
269382  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
269383  that I use the same type everywhere, if any changes are made. THe second one declares the type
269384  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
269385  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
269386  a correspinding one in the AST_FILE_IO class!
269387  */
269388  // DQ (9/2/2015): This typedef is no longer used, we can't define the
269389  // comment here (changed to be a C style comment and not be a doxygen comment).
269390  /* \brief Typedef used for low level memory access.
269391  */
269392  // typedef unsigned char* TestType;
269393 
269394  // DQ (9/2/2015): This typedef is no longer used, we can't define the
269395  // comment here (changed to be a C style comment and not be a doxygen comment).
269396  /* \brief Typedef used to hold memory addresses as values.
269397  */
269398  // typedef unsigned long AddressType;
269399 
269400 
269401 
269402  // necessary, to have direct access to the p_freepointer and the private methods !
269404  friend class AST_FILE_IO;
269405 
269407  friend class SgSIMDScalarStoreStorageClass;
269408 
269410  friend class AstSpecificDataManagingClass;
269411 
269413  friend class AstSpecificDataManagingClassStorageClass;
269414 
269415  public:
269417  SgSIMDScalarStore( const SgSIMDScalarStoreStorageClass& source );
269418 
269419  // private: // JJW hack
269420  /*
269421  name AST Memory Allocation Support Variables
269422  Memory allocations support variables
269423 
269424  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
269425  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
269426  and support the AST File I/O Mechanism.
269427  */
269428  /* */
269429 
269430  public:
269431 
269432  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
269433  // to current node (so that it will work cleanly with build functions to specify patterns).
269434  // virtual SgNode* addRegExpAttribute();
269441 
269442 // *** COMMON CODE SECTION ENDS HERE ***
269443 
269444 
269445 // End of memberFunctionString
269446 // Start of memberFunctionString
269447 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
269448 
269449  // the generated cast function
269450  // friend ROSE_DLL_API SgSIMDScalarStore* isSgSIMDScalarStore ( SgNode* s );
269451 
269452  typedef SgBinaryOp base_node_type;
269453 
269454 
269455 // End of memberFunctionString
269456 // Start of memberFunctionString
269457 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
269458 
269459  void post_construction_initialization() override;
269460 
269461 
269462 // End of memberFunctionString
269463 // Start of memberFunctionString
269464 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
269465 
269466  int precedence() const override { return 16; }
269467 
269468 
269469 // End of memberFunctionString
269470 
269471 
269472  public:
269473  virtual ~SgSIMDScalarStore();
269474 
269475 
269476  public:
269477  SgSIMDScalarStore(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
269478  SgSIMDScalarStore(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
269479 
269480  protected:
269481 
269482 
269483 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
269484 
269485 
269486  };
269487 #endif
269488 
269489 // postdeclarations for SgSIMDScalarStore
269490 
269491 /* #line 269492 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
269492 
269493 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
269494 
269495 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
269496 
269497 
269498 /* #line 269499 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
269499 
269500 
269501 
269502 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
269503 
269504 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
269505 // This code is automatically generated for each
269506 // terminal and non-terminal within the defined
269507 // grammar. There is a simple way to change the
269508 // code to fix bugs etc. See the ROSE README file
269509 // for directions.
269510 
269511 // tps: (02/22/2010): Adding DLL export requirements
269512 #include "rosedll.h"
269513 
269514 // predeclarations for SgSIMDGather
269515 
269516 /* #line 269517 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
269517 
269518 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
269519 
269520 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
269521 
269522 #if 1
269523 // Class Definition for SgSIMDGather
269524 class ROSE_DLL_API SgSIMDGather : public SgBinaryOp
269525  {
269526  public:
269527 
269528 
269529 /* #line 269530 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
269530 
269531  virtual SgNode* copy ( SgCopyHelp& help) const override;
269532 // Start of memberFunctionString
269533 /* #line 9604 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
269534 
269535 
269536 
269537 // End of memberFunctionString
269538 // Start of memberFunctionString
269539 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
269540 
269541 // *** COMMON CODE SECTION BEGINS HERE ***
269542 
269543  public:
269544 
269545  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
269546  // and not required which is required to match the other aspects of the copy mechanism code generation.
269547  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
269548  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
269549  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
269550  // virtual SgNode* copy ( const SgCopyHelp & help) const;
269551 
269553  virtual std::string class_name() const override;
269554 
269556  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
269557 
269559  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
269560  // static const VariantT static_variant = V_SgSIMDGather;
269561  enum { static_variant = V_SgSIMDGather };
269562 
269563  /* the generated cast function */
269565  ROSE_DLL_API friend SgSIMDGather* isSgSIMDGather( SgNode * s );
269566 
269568  ROSE_DLL_API friend const SgSIMDGather* isSgSIMDGather( const SgNode * s );
269569 
269570  // ******************************************
269571  // * Memory Pool / New / Delete
269572  // ******************************************
269573 
269574  public:
269576  static const unsigned pool_size; //
269578  static std::vector<unsigned char *> pools; //
269580  static SgSIMDGather * next_node; //
269581 
269583  static unsigned long initializeStorageClassArray(SgSIMDGatherStorageClass *); //
269584 
269586  static void clearMemoryPool(); //
269587  static void deleteMemoryPool(); //
269588 
269590  static void extendMemoryPoolForFileIO(); //
269591 
269593  static SgSIMDGather * getPointerFromGlobalIndex(unsigned long); //
269595  static SgSIMDGather * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
269596 
269598  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
269600  static void resetValidFreepointers(); //
269602  static unsigned long getNumberOfLastValidPointer(); //
269603 
269604 
269605 #if defined(INLINE_FUNCTIONS)
269606 
269607  inline void *operator new (size_t size);
269608 #else
269609 
269610  void *operator new (size_t size);
269611 #endif
269612 
269613  void operator delete (void* pointer, size_t size);
269614 
269615  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
269616  void operator delete (void* pointer)
269617  {
269618  // This is the generated delete operator...
269619  SgSIMDGather::operator delete (pointer,sizeof(SgSIMDGather));
269620  }
269621 
269623  static size_t numberOfNodes();
269624 
269626  static size_t memoryUsage();
269627 
269628  // End of scope which started in IR nodes specific code
269629  /* */
269630 
269631  /* name Internal Functions
269632  \brief Internal functions ... incomplete-documentation
269633 
269634  These functions have been made public as part of the design, but they are suggested for internal use
269635  or by particularly knowledgeable users for specialized tools or applications.
269636 
269637  \internal We could not make these private because they are required by user for special purposes. And
269638  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
269639 
269640  */
269641 
269642  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
269643  // overridden in every class by *generated* implementation
269645  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
269646  // MS: 06/28/02 container of names of variables or container indices
269647  // used used in the traversal to access AST successor nodes
269648  // overridden in every class by *generated* implementation
269651  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
269652 
269653  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
269654  // than all the vector copies. The implementation for these functions is generated for each class.
269656  virtual size_t get_numberOfTraversalSuccessors() override;
269658  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
269660  virtual size_t get_childIndex(SgNode *child) override;
269661 
269662 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
269663  // MS: 08/16/2002 method for generating RTI information
269665  virtual RTIReturnType roseRTI() override;
269666 #endif
269667  /* */
269668 
269669 
269670 
269671  /* name Deprecated Functions
269672  \brief Deprecated functions ... incomplete-documentation
269673 
269674  These functions have been deprecated from use.
269675  */
269676  /* */
269677 
269679  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
269680 
269681  // JJW (10/16/2008): Changed to a single function in Node.code, and put
269682  // getVariant() in #if 0 block to prevent confusing Doxygen
269683 #if 0
269684 
269685  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
269687  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
269688 #endif
269689  /* */
269690 
269691 
269692 
269693 
269694  public:
269695  /* name Traversal Support Functions
269696  \brief Traversal support functions ... incomplete-documentation
269697 
269698  These functions have been made public as part of the design, but they are suggested for internal use
269699  or by particularly knowledgable users for specialized tools or applications.
269700  */
269701  /* */
269702 
269703  // DQ (11/26/2005): Support for visitor pattern mechanims
269704  // (inferior to ROSE traversal mechanism, experimental).
269708 
269709  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
269711  virtual void accept (ROSE_VisitorPattern & visitor) override;
269712 
269713  // DQ (12/26/2005): Support for traversal based on the memory pool
269716  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
269717 
269720  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
269721 
269722  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
269723  // This traversal helps support internal tools that call static member functions.
269724  // note: this function operates on the memory pools.
269727  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
269728  /* */
269729 
269730 
269731  public:
269732  /* name Memory Allocation Functions
269733  \brief Memory allocations functions ... incomplete-documentation
269734 
269735  These functions have been made public as part of the design, but they are suggested for internal use
269736  or by particularly knowledgable users for specialized tools or applications.
269737  */
269738  /* */
269739 
269750  virtual bool isInMemoryPool() override;
269751 
269762  virtual void checkDataMemberPointersIfInMemoryPool() override;
269763 
269764  // DQ (4/30/2006): Modified to be a const function.
269779  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
269780 
269790  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
269791 
269803  virtual long getChildIndex( SgNode* childNode ) const override;
269804 
269805  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
269806  // comment here (changed to be a C style comment and not be a doxygen comment).
269807  /* \brief Constructor for use by AST File I/O Mechanism
269808 
269809  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
269810  which obtained via fast binary file I/O from disk.
269811  */
269812  // SgSIMDGather( SgSIMDGatherStorageClass& source );
269813 
269814 
269815 
269816 
269817 
269818  // JH (10/24/2005): methods added to support the ast file IO
269819  private:
269820 
269821  /* name AST Memory Allocation Support Functions
269822  \brief Memory allocations support....
269823 
269824  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
269825  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
269826  and support the AST File I/O Mechanism.
269827  */
269828  /* */
269829 
269830  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
269831  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
269832  that I use the same type everywhere, if any changes are made. THe second one declares the type
269833  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
269834  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
269835  a correspinding one in the AST_FILE_IO class!
269836  */
269837  // DQ (9/2/2015): This typedef is no longer used, we can't define the
269838  // comment here (changed to be a C style comment and not be a doxygen comment).
269839  /* \brief Typedef used for low level memory access.
269840  */
269841  // typedef unsigned char* TestType;
269842 
269843  // DQ (9/2/2015): This typedef is no longer used, we can't define the
269844  // comment here (changed to be a C style comment and not be a doxygen comment).
269845  /* \brief Typedef used to hold memory addresses as values.
269846  */
269847  // typedef unsigned long AddressType;
269848 
269849 
269850 
269851  // necessary, to have direct access to the p_freepointer and the private methods !
269853  friend class AST_FILE_IO;
269854 
269856  friend class SgSIMDGatherStorageClass;
269857 
269859  friend class AstSpecificDataManagingClass;
269860 
269862  friend class AstSpecificDataManagingClassStorageClass;
269863 
269864  public:
269866  SgSIMDGather( const SgSIMDGatherStorageClass& source );
269867 
269868  // private: // JJW hack
269869  /*
269870  name AST Memory Allocation Support Variables
269871  Memory allocations support variables
269872 
269873  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
269874  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
269875  and support the AST File I/O Mechanism.
269876  */
269877  /* */
269878 
269879  public:
269880 
269881  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
269882  // to current node (so that it will work cleanly with build functions to specify patterns).
269883  // virtual SgNode* addRegExpAttribute();
269889  SgSIMDGather* addRegExpAttribute(std::string s, AstRegExAttribute* a);
269890 
269891 // *** COMMON CODE SECTION ENDS HERE ***
269892 
269893 
269894 // End of memberFunctionString
269895 // Start of memberFunctionString
269896 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
269897 
269898  // the generated cast function
269899  // friend ROSE_DLL_API SgSIMDGather* isSgSIMDGather ( SgNode* s );
269900 
269901  typedef SgBinaryOp base_node_type;
269902 
269903 
269904 // End of memberFunctionString
269905 // Start of memberFunctionString
269906 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
269907 
269908  void post_construction_initialization() override;
269909 
269910 
269911 // End of memberFunctionString
269912 // Start of memberFunctionString
269913 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
269914 
269915  int precedence() const override { return 16; }
269916 
269917 
269918 // End of memberFunctionString
269919 
269920 
269921  public:
269922  virtual ~SgSIMDGather();
269923 
269924 
269925  public:
269926  SgSIMDGather(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
269927  SgSIMDGather(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
269928 
269929  protected:
269930 
269931 
269932 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
269933 
269934 
269935  };
269936 #endif
269937 
269938 // postdeclarations for SgSIMDGather
269939 
269940 /* #line 269941 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
269941 
269942 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
269943 
269944 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
269945 
269946 
269947 /* #line 269948 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
269948 
269949 
269950 
269951 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
269952 
269953 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
269954 // This code is automatically generated for each
269955 // terminal and non-terminal within the defined
269956 // grammar. There is a simple way to change the
269957 // code to fix bugs etc. See the ROSE README file
269958 // for directions.
269959 
269960 // tps: (02/22/2010): Adding DLL export requirements
269961 #include "rosedll.h"
269962 
269963 // predeclarations for SgSIMDExplicitGather
269964 
269965 /* #line 269966 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
269966 
269967 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
269968 
269969 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
269970 
269971 #if 1
269972 // Class Definition for SgSIMDExplicitGather
269973 class ROSE_DLL_API SgSIMDExplicitGather : public SgBinaryOp
269974  {
269975  public:
269976 
269977 
269978 /* #line 269979 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
269979 
269980  virtual SgNode* copy ( SgCopyHelp& help) const override;
269981 // Start of memberFunctionString
269982 /* #line 9612 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
269983 
269984 
269985 
269986 // End of memberFunctionString
269987 // Start of memberFunctionString
269988 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
269989 
269990 // *** COMMON CODE SECTION BEGINS HERE ***
269991 
269992  public:
269993 
269994  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
269995  // and not required which is required to match the other aspects of the copy mechanism code generation.
269996  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
269997  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
269998  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
269999  // virtual SgNode* copy ( const SgCopyHelp & help) const;
270000 
270002  virtual std::string class_name() const override;
270003 
270005  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
270006 
270008  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
270009  // static const VariantT static_variant = V_SgSIMDExplicitGather;
270010  enum { static_variant = V_SgSIMDExplicitGather };
270011 
270012  /* the generated cast function */
270014  ROSE_DLL_API friend SgSIMDExplicitGather* isSgSIMDExplicitGather( SgNode * s );
270015 
270017  ROSE_DLL_API friend const SgSIMDExplicitGather* isSgSIMDExplicitGather( const SgNode * s );
270018 
270019  // ******************************************
270020  // * Memory Pool / New / Delete
270021  // ******************************************
270022 
270023  public:
270025  static const unsigned pool_size; //
270027  static std::vector<unsigned char *> pools; //
270029  static SgSIMDExplicitGather * next_node; //
270030 
270032  static unsigned long initializeStorageClassArray(SgSIMDExplicitGatherStorageClass *); //
270033 
270035  static void clearMemoryPool(); //
270036  static void deleteMemoryPool(); //
270037 
270039  static void extendMemoryPoolForFileIO(); //
270040 
270042  static SgSIMDExplicitGather * getPointerFromGlobalIndex(unsigned long); //
270044  static SgSIMDExplicitGather * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
270045 
270047  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
270049  static void resetValidFreepointers(); //
270051  static unsigned long getNumberOfLastValidPointer(); //
270052 
270053 
270054 #if defined(INLINE_FUNCTIONS)
270055 
270056  inline void *operator new (size_t size);
270057 #else
270058 
270059  void *operator new (size_t size);
270060 #endif
270061 
270062  void operator delete (void* pointer, size_t size);
270063 
270064  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
270065  void operator delete (void* pointer)
270066  {
270067  // This is the generated delete operator...
270068  SgSIMDExplicitGather::operator delete (pointer,sizeof(SgSIMDExplicitGather));
270069  }
270070 
270072  static size_t numberOfNodes();
270073 
270075  static size_t memoryUsage();
270076 
270077  // End of scope which started in IR nodes specific code
270078  /* */
270079 
270080  /* name Internal Functions
270081  \brief Internal functions ... incomplete-documentation
270082 
270083  These functions have been made public as part of the design, but they are suggested for internal use
270084  or by particularly knowledgeable users for specialized tools or applications.
270085 
270086  \internal We could not make these private because they are required by user for special purposes. And
270087  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
270088 
270089  */
270090 
270091  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
270092  // overridden in every class by *generated* implementation
270094  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
270095  // MS: 06/28/02 container of names of variables or container indices
270096  // used used in the traversal to access AST successor nodes
270097  // overridden in every class by *generated* implementation
270100  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
270101 
270102  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
270103  // than all the vector copies. The implementation for these functions is generated for each class.
270105  virtual size_t get_numberOfTraversalSuccessors() override;
270107  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
270109  virtual size_t get_childIndex(SgNode *child) override;
270110 
270111 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
270112  // MS: 08/16/2002 method for generating RTI information
270114  virtual RTIReturnType roseRTI() override;
270115 #endif
270116  /* */
270117 
270118 
270119 
270120  /* name Deprecated Functions
270121  \brief Deprecated functions ... incomplete-documentation
270122 
270123  These functions have been deprecated from use.
270124  */
270125  /* */
270126 
270128  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
270129 
270130  // JJW (10/16/2008): Changed to a single function in Node.code, and put
270131  // getVariant() in #if 0 block to prevent confusing Doxygen
270132 #if 0
270133 
270134  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
270136  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
270137 #endif
270138  /* */
270139 
270140 
270141 
270142 
270143  public:
270144  /* name Traversal Support Functions
270145  \brief Traversal support functions ... incomplete-documentation
270146 
270147  These functions have been made public as part of the design, but they are suggested for internal use
270148  or by particularly knowledgable users for specialized tools or applications.
270149  */
270150  /* */
270151 
270152  // DQ (11/26/2005): Support for visitor pattern mechanims
270153  // (inferior to ROSE traversal mechanism, experimental).
270157 
270158  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
270160  virtual void accept (ROSE_VisitorPattern & visitor) override;
270161 
270162  // DQ (12/26/2005): Support for traversal based on the memory pool
270165  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
270166 
270169  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
270170 
270171  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
270172  // This traversal helps support internal tools that call static member functions.
270173  // note: this function operates on the memory pools.
270176  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
270177  /* */
270178 
270179 
270180  public:
270181  /* name Memory Allocation Functions
270182  \brief Memory allocations functions ... incomplete-documentation
270183 
270184  These functions have been made public as part of the design, but they are suggested for internal use
270185  or by particularly knowledgable users for specialized tools or applications.
270186  */
270187  /* */
270188 
270199  virtual bool isInMemoryPool() override;
270200 
270211  virtual void checkDataMemberPointersIfInMemoryPool() override;
270212 
270213  // DQ (4/30/2006): Modified to be a const function.
270228  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
270229 
270239  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
270240 
270252  virtual long getChildIndex( SgNode* childNode ) const override;
270253 
270254  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
270255  // comment here (changed to be a C style comment and not be a doxygen comment).
270256  /* \brief Constructor for use by AST File I/O Mechanism
270257 
270258  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
270259  which obtained via fast binary file I/O from disk.
270260  */
270261  // SgSIMDExplicitGather( SgSIMDExplicitGatherStorageClass& source );
270262 
270263 
270264 
270265 
270266 
270267  // JH (10/24/2005): methods added to support the ast file IO
270268  private:
270269 
270270  /* name AST Memory Allocation Support Functions
270271  \brief Memory allocations support....
270272 
270273  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
270274  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
270275  and support the AST File I/O Mechanism.
270276  */
270277  /* */
270278 
270279  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
270280  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
270281  that I use the same type everywhere, if any changes are made. THe second one declares the type
270282  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
270283  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
270284  a correspinding one in the AST_FILE_IO class!
270285  */
270286  // DQ (9/2/2015): This typedef is no longer used, we can't define the
270287  // comment here (changed to be a C style comment and not be a doxygen comment).
270288  /* \brief Typedef used for low level memory access.
270289  */
270290  // typedef unsigned char* TestType;
270291 
270292  // DQ (9/2/2015): This typedef is no longer used, we can't define the
270293  // comment here (changed to be a C style comment and not be a doxygen comment).
270294  /* \brief Typedef used to hold memory addresses as values.
270295  */
270296  // typedef unsigned long AddressType;
270297 
270298 
270299 
270300  // necessary, to have direct access to the p_freepointer and the private methods !
270302  friend class AST_FILE_IO;
270303 
270305  friend class SgSIMDExplicitGatherStorageClass;
270306 
270308  friend class AstSpecificDataManagingClass;
270309 
270311  friend class AstSpecificDataManagingClassStorageClass;
270312 
270313  public:
270315  SgSIMDExplicitGather( const SgSIMDExplicitGatherStorageClass& source );
270316 
270317  // private: // JJW hack
270318  /*
270319  name AST Memory Allocation Support Variables
270320  Memory allocations support variables
270321 
270322  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
270323  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
270324  and support the AST File I/O Mechanism.
270325  */
270326  /* */
270327 
270328  public:
270329 
270330  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
270331  // to current node (so that it will work cleanly with build functions to specify patterns).
270332  // virtual SgNode* addRegExpAttribute();
270339 
270340 // *** COMMON CODE SECTION ENDS HERE ***
270341 
270342 
270343 // End of memberFunctionString
270344 // Start of memberFunctionString
270345 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
270346 
270347  // the generated cast function
270348  // friend ROSE_DLL_API SgSIMDExplicitGather* isSgSIMDExplicitGather ( SgNode* s );
270349 
270350  typedef SgBinaryOp base_node_type;
270351 
270352 
270353 // End of memberFunctionString
270354 // Start of memberFunctionString
270355 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
270356 
270357  void post_construction_initialization() override;
270358 
270359 
270360 // End of memberFunctionString
270361 // Start of memberFunctionString
270362 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
270363 
270364  int precedence() const override { return 16; }
270365 
270366 
270367 // End of memberFunctionString
270368 
270369 
270370  public:
270371  virtual ~SgSIMDExplicitGather();
270372 
270373 
270374  public:
270375  SgSIMDExplicitGather(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
270376  SgSIMDExplicitGather(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
270377 
270378  protected:
270379 
270380 
270381 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
270382 
270383 
270384  };
270385 #endif
270386 
270387 // postdeclarations for SgSIMDExplicitGather
270388 
270389 /* #line 270390 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
270390 
270391 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
270392 
270393 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
270394 
270395 
270396 /* #line 270397 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
270397 
270398 
270399 
270400 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
270401 
270402 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
270403 // This code is automatically generated for each
270404 // terminal and non-terminal within the defined
270405 // grammar. There is a simple way to change the
270406 // code to fix bugs etc. See the ROSE README file
270407 // for directions.
270408 
270409 // tps: (02/22/2010): Adding DLL export requirements
270410 #include "rosedll.h"
270411 
270412 // predeclarations for SgSIMDScatter
270413 
270414 /* #line 270415 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
270415 
270416 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
270417 
270418 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
270419 
270420 #if 1
270421 // Class Definition for SgSIMDScatter
270422 class ROSE_DLL_API SgSIMDScatter : public SgBinaryOp
270423  {
270424  public:
270425 
270426 
270427 /* #line 270428 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
270428 
270429  virtual SgNode* copy ( SgCopyHelp& help) const override;
270430 // Start of memberFunctionString
270431 /* #line 9620 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
270432 
270433 
270434 
270435 // End of memberFunctionString
270436 // Start of memberFunctionString
270437 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
270438 
270439 // *** COMMON CODE SECTION BEGINS HERE ***
270440 
270441  public:
270442 
270443  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
270444  // and not required which is required to match the other aspects of the copy mechanism code generation.
270445  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
270446  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
270447  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
270448  // virtual SgNode* copy ( const SgCopyHelp & help) const;
270449 
270451  virtual std::string class_name() const override;
270452 
270454  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
270455 
270457  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
270458  // static const VariantT static_variant = V_SgSIMDScatter;
270459  enum { static_variant = V_SgSIMDScatter };
270460 
270461  /* the generated cast function */
270463  ROSE_DLL_API friend SgSIMDScatter* isSgSIMDScatter( SgNode * s );
270464 
270466  ROSE_DLL_API friend const SgSIMDScatter* isSgSIMDScatter( const SgNode * s );
270467 
270468  // ******************************************
270469  // * Memory Pool / New / Delete
270470  // ******************************************
270471 
270472  public:
270474  static const unsigned pool_size; //
270476  static std::vector<unsigned char *> pools; //
270478  static SgSIMDScatter * next_node; //
270479 
270481  static unsigned long initializeStorageClassArray(SgSIMDScatterStorageClass *); //
270482 
270484  static void clearMemoryPool(); //
270485  static void deleteMemoryPool(); //
270486 
270488  static void extendMemoryPoolForFileIO(); //
270489 
270491  static SgSIMDScatter * getPointerFromGlobalIndex(unsigned long); //
270493  static SgSIMDScatter * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
270494 
270496  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
270498  static void resetValidFreepointers(); //
270500  static unsigned long getNumberOfLastValidPointer(); //
270501 
270502 
270503 #if defined(INLINE_FUNCTIONS)
270504 
270505  inline void *operator new (size_t size);
270506 #else
270507 
270508  void *operator new (size_t size);
270509 #endif
270510 
270511  void operator delete (void* pointer, size_t size);
270512 
270513  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
270514  void operator delete (void* pointer)
270515  {
270516  // This is the generated delete operator...
270517  SgSIMDScatter::operator delete (pointer,sizeof(SgSIMDScatter));
270518  }
270519 
270521  static size_t numberOfNodes();
270522 
270524  static size_t memoryUsage();
270525 
270526  // End of scope which started in IR nodes specific code
270527  /* */
270528 
270529  /* name Internal Functions
270530  \brief Internal functions ... incomplete-documentation
270531 
270532  These functions have been made public as part of the design, but they are suggested for internal use
270533  or by particularly knowledgeable users for specialized tools or applications.
270534 
270535  \internal We could not make these private because they are required by user for special purposes. And
270536  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
270537 
270538  */
270539 
270540  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
270541  // overridden in every class by *generated* implementation
270543  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
270544  // MS: 06/28/02 container of names of variables or container indices
270545  // used used in the traversal to access AST successor nodes
270546  // overridden in every class by *generated* implementation
270549  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
270550 
270551  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
270552  // than all the vector copies. The implementation for these functions is generated for each class.
270554  virtual size_t get_numberOfTraversalSuccessors() override;
270556  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
270558  virtual size_t get_childIndex(SgNode *child) override;
270559 
270560 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
270561  // MS: 08/16/2002 method for generating RTI information
270563  virtual RTIReturnType roseRTI() override;
270564 #endif
270565  /* */
270566 
270567 
270568 
270569  /* name Deprecated Functions
270570  \brief Deprecated functions ... incomplete-documentation
270571 
270572  These functions have been deprecated from use.
270573  */
270574  /* */
270575 
270577  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
270578 
270579  // JJW (10/16/2008): Changed to a single function in Node.code, and put
270580  // getVariant() in #if 0 block to prevent confusing Doxygen
270581 #if 0
270582 
270583  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
270585  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
270586 #endif
270587  /* */
270588 
270589 
270590 
270591 
270592  public:
270593  /* name Traversal Support Functions
270594  \brief Traversal support functions ... incomplete-documentation
270595 
270596  These functions have been made public as part of the design, but they are suggested for internal use
270597  or by particularly knowledgable users for specialized tools or applications.
270598  */
270599  /* */
270600 
270601  // DQ (11/26/2005): Support for visitor pattern mechanims
270602  // (inferior to ROSE traversal mechanism, experimental).
270606 
270607  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
270609  virtual void accept (ROSE_VisitorPattern & visitor) override;
270610 
270611  // DQ (12/26/2005): Support for traversal based on the memory pool
270614  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
270615 
270618  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
270619 
270620  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
270621  // This traversal helps support internal tools that call static member functions.
270622  // note: this function operates on the memory pools.
270625  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
270626  /* */
270627 
270628 
270629  public:
270630  /* name Memory Allocation Functions
270631  \brief Memory allocations functions ... incomplete-documentation
270632 
270633  These functions have been made public as part of the design, but they are suggested for internal use
270634  or by particularly knowledgable users for specialized tools or applications.
270635  */
270636  /* */
270637 
270648  virtual bool isInMemoryPool() override;
270649 
270660  virtual void checkDataMemberPointersIfInMemoryPool() override;
270661 
270662  // DQ (4/30/2006): Modified to be a const function.
270677  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
270678 
270688  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
270689 
270701  virtual long getChildIndex( SgNode* childNode ) const override;
270702 
270703  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
270704  // comment here (changed to be a C style comment and not be a doxygen comment).
270705  /* \brief Constructor for use by AST File I/O Mechanism
270706 
270707  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
270708  which obtained via fast binary file I/O from disk.
270709  */
270710  // SgSIMDScatter( SgSIMDScatterStorageClass& source );
270711 
270712 
270713 
270714 
270715 
270716  // JH (10/24/2005): methods added to support the ast file IO
270717  private:
270718 
270719  /* name AST Memory Allocation Support Functions
270720  \brief Memory allocations support....
270721 
270722  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
270723  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
270724  and support the AST File I/O Mechanism.
270725  */
270726  /* */
270727 
270728  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
270729  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
270730  that I use the same type everywhere, if any changes are made. THe second one declares the type
270731  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
270732  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
270733  a correspinding one in the AST_FILE_IO class!
270734  */
270735  // DQ (9/2/2015): This typedef is no longer used, we can't define the
270736  // comment here (changed to be a C style comment and not be a doxygen comment).
270737  /* \brief Typedef used for low level memory access.
270738  */
270739  // typedef unsigned char* TestType;
270740 
270741  // DQ (9/2/2015): This typedef is no longer used, we can't define the
270742  // comment here (changed to be a C style comment and not be a doxygen comment).
270743  /* \brief Typedef used to hold memory addresses as values.
270744  */
270745  // typedef unsigned long AddressType;
270746 
270747 
270748 
270749  // necessary, to have direct access to the p_freepointer and the private methods !
270751  friend class AST_FILE_IO;
270752 
270754  friend class SgSIMDScatterStorageClass;
270755 
270757  friend class AstSpecificDataManagingClass;
270758 
270760  friend class AstSpecificDataManagingClassStorageClass;
270761 
270762  public:
270764  SgSIMDScatter( const SgSIMDScatterStorageClass& source );
270765 
270766  // private: // JJW hack
270767  /*
270768  name AST Memory Allocation Support Variables
270769  Memory allocations support variables
270770 
270771  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
270772  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
270773  and support the AST File I/O Mechanism.
270774  */
270775  /* */
270776 
270777  public:
270778 
270779  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
270780  // to current node (so that it will work cleanly with build functions to specify patterns).
270781  // virtual SgNode* addRegExpAttribute();
270787  SgSIMDScatter* addRegExpAttribute(std::string s, AstRegExAttribute* a);
270788 
270789 // *** COMMON CODE SECTION ENDS HERE ***
270790 
270791 
270792 // End of memberFunctionString
270793 // Start of memberFunctionString
270794 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
270795 
270796  // the generated cast function
270797  // friend ROSE_DLL_API SgSIMDScatter* isSgSIMDScatter ( SgNode* s );
270798 
270799  typedef SgBinaryOp base_node_type;
270800 
270801 
270802 // End of memberFunctionString
270803 // Start of memberFunctionString
270804 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
270805 
270806  void post_construction_initialization() override;
270807 
270808 
270809 // End of memberFunctionString
270810 // Start of memberFunctionString
270811 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
270812 
270813  int precedence() const override { return 16; }
270814 
270815 
270816 // End of memberFunctionString
270817 
270818 
270819  public:
270820  virtual ~SgSIMDScatter();
270821 
270822 
270823  public:
270824  SgSIMDScatter(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand_i = NULL, SgExpression* rhs_operand_i = NULL, SgType* expression_type = NULL);
270825  SgSIMDScatter(SgExpression* lhs_operand_i, SgExpression* rhs_operand_i, SgType* expression_type);
270826 
270827  protected:
270828 
270829 
270830 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
270831 
270832 
270833  };
270834 #endif
270835 
270836 // postdeclarations for SgSIMDScatter
270837 
270838 /* #line 270839 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
270839 
270840 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
270841 
270842 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
270843 
270844 
270845 /* #line 270846 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
270846 
270847 
270848 
270849 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
270850 
270851 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
270852 // This code is automatically generated for each
270853 // terminal and non-terminal within the defined
270854 // grammar. There is a simple way to change the
270855 // code to fix bugs etc. See the ROSE README file
270856 // for directions.
270857 
270858 // tps: (02/22/2010): Adding DLL export requirements
270859 #include "rosedll.h"
270860 
270861 // predeclarations for SgExprListExp
270862 
270863 /* #line 270864 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
270864 
270865 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
270866 
270867 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
270868 
270869 #if 1
270870 // Class Definition for SgExprListExp
270871 class ROSE_DLL_API SgExprListExp : public SgExpression
270872  {
270873  public:
270874 
270875 
270876 /* #line 270877 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
270877 
270878  virtual SgNode* copy ( SgCopyHelp& help) const override;
270879 // Start of memberFunctionString
270880 /* #line 260 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
270881 
270882 
270883  SgExpressionPtrList& get_expressions();
270884  const SgExpressionPtrList& get_expressions() const;
270885  void set_expressions(SgExpressionPtrList e_list);
270886 
270887 /* #line 196 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
270888 
270889  void append_expression(SgExpression* what);
270890  // void insert_expression(const SgExpression::iterator & where, SgExpression* what);
270891  // void insert_expression(const SgExpressionPtrList::iterator & where, SgExpression* what);
270892 
270893 
270894 
270895  void prepend_expression(SgExpression *what);
270896 
270897  bool empty() const ROSE_DEPRECATED_FUNCTION;
270898 
270899  //SgExpression* get_first() const ROSE_DEPRECATED_FUNCTION;
270900  //SgExpression* get_end() const ROSE_DEPRECATED_FUNCTION;
270901  //int get_index(SgExpression*) const ROSE_DEPRECATED_FUNCTION;
270902 
270903  // void insert_expression(const SgExpressionPtrList::iterator &, SgExpression*);
270904  // void insert_expression( SgExpression*, SgExpression*, int);
270905 
270906  int replace_expression(SgExpression *o, SgExpression *n) override ROSE_DEPRECATED_FUNCTION;
270907 
270908 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
270909  virtual unsigned int cfgIndexForEnd() const override;
270910  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
270911  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
270912 #endif
270913 
270914  // get lvalue
270915  virtual bool isChildUsedAsLValue(const SgExpression* child) const override; // INTERNAL Recursively call up the chain to answer the child
270916 
270917 
270918 // End of memberFunctionString
270919 // Start of memberFunctionString
270920 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
270921 
270922 // *** COMMON CODE SECTION BEGINS HERE ***
270923 
270924  public:
270925 
270926  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
270927  // and not required which is required to match the other aspects of the copy mechanism code generation.
270928  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
270929  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
270930  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
270931  // virtual SgNode* copy ( const SgCopyHelp & help) const;
270932 
270934  virtual std::string class_name() const override;
270935 
270937  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
270938 
270940  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
270941  // static const VariantT static_variant = V_SgExprListExp;
270942  enum { static_variant = V_SgExprListExp };
270943 
270944  /* the generated cast function */
270946  ROSE_DLL_API friend SgExprListExp* isSgExprListExp( SgNode * s );
270947 
270949  ROSE_DLL_API friend const SgExprListExp* isSgExprListExp( const SgNode * s );
270950 
270951  // ******************************************
270952  // * Memory Pool / New / Delete
270953  // ******************************************
270954 
270955  public:
270957  static const unsigned pool_size; //
270959  static std::vector<unsigned char *> pools; //
270961  static SgExprListExp * next_node; //
270962 
270964  static unsigned long initializeStorageClassArray(SgExprListExpStorageClass *); //
270965 
270967  static void clearMemoryPool(); //
270968  static void deleteMemoryPool(); //
270969 
270971  static void extendMemoryPoolForFileIO(); //
270972 
270974  static SgExprListExp * getPointerFromGlobalIndex(unsigned long); //
270976  static SgExprListExp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
270977 
270979  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
270981  static void resetValidFreepointers(); //
270983  static unsigned long getNumberOfLastValidPointer(); //
270984 
270985 
270986 #if defined(INLINE_FUNCTIONS)
270987 
270988  inline void *operator new (size_t size);
270989 #else
270990 
270991  void *operator new (size_t size);
270992 #endif
270993 
270994  void operator delete (void* pointer, size_t size);
270995 
270996  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
270997  void operator delete (void* pointer)
270998  {
270999  // This is the generated delete operator...
271000  SgExprListExp::operator delete (pointer,sizeof(SgExprListExp));
271001  }
271002 
271004  static size_t numberOfNodes();
271005 
271007  static size_t memoryUsage();
271008 
271009  // End of scope which started in IR nodes specific code
271010  /* */
271011 
271012  /* name Internal Functions
271013  \brief Internal functions ... incomplete-documentation
271014 
271015  These functions have been made public as part of the design, but they are suggested for internal use
271016  or by particularly knowledgeable users for specialized tools or applications.
271017 
271018  \internal We could not make these private because they are required by user for special purposes. And
271019  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
271020 
271021  */
271022 
271023  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
271024  // overridden in every class by *generated* implementation
271026  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
271027  // MS: 06/28/02 container of names of variables or container indices
271028  // used used in the traversal to access AST successor nodes
271029  // overridden in every class by *generated* implementation
271032  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
271033 
271034  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
271035  // than all the vector copies. The implementation for these functions is generated for each class.
271037  virtual size_t get_numberOfTraversalSuccessors() override;
271039  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
271041  virtual size_t get_childIndex(SgNode *child) override;
271042 
271043 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
271044  // MS: 08/16/2002 method for generating RTI information
271046  virtual RTIReturnType roseRTI() override;
271047 #endif
271048  /* */
271049 
271050 
271051 
271052  /* name Deprecated Functions
271053  \brief Deprecated functions ... incomplete-documentation
271054 
271055  These functions have been deprecated from use.
271056  */
271057  /* */
271058 
271060  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
271061 
271062  // JJW (10/16/2008): Changed to a single function in Node.code, and put
271063  // getVariant() in #if 0 block to prevent confusing Doxygen
271064 #if 0
271065 
271066  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
271068  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
271069 #endif
271070  /* */
271071 
271072 
271073 
271074 
271075  public:
271076  /* name Traversal Support Functions
271077  \brief Traversal support functions ... incomplete-documentation
271078 
271079  These functions have been made public as part of the design, but they are suggested for internal use
271080  or by particularly knowledgable users for specialized tools or applications.
271081  */
271082  /* */
271083 
271084  // DQ (11/26/2005): Support for visitor pattern mechanims
271085  // (inferior to ROSE traversal mechanism, experimental).
271089 
271090  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
271092  virtual void accept (ROSE_VisitorPattern & visitor) override;
271093 
271094  // DQ (12/26/2005): Support for traversal based on the memory pool
271097  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
271098 
271101  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
271102 
271103  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
271104  // This traversal helps support internal tools that call static member functions.
271105  // note: this function operates on the memory pools.
271108  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
271109  /* */
271110 
271111 
271112  public:
271113  /* name Memory Allocation Functions
271114  \brief Memory allocations functions ... incomplete-documentation
271115 
271116  These functions have been made public as part of the design, but they are suggested for internal use
271117  or by particularly knowledgable users for specialized tools or applications.
271118  */
271119  /* */
271120 
271131  virtual bool isInMemoryPool() override;
271132 
271143  virtual void checkDataMemberPointersIfInMemoryPool() override;
271144 
271145  // DQ (4/30/2006): Modified to be a const function.
271160  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
271161 
271171  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
271172 
271184  virtual long getChildIndex( SgNode* childNode ) const override;
271185 
271186  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
271187  // comment here (changed to be a C style comment and not be a doxygen comment).
271188  /* \brief Constructor for use by AST File I/O Mechanism
271189 
271190  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
271191  which obtained via fast binary file I/O from disk.
271192  */
271193  // SgExprListExp( SgExprListExpStorageClass& source );
271194 
271195 
271196 
271197 
271198 
271199  // JH (10/24/2005): methods added to support the ast file IO
271200  private:
271201 
271202  /* name AST Memory Allocation Support Functions
271203  \brief Memory allocations support....
271204 
271205  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
271206  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
271207  and support the AST File I/O Mechanism.
271208  */
271209  /* */
271210 
271211  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
271212  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
271213  that I use the same type everywhere, if any changes are made. THe second one declares the type
271214  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
271215  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
271216  a correspinding one in the AST_FILE_IO class!
271217  */
271218  // DQ (9/2/2015): This typedef is no longer used, we can't define the
271219  // comment here (changed to be a C style comment and not be a doxygen comment).
271220  /* \brief Typedef used for low level memory access.
271221  */
271222  // typedef unsigned char* TestType;
271223 
271224  // DQ (9/2/2015): This typedef is no longer used, we can't define the
271225  // comment here (changed to be a C style comment and not be a doxygen comment).
271226  /* \brief Typedef used to hold memory addresses as values.
271227  */
271228  // typedef unsigned long AddressType;
271229 
271230 
271231 
271232  // necessary, to have direct access to the p_freepointer and the private methods !
271234  friend class AST_FILE_IO;
271235 
271237  friend class SgExprListExpStorageClass;
271238 
271240  friend class AstSpecificDataManagingClass;
271241 
271243  friend class AstSpecificDataManagingClassStorageClass;
271244 
271245  public:
271247  SgExprListExp( const SgExprListExpStorageClass& source );
271248 
271249  // private: // JJW hack
271250  /*
271251  name AST Memory Allocation Support Variables
271252  Memory allocations support variables
271253 
271254  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
271255  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
271256  and support the AST File I/O Mechanism.
271257  */
271258  /* */
271259 
271260  public:
271261 
271262  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
271263  // to current node (so that it will work cleanly with build functions to specify patterns).
271264  // virtual SgNode* addRegExpAttribute();
271270  SgExprListExp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
271271 
271272 // *** COMMON CODE SECTION ENDS HERE ***
271273 
271274 
271275 // End of memberFunctionString
271276 // Start of memberFunctionString
271277 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
271278 
271279  // the generated cast function
271280  // friend ROSE_DLL_API SgExprListExp* isSgExprListExp ( SgNode* s );
271281 
271282  typedef SgExpression base_node_type;
271283 
271284 
271285 // End of memberFunctionString
271286 // Start of memberFunctionString
271287 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
271288 
271289  SgType* get_type() const override;
271290 
271291 
271292 // End of memberFunctionString
271293 // Start of memberFunctionString
271294 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
271295 
271296  void post_construction_initialization() override;
271297 
271298 
271299 // End of memberFunctionString
271300 
271301 
271302 
271303  public:
271304  virtual ~SgExprListExp();
271305 
271306 
271307  public:
271308  SgExprListExp(Sg_File_Info* startOfConstruct );
271309  SgExprListExp();
271310 
271311  protected:
271312 // Start of memberFunctionString
271313 SgExpressionPtrList p_expressions;
271314 
271315 // End of memberFunctionString
271316 
271317 
271318 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
271319 
271320 
271321  };
271322 #endif
271323 
271324 // postdeclarations for SgExprListExp
271325 
271326 /* #line 271327 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
271327 
271328 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
271329 
271330 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
271331 
271332 
271333 /* #line 271334 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
271334 
271335 
271336 
271337 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
271338 
271339 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
271340 // This code is automatically generated for each
271341 // terminal and non-terminal within the defined
271342 // grammar. There is a simple way to change the
271343 // code to fix bugs etc. See the ROSE README file
271344 // for directions.
271345 
271346 // tps: (02/22/2010): Adding DLL export requirements
271347 #include "rosedll.h"
271348 
271349 // predeclarations for SgListExp
271350 
271351 /* #line 271352 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
271352 
271353 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
271354 
271355 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
271356 
271357 #if 1
271358 // Class Definition for SgListExp
271359 class ROSE_DLL_API SgListExp : public SgExprListExp
271360  {
271361  public:
271362 
271363 
271364 /* #line 271365 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
271365 
271366  virtual SgNode* copy ( SgCopyHelp& help) const override;
271367 // Start of memberFunctionString
271368 /* #line 1373 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
271369 
271370 
271371 
271372 // End of memberFunctionString
271373 // Start of memberFunctionString
271374 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
271375 
271376 // *** COMMON CODE SECTION BEGINS HERE ***
271377 
271378  public:
271379 
271380  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
271381  // and not required which is required to match the other aspects of the copy mechanism code generation.
271382  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
271383  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
271384  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
271385  // virtual SgNode* copy ( const SgCopyHelp & help) const;
271386 
271388  virtual std::string class_name() const override;
271389 
271391  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
271392 
271394  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
271395  // static const VariantT static_variant = V_SgListExp;
271396  enum { static_variant = V_SgListExp };
271397 
271398  /* the generated cast function */
271400  ROSE_DLL_API friend SgListExp* isSgListExp( SgNode * s );
271401 
271403  ROSE_DLL_API friend const SgListExp* isSgListExp( const SgNode * s );
271404 
271405  // ******************************************
271406  // * Memory Pool / New / Delete
271407  // ******************************************
271408 
271409  public:
271411  static const unsigned pool_size; //
271413  static std::vector<unsigned char *> pools; //
271415  static SgListExp * next_node; //
271416 
271418  static unsigned long initializeStorageClassArray(SgListExpStorageClass *); //
271419 
271421  static void clearMemoryPool(); //
271422  static void deleteMemoryPool(); //
271423 
271425  static void extendMemoryPoolForFileIO(); //
271426 
271428  static SgListExp * getPointerFromGlobalIndex(unsigned long); //
271430  static SgListExp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
271431 
271433  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
271435  static void resetValidFreepointers(); //
271437  static unsigned long getNumberOfLastValidPointer(); //
271438 
271439 
271440 #if defined(INLINE_FUNCTIONS)
271441 
271442  inline void *operator new (size_t size);
271443 #else
271444 
271445  void *operator new (size_t size);
271446 #endif
271447 
271448  void operator delete (void* pointer, size_t size);
271449 
271450  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
271451  void operator delete (void* pointer)
271452  {
271453  // This is the generated delete operator...
271454  SgListExp::operator delete (pointer,sizeof(SgListExp));
271455  }
271456 
271458  static size_t numberOfNodes();
271459 
271461  static size_t memoryUsage();
271462 
271463  // End of scope which started in IR nodes specific code
271464  /* */
271465 
271466  /* name Internal Functions
271467  \brief Internal functions ... incomplete-documentation
271468 
271469  These functions have been made public as part of the design, but they are suggested for internal use
271470  or by particularly knowledgeable users for specialized tools or applications.
271471 
271472  \internal We could not make these private because they are required by user for special purposes. And
271473  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
271474 
271475  */
271476 
271477  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
271478  // overridden in every class by *generated* implementation
271480  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
271481  // MS: 06/28/02 container of names of variables or container indices
271482  // used used in the traversal to access AST successor nodes
271483  // overridden in every class by *generated* implementation
271486  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
271487 
271488  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
271489  // than all the vector copies. The implementation for these functions is generated for each class.
271491  virtual size_t get_numberOfTraversalSuccessors() override;
271493  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
271495  virtual size_t get_childIndex(SgNode *child) override;
271496 
271497 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
271498  // MS: 08/16/2002 method for generating RTI information
271500  virtual RTIReturnType roseRTI() override;
271501 #endif
271502  /* */
271503 
271504 
271505 
271506  /* name Deprecated Functions
271507  \brief Deprecated functions ... incomplete-documentation
271508 
271509  These functions have been deprecated from use.
271510  */
271511  /* */
271512 
271514  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
271515 
271516  // JJW (10/16/2008): Changed to a single function in Node.code, and put
271517  // getVariant() in #if 0 block to prevent confusing Doxygen
271518 #if 0
271519 
271520  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
271522  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
271523 #endif
271524  /* */
271525 
271526 
271527 
271528 
271529  public:
271530  /* name Traversal Support Functions
271531  \brief Traversal support functions ... incomplete-documentation
271532 
271533  These functions have been made public as part of the design, but they are suggested for internal use
271534  or by particularly knowledgable users for specialized tools or applications.
271535  */
271536  /* */
271537 
271538  // DQ (11/26/2005): Support for visitor pattern mechanims
271539  // (inferior to ROSE traversal mechanism, experimental).
271543 
271544  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
271546  virtual void accept (ROSE_VisitorPattern & visitor) override;
271547 
271548  // DQ (12/26/2005): Support for traversal based on the memory pool
271551  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
271552 
271555  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
271556 
271557  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
271558  // This traversal helps support internal tools that call static member functions.
271559  // note: this function operates on the memory pools.
271562  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
271563  /* */
271564 
271565 
271566  public:
271567  /* name Memory Allocation Functions
271568  \brief Memory allocations functions ... incomplete-documentation
271569 
271570  These functions have been made public as part of the design, but they are suggested for internal use
271571  or by particularly knowledgable users for specialized tools or applications.
271572  */
271573  /* */
271574 
271585  virtual bool isInMemoryPool() override;
271586 
271597  virtual void checkDataMemberPointersIfInMemoryPool() override;
271598 
271599  // DQ (4/30/2006): Modified to be a const function.
271614  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
271615 
271625  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
271626 
271638  virtual long getChildIndex( SgNode* childNode ) const override;
271639 
271640  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
271641  // comment here (changed to be a C style comment and not be a doxygen comment).
271642  /* \brief Constructor for use by AST File I/O Mechanism
271643 
271644  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
271645  which obtained via fast binary file I/O from disk.
271646  */
271647  // SgListExp( SgListExpStorageClass& source );
271648 
271649 
271650 
271651 
271652 
271653  // JH (10/24/2005): methods added to support the ast file IO
271654  private:
271655 
271656  /* name AST Memory Allocation Support Functions
271657  \brief Memory allocations support....
271658 
271659  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
271660  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
271661  and support the AST File I/O Mechanism.
271662  */
271663  /* */
271664 
271665  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
271666  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
271667  that I use the same type everywhere, if any changes are made. THe second one declares the type
271668  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
271669  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
271670  a correspinding one in the AST_FILE_IO class!
271671  */
271672  // DQ (9/2/2015): This typedef is no longer used, we can't define the
271673  // comment here (changed to be a C style comment and not be a doxygen comment).
271674  /* \brief Typedef used for low level memory access.
271675  */
271676  // typedef unsigned char* TestType;
271677 
271678  // DQ (9/2/2015): This typedef is no longer used, we can't define the
271679  // comment here (changed to be a C style comment and not be a doxygen comment).
271680  /* \brief Typedef used to hold memory addresses as values.
271681  */
271682  // typedef unsigned long AddressType;
271683 
271684 
271685 
271686  // necessary, to have direct access to the p_freepointer and the private methods !
271688  friend class AST_FILE_IO;
271689 
271691  friend class SgListExpStorageClass;
271692 
271694  friend class AstSpecificDataManagingClass;
271695 
271697  friend class AstSpecificDataManagingClassStorageClass;
271698 
271699  public:
271701  SgListExp( const SgListExpStorageClass& source );
271702 
271703  // private: // JJW hack
271704  /*
271705  name AST Memory Allocation Support Variables
271706  Memory allocations support variables
271707 
271708  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
271709  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
271710  and support the AST File I/O Mechanism.
271711  */
271712  /* */
271713 
271714  public:
271715 
271716  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
271717  // to current node (so that it will work cleanly with build functions to specify patterns).
271718  // virtual SgNode* addRegExpAttribute();
271724  SgListExp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
271725 
271726 // *** COMMON CODE SECTION ENDS HERE ***
271727 
271728 
271729 // End of memberFunctionString
271730 // Start of memberFunctionString
271731 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
271732 
271733  // the generated cast function
271734  // friend ROSE_DLL_API SgListExp* isSgListExp ( SgNode* s );
271735 
271736  typedef SgExprListExp base_node_type;
271737 
271738 
271739 // End of memberFunctionString
271740 // Start of memberFunctionString
271741 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
271742 
271743  SgType* get_type() const override;
271744 
271745 
271746 // End of memberFunctionString
271747 // Start of memberFunctionString
271748 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
271749 
271750  void post_construction_initialization() override;
271751 
271752 
271753 // End of memberFunctionString
271754 
271755 
271756  public:
271757  virtual ~SgListExp();
271758 
271759 
271760  public:
271761  SgListExp(Sg_File_Info* startOfConstruct );
271762  SgListExp();
271763 
271764  protected:
271765 
271766 
271767 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
271768 
271769 
271770  };
271771 #endif
271772 
271773 // postdeclarations for SgListExp
271774 
271775 /* #line 271776 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
271776 
271777 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
271778 
271779 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
271780 
271781 
271782 /* #line 271783 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
271783 
271784 
271785 
271786 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
271787 
271788 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
271789 // This code is automatically generated for each
271790 // terminal and non-terminal within the defined
271791 // grammar. There is a simple way to change the
271792 // code to fix bugs etc. See the ROSE README file
271793 // for directions.
271794 
271795 // tps: (02/22/2010): Adding DLL export requirements
271796 #include "rosedll.h"
271797 
271798 // predeclarations for SgTupleExp
271799 
271800 /* #line 271801 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
271801 
271802 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
271803 
271804 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
271805 
271806 #if 1
271807 // Class Definition for SgTupleExp
271808 class ROSE_DLL_API SgTupleExp : public SgExprListExp
271809  {
271810  public:
271811 
271812 
271813 /* #line 271814 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
271814 
271815  virtual SgNode* copy ( SgCopyHelp& help) const override;
271816 // Start of memberFunctionString
271817 /* #line 1370 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
271818 
271819 
271820 
271821 // End of memberFunctionString
271822 // Start of memberFunctionString
271823 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
271824 
271825 // *** COMMON CODE SECTION BEGINS HERE ***
271826 
271827  public:
271828 
271829  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
271830  // and not required which is required to match the other aspects of the copy mechanism code generation.
271831  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
271832  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
271833  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
271834  // virtual SgNode* copy ( const SgCopyHelp & help) const;
271835 
271837  virtual std::string class_name() const override;
271838 
271840  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
271841 
271843  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
271844  // static const VariantT static_variant = V_SgTupleExp;
271845  enum { static_variant = V_SgTupleExp };
271846 
271847  /* the generated cast function */
271849  ROSE_DLL_API friend SgTupleExp* isSgTupleExp( SgNode * s );
271850 
271852  ROSE_DLL_API friend const SgTupleExp* isSgTupleExp( const SgNode * s );
271853 
271854  // ******************************************
271855  // * Memory Pool / New / Delete
271856  // ******************************************
271857 
271858  public:
271860  static const unsigned pool_size; //
271862  static std::vector<unsigned char *> pools; //
271864  static SgTupleExp * next_node; //
271865 
271867  static unsigned long initializeStorageClassArray(SgTupleExpStorageClass *); //
271868 
271870  static void clearMemoryPool(); //
271871  static void deleteMemoryPool(); //
271872 
271874  static void extendMemoryPoolForFileIO(); //
271875 
271877  static SgTupleExp * getPointerFromGlobalIndex(unsigned long); //
271879  static SgTupleExp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
271880 
271882  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
271884  static void resetValidFreepointers(); //
271886  static unsigned long getNumberOfLastValidPointer(); //
271887 
271888 
271889 #if defined(INLINE_FUNCTIONS)
271890 
271891  inline void *operator new (size_t size);
271892 #else
271893 
271894  void *operator new (size_t size);
271895 #endif
271896 
271897  void operator delete (void* pointer, size_t size);
271898 
271899  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
271900  void operator delete (void* pointer)
271901  {
271902  // This is the generated delete operator...
271903  SgTupleExp::operator delete (pointer,sizeof(SgTupleExp));
271904  }
271905 
271907  static size_t numberOfNodes();
271908 
271910  static size_t memoryUsage();
271911 
271912  // End of scope which started in IR nodes specific code
271913  /* */
271914 
271915  /* name Internal Functions
271916  \brief Internal functions ... incomplete-documentation
271917 
271918  These functions have been made public as part of the design, but they are suggested for internal use
271919  or by particularly knowledgeable users for specialized tools or applications.
271920 
271921  \internal We could not make these private because they are required by user for special purposes. And
271922  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
271923 
271924  */
271925 
271926  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
271927  // overridden in every class by *generated* implementation
271929  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
271930  // MS: 06/28/02 container of names of variables or container indices
271931  // used used in the traversal to access AST successor nodes
271932  // overridden in every class by *generated* implementation
271935  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
271936 
271937  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
271938  // than all the vector copies. The implementation for these functions is generated for each class.
271940  virtual size_t get_numberOfTraversalSuccessors() override;
271942  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
271944  virtual size_t get_childIndex(SgNode *child) override;
271945 
271946 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
271947  // MS: 08/16/2002 method for generating RTI information
271949  virtual RTIReturnType roseRTI() override;
271950 #endif
271951  /* */
271952 
271953 
271954 
271955  /* name Deprecated Functions
271956  \brief Deprecated functions ... incomplete-documentation
271957 
271958  These functions have been deprecated from use.
271959  */
271960  /* */
271961 
271963  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
271964 
271965  // JJW (10/16/2008): Changed to a single function in Node.code, and put
271966  // getVariant() in #if 0 block to prevent confusing Doxygen
271967 #if 0
271968 
271969  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
271971  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
271972 #endif
271973  /* */
271974 
271975 
271976 
271977 
271978  public:
271979  /* name Traversal Support Functions
271980  \brief Traversal support functions ... incomplete-documentation
271981 
271982  These functions have been made public as part of the design, but they are suggested for internal use
271983  or by particularly knowledgable users for specialized tools or applications.
271984  */
271985  /* */
271986 
271987  // DQ (11/26/2005): Support for visitor pattern mechanims
271988  // (inferior to ROSE traversal mechanism, experimental).
271992 
271993  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
271995  virtual void accept (ROSE_VisitorPattern & visitor) override;
271996 
271997  // DQ (12/26/2005): Support for traversal based on the memory pool
272000  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
272001 
272004  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
272005 
272006  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
272007  // This traversal helps support internal tools that call static member functions.
272008  // note: this function operates on the memory pools.
272011  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
272012  /* */
272013 
272014 
272015  public:
272016  /* name Memory Allocation Functions
272017  \brief Memory allocations functions ... incomplete-documentation
272018 
272019  These functions have been made public as part of the design, but they are suggested for internal use
272020  or by particularly knowledgable users for specialized tools or applications.
272021  */
272022  /* */
272023 
272034  virtual bool isInMemoryPool() override;
272035 
272046  virtual void checkDataMemberPointersIfInMemoryPool() override;
272047 
272048  // DQ (4/30/2006): Modified to be a const function.
272063  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
272064 
272074  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
272075 
272087  virtual long getChildIndex( SgNode* childNode ) const override;
272088 
272089  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
272090  // comment here (changed to be a C style comment and not be a doxygen comment).
272091  /* \brief Constructor for use by AST File I/O Mechanism
272092 
272093  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
272094  which obtained via fast binary file I/O from disk.
272095  */
272096  // SgTupleExp( SgTupleExpStorageClass& source );
272097 
272098 
272099 
272100 
272101 
272102  // JH (10/24/2005): methods added to support the ast file IO
272103  private:
272104 
272105  /* name AST Memory Allocation Support Functions
272106  \brief Memory allocations support....
272107 
272108  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
272109  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
272110  and support the AST File I/O Mechanism.
272111  */
272112  /* */
272113 
272114  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
272115  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
272116  that I use the same type everywhere, if any changes are made. THe second one declares the type
272117  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
272118  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
272119  a correspinding one in the AST_FILE_IO class!
272120  */
272121  // DQ (9/2/2015): This typedef is no longer used, we can't define the
272122  // comment here (changed to be a C style comment and not be a doxygen comment).
272123  /* \brief Typedef used for low level memory access.
272124  */
272125  // typedef unsigned char* TestType;
272126 
272127  // DQ (9/2/2015): This typedef is no longer used, we can't define the
272128  // comment here (changed to be a C style comment and not be a doxygen comment).
272129  /* \brief Typedef used to hold memory addresses as values.
272130  */
272131  // typedef unsigned long AddressType;
272132 
272133 
272134 
272135  // necessary, to have direct access to the p_freepointer and the private methods !
272137  friend class AST_FILE_IO;
272138 
272140  friend class SgTupleExpStorageClass;
272141 
272143  friend class AstSpecificDataManagingClass;
272144 
272146  friend class AstSpecificDataManagingClassStorageClass;
272147 
272148  public:
272150  SgTupleExp( const SgTupleExpStorageClass& source );
272151 
272152  // private: // JJW hack
272153  /*
272154  name AST Memory Allocation Support Variables
272155  Memory allocations support variables
272156 
272157  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
272158  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
272159  and support the AST File I/O Mechanism.
272160  */
272161  /* */
272162 
272163  public:
272164 
272165  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
272166  // to current node (so that it will work cleanly with build functions to specify patterns).
272167  // virtual SgNode* addRegExpAttribute();
272173  SgTupleExp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
272174 
272175 // *** COMMON CODE SECTION ENDS HERE ***
272176 
272177 
272178 // End of memberFunctionString
272179 // Start of memberFunctionString
272180 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
272181 
272182  // the generated cast function
272183  // friend ROSE_DLL_API SgTupleExp* isSgTupleExp ( SgNode* s );
272184 
272185  typedef SgExprListExp base_node_type;
272186 
272187 
272188 // End of memberFunctionString
272189 // Start of memberFunctionString
272190 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
272191 
272192  SgType* get_type() const override;
272193 
272194 
272195 // End of memberFunctionString
272196 // Start of memberFunctionString
272197 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
272198 
272199  void post_construction_initialization() override;
272200 
272201 
272202 // End of memberFunctionString
272203 
272204 
272205  public:
272206  virtual ~SgTupleExp();
272207 
272208 
272209  public:
272210  SgTupleExp(Sg_File_Info* startOfConstruct );
272211  SgTupleExp();
272212 
272213  protected:
272214 
272215 
272216 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
272217 
272218 
272219  };
272220 #endif
272221 
272222 // postdeclarations for SgTupleExp
272223 
272224 /* #line 272225 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
272225 
272226 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
272227 
272228 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
272229 
272230 
272231 /* #line 272232 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
272232 
272233 
272234 
272235 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
272236 
272237 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
272238 // This code is automatically generated for each
272239 // terminal and non-terminal within the defined
272240 // grammar. There is a simple way to change the
272241 // code to fix bugs etc. See the ROSE README file
272242 // for directions.
272243 
272244 // tps: (02/22/2010): Adding DLL export requirements
272245 #include "rosedll.h"
272246 
272247 // predeclarations for SgMatrixExp
272248 
272249 /* #line 272250 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
272250 
272251 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
272252 
272253 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
272254 
272255 #if 1
272256 // Class Definition for SgMatrixExp
272257 class ROSE_DLL_API SgMatrixExp : public SgExprListExp
272258  {
272259  public:
272260 
272261 
272262 /* #line 272263 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
272263 
272264  virtual SgNode* copy ( SgCopyHelp& help) const override;
272265 // Start of memberFunctionString
272266 /* #line 292 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
272267 
272268 
272269 
272270 // End of memberFunctionString
272271 // Start of memberFunctionString
272272 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
272273 
272274 // *** COMMON CODE SECTION BEGINS HERE ***
272275 
272276  public:
272277 
272278  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
272279  // and not required which is required to match the other aspects of the copy mechanism code generation.
272280  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
272281  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
272282  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
272283  // virtual SgNode* copy ( const SgCopyHelp & help) const;
272284 
272286  virtual std::string class_name() const override;
272287 
272289  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
272290 
272292  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
272293  // static const VariantT static_variant = V_SgMatrixExp;
272294  enum { static_variant = V_SgMatrixExp };
272295 
272296  /* the generated cast function */
272298  ROSE_DLL_API friend SgMatrixExp* isSgMatrixExp( SgNode * s );
272299 
272301  ROSE_DLL_API friend const SgMatrixExp* isSgMatrixExp( const SgNode * s );
272302 
272303  // ******************************************
272304  // * Memory Pool / New / Delete
272305  // ******************************************
272306 
272307  public:
272309  static const unsigned pool_size; //
272311  static std::vector<unsigned char *> pools; //
272313  static SgMatrixExp * next_node; //
272314 
272316  static unsigned long initializeStorageClassArray(SgMatrixExpStorageClass *); //
272317 
272319  static void clearMemoryPool(); //
272320  static void deleteMemoryPool(); //
272321 
272323  static void extendMemoryPoolForFileIO(); //
272324 
272326  static SgMatrixExp * getPointerFromGlobalIndex(unsigned long); //
272328  static SgMatrixExp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
272329 
272331  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
272333  static void resetValidFreepointers(); //
272335  static unsigned long getNumberOfLastValidPointer(); //
272336 
272337 
272338 #if defined(INLINE_FUNCTIONS)
272339 
272340  inline void *operator new (size_t size);
272341 #else
272342 
272343  void *operator new (size_t size);
272344 #endif
272345 
272346  void operator delete (void* pointer, size_t size);
272347 
272348  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
272349  void operator delete (void* pointer)
272350  {
272351  // This is the generated delete operator...
272352  SgMatrixExp::operator delete (pointer,sizeof(SgMatrixExp));
272353  }
272354 
272356  static size_t numberOfNodes();
272357 
272359  static size_t memoryUsage();
272360 
272361  // End of scope which started in IR nodes specific code
272362  /* */
272363 
272364  /* name Internal Functions
272365  \brief Internal functions ... incomplete-documentation
272366 
272367  These functions have been made public as part of the design, but they are suggested for internal use
272368  or by particularly knowledgeable users for specialized tools or applications.
272369 
272370  \internal We could not make these private because they are required by user for special purposes. And
272371  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
272372 
272373  */
272374 
272375  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
272376  // overridden in every class by *generated* implementation
272378  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
272379  // MS: 06/28/02 container of names of variables or container indices
272380  // used used in the traversal to access AST successor nodes
272381  // overridden in every class by *generated* implementation
272384  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
272385 
272386  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
272387  // than all the vector copies. The implementation for these functions is generated for each class.
272389  virtual size_t get_numberOfTraversalSuccessors() override;
272391  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
272393  virtual size_t get_childIndex(SgNode *child) override;
272394 
272395 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
272396  // MS: 08/16/2002 method for generating RTI information
272398  virtual RTIReturnType roseRTI() override;
272399 #endif
272400  /* */
272401 
272402 
272403 
272404  /* name Deprecated Functions
272405  \brief Deprecated functions ... incomplete-documentation
272406 
272407  These functions have been deprecated from use.
272408  */
272409  /* */
272410 
272412  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
272413 
272414  // JJW (10/16/2008): Changed to a single function in Node.code, and put
272415  // getVariant() in #if 0 block to prevent confusing Doxygen
272416 #if 0
272417 
272418  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
272420  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
272421 #endif
272422  /* */
272423 
272424 
272425 
272426 
272427  public:
272428  /* name Traversal Support Functions
272429  \brief Traversal support functions ... incomplete-documentation
272430 
272431  These functions have been made public as part of the design, but they are suggested for internal use
272432  or by particularly knowledgable users for specialized tools or applications.
272433  */
272434  /* */
272435 
272436  // DQ (11/26/2005): Support for visitor pattern mechanims
272437  // (inferior to ROSE traversal mechanism, experimental).
272441 
272442  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
272444  virtual void accept (ROSE_VisitorPattern & visitor) override;
272445 
272446  // DQ (12/26/2005): Support for traversal based on the memory pool
272449  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
272450 
272453  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
272454 
272455  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
272456  // This traversal helps support internal tools that call static member functions.
272457  // note: this function operates on the memory pools.
272460  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
272461  /* */
272462 
272463 
272464  public:
272465  /* name Memory Allocation Functions
272466  \brief Memory allocations functions ... incomplete-documentation
272467 
272468  These functions have been made public as part of the design, but they are suggested for internal use
272469  or by particularly knowledgable users for specialized tools or applications.
272470  */
272471  /* */
272472 
272483  virtual bool isInMemoryPool() override;
272484 
272495  virtual void checkDataMemberPointersIfInMemoryPool() override;
272496 
272497  // DQ (4/30/2006): Modified to be a const function.
272512  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
272513 
272523  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
272524 
272536  virtual long getChildIndex( SgNode* childNode ) const override;
272537 
272538  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
272539  // comment here (changed to be a C style comment and not be a doxygen comment).
272540  /* \brief Constructor for use by AST File I/O Mechanism
272541 
272542  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
272543  which obtained via fast binary file I/O from disk.
272544  */
272545  // SgMatrixExp( SgMatrixExpStorageClass& source );
272546 
272547 
272548 
272549 
272550 
272551  // JH (10/24/2005): methods added to support the ast file IO
272552  private:
272553 
272554  /* name AST Memory Allocation Support Functions
272555  \brief Memory allocations support....
272556 
272557  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
272558  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
272559  and support the AST File I/O Mechanism.
272560  */
272561  /* */
272562 
272563  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
272564  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
272565  that I use the same type everywhere, if any changes are made. THe second one declares the type
272566  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
272567  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
272568  a correspinding one in the AST_FILE_IO class!
272569  */
272570  // DQ (9/2/2015): This typedef is no longer used, we can't define the
272571  // comment here (changed to be a C style comment and not be a doxygen comment).
272572  /* \brief Typedef used for low level memory access.
272573  */
272574  // typedef unsigned char* TestType;
272575 
272576  // DQ (9/2/2015): This typedef is no longer used, we can't define the
272577  // comment here (changed to be a C style comment and not be a doxygen comment).
272578  /* \brief Typedef used to hold memory addresses as values.
272579  */
272580  // typedef unsigned long AddressType;
272581 
272582 
272583 
272584  // necessary, to have direct access to the p_freepointer and the private methods !
272586  friend class AST_FILE_IO;
272587 
272589  friend class SgMatrixExpStorageClass;
272590 
272592  friend class AstSpecificDataManagingClass;
272593 
272595  friend class AstSpecificDataManagingClassStorageClass;
272596 
272597  public:
272599  SgMatrixExp( const SgMatrixExpStorageClass& source );
272600 
272601  // private: // JJW hack
272602  /*
272603  name AST Memory Allocation Support Variables
272604  Memory allocations support variables
272605 
272606  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
272607  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
272608  and support the AST File I/O Mechanism.
272609  */
272610  /* */
272611 
272612  public:
272613 
272614  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
272615  // to current node (so that it will work cleanly with build functions to specify patterns).
272616  // virtual SgNode* addRegExpAttribute();
272622  SgMatrixExp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
272623 
272624 // *** COMMON CODE SECTION ENDS HERE ***
272625 
272626 
272627 // End of memberFunctionString
272628 // Start of memberFunctionString
272629 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
272630 
272631  // the generated cast function
272632  // friend ROSE_DLL_API SgMatrixExp* isSgMatrixExp ( SgNode* s );
272633 
272634  typedef SgExprListExp base_node_type;
272635 
272636 
272637 // End of memberFunctionString
272638 // Start of memberFunctionString
272639 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
272640 
272641  SgType* get_type() const override;
272642 
272643 
272644 // End of memberFunctionString
272645 // Start of memberFunctionString
272646 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
272647 
272648  void post_construction_initialization() override;
272649 
272650 
272651 // End of memberFunctionString
272652 
272653 
272654  public:
272655  virtual ~SgMatrixExp();
272656 
272657 
272658  public:
272659  SgMatrixExp(Sg_File_Info* startOfConstruct );
272660  SgMatrixExp();
272661 
272662  protected:
272663 
272664 
272665 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
272666 
272667 
272668  };
272669 #endif
272670 
272671 // postdeclarations for SgMatrixExp
272672 
272673 /* #line 272674 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
272674 
272675 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
272676 
272677 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
272678 
272679 
272680 /* #line 272681 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
272681 
272682 
272683 
272684 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
272685 
272686 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
272687 // This code is automatically generated for each
272688 // terminal and non-terminal within the defined
272689 // grammar. There is a simple way to change the
272690 // code to fix bugs etc. See the ROSE README file
272691 // for directions.
272692 
272693 // tps: (02/22/2010): Adding DLL export requirements
272694 #include "rosedll.h"
272695 
272696 // predeclarations for SgVarRefExp
272697 
272698 /* #line 272699 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
272699 
272700 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
272701 
272702 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
272703 
272704 #if 1
272705 // Class Definition for SgVarRefExp
272706 class ROSE_DLL_API SgVarRefExp : public SgExpression
272707  {
272708  public:
272709 
272710 
272711 /* #line 272712 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
272712 
272713  virtual SgNode* copy ( SgCopyHelp& help) const override;
272714 // Start of memberFunctionString
272715 /* #line 300 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
272716 
272717 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
272718  virtual unsigned int cfgIndexForEnd() const override;
272719  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
272720  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
272721 #endif
272722 
272723  // DQ (11/7/2007): I think this is not used any more.
272724  // DQ (10/5/2007): Added fixup function to set scopes not set properly by the ROSETTA generated copy!
272725  // virtual void fixupCopy(SgNode* copy, SgCopyHelp & help) const;
272726 
272727  // get lvalue
272728  virtual bool isDefinable() const override;
272729  virtual bool isLValue() const override;
272730  virtual bool isChildUsedAsLValue(const SgExpression* child) const override; // INTERNAL Recursively call up the chain to answer the child
272731 
272732  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
272733  int get_name_qualification_length() const override;
272734  void set_name_qualification_length(int name_qualification_length) override;
272735 
272736  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
272737  bool get_type_elaboration_required() const override;
272738  void set_type_elaboration_required(bool type_elaboration_required) override;
272739 
272740  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
272741  bool get_global_qualification_required() const override;
272742  void set_global_qualification_required(bool global_qualification_required) override;
272743 
272744 
272745 
272746 // End of memberFunctionString
272747 // Start of memberFunctionString
272748 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
272749 
272750 // *** COMMON CODE SECTION BEGINS HERE ***
272751 
272752  public:
272753 
272754  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
272755  // and not required which is required to match the other aspects of the copy mechanism code generation.
272756  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
272757  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
272758  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
272759  // virtual SgNode* copy ( const SgCopyHelp & help) const;
272760 
272762  virtual std::string class_name() const override;
272763 
272765  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
272766 
272768  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
272769  // static const VariantT static_variant = V_SgVarRefExp;
272770  enum { static_variant = V_SgVarRefExp };
272771 
272772  /* the generated cast function */
272774  ROSE_DLL_API friend SgVarRefExp* isSgVarRefExp( SgNode * s );
272775 
272777  ROSE_DLL_API friend const SgVarRefExp* isSgVarRefExp( const SgNode * s );
272778 
272779  // ******************************************
272780  // * Memory Pool / New / Delete
272781  // ******************************************
272782 
272783  public:
272785  static const unsigned pool_size; //
272787  static std::vector<unsigned char *> pools; //
272789  static SgVarRefExp * next_node; //
272790 
272792  static unsigned long initializeStorageClassArray(SgVarRefExpStorageClass *); //
272793 
272795  static void clearMemoryPool(); //
272796  static void deleteMemoryPool(); //
272797 
272799  static void extendMemoryPoolForFileIO(); //
272800 
272802  static SgVarRefExp * getPointerFromGlobalIndex(unsigned long); //
272804  static SgVarRefExp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
272805 
272807  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
272809  static void resetValidFreepointers(); //
272811  static unsigned long getNumberOfLastValidPointer(); //
272812 
272813 
272814 #if defined(INLINE_FUNCTIONS)
272815 
272816  inline void *operator new (size_t size);
272817 #else
272818 
272819  void *operator new (size_t size);
272820 #endif
272821 
272822  void operator delete (void* pointer, size_t size);
272823 
272824  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
272825  void operator delete (void* pointer)
272826  {
272827  // This is the generated delete operator...
272828  SgVarRefExp::operator delete (pointer,sizeof(SgVarRefExp));
272829  }
272830 
272832  static size_t numberOfNodes();
272833 
272835  static size_t memoryUsage();
272836 
272837  // End of scope which started in IR nodes specific code
272838  /* */
272839 
272840  /* name Internal Functions
272841  \brief Internal functions ... incomplete-documentation
272842 
272843  These functions have been made public as part of the design, but they are suggested for internal use
272844  or by particularly knowledgeable users for specialized tools or applications.
272845 
272846  \internal We could not make these private because they are required by user for special purposes. And
272847  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
272848 
272849  */
272850 
272851  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
272852  // overridden in every class by *generated* implementation
272854  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
272855  // MS: 06/28/02 container of names of variables or container indices
272856  // used used in the traversal to access AST successor nodes
272857  // overridden in every class by *generated* implementation
272860  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
272861 
272862  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
272863  // than all the vector copies. The implementation for these functions is generated for each class.
272865  virtual size_t get_numberOfTraversalSuccessors() override;
272867  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
272869  virtual size_t get_childIndex(SgNode *child) override;
272870 
272871 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
272872  // MS: 08/16/2002 method for generating RTI information
272874  virtual RTIReturnType roseRTI() override;
272875 #endif
272876  /* */
272877 
272878 
272879 
272880  /* name Deprecated Functions
272881  \brief Deprecated functions ... incomplete-documentation
272882 
272883  These functions have been deprecated from use.
272884  */
272885  /* */
272886 
272888  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
272889 
272890  // JJW (10/16/2008): Changed to a single function in Node.code, and put
272891  // getVariant() in #if 0 block to prevent confusing Doxygen
272892 #if 0
272893 
272894  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
272896  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
272897 #endif
272898  /* */
272899 
272900 
272901 
272902 
272903  public:
272904  /* name Traversal Support Functions
272905  \brief Traversal support functions ... incomplete-documentation
272906 
272907  These functions have been made public as part of the design, but they are suggested for internal use
272908  or by particularly knowledgable users for specialized tools or applications.
272909  */
272910  /* */
272911 
272912  // DQ (11/26/2005): Support for visitor pattern mechanims
272913  // (inferior to ROSE traversal mechanism, experimental).
272917 
272918  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
272920  virtual void accept (ROSE_VisitorPattern & visitor) override;
272921 
272922  // DQ (12/26/2005): Support for traversal based on the memory pool
272925  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
272926 
272929  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
272930 
272931  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
272932  // This traversal helps support internal tools that call static member functions.
272933  // note: this function operates on the memory pools.
272936  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
272937  /* */
272938 
272939 
272940  public:
272941  /* name Memory Allocation Functions
272942  \brief Memory allocations functions ... incomplete-documentation
272943 
272944  These functions have been made public as part of the design, but they are suggested for internal use
272945  or by particularly knowledgable users for specialized tools or applications.
272946  */
272947  /* */
272948 
272959  virtual bool isInMemoryPool() override;
272960 
272971  virtual void checkDataMemberPointersIfInMemoryPool() override;
272972 
272973  // DQ (4/30/2006): Modified to be a const function.
272988  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
272989 
272999  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
273000 
273012  virtual long getChildIndex( SgNode* childNode ) const override;
273013 
273014  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
273015  // comment here (changed to be a C style comment and not be a doxygen comment).
273016  /* \brief Constructor for use by AST File I/O Mechanism
273017 
273018  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
273019  which obtained via fast binary file I/O from disk.
273020  */
273021  // SgVarRefExp( SgVarRefExpStorageClass& source );
273022 
273023 
273024 
273025 
273026 
273027  // JH (10/24/2005): methods added to support the ast file IO
273028  private:
273029 
273030  /* name AST Memory Allocation Support Functions
273031  \brief Memory allocations support....
273032 
273033  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
273034  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
273035  and support the AST File I/O Mechanism.
273036  */
273037  /* */
273038 
273039  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
273040  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
273041  that I use the same type everywhere, if any changes are made. THe second one declares the type
273042  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
273043  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
273044  a correspinding one in the AST_FILE_IO class!
273045  */
273046  // DQ (9/2/2015): This typedef is no longer used, we can't define the
273047  // comment here (changed to be a C style comment and not be a doxygen comment).
273048  /* \brief Typedef used for low level memory access.
273049  */
273050  // typedef unsigned char* TestType;
273051 
273052  // DQ (9/2/2015): This typedef is no longer used, we can't define the
273053  // comment here (changed to be a C style comment and not be a doxygen comment).
273054  /* \brief Typedef used to hold memory addresses as values.
273055  */
273056  // typedef unsigned long AddressType;
273057 
273058 
273059 
273060  // necessary, to have direct access to the p_freepointer and the private methods !
273062  friend class AST_FILE_IO;
273063 
273065  friend class SgVarRefExpStorageClass;
273066 
273068  friend class AstSpecificDataManagingClass;
273069 
273071  friend class AstSpecificDataManagingClassStorageClass;
273072 
273073  public:
273075  SgVarRefExp( const SgVarRefExpStorageClass& source );
273076 
273077  // private: // JJW hack
273078  /*
273079  name AST Memory Allocation Support Variables
273080  Memory allocations support variables
273081 
273082  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
273083  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
273084  and support the AST File I/O Mechanism.
273085  */
273086  /* */
273087 
273088  public:
273089 
273090  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
273091  // to current node (so that it will work cleanly with build functions to specify patterns).
273092  // virtual SgNode* addRegExpAttribute();
273098  SgVarRefExp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
273099 
273100 // *** COMMON CODE SECTION ENDS HERE ***
273101 
273102 
273103 // End of memberFunctionString
273104 // Start of memberFunctionString
273105 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
273106 
273107  // the generated cast function
273108  // friend ROSE_DLL_API SgVarRefExp* isSgVarRefExp ( SgNode* s );
273109 
273110  typedef SgExpression base_node_type;
273111 
273112 
273113 // End of memberFunctionString
273114 // Start of memberFunctionString
273115 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
273116 
273117  SgType* get_type() const override;
273118 
273119 
273120 // End of memberFunctionString
273121 // Start of memberFunctionString
273122 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
273123 
273124  void post_construction_initialization() override;
273125 
273126 
273127 // End of memberFunctionString
273128 
273129  public:
273130  SgVariableSymbol* get_symbol() const;
273131  void set_symbol(SgVariableSymbol* symbol);
273132 
273133  public:
273134  SgExpression* get_originalExpressionTree() const override /* (getDataAccessFunctionPrototypeString) */;
273135  void set_originalExpressionTree(SgExpression* originalExpressionTree) override /* (getDataAccessFunctionPrototypeString) */;
273136 
273137 
273138 
273139 
273140 
273141  public:
273142  virtual ~SgVarRefExp();
273143 
273144 
273145  public:
273146  SgVarRefExp(Sg_File_Info* startOfConstruct , SgVariableSymbol* symbol = NULL);
273147  SgVarRefExp(SgVariableSymbol* symbol);
273148 
273149  protected:
273150 // Start of memberFunctionString
273151 SgVariableSymbol* p_symbol;
273152 
273153 // End of memberFunctionString
273154 // Start of memberFunctionString
273155 SgExpression* p_originalExpressionTree;
273156 
273157 // End of memberFunctionString
273158 // Start of memberFunctionString
273159 int p_name_qualification_length;
273160 
273161 // End of memberFunctionString
273162 // Start of memberFunctionString
273163 bool p_type_elaboration_required;
273164 
273165 // End of memberFunctionString
273166 // Start of memberFunctionString
273167 bool p_global_qualification_required;
273168 
273169 // End of memberFunctionString
273170 
273171 
273172 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
273173 
273174 
273175  };
273176 #endif
273177 
273178 // postdeclarations for SgVarRefExp
273179 
273180 /* #line 273181 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
273181 
273182 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
273183 
273184 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
273185 
273186 
273187 /* #line 273188 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
273188 
273189 
273190 
273191 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
273192 
273193 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
273194 // This code is automatically generated for each
273195 // terminal and non-terminal within the defined
273196 // grammar. There is a simple way to change the
273197 // code to fix bugs etc. See the ROSE README file
273198 // for directions.
273199 
273200 // tps: (02/22/2010): Adding DLL export requirements
273201 #include "rosedll.h"
273202 
273203 // predeclarations for SgClassNameRefExp
273204 
273205 /* #line 273206 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
273206 
273207 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
273208 
273209 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
273210 
273211 #if 1
273212 // Class Definition for SgClassNameRefExp
273213 class ROSE_DLL_API SgClassNameRefExp : public SgExpression
273214  {
273215  public:
273216 
273217 
273218 /* #line 273219 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
273219 
273220  virtual SgNode* copy ( SgCopyHelp& help) const override;
273221 // Start of memberFunctionString
273222 /* #line 391 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
273223 
273224 
273225 
273226 // End of memberFunctionString
273227 // Start of memberFunctionString
273228 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
273229 
273230 // *** COMMON CODE SECTION BEGINS HERE ***
273231 
273232  public:
273233 
273234  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
273235  // and not required which is required to match the other aspects of the copy mechanism code generation.
273236  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
273237  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
273238  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
273239  // virtual SgNode* copy ( const SgCopyHelp & help) const;
273240 
273242  virtual std::string class_name() const override;
273243 
273245  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
273246 
273248  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
273249  // static const VariantT static_variant = V_SgClassNameRefExp;
273250  enum { static_variant = V_SgClassNameRefExp };
273251 
273252  /* the generated cast function */
273254  ROSE_DLL_API friend SgClassNameRefExp* isSgClassNameRefExp( SgNode * s );
273255 
273257  ROSE_DLL_API friend const SgClassNameRefExp* isSgClassNameRefExp( const SgNode * s );
273258 
273259  // ******************************************
273260  // * Memory Pool / New / Delete
273261  // ******************************************
273262 
273263  public:
273265  static const unsigned pool_size; //
273267  static std::vector<unsigned char *> pools; //
273269  static SgClassNameRefExp * next_node; //
273270 
273272  static unsigned long initializeStorageClassArray(SgClassNameRefExpStorageClass *); //
273273 
273275  static void clearMemoryPool(); //
273276  static void deleteMemoryPool(); //
273277 
273279  static void extendMemoryPoolForFileIO(); //
273280 
273282  static SgClassNameRefExp * getPointerFromGlobalIndex(unsigned long); //
273284  static SgClassNameRefExp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
273285 
273287  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
273289  static void resetValidFreepointers(); //
273291  static unsigned long getNumberOfLastValidPointer(); //
273292 
273293 
273294 #if defined(INLINE_FUNCTIONS)
273295 
273296  inline void *operator new (size_t size);
273297 #else
273298 
273299  void *operator new (size_t size);
273300 #endif
273301 
273302  void operator delete (void* pointer, size_t size);
273303 
273304  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
273305  void operator delete (void* pointer)
273306  {
273307  // This is the generated delete operator...
273308  SgClassNameRefExp::operator delete (pointer,sizeof(SgClassNameRefExp));
273309  }
273310 
273312  static size_t numberOfNodes();
273313 
273315  static size_t memoryUsage();
273316 
273317  // End of scope which started in IR nodes specific code
273318  /* */
273319 
273320  /* name Internal Functions
273321  \brief Internal functions ... incomplete-documentation
273322 
273323  These functions have been made public as part of the design, but they are suggested for internal use
273324  or by particularly knowledgeable users for specialized tools or applications.
273325 
273326  \internal We could not make these private because they are required by user for special purposes. And
273327  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
273328 
273329  */
273330 
273331  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
273332  // overridden in every class by *generated* implementation
273334  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
273335  // MS: 06/28/02 container of names of variables or container indices
273336  // used used in the traversal to access AST successor nodes
273337  // overridden in every class by *generated* implementation
273340  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
273341 
273342  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
273343  // than all the vector copies. The implementation for these functions is generated for each class.
273345  virtual size_t get_numberOfTraversalSuccessors() override;
273347  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
273349  virtual size_t get_childIndex(SgNode *child) override;
273350 
273351 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
273352  // MS: 08/16/2002 method for generating RTI information
273354  virtual RTIReturnType roseRTI() override;
273355 #endif
273356  /* */
273357 
273358 
273359 
273360  /* name Deprecated Functions
273361  \brief Deprecated functions ... incomplete-documentation
273362 
273363  These functions have been deprecated from use.
273364  */
273365  /* */
273366 
273368  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
273369 
273370  // JJW (10/16/2008): Changed to a single function in Node.code, and put
273371  // getVariant() in #if 0 block to prevent confusing Doxygen
273372 #if 0
273373 
273374  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
273376  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
273377 #endif
273378  /* */
273379 
273380 
273381 
273382 
273383  public:
273384  /* name Traversal Support Functions
273385  \brief Traversal support functions ... incomplete-documentation
273386 
273387  These functions have been made public as part of the design, but they are suggested for internal use
273388  or by particularly knowledgable users for specialized tools or applications.
273389  */
273390  /* */
273391 
273392  // DQ (11/26/2005): Support for visitor pattern mechanims
273393  // (inferior to ROSE traversal mechanism, experimental).
273397 
273398  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
273400  virtual void accept (ROSE_VisitorPattern & visitor) override;
273401 
273402  // DQ (12/26/2005): Support for traversal based on the memory pool
273405  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
273406 
273409  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
273410 
273411  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
273412  // This traversal helps support internal tools that call static member functions.
273413  // note: this function operates on the memory pools.
273416  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
273417  /* */
273418 
273419 
273420  public:
273421  /* name Memory Allocation Functions
273422  \brief Memory allocations functions ... incomplete-documentation
273423 
273424  These functions have been made public as part of the design, but they are suggested for internal use
273425  or by particularly knowledgable users for specialized tools or applications.
273426  */
273427  /* */
273428 
273439  virtual bool isInMemoryPool() override;
273440 
273451  virtual void checkDataMemberPointersIfInMemoryPool() override;
273452 
273453  // DQ (4/30/2006): Modified to be a const function.
273468  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
273469 
273479  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
273480 
273492  virtual long getChildIndex( SgNode* childNode ) const override;
273493 
273494  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
273495  // comment here (changed to be a C style comment and not be a doxygen comment).
273496  /* \brief Constructor for use by AST File I/O Mechanism
273497 
273498  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
273499  which obtained via fast binary file I/O from disk.
273500  */
273501  // SgClassNameRefExp( SgClassNameRefExpStorageClass& source );
273502 
273503 
273504 
273505 
273506 
273507  // JH (10/24/2005): methods added to support the ast file IO
273508  private:
273509 
273510  /* name AST Memory Allocation Support Functions
273511  \brief Memory allocations support....
273512 
273513  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
273514  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
273515  and support the AST File I/O Mechanism.
273516  */
273517  /* */
273518 
273519  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
273520  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
273521  that I use the same type everywhere, if any changes are made. THe second one declares the type
273522  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
273523  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
273524  a correspinding one in the AST_FILE_IO class!
273525  */
273526  // DQ (9/2/2015): This typedef is no longer used, we can't define the
273527  // comment here (changed to be a C style comment and not be a doxygen comment).
273528  /* \brief Typedef used for low level memory access.
273529  */
273530  // typedef unsigned char* TestType;
273531 
273532  // DQ (9/2/2015): This typedef is no longer used, we can't define the
273533  // comment here (changed to be a C style comment and not be a doxygen comment).
273534  /* \brief Typedef used to hold memory addresses as values.
273535  */
273536  // typedef unsigned long AddressType;
273537 
273538 
273539 
273540  // necessary, to have direct access to the p_freepointer and the private methods !
273542  friend class AST_FILE_IO;
273543 
273545  friend class SgClassNameRefExpStorageClass;
273546 
273548  friend class AstSpecificDataManagingClass;
273549 
273551  friend class AstSpecificDataManagingClassStorageClass;
273552 
273553  public:
273555  SgClassNameRefExp( const SgClassNameRefExpStorageClass& source );
273556 
273557  // private: // JJW hack
273558  /*
273559  name AST Memory Allocation Support Variables
273560  Memory allocations support variables
273561 
273562  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
273563  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
273564  and support the AST File I/O Mechanism.
273565  */
273566  /* */
273567 
273568  public:
273569 
273570  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
273571  // to current node (so that it will work cleanly with build functions to specify patterns).
273572  // virtual SgNode* addRegExpAttribute();
273579 
273580 // *** COMMON CODE SECTION ENDS HERE ***
273581 
273582 
273583 // End of memberFunctionString
273584 // Start of memberFunctionString
273585 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
273586 
273587  // the generated cast function
273588  // friend ROSE_DLL_API SgClassNameRefExp* isSgClassNameRefExp ( SgNode* s );
273589 
273590  typedef SgExpression base_node_type;
273591 
273592 
273593 // End of memberFunctionString
273594 // Start of memberFunctionString
273595 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
273596 
273597  void post_construction_initialization() override;
273598 
273599 
273600 // End of memberFunctionString
273601 
273602  public:
273603  SgClassSymbol* get_symbol() const;
273604  void set_symbol(SgClassSymbol* symbol);
273605 
273606 
273607  public:
273608  virtual ~SgClassNameRefExp();
273609 
273610 
273611  public:
273612  SgClassNameRefExp(Sg_File_Info* startOfConstruct , SgClassSymbol* symbol = NULL);
273613  SgClassNameRefExp(SgClassSymbol* symbol);
273614 
273615  protected:
273616 // Start of memberFunctionString
273618 
273619 // End of memberFunctionString
273620 
273621 
273622 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
273623 
273624 
273625  };
273626 #endif
273627 
273628 // postdeclarations for SgClassNameRefExp
273629 
273630 /* #line 273631 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
273631 
273632 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
273633 
273634 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
273635 
273636 
273637 /* #line 273638 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
273638 
273639 
273640 
273641 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
273642 
273643 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
273644 // This code is automatically generated for each
273645 // terminal and non-terminal within the defined
273646 // grammar. There is a simple way to change the
273647 // code to fix bugs etc. See the ROSE README file
273648 // for directions.
273649 
273650 // tps: (02/22/2010): Adding DLL export requirements
273651 #include "rosedll.h"
273652 
273653 // predeclarations for SgFunctionRefExp
273654 
273655 /* #line 273656 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
273656 
273657 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
273658 
273659 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
273660 
273661 #if 1
273662 // Class Definition for SgFunctionRefExp
273663 class ROSE_DLL_API SgFunctionRefExp : public SgExpression
273664  {
273665  public:
273666 
273667 
273668 /* #line 273669 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
273669 
273670  virtual SgNode* copy ( SgCopyHelp& help) const override;
273671 // Start of memberFunctionString
273672 /* #line 395 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
273673 
273674  SgFunctionSymbol* get_symbol() const;
273675  void set_symbol(SgFunctionSymbol * symbol);
273676 
273677 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
273678  virtual unsigned int cfgIndexForEnd() const override;
273679  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
273680  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
273681 #endif
273682 
273687  SgFunctionDeclaration* getAssociatedFunctionDeclaration() const;
273688 
273689 // // get lvalue
273690 // virtual bool isLValue() const;
273691 // virtual bool isChildUsedAsLValue(const SgExpression* child) const; // INTERNAL Recursively call up the chain to answer the child
273692 
273693  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
273694  int get_name_qualification_length() const override;
273695  void set_name_qualification_length(int name_qualification_length) override;
273696 
273697  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
273698  bool get_type_elaboration_required() const override;
273699  void set_type_elaboration_required(bool type_elaboration_required) override;
273700 
273701  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
273702  bool get_global_qualification_required() const override;
273703  void set_global_qualification_required(bool global_qualification_required) override;
273704 
273705 
273706 
273707 // End of memberFunctionString
273708 // Start of memberFunctionString
273709 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
273710 
273711 // *** COMMON CODE SECTION BEGINS HERE ***
273712 
273713  public:
273714 
273715  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
273716  // and not required which is required to match the other aspects of the copy mechanism code generation.
273717  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
273718  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
273719  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
273720  // virtual SgNode* copy ( const SgCopyHelp & help) const;
273721 
273723  virtual std::string class_name() const override;
273724 
273726  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
273727 
273729  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
273730  // static const VariantT static_variant = V_SgFunctionRefExp;
273731  enum { static_variant = V_SgFunctionRefExp };
273732 
273733  /* the generated cast function */
273735  ROSE_DLL_API friend SgFunctionRefExp* isSgFunctionRefExp( SgNode * s );
273736 
273738  ROSE_DLL_API friend const SgFunctionRefExp* isSgFunctionRefExp( const SgNode * s );
273739 
273740  // ******************************************
273741  // * Memory Pool / New / Delete
273742  // ******************************************
273743 
273744  public:
273746  static const unsigned pool_size; //
273748  static std::vector<unsigned char *> pools; //
273750  static SgFunctionRefExp * next_node; //
273751 
273753  static unsigned long initializeStorageClassArray(SgFunctionRefExpStorageClass *); //
273754 
273756  static void clearMemoryPool(); //
273757  static void deleteMemoryPool(); //
273758 
273760  static void extendMemoryPoolForFileIO(); //
273761 
273763  static SgFunctionRefExp * getPointerFromGlobalIndex(unsigned long); //
273765  static SgFunctionRefExp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
273766 
273768  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
273770  static void resetValidFreepointers(); //
273772  static unsigned long getNumberOfLastValidPointer(); //
273773 
273774 
273775 #if defined(INLINE_FUNCTIONS)
273776 
273777  inline void *operator new (size_t size);
273778 #else
273779 
273780  void *operator new (size_t size);
273781 #endif
273782 
273783  void operator delete (void* pointer, size_t size);
273784 
273785  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
273786  void operator delete (void* pointer)
273787  {
273788  // This is the generated delete operator...
273789  SgFunctionRefExp::operator delete (pointer,sizeof(SgFunctionRefExp));
273790  }
273791 
273793  static size_t numberOfNodes();
273794 
273796  static size_t memoryUsage();
273797 
273798  // End of scope which started in IR nodes specific code
273799  /* */
273800 
273801  /* name Internal Functions
273802  \brief Internal functions ... incomplete-documentation
273803 
273804  These functions have been made public as part of the design, but they are suggested for internal use
273805  or by particularly knowledgeable users for specialized tools or applications.
273806 
273807  \internal We could not make these private because they are required by user for special purposes. And
273808  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
273809 
273810  */
273811 
273812  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
273813  // overridden in every class by *generated* implementation
273815  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
273816  // MS: 06/28/02 container of names of variables or container indices
273817  // used used in the traversal to access AST successor nodes
273818  // overridden in every class by *generated* implementation
273821  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
273822 
273823  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
273824  // than all the vector copies. The implementation for these functions is generated for each class.
273826  virtual size_t get_numberOfTraversalSuccessors() override;
273828  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
273830  virtual size_t get_childIndex(SgNode *child) override;
273831 
273832 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
273833  // MS: 08/16/2002 method for generating RTI information
273835  virtual RTIReturnType roseRTI() override;
273836 #endif
273837  /* */
273838 
273839 
273840 
273841  /* name Deprecated Functions
273842  \brief Deprecated functions ... incomplete-documentation
273843 
273844  These functions have been deprecated from use.
273845  */
273846  /* */
273847 
273849  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
273850 
273851  // JJW (10/16/2008): Changed to a single function in Node.code, and put
273852  // getVariant() in #if 0 block to prevent confusing Doxygen
273853 #if 0
273854 
273855  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
273857  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
273858 #endif
273859  /* */
273860 
273861 
273862 
273863 
273864  public:
273865  /* name Traversal Support Functions
273866  \brief Traversal support functions ... incomplete-documentation
273867 
273868  These functions have been made public as part of the design, but they are suggested for internal use
273869  or by particularly knowledgable users for specialized tools or applications.
273870  */
273871  /* */
273872 
273873  // DQ (11/26/2005): Support for visitor pattern mechanims
273874  // (inferior to ROSE traversal mechanism, experimental).
273878 
273879  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
273881  virtual void accept (ROSE_VisitorPattern & visitor) override;
273882 
273883  // DQ (12/26/2005): Support for traversal based on the memory pool
273886  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
273887 
273890  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
273891 
273892  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
273893  // This traversal helps support internal tools that call static member functions.
273894  // note: this function operates on the memory pools.
273897  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
273898  /* */
273899 
273900 
273901  public:
273902  /* name Memory Allocation Functions
273903  \brief Memory allocations functions ... incomplete-documentation
273904 
273905  These functions have been made public as part of the design, but they are suggested for internal use
273906  or by particularly knowledgable users for specialized tools or applications.
273907  */
273908  /* */
273909 
273920  virtual bool isInMemoryPool() override;
273921 
273932  virtual void checkDataMemberPointersIfInMemoryPool() override;
273933 
273934  // DQ (4/30/2006): Modified to be a const function.
273949  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
273950 
273960  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
273961 
273973  virtual long getChildIndex( SgNode* childNode ) const override;
273974 
273975  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
273976  // comment here (changed to be a C style comment and not be a doxygen comment).
273977  /* \brief Constructor for use by AST File I/O Mechanism
273978 
273979  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
273980  which obtained via fast binary file I/O from disk.
273981  */
273982  // SgFunctionRefExp( SgFunctionRefExpStorageClass& source );
273983 
273984 
273985 
273986 
273987 
273988  // JH (10/24/2005): methods added to support the ast file IO
273989  private:
273990 
273991  /* name AST Memory Allocation Support Functions
273992  \brief Memory allocations support....
273993 
273994  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
273995  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
273996  and support the AST File I/O Mechanism.
273997  */
273998  /* */
273999 
274000  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
274001  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
274002  that I use the same type everywhere, if any changes are made. THe second one declares the type
274003  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
274004  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
274005  a correspinding one in the AST_FILE_IO class!
274006  */
274007  // DQ (9/2/2015): This typedef is no longer used, we can't define the
274008  // comment here (changed to be a C style comment and not be a doxygen comment).
274009  /* \brief Typedef used for low level memory access.
274010  */
274011  // typedef unsigned char* TestType;
274012 
274013  // DQ (9/2/2015): This typedef is no longer used, we can't define the
274014  // comment here (changed to be a C style comment and not be a doxygen comment).
274015  /* \brief Typedef used to hold memory addresses as values.
274016  */
274017  // typedef unsigned long AddressType;
274018 
274019 
274020 
274021  // necessary, to have direct access to the p_freepointer and the private methods !
274023  friend class AST_FILE_IO;
274024 
274026  friend class SgFunctionRefExpStorageClass;
274027 
274029  friend class AstSpecificDataManagingClass;
274030 
274032  friend class AstSpecificDataManagingClassStorageClass;
274033 
274034  public:
274036  SgFunctionRefExp( const SgFunctionRefExpStorageClass& source );
274037 
274038  // private: // JJW hack
274039  /*
274040  name AST Memory Allocation Support Variables
274041  Memory allocations support variables
274042 
274043  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
274044  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
274045  and support the AST File I/O Mechanism.
274046  */
274047  /* */
274048 
274049  public:
274050 
274051  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
274052  // to current node (so that it will work cleanly with build functions to specify patterns).
274053  // virtual SgNode* addRegExpAttribute();
274060 
274061 // *** COMMON CODE SECTION ENDS HERE ***
274062 
274063 
274064 // End of memberFunctionString
274065 // Start of memberFunctionString
274066 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
274067 
274068  // the generated cast function
274069  // friend ROSE_DLL_API SgFunctionRefExp* isSgFunctionRefExp ( SgNode* s );
274070 
274071  typedef SgExpression base_node_type;
274072 
274073 
274074 // End of memberFunctionString
274075 // Start of memberFunctionString
274076 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
274077 
274078  SgType* get_type() const override;
274079 
274080 
274081 // End of memberFunctionString
274082 // Start of memberFunctionString
274083 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
274084 
274085  void post_construction_initialization() override;
274086 
274087 
274088 // End of memberFunctionString
274089 
274090  public:
274091  SgFunctionSymbol* get_symbol_i() const;
274092  void set_symbol_i(SgFunctionSymbol* symbol_i);
274093 
274094 
274095  public:
274096  SgExpression* get_originalExpressionTree() const override /* (getDataAccessFunctionPrototypeString) */;
274097  void set_originalExpressionTree(SgExpression* originalExpressionTree) override /* (getDataAccessFunctionPrototypeString) */;
274098 
274099 
274100 
274101 
274102 
274103  public:
274104  virtual ~SgFunctionRefExp();
274105 
274106 
274107  public:
274108  SgFunctionRefExp(Sg_File_Info* startOfConstruct , SgFunctionSymbol* symbol_i = NULL, SgFunctionType* function_type = NULL);
274109  SgFunctionRefExp(SgFunctionSymbol* symbol_i, SgFunctionType* function_type);
274110 
274111  protected:
274112 // Start of memberFunctionString
274113 SgFunctionSymbol* p_symbol_i;
274114 
274115 // End of memberFunctionString
274116 // Start of memberFunctionString
274117 SgFunctionType* p_function_type;
274118 
274119 // End of memberFunctionString
274120 // Start of memberFunctionString
274121 SgExpression* p_originalExpressionTree;
274122 
274123 // End of memberFunctionString
274124 // Start of memberFunctionString
274125 int p_name_qualification_length;
274126 
274127 // End of memberFunctionString
274128 // Start of memberFunctionString
274129 bool p_type_elaboration_required;
274130 
274131 // End of memberFunctionString
274132 // Start of memberFunctionString
274133 bool p_global_qualification_required;
274134 
274135 // End of memberFunctionString
274136 
274137 
274138 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
274139 
274140 
274141  };
274142 #endif
274143 
274144 // postdeclarations for SgFunctionRefExp
274145 
274146 /* #line 274147 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
274147 
274148 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
274149 
274150 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
274151 
274152 
274153 /* #line 274154 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
274154 
274155 
274156 
274157 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
274158 
274159 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
274160 // This code is automatically generated for each
274161 // terminal and non-terminal within the defined
274162 // grammar. There is a simple way to change the
274163 // code to fix bugs etc. See the ROSE README file
274164 // for directions.
274165 
274166 // tps: (02/22/2010): Adding DLL export requirements
274167 #include "rosedll.h"
274168 
274169 // predeclarations for SgMemberFunctionRefExp
274170 
274171 /* #line 274172 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
274172 
274173 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
274174 
274175 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
274176 
274177 #if 1
274178 // Class Definition for SgMemberFunctionRefExp
274179 class ROSE_DLL_API SgMemberFunctionRefExp : public SgExpression
274180  {
274181  public:
274182 
274183 
274184 /* #line 274185 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
274185 
274186  virtual SgNode* copy ( SgCopyHelp& help) const override;
274187 // Start of memberFunctionString
274188 /* #line 430 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
274189 
274190  SgMemberFunctionSymbol* get_symbol() const;
274191  void set_symbol(SgMemberFunctionSymbol * symbol);
274192 
274193 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
274194  virtual unsigned int cfgIndexForEnd() const override;
274195  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
274196  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
274197 #endif
274198 
274202  SgMemberFunctionDeclaration* getAssociatedMemberFunctionDeclaration() const;
274203 
274204  // get lvalue
274205  virtual bool isLValue() const override;
274206  virtual bool isChildUsedAsLValue(const SgExpression* child) const override; // INTERNAL Recursively call up the chain to answer the child
274207 
274208  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
274209  int get_name_qualification_length() const override;
274210  void set_name_qualification_length(int name_qualification_length) override;
274211 
274212  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
274213  bool get_type_elaboration_required() const override;
274214  void set_type_elaboration_required(bool type_elaboration_required) override;
274215 
274216  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
274217  bool get_global_qualification_required() const override;
274218  void set_global_qualification_required(bool global_qualification_required) override;
274219 
274220 
274221 
274222 // End of memberFunctionString
274223 // Start of memberFunctionString
274224 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
274225 
274226 // *** COMMON CODE SECTION BEGINS HERE ***
274227 
274228  public:
274229 
274230  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
274231  // and not required which is required to match the other aspects of the copy mechanism code generation.
274232  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
274233  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
274234  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
274235  // virtual SgNode* copy ( const SgCopyHelp & help) const;
274236 
274238  virtual std::string class_name() const override;
274239 
274241  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
274242 
274244  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
274245  // static const VariantT static_variant = V_SgMemberFunctionRefExp;
274246  enum { static_variant = V_SgMemberFunctionRefExp };
274247 
274248  /* the generated cast function */
274250  ROSE_DLL_API friend SgMemberFunctionRefExp* isSgMemberFunctionRefExp( SgNode * s );
274251 
274253  ROSE_DLL_API friend const SgMemberFunctionRefExp* isSgMemberFunctionRefExp( const SgNode * s );
274254 
274255  // ******************************************
274256  // * Memory Pool / New / Delete
274257  // ******************************************
274258 
274259  public:
274261  static const unsigned pool_size; //
274263  static std::vector<unsigned char *> pools; //
274265  static SgMemberFunctionRefExp * next_node; //
274266 
274268  static unsigned long initializeStorageClassArray(SgMemberFunctionRefExpStorageClass *); //
274269 
274271  static void clearMemoryPool(); //
274272  static void deleteMemoryPool(); //
274273 
274275  static void extendMemoryPoolForFileIO(); //
274276 
274278  static SgMemberFunctionRefExp * getPointerFromGlobalIndex(unsigned long); //
274280  static SgMemberFunctionRefExp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
274281 
274283  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
274285  static void resetValidFreepointers(); //
274287  static unsigned long getNumberOfLastValidPointer(); //
274288 
274289 
274290 #if defined(INLINE_FUNCTIONS)
274291 
274292  inline void *operator new (size_t size);
274293 #else
274294 
274295  void *operator new (size_t size);
274296 #endif
274297 
274298  void operator delete (void* pointer, size_t size);
274299 
274300  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
274301  void operator delete (void* pointer)
274302  {
274303  // This is the generated delete operator...
274304  SgMemberFunctionRefExp::operator delete (pointer,sizeof(SgMemberFunctionRefExp));
274305  }
274306 
274308  static size_t numberOfNodes();
274309 
274311  static size_t memoryUsage();
274312 
274313  // End of scope which started in IR nodes specific code
274314  /* */
274315 
274316  /* name Internal Functions
274317  \brief Internal functions ... incomplete-documentation
274318 
274319  These functions have been made public as part of the design, but they are suggested for internal use
274320  or by particularly knowledgeable users for specialized tools or applications.
274321 
274322  \internal We could not make these private because they are required by user for special purposes. And
274323  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
274324 
274325  */
274326 
274327  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
274328  // overridden in every class by *generated* implementation
274330  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
274331  // MS: 06/28/02 container of names of variables or container indices
274332  // used used in the traversal to access AST successor nodes
274333  // overridden in every class by *generated* implementation
274336  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
274337 
274338  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
274339  // than all the vector copies. The implementation for these functions is generated for each class.
274341  virtual size_t get_numberOfTraversalSuccessors() override;
274343  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
274345  virtual size_t get_childIndex(SgNode *child) override;
274346 
274347 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
274348  // MS: 08/16/2002 method for generating RTI information
274350  virtual RTIReturnType roseRTI() override;
274351 #endif
274352  /* */
274353 
274354 
274355 
274356  /* name Deprecated Functions
274357  \brief Deprecated functions ... incomplete-documentation
274358 
274359  These functions have been deprecated from use.
274360  */
274361  /* */
274362 
274364  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
274365 
274366  // JJW (10/16/2008): Changed to a single function in Node.code, and put
274367  // getVariant() in #if 0 block to prevent confusing Doxygen
274368 #if 0
274369 
274370  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
274372  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
274373 #endif
274374  /* */
274375 
274376 
274377 
274378 
274379  public:
274380  /* name Traversal Support Functions
274381  \brief Traversal support functions ... incomplete-documentation
274382 
274383  These functions have been made public as part of the design, but they are suggested for internal use
274384  or by particularly knowledgable users for specialized tools or applications.
274385  */
274386  /* */
274387 
274388  // DQ (11/26/2005): Support for visitor pattern mechanims
274389  // (inferior to ROSE traversal mechanism, experimental).
274393 
274394  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
274396  virtual void accept (ROSE_VisitorPattern & visitor) override;
274397 
274398  // DQ (12/26/2005): Support for traversal based on the memory pool
274401  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
274402 
274405  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
274406 
274407  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
274408  // This traversal helps support internal tools that call static member functions.
274409  // note: this function operates on the memory pools.
274412  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
274413  /* */
274414 
274415 
274416  public:
274417  /* name Memory Allocation Functions
274418  \brief Memory allocations functions ... incomplete-documentation
274419 
274420  These functions have been made public as part of the design, but they are suggested for internal use
274421  or by particularly knowledgable users for specialized tools or applications.
274422  */
274423  /* */
274424 
274435  virtual bool isInMemoryPool() override;
274436 
274447  virtual void checkDataMemberPointersIfInMemoryPool() override;
274448 
274449  // DQ (4/30/2006): Modified to be a const function.
274464  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
274465 
274475  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
274476 
274488  virtual long getChildIndex( SgNode* childNode ) const override;
274489 
274490  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
274491  // comment here (changed to be a C style comment and not be a doxygen comment).
274492  /* \brief Constructor for use by AST File I/O Mechanism
274493 
274494  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
274495  which obtained via fast binary file I/O from disk.
274496  */
274497  // SgMemberFunctionRefExp( SgMemberFunctionRefExpStorageClass& source );
274498 
274499 
274500 
274501 
274502 
274503  // JH (10/24/2005): methods added to support the ast file IO
274504  private:
274505 
274506  /* name AST Memory Allocation Support Functions
274507  \brief Memory allocations support....
274508 
274509  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
274510  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
274511  and support the AST File I/O Mechanism.
274512  */
274513  /* */
274514 
274515  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
274516  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
274517  that I use the same type everywhere, if any changes are made. THe second one declares the type
274518  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
274519  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
274520  a correspinding one in the AST_FILE_IO class!
274521  */
274522  // DQ (9/2/2015): This typedef is no longer used, we can't define the
274523  // comment here (changed to be a C style comment and not be a doxygen comment).
274524  /* \brief Typedef used for low level memory access.
274525  */
274526  // typedef unsigned char* TestType;
274527 
274528  // DQ (9/2/2015): This typedef is no longer used, we can't define the
274529  // comment here (changed to be a C style comment and not be a doxygen comment).
274530  /* \brief Typedef used to hold memory addresses as values.
274531  */
274532  // typedef unsigned long AddressType;
274533 
274534 
274535 
274536  // necessary, to have direct access to the p_freepointer and the private methods !
274538  friend class AST_FILE_IO;
274539 
274541  friend class SgMemberFunctionRefExpStorageClass;
274542 
274544  friend class AstSpecificDataManagingClass;
274545 
274547  friend class AstSpecificDataManagingClassStorageClass;
274548 
274549  public:
274551  SgMemberFunctionRefExp( const SgMemberFunctionRefExpStorageClass& source );
274552 
274553  // private: // JJW hack
274554  /*
274555  name AST Memory Allocation Support Variables
274556  Memory allocations support variables
274557 
274558  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
274559  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
274560  and support the AST File I/O Mechanism.
274561  */
274562  /* */
274563 
274564  public:
274565 
274566  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
274567  // to current node (so that it will work cleanly with build functions to specify patterns).
274568  // virtual SgNode* addRegExpAttribute();
274575 
274576 // *** COMMON CODE SECTION ENDS HERE ***
274577 
274578 
274579 // End of memberFunctionString
274580 // Start of memberFunctionString
274581 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
274582 
274583  // the generated cast function
274584  // friend ROSE_DLL_API SgMemberFunctionRefExp* isSgMemberFunctionRefExp ( SgNode* s );
274585 
274586  typedef SgExpression base_node_type;
274587 
274588 
274589 // End of memberFunctionString
274590 // Start of memberFunctionString
274591 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
274592 
274593  SgType* get_type() const override;
274594 
274595 
274596 // End of memberFunctionString
274597 // Start of memberFunctionString
274598 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
274599 
274600  void post_construction_initialization() override;
274601 
274602 
274603 // End of memberFunctionString
274604 
274605  public:
274606  SgMemberFunctionSymbol* get_symbol_i() const;
274607  void set_symbol_i(SgMemberFunctionSymbol* symbol_i);
274608 
274609  public:
274610  int get_virtual_call() const;
274611  void set_virtual_call(int virtual_call);
274612 
274613 
274614  public:
274615  int get_need_qualifier() const;
274616  void set_need_qualifier(int need_qualifier);
274617 
274618 
274619 
274620 
274621 
274622  public:
274623  virtual ~SgMemberFunctionRefExp();
274624 
274625 
274626  public:
274627  SgMemberFunctionRefExp(Sg_File_Info* startOfConstruct , SgMemberFunctionSymbol* symbol_i = NULL, int virtual_call = 0, SgFunctionType* function_type = NULL, int need_qualifier = true);
274628  SgMemberFunctionRefExp(SgMemberFunctionSymbol* symbol_i, int virtual_call, SgFunctionType* function_type, int need_qualifier);
274629 
274630  protected:
274631 // Start of memberFunctionString
274633 
274634 // End of memberFunctionString
274635 // Start of memberFunctionString
274637 
274638 // End of memberFunctionString
274639 // Start of memberFunctionString
274641 
274642 // End of memberFunctionString
274643 // Start of memberFunctionString
274645 
274646 // End of memberFunctionString
274647 // Start of memberFunctionString
274648 int p_name_qualification_length;
274649 
274650 // End of memberFunctionString
274651 // Start of memberFunctionString
274652 bool p_type_elaboration_required;
274653 
274654 // End of memberFunctionString
274655 // Start of memberFunctionString
274656 bool p_global_qualification_required;
274657 
274658 // End of memberFunctionString
274659 
274660 
274661 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
274662 
274663 
274664  };
274665 #endif
274666 
274667 // postdeclarations for SgMemberFunctionRefExp
274668 
274669 /* #line 274670 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
274670 
274671 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
274672 
274673 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
274674 
274675 
274676 /* #line 274677 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
274677 
274678 
274679 
274680 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
274681 
274682 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
274683 // This code is automatically generated for each
274684 // terminal and non-terminal within the defined
274685 // grammar. There is a simple way to change the
274686 // code to fix bugs etc. See the ROSE README file
274687 // for directions.
274688 
274689 // tps: (02/22/2010): Adding DLL export requirements
274690 #include "rosedll.h"
274691 
274692 // predeclarations for SgValueExp
274693 
274694 /* #line 274695 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
274695 
274696 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
274697 
274698 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
274699 
274700 #if 1
274701 // Class Definition for SgValueExp
274702 class ROSE_DLL_API SgValueExp : public SgExpression
274703  {
274704  public:
274705 
274706 
274707 /* #line 274708 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
274708 
274709  virtual SgNode* copy ( SgCopyHelp& help) const override;
274710 // Start of memberFunctionString
274711 /* #line 538 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
274712 
274713 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
274714  virtual unsigned int cfgIndexForEnd() const override;
274715  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
274716  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
274717 #endif
274718 
274719  // DQ (2/12/2011): Added const so that this could be called in get_mangled() (and more generally).
274720  // DQ (8/18/2009): Added support to get the constant folded value as a string instead of the expression tree.
274721  // std::string get_constant_folded_value_as_string();
274722  std::string get_constant_folded_value_as_string() const;
274723 
274724 
274725 
274726 // End of memberFunctionString
274727 // Start of memberFunctionString
274728 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
274729 
274730 // *** COMMON CODE SECTION BEGINS HERE ***
274731 
274732  public:
274733 
274734  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
274735  // and not required which is required to match the other aspects of the copy mechanism code generation.
274736  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
274737  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
274738  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
274739  // virtual SgNode* copy ( const SgCopyHelp & help) const;
274740 
274742  virtual std::string class_name() const override;
274743 
274745  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
274746 
274748  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
274749  // static const VariantT static_variant = V_SgValueExp;
274750  enum { static_variant = V_SgValueExp };
274751 
274752  /* the generated cast function */
274754  ROSE_DLL_API friend SgValueExp* isSgValueExp( SgNode * s );
274755 
274757  ROSE_DLL_API friend const SgValueExp* isSgValueExp( const SgNode * s );
274758 
274759  // ******************************************
274760  // * Memory Pool / New / Delete
274761  // ******************************************
274762 
274763  public:
274765  static const unsigned pool_size; //
274767  static std::vector<unsigned char *> pools; //
274769  static SgValueExp * next_node; //
274770 
274772  static unsigned long initializeStorageClassArray(SgValueExpStorageClass *); //
274773 
274775  static void clearMemoryPool(); //
274776  static void deleteMemoryPool(); //
274777 
274779  static void extendMemoryPoolForFileIO(); //
274780 
274782  static SgValueExp * getPointerFromGlobalIndex(unsigned long); //
274784  static SgValueExp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
274785 
274787  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
274789  static void resetValidFreepointers(); //
274791  static unsigned long getNumberOfLastValidPointer(); //
274792 
274793 
274794 #if defined(INLINE_FUNCTIONS)
274795 
274796  inline void *operator new (size_t size);
274797 #else
274798 
274799  void *operator new (size_t size);
274800 #endif
274801 
274802  void operator delete (void* pointer, size_t size);
274803 
274804  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
274805  void operator delete (void* pointer)
274806  {
274807  // This is the generated delete operator...
274808  SgValueExp::operator delete (pointer,sizeof(SgValueExp));
274809  }
274810 
274812  static size_t numberOfNodes();
274813 
274815  static size_t memoryUsage();
274816 
274817  // End of scope which started in IR nodes specific code
274818  /* */
274819 
274820  /* name Internal Functions
274821  \brief Internal functions ... incomplete-documentation
274822 
274823  These functions have been made public as part of the design, but they are suggested for internal use
274824  or by particularly knowledgeable users for specialized tools or applications.
274825 
274826  \internal We could not make these private because they are required by user for special purposes. And
274827  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
274828 
274829  */
274830 
274831  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
274832  // overridden in every class by *generated* implementation
274834  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
274835  // MS: 06/28/02 container of names of variables or container indices
274836  // used used in the traversal to access AST successor nodes
274837  // overridden in every class by *generated* implementation
274840  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
274841 
274842  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
274843  // than all the vector copies. The implementation for these functions is generated for each class.
274845  virtual size_t get_numberOfTraversalSuccessors() override;
274847  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
274849  virtual size_t get_childIndex(SgNode *child) override;
274850 
274851 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
274852  // MS: 08/16/2002 method for generating RTI information
274854  virtual RTIReturnType roseRTI() override;
274855 #endif
274856  /* */
274857 
274858 
274859 
274860  /* name Deprecated Functions
274861  \brief Deprecated functions ... incomplete-documentation
274862 
274863  These functions have been deprecated from use.
274864  */
274865  /* */
274866 
274868  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
274869 
274870  // JJW (10/16/2008): Changed to a single function in Node.code, and put
274871  // getVariant() in #if 0 block to prevent confusing Doxygen
274872 #if 0
274873 
274874  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
274876  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
274877 #endif
274878  /* */
274879 
274880 
274881 
274882 
274883  public:
274884  /* name Traversal Support Functions
274885  \brief Traversal support functions ... incomplete-documentation
274886 
274887  These functions have been made public as part of the design, but they are suggested for internal use
274888  or by particularly knowledgable users for specialized tools or applications.
274889  */
274890  /* */
274891 
274892  // DQ (11/26/2005): Support for visitor pattern mechanims
274893  // (inferior to ROSE traversal mechanism, experimental).
274897 
274898  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
274900  virtual void accept (ROSE_VisitorPattern & visitor) override;
274901 
274902  // DQ (12/26/2005): Support for traversal based on the memory pool
274905  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
274906 
274909  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
274910 
274911  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
274912  // This traversal helps support internal tools that call static member functions.
274913  // note: this function operates on the memory pools.
274916  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
274917  /* */
274918 
274919 
274920  public:
274921  /* name Memory Allocation Functions
274922  \brief Memory allocations functions ... incomplete-documentation
274923 
274924  These functions have been made public as part of the design, but they are suggested for internal use
274925  or by particularly knowledgable users for specialized tools or applications.
274926  */
274927  /* */
274928 
274939  virtual bool isInMemoryPool() override;
274940 
274951  virtual void checkDataMemberPointersIfInMemoryPool() override;
274952 
274953  // DQ (4/30/2006): Modified to be a const function.
274968  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
274969 
274979  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
274980 
274992  virtual long getChildIndex( SgNode* childNode ) const override;
274993 
274994  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
274995  // comment here (changed to be a C style comment and not be a doxygen comment).
274996  /* \brief Constructor for use by AST File I/O Mechanism
274997 
274998  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
274999  which obtained via fast binary file I/O from disk.
275000  */
275001  // SgValueExp( SgValueExpStorageClass& source );
275002 
275003 
275004 
275005 
275006 
275007  // JH (10/24/2005): methods added to support the ast file IO
275008  private:
275009 
275010  /* name AST Memory Allocation Support Functions
275011  \brief Memory allocations support....
275012 
275013  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
275014  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
275015  and support the AST File I/O Mechanism.
275016  */
275017  /* */
275018 
275019  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
275020  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
275021  that I use the same type everywhere, if any changes are made. THe second one declares the type
275022  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
275023  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
275024  a correspinding one in the AST_FILE_IO class!
275025  */
275026  // DQ (9/2/2015): This typedef is no longer used, we can't define the
275027  // comment here (changed to be a C style comment and not be a doxygen comment).
275028  /* \brief Typedef used for low level memory access.
275029  */
275030  // typedef unsigned char* TestType;
275031 
275032  // DQ (9/2/2015): This typedef is no longer used, we can't define the
275033  // comment here (changed to be a C style comment and not be a doxygen comment).
275034  /* \brief Typedef used to hold memory addresses as values.
275035  */
275036  // typedef unsigned long AddressType;
275037 
275038 
275039 
275040  // necessary, to have direct access to the p_freepointer and the private methods !
275042  friend class AST_FILE_IO;
275043 
275045  friend class SgValueExpStorageClass;
275046 
275048  friend class AstSpecificDataManagingClass;
275049 
275051  friend class AstSpecificDataManagingClassStorageClass;
275052 
275053  public:
275055  SgValueExp( const SgValueExpStorageClass& source );
275056 
275057  // private: // JJW hack
275058  /*
275059  name AST Memory Allocation Support Variables
275060  Memory allocations support variables
275061 
275062  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
275063  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
275064  and support the AST File I/O Mechanism.
275065  */
275066  /* */
275067 
275068  public:
275069 
275070  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
275071  // to current node (so that it will work cleanly with build functions to specify patterns).
275072  // virtual SgNode* addRegExpAttribute();
275078  SgValueExp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
275079 
275080 // *** COMMON CODE SECTION ENDS HERE ***
275081 
275082 
275083 // End of memberFunctionString
275084 // Start of memberFunctionString
275085 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
275086 
275087  // the generated cast function
275088  // friend ROSE_DLL_API SgValueExp* isSgValueExp ( SgNode* s );
275089 
275090  typedef SgExpression base_node_type;
275091 
275092 
275093 // End of memberFunctionString
275094 // Start of memberFunctionString
275095 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
275096 
275097  void post_construction_initialization() override;
275098 
275099 
275100 // End of memberFunctionString
275101 
275102  public:
275103  SgExpression* get_originalExpressionTree() const override /* (getDataAccessFunctionPrototypeString) */;
275104  void set_originalExpressionTree(SgExpression* originalExpressionTree) override /* (getDataAccessFunctionPrototypeString) */;
275105 
275106 
275107  public:
275108  virtual ~SgValueExp();
275109 
275110 
275111  public:
275112  SgValueExp(Sg_File_Info* startOfConstruct );
275113  SgValueExp();
275114 
275115  protected:
275116 // Start of memberFunctionString
275117 SgExpression* p_originalExpressionTree;
275118 
275119 // End of memberFunctionString
275120 
275121 
275122 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
275123 
275124 
275125  };
275126 #endif
275127 
275128 // postdeclarations for SgValueExp
275129 
275130 /* #line 275131 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
275131 
275132 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
275133 
275134 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
275135 
275136 
275137 /* #line 275138 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
275138 
275139 
275140 
275141 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
275142 
275143 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
275144 // This code is automatically generated for each
275145 // terminal and non-terminal within the defined
275146 // grammar. There is a simple way to change the
275147 // code to fix bugs etc. See the ROSE README file
275148 // for directions.
275149 
275150 // tps: (02/22/2010): Adding DLL export requirements
275151 #include "rosedll.h"
275152 
275153 // predeclarations for SgBoolValExp
275154 
275155 /* #line 275156 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
275156 
275157 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
275158 
275159 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
275160 
275161 #if 1
275162 // Class Definition for SgBoolValExp
275163 class ROSE_DLL_API SgBoolValExp : public SgValueExp
275164  {
275165  public:
275166 
275167 
275168 /* #line 275169 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
275169 
275170  virtual SgNode* copy ( SgCopyHelp& help) const override;
275171 // Start of memberFunctionString
275172 /* #line 553 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
275173 
275174 
275175 
275176 // End of memberFunctionString
275177 // Start of memberFunctionString
275178 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
275179 
275180 // *** COMMON CODE SECTION BEGINS HERE ***
275181 
275182  public:
275183 
275184  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
275185  // and not required which is required to match the other aspects of the copy mechanism code generation.
275186  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
275187  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
275188  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
275189  // virtual SgNode* copy ( const SgCopyHelp & help) const;
275190 
275192  virtual std::string class_name() const override;
275193 
275195  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
275196 
275198  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
275199  // static const VariantT static_variant = V_SgBoolValExp;
275200  enum { static_variant = V_SgBoolValExp };
275201 
275202  /* the generated cast function */
275204  ROSE_DLL_API friend SgBoolValExp* isSgBoolValExp( SgNode * s );
275205 
275207  ROSE_DLL_API friend const SgBoolValExp* isSgBoolValExp( const SgNode * s );
275208 
275209  // ******************************************
275210  // * Memory Pool / New / Delete
275211  // ******************************************
275212 
275213  public:
275215  static const unsigned pool_size; //
275217  static std::vector<unsigned char *> pools; //
275219  static SgBoolValExp * next_node; //
275220 
275222  static unsigned long initializeStorageClassArray(SgBoolValExpStorageClass *); //
275223 
275225  static void clearMemoryPool(); //
275226  static void deleteMemoryPool(); //
275227 
275229  static void extendMemoryPoolForFileIO(); //
275230 
275232  static SgBoolValExp * getPointerFromGlobalIndex(unsigned long); //
275234  static SgBoolValExp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
275235 
275237  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
275239  static void resetValidFreepointers(); //
275241  static unsigned long getNumberOfLastValidPointer(); //
275242 
275243 
275244 #if defined(INLINE_FUNCTIONS)
275245 
275246  inline void *operator new (size_t size);
275247 #else
275248 
275249  void *operator new (size_t size);
275250 #endif
275251 
275252  void operator delete (void* pointer, size_t size);
275253 
275254  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
275255  void operator delete (void* pointer)
275256  {
275257  // This is the generated delete operator...
275258  SgBoolValExp::operator delete (pointer,sizeof(SgBoolValExp));
275259  }
275260 
275262  static size_t numberOfNodes();
275263 
275265  static size_t memoryUsage();
275266 
275267  // End of scope which started in IR nodes specific code
275268  /* */
275269 
275270  /* name Internal Functions
275271  \brief Internal functions ... incomplete-documentation
275272 
275273  These functions have been made public as part of the design, but they are suggested for internal use
275274  or by particularly knowledgeable users for specialized tools or applications.
275275 
275276  \internal We could not make these private because they are required by user for special purposes. And
275277  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
275278 
275279  */
275280 
275281  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
275282  // overridden in every class by *generated* implementation
275284  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
275285  // MS: 06/28/02 container of names of variables or container indices
275286  // used used in the traversal to access AST successor nodes
275287  // overridden in every class by *generated* implementation
275290  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
275291 
275292  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
275293  // than all the vector copies. The implementation for these functions is generated for each class.
275295  virtual size_t get_numberOfTraversalSuccessors() override;
275297  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
275299  virtual size_t get_childIndex(SgNode *child) override;
275300 
275301 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
275302  // MS: 08/16/2002 method for generating RTI information
275304  virtual RTIReturnType roseRTI() override;
275305 #endif
275306  /* */
275307 
275308 
275309 
275310  /* name Deprecated Functions
275311  \brief Deprecated functions ... incomplete-documentation
275312 
275313  These functions have been deprecated from use.
275314  */
275315  /* */
275316 
275318  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
275319 
275320  // JJW (10/16/2008): Changed to a single function in Node.code, and put
275321  // getVariant() in #if 0 block to prevent confusing Doxygen
275322 #if 0
275323 
275324  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
275326  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
275327 #endif
275328  /* */
275329 
275330 
275331 
275332 
275333  public:
275334  /* name Traversal Support Functions
275335  \brief Traversal support functions ... incomplete-documentation
275336 
275337  These functions have been made public as part of the design, but they are suggested for internal use
275338  or by particularly knowledgable users for specialized tools or applications.
275339  */
275340  /* */
275341 
275342  // DQ (11/26/2005): Support for visitor pattern mechanims
275343  // (inferior to ROSE traversal mechanism, experimental).
275347 
275348  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
275350  virtual void accept (ROSE_VisitorPattern & visitor) override;
275351 
275352  // DQ (12/26/2005): Support for traversal based on the memory pool
275355  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
275356 
275359  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
275360 
275361  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
275362  // This traversal helps support internal tools that call static member functions.
275363  // note: this function operates on the memory pools.
275366  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
275367  /* */
275368 
275369 
275370  public:
275371  /* name Memory Allocation Functions
275372  \brief Memory allocations functions ... incomplete-documentation
275373 
275374  These functions have been made public as part of the design, but they are suggested for internal use
275375  or by particularly knowledgable users for specialized tools or applications.
275376  */
275377  /* */
275378 
275389  virtual bool isInMemoryPool() override;
275390 
275401  virtual void checkDataMemberPointersIfInMemoryPool() override;
275402 
275403  // DQ (4/30/2006): Modified to be a const function.
275418  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
275419 
275429  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
275430 
275442  virtual long getChildIndex( SgNode* childNode ) const override;
275443 
275444  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
275445  // comment here (changed to be a C style comment and not be a doxygen comment).
275446  /* \brief Constructor for use by AST File I/O Mechanism
275447 
275448  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
275449  which obtained via fast binary file I/O from disk.
275450  */
275451  // SgBoolValExp( SgBoolValExpStorageClass& source );
275452 
275453 
275454 
275455 
275456 
275457  // JH (10/24/2005): methods added to support the ast file IO
275458  private:
275459 
275460  /* name AST Memory Allocation Support Functions
275461  \brief Memory allocations support....
275462 
275463  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
275464  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
275465  and support the AST File I/O Mechanism.
275466  */
275467  /* */
275468 
275469  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
275470  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
275471  that I use the same type everywhere, if any changes are made. THe second one declares the type
275472  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
275473  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
275474  a correspinding one in the AST_FILE_IO class!
275475  */
275476  // DQ (9/2/2015): This typedef is no longer used, we can't define the
275477  // comment here (changed to be a C style comment and not be a doxygen comment).
275478  /* \brief Typedef used for low level memory access.
275479  */
275480  // typedef unsigned char* TestType;
275481 
275482  // DQ (9/2/2015): This typedef is no longer used, we can't define the
275483  // comment here (changed to be a C style comment and not be a doxygen comment).
275484  /* \brief Typedef used to hold memory addresses as values.
275485  */
275486  // typedef unsigned long AddressType;
275487 
275488 
275489 
275490  // necessary, to have direct access to the p_freepointer and the private methods !
275492  friend class AST_FILE_IO;
275493 
275495  friend class SgBoolValExpStorageClass;
275496 
275498  friend class AstSpecificDataManagingClass;
275499 
275501  friend class AstSpecificDataManagingClassStorageClass;
275502 
275503  public:
275505  SgBoolValExp( const SgBoolValExpStorageClass& source );
275506 
275507  // private: // JJW hack
275508  /*
275509  name AST Memory Allocation Support Variables
275510  Memory allocations support variables
275511 
275512  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
275513  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
275514  and support the AST File I/O Mechanism.
275515  */
275516  /* */
275517 
275518  public:
275519 
275520  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
275521  // to current node (so that it will work cleanly with build functions to specify patterns).
275522  // virtual SgNode* addRegExpAttribute();
275528  SgBoolValExp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
275529 
275530 // *** COMMON CODE SECTION ENDS HERE ***
275531 
275532 
275533 // End of memberFunctionString
275534 // Start of memberFunctionString
275535 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
275536 
275537  // the generated cast function
275538  // friend ROSE_DLL_API SgBoolValExp* isSgBoolValExp ( SgNode* s );
275539 
275540  typedef SgValueExp base_node_type;
275541 
275542 
275543 // End of memberFunctionString
275544 // Start of memberFunctionString
275545 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
275546 
275547  SgType* get_type() const override;
275548 
275549 
275550 // End of memberFunctionString
275551 // Start of memberFunctionString
275552 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
275553 
275554  void post_construction_initialization() override;
275555 
275556 
275557 // End of memberFunctionString
275558 
275559  public:
275560  int get_value() const;
275561  void set_value(int value);
275562 
275563 
275564  public:
275565  virtual ~SgBoolValExp();
275566 
275567 
275568  public:
275569  SgBoolValExp(Sg_File_Info* startOfConstruct , int value = 0);
275570  SgBoolValExp(int value);
275571 
275572  protected:
275573 // Start of memberFunctionString
275575 
275576 // End of memberFunctionString
275577 
275578 
275579 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
275580 
275581 
275582  };
275583 #endif
275584 
275585 // postdeclarations for SgBoolValExp
275586 
275587 /* #line 275588 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
275588 
275589 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
275590 
275591 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
275592 
275593 
275594 /* #line 275595 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
275595 
275596 
275597 
275598 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
275599 
275600 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
275601 // This code is automatically generated for each
275602 // terminal and non-terminal within the defined
275603 // grammar. There is a simple way to change the
275604 // code to fix bugs etc. See the ROSE README file
275605 // for directions.
275606 
275607 // tps: (02/22/2010): Adding DLL export requirements
275608 #include "rosedll.h"
275609 
275610 // predeclarations for SgStringVal
275611 
275612 /* #line 275613 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
275613 
275614 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
275615 
275616 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
275617 
275618 #if 1
275619 // Class Definition for SgStringVal
275620 class ROSE_DLL_API SgStringVal : public SgValueExp
275621  {
275622  public:
275623 
275624 
275625 /* #line 275626 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
275626 
275627  virtual SgNode* copy ( SgCopyHelp& help) const override;
275628 // Start of memberFunctionString
275629 /* #line 565 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
275630 
275631  // DQ (3/25/2006): This is not generated by ROSETTA automatically (using C++ style string type)
275632  // SgStringVal( Sg_File_Info* file_info = NULL, char* value = NULL );
275633  // ~SgStringVal();
275634 
275635  // get lvalue
275636  virtual bool isLValue() const override;
275637  virtual bool isChildUsedAsLValue(const SgExpression* child) const override; // INTERNAL Recursively call up the chain to answer the child
275638 
275639  // PP (4/25/21) implement usesSingleQuote and usesDoubleQuote based on
275640  // stringDelimiter for backward compatibility.
275641  bool get_usesSingleQuotes() const { return get_stringDelimiter() == '\''; }
275642  bool get_usesDoubleQuotes() const { return get_stringDelimiter() == '"'; }
275643 
275644  void set_usesSingleQuotes(bool usesSingleQuotes);
275645  void set_usesDoubleQuotes(bool usesDoubleQuotes);
275646 
275647 
275648 // End of memberFunctionString
275649 // Start of memberFunctionString
275650 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
275651 
275652 // *** COMMON CODE SECTION BEGINS HERE ***
275653 
275654  public:
275655 
275656  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
275657  // and not required which is required to match the other aspects of the copy mechanism code generation.
275658  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
275659  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
275660  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
275661  // virtual SgNode* copy ( const SgCopyHelp & help) const;
275662 
275664  virtual std::string class_name() const override;
275665 
275667  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
275668 
275670  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
275671  // static const VariantT static_variant = V_SgStringVal;
275672  enum { static_variant = V_SgStringVal };
275673 
275674  /* the generated cast function */
275676  ROSE_DLL_API friend SgStringVal* isSgStringVal( SgNode * s );
275677 
275679  ROSE_DLL_API friend const SgStringVal* isSgStringVal( const SgNode * s );
275680 
275681  // ******************************************
275682  // * Memory Pool / New / Delete
275683  // ******************************************
275684 
275685  public:
275687  static const unsigned pool_size; //
275689  static std::vector<unsigned char *> pools; //
275691  static SgStringVal * next_node; //
275692 
275694  static unsigned long initializeStorageClassArray(SgStringValStorageClass *); //
275695 
275697  static void clearMemoryPool(); //
275698  static void deleteMemoryPool(); //
275699 
275701  static void extendMemoryPoolForFileIO(); //
275702 
275704  static SgStringVal * getPointerFromGlobalIndex(unsigned long); //
275706  static SgStringVal * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
275707 
275709  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
275711  static void resetValidFreepointers(); //
275713  static unsigned long getNumberOfLastValidPointer(); //
275714 
275715 
275716 #if defined(INLINE_FUNCTIONS)
275717 
275718  inline void *operator new (size_t size);
275719 #else
275720 
275721  void *operator new (size_t size);
275722 #endif
275723 
275724  void operator delete (void* pointer, size_t size);
275725 
275726  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
275727  void operator delete (void* pointer)
275728  {
275729  // This is the generated delete operator...
275730  SgStringVal::operator delete (pointer,sizeof(SgStringVal));
275731  }
275732 
275734  static size_t numberOfNodes();
275735 
275737  static size_t memoryUsage();
275738 
275739  // End of scope which started in IR nodes specific code
275740  /* */
275741 
275742  /* name Internal Functions
275743  \brief Internal functions ... incomplete-documentation
275744 
275745  These functions have been made public as part of the design, but they are suggested for internal use
275746  or by particularly knowledgeable users for specialized tools or applications.
275747 
275748  \internal We could not make these private because they are required by user for special purposes. And
275749  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
275750 
275751  */
275752 
275753  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
275754  // overridden in every class by *generated* implementation
275756  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
275757  // MS: 06/28/02 container of names of variables or container indices
275758  // used used in the traversal to access AST successor nodes
275759  // overridden in every class by *generated* implementation
275762  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
275763 
275764  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
275765  // than all the vector copies. The implementation for these functions is generated for each class.
275767  virtual size_t get_numberOfTraversalSuccessors() override;
275769  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
275771  virtual size_t get_childIndex(SgNode *child) override;
275772 
275773 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
275774  // MS: 08/16/2002 method for generating RTI information
275776  virtual RTIReturnType roseRTI() override;
275777 #endif
275778  /* */
275779 
275780 
275781 
275782  /* name Deprecated Functions
275783  \brief Deprecated functions ... incomplete-documentation
275784 
275785  These functions have been deprecated from use.
275786  */
275787  /* */
275788 
275790  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
275791 
275792  // JJW (10/16/2008): Changed to a single function in Node.code, and put
275793  // getVariant() in #if 0 block to prevent confusing Doxygen
275794 #if 0
275795 
275796  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
275798  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
275799 #endif
275800  /* */
275801 
275802 
275803 
275804 
275805  public:
275806  /* name Traversal Support Functions
275807  \brief Traversal support functions ... incomplete-documentation
275808 
275809  These functions have been made public as part of the design, but they are suggested for internal use
275810  or by particularly knowledgable users for specialized tools or applications.
275811  */
275812  /* */
275813 
275814  // DQ (11/26/2005): Support for visitor pattern mechanims
275815  // (inferior to ROSE traversal mechanism, experimental).
275819 
275820  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
275822  virtual void accept (ROSE_VisitorPattern & visitor) override;
275823 
275824  // DQ (12/26/2005): Support for traversal based on the memory pool
275827  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
275828 
275831  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
275832 
275833  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
275834  // This traversal helps support internal tools that call static member functions.
275835  // note: this function operates on the memory pools.
275838  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
275839  /* */
275840 
275841 
275842  public:
275843  /* name Memory Allocation Functions
275844  \brief Memory allocations functions ... incomplete-documentation
275845 
275846  These functions have been made public as part of the design, but they are suggested for internal use
275847  or by particularly knowledgable users for specialized tools or applications.
275848  */
275849  /* */
275850 
275861  virtual bool isInMemoryPool() override;
275862 
275873  virtual void checkDataMemberPointersIfInMemoryPool() override;
275874 
275875  // DQ (4/30/2006): Modified to be a const function.
275890  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
275891 
275901  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
275902 
275914  virtual long getChildIndex( SgNode* childNode ) const override;
275915 
275916  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
275917  // comment here (changed to be a C style comment and not be a doxygen comment).
275918  /* \brief Constructor for use by AST File I/O Mechanism
275919 
275920  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
275921  which obtained via fast binary file I/O from disk.
275922  */
275923  // SgStringVal( SgStringValStorageClass& source );
275924 
275925 
275926 
275927 
275928 
275929  // JH (10/24/2005): methods added to support the ast file IO
275930  private:
275931 
275932  /* name AST Memory Allocation Support Functions
275933  \brief Memory allocations support....
275934 
275935  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
275936  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
275937  and support the AST File I/O Mechanism.
275938  */
275939  /* */
275940 
275941  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
275942  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
275943  that I use the same type everywhere, if any changes are made. THe second one declares the type
275944  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
275945  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
275946  a correspinding one in the AST_FILE_IO class!
275947  */
275948  // DQ (9/2/2015): This typedef is no longer used, we can't define the
275949  // comment here (changed to be a C style comment and not be a doxygen comment).
275950  /* \brief Typedef used for low level memory access.
275951  */
275952  // typedef unsigned char* TestType;
275953 
275954  // DQ (9/2/2015): This typedef is no longer used, we can't define the
275955  // comment here (changed to be a C style comment and not be a doxygen comment).
275956  /* \brief Typedef used to hold memory addresses as values.
275957  */
275958  // typedef unsigned long AddressType;
275959 
275960 
275961 
275962  // necessary, to have direct access to the p_freepointer and the private methods !
275964  friend class AST_FILE_IO;
275965 
275967  friend class SgStringValStorageClass;
275968 
275970  friend class AstSpecificDataManagingClass;
275971 
275973  friend class AstSpecificDataManagingClassStorageClass;
275974 
275975  public:
275977  SgStringVal( const SgStringValStorageClass& source );
275978 
275979  // private: // JJW hack
275980  /*
275981  name AST Memory Allocation Support Variables
275982  Memory allocations support variables
275983 
275984  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
275985  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
275986  and support the AST File I/O Mechanism.
275987  */
275988  /* */
275989 
275990  public:
275991 
275992  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
275993  // to current node (so that it will work cleanly with build functions to specify patterns).
275994  // virtual SgNode* addRegExpAttribute();
276000  SgStringVal* addRegExpAttribute(std::string s, AstRegExAttribute* a);
276001 
276002 // *** COMMON CODE SECTION ENDS HERE ***
276003 
276004 
276005 // End of memberFunctionString
276006 // Start of memberFunctionString
276007 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
276008 
276009  // the generated cast function
276010  // friend ROSE_DLL_API SgStringVal* isSgStringVal ( SgNode* s );
276011 
276012  typedef SgValueExp base_node_type;
276013 
276014 
276015 // End of memberFunctionString
276016 // Start of memberFunctionString
276017 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
276018 
276019  SgType* get_type() const override;
276020 
276021 
276022 // End of memberFunctionString
276023 // Start of memberFunctionString
276024 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
276025 
276026  void post_construction_initialization() override;
276027 
276028 
276029 // End of memberFunctionString
276030 
276031  public:
276032  std::string get_value() const;
276033  void set_value(std::string value);
276034 
276035  public:
276036  bool get_wcharString() const;
276037  void set_wcharString(bool wcharString);
276038 
276039  public:
276040  char get_stringDelimiter() const;
276041  void set_stringDelimiter(char stringDelimiter);
276042 
276043  public:
276044  bool get_is16bitString() const;
276045  void set_is16bitString(bool is16bitString);
276046 
276047  public:
276048  bool get_is32bitString() const;
276049  void set_is32bitString(bool is32bitString);
276050 
276051  public:
276052  bool get_isRawString() const;
276053  void set_isRawString(bool isRawString);
276054 
276055  public:
276056  std::string get_raw_string_value() const;
276057  void set_raw_string_value(std::string raw_string_value);
276058 
276059 
276060  public:
276061  virtual ~SgStringVal();
276062 
276063 
276064  public:
276065  SgStringVal(Sg_File_Info* startOfConstruct , std::string value = "");
276066  SgStringVal(std::string value);
276067 
276068  protected:
276069 // Start of memberFunctionString
276070 std::string p_value;
276071 
276072 // End of memberFunctionString
276073 // Start of memberFunctionString
276074 bool p_wcharString;
276075 
276076 // End of memberFunctionString
276077 // Start of memberFunctionString
276078 char p_stringDelimiter;
276079 
276080 // End of memberFunctionString
276081 // Start of memberFunctionString
276082 bool p_is16bitString;
276083 
276084 // End of memberFunctionString
276085 // Start of memberFunctionString
276086 bool p_is32bitString;
276087 
276088 // End of memberFunctionString
276089 // Start of memberFunctionString
276090 bool p_isRawString;
276091 
276092 // End of memberFunctionString
276093 // Start of memberFunctionString
276094 std::string p_raw_string_value;
276095 
276096 // End of memberFunctionString
276097 
276098 
276099 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
276100 
276101 
276102  };
276103 #endif
276104 
276105 // postdeclarations for SgStringVal
276106 
276107 /* #line 276108 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
276108 
276109 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
276110 
276111 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
276112 
276113 
276114 /* #line 276115 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
276115 
276116 
276117 
276118 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
276119 
276120 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
276121 // This code is automatically generated for each
276122 // terminal and non-terminal within the defined
276123 // grammar. There is a simple way to change the
276124 // code to fix bugs etc. See the ROSE README file
276125 // for directions.
276126 
276127 // tps: (02/22/2010): Adding DLL export requirements
276128 #include "rosedll.h"
276129 
276130 // predeclarations for SgShortVal
276131 
276132 /* #line 276133 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
276133 
276134 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
276135 
276136 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
276137 
276138 #if 1
276139 // Class Definition for SgShortVal
276140 class ROSE_DLL_API SgShortVal : public SgValueExp
276141  {
276142  public:
276143 
276144 
276145 /* #line 276146 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
276146 
276147  virtual SgNode* copy ( SgCopyHelp& help) const override;
276148 // Start of memberFunctionString
276149 /* #line 584 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
276150 
276151 
276152 
276153 // End of memberFunctionString
276154 // Start of memberFunctionString
276155 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
276156 
276157 // *** COMMON CODE SECTION BEGINS HERE ***
276158 
276159  public:
276160 
276161  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
276162  // and not required which is required to match the other aspects of the copy mechanism code generation.
276163  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
276164  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
276165  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
276166  // virtual SgNode* copy ( const SgCopyHelp & help) const;
276167 
276169  virtual std::string class_name() const override;
276170 
276172  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
276173 
276175  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
276176  // static const VariantT static_variant = V_SgShortVal;
276177  enum { static_variant = V_SgShortVal };
276178 
276179  /* the generated cast function */
276181  ROSE_DLL_API friend SgShortVal* isSgShortVal( SgNode * s );
276182 
276184  ROSE_DLL_API friend const SgShortVal* isSgShortVal( const SgNode * s );
276185 
276186  // ******************************************
276187  // * Memory Pool / New / Delete
276188  // ******************************************
276189 
276190  public:
276192  static const unsigned pool_size; //
276194  static std::vector<unsigned char *> pools; //
276196  static SgShortVal * next_node; //
276197 
276199  static unsigned long initializeStorageClassArray(SgShortValStorageClass *); //
276200 
276202  static void clearMemoryPool(); //
276203  static void deleteMemoryPool(); //
276204 
276206  static void extendMemoryPoolForFileIO(); //
276207 
276209  static SgShortVal * getPointerFromGlobalIndex(unsigned long); //
276211  static SgShortVal * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
276212 
276214  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
276216  static void resetValidFreepointers(); //
276218  static unsigned long getNumberOfLastValidPointer(); //
276219 
276220 
276221 #if defined(INLINE_FUNCTIONS)
276222 
276223  inline void *operator new (size_t size);
276224 #else
276225 
276226  void *operator new (size_t size);
276227 #endif
276228 
276229  void operator delete (void* pointer, size_t size);
276230 
276231  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
276232  void operator delete (void* pointer)
276233  {
276234  // This is the generated delete operator...
276235  SgShortVal::operator delete (pointer,sizeof(SgShortVal));
276236  }
276237 
276239  static size_t numberOfNodes();
276240 
276242  static size_t memoryUsage();
276243 
276244  // End of scope which started in IR nodes specific code
276245  /* */
276246 
276247  /* name Internal Functions
276248  \brief Internal functions ... incomplete-documentation
276249 
276250  These functions have been made public as part of the design, but they are suggested for internal use
276251  or by particularly knowledgeable users for specialized tools or applications.
276252 
276253  \internal We could not make these private because they are required by user for special purposes. And
276254  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
276255 
276256  */
276257 
276258  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
276259  // overridden in every class by *generated* implementation
276261  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
276262  // MS: 06/28/02 container of names of variables or container indices
276263  // used used in the traversal to access AST successor nodes
276264  // overridden in every class by *generated* implementation
276267  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
276268 
276269  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
276270  // than all the vector copies. The implementation for these functions is generated for each class.
276272  virtual size_t get_numberOfTraversalSuccessors() override;
276274  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
276276  virtual size_t get_childIndex(SgNode *child) override;
276277 
276278 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
276279  // MS: 08/16/2002 method for generating RTI information
276281  virtual RTIReturnType roseRTI() override;
276282 #endif
276283  /* */
276284 
276285 
276286 
276287  /* name Deprecated Functions
276288  \brief Deprecated functions ... incomplete-documentation
276289 
276290  These functions have been deprecated from use.
276291  */
276292  /* */
276293 
276295  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
276296 
276297  // JJW (10/16/2008): Changed to a single function in Node.code, and put
276298  // getVariant() in #if 0 block to prevent confusing Doxygen
276299 #if 0
276300 
276301  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
276303  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
276304 #endif
276305  /* */
276306 
276307 
276308 
276309 
276310  public:
276311  /* name Traversal Support Functions
276312  \brief Traversal support functions ... incomplete-documentation
276313 
276314  These functions have been made public as part of the design, but they are suggested for internal use
276315  or by particularly knowledgable users for specialized tools or applications.
276316  */
276317  /* */
276318 
276319  // DQ (11/26/2005): Support for visitor pattern mechanims
276320  // (inferior to ROSE traversal mechanism, experimental).
276324 
276325  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
276327  virtual void accept (ROSE_VisitorPattern & visitor) override;
276328 
276329  // DQ (12/26/2005): Support for traversal based on the memory pool
276332  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
276333 
276336  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
276337 
276338  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
276339  // This traversal helps support internal tools that call static member functions.
276340  // note: this function operates on the memory pools.
276343  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
276344  /* */
276345 
276346 
276347  public:
276348  /* name Memory Allocation Functions
276349  \brief Memory allocations functions ... incomplete-documentation
276350 
276351  These functions have been made public as part of the design, but they are suggested for internal use
276352  or by particularly knowledgable users for specialized tools or applications.
276353  */
276354  /* */
276355 
276366  virtual bool isInMemoryPool() override;
276367 
276378  virtual void checkDataMemberPointersIfInMemoryPool() override;
276379 
276380  // DQ (4/30/2006): Modified to be a const function.
276395  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
276396 
276406  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
276407 
276419  virtual long getChildIndex( SgNode* childNode ) const override;
276420 
276421  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
276422  // comment here (changed to be a C style comment and not be a doxygen comment).
276423  /* \brief Constructor for use by AST File I/O Mechanism
276424 
276425  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
276426  which obtained via fast binary file I/O from disk.
276427  */
276428  // SgShortVal( SgShortValStorageClass& source );
276429 
276430 
276431 
276432 
276433 
276434  // JH (10/24/2005): methods added to support the ast file IO
276435  private:
276436 
276437  /* name AST Memory Allocation Support Functions
276438  \brief Memory allocations support....
276439 
276440  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
276441  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
276442  and support the AST File I/O Mechanism.
276443  */
276444  /* */
276445 
276446  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
276447  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
276448  that I use the same type everywhere, if any changes are made. THe second one declares the type
276449  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
276450  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
276451  a correspinding one in the AST_FILE_IO class!
276452  */
276453  // DQ (9/2/2015): This typedef is no longer used, we can't define the
276454  // comment here (changed to be a C style comment and not be a doxygen comment).
276455  /* \brief Typedef used for low level memory access.
276456  */
276457  // typedef unsigned char* TestType;
276458 
276459  // DQ (9/2/2015): This typedef is no longer used, we can't define the
276460  // comment here (changed to be a C style comment and not be a doxygen comment).
276461  /* \brief Typedef used to hold memory addresses as values.
276462  */
276463  // typedef unsigned long AddressType;
276464 
276465 
276466 
276467  // necessary, to have direct access to the p_freepointer and the private methods !
276469  friend class AST_FILE_IO;
276470 
276472  friend class SgShortValStorageClass;
276473 
276475  friend class AstSpecificDataManagingClass;
276476 
276478  friend class AstSpecificDataManagingClassStorageClass;
276479 
276480  public:
276482  SgShortVal( const SgShortValStorageClass& source );
276483 
276484  // private: // JJW hack
276485  /*
276486  name AST Memory Allocation Support Variables
276487  Memory allocations support variables
276488 
276489  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
276490  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
276491  and support the AST File I/O Mechanism.
276492  */
276493  /* */
276494 
276495  public:
276496 
276497  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
276498  // to current node (so that it will work cleanly with build functions to specify patterns).
276499  // virtual SgNode* addRegExpAttribute();
276505  SgShortVal* addRegExpAttribute(std::string s, AstRegExAttribute* a);
276506 
276507 // *** COMMON CODE SECTION ENDS HERE ***
276508 
276509 
276510 // End of memberFunctionString
276511 // Start of memberFunctionString
276512 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
276513 
276514  // the generated cast function
276515  // friend ROSE_DLL_API SgShortVal* isSgShortVal ( SgNode* s );
276516 
276517  typedef SgValueExp base_node_type;
276518 
276519 
276520 // End of memberFunctionString
276521 // Start of memberFunctionString
276522 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
276523 
276524  SgType* get_type() const override;
276525 
276526 
276527 // End of memberFunctionString
276528 // Start of memberFunctionString
276529 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
276530 
276531  void post_construction_initialization() override;
276532 
276533 
276534 // End of memberFunctionString
276535 
276536  public:
276537  short get_value() const;
276538  void set_value(short value);
276539 
276540  public:
276541  std::string get_valueString() const;
276542  void set_valueString(std::string valueString);
276543 
276544 
276545  public:
276546  virtual ~SgShortVal();
276547 
276548 
276549  public:
276550  SgShortVal(Sg_File_Info* startOfConstruct , short value = 0, std::string valueString = "");
276551  SgShortVal(short value, std::string valueString);
276552 
276553  protected:
276554 // Start of memberFunctionString
276555 short p_value;
276556 
276557 // End of memberFunctionString
276558 // Start of memberFunctionString
276559 std::string p_valueString;
276560 
276561 // End of memberFunctionString
276562 
276563 
276564 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
276565 
276566 
276567  };
276568 #endif
276569 
276570 // postdeclarations for SgShortVal
276571 
276572 /* #line 276573 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
276573 
276574 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
276575 
276576 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
276577 
276578 
276579 /* #line 276580 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
276580 
276581 
276582 
276583 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
276584 
276585 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
276586 // This code is automatically generated for each
276587 // terminal and non-terminal within the defined
276588 // grammar. There is a simple way to change the
276589 // code to fix bugs etc. See the ROSE README file
276590 // for directions.
276591 
276592 // tps: (02/22/2010): Adding DLL export requirements
276593 #include "rosedll.h"
276594 
276595 // predeclarations for SgCharVal
276596 
276597 /* #line 276598 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
276598 
276599 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
276600 
276601 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
276602 
276603 #if 1
276604 // Class Definition for SgCharVal
276605 class ROSE_DLL_API SgCharVal : public SgValueExp
276606  {
276607  public:
276608 
276609 
276610 /* #line 276611 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
276611 
276612  virtual SgNode* copy ( SgCopyHelp& help) const override;
276613 // Start of memberFunctionString
276614 /* #line 588 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
276615 
276616 
276617 
276618 // End of memberFunctionString
276619 // Start of memberFunctionString
276620 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
276621 
276622 // *** COMMON CODE SECTION BEGINS HERE ***
276623 
276624  public:
276625 
276626  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
276627  // and not required which is required to match the other aspects of the copy mechanism code generation.
276628  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
276629  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
276630  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
276631  // virtual SgNode* copy ( const SgCopyHelp & help) const;
276632 
276634  virtual std::string class_name() const override;
276635 
276637  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
276638 
276640  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
276641  // static const VariantT static_variant = V_SgCharVal;
276642  enum { static_variant = V_SgCharVal };
276643 
276644  /* the generated cast function */
276646  ROSE_DLL_API friend SgCharVal* isSgCharVal( SgNode * s );
276647 
276649  ROSE_DLL_API friend const SgCharVal* isSgCharVal( const SgNode * s );
276650 
276651  // ******************************************
276652  // * Memory Pool / New / Delete
276653  // ******************************************
276654 
276655  public:
276657  static const unsigned pool_size; //
276659  static std::vector<unsigned char *> pools; //
276661  static SgCharVal * next_node; //
276662 
276664  static unsigned long initializeStorageClassArray(SgCharValStorageClass *); //
276665 
276667  static void clearMemoryPool(); //
276668  static void deleteMemoryPool(); //
276669 
276671  static void extendMemoryPoolForFileIO(); //
276672 
276674  static SgCharVal * getPointerFromGlobalIndex(unsigned long); //
276676  static SgCharVal * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
276677 
276679  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
276681  static void resetValidFreepointers(); //
276683  static unsigned long getNumberOfLastValidPointer(); //
276684 
276685 
276686 #if defined(INLINE_FUNCTIONS)
276687 
276688  inline void *operator new (size_t size);
276689 #else
276690 
276691  void *operator new (size_t size);
276692 #endif
276693 
276694  void operator delete (void* pointer, size_t size);
276695 
276696  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
276697  void operator delete (void* pointer)
276698  {
276699  // This is the generated delete operator...
276700  SgCharVal::operator delete (pointer,sizeof(SgCharVal));
276701  }
276702 
276704  static size_t numberOfNodes();
276705 
276707  static size_t memoryUsage();
276708 
276709  // End of scope which started in IR nodes specific code
276710  /* */
276711 
276712  /* name Internal Functions
276713  \brief Internal functions ... incomplete-documentation
276714 
276715  These functions have been made public as part of the design, but they are suggested for internal use
276716  or by particularly knowledgeable users for specialized tools or applications.
276717 
276718  \internal We could not make these private because they are required by user for special purposes. And
276719  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
276720 
276721  */
276722 
276723  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
276724  // overridden in every class by *generated* implementation
276726  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
276727  // MS: 06/28/02 container of names of variables or container indices
276728  // used used in the traversal to access AST successor nodes
276729  // overridden in every class by *generated* implementation
276732  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
276733 
276734  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
276735  // than all the vector copies. The implementation for these functions is generated for each class.
276737  virtual size_t get_numberOfTraversalSuccessors() override;
276739  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
276741  virtual size_t get_childIndex(SgNode *child) override;
276742 
276743 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
276744  // MS: 08/16/2002 method for generating RTI information
276746  virtual RTIReturnType roseRTI() override;
276747 #endif
276748  /* */
276749 
276750 
276751 
276752  /* name Deprecated Functions
276753  \brief Deprecated functions ... incomplete-documentation
276754 
276755  These functions have been deprecated from use.
276756  */
276757  /* */
276758 
276760  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
276761 
276762  // JJW (10/16/2008): Changed to a single function in Node.code, and put
276763  // getVariant() in #if 0 block to prevent confusing Doxygen
276764 #if 0
276765 
276766  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
276768  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
276769 #endif
276770  /* */
276771 
276772 
276773 
276774 
276775  public:
276776  /* name Traversal Support Functions
276777  \brief Traversal support functions ... incomplete-documentation
276778 
276779  These functions have been made public as part of the design, but they are suggested for internal use
276780  or by particularly knowledgable users for specialized tools or applications.
276781  */
276782  /* */
276783 
276784  // DQ (11/26/2005): Support for visitor pattern mechanims
276785  // (inferior to ROSE traversal mechanism, experimental).
276789 
276790  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
276792  virtual void accept (ROSE_VisitorPattern & visitor) override;
276793 
276794  // DQ (12/26/2005): Support for traversal based on the memory pool
276797  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
276798 
276801  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
276802 
276803  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
276804  // This traversal helps support internal tools that call static member functions.
276805  // note: this function operates on the memory pools.
276808  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
276809  /* */
276810 
276811 
276812  public:
276813  /* name Memory Allocation Functions
276814  \brief Memory allocations functions ... incomplete-documentation
276815 
276816  These functions have been made public as part of the design, but they are suggested for internal use
276817  or by particularly knowledgable users for specialized tools or applications.
276818  */
276819  /* */
276820 
276831  virtual bool isInMemoryPool() override;
276832 
276843  virtual void checkDataMemberPointersIfInMemoryPool() override;
276844 
276845  // DQ (4/30/2006): Modified to be a const function.
276860  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
276861 
276871  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
276872 
276884  virtual long getChildIndex( SgNode* childNode ) const override;
276885 
276886  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
276887  // comment here (changed to be a C style comment and not be a doxygen comment).
276888  /* \brief Constructor for use by AST File I/O Mechanism
276889 
276890  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
276891  which obtained via fast binary file I/O from disk.
276892  */
276893  // SgCharVal( SgCharValStorageClass& source );
276894 
276895 
276896 
276897 
276898 
276899  // JH (10/24/2005): methods added to support the ast file IO
276900  private:
276901 
276902  /* name AST Memory Allocation Support Functions
276903  \brief Memory allocations support....
276904 
276905  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
276906  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
276907  and support the AST File I/O Mechanism.
276908  */
276909  /* */
276910 
276911  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
276912  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
276913  that I use the same type everywhere, if any changes are made. THe second one declares the type
276914  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
276915  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
276916  a correspinding one in the AST_FILE_IO class!
276917  */
276918  // DQ (9/2/2015): This typedef is no longer used, we can't define the
276919  // comment here (changed to be a C style comment and not be a doxygen comment).
276920  /* \brief Typedef used for low level memory access.
276921  */
276922  // typedef unsigned char* TestType;
276923 
276924  // DQ (9/2/2015): This typedef is no longer used, we can't define the
276925  // comment here (changed to be a C style comment and not be a doxygen comment).
276926  /* \brief Typedef used to hold memory addresses as values.
276927  */
276928  // typedef unsigned long AddressType;
276929 
276930 
276931 
276932  // necessary, to have direct access to the p_freepointer and the private methods !
276934  friend class AST_FILE_IO;
276935 
276937  friend class SgCharValStorageClass;
276938 
276940  friend class AstSpecificDataManagingClass;
276941 
276943  friend class AstSpecificDataManagingClassStorageClass;
276944 
276945  public:
276947  SgCharVal( const SgCharValStorageClass& source );
276948 
276949  // private: // JJW hack
276950  /*
276951  name AST Memory Allocation Support Variables
276952  Memory allocations support variables
276953 
276954  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
276955  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
276956  and support the AST File I/O Mechanism.
276957  */
276958  /* */
276959 
276960  public:
276961 
276962  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
276963  // to current node (so that it will work cleanly with build functions to specify patterns).
276964  // virtual SgNode* addRegExpAttribute();
276970  SgCharVal* addRegExpAttribute(std::string s, AstRegExAttribute* a);
276971 
276972 // *** COMMON CODE SECTION ENDS HERE ***
276973 
276974 
276975 // End of memberFunctionString
276976 // Start of memberFunctionString
276977 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
276978 
276979  // the generated cast function
276980  // friend ROSE_DLL_API SgCharVal* isSgCharVal ( SgNode* s );
276981 
276982  typedef SgValueExp base_node_type;
276983 
276984 
276985 // End of memberFunctionString
276986 // Start of memberFunctionString
276987 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
276988 
276989  SgType* get_type() const override;
276990 
276991 
276992 // End of memberFunctionString
276993 // Start of memberFunctionString
276994 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
276995 
276996  void post_construction_initialization() override;
276997 
276998 
276999 // End of memberFunctionString
277000 
277001  public:
277002  char get_value() const;
277003  void set_value(char value);
277004 
277005  public:
277006  std::string get_valueString() const;
277007  void set_valueString(std::string valueString);
277008 
277009 
277010  public:
277011  virtual ~SgCharVal();
277012 
277013 
277014  public:
277015  SgCharVal(Sg_File_Info* startOfConstruct , char value = 0, std::string valueString = "");
277016  SgCharVal(char value, std::string valueString);
277017 
277018  protected:
277019 // Start of memberFunctionString
277020 char p_value;
277021 
277022 // End of memberFunctionString
277023 // Start of memberFunctionString
277024 std::string p_valueString;
277025 
277026 // End of memberFunctionString
277027 
277028 
277029 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
277030 
277031 
277032  };
277033 #endif
277034 
277035 // postdeclarations for SgCharVal
277036 
277037 /* #line 277038 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
277038 
277039 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
277040 
277041 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
277042 
277043 
277044 /* #line 277045 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
277045 
277046 
277047 
277048 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
277049 
277050 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
277051 // This code is automatically generated for each
277052 // terminal and non-terminal within the defined
277053 // grammar. There is a simple way to change the
277054 // code to fix bugs etc. See the ROSE README file
277055 // for directions.
277056 
277057 // tps: (02/22/2010): Adding DLL export requirements
277058 #include "rosedll.h"
277059 
277060 // predeclarations for SgUnsignedCharVal
277061 
277062 /* #line 277063 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
277063 
277064 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
277065 
277066 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
277067 
277068 #if 1
277069 // Class Definition for SgUnsignedCharVal
277070 class ROSE_DLL_API SgUnsignedCharVal : public SgValueExp
277071  {
277072  public:
277073 
277074 
277075 /* #line 277076 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
277076 
277077  virtual SgNode* copy ( SgCopyHelp& help) const override;
277078 // Start of memberFunctionString
277079 /* #line 592 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
277080 
277081 
277082 
277083 // End of memberFunctionString
277084 // Start of memberFunctionString
277085 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
277086 
277087 // *** COMMON CODE SECTION BEGINS HERE ***
277088 
277089  public:
277090 
277091  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
277092  // and not required which is required to match the other aspects of the copy mechanism code generation.
277093  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
277094  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
277095  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
277096  // virtual SgNode* copy ( const SgCopyHelp & help) const;
277097 
277099  virtual std::string class_name() const override;
277100 
277102  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
277103 
277105  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
277106  // static const VariantT static_variant = V_SgUnsignedCharVal;
277107  enum { static_variant = V_SgUnsignedCharVal };
277108 
277109  /* the generated cast function */
277111  ROSE_DLL_API friend SgUnsignedCharVal* isSgUnsignedCharVal( SgNode * s );
277112 
277114  ROSE_DLL_API friend const SgUnsignedCharVal* isSgUnsignedCharVal( const SgNode * s );
277115 
277116  // ******************************************
277117  // * Memory Pool / New / Delete
277118  // ******************************************
277119 
277120  public:
277122  static const unsigned pool_size; //
277124  static std::vector<unsigned char *> pools; //
277126  static SgUnsignedCharVal * next_node; //
277127 
277129  static unsigned long initializeStorageClassArray(SgUnsignedCharValStorageClass *); //
277130 
277132  static void clearMemoryPool(); //
277133  static void deleteMemoryPool(); //
277134 
277136  static void extendMemoryPoolForFileIO(); //
277137 
277139  static SgUnsignedCharVal * getPointerFromGlobalIndex(unsigned long); //
277141  static SgUnsignedCharVal * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
277142 
277144  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
277146  static void resetValidFreepointers(); //
277148  static unsigned long getNumberOfLastValidPointer(); //
277149 
277150 
277151 #if defined(INLINE_FUNCTIONS)
277152 
277153  inline void *operator new (size_t size);
277154 #else
277155 
277156  void *operator new (size_t size);
277157 #endif
277158 
277159  void operator delete (void* pointer, size_t size);
277160 
277161  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
277162  void operator delete (void* pointer)
277163  {
277164  // This is the generated delete operator...
277165  SgUnsignedCharVal::operator delete (pointer,sizeof(SgUnsignedCharVal));
277166  }
277167 
277169  static size_t numberOfNodes();
277170 
277172  static size_t memoryUsage();
277173 
277174  // End of scope which started in IR nodes specific code
277175  /* */
277176 
277177  /* name Internal Functions
277178  \brief Internal functions ... incomplete-documentation
277179 
277180  These functions have been made public as part of the design, but they are suggested for internal use
277181  or by particularly knowledgeable users for specialized tools or applications.
277182 
277183  \internal We could not make these private because they are required by user for special purposes. And
277184  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
277185 
277186  */
277187 
277188  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
277189  // overridden in every class by *generated* implementation
277191  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
277192  // MS: 06/28/02 container of names of variables or container indices
277193  // used used in the traversal to access AST successor nodes
277194  // overridden in every class by *generated* implementation
277197  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
277198 
277199  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
277200  // than all the vector copies. The implementation for these functions is generated for each class.
277202  virtual size_t get_numberOfTraversalSuccessors() override;
277204  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
277206  virtual size_t get_childIndex(SgNode *child) override;
277207 
277208 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
277209  // MS: 08/16/2002 method for generating RTI information
277211  virtual RTIReturnType roseRTI() override;
277212 #endif
277213  /* */
277214 
277215 
277216 
277217  /* name Deprecated Functions
277218  \brief Deprecated functions ... incomplete-documentation
277219 
277220  These functions have been deprecated from use.
277221  */
277222  /* */
277223 
277225  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
277226 
277227  // JJW (10/16/2008): Changed to a single function in Node.code, and put
277228  // getVariant() in #if 0 block to prevent confusing Doxygen
277229 #if 0
277230 
277231  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
277233  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
277234 #endif
277235  /* */
277236 
277237 
277238 
277239 
277240  public:
277241  /* name Traversal Support Functions
277242  \brief Traversal support functions ... incomplete-documentation
277243 
277244  These functions have been made public as part of the design, but they are suggested for internal use
277245  or by particularly knowledgable users for specialized tools or applications.
277246  */
277247  /* */
277248 
277249  // DQ (11/26/2005): Support for visitor pattern mechanims
277250  // (inferior to ROSE traversal mechanism, experimental).
277254 
277255  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
277257  virtual void accept (ROSE_VisitorPattern & visitor) override;
277258 
277259  // DQ (12/26/2005): Support for traversal based on the memory pool
277262  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
277263 
277266  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
277267 
277268  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
277269  // This traversal helps support internal tools that call static member functions.
277270  // note: this function operates on the memory pools.
277273  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
277274  /* */
277275 
277276 
277277  public:
277278  /* name Memory Allocation Functions
277279  \brief Memory allocations functions ... incomplete-documentation
277280 
277281  These functions have been made public as part of the design, but they are suggested for internal use
277282  or by particularly knowledgable users for specialized tools or applications.
277283  */
277284  /* */
277285 
277296  virtual bool isInMemoryPool() override;
277297 
277308  virtual void checkDataMemberPointersIfInMemoryPool() override;
277309 
277310  // DQ (4/30/2006): Modified to be a const function.
277325  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
277326 
277336  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
277337 
277349  virtual long getChildIndex( SgNode* childNode ) const override;
277350 
277351  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
277352  // comment here (changed to be a C style comment and not be a doxygen comment).
277353  /* \brief Constructor for use by AST File I/O Mechanism
277354 
277355  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
277356  which obtained via fast binary file I/O from disk.
277357  */
277358  // SgUnsignedCharVal( SgUnsignedCharValStorageClass& source );
277359 
277360 
277361 
277362 
277363 
277364  // JH (10/24/2005): methods added to support the ast file IO
277365  private:
277366 
277367  /* name AST Memory Allocation Support Functions
277368  \brief Memory allocations support....
277369 
277370  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
277371  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
277372  and support the AST File I/O Mechanism.
277373  */
277374  /* */
277375 
277376  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
277377  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
277378  that I use the same type everywhere, if any changes are made. THe second one declares the type
277379  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
277380  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
277381  a correspinding one in the AST_FILE_IO class!
277382  */
277383  // DQ (9/2/2015): This typedef is no longer used, we can't define the
277384  // comment here (changed to be a C style comment and not be a doxygen comment).
277385  /* \brief Typedef used for low level memory access.
277386  */
277387  // typedef unsigned char* TestType;
277388 
277389  // DQ (9/2/2015): This typedef is no longer used, we can't define the
277390  // comment here (changed to be a C style comment and not be a doxygen comment).
277391  /* \brief Typedef used to hold memory addresses as values.
277392  */
277393  // typedef unsigned long AddressType;
277394 
277395 
277396 
277397  // necessary, to have direct access to the p_freepointer and the private methods !
277399  friend class AST_FILE_IO;
277400 
277402  friend class SgUnsignedCharValStorageClass;
277403 
277405  friend class AstSpecificDataManagingClass;
277406 
277408  friend class AstSpecificDataManagingClassStorageClass;
277409 
277410  public:
277412  SgUnsignedCharVal( const SgUnsignedCharValStorageClass& source );
277413 
277414  // private: // JJW hack
277415  /*
277416  name AST Memory Allocation Support Variables
277417  Memory allocations support variables
277418 
277419  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
277420  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
277421  and support the AST File I/O Mechanism.
277422  */
277423  /* */
277424 
277425  public:
277426 
277427  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
277428  // to current node (so that it will work cleanly with build functions to specify patterns).
277429  // virtual SgNode* addRegExpAttribute();
277436 
277437 // *** COMMON CODE SECTION ENDS HERE ***
277438 
277439 
277440 // End of memberFunctionString
277441 // Start of memberFunctionString
277442 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
277443 
277444  // the generated cast function
277445  // friend ROSE_DLL_API SgUnsignedCharVal* isSgUnsignedCharVal ( SgNode* s );
277446 
277447  typedef SgValueExp base_node_type;
277448 
277449 
277450 // End of memberFunctionString
277451 // Start of memberFunctionString
277452 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
277453 
277454  SgType* get_type() const override;
277455 
277456 
277457 // End of memberFunctionString
277458 // Start of memberFunctionString
277459 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
277460 
277461  void post_construction_initialization() override;
277462 
277463 
277464 // End of memberFunctionString
277465 
277466  public:
277467  unsigned char get_value() const;
277468  void set_value(unsigned char value);
277469 
277470  public:
277471  std::string get_valueString() const;
277472  void set_valueString(std::string valueString);
277473 
277474 
277475  public:
277476  virtual ~SgUnsignedCharVal();
277477 
277478 
277479  public:
277480  SgUnsignedCharVal(Sg_File_Info* startOfConstruct , unsigned char value = 0, std::string valueString = "");
277481  SgUnsignedCharVal(unsigned char value, std::string valueString);
277482 
277483  protected:
277484 // Start of memberFunctionString
277485 unsigned char p_value;
277486 
277487 // End of memberFunctionString
277488 // Start of memberFunctionString
277489 std::string p_valueString;
277490 
277491 // End of memberFunctionString
277492 
277493 
277494 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
277495 
277496 
277497  };
277498 #endif
277499 
277500 // postdeclarations for SgUnsignedCharVal
277501 
277502 /* #line 277503 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
277503 
277504 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
277505 
277506 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
277507 
277508 
277509 /* #line 277510 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
277510 
277511 
277512 
277513 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
277514 
277515 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
277516 // This code is automatically generated for each
277517 // terminal and non-terminal within the defined
277518 // grammar. There is a simple way to change the
277519 // code to fix bugs etc. See the ROSE README file
277520 // for directions.
277521 
277522 // tps: (02/22/2010): Adding DLL export requirements
277523 #include "rosedll.h"
277524 
277525 // predeclarations for SgWcharVal
277526 
277527 /* #line 277528 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
277528 
277529 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
277530 
277531 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
277532 
277533 #if 1
277534 // Class Definition for SgWcharVal
277535 class ROSE_DLL_API SgWcharVal : public SgValueExp
277536  {
277537  public:
277538 
277539 
277540 /* #line 277541 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
277541 
277542  virtual SgNode* copy ( SgCopyHelp& help) const override;
277543 // Start of memberFunctionString
277544 /* #line 596 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
277545 
277546  wchar_t get_value() const;
277547  void set_value(wchar_t new_val);
277548 
277549 
277550 
277551 // End of memberFunctionString
277552 // Start of memberFunctionString
277553 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
277554 
277555 // *** COMMON CODE SECTION BEGINS HERE ***
277556 
277557  public:
277558 
277559  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
277560  // and not required which is required to match the other aspects of the copy mechanism code generation.
277561  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
277562  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
277563  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
277564  // virtual SgNode* copy ( const SgCopyHelp & help) const;
277565 
277567  virtual std::string class_name() const override;
277568 
277570  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
277571 
277573  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
277574  // static const VariantT static_variant = V_SgWcharVal;
277575  enum { static_variant = V_SgWcharVal };
277576 
277577  /* the generated cast function */
277579  ROSE_DLL_API friend SgWcharVal* isSgWcharVal( SgNode * s );
277580 
277582  ROSE_DLL_API friend const SgWcharVal* isSgWcharVal( const SgNode * s );
277583 
277584  // ******************************************
277585  // * Memory Pool / New / Delete
277586  // ******************************************
277587 
277588  public:
277590  static const unsigned pool_size; //
277592  static std::vector<unsigned char *> pools; //
277594  static SgWcharVal * next_node; //
277595 
277597  static unsigned long initializeStorageClassArray(SgWcharValStorageClass *); //
277598 
277600  static void clearMemoryPool(); //
277601  static void deleteMemoryPool(); //
277602 
277604  static void extendMemoryPoolForFileIO(); //
277605 
277607  static SgWcharVal * getPointerFromGlobalIndex(unsigned long); //
277609  static SgWcharVal * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
277610 
277612  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
277614  static void resetValidFreepointers(); //
277616  static unsigned long getNumberOfLastValidPointer(); //
277617 
277618 
277619 #if defined(INLINE_FUNCTIONS)
277620 
277621  inline void *operator new (size_t size);
277622 #else
277623 
277624  void *operator new (size_t size);
277625 #endif
277626 
277627  void operator delete (void* pointer, size_t size);
277628 
277629  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
277630  void operator delete (void* pointer)
277631  {
277632  // This is the generated delete operator...
277633  SgWcharVal::operator delete (pointer,sizeof(SgWcharVal));
277634  }
277635 
277637  static size_t numberOfNodes();
277638 
277640  static size_t memoryUsage();
277641 
277642  // End of scope which started in IR nodes specific code
277643  /* */
277644 
277645  /* name Internal Functions
277646  \brief Internal functions ... incomplete-documentation
277647 
277648  These functions have been made public as part of the design, but they are suggested for internal use
277649  or by particularly knowledgeable users for specialized tools or applications.
277650 
277651  \internal We could not make these private because they are required by user for special purposes. And
277652  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
277653 
277654  */
277655 
277656  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
277657  // overridden in every class by *generated* implementation
277659  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
277660  // MS: 06/28/02 container of names of variables or container indices
277661  // used used in the traversal to access AST successor nodes
277662  // overridden in every class by *generated* implementation
277665  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
277666 
277667  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
277668  // than all the vector copies. The implementation for these functions is generated for each class.
277670  virtual size_t get_numberOfTraversalSuccessors() override;
277672  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
277674  virtual size_t get_childIndex(SgNode *child) override;
277675 
277676 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
277677  // MS: 08/16/2002 method for generating RTI information
277679  virtual RTIReturnType roseRTI() override;
277680 #endif
277681  /* */
277682 
277683 
277684 
277685  /* name Deprecated Functions
277686  \brief Deprecated functions ... incomplete-documentation
277687 
277688  These functions have been deprecated from use.
277689  */
277690  /* */
277691 
277693  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
277694 
277695  // JJW (10/16/2008): Changed to a single function in Node.code, and put
277696  // getVariant() in #if 0 block to prevent confusing Doxygen
277697 #if 0
277698 
277699  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
277701  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
277702 #endif
277703  /* */
277704 
277705 
277706 
277707 
277708  public:
277709  /* name Traversal Support Functions
277710  \brief Traversal support functions ... incomplete-documentation
277711 
277712  These functions have been made public as part of the design, but they are suggested for internal use
277713  or by particularly knowledgable users for specialized tools or applications.
277714  */
277715  /* */
277716 
277717  // DQ (11/26/2005): Support for visitor pattern mechanims
277718  // (inferior to ROSE traversal mechanism, experimental).
277722 
277723  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
277725  virtual void accept (ROSE_VisitorPattern & visitor) override;
277726 
277727  // DQ (12/26/2005): Support for traversal based on the memory pool
277730  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
277731 
277734  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
277735 
277736  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
277737  // This traversal helps support internal tools that call static member functions.
277738  // note: this function operates on the memory pools.
277741  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
277742  /* */
277743 
277744 
277745  public:
277746  /* name Memory Allocation Functions
277747  \brief Memory allocations functions ... incomplete-documentation
277748 
277749  These functions have been made public as part of the design, but they are suggested for internal use
277750  or by particularly knowledgable users for specialized tools or applications.
277751  */
277752  /* */
277753 
277764  virtual bool isInMemoryPool() override;
277765 
277776  virtual void checkDataMemberPointersIfInMemoryPool() override;
277777 
277778  // DQ (4/30/2006): Modified to be a const function.
277793  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
277794 
277804  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
277805 
277817  virtual long getChildIndex( SgNode* childNode ) const override;
277818 
277819  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
277820  // comment here (changed to be a C style comment and not be a doxygen comment).
277821  /* \brief Constructor for use by AST File I/O Mechanism
277822 
277823  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
277824  which obtained via fast binary file I/O from disk.
277825  */
277826  // SgWcharVal( SgWcharValStorageClass& source );
277827 
277828 
277829 
277830 
277831 
277832  // JH (10/24/2005): methods added to support the ast file IO
277833  private:
277834 
277835  /* name AST Memory Allocation Support Functions
277836  \brief Memory allocations support....
277837 
277838  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
277839  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
277840  and support the AST File I/O Mechanism.
277841  */
277842  /* */
277843 
277844  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
277845  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
277846  that I use the same type everywhere, if any changes are made. THe second one declares the type
277847  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
277848  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
277849  a correspinding one in the AST_FILE_IO class!
277850  */
277851  // DQ (9/2/2015): This typedef is no longer used, we can't define the
277852  // comment here (changed to be a C style comment and not be a doxygen comment).
277853  /* \brief Typedef used for low level memory access.
277854  */
277855  // typedef unsigned char* TestType;
277856 
277857  // DQ (9/2/2015): This typedef is no longer used, we can't define the
277858  // comment here (changed to be a C style comment and not be a doxygen comment).
277859  /* \brief Typedef used to hold memory addresses as values.
277860  */
277861  // typedef unsigned long AddressType;
277862 
277863 
277864 
277865  // necessary, to have direct access to the p_freepointer and the private methods !
277867  friend class AST_FILE_IO;
277868 
277870  friend class SgWcharValStorageClass;
277871 
277873  friend class AstSpecificDataManagingClass;
277874 
277876  friend class AstSpecificDataManagingClassStorageClass;
277877 
277878  public:
277880  SgWcharVal( const SgWcharValStorageClass& source );
277881 
277882  // private: // JJW hack
277883  /*
277884  name AST Memory Allocation Support Variables
277885  Memory allocations support variables
277886 
277887  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
277888  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
277889  and support the AST File I/O Mechanism.
277890  */
277891  /* */
277892 
277893  public:
277894 
277895  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
277896  // to current node (so that it will work cleanly with build functions to specify patterns).
277897  // virtual SgNode* addRegExpAttribute();
277903  SgWcharVal* addRegExpAttribute(std::string s, AstRegExAttribute* a);
277904 
277905 // *** COMMON CODE SECTION ENDS HERE ***
277906 
277907 
277908 // End of memberFunctionString
277909 // Start of memberFunctionString
277910 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
277911 
277912  // the generated cast function
277913  // friend ROSE_DLL_API SgWcharVal* isSgWcharVal ( SgNode* s );
277914 
277915  typedef SgValueExp base_node_type;
277916 
277917 
277918 // End of memberFunctionString
277919 // Start of memberFunctionString
277920 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
277921 
277922  SgType* get_type() const override;
277923 
277924 
277925 // End of memberFunctionString
277926 // Start of memberFunctionString
277927 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
277928 
277929  void post_construction_initialization() override;
277930 
277931 
277932 // End of memberFunctionString
277933 
277934  public:
277935  unsigned long get_valueUL() const;
277936  void set_valueUL(unsigned long valueUL);
277937 
277938  public:
277939  std::string get_valueString() const;
277940  void set_valueString(std::string valueString);
277941 
277942 
277943  public:
277944  virtual ~SgWcharVal();
277945 
277946 
277947  public:
277948  SgWcharVal(Sg_File_Info* startOfConstruct , unsigned long valueUL = 0, std::string valueString = "");
277949  SgWcharVal(unsigned long valueUL, std::string valueString);
277950 
277951  protected:
277952 // Start of memberFunctionString
277953 unsigned long p_valueUL;
277954 
277955 // End of memberFunctionString
277956 // Start of memberFunctionString
277957 std::string p_valueString;
277958 
277959 // End of memberFunctionString
277960 
277961 
277962 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
277963 
277964 
277965  };
277966 #endif
277967 
277968 // postdeclarations for SgWcharVal
277969 
277970 /* #line 277971 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
277971 
277972 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
277973 
277974 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
277975 
277976 
277977 /* #line 277978 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
277978 
277979 
277980 
277981 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
277982 
277983 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
277984 // This code is automatically generated for each
277985 // terminal and non-terminal within the defined
277986 // grammar. There is a simple way to change the
277987 // code to fix bugs etc. See the ROSE README file
277988 // for directions.
277989 
277990 // tps: (02/22/2010): Adding DLL export requirements
277991 #include "rosedll.h"
277992 
277993 // predeclarations for SgUnsignedShortVal
277994 
277995 /* #line 277996 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
277996 
277997 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
277998 
277999 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
278000 
278001 #if 1
278002 // Class Definition for SgUnsignedShortVal
278003 class ROSE_DLL_API SgUnsignedShortVal : public SgValueExp
278004  {
278005  public:
278006 
278007 
278008 /* #line 278009 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
278009 
278010  virtual SgNode* copy ( SgCopyHelp& help) const override;
278011 // Start of memberFunctionString
278012 /* #line 623 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
278013 
278014 
278015 
278016 // End of memberFunctionString
278017 // Start of memberFunctionString
278018 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
278019 
278020 // *** COMMON CODE SECTION BEGINS HERE ***
278021 
278022  public:
278023 
278024  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
278025  // and not required which is required to match the other aspects of the copy mechanism code generation.
278026  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
278027  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
278028  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
278029  // virtual SgNode* copy ( const SgCopyHelp & help) const;
278030 
278032  virtual std::string class_name() const override;
278033 
278035  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
278036 
278038  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
278039  // static const VariantT static_variant = V_SgUnsignedShortVal;
278040  enum { static_variant = V_SgUnsignedShortVal };
278041 
278042  /* the generated cast function */
278044  ROSE_DLL_API friend SgUnsignedShortVal* isSgUnsignedShortVal( SgNode * s );
278045 
278047  ROSE_DLL_API friend const SgUnsignedShortVal* isSgUnsignedShortVal( const SgNode * s );
278048 
278049  // ******************************************
278050  // * Memory Pool / New / Delete
278051  // ******************************************
278052 
278053  public:
278055  static const unsigned pool_size; //
278057  static std::vector<unsigned char *> pools; //
278059  static SgUnsignedShortVal * next_node; //
278060 
278062  static unsigned long initializeStorageClassArray(SgUnsignedShortValStorageClass *); //
278063 
278065  static void clearMemoryPool(); //
278066  static void deleteMemoryPool(); //
278067 
278069  static void extendMemoryPoolForFileIO(); //
278070 
278072  static SgUnsignedShortVal * getPointerFromGlobalIndex(unsigned long); //
278074  static SgUnsignedShortVal * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
278075 
278077  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
278079  static void resetValidFreepointers(); //
278081  static unsigned long getNumberOfLastValidPointer(); //
278082 
278083 
278084 #if defined(INLINE_FUNCTIONS)
278085 
278086  inline void *operator new (size_t size);
278087 #else
278088 
278089  void *operator new (size_t size);
278090 #endif
278091 
278092  void operator delete (void* pointer, size_t size);
278093 
278094  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
278095  void operator delete (void* pointer)
278096  {
278097  // This is the generated delete operator...
278098  SgUnsignedShortVal::operator delete (pointer,sizeof(SgUnsignedShortVal));
278099  }
278100 
278102  static size_t numberOfNodes();
278103 
278105  static size_t memoryUsage();
278106 
278107  // End of scope which started in IR nodes specific code
278108  /* */
278109 
278110  /* name Internal Functions
278111  \brief Internal functions ... incomplete-documentation
278112 
278113  These functions have been made public as part of the design, but they are suggested for internal use
278114  or by particularly knowledgeable users for specialized tools or applications.
278115 
278116  \internal We could not make these private because they are required by user for special purposes. And
278117  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
278118 
278119  */
278120 
278121  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
278122  // overridden in every class by *generated* implementation
278124  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
278125  // MS: 06/28/02 container of names of variables or container indices
278126  // used used in the traversal to access AST successor nodes
278127  // overridden in every class by *generated* implementation
278130  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
278131 
278132  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
278133  // than all the vector copies. The implementation for these functions is generated for each class.
278135  virtual size_t get_numberOfTraversalSuccessors() override;
278137  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
278139  virtual size_t get_childIndex(SgNode *child) override;
278140 
278141 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
278142  // MS: 08/16/2002 method for generating RTI information
278144  virtual RTIReturnType roseRTI() override;
278145 #endif
278146  /* */
278147 
278148 
278149 
278150  /* name Deprecated Functions
278151  \brief Deprecated functions ... incomplete-documentation
278152 
278153  These functions have been deprecated from use.
278154  */
278155  /* */
278156 
278158  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
278159 
278160  // JJW (10/16/2008): Changed to a single function in Node.code, and put
278161  // getVariant() in #if 0 block to prevent confusing Doxygen
278162 #if 0
278163 
278164  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
278166  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
278167 #endif
278168  /* */
278169 
278170 
278171 
278172 
278173  public:
278174  /* name Traversal Support Functions
278175  \brief Traversal support functions ... incomplete-documentation
278176 
278177  These functions have been made public as part of the design, but they are suggested for internal use
278178  or by particularly knowledgable users for specialized tools or applications.
278179  */
278180  /* */
278181 
278182  // DQ (11/26/2005): Support for visitor pattern mechanims
278183  // (inferior to ROSE traversal mechanism, experimental).
278187 
278188  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
278190  virtual void accept (ROSE_VisitorPattern & visitor) override;
278191 
278192  // DQ (12/26/2005): Support for traversal based on the memory pool
278195  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
278196 
278199  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
278200 
278201  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
278202  // This traversal helps support internal tools that call static member functions.
278203  // note: this function operates on the memory pools.
278206  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
278207  /* */
278208 
278209 
278210  public:
278211  /* name Memory Allocation Functions
278212  \brief Memory allocations functions ... incomplete-documentation
278213 
278214  These functions have been made public as part of the design, but they are suggested for internal use
278215  or by particularly knowledgable users for specialized tools or applications.
278216  */
278217  /* */
278218 
278229  virtual bool isInMemoryPool() override;
278230 
278241  virtual void checkDataMemberPointersIfInMemoryPool() override;
278242 
278243  // DQ (4/30/2006): Modified to be a const function.
278258  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
278259 
278269  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
278270 
278282  virtual long getChildIndex( SgNode* childNode ) const override;
278283 
278284  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
278285  // comment here (changed to be a C style comment and not be a doxygen comment).
278286  /* \brief Constructor for use by AST File I/O Mechanism
278287 
278288  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
278289  which obtained via fast binary file I/O from disk.
278290  */
278291  // SgUnsignedShortVal( SgUnsignedShortValStorageClass& source );
278292 
278293 
278294 
278295 
278296 
278297  // JH (10/24/2005): methods added to support the ast file IO
278298  private:
278299 
278300  /* name AST Memory Allocation Support Functions
278301  \brief Memory allocations support....
278302 
278303  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
278304  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
278305  and support the AST File I/O Mechanism.
278306  */
278307  /* */
278308 
278309  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
278310  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
278311  that I use the same type everywhere, if any changes are made. THe second one declares the type
278312  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
278313  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
278314  a correspinding one in the AST_FILE_IO class!
278315  */
278316  // DQ (9/2/2015): This typedef is no longer used, we can't define the
278317  // comment here (changed to be a C style comment and not be a doxygen comment).
278318  /* \brief Typedef used for low level memory access.
278319  */
278320  // typedef unsigned char* TestType;
278321 
278322  // DQ (9/2/2015): This typedef is no longer used, we can't define the
278323  // comment here (changed to be a C style comment and not be a doxygen comment).
278324  /* \brief Typedef used to hold memory addresses as values.
278325  */
278326  // typedef unsigned long AddressType;
278327 
278328 
278329 
278330  // necessary, to have direct access to the p_freepointer and the private methods !
278332  friend class AST_FILE_IO;
278333 
278335  friend class SgUnsignedShortValStorageClass;
278336 
278338  friend class AstSpecificDataManagingClass;
278339 
278341  friend class AstSpecificDataManagingClassStorageClass;
278342 
278343  public:
278345  SgUnsignedShortVal( const SgUnsignedShortValStorageClass& source );
278346 
278347  // private: // JJW hack
278348  /*
278349  name AST Memory Allocation Support Variables
278350  Memory allocations support variables
278351 
278352  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
278353  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
278354  and support the AST File I/O Mechanism.
278355  */
278356  /* */
278357 
278358  public:
278359 
278360  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
278361  // to current node (so that it will work cleanly with build functions to specify patterns).
278362  // virtual SgNode* addRegExpAttribute();
278369 
278370 // *** COMMON CODE SECTION ENDS HERE ***
278371 
278372 
278373 // End of memberFunctionString
278374 // Start of memberFunctionString
278375 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
278376 
278377  // the generated cast function
278378  // friend ROSE_DLL_API SgUnsignedShortVal* isSgUnsignedShortVal ( SgNode* s );
278379 
278380  typedef SgValueExp base_node_type;
278381 
278382 
278383 // End of memberFunctionString
278384 // Start of memberFunctionString
278385 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
278386 
278387  SgType* get_type() const override;
278388 
278389 
278390 // End of memberFunctionString
278391 // Start of memberFunctionString
278392 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
278393 
278394  void post_construction_initialization() override;
278395 
278396 
278397 // End of memberFunctionString
278398 
278399  public:
278400  unsigned short get_value() const;
278401  void set_value(unsigned short value);
278402 
278403  public:
278404  std::string get_valueString() const;
278405  void set_valueString(std::string valueString);
278406 
278407 
278408  public:
278409  virtual ~SgUnsignedShortVal();
278410 
278411 
278412  public:
278413  SgUnsignedShortVal(Sg_File_Info* startOfConstruct , unsigned short value = 0, std::string valueString = "");
278414  SgUnsignedShortVal(unsigned short value, std::string valueString);
278415 
278416  protected:
278417 // Start of memberFunctionString
278418 unsigned short p_value;
278419 
278420 // End of memberFunctionString
278421 // Start of memberFunctionString
278422 std::string p_valueString;
278423 
278424 // End of memberFunctionString
278425 
278426 
278427 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
278428 
278429 
278430  };
278431 #endif
278432 
278433 // postdeclarations for SgUnsignedShortVal
278434 
278435 /* #line 278436 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
278436 
278437 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
278438 
278439 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
278440 
278441 
278442 /* #line 278443 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
278443 
278444 
278445 
278446 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
278447 
278448 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
278449 // This code is automatically generated for each
278450 // terminal and non-terminal within the defined
278451 // grammar. There is a simple way to change the
278452 // code to fix bugs etc. See the ROSE README file
278453 // for directions.
278454 
278455 // tps: (02/22/2010): Adding DLL export requirements
278456 #include "rosedll.h"
278457 
278458 // predeclarations for SgIntVal
278459 
278460 /* #line 278461 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
278461 
278462 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
278463 
278464 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
278465 
278466 #if 1
278467 // Class Definition for SgIntVal
278468 class ROSE_DLL_API SgIntVal : public SgValueExp
278469  {
278470  public:
278471 
278472 
278473 /* #line 278474 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
278474 
278475  virtual SgNode* copy ( SgCopyHelp& help) const override;
278476 // Start of memberFunctionString
278477 /* #line 627 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
278478 
278479 
278480 
278481 // End of memberFunctionString
278482 // Start of memberFunctionString
278483 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
278484 
278485 // *** COMMON CODE SECTION BEGINS HERE ***
278486 
278487  public:
278488 
278489  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
278490  // and not required which is required to match the other aspects of the copy mechanism code generation.
278491  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
278492  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
278493  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
278494  // virtual SgNode* copy ( const SgCopyHelp & help) const;
278495 
278497  virtual std::string class_name() const override;
278498 
278500  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
278501 
278503  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
278504  // static const VariantT static_variant = V_SgIntVal;
278505  enum { static_variant = V_SgIntVal };
278506 
278507  /* the generated cast function */
278509  ROSE_DLL_API friend SgIntVal* isSgIntVal( SgNode * s );
278510 
278512  ROSE_DLL_API friend const SgIntVal* isSgIntVal( const SgNode * s );
278513 
278514  // ******************************************
278515  // * Memory Pool / New / Delete
278516  // ******************************************
278517 
278518  public:
278520  static const unsigned pool_size; //
278522  static std::vector<unsigned char *> pools; //
278524  static SgIntVal * next_node; //
278525 
278527  static unsigned long initializeStorageClassArray(SgIntValStorageClass *); //
278528 
278530  static void clearMemoryPool(); //
278531  static void deleteMemoryPool(); //
278532 
278534  static void extendMemoryPoolForFileIO(); //
278535 
278537  static SgIntVal * getPointerFromGlobalIndex(unsigned long); //
278539  static SgIntVal * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
278540 
278542  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
278544  static void resetValidFreepointers(); //
278546  static unsigned long getNumberOfLastValidPointer(); //
278547 
278548 
278549 #if defined(INLINE_FUNCTIONS)
278550 
278551  inline void *operator new (size_t size);
278552 #else
278553 
278554  void *operator new (size_t size);
278555 #endif
278556 
278557  void operator delete (void* pointer, size_t size);
278558 
278559  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
278560  void operator delete (void* pointer)
278561  {
278562  // This is the generated delete operator...
278563  SgIntVal::operator delete (pointer,sizeof(SgIntVal));
278564  }
278565 
278567  static size_t numberOfNodes();
278568 
278570  static size_t memoryUsage();
278571 
278572  // End of scope which started in IR nodes specific code
278573  /* */
278574 
278575  /* name Internal Functions
278576  \brief Internal functions ... incomplete-documentation
278577 
278578  These functions have been made public as part of the design, but they are suggested for internal use
278579  or by particularly knowledgeable users for specialized tools or applications.
278580 
278581  \internal We could not make these private because they are required by user for special purposes. And
278582  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
278583 
278584  */
278585 
278586  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
278587  // overridden in every class by *generated* implementation
278589  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
278590  // MS: 06/28/02 container of names of variables or container indices
278591  // used used in the traversal to access AST successor nodes
278592  // overridden in every class by *generated* implementation
278595  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
278596 
278597  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
278598  // than all the vector copies. The implementation for these functions is generated for each class.
278600  virtual size_t get_numberOfTraversalSuccessors() override;
278602  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
278604  virtual size_t get_childIndex(SgNode *child) override;
278605 
278606 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
278607  // MS: 08/16/2002 method for generating RTI information
278609  virtual RTIReturnType roseRTI() override;
278610 #endif
278611  /* */
278612 
278613 
278614 
278615  /* name Deprecated Functions
278616  \brief Deprecated functions ... incomplete-documentation
278617 
278618  These functions have been deprecated from use.
278619  */
278620  /* */
278621 
278623  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
278624 
278625  // JJW (10/16/2008): Changed to a single function in Node.code, and put
278626  // getVariant() in #if 0 block to prevent confusing Doxygen
278627 #if 0
278628 
278629  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
278631  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
278632 #endif
278633  /* */
278634 
278635 
278636 
278637 
278638  public:
278639  /* name Traversal Support Functions
278640  \brief Traversal support functions ... incomplete-documentation
278641 
278642  These functions have been made public as part of the design, but they are suggested for internal use
278643  or by particularly knowledgable users for specialized tools or applications.
278644  */
278645  /* */
278646 
278647  // DQ (11/26/2005): Support for visitor pattern mechanims
278648  // (inferior to ROSE traversal mechanism, experimental).
278652 
278653  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
278655  virtual void accept (ROSE_VisitorPattern & visitor) override;
278656 
278657  // DQ (12/26/2005): Support for traversal based on the memory pool
278660  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
278661 
278664  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
278665 
278666  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
278667  // This traversal helps support internal tools that call static member functions.
278668  // note: this function operates on the memory pools.
278671  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
278672  /* */
278673 
278674 
278675  public:
278676  /* name Memory Allocation Functions
278677  \brief Memory allocations functions ... incomplete-documentation
278678 
278679  These functions have been made public as part of the design, but they are suggested for internal use
278680  or by particularly knowledgable users for specialized tools or applications.
278681  */
278682  /* */
278683 
278694  virtual bool isInMemoryPool() override;
278695 
278706  virtual void checkDataMemberPointersIfInMemoryPool() override;
278707 
278708  // DQ (4/30/2006): Modified to be a const function.
278723  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
278724 
278734  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
278735 
278747  virtual long getChildIndex( SgNode* childNode ) const override;
278748 
278749  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
278750  // comment here (changed to be a C style comment and not be a doxygen comment).
278751  /* \brief Constructor for use by AST File I/O Mechanism
278752 
278753  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
278754  which obtained via fast binary file I/O from disk.
278755  */
278756  // SgIntVal( SgIntValStorageClass& source );
278757 
278758 
278759 
278760 
278761 
278762  // JH (10/24/2005): methods added to support the ast file IO
278763  private:
278764 
278765  /* name AST Memory Allocation Support Functions
278766  \brief Memory allocations support....
278767 
278768  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
278769  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
278770  and support the AST File I/O Mechanism.
278771  */
278772  /* */
278773 
278774  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
278775  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
278776  that I use the same type everywhere, if any changes are made. THe second one declares the type
278777  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
278778  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
278779  a correspinding one in the AST_FILE_IO class!
278780  */
278781  // DQ (9/2/2015): This typedef is no longer used, we can't define the
278782  // comment here (changed to be a C style comment and not be a doxygen comment).
278783  /* \brief Typedef used for low level memory access.
278784  */
278785  // typedef unsigned char* TestType;
278786 
278787  // DQ (9/2/2015): This typedef is no longer used, we can't define the
278788  // comment here (changed to be a C style comment and not be a doxygen comment).
278789  /* \brief Typedef used to hold memory addresses as values.
278790  */
278791  // typedef unsigned long AddressType;
278792 
278793 
278794 
278795  // necessary, to have direct access to the p_freepointer and the private methods !
278797  friend class AST_FILE_IO;
278798 
278800  friend class SgIntValStorageClass;
278801 
278803  friend class AstSpecificDataManagingClass;
278804 
278806  friend class AstSpecificDataManagingClassStorageClass;
278807 
278808  public:
278810  SgIntVal( const SgIntValStorageClass& source );
278811 
278812  // private: // JJW hack
278813  /*
278814  name AST Memory Allocation Support Variables
278815  Memory allocations support variables
278816 
278817  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
278818  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
278819  and support the AST File I/O Mechanism.
278820  */
278821  /* */
278822 
278823  public:
278824 
278825  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
278826  // to current node (so that it will work cleanly with build functions to specify patterns).
278827  // virtual SgNode* addRegExpAttribute();
278833  SgIntVal* addRegExpAttribute(std::string s, AstRegExAttribute* a);
278834 
278835 // *** COMMON CODE SECTION ENDS HERE ***
278836 
278837 
278838 // End of memberFunctionString
278839 // Start of memberFunctionString
278840 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
278841 
278842  // the generated cast function
278843  // friend ROSE_DLL_API SgIntVal* isSgIntVal ( SgNode* s );
278844 
278845  typedef SgValueExp base_node_type;
278846 
278847 
278848 // End of memberFunctionString
278849 // Start of memberFunctionString
278850 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
278851 
278852  SgType* get_type() const override;
278853 
278854 
278855 // End of memberFunctionString
278856 // Start of memberFunctionString
278857 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
278858 
278859  void post_construction_initialization() override;
278860 
278861 
278862 // End of memberFunctionString
278863 
278864  public:
278865  int get_value() const;
278866  void set_value(int value);
278867 
278868  public:
278869  std::string get_valueString() const;
278870  void set_valueString(std::string valueString);
278871 
278872 
278873  public:
278874  virtual ~SgIntVal();
278875 
278876 
278877  public:
278878  SgIntVal(Sg_File_Info* startOfConstruct , int value = 0, std::string valueString = "");
278879  SgIntVal(int value, std::string valueString);
278880 
278881  protected:
278882 // Start of memberFunctionString
278883 int p_value;
278884 
278885 // End of memberFunctionString
278886 // Start of memberFunctionString
278887 std::string p_valueString;
278888 
278889 // End of memberFunctionString
278890 
278891 
278892 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
278893 
278894 
278895  };
278896 #endif
278897 
278898 // postdeclarations for SgIntVal
278899 
278900 /* #line 278901 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
278901 
278902 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
278903 
278904 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
278905 
278906 
278907 /* #line 278908 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
278908 
278909 
278910 
278911 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
278912 
278913 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
278914 // This code is automatically generated for each
278915 // terminal and non-terminal within the defined
278916 // grammar. There is a simple way to change the
278917 // code to fix bugs etc. See the ROSE README file
278918 // for directions.
278919 
278920 // tps: (02/22/2010): Adding DLL export requirements
278921 #include "rosedll.h"
278922 
278923 // predeclarations for SgEnumVal
278924 
278925 /* #line 278926 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
278926 
278927 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
278928 
278929 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
278930 
278931 #if 1
278932 // Class Definition for SgEnumVal
278933 class ROSE_DLL_API SgEnumVal : public SgValueExp
278934  {
278935  public:
278936 
278937 
278938 /* #line 278939 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
278939 
278940  virtual SgNode* copy ( SgCopyHelp& help) const override;
278941 // Start of memberFunctionString
278942 /* #line 631 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
278943 
278944 
278945  // DQ (2/5/2020): Addedin custom get_type() function so that we can pass the associated SgEnumDeclaration.
278946  // This code is already generated by ROSETTA, so we don't need to specify this here.
278947  // SgType* get_type() const override;
278948 
278949  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
278950  int get_name_qualification_length() const override;
278951  void set_name_qualification_length(int name_qualification_length) override;
278952 
278953  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
278954  bool get_type_elaboration_required() const override;
278955  void set_type_elaboration_required(bool type_elaboration_required) override;
278956 
278957  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
278958  bool get_global_qualification_required() const override;
278959  void set_global_qualification_required(bool global_qualification_required) override;
278960 
278961 
278962 
278963 // End of memberFunctionString
278964 // Start of memberFunctionString
278965 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
278966 
278967 // *** COMMON CODE SECTION BEGINS HERE ***
278968 
278969  public:
278970 
278971  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
278972  // and not required which is required to match the other aspects of the copy mechanism code generation.
278973  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
278974  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
278975  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
278976  // virtual SgNode* copy ( const SgCopyHelp & help) const;
278977 
278979  virtual std::string class_name() const override;
278980 
278982  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
278983 
278985  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
278986  // static const VariantT static_variant = V_SgEnumVal;
278987  enum { static_variant = V_SgEnumVal };
278988 
278989  /* the generated cast function */
278991  ROSE_DLL_API friend SgEnumVal* isSgEnumVal( SgNode * s );
278992 
278994  ROSE_DLL_API friend const SgEnumVal* isSgEnumVal( const SgNode * s );
278995 
278996  // ******************************************
278997  // * Memory Pool / New / Delete
278998  // ******************************************
278999 
279000  public:
279002  static const unsigned pool_size; //
279004  static std::vector<unsigned char *> pools; //
279006  static SgEnumVal * next_node; //
279007 
279009  static unsigned long initializeStorageClassArray(SgEnumValStorageClass *); //
279010 
279012  static void clearMemoryPool(); //
279013  static void deleteMemoryPool(); //
279014 
279016  static void extendMemoryPoolForFileIO(); //
279017 
279019  static SgEnumVal * getPointerFromGlobalIndex(unsigned long); //
279021  static SgEnumVal * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
279022 
279024  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
279026  static void resetValidFreepointers(); //
279028  static unsigned long getNumberOfLastValidPointer(); //
279029 
279030 
279031 #if defined(INLINE_FUNCTIONS)
279032 
279033  inline void *operator new (size_t size);
279034 #else
279035 
279036  void *operator new (size_t size);
279037 #endif
279038 
279039  void operator delete (void* pointer, size_t size);
279040 
279041  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
279042  void operator delete (void* pointer)
279043  {
279044  // This is the generated delete operator...
279045  SgEnumVal::operator delete (pointer,sizeof(SgEnumVal));
279046  }
279047 
279049  static size_t numberOfNodes();
279050 
279052  static size_t memoryUsage();
279053 
279054  // End of scope which started in IR nodes specific code
279055  /* */
279056 
279057  /* name Internal Functions
279058  \brief Internal functions ... incomplete-documentation
279059 
279060  These functions have been made public as part of the design, but they are suggested for internal use
279061  or by particularly knowledgeable users for specialized tools or applications.
279062 
279063  \internal We could not make these private because they are required by user for special purposes. And
279064  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
279065 
279066  */
279067 
279068  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
279069  // overridden in every class by *generated* implementation
279071  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
279072  // MS: 06/28/02 container of names of variables or container indices
279073  // used used in the traversal to access AST successor nodes
279074  // overridden in every class by *generated* implementation
279077  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
279078 
279079  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
279080  // than all the vector copies. The implementation for these functions is generated for each class.
279082  virtual size_t get_numberOfTraversalSuccessors() override;
279084  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
279086  virtual size_t get_childIndex(SgNode *child) override;
279087 
279088 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
279089  // MS: 08/16/2002 method for generating RTI information
279091  virtual RTIReturnType roseRTI() override;
279092 #endif
279093  /* */
279094 
279095 
279096 
279097  /* name Deprecated Functions
279098  \brief Deprecated functions ... incomplete-documentation
279099 
279100  These functions have been deprecated from use.
279101  */
279102  /* */
279103 
279105  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
279106 
279107  // JJW (10/16/2008): Changed to a single function in Node.code, and put
279108  // getVariant() in #if 0 block to prevent confusing Doxygen
279109 #if 0
279110 
279111  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
279113  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
279114 #endif
279115  /* */
279116 
279117 
279118 
279119 
279120  public:
279121  /* name Traversal Support Functions
279122  \brief Traversal support functions ... incomplete-documentation
279123 
279124  These functions have been made public as part of the design, but they are suggested for internal use
279125  or by particularly knowledgable users for specialized tools or applications.
279126  */
279127  /* */
279128 
279129  // DQ (11/26/2005): Support for visitor pattern mechanims
279130  // (inferior to ROSE traversal mechanism, experimental).
279134 
279135  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
279137  virtual void accept (ROSE_VisitorPattern & visitor) override;
279138 
279139  // DQ (12/26/2005): Support for traversal based on the memory pool
279142  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
279143 
279146  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
279147 
279148  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
279149  // This traversal helps support internal tools that call static member functions.
279150  // note: this function operates on the memory pools.
279153  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
279154  /* */
279155 
279156 
279157  public:
279158  /* name Memory Allocation Functions
279159  \brief Memory allocations functions ... incomplete-documentation
279160 
279161  These functions have been made public as part of the design, but they are suggested for internal use
279162  or by particularly knowledgable users for specialized tools or applications.
279163  */
279164  /* */
279165 
279176  virtual bool isInMemoryPool() override;
279177 
279188  virtual void checkDataMemberPointersIfInMemoryPool() override;
279189 
279190  // DQ (4/30/2006): Modified to be a const function.
279205  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
279206 
279216  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
279217 
279229  virtual long getChildIndex( SgNode* childNode ) const override;
279230 
279231  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
279232  // comment here (changed to be a C style comment and not be a doxygen comment).
279233  /* \brief Constructor for use by AST File I/O Mechanism
279234 
279235  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
279236  which obtained via fast binary file I/O from disk.
279237  */
279238  // SgEnumVal( SgEnumValStorageClass& source );
279239 
279240 
279241 
279242 
279243 
279244  // JH (10/24/2005): methods added to support the ast file IO
279245  private:
279246 
279247  /* name AST Memory Allocation Support Functions
279248  \brief Memory allocations support....
279249 
279250  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
279251  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
279252  and support the AST File I/O Mechanism.
279253  */
279254  /* */
279255 
279256  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
279257  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
279258  that I use the same type everywhere, if any changes are made. THe second one declares the type
279259  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
279260  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
279261  a correspinding one in the AST_FILE_IO class!
279262  */
279263  // DQ (9/2/2015): This typedef is no longer used, we can't define the
279264  // comment here (changed to be a C style comment and not be a doxygen comment).
279265  /* \brief Typedef used for low level memory access.
279266  */
279267  // typedef unsigned char* TestType;
279268 
279269  // DQ (9/2/2015): This typedef is no longer used, we can't define the
279270  // comment here (changed to be a C style comment and not be a doxygen comment).
279271  /* \brief Typedef used to hold memory addresses as values.
279272  */
279273  // typedef unsigned long AddressType;
279274 
279275 
279276 
279277  // necessary, to have direct access to the p_freepointer and the private methods !
279279  friend class AST_FILE_IO;
279280 
279282  friend class SgEnumValStorageClass;
279283 
279285  friend class AstSpecificDataManagingClass;
279286 
279288  friend class AstSpecificDataManagingClassStorageClass;
279289 
279290  public:
279292  SgEnumVal( const SgEnumValStorageClass& source );
279293 
279294  // private: // JJW hack
279295  /*
279296  name AST Memory Allocation Support Variables
279297  Memory allocations support variables
279298 
279299  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
279300  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
279301  and support the AST File I/O Mechanism.
279302  */
279303  /* */
279304 
279305  public:
279306 
279307  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
279308  // to current node (so that it will work cleanly with build functions to specify patterns).
279309  // virtual SgNode* addRegExpAttribute();
279315  SgEnumVal* addRegExpAttribute(std::string s, AstRegExAttribute* a);
279316 
279317 // *** COMMON CODE SECTION ENDS HERE ***
279318 
279319 
279320 // End of memberFunctionString
279321 // Start of memberFunctionString
279322 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
279323 
279324  // the generated cast function
279325  // friend ROSE_DLL_API SgEnumVal* isSgEnumVal ( SgNode* s );
279326 
279327  typedef SgValueExp base_node_type;
279328 
279329 
279330 // End of memberFunctionString
279331 // Start of memberFunctionString
279332 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
279333 
279334  SgType* get_type() const override;
279335 
279336 
279337 // End of memberFunctionString
279338 // Start of memberFunctionString
279339 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
279340 
279341  void post_construction_initialization() override;
279342 
279343 
279344 // End of memberFunctionString
279345 
279346  public:
279347  long long int get_value() const;
279348  void set_value(long long int value);
279349 
279350  public:
279351  SgEnumDeclaration* get_declaration() const;
279352  void set_declaration(SgEnumDeclaration* declaration);
279353 
279354  public:
279355  SgName get_name() const /* (getDataAccessFunctionPrototypeString) */;
279356  void set_name(SgName name) /* (getDataAccessFunctionPrototypeString) */;
279357 
279358  public:
279359  bool get_requiresNameQualification() const;
279360  void set_requiresNameQualification(bool requiresNameQualification);
279361 
279362 
279363 
279364 
279365 
279366  public:
279367  virtual ~SgEnumVal();
279368 
279369 
279370  public:
279371  SgEnumVal(Sg_File_Info* startOfConstruct , long long int value = 0, SgEnumDeclaration* declaration = NULL, SgName name = "");
279372  SgEnumVal(long long int value, SgEnumDeclaration* declaration, SgName name);
279373 
279374  protected:
279375 // Start of memberFunctionString
279376 long long int p_value;
279377 
279378 // End of memberFunctionString
279379 // Start of memberFunctionString
279380 SgEnumDeclaration* p_declaration;
279381 
279382 // End of memberFunctionString
279383 // Start of memberFunctionString
279384 SgName p_name;
279385 
279386 // End of memberFunctionString
279387 // Start of memberFunctionString
279388 bool p_requiresNameQualification;
279389 
279390 // End of memberFunctionString
279391 // Start of memberFunctionString
279392 int p_name_qualification_length;
279393 
279394 // End of memberFunctionString
279395 // Start of memberFunctionString
279396 bool p_type_elaboration_required;
279397 
279398 // End of memberFunctionString
279399 // Start of memberFunctionString
279400 bool p_global_qualification_required;
279401 
279402 // End of memberFunctionString
279403 
279404 
279405 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
279406 
279407 
279408  };
279409 #endif
279410 
279411 // postdeclarations for SgEnumVal
279412 
279413 /* #line 279414 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
279414 
279415 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
279416 
279417 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
279418 
279419 
279420 /* #line 279421 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
279421 
279422 
279423 
279424 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
279425 
279426 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
279427 // This code is automatically generated for each
279428 // terminal and non-terminal within the defined
279429 // grammar. There is a simple way to change the
279430 // code to fix bugs etc. See the ROSE README file
279431 // for directions.
279432 
279433 // tps: (02/22/2010): Adding DLL export requirements
279434 #include "rosedll.h"
279435 
279436 // predeclarations for SgUnsignedIntVal
279437 
279438 /* #line 279439 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
279439 
279440 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
279441 
279442 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
279443 
279444 #if 1
279445 // Class Definition for SgUnsignedIntVal
279446 class ROSE_DLL_API SgUnsignedIntVal : public SgValueExp
279447  {
279448  public:
279449 
279450 
279451 /* #line 279452 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
279452 
279453  virtual SgNode* copy ( SgCopyHelp& help) const override;
279454 // Start of memberFunctionString
279455 /* #line 652 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
279456 
279457 
279458 
279459 // End of memberFunctionString
279460 // Start of memberFunctionString
279461 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
279462 
279463 // *** COMMON CODE SECTION BEGINS HERE ***
279464 
279465  public:
279466 
279467  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
279468  // and not required which is required to match the other aspects of the copy mechanism code generation.
279469  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
279470  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
279471  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
279472  // virtual SgNode* copy ( const SgCopyHelp & help) const;
279473 
279475  virtual std::string class_name() const override;
279476 
279478  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
279479 
279481  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
279482  // static const VariantT static_variant = V_SgUnsignedIntVal;
279483  enum { static_variant = V_SgUnsignedIntVal };
279484 
279485  /* the generated cast function */
279487  ROSE_DLL_API friend SgUnsignedIntVal* isSgUnsignedIntVal( SgNode * s );
279488 
279490  ROSE_DLL_API friend const SgUnsignedIntVal* isSgUnsignedIntVal( const SgNode * s );
279491 
279492  // ******************************************
279493  // * Memory Pool / New / Delete
279494  // ******************************************
279495 
279496  public:
279498  static const unsigned pool_size; //
279500  static std::vector<unsigned char *> pools; //
279502  static SgUnsignedIntVal * next_node; //
279503 
279505  static unsigned long initializeStorageClassArray(SgUnsignedIntValStorageClass *); //
279506 
279508  static void clearMemoryPool(); //
279509  static void deleteMemoryPool(); //
279510 
279512  static void extendMemoryPoolForFileIO(); //
279513 
279515  static SgUnsignedIntVal * getPointerFromGlobalIndex(unsigned long); //
279517  static SgUnsignedIntVal * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
279518 
279520  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
279522  static void resetValidFreepointers(); //
279524  static unsigned long getNumberOfLastValidPointer(); //
279525 
279526 
279527 #if defined(INLINE_FUNCTIONS)
279528 
279529  inline void *operator new (size_t size);
279530 #else
279531 
279532  void *operator new (size_t size);
279533 #endif
279534 
279535  void operator delete (void* pointer, size_t size);
279536 
279537  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
279538  void operator delete (void* pointer)
279539  {
279540  // This is the generated delete operator...
279541  SgUnsignedIntVal::operator delete (pointer,sizeof(SgUnsignedIntVal));
279542  }
279543 
279545  static size_t numberOfNodes();
279546 
279548  static size_t memoryUsage();
279549 
279550  // End of scope which started in IR nodes specific code
279551  /* */
279552 
279553  /* name Internal Functions
279554  \brief Internal functions ... incomplete-documentation
279555 
279556  These functions have been made public as part of the design, but they are suggested for internal use
279557  or by particularly knowledgeable users for specialized tools or applications.
279558 
279559  \internal We could not make these private because they are required by user for special purposes. And
279560  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
279561 
279562  */
279563 
279564  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
279565  // overridden in every class by *generated* implementation
279567  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
279568  // MS: 06/28/02 container of names of variables or container indices
279569  // used used in the traversal to access AST successor nodes
279570  // overridden in every class by *generated* implementation
279573  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
279574 
279575  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
279576  // than all the vector copies. The implementation for these functions is generated for each class.
279578  virtual size_t get_numberOfTraversalSuccessors() override;
279580  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
279582  virtual size_t get_childIndex(SgNode *child) override;
279583 
279584 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
279585  // MS: 08/16/2002 method for generating RTI information
279587  virtual RTIReturnType roseRTI() override;
279588 #endif
279589  /* */
279590 
279591 
279592 
279593  /* name Deprecated Functions
279594  \brief Deprecated functions ... incomplete-documentation
279595 
279596  These functions have been deprecated from use.
279597  */
279598  /* */
279599 
279601  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
279602 
279603  // JJW (10/16/2008): Changed to a single function in Node.code, and put
279604  // getVariant() in #if 0 block to prevent confusing Doxygen
279605 #if 0
279606 
279607  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
279609  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
279610 #endif
279611  /* */
279612 
279613 
279614 
279615 
279616  public:
279617  /* name Traversal Support Functions
279618  \brief Traversal support functions ... incomplete-documentation
279619 
279620  These functions have been made public as part of the design, but they are suggested for internal use
279621  or by particularly knowledgable users for specialized tools or applications.
279622  */
279623  /* */
279624 
279625  // DQ (11/26/2005): Support for visitor pattern mechanims
279626  // (inferior to ROSE traversal mechanism, experimental).
279630 
279631  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
279633  virtual void accept (ROSE_VisitorPattern & visitor) override;
279634 
279635  // DQ (12/26/2005): Support for traversal based on the memory pool
279638  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
279639 
279642  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
279643 
279644  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
279645  // This traversal helps support internal tools that call static member functions.
279646  // note: this function operates on the memory pools.
279649  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
279650  /* */
279651 
279652 
279653  public:
279654  /* name Memory Allocation Functions
279655  \brief Memory allocations functions ... incomplete-documentation
279656 
279657  These functions have been made public as part of the design, but they are suggested for internal use
279658  or by particularly knowledgable users for specialized tools or applications.
279659  */
279660  /* */
279661 
279672  virtual bool isInMemoryPool() override;
279673 
279684  virtual void checkDataMemberPointersIfInMemoryPool() override;
279685 
279686  // DQ (4/30/2006): Modified to be a const function.
279701  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
279702 
279712  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
279713 
279725  virtual long getChildIndex( SgNode* childNode ) const override;
279726 
279727  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
279728  // comment here (changed to be a C style comment and not be a doxygen comment).
279729  /* \brief Constructor for use by AST File I/O Mechanism
279730 
279731  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
279732  which obtained via fast binary file I/O from disk.
279733  */
279734  // SgUnsignedIntVal( SgUnsignedIntValStorageClass& source );
279735 
279736 
279737 
279738 
279739 
279740  // JH (10/24/2005): methods added to support the ast file IO
279741  private:
279742 
279743  /* name AST Memory Allocation Support Functions
279744  \brief Memory allocations support....
279745 
279746  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
279747  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
279748  and support the AST File I/O Mechanism.
279749  */
279750  /* */
279751 
279752  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
279753  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
279754  that I use the same type everywhere, if any changes are made. THe second one declares the type
279755  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
279756  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
279757  a correspinding one in the AST_FILE_IO class!
279758  */
279759  // DQ (9/2/2015): This typedef is no longer used, we can't define the
279760  // comment here (changed to be a C style comment and not be a doxygen comment).
279761  /* \brief Typedef used for low level memory access.
279762  */
279763  // typedef unsigned char* TestType;
279764 
279765  // DQ (9/2/2015): This typedef is no longer used, we can't define the
279766  // comment here (changed to be a C style comment and not be a doxygen comment).
279767  /* \brief Typedef used to hold memory addresses as values.
279768  */
279769  // typedef unsigned long AddressType;
279770 
279771 
279772 
279773  // necessary, to have direct access to the p_freepointer and the private methods !
279775  friend class AST_FILE_IO;
279776 
279778  friend class SgUnsignedIntValStorageClass;
279779 
279781  friend class AstSpecificDataManagingClass;
279782 
279784  friend class AstSpecificDataManagingClassStorageClass;
279785 
279786  public:
279788  SgUnsignedIntVal( const SgUnsignedIntValStorageClass& source );
279789 
279790  // private: // JJW hack
279791  /*
279792  name AST Memory Allocation Support Variables
279793  Memory allocations support variables
279794 
279795  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
279796  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
279797  and support the AST File I/O Mechanism.
279798  */
279799  /* */
279800 
279801  public:
279802 
279803  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
279804  // to current node (so that it will work cleanly with build functions to specify patterns).
279805  // virtual SgNode* addRegExpAttribute();
279812 
279813 // *** COMMON CODE SECTION ENDS HERE ***
279814 
279815 
279816 // End of memberFunctionString
279817 // Start of memberFunctionString
279818 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
279819 
279820  // the generated cast function
279821  // friend ROSE_DLL_API SgUnsignedIntVal* isSgUnsignedIntVal ( SgNode* s );
279822 
279823  typedef SgValueExp base_node_type;
279824 
279825 
279826 // End of memberFunctionString
279827 // Start of memberFunctionString
279828 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
279829 
279830  SgType* get_type() const override;
279831 
279832 
279833 // End of memberFunctionString
279834 // Start of memberFunctionString
279835 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
279836 
279837  void post_construction_initialization() override;
279838 
279839 
279840 // End of memberFunctionString
279841 
279842  public:
279843  unsigned int get_value() const;
279844  void set_value(unsigned int value);
279845 
279846  public:
279847  std::string get_valueString() const;
279848  void set_valueString(std::string valueString);
279849 
279850 
279851  public:
279852  virtual ~SgUnsignedIntVal();
279853 
279854 
279855  public:
279856  SgUnsignedIntVal(Sg_File_Info* startOfConstruct , unsigned int value = 0, std::string valueString = "");
279857  SgUnsignedIntVal(unsigned int value, std::string valueString);
279858 
279859  protected:
279860 // Start of memberFunctionString
279861 unsigned int p_value;
279862 
279863 // End of memberFunctionString
279864 // Start of memberFunctionString
279865 std::string p_valueString;
279866 
279867 // End of memberFunctionString
279868 
279869 
279870 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
279871 
279872 
279873  };
279874 #endif
279875 
279876 // postdeclarations for SgUnsignedIntVal
279877 
279878 /* #line 279879 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
279879 
279880 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
279881 
279882 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
279883 
279884 
279885 /* #line 279886 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
279886 
279887 
279888 
279889 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
279890 
279891 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
279892 // This code is automatically generated for each
279893 // terminal and non-terminal within the defined
279894 // grammar. There is a simple way to change the
279895 // code to fix bugs etc. See the ROSE README file
279896 // for directions.
279897 
279898 // tps: (02/22/2010): Adding DLL export requirements
279899 #include "rosedll.h"
279900 
279901 // predeclarations for SgLongIntVal
279902 
279903 /* #line 279904 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
279904 
279905 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
279906 
279907 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
279908 
279909 #if 1
279910 // Class Definition for SgLongIntVal
279911 class ROSE_DLL_API SgLongIntVal : public SgValueExp
279912  {
279913  public:
279914 
279915 
279916 /* #line 279917 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
279917 
279918  virtual SgNode* copy ( SgCopyHelp& help) const override;
279919 // Start of memberFunctionString
279920 /* #line 656 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
279921 
279922 
279923 
279924 // End of memberFunctionString
279925 // Start of memberFunctionString
279926 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
279927 
279928 // *** COMMON CODE SECTION BEGINS HERE ***
279929 
279930  public:
279931 
279932  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
279933  // and not required which is required to match the other aspects of the copy mechanism code generation.
279934  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
279935  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
279936  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
279937  // virtual SgNode* copy ( const SgCopyHelp & help) const;
279938 
279940  virtual std::string class_name() const override;
279941 
279943  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
279944 
279946  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
279947  // static const VariantT static_variant = V_SgLongIntVal;
279948  enum { static_variant = V_SgLongIntVal };
279949 
279950  /* the generated cast function */
279952  ROSE_DLL_API friend SgLongIntVal* isSgLongIntVal( SgNode * s );
279953 
279955  ROSE_DLL_API friend const SgLongIntVal* isSgLongIntVal( const SgNode * s );
279956 
279957  // ******************************************
279958  // * Memory Pool / New / Delete
279959  // ******************************************
279960 
279961  public:
279963  static const unsigned pool_size; //
279965  static std::vector<unsigned char *> pools; //
279967  static SgLongIntVal * next_node; //
279968 
279970  static unsigned long initializeStorageClassArray(SgLongIntValStorageClass *); //
279971 
279973  static void clearMemoryPool(); //
279974  static void deleteMemoryPool(); //
279975 
279977  static void extendMemoryPoolForFileIO(); //
279978 
279980  static SgLongIntVal * getPointerFromGlobalIndex(unsigned long); //
279982  static SgLongIntVal * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
279983 
279985  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
279987  static void resetValidFreepointers(); //
279989  static unsigned long getNumberOfLastValidPointer(); //
279990 
279991 
279992 #if defined(INLINE_FUNCTIONS)
279993 
279994  inline void *operator new (size_t size);
279995 #else
279996 
279997  void *operator new (size_t size);
279998 #endif
279999 
280000  void operator delete (void* pointer, size_t size);
280001 
280002  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
280003  void operator delete (void* pointer)
280004  {
280005  // This is the generated delete operator...
280006  SgLongIntVal::operator delete (pointer,sizeof(SgLongIntVal));
280007  }
280008 
280010  static size_t numberOfNodes();
280011 
280013  static size_t memoryUsage();
280014 
280015  // End of scope which started in IR nodes specific code
280016  /* */
280017 
280018  /* name Internal Functions
280019  \brief Internal functions ... incomplete-documentation
280020 
280021  These functions have been made public as part of the design, but they are suggested for internal use
280022  or by particularly knowledgeable users for specialized tools or applications.
280023 
280024  \internal We could not make these private because they are required by user for special purposes. And
280025  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
280026 
280027  */
280028 
280029  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
280030  // overridden in every class by *generated* implementation
280032  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
280033  // MS: 06/28/02 container of names of variables or container indices
280034  // used used in the traversal to access AST successor nodes
280035  // overridden in every class by *generated* implementation
280038  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
280039 
280040  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
280041  // than all the vector copies. The implementation for these functions is generated for each class.
280043  virtual size_t get_numberOfTraversalSuccessors() override;
280045  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
280047  virtual size_t get_childIndex(SgNode *child) override;
280048 
280049 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
280050  // MS: 08/16/2002 method for generating RTI information
280052  virtual RTIReturnType roseRTI() override;
280053 #endif
280054  /* */
280055 
280056 
280057 
280058  /* name Deprecated Functions
280059  \brief Deprecated functions ... incomplete-documentation
280060 
280061  These functions have been deprecated from use.
280062  */
280063  /* */
280064 
280066  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
280067 
280068  // JJW (10/16/2008): Changed to a single function in Node.code, and put
280069  // getVariant() in #if 0 block to prevent confusing Doxygen
280070 #if 0
280071 
280072  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
280074  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
280075 #endif
280076  /* */
280077 
280078 
280079 
280080 
280081  public:
280082  /* name Traversal Support Functions
280083  \brief Traversal support functions ... incomplete-documentation
280084 
280085  These functions have been made public as part of the design, but they are suggested for internal use
280086  or by particularly knowledgable users for specialized tools or applications.
280087  */
280088  /* */
280089 
280090  // DQ (11/26/2005): Support for visitor pattern mechanims
280091  // (inferior to ROSE traversal mechanism, experimental).
280095 
280096  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
280098  virtual void accept (ROSE_VisitorPattern & visitor) override;
280099 
280100  // DQ (12/26/2005): Support for traversal based on the memory pool
280103  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
280104 
280107  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
280108 
280109  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
280110  // This traversal helps support internal tools that call static member functions.
280111  // note: this function operates on the memory pools.
280114  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
280115  /* */
280116 
280117 
280118  public:
280119  /* name Memory Allocation Functions
280120  \brief Memory allocations functions ... incomplete-documentation
280121 
280122  These functions have been made public as part of the design, but they are suggested for internal use
280123  or by particularly knowledgable users for specialized tools or applications.
280124  */
280125  /* */
280126 
280137  virtual bool isInMemoryPool() override;
280138 
280149  virtual void checkDataMemberPointersIfInMemoryPool() override;
280150 
280151  // DQ (4/30/2006): Modified to be a const function.
280166  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
280167 
280177  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
280178 
280190  virtual long getChildIndex( SgNode* childNode ) const override;
280191 
280192  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
280193  // comment here (changed to be a C style comment and not be a doxygen comment).
280194  /* \brief Constructor for use by AST File I/O Mechanism
280195 
280196  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
280197  which obtained via fast binary file I/O from disk.
280198  */
280199  // SgLongIntVal( SgLongIntValStorageClass& source );
280200 
280201 
280202 
280203 
280204 
280205  // JH (10/24/2005): methods added to support the ast file IO
280206  private:
280207 
280208  /* name AST Memory Allocation Support Functions
280209  \brief Memory allocations support....
280210 
280211  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
280212  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
280213  and support the AST File I/O Mechanism.
280214  */
280215  /* */
280216 
280217  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
280218  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
280219  that I use the same type everywhere, if any changes are made. THe second one declares the type
280220  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
280221  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
280222  a correspinding one in the AST_FILE_IO class!
280223  */
280224  // DQ (9/2/2015): This typedef is no longer used, we can't define the
280225  // comment here (changed to be a C style comment and not be a doxygen comment).
280226  /* \brief Typedef used for low level memory access.
280227  */
280228  // typedef unsigned char* TestType;
280229 
280230  // DQ (9/2/2015): This typedef is no longer used, we can't define the
280231  // comment here (changed to be a C style comment and not be a doxygen comment).
280232  /* \brief Typedef used to hold memory addresses as values.
280233  */
280234  // typedef unsigned long AddressType;
280235 
280236 
280237 
280238  // necessary, to have direct access to the p_freepointer and the private methods !
280240  friend class AST_FILE_IO;
280241 
280243  friend class SgLongIntValStorageClass;
280244 
280246  friend class AstSpecificDataManagingClass;
280247 
280249  friend class AstSpecificDataManagingClassStorageClass;
280250 
280251  public:
280253  SgLongIntVal( const SgLongIntValStorageClass& source );
280254 
280255  // private: // JJW hack
280256  /*
280257  name AST Memory Allocation Support Variables
280258  Memory allocations support variables
280259 
280260  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
280261  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
280262  and support the AST File I/O Mechanism.
280263  */
280264  /* */
280265 
280266  public:
280267 
280268  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
280269  // to current node (so that it will work cleanly with build functions to specify patterns).
280270  // virtual SgNode* addRegExpAttribute();
280276  SgLongIntVal* addRegExpAttribute(std::string s, AstRegExAttribute* a);
280277 
280278 // *** COMMON CODE SECTION ENDS HERE ***
280279 
280280 
280281 // End of memberFunctionString
280282 // Start of memberFunctionString
280283 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
280284 
280285  // the generated cast function
280286  // friend ROSE_DLL_API SgLongIntVal* isSgLongIntVal ( SgNode* s );
280287 
280288  typedef SgValueExp base_node_type;
280289 
280290 
280291 // End of memberFunctionString
280292 // Start of memberFunctionString
280293 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
280294 
280295  SgType* get_type() const override;
280296 
280297 
280298 // End of memberFunctionString
280299 // Start of memberFunctionString
280300 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
280301 
280302  void post_construction_initialization() override;
280303 
280304 
280305 // End of memberFunctionString
280306 
280307  public:
280308  long int get_value() const;
280309  void set_value(long int value);
280310 
280311  public:
280312  std::string get_valueString() const;
280313  void set_valueString(std::string valueString);
280314 
280315 
280316  public:
280317  virtual ~SgLongIntVal();
280318 
280319 
280320  public:
280321  SgLongIntVal(Sg_File_Info* startOfConstruct , long int value = 0, std::string valueString = "");
280322  SgLongIntVal(long int value, std::string valueString);
280323 
280324  protected:
280325 // Start of memberFunctionString
280326 long int p_value;
280327 
280328 // End of memberFunctionString
280329 // Start of memberFunctionString
280330 std::string p_valueString;
280331 
280332 // End of memberFunctionString
280333 
280334 
280335 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
280336 
280337 
280338  };
280339 #endif
280340 
280341 // postdeclarations for SgLongIntVal
280342 
280343 /* #line 280344 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
280344 
280345 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
280346 
280347 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
280348 
280349 
280350 /* #line 280351 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
280351 
280352 
280353 
280354 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
280355 
280356 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
280357 // This code is automatically generated for each
280358 // terminal and non-terminal within the defined
280359 // grammar. There is a simple way to change the
280360 // code to fix bugs etc. See the ROSE README file
280361 // for directions.
280362 
280363 // tps: (02/22/2010): Adding DLL export requirements
280364 #include "rosedll.h"
280365 
280366 // predeclarations for SgLongLongIntVal
280367 
280368 /* #line 280369 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
280369 
280370 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
280371 
280372 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
280373 
280374 #if 1
280375 // Class Definition for SgLongLongIntVal
280376 class ROSE_DLL_API SgLongLongIntVal : public SgValueExp
280377  {
280378  public:
280379 
280380 
280381 /* #line 280382 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
280382 
280383  virtual SgNode* copy ( SgCopyHelp& help) const override;
280384 // Start of memberFunctionString
280385 /* #line 660 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
280386 
280387 
280388 
280389 // End of memberFunctionString
280390 // Start of memberFunctionString
280391 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
280392 
280393 // *** COMMON CODE SECTION BEGINS HERE ***
280394 
280395  public:
280396 
280397  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
280398  // and not required which is required to match the other aspects of the copy mechanism code generation.
280399  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
280400  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
280401  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
280402  // virtual SgNode* copy ( const SgCopyHelp & help) const;
280403 
280405  virtual std::string class_name() const override;
280406 
280408  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
280409 
280411  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
280412  // static const VariantT static_variant = V_SgLongLongIntVal;
280413  enum { static_variant = V_SgLongLongIntVal };
280414 
280415  /* the generated cast function */
280417  ROSE_DLL_API friend SgLongLongIntVal* isSgLongLongIntVal( SgNode * s );
280418 
280420  ROSE_DLL_API friend const SgLongLongIntVal* isSgLongLongIntVal( const SgNode * s );
280421 
280422  // ******************************************
280423  // * Memory Pool / New / Delete
280424  // ******************************************
280425 
280426  public:
280428  static const unsigned pool_size; //
280430  static std::vector<unsigned char *> pools; //
280432  static SgLongLongIntVal * next_node; //
280433 
280435  static unsigned long initializeStorageClassArray(SgLongLongIntValStorageClass *); //
280436 
280438  static void clearMemoryPool(); //
280439  static void deleteMemoryPool(); //
280440 
280442  static void extendMemoryPoolForFileIO(); //
280443 
280445  static SgLongLongIntVal * getPointerFromGlobalIndex(unsigned long); //
280447  static SgLongLongIntVal * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
280448 
280450  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
280452  static void resetValidFreepointers(); //
280454  static unsigned long getNumberOfLastValidPointer(); //
280455 
280456 
280457 #if defined(INLINE_FUNCTIONS)
280458 
280459  inline void *operator new (size_t size);
280460 #else
280461 
280462  void *operator new (size_t size);
280463 #endif
280464 
280465  void operator delete (void* pointer, size_t size);
280466 
280467  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
280468  void operator delete (void* pointer)
280469  {
280470  // This is the generated delete operator...
280471  SgLongLongIntVal::operator delete (pointer,sizeof(SgLongLongIntVal));
280472  }
280473 
280475  static size_t numberOfNodes();
280476 
280478  static size_t memoryUsage();
280479 
280480  // End of scope which started in IR nodes specific code
280481  /* */
280482 
280483  /* name Internal Functions
280484  \brief Internal functions ... incomplete-documentation
280485 
280486  These functions have been made public as part of the design, but they are suggested for internal use
280487  or by particularly knowledgeable users for specialized tools or applications.
280488 
280489  \internal We could not make these private because they are required by user for special purposes. And
280490  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
280491 
280492  */
280493 
280494  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
280495  // overridden in every class by *generated* implementation
280497  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
280498  // MS: 06/28/02 container of names of variables or container indices
280499  // used used in the traversal to access AST successor nodes
280500  // overridden in every class by *generated* implementation
280503  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
280504 
280505  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
280506  // than all the vector copies. The implementation for these functions is generated for each class.
280508  virtual size_t get_numberOfTraversalSuccessors() override;
280510  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
280512  virtual size_t get_childIndex(SgNode *child) override;
280513 
280514 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
280515  // MS: 08/16/2002 method for generating RTI information
280517  virtual RTIReturnType roseRTI() override;
280518 #endif
280519  /* */
280520 
280521 
280522 
280523  /* name Deprecated Functions
280524  \brief Deprecated functions ... incomplete-documentation
280525 
280526  These functions have been deprecated from use.
280527  */
280528  /* */
280529 
280531  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
280532 
280533  // JJW (10/16/2008): Changed to a single function in Node.code, and put
280534  // getVariant() in #if 0 block to prevent confusing Doxygen
280535 #if 0
280536 
280537  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
280539  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
280540 #endif
280541  /* */
280542 
280543 
280544 
280545 
280546  public:
280547  /* name Traversal Support Functions
280548  \brief Traversal support functions ... incomplete-documentation
280549 
280550  These functions have been made public as part of the design, but they are suggested for internal use
280551  or by particularly knowledgable users for specialized tools or applications.
280552  */
280553  /* */
280554 
280555  // DQ (11/26/2005): Support for visitor pattern mechanims
280556  // (inferior to ROSE traversal mechanism, experimental).
280560 
280561  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
280563  virtual void accept (ROSE_VisitorPattern & visitor) override;
280564 
280565  // DQ (12/26/2005): Support for traversal based on the memory pool
280568  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
280569 
280572  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
280573 
280574  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
280575  // This traversal helps support internal tools that call static member functions.
280576  // note: this function operates on the memory pools.
280579  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
280580  /* */
280581 
280582 
280583  public:
280584  /* name Memory Allocation Functions
280585  \brief Memory allocations functions ... incomplete-documentation
280586 
280587  These functions have been made public as part of the design, but they are suggested for internal use
280588  or by particularly knowledgable users for specialized tools or applications.
280589  */
280590  /* */
280591 
280602  virtual bool isInMemoryPool() override;
280603 
280614  virtual void checkDataMemberPointersIfInMemoryPool() override;
280615 
280616  // DQ (4/30/2006): Modified to be a const function.
280631  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
280632 
280642  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
280643 
280655  virtual long getChildIndex( SgNode* childNode ) const override;
280656 
280657  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
280658  // comment here (changed to be a C style comment and not be a doxygen comment).
280659  /* \brief Constructor for use by AST File I/O Mechanism
280660 
280661  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
280662  which obtained via fast binary file I/O from disk.
280663  */
280664  // SgLongLongIntVal( SgLongLongIntValStorageClass& source );
280665 
280666 
280667 
280668 
280669 
280670  // JH (10/24/2005): methods added to support the ast file IO
280671  private:
280672 
280673  /* name AST Memory Allocation Support Functions
280674  \brief Memory allocations support....
280675 
280676  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
280677  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
280678  and support the AST File I/O Mechanism.
280679  */
280680  /* */
280681 
280682  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
280683  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
280684  that I use the same type everywhere, if any changes are made. THe second one declares the type
280685  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
280686  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
280687  a correspinding one in the AST_FILE_IO class!
280688  */
280689  // DQ (9/2/2015): This typedef is no longer used, we can't define the
280690  // comment here (changed to be a C style comment and not be a doxygen comment).
280691  /* \brief Typedef used for low level memory access.
280692  */
280693  // typedef unsigned char* TestType;
280694 
280695  // DQ (9/2/2015): This typedef is no longer used, we can't define the
280696  // comment here (changed to be a C style comment and not be a doxygen comment).
280697  /* \brief Typedef used to hold memory addresses as values.
280698  */
280699  // typedef unsigned long AddressType;
280700 
280701 
280702 
280703  // necessary, to have direct access to the p_freepointer and the private methods !
280705  friend class AST_FILE_IO;
280706 
280708  friend class SgLongLongIntValStorageClass;
280709 
280711  friend class AstSpecificDataManagingClass;
280712 
280714  friend class AstSpecificDataManagingClassStorageClass;
280715 
280716  public:
280718  SgLongLongIntVal( const SgLongLongIntValStorageClass& source );
280719 
280720  // private: // JJW hack
280721  /*
280722  name AST Memory Allocation Support Variables
280723  Memory allocations support variables
280724 
280725  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
280726  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
280727  and support the AST File I/O Mechanism.
280728  */
280729  /* */
280730 
280731  public:
280732 
280733  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
280734  // to current node (so that it will work cleanly with build functions to specify patterns).
280735  // virtual SgNode* addRegExpAttribute();
280742 
280743 // *** COMMON CODE SECTION ENDS HERE ***
280744 
280745 
280746 // End of memberFunctionString
280747 // Start of memberFunctionString
280748 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
280749 
280750  // the generated cast function
280751  // friend ROSE_DLL_API SgLongLongIntVal* isSgLongLongIntVal ( SgNode* s );
280752 
280753  typedef SgValueExp base_node_type;
280754 
280755 
280756 // End of memberFunctionString
280757 // Start of memberFunctionString
280758 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
280759 
280760  SgType* get_type() const override;
280761 
280762 
280763 // End of memberFunctionString
280764 // Start of memberFunctionString
280765 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
280766 
280767  void post_construction_initialization() override;
280768 
280769 
280770 // End of memberFunctionString
280771 
280772  public:
280773  long long int get_value() const;
280774  void set_value(long long int value);
280775 
280776  public:
280777  std::string get_valueString() const;
280778  void set_valueString(std::string valueString);
280779 
280780 
280781  public:
280782  virtual ~SgLongLongIntVal();
280783 
280784 
280785  public:
280786  SgLongLongIntVal(Sg_File_Info* startOfConstruct , long long int value = 0, std::string valueString = "");
280787  SgLongLongIntVal(long long int value, std::string valueString);
280788 
280789  protected:
280790 // Start of memberFunctionString
280791 long long int p_value;
280792 
280793 // End of memberFunctionString
280794 // Start of memberFunctionString
280795 std::string p_valueString;
280796 
280797 // End of memberFunctionString
280798 
280799 
280800 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
280801 
280802 
280803  };
280804 #endif
280805 
280806 // postdeclarations for SgLongLongIntVal
280807 
280808 /* #line 280809 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
280809 
280810 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
280811 
280812 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
280813 
280814 
280815 /* #line 280816 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
280816 
280817 
280818 
280819 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
280820 
280821 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
280822 // This code is automatically generated for each
280823 // terminal and non-terminal within the defined
280824 // grammar. There is a simple way to change the
280825 // code to fix bugs etc. See the ROSE README file
280826 // for directions.
280827 
280828 // tps: (02/22/2010): Adding DLL export requirements
280829 #include "rosedll.h"
280830 
280831 // predeclarations for SgUnsignedLongLongIntVal
280832 
280833 /* #line 280834 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
280834 
280835 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
280836 
280837 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
280838 
280839 #if 1
280840 // Class Definition for SgUnsignedLongLongIntVal
280841 class ROSE_DLL_API SgUnsignedLongLongIntVal : public SgValueExp
280842  {
280843  public:
280844 
280845 
280846 /* #line 280847 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
280847 
280848  virtual SgNode* copy ( SgCopyHelp& help) const override;
280849 // Start of memberFunctionString
280850 /* #line 664 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
280851 
280852 
280853 
280854 // End of memberFunctionString
280855 // Start of memberFunctionString
280856 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
280857 
280858 // *** COMMON CODE SECTION BEGINS HERE ***
280859 
280860  public:
280861 
280862  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
280863  // and not required which is required to match the other aspects of the copy mechanism code generation.
280864  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
280865  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
280866  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
280867  // virtual SgNode* copy ( const SgCopyHelp & help) const;
280868 
280870  virtual std::string class_name() const override;
280871 
280873  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
280874 
280876  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
280877  // static const VariantT static_variant = V_SgUnsignedLongLongIntVal;
280878  enum { static_variant = V_SgUnsignedLongLongIntVal };
280879 
280880  /* the generated cast function */
280882  ROSE_DLL_API friend SgUnsignedLongLongIntVal* isSgUnsignedLongLongIntVal( SgNode * s );
280883 
280885  ROSE_DLL_API friend const SgUnsignedLongLongIntVal* isSgUnsignedLongLongIntVal( const SgNode * s );
280886 
280887  // ******************************************
280888  // * Memory Pool / New / Delete
280889  // ******************************************
280890 
280891  public:
280893  static const unsigned pool_size; //
280895  static std::vector<unsigned char *> pools; //
280897  static SgUnsignedLongLongIntVal * next_node; //
280898 
280900  static unsigned long initializeStorageClassArray(SgUnsignedLongLongIntValStorageClass *); //
280901 
280903  static void clearMemoryPool(); //
280904  static void deleteMemoryPool(); //
280905 
280907  static void extendMemoryPoolForFileIO(); //
280908 
280910  static SgUnsignedLongLongIntVal * getPointerFromGlobalIndex(unsigned long); //
280912  static SgUnsignedLongLongIntVal * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
280913 
280915  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
280917  static void resetValidFreepointers(); //
280919  static unsigned long getNumberOfLastValidPointer(); //
280920 
280921 
280922 #if defined(INLINE_FUNCTIONS)
280923 
280924  inline void *operator new (size_t size);
280925 #else
280926 
280927  void *operator new (size_t size);
280928 #endif
280929 
280930  void operator delete (void* pointer, size_t size);
280931 
280932  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
280933  void operator delete (void* pointer)
280934  {
280935  // This is the generated delete operator...
280936  SgUnsignedLongLongIntVal::operator delete (pointer,sizeof(SgUnsignedLongLongIntVal));
280937  }
280938 
280940  static size_t numberOfNodes();
280941 
280943  static size_t memoryUsage();
280944 
280945  // End of scope which started in IR nodes specific code
280946  /* */
280947 
280948  /* name Internal Functions
280949  \brief Internal functions ... incomplete-documentation
280950 
280951  These functions have been made public as part of the design, but they are suggested for internal use
280952  or by particularly knowledgeable users for specialized tools or applications.
280953 
280954  \internal We could not make these private because they are required by user for special purposes. And
280955  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
280956 
280957  */
280958 
280959  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
280960  // overridden in every class by *generated* implementation
280962  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
280963  // MS: 06/28/02 container of names of variables or container indices
280964  // used used in the traversal to access AST successor nodes
280965  // overridden in every class by *generated* implementation
280968  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
280969 
280970  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
280971  // than all the vector copies. The implementation for these functions is generated for each class.
280973  virtual size_t get_numberOfTraversalSuccessors() override;
280975  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
280977  virtual size_t get_childIndex(SgNode *child) override;
280978 
280979 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
280980  // MS: 08/16/2002 method for generating RTI information
280982  virtual RTIReturnType roseRTI() override;
280983 #endif
280984  /* */
280985 
280986 
280987 
280988  /* name Deprecated Functions
280989  \brief Deprecated functions ... incomplete-documentation
280990 
280991  These functions have been deprecated from use.
280992  */
280993  /* */
280994 
280996  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
280997 
280998  // JJW (10/16/2008): Changed to a single function in Node.code, and put
280999  // getVariant() in #if 0 block to prevent confusing Doxygen
281000 #if 0
281001 
281002  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
281004  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
281005 #endif
281006  /* */
281007 
281008 
281009 
281010 
281011  public:
281012  /* name Traversal Support Functions
281013  \brief Traversal support functions ... incomplete-documentation
281014 
281015  These functions have been made public as part of the design, but they are suggested for internal use
281016  or by particularly knowledgable users for specialized tools or applications.
281017  */
281018  /* */
281019 
281020  // DQ (11/26/2005): Support for visitor pattern mechanims
281021  // (inferior to ROSE traversal mechanism, experimental).
281025 
281026  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
281028  virtual void accept (ROSE_VisitorPattern & visitor) override;
281029 
281030  // DQ (12/26/2005): Support for traversal based on the memory pool
281033  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
281034 
281037  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
281038 
281039  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
281040  // This traversal helps support internal tools that call static member functions.
281041  // note: this function operates on the memory pools.
281044  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
281045  /* */
281046 
281047 
281048  public:
281049  /* name Memory Allocation Functions
281050  \brief Memory allocations functions ... incomplete-documentation
281051 
281052  These functions have been made public as part of the design, but they are suggested for internal use
281053  or by particularly knowledgable users for specialized tools or applications.
281054  */
281055  /* */
281056 
281067  virtual bool isInMemoryPool() override;
281068 
281079  virtual void checkDataMemberPointersIfInMemoryPool() override;
281080 
281081  // DQ (4/30/2006): Modified to be a const function.
281096  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
281097 
281107  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
281108 
281120  virtual long getChildIndex( SgNode* childNode ) const override;
281121 
281122  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
281123  // comment here (changed to be a C style comment and not be a doxygen comment).
281124  /* \brief Constructor for use by AST File I/O Mechanism
281125 
281126  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
281127  which obtained via fast binary file I/O from disk.
281128  */
281129  // SgUnsignedLongLongIntVal( SgUnsignedLongLongIntValStorageClass& source );
281130 
281131 
281132 
281133 
281134 
281135  // JH (10/24/2005): methods added to support the ast file IO
281136  private:
281137 
281138  /* name AST Memory Allocation Support Functions
281139  \brief Memory allocations support....
281140 
281141  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
281142  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
281143  and support the AST File I/O Mechanism.
281144  */
281145  /* */
281146 
281147  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
281148  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
281149  that I use the same type everywhere, if any changes are made. THe second one declares the type
281150  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
281151  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
281152  a correspinding one in the AST_FILE_IO class!
281153  */
281154  // DQ (9/2/2015): This typedef is no longer used, we can't define the
281155  // comment here (changed to be a C style comment and not be a doxygen comment).
281156  /* \brief Typedef used for low level memory access.
281157  */
281158  // typedef unsigned char* TestType;
281159 
281160  // DQ (9/2/2015): This typedef is no longer used, we can't define the
281161  // comment here (changed to be a C style comment and not be a doxygen comment).
281162  /* \brief Typedef used to hold memory addresses as values.
281163  */
281164  // typedef unsigned long AddressType;
281165 
281166 
281167 
281168  // necessary, to have direct access to the p_freepointer and the private methods !
281170  friend class AST_FILE_IO;
281171 
281173  friend class SgUnsignedLongLongIntValStorageClass;
281174 
281176  friend class AstSpecificDataManagingClass;
281177 
281179  friend class AstSpecificDataManagingClassStorageClass;
281180 
281181  public:
281183  SgUnsignedLongLongIntVal( const SgUnsignedLongLongIntValStorageClass& source );
281184 
281185  // private: // JJW hack
281186  /*
281187  name AST Memory Allocation Support Variables
281188  Memory allocations support variables
281189 
281190  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
281191  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
281192  and support the AST File I/O Mechanism.
281193  */
281194  /* */
281195 
281196  public:
281197 
281198  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
281199  // to current node (so that it will work cleanly with build functions to specify patterns).
281200  // virtual SgNode* addRegExpAttribute();
281207 
281208 // *** COMMON CODE SECTION ENDS HERE ***
281209 
281210 
281211 // End of memberFunctionString
281212 // Start of memberFunctionString
281213 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
281214 
281215  // the generated cast function
281216  // friend ROSE_DLL_API SgUnsignedLongLongIntVal* isSgUnsignedLongLongIntVal ( SgNode* s );
281217 
281218  typedef SgValueExp base_node_type;
281219 
281220 
281221 // End of memberFunctionString
281222 // Start of memberFunctionString
281223 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
281224 
281225  SgType* get_type() const override;
281226 
281227 
281228 // End of memberFunctionString
281229 // Start of memberFunctionString
281230 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
281231 
281232  void post_construction_initialization() override;
281233 
281234 
281235 // End of memberFunctionString
281236 
281237  public:
281238  unsigned long long int get_value() const;
281239  void set_value(unsigned long long int value);
281240 
281241  public:
281242  std::string get_valueString() const;
281243  void set_valueString(std::string valueString);
281244 
281245 
281246  public:
281247  virtual ~SgUnsignedLongLongIntVal();
281248 
281249 
281250  public:
281251  SgUnsignedLongLongIntVal(Sg_File_Info* startOfConstruct , unsigned long long int value = 0, std::string valueString = "");
281252  SgUnsignedLongLongIntVal(unsigned long long int value, std::string valueString);
281253 
281254  protected:
281255 // Start of memberFunctionString
281256 unsigned long long int p_value;
281257 
281258 // End of memberFunctionString
281259 // Start of memberFunctionString
281260 std::string p_valueString;
281261 
281262 // End of memberFunctionString
281263 
281264 
281265 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
281266 
281267 
281268  };
281269 #endif
281270 
281271 // postdeclarations for SgUnsignedLongLongIntVal
281272 
281273 /* #line 281274 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
281274 
281275 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
281276 
281277 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
281278 
281279 
281280 /* #line 281281 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
281281 
281282 
281283 
281284 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
281285 
281286 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
281287 // This code is automatically generated for each
281288 // terminal and non-terminal within the defined
281289 // grammar. There is a simple way to change the
281290 // code to fix bugs etc. See the ROSE README file
281291 // for directions.
281292 
281293 // tps: (02/22/2010): Adding DLL export requirements
281294 #include "rosedll.h"
281295 
281296 // predeclarations for SgUnsignedLongVal
281297 
281298 /* #line 281299 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
281299 
281300 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
281301 
281302 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
281303 
281304 #if 1
281305 // Class Definition for SgUnsignedLongVal
281306 class ROSE_DLL_API SgUnsignedLongVal : public SgValueExp
281307  {
281308  public:
281309 
281310 
281311 /* #line 281312 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
281312 
281313  virtual SgNode* copy ( SgCopyHelp& help) const override;
281314 // Start of memberFunctionString
281315 /* #line 668 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
281316 
281317 
281318 
281319 // End of memberFunctionString
281320 // Start of memberFunctionString
281321 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
281322 
281323 // *** COMMON CODE SECTION BEGINS HERE ***
281324 
281325  public:
281326 
281327  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
281328  // and not required which is required to match the other aspects of the copy mechanism code generation.
281329  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
281330  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
281331  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
281332  // virtual SgNode* copy ( const SgCopyHelp & help) const;
281333 
281335  virtual std::string class_name() const override;
281336 
281338  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
281339 
281341  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
281342  // static const VariantT static_variant = V_SgUnsignedLongVal;
281343  enum { static_variant = V_SgUnsignedLongVal };
281344 
281345  /* the generated cast function */
281347  ROSE_DLL_API friend SgUnsignedLongVal* isSgUnsignedLongVal( SgNode * s );
281348 
281350  ROSE_DLL_API friend const SgUnsignedLongVal* isSgUnsignedLongVal( const SgNode * s );
281351 
281352  // ******************************************
281353  // * Memory Pool / New / Delete
281354  // ******************************************
281355 
281356  public:
281358  static const unsigned pool_size; //
281360  static std::vector<unsigned char *> pools; //
281362  static SgUnsignedLongVal * next_node; //
281363 
281365  static unsigned long initializeStorageClassArray(SgUnsignedLongValStorageClass *); //
281366 
281368  static void clearMemoryPool(); //
281369  static void deleteMemoryPool(); //
281370 
281372  static void extendMemoryPoolForFileIO(); //
281373 
281375  static SgUnsignedLongVal * getPointerFromGlobalIndex(unsigned long); //
281377  static SgUnsignedLongVal * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
281378 
281380  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
281382  static void resetValidFreepointers(); //
281384  static unsigned long getNumberOfLastValidPointer(); //
281385 
281386 
281387 #if defined(INLINE_FUNCTIONS)
281388 
281389  inline void *operator new (size_t size);
281390 #else
281391 
281392  void *operator new (size_t size);
281393 #endif
281394 
281395  void operator delete (void* pointer, size_t size);
281396 
281397  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
281398  void operator delete (void* pointer)
281399  {
281400  // This is the generated delete operator...
281401  SgUnsignedLongVal::operator delete (pointer,sizeof(SgUnsignedLongVal));
281402  }
281403 
281405  static size_t numberOfNodes();
281406 
281408  static size_t memoryUsage();
281409 
281410  // End of scope which started in IR nodes specific code
281411  /* */
281412 
281413  /* name Internal Functions
281414  \brief Internal functions ... incomplete-documentation
281415 
281416  These functions have been made public as part of the design, but they are suggested for internal use
281417  or by particularly knowledgeable users for specialized tools or applications.
281418 
281419  \internal We could not make these private because they are required by user for special purposes. And
281420  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
281421 
281422  */
281423 
281424  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
281425  // overridden in every class by *generated* implementation
281427  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
281428  // MS: 06/28/02 container of names of variables or container indices
281429  // used used in the traversal to access AST successor nodes
281430  // overridden in every class by *generated* implementation
281433  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
281434 
281435  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
281436  // than all the vector copies. The implementation for these functions is generated for each class.
281438  virtual size_t get_numberOfTraversalSuccessors() override;
281440  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
281442  virtual size_t get_childIndex(SgNode *child) override;
281443 
281444 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
281445  // MS: 08/16/2002 method for generating RTI information
281447  virtual RTIReturnType roseRTI() override;
281448 #endif
281449  /* */
281450 
281451 
281452 
281453  /* name Deprecated Functions
281454  \brief Deprecated functions ... incomplete-documentation
281455 
281456  These functions have been deprecated from use.
281457  */
281458  /* */
281459 
281461  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
281462 
281463  // JJW (10/16/2008): Changed to a single function in Node.code, and put
281464  // getVariant() in #if 0 block to prevent confusing Doxygen
281465 #if 0
281466 
281467  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
281469  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
281470 #endif
281471  /* */
281472 
281473 
281474 
281475 
281476  public:
281477  /* name Traversal Support Functions
281478  \brief Traversal support functions ... incomplete-documentation
281479 
281480  These functions have been made public as part of the design, but they are suggested for internal use
281481  or by particularly knowledgable users for specialized tools or applications.
281482  */
281483  /* */
281484 
281485  // DQ (11/26/2005): Support for visitor pattern mechanims
281486  // (inferior to ROSE traversal mechanism, experimental).
281490 
281491  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
281493  virtual void accept (ROSE_VisitorPattern & visitor) override;
281494 
281495  // DQ (12/26/2005): Support for traversal based on the memory pool
281498  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
281499 
281502  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
281503 
281504  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
281505  // This traversal helps support internal tools that call static member functions.
281506  // note: this function operates on the memory pools.
281509  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
281510  /* */
281511 
281512 
281513  public:
281514  /* name Memory Allocation Functions
281515  \brief Memory allocations functions ... incomplete-documentation
281516 
281517  These functions have been made public as part of the design, but they are suggested for internal use
281518  or by particularly knowledgable users for specialized tools or applications.
281519  */
281520  /* */
281521 
281532  virtual bool isInMemoryPool() override;
281533 
281544  virtual void checkDataMemberPointersIfInMemoryPool() override;
281545 
281546  // DQ (4/30/2006): Modified to be a const function.
281561  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
281562 
281572  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
281573 
281585  virtual long getChildIndex( SgNode* childNode ) const override;
281586 
281587  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
281588  // comment here (changed to be a C style comment and not be a doxygen comment).
281589  /* \brief Constructor for use by AST File I/O Mechanism
281590 
281591  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
281592  which obtained via fast binary file I/O from disk.
281593  */
281594  // SgUnsignedLongVal( SgUnsignedLongValStorageClass& source );
281595 
281596 
281597 
281598 
281599 
281600  // JH (10/24/2005): methods added to support the ast file IO
281601  private:
281602 
281603  /* name AST Memory Allocation Support Functions
281604  \brief Memory allocations support....
281605 
281606  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
281607  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
281608  and support the AST File I/O Mechanism.
281609  */
281610  /* */
281611 
281612  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
281613  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
281614  that I use the same type everywhere, if any changes are made. THe second one declares the type
281615  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
281616  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
281617  a correspinding one in the AST_FILE_IO class!
281618  */
281619  // DQ (9/2/2015): This typedef is no longer used, we can't define the
281620  // comment here (changed to be a C style comment and not be a doxygen comment).
281621  /* \brief Typedef used for low level memory access.
281622  */
281623  // typedef unsigned char* TestType;
281624 
281625  // DQ (9/2/2015): This typedef is no longer used, we can't define the
281626  // comment here (changed to be a C style comment and not be a doxygen comment).
281627  /* \brief Typedef used to hold memory addresses as values.
281628  */
281629  // typedef unsigned long AddressType;
281630 
281631 
281632 
281633  // necessary, to have direct access to the p_freepointer and the private methods !
281635  friend class AST_FILE_IO;
281636 
281638  friend class SgUnsignedLongValStorageClass;
281639 
281641  friend class AstSpecificDataManagingClass;
281642 
281644  friend class AstSpecificDataManagingClassStorageClass;
281645 
281646  public:
281648  SgUnsignedLongVal( const SgUnsignedLongValStorageClass& source );
281649 
281650  // private: // JJW hack
281651  /*
281652  name AST Memory Allocation Support Variables
281653  Memory allocations support variables
281654 
281655  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
281656  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
281657  and support the AST File I/O Mechanism.
281658  */
281659  /* */
281660 
281661  public:
281662 
281663  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
281664  // to current node (so that it will work cleanly with build functions to specify patterns).
281665  // virtual SgNode* addRegExpAttribute();
281672 
281673 // *** COMMON CODE SECTION ENDS HERE ***
281674 
281675 
281676 // End of memberFunctionString
281677 // Start of memberFunctionString
281678 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
281679 
281680  // the generated cast function
281681  // friend ROSE_DLL_API SgUnsignedLongVal* isSgUnsignedLongVal ( SgNode* s );
281682 
281683  typedef SgValueExp base_node_type;
281684 
281685 
281686 // End of memberFunctionString
281687 // Start of memberFunctionString
281688 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
281689 
281690  SgType* get_type() const override;
281691 
281692 
281693 // End of memberFunctionString
281694 // Start of memberFunctionString
281695 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
281696 
281697  void post_construction_initialization() override;
281698 
281699 
281700 // End of memberFunctionString
281701 
281702  public:
281703  unsigned long get_value() const;
281704  void set_value(unsigned long value);
281705 
281706  public:
281707  std::string get_valueString() const;
281708  void set_valueString(std::string valueString);
281709 
281710 
281711  public:
281712  virtual ~SgUnsignedLongVal();
281713 
281714 
281715  public:
281716  SgUnsignedLongVal(Sg_File_Info* startOfConstruct , unsigned long value = 0, std::string valueString = "");
281717  SgUnsignedLongVal(unsigned long value, std::string valueString);
281718 
281719  protected:
281720 // Start of memberFunctionString
281721 unsigned long p_value;
281722 
281723 // End of memberFunctionString
281724 // Start of memberFunctionString
281725 std::string p_valueString;
281726 
281727 // End of memberFunctionString
281728 
281729 
281730 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
281731 
281732 
281733  };
281734 #endif
281735 
281736 // postdeclarations for SgUnsignedLongVal
281737 
281738 /* #line 281739 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
281739 
281740 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
281741 
281742 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
281743 
281744 
281745 /* #line 281746 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
281746 
281747 
281748 
281749 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
281750 
281751 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
281752 // This code is automatically generated for each
281753 // terminal and non-terminal within the defined
281754 // grammar. There is a simple way to change the
281755 // code to fix bugs etc. See the ROSE README file
281756 // for directions.
281757 
281758 // tps: (02/22/2010): Adding DLL export requirements
281759 #include "rosedll.h"
281760 
281761 // predeclarations for SgFloatVal
281762 
281763 /* #line 281764 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
281764 
281765 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
281766 
281767 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
281768 
281769 #if 1
281770 // Class Definition for SgFloatVal
281771 class ROSE_DLL_API SgFloatVal : public SgValueExp
281772  {
281773  public:
281774 
281775 
281776 /* #line 281777 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
281777 
281778  virtual SgNode* copy ( SgCopyHelp& help) const override;
281779 // Start of memberFunctionString
281780 /* #line 672 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
281781 
281782 
281783 
281784 // End of memberFunctionString
281785 // Start of memberFunctionString
281786 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
281787 
281788 // *** COMMON CODE SECTION BEGINS HERE ***
281789 
281790  public:
281791 
281792  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
281793  // and not required which is required to match the other aspects of the copy mechanism code generation.
281794  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
281795  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
281796  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
281797  // virtual SgNode* copy ( const SgCopyHelp & help) const;
281798 
281800  virtual std::string class_name() const override;
281801 
281803  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
281804 
281806  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
281807  // static const VariantT static_variant = V_SgFloatVal;
281808  enum { static_variant = V_SgFloatVal };
281809 
281810  /* the generated cast function */
281812  ROSE_DLL_API friend SgFloatVal* isSgFloatVal( SgNode * s );
281813 
281815  ROSE_DLL_API friend const SgFloatVal* isSgFloatVal( const SgNode * s );
281816 
281817  // ******************************************
281818  // * Memory Pool / New / Delete
281819  // ******************************************
281820 
281821  public:
281823  static const unsigned pool_size; //
281825  static std::vector<unsigned char *> pools; //
281827  static SgFloatVal * next_node; //
281828 
281830  static unsigned long initializeStorageClassArray(SgFloatValStorageClass *); //
281831 
281833  static void clearMemoryPool(); //
281834  static void deleteMemoryPool(); //
281835 
281837  static void extendMemoryPoolForFileIO(); //
281838 
281840  static SgFloatVal * getPointerFromGlobalIndex(unsigned long); //
281842  static SgFloatVal * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
281843 
281845  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
281847  static void resetValidFreepointers(); //
281849  static unsigned long getNumberOfLastValidPointer(); //
281850 
281851 
281852 #if defined(INLINE_FUNCTIONS)
281853 
281854  inline void *operator new (size_t size);
281855 #else
281856 
281857  void *operator new (size_t size);
281858 #endif
281859 
281860  void operator delete (void* pointer, size_t size);
281861 
281862  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
281863  void operator delete (void* pointer)
281864  {
281865  // This is the generated delete operator...
281866  SgFloatVal::operator delete (pointer,sizeof(SgFloatVal));
281867  }
281868 
281870  static size_t numberOfNodes();
281871 
281873  static size_t memoryUsage();
281874 
281875  // End of scope which started in IR nodes specific code
281876  /* */
281877 
281878  /* name Internal Functions
281879  \brief Internal functions ... incomplete-documentation
281880 
281881  These functions have been made public as part of the design, but they are suggested for internal use
281882  or by particularly knowledgeable users for specialized tools or applications.
281883 
281884  \internal We could not make these private because they are required by user for special purposes. And
281885  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
281886 
281887  */
281888 
281889  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
281890  // overridden in every class by *generated* implementation
281892  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
281893  // MS: 06/28/02 container of names of variables or container indices
281894  // used used in the traversal to access AST successor nodes
281895  // overridden in every class by *generated* implementation
281898  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
281899 
281900  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
281901  // than all the vector copies. The implementation for these functions is generated for each class.
281903  virtual size_t get_numberOfTraversalSuccessors() override;
281905  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
281907  virtual size_t get_childIndex(SgNode *child) override;
281908 
281909 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
281910  // MS: 08/16/2002 method for generating RTI information
281912  virtual RTIReturnType roseRTI() override;
281913 #endif
281914  /* */
281915 
281916 
281917 
281918  /* name Deprecated Functions
281919  \brief Deprecated functions ... incomplete-documentation
281920 
281921  These functions have been deprecated from use.
281922  */
281923  /* */
281924 
281926  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
281927 
281928  // JJW (10/16/2008): Changed to a single function in Node.code, and put
281929  // getVariant() in #if 0 block to prevent confusing Doxygen
281930 #if 0
281931 
281932  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
281934  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
281935 #endif
281936  /* */
281937 
281938 
281939 
281940 
281941  public:
281942  /* name Traversal Support Functions
281943  \brief Traversal support functions ... incomplete-documentation
281944 
281945  These functions have been made public as part of the design, but they are suggested for internal use
281946  or by particularly knowledgable users for specialized tools or applications.
281947  */
281948  /* */
281949 
281950  // DQ (11/26/2005): Support for visitor pattern mechanims
281951  // (inferior to ROSE traversal mechanism, experimental).
281955 
281956  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
281958  virtual void accept (ROSE_VisitorPattern & visitor) override;
281959 
281960  // DQ (12/26/2005): Support for traversal based on the memory pool
281963  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
281964 
281967  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
281968 
281969  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
281970  // This traversal helps support internal tools that call static member functions.
281971  // note: this function operates on the memory pools.
281974  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
281975  /* */
281976 
281977 
281978  public:
281979  /* name Memory Allocation Functions
281980  \brief Memory allocations functions ... incomplete-documentation
281981 
281982  These functions have been made public as part of the design, but they are suggested for internal use
281983  or by particularly knowledgable users for specialized tools or applications.
281984  */
281985  /* */
281986 
281997  virtual bool isInMemoryPool() override;
281998 
282009  virtual void checkDataMemberPointersIfInMemoryPool() override;
282010 
282011  // DQ (4/30/2006): Modified to be a const function.
282026  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
282027 
282037  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
282038 
282050  virtual long getChildIndex( SgNode* childNode ) const override;
282051 
282052  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
282053  // comment here (changed to be a C style comment and not be a doxygen comment).
282054  /* \brief Constructor for use by AST File I/O Mechanism
282055 
282056  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
282057  which obtained via fast binary file I/O from disk.
282058  */
282059  // SgFloatVal( SgFloatValStorageClass& source );
282060 
282061 
282062 
282063 
282064 
282065  // JH (10/24/2005): methods added to support the ast file IO
282066  private:
282067 
282068  /* name AST Memory Allocation Support Functions
282069  \brief Memory allocations support....
282070 
282071  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
282072  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
282073  and support the AST File I/O Mechanism.
282074  */
282075  /* */
282076 
282077  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
282078  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
282079  that I use the same type everywhere, if any changes are made. THe second one declares the type
282080  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
282081  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
282082  a correspinding one in the AST_FILE_IO class!
282083  */
282084  // DQ (9/2/2015): This typedef is no longer used, we can't define the
282085  // comment here (changed to be a C style comment and not be a doxygen comment).
282086  /* \brief Typedef used for low level memory access.
282087  */
282088  // typedef unsigned char* TestType;
282089 
282090  // DQ (9/2/2015): This typedef is no longer used, we can't define the
282091  // comment here (changed to be a C style comment and not be a doxygen comment).
282092  /* \brief Typedef used to hold memory addresses as values.
282093  */
282094  // typedef unsigned long AddressType;
282095 
282096 
282097 
282098  // necessary, to have direct access to the p_freepointer and the private methods !
282100  friend class AST_FILE_IO;
282101 
282103  friend class SgFloatValStorageClass;
282104 
282106  friend class AstSpecificDataManagingClass;
282107 
282109  friend class AstSpecificDataManagingClassStorageClass;
282110 
282111  public:
282113  SgFloatVal( const SgFloatValStorageClass& source );
282114 
282115  // private: // JJW hack
282116  /*
282117  name AST Memory Allocation Support Variables
282118  Memory allocations support variables
282119 
282120  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
282121  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
282122  and support the AST File I/O Mechanism.
282123  */
282124  /* */
282125 
282126  public:
282127 
282128  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
282129  // to current node (so that it will work cleanly with build functions to specify patterns).
282130  // virtual SgNode* addRegExpAttribute();
282136  SgFloatVal* addRegExpAttribute(std::string s, AstRegExAttribute* a);
282137 
282138 // *** COMMON CODE SECTION ENDS HERE ***
282139 
282140 
282141 // End of memberFunctionString
282142 // Start of memberFunctionString
282143 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
282144 
282145  // the generated cast function
282146  // friend ROSE_DLL_API SgFloatVal* isSgFloatVal ( SgNode* s );
282147 
282148  typedef SgValueExp base_node_type;
282149 
282150 
282151 // End of memberFunctionString
282152 // Start of memberFunctionString
282153 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
282154 
282155  SgType* get_type() const override;
282156 
282157 
282158 // End of memberFunctionString
282159 // Start of memberFunctionString
282160 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
282161 
282162  void post_construction_initialization() override;
282163 
282164 
282165 // End of memberFunctionString
282166 
282167  public:
282168  float get_value() const;
282169  void set_value(float value);
282170 
282171  public:
282172  std::string get_valueString() const;
282173  void set_valueString(std::string valueString);
282174 
282175 
282176  public:
282177  virtual ~SgFloatVal();
282178 
282179 
282180  public:
282181  SgFloatVal(Sg_File_Info* startOfConstruct , float value = 0.0, std::string valueString = "");
282182  SgFloatVal(float value, std::string valueString);
282183 
282184  protected:
282185 // Start of memberFunctionString
282186 float p_value;
282187 
282188 // End of memberFunctionString
282189 // Start of memberFunctionString
282190 std::string p_valueString;
282191 
282192 // End of memberFunctionString
282193 
282194 
282195 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
282196 
282197 
282198  };
282199 #endif
282200 
282201 // postdeclarations for SgFloatVal
282202 
282203 /* #line 282204 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
282204 
282205 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
282206 
282207 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
282208 
282209 
282210 /* #line 282211 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
282211 
282212 
282213 
282214 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
282215 
282216 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
282217 // This code is automatically generated for each
282218 // terminal and non-terminal within the defined
282219 // grammar. There is a simple way to change the
282220 // code to fix bugs etc. See the ROSE README file
282221 // for directions.
282222 
282223 // tps: (02/22/2010): Adding DLL export requirements
282224 #include "rosedll.h"
282225 
282226 // predeclarations for SgDoubleVal
282227 
282228 /* #line 282229 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
282229 
282230 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
282231 
282232 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
282233 
282234 #if 1
282235 // Class Definition for SgDoubleVal
282236 class ROSE_DLL_API SgDoubleVal : public SgValueExp
282237  {
282238  public:
282239 
282240 
282241 /* #line 282242 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
282242 
282243  virtual SgNode* copy ( SgCopyHelp& help) const override;
282244 // Start of memberFunctionString
282245 /* #line 676 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
282246 
282247 
282248 
282249 // End of memberFunctionString
282250 // Start of memberFunctionString
282251 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
282252 
282253 // *** COMMON CODE SECTION BEGINS HERE ***
282254 
282255  public:
282256 
282257  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
282258  // and not required which is required to match the other aspects of the copy mechanism code generation.
282259  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
282260  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
282261  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
282262  // virtual SgNode* copy ( const SgCopyHelp & help) const;
282263 
282265  virtual std::string class_name() const override;
282266 
282268  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
282269 
282271  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
282272  // static const VariantT static_variant = V_SgDoubleVal;
282273  enum { static_variant = V_SgDoubleVal };
282274 
282275  /* the generated cast function */
282277  ROSE_DLL_API friend SgDoubleVal* isSgDoubleVal( SgNode * s );
282278 
282280  ROSE_DLL_API friend const SgDoubleVal* isSgDoubleVal( const SgNode * s );
282281 
282282  // ******************************************
282283  // * Memory Pool / New / Delete
282284  // ******************************************
282285 
282286  public:
282288  static const unsigned pool_size; //
282290  static std::vector<unsigned char *> pools; //
282292  static SgDoubleVal * next_node; //
282293 
282295  static unsigned long initializeStorageClassArray(SgDoubleValStorageClass *); //
282296 
282298  static void clearMemoryPool(); //
282299  static void deleteMemoryPool(); //
282300 
282302  static void extendMemoryPoolForFileIO(); //
282303 
282305  static SgDoubleVal * getPointerFromGlobalIndex(unsigned long); //
282307  static SgDoubleVal * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
282308 
282310  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
282312  static void resetValidFreepointers(); //
282314  static unsigned long getNumberOfLastValidPointer(); //
282315 
282316 
282317 #if defined(INLINE_FUNCTIONS)
282318 
282319  inline void *operator new (size_t size);
282320 #else
282321 
282322  void *operator new (size_t size);
282323 #endif
282324 
282325  void operator delete (void* pointer, size_t size);
282326 
282327  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
282328  void operator delete (void* pointer)
282329  {
282330  // This is the generated delete operator...
282331  SgDoubleVal::operator delete (pointer,sizeof(SgDoubleVal));
282332  }
282333 
282335  static size_t numberOfNodes();
282336 
282338  static size_t memoryUsage();
282339 
282340  // End of scope which started in IR nodes specific code
282341  /* */
282342 
282343  /* name Internal Functions
282344  \brief Internal functions ... incomplete-documentation
282345 
282346  These functions have been made public as part of the design, but they are suggested for internal use
282347  or by particularly knowledgeable users for specialized tools or applications.
282348 
282349  \internal We could not make these private because they are required by user for special purposes. And
282350  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
282351 
282352  */
282353 
282354  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
282355  // overridden in every class by *generated* implementation
282357  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
282358  // MS: 06/28/02 container of names of variables or container indices
282359  // used used in the traversal to access AST successor nodes
282360  // overridden in every class by *generated* implementation
282363  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
282364 
282365  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
282366  // than all the vector copies. The implementation for these functions is generated for each class.
282368  virtual size_t get_numberOfTraversalSuccessors() override;
282370  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
282372  virtual size_t get_childIndex(SgNode *child) override;
282373 
282374 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
282375  // MS: 08/16/2002 method for generating RTI information
282377  virtual RTIReturnType roseRTI() override;
282378 #endif
282379  /* */
282380 
282381 
282382 
282383  /* name Deprecated Functions
282384  \brief Deprecated functions ... incomplete-documentation
282385 
282386  These functions have been deprecated from use.
282387  */
282388  /* */
282389 
282391  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
282392 
282393  // JJW (10/16/2008): Changed to a single function in Node.code, and put
282394  // getVariant() in #if 0 block to prevent confusing Doxygen
282395 #if 0
282396 
282397  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
282399  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
282400 #endif
282401  /* */
282402 
282403 
282404 
282405 
282406  public:
282407  /* name Traversal Support Functions
282408  \brief Traversal support functions ... incomplete-documentation
282409 
282410  These functions have been made public as part of the design, but they are suggested for internal use
282411  or by particularly knowledgable users for specialized tools or applications.
282412  */
282413  /* */
282414 
282415  // DQ (11/26/2005): Support for visitor pattern mechanims
282416  // (inferior to ROSE traversal mechanism, experimental).
282420 
282421  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
282423  virtual void accept (ROSE_VisitorPattern & visitor) override;
282424 
282425  // DQ (12/26/2005): Support for traversal based on the memory pool
282428  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
282429 
282432  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
282433 
282434  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
282435  // This traversal helps support internal tools that call static member functions.
282436  // note: this function operates on the memory pools.
282439  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
282440  /* */
282441 
282442 
282443  public:
282444  /* name Memory Allocation Functions
282445  \brief Memory allocations functions ... incomplete-documentation
282446 
282447  These functions have been made public as part of the design, but they are suggested for internal use
282448  or by particularly knowledgable users for specialized tools or applications.
282449  */
282450  /* */
282451 
282462  virtual bool isInMemoryPool() override;
282463 
282474  virtual void checkDataMemberPointersIfInMemoryPool() override;
282475 
282476  // DQ (4/30/2006): Modified to be a const function.
282491  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
282492 
282502  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
282503 
282515  virtual long getChildIndex( SgNode* childNode ) const override;
282516 
282517  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
282518  // comment here (changed to be a C style comment and not be a doxygen comment).
282519  /* \brief Constructor for use by AST File I/O Mechanism
282520 
282521  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
282522  which obtained via fast binary file I/O from disk.
282523  */
282524  // SgDoubleVal( SgDoubleValStorageClass& source );
282525 
282526 
282527 
282528 
282529 
282530  // JH (10/24/2005): methods added to support the ast file IO
282531  private:
282532 
282533  /* name AST Memory Allocation Support Functions
282534  \brief Memory allocations support....
282535 
282536  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
282537  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
282538  and support the AST File I/O Mechanism.
282539  */
282540  /* */
282541 
282542  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
282543  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
282544  that I use the same type everywhere, if any changes are made. THe second one declares the type
282545  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
282546  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
282547  a correspinding one in the AST_FILE_IO class!
282548  */
282549  // DQ (9/2/2015): This typedef is no longer used, we can't define the
282550  // comment here (changed to be a C style comment and not be a doxygen comment).
282551  /* \brief Typedef used for low level memory access.
282552  */
282553  // typedef unsigned char* TestType;
282554 
282555  // DQ (9/2/2015): This typedef is no longer used, we can't define the
282556  // comment here (changed to be a C style comment and not be a doxygen comment).
282557  /* \brief Typedef used to hold memory addresses as values.
282558  */
282559  // typedef unsigned long AddressType;
282560 
282561 
282562 
282563  // necessary, to have direct access to the p_freepointer and the private methods !
282565  friend class AST_FILE_IO;
282566 
282568  friend class SgDoubleValStorageClass;
282569 
282571  friend class AstSpecificDataManagingClass;
282572 
282574  friend class AstSpecificDataManagingClassStorageClass;
282575 
282576  public:
282578  SgDoubleVal( const SgDoubleValStorageClass& source );
282579 
282580  // private: // JJW hack
282581  /*
282582  name AST Memory Allocation Support Variables
282583  Memory allocations support variables
282584 
282585  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
282586  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
282587  and support the AST File I/O Mechanism.
282588  */
282589  /* */
282590 
282591  public:
282592 
282593  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
282594  // to current node (so that it will work cleanly with build functions to specify patterns).
282595  // virtual SgNode* addRegExpAttribute();
282601  SgDoubleVal* addRegExpAttribute(std::string s, AstRegExAttribute* a);
282602 
282603 // *** COMMON CODE SECTION ENDS HERE ***
282604 
282605 
282606 // End of memberFunctionString
282607 // Start of memberFunctionString
282608 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
282609 
282610  // the generated cast function
282611  // friend ROSE_DLL_API SgDoubleVal* isSgDoubleVal ( SgNode* s );
282612 
282613  typedef SgValueExp base_node_type;
282614 
282615 
282616 // End of memberFunctionString
282617 // Start of memberFunctionString
282618 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
282619 
282620  SgType* get_type() const override;
282621 
282622 
282623 // End of memberFunctionString
282624 // Start of memberFunctionString
282625 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
282626 
282627  void post_construction_initialization() override;
282628 
282629 
282630 // End of memberFunctionString
282631 
282632  public:
282633  double get_value() const;
282634  void set_value(double value);
282635 
282636  public:
282637  std::string get_valueString() const;
282638  void set_valueString(std::string valueString);
282639 
282640 
282641  public:
282642  virtual ~SgDoubleVal();
282643 
282644 
282645  public:
282646  SgDoubleVal(Sg_File_Info* startOfConstruct , double value = 0.0, std::string valueString = "");
282647  SgDoubleVal(double value, std::string valueString);
282648 
282649  protected:
282650 // Start of memberFunctionString
282651 double p_value;
282652 
282653 // End of memberFunctionString
282654 // Start of memberFunctionString
282655 std::string p_valueString;
282656 
282657 // End of memberFunctionString
282658 
282659 
282660 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
282661 
282662 
282663  };
282664 #endif
282665 
282666 // postdeclarations for SgDoubleVal
282667 
282668 /* #line 282669 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
282669 
282670 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
282671 
282672 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
282673 
282674 
282675 /* #line 282676 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
282676 
282677 
282678 
282679 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
282680 
282681 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
282682 // This code is automatically generated for each
282683 // terminal and non-terminal within the defined
282684 // grammar. There is a simple way to change the
282685 // code to fix bugs etc. See the ROSE README file
282686 // for directions.
282687 
282688 // tps: (02/22/2010): Adding DLL export requirements
282689 #include "rosedll.h"
282690 
282691 // predeclarations for SgLongDoubleVal
282692 
282693 /* #line 282694 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
282694 
282695 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
282696 
282697 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
282698 
282699 #if 1
282700 // Class Definition for SgLongDoubleVal
282701 class ROSE_DLL_API SgLongDoubleVal : public SgValueExp
282702  {
282703  public:
282704 
282705 
282706 /* #line 282707 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
282707 
282708  virtual SgNode* copy ( SgCopyHelp& help) const override;
282709 // Start of memberFunctionString
282710 /* #line 680 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
282711 
282712 
282713 
282714 // End of memberFunctionString
282715 // Start of memberFunctionString
282716 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
282717 
282718 // *** COMMON CODE SECTION BEGINS HERE ***
282719 
282720  public:
282721 
282722  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
282723  // and not required which is required to match the other aspects of the copy mechanism code generation.
282724  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
282725  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
282726  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
282727  // virtual SgNode* copy ( const SgCopyHelp & help) const;
282728 
282730  virtual std::string class_name() const override;
282731 
282733  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
282734 
282736  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
282737  // static const VariantT static_variant = V_SgLongDoubleVal;
282738  enum { static_variant = V_SgLongDoubleVal };
282739 
282740  /* the generated cast function */
282742  ROSE_DLL_API friend SgLongDoubleVal* isSgLongDoubleVal( SgNode * s );
282743 
282745  ROSE_DLL_API friend const SgLongDoubleVal* isSgLongDoubleVal( const SgNode * s );
282746 
282747  // ******************************************
282748  // * Memory Pool / New / Delete
282749  // ******************************************
282750 
282751  public:
282753  static const unsigned pool_size; //
282755  static std::vector<unsigned char *> pools; //
282757  static SgLongDoubleVal * next_node; //
282758 
282760  static unsigned long initializeStorageClassArray(SgLongDoubleValStorageClass *); //
282761 
282763  static void clearMemoryPool(); //
282764  static void deleteMemoryPool(); //
282765 
282767  static void extendMemoryPoolForFileIO(); //
282768 
282770  static SgLongDoubleVal * getPointerFromGlobalIndex(unsigned long); //
282772  static SgLongDoubleVal * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
282773 
282775  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
282777  static void resetValidFreepointers(); //
282779  static unsigned long getNumberOfLastValidPointer(); //
282780 
282781 
282782 #if defined(INLINE_FUNCTIONS)
282783 
282784  inline void *operator new (size_t size);
282785 #else
282786 
282787  void *operator new (size_t size);
282788 #endif
282789 
282790  void operator delete (void* pointer, size_t size);
282791 
282792  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
282793  void operator delete (void* pointer)
282794  {
282795  // This is the generated delete operator...
282796  SgLongDoubleVal::operator delete (pointer,sizeof(SgLongDoubleVal));
282797  }
282798 
282800  static size_t numberOfNodes();
282801 
282803  static size_t memoryUsage();
282804 
282805  // End of scope which started in IR nodes specific code
282806  /* */
282807 
282808  /* name Internal Functions
282809  \brief Internal functions ... incomplete-documentation
282810 
282811  These functions have been made public as part of the design, but they are suggested for internal use
282812  or by particularly knowledgeable users for specialized tools or applications.
282813 
282814  \internal We could not make these private because they are required by user for special purposes. And
282815  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
282816 
282817  */
282818 
282819  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
282820  // overridden in every class by *generated* implementation
282822  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
282823  // MS: 06/28/02 container of names of variables or container indices
282824  // used used in the traversal to access AST successor nodes
282825  // overridden in every class by *generated* implementation
282828  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
282829 
282830  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
282831  // than all the vector copies. The implementation for these functions is generated for each class.
282833  virtual size_t get_numberOfTraversalSuccessors() override;
282835  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
282837  virtual size_t get_childIndex(SgNode *child) override;
282838 
282839 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
282840  // MS: 08/16/2002 method for generating RTI information
282842  virtual RTIReturnType roseRTI() override;
282843 #endif
282844  /* */
282845 
282846 
282847 
282848  /* name Deprecated Functions
282849  \brief Deprecated functions ... incomplete-documentation
282850 
282851  These functions have been deprecated from use.
282852  */
282853  /* */
282854 
282856  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
282857 
282858  // JJW (10/16/2008): Changed to a single function in Node.code, and put
282859  // getVariant() in #if 0 block to prevent confusing Doxygen
282860 #if 0
282861 
282862  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
282864  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
282865 #endif
282866  /* */
282867 
282868 
282869 
282870 
282871  public:
282872  /* name Traversal Support Functions
282873  \brief Traversal support functions ... incomplete-documentation
282874 
282875  These functions have been made public as part of the design, but they are suggested for internal use
282876  or by particularly knowledgable users for specialized tools or applications.
282877  */
282878  /* */
282879 
282880  // DQ (11/26/2005): Support for visitor pattern mechanims
282881  // (inferior to ROSE traversal mechanism, experimental).
282885 
282886  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
282888  virtual void accept (ROSE_VisitorPattern & visitor) override;
282889 
282890  // DQ (12/26/2005): Support for traversal based on the memory pool
282893  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
282894 
282897  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
282898 
282899  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
282900  // This traversal helps support internal tools that call static member functions.
282901  // note: this function operates on the memory pools.
282904  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
282905  /* */
282906 
282907 
282908  public:
282909  /* name Memory Allocation Functions
282910  \brief Memory allocations functions ... incomplete-documentation
282911 
282912  These functions have been made public as part of the design, but they are suggested for internal use
282913  or by particularly knowledgable users for specialized tools or applications.
282914  */
282915  /* */
282916 
282927  virtual bool isInMemoryPool() override;
282928 
282939  virtual void checkDataMemberPointersIfInMemoryPool() override;
282940 
282941  // DQ (4/30/2006): Modified to be a const function.
282956  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
282957 
282967  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
282968 
282980  virtual long getChildIndex( SgNode* childNode ) const override;
282981 
282982  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
282983  // comment here (changed to be a C style comment and not be a doxygen comment).
282984  /* \brief Constructor for use by AST File I/O Mechanism
282985 
282986  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
282987  which obtained via fast binary file I/O from disk.
282988  */
282989  // SgLongDoubleVal( SgLongDoubleValStorageClass& source );
282990 
282991 
282992 
282993 
282994 
282995  // JH (10/24/2005): methods added to support the ast file IO
282996  private:
282997 
282998  /* name AST Memory Allocation Support Functions
282999  \brief Memory allocations support....
283000 
283001  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
283002  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
283003  and support the AST File I/O Mechanism.
283004  */
283005  /* */
283006 
283007  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
283008  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
283009  that I use the same type everywhere, if any changes are made. THe second one declares the type
283010  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
283011  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
283012  a correspinding one in the AST_FILE_IO class!
283013  */
283014  // DQ (9/2/2015): This typedef is no longer used, we can't define the
283015  // comment here (changed to be a C style comment and not be a doxygen comment).
283016  /* \brief Typedef used for low level memory access.
283017  */
283018  // typedef unsigned char* TestType;
283019 
283020  // DQ (9/2/2015): This typedef is no longer used, we can't define the
283021  // comment here (changed to be a C style comment and not be a doxygen comment).
283022  /* \brief Typedef used to hold memory addresses as values.
283023  */
283024  // typedef unsigned long AddressType;
283025 
283026 
283027 
283028  // necessary, to have direct access to the p_freepointer and the private methods !
283030  friend class AST_FILE_IO;
283031 
283033  friend class SgLongDoubleValStorageClass;
283034 
283036  friend class AstSpecificDataManagingClass;
283037 
283039  friend class AstSpecificDataManagingClassStorageClass;
283040 
283041  public:
283043  SgLongDoubleVal( const SgLongDoubleValStorageClass& source );
283044 
283045  // private: // JJW hack
283046  /*
283047  name AST Memory Allocation Support Variables
283048  Memory allocations support variables
283049 
283050  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
283051  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
283052  and support the AST File I/O Mechanism.
283053  */
283054  /* */
283055 
283056  public:
283057 
283058  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
283059  // to current node (so that it will work cleanly with build functions to specify patterns).
283060  // virtual SgNode* addRegExpAttribute();
283067 
283068 // *** COMMON CODE SECTION ENDS HERE ***
283069 
283070 
283071 // End of memberFunctionString
283072 // Start of memberFunctionString
283073 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
283074 
283075  // the generated cast function
283076  // friend ROSE_DLL_API SgLongDoubleVal* isSgLongDoubleVal ( SgNode* s );
283077 
283078  typedef SgValueExp base_node_type;
283079 
283080 
283081 // End of memberFunctionString
283082 // Start of memberFunctionString
283083 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
283084 
283085  SgType* get_type() const override;
283086 
283087 
283088 // End of memberFunctionString
283089 // Start of memberFunctionString
283090 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
283091 
283092  void post_construction_initialization() override;
283093 
283094 
283095 // End of memberFunctionString
283096 
283097  public:
283098  long double get_value() const;
283099  void set_value(long double value);
283100 
283101  public:
283102  std::string get_valueString() const;
283103  void set_valueString(std::string valueString);
283104 
283105 
283106  public:
283107  virtual ~SgLongDoubleVal();
283108 
283109 
283110  public:
283111  SgLongDoubleVal(Sg_File_Info* startOfConstruct , long double value = 0.0, std::string valueString = "");
283112  SgLongDoubleVal(long double value, std::string valueString);
283113 
283114  protected:
283115 // Start of memberFunctionString
283116 long double p_value;
283117 
283118 // End of memberFunctionString
283119 // Start of memberFunctionString
283120 std::string p_valueString;
283121 
283122 // End of memberFunctionString
283123 
283124 
283125 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
283126 
283127 
283128  };
283129 #endif
283130 
283131 // postdeclarations for SgLongDoubleVal
283132 
283133 /* #line 283134 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
283134 
283135 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
283136 
283137 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
283138 
283139 
283140 /* #line 283141 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
283141 
283142 
283143 
283144 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
283145 
283146 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
283147 // This code is automatically generated for each
283148 // terminal and non-terminal within the defined
283149 // grammar. There is a simple way to change the
283150 // code to fix bugs etc. See the ROSE README file
283151 // for directions.
283152 
283153 // tps: (02/22/2010): Adding DLL export requirements
283154 #include "rosedll.h"
283155 
283156 // predeclarations for SgComplexVal
283157 
283158 /* #line 283159 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
283159 
283160 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
283161 
283162 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
283163 
283164 #if 1
283165 // Class Definition for SgComplexVal
283166 class ROSE_DLL_API SgComplexVal : public SgValueExp
283167  {
283168  public:
283169 
283170 
283171 /* #line 283172 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
283172 
283173  virtual SgNode* copy ( SgCopyHelp& help) const override;
283174 // Start of memberFunctionString
283175 /* #line 699 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
283176 
283177 
283178 
283179 // End of memberFunctionString
283180 // Start of memberFunctionString
283181 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
283182 
283183 // *** COMMON CODE SECTION BEGINS HERE ***
283184 
283185  public:
283186 
283187  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
283188  // and not required which is required to match the other aspects of the copy mechanism code generation.
283189  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
283190  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
283191  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
283192  // virtual SgNode* copy ( const SgCopyHelp & help) const;
283193 
283195  virtual std::string class_name() const override;
283196 
283198  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
283199 
283201  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
283202  // static const VariantT static_variant = V_SgComplexVal;
283203  enum { static_variant = V_SgComplexVal };
283204 
283205  /* the generated cast function */
283207  ROSE_DLL_API friend SgComplexVal* isSgComplexVal( SgNode * s );
283208 
283210  ROSE_DLL_API friend const SgComplexVal* isSgComplexVal( const SgNode * s );
283211 
283212  // ******************************************
283213  // * Memory Pool / New / Delete
283214  // ******************************************
283215 
283216  public:
283218  static const unsigned pool_size; //
283220  static std::vector<unsigned char *> pools; //
283222  static SgComplexVal * next_node; //
283223 
283225  static unsigned long initializeStorageClassArray(SgComplexValStorageClass *); //
283226 
283228  static void clearMemoryPool(); //
283229  static void deleteMemoryPool(); //
283230 
283232  static void extendMemoryPoolForFileIO(); //
283233 
283235  static SgComplexVal * getPointerFromGlobalIndex(unsigned long); //
283237  static SgComplexVal * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
283238 
283240  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
283242  static void resetValidFreepointers(); //
283244  static unsigned long getNumberOfLastValidPointer(); //
283245 
283246 
283247 #if defined(INLINE_FUNCTIONS)
283248 
283249  inline void *operator new (size_t size);
283250 #else
283251 
283252  void *operator new (size_t size);
283253 #endif
283254 
283255  void operator delete (void* pointer, size_t size);
283256 
283257  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
283258  void operator delete (void* pointer)
283259  {
283260  // This is the generated delete operator...
283261  SgComplexVal::operator delete (pointer,sizeof(SgComplexVal));
283262  }
283263 
283265  static size_t numberOfNodes();
283266 
283268  static size_t memoryUsage();
283269 
283270  // End of scope which started in IR nodes specific code
283271  /* */
283272 
283273  /* name Internal Functions
283274  \brief Internal functions ... incomplete-documentation
283275 
283276  These functions have been made public as part of the design, but they are suggested for internal use
283277  or by particularly knowledgeable users for specialized tools or applications.
283278 
283279  \internal We could not make these private because they are required by user for special purposes. And
283280  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
283281 
283282  */
283283 
283284  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
283285  // overridden in every class by *generated* implementation
283287  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
283288  // MS: 06/28/02 container of names of variables or container indices
283289  // used used in the traversal to access AST successor nodes
283290  // overridden in every class by *generated* implementation
283293  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
283294 
283295  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
283296  // than all the vector copies. The implementation for these functions is generated for each class.
283298  virtual size_t get_numberOfTraversalSuccessors() override;
283300  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
283302  virtual size_t get_childIndex(SgNode *child) override;
283303 
283304 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
283305  // MS: 08/16/2002 method for generating RTI information
283307  virtual RTIReturnType roseRTI() override;
283308 #endif
283309  /* */
283310 
283311 
283312 
283313  /* name Deprecated Functions
283314  \brief Deprecated functions ... incomplete-documentation
283315 
283316  These functions have been deprecated from use.
283317  */
283318  /* */
283319 
283321  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
283322 
283323  // JJW (10/16/2008): Changed to a single function in Node.code, and put
283324  // getVariant() in #if 0 block to prevent confusing Doxygen
283325 #if 0
283326 
283327  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
283329  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
283330 #endif
283331  /* */
283332 
283333 
283334 
283335 
283336  public:
283337  /* name Traversal Support Functions
283338  \brief Traversal support functions ... incomplete-documentation
283339 
283340  These functions have been made public as part of the design, but they are suggested for internal use
283341  or by particularly knowledgable users for specialized tools or applications.
283342  */
283343  /* */
283344 
283345  // DQ (11/26/2005): Support for visitor pattern mechanims
283346  // (inferior to ROSE traversal mechanism, experimental).
283350 
283351  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
283353  virtual void accept (ROSE_VisitorPattern & visitor) override;
283354 
283355  // DQ (12/26/2005): Support for traversal based on the memory pool
283358  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
283359 
283362  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
283363 
283364  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
283365  // This traversal helps support internal tools that call static member functions.
283366  // note: this function operates on the memory pools.
283369  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
283370  /* */
283371 
283372 
283373  public:
283374  /* name Memory Allocation Functions
283375  \brief Memory allocations functions ... incomplete-documentation
283376 
283377  These functions have been made public as part of the design, but they are suggested for internal use
283378  or by particularly knowledgable users for specialized tools or applications.
283379  */
283380  /* */
283381 
283392  virtual bool isInMemoryPool() override;
283393 
283404  virtual void checkDataMemberPointersIfInMemoryPool() override;
283405 
283406  // DQ (4/30/2006): Modified to be a const function.
283421  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
283422 
283432  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
283433 
283445  virtual long getChildIndex( SgNode* childNode ) const override;
283446 
283447  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
283448  // comment here (changed to be a C style comment and not be a doxygen comment).
283449  /* \brief Constructor for use by AST File I/O Mechanism
283450 
283451  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
283452  which obtained via fast binary file I/O from disk.
283453  */
283454  // SgComplexVal( SgComplexValStorageClass& source );
283455 
283456 
283457 
283458 
283459 
283460  // JH (10/24/2005): methods added to support the ast file IO
283461  private:
283462 
283463  /* name AST Memory Allocation Support Functions
283464  \brief Memory allocations support....
283465 
283466  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
283467  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
283468  and support the AST File I/O Mechanism.
283469  */
283470  /* */
283471 
283472  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
283473  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
283474  that I use the same type everywhere, if any changes are made. THe second one declares the type
283475  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
283476  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
283477  a correspinding one in the AST_FILE_IO class!
283478  */
283479  // DQ (9/2/2015): This typedef is no longer used, we can't define the
283480  // comment here (changed to be a C style comment and not be a doxygen comment).
283481  /* \brief Typedef used for low level memory access.
283482  */
283483  // typedef unsigned char* TestType;
283484 
283485  // DQ (9/2/2015): This typedef is no longer used, we can't define the
283486  // comment here (changed to be a C style comment and not be a doxygen comment).
283487  /* \brief Typedef used to hold memory addresses as values.
283488  */
283489  // typedef unsigned long AddressType;
283490 
283491 
283492 
283493  // necessary, to have direct access to the p_freepointer and the private methods !
283495  friend class AST_FILE_IO;
283496 
283498  friend class SgComplexValStorageClass;
283499 
283501  friend class AstSpecificDataManagingClass;
283502 
283504  friend class AstSpecificDataManagingClassStorageClass;
283505 
283506  public:
283508  SgComplexVal( const SgComplexValStorageClass& source );
283509 
283510  // private: // JJW hack
283511  /*
283512  name AST Memory Allocation Support Variables
283513  Memory allocations support variables
283514 
283515  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
283516  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
283517  and support the AST File I/O Mechanism.
283518  */
283519  /* */
283520 
283521  public:
283522 
283523  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
283524  // to current node (so that it will work cleanly with build functions to specify patterns).
283525  // virtual SgNode* addRegExpAttribute();
283531  SgComplexVal* addRegExpAttribute(std::string s, AstRegExAttribute* a);
283532 
283533 // *** COMMON CODE SECTION ENDS HERE ***
283534 
283535 
283536 // End of memberFunctionString
283537 // Start of memberFunctionString
283538 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
283539 
283540  // the generated cast function
283541  // friend ROSE_DLL_API SgComplexVal* isSgComplexVal ( SgNode* s );
283542 
283543  typedef SgValueExp base_node_type;
283544 
283545 
283546 // End of memberFunctionString
283547 // Start of memberFunctionString
283548 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
283549 
283550  SgType* get_type() const override;
283551 
283552 
283553 // End of memberFunctionString
283554 // Start of memberFunctionString
283555 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
283556 
283557  void post_construction_initialization() override;
283558 
283559 
283560 // End of memberFunctionString
283561 
283562  public:
283563  SgValueExp* get_real_value() const;
283564  void set_real_value(SgValueExp* real_value);
283565 
283566  public:
283567  SgValueExp* get_imaginary_value() const;
283568  void set_imaginary_value(SgValueExp* imaginary_value);
283569 
283570  public:
283571  SgType* get_precisionType() const;
283572  void set_precisionType(SgType* precisionType);
283573 
283574  public:
283575  std::string get_valueString() const;
283576  void set_valueString(std::string valueString);
283577 
283578 
283579  public:
283580  virtual ~SgComplexVal();
283581 
283582 
283583  public:
283584  SgComplexVal(Sg_File_Info* startOfConstruct , SgValueExp* real_value = NULL, SgValueExp* imaginary_value = NULL, SgType* precisionType = NULL, std::string valueString = "");
283585  SgComplexVal(SgValueExp* real_value, SgValueExp* imaginary_value, SgType* precisionType, std::string valueString);
283586 
283587  protected:
283588 // Start of memberFunctionString
283589 SgValueExp* p_real_value;
283590 
283591 // End of memberFunctionString
283592 // Start of memberFunctionString
283593 SgValueExp* p_imaginary_value;
283594 
283595 // End of memberFunctionString
283596 // Start of memberFunctionString
283597 SgType* p_precisionType;
283598 
283599 // End of memberFunctionString
283600 // Start of memberFunctionString
283601 std::string p_valueString;
283602 
283603 // End of memberFunctionString
283604 
283605 
283606 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
283607 
283608 
283609  };
283610 #endif
283611 
283612 // postdeclarations for SgComplexVal
283613 
283614 /* #line 283615 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
283615 
283616 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
283617 
283618 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
283619 
283620 
283621 /* #line 283622 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
283622 
283623 
283624 
283625 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
283626 
283627 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
283628 // This code is automatically generated for each
283629 // terminal and non-terminal within the defined
283630 // grammar. There is a simple way to change the
283631 // code to fix bugs etc. See the ROSE README file
283632 // for directions.
283633 
283634 // tps: (02/22/2010): Adding DLL export requirements
283635 #include "rosedll.h"
283636 
283637 // predeclarations for SgUpcThreads
283638 
283639 /* #line 283640 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
283640 
283641 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
283642 
283643 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
283644 
283645 #if 1
283646 // Class Definition for SgUpcThreads
283647 class ROSE_DLL_API SgUpcThreads : public SgValueExp
283648  {
283649  public:
283650 
283651 
283652 /* #line 283653 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
283653 
283654  virtual SgNode* copy ( SgCopyHelp& help) const override;
283655 // Start of memberFunctionString
283656 /* #line 705 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
283657 
283658 
283659 
283660 // End of memberFunctionString
283661 // Start of memberFunctionString
283662 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
283663 
283664 // *** COMMON CODE SECTION BEGINS HERE ***
283665 
283666  public:
283667 
283668  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
283669  // and not required which is required to match the other aspects of the copy mechanism code generation.
283670  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
283671  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
283672  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
283673  // virtual SgNode* copy ( const SgCopyHelp & help) const;
283674 
283676  virtual std::string class_name() const override;
283677 
283679  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
283680 
283682  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
283683  // static const VariantT static_variant = V_SgUpcThreads;
283684  enum { static_variant = V_SgUpcThreads };
283685 
283686  /* the generated cast function */
283688  ROSE_DLL_API friend SgUpcThreads* isSgUpcThreads( SgNode * s );
283689 
283691  ROSE_DLL_API friend const SgUpcThreads* isSgUpcThreads( const SgNode * s );
283692 
283693  // ******************************************
283694  // * Memory Pool / New / Delete
283695  // ******************************************
283696 
283697  public:
283699  static const unsigned pool_size; //
283701  static std::vector<unsigned char *> pools; //
283703  static SgUpcThreads * next_node; //
283704 
283706  static unsigned long initializeStorageClassArray(SgUpcThreadsStorageClass *); //
283707 
283709  static void clearMemoryPool(); //
283710  static void deleteMemoryPool(); //
283711 
283713  static void extendMemoryPoolForFileIO(); //
283714 
283716  static SgUpcThreads * getPointerFromGlobalIndex(unsigned long); //
283718  static SgUpcThreads * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
283719 
283721  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
283723  static void resetValidFreepointers(); //
283725  static unsigned long getNumberOfLastValidPointer(); //
283726 
283727 
283728 #if defined(INLINE_FUNCTIONS)
283729 
283730  inline void *operator new (size_t size);
283731 #else
283732 
283733  void *operator new (size_t size);
283734 #endif
283735 
283736  void operator delete (void* pointer, size_t size);
283737 
283738  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
283739  void operator delete (void* pointer)
283740  {
283741  // This is the generated delete operator...
283742  SgUpcThreads::operator delete (pointer,sizeof(SgUpcThreads));
283743  }
283744 
283746  static size_t numberOfNodes();
283747 
283749  static size_t memoryUsage();
283750 
283751  // End of scope which started in IR nodes specific code
283752  /* */
283753 
283754  /* name Internal Functions
283755  \brief Internal functions ... incomplete-documentation
283756 
283757  These functions have been made public as part of the design, but they are suggested for internal use
283758  or by particularly knowledgeable users for specialized tools or applications.
283759 
283760  \internal We could not make these private because they are required by user for special purposes. And
283761  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
283762 
283763  */
283764 
283765  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
283766  // overridden in every class by *generated* implementation
283768  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
283769  // MS: 06/28/02 container of names of variables or container indices
283770  // used used in the traversal to access AST successor nodes
283771  // overridden in every class by *generated* implementation
283774  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
283775 
283776  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
283777  // than all the vector copies. The implementation for these functions is generated for each class.
283779  virtual size_t get_numberOfTraversalSuccessors() override;
283781  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
283783  virtual size_t get_childIndex(SgNode *child) override;
283784 
283785 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
283786  // MS: 08/16/2002 method for generating RTI information
283788  virtual RTIReturnType roseRTI() override;
283789 #endif
283790  /* */
283791 
283792 
283793 
283794  /* name Deprecated Functions
283795  \brief Deprecated functions ... incomplete-documentation
283796 
283797  These functions have been deprecated from use.
283798  */
283799  /* */
283800 
283802  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
283803 
283804  // JJW (10/16/2008): Changed to a single function in Node.code, and put
283805  // getVariant() in #if 0 block to prevent confusing Doxygen
283806 #if 0
283807 
283808  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
283810  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
283811 #endif
283812  /* */
283813 
283814 
283815 
283816 
283817  public:
283818  /* name Traversal Support Functions
283819  \brief Traversal support functions ... incomplete-documentation
283820 
283821  These functions have been made public as part of the design, but they are suggested for internal use
283822  or by particularly knowledgable users for specialized tools or applications.
283823  */
283824  /* */
283825 
283826  // DQ (11/26/2005): Support for visitor pattern mechanims
283827  // (inferior to ROSE traversal mechanism, experimental).
283831 
283832  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
283834  virtual void accept (ROSE_VisitorPattern & visitor) override;
283835 
283836  // DQ (12/26/2005): Support for traversal based on the memory pool
283839  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
283840 
283843  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
283844 
283845  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
283846  // This traversal helps support internal tools that call static member functions.
283847  // note: this function operates on the memory pools.
283850  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
283851  /* */
283852 
283853 
283854  public:
283855  /* name Memory Allocation Functions
283856  \brief Memory allocations functions ... incomplete-documentation
283857 
283858  These functions have been made public as part of the design, but they are suggested for internal use
283859  or by particularly knowledgable users for specialized tools or applications.
283860  */
283861  /* */
283862 
283873  virtual bool isInMemoryPool() override;
283874 
283885  virtual void checkDataMemberPointersIfInMemoryPool() override;
283886 
283887  // DQ (4/30/2006): Modified to be a const function.
283902  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
283903 
283913  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
283914 
283926  virtual long getChildIndex( SgNode* childNode ) const override;
283927 
283928  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
283929  // comment here (changed to be a C style comment and not be a doxygen comment).
283930  /* \brief Constructor for use by AST File I/O Mechanism
283931 
283932  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
283933  which obtained via fast binary file I/O from disk.
283934  */
283935  // SgUpcThreads( SgUpcThreadsStorageClass& source );
283936 
283937 
283938 
283939 
283940 
283941  // JH (10/24/2005): methods added to support the ast file IO
283942  private:
283943 
283944  /* name AST Memory Allocation Support Functions
283945  \brief Memory allocations support....
283946 
283947  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
283948  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
283949  and support the AST File I/O Mechanism.
283950  */
283951  /* */
283952 
283953  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
283954  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
283955  that I use the same type everywhere, if any changes are made. THe second one declares the type
283956  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
283957  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
283958  a correspinding one in the AST_FILE_IO class!
283959  */
283960  // DQ (9/2/2015): This typedef is no longer used, we can't define the
283961  // comment here (changed to be a C style comment and not be a doxygen comment).
283962  /* \brief Typedef used for low level memory access.
283963  */
283964  // typedef unsigned char* TestType;
283965 
283966  // DQ (9/2/2015): This typedef is no longer used, we can't define the
283967  // comment here (changed to be a C style comment and not be a doxygen comment).
283968  /* \brief Typedef used to hold memory addresses as values.
283969  */
283970  // typedef unsigned long AddressType;
283971 
283972 
283973 
283974  // necessary, to have direct access to the p_freepointer and the private methods !
283976  friend class AST_FILE_IO;
283977 
283979  friend class SgUpcThreadsStorageClass;
283980 
283982  friend class AstSpecificDataManagingClass;
283983 
283985  friend class AstSpecificDataManagingClassStorageClass;
283986 
283987  public:
283989  SgUpcThreads( const SgUpcThreadsStorageClass& source );
283990 
283991  // private: // JJW hack
283992  /*
283993  name AST Memory Allocation Support Variables
283994  Memory allocations support variables
283995 
283996  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
283997  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
283998  and support the AST File I/O Mechanism.
283999  */
284000  /* */
284001 
284002  public:
284003 
284004  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
284005  // to current node (so that it will work cleanly with build functions to specify patterns).
284006  // virtual SgNode* addRegExpAttribute();
284012  SgUpcThreads* addRegExpAttribute(std::string s, AstRegExAttribute* a);
284013 
284014 // *** COMMON CODE SECTION ENDS HERE ***
284015 
284016 
284017 // End of memberFunctionString
284018 // Start of memberFunctionString
284019 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
284020 
284021  // the generated cast function
284022  // friend ROSE_DLL_API SgUpcThreads* isSgUpcThreads ( SgNode* s );
284023 
284024  typedef SgValueExp base_node_type;
284025 
284026 
284027 // End of memberFunctionString
284028 // Start of memberFunctionString
284029 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
284030 
284031  SgType* get_type() const override;
284032 
284033 
284034 // End of memberFunctionString
284035 // Start of memberFunctionString
284036 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
284037 
284038  void post_construction_initialization() override;
284039 
284040 
284041 // End of memberFunctionString
284042 
284043  public:
284044  int get_value() const;
284045  void set_value(int value);
284046 
284047  public:
284048  std::string get_valueString() const;
284049  void set_valueString(std::string valueString);
284050 
284051 
284052  public:
284053  virtual ~SgUpcThreads();
284054 
284055 
284056  public:
284057  SgUpcThreads(Sg_File_Info* startOfConstruct , int value = 0, std::string valueString = "");
284058  SgUpcThreads(int value, std::string valueString);
284059 
284060  protected:
284061 // Start of memberFunctionString
284062 int p_value;
284063 
284064 // End of memberFunctionString
284065 // Start of memberFunctionString
284066 std::string p_valueString;
284067 
284068 // End of memberFunctionString
284069 
284070 
284071 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
284072 
284073 
284074  };
284075 #endif
284076 
284077 // postdeclarations for SgUpcThreads
284078 
284079 /* #line 284080 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
284080 
284081 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
284082 
284083 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
284084 
284085 
284086 /* #line 284087 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
284087 
284088 
284089 
284090 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
284091 
284092 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
284093 // This code is automatically generated for each
284094 // terminal and non-terminal within the defined
284095 // grammar. There is a simple way to change the
284096 // code to fix bugs etc. See the ROSE README file
284097 // for directions.
284098 
284099 // tps: (02/22/2010): Adding DLL export requirements
284100 #include "rosedll.h"
284101 
284102 // predeclarations for SgUpcMythread
284103 
284104 /* #line 284105 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
284105 
284106 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
284107 
284108 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
284109 
284110 #if 1
284111 // Class Definition for SgUpcMythread
284112 class ROSE_DLL_API SgUpcMythread : public SgValueExp
284113  {
284114  public:
284115 
284116 
284117 /* #line 284118 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
284118 
284119  virtual SgNode* copy ( SgCopyHelp& help) const override;
284120 // Start of memberFunctionString
284121 /* #line 708 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
284122 
284123 
284124 
284125 // End of memberFunctionString
284126 // Start of memberFunctionString
284127 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
284128 
284129 // *** COMMON CODE SECTION BEGINS HERE ***
284130 
284131  public:
284132 
284133  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
284134  // and not required which is required to match the other aspects of the copy mechanism code generation.
284135  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
284136  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
284137  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
284138  // virtual SgNode* copy ( const SgCopyHelp & help) const;
284139 
284141  virtual std::string class_name() const override;
284142 
284144  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
284145 
284147  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
284148  // static const VariantT static_variant = V_SgUpcMythread;
284149  enum { static_variant = V_SgUpcMythread };
284150 
284151  /* the generated cast function */
284153  ROSE_DLL_API friend SgUpcMythread* isSgUpcMythread( SgNode * s );
284154 
284156  ROSE_DLL_API friend const SgUpcMythread* isSgUpcMythread( const SgNode * s );
284157 
284158  // ******************************************
284159  // * Memory Pool / New / Delete
284160  // ******************************************
284161 
284162  public:
284164  static const unsigned pool_size; //
284166  static std::vector<unsigned char *> pools; //
284168  static SgUpcMythread * next_node; //
284169 
284171  static unsigned long initializeStorageClassArray(SgUpcMythreadStorageClass *); //
284172 
284174  static void clearMemoryPool(); //
284175  static void deleteMemoryPool(); //
284176 
284178  static void extendMemoryPoolForFileIO(); //
284179 
284181  static SgUpcMythread * getPointerFromGlobalIndex(unsigned long); //
284183  static SgUpcMythread * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
284184 
284186  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
284188  static void resetValidFreepointers(); //
284190  static unsigned long getNumberOfLastValidPointer(); //
284191 
284192 
284193 #if defined(INLINE_FUNCTIONS)
284194 
284195  inline void *operator new (size_t size);
284196 #else
284197 
284198  void *operator new (size_t size);
284199 #endif
284200 
284201  void operator delete (void* pointer, size_t size);
284202 
284203  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
284204  void operator delete (void* pointer)
284205  {
284206  // This is the generated delete operator...
284207  SgUpcMythread::operator delete (pointer,sizeof(SgUpcMythread));
284208  }
284209 
284211  static size_t numberOfNodes();
284212 
284214  static size_t memoryUsage();
284215 
284216  // End of scope which started in IR nodes specific code
284217  /* */
284218 
284219  /* name Internal Functions
284220  \brief Internal functions ... incomplete-documentation
284221 
284222  These functions have been made public as part of the design, but they are suggested for internal use
284223  or by particularly knowledgeable users for specialized tools or applications.
284224 
284225  \internal We could not make these private because they are required by user for special purposes. And
284226  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
284227 
284228  */
284229 
284230  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
284231  // overridden in every class by *generated* implementation
284233  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
284234  // MS: 06/28/02 container of names of variables or container indices
284235  // used used in the traversal to access AST successor nodes
284236  // overridden in every class by *generated* implementation
284239  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
284240 
284241  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
284242  // than all the vector copies. The implementation for these functions is generated for each class.
284244  virtual size_t get_numberOfTraversalSuccessors() override;
284246  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
284248  virtual size_t get_childIndex(SgNode *child) override;
284249 
284250 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
284251  // MS: 08/16/2002 method for generating RTI information
284253  virtual RTIReturnType roseRTI() override;
284254 #endif
284255  /* */
284256 
284257 
284258 
284259  /* name Deprecated Functions
284260  \brief Deprecated functions ... incomplete-documentation
284261 
284262  These functions have been deprecated from use.
284263  */
284264  /* */
284265 
284267  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
284268 
284269  // JJW (10/16/2008): Changed to a single function in Node.code, and put
284270  // getVariant() in #if 0 block to prevent confusing Doxygen
284271 #if 0
284272 
284273  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
284275  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
284276 #endif
284277  /* */
284278 
284279 
284280 
284281 
284282  public:
284283  /* name Traversal Support Functions
284284  \brief Traversal support functions ... incomplete-documentation
284285 
284286  These functions have been made public as part of the design, but they are suggested for internal use
284287  or by particularly knowledgable users for specialized tools or applications.
284288  */
284289  /* */
284290 
284291  // DQ (11/26/2005): Support for visitor pattern mechanims
284292  // (inferior to ROSE traversal mechanism, experimental).
284296 
284297  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
284299  virtual void accept (ROSE_VisitorPattern & visitor) override;
284300 
284301  // DQ (12/26/2005): Support for traversal based on the memory pool
284304  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
284305 
284308  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
284309 
284310  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
284311  // This traversal helps support internal tools that call static member functions.
284312  // note: this function operates on the memory pools.
284315  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
284316  /* */
284317 
284318 
284319  public:
284320  /* name Memory Allocation Functions
284321  \brief Memory allocations functions ... incomplete-documentation
284322 
284323  These functions have been made public as part of the design, but they are suggested for internal use
284324  or by particularly knowledgable users for specialized tools or applications.
284325  */
284326  /* */
284327 
284338  virtual bool isInMemoryPool() override;
284339 
284350  virtual void checkDataMemberPointersIfInMemoryPool() override;
284351 
284352  // DQ (4/30/2006): Modified to be a const function.
284367  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
284368 
284378  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
284379 
284391  virtual long getChildIndex( SgNode* childNode ) const override;
284392 
284393  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
284394  // comment here (changed to be a C style comment and not be a doxygen comment).
284395  /* \brief Constructor for use by AST File I/O Mechanism
284396 
284397  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
284398  which obtained via fast binary file I/O from disk.
284399  */
284400  // SgUpcMythread( SgUpcMythreadStorageClass& source );
284401 
284402 
284403 
284404 
284405 
284406  // JH (10/24/2005): methods added to support the ast file IO
284407  private:
284408 
284409  /* name AST Memory Allocation Support Functions
284410  \brief Memory allocations support....
284411 
284412  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
284413  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
284414  and support the AST File I/O Mechanism.
284415  */
284416  /* */
284417 
284418  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
284419  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
284420  that I use the same type everywhere, if any changes are made. THe second one declares the type
284421  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
284422  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
284423  a correspinding one in the AST_FILE_IO class!
284424  */
284425  // DQ (9/2/2015): This typedef is no longer used, we can't define the
284426  // comment here (changed to be a C style comment and not be a doxygen comment).
284427  /* \brief Typedef used for low level memory access.
284428  */
284429  // typedef unsigned char* TestType;
284430 
284431  // DQ (9/2/2015): This typedef is no longer used, we can't define the
284432  // comment here (changed to be a C style comment and not be a doxygen comment).
284433  /* \brief Typedef used to hold memory addresses as values.
284434  */
284435  // typedef unsigned long AddressType;
284436 
284437 
284438 
284439  // necessary, to have direct access to the p_freepointer and the private methods !
284441  friend class AST_FILE_IO;
284442 
284444  friend class SgUpcMythreadStorageClass;
284445 
284447  friend class AstSpecificDataManagingClass;
284448 
284450  friend class AstSpecificDataManagingClassStorageClass;
284451 
284452  public:
284454  SgUpcMythread( const SgUpcMythreadStorageClass& source );
284455 
284456  // private: // JJW hack
284457  /*
284458  name AST Memory Allocation Support Variables
284459  Memory allocations support variables
284460 
284461  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
284462  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
284463  and support the AST File I/O Mechanism.
284464  */
284465  /* */
284466 
284467  public:
284468 
284469  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
284470  // to current node (so that it will work cleanly with build functions to specify patterns).
284471  // virtual SgNode* addRegExpAttribute();
284477  SgUpcMythread* addRegExpAttribute(std::string s, AstRegExAttribute* a);
284478 
284479 // *** COMMON CODE SECTION ENDS HERE ***
284480 
284481 
284482 // End of memberFunctionString
284483 // Start of memberFunctionString
284484 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
284485 
284486  // the generated cast function
284487  // friend ROSE_DLL_API SgUpcMythread* isSgUpcMythread ( SgNode* s );
284488 
284489  typedef SgValueExp base_node_type;
284490 
284491 
284492 // End of memberFunctionString
284493 // Start of memberFunctionString
284494 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
284495 
284496  SgType* get_type() const override;
284497 
284498 
284499 // End of memberFunctionString
284500 // Start of memberFunctionString
284501 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
284502 
284503  void post_construction_initialization() override;
284504 
284505 
284506 // End of memberFunctionString
284507 
284508  public:
284509  int get_value() const;
284510  void set_value(int value);
284511 
284512  public:
284513  std::string get_valueString() const;
284514  void set_valueString(std::string valueString);
284515 
284516 
284517  public:
284518  virtual ~SgUpcMythread();
284519 
284520 
284521  public:
284522  SgUpcMythread(Sg_File_Info* startOfConstruct , int value = 0, std::string valueString = "");
284523  SgUpcMythread(int value, std::string valueString);
284524 
284525  protected:
284526 // Start of memberFunctionString
284527 int p_value;
284528 
284529 // End of memberFunctionString
284530 // Start of memberFunctionString
284531 std::string p_valueString;
284532 
284533 // End of memberFunctionString
284534 
284535 
284536 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
284537 
284538 
284539  };
284540 #endif
284541 
284542 // postdeclarations for SgUpcMythread
284543 
284544 /* #line 284545 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
284545 
284546 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
284547 
284548 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
284549 
284550 
284551 /* #line 284552 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
284552 
284553 
284554 
284555 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
284556 
284557 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
284558 // This code is automatically generated for each
284559 // terminal and non-terminal within the defined
284560 // grammar. There is a simple way to change the
284561 // code to fix bugs etc. See the ROSE README file
284562 // for directions.
284563 
284564 // tps: (02/22/2010): Adding DLL export requirements
284565 #include "rosedll.h"
284566 
284567 // predeclarations for SgTemplateParameterVal
284568 
284569 /* #line 284570 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
284570 
284571 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
284572 
284573 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
284574 
284575 #if 1
284576 // Class Definition for SgTemplateParameterVal
284577 class ROSE_DLL_API SgTemplateParameterVal : public SgValueExp
284578  {
284579  public:
284580 
284581 
284582 /* #line 284583 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
284583 
284584  virtual SgNode* copy ( SgCopyHelp& help) const override;
284585 // Start of memberFunctionString
284586 /* #line 689 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
284587 
284588 
284589  // DQ (11/28/2011): Added to support template declarations in the AST.
284590  SgName get_template_parameter_name() const;
284591 
284592  SgType* get_type() const override;
284593 
284594 
284595 
284596 // End of memberFunctionString
284597 // Start of memberFunctionString
284598 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
284599 
284600 // *** COMMON CODE SECTION BEGINS HERE ***
284601 
284602  public:
284603 
284604  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
284605  // and not required which is required to match the other aspects of the copy mechanism code generation.
284606  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
284607  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
284608  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
284609  // virtual SgNode* copy ( const SgCopyHelp & help) const;
284610 
284612  virtual std::string class_name() const override;
284613 
284615  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
284616 
284618  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
284619  // static const VariantT static_variant = V_SgTemplateParameterVal;
284620  enum { static_variant = V_SgTemplateParameterVal };
284621 
284622  /* the generated cast function */
284624  ROSE_DLL_API friend SgTemplateParameterVal* isSgTemplateParameterVal( SgNode * s );
284625 
284627  ROSE_DLL_API friend const SgTemplateParameterVal* isSgTemplateParameterVal( const SgNode * s );
284628 
284629  // ******************************************
284630  // * Memory Pool / New / Delete
284631  // ******************************************
284632 
284633  public:
284635  static const unsigned pool_size; //
284637  static std::vector<unsigned char *> pools; //
284639  static SgTemplateParameterVal * next_node; //
284640 
284642  static unsigned long initializeStorageClassArray(SgTemplateParameterValStorageClass *); //
284643 
284645  static void clearMemoryPool(); //
284646  static void deleteMemoryPool(); //
284647 
284649  static void extendMemoryPoolForFileIO(); //
284650 
284652  static SgTemplateParameterVal * getPointerFromGlobalIndex(unsigned long); //
284654  static SgTemplateParameterVal * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
284655 
284657  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
284659  static void resetValidFreepointers(); //
284661  static unsigned long getNumberOfLastValidPointer(); //
284662 
284663 
284664 #if defined(INLINE_FUNCTIONS)
284665 
284666  inline void *operator new (size_t size);
284667 #else
284668 
284669  void *operator new (size_t size);
284670 #endif
284671 
284672  void operator delete (void* pointer, size_t size);
284673 
284674  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
284675  void operator delete (void* pointer)
284676  {
284677  // This is the generated delete operator...
284678  SgTemplateParameterVal::operator delete (pointer,sizeof(SgTemplateParameterVal));
284679  }
284680 
284682  static size_t numberOfNodes();
284683 
284685  static size_t memoryUsage();
284686 
284687  // End of scope which started in IR nodes specific code
284688  /* */
284689 
284690  /* name Internal Functions
284691  \brief Internal functions ... incomplete-documentation
284692 
284693  These functions have been made public as part of the design, but they are suggested for internal use
284694  or by particularly knowledgeable users for specialized tools or applications.
284695 
284696  \internal We could not make these private because they are required by user for special purposes. And
284697  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
284698 
284699  */
284700 
284701  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
284702  // overridden in every class by *generated* implementation
284704  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
284705  // MS: 06/28/02 container of names of variables or container indices
284706  // used used in the traversal to access AST successor nodes
284707  // overridden in every class by *generated* implementation
284710  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
284711 
284712  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
284713  // than all the vector copies. The implementation for these functions is generated for each class.
284715  virtual size_t get_numberOfTraversalSuccessors() override;
284717  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
284719  virtual size_t get_childIndex(SgNode *child) override;
284720 
284721 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
284722  // MS: 08/16/2002 method for generating RTI information
284724  virtual RTIReturnType roseRTI() override;
284725 #endif
284726  /* */
284727 
284728 
284729 
284730  /* name Deprecated Functions
284731  \brief Deprecated functions ... incomplete-documentation
284732 
284733  These functions have been deprecated from use.
284734  */
284735  /* */
284736 
284738  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
284739 
284740  // JJW (10/16/2008): Changed to a single function in Node.code, and put
284741  // getVariant() in #if 0 block to prevent confusing Doxygen
284742 #if 0
284743 
284744  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
284746  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
284747 #endif
284748  /* */
284749 
284750 
284751 
284752 
284753  public:
284754  /* name Traversal Support Functions
284755  \brief Traversal support functions ... incomplete-documentation
284756 
284757  These functions have been made public as part of the design, but they are suggested for internal use
284758  or by particularly knowledgable users for specialized tools or applications.
284759  */
284760  /* */
284761 
284762  // DQ (11/26/2005): Support for visitor pattern mechanims
284763  // (inferior to ROSE traversal mechanism, experimental).
284767 
284768  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
284770  virtual void accept (ROSE_VisitorPattern & visitor) override;
284771 
284772  // DQ (12/26/2005): Support for traversal based on the memory pool
284775  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
284776 
284779  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
284780 
284781  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
284782  // This traversal helps support internal tools that call static member functions.
284783  // note: this function operates on the memory pools.
284786  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
284787  /* */
284788 
284789 
284790  public:
284791  /* name Memory Allocation Functions
284792  \brief Memory allocations functions ... incomplete-documentation
284793 
284794  These functions have been made public as part of the design, but they are suggested for internal use
284795  or by particularly knowledgable users for specialized tools or applications.
284796  */
284797  /* */
284798 
284809  virtual bool isInMemoryPool() override;
284810 
284821  virtual void checkDataMemberPointersIfInMemoryPool() override;
284822 
284823  // DQ (4/30/2006): Modified to be a const function.
284838  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
284839 
284849  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
284850 
284862  virtual long getChildIndex( SgNode* childNode ) const override;
284863 
284864  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
284865  // comment here (changed to be a C style comment and not be a doxygen comment).
284866  /* \brief Constructor for use by AST File I/O Mechanism
284867 
284868  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
284869  which obtained via fast binary file I/O from disk.
284870  */
284871  // SgTemplateParameterVal( SgTemplateParameterValStorageClass& source );
284872 
284873 
284874 
284875 
284876 
284877  // JH (10/24/2005): methods added to support the ast file IO
284878  private:
284879 
284880  /* name AST Memory Allocation Support Functions
284881  \brief Memory allocations support....
284882 
284883  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
284884  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
284885  and support the AST File I/O Mechanism.
284886  */
284887  /* */
284888 
284889  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
284890  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
284891  that I use the same type everywhere, if any changes are made. THe second one declares the type
284892  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
284893  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
284894  a correspinding one in the AST_FILE_IO class!
284895  */
284896  // DQ (9/2/2015): This typedef is no longer used, we can't define the
284897  // comment here (changed to be a C style comment and not be a doxygen comment).
284898  /* \brief Typedef used for low level memory access.
284899  */
284900  // typedef unsigned char* TestType;
284901 
284902  // DQ (9/2/2015): This typedef is no longer used, we can't define the
284903  // comment here (changed to be a C style comment and not be a doxygen comment).
284904  /* \brief Typedef used to hold memory addresses as values.
284905  */
284906  // typedef unsigned long AddressType;
284907 
284908 
284909 
284910  // necessary, to have direct access to the p_freepointer and the private methods !
284912  friend class AST_FILE_IO;
284913 
284915  friend class SgTemplateParameterValStorageClass;
284916 
284918  friend class AstSpecificDataManagingClass;
284919 
284921  friend class AstSpecificDataManagingClassStorageClass;
284922 
284923  public:
284925  SgTemplateParameterVal( const SgTemplateParameterValStorageClass& source );
284926 
284927  // private: // JJW hack
284928  /*
284929  name AST Memory Allocation Support Variables
284930  Memory allocations support variables
284931 
284932  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
284933  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
284934  and support the AST File I/O Mechanism.
284935  */
284936  /* */
284937 
284938  public:
284939 
284940  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
284941  // to current node (so that it will work cleanly with build functions to specify patterns).
284942  // virtual SgNode* addRegExpAttribute();
284949 
284950 // *** COMMON CODE SECTION ENDS HERE ***
284951 
284952 
284953 // End of memberFunctionString
284954 // Start of memberFunctionString
284955 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
284956 
284957  // the generated cast function
284958  // friend ROSE_DLL_API SgTemplateParameterVal* isSgTemplateParameterVal ( SgNode* s );
284959 
284960  typedef SgValueExp base_node_type;
284961 
284962 
284963 // End of memberFunctionString
284964 // Start of memberFunctionString
284965 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
284966 
284967  void post_construction_initialization() override;
284968 
284969 
284970 // End of memberFunctionString
284971 
284972  public:
284973  int get_template_parameter_position() const;
284974  void set_template_parameter_position(int template_parameter_position);
284975 
284976  public:
284977  std::string get_valueString() const;
284978  void set_valueString(std::string valueString);
284979 
284980  public:
284981  SgType* get_valueType() const;
284982  void set_valueType(SgType* valueType);
284983 
284984 
284985  public:
284986  virtual ~SgTemplateParameterVal();
284987 
284988 
284989  public:
284990  SgTemplateParameterVal(Sg_File_Info* startOfConstruct , int template_parameter_position = -1, std::string valueString = "");
284991  SgTemplateParameterVal(int template_parameter_position, std::string valueString);
284992 
284993  protected:
284994 // Start of memberFunctionString
284995 int p_template_parameter_position;
284996 
284997 // End of memberFunctionString
284998 // Start of memberFunctionString
284999 std::string p_valueString;
285000 
285001 // End of memberFunctionString
285002 // Start of memberFunctionString
285003 SgType* p_valueType;
285004 
285005 // End of memberFunctionString
285006 
285007 
285008 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
285009 
285010 
285011  };
285012 #endif
285013 
285014 // postdeclarations for SgTemplateParameterVal
285015 
285016 /* #line 285017 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
285017 
285018 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
285019 
285020 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
285021 
285022 
285023 /* #line 285024 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
285024 
285025 
285026 
285027 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
285028 
285029 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
285030 // This code is automatically generated for each
285031 // terminal and non-terminal within the defined
285032 // grammar. There is a simple way to change the
285033 // code to fix bugs etc. See the ROSE README file
285034 // for directions.
285035 
285036 // tps: (02/22/2010): Adding DLL export requirements
285037 #include "rosedll.h"
285038 
285039 // predeclarations for SgNullptrValExp
285040 
285041 /* #line 285042 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
285042 
285043 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
285044 
285045 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
285046 
285047 #if 1
285048 // Class Definition for SgNullptrValExp
285049 class ROSE_DLL_API SgNullptrValExp : public SgValueExp
285050  {
285051  public:
285052 
285053 
285054 /* #line 285055 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
285055 
285056  virtual SgNode* copy ( SgCopyHelp& help) const override;
285057 // Start of memberFunctionString
285058 /* #line 557 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
285059 
285060 
285061 
285062 // End of memberFunctionString
285063 // Start of memberFunctionString
285064 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
285065 
285066 // *** COMMON CODE SECTION BEGINS HERE ***
285067 
285068  public:
285069 
285070  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
285071  // and not required which is required to match the other aspects of the copy mechanism code generation.
285072  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
285073  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
285074  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
285075  // virtual SgNode* copy ( const SgCopyHelp & help) const;
285076 
285078  virtual std::string class_name() const override;
285079 
285081  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
285082 
285084  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
285085  // static const VariantT static_variant = V_SgNullptrValExp;
285086  enum { static_variant = V_SgNullptrValExp };
285087 
285088  /* the generated cast function */
285090  ROSE_DLL_API friend SgNullptrValExp* isSgNullptrValExp( SgNode * s );
285091 
285093  ROSE_DLL_API friend const SgNullptrValExp* isSgNullptrValExp( const SgNode * s );
285094 
285095  // ******************************************
285096  // * Memory Pool / New / Delete
285097  // ******************************************
285098 
285099  public:
285101  static const unsigned pool_size; //
285103  static std::vector<unsigned char *> pools; //
285105  static SgNullptrValExp * next_node; //
285106 
285108  static unsigned long initializeStorageClassArray(SgNullptrValExpStorageClass *); //
285109 
285111  static void clearMemoryPool(); //
285112  static void deleteMemoryPool(); //
285113 
285115  static void extendMemoryPoolForFileIO(); //
285116 
285118  static SgNullptrValExp * getPointerFromGlobalIndex(unsigned long); //
285120  static SgNullptrValExp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
285121 
285123  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
285125  static void resetValidFreepointers(); //
285127  static unsigned long getNumberOfLastValidPointer(); //
285128 
285129 
285130 #if defined(INLINE_FUNCTIONS)
285131 
285132  inline void *operator new (size_t size);
285133 #else
285134 
285135  void *operator new (size_t size);
285136 #endif
285137 
285138  void operator delete (void* pointer, size_t size);
285139 
285140  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
285141  void operator delete (void* pointer)
285142  {
285143  // This is the generated delete operator...
285144  SgNullptrValExp::operator delete (pointer,sizeof(SgNullptrValExp));
285145  }
285146 
285148  static size_t numberOfNodes();
285149 
285151  static size_t memoryUsage();
285152 
285153  // End of scope which started in IR nodes specific code
285154  /* */
285155 
285156  /* name Internal Functions
285157  \brief Internal functions ... incomplete-documentation
285158 
285159  These functions have been made public as part of the design, but they are suggested for internal use
285160  or by particularly knowledgeable users for specialized tools or applications.
285161 
285162  \internal We could not make these private because they are required by user for special purposes. And
285163  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
285164 
285165  */
285166 
285167  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
285168  // overridden in every class by *generated* implementation
285170  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
285171  // MS: 06/28/02 container of names of variables or container indices
285172  // used used in the traversal to access AST successor nodes
285173  // overridden in every class by *generated* implementation
285176  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
285177 
285178  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
285179  // than all the vector copies. The implementation for these functions is generated for each class.
285181  virtual size_t get_numberOfTraversalSuccessors() override;
285183  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
285185  virtual size_t get_childIndex(SgNode *child) override;
285186 
285187 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
285188  // MS: 08/16/2002 method for generating RTI information
285190  virtual RTIReturnType roseRTI() override;
285191 #endif
285192  /* */
285193 
285194 
285195 
285196  /* name Deprecated Functions
285197  \brief Deprecated functions ... incomplete-documentation
285198 
285199  These functions have been deprecated from use.
285200  */
285201  /* */
285202 
285204  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
285205 
285206  // JJW (10/16/2008): Changed to a single function in Node.code, and put
285207  // getVariant() in #if 0 block to prevent confusing Doxygen
285208 #if 0
285209 
285210  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
285212  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
285213 #endif
285214  /* */
285215 
285216 
285217 
285218 
285219  public:
285220  /* name Traversal Support Functions
285221  \brief Traversal support functions ... incomplete-documentation
285222 
285223  These functions have been made public as part of the design, but they are suggested for internal use
285224  or by particularly knowledgable users for specialized tools or applications.
285225  */
285226  /* */
285227 
285228  // DQ (11/26/2005): Support for visitor pattern mechanims
285229  // (inferior to ROSE traversal mechanism, experimental).
285233 
285234  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
285236  virtual void accept (ROSE_VisitorPattern & visitor) override;
285237 
285238  // DQ (12/26/2005): Support for traversal based on the memory pool
285241  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
285242 
285245  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
285246 
285247  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
285248  // This traversal helps support internal tools that call static member functions.
285249  // note: this function operates on the memory pools.
285252  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
285253  /* */
285254 
285255 
285256  public:
285257  /* name Memory Allocation Functions
285258  \brief Memory allocations functions ... incomplete-documentation
285259 
285260  These functions have been made public as part of the design, but they are suggested for internal use
285261  or by particularly knowledgable users for specialized tools or applications.
285262  */
285263  /* */
285264 
285275  virtual bool isInMemoryPool() override;
285276 
285287  virtual void checkDataMemberPointersIfInMemoryPool() override;
285288 
285289  // DQ (4/30/2006): Modified to be a const function.
285304  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
285305 
285315  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
285316 
285328  virtual long getChildIndex( SgNode* childNode ) const override;
285329 
285330  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
285331  // comment here (changed to be a C style comment and not be a doxygen comment).
285332  /* \brief Constructor for use by AST File I/O Mechanism
285333 
285334  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
285335  which obtained via fast binary file I/O from disk.
285336  */
285337  // SgNullptrValExp( SgNullptrValExpStorageClass& source );
285338 
285339 
285340 
285341 
285342 
285343  // JH (10/24/2005): methods added to support the ast file IO
285344  private:
285345 
285346  /* name AST Memory Allocation Support Functions
285347  \brief Memory allocations support....
285348 
285349  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
285350  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
285351  and support the AST File I/O Mechanism.
285352  */
285353  /* */
285354 
285355  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
285356  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
285357  that I use the same type everywhere, if any changes are made. THe second one declares the type
285358  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
285359  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
285360  a correspinding one in the AST_FILE_IO class!
285361  */
285362  // DQ (9/2/2015): This typedef is no longer used, we can't define the
285363  // comment here (changed to be a C style comment and not be a doxygen comment).
285364  /* \brief Typedef used for low level memory access.
285365  */
285366  // typedef unsigned char* TestType;
285367 
285368  // DQ (9/2/2015): This typedef is no longer used, we can't define the
285369  // comment here (changed to be a C style comment and not be a doxygen comment).
285370  /* \brief Typedef used to hold memory addresses as values.
285371  */
285372  // typedef unsigned long AddressType;
285373 
285374 
285375 
285376  // necessary, to have direct access to the p_freepointer and the private methods !
285378  friend class AST_FILE_IO;
285379 
285381  friend class SgNullptrValExpStorageClass;
285382 
285384  friend class AstSpecificDataManagingClass;
285385 
285387  friend class AstSpecificDataManagingClassStorageClass;
285388 
285389  public:
285391  SgNullptrValExp( const SgNullptrValExpStorageClass& source );
285392 
285393  // private: // JJW hack
285394  /*
285395  name AST Memory Allocation Support Variables
285396  Memory allocations support variables
285397 
285398  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
285399  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
285400  and support the AST File I/O Mechanism.
285401  */
285402  /* */
285403 
285404  public:
285405 
285406  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
285407  // to current node (so that it will work cleanly with build functions to specify patterns).
285408  // virtual SgNode* addRegExpAttribute();
285415 
285416 // *** COMMON CODE SECTION ENDS HERE ***
285417 
285418 
285419 // End of memberFunctionString
285420 // Start of memberFunctionString
285421 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
285422 
285423  // the generated cast function
285424  // friend ROSE_DLL_API SgNullptrValExp* isSgNullptrValExp ( SgNode* s );
285425 
285426  typedef SgValueExp base_node_type;
285427 
285428 
285429 // End of memberFunctionString
285430 // Start of memberFunctionString
285431 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
285432 
285433  SgType* get_type() const override;
285434 
285435 
285436 // End of memberFunctionString
285437 // Start of memberFunctionString
285438 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
285439 
285440  void post_construction_initialization() override;
285441 
285442 
285443 // End of memberFunctionString
285444 
285445 
285446  public:
285447  virtual ~SgNullptrValExp();
285448 
285449 
285450  public:
285451  SgNullptrValExp(Sg_File_Info* startOfConstruct );
285452  SgNullptrValExp();
285453 
285454  protected:
285455 
285456 
285457 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
285458 
285459 
285460  };
285461 #endif
285462 
285463 // postdeclarations for SgNullptrValExp
285464 
285465 /* #line 285466 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
285466 
285467 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
285468 
285469 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
285470 
285471 
285472 /* #line 285473 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
285473 
285474 
285475 
285476 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
285477 
285478 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
285479 // This code is automatically generated for each
285480 // terminal and non-terminal within the defined
285481 // grammar. There is a simple way to change the
285482 // code to fix bugs etc. See the ROSE README file
285483 // for directions.
285484 
285485 // tps: (02/22/2010): Adding DLL export requirements
285486 #include "rosedll.h"
285487 
285488 // predeclarations for SgChar16Val
285489 
285490 /* #line 285491 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
285491 
285492 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
285493 
285494 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
285495 
285496 #if 1
285497 // Class Definition for SgChar16Val
285498 class ROSE_DLL_API SgChar16Val : public SgValueExp
285499  {
285500  public:
285501 
285502 
285503 /* #line 285504 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
285504 
285505  virtual SgNode* copy ( SgCopyHelp& help) const override;
285506 // Start of memberFunctionString
285507 /* #line 603 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
285508 
285509  // DQ (2/16/2018): ROSE needs to be able to be compiled on non C++11 systems where char_32_t is not defiled.
285510  // char16_t get_value() const;
285511  // void set_value(char16_t new_val);
285512  unsigned short get_value() const;
285513  void set_value(unsigned short new_val);
285514 
285515 
285516 
285517 // End of memberFunctionString
285518 // Start of memberFunctionString
285519 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
285520 
285521 // *** COMMON CODE SECTION BEGINS HERE ***
285522 
285523  public:
285524 
285525  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
285526  // and not required which is required to match the other aspects of the copy mechanism code generation.
285527  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
285528  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
285529  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
285530  // virtual SgNode* copy ( const SgCopyHelp & help) const;
285531 
285533  virtual std::string class_name() const override;
285534 
285536  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
285537 
285539  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
285540  // static const VariantT static_variant = V_SgChar16Val;
285541  enum { static_variant = V_SgChar16Val };
285542 
285543  /* the generated cast function */
285545  ROSE_DLL_API friend SgChar16Val* isSgChar16Val( SgNode * s );
285546 
285548  ROSE_DLL_API friend const SgChar16Val* isSgChar16Val( const SgNode * s );
285549 
285550  // ******************************************
285551  // * Memory Pool / New / Delete
285552  // ******************************************
285553 
285554  public:
285556  static const unsigned pool_size; //
285558  static std::vector<unsigned char *> pools; //
285560  static SgChar16Val * next_node; //
285561 
285563  static unsigned long initializeStorageClassArray(SgChar16ValStorageClass *); //
285564 
285566  static void clearMemoryPool(); //
285567  static void deleteMemoryPool(); //
285568 
285570  static void extendMemoryPoolForFileIO(); //
285571 
285573  static SgChar16Val * getPointerFromGlobalIndex(unsigned long); //
285575  static SgChar16Val * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
285576 
285578  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
285580  static void resetValidFreepointers(); //
285582  static unsigned long getNumberOfLastValidPointer(); //
285583 
285584 
285585 #if defined(INLINE_FUNCTIONS)
285586 
285587  inline void *operator new (size_t size);
285588 #else
285589 
285590  void *operator new (size_t size);
285591 #endif
285592 
285593  void operator delete (void* pointer, size_t size);
285594 
285595  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
285596  void operator delete (void* pointer)
285597  {
285598  // This is the generated delete operator...
285599  SgChar16Val::operator delete (pointer,sizeof(SgChar16Val));
285600  }
285601 
285603  static size_t numberOfNodes();
285604 
285606  static size_t memoryUsage();
285607 
285608  // End of scope which started in IR nodes specific code
285609  /* */
285610 
285611  /* name Internal Functions
285612  \brief Internal functions ... incomplete-documentation
285613 
285614  These functions have been made public as part of the design, but they are suggested for internal use
285615  or by particularly knowledgeable users for specialized tools or applications.
285616 
285617  \internal We could not make these private because they are required by user for special purposes. And
285618  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
285619 
285620  */
285621 
285622  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
285623  // overridden in every class by *generated* implementation
285625  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
285626  // MS: 06/28/02 container of names of variables or container indices
285627  // used used in the traversal to access AST successor nodes
285628  // overridden in every class by *generated* implementation
285631  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
285632 
285633  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
285634  // than all the vector copies. The implementation for these functions is generated for each class.
285636  virtual size_t get_numberOfTraversalSuccessors() override;
285638  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
285640  virtual size_t get_childIndex(SgNode *child) override;
285641 
285642 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
285643  // MS: 08/16/2002 method for generating RTI information
285645  virtual RTIReturnType roseRTI() override;
285646 #endif
285647  /* */
285648 
285649 
285650 
285651  /* name Deprecated Functions
285652  \brief Deprecated functions ... incomplete-documentation
285653 
285654  These functions have been deprecated from use.
285655  */
285656  /* */
285657 
285659  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
285660 
285661  // JJW (10/16/2008): Changed to a single function in Node.code, and put
285662  // getVariant() in #if 0 block to prevent confusing Doxygen
285663 #if 0
285664 
285665  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
285667  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
285668 #endif
285669  /* */
285670 
285671 
285672 
285673 
285674  public:
285675  /* name Traversal Support Functions
285676  \brief Traversal support functions ... incomplete-documentation
285677 
285678  These functions have been made public as part of the design, but they are suggested for internal use
285679  or by particularly knowledgable users for specialized tools or applications.
285680  */
285681  /* */
285682 
285683  // DQ (11/26/2005): Support for visitor pattern mechanims
285684  // (inferior to ROSE traversal mechanism, experimental).
285688 
285689  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
285691  virtual void accept (ROSE_VisitorPattern & visitor) override;
285692 
285693  // DQ (12/26/2005): Support for traversal based on the memory pool
285696  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
285697 
285700  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
285701 
285702  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
285703  // This traversal helps support internal tools that call static member functions.
285704  // note: this function operates on the memory pools.
285707  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
285708  /* */
285709 
285710 
285711  public:
285712  /* name Memory Allocation Functions
285713  \brief Memory allocations functions ... incomplete-documentation
285714 
285715  These functions have been made public as part of the design, but they are suggested for internal use
285716  or by particularly knowledgable users for specialized tools or applications.
285717  */
285718  /* */
285719 
285730  virtual bool isInMemoryPool() override;
285731 
285742  virtual void checkDataMemberPointersIfInMemoryPool() override;
285743 
285744  // DQ (4/30/2006): Modified to be a const function.
285759  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
285760 
285770  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
285771 
285783  virtual long getChildIndex( SgNode* childNode ) const override;
285784 
285785  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
285786  // comment here (changed to be a C style comment and not be a doxygen comment).
285787  /* \brief Constructor for use by AST File I/O Mechanism
285788 
285789  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
285790  which obtained via fast binary file I/O from disk.
285791  */
285792  // SgChar16Val( SgChar16ValStorageClass& source );
285793 
285794 
285795 
285796 
285797 
285798  // JH (10/24/2005): methods added to support the ast file IO
285799  private:
285800 
285801  /* name AST Memory Allocation Support Functions
285802  \brief Memory allocations support....
285803 
285804  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
285805  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
285806  and support the AST File I/O Mechanism.
285807  */
285808  /* */
285809 
285810  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
285811  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
285812  that I use the same type everywhere, if any changes are made. THe second one declares the type
285813  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
285814  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
285815  a correspinding one in the AST_FILE_IO class!
285816  */
285817  // DQ (9/2/2015): This typedef is no longer used, we can't define the
285818  // comment here (changed to be a C style comment and not be a doxygen comment).
285819  /* \brief Typedef used for low level memory access.
285820  */
285821  // typedef unsigned char* TestType;
285822 
285823  // DQ (9/2/2015): This typedef is no longer used, we can't define the
285824  // comment here (changed to be a C style comment and not be a doxygen comment).
285825  /* \brief Typedef used to hold memory addresses as values.
285826  */
285827  // typedef unsigned long AddressType;
285828 
285829 
285830 
285831  // necessary, to have direct access to the p_freepointer and the private methods !
285833  friend class AST_FILE_IO;
285834 
285836  friend class SgChar16ValStorageClass;
285837 
285839  friend class AstSpecificDataManagingClass;
285840 
285842  friend class AstSpecificDataManagingClassStorageClass;
285843 
285844  public:
285846  SgChar16Val( const SgChar16ValStorageClass& source );
285847 
285848  // private: // JJW hack
285849  /*
285850  name AST Memory Allocation Support Variables
285851  Memory allocations support variables
285852 
285853  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
285854  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
285855  and support the AST File I/O Mechanism.
285856  */
285857  /* */
285858 
285859  public:
285860 
285861  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
285862  // to current node (so that it will work cleanly with build functions to specify patterns).
285863  // virtual SgNode* addRegExpAttribute();
285869  SgChar16Val* addRegExpAttribute(std::string s, AstRegExAttribute* a);
285870 
285871 // *** COMMON CODE SECTION ENDS HERE ***
285872 
285873 
285874 // End of memberFunctionString
285875 // Start of memberFunctionString
285876 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
285877 
285878  // the generated cast function
285879  // friend ROSE_DLL_API SgChar16Val* isSgChar16Val ( SgNode* s );
285880 
285881  typedef SgValueExp base_node_type;
285882 
285883 
285884 // End of memberFunctionString
285885 // Start of memberFunctionString
285886 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
285887 
285888  SgType* get_type() const override;
285889 
285890 
285891 // End of memberFunctionString
285892 // Start of memberFunctionString
285893 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
285894 
285895  void post_construction_initialization() override;
285896 
285897 
285898 // End of memberFunctionString
285899 
285900  public:
285901  unsigned short get_valueUL() const;
285902  void set_valueUL(unsigned short valueUL);
285903 
285904  public:
285905  std::string get_valueString() const;
285906  void set_valueString(std::string valueString);
285907 
285908 
285909  public:
285910  virtual ~SgChar16Val();
285911 
285912 
285913  public:
285914  SgChar16Val(Sg_File_Info* startOfConstruct , unsigned short valueUL = 0, std::string valueString = "");
285915  SgChar16Val(unsigned short valueUL, std::string valueString);
285916 
285917  protected:
285918 // Start of memberFunctionString
285919 unsigned short p_valueUL;
285920 
285921 // End of memberFunctionString
285922 // Start of memberFunctionString
285923 std::string p_valueString;
285924 
285925 // End of memberFunctionString
285926 
285927 
285928 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
285929 
285930 
285931  };
285932 #endif
285933 
285934 // postdeclarations for SgChar16Val
285935 
285936 /* #line 285937 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
285937 
285938 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
285939 
285940 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
285941 
285942 
285943 /* #line 285944 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
285944 
285945 
285946 
285947 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
285948 
285949 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
285950 // This code is automatically generated for each
285951 // terminal and non-terminal within the defined
285952 // grammar. There is a simple way to change the
285953 // code to fix bugs etc. See the ROSE README file
285954 // for directions.
285955 
285956 // tps: (02/22/2010): Adding DLL export requirements
285957 #include "rosedll.h"
285958 
285959 // predeclarations for SgChar32Val
285960 
285961 /* #line 285962 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
285962 
285963 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
285964 
285965 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
285966 
285967 #if 1
285968 // Class Definition for SgChar32Val
285969 class ROSE_DLL_API SgChar32Val : public SgValueExp
285970  {
285971  public:
285972 
285973 
285974 /* #line 285975 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
285975 
285976  virtual SgNode* copy ( SgCopyHelp& help) const override;
285977 // Start of memberFunctionString
285978 /* #line 613 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
285979 
285980  // DQ (2/16/2018): ROSE needs to be able to be compiled on non C++11 systems where char_32_t is not defiled.
285981  // char32_t get_value() const;
285982  // void set_value(char32_t new_val);
285983  unsigned int get_value() const;
285984  void set_value(unsigned int new_val);
285985 
285986 
285987 
285988 // End of memberFunctionString
285989 // Start of memberFunctionString
285990 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
285991 
285992 // *** COMMON CODE SECTION BEGINS HERE ***
285993 
285994  public:
285995 
285996  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
285997  // and not required which is required to match the other aspects of the copy mechanism code generation.
285998  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
285999  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
286000  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
286001  // virtual SgNode* copy ( const SgCopyHelp & help) const;
286002 
286004  virtual std::string class_name() const override;
286005 
286007  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
286008 
286010  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
286011  // static const VariantT static_variant = V_SgChar32Val;
286012  enum { static_variant = V_SgChar32Val };
286013 
286014  /* the generated cast function */
286016  ROSE_DLL_API friend SgChar32Val* isSgChar32Val( SgNode * s );
286017 
286019  ROSE_DLL_API friend const SgChar32Val* isSgChar32Val( const SgNode * s );
286020 
286021  // ******************************************
286022  // * Memory Pool / New / Delete
286023  // ******************************************
286024 
286025  public:
286027  static const unsigned pool_size; //
286029  static std::vector<unsigned char *> pools; //
286031  static SgChar32Val * next_node; //
286032 
286034  static unsigned long initializeStorageClassArray(SgChar32ValStorageClass *); //
286035 
286037  static void clearMemoryPool(); //
286038  static void deleteMemoryPool(); //
286039 
286041  static void extendMemoryPoolForFileIO(); //
286042 
286044  static SgChar32Val * getPointerFromGlobalIndex(unsigned long); //
286046  static SgChar32Val * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
286047 
286049  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
286051  static void resetValidFreepointers(); //
286053  static unsigned long getNumberOfLastValidPointer(); //
286054 
286055 
286056 #if defined(INLINE_FUNCTIONS)
286057 
286058  inline void *operator new (size_t size);
286059 #else
286060 
286061  void *operator new (size_t size);
286062 #endif
286063 
286064  void operator delete (void* pointer, size_t size);
286065 
286066  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
286067  void operator delete (void* pointer)
286068  {
286069  // This is the generated delete operator...
286070  SgChar32Val::operator delete (pointer,sizeof(SgChar32Val));
286071  }
286072 
286074  static size_t numberOfNodes();
286075 
286077  static size_t memoryUsage();
286078 
286079  // End of scope which started in IR nodes specific code
286080  /* */
286081 
286082  /* name Internal Functions
286083  \brief Internal functions ... incomplete-documentation
286084 
286085  These functions have been made public as part of the design, but they are suggested for internal use
286086  or by particularly knowledgeable users for specialized tools or applications.
286087 
286088  \internal We could not make these private because they are required by user for special purposes. And
286089  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
286090 
286091  */
286092 
286093  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
286094  // overridden in every class by *generated* implementation
286096  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
286097  // MS: 06/28/02 container of names of variables or container indices
286098  // used used in the traversal to access AST successor nodes
286099  // overridden in every class by *generated* implementation
286102  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
286103 
286104  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
286105  // than all the vector copies. The implementation for these functions is generated for each class.
286107  virtual size_t get_numberOfTraversalSuccessors() override;
286109  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
286111  virtual size_t get_childIndex(SgNode *child) override;
286112 
286113 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
286114  // MS: 08/16/2002 method for generating RTI information
286116  virtual RTIReturnType roseRTI() override;
286117 #endif
286118  /* */
286119 
286120 
286121 
286122  /* name Deprecated Functions
286123  \brief Deprecated functions ... incomplete-documentation
286124 
286125  These functions have been deprecated from use.
286126  */
286127  /* */
286128 
286130  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
286131 
286132  // JJW (10/16/2008): Changed to a single function in Node.code, and put
286133  // getVariant() in #if 0 block to prevent confusing Doxygen
286134 #if 0
286135 
286136  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
286138  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
286139 #endif
286140  /* */
286141 
286142 
286143 
286144 
286145  public:
286146  /* name Traversal Support Functions
286147  \brief Traversal support functions ... incomplete-documentation
286148 
286149  These functions have been made public as part of the design, but they are suggested for internal use
286150  or by particularly knowledgable users for specialized tools or applications.
286151  */
286152  /* */
286153 
286154  // DQ (11/26/2005): Support for visitor pattern mechanims
286155  // (inferior to ROSE traversal mechanism, experimental).
286159 
286160  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
286162  virtual void accept (ROSE_VisitorPattern & visitor) override;
286163 
286164  // DQ (12/26/2005): Support for traversal based on the memory pool
286167  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
286168 
286171  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
286172 
286173  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
286174  // This traversal helps support internal tools that call static member functions.
286175  // note: this function operates on the memory pools.
286178  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
286179  /* */
286180 
286181 
286182  public:
286183  /* name Memory Allocation Functions
286184  \brief Memory allocations functions ... incomplete-documentation
286185 
286186  These functions have been made public as part of the design, but they are suggested for internal use
286187  or by particularly knowledgable users for specialized tools or applications.
286188  */
286189  /* */
286190 
286201  virtual bool isInMemoryPool() override;
286202 
286213  virtual void checkDataMemberPointersIfInMemoryPool() override;
286214 
286215  // DQ (4/30/2006): Modified to be a const function.
286230  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
286231 
286241  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
286242 
286254  virtual long getChildIndex( SgNode* childNode ) const override;
286255 
286256  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
286257  // comment here (changed to be a C style comment and not be a doxygen comment).
286258  /* \brief Constructor for use by AST File I/O Mechanism
286259 
286260  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
286261  which obtained via fast binary file I/O from disk.
286262  */
286263  // SgChar32Val( SgChar32ValStorageClass& source );
286264 
286265 
286266 
286267 
286268 
286269  // JH (10/24/2005): methods added to support the ast file IO
286270  private:
286271 
286272  /* name AST Memory Allocation Support Functions
286273  \brief Memory allocations support....
286274 
286275  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
286276  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
286277  and support the AST File I/O Mechanism.
286278  */
286279  /* */
286280 
286281  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
286282  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
286283  that I use the same type everywhere, if any changes are made. THe second one declares the type
286284  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
286285  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
286286  a correspinding one in the AST_FILE_IO class!
286287  */
286288  // DQ (9/2/2015): This typedef is no longer used, we can't define the
286289  // comment here (changed to be a C style comment and not be a doxygen comment).
286290  /* \brief Typedef used for low level memory access.
286291  */
286292  // typedef unsigned char* TestType;
286293 
286294  // DQ (9/2/2015): This typedef is no longer used, we can't define the
286295  // comment here (changed to be a C style comment and not be a doxygen comment).
286296  /* \brief Typedef used to hold memory addresses as values.
286297  */
286298  // typedef unsigned long AddressType;
286299 
286300 
286301 
286302  // necessary, to have direct access to the p_freepointer and the private methods !
286304  friend class AST_FILE_IO;
286305 
286307  friend class SgChar32ValStorageClass;
286308 
286310  friend class AstSpecificDataManagingClass;
286311 
286313  friend class AstSpecificDataManagingClassStorageClass;
286314 
286315  public:
286317  SgChar32Val( const SgChar32ValStorageClass& source );
286318 
286319  // private: // JJW hack
286320  /*
286321  name AST Memory Allocation Support Variables
286322  Memory allocations support variables
286323 
286324  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
286325  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
286326  and support the AST File I/O Mechanism.
286327  */
286328  /* */
286329 
286330  public:
286331 
286332  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
286333  // to current node (so that it will work cleanly with build functions to specify patterns).
286334  // virtual SgNode* addRegExpAttribute();
286340  SgChar32Val* addRegExpAttribute(std::string s, AstRegExAttribute* a);
286341 
286342 // *** COMMON CODE SECTION ENDS HERE ***
286343 
286344 
286345 // End of memberFunctionString
286346 // Start of memberFunctionString
286347 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
286348 
286349  // the generated cast function
286350  // friend ROSE_DLL_API SgChar32Val* isSgChar32Val ( SgNode* s );
286351 
286352  typedef SgValueExp base_node_type;
286353 
286354 
286355 // End of memberFunctionString
286356 // Start of memberFunctionString
286357 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
286358 
286359  SgType* get_type() const override;
286360 
286361 
286362 // End of memberFunctionString
286363 // Start of memberFunctionString
286364 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
286365 
286366  void post_construction_initialization() override;
286367 
286368 
286369 // End of memberFunctionString
286370 
286371  public:
286372  unsigned int get_valueUL() const;
286373  void set_valueUL(unsigned int valueUL);
286374 
286375  public:
286376  std::string get_valueString() const;
286377  void set_valueString(std::string valueString);
286378 
286379 
286380  public:
286381  virtual ~SgChar32Val();
286382 
286383 
286384  public:
286385  SgChar32Val(Sg_File_Info* startOfConstruct , unsigned int valueUL = 0, std::string valueString = "");
286386  SgChar32Val(unsigned int valueUL, std::string valueString);
286387 
286388  protected:
286389 // Start of memberFunctionString
286390 unsigned int p_valueUL;
286391 
286392 // End of memberFunctionString
286393 // Start of memberFunctionString
286394 std::string p_valueString;
286395 
286396 // End of memberFunctionString
286397 
286398 
286399 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
286400 
286401 
286402  };
286403 #endif
286404 
286405 // postdeclarations for SgChar32Val
286406 
286407 /* #line 286408 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
286408 
286409 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
286410 
286411 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
286412 
286413 
286414 /* #line 286415 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
286415 
286416 
286417 
286418 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
286419 
286420 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
286421 // This code is automatically generated for each
286422 // terminal and non-terminal within the defined
286423 // grammar. There is a simple way to change the
286424 // code to fix bugs etc. See the ROSE README file
286425 // for directions.
286426 
286427 // tps: (02/22/2010): Adding DLL export requirements
286428 #include "rosedll.h"
286429 
286430 // predeclarations for SgFloat80Val
286431 
286432 /* #line 286433 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
286433 
286434 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
286435 
286436 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
286437 
286438 #if 1
286439 // Class Definition for SgFloat80Val
286440 class ROSE_DLL_API SgFloat80Val : public SgValueExp
286441  {
286442  public:
286443 
286444 
286445 /* #line 286446 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
286446 
286447  virtual SgNode* copy ( SgCopyHelp& help) const override;
286448 // Start of memberFunctionString
286449 /* #line 683 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
286450 
286451 
286452 
286453 // End of memberFunctionString
286454 // Start of memberFunctionString
286455 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
286456 
286457 // *** COMMON CODE SECTION BEGINS HERE ***
286458 
286459  public:
286460 
286461  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
286462  // and not required which is required to match the other aspects of the copy mechanism code generation.
286463  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
286464  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
286465  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
286466  // virtual SgNode* copy ( const SgCopyHelp & help) const;
286467 
286469  virtual std::string class_name() const override;
286470 
286472  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
286473 
286475  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
286476  // static const VariantT static_variant = V_SgFloat80Val;
286477  enum { static_variant = V_SgFloat80Val };
286478 
286479  /* the generated cast function */
286481  ROSE_DLL_API friend SgFloat80Val* isSgFloat80Val( SgNode * s );
286482 
286484  ROSE_DLL_API friend const SgFloat80Val* isSgFloat80Val( const SgNode * s );
286485 
286486  // ******************************************
286487  // * Memory Pool / New / Delete
286488  // ******************************************
286489 
286490  public:
286492  static const unsigned pool_size; //
286494  static std::vector<unsigned char *> pools; //
286496  static SgFloat80Val * next_node; //
286497 
286499  static unsigned long initializeStorageClassArray(SgFloat80ValStorageClass *); //
286500 
286502  static void clearMemoryPool(); //
286503  static void deleteMemoryPool(); //
286504 
286506  static void extendMemoryPoolForFileIO(); //
286507 
286509  static SgFloat80Val * getPointerFromGlobalIndex(unsigned long); //
286511  static SgFloat80Val * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
286512 
286514  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
286516  static void resetValidFreepointers(); //
286518  static unsigned long getNumberOfLastValidPointer(); //
286519 
286520 
286521 #if defined(INLINE_FUNCTIONS)
286522 
286523  inline void *operator new (size_t size);
286524 #else
286525 
286526  void *operator new (size_t size);
286527 #endif
286528 
286529  void operator delete (void* pointer, size_t size);
286530 
286531  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
286532  void operator delete (void* pointer)
286533  {
286534  // This is the generated delete operator...
286535  SgFloat80Val::operator delete (pointer,sizeof(SgFloat80Val));
286536  }
286537 
286539  static size_t numberOfNodes();
286540 
286542  static size_t memoryUsage();
286543 
286544  // End of scope which started in IR nodes specific code
286545  /* */
286546 
286547  /* name Internal Functions
286548  \brief Internal functions ... incomplete-documentation
286549 
286550  These functions have been made public as part of the design, but they are suggested for internal use
286551  or by particularly knowledgeable users for specialized tools or applications.
286552 
286553  \internal We could not make these private because they are required by user for special purposes. And
286554  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
286555 
286556  */
286557 
286558  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
286559  // overridden in every class by *generated* implementation
286561  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
286562  // MS: 06/28/02 container of names of variables or container indices
286563  // used used in the traversal to access AST successor nodes
286564  // overridden in every class by *generated* implementation
286567  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
286568 
286569  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
286570  // than all the vector copies. The implementation for these functions is generated for each class.
286572  virtual size_t get_numberOfTraversalSuccessors() override;
286574  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
286576  virtual size_t get_childIndex(SgNode *child) override;
286577 
286578 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
286579  // MS: 08/16/2002 method for generating RTI information
286581  virtual RTIReturnType roseRTI() override;
286582 #endif
286583  /* */
286584 
286585 
286586 
286587  /* name Deprecated Functions
286588  \brief Deprecated functions ... incomplete-documentation
286589 
286590  These functions have been deprecated from use.
286591  */
286592  /* */
286593 
286595  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
286596 
286597  // JJW (10/16/2008): Changed to a single function in Node.code, and put
286598  // getVariant() in #if 0 block to prevent confusing Doxygen
286599 #if 0
286600 
286601  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
286603  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
286604 #endif
286605  /* */
286606 
286607 
286608 
286609 
286610  public:
286611  /* name Traversal Support Functions
286612  \brief Traversal support functions ... incomplete-documentation
286613 
286614  These functions have been made public as part of the design, but they are suggested for internal use
286615  or by particularly knowledgable users for specialized tools or applications.
286616  */
286617  /* */
286618 
286619  // DQ (11/26/2005): Support for visitor pattern mechanims
286620  // (inferior to ROSE traversal mechanism, experimental).
286624 
286625  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
286627  virtual void accept (ROSE_VisitorPattern & visitor) override;
286628 
286629  // DQ (12/26/2005): Support for traversal based on the memory pool
286632  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
286633 
286636  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
286637 
286638  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
286639  // This traversal helps support internal tools that call static member functions.
286640  // note: this function operates on the memory pools.
286643  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
286644  /* */
286645 
286646 
286647  public:
286648  /* name Memory Allocation Functions
286649  \brief Memory allocations functions ... incomplete-documentation
286650 
286651  These functions have been made public as part of the design, but they are suggested for internal use
286652  or by particularly knowledgable users for specialized tools or applications.
286653  */
286654  /* */
286655 
286666  virtual bool isInMemoryPool() override;
286667 
286678  virtual void checkDataMemberPointersIfInMemoryPool() override;
286679 
286680  // DQ (4/30/2006): Modified to be a const function.
286695  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
286696 
286706  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
286707 
286719  virtual long getChildIndex( SgNode* childNode ) const override;
286720 
286721  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
286722  // comment here (changed to be a C style comment and not be a doxygen comment).
286723  /* \brief Constructor for use by AST File I/O Mechanism
286724 
286725  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
286726  which obtained via fast binary file I/O from disk.
286727  */
286728  // SgFloat80Val( SgFloat80ValStorageClass& source );
286729 
286730 
286731 
286732 
286733 
286734  // JH (10/24/2005): methods added to support the ast file IO
286735  private:
286736 
286737  /* name AST Memory Allocation Support Functions
286738  \brief Memory allocations support....
286739 
286740  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
286741  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
286742  and support the AST File I/O Mechanism.
286743  */
286744  /* */
286745 
286746  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
286747  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
286748  that I use the same type everywhere, if any changes are made. THe second one declares the type
286749  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
286750  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
286751  a correspinding one in the AST_FILE_IO class!
286752  */
286753  // DQ (9/2/2015): This typedef is no longer used, we can't define the
286754  // comment here (changed to be a C style comment and not be a doxygen comment).
286755  /* \brief Typedef used for low level memory access.
286756  */
286757  // typedef unsigned char* TestType;
286758 
286759  // DQ (9/2/2015): This typedef is no longer used, we can't define the
286760  // comment here (changed to be a C style comment and not be a doxygen comment).
286761  /* \brief Typedef used to hold memory addresses as values.
286762  */
286763  // typedef unsigned long AddressType;
286764 
286765 
286766 
286767  // necessary, to have direct access to the p_freepointer and the private methods !
286769  friend class AST_FILE_IO;
286770 
286772  friend class SgFloat80ValStorageClass;
286773 
286775  friend class AstSpecificDataManagingClass;
286776 
286778  friend class AstSpecificDataManagingClassStorageClass;
286779 
286780  public:
286782  SgFloat80Val( const SgFloat80ValStorageClass& source );
286783 
286784  // private: // JJW hack
286785  /*
286786  name AST Memory Allocation Support Variables
286787  Memory allocations support variables
286788 
286789  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
286790  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
286791  and support the AST File I/O Mechanism.
286792  */
286793  /* */
286794 
286795  public:
286796 
286797  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
286798  // to current node (so that it will work cleanly with build functions to specify patterns).
286799  // virtual SgNode* addRegExpAttribute();
286805  SgFloat80Val* addRegExpAttribute(std::string s, AstRegExAttribute* a);
286806 
286807 // *** COMMON CODE SECTION ENDS HERE ***
286808 
286809 
286810 // End of memberFunctionString
286811 // Start of memberFunctionString
286812 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
286813 
286814  // the generated cast function
286815  // friend ROSE_DLL_API SgFloat80Val* isSgFloat80Val ( SgNode* s );
286816 
286817  typedef SgValueExp base_node_type;
286818 
286819 
286820 // End of memberFunctionString
286821 // Start of memberFunctionString
286822 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
286823 
286824  SgType* get_type() const override;
286825 
286826 
286827 // End of memberFunctionString
286828 // Start of memberFunctionString
286829 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
286830 
286831  void post_construction_initialization() override;
286832 
286833 
286834 // End of memberFunctionString
286835 
286836  public:
286837  long double get_value() const;
286838  void set_value(long double value);
286839 
286840  public:
286841  std::string get_valueString() const;
286842  void set_valueString(std::string valueString);
286843 
286844 
286845  public:
286846  virtual ~SgFloat80Val();
286847 
286848 
286849  public:
286850  SgFloat80Val(Sg_File_Info* startOfConstruct , long double value = 0.0, std::string valueString = "");
286851  SgFloat80Val(long double value, std::string valueString);
286852 
286853  protected:
286854 // Start of memberFunctionString
286855 long double p_value;
286856 
286857 // End of memberFunctionString
286858 // Start of memberFunctionString
286859 std::string p_valueString;
286860 
286861 // End of memberFunctionString
286862 
286863 
286864 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
286865 
286866 
286867  };
286868 #endif
286869 
286870 // postdeclarations for SgFloat80Val
286871 
286872 /* #line 286873 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
286873 
286874 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
286875 
286876 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
286877 
286878 
286879 /* #line 286880 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
286880 
286881 
286882 
286883 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
286884 
286885 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
286886 // This code is automatically generated for each
286887 // terminal and non-terminal within the defined
286888 // grammar. There is a simple way to change the
286889 // code to fix bugs etc. See the ROSE README file
286890 // for directions.
286891 
286892 // tps: (02/22/2010): Adding DLL export requirements
286893 #include "rosedll.h"
286894 
286895 // predeclarations for SgFloat128Val
286896 
286897 /* #line 286898 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
286898 
286899 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
286900 
286901 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
286902 
286903 #if 1
286904 // Class Definition for SgFloat128Val
286905 class ROSE_DLL_API SgFloat128Val : public SgValueExp
286906  {
286907  public:
286908 
286909 
286910 /* #line 286911 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
286911 
286912  virtual SgNode* copy ( SgCopyHelp& help) const override;
286913 // Start of memberFunctionString
286914 /* #line 686 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
286915 
286916 
286917 
286918 // End of memberFunctionString
286919 // Start of memberFunctionString
286920 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
286921 
286922 // *** COMMON CODE SECTION BEGINS HERE ***
286923 
286924  public:
286925 
286926  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
286927  // and not required which is required to match the other aspects of the copy mechanism code generation.
286928  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
286929  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
286930  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
286931  // virtual SgNode* copy ( const SgCopyHelp & help) const;
286932 
286934  virtual std::string class_name() const override;
286935 
286937  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
286938 
286940  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
286941  // static const VariantT static_variant = V_SgFloat128Val;
286942  enum { static_variant = V_SgFloat128Val };
286943 
286944  /* the generated cast function */
286946  ROSE_DLL_API friend SgFloat128Val* isSgFloat128Val( SgNode * s );
286947 
286949  ROSE_DLL_API friend const SgFloat128Val* isSgFloat128Val( const SgNode * s );
286950 
286951  // ******************************************
286952  // * Memory Pool / New / Delete
286953  // ******************************************
286954 
286955  public:
286957  static const unsigned pool_size; //
286959  static std::vector<unsigned char *> pools; //
286961  static SgFloat128Val * next_node; //
286962 
286964  static unsigned long initializeStorageClassArray(SgFloat128ValStorageClass *); //
286965 
286967  static void clearMemoryPool(); //
286968  static void deleteMemoryPool(); //
286969 
286971  static void extendMemoryPoolForFileIO(); //
286972 
286974  static SgFloat128Val * getPointerFromGlobalIndex(unsigned long); //
286976  static SgFloat128Val * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
286977 
286979  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
286981  static void resetValidFreepointers(); //
286983  static unsigned long getNumberOfLastValidPointer(); //
286984 
286985 
286986 #if defined(INLINE_FUNCTIONS)
286987 
286988  inline void *operator new (size_t size);
286989 #else
286990 
286991  void *operator new (size_t size);
286992 #endif
286993 
286994  void operator delete (void* pointer, size_t size);
286995 
286996  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
286997  void operator delete (void* pointer)
286998  {
286999  // This is the generated delete operator...
287000  SgFloat128Val::operator delete (pointer,sizeof(SgFloat128Val));
287001  }
287002 
287004  static size_t numberOfNodes();
287005 
287007  static size_t memoryUsage();
287008 
287009  // End of scope which started in IR nodes specific code
287010  /* */
287011 
287012  /* name Internal Functions
287013  \brief Internal functions ... incomplete-documentation
287014 
287015  These functions have been made public as part of the design, but they are suggested for internal use
287016  or by particularly knowledgeable users for specialized tools or applications.
287017 
287018  \internal We could not make these private because they are required by user for special purposes. And
287019  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
287020 
287021  */
287022 
287023  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
287024  // overridden in every class by *generated* implementation
287026  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
287027  // MS: 06/28/02 container of names of variables or container indices
287028  // used used in the traversal to access AST successor nodes
287029  // overridden in every class by *generated* implementation
287032  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
287033 
287034  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
287035  // than all the vector copies. The implementation for these functions is generated for each class.
287037  virtual size_t get_numberOfTraversalSuccessors() override;
287039  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
287041  virtual size_t get_childIndex(SgNode *child) override;
287042 
287043 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
287044  // MS: 08/16/2002 method for generating RTI information
287046  virtual RTIReturnType roseRTI() override;
287047 #endif
287048  /* */
287049 
287050 
287051 
287052  /* name Deprecated Functions
287053  \brief Deprecated functions ... incomplete-documentation
287054 
287055  These functions have been deprecated from use.
287056  */
287057  /* */
287058 
287060  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
287061 
287062  // JJW (10/16/2008): Changed to a single function in Node.code, and put
287063  // getVariant() in #if 0 block to prevent confusing Doxygen
287064 #if 0
287065 
287066  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
287068  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
287069 #endif
287070  /* */
287071 
287072 
287073 
287074 
287075  public:
287076  /* name Traversal Support Functions
287077  \brief Traversal support functions ... incomplete-documentation
287078 
287079  These functions have been made public as part of the design, but they are suggested for internal use
287080  or by particularly knowledgable users for specialized tools or applications.
287081  */
287082  /* */
287083 
287084  // DQ (11/26/2005): Support for visitor pattern mechanims
287085  // (inferior to ROSE traversal mechanism, experimental).
287089 
287090  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
287092  virtual void accept (ROSE_VisitorPattern & visitor) override;
287093 
287094  // DQ (12/26/2005): Support for traversal based on the memory pool
287097  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
287098 
287101  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
287102 
287103  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
287104  // This traversal helps support internal tools that call static member functions.
287105  // note: this function operates on the memory pools.
287108  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
287109  /* */
287110 
287111 
287112  public:
287113  /* name Memory Allocation Functions
287114  \brief Memory allocations functions ... incomplete-documentation
287115 
287116  These functions have been made public as part of the design, but they are suggested for internal use
287117  or by particularly knowledgable users for specialized tools or applications.
287118  */
287119  /* */
287120 
287131  virtual bool isInMemoryPool() override;
287132 
287143  virtual void checkDataMemberPointersIfInMemoryPool() override;
287144 
287145  // DQ (4/30/2006): Modified to be a const function.
287160  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
287161 
287171  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
287172 
287184  virtual long getChildIndex( SgNode* childNode ) const override;
287185 
287186  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
287187  // comment here (changed to be a C style comment and not be a doxygen comment).
287188  /* \brief Constructor for use by AST File I/O Mechanism
287189 
287190  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
287191  which obtained via fast binary file I/O from disk.
287192  */
287193  // SgFloat128Val( SgFloat128ValStorageClass& source );
287194 
287195 
287196 
287197 
287198 
287199  // JH (10/24/2005): methods added to support the ast file IO
287200  private:
287201 
287202  /* name AST Memory Allocation Support Functions
287203  \brief Memory allocations support....
287204 
287205  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
287206  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
287207  and support the AST File I/O Mechanism.
287208  */
287209  /* */
287210 
287211  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
287212  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
287213  that I use the same type everywhere, if any changes are made. THe second one declares the type
287214  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
287215  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
287216  a correspinding one in the AST_FILE_IO class!
287217  */
287218  // DQ (9/2/2015): This typedef is no longer used, we can't define the
287219  // comment here (changed to be a C style comment and not be a doxygen comment).
287220  /* \brief Typedef used for low level memory access.
287221  */
287222  // typedef unsigned char* TestType;
287223 
287224  // DQ (9/2/2015): This typedef is no longer used, we can't define the
287225  // comment here (changed to be a C style comment and not be a doxygen comment).
287226  /* \brief Typedef used to hold memory addresses as values.
287227  */
287228  // typedef unsigned long AddressType;
287229 
287230 
287231 
287232  // necessary, to have direct access to the p_freepointer and the private methods !
287234  friend class AST_FILE_IO;
287235 
287237  friend class SgFloat128ValStorageClass;
287238 
287240  friend class AstSpecificDataManagingClass;
287241 
287243  friend class AstSpecificDataManagingClassStorageClass;
287244 
287245  public:
287247  SgFloat128Val( const SgFloat128ValStorageClass& source );
287248 
287249  // private: // JJW hack
287250  /*
287251  name AST Memory Allocation Support Variables
287252  Memory allocations support variables
287253 
287254  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
287255  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
287256  and support the AST File I/O Mechanism.
287257  */
287258  /* */
287259 
287260  public:
287261 
287262  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
287263  // to current node (so that it will work cleanly with build functions to specify patterns).
287264  // virtual SgNode* addRegExpAttribute();
287270  SgFloat128Val* addRegExpAttribute(std::string s, AstRegExAttribute* a);
287271 
287272 // *** COMMON CODE SECTION ENDS HERE ***
287273 
287274 
287275 // End of memberFunctionString
287276 // Start of memberFunctionString
287277 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
287278 
287279  // the generated cast function
287280  // friend ROSE_DLL_API SgFloat128Val* isSgFloat128Val ( SgNode* s );
287281 
287282  typedef SgValueExp base_node_type;
287283 
287284 
287285 // End of memberFunctionString
287286 // Start of memberFunctionString
287287 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
287288 
287289  SgType* get_type() const override;
287290 
287291 
287292 // End of memberFunctionString
287293 // Start of memberFunctionString
287294 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
287295 
287296  void post_construction_initialization() override;
287297 
287298 
287299 // End of memberFunctionString
287300 
287301  public:
287302  long double get_value() const;
287303  void set_value(long double value);
287304 
287305  public:
287306  std::string get_valueString() const;
287307  void set_valueString(std::string valueString);
287308 
287309 
287310  public:
287311  virtual ~SgFloat128Val();
287312 
287313 
287314  public:
287315  SgFloat128Val(Sg_File_Info* startOfConstruct , long double value = 0.0, std::string valueString = "");
287316  SgFloat128Val(long double value, std::string valueString);
287317 
287318  protected:
287319 // Start of memberFunctionString
287320 long double p_value;
287321 
287322 // End of memberFunctionString
287323 // Start of memberFunctionString
287324 std::string p_valueString;
287325 
287326 // End of memberFunctionString
287327 
287328 
287329 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
287330 
287331 
287332  };
287333 #endif
287334 
287335 // postdeclarations for SgFloat128Val
287336 
287337 /* #line 287338 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
287338 
287339 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
287340 
287341 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
287342 
287343 
287344 /* #line 287345 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
287345 
287346 
287347 
287348 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
287349 
287350 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
287351 // This code is automatically generated for each
287352 // terminal and non-terminal within the defined
287353 // grammar. There is a simple way to change the
287354 // code to fix bugs etc. See the ROSE README file
287355 // for directions.
287356 
287357 // tps: (02/22/2010): Adding DLL export requirements
287358 #include "rosedll.h"
287359 
287360 // predeclarations for SgVoidVal
287361 
287362 /* #line 287363 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
287363 
287364 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
287365 
287366 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
287367 
287368 #if 1
287369 // Class Definition for SgVoidVal
287370 class ROSE_DLL_API SgVoidVal : public SgValueExp
287371  {
287372  public:
287373 
287374 
287375 /* #line 287376 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
287376 
287377  virtual SgNode* copy ( SgCopyHelp& help) const override;
287378 // Start of memberFunctionString
287379 /* #line 561 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
287380 
287381 
287382 
287383 // End of memberFunctionString
287384 // Start of memberFunctionString
287385 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
287386 
287387 // *** COMMON CODE SECTION BEGINS HERE ***
287388 
287389  public:
287390 
287391  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
287392  // and not required which is required to match the other aspects of the copy mechanism code generation.
287393  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
287394  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
287395  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
287396  // virtual SgNode* copy ( const SgCopyHelp & help) const;
287397 
287399  virtual std::string class_name() const override;
287400 
287402  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
287403 
287405  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
287406  // static const VariantT static_variant = V_SgVoidVal;
287407  enum { static_variant = V_SgVoidVal };
287408 
287409  /* the generated cast function */
287411  ROSE_DLL_API friend SgVoidVal* isSgVoidVal( SgNode * s );
287412 
287414  ROSE_DLL_API friend const SgVoidVal* isSgVoidVal( const SgNode * s );
287415 
287416  // ******************************************
287417  // * Memory Pool / New / Delete
287418  // ******************************************
287419 
287420  public:
287422  static const unsigned pool_size; //
287424  static std::vector<unsigned char *> pools; //
287426  static SgVoidVal * next_node; //
287427 
287429  static unsigned long initializeStorageClassArray(SgVoidValStorageClass *); //
287430 
287432  static void clearMemoryPool(); //
287433  static void deleteMemoryPool(); //
287434 
287436  static void extendMemoryPoolForFileIO(); //
287437 
287439  static SgVoidVal * getPointerFromGlobalIndex(unsigned long); //
287441  static SgVoidVal * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
287442 
287444  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
287446  static void resetValidFreepointers(); //
287448  static unsigned long getNumberOfLastValidPointer(); //
287449 
287450 
287451 #if defined(INLINE_FUNCTIONS)
287452 
287453  inline void *operator new (size_t size);
287454 #else
287455 
287456  void *operator new (size_t size);
287457 #endif
287458 
287459  void operator delete (void* pointer, size_t size);
287460 
287461  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
287462  void operator delete (void* pointer)
287463  {
287464  // This is the generated delete operator...
287465  SgVoidVal::operator delete (pointer,sizeof(SgVoidVal));
287466  }
287467 
287469  static size_t numberOfNodes();
287470 
287472  static size_t memoryUsage();
287473 
287474  // End of scope which started in IR nodes specific code
287475  /* */
287476 
287477  /* name Internal Functions
287478  \brief Internal functions ... incomplete-documentation
287479 
287480  These functions have been made public as part of the design, but they are suggested for internal use
287481  or by particularly knowledgeable users for specialized tools or applications.
287482 
287483  \internal We could not make these private because they are required by user for special purposes. And
287484  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
287485 
287486  */
287487 
287488  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
287489  // overridden in every class by *generated* implementation
287491  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
287492  // MS: 06/28/02 container of names of variables or container indices
287493  // used used in the traversal to access AST successor nodes
287494  // overridden in every class by *generated* implementation
287497  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
287498 
287499  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
287500  // than all the vector copies. The implementation for these functions is generated for each class.
287502  virtual size_t get_numberOfTraversalSuccessors() override;
287504  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
287506  virtual size_t get_childIndex(SgNode *child) override;
287507 
287508 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
287509  // MS: 08/16/2002 method for generating RTI information
287511  virtual RTIReturnType roseRTI() override;
287512 #endif
287513  /* */
287514 
287515 
287516 
287517  /* name Deprecated Functions
287518  \brief Deprecated functions ... incomplete-documentation
287519 
287520  These functions have been deprecated from use.
287521  */
287522  /* */
287523 
287525  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
287526 
287527  // JJW (10/16/2008): Changed to a single function in Node.code, and put
287528  // getVariant() in #if 0 block to prevent confusing Doxygen
287529 #if 0
287530 
287531  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
287533  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
287534 #endif
287535  /* */
287536 
287537 
287538 
287539 
287540  public:
287541  /* name Traversal Support Functions
287542  \brief Traversal support functions ... incomplete-documentation
287543 
287544  These functions have been made public as part of the design, but they are suggested for internal use
287545  or by particularly knowledgable users for specialized tools or applications.
287546  */
287547  /* */
287548 
287549  // DQ (11/26/2005): Support for visitor pattern mechanims
287550  // (inferior to ROSE traversal mechanism, experimental).
287554 
287555  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
287557  virtual void accept (ROSE_VisitorPattern & visitor) override;
287558 
287559  // DQ (12/26/2005): Support for traversal based on the memory pool
287562  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
287563 
287566  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
287567 
287568  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
287569  // This traversal helps support internal tools that call static member functions.
287570  // note: this function operates on the memory pools.
287573  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
287574  /* */
287575 
287576 
287577  public:
287578  /* name Memory Allocation Functions
287579  \brief Memory allocations functions ... incomplete-documentation
287580 
287581  These functions have been made public as part of the design, but they are suggested for internal use
287582  or by particularly knowledgable users for specialized tools or applications.
287583  */
287584  /* */
287585 
287596  virtual bool isInMemoryPool() override;
287597 
287608  virtual void checkDataMemberPointersIfInMemoryPool() override;
287609 
287610  // DQ (4/30/2006): Modified to be a const function.
287625  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
287626 
287636  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
287637 
287649  virtual long getChildIndex( SgNode* childNode ) const override;
287650 
287651  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
287652  // comment here (changed to be a C style comment and not be a doxygen comment).
287653  /* \brief Constructor for use by AST File I/O Mechanism
287654 
287655  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
287656  which obtained via fast binary file I/O from disk.
287657  */
287658  // SgVoidVal( SgVoidValStorageClass& source );
287659 
287660 
287661 
287662 
287663 
287664  // JH (10/24/2005): methods added to support the ast file IO
287665  private:
287666 
287667  /* name AST Memory Allocation Support Functions
287668  \brief Memory allocations support....
287669 
287670  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
287671  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
287672  and support the AST File I/O Mechanism.
287673  */
287674  /* */
287675 
287676  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
287677  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
287678  that I use the same type everywhere, if any changes are made. THe second one declares the type
287679  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
287680  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
287681  a correspinding one in the AST_FILE_IO class!
287682  */
287683  // DQ (9/2/2015): This typedef is no longer used, we can't define the
287684  // comment here (changed to be a C style comment and not be a doxygen comment).
287685  /* \brief Typedef used for low level memory access.
287686  */
287687  // typedef unsigned char* TestType;
287688 
287689  // DQ (9/2/2015): This typedef is no longer used, we can't define the
287690  // comment here (changed to be a C style comment and not be a doxygen comment).
287691  /* \brief Typedef used to hold memory addresses as values.
287692  */
287693  // typedef unsigned long AddressType;
287694 
287695 
287696 
287697  // necessary, to have direct access to the p_freepointer and the private methods !
287699  friend class AST_FILE_IO;
287700 
287702  friend class SgVoidValStorageClass;
287703 
287705  friend class AstSpecificDataManagingClass;
287706 
287708  friend class AstSpecificDataManagingClassStorageClass;
287709 
287710  public:
287712  SgVoidVal( const SgVoidValStorageClass& source );
287713 
287714  // private: // JJW hack
287715  /*
287716  name AST Memory Allocation Support Variables
287717  Memory allocations support variables
287718 
287719  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
287720  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
287721  and support the AST File I/O Mechanism.
287722  */
287723  /* */
287724 
287725  public:
287726 
287727  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
287728  // to current node (so that it will work cleanly with build functions to specify patterns).
287729  // virtual SgNode* addRegExpAttribute();
287735  SgVoidVal* addRegExpAttribute(std::string s, AstRegExAttribute* a);
287736 
287737 // *** COMMON CODE SECTION ENDS HERE ***
287738 
287739 
287740 // End of memberFunctionString
287741 // Start of memberFunctionString
287742 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
287743 
287744  // the generated cast function
287745  // friend ROSE_DLL_API SgVoidVal* isSgVoidVal ( SgNode* s );
287746 
287747  typedef SgValueExp base_node_type;
287748 
287749 
287750 // End of memberFunctionString
287751 // Start of memberFunctionString
287752 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
287753 
287754  SgType* get_type() const override;
287755 
287756 
287757 // End of memberFunctionString
287758 // Start of memberFunctionString
287759 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
287760 
287761  void post_construction_initialization() override;
287762 
287763 
287764 // End of memberFunctionString
287765 
287766 
287767  public:
287768  virtual ~SgVoidVal();
287769 
287770 
287771  public:
287772  SgVoidVal(Sg_File_Info* startOfConstruct );
287773  SgVoidVal();
287774 
287775  protected:
287776 
287777 
287778 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
287779 
287780 
287781  };
287782 #endif
287783 
287784 // postdeclarations for SgVoidVal
287785 
287786 /* #line 287787 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
287787 
287788 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
287789 
287790 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
287791 
287792 
287793 /* #line 287794 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
287794 
287795 
287796 
287797 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
287798 
287799 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
287800 // This code is automatically generated for each
287801 // terminal and non-terminal within the defined
287802 // grammar. There is a simple way to change the
287803 // code to fix bugs etc. See the ROSE README file
287804 // for directions.
287805 
287806 // tps: (02/22/2010): Adding DLL export requirements
287807 #include "rosedll.h"
287808 
287809 // predeclarations for SgCallExpression
287810 
287811 /* #line 287812 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
287812 
287813 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
287814 
287815 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
287816 
287817 #if 1
287818 // Class Definition for SgCallExpression
287819 class ROSE_DLL_API SgCallExpression : public SgExpression
287820  {
287821  public:
287822 
287823 
287824 /* #line 287825 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
287825 
287826  virtual SgNode* copy ( SgCopyHelp& help) const override;
287827 // Start of memberFunctionString
287828 /* #line 184 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
287829 
287830  SgExpression *get_next( int& n) const ROSE_DEPRECATED_FUNCTION;
287831  int replace_expression( SgExpression *, SgExpression *) override ROSE_DEPRECATED_FUNCTION;
287832 
287833 
287834 // End of memberFunctionString
287835 // Start of memberFunctionString
287836 /* #line 731 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
287837 
287838 /* #line 196 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
287839 
287840  void append_arg(SgExpression* what);
287841  // void insert_arg(const SgExpression::iterator & where, SgExpression* what);
287842  // void insert_arg(const SgExpressionPtrList::iterator & where, SgExpression* what);
287843 
287844 
287845 
287846 
287847 // End of memberFunctionString
287848 // Start of memberFunctionString
287849 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
287850 
287851 // *** COMMON CODE SECTION BEGINS HERE ***
287852 
287853  public:
287854 
287855  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
287856  // and not required which is required to match the other aspects of the copy mechanism code generation.
287857  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
287858  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
287859  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
287860  // virtual SgNode* copy ( const SgCopyHelp & help) const;
287861 
287863  virtual std::string class_name() const override;
287864 
287866  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
287867 
287869  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
287870  // static const VariantT static_variant = V_SgCallExpression;
287871  enum { static_variant = V_SgCallExpression };
287872 
287873  /* the generated cast function */
287875  ROSE_DLL_API friend SgCallExpression* isSgCallExpression( SgNode * s );
287876 
287878  ROSE_DLL_API friend const SgCallExpression* isSgCallExpression( const SgNode * s );
287879 
287880  // ******************************************
287881  // * Memory Pool / New / Delete
287882  // ******************************************
287883 
287884  public:
287886  static const unsigned pool_size; //
287888  static std::vector<unsigned char *> pools; //
287890  static SgCallExpression * next_node; //
287891 
287893  static unsigned long initializeStorageClassArray(SgCallExpressionStorageClass *); //
287894 
287896  static void clearMemoryPool(); //
287897  static void deleteMemoryPool(); //
287898 
287900  static void extendMemoryPoolForFileIO(); //
287901 
287903  static SgCallExpression * getPointerFromGlobalIndex(unsigned long); //
287905  static SgCallExpression * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
287906 
287908  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
287910  static void resetValidFreepointers(); //
287912  static unsigned long getNumberOfLastValidPointer(); //
287913 
287914 
287915 #if defined(INLINE_FUNCTIONS)
287916 
287917  inline void *operator new (size_t size);
287918 #else
287919 
287920  void *operator new (size_t size);
287921 #endif
287922 
287923  void operator delete (void* pointer, size_t size);
287924 
287925  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
287926  void operator delete (void* pointer)
287927  {
287928  // This is the generated delete operator...
287929  SgCallExpression::operator delete (pointer,sizeof(SgCallExpression));
287930  }
287931 
287933  static size_t numberOfNodes();
287934 
287936  static size_t memoryUsage();
287937 
287938  // End of scope which started in IR nodes specific code
287939  /* */
287940 
287941  /* name Internal Functions
287942  \brief Internal functions ... incomplete-documentation
287943 
287944  These functions have been made public as part of the design, but they are suggested for internal use
287945  or by particularly knowledgeable users for specialized tools or applications.
287946 
287947  \internal We could not make these private because they are required by user for special purposes. And
287948  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
287949 
287950  */
287951 
287952  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
287953  // overridden in every class by *generated* implementation
287955  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
287956  // MS: 06/28/02 container of names of variables or container indices
287957  // used used in the traversal to access AST successor nodes
287958  // overridden in every class by *generated* implementation
287961  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
287962 
287963  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
287964  // than all the vector copies. The implementation for these functions is generated for each class.
287966  virtual size_t get_numberOfTraversalSuccessors() override;
287968  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
287970  virtual size_t get_childIndex(SgNode *child) override;
287971 
287972 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
287973  // MS: 08/16/2002 method for generating RTI information
287975  virtual RTIReturnType roseRTI() override;
287976 #endif
287977  /* */
287978 
287979 
287980 
287981  /* name Deprecated Functions
287982  \brief Deprecated functions ... incomplete-documentation
287983 
287984  These functions have been deprecated from use.
287985  */
287986  /* */
287987 
287989  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
287990 
287991  // JJW (10/16/2008): Changed to a single function in Node.code, and put
287992  // getVariant() in #if 0 block to prevent confusing Doxygen
287993 #if 0
287994 
287995  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
287997  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
287998 #endif
287999  /* */
288000 
288001 
288002 
288003 
288004  public:
288005  /* name Traversal Support Functions
288006  \brief Traversal support functions ... incomplete-documentation
288007 
288008  These functions have been made public as part of the design, but they are suggested for internal use
288009  or by particularly knowledgable users for specialized tools or applications.
288010  */
288011  /* */
288012 
288013  // DQ (11/26/2005): Support for visitor pattern mechanims
288014  // (inferior to ROSE traversal mechanism, experimental).
288018 
288019  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
288021  virtual void accept (ROSE_VisitorPattern & visitor) override;
288022 
288023  // DQ (12/26/2005): Support for traversal based on the memory pool
288026  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
288027 
288030  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
288031 
288032  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
288033  // This traversal helps support internal tools that call static member functions.
288034  // note: this function operates on the memory pools.
288037  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
288038  /* */
288039 
288040 
288041  public:
288042  /* name Memory Allocation Functions
288043  \brief Memory allocations functions ... incomplete-documentation
288044 
288045  These functions have been made public as part of the design, but they are suggested for internal use
288046  or by particularly knowledgable users for specialized tools or applications.
288047  */
288048  /* */
288049 
288060  virtual bool isInMemoryPool() override;
288061 
288072  virtual void checkDataMemberPointersIfInMemoryPool() override;
288073 
288074  // DQ (4/30/2006): Modified to be a const function.
288089  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
288090 
288100  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
288101 
288113  virtual long getChildIndex( SgNode* childNode ) const override;
288114 
288115  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
288116  // comment here (changed to be a C style comment and not be a doxygen comment).
288117  /* \brief Constructor for use by AST File I/O Mechanism
288118 
288119  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
288120  which obtained via fast binary file I/O from disk.
288121  */
288122  // SgCallExpression( SgCallExpressionStorageClass& source );
288123 
288124 
288125 
288126 
288127 
288128  // JH (10/24/2005): methods added to support the ast file IO
288129  private:
288130 
288131  /* name AST Memory Allocation Support Functions
288132  \brief Memory allocations support....
288133 
288134  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
288135  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
288136  and support the AST File I/O Mechanism.
288137  */
288138  /* */
288139 
288140  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
288141  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
288142  that I use the same type everywhere, if any changes are made. THe second one declares the type
288143  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
288144  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
288145  a correspinding one in the AST_FILE_IO class!
288146  */
288147  // DQ (9/2/2015): This typedef is no longer used, we can't define the
288148  // comment here (changed to be a C style comment and not be a doxygen comment).
288149  /* \brief Typedef used for low level memory access.
288150  */
288151  // typedef unsigned char* TestType;
288152 
288153  // DQ (9/2/2015): This typedef is no longer used, we can't define the
288154  // comment here (changed to be a C style comment and not be a doxygen comment).
288155  /* \brief Typedef used to hold memory addresses as values.
288156  */
288157  // typedef unsigned long AddressType;
288158 
288159 
288160 
288161  // necessary, to have direct access to the p_freepointer and the private methods !
288163  friend class AST_FILE_IO;
288164 
288166  friend class SgCallExpressionStorageClass;
288167 
288169  friend class AstSpecificDataManagingClass;
288170 
288172  friend class AstSpecificDataManagingClassStorageClass;
288173 
288174  public:
288176  SgCallExpression( const SgCallExpressionStorageClass& source );
288177 
288178  // private: // JJW hack
288179  /*
288180  name AST Memory Allocation Support Variables
288181  Memory allocations support variables
288182 
288183  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
288184  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
288185  and support the AST File I/O Mechanism.
288186  */
288187  /* */
288188 
288189  public:
288190 
288191  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
288192  // to current node (so that it will work cleanly with build functions to specify patterns).
288193  // virtual SgNode* addRegExpAttribute();
288200 
288201 // *** COMMON CODE SECTION ENDS HERE ***
288202 
288203 
288204 // End of memberFunctionString
288205 // Start of memberFunctionString
288206 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
288207 
288208  // the generated cast function
288209  // friend ROSE_DLL_API SgCallExpression* isSgCallExpression ( SgNode* s );
288210 
288211  typedef SgExpression base_node_type;
288212 
288213 
288214 // End of memberFunctionString
288215 // Start of memberFunctionString
288216 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
288217 
288218  SgType* get_type() const override;
288219 
288220 
288221 // End of memberFunctionString
288222 // Start of memberFunctionString
288223 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
288224 
288225  void post_construction_initialization() override;
288226 
288227 
288228 // End of memberFunctionString
288229 
288230  public:
288231  SgExpression* get_function() const;
288232  void set_function(SgExpression* function);
288233 
288234  public:
288235  SgExprListExp* get_args() const;
288236  void set_args(SgExprListExp* args);
288237 
288238 
288239 
288240  public:
288241  virtual ~SgCallExpression();
288242 
288243 
288244  public:
288245  SgCallExpression(Sg_File_Info* startOfConstruct , SgExpression* function = NULL, SgExprListExp* args = NULL, SgType* expression_type = NULL);
288246  SgCallExpression(SgExpression* function, SgExprListExp* args, SgType* expression_type);
288247 
288248  protected:
288249 // Start of memberFunctionString
288251 
288252 // End of memberFunctionString
288253 // Start of memberFunctionString
288255 
288256 // End of memberFunctionString
288257 // Start of memberFunctionString
288259 
288260 // End of memberFunctionString
288261 
288262 
288263 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
288264 
288265 
288266  };
288267 #endif
288268 
288269 // postdeclarations for SgCallExpression
288270 
288271 /* #line 288272 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
288272 
288273 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
288274 
288275 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
288276 
288277 
288278 /* #line 288279 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
288279 
288280 
288281 
288282 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
288283 
288284 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
288285 // This code is automatically generated for each
288286 // terminal and non-terminal within the defined
288287 // grammar. There is a simple way to change the
288288 // code to fix bugs etc. See the ROSE README file
288289 // for directions.
288290 
288291 // tps: (02/22/2010): Adding DLL export requirements
288292 #include "rosedll.h"
288293 
288294 // predeclarations for SgFunctionCallExp
288295 
288296 /* #line 288297 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
288297 
288298 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
288299 
288300 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
288301 
288302 #if 1
288303 // Class Definition for SgFunctionCallExp
288304 class ROSE_DLL_API SgFunctionCallExp : public SgCallExpression
288305  {
288306  public:
288307 
288308 
288309 /* #line 288310 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
288310 
288311  virtual SgNode* copy ( SgCopyHelp& help) const override;
288312 // Start of memberFunctionString
288313 /* #line 735 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
288314 
288315 
288316 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
288317  virtual unsigned int cfgIndexForEnd() const override;
288318  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
288319  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
288320 #endif
288321 
288326  SgFunctionDeclaration* getAssociatedFunctionDeclaration() const;
288327 
288332  SgFunctionSymbol* getAssociatedFunctionSymbol() const;
288333 
288334  // get lvalue
288335  virtual bool isLValue() const override;
288336  virtual bool isChildUsedAsLValue(const SgExpression* child) const override; // INTERNAL Recursively call up the chain to answer the child
288337 
288338 
288339 
288340 // End of memberFunctionString
288341 // Start of memberFunctionString
288342 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
288343 
288344 // *** COMMON CODE SECTION BEGINS HERE ***
288345 
288346  public:
288347 
288348  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
288349  // and not required which is required to match the other aspects of the copy mechanism code generation.
288350  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
288351  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
288352  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
288353  // virtual SgNode* copy ( const SgCopyHelp & help) const;
288354 
288356  virtual std::string class_name() const override;
288357 
288359  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
288360 
288362  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
288363  // static const VariantT static_variant = V_SgFunctionCallExp;
288364  enum { static_variant = V_SgFunctionCallExp };
288365 
288366  /* the generated cast function */
288368  ROSE_DLL_API friend SgFunctionCallExp* isSgFunctionCallExp( SgNode * s );
288369 
288371  ROSE_DLL_API friend const SgFunctionCallExp* isSgFunctionCallExp( const SgNode * s );
288372 
288373  // ******************************************
288374  // * Memory Pool / New / Delete
288375  // ******************************************
288376 
288377  public:
288379  static const unsigned pool_size; //
288381  static std::vector<unsigned char *> pools; //
288383  static SgFunctionCallExp * next_node; //
288384 
288386  static unsigned long initializeStorageClassArray(SgFunctionCallExpStorageClass *); //
288387 
288389  static void clearMemoryPool(); //
288390  static void deleteMemoryPool(); //
288391 
288393  static void extendMemoryPoolForFileIO(); //
288394 
288396  static SgFunctionCallExp * getPointerFromGlobalIndex(unsigned long); //
288398  static SgFunctionCallExp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
288399 
288401  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
288403  static void resetValidFreepointers(); //
288405  static unsigned long getNumberOfLastValidPointer(); //
288406 
288407 
288408 #if defined(INLINE_FUNCTIONS)
288409 
288410  inline void *operator new (size_t size);
288411 #else
288412 
288413  void *operator new (size_t size);
288414 #endif
288415 
288416  void operator delete (void* pointer, size_t size);
288417 
288418  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
288419  void operator delete (void* pointer)
288420  {
288421  // This is the generated delete operator...
288422  SgFunctionCallExp::operator delete (pointer,sizeof(SgFunctionCallExp));
288423  }
288424 
288426  static size_t numberOfNodes();
288427 
288429  static size_t memoryUsage();
288430 
288431  // End of scope which started in IR nodes specific code
288432  /* */
288433 
288434  /* name Internal Functions
288435  \brief Internal functions ... incomplete-documentation
288436 
288437  These functions have been made public as part of the design, but they are suggested for internal use
288438  or by particularly knowledgeable users for specialized tools or applications.
288439 
288440  \internal We could not make these private because they are required by user for special purposes. And
288441  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
288442 
288443  */
288444 
288445  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
288446  // overridden in every class by *generated* implementation
288448  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
288449  // MS: 06/28/02 container of names of variables or container indices
288450  // used used in the traversal to access AST successor nodes
288451  // overridden in every class by *generated* implementation
288454  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
288455 
288456  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
288457  // than all the vector copies. The implementation for these functions is generated for each class.
288459  virtual size_t get_numberOfTraversalSuccessors() override;
288461  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
288463  virtual size_t get_childIndex(SgNode *child) override;
288464 
288465 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
288466  // MS: 08/16/2002 method for generating RTI information
288468  virtual RTIReturnType roseRTI() override;
288469 #endif
288470  /* */
288471 
288472 
288473 
288474  /* name Deprecated Functions
288475  \brief Deprecated functions ... incomplete-documentation
288476 
288477  These functions have been deprecated from use.
288478  */
288479  /* */
288480 
288482  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
288483 
288484  // JJW (10/16/2008): Changed to a single function in Node.code, and put
288485  // getVariant() in #if 0 block to prevent confusing Doxygen
288486 #if 0
288487 
288488  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
288490  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
288491 #endif
288492  /* */
288493 
288494 
288495 
288496 
288497  public:
288498  /* name Traversal Support Functions
288499  \brief Traversal support functions ... incomplete-documentation
288500 
288501  These functions have been made public as part of the design, but they are suggested for internal use
288502  or by particularly knowledgable users for specialized tools or applications.
288503  */
288504  /* */
288505 
288506  // DQ (11/26/2005): Support for visitor pattern mechanims
288507  // (inferior to ROSE traversal mechanism, experimental).
288511 
288512  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
288514  virtual void accept (ROSE_VisitorPattern & visitor) override;
288515 
288516  // DQ (12/26/2005): Support for traversal based on the memory pool
288519  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
288520 
288523  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
288524 
288525  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
288526  // This traversal helps support internal tools that call static member functions.
288527  // note: this function operates on the memory pools.
288530  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
288531  /* */
288532 
288533 
288534  public:
288535  /* name Memory Allocation Functions
288536  \brief Memory allocations functions ... incomplete-documentation
288537 
288538  These functions have been made public as part of the design, but they are suggested for internal use
288539  or by particularly knowledgable users for specialized tools or applications.
288540  */
288541  /* */
288542 
288553  virtual bool isInMemoryPool() override;
288554 
288565  virtual void checkDataMemberPointersIfInMemoryPool() override;
288566 
288567  // DQ (4/30/2006): Modified to be a const function.
288582  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
288583 
288593  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
288594 
288606  virtual long getChildIndex( SgNode* childNode ) const override;
288607 
288608  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
288609  // comment here (changed to be a C style comment and not be a doxygen comment).
288610  /* \brief Constructor for use by AST File I/O Mechanism
288611 
288612  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
288613  which obtained via fast binary file I/O from disk.
288614  */
288615  // SgFunctionCallExp( SgFunctionCallExpStorageClass& source );
288616 
288617 
288618 
288619 
288620 
288621  // JH (10/24/2005): methods added to support the ast file IO
288622  private:
288623 
288624  /* name AST Memory Allocation Support Functions
288625  \brief Memory allocations support....
288626 
288627  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
288628  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
288629  and support the AST File I/O Mechanism.
288630  */
288631  /* */
288632 
288633  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
288634  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
288635  that I use the same type everywhere, if any changes are made. THe second one declares the type
288636  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
288637  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
288638  a correspinding one in the AST_FILE_IO class!
288639  */
288640  // DQ (9/2/2015): This typedef is no longer used, we can't define the
288641  // comment here (changed to be a C style comment and not be a doxygen comment).
288642  /* \brief Typedef used for low level memory access.
288643  */
288644  // typedef unsigned char* TestType;
288645 
288646  // DQ (9/2/2015): This typedef is no longer used, we can't define the
288647  // comment here (changed to be a C style comment and not be a doxygen comment).
288648  /* \brief Typedef used to hold memory addresses as values.
288649  */
288650  // typedef unsigned long AddressType;
288651 
288652 
288653 
288654  // necessary, to have direct access to the p_freepointer and the private methods !
288656  friend class AST_FILE_IO;
288657 
288659  friend class SgFunctionCallExpStorageClass;
288660 
288662  friend class AstSpecificDataManagingClass;
288663 
288665  friend class AstSpecificDataManagingClassStorageClass;
288666 
288667  public:
288669  SgFunctionCallExp( const SgFunctionCallExpStorageClass& source );
288670 
288671  // private: // JJW hack
288672  /*
288673  name AST Memory Allocation Support Variables
288674  Memory allocations support variables
288675 
288676  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
288677  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
288678  and support the AST File I/O Mechanism.
288679  */
288680  /* */
288681 
288682  public:
288683 
288684  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
288685  // to current node (so that it will work cleanly with build functions to specify patterns).
288686  // virtual SgNode* addRegExpAttribute();
288693 
288694 // *** COMMON CODE SECTION ENDS HERE ***
288695 
288696 
288697 // End of memberFunctionString
288698 // Start of memberFunctionString
288699 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
288700 
288701  // the generated cast function
288702  // friend ROSE_DLL_API SgFunctionCallExp* isSgFunctionCallExp ( SgNode* s );
288703 
288705 
288706 
288707 // End of memberFunctionString
288708 // Start of memberFunctionString
288709 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
288710 
288711  SgType* get_type() const override;
288712 
288713 
288714 // End of memberFunctionString
288715 // Start of memberFunctionString
288716 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
288717 
288718  void post_construction_initialization() override;
288719 
288720 
288721 // End of memberFunctionString
288722 
288723  public:
288724  bool get_uses_operator_syntax() const;
288725  void set_uses_operator_syntax(bool uses_operator_syntax);
288726 
288727 
288728  public:
288729  virtual ~SgFunctionCallExp();
288730 
288731 
288732  public:
288733  SgFunctionCallExp(Sg_File_Info* startOfConstruct , SgExpression* function = NULL, SgExprListExp* args = NULL, SgType* expression_type = NULL);
288734  SgFunctionCallExp(SgExpression* function, SgExprListExp* args, SgType* expression_type);
288735 
288736  protected:
288737 // Start of memberFunctionString
288738 bool p_uses_operator_syntax;
288739 
288740 // End of memberFunctionString
288741 
288742 
288743 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
288744 
288745 
288746  };
288747 #endif
288748 
288749 // postdeclarations for SgFunctionCallExp
288750 
288751 /* #line 288752 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
288752 
288753 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
288754 
288755 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
288756 
288757 
288758 /* #line 288759 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
288759 
288760 
288761 
288762 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
288763 
288764 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
288765 // This code is automatically generated for each
288766 // terminal and non-terminal within the defined
288767 // grammar. There is a simple way to change the
288768 // code to fix bugs etc. See the ROSE README file
288769 // for directions.
288770 
288771 // tps: (02/22/2010): Adding DLL export requirements
288772 #include "rosedll.h"
288773 
288774 // predeclarations for SgCudaKernelCallExp
288775 
288776 /* #line 288777 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
288777 
288778 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
288779 
288780 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
288781 
288782 #if 1
288783 // Class Definition for SgCudaKernelCallExp
288784 class ROSE_DLL_API SgCudaKernelCallExp : public SgFunctionCallExp
288785  {
288786  public:
288787 
288788 
288789 /* #line 288790 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
288790 
288791  virtual SgNode* copy ( SgCopyHelp& help) const override;
288792 // Start of memberFunctionString
288793 /* #line 1896 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
288794 
288795 
288796 
288797 // End of memberFunctionString
288798 // Start of memberFunctionString
288799 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
288800 
288801 // *** COMMON CODE SECTION BEGINS HERE ***
288802 
288803  public:
288804 
288805  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
288806  // and not required which is required to match the other aspects of the copy mechanism code generation.
288807  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
288808  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
288809  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
288810  // virtual SgNode* copy ( const SgCopyHelp & help) const;
288811 
288813  virtual std::string class_name() const override;
288814 
288816  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
288817 
288819  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
288820  // static const VariantT static_variant = V_SgCudaKernelCallExp;
288821  enum { static_variant = V_SgCudaKernelCallExp };
288822 
288823  /* the generated cast function */
288825  ROSE_DLL_API friend SgCudaKernelCallExp* isSgCudaKernelCallExp( SgNode * s );
288826 
288828  ROSE_DLL_API friend const SgCudaKernelCallExp* isSgCudaKernelCallExp( const SgNode * s );
288829 
288830  // ******************************************
288831  // * Memory Pool / New / Delete
288832  // ******************************************
288833 
288834  public:
288836  static const unsigned pool_size; //
288838  static std::vector<unsigned char *> pools; //
288840  static SgCudaKernelCallExp * next_node; //
288841 
288843  static unsigned long initializeStorageClassArray(SgCudaKernelCallExpStorageClass *); //
288844 
288846  static void clearMemoryPool(); //
288847  static void deleteMemoryPool(); //
288848 
288850  static void extendMemoryPoolForFileIO(); //
288851 
288853  static SgCudaKernelCallExp * getPointerFromGlobalIndex(unsigned long); //
288855  static SgCudaKernelCallExp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
288856 
288858  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
288860  static void resetValidFreepointers(); //
288862  static unsigned long getNumberOfLastValidPointer(); //
288863 
288864 
288865 #if defined(INLINE_FUNCTIONS)
288866 
288867  inline void *operator new (size_t size);
288868 #else
288869 
288870  void *operator new (size_t size);
288871 #endif
288872 
288873  void operator delete (void* pointer, size_t size);
288874 
288875  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
288876  void operator delete (void* pointer)
288877  {
288878  // This is the generated delete operator...
288879  SgCudaKernelCallExp::operator delete (pointer,sizeof(SgCudaKernelCallExp));
288880  }
288881 
288883  static size_t numberOfNodes();
288884 
288886  static size_t memoryUsage();
288887 
288888  // End of scope which started in IR nodes specific code
288889  /* */
288890 
288891  /* name Internal Functions
288892  \brief Internal functions ... incomplete-documentation
288893 
288894  These functions have been made public as part of the design, but they are suggested for internal use
288895  or by particularly knowledgeable users for specialized tools or applications.
288896 
288897  \internal We could not make these private because they are required by user for special purposes. And
288898  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
288899 
288900  */
288901 
288902  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
288903  // overridden in every class by *generated* implementation
288905  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
288906  // MS: 06/28/02 container of names of variables or container indices
288907  // used used in the traversal to access AST successor nodes
288908  // overridden in every class by *generated* implementation
288911  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
288912 
288913  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
288914  // than all the vector copies. The implementation for these functions is generated for each class.
288916  virtual size_t get_numberOfTraversalSuccessors() override;
288918  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
288920  virtual size_t get_childIndex(SgNode *child) override;
288921 
288922 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
288923  // MS: 08/16/2002 method for generating RTI information
288925  virtual RTIReturnType roseRTI() override;
288926 #endif
288927  /* */
288928 
288929 
288930 
288931  /* name Deprecated Functions
288932  \brief Deprecated functions ... incomplete-documentation
288933 
288934  These functions have been deprecated from use.
288935  */
288936  /* */
288937 
288939  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
288940 
288941  // JJW (10/16/2008): Changed to a single function in Node.code, and put
288942  // getVariant() in #if 0 block to prevent confusing Doxygen
288943 #if 0
288944 
288945  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
288947  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
288948 #endif
288949  /* */
288950 
288951 
288952 
288953 
288954  public:
288955  /* name Traversal Support Functions
288956  \brief Traversal support functions ... incomplete-documentation
288957 
288958  These functions have been made public as part of the design, but they are suggested for internal use
288959  or by particularly knowledgable users for specialized tools or applications.
288960  */
288961  /* */
288962 
288963  // DQ (11/26/2005): Support for visitor pattern mechanims
288964  // (inferior to ROSE traversal mechanism, experimental).
288968 
288969  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
288971  virtual void accept (ROSE_VisitorPattern & visitor) override;
288972 
288973  // DQ (12/26/2005): Support for traversal based on the memory pool
288976  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
288977 
288980  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
288981 
288982  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
288983  // This traversal helps support internal tools that call static member functions.
288984  // note: this function operates on the memory pools.
288987  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
288988  /* */
288989 
288990 
288991  public:
288992  /* name Memory Allocation Functions
288993  \brief Memory allocations functions ... incomplete-documentation
288994 
288995  These functions have been made public as part of the design, but they are suggested for internal use
288996  or by particularly knowledgable users for specialized tools or applications.
288997  */
288998  /* */
288999 
289010  virtual bool isInMemoryPool() override;
289011 
289022  virtual void checkDataMemberPointersIfInMemoryPool() override;
289023 
289024  // DQ (4/30/2006): Modified to be a const function.
289039  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
289040 
289050  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
289051 
289063  virtual long getChildIndex( SgNode* childNode ) const override;
289064 
289065  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
289066  // comment here (changed to be a C style comment and not be a doxygen comment).
289067  /* \brief Constructor for use by AST File I/O Mechanism
289068 
289069  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
289070  which obtained via fast binary file I/O from disk.
289071  */
289072  // SgCudaKernelCallExp( SgCudaKernelCallExpStorageClass& source );
289073 
289074 
289075 
289076 
289077 
289078  // JH (10/24/2005): methods added to support the ast file IO
289079  private:
289080 
289081  /* name AST Memory Allocation Support Functions
289082  \brief Memory allocations support....
289083 
289084  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
289085  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
289086  and support the AST File I/O Mechanism.
289087  */
289088  /* */
289089 
289090  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
289091  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
289092  that I use the same type everywhere, if any changes are made. THe second one declares the type
289093  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
289094  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
289095  a correspinding one in the AST_FILE_IO class!
289096  */
289097  // DQ (9/2/2015): This typedef is no longer used, we can't define the
289098  // comment here (changed to be a C style comment and not be a doxygen comment).
289099  /* \brief Typedef used for low level memory access.
289100  */
289101  // typedef unsigned char* TestType;
289102 
289103  // DQ (9/2/2015): This typedef is no longer used, we can't define the
289104  // comment here (changed to be a C style comment and not be a doxygen comment).
289105  /* \brief Typedef used to hold memory addresses as values.
289106  */
289107  // typedef unsigned long AddressType;
289108 
289109 
289110 
289111  // necessary, to have direct access to the p_freepointer and the private methods !
289113  friend class AST_FILE_IO;
289114 
289116  friend class SgCudaKernelCallExpStorageClass;
289117 
289119  friend class AstSpecificDataManagingClass;
289120 
289122  friend class AstSpecificDataManagingClassStorageClass;
289123 
289124  public:
289126  SgCudaKernelCallExp( const SgCudaKernelCallExpStorageClass& source );
289127 
289128  // private: // JJW hack
289129  /*
289130  name AST Memory Allocation Support Variables
289131  Memory allocations support variables
289132 
289133  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
289134  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
289135  and support the AST File I/O Mechanism.
289136  */
289137  /* */
289138 
289139  public:
289140 
289141  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
289142  // to current node (so that it will work cleanly with build functions to specify patterns).
289143  // virtual SgNode* addRegExpAttribute();
289150 
289151 // *** COMMON CODE SECTION ENDS HERE ***
289152 
289153 
289154 // End of memberFunctionString
289155 // Start of memberFunctionString
289156 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
289157 
289158  // the generated cast function
289159  // friend ROSE_DLL_API SgCudaKernelCallExp* isSgCudaKernelCallExp ( SgNode* s );
289160 
289162 
289163 
289164 // End of memberFunctionString
289165 // Start of memberFunctionString
289166 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
289167 
289168  SgType* get_type() const override;
289169 
289170 
289171 // End of memberFunctionString
289172 // Start of memberFunctionString
289173 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
289174 
289175  void post_construction_initialization() override;
289176 
289177 
289178 // End of memberFunctionString
289179 
289180  public:
289181  SgCudaKernelExecConfig* get_exec_config() const;
289182  void set_exec_config(SgCudaKernelExecConfig* exec_config);
289183 
289184 
289185  public:
289186  virtual ~SgCudaKernelCallExp();
289187 
289188 
289189  public:
289190  SgCudaKernelCallExp(Sg_File_Info* startOfConstruct , SgExpression* function = NULL, SgExprListExp* args = NULL, SgType* expression_type = NULL, SgCudaKernelExecConfig* exec_config = NULL);
289191  SgCudaKernelCallExp(SgExpression* function, SgExprListExp* args, SgType* expression_type, SgCudaKernelExecConfig* exec_config);
289192 
289193  protected:
289194 // Start of memberFunctionString
289195 SgCudaKernelExecConfig* p_exec_config;
289196 
289197 // End of memberFunctionString
289198 
289199 
289200 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
289201 
289202 
289203  };
289204 #endif
289205 
289206 // postdeclarations for SgCudaKernelCallExp
289207 
289208 /* #line 289209 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
289209 
289210 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
289211 
289212 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
289213 
289214 
289215 /* #line 289216 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
289216 
289217 
289218 
289219 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
289220 
289221 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
289222 // This code is automatically generated for each
289223 // terminal and non-terminal within the defined
289224 // grammar. There is a simple way to change the
289225 // code to fix bugs etc. See the ROSE README file
289226 // for directions.
289227 
289228 // tps: (02/22/2010): Adding DLL export requirements
289229 #include "rosedll.h"
289230 
289231 // predeclarations for SgSizeOfOp
289232 
289233 /* #line 289234 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
289234 
289235 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
289236 
289237 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
289238 
289239 #if 1
289240 // Class Definition for SgSizeOfOp
289241 class ROSE_DLL_API SgSizeOfOp : public SgExpression
289242  {
289243  public:
289244 
289245 
289246 /* #line 289247 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
289247 
289248  virtual SgNode* copy ( SgCopyHelp& help) const override;
289249 // Start of memberFunctionString
289250 /* #line 978 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
289251 
289252  // Liao, 11/17/2009
289253  int replace_expression(SgExpression*, SgExpression*) override ROSE_DEPRECATED_FUNCTION;
289254 
289255 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
289256  virtual unsigned int cfgIndexForEnd() const override;
289257  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
289258  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
289259 #endif
289260 
289261  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
289262  int get_name_qualification_length() const override;
289263  void set_name_qualification_length(int name_qualification_length) override;
289264 
289265  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
289266  bool get_type_elaboration_required() const override;
289267  void set_type_elaboration_required(bool type_elaboration_required) override;
289268 
289269  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
289270  bool get_global_qualification_required() const override;
289271  void set_global_qualification_required(bool global_qualification_required) override;
289272 
289273  // DQ (4/15/2019): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
289274  int get_name_qualification_for_pointer_to_member_class_length() const override;
289275  void set_name_qualification_for_pointer_to_member_class_length(int name_qualification_length) override;
289276 
289277  // DQ (4/15/2019): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
289278  bool get_type_elaboration_for_pointer_to_member_class_required() const override;
289279  void set_type_elaboration_for_pointer_to_member_class_required(bool type_elaboration_required) override;
289280 
289281  // DQ (4/15/2019): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
289282  bool get_global_qualification_for_pointer_to_member_class_required() const override;
289283  void set_global_qualification_for_pointer_to_member_class_required(bool global_qualification_required) override;
289284 
289285 
289286 
289287 // End of memberFunctionString
289288 // Start of memberFunctionString
289289 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
289290 
289291 // *** COMMON CODE SECTION BEGINS HERE ***
289292 
289293  public:
289294 
289295  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
289296  // and not required which is required to match the other aspects of the copy mechanism code generation.
289297  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
289298  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
289299  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
289300  // virtual SgNode* copy ( const SgCopyHelp & help) const;
289301 
289303  virtual std::string class_name() const override;
289304 
289306  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
289307 
289309  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
289310  // static const VariantT static_variant = V_SgSizeOfOp;
289311  enum { static_variant = V_SgSizeOfOp };
289312 
289313  /* the generated cast function */
289315  ROSE_DLL_API friend SgSizeOfOp* isSgSizeOfOp( SgNode * s );
289316 
289318  ROSE_DLL_API friend const SgSizeOfOp* isSgSizeOfOp( const SgNode * s );
289319 
289320  // ******************************************
289321  // * Memory Pool / New / Delete
289322  // ******************************************
289323 
289324  public:
289326  static const unsigned pool_size; //
289328  static std::vector<unsigned char *> pools; //
289330  static SgSizeOfOp * next_node; //
289331 
289333  static unsigned long initializeStorageClassArray(SgSizeOfOpStorageClass *); //
289334 
289336  static void clearMemoryPool(); //
289337  static void deleteMemoryPool(); //
289338 
289340  static void extendMemoryPoolForFileIO(); //
289341 
289343  static SgSizeOfOp * getPointerFromGlobalIndex(unsigned long); //
289345  static SgSizeOfOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
289346 
289348  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
289350  static void resetValidFreepointers(); //
289352  static unsigned long getNumberOfLastValidPointer(); //
289353 
289354 
289355 #if defined(INLINE_FUNCTIONS)
289356 
289357  inline void *operator new (size_t size);
289358 #else
289359 
289360  void *operator new (size_t size);
289361 #endif
289362 
289363  void operator delete (void* pointer, size_t size);
289364 
289365  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
289366  void operator delete (void* pointer)
289367  {
289368  // This is the generated delete operator...
289369  SgSizeOfOp::operator delete (pointer,sizeof(SgSizeOfOp));
289370  }
289371 
289373  static size_t numberOfNodes();
289374 
289376  static size_t memoryUsage();
289377 
289378  // End of scope which started in IR nodes specific code
289379  /* */
289380 
289381  /* name Internal Functions
289382  \brief Internal functions ... incomplete-documentation
289383 
289384  These functions have been made public as part of the design, but they are suggested for internal use
289385  or by particularly knowledgeable users for specialized tools or applications.
289386 
289387  \internal We could not make these private because they are required by user for special purposes. And
289388  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
289389 
289390  */
289391 
289392  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
289393  // overridden in every class by *generated* implementation
289395  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
289396  // MS: 06/28/02 container of names of variables or container indices
289397  // used used in the traversal to access AST successor nodes
289398  // overridden in every class by *generated* implementation
289401  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
289402 
289403  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
289404  // than all the vector copies. The implementation for these functions is generated for each class.
289406  virtual size_t get_numberOfTraversalSuccessors() override;
289408  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
289410  virtual size_t get_childIndex(SgNode *child) override;
289411 
289412 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
289413  // MS: 08/16/2002 method for generating RTI information
289415  virtual RTIReturnType roseRTI() override;
289416 #endif
289417  /* */
289418 
289419 
289420 
289421  /* name Deprecated Functions
289422  \brief Deprecated functions ... incomplete-documentation
289423 
289424  These functions have been deprecated from use.
289425  */
289426  /* */
289427 
289429  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
289430 
289431  // JJW (10/16/2008): Changed to a single function in Node.code, and put
289432  // getVariant() in #if 0 block to prevent confusing Doxygen
289433 #if 0
289434 
289435  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
289437  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
289438 #endif
289439  /* */
289440 
289441 
289442 
289443 
289444  public:
289445  /* name Traversal Support Functions
289446  \brief Traversal support functions ... incomplete-documentation
289447 
289448  These functions have been made public as part of the design, but they are suggested for internal use
289449  or by particularly knowledgable users for specialized tools or applications.
289450  */
289451  /* */
289452 
289453  // DQ (11/26/2005): Support for visitor pattern mechanims
289454  // (inferior to ROSE traversal mechanism, experimental).
289458 
289459  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
289461  virtual void accept (ROSE_VisitorPattern & visitor) override;
289462 
289463  // DQ (12/26/2005): Support for traversal based on the memory pool
289466  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
289467 
289470  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
289471 
289472  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
289473  // This traversal helps support internal tools that call static member functions.
289474  // note: this function operates on the memory pools.
289477  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
289478  /* */
289479 
289480 
289481  public:
289482  /* name Memory Allocation Functions
289483  \brief Memory allocations functions ... incomplete-documentation
289484 
289485  These functions have been made public as part of the design, but they are suggested for internal use
289486  or by particularly knowledgable users for specialized tools or applications.
289487  */
289488  /* */
289489 
289500  virtual bool isInMemoryPool() override;
289501 
289512  virtual void checkDataMemberPointersIfInMemoryPool() override;
289513 
289514  // DQ (4/30/2006): Modified to be a const function.
289529  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
289530 
289540  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
289541 
289553  virtual long getChildIndex( SgNode* childNode ) const override;
289554 
289555  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
289556  // comment here (changed to be a C style comment and not be a doxygen comment).
289557  /* \brief Constructor for use by AST File I/O Mechanism
289558 
289559  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
289560  which obtained via fast binary file I/O from disk.
289561  */
289562  // SgSizeOfOp( SgSizeOfOpStorageClass& source );
289563 
289564 
289565 
289566 
289567 
289568  // JH (10/24/2005): methods added to support the ast file IO
289569  private:
289570 
289571  /* name AST Memory Allocation Support Functions
289572  \brief Memory allocations support....
289573 
289574  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
289575  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
289576  and support the AST File I/O Mechanism.
289577  */
289578  /* */
289579 
289580  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
289581  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
289582  that I use the same type everywhere, if any changes are made. THe second one declares the type
289583  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
289584  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
289585  a correspinding one in the AST_FILE_IO class!
289586  */
289587  // DQ (9/2/2015): This typedef is no longer used, we can't define the
289588  // comment here (changed to be a C style comment and not be a doxygen comment).
289589  /* \brief Typedef used for low level memory access.
289590  */
289591  // typedef unsigned char* TestType;
289592 
289593  // DQ (9/2/2015): This typedef is no longer used, we can't define the
289594  // comment here (changed to be a C style comment and not be a doxygen comment).
289595  /* \brief Typedef used to hold memory addresses as values.
289596  */
289597  // typedef unsigned long AddressType;
289598 
289599 
289600 
289601  // necessary, to have direct access to the p_freepointer and the private methods !
289603  friend class AST_FILE_IO;
289604 
289606  friend class SgSizeOfOpStorageClass;
289607 
289609  friend class AstSpecificDataManagingClass;
289610 
289612  friend class AstSpecificDataManagingClassStorageClass;
289613 
289614  public:
289616  SgSizeOfOp( const SgSizeOfOpStorageClass& source );
289617 
289618  // private: // JJW hack
289619  /*
289620  name AST Memory Allocation Support Variables
289621  Memory allocations support variables
289622 
289623  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
289624  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
289625  and support the AST File I/O Mechanism.
289626  */
289627  /* */
289628 
289629  public:
289630 
289631  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
289632  // to current node (so that it will work cleanly with build functions to specify patterns).
289633  // virtual SgNode* addRegExpAttribute();
289639  SgSizeOfOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
289640 
289641 // *** COMMON CODE SECTION ENDS HERE ***
289642 
289643 
289644 // End of memberFunctionString
289645 // Start of memberFunctionString
289646 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
289647 
289648  // the generated cast function
289649  // friend ROSE_DLL_API SgSizeOfOp* isSgSizeOfOp ( SgNode* s );
289650 
289651  typedef SgExpression base_node_type;
289652 
289653 
289654 // End of memberFunctionString
289655 // Start of memberFunctionString
289656 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
289657 
289658  SgType* get_type() const override;
289659 
289660 
289661 // End of memberFunctionString
289662 // Start of memberFunctionString
289663 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
289664 
289665  void post_construction_initialization() override;
289666 
289667 
289668 // End of memberFunctionString
289669 
289670  public:
289671  SgExpression* get_operand_expr() const;
289672  void set_operand_expr(SgExpression* operand_expr);
289673 
289674  public:
289675  SgType* get_operand_type() const;
289676  void set_operand_type(SgType* operand_type);
289677 
289678 
289679 
289680 
289681 
289682  public:
289683  bool get_sizeOfContainsBaseTypeDefiningDeclaration() const;
289684  void set_sizeOfContainsBaseTypeDefiningDeclaration(bool sizeOfContainsBaseTypeDefiningDeclaration);
289685 
289686  public:
289687  bool get_is_objectless_nonstatic_data_member_reference() const;
289688  void set_is_objectless_nonstatic_data_member_reference(bool is_objectless_nonstatic_data_member_reference);
289689 
289690 
289691 
289692 
289693 
289694  public:
289695  virtual ~SgSizeOfOp();
289696 
289697 
289698  public:
289699  SgSizeOfOp(Sg_File_Info* startOfConstruct , SgExpression* operand_expr = NULL, SgType* operand_type = NULL, SgType* expression_type = NULL);
289700  SgSizeOfOp(SgExpression* operand_expr, SgType* operand_type, SgType* expression_type);
289701 
289702  protected:
289703 // Start of memberFunctionString
289705 
289706 // End of memberFunctionString
289707 // Start of memberFunctionString
289709 
289710 // End of memberFunctionString
289711 // Start of memberFunctionString
289713 
289714 // End of memberFunctionString
289715 // Start of memberFunctionString
289716 int p_name_qualification_length;
289717 
289718 // End of memberFunctionString
289719 // Start of memberFunctionString
289720 bool p_type_elaboration_required;
289721 
289722 // End of memberFunctionString
289723 // Start of memberFunctionString
289724 bool p_global_qualification_required;
289725 
289726 // End of memberFunctionString
289727 // Start of memberFunctionString
289728 bool p_sizeOfContainsBaseTypeDefiningDeclaration;
289729 
289730 // End of memberFunctionString
289731 // Start of memberFunctionString
289732 bool p_is_objectless_nonstatic_data_member_reference;
289733 
289734 // End of memberFunctionString
289735 // Start of memberFunctionString
289736 int p_name_qualification_for_pointer_to_member_class_length;
289737 
289738 // End of memberFunctionString
289739 // Start of memberFunctionString
289740 bool p_type_elaboration_for_pointer_to_member_class_required;
289741 
289742 // End of memberFunctionString
289743 // Start of memberFunctionString
289744 bool p_global_qualification_for_pointer_to_member_class_required;
289745 
289746 // End of memberFunctionString
289747 
289748 
289749 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
289750 
289751 
289752  };
289753 #endif
289754 
289755 // postdeclarations for SgSizeOfOp
289756 
289757 /* #line 289758 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
289758 
289759 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
289760 
289761 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
289762 
289763 
289764 /* #line 289765 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
289765 
289766 
289767 
289768 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
289769 
289770 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
289771 // This code is automatically generated for each
289772 // terminal and non-terminal within the defined
289773 // grammar. There is a simple way to change the
289774 // code to fix bugs etc. See the ROSE README file
289775 // for directions.
289776 
289777 // tps: (02/22/2010): Adding DLL export requirements
289778 #include "rosedll.h"
289779 
289780 // predeclarations for SgUpcLocalsizeofExpression
289781 
289782 /* #line 289783 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
289783 
289784 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
289785 
289786 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
289787 
289788 #if 1
289789 // Class Definition for SgUpcLocalsizeofExpression
289790 class ROSE_DLL_API SgUpcLocalsizeofExpression : public SgExpression
289791  {
289792  public:
289793 
289794 
289795 /* #line 289796 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
289796 
289797  virtual SgNode* copy ( SgCopyHelp& help) const override;
289798 // Start of memberFunctionString
289799 /* #line 1833 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
289800 
289801 // virtual unsigned int cfgIndexForEnd() const;
289802 // virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index);
289803 // virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index);
289804 
289805 
289806 // End of memberFunctionString
289807 // Start of memberFunctionString
289808 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
289809 
289810 // *** COMMON CODE SECTION BEGINS HERE ***
289811 
289812  public:
289813 
289814  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
289815  // and not required which is required to match the other aspects of the copy mechanism code generation.
289816  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
289817  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
289818  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
289819  // virtual SgNode* copy ( const SgCopyHelp & help) const;
289820 
289822  virtual std::string class_name() const override;
289823 
289825  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
289826 
289828  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
289829  // static const VariantT static_variant = V_SgUpcLocalsizeofExpression;
289830  enum { static_variant = V_SgUpcLocalsizeofExpression };
289831 
289832  /* the generated cast function */
289834  ROSE_DLL_API friend SgUpcLocalsizeofExpression* isSgUpcLocalsizeofExpression( SgNode * s );
289835 
289837  ROSE_DLL_API friend const SgUpcLocalsizeofExpression* isSgUpcLocalsizeofExpression( const SgNode * s );
289838 
289839  // ******************************************
289840  // * Memory Pool / New / Delete
289841  // ******************************************
289842 
289843  public:
289845  static const unsigned pool_size; //
289847  static std::vector<unsigned char *> pools; //
289849  static SgUpcLocalsizeofExpression * next_node; //
289850 
289852  static unsigned long initializeStorageClassArray(SgUpcLocalsizeofExpressionStorageClass *); //
289853 
289855  static void clearMemoryPool(); //
289856  static void deleteMemoryPool(); //
289857 
289859  static void extendMemoryPoolForFileIO(); //
289860 
289862  static SgUpcLocalsizeofExpression * getPointerFromGlobalIndex(unsigned long); //
289864  static SgUpcLocalsizeofExpression * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
289865 
289867  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
289869  static void resetValidFreepointers(); //
289871  static unsigned long getNumberOfLastValidPointer(); //
289872 
289873 
289874 #if defined(INLINE_FUNCTIONS)
289875 
289876  inline void *operator new (size_t size);
289877 #else
289878 
289879  void *operator new (size_t size);
289880 #endif
289881 
289882  void operator delete (void* pointer, size_t size);
289883 
289884  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
289885  void operator delete (void* pointer)
289886  {
289887  // This is the generated delete operator...
289888  SgUpcLocalsizeofExpression::operator delete (pointer,sizeof(SgUpcLocalsizeofExpression));
289889  }
289890 
289892  static size_t numberOfNodes();
289893 
289895  static size_t memoryUsage();
289896 
289897  // End of scope which started in IR nodes specific code
289898  /* */
289899 
289900  /* name Internal Functions
289901  \brief Internal functions ... incomplete-documentation
289902 
289903  These functions have been made public as part of the design, but they are suggested for internal use
289904  or by particularly knowledgeable users for specialized tools or applications.
289905 
289906  \internal We could not make these private because they are required by user for special purposes. And
289907  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
289908 
289909  */
289910 
289911  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
289912  // overridden in every class by *generated* implementation
289914  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
289915  // MS: 06/28/02 container of names of variables or container indices
289916  // used used in the traversal to access AST successor nodes
289917  // overridden in every class by *generated* implementation
289920  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
289921 
289922  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
289923  // than all the vector copies. The implementation for these functions is generated for each class.
289925  virtual size_t get_numberOfTraversalSuccessors() override;
289927  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
289929  virtual size_t get_childIndex(SgNode *child) override;
289930 
289931 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
289932  // MS: 08/16/2002 method for generating RTI information
289934  virtual RTIReturnType roseRTI() override;
289935 #endif
289936  /* */
289937 
289938 
289939 
289940  /* name Deprecated Functions
289941  \brief Deprecated functions ... incomplete-documentation
289942 
289943  These functions have been deprecated from use.
289944  */
289945  /* */
289946 
289948  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
289949 
289950  // JJW (10/16/2008): Changed to a single function in Node.code, and put
289951  // getVariant() in #if 0 block to prevent confusing Doxygen
289952 #if 0
289953 
289954  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
289956  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
289957 #endif
289958  /* */
289959 
289960 
289961 
289962 
289963  public:
289964  /* name Traversal Support Functions
289965  \brief Traversal support functions ... incomplete-documentation
289966 
289967  These functions have been made public as part of the design, but they are suggested for internal use
289968  or by particularly knowledgable users for specialized tools or applications.
289969  */
289970  /* */
289971 
289972  // DQ (11/26/2005): Support for visitor pattern mechanims
289973  // (inferior to ROSE traversal mechanism, experimental).
289977 
289978  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
289980  virtual void accept (ROSE_VisitorPattern & visitor) override;
289981 
289982  // DQ (12/26/2005): Support for traversal based on the memory pool
289985  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
289986 
289989  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
289990 
289991  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
289992  // This traversal helps support internal tools that call static member functions.
289993  // note: this function operates on the memory pools.
289996  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
289997  /* */
289998 
289999 
290000  public:
290001  /* name Memory Allocation Functions
290002  \brief Memory allocations functions ... incomplete-documentation
290003 
290004  These functions have been made public as part of the design, but they are suggested for internal use
290005  or by particularly knowledgable users for specialized tools or applications.
290006  */
290007  /* */
290008 
290019  virtual bool isInMemoryPool() override;
290020 
290031  virtual void checkDataMemberPointersIfInMemoryPool() override;
290032 
290033  // DQ (4/30/2006): Modified to be a const function.
290048  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
290049 
290059  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
290060 
290072  virtual long getChildIndex( SgNode* childNode ) const override;
290073 
290074  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
290075  // comment here (changed to be a C style comment and not be a doxygen comment).
290076  /* \brief Constructor for use by AST File I/O Mechanism
290077 
290078  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
290079  which obtained via fast binary file I/O from disk.
290080  */
290081  // SgUpcLocalsizeofExpression( SgUpcLocalsizeofExpressionStorageClass& source );
290082 
290083 
290084 
290085 
290086 
290087  // JH (10/24/2005): methods added to support the ast file IO
290088  private:
290089 
290090  /* name AST Memory Allocation Support Functions
290091  \brief Memory allocations support....
290092 
290093  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
290094  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
290095  and support the AST File I/O Mechanism.
290096  */
290097  /* */
290098 
290099  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
290100  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
290101  that I use the same type everywhere, if any changes are made. THe second one declares the type
290102  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
290103  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
290104  a correspinding one in the AST_FILE_IO class!
290105  */
290106  // DQ (9/2/2015): This typedef is no longer used, we can't define the
290107  // comment here (changed to be a C style comment and not be a doxygen comment).
290108  /* \brief Typedef used for low level memory access.
290109  */
290110  // typedef unsigned char* TestType;
290111 
290112  // DQ (9/2/2015): This typedef is no longer used, we can't define the
290113  // comment here (changed to be a C style comment and not be a doxygen comment).
290114  /* \brief Typedef used to hold memory addresses as values.
290115  */
290116  // typedef unsigned long AddressType;
290117 
290118 
290119 
290120  // necessary, to have direct access to the p_freepointer and the private methods !
290122  friend class AST_FILE_IO;
290123 
290125  friend class SgUpcLocalsizeofExpressionStorageClass;
290126 
290128  friend class AstSpecificDataManagingClass;
290129 
290131  friend class AstSpecificDataManagingClassStorageClass;
290132 
290133  public:
290135  SgUpcLocalsizeofExpression( const SgUpcLocalsizeofExpressionStorageClass& source );
290136 
290137  // private: // JJW hack
290138  /*
290139  name AST Memory Allocation Support Variables
290140  Memory allocations support variables
290141 
290142  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
290143  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
290144  and support the AST File I/O Mechanism.
290145  */
290146  /* */
290147 
290148  public:
290149 
290150  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
290151  // to current node (so that it will work cleanly with build functions to specify patterns).
290152  // virtual SgNode* addRegExpAttribute();
290159 
290160 // *** COMMON CODE SECTION ENDS HERE ***
290161 
290162 
290163 // End of memberFunctionString
290164 // Start of memberFunctionString
290165 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
290166 
290167  // the generated cast function
290168  // friend ROSE_DLL_API SgUpcLocalsizeofExpression* isSgUpcLocalsizeofExpression ( SgNode* s );
290169 
290170  typedef SgExpression base_node_type;
290171 
290172 
290173 // End of memberFunctionString
290174 // Start of memberFunctionString
290175 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
290176 
290177  SgType* get_type() const override;
290178 
290179 
290180 // End of memberFunctionString
290181 // Start of memberFunctionString
290182 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
290183 
290184  void post_construction_initialization() override;
290185 
290186 
290187 // End of memberFunctionString
290188 
290189  public:
290190  SgExpression* get_expression() const;
290191  void set_expression(SgExpression* expression);
290192 
290193  public:
290194  SgType* get_operand_type() const;
290195  void set_operand_type(SgType* operand_type);
290196 
290197 
290198 
290199  public:
290200  virtual ~SgUpcLocalsizeofExpression();
290201 
290202 
290203  public:
290204  SgUpcLocalsizeofExpression(Sg_File_Info* startOfConstruct , SgExpression* expression = NULL, SgType* operand_type = NULL, SgType* expression_type = NULL);
290205  SgUpcLocalsizeofExpression(SgExpression* expression, SgType* operand_type, SgType* expression_type);
290206 
290207  protected:
290208 // Start of memberFunctionString
290209 SgExpression* p_expression;
290210 
290211 // End of memberFunctionString
290212 // Start of memberFunctionString
290213 SgType* p_operand_type;
290214 
290215 // End of memberFunctionString
290216 // Start of memberFunctionString
290217 SgType* p_expression_type;
290218 
290219 // End of memberFunctionString
290220 
290221 
290222 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
290223 
290224 
290225  };
290226 #endif
290227 
290228 // postdeclarations for SgUpcLocalsizeofExpression
290229 
290230 /* #line 290231 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
290231 
290232 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
290233 
290234 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
290235 
290236 
290237 /* #line 290238 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
290238 
290239 
290240 
290241 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
290242 
290243 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
290244 // This code is automatically generated for each
290245 // terminal and non-terminal within the defined
290246 // grammar. There is a simple way to change the
290247 // code to fix bugs etc. See the ROSE README file
290248 // for directions.
290249 
290250 // tps: (02/22/2010): Adding DLL export requirements
290251 #include "rosedll.h"
290252 
290253 // predeclarations for SgUpcBlocksizeofExpression
290254 
290255 /* #line 290256 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
290256 
290257 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
290258 
290259 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
290260 
290261 #if 1
290262 // Class Definition for SgUpcBlocksizeofExpression
290263 class ROSE_DLL_API SgUpcBlocksizeofExpression : public SgExpression
290264  {
290265  public:
290266 
290267 
290268 /* #line 290269 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
290269 
290270  virtual SgNode* copy ( SgCopyHelp& help) const override;
290271 // Start of memberFunctionString
290272 /* #line 1839 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
290273 
290274 // virtual unsigned int cfgIndexForEnd() const;
290275 // virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index);
290276 // virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index);
290277 
290278 
290279 // End of memberFunctionString
290280 // Start of memberFunctionString
290281 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
290282 
290283 // *** COMMON CODE SECTION BEGINS HERE ***
290284 
290285  public:
290286 
290287  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
290288  // and not required which is required to match the other aspects of the copy mechanism code generation.
290289  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
290290  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
290291  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
290292  // virtual SgNode* copy ( const SgCopyHelp & help) const;
290293 
290295  virtual std::string class_name() const override;
290296 
290298  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
290299 
290301  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
290302  // static const VariantT static_variant = V_SgUpcBlocksizeofExpression;
290303  enum { static_variant = V_SgUpcBlocksizeofExpression };
290304 
290305  /* the generated cast function */
290307  ROSE_DLL_API friend SgUpcBlocksizeofExpression* isSgUpcBlocksizeofExpression( SgNode * s );
290308 
290310  ROSE_DLL_API friend const SgUpcBlocksizeofExpression* isSgUpcBlocksizeofExpression( const SgNode * s );
290311 
290312  // ******************************************
290313  // * Memory Pool / New / Delete
290314  // ******************************************
290315 
290316  public:
290318  static const unsigned pool_size; //
290320  static std::vector<unsigned char *> pools; //
290322  static SgUpcBlocksizeofExpression * next_node; //
290323 
290325  static unsigned long initializeStorageClassArray(SgUpcBlocksizeofExpressionStorageClass *); //
290326 
290328  static void clearMemoryPool(); //
290329  static void deleteMemoryPool(); //
290330 
290332  static void extendMemoryPoolForFileIO(); //
290333 
290335  static SgUpcBlocksizeofExpression * getPointerFromGlobalIndex(unsigned long); //
290337  static SgUpcBlocksizeofExpression * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
290338 
290340  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
290342  static void resetValidFreepointers(); //
290344  static unsigned long getNumberOfLastValidPointer(); //
290345 
290346 
290347 #if defined(INLINE_FUNCTIONS)
290348 
290349  inline void *operator new (size_t size);
290350 #else
290351 
290352  void *operator new (size_t size);
290353 #endif
290354 
290355  void operator delete (void* pointer, size_t size);
290356 
290357  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
290358  void operator delete (void* pointer)
290359  {
290360  // This is the generated delete operator...
290361  SgUpcBlocksizeofExpression::operator delete (pointer,sizeof(SgUpcBlocksizeofExpression));
290362  }
290363 
290365  static size_t numberOfNodes();
290366 
290368  static size_t memoryUsage();
290369 
290370  // End of scope which started in IR nodes specific code
290371  /* */
290372 
290373  /* name Internal Functions
290374  \brief Internal functions ... incomplete-documentation
290375 
290376  These functions have been made public as part of the design, but they are suggested for internal use
290377  or by particularly knowledgeable users for specialized tools or applications.
290378 
290379  \internal We could not make these private because they are required by user for special purposes. And
290380  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
290381 
290382  */
290383 
290384  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
290385  // overridden in every class by *generated* implementation
290387  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
290388  // MS: 06/28/02 container of names of variables or container indices
290389  // used used in the traversal to access AST successor nodes
290390  // overridden in every class by *generated* implementation
290393  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
290394 
290395  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
290396  // than all the vector copies. The implementation for these functions is generated for each class.
290398  virtual size_t get_numberOfTraversalSuccessors() override;
290400  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
290402  virtual size_t get_childIndex(SgNode *child) override;
290403 
290404 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
290405  // MS: 08/16/2002 method for generating RTI information
290407  virtual RTIReturnType roseRTI() override;
290408 #endif
290409  /* */
290410 
290411 
290412 
290413  /* name Deprecated Functions
290414  \brief Deprecated functions ... incomplete-documentation
290415 
290416  These functions have been deprecated from use.
290417  */
290418  /* */
290419 
290421  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
290422 
290423  // JJW (10/16/2008): Changed to a single function in Node.code, and put
290424  // getVariant() in #if 0 block to prevent confusing Doxygen
290425 #if 0
290426 
290427  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
290429  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
290430 #endif
290431  /* */
290432 
290433 
290434 
290435 
290436  public:
290437  /* name Traversal Support Functions
290438  \brief Traversal support functions ... incomplete-documentation
290439 
290440  These functions have been made public as part of the design, but they are suggested for internal use
290441  or by particularly knowledgable users for specialized tools or applications.
290442  */
290443  /* */
290444 
290445  // DQ (11/26/2005): Support for visitor pattern mechanims
290446  // (inferior to ROSE traversal mechanism, experimental).
290450 
290451  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
290453  virtual void accept (ROSE_VisitorPattern & visitor) override;
290454 
290455  // DQ (12/26/2005): Support for traversal based on the memory pool
290458  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
290459 
290462  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
290463 
290464  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
290465  // This traversal helps support internal tools that call static member functions.
290466  // note: this function operates on the memory pools.
290469  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
290470  /* */
290471 
290472 
290473  public:
290474  /* name Memory Allocation Functions
290475  \brief Memory allocations functions ... incomplete-documentation
290476 
290477  These functions have been made public as part of the design, but they are suggested for internal use
290478  or by particularly knowledgable users for specialized tools or applications.
290479  */
290480  /* */
290481 
290492  virtual bool isInMemoryPool() override;
290493 
290504  virtual void checkDataMemberPointersIfInMemoryPool() override;
290505 
290506  // DQ (4/30/2006): Modified to be a const function.
290521  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
290522 
290532  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
290533 
290545  virtual long getChildIndex( SgNode* childNode ) const override;
290546 
290547  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
290548  // comment here (changed to be a C style comment and not be a doxygen comment).
290549  /* \brief Constructor for use by AST File I/O Mechanism
290550 
290551  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
290552  which obtained via fast binary file I/O from disk.
290553  */
290554  // SgUpcBlocksizeofExpression( SgUpcBlocksizeofExpressionStorageClass& source );
290555 
290556 
290557 
290558 
290559 
290560  // JH (10/24/2005): methods added to support the ast file IO
290561  private:
290562 
290563  /* name AST Memory Allocation Support Functions
290564  \brief Memory allocations support....
290565 
290566  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
290567  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
290568  and support the AST File I/O Mechanism.
290569  */
290570  /* */
290571 
290572  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
290573  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
290574  that I use the same type everywhere, if any changes are made. THe second one declares the type
290575  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
290576  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
290577  a correspinding one in the AST_FILE_IO class!
290578  */
290579  // DQ (9/2/2015): This typedef is no longer used, we can't define the
290580  // comment here (changed to be a C style comment and not be a doxygen comment).
290581  /* \brief Typedef used for low level memory access.
290582  */
290583  // typedef unsigned char* TestType;
290584 
290585  // DQ (9/2/2015): This typedef is no longer used, we can't define the
290586  // comment here (changed to be a C style comment and not be a doxygen comment).
290587  /* \brief Typedef used to hold memory addresses as values.
290588  */
290589  // typedef unsigned long AddressType;
290590 
290591 
290592 
290593  // necessary, to have direct access to the p_freepointer and the private methods !
290595  friend class AST_FILE_IO;
290596 
290598  friend class SgUpcBlocksizeofExpressionStorageClass;
290599 
290601  friend class AstSpecificDataManagingClass;
290602 
290604  friend class AstSpecificDataManagingClassStorageClass;
290605 
290606  public:
290608  SgUpcBlocksizeofExpression( const SgUpcBlocksizeofExpressionStorageClass& source );
290609 
290610  // private: // JJW hack
290611  /*
290612  name AST Memory Allocation Support Variables
290613  Memory allocations support variables
290614 
290615  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
290616  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
290617  and support the AST File I/O Mechanism.
290618  */
290619  /* */
290620 
290621  public:
290622 
290623  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
290624  // to current node (so that it will work cleanly with build functions to specify patterns).
290625  // virtual SgNode* addRegExpAttribute();
290632 
290633 // *** COMMON CODE SECTION ENDS HERE ***
290634 
290635 
290636 // End of memberFunctionString
290637 // Start of memberFunctionString
290638 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
290639 
290640  // the generated cast function
290641  // friend ROSE_DLL_API SgUpcBlocksizeofExpression* isSgUpcBlocksizeofExpression ( SgNode* s );
290642 
290643  typedef SgExpression base_node_type;
290644 
290645 
290646 // End of memberFunctionString
290647 // Start of memberFunctionString
290648 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
290649 
290650  SgType* get_type() const override;
290651 
290652 
290653 // End of memberFunctionString
290654 // Start of memberFunctionString
290655 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
290656 
290657  void post_construction_initialization() override;
290658 
290659 
290660 // End of memberFunctionString
290661 
290662  public:
290663  SgExpression* get_expression() const;
290664  void set_expression(SgExpression* expression);
290665 
290666  public:
290667  SgType* get_operand_type() const;
290668  void set_operand_type(SgType* operand_type);
290669 
290670 
290671 
290672  public:
290673  virtual ~SgUpcBlocksizeofExpression();
290674 
290675 
290676  public:
290677  SgUpcBlocksizeofExpression(Sg_File_Info* startOfConstruct , SgExpression* expression = NULL, SgType* operand_type = NULL, SgType* expression_type = NULL);
290678  SgUpcBlocksizeofExpression(SgExpression* expression, SgType* operand_type, SgType* expression_type);
290679 
290680  protected:
290681 // Start of memberFunctionString
290682 SgExpression* p_expression;
290683 
290684 // End of memberFunctionString
290685 // Start of memberFunctionString
290686 SgType* p_operand_type;
290687 
290688 // End of memberFunctionString
290689 // Start of memberFunctionString
290690 SgType* p_expression_type;
290691 
290692 // End of memberFunctionString
290693 
290694 
290695 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
290696 
290697 
290698  };
290699 #endif
290700 
290701 // postdeclarations for SgUpcBlocksizeofExpression
290702 
290703 /* #line 290704 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
290704 
290705 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
290706 
290707 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
290708 
290709 
290710 /* #line 290711 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
290711 
290712 
290713 
290714 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
290715 
290716 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
290717 // This code is automatically generated for each
290718 // terminal and non-terminal within the defined
290719 // grammar. There is a simple way to change the
290720 // code to fix bugs etc. See the ROSE README file
290721 // for directions.
290722 
290723 // tps: (02/22/2010): Adding DLL export requirements
290724 #include "rosedll.h"
290725 
290726 // predeclarations for SgUpcElemsizeofExpression
290727 
290728 /* #line 290729 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
290729 
290730 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
290731 
290732 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
290733 
290734 #if 1
290735 // Class Definition for SgUpcElemsizeofExpression
290736 class ROSE_DLL_API SgUpcElemsizeofExpression : public SgExpression
290737  {
290738  public:
290739 
290740 
290741 /* #line 290742 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
290742 
290743  virtual SgNode* copy ( SgCopyHelp& help) const override;
290744 // Start of memberFunctionString
290745 /* #line 1845 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
290746 
290747 // virtual unsigned int cfgIndexForEnd() const;
290748 // virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index);
290749 // virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index);
290750 
290751 
290752 // End of memberFunctionString
290753 // Start of memberFunctionString
290754 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
290755 
290756 // *** COMMON CODE SECTION BEGINS HERE ***
290757 
290758  public:
290759 
290760  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
290761  // and not required which is required to match the other aspects of the copy mechanism code generation.
290762  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
290763  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
290764  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
290765  // virtual SgNode* copy ( const SgCopyHelp & help) const;
290766 
290768  virtual std::string class_name() const override;
290769 
290771  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
290772 
290774  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
290775  // static const VariantT static_variant = V_SgUpcElemsizeofExpression;
290776  enum { static_variant = V_SgUpcElemsizeofExpression };
290777 
290778  /* the generated cast function */
290780  ROSE_DLL_API friend SgUpcElemsizeofExpression* isSgUpcElemsizeofExpression( SgNode * s );
290781 
290783  ROSE_DLL_API friend const SgUpcElemsizeofExpression* isSgUpcElemsizeofExpression( const SgNode * s );
290784 
290785  // ******************************************
290786  // * Memory Pool / New / Delete
290787  // ******************************************
290788 
290789  public:
290791  static const unsigned pool_size; //
290793  static std::vector<unsigned char *> pools; //
290795  static SgUpcElemsizeofExpression * next_node; //
290796 
290798  static unsigned long initializeStorageClassArray(SgUpcElemsizeofExpressionStorageClass *); //
290799 
290801  static void clearMemoryPool(); //
290802  static void deleteMemoryPool(); //
290803 
290805  static void extendMemoryPoolForFileIO(); //
290806 
290808  static SgUpcElemsizeofExpression * getPointerFromGlobalIndex(unsigned long); //
290810  static SgUpcElemsizeofExpression * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
290811 
290813  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
290815  static void resetValidFreepointers(); //
290817  static unsigned long getNumberOfLastValidPointer(); //
290818 
290819 
290820 #if defined(INLINE_FUNCTIONS)
290821 
290822  inline void *operator new (size_t size);
290823 #else
290824 
290825  void *operator new (size_t size);
290826 #endif
290827 
290828  void operator delete (void* pointer, size_t size);
290829 
290830  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
290831  void operator delete (void* pointer)
290832  {
290833  // This is the generated delete operator...
290834  SgUpcElemsizeofExpression::operator delete (pointer,sizeof(SgUpcElemsizeofExpression));
290835  }
290836 
290838  static size_t numberOfNodes();
290839 
290841  static size_t memoryUsage();
290842 
290843  // End of scope which started in IR nodes specific code
290844  /* */
290845 
290846  /* name Internal Functions
290847  \brief Internal functions ... incomplete-documentation
290848 
290849  These functions have been made public as part of the design, but they are suggested for internal use
290850  or by particularly knowledgeable users for specialized tools or applications.
290851 
290852  \internal We could not make these private because they are required by user for special purposes. And
290853  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
290854 
290855  */
290856 
290857  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
290858  // overridden in every class by *generated* implementation
290860  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
290861  // MS: 06/28/02 container of names of variables or container indices
290862  // used used in the traversal to access AST successor nodes
290863  // overridden in every class by *generated* implementation
290866  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
290867 
290868  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
290869  // than all the vector copies. The implementation for these functions is generated for each class.
290871  virtual size_t get_numberOfTraversalSuccessors() override;
290873  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
290875  virtual size_t get_childIndex(SgNode *child) override;
290876 
290877 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
290878  // MS: 08/16/2002 method for generating RTI information
290880  virtual RTIReturnType roseRTI() override;
290881 #endif
290882  /* */
290883 
290884 
290885 
290886  /* name Deprecated Functions
290887  \brief Deprecated functions ... incomplete-documentation
290888 
290889  These functions have been deprecated from use.
290890  */
290891  /* */
290892 
290894  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
290895 
290896  // JJW (10/16/2008): Changed to a single function in Node.code, and put
290897  // getVariant() in #if 0 block to prevent confusing Doxygen
290898 #if 0
290899 
290900  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
290902  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
290903 #endif
290904  /* */
290905 
290906 
290907 
290908 
290909  public:
290910  /* name Traversal Support Functions
290911  \brief Traversal support functions ... incomplete-documentation
290912 
290913  These functions have been made public as part of the design, but they are suggested for internal use
290914  or by particularly knowledgable users for specialized tools or applications.
290915  */
290916  /* */
290917 
290918  // DQ (11/26/2005): Support for visitor pattern mechanims
290919  // (inferior to ROSE traversal mechanism, experimental).
290923 
290924  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
290926  virtual void accept (ROSE_VisitorPattern & visitor) override;
290927 
290928  // DQ (12/26/2005): Support for traversal based on the memory pool
290931  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
290932 
290935  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
290936 
290937  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
290938  // This traversal helps support internal tools that call static member functions.
290939  // note: this function operates on the memory pools.
290942  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
290943  /* */
290944 
290945 
290946  public:
290947  /* name Memory Allocation Functions
290948  \brief Memory allocations functions ... incomplete-documentation
290949 
290950  These functions have been made public as part of the design, but they are suggested for internal use
290951  or by particularly knowledgable users for specialized tools or applications.
290952  */
290953  /* */
290954 
290965  virtual bool isInMemoryPool() override;
290966 
290977  virtual void checkDataMemberPointersIfInMemoryPool() override;
290978 
290979  // DQ (4/30/2006): Modified to be a const function.
290994  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
290995 
291005  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
291006 
291018  virtual long getChildIndex( SgNode* childNode ) const override;
291019 
291020  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
291021  // comment here (changed to be a C style comment and not be a doxygen comment).
291022  /* \brief Constructor for use by AST File I/O Mechanism
291023 
291024  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
291025  which obtained via fast binary file I/O from disk.
291026  */
291027  // SgUpcElemsizeofExpression( SgUpcElemsizeofExpressionStorageClass& source );
291028 
291029 
291030 
291031 
291032 
291033  // JH (10/24/2005): methods added to support the ast file IO
291034  private:
291035 
291036  /* name AST Memory Allocation Support Functions
291037  \brief Memory allocations support....
291038 
291039  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
291040  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
291041  and support the AST File I/O Mechanism.
291042  */
291043  /* */
291044 
291045  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
291046  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
291047  that I use the same type everywhere, if any changes are made. THe second one declares the type
291048  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
291049  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
291050  a correspinding one in the AST_FILE_IO class!
291051  */
291052  // DQ (9/2/2015): This typedef is no longer used, we can't define the
291053  // comment here (changed to be a C style comment and not be a doxygen comment).
291054  /* \brief Typedef used for low level memory access.
291055  */
291056  // typedef unsigned char* TestType;
291057 
291058  // DQ (9/2/2015): This typedef is no longer used, we can't define the
291059  // comment here (changed to be a C style comment and not be a doxygen comment).
291060  /* \brief Typedef used to hold memory addresses as values.
291061  */
291062  // typedef unsigned long AddressType;
291063 
291064 
291065 
291066  // necessary, to have direct access to the p_freepointer and the private methods !
291068  friend class AST_FILE_IO;
291069 
291071  friend class SgUpcElemsizeofExpressionStorageClass;
291072 
291074  friend class AstSpecificDataManagingClass;
291075 
291077  friend class AstSpecificDataManagingClassStorageClass;
291078 
291079  public:
291081  SgUpcElemsizeofExpression( const SgUpcElemsizeofExpressionStorageClass& source );
291082 
291083  // private: // JJW hack
291084  /*
291085  name AST Memory Allocation Support Variables
291086  Memory allocations support variables
291087 
291088  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
291089  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
291090  and support the AST File I/O Mechanism.
291091  */
291092  /* */
291093 
291094  public:
291095 
291096  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
291097  // to current node (so that it will work cleanly with build functions to specify patterns).
291098  // virtual SgNode* addRegExpAttribute();
291105 
291106 // *** COMMON CODE SECTION ENDS HERE ***
291107 
291108 
291109 // End of memberFunctionString
291110 // Start of memberFunctionString
291111 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
291112 
291113  // the generated cast function
291114  // friend ROSE_DLL_API SgUpcElemsizeofExpression* isSgUpcElemsizeofExpression ( SgNode* s );
291115 
291116  typedef SgExpression base_node_type;
291117 
291118 
291119 // End of memberFunctionString
291120 // Start of memberFunctionString
291121 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
291122 
291123  SgType* get_type() const override;
291124 
291125 
291126 // End of memberFunctionString
291127 // Start of memberFunctionString
291128 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
291129 
291130  void post_construction_initialization() override;
291131 
291132 
291133 // End of memberFunctionString
291134 
291135  public:
291136  SgExpression* get_expression() const;
291137  void set_expression(SgExpression* expression);
291138 
291139  public:
291140  SgType* get_operand_type() const;
291141  void set_operand_type(SgType* operand_type);
291142 
291143 
291144 
291145  public:
291146  virtual ~SgUpcElemsizeofExpression();
291147 
291148 
291149  public:
291150  SgUpcElemsizeofExpression(Sg_File_Info* startOfConstruct , SgExpression* expression = NULL, SgType* operand_type = NULL, SgType* expression_type = NULL);
291151  SgUpcElemsizeofExpression(SgExpression* expression, SgType* operand_type, SgType* expression_type);
291152 
291153  protected:
291154 // Start of memberFunctionString
291155 SgExpression* p_expression;
291156 
291157 // End of memberFunctionString
291158 // Start of memberFunctionString
291159 SgType* p_operand_type;
291160 
291161 // End of memberFunctionString
291162 // Start of memberFunctionString
291163 SgType* p_expression_type;
291164 
291165 // End of memberFunctionString
291166 
291167 
291168 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
291169 
291170 
291171  };
291172 #endif
291173 
291174 // postdeclarations for SgUpcElemsizeofExpression
291175 
291176 /* #line 291177 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
291177 
291178 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
291179 
291180 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
291181 
291182 
291183 /* #line 291184 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
291184 
291185 
291186 
291187 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
291188 
291189 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
291190 // This code is automatically generated for each
291191 // terminal and non-terminal within the defined
291192 // grammar. There is a simple way to change the
291193 // code to fix bugs etc. See the ROSE README file
291194 // for directions.
291195 
291196 // tps: (02/22/2010): Adding DLL export requirements
291197 #include "rosedll.h"
291198 
291199 // predeclarations for SgSuperExp
291200 
291201 /* #line 291202 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
291202 
291203 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
291204 
291205 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
291206 
291207 #if 1
291208 // Class Definition for SgSuperExp
291209 class ROSE_DLL_API SgSuperExp : public SgExpression
291210  {
291211  public:
291212 
291213 
291214 /* #line 291215 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
291215 
291216  virtual SgNode* copy ( SgCopyHelp& help) const override;
291217 // Start of memberFunctionString
291218 /* #line 1352 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
291219 
291220 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
291221  virtual unsigned int cfgIndexForEnd() const override;
291222  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
291223  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
291224 #endif
291225 
291226 
291227 
291228 // End of memberFunctionString
291229 // Start of memberFunctionString
291230 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
291231 
291232 // *** COMMON CODE SECTION BEGINS HERE ***
291233 
291234  public:
291235 
291236  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
291237  // and not required which is required to match the other aspects of the copy mechanism code generation.
291238  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
291239  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
291240  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
291241  // virtual SgNode* copy ( const SgCopyHelp & help) const;
291242 
291244  virtual std::string class_name() const override;
291245 
291247  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
291248 
291250  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
291251  // static const VariantT static_variant = V_SgSuperExp;
291252  enum { static_variant = V_SgSuperExp };
291253 
291254  /* the generated cast function */
291256  ROSE_DLL_API friend SgSuperExp* isSgSuperExp( SgNode * s );
291257 
291259  ROSE_DLL_API friend const SgSuperExp* isSgSuperExp( const SgNode * s );
291260 
291261  // ******************************************
291262  // * Memory Pool / New / Delete
291263  // ******************************************
291264 
291265  public:
291267  static const unsigned pool_size; //
291269  static std::vector<unsigned char *> pools; //
291271  static SgSuperExp * next_node; //
291272 
291274  static unsigned long initializeStorageClassArray(SgSuperExpStorageClass *); //
291275 
291277  static void clearMemoryPool(); //
291278  static void deleteMemoryPool(); //
291279 
291281  static void extendMemoryPoolForFileIO(); //
291282 
291284  static SgSuperExp * getPointerFromGlobalIndex(unsigned long); //
291286  static SgSuperExp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
291287 
291289  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
291291  static void resetValidFreepointers(); //
291293  static unsigned long getNumberOfLastValidPointer(); //
291294 
291295 
291296 #if defined(INLINE_FUNCTIONS)
291297 
291298  inline void *operator new (size_t size);
291299 #else
291300 
291301  void *operator new (size_t size);
291302 #endif
291303 
291304  void operator delete (void* pointer, size_t size);
291305 
291306  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
291307  void operator delete (void* pointer)
291308  {
291309  // This is the generated delete operator...
291310  SgSuperExp::operator delete (pointer,sizeof(SgSuperExp));
291311  }
291312 
291314  static size_t numberOfNodes();
291315 
291317  static size_t memoryUsage();
291318 
291319  // End of scope which started in IR nodes specific code
291320  /* */
291321 
291322  /* name Internal Functions
291323  \brief Internal functions ... incomplete-documentation
291324 
291325  These functions have been made public as part of the design, but they are suggested for internal use
291326  or by particularly knowledgeable users for specialized tools or applications.
291327 
291328  \internal We could not make these private because they are required by user for special purposes. And
291329  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
291330 
291331  */
291332 
291333  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
291334  // overridden in every class by *generated* implementation
291336  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
291337  // MS: 06/28/02 container of names of variables or container indices
291338  // used used in the traversal to access AST successor nodes
291339  // overridden in every class by *generated* implementation
291342  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
291343 
291344  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
291345  // than all the vector copies. The implementation for these functions is generated for each class.
291347  virtual size_t get_numberOfTraversalSuccessors() override;
291349  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
291351  virtual size_t get_childIndex(SgNode *child) override;
291352 
291353 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
291354  // MS: 08/16/2002 method for generating RTI information
291356  virtual RTIReturnType roseRTI() override;
291357 #endif
291358  /* */
291359 
291360 
291361 
291362  /* name Deprecated Functions
291363  \brief Deprecated functions ... incomplete-documentation
291364 
291365  These functions have been deprecated from use.
291366  */
291367  /* */
291368 
291370  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
291371 
291372  // JJW (10/16/2008): Changed to a single function in Node.code, and put
291373  // getVariant() in #if 0 block to prevent confusing Doxygen
291374 #if 0
291375 
291376  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
291378  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
291379 #endif
291380  /* */
291381 
291382 
291383 
291384 
291385  public:
291386  /* name Traversal Support Functions
291387  \brief Traversal support functions ... incomplete-documentation
291388 
291389  These functions have been made public as part of the design, but they are suggested for internal use
291390  or by particularly knowledgable users for specialized tools or applications.
291391  */
291392  /* */
291393 
291394  // DQ (11/26/2005): Support for visitor pattern mechanims
291395  // (inferior to ROSE traversal mechanism, experimental).
291399 
291400  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
291402  virtual void accept (ROSE_VisitorPattern & visitor) override;
291403 
291404  // DQ (12/26/2005): Support for traversal based on the memory pool
291407  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
291408 
291411  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
291412 
291413  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
291414  // This traversal helps support internal tools that call static member functions.
291415  // note: this function operates on the memory pools.
291418  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
291419  /* */
291420 
291421 
291422  public:
291423  /* name Memory Allocation Functions
291424  \brief Memory allocations functions ... incomplete-documentation
291425 
291426  These functions have been made public as part of the design, but they are suggested for internal use
291427  or by particularly knowledgable users for specialized tools or applications.
291428  */
291429  /* */
291430 
291441  virtual bool isInMemoryPool() override;
291442 
291453  virtual void checkDataMemberPointersIfInMemoryPool() override;
291454 
291455  // DQ (4/30/2006): Modified to be a const function.
291470  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
291471 
291481  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
291482 
291494  virtual long getChildIndex( SgNode* childNode ) const override;
291495 
291496  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
291497  // comment here (changed to be a C style comment and not be a doxygen comment).
291498  /* \brief Constructor for use by AST File I/O Mechanism
291499 
291500  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
291501  which obtained via fast binary file I/O from disk.
291502  */
291503  // SgSuperExp( SgSuperExpStorageClass& source );
291504 
291505 
291506 
291507 
291508 
291509  // JH (10/24/2005): methods added to support the ast file IO
291510  private:
291511 
291512  /* name AST Memory Allocation Support Functions
291513  \brief Memory allocations support....
291514 
291515  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
291516  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
291517  and support the AST File I/O Mechanism.
291518  */
291519  /* */
291520 
291521  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
291522  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
291523  that I use the same type everywhere, if any changes are made. THe second one declares the type
291524  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
291525  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
291526  a correspinding one in the AST_FILE_IO class!
291527  */
291528  // DQ (9/2/2015): This typedef is no longer used, we can't define the
291529  // comment here (changed to be a C style comment and not be a doxygen comment).
291530  /* \brief Typedef used for low level memory access.
291531  */
291532  // typedef unsigned char* TestType;
291533 
291534  // DQ (9/2/2015): This typedef is no longer used, we can't define the
291535  // comment here (changed to be a C style comment and not be a doxygen comment).
291536  /* \brief Typedef used to hold memory addresses as values.
291537  */
291538  // typedef unsigned long AddressType;
291539 
291540 
291541 
291542  // necessary, to have direct access to the p_freepointer and the private methods !
291544  friend class AST_FILE_IO;
291545 
291547  friend class SgSuperExpStorageClass;
291548 
291550  friend class AstSpecificDataManagingClass;
291551 
291553  friend class AstSpecificDataManagingClassStorageClass;
291554 
291555  public:
291557  SgSuperExp( const SgSuperExpStorageClass& source );
291558 
291559  // private: // JJW hack
291560  /*
291561  name AST Memory Allocation Support Variables
291562  Memory allocations support variables
291563 
291564  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
291565  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
291566  and support the AST File I/O Mechanism.
291567  */
291568  /* */
291569 
291570  public:
291571 
291572  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
291573  // to current node (so that it will work cleanly with build functions to specify patterns).
291574  // virtual SgNode* addRegExpAttribute();
291580  SgSuperExp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
291581 
291582 // *** COMMON CODE SECTION ENDS HERE ***
291583 
291584 
291585 // End of memberFunctionString
291586 // Start of memberFunctionString
291587 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
291588 
291589  // the generated cast function
291590  // friend ROSE_DLL_API SgSuperExp* isSgSuperExp ( SgNode* s );
291591 
291592  typedef SgExpression base_node_type;
291593 
291594 
291595 // End of memberFunctionString
291596 // Start of memberFunctionString
291597 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
291598 
291599  SgType* get_type() const override;
291600 
291601 
291602 // End of memberFunctionString
291603 // Start of memberFunctionString
291604 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
291605 
291606  void post_construction_initialization() override;
291607 
291608 
291609 // End of memberFunctionString
291610 
291611  public:
291612  SgClassSymbol* get_class_symbol() const;
291613  void set_class_symbol(SgClassSymbol* class_symbol);
291614 
291615  public:
291616  int get_pobj_super() const;
291617  void set_pobj_super(int pobj_super);
291618 
291619 
291620  public:
291621  virtual ~SgSuperExp();
291622 
291623 
291624  public:
291625  SgSuperExp(Sg_File_Info* startOfConstruct , SgClassSymbol* class_symbol = NULL, int pobj_super = 0);
291626  SgSuperExp(SgClassSymbol* class_symbol, int pobj_super);
291627 
291628  protected:
291629 // Start of memberFunctionString
291630 SgClassSymbol* p_class_symbol;
291631 
291632 // End of memberFunctionString
291633 // Start of memberFunctionString
291634 int p_pobj_super;
291635 
291636 // End of memberFunctionString
291637 
291638 
291639 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
291640 
291641 
291642  };
291643 #endif
291644 
291645 // postdeclarations for SgSuperExp
291646 
291647 /* #line 291648 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
291648 
291649 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
291650 
291651 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
291652 
291653 
291654 /* #line 291655 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
291655 
291656 
291657 
291658 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
291659 
291660 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
291661 // This code is automatically generated for each
291662 // terminal and non-terminal within the defined
291663 // grammar. There is a simple way to change the
291664 // code to fix bugs etc. See the ROSE README file
291665 // for directions.
291666 
291667 // tps: (02/22/2010): Adding DLL export requirements
291668 #include "rosedll.h"
291669 
291670 // predeclarations for SgTypeIdOp
291671 
291672 /* #line 291673 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
291673 
291674 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
291675 
291676 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
291677 
291678 #if 1
291679 // Class Definition for SgTypeIdOp
291680 class ROSE_DLL_API SgTypeIdOp : public SgExpression
291681  {
291682  public:
291683 
291684 
291685 /* #line 291686 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
291686 
291687  virtual SgNode* copy ( SgCopyHelp& help) const override;
291688 // Start of memberFunctionString
291689 /* #line 1052 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
291690 
291691 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
291692  virtual unsigned int cfgIndexForEnd() const override;
291693  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
291694  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
291695 #endif
291696 
291697  // get lvalue
291698  virtual bool isLValue() const override;
291699  virtual bool isChildUsedAsLValue(const SgExpression* child) const override; // INTERNAL Recursively call up the chain to answer the child
291700 
291701  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
291702  int get_name_qualification_length() const override;
291703  void set_name_qualification_length(int name_qualification_length) override;
291704 
291705  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
291706  bool get_type_elaboration_required() const override;
291707  void set_type_elaboration_required(bool type_elaboration_required) override;
291708 
291709  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
291710  bool get_global_qualification_required() const override;
291711  void set_global_qualification_required(bool global_qualification_required) override;
291712 
291713  // DQ (4/15/2019): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
291714  int get_name_qualification_for_pointer_to_member_class_length() const override;
291715  void set_name_qualification_for_pointer_to_member_class_length(int name_qualification_length) override;
291716 
291717  // DQ (4/15/2019): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
291718  bool get_type_elaboration_for_pointer_to_member_class_required() const override;
291719  void set_type_elaboration_for_pointer_to_member_class_required(bool type_elaboration_required) override;
291720 
291721  // DQ (4/15/2019): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
291722  bool get_global_qualification_for_pointer_to_member_class_required() const override;
291723  void set_global_qualification_for_pointer_to_member_class_required(bool global_qualification_required) override;
291724 
291725 
291726 
291727 // End of memberFunctionString
291728 // Start of memberFunctionString
291729 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
291730 
291731 // *** COMMON CODE SECTION BEGINS HERE ***
291732 
291733  public:
291734 
291735  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
291736  // and not required which is required to match the other aspects of the copy mechanism code generation.
291737  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
291738  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
291739  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
291740  // virtual SgNode* copy ( const SgCopyHelp & help) const;
291741 
291743  virtual std::string class_name() const override;
291744 
291746  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
291747 
291749  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
291750  // static const VariantT static_variant = V_SgTypeIdOp;
291751  enum { static_variant = V_SgTypeIdOp };
291752 
291753  /* the generated cast function */
291755  ROSE_DLL_API friend SgTypeIdOp* isSgTypeIdOp( SgNode * s );
291756 
291758  ROSE_DLL_API friend const SgTypeIdOp* isSgTypeIdOp( const SgNode * s );
291759 
291760  // ******************************************
291761  // * Memory Pool / New / Delete
291762  // ******************************************
291763 
291764  public:
291766  static const unsigned pool_size; //
291768  static std::vector<unsigned char *> pools; //
291770  static SgTypeIdOp * next_node; //
291771 
291773  static unsigned long initializeStorageClassArray(SgTypeIdOpStorageClass *); //
291774 
291776  static void clearMemoryPool(); //
291777  static void deleteMemoryPool(); //
291778 
291780  static void extendMemoryPoolForFileIO(); //
291781 
291783  static SgTypeIdOp * getPointerFromGlobalIndex(unsigned long); //
291785  static SgTypeIdOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
291786 
291788  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
291790  static void resetValidFreepointers(); //
291792  static unsigned long getNumberOfLastValidPointer(); //
291793 
291794 
291795 #if defined(INLINE_FUNCTIONS)
291796 
291797  inline void *operator new (size_t size);
291798 #else
291799 
291800  void *operator new (size_t size);
291801 #endif
291802 
291803  void operator delete (void* pointer, size_t size);
291804 
291805  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
291806  void operator delete (void* pointer)
291807  {
291808  // This is the generated delete operator...
291809  SgTypeIdOp::operator delete (pointer,sizeof(SgTypeIdOp));
291810  }
291811 
291813  static size_t numberOfNodes();
291814 
291816  static size_t memoryUsage();
291817 
291818  // End of scope which started in IR nodes specific code
291819  /* */
291820 
291821  /* name Internal Functions
291822  \brief Internal functions ... incomplete-documentation
291823 
291824  These functions have been made public as part of the design, but they are suggested for internal use
291825  or by particularly knowledgeable users for specialized tools or applications.
291826 
291827  \internal We could not make these private because they are required by user for special purposes. And
291828  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
291829 
291830  */
291831 
291832  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
291833  // overridden in every class by *generated* implementation
291835  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
291836  // MS: 06/28/02 container of names of variables or container indices
291837  // used used in the traversal to access AST successor nodes
291838  // overridden in every class by *generated* implementation
291841  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
291842 
291843  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
291844  // than all the vector copies. The implementation for these functions is generated for each class.
291846  virtual size_t get_numberOfTraversalSuccessors() override;
291848  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
291850  virtual size_t get_childIndex(SgNode *child) override;
291851 
291852 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
291853  // MS: 08/16/2002 method for generating RTI information
291855  virtual RTIReturnType roseRTI() override;
291856 #endif
291857  /* */
291858 
291859 
291860 
291861  /* name Deprecated Functions
291862  \brief Deprecated functions ... incomplete-documentation
291863 
291864  These functions have been deprecated from use.
291865  */
291866  /* */
291867 
291869  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
291870 
291871  // JJW (10/16/2008): Changed to a single function in Node.code, and put
291872  // getVariant() in #if 0 block to prevent confusing Doxygen
291873 #if 0
291874 
291875  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
291877  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
291878 #endif
291879  /* */
291880 
291881 
291882 
291883 
291884  public:
291885  /* name Traversal Support Functions
291886  \brief Traversal support functions ... incomplete-documentation
291887 
291888  These functions have been made public as part of the design, but they are suggested for internal use
291889  or by particularly knowledgable users for specialized tools or applications.
291890  */
291891  /* */
291892 
291893  // DQ (11/26/2005): Support for visitor pattern mechanims
291894  // (inferior to ROSE traversal mechanism, experimental).
291898 
291899  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
291901  virtual void accept (ROSE_VisitorPattern & visitor) override;
291902 
291903  // DQ (12/26/2005): Support for traversal based on the memory pool
291906  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
291907 
291910  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
291911 
291912  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
291913  // This traversal helps support internal tools that call static member functions.
291914  // note: this function operates on the memory pools.
291917  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
291918  /* */
291919 
291920 
291921  public:
291922  /* name Memory Allocation Functions
291923  \brief Memory allocations functions ... incomplete-documentation
291924 
291925  These functions have been made public as part of the design, but they are suggested for internal use
291926  or by particularly knowledgable users for specialized tools or applications.
291927  */
291928  /* */
291929 
291940  virtual bool isInMemoryPool() override;
291941 
291952  virtual void checkDataMemberPointersIfInMemoryPool() override;
291953 
291954  // DQ (4/30/2006): Modified to be a const function.
291969  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
291970 
291980  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
291981 
291993  virtual long getChildIndex( SgNode* childNode ) const override;
291994 
291995  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
291996  // comment here (changed to be a C style comment and not be a doxygen comment).
291997  /* \brief Constructor for use by AST File I/O Mechanism
291998 
291999  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
292000  which obtained via fast binary file I/O from disk.
292001  */
292002  // SgTypeIdOp( SgTypeIdOpStorageClass& source );
292003 
292004 
292005 
292006 
292007 
292008  // JH (10/24/2005): methods added to support the ast file IO
292009  private:
292010 
292011  /* name AST Memory Allocation Support Functions
292012  \brief Memory allocations support....
292013 
292014  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
292015  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
292016  and support the AST File I/O Mechanism.
292017  */
292018  /* */
292019 
292020  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
292021  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
292022  that I use the same type everywhere, if any changes are made. THe second one declares the type
292023  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
292024  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
292025  a correspinding one in the AST_FILE_IO class!
292026  */
292027  // DQ (9/2/2015): This typedef is no longer used, we can't define the
292028  // comment here (changed to be a C style comment and not be a doxygen comment).
292029  /* \brief Typedef used for low level memory access.
292030  */
292031  // typedef unsigned char* TestType;
292032 
292033  // DQ (9/2/2015): This typedef is no longer used, we can't define the
292034  // comment here (changed to be a C style comment and not be a doxygen comment).
292035  /* \brief Typedef used to hold memory addresses as values.
292036  */
292037  // typedef unsigned long AddressType;
292038 
292039 
292040 
292041  // necessary, to have direct access to the p_freepointer and the private methods !
292043  friend class AST_FILE_IO;
292044 
292046  friend class SgTypeIdOpStorageClass;
292047 
292049  friend class AstSpecificDataManagingClass;
292050 
292052  friend class AstSpecificDataManagingClassStorageClass;
292053 
292054  public:
292056  SgTypeIdOp( const SgTypeIdOpStorageClass& source );
292057 
292058  // private: // JJW hack
292059  /*
292060  name AST Memory Allocation Support Variables
292061  Memory allocations support variables
292062 
292063  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
292064  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
292065  and support the AST File I/O Mechanism.
292066  */
292067  /* */
292068 
292069  public:
292070 
292071  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
292072  // to current node (so that it will work cleanly with build functions to specify patterns).
292073  // virtual SgNode* addRegExpAttribute();
292079  SgTypeIdOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
292080 
292081 // *** COMMON CODE SECTION ENDS HERE ***
292082 
292083 
292084 // End of memberFunctionString
292085 // Start of memberFunctionString
292086 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
292087 
292088  // the generated cast function
292089  // friend ROSE_DLL_API SgTypeIdOp* isSgTypeIdOp ( SgNode* s );
292090 
292091  typedef SgExpression base_node_type;
292092 
292093 
292094 // End of memberFunctionString
292095 // Start of memberFunctionString
292096 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
292097 
292098  SgType* get_type() const override;
292099 
292100 
292101 // End of memberFunctionString
292102 // Start of memberFunctionString
292103 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
292104 
292105  void post_construction_initialization() override;
292106 
292107 
292108 // End of memberFunctionString
292109 
292110  public:
292111  SgExpression* get_operand_expr() const;
292112  void set_operand_expr(SgExpression* operand_expr);
292113 
292114  public:
292115  SgType* get_operand_type() const;
292116  void set_operand_type(SgType* operand_type);
292117 
292118 
292119 
292120 
292121 
292122 
292123 
292124 
292125  public:
292126  virtual ~SgTypeIdOp();
292127 
292128 
292129  public:
292130  SgTypeIdOp(Sg_File_Info* startOfConstruct , SgExpression* operand_expr = NULL, SgType* operand_type = NULL);
292131  SgTypeIdOp(SgExpression* operand_expr, SgType* operand_type);
292132 
292133  protected:
292134 // Start of memberFunctionString
292135 SgExpression* p_operand_expr;
292136 
292137 // End of memberFunctionString
292138 // Start of memberFunctionString
292139 SgType* p_operand_type;
292140 
292141 // End of memberFunctionString
292142 // Start of memberFunctionString
292143 int p_name_qualification_length;
292144 
292145 // End of memberFunctionString
292146 // Start of memberFunctionString
292147 bool p_type_elaboration_required;
292148 
292149 // End of memberFunctionString
292150 // Start of memberFunctionString
292151 bool p_global_qualification_required;
292152 
292153 // End of memberFunctionString
292154 // Start of memberFunctionString
292155 int p_name_qualification_for_pointer_to_member_class_length;
292156 
292157 // End of memberFunctionString
292158 // Start of memberFunctionString
292159 bool p_type_elaboration_for_pointer_to_member_class_required;
292160 
292161 // End of memberFunctionString
292162 // Start of memberFunctionString
292163 bool p_global_qualification_for_pointer_to_member_class_required;
292164 
292165 // End of memberFunctionString
292166 
292167 
292168 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
292169 
292170 
292171  };
292172 #endif
292173 
292174 // postdeclarations for SgTypeIdOp
292175 
292176 /* #line 292177 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
292177 
292178 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
292179 
292180 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
292181 
292182 
292183 /* #line 292184 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
292184 
292185 
292186 
292187 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
292188 
292189 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
292190 // This code is automatically generated for each
292191 // terminal and non-terminal within the defined
292192 // grammar. There is a simple way to change the
292193 // code to fix bugs etc. See the ROSE README file
292194 // for directions.
292195 
292196 // tps: (02/22/2010): Adding DLL export requirements
292197 #include "rosedll.h"
292198 
292199 // predeclarations for SgConditionalExp
292200 
292201 /* #line 292202 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
292202 
292203 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
292204 
292205 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
292206 
292207 #if 1
292208 // Class Definition for SgConditionalExp
292209 class ROSE_DLL_API SgConditionalExp : public SgExpression
292210  {
292211  public:
292212 
292213 
292214 /* #line 292215 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
292215 
292216  virtual SgNode* copy ( SgCopyHelp& help) const override;
292217 // Start of memberFunctionString
292218 /* #line 184 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
292219 
292220  SgExpression *get_next( int& n) const ROSE_DEPRECATED_FUNCTION;
292221  int replace_expression( SgExpression *, SgExpression *) override ROSE_DEPRECATED_FUNCTION;
292222 
292223 
292224 // End of memberFunctionString
292225 // Start of memberFunctionString
292226 /* #line 1189 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
292227 
292228 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
292229  virtual unsigned int cfgIndexForEnd() const override;
292230  virtual bool cfgIsIndexInteresting(unsigned int) const override;
292231  virtual unsigned int cfgFindChildIndex(SgNode* n) override;
292232  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
292233  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
292234 #endif
292235 
292236  // get lvalue
292237  virtual bool isLValue() const override;
292238  virtual bool isChildUsedAsLValue(const SgExpression* child) const override; // INTERNAL Recursively call up the chain to answer the child
292239 
292240 
292241 
292242 // End of memberFunctionString
292243 // Start of memberFunctionString
292244 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
292245 
292246 // *** COMMON CODE SECTION BEGINS HERE ***
292247 
292248  public:
292249 
292250  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
292251  // and not required which is required to match the other aspects of the copy mechanism code generation.
292252  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
292253  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
292254  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
292255  // virtual SgNode* copy ( const SgCopyHelp & help) const;
292256 
292258  virtual std::string class_name() const override;
292259 
292261  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
292262 
292264  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
292265  // static const VariantT static_variant = V_SgConditionalExp;
292266  enum { static_variant = V_SgConditionalExp };
292267 
292268  /* the generated cast function */
292270  ROSE_DLL_API friend SgConditionalExp* isSgConditionalExp( SgNode * s );
292271 
292273  ROSE_DLL_API friend const SgConditionalExp* isSgConditionalExp( const SgNode * s );
292274 
292275  // ******************************************
292276  // * Memory Pool / New / Delete
292277  // ******************************************
292278 
292279  public:
292281  static const unsigned pool_size; //
292283  static std::vector<unsigned char *> pools; //
292285  static SgConditionalExp * next_node; //
292286 
292288  static unsigned long initializeStorageClassArray(SgConditionalExpStorageClass *); //
292289 
292291  static void clearMemoryPool(); //
292292  static void deleteMemoryPool(); //
292293 
292295  static void extendMemoryPoolForFileIO(); //
292296 
292298  static SgConditionalExp * getPointerFromGlobalIndex(unsigned long); //
292300  static SgConditionalExp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
292301 
292303  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
292305  static void resetValidFreepointers(); //
292307  static unsigned long getNumberOfLastValidPointer(); //
292308 
292309 
292310 #if defined(INLINE_FUNCTIONS)
292311 
292312  inline void *operator new (size_t size);
292313 #else
292314 
292315  void *operator new (size_t size);
292316 #endif
292317 
292318  void operator delete (void* pointer, size_t size);
292319 
292320  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
292321  void operator delete (void* pointer)
292322  {
292323  // This is the generated delete operator...
292324  SgConditionalExp::operator delete (pointer,sizeof(SgConditionalExp));
292325  }
292326 
292328  static size_t numberOfNodes();
292329 
292331  static size_t memoryUsage();
292332 
292333  // End of scope which started in IR nodes specific code
292334  /* */
292335 
292336  /* name Internal Functions
292337  \brief Internal functions ... incomplete-documentation
292338 
292339  These functions have been made public as part of the design, but they are suggested for internal use
292340  or by particularly knowledgeable users for specialized tools or applications.
292341 
292342  \internal We could not make these private because they are required by user for special purposes. And
292343  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
292344 
292345  */
292346 
292347  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
292348  // overridden in every class by *generated* implementation
292350  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
292351  // MS: 06/28/02 container of names of variables or container indices
292352  // used used in the traversal to access AST successor nodes
292353  // overridden in every class by *generated* implementation
292356  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
292357 
292358  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
292359  // than all the vector copies. The implementation for these functions is generated for each class.
292361  virtual size_t get_numberOfTraversalSuccessors() override;
292363  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
292365  virtual size_t get_childIndex(SgNode *child) override;
292366 
292367 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
292368  // MS: 08/16/2002 method for generating RTI information
292370  virtual RTIReturnType roseRTI() override;
292371 #endif
292372  /* */
292373 
292374 
292375 
292376  /* name Deprecated Functions
292377  \brief Deprecated functions ... incomplete-documentation
292378 
292379  These functions have been deprecated from use.
292380  */
292381  /* */
292382 
292384  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
292385 
292386  // JJW (10/16/2008): Changed to a single function in Node.code, and put
292387  // getVariant() in #if 0 block to prevent confusing Doxygen
292388 #if 0
292389 
292390  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
292392  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
292393 #endif
292394  /* */
292395 
292396 
292397 
292398 
292399  public:
292400  /* name Traversal Support Functions
292401  \brief Traversal support functions ... incomplete-documentation
292402 
292403  These functions have been made public as part of the design, but they are suggested for internal use
292404  or by particularly knowledgable users for specialized tools or applications.
292405  */
292406  /* */
292407 
292408  // DQ (11/26/2005): Support for visitor pattern mechanims
292409  // (inferior to ROSE traversal mechanism, experimental).
292413 
292414  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
292416  virtual void accept (ROSE_VisitorPattern & visitor) override;
292417 
292418  // DQ (12/26/2005): Support for traversal based on the memory pool
292421  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
292422 
292425  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
292426 
292427  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
292428  // This traversal helps support internal tools that call static member functions.
292429  // note: this function operates on the memory pools.
292432  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
292433  /* */
292434 
292435 
292436  public:
292437  /* name Memory Allocation Functions
292438  \brief Memory allocations functions ... incomplete-documentation
292439 
292440  These functions have been made public as part of the design, but they are suggested for internal use
292441  or by particularly knowledgable users for specialized tools or applications.
292442  */
292443  /* */
292444 
292455  virtual bool isInMemoryPool() override;
292456 
292467  virtual void checkDataMemberPointersIfInMemoryPool() override;
292468 
292469  // DQ (4/30/2006): Modified to be a const function.
292484  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
292485 
292495  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
292496 
292508  virtual long getChildIndex( SgNode* childNode ) const override;
292509 
292510  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
292511  // comment here (changed to be a C style comment and not be a doxygen comment).
292512  /* \brief Constructor for use by AST File I/O Mechanism
292513 
292514  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
292515  which obtained via fast binary file I/O from disk.
292516  */
292517  // SgConditionalExp( SgConditionalExpStorageClass& source );
292518 
292519 
292520 
292521 
292522 
292523  // JH (10/24/2005): methods added to support the ast file IO
292524  private:
292525 
292526  /* name AST Memory Allocation Support Functions
292527  \brief Memory allocations support....
292528 
292529  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
292530  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
292531  and support the AST File I/O Mechanism.
292532  */
292533  /* */
292534 
292535  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
292536  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
292537  that I use the same type everywhere, if any changes are made. THe second one declares the type
292538  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
292539  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
292540  a correspinding one in the AST_FILE_IO class!
292541  */
292542  // DQ (9/2/2015): This typedef is no longer used, we can't define the
292543  // comment here (changed to be a C style comment and not be a doxygen comment).
292544  /* \brief Typedef used for low level memory access.
292545  */
292546  // typedef unsigned char* TestType;
292547 
292548  // DQ (9/2/2015): This typedef is no longer used, we can't define the
292549  // comment here (changed to be a C style comment and not be a doxygen comment).
292550  /* \brief Typedef used to hold memory addresses as values.
292551  */
292552  // typedef unsigned long AddressType;
292553 
292554 
292555 
292556  // necessary, to have direct access to the p_freepointer and the private methods !
292558  friend class AST_FILE_IO;
292559 
292561  friend class SgConditionalExpStorageClass;
292562 
292564  friend class AstSpecificDataManagingClass;
292565 
292567  friend class AstSpecificDataManagingClassStorageClass;
292568 
292569  public:
292571  SgConditionalExp( const SgConditionalExpStorageClass& source );
292572 
292573  // private: // JJW hack
292574  /*
292575  name AST Memory Allocation Support Variables
292576  Memory allocations support variables
292577 
292578  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
292579  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
292580  and support the AST File I/O Mechanism.
292581  */
292582  /* */
292583 
292584  public:
292585 
292586  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
292587  // to current node (so that it will work cleanly with build functions to specify patterns).
292588  // virtual SgNode* addRegExpAttribute();
292595 
292596 // *** COMMON CODE SECTION ENDS HERE ***
292597 
292598 
292599 // End of memberFunctionString
292600 // Start of memberFunctionString
292601 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
292602 
292603  // the generated cast function
292604  // friend ROSE_DLL_API SgConditionalExp* isSgConditionalExp ( SgNode* s );
292605 
292606  typedef SgExpression base_node_type;
292607 
292608 
292609 // End of memberFunctionString
292610 // Start of memberFunctionString
292611 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
292612 
292613  SgType* get_type() const override;
292614 
292615 
292616 // End of memberFunctionString
292617 // Start of memberFunctionString
292618 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
292619 
292620  void post_construction_initialization() override;
292621 
292622 
292623 // End of memberFunctionString
292624 
292625  public:
292626  SgExpression* get_conditional_exp() const;
292627  void set_conditional_exp(SgExpression* conditional_exp);
292628 
292629  public:
292630  SgExpression* get_true_exp() const;
292631  void set_true_exp(SgExpression* true_exp);
292632 
292633  public:
292634  SgExpression* get_false_exp() const;
292635  void set_false_exp(SgExpression* false_exp);
292636 
292637 
292638 
292639  public:
292640  virtual ~SgConditionalExp();
292641 
292642 
292643  public:
292644  SgConditionalExp(Sg_File_Info* startOfConstruct , SgExpression* conditional_exp = NULL, SgExpression* true_exp = NULL, SgExpression* false_exp = NULL, SgType* expression_type = NULL);
292645  SgConditionalExp(SgExpression* conditional_exp, SgExpression* true_exp, SgExpression* false_exp, SgType* expression_type);
292646 
292647  protected:
292648 // Start of memberFunctionString
292650 
292651 // End of memberFunctionString
292652 // Start of memberFunctionString
292654 
292655 // End of memberFunctionString
292656 // Start of memberFunctionString
292658 
292659 // End of memberFunctionString
292660 // Start of memberFunctionString
292662 
292663 // End of memberFunctionString
292664 
292665 
292666 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
292667 
292668 
292669  };
292670 #endif
292671 
292672 // postdeclarations for SgConditionalExp
292673 
292674 /* #line 292675 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
292675 
292676 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
292677 
292678 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
292679 
292680 
292681 /* #line 292682 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
292682 
292683 
292684 
292685 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
292686 
292687 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
292688 // This code is automatically generated for each
292689 // terminal and non-terminal within the defined
292690 // grammar. There is a simple way to change the
292691 // code to fix bugs etc. See the ROSE README file
292692 // for directions.
292693 
292694 // tps: (02/22/2010): Adding DLL export requirements
292695 #include "rosedll.h"
292696 
292697 // predeclarations for SgNewExp
292698 
292699 /* #line 292700 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
292700 
292701 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
292702 
292703 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
292704 
292705 #if 1
292706 // Class Definition for SgNewExp
292707 class ROSE_DLL_API SgNewExp : public SgExpression
292708  {
292709  public:
292710 
292711 
292712 /* #line 292713 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
292713 
292714  virtual SgNode* copy ( SgCopyHelp& help) const override;
292715 // Start of memberFunctionString
292716 /* #line 184 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
292717 
292718  SgExpression *get_next( int& n) const ROSE_DEPRECATED_FUNCTION;
292719  int replace_expression( SgExpression *, SgExpression *) override ROSE_DEPRECATED_FUNCTION;
292720 
292721 
292722 // End of memberFunctionString
292723 // Start of memberFunctionString
292724 /* #line 1295 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
292725 
292726  // DQ (1/16/2006): Added to support special version of get_type.
292727  // returns SgPointerType::createType(p_expression_type)
292728  // SgType* get_type() const;
292729 
292730 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
292731  virtual unsigned int cfgIndexForEnd() const override;
292732  virtual unsigned int cfgFindChildIndex(SgNode* n) override;
292733  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
292734  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
292735 #endif
292736 
292737  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
292738  int get_name_qualification_length() const override;
292739  void set_name_qualification_length(int name_qualification_length) override;
292740 
292741  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
292742  bool get_type_elaboration_required() const override;
292743  void set_type_elaboration_required(bool type_elaboration_required) override;
292744 
292745  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
292746  bool get_global_qualification_required() const override;
292747  void set_global_qualification_required(bool global_qualification_required) override;
292748 
292749  // DQ (4/15/2019): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
292750  int get_name_qualification_for_pointer_to_member_class_length() const override;
292751  void set_name_qualification_for_pointer_to_member_class_length(int name_qualification_length) override;
292752 
292753  // DQ (4/15/2019): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
292754  bool get_type_elaboration_for_pointer_to_member_class_required() const override;
292755  void set_type_elaboration_for_pointer_to_member_class_required(bool type_elaboration_required) override;
292756 
292757  // DQ (4/15/2019): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
292758  bool get_global_qualification_for_pointer_to_member_class_required() const override;
292759  void set_global_qualification_for_pointer_to_member_class_required(bool global_qualification_required) override;
292760 
292761 
292762 
292763 // End of memberFunctionString
292764 // Start of memberFunctionString
292765 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
292766 
292767 // *** COMMON CODE SECTION BEGINS HERE ***
292768 
292769  public:
292770 
292771  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
292772  // and not required which is required to match the other aspects of the copy mechanism code generation.
292773  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
292774  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
292775  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
292776  // virtual SgNode* copy ( const SgCopyHelp & help) const;
292777 
292779  virtual std::string class_name() const override;
292780 
292782  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
292783 
292785  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
292786  // static const VariantT static_variant = V_SgNewExp;
292787  enum { static_variant = V_SgNewExp };
292788 
292789  /* the generated cast function */
292791  ROSE_DLL_API friend SgNewExp* isSgNewExp( SgNode * s );
292792 
292794  ROSE_DLL_API friend const SgNewExp* isSgNewExp( const SgNode * s );
292795 
292796  // ******************************************
292797  // * Memory Pool / New / Delete
292798  // ******************************************
292799 
292800  public:
292802  static const unsigned pool_size; //
292804  static std::vector<unsigned char *> pools; //
292806  static SgNewExp * next_node; //
292807 
292809  static unsigned long initializeStorageClassArray(SgNewExpStorageClass *); //
292810 
292812  static void clearMemoryPool(); //
292813  static void deleteMemoryPool(); //
292814 
292816  static void extendMemoryPoolForFileIO(); //
292817 
292819  static SgNewExp * getPointerFromGlobalIndex(unsigned long); //
292821  static SgNewExp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
292822 
292824  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
292826  static void resetValidFreepointers(); //
292828  static unsigned long getNumberOfLastValidPointer(); //
292829 
292830 
292831 #if defined(INLINE_FUNCTIONS)
292832 
292833  inline void *operator new (size_t size);
292834 #else
292835 
292836  void *operator new (size_t size);
292837 #endif
292838 
292839  void operator delete (void* pointer, size_t size);
292840 
292841  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
292842  void operator delete (void* pointer)
292843  {
292844  // This is the generated delete operator...
292845  SgNewExp::operator delete (pointer,sizeof(SgNewExp));
292846  }
292847 
292849  static size_t numberOfNodes();
292850 
292852  static size_t memoryUsage();
292853 
292854  // End of scope which started in IR nodes specific code
292855  /* */
292856 
292857  /* name Internal Functions
292858  \brief Internal functions ... incomplete-documentation
292859 
292860  These functions have been made public as part of the design, but they are suggested for internal use
292861  or by particularly knowledgeable users for specialized tools or applications.
292862 
292863  \internal We could not make these private because they are required by user for special purposes. And
292864  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
292865 
292866  */
292867 
292868  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
292869  // overridden in every class by *generated* implementation
292871  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
292872  // MS: 06/28/02 container of names of variables or container indices
292873  // used used in the traversal to access AST successor nodes
292874  // overridden in every class by *generated* implementation
292877  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
292878 
292879  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
292880  // than all the vector copies. The implementation for these functions is generated for each class.
292882  virtual size_t get_numberOfTraversalSuccessors() override;
292884  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
292886  virtual size_t get_childIndex(SgNode *child) override;
292887 
292888 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
292889  // MS: 08/16/2002 method for generating RTI information
292891  virtual RTIReturnType roseRTI() override;
292892 #endif
292893  /* */
292894 
292895 
292896 
292897  /* name Deprecated Functions
292898  \brief Deprecated functions ... incomplete-documentation
292899 
292900  These functions have been deprecated from use.
292901  */
292902  /* */
292903 
292905  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
292906 
292907  // JJW (10/16/2008): Changed to a single function in Node.code, and put
292908  // getVariant() in #if 0 block to prevent confusing Doxygen
292909 #if 0
292910 
292911  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
292913  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
292914 #endif
292915  /* */
292916 
292917 
292918 
292919 
292920  public:
292921  /* name Traversal Support Functions
292922  \brief Traversal support functions ... incomplete-documentation
292923 
292924  These functions have been made public as part of the design, but they are suggested for internal use
292925  or by particularly knowledgable users for specialized tools or applications.
292926  */
292927  /* */
292928 
292929  // DQ (11/26/2005): Support for visitor pattern mechanims
292930  // (inferior to ROSE traversal mechanism, experimental).
292934 
292935  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
292937  virtual void accept (ROSE_VisitorPattern & visitor) override;
292938 
292939  // DQ (12/26/2005): Support for traversal based on the memory pool
292942  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
292943 
292946  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
292947 
292948  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
292949  // This traversal helps support internal tools that call static member functions.
292950  // note: this function operates on the memory pools.
292953  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
292954  /* */
292955 
292956 
292957  public:
292958  /* name Memory Allocation Functions
292959  \brief Memory allocations functions ... incomplete-documentation
292960 
292961  These functions have been made public as part of the design, but they are suggested for internal use
292962  or by particularly knowledgable users for specialized tools or applications.
292963  */
292964  /* */
292965 
292976  virtual bool isInMemoryPool() override;
292977 
292988  virtual void checkDataMemberPointersIfInMemoryPool() override;
292989 
292990  // DQ (4/30/2006): Modified to be a const function.
293005  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
293006 
293016  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
293017 
293029  virtual long getChildIndex( SgNode* childNode ) const override;
293030 
293031  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
293032  // comment here (changed to be a C style comment and not be a doxygen comment).
293033  /* \brief Constructor for use by AST File I/O Mechanism
293034 
293035  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
293036  which obtained via fast binary file I/O from disk.
293037  */
293038  // SgNewExp( SgNewExpStorageClass& source );
293039 
293040 
293041 
293042 
293043 
293044  // JH (10/24/2005): methods added to support the ast file IO
293045  private:
293046 
293047  /* name AST Memory Allocation Support Functions
293048  \brief Memory allocations support....
293049 
293050  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
293051  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
293052  and support the AST File I/O Mechanism.
293053  */
293054  /* */
293055 
293056  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
293057  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
293058  that I use the same type everywhere, if any changes are made. THe second one declares the type
293059  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
293060  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
293061  a correspinding one in the AST_FILE_IO class!
293062  */
293063  // DQ (9/2/2015): This typedef is no longer used, we can't define the
293064  // comment here (changed to be a C style comment and not be a doxygen comment).
293065  /* \brief Typedef used for low level memory access.
293066  */
293067  // typedef unsigned char* TestType;
293068 
293069  // DQ (9/2/2015): This typedef is no longer used, we can't define the
293070  // comment here (changed to be a C style comment and not be a doxygen comment).
293071  /* \brief Typedef used to hold memory addresses as values.
293072  */
293073  // typedef unsigned long AddressType;
293074 
293075 
293076 
293077  // necessary, to have direct access to the p_freepointer and the private methods !
293079  friend class AST_FILE_IO;
293080 
293082  friend class SgNewExpStorageClass;
293083 
293085  friend class AstSpecificDataManagingClass;
293086 
293088  friend class AstSpecificDataManagingClassStorageClass;
293089 
293090  public:
293092  SgNewExp( const SgNewExpStorageClass& source );
293093 
293094  // private: // JJW hack
293095  /*
293096  name AST Memory Allocation Support Variables
293097  Memory allocations support variables
293098 
293099  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
293100  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
293101  and support the AST File I/O Mechanism.
293102  */
293103  /* */
293104 
293105  public:
293106 
293107  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
293108  // to current node (so that it will work cleanly with build functions to specify patterns).
293109  // virtual SgNode* addRegExpAttribute();
293115  SgNewExp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
293116 
293117 // *** COMMON CODE SECTION ENDS HERE ***
293118 
293119 
293120 // End of memberFunctionString
293121 // Start of memberFunctionString
293122 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
293123 
293124  // the generated cast function
293125  // friend ROSE_DLL_API SgNewExp* isSgNewExp ( SgNode* s );
293126 
293127  typedef SgExpression base_node_type;
293128 
293129 
293130 // End of memberFunctionString
293131 // Start of memberFunctionString
293132 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
293133 
293134  SgType* get_type() const override;
293135 
293136 
293137 // End of memberFunctionString
293138 // Start of memberFunctionString
293139 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
293140 
293141  void post_construction_initialization() override;
293142 
293143 
293144 // End of memberFunctionString
293145 
293146  public:
293147  SgType* get_specified_type() const;
293148  void set_specified_type(SgType* specified_type);
293149 
293150  public:
293151  SgExprListExp* get_placement_args() const;
293152  void set_placement_args(SgExprListExp* placement_args);
293153 
293154  public:
293155  SgConstructorInitializer* get_constructor_args() const;
293156  void set_constructor_args(SgConstructorInitializer* constructor_args);
293157 
293158  public:
293159  SgExpression* get_builtin_args() const;
293160  void set_builtin_args(SgExpression* builtin_args);
293161 
293162  public:
293163  short get_need_global_specifier() const;
293164  void set_need_global_specifier(short need_global_specifier);
293165 
293166  public:
293167  SgFunctionDeclaration* get_newOperatorDeclaration() const;
293168  void set_newOperatorDeclaration(SgFunctionDeclaration* newOperatorDeclaration);
293169 
293170 
293171 
293172 
293173 
293174 
293175 
293176 
293177  public:
293178  virtual ~SgNewExp();
293179 
293180 
293181  public:
293182  SgNewExp(Sg_File_Info* startOfConstruct , SgType* specified_type = NULL, SgExprListExp* placement_args = NULL, SgConstructorInitializer* constructor_args = NULL, SgExpression* builtin_args = NULL, short need_global_specifier = 0, SgFunctionDeclaration* newOperatorDeclaration = NULL);
293183  SgNewExp(SgType* specified_type, SgExprListExp* placement_args, SgConstructorInitializer* constructor_args, SgExpression* builtin_args, short need_global_specifier, SgFunctionDeclaration* newOperatorDeclaration);
293184 
293185  protected:
293186 // Start of memberFunctionString
293187 SgType* p_specified_type;
293188 
293189 // End of memberFunctionString
293190 // Start of memberFunctionString
293192 
293193 // End of memberFunctionString
293194 // Start of memberFunctionString
293196 
293197 // End of memberFunctionString
293198 // Start of memberFunctionString
293200 
293201 // End of memberFunctionString
293202 // Start of memberFunctionString
293204 
293205 // End of memberFunctionString
293206 // Start of memberFunctionString
293207 SgFunctionDeclaration* p_newOperatorDeclaration;
293208 
293209 // End of memberFunctionString
293210 // Start of memberFunctionString
293211 int p_name_qualification_length;
293212 
293213 // End of memberFunctionString
293214 // Start of memberFunctionString
293215 bool p_type_elaboration_required;
293216 
293217 // End of memberFunctionString
293218 // Start of memberFunctionString
293219 bool p_global_qualification_required;
293220 
293221 // End of memberFunctionString
293222 // Start of memberFunctionString
293223 int p_name_qualification_for_pointer_to_member_class_length;
293224 
293225 // End of memberFunctionString
293226 // Start of memberFunctionString
293227 bool p_type_elaboration_for_pointer_to_member_class_required;
293228 
293229 // End of memberFunctionString
293230 // Start of memberFunctionString
293231 bool p_global_qualification_for_pointer_to_member_class_required;
293232 
293233 // End of memberFunctionString
293234 
293235 
293236 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
293237 
293238 
293239  };
293240 #endif
293241 
293242 // postdeclarations for SgNewExp
293243 
293244 /* #line 293245 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
293245 
293246 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
293247 
293248 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
293249 
293250 
293251 /* #line 293252 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
293252 
293253 
293254 
293255 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
293256 
293257 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
293258 // This code is automatically generated for each
293259 // terminal and non-terminal within the defined
293260 // grammar. There is a simple way to change the
293261 // code to fix bugs etc. See the ROSE README file
293262 // for directions.
293263 
293264 // tps: (02/22/2010): Adding DLL export requirements
293265 #include "rosedll.h"
293266 
293267 // predeclarations for SgDeleteExp
293268 
293269 /* #line 293270 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
293270 
293271 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
293272 
293273 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
293274 
293275 #if 1
293276 // Class Definition for SgDeleteExp
293277 class ROSE_DLL_API SgDeleteExp : public SgExpression
293278  {
293279  public:
293280 
293281 
293282 /* #line 293283 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
293283 
293284  virtual SgNode* copy ( SgCopyHelp& help) const override;
293285 // Start of memberFunctionString
293286 /* #line 184 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
293287 
293288  SgExpression *get_next( int& n) const ROSE_DEPRECATED_FUNCTION;
293289  int replace_expression( SgExpression *, SgExpression *) override ROSE_DEPRECATED_FUNCTION;
293290 
293291 
293292 // End of memberFunctionString
293293 // Start of memberFunctionString
293294 /* #line 1334 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
293295 
293296 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
293297  virtual unsigned int cfgIndexForEnd() const override;
293298  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
293299  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
293300 #endif
293301 
293302 
293303 
293304 // End of memberFunctionString
293305 // Start of memberFunctionString
293306 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
293307 
293308 // *** COMMON CODE SECTION BEGINS HERE ***
293309 
293310  public:
293311 
293312  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
293313  // and not required which is required to match the other aspects of the copy mechanism code generation.
293314  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
293315  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
293316  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
293317  // virtual SgNode* copy ( const SgCopyHelp & help) const;
293318 
293320  virtual std::string class_name() const override;
293321 
293323  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
293324 
293326  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
293327  // static const VariantT static_variant = V_SgDeleteExp;
293328  enum { static_variant = V_SgDeleteExp };
293329 
293330  /* the generated cast function */
293332  ROSE_DLL_API friend SgDeleteExp* isSgDeleteExp( SgNode * s );
293333 
293335  ROSE_DLL_API friend const SgDeleteExp* isSgDeleteExp( const SgNode * s );
293336 
293337  // ******************************************
293338  // * Memory Pool / New / Delete
293339  // ******************************************
293340 
293341  public:
293343  static const unsigned pool_size; //
293345  static std::vector<unsigned char *> pools; //
293347  static SgDeleteExp * next_node; //
293348 
293350  static unsigned long initializeStorageClassArray(SgDeleteExpStorageClass *); //
293351 
293353  static void clearMemoryPool(); //
293354  static void deleteMemoryPool(); //
293355 
293357  static void extendMemoryPoolForFileIO(); //
293358 
293360  static SgDeleteExp * getPointerFromGlobalIndex(unsigned long); //
293362  static SgDeleteExp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
293363 
293365  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
293367  static void resetValidFreepointers(); //
293369  static unsigned long getNumberOfLastValidPointer(); //
293370 
293371 
293372 #if defined(INLINE_FUNCTIONS)
293373 
293374  inline void *operator new (size_t size);
293375 #else
293376 
293377  void *operator new (size_t size);
293378 #endif
293379 
293380  void operator delete (void* pointer, size_t size);
293381 
293382  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
293383  void operator delete (void* pointer)
293384  {
293385  // This is the generated delete operator...
293386  SgDeleteExp::operator delete (pointer,sizeof(SgDeleteExp));
293387  }
293388 
293390  static size_t numberOfNodes();
293391 
293393  static size_t memoryUsage();
293394 
293395  // End of scope which started in IR nodes specific code
293396  /* */
293397 
293398  /* name Internal Functions
293399  \brief Internal functions ... incomplete-documentation
293400 
293401  These functions have been made public as part of the design, but they are suggested for internal use
293402  or by particularly knowledgeable users for specialized tools or applications.
293403 
293404  \internal We could not make these private because they are required by user for special purposes. And
293405  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
293406 
293407  */
293408 
293409  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
293410  // overridden in every class by *generated* implementation
293412  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
293413  // MS: 06/28/02 container of names of variables or container indices
293414  // used used in the traversal to access AST successor nodes
293415  // overridden in every class by *generated* implementation
293418  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
293419 
293420  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
293421  // than all the vector copies. The implementation for these functions is generated for each class.
293423  virtual size_t get_numberOfTraversalSuccessors() override;
293425  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
293427  virtual size_t get_childIndex(SgNode *child) override;
293428 
293429 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
293430  // MS: 08/16/2002 method for generating RTI information
293432  virtual RTIReturnType roseRTI() override;
293433 #endif
293434  /* */
293435 
293436 
293437 
293438  /* name Deprecated Functions
293439  \brief Deprecated functions ... incomplete-documentation
293440 
293441  These functions have been deprecated from use.
293442  */
293443  /* */
293444 
293446  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
293447 
293448  // JJW (10/16/2008): Changed to a single function in Node.code, and put
293449  // getVariant() in #if 0 block to prevent confusing Doxygen
293450 #if 0
293451 
293452  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
293454  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
293455 #endif
293456  /* */
293457 
293458 
293459 
293460 
293461  public:
293462  /* name Traversal Support Functions
293463  \brief Traversal support functions ... incomplete-documentation
293464 
293465  These functions have been made public as part of the design, but they are suggested for internal use
293466  or by particularly knowledgable users for specialized tools or applications.
293467  */
293468  /* */
293469 
293470  // DQ (11/26/2005): Support for visitor pattern mechanims
293471  // (inferior to ROSE traversal mechanism, experimental).
293475 
293476  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
293478  virtual void accept (ROSE_VisitorPattern & visitor) override;
293479 
293480  // DQ (12/26/2005): Support for traversal based on the memory pool
293483  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
293484 
293487  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
293488 
293489  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
293490  // This traversal helps support internal tools that call static member functions.
293491  // note: this function operates on the memory pools.
293494  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
293495  /* */
293496 
293497 
293498  public:
293499  /* name Memory Allocation Functions
293500  \brief Memory allocations functions ... incomplete-documentation
293501 
293502  These functions have been made public as part of the design, but they are suggested for internal use
293503  or by particularly knowledgable users for specialized tools or applications.
293504  */
293505  /* */
293506 
293517  virtual bool isInMemoryPool() override;
293518 
293529  virtual void checkDataMemberPointersIfInMemoryPool() override;
293530 
293531  // DQ (4/30/2006): Modified to be a const function.
293546  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
293547 
293557  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
293558 
293570  virtual long getChildIndex( SgNode* childNode ) const override;
293571 
293572  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
293573  // comment here (changed to be a C style comment and not be a doxygen comment).
293574  /* \brief Constructor for use by AST File I/O Mechanism
293575 
293576  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
293577  which obtained via fast binary file I/O from disk.
293578  */
293579  // SgDeleteExp( SgDeleteExpStorageClass& source );
293580 
293581 
293582 
293583 
293584 
293585  // JH (10/24/2005): methods added to support the ast file IO
293586  private:
293587 
293588  /* name AST Memory Allocation Support Functions
293589  \brief Memory allocations support....
293590 
293591  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
293592  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
293593  and support the AST File I/O Mechanism.
293594  */
293595  /* */
293596 
293597  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
293598  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
293599  that I use the same type everywhere, if any changes are made. THe second one declares the type
293600  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
293601  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
293602  a correspinding one in the AST_FILE_IO class!
293603  */
293604  // DQ (9/2/2015): This typedef is no longer used, we can't define the
293605  // comment here (changed to be a C style comment and not be a doxygen comment).
293606  /* \brief Typedef used for low level memory access.
293607  */
293608  // typedef unsigned char* TestType;
293609 
293610  // DQ (9/2/2015): This typedef is no longer used, we can't define the
293611  // comment here (changed to be a C style comment and not be a doxygen comment).
293612  /* \brief Typedef used to hold memory addresses as values.
293613  */
293614  // typedef unsigned long AddressType;
293615 
293616 
293617 
293618  // necessary, to have direct access to the p_freepointer and the private methods !
293620  friend class AST_FILE_IO;
293621 
293623  friend class SgDeleteExpStorageClass;
293624 
293626  friend class AstSpecificDataManagingClass;
293627 
293629  friend class AstSpecificDataManagingClassStorageClass;
293630 
293631  public:
293633  SgDeleteExp( const SgDeleteExpStorageClass& source );
293634 
293635  // private: // JJW hack
293636  /*
293637  name AST Memory Allocation Support Variables
293638  Memory allocations support variables
293639 
293640  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
293641  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
293642  and support the AST File I/O Mechanism.
293643  */
293644  /* */
293645 
293646  public:
293647 
293648  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
293649  // to current node (so that it will work cleanly with build functions to specify patterns).
293650  // virtual SgNode* addRegExpAttribute();
293656  SgDeleteExp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
293657 
293658 // *** COMMON CODE SECTION ENDS HERE ***
293659 
293660 
293661 // End of memberFunctionString
293662 // Start of memberFunctionString
293663 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
293664 
293665  // the generated cast function
293666  // friend ROSE_DLL_API SgDeleteExp* isSgDeleteExp ( SgNode* s );
293667 
293668  typedef SgExpression base_node_type;
293669 
293670 
293671 // End of memberFunctionString
293672 // Start of memberFunctionString
293673 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
293674 
293675  SgType* get_type() const override;
293676 
293677 
293678 // End of memberFunctionString
293679 // Start of memberFunctionString
293680 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
293681 
293682  void post_construction_initialization() override;
293683 
293684 
293685 // End of memberFunctionString
293686 
293687  public:
293688  SgExpression* get_variable() const;
293689  void set_variable(SgExpression* variable);
293690 
293691  public:
293692  short get_is_array() const;
293693  void set_is_array(short is_array);
293694 
293695  public:
293696  short get_need_global_specifier() const;
293697  void set_need_global_specifier(short need_global_specifier);
293698 
293699  public:
293700  SgFunctionDeclaration* get_deleteOperatorDeclaration() const;
293701  void set_deleteOperatorDeclaration(SgFunctionDeclaration* deleteOperatorDeclaration);
293702 
293703 
293704  public:
293705  virtual ~SgDeleteExp();
293706 
293707 
293708  public:
293709  SgDeleteExp(Sg_File_Info* startOfConstruct , SgExpression* variable = NULL, short is_array = 0, short need_global_specifier = 0, SgFunctionDeclaration* deleteOperatorDeclaration = NULL);
293710  SgDeleteExp(SgExpression* variable, short is_array, short need_global_specifier, SgFunctionDeclaration* deleteOperatorDeclaration);
293711 
293712  protected:
293713 // Start of memberFunctionString
293715 
293716 // End of memberFunctionString
293717 // Start of memberFunctionString
293719 
293720 // End of memberFunctionString
293721 // Start of memberFunctionString
293723 
293724 // End of memberFunctionString
293725 // Start of memberFunctionString
293726 SgFunctionDeclaration* p_deleteOperatorDeclaration;
293727 
293728 // End of memberFunctionString
293729 
293730 
293731 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
293732 
293733 
293734  };
293735 #endif
293736 
293737 // postdeclarations for SgDeleteExp
293738 
293739 /* #line 293740 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
293740 
293741 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
293742 
293743 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
293744 
293745 
293746 /* #line 293747 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
293747 
293748 
293749 
293750 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
293751 
293752 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
293753 // This code is automatically generated for each
293754 // terminal and non-terminal within the defined
293755 // grammar. There is a simple way to change the
293756 // code to fix bugs etc. See the ROSE README file
293757 // for directions.
293758 
293759 // tps: (02/22/2010): Adding DLL export requirements
293760 #include "rosedll.h"
293761 
293762 // predeclarations for SgThisExp
293763 
293764 /* #line 293765 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
293765 
293766 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
293767 
293768 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
293769 
293770 #if 1
293771 // Class Definition for SgThisExp
293772 class ROSE_DLL_API SgThisExp : public SgExpression
293773  {
293774  public:
293775 
293776 
293777 /* #line 293778 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
293778 
293779  virtual SgNode* copy ( SgCopyHelp& help) const override;
293780 // Start of memberFunctionString
293781 /* #line 1343 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
293782 
293783 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
293784  virtual unsigned int cfgIndexForEnd() const override;
293785  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
293786  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
293787 #endif
293788 
293789 
293790 
293791 // End of memberFunctionString
293792 // Start of memberFunctionString
293793 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
293794 
293795 // *** COMMON CODE SECTION BEGINS HERE ***
293796 
293797  public:
293798 
293799  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
293800  // and not required which is required to match the other aspects of the copy mechanism code generation.
293801  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
293802  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
293803  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
293804  // virtual SgNode* copy ( const SgCopyHelp & help) const;
293805 
293807  virtual std::string class_name() const override;
293808 
293810  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
293811 
293813  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
293814  // static const VariantT static_variant = V_SgThisExp;
293815  enum { static_variant = V_SgThisExp };
293816 
293817  /* the generated cast function */
293819  ROSE_DLL_API friend SgThisExp* isSgThisExp( SgNode * s );
293820 
293822  ROSE_DLL_API friend const SgThisExp* isSgThisExp( const SgNode * s );
293823 
293824  // ******************************************
293825  // * Memory Pool / New / Delete
293826  // ******************************************
293827 
293828  public:
293830  static const unsigned pool_size; //
293832  static std::vector<unsigned char *> pools; //
293834  static SgThisExp * next_node; //
293835 
293837  static unsigned long initializeStorageClassArray(SgThisExpStorageClass *); //
293838 
293840  static void clearMemoryPool(); //
293841  static void deleteMemoryPool(); //
293842 
293844  static void extendMemoryPoolForFileIO(); //
293845 
293847  static SgThisExp * getPointerFromGlobalIndex(unsigned long); //
293849  static SgThisExp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
293850 
293852  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
293854  static void resetValidFreepointers(); //
293856  static unsigned long getNumberOfLastValidPointer(); //
293857 
293858 
293859 #if defined(INLINE_FUNCTIONS)
293860 
293861  inline void *operator new (size_t size);
293862 #else
293863 
293864  void *operator new (size_t size);
293865 #endif
293866 
293867  void operator delete (void* pointer, size_t size);
293868 
293869  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
293870  void operator delete (void* pointer)
293871  {
293872  // This is the generated delete operator...
293873  SgThisExp::operator delete (pointer,sizeof(SgThisExp));
293874  }
293875 
293877  static size_t numberOfNodes();
293878 
293880  static size_t memoryUsage();
293881 
293882  // End of scope which started in IR nodes specific code
293883  /* */
293884 
293885  /* name Internal Functions
293886  \brief Internal functions ... incomplete-documentation
293887 
293888  These functions have been made public as part of the design, but they are suggested for internal use
293889  or by particularly knowledgeable users for specialized tools or applications.
293890 
293891  \internal We could not make these private because they are required by user for special purposes. And
293892  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
293893 
293894  */
293895 
293896  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
293897  // overridden in every class by *generated* implementation
293899  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
293900  // MS: 06/28/02 container of names of variables or container indices
293901  // used used in the traversal to access AST successor nodes
293902  // overridden in every class by *generated* implementation
293905  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
293906 
293907  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
293908  // than all the vector copies. The implementation for these functions is generated for each class.
293910  virtual size_t get_numberOfTraversalSuccessors() override;
293912  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
293914  virtual size_t get_childIndex(SgNode *child) override;
293915 
293916 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
293917  // MS: 08/16/2002 method for generating RTI information
293919  virtual RTIReturnType roseRTI() override;
293920 #endif
293921  /* */
293922 
293923 
293924 
293925  /* name Deprecated Functions
293926  \brief Deprecated functions ... incomplete-documentation
293927 
293928  These functions have been deprecated from use.
293929  */
293930  /* */
293931 
293933  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
293934 
293935  // JJW (10/16/2008): Changed to a single function in Node.code, and put
293936  // getVariant() in #if 0 block to prevent confusing Doxygen
293937 #if 0
293938 
293939  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
293941  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
293942 #endif
293943  /* */
293944 
293945 
293946 
293947 
293948  public:
293949  /* name Traversal Support Functions
293950  \brief Traversal support functions ... incomplete-documentation
293951 
293952  These functions have been made public as part of the design, but they are suggested for internal use
293953  or by particularly knowledgable users for specialized tools or applications.
293954  */
293955  /* */
293956 
293957  // DQ (11/26/2005): Support for visitor pattern mechanims
293958  // (inferior to ROSE traversal mechanism, experimental).
293962 
293963  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
293965  virtual void accept (ROSE_VisitorPattern & visitor) override;
293966 
293967  // DQ (12/26/2005): Support for traversal based on the memory pool
293970  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
293971 
293974  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
293975 
293976  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
293977  // This traversal helps support internal tools that call static member functions.
293978  // note: this function operates on the memory pools.
293981  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
293982  /* */
293983 
293984 
293985  public:
293986  /* name Memory Allocation Functions
293987  \brief Memory allocations functions ... incomplete-documentation
293988 
293989  These functions have been made public as part of the design, but they are suggested for internal use
293990  or by particularly knowledgable users for specialized tools or applications.
293991  */
293992  /* */
293993 
294004  virtual bool isInMemoryPool() override;
294005 
294016  virtual void checkDataMemberPointersIfInMemoryPool() override;
294017 
294018  // DQ (4/30/2006): Modified to be a const function.
294033  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
294034 
294044  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
294045 
294057  virtual long getChildIndex( SgNode* childNode ) const override;
294058 
294059  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
294060  // comment here (changed to be a C style comment and not be a doxygen comment).
294061  /* \brief Constructor for use by AST File I/O Mechanism
294062 
294063  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
294064  which obtained via fast binary file I/O from disk.
294065  */
294066  // SgThisExp( SgThisExpStorageClass& source );
294067 
294068 
294069 
294070 
294071 
294072  // JH (10/24/2005): methods added to support the ast file IO
294073  private:
294074 
294075  /* name AST Memory Allocation Support Functions
294076  \brief Memory allocations support....
294077 
294078  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
294079  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
294080  and support the AST File I/O Mechanism.
294081  */
294082  /* */
294083 
294084  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
294085  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
294086  that I use the same type everywhere, if any changes are made. THe second one declares the type
294087  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
294088  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
294089  a correspinding one in the AST_FILE_IO class!
294090  */
294091  // DQ (9/2/2015): This typedef is no longer used, we can't define the
294092  // comment here (changed to be a C style comment and not be a doxygen comment).
294093  /* \brief Typedef used for low level memory access.
294094  */
294095  // typedef unsigned char* TestType;
294096 
294097  // DQ (9/2/2015): This typedef is no longer used, we can't define the
294098  // comment here (changed to be a C style comment and not be a doxygen comment).
294099  /* \brief Typedef used to hold memory addresses as values.
294100  */
294101  // typedef unsigned long AddressType;
294102 
294103 
294104 
294105  // necessary, to have direct access to the p_freepointer and the private methods !
294107  friend class AST_FILE_IO;
294108 
294110  friend class SgThisExpStorageClass;
294111 
294113  friend class AstSpecificDataManagingClass;
294114 
294116  friend class AstSpecificDataManagingClassStorageClass;
294117 
294118  public:
294120  SgThisExp( const SgThisExpStorageClass& source );
294121 
294122  // private: // JJW hack
294123  /*
294124  name AST Memory Allocation Support Variables
294125  Memory allocations support variables
294126 
294127  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
294128  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
294129  and support the AST File I/O Mechanism.
294130  */
294131  /* */
294132 
294133  public:
294134 
294135  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
294136  // to current node (so that it will work cleanly with build functions to specify patterns).
294137  // virtual SgNode* addRegExpAttribute();
294143  SgThisExp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
294144 
294145 // *** COMMON CODE SECTION ENDS HERE ***
294146 
294147 
294148 // End of memberFunctionString
294149 // Start of memberFunctionString
294150 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
294151 
294152  // the generated cast function
294153  // friend ROSE_DLL_API SgThisExp* isSgThisExp ( SgNode* s );
294154 
294155  typedef SgExpression base_node_type;
294156 
294157 
294158 // End of memberFunctionString
294159 // Start of memberFunctionString
294160 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
294161 
294162  SgType* get_type() const override;
294163 
294164 
294165 // End of memberFunctionString
294166 // Start of memberFunctionString
294167 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
294168 
294169  void post_construction_initialization() override;
294170 
294171 
294172 // End of memberFunctionString
294173 
294174  public:
294175  SgClassSymbol* get_class_symbol() const;
294176  void set_class_symbol(SgClassSymbol* class_symbol);
294177 
294178  public:
294179  SgNonrealSymbol* get_nonreal_symbol() const;
294180  void set_nonreal_symbol(SgNonrealSymbol* nonreal_symbol);
294181 
294182  public:
294183  int get_pobj_this() const;
294184  void set_pobj_this(int pobj_this);
294185 
294186 
294187  public:
294188  virtual ~SgThisExp();
294189 
294190 
294191  public:
294192  SgThisExp(Sg_File_Info* startOfConstruct , SgClassSymbol* class_symbol = NULL, SgNonrealSymbol* nonreal_symbol = NULL, int pobj_this = 0);
294193  SgThisExp(SgClassSymbol* class_symbol, SgNonrealSymbol* nonreal_symbol, int pobj_this);
294194 
294195  protected:
294196 // Start of memberFunctionString
294198 
294199 // End of memberFunctionString
294200 // Start of memberFunctionString
294201 SgNonrealSymbol* p_nonreal_symbol;
294202 
294203 // End of memberFunctionString
294204 // Start of memberFunctionString
294206 
294207 // End of memberFunctionString
294208 
294209 
294210 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
294211 
294212 
294213  };
294214 #endif
294215 
294216 // postdeclarations for SgThisExp
294217 
294218 /* #line 294219 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
294219 
294220 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
294221 
294222 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
294223 
294224 
294225 /* #line 294226 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
294226 
294227 
294228 
294229 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
294230 
294231 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
294232 // This code is automatically generated for each
294233 // terminal and non-terminal within the defined
294234 // grammar. There is a simple way to change the
294235 // code to fix bugs etc. See the ROSE README file
294236 // for directions.
294237 
294238 // tps: (02/22/2010): Adding DLL export requirements
294239 #include "rosedll.h"
294240 
294241 // predeclarations for SgRefExp
294242 
294243 /* #line 294244 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
294244 
294245 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
294246 
294247 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
294248 
294249 #if 1
294250 // Class Definition for SgRefExp
294251 class ROSE_DLL_API SgRefExp : public SgExpression
294252  {
294253  public:
294254 
294255 
294256 /* #line 294257 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
294257 
294258  virtual SgNode* copy ( SgCopyHelp& help) const override;
294259 // Start of memberFunctionString
294260 /* #line 1448 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
294261 
294262 
294263 
294264 // End of memberFunctionString
294265 // Start of memberFunctionString
294266 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
294267 
294268 // *** COMMON CODE SECTION BEGINS HERE ***
294269 
294270  public:
294271 
294272  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
294273  // and not required which is required to match the other aspects of the copy mechanism code generation.
294274  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
294275  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
294276  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
294277  // virtual SgNode* copy ( const SgCopyHelp & help) const;
294278 
294280  virtual std::string class_name() const override;
294281 
294283  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
294284 
294286  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
294287  // static const VariantT static_variant = V_SgRefExp;
294288  enum { static_variant = V_SgRefExp };
294289 
294290  /* the generated cast function */
294292  ROSE_DLL_API friend SgRefExp* isSgRefExp( SgNode * s );
294293 
294295  ROSE_DLL_API friend const SgRefExp* isSgRefExp( const SgNode * s );
294296 
294297  // ******************************************
294298  // * Memory Pool / New / Delete
294299  // ******************************************
294300 
294301  public:
294303  static const unsigned pool_size; //
294305  static std::vector<unsigned char *> pools; //
294307  static SgRefExp * next_node; //
294308 
294310  static unsigned long initializeStorageClassArray(SgRefExpStorageClass *); //
294311 
294313  static void clearMemoryPool(); //
294314  static void deleteMemoryPool(); //
294315 
294317  static void extendMemoryPoolForFileIO(); //
294318 
294320  static SgRefExp * getPointerFromGlobalIndex(unsigned long); //
294322  static SgRefExp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
294323 
294325  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
294327  static void resetValidFreepointers(); //
294329  static unsigned long getNumberOfLastValidPointer(); //
294330 
294331 
294332 #if defined(INLINE_FUNCTIONS)
294333 
294334  inline void *operator new (size_t size);
294335 #else
294336 
294337  void *operator new (size_t size);
294338 #endif
294339 
294340  void operator delete (void* pointer, size_t size);
294341 
294342  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
294343  void operator delete (void* pointer)
294344  {
294345  // This is the generated delete operator...
294346  SgRefExp::operator delete (pointer,sizeof(SgRefExp));
294347  }
294348 
294350  static size_t numberOfNodes();
294351 
294353  static size_t memoryUsage();
294354 
294355  // End of scope which started in IR nodes specific code
294356  /* */
294357 
294358  /* name Internal Functions
294359  \brief Internal functions ... incomplete-documentation
294360 
294361  These functions have been made public as part of the design, but they are suggested for internal use
294362  or by particularly knowledgeable users for specialized tools or applications.
294363 
294364  \internal We could not make these private because they are required by user for special purposes. And
294365  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
294366 
294367  */
294368 
294369  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
294370  // overridden in every class by *generated* implementation
294372  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
294373  // MS: 06/28/02 container of names of variables or container indices
294374  // used used in the traversal to access AST successor nodes
294375  // overridden in every class by *generated* implementation
294378  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
294379 
294380  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
294381  // than all the vector copies. The implementation for these functions is generated for each class.
294383  virtual size_t get_numberOfTraversalSuccessors() override;
294385  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
294387  virtual size_t get_childIndex(SgNode *child) override;
294388 
294389 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
294390  // MS: 08/16/2002 method for generating RTI information
294392  virtual RTIReturnType roseRTI() override;
294393 #endif
294394  /* */
294395 
294396 
294397 
294398  /* name Deprecated Functions
294399  \brief Deprecated functions ... incomplete-documentation
294400 
294401  These functions have been deprecated from use.
294402  */
294403  /* */
294404 
294406  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
294407 
294408  // JJW (10/16/2008): Changed to a single function in Node.code, and put
294409  // getVariant() in #if 0 block to prevent confusing Doxygen
294410 #if 0
294411 
294412  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
294414  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
294415 #endif
294416  /* */
294417 
294418 
294419 
294420 
294421  public:
294422  /* name Traversal Support Functions
294423  \brief Traversal support functions ... incomplete-documentation
294424 
294425  These functions have been made public as part of the design, but they are suggested for internal use
294426  or by particularly knowledgable users for specialized tools or applications.
294427  */
294428  /* */
294429 
294430  // DQ (11/26/2005): Support for visitor pattern mechanims
294431  // (inferior to ROSE traversal mechanism, experimental).
294435 
294436  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
294438  virtual void accept (ROSE_VisitorPattern & visitor) override;
294439 
294440  // DQ (12/26/2005): Support for traversal based on the memory pool
294443  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
294444 
294447  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
294448 
294449  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
294450  // This traversal helps support internal tools that call static member functions.
294451  // note: this function operates on the memory pools.
294454  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
294455  /* */
294456 
294457 
294458  public:
294459  /* name Memory Allocation Functions
294460  \brief Memory allocations functions ... incomplete-documentation
294461 
294462  These functions have been made public as part of the design, but they are suggested for internal use
294463  or by particularly knowledgable users for specialized tools or applications.
294464  */
294465  /* */
294466 
294477  virtual bool isInMemoryPool() override;
294478 
294489  virtual void checkDataMemberPointersIfInMemoryPool() override;
294490 
294491  // DQ (4/30/2006): Modified to be a const function.
294506  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
294507 
294517  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
294518 
294530  virtual long getChildIndex( SgNode* childNode ) const override;
294531 
294532  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
294533  // comment here (changed to be a C style comment and not be a doxygen comment).
294534  /* \brief Constructor for use by AST File I/O Mechanism
294535 
294536  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
294537  which obtained via fast binary file I/O from disk.
294538  */
294539  // SgRefExp( SgRefExpStorageClass& source );
294540 
294541 
294542 
294543 
294544 
294545  // JH (10/24/2005): methods added to support the ast file IO
294546  private:
294547 
294548  /* name AST Memory Allocation Support Functions
294549  \brief Memory allocations support....
294550 
294551  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
294552  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
294553  and support the AST File I/O Mechanism.
294554  */
294555  /* */
294556 
294557  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
294558  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
294559  that I use the same type everywhere, if any changes are made. THe second one declares the type
294560  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
294561  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
294562  a correspinding one in the AST_FILE_IO class!
294563  */
294564  // DQ (9/2/2015): This typedef is no longer used, we can't define the
294565  // comment here (changed to be a C style comment and not be a doxygen comment).
294566  /* \brief Typedef used for low level memory access.
294567  */
294568  // typedef unsigned char* TestType;
294569 
294570  // DQ (9/2/2015): This typedef is no longer used, we can't define the
294571  // comment here (changed to be a C style comment and not be a doxygen comment).
294572  /* \brief Typedef used to hold memory addresses as values.
294573  */
294574  // typedef unsigned long AddressType;
294575 
294576 
294577 
294578  // necessary, to have direct access to the p_freepointer and the private methods !
294580  friend class AST_FILE_IO;
294581 
294583  friend class SgRefExpStorageClass;
294584 
294586  friend class AstSpecificDataManagingClass;
294587 
294589  friend class AstSpecificDataManagingClassStorageClass;
294590 
294591  public:
294593  SgRefExp( const SgRefExpStorageClass& source );
294594 
294595  // private: // JJW hack
294596  /*
294597  name AST Memory Allocation Support Variables
294598  Memory allocations support variables
294599 
294600  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
294601  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
294602  and support the AST File I/O Mechanism.
294603  */
294604  /* */
294605 
294606  public:
294607 
294608  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
294609  // to current node (so that it will work cleanly with build functions to specify patterns).
294610  // virtual SgNode* addRegExpAttribute();
294616  SgRefExp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
294617 
294618 // *** COMMON CODE SECTION ENDS HERE ***
294619 
294620 
294621 // End of memberFunctionString
294622 // Start of memberFunctionString
294623 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
294624 
294625  // the generated cast function
294626  // friend ROSE_DLL_API SgRefExp* isSgRefExp ( SgNode* s );
294627 
294628  typedef SgExpression base_node_type;
294629 
294630 
294631 // End of memberFunctionString
294632 // Start of memberFunctionString
294633 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
294634 
294635  void post_construction_initialization() override;
294636 
294637 
294638 // End of memberFunctionString
294639 
294640  public:
294641  SgType* get_type_name() const;
294642  void set_type_name(SgType* type_name);
294643 
294644 
294645  public:
294646  virtual ~SgRefExp();
294647 
294648 
294649  public:
294650  SgRefExp(Sg_File_Info* startOfConstruct , SgType* type_name = NULL);
294651  SgRefExp(SgType* type_name);
294652 
294653  protected:
294654 // Start of memberFunctionString
294656 
294657 // End of memberFunctionString
294658 
294659 
294660 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
294661 
294662 
294663  };
294664 #endif
294665 
294666 // postdeclarations for SgRefExp
294667 
294668 /* #line 294669 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
294669 
294670 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
294671 
294672 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
294673 
294674 
294675 /* #line 294676 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
294676 
294677 
294678 
294679 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
294680 
294681 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
294682 // This code is automatically generated for each
294683 // terminal and non-terminal within the defined
294684 // grammar. There is a simple way to change the
294685 // code to fix bugs etc. See the ROSE README file
294686 // for directions.
294687 
294688 // tps: (02/22/2010): Adding DLL export requirements
294689 #include "rosedll.h"
294690 
294691 // predeclarations for SgInitializer
294692 
294693 /* #line 294694 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
294694 
294695 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
294696 
294697 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
294698 
294699 #if 1
294700 // Class Definition for SgInitializer
294701 class ROSE_DLL_API SgInitializer : public SgExpression
294702  {
294703  public:
294704 
294705 
294706 /* #line 294707 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
294707 
294708  virtual SgNode* copy ( SgCopyHelp& help) const override;
294709 // Start of memberFunctionString
294710 /* #line 1484 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
294711 
294712 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
294713  virtual unsigned int cfgIndexForEnd() const override;
294714 #endif
294715 
294716 
294717 
294718 // End of memberFunctionString
294719 // Start of memberFunctionString
294720 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
294721 
294722 // *** COMMON CODE SECTION BEGINS HERE ***
294723 
294724  public:
294725 
294726  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
294727  // and not required which is required to match the other aspects of the copy mechanism code generation.
294728  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
294729  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
294730  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
294731  // virtual SgNode* copy ( const SgCopyHelp & help) const;
294732 
294734  virtual std::string class_name() const override;
294735 
294737  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
294738 
294740  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
294741  // static const VariantT static_variant = V_SgInitializer;
294742  enum { static_variant = V_SgInitializer };
294743 
294744  /* the generated cast function */
294746  ROSE_DLL_API friend SgInitializer* isSgInitializer( SgNode * s );
294747 
294749  ROSE_DLL_API friend const SgInitializer* isSgInitializer( const SgNode * s );
294750 
294751  // ******************************************
294752  // * Memory Pool / New / Delete
294753  // ******************************************
294754 
294755  public:
294757  static const unsigned pool_size; //
294759  static std::vector<unsigned char *> pools; //
294761  static SgInitializer * next_node; //
294762 
294764  static unsigned long initializeStorageClassArray(SgInitializerStorageClass *); //
294765 
294767  static void clearMemoryPool(); //
294768  static void deleteMemoryPool(); //
294769 
294771  static void extendMemoryPoolForFileIO(); //
294772 
294774  static SgInitializer * getPointerFromGlobalIndex(unsigned long); //
294776  static SgInitializer * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
294777 
294779  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
294781  static void resetValidFreepointers(); //
294783  static unsigned long getNumberOfLastValidPointer(); //
294784 
294785 
294786 #if defined(INLINE_FUNCTIONS)
294787 
294788  inline void *operator new (size_t size);
294789 #else
294790 
294791  void *operator new (size_t size);
294792 #endif
294793 
294794  void operator delete (void* pointer, size_t size);
294795 
294796  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
294797  void operator delete (void* pointer)
294798  {
294799  // This is the generated delete operator...
294800  SgInitializer::operator delete (pointer,sizeof(SgInitializer));
294801  }
294802 
294804  static size_t numberOfNodes();
294805 
294807  static size_t memoryUsage();
294808 
294809  // End of scope which started in IR nodes specific code
294810  /* */
294811 
294812  /* name Internal Functions
294813  \brief Internal functions ... incomplete-documentation
294814 
294815  These functions have been made public as part of the design, but they are suggested for internal use
294816  or by particularly knowledgeable users for specialized tools or applications.
294817 
294818  \internal We could not make these private because they are required by user for special purposes. And
294819  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
294820 
294821  */
294822 
294823  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
294824  // overridden in every class by *generated* implementation
294826  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
294827  // MS: 06/28/02 container of names of variables or container indices
294828  // used used in the traversal to access AST successor nodes
294829  // overridden in every class by *generated* implementation
294832  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
294833 
294834  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
294835  // than all the vector copies. The implementation for these functions is generated for each class.
294837  virtual size_t get_numberOfTraversalSuccessors() override;
294839  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
294841  virtual size_t get_childIndex(SgNode *child) override;
294842 
294843 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
294844  // MS: 08/16/2002 method for generating RTI information
294846  virtual RTIReturnType roseRTI() override;
294847 #endif
294848  /* */
294849 
294850 
294851 
294852  /* name Deprecated Functions
294853  \brief Deprecated functions ... incomplete-documentation
294854 
294855  These functions have been deprecated from use.
294856  */
294857  /* */
294858 
294860  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
294861 
294862  // JJW (10/16/2008): Changed to a single function in Node.code, and put
294863  // getVariant() in #if 0 block to prevent confusing Doxygen
294864 #if 0
294865 
294866  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
294868  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
294869 #endif
294870  /* */
294871 
294872 
294873 
294874 
294875  public:
294876  /* name Traversal Support Functions
294877  \brief Traversal support functions ... incomplete-documentation
294878 
294879  These functions have been made public as part of the design, but they are suggested for internal use
294880  or by particularly knowledgable users for specialized tools or applications.
294881  */
294882  /* */
294883 
294884  // DQ (11/26/2005): Support for visitor pattern mechanims
294885  // (inferior to ROSE traversal mechanism, experimental).
294889 
294890  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
294892  virtual void accept (ROSE_VisitorPattern & visitor) override;
294893 
294894  // DQ (12/26/2005): Support for traversal based on the memory pool
294897  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
294898 
294901  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
294902 
294903  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
294904  // This traversal helps support internal tools that call static member functions.
294905  // note: this function operates on the memory pools.
294908  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
294909  /* */
294910 
294911 
294912  public:
294913  /* name Memory Allocation Functions
294914  \brief Memory allocations functions ... incomplete-documentation
294915 
294916  These functions have been made public as part of the design, but they are suggested for internal use
294917  or by particularly knowledgable users for specialized tools or applications.
294918  */
294919  /* */
294920 
294931  virtual bool isInMemoryPool() override;
294932 
294943  virtual void checkDataMemberPointersIfInMemoryPool() override;
294944 
294945  // DQ (4/30/2006): Modified to be a const function.
294960  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
294961 
294971  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
294972 
294984  virtual long getChildIndex( SgNode* childNode ) const override;
294985 
294986  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
294987  // comment here (changed to be a C style comment and not be a doxygen comment).
294988  /* \brief Constructor for use by AST File I/O Mechanism
294989 
294990  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
294991  which obtained via fast binary file I/O from disk.
294992  */
294993  // SgInitializer( SgInitializerStorageClass& source );
294994 
294995 
294996 
294997 
294998 
294999  // JH (10/24/2005): methods added to support the ast file IO
295000  private:
295001 
295002  /* name AST Memory Allocation Support Functions
295003  \brief Memory allocations support....
295004 
295005  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
295006  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
295007  and support the AST File I/O Mechanism.
295008  */
295009  /* */
295010 
295011  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
295012  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
295013  that I use the same type everywhere, if any changes are made. THe second one declares the type
295014  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
295015  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
295016  a correspinding one in the AST_FILE_IO class!
295017  */
295018  // DQ (9/2/2015): This typedef is no longer used, we can't define the
295019  // comment here (changed to be a C style comment and not be a doxygen comment).
295020  /* \brief Typedef used for low level memory access.
295021  */
295022  // typedef unsigned char* TestType;
295023 
295024  // DQ (9/2/2015): This typedef is no longer used, we can't define the
295025  // comment here (changed to be a C style comment and not be a doxygen comment).
295026  /* \brief Typedef used to hold memory addresses as values.
295027  */
295028  // typedef unsigned long AddressType;
295029 
295030 
295031 
295032  // necessary, to have direct access to the p_freepointer and the private methods !
295034  friend class AST_FILE_IO;
295035 
295037  friend class SgInitializerStorageClass;
295038 
295040  friend class AstSpecificDataManagingClass;
295041 
295043  friend class AstSpecificDataManagingClassStorageClass;
295044 
295045  public:
295047  SgInitializer( const SgInitializerStorageClass& source );
295048 
295049  // private: // JJW hack
295050  /*
295051  name AST Memory Allocation Support Variables
295052  Memory allocations support variables
295053 
295054  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
295055  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
295056  and support the AST File I/O Mechanism.
295057  */
295058  /* */
295059 
295060  public:
295061 
295062  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
295063  // to current node (so that it will work cleanly with build functions to specify patterns).
295064  // virtual SgNode* addRegExpAttribute();
295070  SgInitializer* addRegExpAttribute(std::string s, AstRegExAttribute* a);
295071 
295072 // *** COMMON CODE SECTION ENDS HERE ***
295073 
295074 
295075 // End of memberFunctionString
295076 // Start of memberFunctionString
295077 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
295078 
295079  // the generated cast function
295080  // friend ROSE_DLL_API SgInitializer* isSgInitializer ( SgNode* s );
295081 
295082  typedef SgExpression base_node_type;
295083 
295084 
295085 // End of memberFunctionString
295086 // Start of memberFunctionString
295087 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
295088 
295089  void post_construction_initialization() override;
295090 
295091 
295092 // End of memberFunctionString
295093 
295094  public:
295095  bool get_is_explicit_cast() const;
295096  void set_is_explicit_cast(bool is_explicit_cast);
295097 
295098  public:
295099  bool get_is_braced_initialized() const;
295100  void set_is_braced_initialized(bool is_braced_initialized);
295101 
295102 
295103  public:
295104  virtual ~SgInitializer();
295105 
295106 
295107  public:
295108  SgInitializer(Sg_File_Info* startOfConstruct );
295109  SgInitializer();
295110 
295111  protected:
295112 // Start of memberFunctionString
295114 
295115 // End of memberFunctionString
295116 // Start of memberFunctionString
295117 bool p_is_braced_initialized;
295118 
295119 // End of memberFunctionString
295120 
295121 
295122 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
295123 
295124 
295125  };
295126 #endif
295127 
295128 // postdeclarations for SgInitializer
295129 
295130 /* #line 295131 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
295131 
295132 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
295133 
295134 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
295135 
295136 
295137 /* #line 295138 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
295138 
295139 
295140 
295141 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
295142 
295143 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
295144 // This code is automatically generated for each
295145 // terminal and non-terminal within the defined
295146 // grammar. There is a simple way to change the
295147 // code to fix bugs etc. See the ROSE README file
295148 // for directions.
295149 
295150 // tps: (02/22/2010): Adding DLL export requirements
295151 #include "rosedll.h"
295152 
295153 // predeclarations for SgAggregateInitializer
295154 
295155 /* #line 295156 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
295156 
295157 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
295158 
295159 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
295160 
295161 #if 1
295162 // Class Definition for SgAggregateInitializer
295163 class ROSE_DLL_API SgAggregateInitializer : public SgInitializer
295164  {
295165  public:
295166 
295167 
295168 /* #line 295169 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
295169 
295170  virtual SgNode* copy ( SgCopyHelp& help) const override;
295171 // Start of memberFunctionString
295172 /* #line 1492 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
295173 
295174 /* #line 196 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
295175 
295176  void append_initializer(SgExpression* what);
295177  // void insert_initializer(const SgExpression::iterator & where, SgExpression* what);
295178  // void insert_initializer(const SgExpressionPtrList::iterator & where, SgExpression* what);
295179 
295180 
295181 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
295182  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
295183  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
295184 #endif
295185 
295186 #if 1
295187  // DQ (6/11/2015): Added support for non ROSETTA generated access functions to avoid isModified flag setting semantics.
295188  bool get_requiresGlobalNameQualificationOnType() const;
295189  void set_requiresGlobalNameQualificationOnType(bool requiresGlobalNameQualificationOnType);
295190 
295191  // DQ (6/11/2015): Added support for non ROSETTA generated access functions to avoid isModified flag setting semantics.
295192  int get_name_qualification_length_for_type() const;
295193  void set_name_qualification_length_for_type(int name_qualification_length_for_type);
295194 
295195  // DQ (6/11/2015): Added support for non ROSETTA generated access functions to avoid isModified flag setting semantics.
295196  bool get_type_elaboration_required_for_type() const;
295197  void set_type_elaboration_required_for_type(bool type_elaboration_required_for_type);
295198 
295199  // DQ (6/11/2015): Added support for non ROSETTA generated access functions to avoid isModified flag setting semantics.
295200  bool get_global_qualification_required_for_type() const;
295201  void set_global_qualification_required_for_type(bool global_qualification_required_for_type);
295202 #else
295203  // DQ (3/22/2018): The names of the data members have been renamed to support the name qualification support
295204  // using the same support as for the SgConstructor initializer. The name qualification that is supported for
295205  // an aggregate initializer is just that for the C++11 specific type specifier that is sometime required
295206  // (for an example of this see Cxx11_tests/test2018_47.C). Since it is the type name that is qualified
295207  // it does make sens to use the original names (e.g. name_qualification_length_for_type), but it would be
295208  // inconsistant with the constructor initializer support, and eliminate the opportunity to reuse that
295209  // supporting name qualification code.
295210 
295211  // DQ (6/11/2015): Added support for non ROSETTA generated access functions to avoid isModified flag setting semantics.
295212  int get_name_qualification_length() const;
295213  void set_name_qualification_length(int name_qualification_length);
295214 
295215  // DQ (6/11/2015): Added support for non ROSETTA generated access functions to avoid isModified flag setting semantics.
295216  bool get_type_elaboration_required() const;
295217  void set_type_elaboration_required(bool type_elaboration_required);
295218 
295219  // DQ (6/11/2015): Added support for non ROSETTA generated access functions to avoid isModified flag setting semantics.
295220  bool get_global_qualification_required() const;
295221  void set_global_qualification_required(bool global_qualification_required);
295222 #endif
295223 
295224 
295225 
295226 // End of memberFunctionString
295227 // Start of memberFunctionString
295228 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
295229 
295230 // *** COMMON CODE SECTION BEGINS HERE ***
295231 
295232  public:
295233 
295234  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
295235  // and not required which is required to match the other aspects of the copy mechanism code generation.
295236  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
295237  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
295238  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
295239  // virtual SgNode* copy ( const SgCopyHelp & help) const;
295240 
295242  virtual std::string class_name() const override;
295243 
295245  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
295246 
295248  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
295249  // static const VariantT static_variant = V_SgAggregateInitializer;
295250  enum { static_variant = V_SgAggregateInitializer };
295251 
295252  /* the generated cast function */
295254  ROSE_DLL_API friend SgAggregateInitializer* isSgAggregateInitializer( SgNode * s );
295255 
295257  ROSE_DLL_API friend const SgAggregateInitializer* isSgAggregateInitializer( const SgNode * s );
295258 
295259  // ******************************************
295260  // * Memory Pool / New / Delete
295261  // ******************************************
295262 
295263  public:
295265  static const unsigned pool_size; //
295267  static std::vector<unsigned char *> pools; //
295269  static SgAggregateInitializer * next_node; //
295270 
295272  static unsigned long initializeStorageClassArray(SgAggregateInitializerStorageClass *); //
295273 
295275  static void clearMemoryPool(); //
295276  static void deleteMemoryPool(); //
295277 
295279  static void extendMemoryPoolForFileIO(); //
295280 
295282  static SgAggregateInitializer * getPointerFromGlobalIndex(unsigned long); //
295284  static SgAggregateInitializer * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
295285 
295287  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
295289  static void resetValidFreepointers(); //
295291  static unsigned long getNumberOfLastValidPointer(); //
295292 
295293 
295294 #if defined(INLINE_FUNCTIONS)
295295 
295296  inline void *operator new (size_t size);
295297 #else
295298 
295299  void *operator new (size_t size);
295300 #endif
295301 
295302  void operator delete (void* pointer, size_t size);
295303 
295304  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
295305  void operator delete (void* pointer)
295306  {
295307  // This is the generated delete operator...
295308  SgAggregateInitializer::operator delete (pointer,sizeof(SgAggregateInitializer));
295309  }
295310 
295312  static size_t numberOfNodes();
295313 
295315  static size_t memoryUsage();
295316 
295317  // End of scope which started in IR nodes specific code
295318  /* */
295319 
295320  /* name Internal Functions
295321  \brief Internal functions ... incomplete-documentation
295322 
295323  These functions have been made public as part of the design, but they are suggested for internal use
295324  or by particularly knowledgeable users for specialized tools or applications.
295325 
295326  \internal We could not make these private because they are required by user for special purposes. And
295327  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
295328 
295329  */
295330 
295331  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
295332  // overridden in every class by *generated* implementation
295334  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
295335  // MS: 06/28/02 container of names of variables or container indices
295336  // used used in the traversal to access AST successor nodes
295337  // overridden in every class by *generated* implementation
295340  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
295341 
295342  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
295343  // than all the vector copies. The implementation for these functions is generated for each class.
295345  virtual size_t get_numberOfTraversalSuccessors() override;
295347  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
295349  virtual size_t get_childIndex(SgNode *child) override;
295350 
295351 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
295352  // MS: 08/16/2002 method for generating RTI information
295354  virtual RTIReturnType roseRTI() override;
295355 #endif
295356  /* */
295357 
295358 
295359 
295360  /* name Deprecated Functions
295361  \brief Deprecated functions ... incomplete-documentation
295362 
295363  These functions have been deprecated from use.
295364  */
295365  /* */
295366 
295368  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
295369 
295370  // JJW (10/16/2008): Changed to a single function in Node.code, and put
295371  // getVariant() in #if 0 block to prevent confusing Doxygen
295372 #if 0
295373 
295374  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
295376  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
295377 #endif
295378  /* */
295379 
295380 
295381 
295382 
295383  public:
295384  /* name Traversal Support Functions
295385  \brief Traversal support functions ... incomplete-documentation
295386 
295387  These functions have been made public as part of the design, but they are suggested for internal use
295388  or by particularly knowledgable users for specialized tools or applications.
295389  */
295390  /* */
295391 
295392  // DQ (11/26/2005): Support for visitor pattern mechanims
295393  // (inferior to ROSE traversal mechanism, experimental).
295397 
295398  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
295400  virtual void accept (ROSE_VisitorPattern & visitor) override;
295401 
295402  // DQ (12/26/2005): Support for traversal based on the memory pool
295405  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
295406 
295409  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
295410 
295411  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
295412  // This traversal helps support internal tools that call static member functions.
295413  // note: this function operates on the memory pools.
295416  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
295417  /* */
295418 
295419 
295420  public:
295421  /* name Memory Allocation Functions
295422  \brief Memory allocations functions ... incomplete-documentation
295423 
295424  These functions have been made public as part of the design, but they are suggested for internal use
295425  or by particularly knowledgable users for specialized tools or applications.
295426  */
295427  /* */
295428 
295439  virtual bool isInMemoryPool() override;
295440 
295451  virtual void checkDataMemberPointersIfInMemoryPool() override;
295452 
295453  // DQ (4/30/2006): Modified to be a const function.
295468  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
295469 
295479  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
295480 
295492  virtual long getChildIndex( SgNode* childNode ) const override;
295493 
295494  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
295495  // comment here (changed to be a C style comment and not be a doxygen comment).
295496  /* \brief Constructor for use by AST File I/O Mechanism
295497 
295498  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
295499  which obtained via fast binary file I/O from disk.
295500  */
295501  // SgAggregateInitializer( SgAggregateInitializerStorageClass& source );
295502 
295503 
295504 
295505 
295506 
295507  // JH (10/24/2005): methods added to support the ast file IO
295508  private:
295509 
295510  /* name AST Memory Allocation Support Functions
295511  \brief Memory allocations support....
295512 
295513  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
295514  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
295515  and support the AST File I/O Mechanism.
295516  */
295517  /* */
295518 
295519  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
295520  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
295521  that I use the same type everywhere, if any changes are made. THe second one declares the type
295522  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
295523  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
295524  a correspinding one in the AST_FILE_IO class!
295525  */
295526  // DQ (9/2/2015): This typedef is no longer used, we can't define the
295527  // comment here (changed to be a C style comment and not be a doxygen comment).
295528  /* \brief Typedef used for low level memory access.
295529  */
295530  // typedef unsigned char* TestType;
295531 
295532  // DQ (9/2/2015): This typedef is no longer used, we can't define the
295533  // comment here (changed to be a C style comment and not be a doxygen comment).
295534  /* \brief Typedef used to hold memory addresses as values.
295535  */
295536  // typedef unsigned long AddressType;
295537 
295538 
295539 
295540  // necessary, to have direct access to the p_freepointer and the private methods !
295542  friend class AST_FILE_IO;
295543 
295545  friend class SgAggregateInitializerStorageClass;
295546 
295548  friend class AstSpecificDataManagingClass;
295549 
295551  friend class AstSpecificDataManagingClassStorageClass;
295552 
295553  public:
295555  SgAggregateInitializer( const SgAggregateInitializerStorageClass& source );
295556 
295557  // private: // JJW hack
295558  /*
295559  name AST Memory Allocation Support Variables
295560  Memory allocations support variables
295561 
295562  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
295563  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
295564  and support the AST File I/O Mechanism.
295565  */
295566  /* */
295567 
295568  public:
295569 
295570  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
295571  // to current node (so that it will work cleanly with build functions to specify patterns).
295572  // virtual SgNode* addRegExpAttribute();
295579 
295580 // *** COMMON CODE SECTION ENDS HERE ***
295581 
295582 
295583 // End of memberFunctionString
295584 // Start of memberFunctionString
295585 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
295586 
295587  // the generated cast function
295588  // friend ROSE_DLL_API SgAggregateInitializer* isSgAggregateInitializer ( SgNode* s );
295589 
295590  typedef SgInitializer base_node_type;
295591 
295592 
295593 // End of memberFunctionString
295594 // Start of memberFunctionString
295595 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
295596 
295597  SgType* get_type() const override;
295598 
295599 
295600 // End of memberFunctionString
295601 // Start of memberFunctionString
295602 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
295603 
295604  void post_construction_initialization() override;
295605 
295606 
295607 // End of memberFunctionString
295608 // Start of memberFunctionString
295609 /* #line 184 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
295610 
295611  SgExpression *get_next( int& n) const ROSE_DEPRECATED_FUNCTION;
295612  int replace_expression( SgExpression *, SgExpression *) override ROSE_DEPRECATED_FUNCTION;
295613 
295614 
295615 // End of memberFunctionString
295616 
295617  public:
295618  SgExprListExp* get_initializers() const;
295619  void set_initializers(SgExprListExp* initializers);
295620 
295621  public:
295622  SgType* get_expression_type() const;
295623  void set_expression_type(SgType* expression_type);
295624 
295625  public:
295626  bool get_need_explicit_braces() const;
295627  void set_need_explicit_braces(bool need_explicit_braces);
295628 
295629  public:
295630  bool get_uses_compound_literal() const;
295631  void set_uses_compound_literal(bool uses_compound_literal);
295632 
295633 
295634 
295635 
295636 
295637  public:
295638  SgExpression* get_originalExpressionTree() const override /* (getDataAccessFunctionPrototypeString) */;
295639  void set_originalExpressionTree(SgExpression* originalExpressionTree) override /* (getDataAccessFunctionPrototypeString) */;
295640 
295641 
295642  public:
295643  virtual ~SgAggregateInitializer();
295644 
295645 
295646  public:
295647  SgAggregateInitializer(Sg_File_Info* startOfConstruct , SgExprListExp* initializers = NULL, SgType* expression_type = NULL);
295648  SgAggregateInitializer(SgExprListExp* initializers, SgType* expression_type);
295649 
295650  protected:
295651 // Start of memberFunctionString
295652 SgExprListExp* p_initializers;
295653 
295654 // End of memberFunctionString
295655 // Start of memberFunctionString
295656 SgType* p_expression_type;
295657 
295658 // End of memberFunctionString
295659 // Start of memberFunctionString
295660 bool p_need_explicit_braces;
295661 
295662 // End of memberFunctionString
295663 // Start of memberFunctionString
295664 bool p_uses_compound_literal;
295665 
295666 // End of memberFunctionString
295667 // Start of memberFunctionString
295668 bool p_requiresGlobalNameQualificationOnType;
295669 
295670 // End of memberFunctionString
295671 // Start of memberFunctionString
295672 int p_name_qualification_length_for_type;
295673 
295674 // End of memberFunctionString
295675 // Start of memberFunctionString
295676 bool p_type_elaboration_required_for_type;
295677 
295678 // End of memberFunctionString
295679 // Start of memberFunctionString
295680 bool p_global_qualification_required_for_type;
295681 
295682 // End of memberFunctionString
295683 // Start of memberFunctionString
295684 SgExpression* p_originalExpressionTree;
295685 
295686 // End of memberFunctionString
295687 
295688 
295689 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
295690 
295691 
295692  };
295693 #endif
295694 
295695 // postdeclarations for SgAggregateInitializer
295696 
295697 /* #line 295698 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
295698 
295699 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
295700 
295701 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
295702 
295703 
295704 /* #line 295705 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
295705 
295706 
295707 
295708 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
295709 
295710 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
295711 // This code is automatically generated for each
295712 // terminal and non-terminal within the defined
295713 // grammar. There is a simple way to change the
295714 // code to fix bugs etc. See the ROSE README file
295715 // for directions.
295716 
295717 // tps: (02/22/2010): Adding DLL export requirements
295718 #include "rosedll.h"
295719 
295720 // predeclarations for SgCompoundInitializer
295721 
295722 /* #line 295723 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
295723 
295724 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
295725 
295726 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
295727 
295728 #if 1
295729 // Class Definition for SgCompoundInitializer
295730 class ROSE_DLL_API SgCompoundInitializer : public SgInitializer
295731  {
295732  public:
295733 
295734 
295735 /* #line 295736 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
295736 
295737  virtual SgNode* copy ( SgCopyHelp& help) const override;
295738 // Start of memberFunctionString
295739 /* #line 1539 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
295740 
295741 /* #line 196 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
295742 
295743  void append_initializer(SgExpression* what);
295744  // void insert_initializer(const SgExpression::iterator & where, SgExpression* what);
295745  // void insert_initializer(const SgExpressionPtrList::iterator & where, SgExpression* what);
295746 
295747 
295748 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
295749  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
295750  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
295751 #endif
295752 
295753 
295754 
295755 // End of memberFunctionString
295756 // Start of memberFunctionString
295757 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
295758 
295759 // *** COMMON CODE SECTION BEGINS HERE ***
295760 
295761  public:
295762 
295763  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
295764  // and not required which is required to match the other aspects of the copy mechanism code generation.
295765  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
295766  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
295767  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
295768  // virtual SgNode* copy ( const SgCopyHelp & help) const;
295769 
295771  virtual std::string class_name() const override;
295772 
295774  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
295775 
295777  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
295778  // static const VariantT static_variant = V_SgCompoundInitializer;
295779  enum { static_variant = V_SgCompoundInitializer };
295780 
295781  /* the generated cast function */
295783  ROSE_DLL_API friend SgCompoundInitializer* isSgCompoundInitializer( SgNode * s );
295784 
295786  ROSE_DLL_API friend const SgCompoundInitializer* isSgCompoundInitializer( const SgNode * s );
295787 
295788  // ******************************************
295789  // * Memory Pool / New / Delete
295790  // ******************************************
295791 
295792  public:
295794  static const unsigned pool_size; //
295796  static std::vector<unsigned char *> pools; //
295798  static SgCompoundInitializer * next_node; //
295799 
295801  static unsigned long initializeStorageClassArray(SgCompoundInitializerStorageClass *); //
295802 
295804  static void clearMemoryPool(); //
295805  static void deleteMemoryPool(); //
295806 
295808  static void extendMemoryPoolForFileIO(); //
295809 
295811  static SgCompoundInitializer * getPointerFromGlobalIndex(unsigned long); //
295813  static SgCompoundInitializer * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
295814 
295816  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
295818  static void resetValidFreepointers(); //
295820  static unsigned long getNumberOfLastValidPointer(); //
295821 
295822 
295823 #if defined(INLINE_FUNCTIONS)
295824 
295825  inline void *operator new (size_t size);
295826 #else
295827 
295828  void *operator new (size_t size);
295829 #endif
295830 
295831  void operator delete (void* pointer, size_t size);
295832 
295833  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
295834  void operator delete (void* pointer)
295835  {
295836  // This is the generated delete operator...
295837  SgCompoundInitializer::operator delete (pointer,sizeof(SgCompoundInitializer));
295838  }
295839 
295841  static size_t numberOfNodes();
295842 
295844  static size_t memoryUsage();
295845 
295846  // End of scope which started in IR nodes specific code
295847  /* */
295848 
295849  /* name Internal Functions
295850  \brief Internal functions ... incomplete-documentation
295851 
295852  These functions have been made public as part of the design, but they are suggested for internal use
295853  or by particularly knowledgeable users for specialized tools or applications.
295854 
295855  \internal We could not make these private because they are required by user for special purposes. And
295856  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
295857 
295858  */
295859 
295860  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
295861  // overridden in every class by *generated* implementation
295863  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
295864  // MS: 06/28/02 container of names of variables or container indices
295865  // used used in the traversal to access AST successor nodes
295866  // overridden in every class by *generated* implementation
295869  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
295870 
295871  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
295872  // than all the vector copies. The implementation for these functions is generated for each class.
295874  virtual size_t get_numberOfTraversalSuccessors() override;
295876  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
295878  virtual size_t get_childIndex(SgNode *child) override;
295879 
295880 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
295881  // MS: 08/16/2002 method for generating RTI information
295883  virtual RTIReturnType roseRTI() override;
295884 #endif
295885  /* */
295886 
295887 
295888 
295889  /* name Deprecated Functions
295890  \brief Deprecated functions ... incomplete-documentation
295891 
295892  These functions have been deprecated from use.
295893  */
295894  /* */
295895 
295897  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
295898 
295899  // JJW (10/16/2008): Changed to a single function in Node.code, and put
295900  // getVariant() in #if 0 block to prevent confusing Doxygen
295901 #if 0
295902 
295903  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
295905  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
295906 #endif
295907  /* */
295908 
295909 
295910 
295911 
295912  public:
295913  /* name Traversal Support Functions
295914  \brief Traversal support functions ... incomplete-documentation
295915 
295916  These functions have been made public as part of the design, but they are suggested for internal use
295917  or by particularly knowledgable users for specialized tools or applications.
295918  */
295919  /* */
295920 
295921  // DQ (11/26/2005): Support for visitor pattern mechanims
295922  // (inferior to ROSE traversal mechanism, experimental).
295926 
295927  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
295929  virtual void accept (ROSE_VisitorPattern & visitor) override;
295930 
295931  // DQ (12/26/2005): Support for traversal based on the memory pool
295934  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
295935 
295938  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
295939 
295940  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
295941  // This traversal helps support internal tools that call static member functions.
295942  // note: this function operates on the memory pools.
295945  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
295946  /* */
295947 
295948 
295949  public:
295950  /* name Memory Allocation Functions
295951  \brief Memory allocations functions ... incomplete-documentation
295952 
295953  These functions have been made public as part of the design, but they are suggested for internal use
295954  or by particularly knowledgable users for specialized tools or applications.
295955  */
295956  /* */
295957 
295968  virtual bool isInMemoryPool() override;
295969 
295980  virtual void checkDataMemberPointersIfInMemoryPool() override;
295981 
295982  // DQ (4/30/2006): Modified to be a const function.
295997  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
295998 
296008  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
296009 
296021  virtual long getChildIndex( SgNode* childNode ) const override;
296022 
296023  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
296024  // comment here (changed to be a C style comment and not be a doxygen comment).
296025  /* \brief Constructor for use by AST File I/O Mechanism
296026 
296027  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
296028  which obtained via fast binary file I/O from disk.
296029  */
296030  // SgCompoundInitializer( SgCompoundInitializerStorageClass& source );
296031 
296032 
296033 
296034 
296035 
296036  // JH (10/24/2005): methods added to support the ast file IO
296037  private:
296038 
296039  /* name AST Memory Allocation Support Functions
296040  \brief Memory allocations support....
296041 
296042  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
296043  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
296044  and support the AST File I/O Mechanism.
296045  */
296046  /* */
296047 
296048  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
296049  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
296050  that I use the same type everywhere, if any changes are made. THe second one declares the type
296051  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
296052  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
296053  a correspinding one in the AST_FILE_IO class!
296054  */
296055  // DQ (9/2/2015): This typedef is no longer used, we can't define the
296056  // comment here (changed to be a C style comment and not be a doxygen comment).
296057  /* \brief Typedef used for low level memory access.
296058  */
296059  // typedef unsigned char* TestType;
296060 
296061  // DQ (9/2/2015): This typedef is no longer used, we can't define the
296062  // comment here (changed to be a C style comment and not be a doxygen comment).
296063  /* \brief Typedef used to hold memory addresses as values.
296064  */
296065  // typedef unsigned long AddressType;
296066 
296067 
296068 
296069  // necessary, to have direct access to the p_freepointer and the private methods !
296071  friend class AST_FILE_IO;
296072 
296074  friend class SgCompoundInitializerStorageClass;
296075 
296077  friend class AstSpecificDataManagingClass;
296078 
296080  friend class AstSpecificDataManagingClassStorageClass;
296081 
296082  public:
296084  SgCompoundInitializer( const SgCompoundInitializerStorageClass& source );
296085 
296086  // private: // JJW hack
296087  /*
296088  name AST Memory Allocation Support Variables
296089  Memory allocations support variables
296090 
296091  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
296092  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
296093  and support the AST File I/O Mechanism.
296094  */
296095  /* */
296096 
296097  public:
296098 
296099  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
296100  // to current node (so that it will work cleanly with build functions to specify patterns).
296101  // virtual SgNode* addRegExpAttribute();
296108 
296109 // *** COMMON CODE SECTION ENDS HERE ***
296110 
296111 
296112 // End of memberFunctionString
296113 // Start of memberFunctionString
296114 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
296115 
296116  // the generated cast function
296117  // friend ROSE_DLL_API SgCompoundInitializer* isSgCompoundInitializer ( SgNode* s );
296118 
296119  typedef SgInitializer base_node_type;
296120 
296121 
296122 // End of memberFunctionString
296123 // Start of memberFunctionString
296124 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
296125 
296126  SgType* get_type() const override;
296127 
296128 
296129 // End of memberFunctionString
296130 // Start of memberFunctionString
296131 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
296132 
296133  void post_construction_initialization() override;
296134 
296135 
296136 // End of memberFunctionString
296137 // Start of memberFunctionString
296138 /* #line 184 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
296139 
296140  SgExpression *get_next( int& n) const ROSE_DEPRECATED_FUNCTION;
296141  int replace_expression( SgExpression *, SgExpression *) override ROSE_DEPRECATED_FUNCTION;
296142 
296143 
296144 // End of memberFunctionString
296145 
296146  public:
296147  SgExprListExp* get_initializers() const;
296148  void set_initializers(SgExprListExp* initializers);
296149 
296150  public:
296151  SgType* get_expression_type() const;
296152  void set_expression_type(SgType* expression_type);
296153 
296154 
296155  public:
296156  virtual ~SgCompoundInitializer();
296157 
296158 
296159  public:
296160  SgCompoundInitializer(Sg_File_Info* startOfConstruct , SgExprListExp* initializers = NULL, SgType* expression_type = NULL);
296161  SgCompoundInitializer(SgExprListExp* initializers, SgType* expression_type);
296162 
296163  protected:
296164 // Start of memberFunctionString
296165 SgExprListExp* p_initializers;
296166 
296167 // End of memberFunctionString
296168 // Start of memberFunctionString
296169 SgType* p_expression_type;
296170 
296171 // End of memberFunctionString
296172 
296173 
296174 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
296175 
296176 
296177  };
296178 #endif
296179 
296180 // postdeclarations for SgCompoundInitializer
296181 
296182 /* #line 296183 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
296183 
296184 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
296185 
296186 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
296187 
296188 
296189 /* #line 296190 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
296190 
296191 
296192 
296193 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
296194 
296195 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
296196 // This code is automatically generated for each
296197 // terminal and non-terminal within the defined
296198 // grammar. There is a simple way to change the
296199 // code to fix bugs etc. See the ROSE README file
296200 // for directions.
296201 
296202 // tps: (02/22/2010): Adding DLL export requirements
296203 #include "rosedll.h"
296204 
296205 // predeclarations for SgConstructorInitializer
296206 
296207 /* #line 296208 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
296208 
296209 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
296210 
296211 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
296212 
296213 #if 1
296214 // Class Definition for SgConstructorInitializer
296215 class ROSE_DLL_API SgConstructorInitializer : public SgInitializer
296216  {
296217  public:
296218 
296219 
296220 /* #line 296221 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
296221 
296222  virtual SgNode* copy ( SgCopyHelp& help) const override;
296223 // Start of memberFunctionString
296224 /* #line 1548 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
296225 
296226 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
296227  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
296228  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
296229  virtual unsigned int cfgIndexForEnd() const override;
296230 #endif
296231 
296241  SgClassDeclaration* get_class_decl () const;
296242 
296243  // DQ (6/11/2015): Added support for non ROSETTA generated access functions to avoid isModified flag setting semantics.
296244  int get_name_qualification_length() const override;
296245  void set_name_qualification_length(int name_qualification_length) override;
296246 
296247  // DQ (6/11/2015): Added support for non ROSETTA generated access functions to avoid isModified flag setting semantics.
296248  bool get_type_elaboration_required() const override;
296249  void set_type_elaboration_required(bool type_elaboration_required) override;
296250 
296251  // DQ (6/11/2015): Added support for non ROSETTA generated access functions to avoid isModified flag setting semantics.
296252  bool get_global_qualification_required() const override;
296253  void set_global_qualification_required(bool global_qualification_required) override;
296254 
296255 
296256 
296257 // End of memberFunctionString
296258 // Start of memberFunctionString
296259 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
296260 
296261 // *** COMMON CODE SECTION BEGINS HERE ***
296262 
296263  public:
296264 
296265  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
296266  // and not required which is required to match the other aspects of the copy mechanism code generation.
296267  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
296268  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
296269  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
296270  // virtual SgNode* copy ( const SgCopyHelp & help) const;
296271 
296273  virtual std::string class_name() const override;
296274 
296276  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
296277 
296279  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
296280  // static const VariantT static_variant = V_SgConstructorInitializer;
296281  enum { static_variant = V_SgConstructorInitializer };
296282 
296283  /* the generated cast function */
296285  ROSE_DLL_API friend SgConstructorInitializer* isSgConstructorInitializer( SgNode * s );
296286 
296288  ROSE_DLL_API friend const SgConstructorInitializer* isSgConstructorInitializer( const SgNode * s );
296289 
296290  // ******************************************
296291  // * Memory Pool / New / Delete
296292  // ******************************************
296293 
296294  public:
296296  static const unsigned pool_size; //
296298  static std::vector<unsigned char *> pools; //
296300  static SgConstructorInitializer * next_node; //
296301 
296303  static unsigned long initializeStorageClassArray(SgConstructorInitializerStorageClass *); //
296304 
296306  static void clearMemoryPool(); //
296307  static void deleteMemoryPool(); //
296308 
296310  static void extendMemoryPoolForFileIO(); //
296311 
296313  static SgConstructorInitializer * getPointerFromGlobalIndex(unsigned long); //
296315  static SgConstructorInitializer * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
296316 
296318  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
296320  static void resetValidFreepointers(); //
296322  static unsigned long getNumberOfLastValidPointer(); //
296323 
296324 
296325 #if defined(INLINE_FUNCTIONS)
296326 
296327  inline void *operator new (size_t size);
296328 #else
296329 
296330  void *operator new (size_t size);
296331 #endif
296332 
296333  void operator delete (void* pointer, size_t size);
296334 
296335  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
296336  void operator delete (void* pointer)
296337  {
296338  // This is the generated delete operator...
296339  SgConstructorInitializer::operator delete (pointer,sizeof(SgConstructorInitializer));
296340  }
296341 
296343  static size_t numberOfNodes();
296344 
296346  static size_t memoryUsage();
296347 
296348  // End of scope which started in IR nodes specific code
296349  /* */
296350 
296351  /* name Internal Functions
296352  \brief Internal functions ... incomplete-documentation
296353 
296354  These functions have been made public as part of the design, but they are suggested for internal use
296355  or by particularly knowledgeable users for specialized tools or applications.
296356 
296357  \internal We could not make these private because they are required by user for special purposes. And
296358  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
296359 
296360  */
296361 
296362  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
296363  // overridden in every class by *generated* implementation
296365  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
296366  // MS: 06/28/02 container of names of variables or container indices
296367  // used used in the traversal to access AST successor nodes
296368  // overridden in every class by *generated* implementation
296371  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
296372 
296373  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
296374  // than all the vector copies. The implementation for these functions is generated for each class.
296376  virtual size_t get_numberOfTraversalSuccessors() override;
296378  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
296380  virtual size_t get_childIndex(SgNode *child) override;
296381 
296382 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
296383  // MS: 08/16/2002 method for generating RTI information
296385  virtual RTIReturnType roseRTI() override;
296386 #endif
296387  /* */
296388 
296389 
296390 
296391  /* name Deprecated Functions
296392  \brief Deprecated functions ... incomplete-documentation
296393 
296394  These functions have been deprecated from use.
296395  */
296396  /* */
296397 
296399  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
296400 
296401  // JJW (10/16/2008): Changed to a single function in Node.code, and put
296402  // getVariant() in #if 0 block to prevent confusing Doxygen
296403 #if 0
296404 
296405  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
296407  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
296408 #endif
296409  /* */
296410 
296411 
296412 
296413 
296414  public:
296415  /* name Traversal Support Functions
296416  \brief Traversal support functions ... incomplete-documentation
296417 
296418  These functions have been made public as part of the design, but they are suggested for internal use
296419  or by particularly knowledgable users for specialized tools or applications.
296420  */
296421  /* */
296422 
296423  // DQ (11/26/2005): Support for visitor pattern mechanims
296424  // (inferior to ROSE traversal mechanism, experimental).
296428 
296429  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
296431  virtual void accept (ROSE_VisitorPattern & visitor) override;
296432 
296433  // DQ (12/26/2005): Support for traversal based on the memory pool
296436  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
296437 
296440  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
296441 
296442  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
296443  // This traversal helps support internal tools that call static member functions.
296444  // note: this function operates on the memory pools.
296447  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
296448  /* */
296449 
296450 
296451  public:
296452  /* name Memory Allocation Functions
296453  \brief Memory allocations functions ... incomplete-documentation
296454 
296455  These functions have been made public as part of the design, but they are suggested for internal use
296456  or by particularly knowledgable users for specialized tools or applications.
296457  */
296458  /* */
296459 
296470  virtual bool isInMemoryPool() override;
296471 
296482  virtual void checkDataMemberPointersIfInMemoryPool() override;
296483 
296484  // DQ (4/30/2006): Modified to be a const function.
296499  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
296500 
296510  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
296511 
296523  virtual long getChildIndex( SgNode* childNode ) const override;
296524 
296525  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
296526  // comment here (changed to be a C style comment and not be a doxygen comment).
296527  /* \brief Constructor for use by AST File I/O Mechanism
296528 
296529  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
296530  which obtained via fast binary file I/O from disk.
296531  */
296532  // SgConstructorInitializer( SgConstructorInitializerStorageClass& source );
296533 
296534 
296535 
296536 
296537 
296538  // JH (10/24/2005): methods added to support the ast file IO
296539  private:
296540 
296541  /* name AST Memory Allocation Support Functions
296542  \brief Memory allocations support....
296543 
296544  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
296545  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
296546  and support the AST File I/O Mechanism.
296547  */
296548  /* */
296549 
296550  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
296551  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
296552  that I use the same type everywhere, if any changes are made. THe second one declares the type
296553  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
296554  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
296555  a correspinding one in the AST_FILE_IO class!
296556  */
296557  // DQ (9/2/2015): This typedef is no longer used, we can't define the
296558  // comment here (changed to be a C style comment and not be a doxygen comment).
296559  /* \brief Typedef used for low level memory access.
296560  */
296561  // typedef unsigned char* TestType;
296562 
296563  // DQ (9/2/2015): This typedef is no longer used, we can't define the
296564  // comment here (changed to be a C style comment and not be a doxygen comment).
296565  /* \brief Typedef used to hold memory addresses as values.
296566  */
296567  // typedef unsigned long AddressType;
296568 
296569 
296570 
296571  // necessary, to have direct access to the p_freepointer and the private methods !
296573  friend class AST_FILE_IO;
296574 
296576  friend class SgConstructorInitializerStorageClass;
296577 
296579  friend class AstSpecificDataManagingClass;
296580 
296582  friend class AstSpecificDataManagingClassStorageClass;
296583 
296584  public:
296586  SgConstructorInitializer( const SgConstructorInitializerStorageClass& source );
296587 
296588  // private: // JJW hack
296589  /*
296590  name AST Memory Allocation Support Variables
296591  Memory allocations support variables
296592 
296593  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
296594  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
296595  and support the AST File I/O Mechanism.
296596  */
296597  /* */
296598 
296599  public:
296600 
296601  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
296602  // to current node (so that it will work cleanly with build functions to specify patterns).
296603  // virtual SgNode* addRegExpAttribute();
296610 
296611 // *** COMMON CODE SECTION ENDS HERE ***
296612 
296613 
296614 // End of memberFunctionString
296615 // Start of memberFunctionString
296616 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
296617 
296618  // the generated cast function
296619  // friend ROSE_DLL_API SgConstructorInitializer* isSgConstructorInitializer ( SgNode* s );
296620 
296621  typedef SgInitializer base_node_type;
296622 
296623 
296624 // End of memberFunctionString
296625 // Start of memberFunctionString
296626 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
296627 
296628  SgType* get_type() const override;
296629 
296630 
296631 // End of memberFunctionString
296632 // Start of memberFunctionString
296633 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
296634 
296635  void post_construction_initialization() override;
296636 
296637 
296638 // End of memberFunctionString
296639 // Start of memberFunctionString
296640 /* #line 184 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
296641 
296642  SgExpression *get_next( int& n) const ROSE_DEPRECATED_FUNCTION;
296643  int replace_expression( SgExpression *, SgExpression *) override ROSE_DEPRECATED_FUNCTION;
296644 
296645 
296646 // End of memberFunctionString
296647 
296648  public:
296649  SgMemberFunctionDeclaration* get_declaration() const;
296650  void set_declaration(SgMemberFunctionDeclaration* declaration);
296651 
296652  public:
296653  SgExprListExp* get_args() const;
296654  void set_args(SgExprListExp* args);
296655 
296656  public:
296657  SgType* get_expression_type() const;
296658  void set_expression_type(SgType* expression_type);
296659 
296660  public:
296661  bool get_need_name() const;
296662  void set_need_name(bool need_name);
296663 
296664  public:
296665  bool get_need_qualifier() const;
296666  void set_need_qualifier(bool need_qualifier);
296667 
296668  public:
296669  bool get_need_parenthesis_after_name() const;
296670  void set_need_parenthesis_after_name(bool need_parenthesis_after_name);
296671 
296672  public:
296673  bool get_associated_class_unknown() const;
296674  void set_associated_class_unknown(bool associated_class_unknown);
296675 
296676 
296677 
296678 
296679  public:
296680  bool get_is_used_in_conditional() const;
296681  void set_is_used_in_conditional(bool is_used_in_conditional);
296682 
296683 
296684  public:
296685  virtual ~SgConstructorInitializer();
296686 
296687 
296688  public:
296689  SgConstructorInitializer(Sg_File_Info* startOfConstruct , SgMemberFunctionDeclaration* declaration = NULL, SgExprListExp* args = NULL, SgType* expression_type = NULL, bool need_name = false, bool need_qualifier = false, bool need_parenthesis_after_name = false, bool associated_class_unknown = false);
296690  SgConstructorInitializer(SgMemberFunctionDeclaration* declaration, SgExprListExp* args, SgType* expression_type, bool need_name, bool need_qualifier, bool need_parenthesis_after_name, bool associated_class_unknown);
296691 
296692  protected:
296693 // Start of memberFunctionString
296695 
296696 // End of memberFunctionString
296697 // Start of memberFunctionString
296699 
296700 // End of memberFunctionString
296701 // Start of memberFunctionString
296703 
296704 // End of memberFunctionString
296705 // Start of memberFunctionString
296707 
296708 // End of memberFunctionString
296709 // Start of memberFunctionString
296711 
296712 // End of memberFunctionString
296713 // Start of memberFunctionString
296715 
296716 // End of memberFunctionString
296717 // Start of memberFunctionString
296719 
296720 // End of memberFunctionString
296721 // Start of memberFunctionString
296722 int p_name_qualification_length;
296723 
296724 // End of memberFunctionString
296725 // Start of memberFunctionString
296726 bool p_type_elaboration_required;
296727 
296728 // End of memberFunctionString
296729 // Start of memberFunctionString
296730 bool p_global_qualification_required;
296731 
296732 // End of memberFunctionString
296733 // Start of memberFunctionString
296734 bool p_is_used_in_conditional;
296735 
296736 // End of memberFunctionString
296737 
296738 
296739 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
296740 
296741 
296742  };
296743 #endif
296744 
296745 // postdeclarations for SgConstructorInitializer
296746 
296747 /* #line 296748 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
296748 
296749 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
296750 
296751 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
296752 
296753 
296754 /* #line 296755 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
296755 
296756 
296757 
296758 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
296759 
296760 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
296761 // This code is automatically generated for each
296762 // terminal and non-terminal within the defined
296763 // grammar. There is a simple way to change the
296764 // code to fix bugs etc. See the ROSE README file
296765 // for directions.
296766 
296767 // tps: (02/22/2010): Adding DLL export requirements
296768 #include "rosedll.h"
296769 
296770 // predeclarations for SgAssignInitializer
296771 
296772 /* #line 296773 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
296773 
296774 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
296775 
296776 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
296777 
296778 #if 1
296779 // Class Definition for SgAssignInitializer
296780 class ROSE_DLL_API SgAssignInitializer : public SgInitializer
296781  {
296782  public:
296783 
296784 
296785 /* #line 296786 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
296786 
296787  virtual SgNode* copy ( SgCopyHelp& help) const override;
296788 // Start of memberFunctionString
296789 /* #line 1581 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
296790 
296791 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
296792  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
296793  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
296794 #endif
296795 
296796  SgExpression * get_operand() const;
296797  void set_operand(SgExpression * exp);
296798 
296799  // get lvalue
296800  virtual bool isLValue() const override;
296801  virtual bool isChildUsedAsLValue(const SgExpression* child) const override; // INTERNAL Recursively call up the chain to answer the child
296802 
296803 
296804 
296805 // End of memberFunctionString
296806 // Start of memberFunctionString
296807 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
296808 
296809 // *** COMMON CODE SECTION BEGINS HERE ***
296810 
296811  public:
296812 
296813  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
296814  // and not required which is required to match the other aspects of the copy mechanism code generation.
296815  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
296816  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
296817  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
296818  // virtual SgNode* copy ( const SgCopyHelp & help) const;
296819 
296821  virtual std::string class_name() const override;
296822 
296824  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
296825 
296827  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
296828  // static const VariantT static_variant = V_SgAssignInitializer;
296829  enum { static_variant = V_SgAssignInitializer };
296830 
296831  /* the generated cast function */
296833  ROSE_DLL_API friend SgAssignInitializer* isSgAssignInitializer( SgNode * s );
296834 
296836  ROSE_DLL_API friend const SgAssignInitializer* isSgAssignInitializer( const SgNode * s );
296837 
296838  // ******************************************
296839  // * Memory Pool / New / Delete
296840  // ******************************************
296841 
296842  public:
296844  static const unsigned pool_size; //
296846  static std::vector<unsigned char *> pools; //
296848  static SgAssignInitializer * next_node; //
296849 
296851  static unsigned long initializeStorageClassArray(SgAssignInitializerStorageClass *); //
296852 
296854  static void clearMemoryPool(); //
296855  static void deleteMemoryPool(); //
296856 
296858  static void extendMemoryPoolForFileIO(); //
296859 
296861  static SgAssignInitializer * getPointerFromGlobalIndex(unsigned long); //
296863  static SgAssignInitializer * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
296864 
296866  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
296868  static void resetValidFreepointers(); //
296870  static unsigned long getNumberOfLastValidPointer(); //
296871 
296872 
296873 #if defined(INLINE_FUNCTIONS)
296874 
296875  inline void *operator new (size_t size);
296876 #else
296877 
296878  void *operator new (size_t size);
296879 #endif
296880 
296881  void operator delete (void* pointer, size_t size);
296882 
296883  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
296884  void operator delete (void* pointer)
296885  {
296886  // This is the generated delete operator...
296887  SgAssignInitializer::operator delete (pointer,sizeof(SgAssignInitializer));
296888  }
296889 
296891  static size_t numberOfNodes();
296892 
296894  static size_t memoryUsage();
296895 
296896  // End of scope which started in IR nodes specific code
296897  /* */
296898 
296899  /* name Internal Functions
296900  \brief Internal functions ... incomplete-documentation
296901 
296902  These functions have been made public as part of the design, but they are suggested for internal use
296903  or by particularly knowledgeable users for specialized tools or applications.
296904 
296905  \internal We could not make these private because they are required by user for special purposes. And
296906  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
296907 
296908  */
296909 
296910  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
296911  // overridden in every class by *generated* implementation
296913  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
296914  // MS: 06/28/02 container of names of variables or container indices
296915  // used used in the traversal to access AST successor nodes
296916  // overridden in every class by *generated* implementation
296919  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
296920 
296921  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
296922  // than all the vector copies. The implementation for these functions is generated for each class.
296924  virtual size_t get_numberOfTraversalSuccessors() override;
296926  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
296928  virtual size_t get_childIndex(SgNode *child) override;
296929 
296930 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
296931  // MS: 08/16/2002 method for generating RTI information
296933  virtual RTIReturnType roseRTI() override;
296934 #endif
296935  /* */
296936 
296937 
296938 
296939  /* name Deprecated Functions
296940  \brief Deprecated functions ... incomplete-documentation
296941 
296942  These functions have been deprecated from use.
296943  */
296944  /* */
296945 
296947  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
296948 
296949  // JJW (10/16/2008): Changed to a single function in Node.code, and put
296950  // getVariant() in #if 0 block to prevent confusing Doxygen
296951 #if 0
296952 
296953  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
296955  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
296956 #endif
296957  /* */
296958 
296959 
296960 
296961 
296962  public:
296963  /* name Traversal Support Functions
296964  \brief Traversal support functions ... incomplete-documentation
296965 
296966  These functions have been made public as part of the design, but they are suggested for internal use
296967  or by particularly knowledgable users for specialized tools or applications.
296968  */
296969  /* */
296970 
296971  // DQ (11/26/2005): Support for visitor pattern mechanims
296972  // (inferior to ROSE traversal mechanism, experimental).
296976 
296977  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
296979  virtual void accept (ROSE_VisitorPattern & visitor) override;
296980 
296981  // DQ (12/26/2005): Support for traversal based on the memory pool
296984  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
296985 
296988  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
296989 
296990  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
296991  // This traversal helps support internal tools that call static member functions.
296992  // note: this function operates on the memory pools.
296995  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
296996  /* */
296997 
296998 
296999  public:
297000  /* name Memory Allocation Functions
297001  \brief Memory allocations functions ... incomplete-documentation
297002 
297003  These functions have been made public as part of the design, but they are suggested for internal use
297004  or by particularly knowledgable users for specialized tools or applications.
297005  */
297006  /* */
297007 
297018  virtual bool isInMemoryPool() override;
297019 
297030  virtual void checkDataMemberPointersIfInMemoryPool() override;
297031 
297032  // DQ (4/30/2006): Modified to be a const function.
297047  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
297048 
297058  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
297059 
297071  virtual long getChildIndex( SgNode* childNode ) const override;
297072 
297073  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
297074  // comment here (changed to be a C style comment and not be a doxygen comment).
297075  /* \brief Constructor for use by AST File I/O Mechanism
297076 
297077  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
297078  which obtained via fast binary file I/O from disk.
297079  */
297080  // SgAssignInitializer( SgAssignInitializerStorageClass& source );
297081 
297082 
297083 
297084 
297085 
297086  // JH (10/24/2005): methods added to support the ast file IO
297087  private:
297088 
297089  /* name AST Memory Allocation Support Functions
297090  \brief Memory allocations support....
297091 
297092  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
297093  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
297094  and support the AST File I/O Mechanism.
297095  */
297096  /* */
297097 
297098  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
297099  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
297100  that I use the same type everywhere, if any changes are made. THe second one declares the type
297101  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
297102  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
297103  a correspinding one in the AST_FILE_IO class!
297104  */
297105  // DQ (9/2/2015): This typedef is no longer used, we can't define the
297106  // comment here (changed to be a C style comment and not be a doxygen comment).
297107  /* \brief Typedef used for low level memory access.
297108  */
297109  // typedef unsigned char* TestType;
297110 
297111  // DQ (9/2/2015): This typedef is no longer used, we can't define the
297112  // comment here (changed to be a C style comment and not be a doxygen comment).
297113  /* \brief Typedef used to hold memory addresses as values.
297114  */
297115  // typedef unsigned long AddressType;
297116 
297117 
297118 
297119  // necessary, to have direct access to the p_freepointer and the private methods !
297121  friend class AST_FILE_IO;
297122 
297124  friend class SgAssignInitializerStorageClass;
297125 
297127  friend class AstSpecificDataManagingClass;
297128 
297130  friend class AstSpecificDataManagingClassStorageClass;
297131 
297132  public:
297134  SgAssignInitializer( const SgAssignInitializerStorageClass& source );
297135 
297136  // private: // JJW hack
297137  /*
297138  name AST Memory Allocation Support Variables
297139  Memory allocations support variables
297140 
297141  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
297142  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
297143  and support the AST File I/O Mechanism.
297144  */
297145  /* */
297146 
297147  public:
297148 
297149  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
297150  // to current node (so that it will work cleanly with build functions to specify patterns).
297151  // virtual SgNode* addRegExpAttribute();
297158 
297159 // *** COMMON CODE SECTION ENDS HERE ***
297160 
297161 
297162 // End of memberFunctionString
297163 // Start of memberFunctionString
297164 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
297165 
297166  // the generated cast function
297167  // friend ROSE_DLL_API SgAssignInitializer* isSgAssignInitializer ( SgNode* s );
297168 
297169  typedef SgInitializer base_node_type;
297170 
297171 
297172 // End of memberFunctionString
297173 // Start of memberFunctionString
297174 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
297175 
297176  SgType* get_type() const override;
297177 
297178 
297179 // End of memberFunctionString
297180 // Start of memberFunctionString
297181 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
297182 
297183  void post_construction_initialization() override;
297184 
297185 
297186 // End of memberFunctionString
297187 // Start of memberFunctionString
297188 /* #line 184 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
297189 
297190  SgExpression *get_next( int& n) const ROSE_DEPRECATED_FUNCTION;
297191  int replace_expression( SgExpression *, SgExpression *) override ROSE_DEPRECATED_FUNCTION;
297192 
297193 
297194 // End of memberFunctionString
297195 
297196  public:
297197  SgExpression* get_operand_i() const;
297198  void set_operand_i(SgExpression* operand_i);
297199 
297200 
297201 
297202  public:
297203  virtual ~SgAssignInitializer();
297204 
297205 
297206  public:
297207  SgAssignInitializer(Sg_File_Info* startOfConstruct , SgExpression* operand_i = NULL, SgType* expression_type = NULL);
297208  SgAssignInitializer(SgExpression* operand_i, SgType* expression_type);
297209 
297210  protected:
297211 // Start of memberFunctionString
297213 
297214 // End of memberFunctionString
297215 // Start of memberFunctionString
297217 
297218 // End of memberFunctionString
297219 
297220 
297221 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
297222 
297223 
297224  };
297225 #endif
297226 
297227 // postdeclarations for SgAssignInitializer
297228 
297229 /* #line 297230 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
297230 
297231 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
297232 
297233 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
297234 
297235 
297236 /* #line 297237 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
297237 
297238 
297239 
297240 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
297241 
297242 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
297243 // This code is automatically generated for each
297244 // terminal and non-terminal within the defined
297245 // grammar. There is a simple way to change the
297246 // code to fix bugs etc. See the ROSE README file
297247 // for directions.
297248 
297249 // tps: (02/22/2010): Adding DLL export requirements
297250 #include "rosedll.h"
297251 
297252 // predeclarations for SgDesignatedInitializer
297253 
297254 /* #line 297255 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
297255 
297256 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
297257 
297258 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
297259 
297260 #if 1
297261 // Class Definition for SgDesignatedInitializer
297262 class ROSE_DLL_API SgDesignatedInitializer : public SgInitializer
297263  {
297264  public:
297265 
297266 
297267 /* #line 297268 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
297268 
297269  virtual SgNode* copy ( SgCopyHelp& help) const override;
297270 // Start of memberFunctionString
297271 /* #line 1824 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
297272 
297273 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
297274  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
297275  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
297276  virtual unsigned int cfgFindChildIndex(SgNode* n) override;
297277 #endif
297278 
297279 
297280 
297281 // End of memberFunctionString
297282 // Start of memberFunctionString
297283 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
297284 
297285 // *** COMMON CODE SECTION BEGINS HERE ***
297286 
297287  public:
297288 
297289  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
297290  // and not required which is required to match the other aspects of the copy mechanism code generation.
297291  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
297292  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
297293  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
297294  // virtual SgNode* copy ( const SgCopyHelp & help) const;
297295 
297297  virtual std::string class_name() const override;
297298 
297300  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
297301 
297303  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
297304  // static const VariantT static_variant = V_SgDesignatedInitializer;
297305  enum { static_variant = V_SgDesignatedInitializer };
297306 
297307  /* the generated cast function */
297309  ROSE_DLL_API friend SgDesignatedInitializer* isSgDesignatedInitializer( SgNode * s );
297310 
297312  ROSE_DLL_API friend const SgDesignatedInitializer* isSgDesignatedInitializer( const SgNode * s );
297313 
297314  // ******************************************
297315  // * Memory Pool / New / Delete
297316  // ******************************************
297317 
297318  public:
297320  static const unsigned pool_size; //
297322  static std::vector<unsigned char *> pools; //
297324  static SgDesignatedInitializer * next_node; //
297325 
297327  static unsigned long initializeStorageClassArray(SgDesignatedInitializerStorageClass *); //
297328 
297330  static void clearMemoryPool(); //
297331  static void deleteMemoryPool(); //
297332 
297334  static void extendMemoryPoolForFileIO(); //
297335 
297337  static SgDesignatedInitializer * getPointerFromGlobalIndex(unsigned long); //
297339  static SgDesignatedInitializer * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
297340 
297342  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
297344  static void resetValidFreepointers(); //
297346  static unsigned long getNumberOfLastValidPointer(); //
297347 
297348 
297349 #if defined(INLINE_FUNCTIONS)
297350 
297351  inline void *operator new (size_t size);
297352 #else
297353 
297354  void *operator new (size_t size);
297355 #endif
297356 
297357  void operator delete (void* pointer, size_t size);
297358 
297359  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
297360  void operator delete (void* pointer)
297361  {
297362  // This is the generated delete operator...
297363  SgDesignatedInitializer::operator delete (pointer,sizeof(SgDesignatedInitializer));
297364  }
297365 
297367  static size_t numberOfNodes();
297368 
297370  static size_t memoryUsage();
297371 
297372  // End of scope which started in IR nodes specific code
297373  /* */
297374 
297375  /* name Internal Functions
297376  \brief Internal functions ... incomplete-documentation
297377 
297378  These functions have been made public as part of the design, but they are suggested for internal use
297379  or by particularly knowledgeable users for specialized tools or applications.
297380 
297381  \internal We could not make these private because they are required by user for special purposes. And
297382  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
297383 
297384  */
297385 
297386  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
297387  // overridden in every class by *generated* implementation
297389  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
297390  // MS: 06/28/02 container of names of variables or container indices
297391  // used used in the traversal to access AST successor nodes
297392  // overridden in every class by *generated* implementation
297395  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
297396 
297397  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
297398  // than all the vector copies. The implementation for these functions is generated for each class.
297400  virtual size_t get_numberOfTraversalSuccessors() override;
297402  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
297404  virtual size_t get_childIndex(SgNode *child) override;
297405 
297406 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
297407  // MS: 08/16/2002 method for generating RTI information
297409  virtual RTIReturnType roseRTI() override;
297410 #endif
297411  /* */
297412 
297413 
297414 
297415  /* name Deprecated Functions
297416  \brief Deprecated functions ... incomplete-documentation
297417 
297418  These functions have been deprecated from use.
297419  */
297420  /* */
297421 
297423  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
297424 
297425  // JJW (10/16/2008): Changed to a single function in Node.code, and put
297426  // getVariant() in #if 0 block to prevent confusing Doxygen
297427 #if 0
297428 
297429  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
297431  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
297432 #endif
297433  /* */
297434 
297435 
297436 
297437 
297438  public:
297439  /* name Traversal Support Functions
297440  \brief Traversal support functions ... incomplete-documentation
297441 
297442  These functions have been made public as part of the design, but they are suggested for internal use
297443  or by particularly knowledgable users for specialized tools or applications.
297444  */
297445  /* */
297446 
297447  // DQ (11/26/2005): Support for visitor pattern mechanims
297448  // (inferior to ROSE traversal mechanism, experimental).
297452 
297453  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
297455  virtual void accept (ROSE_VisitorPattern & visitor) override;
297456 
297457  // DQ (12/26/2005): Support for traversal based on the memory pool
297460  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
297461 
297464  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
297465 
297466  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
297467  // This traversal helps support internal tools that call static member functions.
297468  // note: this function operates on the memory pools.
297471  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
297472  /* */
297473 
297474 
297475  public:
297476  /* name Memory Allocation Functions
297477  \brief Memory allocations functions ... incomplete-documentation
297478 
297479  These functions have been made public as part of the design, but they are suggested for internal use
297480  or by particularly knowledgable users for specialized tools or applications.
297481  */
297482  /* */
297483 
297494  virtual bool isInMemoryPool() override;
297495 
297506  virtual void checkDataMemberPointersIfInMemoryPool() override;
297507 
297508  // DQ (4/30/2006): Modified to be a const function.
297523  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
297524 
297534  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
297535 
297547  virtual long getChildIndex( SgNode* childNode ) const override;
297548 
297549  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
297550  // comment here (changed to be a C style comment and not be a doxygen comment).
297551  /* \brief Constructor for use by AST File I/O Mechanism
297552 
297553  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
297554  which obtained via fast binary file I/O from disk.
297555  */
297556  // SgDesignatedInitializer( SgDesignatedInitializerStorageClass& source );
297557 
297558 
297559 
297560 
297561 
297562  // JH (10/24/2005): methods added to support the ast file IO
297563  private:
297564 
297565  /* name AST Memory Allocation Support Functions
297566  \brief Memory allocations support....
297567 
297568  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
297569  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
297570  and support the AST File I/O Mechanism.
297571  */
297572  /* */
297573 
297574  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
297575  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
297576  that I use the same type everywhere, if any changes are made. THe second one declares the type
297577  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
297578  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
297579  a correspinding one in the AST_FILE_IO class!
297580  */
297581  // DQ (9/2/2015): This typedef is no longer used, we can't define the
297582  // comment here (changed to be a C style comment and not be a doxygen comment).
297583  /* \brief Typedef used for low level memory access.
297584  */
297585  // typedef unsigned char* TestType;
297586 
297587  // DQ (9/2/2015): This typedef is no longer used, we can't define the
297588  // comment here (changed to be a C style comment and not be a doxygen comment).
297589  /* \brief Typedef used to hold memory addresses as values.
297590  */
297591  // typedef unsigned long AddressType;
297592 
297593 
297594 
297595  // necessary, to have direct access to the p_freepointer and the private methods !
297597  friend class AST_FILE_IO;
297598 
297600  friend class SgDesignatedInitializerStorageClass;
297601 
297603  friend class AstSpecificDataManagingClass;
297604 
297606  friend class AstSpecificDataManagingClassStorageClass;
297607 
297608  public:
297610  SgDesignatedInitializer( const SgDesignatedInitializerStorageClass& source );
297611 
297612  // private: // JJW hack
297613  /*
297614  name AST Memory Allocation Support Variables
297615  Memory allocations support variables
297616 
297617  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
297618  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
297619  and support the AST File I/O Mechanism.
297620  */
297621  /* */
297622 
297623  public:
297624 
297625  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
297626  // to current node (so that it will work cleanly with build functions to specify patterns).
297627  // virtual SgNode* addRegExpAttribute();
297634 
297635 // *** COMMON CODE SECTION ENDS HERE ***
297636 
297637 
297638 // End of memberFunctionString
297639 // Start of memberFunctionString
297640 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
297641 
297642  // the generated cast function
297643  // friend ROSE_DLL_API SgDesignatedInitializer* isSgDesignatedInitializer ( SgNode* s );
297644 
297645  typedef SgInitializer base_node_type;
297646 
297647 
297648 // End of memberFunctionString
297649 // Start of memberFunctionString
297650 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
297651 
297652  SgType* get_type() const override;
297653 
297654 
297655 // End of memberFunctionString
297656 // Start of memberFunctionString
297657 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
297658 
297659  void post_construction_initialization() override;
297660 
297661 
297662 // End of memberFunctionString
297663 // Start of memberFunctionString
297664 /* #line 184 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
297665 
297666  SgExpression *get_next( int& n) const ROSE_DEPRECATED_FUNCTION;
297667  int replace_expression( SgExpression *, SgExpression *) override ROSE_DEPRECATED_FUNCTION;
297668 
297669 
297670 // End of memberFunctionString
297671 
297672  public:
297673  SgExprListExp* get_designatorList() const;
297674  void set_designatorList(SgExprListExp* designatorList);
297675 
297676  public:
297677  SgInitializer* get_memberInit() const;
297678  void set_memberInit(SgInitializer* memberInit);
297679 
297680 
297681  public:
297682  virtual ~SgDesignatedInitializer();
297683 
297684 
297685  public:
297686  SgDesignatedInitializer(Sg_File_Info* startOfConstruct , SgExprListExp* designatorList = NULL, SgInitializer* memberInit = NULL);
297687  SgDesignatedInitializer(SgExprListExp* designatorList, SgInitializer* memberInit);
297688 
297689  protected:
297690 // Start of memberFunctionString
297691 SgExprListExp* p_designatorList;
297692 
297693 // End of memberFunctionString
297694 // Start of memberFunctionString
297695 SgInitializer* p_memberInit;
297696 
297697 // End of memberFunctionString
297698 
297699 
297700 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
297701 
297702 
297703  };
297704 #endif
297705 
297706 // postdeclarations for SgDesignatedInitializer
297707 
297708 /* #line 297709 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
297709 
297710 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
297711 
297712 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
297713 
297714 
297715 /* #line 297716 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
297716 
297717 
297718 
297719 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
297720 
297721 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
297722 // This code is automatically generated for each
297723 // terminal and non-terminal within the defined
297724 // grammar. There is a simple way to change the
297725 // code to fix bugs etc. See the ROSE README file
297726 // for directions.
297727 
297728 // tps: (02/22/2010): Adding DLL export requirements
297729 #include "rosedll.h"
297730 
297731 // predeclarations for SgBracedInitializer
297732 
297733 /* #line 297734 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
297734 
297735 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
297736 
297737 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
297738 
297739 #if 1
297740 // Class Definition for SgBracedInitializer
297741 class ROSE_DLL_API SgBracedInitializer : public SgInitializer
297742  {
297743  public:
297744 
297745 
297746 /* #line 297747 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
297747 
297748  virtual SgNode* copy ( SgCopyHelp& help) const override;
297749 // Start of memberFunctionString
297750 /* #line 1596 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
297751 
297752 /* #line 196 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
297753 
297754  void append_initializer(SgExpression* what);
297755  // void insert_initializer(const SgExpression::iterator & where, SgExpression* what);
297756  // void insert_initializer(const SgExpressionPtrList::iterator & where, SgExpression* what);
297757 
297758 
297759 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
297760  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
297761  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
297762 #endif
297763 
297764 #if 0
297765  // DQ (11/15/2016): I don' think that name qualification maes sense for a braced initializer.
297766 
297767  // DQ (6/11/2015): Added support for non ROSETTA generated access functions to avoid isModified flag setting semantics.
297768  bool get_requiresGlobalNameQualificationOnType() const;
297769  void set_requiresGlobalNameQualificationOnType(bool requiresGlobalNameQualificationOnType);
297770 
297771  // DQ (6/11/2015): Added support for non ROSETTA generated access functions to avoid isModified flag setting semantics.
297772  int get_name_qualification_length_for_type() const override;
297773  void set_name_qualification_length_for_type(int name_qualification_length_for_type) override;
297774 
297775  // DQ (6/11/2015): Added support for non ROSETTA generated access functions to avoid isModified flag setting semantics.
297776  bool get_type_elaboration_required_for_type() const override;
297777  void set_type_elaboration_required_for_type(bool type_elaboration_required_for_type) override;
297778 
297779  // DQ (6/11/2015): Added support for non ROSETTA generated access functions to avoid isModified flag setting semantics.
297780  bool get_global_qualification_required_for_type() const override;
297781  void set_global_qualification_required_for_type(bool global_qualification_required_for_type) override;
297782 #endif
297783 
297784 
297785 
297786 // End of memberFunctionString
297787 // Start of memberFunctionString
297788 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
297789 
297790 // *** COMMON CODE SECTION BEGINS HERE ***
297791 
297792  public:
297793 
297794  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
297795  // and not required which is required to match the other aspects of the copy mechanism code generation.
297796  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
297797  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
297798  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
297799  // virtual SgNode* copy ( const SgCopyHelp & help) const;
297800 
297802  virtual std::string class_name() const override;
297803 
297805  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
297806 
297808  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
297809  // static const VariantT static_variant = V_SgBracedInitializer;
297810  enum { static_variant = V_SgBracedInitializer };
297811 
297812  /* the generated cast function */
297814  ROSE_DLL_API friend SgBracedInitializer* isSgBracedInitializer( SgNode * s );
297815 
297817  ROSE_DLL_API friend const SgBracedInitializer* isSgBracedInitializer( const SgNode * s );
297818 
297819  // ******************************************
297820  // * Memory Pool / New / Delete
297821  // ******************************************
297822 
297823  public:
297825  static const unsigned pool_size; //
297827  static std::vector<unsigned char *> pools; //
297829  static SgBracedInitializer * next_node; //
297830 
297832  static unsigned long initializeStorageClassArray(SgBracedInitializerStorageClass *); //
297833 
297835  static void clearMemoryPool(); //
297836  static void deleteMemoryPool(); //
297837 
297839  static void extendMemoryPoolForFileIO(); //
297840 
297842  static SgBracedInitializer * getPointerFromGlobalIndex(unsigned long); //
297844  static SgBracedInitializer * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
297845 
297847  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
297849  static void resetValidFreepointers(); //
297851  static unsigned long getNumberOfLastValidPointer(); //
297852 
297853 
297854 #if defined(INLINE_FUNCTIONS)
297855 
297856  inline void *operator new (size_t size);
297857 #else
297858 
297859  void *operator new (size_t size);
297860 #endif
297861 
297862  void operator delete (void* pointer, size_t size);
297863 
297864  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
297865  void operator delete (void* pointer)
297866  {
297867  // This is the generated delete operator...
297868  SgBracedInitializer::operator delete (pointer,sizeof(SgBracedInitializer));
297869  }
297870 
297872  static size_t numberOfNodes();
297873 
297875  static size_t memoryUsage();
297876 
297877  // End of scope which started in IR nodes specific code
297878  /* */
297879 
297880  /* name Internal Functions
297881  \brief Internal functions ... incomplete-documentation
297882 
297883  These functions have been made public as part of the design, but they are suggested for internal use
297884  or by particularly knowledgeable users for specialized tools or applications.
297885 
297886  \internal We could not make these private because they are required by user for special purposes. And
297887  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
297888 
297889  */
297890 
297891  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
297892  // overridden in every class by *generated* implementation
297894  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
297895  // MS: 06/28/02 container of names of variables or container indices
297896  // used used in the traversal to access AST successor nodes
297897  // overridden in every class by *generated* implementation
297900  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
297901 
297902  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
297903  // than all the vector copies. The implementation for these functions is generated for each class.
297905  virtual size_t get_numberOfTraversalSuccessors() override;
297907  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
297909  virtual size_t get_childIndex(SgNode *child) override;
297910 
297911 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
297912  // MS: 08/16/2002 method for generating RTI information
297914  virtual RTIReturnType roseRTI() override;
297915 #endif
297916  /* */
297917 
297918 
297919 
297920  /* name Deprecated Functions
297921  \brief Deprecated functions ... incomplete-documentation
297922 
297923  These functions have been deprecated from use.
297924  */
297925  /* */
297926 
297928  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
297929 
297930  // JJW (10/16/2008): Changed to a single function in Node.code, and put
297931  // getVariant() in #if 0 block to prevent confusing Doxygen
297932 #if 0
297933 
297934  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
297936  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
297937 #endif
297938  /* */
297939 
297940 
297941 
297942 
297943  public:
297944  /* name Traversal Support Functions
297945  \brief Traversal support functions ... incomplete-documentation
297946 
297947  These functions have been made public as part of the design, but they are suggested for internal use
297948  or by particularly knowledgable users for specialized tools or applications.
297949  */
297950  /* */
297951 
297952  // DQ (11/26/2005): Support for visitor pattern mechanims
297953  // (inferior to ROSE traversal mechanism, experimental).
297957 
297958  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
297960  virtual void accept (ROSE_VisitorPattern & visitor) override;
297961 
297962  // DQ (12/26/2005): Support for traversal based on the memory pool
297965  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
297966 
297969  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
297970 
297971  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
297972  // This traversal helps support internal tools that call static member functions.
297973  // note: this function operates on the memory pools.
297976  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
297977  /* */
297978 
297979 
297980  public:
297981  /* name Memory Allocation Functions
297982  \brief Memory allocations functions ... incomplete-documentation
297983 
297984  These functions have been made public as part of the design, but they are suggested for internal use
297985  or by particularly knowledgable users for specialized tools or applications.
297986  */
297987  /* */
297988 
297999  virtual bool isInMemoryPool() override;
298000 
298011  virtual void checkDataMemberPointersIfInMemoryPool() override;
298012 
298013  // DQ (4/30/2006): Modified to be a const function.
298028  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
298029 
298039  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
298040 
298052  virtual long getChildIndex( SgNode* childNode ) const override;
298053 
298054  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
298055  // comment here (changed to be a C style comment and not be a doxygen comment).
298056  /* \brief Constructor for use by AST File I/O Mechanism
298057 
298058  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
298059  which obtained via fast binary file I/O from disk.
298060  */
298061  // SgBracedInitializer( SgBracedInitializerStorageClass& source );
298062 
298063 
298064 
298065 
298066 
298067  // JH (10/24/2005): methods added to support the ast file IO
298068  private:
298069 
298070  /* name AST Memory Allocation Support Functions
298071  \brief Memory allocations support....
298072 
298073  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
298074  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
298075  and support the AST File I/O Mechanism.
298076  */
298077  /* */
298078 
298079  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
298080  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
298081  that I use the same type everywhere, if any changes are made. THe second one declares the type
298082  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
298083  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
298084  a correspinding one in the AST_FILE_IO class!
298085  */
298086  // DQ (9/2/2015): This typedef is no longer used, we can't define the
298087  // comment here (changed to be a C style comment and not be a doxygen comment).
298088  /* \brief Typedef used for low level memory access.
298089  */
298090  // typedef unsigned char* TestType;
298091 
298092  // DQ (9/2/2015): This typedef is no longer used, we can't define the
298093  // comment here (changed to be a C style comment and not be a doxygen comment).
298094  /* \brief Typedef used to hold memory addresses as values.
298095  */
298096  // typedef unsigned long AddressType;
298097 
298098 
298099 
298100  // necessary, to have direct access to the p_freepointer and the private methods !
298102  friend class AST_FILE_IO;
298103 
298105  friend class SgBracedInitializerStorageClass;
298106 
298108  friend class AstSpecificDataManagingClass;
298109 
298111  friend class AstSpecificDataManagingClassStorageClass;
298112 
298113  public:
298115  SgBracedInitializer( const SgBracedInitializerStorageClass& source );
298116 
298117  // private: // JJW hack
298118  /*
298119  name AST Memory Allocation Support Variables
298120  Memory allocations support variables
298121 
298122  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
298123  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
298124  and support the AST File I/O Mechanism.
298125  */
298126  /* */
298127 
298128  public:
298129 
298130  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
298131  // to current node (so that it will work cleanly with build functions to specify patterns).
298132  // virtual SgNode* addRegExpAttribute();
298139 
298140 // *** COMMON CODE SECTION ENDS HERE ***
298141 
298142 
298143 // End of memberFunctionString
298144 // Start of memberFunctionString
298145 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
298146 
298147  // the generated cast function
298148  // friend ROSE_DLL_API SgBracedInitializer* isSgBracedInitializer ( SgNode* s );
298149 
298150  typedef SgInitializer base_node_type;
298151 
298152 
298153 // End of memberFunctionString
298154 // Start of memberFunctionString
298155 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
298156 
298157  SgType* get_type() const override;
298158 
298159 
298160 // End of memberFunctionString
298161 // Start of memberFunctionString
298162 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
298163 
298164  void post_construction_initialization() override;
298165 
298166 
298167 // End of memberFunctionString
298168 // Start of memberFunctionString
298169 /* #line 184 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
298170 
298171  SgExpression *get_next( int& n) const ROSE_DEPRECATED_FUNCTION;
298172  int replace_expression( SgExpression *, SgExpression *) override ROSE_DEPRECATED_FUNCTION;
298173 
298174 
298175 // End of memberFunctionString
298176 
298177  public:
298178  SgExprListExp* get_initializers() const;
298179  void set_initializers(SgExprListExp* initializers);
298180 
298181 
298182 
298183  public:
298184  virtual ~SgBracedInitializer();
298185 
298186 
298187  public:
298188  SgBracedInitializer(Sg_File_Info* startOfConstruct , SgExprListExp* initializers = NULL, SgType* expression_type = NULL);
298189  SgBracedInitializer(SgExprListExp* initializers, SgType* expression_type);
298190 
298191  protected:
298192 // Start of memberFunctionString
298193 SgExprListExp* p_initializers;
298194 
298195 // End of memberFunctionString
298196 // Start of memberFunctionString
298197 SgType* p_expression_type;
298198 
298199 // End of memberFunctionString
298200 
298201 
298202 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
298203 
298204 
298205  };
298206 #endif
298207 
298208 // postdeclarations for SgBracedInitializer
298209 
298210 /* #line 298211 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
298211 
298212 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
298213 
298214 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
298215 
298216 
298217 /* #line 298218 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
298218 
298219 
298220 
298221 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
298222 
298223 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
298224 // This code is automatically generated for each
298225 // terminal and non-terminal within the defined
298226 // grammar. There is a simple way to change the
298227 // code to fix bugs etc. See the ROSE README file
298228 // for directions.
298229 
298230 // tps: (02/22/2010): Adding DLL export requirements
298231 #include "rosedll.h"
298232 
298233 // predeclarations for SgVarArgStartOp
298234 
298235 /* #line 298236 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
298236 
298237 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
298238 
298239 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
298240 
298241 #if 1
298242 // Class Definition for SgVarArgStartOp
298243 class ROSE_DLL_API SgVarArgStartOp : public SgExpression
298244  {
298245  public:
298246 
298247 
298248 /* #line 298249 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
298249 
298250  virtual SgNode* copy ( SgCopyHelp& help) const override;
298251 // Start of memberFunctionString
298252 /* #line 1089 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
298253 
298254 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
298255  virtual unsigned int cfgIndexForEnd() const override;
298256  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
298257  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
298258 #endif
298259 
298260 
298261 
298262 // End of memberFunctionString
298263 // Start of memberFunctionString
298264 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
298265 
298266 // *** COMMON CODE SECTION BEGINS HERE ***
298267 
298268  public:
298269 
298270  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
298271  // and not required which is required to match the other aspects of the copy mechanism code generation.
298272  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
298273  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
298274  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
298275  // virtual SgNode* copy ( const SgCopyHelp & help) const;
298276 
298278  virtual std::string class_name() const override;
298279 
298281  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
298282 
298284  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
298285  // static const VariantT static_variant = V_SgVarArgStartOp;
298286  enum { static_variant = V_SgVarArgStartOp };
298287 
298288  /* the generated cast function */
298290  ROSE_DLL_API friend SgVarArgStartOp* isSgVarArgStartOp( SgNode * s );
298291 
298293  ROSE_DLL_API friend const SgVarArgStartOp* isSgVarArgStartOp( const SgNode * s );
298294 
298295  // ******************************************
298296  // * Memory Pool / New / Delete
298297  // ******************************************
298298 
298299  public:
298301  static const unsigned pool_size; //
298303  static std::vector<unsigned char *> pools; //
298305  static SgVarArgStartOp * next_node; //
298306 
298308  static unsigned long initializeStorageClassArray(SgVarArgStartOpStorageClass *); //
298309 
298311  static void clearMemoryPool(); //
298312  static void deleteMemoryPool(); //
298313 
298315  static void extendMemoryPoolForFileIO(); //
298316 
298318  static SgVarArgStartOp * getPointerFromGlobalIndex(unsigned long); //
298320  static SgVarArgStartOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
298321 
298323  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
298325  static void resetValidFreepointers(); //
298327  static unsigned long getNumberOfLastValidPointer(); //
298328 
298329 
298330 #if defined(INLINE_FUNCTIONS)
298331 
298332  inline void *operator new (size_t size);
298333 #else
298334 
298335  void *operator new (size_t size);
298336 #endif
298337 
298338  void operator delete (void* pointer, size_t size);
298339 
298340  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
298341  void operator delete (void* pointer)
298342  {
298343  // This is the generated delete operator...
298344  SgVarArgStartOp::operator delete (pointer,sizeof(SgVarArgStartOp));
298345  }
298346 
298348  static size_t numberOfNodes();
298349 
298351  static size_t memoryUsage();
298352 
298353  // End of scope which started in IR nodes specific code
298354  /* */
298355 
298356  /* name Internal Functions
298357  \brief Internal functions ... incomplete-documentation
298358 
298359  These functions have been made public as part of the design, but they are suggested for internal use
298360  or by particularly knowledgeable users for specialized tools or applications.
298361 
298362  \internal We could not make these private because they are required by user for special purposes. And
298363  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
298364 
298365  */
298366 
298367  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
298368  // overridden in every class by *generated* implementation
298370  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
298371  // MS: 06/28/02 container of names of variables or container indices
298372  // used used in the traversal to access AST successor nodes
298373  // overridden in every class by *generated* implementation
298376  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
298377 
298378  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
298379  // than all the vector copies. The implementation for these functions is generated for each class.
298381  virtual size_t get_numberOfTraversalSuccessors() override;
298383  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
298385  virtual size_t get_childIndex(SgNode *child) override;
298386 
298387 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
298388  // MS: 08/16/2002 method for generating RTI information
298390  virtual RTIReturnType roseRTI() override;
298391 #endif
298392  /* */
298393 
298394 
298395 
298396  /* name Deprecated Functions
298397  \brief Deprecated functions ... incomplete-documentation
298398 
298399  These functions have been deprecated from use.
298400  */
298401  /* */
298402 
298404  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
298405 
298406  // JJW (10/16/2008): Changed to a single function in Node.code, and put
298407  // getVariant() in #if 0 block to prevent confusing Doxygen
298408 #if 0
298409 
298410  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
298412  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
298413 #endif
298414  /* */
298415 
298416 
298417 
298418 
298419  public:
298420  /* name Traversal Support Functions
298421  \brief Traversal support functions ... incomplete-documentation
298422 
298423  These functions have been made public as part of the design, but they are suggested for internal use
298424  or by particularly knowledgable users for specialized tools or applications.
298425  */
298426  /* */
298427 
298428  // DQ (11/26/2005): Support for visitor pattern mechanims
298429  // (inferior to ROSE traversal mechanism, experimental).
298433 
298434  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
298436  virtual void accept (ROSE_VisitorPattern & visitor) override;
298437 
298438  // DQ (12/26/2005): Support for traversal based on the memory pool
298441  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
298442 
298445  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
298446 
298447  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
298448  // This traversal helps support internal tools that call static member functions.
298449  // note: this function operates on the memory pools.
298452  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
298453  /* */
298454 
298455 
298456  public:
298457  /* name Memory Allocation Functions
298458  \brief Memory allocations functions ... incomplete-documentation
298459 
298460  These functions have been made public as part of the design, but they are suggested for internal use
298461  or by particularly knowledgable users for specialized tools or applications.
298462  */
298463  /* */
298464 
298475  virtual bool isInMemoryPool() override;
298476 
298487  virtual void checkDataMemberPointersIfInMemoryPool() override;
298488 
298489  // DQ (4/30/2006): Modified to be a const function.
298504  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
298505 
298515  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
298516 
298528  virtual long getChildIndex( SgNode* childNode ) const override;
298529 
298530  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
298531  // comment here (changed to be a C style comment and not be a doxygen comment).
298532  /* \brief Constructor for use by AST File I/O Mechanism
298533 
298534  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
298535  which obtained via fast binary file I/O from disk.
298536  */
298537  // SgVarArgStartOp( SgVarArgStartOpStorageClass& source );
298538 
298539 
298540 
298541 
298542 
298543  // JH (10/24/2005): methods added to support the ast file IO
298544  private:
298545 
298546  /* name AST Memory Allocation Support Functions
298547  \brief Memory allocations support....
298548 
298549  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
298550  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
298551  and support the AST File I/O Mechanism.
298552  */
298553  /* */
298554 
298555  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
298556  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
298557  that I use the same type everywhere, if any changes are made. THe second one declares the type
298558  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
298559  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
298560  a correspinding one in the AST_FILE_IO class!
298561  */
298562  // DQ (9/2/2015): This typedef is no longer used, we can't define the
298563  // comment here (changed to be a C style comment and not be a doxygen comment).
298564  /* \brief Typedef used for low level memory access.
298565  */
298566  // typedef unsigned char* TestType;
298567 
298568  // DQ (9/2/2015): This typedef is no longer used, we can't define the
298569  // comment here (changed to be a C style comment and not be a doxygen comment).
298570  /* \brief Typedef used to hold memory addresses as values.
298571  */
298572  // typedef unsigned long AddressType;
298573 
298574 
298575 
298576  // necessary, to have direct access to the p_freepointer and the private methods !
298578  friend class AST_FILE_IO;
298579 
298581  friend class SgVarArgStartOpStorageClass;
298582 
298584  friend class AstSpecificDataManagingClass;
298585 
298587  friend class AstSpecificDataManagingClassStorageClass;
298588 
298589  public:
298591  SgVarArgStartOp( const SgVarArgStartOpStorageClass& source );
298592 
298593  // private: // JJW hack
298594  /*
298595  name AST Memory Allocation Support Variables
298596  Memory allocations support variables
298597 
298598  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
298599  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
298600  and support the AST File I/O Mechanism.
298601  */
298602  /* */
298603 
298604  public:
298605 
298606  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
298607  // to current node (so that it will work cleanly with build functions to specify patterns).
298608  // virtual SgNode* addRegExpAttribute();
298615 
298616 // *** COMMON CODE SECTION ENDS HERE ***
298617 
298618 
298619 // End of memberFunctionString
298620 // Start of memberFunctionString
298621 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
298622 
298623  // the generated cast function
298624  // friend ROSE_DLL_API SgVarArgStartOp* isSgVarArgStartOp ( SgNode* s );
298625 
298626  typedef SgExpression base_node_type;
298627 
298628 
298629 // End of memberFunctionString
298630 // Start of memberFunctionString
298631 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
298632 
298633  SgType* get_type() const override;
298634 
298635 
298636 // End of memberFunctionString
298637 // Start of memberFunctionString
298638 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
298639 
298640  void post_construction_initialization() override;
298641 
298642 
298643 // End of memberFunctionString
298644 
298645  public:
298646  SgExpression* get_lhs_operand() const;
298647  void set_lhs_operand(SgExpression* lhs_operand);
298648 
298649  public:
298650  SgExpression* get_rhs_operand() const;
298651  void set_rhs_operand(SgExpression* rhs_operand);
298652 
298653  public:
298654  SgType* get_expression_type() const;
298655  void set_expression_type(SgType* expression_type);
298656 
298657 
298658  public:
298659  virtual ~SgVarArgStartOp();
298660 
298661 
298662  public:
298663  SgVarArgStartOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand = NULL, SgExpression* rhs_operand = NULL, SgType* expression_type = NULL);
298664  SgVarArgStartOp(SgExpression* lhs_operand, SgExpression* rhs_operand, SgType* expression_type);
298665 
298666  protected:
298667 // Start of memberFunctionString
298668 SgExpression* p_lhs_operand;
298669 
298670 // End of memberFunctionString
298671 // Start of memberFunctionString
298672 SgExpression* p_rhs_operand;
298673 
298674 // End of memberFunctionString
298675 // Start of memberFunctionString
298676 SgType* p_expression_type;
298677 
298678 // End of memberFunctionString
298679 
298680 
298681 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
298682 
298683 
298684  };
298685 #endif
298686 
298687 // postdeclarations for SgVarArgStartOp
298688 
298689 /* #line 298690 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
298690 
298691 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
298692 
298693 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
298694 
298695 
298696 /* #line 298697 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
298697 
298698 
298699 
298700 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
298701 
298702 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
298703 // This code is automatically generated for each
298704 // terminal and non-terminal within the defined
298705 // grammar. There is a simple way to change the
298706 // code to fix bugs etc. See the ROSE README file
298707 // for directions.
298708 
298709 // tps: (02/22/2010): Adding DLL export requirements
298710 #include "rosedll.h"
298711 
298712 // predeclarations for SgVarArgOp
298713 
298714 /* #line 298715 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
298715 
298716 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
298717 
298718 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
298719 
298720 #if 1
298721 // Class Definition for SgVarArgOp
298722 class ROSE_DLL_API SgVarArgOp : public SgExpression
298723  {
298724  public:
298725 
298726 
298727 /* #line 298728 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
298728 
298729  virtual SgNode* copy ( SgCopyHelp& help) const override;
298730 // Start of memberFunctionString
298731 /* #line 1098 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
298732 
298733 
298734 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
298735  virtual unsigned int cfgIndexForEnd() const override;
298736  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
298737  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
298738 #endif
298739 
298740  int replace_expression(SgExpression*, SgExpression*) override ROSE_DEPRECATED_FUNCTION;
298741  // void set_type( SgType* type );
298742 
298743 
298744 
298745 // End of memberFunctionString
298746 // Start of memberFunctionString
298747 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
298748 
298749 // *** COMMON CODE SECTION BEGINS HERE ***
298750 
298751  public:
298752 
298753  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
298754  // and not required which is required to match the other aspects of the copy mechanism code generation.
298755  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
298756  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
298757  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
298758  // virtual SgNode* copy ( const SgCopyHelp & help) const;
298759 
298761  virtual std::string class_name() const override;
298762 
298764  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
298765 
298767  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
298768  // static const VariantT static_variant = V_SgVarArgOp;
298769  enum { static_variant = V_SgVarArgOp };
298770 
298771  /* the generated cast function */
298773  ROSE_DLL_API friend SgVarArgOp* isSgVarArgOp( SgNode * s );
298774 
298776  ROSE_DLL_API friend const SgVarArgOp* isSgVarArgOp( const SgNode * s );
298777 
298778  // ******************************************
298779  // * Memory Pool / New / Delete
298780  // ******************************************
298781 
298782  public:
298784  static const unsigned pool_size; //
298786  static std::vector<unsigned char *> pools; //
298788  static SgVarArgOp * next_node; //
298789 
298791  static unsigned long initializeStorageClassArray(SgVarArgOpStorageClass *); //
298792 
298794  static void clearMemoryPool(); //
298795  static void deleteMemoryPool(); //
298796 
298798  static void extendMemoryPoolForFileIO(); //
298799 
298801  static SgVarArgOp * getPointerFromGlobalIndex(unsigned long); //
298803  static SgVarArgOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
298804 
298806  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
298808  static void resetValidFreepointers(); //
298810  static unsigned long getNumberOfLastValidPointer(); //
298811 
298812 
298813 #if defined(INLINE_FUNCTIONS)
298814 
298815  inline void *operator new (size_t size);
298816 #else
298817 
298818  void *operator new (size_t size);
298819 #endif
298820 
298821  void operator delete (void* pointer, size_t size);
298822 
298823  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
298824  void operator delete (void* pointer)
298825  {
298826  // This is the generated delete operator...
298827  SgVarArgOp::operator delete (pointer,sizeof(SgVarArgOp));
298828  }
298829 
298831  static size_t numberOfNodes();
298832 
298834  static size_t memoryUsage();
298835 
298836  // End of scope which started in IR nodes specific code
298837  /* */
298838 
298839  /* name Internal Functions
298840  \brief Internal functions ... incomplete-documentation
298841 
298842  These functions have been made public as part of the design, but they are suggested for internal use
298843  or by particularly knowledgeable users for specialized tools or applications.
298844 
298845  \internal We could not make these private because they are required by user for special purposes. And
298846  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
298847 
298848  */
298849 
298850  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
298851  // overridden in every class by *generated* implementation
298853  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
298854  // MS: 06/28/02 container of names of variables or container indices
298855  // used used in the traversal to access AST successor nodes
298856  // overridden in every class by *generated* implementation
298859  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
298860 
298861  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
298862  // than all the vector copies. The implementation for these functions is generated for each class.
298864  virtual size_t get_numberOfTraversalSuccessors() override;
298866  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
298868  virtual size_t get_childIndex(SgNode *child) override;
298869 
298870 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
298871  // MS: 08/16/2002 method for generating RTI information
298873  virtual RTIReturnType roseRTI() override;
298874 #endif
298875  /* */
298876 
298877 
298878 
298879  /* name Deprecated Functions
298880  \brief Deprecated functions ... incomplete-documentation
298881 
298882  These functions have been deprecated from use.
298883  */
298884  /* */
298885 
298887  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
298888 
298889  // JJW (10/16/2008): Changed to a single function in Node.code, and put
298890  // getVariant() in #if 0 block to prevent confusing Doxygen
298891 #if 0
298892 
298893  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
298895  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
298896 #endif
298897  /* */
298898 
298899 
298900 
298901 
298902  public:
298903  /* name Traversal Support Functions
298904  \brief Traversal support functions ... incomplete-documentation
298905 
298906  These functions have been made public as part of the design, but they are suggested for internal use
298907  or by particularly knowledgable users for specialized tools or applications.
298908  */
298909  /* */
298910 
298911  // DQ (11/26/2005): Support for visitor pattern mechanims
298912  // (inferior to ROSE traversal mechanism, experimental).
298916 
298917  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
298919  virtual void accept (ROSE_VisitorPattern & visitor) override;
298920 
298921  // DQ (12/26/2005): Support for traversal based on the memory pool
298924  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
298925 
298928  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
298929 
298930  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
298931  // This traversal helps support internal tools that call static member functions.
298932  // note: this function operates on the memory pools.
298935  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
298936  /* */
298937 
298938 
298939  public:
298940  /* name Memory Allocation Functions
298941  \brief Memory allocations functions ... incomplete-documentation
298942 
298943  These functions have been made public as part of the design, but they are suggested for internal use
298944  or by particularly knowledgable users for specialized tools or applications.
298945  */
298946  /* */
298947 
298958  virtual bool isInMemoryPool() override;
298959 
298970  virtual void checkDataMemberPointersIfInMemoryPool() override;
298971 
298972  // DQ (4/30/2006): Modified to be a const function.
298987  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
298988 
298998  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
298999 
299011  virtual long getChildIndex( SgNode* childNode ) const override;
299012 
299013  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
299014  // comment here (changed to be a C style comment and not be a doxygen comment).
299015  /* \brief Constructor for use by AST File I/O Mechanism
299016 
299017  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
299018  which obtained via fast binary file I/O from disk.
299019  */
299020  // SgVarArgOp( SgVarArgOpStorageClass& source );
299021 
299022 
299023 
299024 
299025 
299026  // JH (10/24/2005): methods added to support the ast file IO
299027  private:
299028 
299029  /* name AST Memory Allocation Support Functions
299030  \brief Memory allocations support....
299031 
299032  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
299033  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
299034  and support the AST File I/O Mechanism.
299035  */
299036  /* */
299037 
299038  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
299039  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
299040  that I use the same type everywhere, if any changes are made. THe second one declares the type
299041  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
299042  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
299043  a correspinding one in the AST_FILE_IO class!
299044  */
299045  // DQ (9/2/2015): This typedef is no longer used, we can't define the
299046  // comment here (changed to be a C style comment and not be a doxygen comment).
299047  /* \brief Typedef used for low level memory access.
299048  */
299049  // typedef unsigned char* TestType;
299050 
299051  // DQ (9/2/2015): This typedef is no longer used, we can't define the
299052  // comment here (changed to be a C style comment and not be a doxygen comment).
299053  /* \brief Typedef used to hold memory addresses as values.
299054  */
299055  // typedef unsigned long AddressType;
299056 
299057 
299058 
299059  // necessary, to have direct access to the p_freepointer and the private methods !
299061  friend class AST_FILE_IO;
299062 
299064  friend class SgVarArgOpStorageClass;
299065 
299067  friend class AstSpecificDataManagingClass;
299068 
299070  friend class AstSpecificDataManagingClassStorageClass;
299071 
299072  public:
299074  SgVarArgOp( const SgVarArgOpStorageClass& source );
299075 
299076  // private: // JJW hack
299077  /*
299078  name AST Memory Allocation Support Variables
299079  Memory allocations support variables
299080 
299081  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
299082  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
299083  and support the AST File I/O Mechanism.
299084  */
299085  /* */
299086 
299087  public:
299088 
299089  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
299090  // to current node (so that it will work cleanly with build functions to specify patterns).
299091  // virtual SgNode* addRegExpAttribute();
299097  SgVarArgOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
299098 
299099 // *** COMMON CODE SECTION ENDS HERE ***
299100 
299101 
299102 // End of memberFunctionString
299103 // Start of memberFunctionString
299104 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
299105 
299106  // the generated cast function
299107  // friend ROSE_DLL_API SgVarArgOp* isSgVarArgOp ( SgNode* s );
299108 
299109  typedef SgExpression base_node_type;
299110 
299111 
299112 // End of memberFunctionString
299113 // Start of memberFunctionString
299114 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
299115 
299116  SgType* get_type() const override;
299117 
299118 
299119 // End of memberFunctionString
299120 // Start of memberFunctionString
299121 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
299122 
299123  void post_construction_initialization() override;
299124 
299125 
299126 // End of memberFunctionString
299127 
299128  public:
299129  SgExpression* get_operand_expr() const;
299130  void set_operand_expr(SgExpression* operand_expr);
299131 
299132  public:
299133  SgType* get_expression_type() const;
299134  void set_expression_type(SgType* expression_type);
299135 
299136 
299137  public:
299138  virtual ~SgVarArgOp();
299139 
299140 
299141  public:
299142  SgVarArgOp(Sg_File_Info* startOfConstruct , SgExpression* operand_expr = NULL, SgType* expression_type = NULL);
299143  SgVarArgOp(SgExpression* operand_expr, SgType* expression_type);
299144 
299145  protected:
299146 // Start of memberFunctionString
299147 SgExpression* p_operand_expr;
299148 
299149 // End of memberFunctionString
299150 // Start of memberFunctionString
299151 SgType* p_expression_type;
299152 
299153 // End of memberFunctionString
299154 
299155 
299156 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
299157 
299158 
299159  };
299160 #endif
299161 
299162 // postdeclarations for SgVarArgOp
299163 
299164 /* #line 299165 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
299165 
299166 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
299167 
299168 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
299169 
299170 
299171 /* #line 299172 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
299172 
299173 
299174 
299175 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
299176 
299177 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
299178 // This code is automatically generated for each
299179 // terminal and non-terminal within the defined
299180 // grammar. There is a simple way to change the
299181 // code to fix bugs etc. See the ROSE README file
299182 // for directions.
299183 
299184 // tps: (02/22/2010): Adding DLL export requirements
299185 #include "rosedll.h"
299186 
299187 // predeclarations for SgVarArgEndOp
299188 
299189 /* #line 299190 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
299190 
299191 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
299192 
299193 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
299194 
299195 #if 1
299196 // Class Definition for SgVarArgEndOp
299197 class ROSE_DLL_API SgVarArgEndOp : public SgExpression
299198  {
299199  public:
299200 
299201 
299202 /* #line 299203 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
299203 
299204  virtual SgNode* copy ( SgCopyHelp& help) const override;
299205 // Start of memberFunctionString
299206 /* #line 1111 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
299207 
299208 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
299209  virtual unsigned int cfgIndexForEnd() const override;
299210  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
299211  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
299212 #endif
299213 
299214  int replace_expression(SgExpression*, SgExpression*) override ROSE_DEPRECATED_FUNCTION;
299215 
299216 
299217 
299218 // End of memberFunctionString
299219 // Start of memberFunctionString
299220 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
299221 
299222 // *** COMMON CODE SECTION BEGINS HERE ***
299223 
299224  public:
299225 
299226  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
299227  // and not required which is required to match the other aspects of the copy mechanism code generation.
299228  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
299229  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
299230  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
299231  // virtual SgNode* copy ( const SgCopyHelp & help) const;
299232 
299234  virtual std::string class_name() const override;
299235 
299237  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
299238 
299240  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
299241  // static const VariantT static_variant = V_SgVarArgEndOp;
299242  enum { static_variant = V_SgVarArgEndOp };
299243 
299244  /* the generated cast function */
299246  ROSE_DLL_API friend SgVarArgEndOp* isSgVarArgEndOp( SgNode * s );
299247 
299249  ROSE_DLL_API friend const SgVarArgEndOp* isSgVarArgEndOp( const SgNode * s );
299250 
299251  // ******************************************
299252  // * Memory Pool / New / Delete
299253  // ******************************************
299254 
299255  public:
299257  static const unsigned pool_size; //
299259  static std::vector<unsigned char *> pools; //
299261  static SgVarArgEndOp * next_node; //
299262 
299264  static unsigned long initializeStorageClassArray(SgVarArgEndOpStorageClass *); //
299265 
299267  static void clearMemoryPool(); //
299268  static void deleteMemoryPool(); //
299269 
299271  static void extendMemoryPoolForFileIO(); //
299272 
299274  static SgVarArgEndOp * getPointerFromGlobalIndex(unsigned long); //
299276  static SgVarArgEndOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
299277 
299279  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
299281  static void resetValidFreepointers(); //
299283  static unsigned long getNumberOfLastValidPointer(); //
299284 
299285 
299286 #if defined(INLINE_FUNCTIONS)
299287 
299288  inline void *operator new (size_t size);
299289 #else
299290 
299291  void *operator new (size_t size);
299292 #endif
299293 
299294  void operator delete (void* pointer, size_t size);
299295 
299296  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
299297  void operator delete (void* pointer)
299298  {
299299  // This is the generated delete operator...
299300  SgVarArgEndOp::operator delete (pointer,sizeof(SgVarArgEndOp));
299301  }
299302 
299304  static size_t numberOfNodes();
299305 
299307  static size_t memoryUsage();
299308 
299309  // End of scope which started in IR nodes specific code
299310  /* */
299311 
299312  /* name Internal Functions
299313  \brief Internal functions ... incomplete-documentation
299314 
299315  These functions have been made public as part of the design, but they are suggested for internal use
299316  or by particularly knowledgeable users for specialized tools or applications.
299317 
299318  \internal We could not make these private because they are required by user for special purposes. And
299319  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
299320 
299321  */
299322 
299323  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
299324  // overridden in every class by *generated* implementation
299326  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
299327  // MS: 06/28/02 container of names of variables or container indices
299328  // used used in the traversal to access AST successor nodes
299329  // overridden in every class by *generated* implementation
299332  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
299333 
299334  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
299335  // than all the vector copies. The implementation for these functions is generated for each class.
299337  virtual size_t get_numberOfTraversalSuccessors() override;
299339  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
299341  virtual size_t get_childIndex(SgNode *child) override;
299342 
299343 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
299344  // MS: 08/16/2002 method for generating RTI information
299346  virtual RTIReturnType roseRTI() override;
299347 #endif
299348  /* */
299349 
299350 
299351 
299352  /* name Deprecated Functions
299353  \brief Deprecated functions ... incomplete-documentation
299354 
299355  These functions have been deprecated from use.
299356  */
299357  /* */
299358 
299360  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
299361 
299362  // JJW (10/16/2008): Changed to a single function in Node.code, and put
299363  // getVariant() in #if 0 block to prevent confusing Doxygen
299364 #if 0
299365 
299366  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
299368  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
299369 #endif
299370  /* */
299371 
299372 
299373 
299374 
299375  public:
299376  /* name Traversal Support Functions
299377  \brief Traversal support functions ... incomplete-documentation
299378 
299379  These functions have been made public as part of the design, but they are suggested for internal use
299380  or by particularly knowledgable users for specialized tools or applications.
299381  */
299382  /* */
299383 
299384  // DQ (11/26/2005): Support for visitor pattern mechanims
299385  // (inferior to ROSE traversal mechanism, experimental).
299389 
299390  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
299392  virtual void accept (ROSE_VisitorPattern & visitor) override;
299393 
299394  // DQ (12/26/2005): Support for traversal based on the memory pool
299397  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
299398 
299401  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
299402 
299403  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
299404  // This traversal helps support internal tools that call static member functions.
299405  // note: this function operates on the memory pools.
299408  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
299409  /* */
299410 
299411 
299412  public:
299413  /* name Memory Allocation Functions
299414  \brief Memory allocations functions ... incomplete-documentation
299415 
299416  These functions have been made public as part of the design, but they are suggested for internal use
299417  or by particularly knowledgable users for specialized tools or applications.
299418  */
299419  /* */
299420 
299431  virtual bool isInMemoryPool() override;
299432 
299443  virtual void checkDataMemberPointersIfInMemoryPool() override;
299444 
299445  // DQ (4/30/2006): Modified to be a const function.
299460  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
299461 
299471  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
299472 
299484  virtual long getChildIndex( SgNode* childNode ) const override;
299485 
299486  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
299487  // comment here (changed to be a C style comment and not be a doxygen comment).
299488  /* \brief Constructor for use by AST File I/O Mechanism
299489 
299490  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
299491  which obtained via fast binary file I/O from disk.
299492  */
299493  // SgVarArgEndOp( SgVarArgEndOpStorageClass& source );
299494 
299495 
299496 
299497 
299498 
299499  // JH (10/24/2005): methods added to support the ast file IO
299500  private:
299501 
299502  /* name AST Memory Allocation Support Functions
299503  \brief Memory allocations support....
299504 
299505  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
299506  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
299507  and support the AST File I/O Mechanism.
299508  */
299509  /* */
299510 
299511  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
299512  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
299513  that I use the same type everywhere, if any changes are made. THe second one declares the type
299514  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
299515  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
299516  a correspinding one in the AST_FILE_IO class!
299517  */
299518  // DQ (9/2/2015): This typedef is no longer used, we can't define the
299519  // comment here (changed to be a C style comment and not be a doxygen comment).
299520  /* \brief Typedef used for low level memory access.
299521  */
299522  // typedef unsigned char* TestType;
299523 
299524  // DQ (9/2/2015): This typedef is no longer used, we can't define the
299525  // comment here (changed to be a C style comment and not be a doxygen comment).
299526  /* \brief Typedef used to hold memory addresses as values.
299527  */
299528  // typedef unsigned long AddressType;
299529 
299530 
299531 
299532  // necessary, to have direct access to the p_freepointer and the private methods !
299534  friend class AST_FILE_IO;
299535 
299537  friend class SgVarArgEndOpStorageClass;
299538 
299540  friend class AstSpecificDataManagingClass;
299541 
299543  friend class AstSpecificDataManagingClassStorageClass;
299544 
299545  public:
299547  SgVarArgEndOp( const SgVarArgEndOpStorageClass& source );
299548 
299549  // private: // JJW hack
299550  /*
299551  name AST Memory Allocation Support Variables
299552  Memory allocations support variables
299553 
299554  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
299555  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
299556  and support the AST File I/O Mechanism.
299557  */
299558  /* */
299559 
299560  public:
299561 
299562  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
299563  // to current node (so that it will work cleanly with build functions to specify patterns).
299564  // virtual SgNode* addRegExpAttribute();
299570  SgVarArgEndOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
299571 
299572 // *** COMMON CODE SECTION ENDS HERE ***
299573 
299574 
299575 // End of memberFunctionString
299576 // Start of memberFunctionString
299577 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
299578 
299579  // the generated cast function
299580  // friend ROSE_DLL_API SgVarArgEndOp* isSgVarArgEndOp ( SgNode* s );
299581 
299582  typedef SgExpression base_node_type;
299583 
299584 
299585 // End of memberFunctionString
299586 // Start of memberFunctionString
299587 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
299588 
299589  SgType* get_type() const override;
299590 
299591 
299592 // End of memberFunctionString
299593 // Start of memberFunctionString
299594 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
299595 
299596  void post_construction_initialization() override;
299597 
299598 
299599 // End of memberFunctionString
299600 
299601  public:
299602  SgExpression* get_operand_expr() const;
299603  void set_operand_expr(SgExpression* operand_expr);
299604 
299605  public:
299606  SgType* get_expression_type() const;
299607  void set_expression_type(SgType* expression_type);
299608 
299609 
299610  public:
299611  virtual ~SgVarArgEndOp();
299612 
299613 
299614  public:
299615  SgVarArgEndOp(Sg_File_Info* startOfConstruct , SgExpression* operand_expr = NULL, SgType* expression_type = NULL);
299616  SgVarArgEndOp(SgExpression* operand_expr, SgType* expression_type);
299617 
299618  protected:
299619 // Start of memberFunctionString
299620 SgExpression* p_operand_expr;
299621 
299622 // End of memberFunctionString
299623 // Start of memberFunctionString
299624 SgType* p_expression_type;
299625 
299626 // End of memberFunctionString
299627 
299628 
299629 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
299630 
299631 
299632  };
299633 #endif
299634 
299635 // postdeclarations for SgVarArgEndOp
299636 
299637 /* #line 299638 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
299638 
299639 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
299640 
299641 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
299642 
299643 
299644 /* #line 299645 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
299645 
299646 
299647 
299648 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
299649 
299650 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
299651 // This code is automatically generated for each
299652 // terminal and non-terminal within the defined
299653 // grammar. There is a simple way to change the
299654 // code to fix bugs etc. See the ROSE README file
299655 // for directions.
299656 
299657 // tps: (02/22/2010): Adding DLL export requirements
299658 #include "rosedll.h"
299659 
299660 // predeclarations for SgVarArgCopyOp
299661 
299662 /* #line 299663 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
299663 
299664 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
299665 
299666 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
299667 
299668 #if 1
299669 // Class Definition for SgVarArgCopyOp
299670 class ROSE_DLL_API SgVarArgCopyOp : public SgExpression
299671  {
299672  public:
299673 
299674 
299675 /* #line 299676 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
299676 
299677  virtual SgNode* copy ( SgCopyHelp& help) const override;
299678 // Start of memberFunctionString
299679 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
299680 
299681 // *** COMMON CODE SECTION BEGINS HERE ***
299682 
299683  public:
299684 
299685  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
299686  // and not required which is required to match the other aspects of the copy mechanism code generation.
299687  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
299688  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
299689  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
299690  // virtual SgNode* copy ( const SgCopyHelp & help) const;
299691 
299693  virtual std::string class_name() const override;
299694 
299696  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
299697 
299699  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
299700  // static const VariantT static_variant = V_SgVarArgCopyOp;
299701  enum { static_variant = V_SgVarArgCopyOp };
299702 
299703  /* the generated cast function */
299705  ROSE_DLL_API friend SgVarArgCopyOp* isSgVarArgCopyOp( SgNode * s );
299706 
299708  ROSE_DLL_API friend const SgVarArgCopyOp* isSgVarArgCopyOp( const SgNode * s );
299709 
299710  // ******************************************
299711  // * Memory Pool / New / Delete
299712  // ******************************************
299713 
299714  public:
299716  static const unsigned pool_size; //
299718  static std::vector<unsigned char *> pools; //
299720  static SgVarArgCopyOp * next_node; //
299721 
299723  static unsigned long initializeStorageClassArray(SgVarArgCopyOpStorageClass *); //
299724 
299726  static void clearMemoryPool(); //
299727  static void deleteMemoryPool(); //
299728 
299730  static void extendMemoryPoolForFileIO(); //
299731 
299733  static SgVarArgCopyOp * getPointerFromGlobalIndex(unsigned long); //
299735  static SgVarArgCopyOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
299736 
299738  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
299740  static void resetValidFreepointers(); //
299742  static unsigned long getNumberOfLastValidPointer(); //
299743 
299744 
299745 #if defined(INLINE_FUNCTIONS)
299746 
299747  inline void *operator new (size_t size);
299748 #else
299749 
299750  void *operator new (size_t size);
299751 #endif
299752 
299753  void operator delete (void* pointer, size_t size);
299754 
299755  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
299756  void operator delete (void* pointer)
299757  {
299758  // This is the generated delete operator...
299759  SgVarArgCopyOp::operator delete (pointer,sizeof(SgVarArgCopyOp));
299760  }
299761 
299763  static size_t numberOfNodes();
299764 
299766  static size_t memoryUsage();
299767 
299768  // End of scope which started in IR nodes specific code
299769  /* */
299770 
299771  /* name Internal Functions
299772  \brief Internal functions ... incomplete-documentation
299773 
299774  These functions have been made public as part of the design, but they are suggested for internal use
299775  or by particularly knowledgeable users for specialized tools or applications.
299776 
299777  \internal We could not make these private because they are required by user for special purposes. And
299778  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
299779 
299780  */
299781 
299782  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
299783  // overridden in every class by *generated* implementation
299785  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
299786  // MS: 06/28/02 container of names of variables or container indices
299787  // used used in the traversal to access AST successor nodes
299788  // overridden in every class by *generated* implementation
299791  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
299792 
299793  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
299794  // than all the vector copies. The implementation for these functions is generated for each class.
299796  virtual size_t get_numberOfTraversalSuccessors() override;
299798  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
299800  virtual size_t get_childIndex(SgNode *child) override;
299801 
299802 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
299803  // MS: 08/16/2002 method for generating RTI information
299805  virtual RTIReturnType roseRTI() override;
299806 #endif
299807  /* */
299808 
299809 
299810 
299811  /* name Deprecated Functions
299812  \brief Deprecated functions ... incomplete-documentation
299813 
299814  These functions have been deprecated from use.
299815  */
299816  /* */
299817 
299819  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
299820 
299821  // JJW (10/16/2008): Changed to a single function in Node.code, and put
299822  // getVariant() in #if 0 block to prevent confusing Doxygen
299823 #if 0
299824 
299825  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
299827  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
299828 #endif
299829  /* */
299830 
299831 
299832 
299833 
299834  public:
299835  /* name Traversal Support Functions
299836  \brief Traversal support functions ... incomplete-documentation
299837 
299838  These functions have been made public as part of the design, but they are suggested for internal use
299839  or by particularly knowledgable users for specialized tools or applications.
299840  */
299841  /* */
299842 
299843  // DQ (11/26/2005): Support for visitor pattern mechanims
299844  // (inferior to ROSE traversal mechanism, experimental).
299848 
299849  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
299851  virtual void accept (ROSE_VisitorPattern & visitor) override;
299852 
299853  // DQ (12/26/2005): Support for traversal based on the memory pool
299856  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
299857 
299860  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
299861 
299862  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
299863  // This traversal helps support internal tools that call static member functions.
299864  // note: this function operates on the memory pools.
299867  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
299868  /* */
299869 
299870 
299871  public:
299872  /* name Memory Allocation Functions
299873  \brief Memory allocations functions ... incomplete-documentation
299874 
299875  These functions have been made public as part of the design, but they are suggested for internal use
299876  or by particularly knowledgable users for specialized tools or applications.
299877  */
299878  /* */
299879 
299890  virtual bool isInMemoryPool() override;
299891 
299902  virtual void checkDataMemberPointersIfInMemoryPool() override;
299903 
299904  // DQ (4/30/2006): Modified to be a const function.
299919  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
299920 
299930  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
299931 
299943  virtual long getChildIndex( SgNode* childNode ) const override;
299944 
299945  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
299946  // comment here (changed to be a C style comment and not be a doxygen comment).
299947  /* \brief Constructor for use by AST File I/O Mechanism
299948 
299949  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
299950  which obtained via fast binary file I/O from disk.
299951  */
299952  // SgVarArgCopyOp( SgVarArgCopyOpStorageClass& source );
299953 
299954 
299955 
299956 
299957 
299958  // JH (10/24/2005): methods added to support the ast file IO
299959  private:
299960 
299961  /* name AST Memory Allocation Support Functions
299962  \brief Memory allocations support....
299963 
299964  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
299965  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
299966  and support the AST File I/O Mechanism.
299967  */
299968  /* */
299969 
299970  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
299971  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
299972  that I use the same type everywhere, if any changes are made. THe second one declares the type
299973  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
299974  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
299975  a correspinding one in the AST_FILE_IO class!
299976  */
299977  // DQ (9/2/2015): This typedef is no longer used, we can't define the
299978  // comment here (changed to be a C style comment and not be a doxygen comment).
299979  /* \brief Typedef used for low level memory access.
299980  */
299981  // typedef unsigned char* TestType;
299982 
299983  // DQ (9/2/2015): This typedef is no longer used, we can't define the
299984  // comment here (changed to be a C style comment and not be a doxygen comment).
299985  /* \brief Typedef used to hold memory addresses as values.
299986  */
299987  // typedef unsigned long AddressType;
299988 
299989 
299990 
299991  // necessary, to have direct access to the p_freepointer and the private methods !
299993  friend class AST_FILE_IO;
299994 
299996  friend class SgVarArgCopyOpStorageClass;
299997 
299999  friend class AstSpecificDataManagingClass;
300000 
300002  friend class AstSpecificDataManagingClassStorageClass;
300003 
300004  public:
300006  SgVarArgCopyOp( const SgVarArgCopyOpStorageClass& source );
300007 
300008  // private: // JJW hack
300009  /*
300010  name AST Memory Allocation Support Variables
300011  Memory allocations support variables
300012 
300013  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
300014  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
300015  and support the AST File I/O Mechanism.
300016  */
300017  /* */
300018 
300019  public:
300020 
300021  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
300022  // to current node (so that it will work cleanly with build functions to specify patterns).
300023  // virtual SgNode* addRegExpAttribute();
300030 
300031 // *** COMMON CODE SECTION ENDS HERE ***
300032 
300033 
300034 // End of memberFunctionString
300035 // Start of memberFunctionString
300036 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
300037 
300038  // the generated cast function
300039  // friend ROSE_DLL_API SgVarArgCopyOp* isSgVarArgCopyOp ( SgNode* s );
300040 
300041  typedef SgExpression base_node_type;
300042 
300043 
300044 // End of memberFunctionString
300045 // Start of memberFunctionString
300046 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
300047 
300048  SgType* get_type() const override;
300049 
300050 
300051 // End of memberFunctionString
300052 // Start of memberFunctionString
300053 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
300054 
300055  void post_construction_initialization() override;
300056 
300057 
300058 // End of memberFunctionString
300059 
300060  public:
300061  SgExpression* get_lhs_operand() const;
300062  void set_lhs_operand(SgExpression* lhs_operand);
300063 
300064  public:
300065  SgExpression* get_rhs_operand() const;
300066  void set_rhs_operand(SgExpression* rhs_operand);
300067 
300068  public:
300069  SgType* get_expression_type() const;
300070  void set_expression_type(SgType* expression_type);
300071 
300072 
300073  public:
300074  virtual ~SgVarArgCopyOp();
300075 
300076 
300077  public:
300078  SgVarArgCopyOp(Sg_File_Info* startOfConstruct , SgExpression* lhs_operand = NULL, SgExpression* rhs_operand = NULL, SgType* expression_type = NULL);
300079  SgVarArgCopyOp(SgExpression* lhs_operand, SgExpression* rhs_operand, SgType* expression_type);
300080 
300081  protected:
300082 // Start of memberFunctionString
300083 SgExpression* p_lhs_operand;
300084 
300085 // End of memberFunctionString
300086 // Start of memberFunctionString
300087 SgExpression* p_rhs_operand;
300088 
300089 // End of memberFunctionString
300090 // Start of memberFunctionString
300091 SgType* p_expression_type;
300092 
300093 // End of memberFunctionString
300094 
300095 
300096 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
300097 
300098 
300099  };
300100 #endif
300101 
300102 // postdeclarations for SgVarArgCopyOp
300103 
300104 /* #line 300105 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
300105 
300106 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
300107 
300108 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
300109 
300110 
300111 /* #line 300112 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
300112 
300113 
300114 
300115 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
300116 
300117 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
300118 // This code is automatically generated for each
300119 // terminal and non-terminal within the defined
300120 // grammar. There is a simple way to change the
300121 // code to fix bugs etc. See the ROSE README file
300122 // for directions.
300123 
300124 // tps: (02/22/2010): Adding DLL export requirements
300125 #include "rosedll.h"
300126 
300127 // predeclarations for SgVarArgStartOneOperandOp
300128 
300129 /* #line 300130 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
300130 
300131 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
300132 
300133 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
300134 
300135 #if 1
300136 // Class Definition for SgVarArgStartOneOperandOp
300137 class ROSE_DLL_API SgVarArgStartOneOperandOp : public SgExpression
300138  {
300139  public:
300140 
300141 
300142 /* #line 300143 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
300143 
300144  virtual SgNode* copy ( SgCopyHelp& help) const override;
300145 // Start of memberFunctionString
300146 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
300147 
300148 // *** COMMON CODE SECTION BEGINS HERE ***
300149 
300150  public:
300151 
300152  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
300153  // and not required which is required to match the other aspects of the copy mechanism code generation.
300154  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
300155  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
300156  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
300157  // virtual SgNode* copy ( const SgCopyHelp & help) const;
300158 
300160  virtual std::string class_name() const override;
300161 
300163  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
300164 
300166  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
300167  // static const VariantT static_variant = V_SgVarArgStartOneOperandOp;
300168  enum { static_variant = V_SgVarArgStartOneOperandOp };
300169 
300170  /* the generated cast function */
300172  ROSE_DLL_API friend SgVarArgStartOneOperandOp* isSgVarArgStartOneOperandOp( SgNode * s );
300173 
300175  ROSE_DLL_API friend const SgVarArgStartOneOperandOp* isSgVarArgStartOneOperandOp( const SgNode * s );
300176 
300177  // ******************************************
300178  // * Memory Pool / New / Delete
300179  // ******************************************
300180 
300181  public:
300183  static const unsigned pool_size; //
300185  static std::vector<unsigned char *> pools; //
300187  static SgVarArgStartOneOperandOp * next_node; //
300188 
300190  static unsigned long initializeStorageClassArray(SgVarArgStartOneOperandOpStorageClass *); //
300191 
300193  static void clearMemoryPool(); //
300194  static void deleteMemoryPool(); //
300195 
300197  static void extendMemoryPoolForFileIO(); //
300198 
300200  static SgVarArgStartOneOperandOp * getPointerFromGlobalIndex(unsigned long); //
300202  static SgVarArgStartOneOperandOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
300203 
300205  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
300207  static void resetValidFreepointers(); //
300209  static unsigned long getNumberOfLastValidPointer(); //
300210 
300211 
300212 #if defined(INLINE_FUNCTIONS)
300213 
300214  inline void *operator new (size_t size);
300215 #else
300216 
300217  void *operator new (size_t size);
300218 #endif
300219 
300220  void operator delete (void* pointer, size_t size);
300221 
300222  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
300223  void operator delete (void* pointer)
300224  {
300225  // This is the generated delete operator...
300226  SgVarArgStartOneOperandOp::operator delete (pointer,sizeof(SgVarArgStartOneOperandOp));
300227  }
300228 
300230  static size_t numberOfNodes();
300231 
300233  static size_t memoryUsage();
300234 
300235  // End of scope which started in IR nodes specific code
300236  /* */
300237 
300238  /* name Internal Functions
300239  \brief Internal functions ... incomplete-documentation
300240 
300241  These functions have been made public as part of the design, but they are suggested for internal use
300242  or by particularly knowledgeable users for specialized tools or applications.
300243 
300244  \internal We could not make these private because they are required by user for special purposes. And
300245  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
300246 
300247  */
300248 
300249  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
300250  // overridden in every class by *generated* implementation
300252  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
300253  // MS: 06/28/02 container of names of variables or container indices
300254  // used used in the traversal to access AST successor nodes
300255  // overridden in every class by *generated* implementation
300258  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
300259 
300260  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
300261  // than all the vector copies. The implementation for these functions is generated for each class.
300263  virtual size_t get_numberOfTraversalSuccessors() override;
300265  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
300267  virtual size_t get_childIndex(SgNode *child) override;
300268 
300269 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
300270  // MS: 08/16/2002 method for generating RTI information
300272  virtual RTIReturnType roseRTI() override;
300273 #endif
300274  /* */
300275 
300276 
300277 
300278  /* name Deprecated Functions
300279  \brief Deprecated functions ... incomplete-documentation
300280 
300281  These functions have been deprecated from use.
300282  */
300283  /* */
300284 
300286  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
300287 
300288  // JJW (10/16/2008): Changed to a single function in Node.code, and put
300289  // getVariant() in #if 0 block to prevent confusing Doxygen
300290 #if 0
300291 
300292  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
300294  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
300295 #endif
300296  /* */
300297 
300298 
300299 
300300 
300301  public:
300302  /* name Traversal Support Functions
300303  \brief Traversal support functions ... incomplete-documentation
300304 
300305  These functions have been made public as part of the design, but they are suggested for internal use
300306  or by particularly knowledgable users for specialized tools or applications.
300307  */
300308  /* */
300309 
300310  // DQ (11/26/2005): Support for visitor pattern mechanims
300311  // (inferior to ROSE traversal mechanism, experimental).
300315 
300316  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
300318  virtual void accept (ROSE_VisitorPattern & visitor) override;
300319 
300320  // DQ (12/26/2005): Support for traversal based on the memory pool
300323  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
300324 
300327  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
300328 
300329  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
300330  // This traversal helps support internal tools that call static member functions.
300331  // note: this function operates on the memory pools.
300334  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
300335  /* */
300336 
300337 
300338  public:
300339  /* name Memory Allocation Functions
300340  \brief Memory allocations functions ... incomplete-documentation
300341 
300342  These functions have been made public as part of the design, but they are suggested for internal use
300343  or by particularly knowledgable users for specialized tools or applications.
300344  */
300345  /* */
300346 
300357  virtual bool isInMemoryPool() override;
300358 
300369  virtual void checkDataMemberPointersIfInMemoryPool() override;
300370 
300371  // DQ (4/30/2006): Modified to be a const function.
300386  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
300387 
300397  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
300398 
300410  virtual long getChildIndex( SgNode* childNode ) const override;
300411 
300412  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
300413  // comment here (changed to be a C style comment and not be a doxygen comment).
300414  /* \brief Constructor for use by AST File I/O Mechanism
300415 
300416  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
300417  which obtained via fast binary file I/O from disk.
300418  */
300419  // SgVarArgStartOneOperandOp( SgVarArgStartOneOperandOpStorageClass& source );
300420 
300421 
300422 
300423 
300424 
300425  // JH (10/24/2005): methods added to support the ast file IO
300426  private:
300427 
300428  /* name AST Memory Allocation Support Functions
300429  \brief Memory allocations support....
300430 
300431  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
300432  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
300433  and support the AST File I/O Mechanism.
300434  */
300435  /* */
300436 
300437  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
300438  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
300439  that I use the same type everywhere, if any changes are made. THe second one declares the type
300440  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
300441  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
300442  a correspinding one in the AST_FILE_IO class!
300443  */
300444  // DQ (9/2/2015): This typedef is no longer used, we can't define the
300445  // comment here (changed to be a C style comment and not be a doxygen comment).
300446  /* \brief Typedef used for low level memory access.
300447  */
300448  // typedef unsigned char* TestType;
300449 
300450  // DQ (9/2/2015): This typedef is no longer used, we can't define the
300451  // comment here (changed to be a C style comment and not be a doxygen comment).
300452  /* \brief Typedef used to hold memory addresses as values.
300453  */
300454  // typedef unsigned long AddressType;
300455 
300456 
300457 
300458  // necessary, to have direct access to the p_freepointer and the private methods !
300460  friend class AST_FILE_IO;
300461 
300463  friend class SgVarArgStartOneOperandOpStorageClass;
300464 
300466  friend class AstSpecificDataManagingClass;
300467 
300469  friend class AstSpecificDataManagingClassStorageClass;
300470 
300471  public:
300473  SgVarArgStartOneOperandOp( const SgVarArgStartOneOperandOpStorageClass& source );
300474 
300475  // private: // JJW hack
300476  /*
300477  name AST Memory Allocation Support Variables
300478  Memory allocations support variables
300479 
300480  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
300481  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
300482  and support the AST File I/O Mechanism.
300483  */
300484  /* */
300485 
300486  public:
300487 
300488  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
300489  // to current node (so that it will work cleanly with build functions to specify patterns).
300490  // virtual SgNode* addRegExpAttribute();
300497 
300498 // *** COMMON CODE SECTION ENDS HERE ***
300499 
300500 
300501 // End of memberFunctionString
300502 // Start of memberFunctionString
300503 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
300504 
300505  // the generated cast function
300506  // friend ROSE_DLL_API SgVarArgStartOneOperandOp* isSgVarArgStartOneOperandOp ( SgNode* s );
300507 
300508  typedef SgExpression base_node_type;
300509 
300510 
300511 // End of memberFunctionString
300512 // Start of memberFunctionString
300513 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
300514 
300515  SgType* get_type() const override;
300516 
300517 
300518 // End of memberFunctionString
300519 // Start of memberFunctionString
300520 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
300521 
300522  void post_construction_initialization() override;
300523 
300524 
300525 // End of memberFunctionString
300526 
300527  public:
300528  SgExpression* get_operand_expr() const;
300529  void set_operand_expr(SgExpression* operand_expr);
300530 
300531  public:
300532  SgType* get_expression_type() const;
300533  void set_expression_type(SgType* expression_type);
300534 
300535 
300536  public:
300537  virtual ~SgVarArgStartOneOperandOp();
300538 
300539 
300540  public:
300541  SgVarArgStartOneOperandOp(Sg_File_Info* startOfConstruct , SgExpression* operand_expr = NULL, SgType* expression_type = NULL);
300542  SgVarArgStartOneOperandOp(SgExpression* operand_expr, SgType* expression_type);
300543 
300544  protected:
300545 // Start of memberFunctionString
300546 SgExpression* p_operand_expr;
300547 
300548 // End of memberFunctionString
300549 // Start of memberFunctionString
300550 SgType* p_expression_type;
300551 
300552 // End of memberFunctionString
300553 
300554 
300555 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
300556 
300557 
300558  };
300559 #endif
300560 
300561 // postdeclarations for SgVarArgStartOneOperandOp
300562 
300563 /* #line 300564 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
300564 
300565 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
300566 
300567 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
300568 
300569 
300570 /* #line 300571 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
300571 
300572 
300573 
300574 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
300575 
300576 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
300577 // This code is automatically generated for each
300578 // terminal and non-terminal within the defined
300579 // grammar. There is a simple way to change the
300580 // code to fix bugs etc. See the ROSE README file
300581 // for directions.
300582 
300583 // tps: (02/22/2010): Adding DLL export requirements
300584 #include "rosedll.h"
300585 
300586 // predeclarations for SgNullExpression
300587 
300588 /* #line 300589 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
300589 
300590 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
300591 
300592 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
300593 
300594 #if 1
300595 // Class Definition for SgNullExpression
300596 class ROSE_DLL_API SgNullExpression : public SgExpression
300597  {
300598  public:
300599 
300600 
300601 /* #line 300602 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
300602 
300603  virtual SgNode* copy ( SgCopyHelp& help) const override;
300604 // Start of memberFunctionString
300605 /* #line 1630 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
300606 
300607 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
300608  virtual unsigned int cfgIndexForEnd() const override;
300609  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
300610  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
300611 #endif
300612 
300613 
300614 
300615 // End of memberFunctionString
300616 // Start of memberFunctionString
300617 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
300618 
300619 // *** COMMON CODE SECTION BEGINS HERE ***
300620 
300621  public:
300622 
300623  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
300624  // and not required which is required to match the other aspects of the copy mechanism code generation.
300625  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
300626  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
300627  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
300628  // virtual SgNode* copy ( const SgCopyHelp & help) const;
300629 
300631  virtual std::string class_name() const override;
300632 
300634  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
300635 
300637  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
300638  // static const VariantT static_variant = V_SgNullExpression;
300639  enum { static_variant = V_SgNullExpression };
300640 
300641  /* the generated cast function */
300643  ROSE_DLL_API friend SgNullExpression* isSgNullExpression( SgNode * s );
300644 
300646  ROSE_DLL_API friend const SgNullExpression* isSgNullExpression( const SgNode * s );
300647 
300648  // ******************************************
300649  // * Memory Pool / New / Delete
300650  // ******************************************
300651 
300652  public:
300654  static const unsigned pool_size; //
300656  static std::vector<unsigned char *> pools; //
300658  static SgNullExpression * next_node; //
300659 
300661  static unsigned long initializeStorageClassArray(SgNullExpressionStorageClass *); //
300662 
300664  static void clearMemoryPool(); //
300665  static void deleteMemoryPool(); //
300666 
300668  static void extendMemoryPoolForFileIO(); //
300669 
300671  static SgNullExpression * getPointerFromGlobalIndex(unsigned long); //
300673  static SgNullExpression * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
300674 
300676  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
300678  static void resetValidFreepointers(); //
300680  static unsigned long getNumberOfLastValidPointer(); //
300681 
300682 
300683 #if defined(INLINE_FUNCTIONS)
300684 
300685  inline void *operator new (size_t size);
300686 #else
300687 
300688  void *operator new (size_t size);
300689 #endif
300690 
300691  void operator delete (void* pointer, size_t size);
300692 
300693  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
300694  void operator delete (void* pointer)
300695  {
300696  // This is the generated delete operator...
300697  SgNullExpression::operator delete (pointer,sizeof(SgNullExpression));
300698  }
300699 
300701  static size_t numberOfNodes();
300702 
300704  static size_t memoryUsage();
300705 
300706  // End of scope which started in IR nodes specific code
300707  /* */
300708 
300709  /* name Internal Functions
300710  \brief Internal functions ... incomplete-documentation
300711 
300712  These functions have been made public as part of the design, but they are suggested for internal use
300713  or by particularly knowledgeable users for specialized tools or applications.
300714 
300715  \internal We could not make these private because they are required by user for special purposes. And
300716  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
300717 
300718  */
300719 
300720  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
300721  // overridden in every class by *generated* implementation
300723  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
300724  // MS: 06/28/02 container of names of variables or container indices
300725  // used used in the traversal to access AST successor nodes
300726  // overridden in every class by *generated* implementation
300729  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
300730 
300731  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
300732  // than all the vector copies. The implementation for these functions is generated for each class.
300734  virtual size_t get_numberOfTraversalSuccessors() override;
300736  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
300738  virtual size_t get_childIndex(SgNode *child) override;
300739 
300740 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
300741  // MS: 08/16/2002 method for generating RTI information
300743  virtual RTIReturnType roseRTI() override;
300744 #endif
300745  /* */
300746 
300747 
300748 
300749  /* name Deprecated Functions
300750  \brief Deprecated functions ... incomplete-documentation
300751 
300752  These functions have been deprecated from use.
300753  */
300754  /* */
300755 
300757  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
300758 
300759  // JJW (10/16/2008): Changed to a single function in Node.code, and put
300760  // getVariant() in #if 0 block to prevent confusing Doxygen
300761 #if 0
300762 
300763  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
300765  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
300766 #endif
300767  /* */
300768 
300769 
300770 
300771 
300772  public:
300773  /* name Traversal Support Functions
300774  \brief Traversal support functions ... incomplete-documentation
300775 
300776  These functions have been made public as part of the design, but they are suggested for internal use
300777  or by particularly knowledgable users for specialized tools or applications.
300778  */
300779  /* */
300780 
300781  // DQ (11/26/2005): Support for visitor pattern mechanims
300782  // (inferior to ROSE traversal mechanism, experimental).
300786 
300787  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
300789  virtual void accept (ROSE_VisitorPattern & visitor) override;
300790 
300791  // DQ (12/26/2005): Support for traversal based on the memory pool
300794  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
300795 
300798  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
300799 
300800  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
300801  // This traversal helps support internal tools that call static member functions.
300802  // note: this function operates on the memory pools.
300805  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
300806  /* */
300807 
300808 
300809  public:
300810  /* name Memory Allocation Functions
300811  \brief Memory allocations functions ... incomplete-documentation
300812 
300813  These functions have been made public as part of the design, but they are suggested for internal use
300814  or by particularly knowledgable users for specialized tools or applications.
300815  */
300816  /* */
300817 
300828  virtual bool isInMemoryPool() override;
300829 
300840  virtual void checkDataMemberPointersIfInMemoryPool() override;
300841 
300842  // DQ (4/30/2006): Modified to be a const function.
300857  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
300858 
300868  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
300869 
300881  virtual long getChildIndex( SgNode* childNode ) const override;
300882 
300883  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
300884  // comment here (changed to be a C style comment and not be a doxygen comment).
300885  /* \brief Constructor for use by AST File I/O Mechanism
300886 
300887  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
300888  which obtained via fast binary file I/O from disk.
300889  */
300890  // SgNullExpression( SgNullExpressionStorageClass& source );
300891 
300892 
300893 
300894 
300895 
300896  // JH (10/24/2005): methods added to support the ast file IO
300897  private:
300898 
300899  /* name AST Memory Allocation Support Functions
300900  \brief Memory allocations support....
300901 
300902  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
300903  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
300904  and support the AST File I/O Mechanism.
300905  */
300906  /* */
300907 
300908  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
300909  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
300910  that I use the same type everywhere, if any changes are made. THe second one declares the type
300911  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
300912  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
300913  a correspinding one in the AST_FILE_IO class!
300914  */
300915  // DQ (9/2/2015): This typedef is no longer used, we can't define the
300916  // comment here (changed to be a C style comment and not be a doxygen comment).
300917  /* \brief Typedef used for low level memory access.
300918  */
300919  // typedef unsigned char* TestType;
300920 
300921  // DQ (9/2/2015): This typedef is no longer used, we can't define the
300922  // comment here (changed to be a C style comment and not be a doxygen comment).
300923  /* \brief Typedef used to hold memory addresses as values.
300924  */
300925  // typedef unsigned long AddressType;
300926 
300927 
300928 
300929  // necessary, to have direct access to the p_freepointer and the private methods !
300931  friend class AST_FILE_IO;
300932 
300934  friend class SgNullExpressionStorageClass;
300935 
300937  friend class AstSpecificDataManagingClass;
300938 
300940  friend class AstSpecificDataManagingClassStorageClass;
300941 
300942  public:
300944  SgNullExpression( const SgNullExpressionStorageClass& source );
300945 
300946  // private: // JJW hack
300947  /*
300948  name AST Memory Allocation Support Variables
300949  Memory allocations support variables
300950 
300951  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
300952  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
300953  and support the AST File I/O Mechanism.
300954  */
300955  /* */
300956 
300957  public:
300958 
300959  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
300960  // to current node (so that it will work cleanly with build functions to specify patterns).
300961  // virtual SgNode* addRegExpAttribute();
300968 
300969 // *** COMMON CODE SECTION ENDS HERE ***
300970 
300971 
300972 // End of memberFunctionString
300973 // Start of memberFunctionString
300974 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
300975 
300976  // the generated cast function
300977  // friend ROSE_DLL_API SgNullExpression* isSgNullExpression ( SgNode* s );
300978 
300979  typedef SgExpression base_node_type;
300980 
300981 
300982 // End of memberFunctionString
300983 // Start of memberFunctionString
300984 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
300985 
300986  SgType* get_type() const override;
300987 
300988 
300989 // End of memberFunctionString
300990 // Start of memberFunctionString
300991 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
300992 
300993  void post_construction_initialization() override;
300994 
300995 
300996 // End of memberFunctionString
300997 
300998 
300999  public:
301000  virtual ~SgNullExpression();
301001 
301002 
301003  public:
301004  SgNullExpression(Sg_File_Info* startOfConstruct );
301005  SgNullExpression();
301006 
301007  protected:
301008 
301009 
301010 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
301011 
301012 
301013  };
301014 #endif
301015 
301016 // postdeclarations for SgNullExpression
301017 
301018 /* #line 301019 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
301019 
301020 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
301021 
301022 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
301023 
301024 
301025 /* #line 301026 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
301026 
301027 
301028 
301029 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
301030 
301031 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
301032 // This code is automatically generated for each
301033 // terminal and non-terminal within the defined
301034 // grammar. There is a simple way to change the
301035 // code to fix bugs etc. See the ROSE README file
301036 // for directions.
301037 
301038 // tps: (02/22/2010): Adding DLL export requirements
301039 #include "rosedll.h"
301040 
301041 // predeclarations for SgVariantExpression
301042 
301043 /* #line 301044 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
301044 
301045 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
301046 
301047 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
301048 
301049 #if 1
301050 // Class Definition for SgVariantExpression
301051 class ROSE_DLL_API SgVariantExpression : public SgExpression
301052  {
301053  public:
301054 
301055 
301056 /* #line 301057 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
301057 
301058  virtual SgNode* copy ( SgCopyHelp& help) const override;
301059 // Start of memberFunctionString
301060 /* #line 1640 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
301061 
301062 
301063 
301064 // End of memberFunctionString
301065 // Start of memberFunctionString
301066 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
301067 
301068 // *** COMMON CODE SECTION BEGINS HERE ***
301069 
301070  public:
301071 
301072  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
301073  // and not required which is required to match the other aspects of the copy mechanism code generation.
301074  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
301075  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
301076  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
301077  // virtual SgNode* copy ( const SgCopyHelp & help) const;
301078 
301080  virtual std::string class_name() const override;
301081 
301083  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
301084 
301086  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
301087  // static const VariantT static_variant = V_SgVariantExpression;
301088  enum { static_variant = V_SgVariantExpression };
301089 
301090  /* the generated cast function */
301092  ROSE_DLL_API friend SgVariantExpression* isSgVariantExpression( SgNode * s );
301093 
301095  ROSE_DLL_API friend const SgVariantExpression* isSgVariantExpression( const SgNode * s );
301096 
301097  // ******************************************
301098  // * Memory Pool / New / Delete
301099  // ******************************************
301100 
301101  public:
301103  static const unsigned pool_size; //
301105  static std::vector<unsigned char *> pools; //
301107  static SgVariantExpression * next_node; //
301108 
301110  static unsigned long initializeStorageClassArray(SgVariantExpressionStorageClass *); //
301111 
301113  static void clearMemoryPool(); //
301114  static void deleteMemoryPool(); //
301115 
301117  static void extendMemoryPoolForFileIO(); //
301118 
301120  static SgVariantExpression * getPointerFromGlobalIndex(unsigned long); //
301122  static SgVariantExpression * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
301123 
301125  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
301127  static void resetValidFreepointers(); //
301129  static unsigned long getNumberOfLastValidPointer(); //
301130 
301131 
301132 #if defined(INLINE_FUNCTIONS)
301133 
301134  inline void *operator new (size_t size);
301135 #else
301136 
301137  void *operator new (size_t size);
301138 #endif
301139 
301140  void operator delete (void* pointer, size_t size);
301141 
301142  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
301143  void operator delete (void* pointer)
301144  {
301145  // This is the generated delete operator...
301146  SgVariantExpression::operator delete (pointer,sizeof(SgVariantExpression));
301147  }
301148 
301150  static size_t numberOfNodes();
301151 
301153  static size_t memoryUsage();
301154 
301155  // End of scope which started in IR nodes specific code
301156  /* */
301157 
301158  /* name Internal Functions
301159  \brief Internal functions ... incomplete-documentation
301160 
301161  These functions have been made public as part of the design, but they are suggested for internal use
301162  or by particularly knowledgeable users for specialized tools or applications.
301163 
301164  \internal We could not make these private because they are required by user for special purposes. And
301165  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
301166 
301167  */
301168 
301169  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
301170  // overridden in every class by *generated* implementation
301172  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
301173  // MS: 06/28/02 container of names of variables or container indices
301174  // used used in the traversal to access AST successor nodes
301175  // overridden in every class by *generated* implementation
301178  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
301179 
301180  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
301181  // than all the vector copies. The implementation for these functions is generated for each class.
301183  virtual size_t get_numberOfTraversalSuccessors() override;
301185  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
301187  virtual size_t get_childIndex(SgNode *child) override;
301188 
301189 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
301190  // MS: 08/16/2002 method for generating RTI information
301192  virtual RTIReturnType roseRTI() override;
301193 #endif
301194  /* */
301195 
301196 
301197 
301198  /* name Deprecated Functions
301199  \brief Deprecated functions ... incomplete-documentation
301200 
301201  These functions have been deprecated from use.
301202  */
301203  /* */
301204 
301206  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
301207 
301208  // JJW (10/16/2008): Changed to a single function in Node.code, and put
301209  // getVariant() in #if 0 block to prevent confusing Doxygen
301210 #if 0
301211 
301212  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
301214  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
301215 #endif
301216  /* */
301217 
301218 
301219 
301220 
301221  public:
301222  /* name Traversal Support Functions
301223  \brief Traversal support functions ... incomplete-documentation
301224 
301225  These functions have been made public as part of the design, but they are suggested for internal use
301226  or by particularly knowledgable users for specialized tools or applications.
301227  */
301228  /* */
301229 
301230  // DQ (11/26/2005): Support for visitor pattern mechanims
301231  // (inferior to ROSE traversal mechanism, experimental).
301235 
301236  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
301238  virtual void accept (ROSE_VisitorPattern & visitor) override;
301239 
301240  // DQ (12/26/2005): Support for traversal based on the memory pool
301243  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
301244 
301247  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
301248 
301249  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
301250  // This traversal helps support internal tools that call static member functions.
301251  // note: this function operates on the memory pools.
301254  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
301255  /* */
301256 
301257 
301258  public:
301259  /* name Memory Allocation Functions
301260  \brief Memory allocations functions ... incomplete-documentation
301261 
301262  These functions have been made public as part of the design, but they are suggested for internal use
301263  or by particularly knowledgable users for specialized tools or applications.
301264  */
301265  /* */
301266 
301277  virtual bool isInMemoryPool() override;
301278 
301289  virtual void checkDataMemberPointersIfInMemoryPool() override;
301290 
301291  // DQ (4/30/2006): Modified to be a const function.
301306  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
301307 
301317  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
301318 
301330  virtual long getChildIndex( SgNode* childNode ) const override;
301331 
301332  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
301333  // comment here (changed to be a C style comment and not be a doxygen comment).
301334  /* \brief Constructor for use by AST File I/O Mechanism
301335 
301336  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
301337  which obtained via fast binary file I/O from disk.
301338  */
301339  // SgVariantExpression( SgVariantExpressionStorageClass& source );
301340 
301341 
301342 
301343 
301344 
301345  // JH (10/24/2005): methods added to support the ast file IO
301346  private:
301347 
301348  /* name AST Memory Allocation Support Functions
301349  \brief Memory allocations support....
301350 
301351  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
301352  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
301353  and support the AST File I/O Mechanism.
301354  */
301355  /* */
301356 
301357  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
301358  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
301359  that I use the same type everywhere, if any changes are made. THe second one declares the type
301360  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
301361  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
301362  a correspinding one in the AST_FILE_IO class!
301363  */
301364  // DQ (9/2/2015): This typedef is no longer used, we can't define the
301365  // comment here (changed to be a C style comment and not be a doxygen comment).
301366  /* \brief Typedef used for low level memory access.
301367  */
301368  // typedef unsigned char* TestType;
301369 
301370  // DQ (9/2/2015): This typedef is no longer used, we can't define the
301371  // comment here (changed to be a C style comment and not be a doxygen comment).
301372  /* \brief Typedef used to hold memory addresses as values.
301373  */
301374  // typedef unsigned long AddressType;
301375 
301376 
301377 
301378  // necessary, to have direct access to the p_freepointer and the private methods !
301380  friend class AST_FILE_IO;
301381 
301383  friend class SgVariantExpressionStorageClass;
301384 
301386  friend class AstSpecificDataManagingClass;
301387 
301389  friend class AstSpecificDataManagingClassStorageClass;
301390 
301391  public:
301393  SgVariantExpression( const SgVariantExpressionStorageClass& source );
301394 
301395  // private: // JJW hack
301396  /*
301397  name AST Memory Allocation Support Variables
301398  Memory allocations support variables
301399 
301400  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
301401  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
301402  and support the AST File I/O Mechanism.
301403  */
301404  /* */
301405 
301406  public:
301407 
301408  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
301409  // to current node (so that it will work cleanly with build functions to specify patterns).
301410  // virtual SgNode* addRegExpAttribute();
301417 
301418 // *** COMMON CODE SECTION ENDS HERE ***
301419 
301420 
301421 // End of memberFunctionString
301422 // Start of memberFunctionString
301423 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
301424 
301425  // the generated cast function
301426  // friend ROSE_DLL_API SgVariantExpression* isSgVariantExpression ( SgNode* s );
301427 
301428  typedef SgExpression base_node_type;
301429 
301430 
301431 // End of memberFunctionString
301432 // Start of memberFunctionString
301433 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
301434 
301435  SgType* get_type() const override;
301436 
301437 
301438 // End of memberFunctionString
301439 // Start of memberFunctionString
301440 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
301441 
301442  void post_construction_initialization() override;
301443 
301444 
301445 // End of memberFunctionString
301446 
301447 
301448  public:
301449  virtual ~SgVariantExpression();
301450 
301451 
301452  public:
301453  SgVariantExpression(Sg_File_Info* startOfConstruct );
301454  SgVariantExpression();
301455 
301456  protected:
301457 
301458 
301459 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
301460 
301461 
301462  };
301463 #endif
301464 
301465 // postdeclarations for SgVariantExpression
301466 
301467 /* #line 301468 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
301468 
301469 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
301470 
301471 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
301472 
301473 
301474 /* #line 301475 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
301475 
301476 
301477 
301478 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
301479 
301480 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
301481 // This code is automatically generated for each
301482 // terminal and non-terminal within the defined
301483 // grammar. There is a simple way to change the
301484 // code to fix bugs etc. See the ROSE README file
301485 // for directions.
301486 
301487 // tps: (02/22/2010): Adding DLL export requirements
301488 #include "rosedll.h"
301489 
301490 // predeclarations for SgSubscriptExpression
301491 
301492 /* #line 301493 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
301493 
301494 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
301495 
301496 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
301497 
301498 #if 1
301499 // Class Definition for SgSubscriptExpression
301500 class ROSE_DLL_API SgSubscriptExpression : public SgExpression
301501  {
301502  public:
301503 
301504 
301505 /* #line 301506 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
301506 
301507  virtual SgNode* copy ( SgCopyHelp& help) const override;
301508 // Start of memberFunctionString
301509 /* #line 1767 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
301510 
301511 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
301512  virtual unsigned int cfgIndexForEnd() const override;
301513  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
301514  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
301515 #endif
301516 
301517 
301518 
301519 // End of memberFunctionString
301520 // Start of memberFunctionString
301521 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
301522 
301523 // *** COMMON CODE SECTION BEGINS HERE ***
301524 
301525  public:
301526 
301527  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
301528  // and not required which is required to match the other aspects of the copy mechanism code generation.
301529  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
301530  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
301531  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
301532  // virtual SgNode* copy ( const SgCopyHelp & help) const;
301533 
301535  virtual std::string class_name() const override;
301536 
301538  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
301539 
301541  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
301542  // static const VariantT static_variant = V_SgSubscriptExpression;
301543  enum { static_variant = V_SgSubscriptExpression };
301544 
301545  /* the generated cast function */
301547  ROSE_DLL_API friend SgSubscriptExpression* isSgSubscriptExpression( SgNode * s );
301548 
301550  ROSE_DLL_API friend const SgSubscriptExpression* isSgSubscriptExpression( const SgNode * s );
301551 
301552  // ******************************************
301553  // * Memory Pool / New / Delete
301554  // ******************************************
301555 
301556  public:
301558  static const unsigned pool_size; //
301560  static std::vector<unsigned char *> pools; //
301562  static SgSubscriptExpression * next_node; //
301563 
301565  static unsigned long initializeStorageClassArray(SgSubscriptExpressionStorageClass *); //
301566 
301568  static void clearMemoryPool(); //
301569  static void deleteMemoryPool(); //
301570 
301572  static void extendMemoryPoolForFileIO(); //
301573 
301575  static SgSubscriptExpression * getPointerFromGlobalIndex(unsigned long); //
301577  static SgSubscriptExpression * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
301578 
301580  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
301582  static void resetValidFreepointers(); //
301584  static unsigned long getNumberOfLastValidPointer(); //
301585 
301586 
301587 #if defined(INLINE_FUNCTIONS)
301588 
301589  inline void *operator new (size_t size);
301590 #else
301591 
301592  void *operator new (size_t size);
301593 #endif
301594 
301595  void operator delete (void* pointer, size_t size);
301596 
301597  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
301598  void operator delete (void* pointer)
301599  {
301600  // This is the generated delete operator...
301601  SgSubscriptExpression::operator delete (pointer,sizeof(SgSubscriptExpression));
301602  }
301603 
301605  static size_t numberOfNodes();
301606 
301608  static size_t memoryUsage();
301609 
301610  // End of scope which started in IR nodes specific code
301611  /* */
301612 
301613  /* name Internal Functions
301614  \brief Internal functions ... incomplete-documentation
301615 
301616  These functions have been made public as part of the design, but they are suggested for internal use
301617  or by particularly knowledgeable users for specialized tools or applications.
301618 
301619  \internal We could not make these private because they are required by user for special purposes. And
301620  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
301621 
301622  */
301623 
301624  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
301625  // overridden in every class by *generated* implementation
301627  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
301628  // MS: 06/28/02 container of names of variables or container indices
301629  // used used in the traversal to access AST successor nodes
301630  // overridden in every class by *generated* implementation
301633  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
301634 
301635  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
301636  // than all the vector copies. The implementation for these functions is generated for each class.
301638  virtual size_t get_numberOfTraversalSuccessors() override;
301640  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
301642  virtual size_t get_childIndex(SgNode *child) override;
301643 
301644 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
301645  // MS: 08/16/2002 method for generating RTI information
301647  virtual RTIReturnType roseRTI() override;
301648 #endif
301649  /* */
301650 
301651 
301652 
301653  /* name Deprecated Functions
301654  \brief Deprecated functions ... incomplete-documentation
301655 
301656  These functions have been deprecated from use.
301657  */
301658  /* */
301659 
301661  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
301662 
301663  // JJW (10/16/2008): Changed to a single function in Node.code, and put
301664  // getVariant() in #if 0 block to prevent confusing Doxygen
301665 #if 0
301666 
301667  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
301669  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
301670 #endif
301671  /* */
301672 
301673 
301674 
301675 
301676  public:
301677  /* name Traversal Support Functions
301678  \brief Traversal support functions ... incomplete-documentation
301679 
301680  These functions have been made public as part of the design, but they are suggested for internal use
301681  or by particularly knowledgable users for specialized tools or applications.
301682  */
301683  /* */
301684 
301685  // DQ (11/26/2005): Support for visitor pattern mechanims
301686  // (inferior to ROSE traversal mechanism, experimental).
301690 
301691  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
301693  virtual void accept (ROSE_VisitorPattern & visitor) override;
301694 
301695  // DQ (12/26/2005): Support for traversal based on the memory pool
301698  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
301699 
301702  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
301703 
301704  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
301705  // This traversal helps support internal tools that call static member functions.
301706  // note: this function operates on the memory pools.
301709  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
301710  /* */
301711 
301712 
301713  public:
301714  /* name Memory Allocation Functions
301715  \brief Memory allocations functions ... incomplete-documentation
301716 
301717  These functions have been made public as part of the design, but they are suggested for internal use
301718  or by particularly knowledgable users for specialized tools or applications.
301719  */
301720  /* */
301721 
301732  virtual bool isInMemoryPool() override;
301733 
301744  virtual void checkDataMemberPointersIfInMemoryPool() override;
301745 
301746  // DQ (4/30/2006): Modified to be a const function.
301761  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
301762 
301772  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
301773 
301785  virtual long getChildIndex( SgNode* childNode ) const override;
301786 
301787  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
301788  // comment here (changed to be a C style comment and not be a doxygen comment).
301789  /* \brief Constructor for use by AST File I/O Mechanism
301790 
301791  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
301792  which obtained via fast binary file I/O from disk.
301793  */
301794  // SgSubscriptExpression( SgSubscriptExpressionStorageClass& source );
301795 
301796 
301797 
301798 
301799 
301800  // JH (10/24/2005): methods added to support the ast file IO
301801  private:
301802 
301803  /* name AST Memory Allocation Support Functions
301804  \brief Memory allocations support....
301805 
301806  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
301807  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
301808  and support the AST File I/O Mechanism.
301809  */
301810  /* */
301811 
301812  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
301813  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
301814  that I use the same type everywhere, if any changes are made. THe second one declares the type
301815  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
301816  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
301817  a correspinding one in the AST_FILE_IO class!
301818  */
301819  // DQ (9/2/2015): This typedef is no longer used, we can't define the
301820  // comment here (changed to be a C style comment and not be a doxygen comment).
301821  /* \brief Typedef used for low level memory access.
301822  */
301823  // typedef unsigned char* TestType;
301824 
301825  // DQ (9/2/2015): This typedef is no longer used, we can't define the
301826  // comment here (changed to be a C style comment and not be a doxygen comment).
301827  /* \brief Typedef used to hold memory addresses as values.
301828  */
301829  // typedef unsigned long AddressType;
301830 
301831 
301832 
301833  // necessary, to have direct access to the p_freepointer and the private methods !
301835  friend class AST_FILE_IO;
301836 
301838  friend class SgSubscriptExpressionStorageClass;
301839 
301841  friend class AstSpecificDataManagingClass;
301842 
301844  friend class AstSpecificDataManagingClassStorageClass;
301845 
301846  public:
301848  SgSubscriptExpression( const SgSubscriptExpressionStorageClass& source );
301849 
301850  // private: // JJW hack
301851  /*
301852  name AST Memory Allocation Support Variables
301853  Memory allocations support variables
301854 
301855  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
301856  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
301857  and support the AST File I/O Mechanism.
301858  */
301859  /* */
301860 
301861  public:
301862 
301863  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
301864  // to current node (so that it will work cleanly with build functions to specify patterns).
301865  // virtual SgNode* addRegExpAttribute();
301872 
301873 // *** COMMON CODE SECTION ENDS HERE ***
301874 
301875 
301876 // End of memberFunctionString
301877 // Start of memberFunctionString
301878 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
301879 
301880  // the generated cast function
301881  // friend ROSE_DLL_API SgSubscriptExpression* isSgSubscriptExpression ( SgNode* s );
301882 
301883  typedef SgExpression base_node_type;
301884 
301885 
301886 // End of memberFunctionString
301887 // Start of memberFunctionString
301888 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
301889 
301890  SgType* get_type() const override;
301891 
301892 
301893 // End of memberFunctionString
301894 // Start of memberFunctionString
301895 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
301896 
301897  void post_construction_initialization() override;
301898 
301899 
301900 // End of memberFunctionString
301901 
301902  public:
301903  SgExpression* get_lowerBound() const;
301904  void set_lowerBound(SgExpression* lowerBound);
301905 
301906  public:
301907  SgExpression* get_upperBound() const;
301908  void set_upperBound(SgExpression* upperBound);
301909 
301910  public:
301911  SgExpression* get_stride() const;
301912  void set_stride(SgExpression* stride);
301913 
301914 
301915  public:
301916  virtual ~SgSubscriptExpression();
301917 
301918 
301919  public:
301920  SgSubscriptExpression(Sg_File_Info* startOfConstruct , SgExpression* lowerBound = NULL, SgExpression* upperBound = NULL, SgExpression* stride = NULL);
301921  SgSubscriptExpression(SgExpression* lowerBound, SgExpression* upperBound, SgExpression* stride);
301922 
301923  protected:
301924 // Start of memberFunctionString
301925 SgExpression* p_lowerBound;
301926 
301927 // End of memberFunctionString
301928 // Start of memberFunctionString
301929 SgExpression* p_upperBound;
301930 
301931 // End of memberFunctionString
301932 // Start of memberFunctionString
301933 SgExpression* p_stride;
301934 
301935 // End of memberFunctionString
301936 
301937 
301938 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
301939 
301940 
301941  };
301942 #endif
301943 
301944 // postdeclarations for SgSubscriptExpression
301945 
301946 /* #line 301947 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
301947 
301948 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
301949 
301950 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
301951 
301952 
301953 /* #line 301954 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
301954 
301955 
301956 
301957 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
301958 
301959 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
301960 // This code is automatically generated for each
301961 // terminal and non-terminal within the defined
301962 // grammar. There is a simple way to change the
301963 // code to fix bugs etc. See the ROSE README file
301964 // for directions.
301965 
301966 // tps: (02/22/2010): Adding DLL export requirements
301967 #include "rosedll.h"
301968 
301969 // predeclarations for SgColonShapeExp
301970 
301971 /* #line 301972 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
301972 
301973 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
301974 
301975 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
301976 
301977 #if 1
301978 // Class Definition for SgColonShapeExp
301979 class ROSE_DLL_API SgColonShapeExp : public SgExpression
301980  {
301981  public:
301982 
301983 
301984 /* #line 301985 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
301985 
301986  virtual SgNode* copy ( SgCopyHelp& help) const override;
301987 // Start of memberFunctionString
301988 /* #line 1779 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
301989 
301990 
301991 
301992 // End of memberFunctionString
301993 // Start of memberFunctionString
301994 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
301995 
301996 // *** COMMON CODE SECTION BEGINS HERE ***
301997 
301998  public:
301999 
302000  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
302001  // and not required which is required to match the other aspects of the copy mechanism code generation.
302002  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
302003  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
302004  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
302005  // virtual SgNode* copy ( const SgCopyHelp & help) const;
302006 
302008  virtual std::string class_name() const override;
302009 
302011  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
302012 
302014  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
302015  // static const VariantT static_variant = V_SgColonShapeExp;
302016  enum { static_variant = V_SgColonShapeExp };
302017 
302018  /* the generated cast function */
302020  ROSE_DLL_API friend SgColonShapeExp* isSgColonShapeExp( SgNode * s );
302021 
302023  ROSE_DLL_API friend const SgColonShapeExp* isSgColonShapeExp( const SgNode * s );
302024 
302025  // ******************************************
302026  // * Memory Pool / New / Delete
302027  // ******************************************
302028 
302029  public:
302031  static const unsigned pool_size; //
302033  static std::vector<unsigned char *> pools; //
302035  static SgColonShapeExp * next_node; //
302036 
302038  static unsigned long initializeStorageClassArray(SgColonShapeExpStorageClass *); //
302039 
302041  static void clearMemoryPool(); //
302042  static void deleteMemoryPool(); //
302043 
302045  static void extendMemoryPoolForFileIO(); //
302046 
302048  static SgColonShapeExp * getPointerFromGlobalIndex(unsigned long); //
302050  static SgColonShapeExp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
302051 
302053  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
302055  static void resetValidFreepointers(); //
302057  static unsigned long getNumberOfLastValidPointer(); //
302058 
302059 
302060 #if defined(INLINE_FUNCTIONS)
302061 
302062  inline void *operator new (size_t size);
302063 #else
302064 
302065  void *operator new (size_t size);
302066 #endif
302067 
302068  void operator delete (void* pointer, size_t size);
302069 
302070  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
302071  void operator delete (void* pointer)
302072  {
302073  // This is the generated delete operator...
302074  SgColonShapeExp::operator delete (pointer,sizeof(SgColonShapeExp));
302075  }
302076 
302078  static size_t numberOfNodes();
302079 
302081  static size_t memoryUsage();
302082 
302083  // End of scope which started in IR nodes specific code
302084  /* */
302085 
302086  /* name Internal Functions
302087  \brief Internal functions ... incomplete-documentation
302088 
302089  These functions have been made public as part of the design, but they are suggested for internal use
302090  or by particularly knowledgeable users for specialized tools or applications.
302091 
302092  \internal We could not make these private because they are required by user for special purposes. And
302093  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
302094 
302095  */
302096 
302097  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
302098  // overridden in every class by *generated* implementation
302100  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
302101  // MS: 06/28/02 container of names of variables or container indices
302102  // used used in the traversal to access AST successor nodes
302103  // overridden in every class by *generated* implementation
302106  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
302107 
302108  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
302109  // than all the vector copies. The implementation for these functions is generated for each class.
302111  virtual size_t get_numberOfTraversalSuccessors() override;
302113  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
302115  virtual size_t get_childIndex(SgNode *child) override;
302116 
302117 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
302118  // MS: 08/16/2002 method for generating RTI information
302120  virtual RTIReturnType roseRTI() override;
302121 #endif
302122  /* */
302123 
302124 
302125 
302126  /* name Deprecated Functions
302127  \brief Deprecated functions ... incomplete-documentation
302128 
302129  These functions have been deprecated from use.
302130  */
302131  /* */
302132 
302134  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
302135 
302136  // JJW (10/16/2008): Changed to a single function in Node.code, and put
302137  // getVariant() in #if 0 block to prevent confusing Doxygen
302138 #if 0
302139 
302140  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
302142  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
302143 #endif
302144  /* */
302145 
302146 
302147 
302148 
302149  public:
302150  /* name Traversal Support Functions
302151  \brief Traversal support functions ... incomplete-documentation
302152 
302153  These functions have been made public as part of the design, but they are suggested for internal use
302154  or by particularly knowledgable users for specialized tools or applications.
302155  */
302156  /* */
302157 
302158  // DQ (11/26/2005): Support for visitor pattern mechanims
302159  // (inferior to ROSE traversal mechanism, experimental).
302163 
302164  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
302166  virtual void accept (ROSE_VisitorPattern & visitor) override;
302167 
302168  // DQ (12/26/2005): Support for traversal based on the memory pool
302171  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
302172 
302175  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
302176 
302177  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
302178  // This traversal helps support internal tools that call static member functions.
302179  // note: this function operates on the memory pools.
302182  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
302183  /* */
302184 
302185 
302186  public:
302187  /* name Memory Allocation Functions
302188  \brief Memory allocations functions ... incomplete-documentation
302189 
302190  These functions have been made public as part of the design, but they are suggested for internal use
302191  or by particularly knowledgable users for specialized tools or applications.
302192  */
302193  /* */
302194 
302205  virtual bool isInMemoryPool() override;
302206 
302217  virtual void checkDataMemberPointersIfInMemoryPool() override;
302218 
302219  // DQ (4/30/2006): Modified to be a const function.
302234  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
302235 
302245  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
302246 
302258  virtual long getChildIndex( SgNode* childNode ) const override;
302259 
302260  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
302261  // comment here (changed to be a C style comment and not be a doxygen comment).
302262  /* \brief Constructor for use by AST File I/O Mechanism
302263 
302264  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
302265  which obtained via fast binary file I/O from disk.
302266  */
302267  // SgColonShapeExp( SgColonShapeExpStorageClass& source );
302268 
302269 
302270 
302271 
302272 
302273  // JH (10/24/2005): methods added to support the ast file IO
302274  private:
302275 
302276  /* name AST Memory Allocation Support Functions
302277  \brief Memory allocations support....
302278 
302279  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
302280  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
302281  and support the AST File I/O Mechanism.
302282  */
302283  /* */
302284 
302285  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
302286  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
302287  that I use the same type everywhere, if any changes are made. THe second one declares the type
302288  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
302289  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
302290  a correspinding one in the AST_FILE_IO class!
302291  */
302292  // DQ (9/2/2015): This typedef is no longer used, we can't define the
302293  // comment here (changed to be a C style comment and not be a doxygen comment).
302294  /* \brief Typedef used for low level memory access.
302295  */
302296  // typedef unsigned char* TestType;
302297 
302298  // DQ (9/2/2015): This typedef is no longer used, we can't define the
302299  // comment here (changed to be a C style comment and not be a doxygen comment).
302300  /* \brief Typedef used to hold memory addresses as values.
302301  */
302302  // typedef unsigned long AddressType;
302303 
302304 
302305 
302306  // necessary, to have direct access to the p_freepointer and the private methods !
302308  friend class AST_FILE_IO;
302309 
302311  friend class SgColonShapeExpStorageClass;
302312 
302314  friend class AstSpecificDataManagingClass;
302315 
302317  friend class AstSpecificDataManagingClassStorageClass;
302318 
302319  public:
302321  SgColonShapeExp( const SgColonShapeExpStorageClass& source );
302322 
302323  // private: // JJW hack
302324  /*
302325  name AST Memory Allocation Support Variables
302326  Memory allocations support variables
302327 
302328  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
302329  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
302330  and support the AST File I/O Mechanism.
302331  */
302332  /* */
302333 
302334  public:
302335 
302336  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
302337  // to current node (so that it will work cleanly with build functions to specify patterns).
302338  // virtual SgNode* addRegExpAttribute();
302345 
302346 // *** COMMON CODE SECTION ENDS HERE ***
302347 
302348 
302349 // End of memberFunctionString
302350 // Start of memberFunctionString
302351 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
302352 
302353  // the generated cast function
302354  // friend ROSE_DLL_API SgColonShapeExp* isSgColonShapeExp ( SgNode* s );
302355 
302356  typedef SgExpression base_node_type;
302357 
302358 
302359 // End of memberFunctionString
302360 // Start of memberFunctionString
302361 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
302362 
302363  SgType* get_type() const override;
302364 
302365 
302366 // End of memberFunctionString
302367 // Start of memberFunctionString
302368 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
302369 
302370  void post_construction_initialization() override;
302371 
302372 
302373 // End of memberFunctionString
302374 
302375 
302376  public:
302377  virtual ~SgColonShapeExp();
302378 
302379 
302380  public:
302381  SgColonShapeExp(Sg_File_Info* startOfConstruct );
302382  SgColonShapeExp();
302383 
302384  protected:
302385 
302386 
302387 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
302388 
302389 
302390  };
302391 #endif
302392 
302393 // postdeclarations for SgColonShapeExp
302394 
302395 /* #line 302396 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
302396 
302397 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
302398 
302399 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
302400 
302401 
302402 /* #line 302403 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
302403 
302404 
302405 
302406 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
302407 
302408 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
302409 // This code is automatically generated for each
302410 // terminal and non-terminal within the defined
302411 // grammar. There is a simple way to change the
302412 // code to fix bugs etc. See the ROSE README file
302413 // for directions.
302414 
302415 // tps: (02/22/2010): Adding DLL export requirements
302416 #include "rosedll.h"
302417 
302418 // predeclarations for SgAsteriskShapeExp
302419 
302420 /* #line 302421 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
302421 
302422 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
302423 
302424 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
302425 
302426 #if 1
302427 // Class Definition for SgAsteriskShapeExp
302428 class ROSE_DLL_API SgAsteriskShapeExp : public SgExpression
302429  {
302430  public:
302431 
302432 
302433 /* #line 302434 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
302434 
302435  virtual SgNode* copy ( SgCopyHelp& help) const override;
302436 // Start of memberFunctionString
302437 /* #line 1785 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
302438 
302439 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
302440  virtual unsigned int cfgIndexForEnd() const override;
302441  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
302442  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
302443 #endif
302444 
302445 
302446 
302447 // End of memberFunctionString
302448 // Start of memberFunctionString
302449 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
302450 
302451 // *** COMMON CODE SECTION BEGINS HERE ***
302452 
302453  public:
302454 
302455  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
302456  // and not required which is required to match the other aspects of the copy mechanism code generation.
302457  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
302458  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
302459  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
302460  // virtual SgNode* copy ( const SgCopyHelp & help) const;
302461 
302463  virtual std::string class_name() const override;
302464 
302466  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
302467 
302469  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
302470  // static const VariantT static_variant = V_SgAsteriskShapeExp;
302471  enum { static_variant = V_SgAsteriskShapeExp };
302472 
302473  /* the generated cast function */
302475  ROSE_DLL_API friend SgAsteriskShapeExp* isSgAsteriskShapeExp( SgNode * s );
302476 
302478  ROSE_DLL_API friend const SgAsteriskShapeExp* isSgAsteriskShapeExp( const SgNode * s );
302479 
302480  // ******************************************
302481  // * Memory Pool / New / Delete
302482  // ******************************************
302483 
302484  public:
302486  static const unsigned pool_size; //
302488  static std::vector<unsigned char *> pools; //
302490  static SgAsteriskShapeExp * next_node; //
302491 
302493  static unsigned long initializeStorageClassArray(SgAsteriskShapeExpStorageClass *); //
302494 
302496  static void clearMemoryPool(); //
302497  static void deleteMemoryPool(); //
302498 
302500  static void extendMemoryPoolForFileIO(); //
302501 
302503  static SgAsteriskShapeExp * getPointerFromGlobalIndex(unsigned long); //
302505  static SgAsteriskShapeExp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
302506 
302508  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
302510  static void resetValidFreepointers(); //
302512  static unsigned long getNumberOfLastValidPointer(); //
302513 
302514 
302515 #if defined(INLINE_FUNCTIONS)
302516 
302517  inline void *operator new (size_t size);
302518 #else
302519 
302520  void *operator new (size_t size);
302521 #endif
302522 
302523  void operator delete (void* pointer, size_t size);
302524 
302525  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
302526  void operator delete (void* pointer)
302527  {
302528  // This is the generated delete operator...
302529  SgAsteriskShapeExp::operator delete (pointer,sizeof(SgAsteriskShapeExp));
302530  }
302531 
302533  static size_t numberOfNodes();
302534 
302536  static size_t memoryUsage();
302537 
302538  // End of scope which started in IR nodes specific code
302539  /* */
302540 
302541  /* name Internal Functions
302542  \brief Internal functions ... incomplete-documentation
302543 
302544  These functions have been made public as part of the design, but they are suggested for internal use
302545  or by particularly knowledgeable users for specialized tools or applications.
302546 
302547  \internal We could not make these private because they are required by user for special purposes. And
302548  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
302549 
302550  */
302551 
302552  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
302553  // overridden in every class by *generated* implementation
302555  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
302556  // MS: 06/28/02 container of names of variables or container indices
302557  // used used in the traversal to access AST successor nodes
302558  // overridden in every class by *generated* implementation
302561  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
302562 
302563  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
302564  // than all the vector copies. The implementation for these functions is generated for each class.
302566  virtual size_t get_numberOfTraversalSuccessors() override;
302568  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
302570  virtual size_t get_childIndex(SgNode *child) override;
302571 
302572 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
302573  // MS: 08/16/2002 method for generating RTI information
302575  virtual RTIReturnType roseRTI() override;
302576 #endif
302577  /* */
302578 
302579 
302580 
302581  /* name Deprecated Functions
302582  \brief Deprecated functions ... incomplete-documentation
302583 
302584  These functions have been deprecated from use.
302585  */
302586  /* */
302587 
302589  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
302590 
302591  // JJW (10/16/2008): Changed to a single function in Node.code, and put
302592  // getVariant() in #if 0 block to prevent confusing Doxygen
302593 #if 0
302594 
302595  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
302597  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
302598 #endif
302599  /* */
302600 
302601 
302602 
302603 
302604  public:
302605  /* name Traversal Support Functions
302606  \brief Traversal support functions ... incomplete-documentation
302607 
302608  These functions have been made public as part of the design, but they are suggested for internal use
302609  or by particularly knowledgable users for specialized tools or applications.
302610  */
302611  /* */
302612 
302613  // DQ (11/26/2005): Support for visitor pattern mechanims
302614  // (inferior to ROSE traversal mechanism, experimental).
302618 
302619  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
302621  virtual void accept (ROSE_VisitorPattern & visitor) override;
302622 
302623  // DQ (12/26/2005): Support for traversal based on the memory pool
302626  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
302627 
302630  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
302631 
302632  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
302633  // This traversal helps support internal tools that call static member functions.
302634  // note: this function operates on the memory pools.
302637  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
302638  /* */
302639 
302640 
302641  public:
302642  /* name Memory Allocation Functions
302643  \brief Memory allocations functions ... incomplete-documentation
302644 
302645  These functions have been made public as part of the design, but they are suggested for internal use
302646  or by particularly knowledgable users for specialized tools or applications.
302647  */
302648  /* */
302649 
302660  virtual bool isInMemoryPool() override;
302661 
302672  virtual void checkDataMemberPointersIfInMemoryPool() override;
302673 
302674  // DQ (4/30/2006): Modified to be a const function.
302689  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
302690 
302700  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
302701 
302713  virtual long getChildIndex( SgNode* childNode ) const override;
302714 
302715  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
302716  // comment here (changed to be a C style comment and not be a doxygen comment).
302717  /* \brief Constructor for use by AST File I/O Mechanism
302718 
302719  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
302720  which obtained via fast binary file I/O from disk.
302721  */
302722  // SgAsteriskShapeExp( SgAsteriskShapeExpStorageClass& source );
302723 
302724 
302725 
302726 
302727 
302728  // JH (10/24/2005): methods added to support the ast file IO
302729  private:
302730 
302731  /* name AST Memory Allocation Support Functions
302732  \brief Memory allocations support....
302733 
302734  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
302735  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
302736  and support the AST File I/O Mechanism.
302737  */
302738  /* */
302739 
302740  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
302741  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
302742  that I use the same type everywhere, if any changes are made. THe second one declares the type
302743  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
302744  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
302745  a correspinding one in the AST_FILE_IO class!
302746  */
302747  // DQ (9/2/2015): This typedef is no longer used, we can't define the
302748  // comment here (changed to be a C style comment and not be a doxygen comment).
302749  /* \brief Typedef used for low level memory access.
302750  */
302751  // typedef unsigned char* TestType;
302752 
302753  // DQ (9/2/2015): This typedef is no longer used, we can't define the
302754  // comment here (changed to be a C style comment and not be a doxygen comment).
302755  /* \brief Typedef used to hold memory addresses as values.
302756  */
302757  // typedef unsigned long AddressType;
302758 
302759 
302760 
302761  // necessary, to have direct access to the p_freepointer and the private methods !
302763  friend class AST_FILE_IO;
302764 
302766  friend class SgAsteriskShapeExpStorageClass;
302767 
302769  friend class AstSpecificDataManagingClass;
302770 
302772  friend class AstSpecificDataManagingClassStorageClass;
302773 
302774  public:
302776  SgAsteriskShapeExp( const SgAsteriskShapeExpStorageClass& source );
302777 
302778  // private: // JJW hack
302779  /*
302780  name AST Memory Allocation Support Variables
302781  Memory allocations support variables
302782 
302783  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
302784  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
302785  and support the AST File I/O Mechanism.
302786  */
302787  /* */
302788 
302789  public:
302790 
302791  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
302792  // to current node (so that it will work cleanly with build functions to specify patterns).
302793  // virtual SgNode* addRegExpAttribute();
302800 
302801 // *** COMMON CODE SECTION ENDS HERE ***
302802 
302803 
302804 // End of memberFunctionString
302805 // Start of memberFunctionString
302806 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
302807 
302808  // the generated cast function
302809  // friend ROSE_DLL_API SgAsteriskShapeExp* isSgAsteriskShapeExp ( SgNode* s );
302810 
302811  typedef SgExpression base_node_type;
302812 
302813 
302814 // End of memberFunctionString
302815 // Start of memberFunctionString
302816 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
302817 
302818  SgType* get_type() const override;
302819 
302820 
302821 // End of memberFunctionString
302822 // Start of memberFunctionString
302823 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
302824 
302825  void post_construction_initialization() override;
302826 
302827 
302828 // End of memberFunctionString
302829 
302830 
302831  public:
302832  virtual ~SgAsteriskShapeExp();
302833 
302834 
302835  public:
302836  SgAsteriskShapeExp(Sg_File_Info* startOfConstruct );
302837  SgAsteriskShapeExp();
302838 
302839  protected:
302840 
302841 
302842 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
302843 
302844 
302845  };
302846 #endif
302847 
302848 // postdeclarations for SgAsteriskShapeExp
302849 
302850 /* #line 302851 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
302851 
302852 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
302853 
302854 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
302855 
302856 
302857 /* #line 302858 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
302858 
302859 
302860 
302861 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
302862 
302863 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
302864 // This code is automatically generated for each
302865 // terminal and non-terminal within the defined
302866 // grammar. There is a simple way to change the
302867 // code to fix bugs etc. See the ROSE README file
302868 // for directions.
302869 
302870 // tps: (02/22/2010): Adding DLL export requirements
302871 #include "rosedll.h"
302872 
302873 // predeclarations for SgImpliedDo
302874 
302875 /* #line 302876 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
302876 
302877 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
302878 
302879 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
302880 
302881 #if 1
302882 // Class Definition for SgImpliedDo
302883 class ROSE_DLL_API SgImpliedDo : public SgExpression
302884  {
302885  public:
302886 
302887 
302888 /* #line 302889 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
302889 
302890  virtual SgNode* copy ( SgCopyHelp& help) const override;
302891 // Start of memberFunctionString
302892 /* #line 1803 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
302893 
302894 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
302895  virtual unsigned int cfgIndexForEnd() const override;
302896  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
302897  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
302898 #endif
302899 
302900 
302901 
302902 // End of memberFunctionString
302903 // Start of memberFunctionString
302904 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
302905 
302906 // *** COMMON CODE SECTION BEGINS HERE ***
302907 
302908  public:
302909 
302910  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
302911  // and not required which is required to match the other aspects of the copy mechanism code generation.
302912  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
302913  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
302914  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
302915  // virtual SgNode* copy ( const SgCopyHelp & help) const;
302916 
302918  virtual std::string class_name() const override;
302919 
302921  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
302922 
302924  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
302925  // static const VariantT static_variant = V_SgImpliedDo;
302926  enum { static_variant = V_SgImpliedDo };
302927 
302928  /* the generated cast function */
302930  ROSE_DLL_API friend SgImpliedDo* isSgImpliedDo( SgNode * s );
302931 
302933  ROSE_DLL_API friend const SgImpliedDo* isSgImpliedDo( const SgNode * s );
302934 
302935  // ******************************************
302936  // * Memory Pool / New / Delete
302937  // ******************************************
302938 
302939  public:
302941  static const unsigned pool_size; //
302943  static std::vector<unsigned char *> pools; //
302945  static SgImpliedDo * next_node; //
302946 
302948  static unsigned long initializeStorageClassArray(SgImpliedDoStorageClass *); //
302949 
302951  static void clearMemoryPool(); //
302952  static void deleteMemoryPool(); //
302953 
302955  static void extendMemoryPoolForFileIO(); //
302956 
302958  static SgImpliedDo * getPointerFromGlobalIndex(unsigned long); //
302960  static SgImpliedDo * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
302961 
302963  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
302965  static void resetValidFreepointers(); //
302967  static unsigned long getNumberOfLastValidPointer(); //
302968 
302969 
302970 #if defined(INLINE_FUNCTIONS)
302971 
302972  inline void *operator new (size_t size);
302973 #else
302974 
302975  void *operator new (size_t size);
302976 #endif
302977 
302978  void operator delete (void* pointer, size_t size);
302979 
302980  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
302981  void operator delete (void* pointer)
302982  {
302983  // This is the generated delete operator...
302984  SgImpliedDo::operator delete (pointer,sizeof(SgImpliedDo));
302985  }
302986 
302988  static size_t numberOfNodes();
302989 
302991  static size_t memoryUsage();
302992 
302993  // End of scope which started in IR nodes specific code
302994  /* */
302995 
302996  /* name Internal Functions
302997  \brief Internal functions ... incomplete-documentation
302998 
302999  These functions have been made public as part of the design, but they are suggested for internal use
303000  or by particularly knowledgeable users for specialized tools or applications.
303001 
303002  \internal We could not make these private because they are required by user for special purposes. And
303003  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
303004 
303005  */
303006 
303007  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
303008  // overridden in every class by *generated* implementation
303010  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
303011  // MS: 06/28/02 container of names of variables or container indices
303012  // used used in the traversal to access AST successor nodes
303013  // overridden in every class by *generated* implementation
303016  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
303017 
303018  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
303019  // than all the vector copies. The implementation for these functions is generated for each class.
303021  virtual size_t get_numberOfTraversalSuccessors() override;
303023  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
303025  virtual size_t get_childIndex(SgNode *child) override;
303026 
303027 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
303028  // MS: 08/16/2002 method for generating RTI information
303030  virtual RTIReturnType roseRTI() override;
303031 #endif
303032  /* */
303033 
303034 
303035 
303036  /* name Deprecated Functions
303037  \brief Deprecated functions ... incomplete-documentation
303038 
303039  These functions have been deprecated from use.
303040  */
303041  /* */
303042 
303044  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
303045 
303046  // JJW (10/16/2008): Changed to a single function in Node.code, and put
303047  // getVariant() in #if 0 block to prevent confusing Doxygen
303048 #if 0
303049 
303050  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
303052  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
303053 #endif
303054  /* */
303055 
303056 
303057 
303058 
303059  public:
303060  /* name Traversal Support Functions
303061  \brief Traversal support functions ... incomplete-documentation
303062 
303063  These functions have been made public as part of the design, but they are suggested for internal use
303064  or by particularly knowledgable users for specialized tools or applications.
303065  */
303066  /* */
303067 
303068  // DQ (11/26/2005): Support for visitor pattern mechanims
303069  // (inferior to ROSE traversal mechanism, experimental).
303073 
303074  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
303076  virtual void accept (ROSE_VisitorPattern & visitor) override;
303077 
303078  // DQ (12/26/2005): Support for traversal based on the memory pool
303081  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
303082 
303085  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
303086 
303087  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
303088  // This traversal helps support internal tools that call static member functions.
303089  // note: this function operates on the memory pools.
303092  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
303093  /* */
303094 
303095 
303096  public:
303097  /* name Memory Allocation Functions
303098  \brief Memory allocations functions ... incomplete-documentation
303099 
303100  These functions have been made public as part of the design, but they are suggested for internal use
303101  or by particularly knowledgable users for specialized tools or applications.
303102  */
303103  /* */
303104 
303115  virtual bool isInMemoryPool() override;
303116 
303127  virtual void checkDataMemberPointersIfInMemoryPool() override;
303128 
303129  // DQ (4/30/2006): Modified to be a const function.
303144  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
303145 
303155  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
303156 
303168  virtual long getChildIndex( SgNode* childNode ) const override;
303169 
303170  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
303171  // comment here (changed to be a C style comment and not be a doxygen comment).
303172  /* \brief Constructor for use by AST File I/O Mechanism
303173 
303174  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
303175  which obtained via fast binary file I/O from disk.
303176  */
303177  // SgImpliedDo( SgImpliedDoStorageClass& source );
303178 
303179 
303180 
303181 
303182 
303183  // JH (10/24/2005): methods added to support the ast file IO
303184  private:
303185 
303186  /* name AST Memory Allocation Support Functions
303187  \brief Memory allocations support....
303188 
303189  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
303190  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
303191  and support the AST File I/O Mechanism.
303192  */
303193  /* */
303194 
303195  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
303196  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
303197  that I use the same type everywhere, if any changes are made. THe second one declares the type
303198  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
303199  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
303200  a correspinding one in the AST_FILE_IO class!
303201  */
303202  // DQ (9/2/2015): This typedef is no longer used, we can't define the
303203  // comment here (changed to be a C style comment and not be a doxygen comment).
303204  /* \brief Typedef used for low level memory access.
303205  */
303206  // typedef unsigned char* TestType;
303207 
303208  // DQ (9/2/2015): This typedef is no longer used, we can't define the
303209  // comment here (changed to be a C style comment and not be a doxygen comment).
303210  /* \brief Typedef used to hold memory addresses as values.
303211  */
303212  // typedef unsigned long AddressType;
303213 
303214 
303215 
303216  // necessary, to have direct access to the p_freepointer and the private methods !
303218  friend class AST_FILE_IO;
303219 
303221  friend class SgImpliedDoStorageClass;
303222 
303224  friend class AstSpecificDataManagingClass;
303225 
303227  friend class AstSpecificDataManagingClassStorageClass;
303228 
303229  public:
303231  SgImpliedDo( const SgImpliedDoStorageClass& source );
303232 
303233  // private: // JJW hack
303234  /*
303235  name AST Memory Allocation Support Variables
303236  Memory allocations support variables
303237 
303238  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
303239  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
303240  and support the AST File I/O Mechanism.
303241  */
303242  /* */
303243 
303244  public:
303245 
303246  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
303247  // to current node (so that it will work cleanly with build functions to specify patterns).
303248  // virtual SgNode* addRegExpAttribute();
303254  SgImpliedDo* addRegExpAttribute(std::string s, AstRegExAttribute* a);
303255 
303256 // *** COMMON CODE SECTION ENDS HERE ***
303257 
303258 
303259 // End of memberFunctionString
303260 // Start of memberFunctionString
303261 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
303262 
303263  // the generated cast function
303264  // friend ROSE_DLL_API SgImpliedDo* isSgImpliedDo ( SgNode* s );
303265 
303266  typedef SgExpression base_node_type;
303267 
303268 
303269 // End of memberFunctionString
303270 // Start of memberFunctionString
303271 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
303272 
303273  SgType* get_type() const override;
303274 
303275 
303276 // End of memberFunctionString
303277 // Start of memberFunctionString
303278 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
303279 
303280  void post_construction_initialization() override;
303281 
303282 
303283 // End of memberFunctionString
303284 
303285  public:
303286  SgExpression* get_do_var_initialization() const;
303287  void set_do_var_initialization(SgExpression* do_var_initialization);
303288 
303289  public:
303290  SgExpression* get_last_val() const;
303291  void set_last_val(SgExpression* last_val);
303292 
303293  public:
303294  SgExpression* get_increment() const;
303295  void set_increment(SgExpression* increment);
303296 
303297  public:
303298  SgExprListExp* get_object_list() const;
303299  void set_object_list(SgExprListExp* object_list);
303300 
303301  public:
303302  SgScopeStatement* get_implied_do_scope() const;
303303  void set_implied_do_scope(SgScopeStatement* implied_do_scope);
303304 
303305 
303306  public:
303307  virtual ~SgImpliedDo();
303308 
303309 
303310  public:
303311  SgImpliedDo(Sg_File_Info* startOfConstruct , SgExpression* do_var_initialization = NULL, SgExpression* last_val = NULL, SgExpression* increment = NULL, SgExprListExp* object_list = NULL, SgScopeStatement* implied_do_scope = NULL);
303312  SgImpliedDo(SgExpression* do_var_initialization, SgExpression* last_val, SgExpression* increment, SgExprListExp* object_list, SgScopeStatement* implied_do_scope);
303313 
303314  protected:
303315 // Start of memberFunctionString
303316 SgExpression* p_do_var_initialization;
303317 
303318 // End of memberFunctionString
303319 // Start of memberFunctionString
303320 SgExpression* p_last_val;
303321 
303322 // End of memberFunctionString
303323 // Start of memberFunctionString
303324 SgExpression* p_increment;
303325 
303326 // End of memberFunctionString
303327 // Start of memberFunctionString
303328 SgExprListExp* p_object_list;
303329 
303330 // End of memberFunctionString
303331 // Start of memberFunctionString
303332 SgScopeStatement* p_implied_do_scope;
303333 
303334 // End of memberFunctionString
303335 
303336 
303337 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
303338 
303339 
303340  };
303341 #endif
303342 
303343 // postdeclarations for SgImpliedDo
303344 
303345 /* #line 303346 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
303346 
303347 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
303348 
303349 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
303350 
303351 
303352 /* #line 303353 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
303353 
303354 
303355 
303356 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
303357 
303358 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
303359 // This code is automatically generated for each
303360 // terminal and non-terminal within the defined
303361 // grammar. There is a simple way to change the
303362 // code to fix bugs etc. See the ROSE README file
303363 // for directions.
303364 
303365 // tps: (02/22/2010): Adding DLL export requirements
303366 #include "rosedll.h"
303367 
303368 // predeclarations for SgIOItemExpression
303369 
303370 /* #line 303371 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
303371 
303372 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
303373 
303374 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
303375 
303376 #if 1
303377 // Class Definition for SgIOItemExpression
303378 class ROSE_DLL_API SgIOItemExpression : public SgExpression
303379  {
303380  public:
303381 
303382 
303383 /* #line 303384 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
303384 
303385  virtual SgNode* copy ( SgCopyHelp& help) const override;
303386 // Start of memberFunctionString
303387 /* #line 1800 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
303388 
303389 
303390 
303391 // End of memberFunctionString
303392 // Start of memberFunctionString
303393 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
303394 
303395 // *** COMMON CODE SECTION BEGINS HERE ***
303396 
303397  public:
303398 
303399  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
303400  // and not required which is required to match the other aspects of the copy mechanism code generation.
303401  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
303402  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
303403  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
303404  // virtual SgNode* copy ( const SgCopyHelp & help) const;
303405 
303407  virtual std::string class_name() const override;
303408 
303410  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
303411 
303413  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
303414  // static const VariantT static_variant = V_SgIOItemExpression;
303415  enum { static_variant = V_SgIOItemExpression };
303416 
303417  /* the generated cast function */
303419  ROSE_DLL_API friend SgIOItemExpression* isSgIOItemExpression( SgNode * s );
303420 
303422  ROSE_DLL_API friend const SgIOItemExpression* isSgIOItemExpression( const SgNode * s );
303423 
303424  // ******************************************
303425  // * Memory Pool / New / Delete
303426  // ******************************************
303427 
303428  public:
303430  static const unsigned pool_size; //
303432  static std::vector<unsigned char *> pools; //
303434  static SgIOItemExpression * next_node; //
303435 
303437  static unsigned long initializeStorageClassArray(SgIOItemExpressionStorageClass *); //
303438 
303440  static void clearMemoryPool(); //
303441  static void deleteMemoryPool(); //
303442 
303444  static void extendMemoryPoolForFileIO(); //
303445 
303447  static SgIOItemExpression * getPointerFromGlobalIndex(unsigned long); //
303449  static SgIOItemExpression * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
303450 
303452  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
303454  static void resetValidFreepointers(); //
303456  static unsigned long getNumberOfLastValidPointer(); //
303457 
303458 
303459 #if defined(INLINE_FUNCTIONS)
303460 
303461  inline void *operator new (size_t size);
303462 #else
303463 
303464  void *operator new (size_t size);
303465 #endif
303466 
303467  void operator delete (void* pointer, size_t size);
303468 
303469  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
303470  void operator delete (void* pointer)
303471  {
303472  // This is the generated delete operator...
303473  SgIOItemExpression::operator delete (pointer,sizeof(SgIOItemExpression));
303474  }
303475 
303477  static size_t numberOfNodes();
303478 
303480  static size_t memoryUsage();
303481 
303482  // End of scope which started in IR nodes specific code
303483  /* */
303484 
303485  /* name Internal Functions
303486  \brief Internal functions ... incomplete-documentation
303487 
303488  These functions have been made public as part of the design, but they are suggested for internal use
303489  or by particularly knowledgeable users for specialized tools or applications.
303490 
303491  \internal We could not make these private because they are required by user for special purposes. And
303492  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
303493 
303494  */
303495 
303496  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
303497  // overridden in every class by *generated* implementation
303499  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
303500  // MS: 06/28/02 container of names of variables or container indices
303501  // used used in the traversal to access AST successor nodes
303502  // overridden in every class by *generated* implementation
303505  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
303506 
303507  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
303508  // than all the vector copies. The implementation for these functions is generated for each class.
303510  virtual size_t get_numberOfTraversalSuccessors() override;
303512  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
303514  virtual size_t get_childIndex(SgNode *child) override;
303515 
303516 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
303517  // MS: 08/16/2002 method for generating RTI information
303519  virtual RTIReturnType roseRTI() override;
303520 #endif
303521  /* */
303522 
303523 
303524 
303525  /* name Deprecated Functions
303526  \brief Deprecated functions ... incomplete-documentation
303527 
303528  These functions have been deprecated from use.
303529  */
303530  /* */
303531 
303533  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
303534 
303535  // JJW (10/16/2008): Changed to a single function in Node.code, and put
303536  // getVariant() in #if 0 block to prevent confusing Doxygen
303537 #if 0
303538 
303539  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
303541  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
303542 #endif
303543  /* */
303544 
303545 
303546 
303547 
303548  public:
303549  /* name Traversal Support Functions
303550  \brief Traversal support functions ... incomplete-documentation
303551 
303552  These functions have been made public as part of the design, but they are suggested for internal use
303553  or by particularly knowledgable users for specialized tools or applications.
303554  */
303555  /* */
303556 
303557  // DQ (11/26/2005): Support for visitor pattern mechanims
303558  // (inferior to ROSE traversal mechanism, experimental).
303562 
303563  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
303565  virtual void accept (ROSE_VisitorPattern & visitor) override;
303566 
303567  // DQ (12/26/2005): Support for traversal based on the memory pool
303570  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
303571 
303574  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
303575 
303576  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
303577  // This traversal helps support internal tools that call static member functions.
303578  // note: this function operates on the memory pools.
303581  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
303582  /* */
303583 
303584 
303585  public:
303586  /* name Memory Allocation Functions
303587  \brief Memory allocations functions ... incomplete-documentation
303588 
303589  These functions have been made public as part of the design, but they are suggested for internal use
303590  or by particularly knowledgable users for specialized tools or applications.
303591  */
303592  /* */
303593 
303604  virtual bool isInMemoryPool() override;
303605 
303616  virtual void checkDataMemberPointersIfInMemoryPool() override;
303617 
303618  // DQ (4/30/2006): Modified to be a const function.
303633  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
303634 
303644  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
303645 
303657  virtual long getChildIndex( SgNode* childNode ) const override;
303658 
303659  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
303660  // comment here (changed to be a C style comment and not be a doxygen comment).
303661  /* \brief Constructor for use by AST File I/O Mechanism
303662 
303663  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
303664  which obtained via fast binary file I/O from disk.
303665  */
303666  // SgIOItemExpression( SgIOItemExpressionStorageClass& source );
303667 
303668 
303669 
303670 
303671 
303672  // JH (10/24/2005): methods added to support the ast file IO
303673  private:
303674 
303675  /* name AST Memory Allocation Support Functions
303676  \brief Memory allocations support....
303677 
303678  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
303679  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
303680  and support the AST File I/O Mechanism.
303681  */
303682  /* */
303683 
303684  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
303685  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
303686  that I use the same type everywhere, if any changes are made. THe second one declares the type
303687  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
303688  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
303689  a correspinding one in the AST_FILE_IO class!
303690  */
303691  // DQ (9/2/2015): This typedef is no longer used, we can't define the
303692  // comment here (changed to be a C style comment and not be a doxygen comment).
303693  /* \brief Typedef used for low level memory access.
303694  */
303695  // typedef unsigned char* TestType;
303696 
303697  // DQ (9/2/2015): This typedef is no longer used, we can't define the
303698  // comment here (changed to be a C style comment and not be a doxygen comment).
303699  /* \brief Typedef used to hold memory addresses as values.
303700  */
303701  // typedef unsigned long AddressType;
303702 
303703 
303704 
303705  // necessary, to have direct access to the p_freepointer and the private methods !
303707  friend class AST_FILE_IO;
303708 
303710  friend class SgIOItemExpressionStorageClass;
303711 
303713  friend class AstSpecificDataManagingClass;
303714 
303716  friend class AstSpecificDataManagingClassStorageClass;
303717 
303718  public:
303720  SgIOItemExpression( const SgIOItemExpressionStorageClass& source );
303721 
303722  // private: // JJW hack
303723  /*
303724  name AST Memory Allocation Support Variables
303725  Memory allocations support variables
303726 
303727  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
303728  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
303729  and support the AST File I/O Mechanism.
303730  */
303731  /* */
303732 
303733  public:
303734 
303735  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
303736  // to current node (so that it will work cleanly with build functions to specify patterns).
303737  // virtual SgNode* addRegExpAttribute();
303744 
303745 // *** COMMON CODE SECTION ENDS HERE ***
303746 
303747 
303748 // End of memberFunctionString
303749 // Start of memberFunctionString
303750 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
303751 
303752  // the generated cast function
303753  // friend ROSE_DLL_API SgIOItemExpression* isSgIOItemExpression ( SgNode* s );
303754 
303755  typedef SgExpression base_node_type;
303756 
303757 
303758 // End of memberFunctionString
303759 // Start of memberFunctionString
303760 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
303761 
303762  SgType* get_type() const override;
303763 
303764 
303765 // End of memberFunctionString
303766 // Start of memberFunctionString
303767 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
303768 
303769  void post_construction_initialization() override;
303770 
303771 
303772 // End of memberFunctionString
303773 
303774  public:
303775  SgName get_name() const /* (getDataAccessFunctionPrototypeString) */;
303776  void set_name(SgName name) /* (getDataAccessFunctionPrototypeString) */;
303777 
303778  public:
303779  SgExpression* get_io_item() const;
303780  void set_io_item(SgExpression* io_item);
303781 
303782 
303783  public:
303784  virtual ~SgIOItemExpression();
303785 
303786 
303787  public:
303788  SgIOItemExpression(Sg_File_Info* startOfConstruct , SgName name = "", SgExpression* io_item = NULL);
303789  SgIOItemExpression(SgName name, SgExpression* io_item);
303790 
303791  protected:
303792 // Start of memberFunctionString
303793 SgName p_name;
303794 
303795 // End of memberFunctionString
303796 // Start of memberFunctionString
303797 SgExpression* p_io_item;
303798 
303799 // End of memberFunctionString
303800 
303801 
303802 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
303803 
303804 
303805  };
303806 #endif
303807 
303808 // postdeclarations for SgIOItemExpression
303809 
303810 /* #line 303811 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
303811 
303812 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
303813 
303814 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
303815 
303816 
303817 /* #line 303818 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
303818 
303819 
303820 
303821 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
303822 
303823 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
303824 // This code is automatically generated for each
303825 // terminal and non-terminal within the defined
303826 // grammar. There is a simple way to change the
303827 // code to fix bugs etc. See the ROSE README file
303828 // for directions.
303829 
303830 // tps: (02/22/2010): Adding DLL export requirements
303831 #include "rosedll.h"
303832 
303833 // predeclarations for SgStatementExpression
303834 
303835 /* #line 303836 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
303836 
303837 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
303838 
303839 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
303840 
303841 #if 1
303842 // Class Definition for SgStatementExpression
303843 class ROSE_DLL_API SgStatementExpression : public SgExpression
303844  {
303845  public:
303846 
303847 
303848 /* #line 303849 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
303849 
303850  virtual SgNode* copy ( SgCopyHelp& help) const override;
303851 // Start of memberFunctionString
303852 /* #line 1643 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
303853 
303854 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
303855  virtual unsigned int cfgIndexForEnd() const override;
303856  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
303857  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
303858 #endif
303859 
303860 
303861 
303862 // End of memberFunctionString
303863 // Start of memberFunctionString
303864 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
303865 
303866 // *** COMMON CODE SECTION BEGINS HERE ***
303867 
303868  public:
303869 
303870  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
303871  // and not required which is required to match the other aspects of the copy mechanism code generation.
303872  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
303873  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
303874  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
303875  // virtual SgNode* copy ( const SgCopyHelp & help) const;
303876 
303878  virtual std::string class_name() const override;
303879 
303881  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
303882 
303884  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
303885  // static const VariantT static_variant = V_SgStatementExpression;
303886  enum { static_variant = V_SgStatementExpression };
303887 
303888  /* the generated cast function */
303890  ROSE_DLL_API friend SgStatementExpression* isSgStatementExpression( SgNode * s );
303891 
303893  ROSE_DLL_API friend const SgStatementExpression* isSgStatementExpression( const SgNode * s );
303894 
303895  // ******************************************
303896  // * Memory Pool / New / Delete
303897  // ******************************************
303898 
303899  public:
303901  static const unsigned pool_size; //
303903  static std::vector<unsigned char *> pools; //
303905  static SgStatementExpression * next_node; //
303906 
303908  static unsigned long initializeStorageClassArray(SgStatementExpressionStorageClass *); //
303909 
303911  static void clearMemoryPool(); //
303912  static void deleteMemoryPool(); //
303913 
303915  static void extendMemoryPoolForFileIO(); //
303916 
303918  static SgStatementExpression * getPointerFromGlobalIndex(unsigned long); //
303920  static SgStatementExpression * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
303921 
303923  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
303925  static void resetValidFreepointers(); //
303927  static unsigned long getNumberOfLastValidPointer(); //
303928 
303929 
303930 #if defined(INLINE_FUNCTIONS)
303931 
303932  inline void *operator new (size_t size);
303933 #else
303934 
303935  void *operator new (size_t size);
303936 #endif
303937 
303938  void operator delete (void* pointer, size_t size);
303939 
303940  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
303941  void operator delete (void* pointer)
303942  {
303943  // This is the generated delete operator...
303944  SgStatementExpression::operator delete (pointer,sizeof(SgStatementExpression));
303945  }
303946 
303948  static size_t numberOfNodes();
303949 
303951  static size_t memoryUsage();
303952 
303953  // End of scope which started in IR nodes specific code
303954  /* */
303955 
303956  /* name Internal Functions
303957  \brief Internal functions ... incomplete-documentation
303958 
303959  These functions have been made public as part of the design, but they are suggested for internal use
303960  or by particularly knowledgeable users for specialized tools or applications.
303961 
303962  \internal We could not make these private because they are required by user for special purposes. And
303963  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
303964 
303965  */
303966 
303967  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
303968  // overridden in every class by *generated* implementation
303970  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
303971  // MS: 06/28/02 container of names of variables or container indices
303972  // used used in the traversal to access AST successor nodes
303973  // overridden in every class by *generated* implementation
303976  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
303977 
303978  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
303979  // than all the vector copies. The implementation for these functions is generated for each class.
303981  virtual size_t get_numberOfTraversalSuccessors() override;
303983  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
303985  virtual size_t get_childIndex(SgNode *child) override;
303986 
303987 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
303988  // MS: 08/16/2002 method for generating RTI information
303990  virtual RTIReturnType roseRTI() override;
303991 #endif
303992  /* */
303993 
303994 
303995 
303996  /* name Deprecated Functions
303997  \brief Deprecated functions ... incomplete-documentation
303998 
303999  These functions have been deprecated from use.
304000  */
304001  /* */
304002 
304004  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
304005 
304006  // JJW (10/16/2008): Changed to a single function in Node.code, and put
304007  // getVariant() in #if 0 block to prevent confusing Doxygen
304008 #if 0
304009 
304010  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
304012  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
304013 #endif
304014  /* */
304015 
304016 
304017 
304018 
304019  public:
304020  /* name Traversal Support Functions
304021  \brief Traversal support functions ... incomplete-documentation
304022 
304023  These functions have been made public as part of the design, but they are suggested for internal use
304024  or by particularly knowledgable users for specialized tools or applications.
304025  */
304026  /* */
304027 
304028  // DQ (11/26/2005): Support for visitor pattern mechanims
304029  // (inferior to ROSE traversal mechanism, experimental).
304033 
304034  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
304036  virtual void accept (ROSE_VisitorPattern & visitor) override;
304037 
304038  // DQ (12/26/2005): Support for traversal based on the memory pool
304041  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
304042 
304045  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
304046 
304047  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
304048  // This traversal helps support internal tools that call static member functions.
304049  // note: this function operates on the memory pools.
304052  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
304053  /* */
304054 
304055 
304056  public:
304057  /* name Memory Allocation Functions
304058  \brief Memory allocations functions ... incomplete-documentation
304059 
304060  These functions have been made public as part of the design, but they are suggested for internal use
304061  or by particularly knowledgable users for specialized tools or applications.
304062  */
304063  /* */
304064 
304075  virtual bool isInMemoryPool() override;
304076 
304087  virtual void checkDataMemberPointersIfInMemoryPool() override;
304088 
304089  // DQ (4/30/2006): Modified to be a const function.
304104  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
304105 
304115  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
304116 
304128  virtual long getChildIndex( SgNode* childNode ) const override;
304129 
304130  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
304131  // comment here (changed to be a C style comment and not be a doxygen comment).
304132  /* \brief Constructor for use by AST File I/O Mechanism
304133 
304134  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
304135  which obtained via fast binary file I/O from disk.
304136  */
304137  // SgStatementExpression( SgStatementExpressionStorageClass& source );
304138 
304139 
304140 
304141 
304142 
304143  // JH (10/24/2005): methods added to support the ast file IO
304144  private:
304145 
304146  /* name AST Memory Allocation Support Functions
304147  \brief Memory allocations support....
304148 
304149  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
304150  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
304151  and support the AST File I/O Mechanism.
304152  */
304153  /* */
304154 
304155  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
304156  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
304157  that I use the same type everywhere, if any changes are made. THe second one declares the type
304158  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
304159  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
304160  a correspinding one in the AST_FILE_IO class!
304161  */
304162  // DQ (9/2/2015): This typedef is no longer used, we can't define the
304163  // comment here (changed to be a C style comment and not be a doxygen comment).
304164  /* \brief Typedef used for low level memory access.
304165  */
304166  // typedef unsigned char* TestType;
304167 
304168  // DQ (9/2/2015): This typedef is no longer used, we can't define the
304169  // comment here (changed to be a C style comment and not be a doxygen comment).
304170  /* \brief Typedef used to hold memory addresses as values.
304171  */
304172  // typedef unsigned long AddressType;
304173 
304174 
304175 
304176  // necessary, to have direct access to the p_freepointer and the private methods !
304178  friend class AST_FILE_IO;
304179 
304181  friend class SgStatementExpressionStorageClass;
304182 
304184  friend class AstSpecificDataManagingClass;
304185 
304187  friend class AstSpecificDataManagingClassStorageClass;
304188 
304189  public:
304191  SgStatementExpression( const SgStatementExpressionStorageClass& source );
304192 
304193  // private: // JJW hack
304194  /*
304195  name AST Memory Allocation Support Variables
304196  Memory allocations support variables
304197 
304198  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
304199  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
304200  and support the AST File I/O Mechanism.
304201  */
304202  /* */
304203 
304204  public:
304205 
304206  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
304207  // to current node (so that it will work cleanly with build functions to specify patterns).
304208  // virtual SgNode* addRegExpAttribute();
304215 
304216 // *** COMMON CODE SECTION ENDS HERE ***
304217 
304218 
304219 // End of memberFunctionString
304220 // Start of memberFunctionString
304221 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
304222 
304223  // the generated cast function
304224  // friend ROSE_DLL_API SgStatementExpression* isSgStatementExpression ( SgNode* s );
304225 
304226  typedef SgExpression base_node_type;
304227 
304228 
304229 // End of memberFunctionString
304230 // Start of memberFunctionString
304231 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
304232 
304233  SgType* get_type() const override;
304234 
304235 
304236 // End of memberFunctionString
304237 // Start of memberFunctionString
304238 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
304239 
304240  void post_construction_initialization() override;
304241 
304242 
304243 // End of memberFunctionString
304244 
304245  public:
304246  SgStatement* get_statement() const;
304247  void set_statement(SgStatement* statement);
304248 
304249 
304250  public:
304251  virtual ~SgStatementExpression();
304252 
304253 
304254  public:
304255  SgStatementExpression(Sg_File_Info* startOfConstruct , SgStatement* statement = NULL);
304256  SgStatementExpression(SgStatement* statement);
304257 
304258  protected:
304259 // Start of memberFunctionString
304261 
304262 // End of memberFunctionString
304263 
304264 
304265 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
304266 
304267 
304268  };
304269 #endif
304270 
304271 // postdeclarations for SgStatementExpression
304272 
304273 /* #line 304274 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
304274 
304275 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
304276 
304277 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
304278 
304279 
304280 /* #line 304281 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
304281 
304282 
304283 
304284 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
304285 
304286 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
304287 // This code is automatically generated for each
304288 // terminal and non-terminal within the defined
304289 // grammar. There is a simple way to change the
304290 // code to fix bugs etc. See the ROSE README file
304291 // for directions.
304292 
304293 // tps: (02/22/2010): Adding DLL export requirements
304294 #include "rosedll.h"
304295 
304296 // predeclarations for SgAsmOp
304297 
304298 /* #line 304299 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
304299 
304300 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
304301 
304302 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
304303 
304304 #if 1
304305 // Class Definition for SgAsmOp
304306 class ROSE_DLL_API SgAsmOp : public SgExpression
304307  {
304308  public:
304309 
304310 
304311 /* #line 304312 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
304312 
304313  virtual SgNode* copy ( SgCopyHelp& help) const override;
304314 // Start of memberFunctionString
304315 /* #line 1652 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
304316 
304317 
304318  // DQ (7/22/2006): Added support for asm operands and their modifiers
304324  {
304325  e_unknown = 0x00,
304326  e_input = 0x01,
304327  e_output = 0x02,
304328  e_modify = 0x03,
304329  e_earlyclobber = 0x04,
304330  e_commutative = 0x08,
304331  e_ignore_next = 0x10,
304332  e_ignore_till_comma = 0x20,
304333  e_poor_choice = 0x40,
304334  e_bad_choice = 0x80
304335  };
304336 
304337  // DQ (7/22/2006): Added support for asm operands and their constraints
304343  {
304344  e_invalid = 0,
304345  e_end_of_constraint,
304349  /* modifiers */
304350  /* Note that these are parsed, but not acted upon by the front end. */
304352  e_mod_commutative_ops,
304355  e_mod_ignore_char,
304357  e_mod_disparage_slightly,
304359  e_mod_disparage_severely,
304361  /* misc */
304364  e_match_0, e_match_1, e_match_2, e_match_3, e_match_4,
304365  e_match_5, e_match_6, e_match_7, e_match_8, e_match_9,
304367  /* registers constraints */
304370  /* memory constraints */
304372  e_mem_load, /* p: any memory location that is valid for a load/
304373  push operation */
304374  e_mem_offset,
304379  /* immediate constraints */
304385  // DQ (7/22/2006): Let's assume we want to include these (controled by EDG's setting of GNU_X86_ASM_EXTENSIONS_ALLOWED start)
304386  /* register constraints */
304394  e_reg_q, /* q: ax bx cx dx, lower part only (non-x86-64),
304395  same as 'r' (x86-64) */
304396  e_reg_Q, /* Q: ax bx cx dx (non-x86-64), same as 'r' (x86-64) */
304403  /* immediate constraints */
304414  // DQ (7/22/2006): Let's assume we want to include these (controled by EDG's setting of GNU_X86_ASM_EXTENSIONS_ALLOWED end)
304415  e_last
304416  };
304417 
304418 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
304419  virtual unsigned int cfgIndexForEnd() const override;
304420  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
304421  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
304422 #endif
304423 
304424 
304425 
304426 // End of memberFunctionString
304427 // Start of memberFunctionString
304428 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
304429 
304430 // *** COMMON CODE SECTION BEGINS HERE ***
304431 
304432  public:
304433 
304434  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
304435  // and not required which is required to match the other aspects of the copy mechanism code generation.
304436  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
304437  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
304438  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
304439  // virtual SgNode* copy ( const SgCopyHelp & help) const;
304440 
304442  virtual std::string class_name() const override;
304443 
304445  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
304446 
304448  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
304449  // static const VariantT static_variant = V_SgAsmOp;
304450  enum { static_variant = V_SgAsmOp };
304451 
304452  /* the generated cast function */
304454  ROSE_DLL_API friend SgAsmOp* isSgAsmOp( SgNode * s );
304455 
304457  ROSE_DLL_API friend const SgAsmOp* isSgAsmOp( const SgNode * s );
304458 
304459  // ******************************************
304460  // * Memory Pool / New / Delete
304461  // ******************************************
304462 
304463  public:
304465  static const unsigned pool_size; //
304467  static std::vector<unsigned char *> pools; //
304469  static SgAsmOp * next_node; //
304470 
304472  static unsigned long initializeStorageClassArray(SgAsmOpStorageClass *); //
304473 
304475  static void clearMemoryPool(); //
304476  static void deleteMemoryPool(); //
304477 
304479  static void extendMemoryPoolForFileIO(); //
304480 
304482  static SgAsmOp * getPointerFromGlobalIndex(unsigned long); //
304484  static SgAsmOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
304485 
304487  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
304489  static void resetValidFreepointers(); //
304491  static unsigned long getNumberOfLastValidPointer(); //
304492 
304493 
304494 #if defined(INLINE_FUNCTIONS)
304495 
304496  inline void *operator new (size_t size);
304497 #else
304498 
304499  void *operator new (size_t size);
304500 #endif
304501 
304502  void operator delete (void* pointer, size_t size);
304503 
304504  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
304505  void operator delete (void* pointer)
304506  {
304507  // This is the generated delete operator...
304508  SgAsmOp::operator delete (pointer,sizeof(SgAsmOp));
304509  }
304510 
304512  static size_t numberOfNodes();
304513 
304515  static size_t memoryUsage();
304516 
304517  // End of scope which started in IR nodes specific code
304518  /* */
304519 
304520  /* name Internal Functions
304521  \brief Internal functions ... incomplete-documentation
304522 
304523  These functions have been made public as part of the design, but they are suggested for internal use
304524  or by particularly knowledgeable users for specialized tools or applications.
304525 
304526  \internal We could not make these private because they are required by user for special purposes. And
304527  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
304528 
304529  */
304530 
304531  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
304532  // overridden in every class by *generated* implementation
304534  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
304535  // MS: 06/28/02 container of names of variables or container indices
304536  // used used in the traversal to access AST successor nodes
304537  // overridden in every class by *generated* implementation
304540  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
304541 
304542  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
304543  // than all the vector copies. The implementation for these functions is generated for each class.
304545  virtual size_t get_numberOfTraversalSuccessors() override;
304547  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
304549  virtual size_t get_childIndex(SgNode *child) override;
304550 
304551 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
304552  // MS: 08/16/2002 method for generating RTI information
304554  virtual RTIReturnType roseRTI() override;
304555 #endif
304556  /* */
304557 
304558 
304559 
304560  /* name Deprecated Functions
304561  \brief Deprecated functions ... incomplete-documentation
304562 
304563  These functions have been deprecated from use.
304564  */
304565  /* */
304566 
304568  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
304569 
304570  // JJW (10/16/2008): Changed to a single function in Node.code, and put
304571  // getVariant() in #if 0 block to prevent confusing Doxygen
304572 #if 0
304573 
304574  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
304576  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
304577 #endif
304578  /* */
304579 
304580 
304581 
304582 
304583  public:
304584  /* name Traversal Support Functions
304585  \brief Traversal support functions ... incomplete-documentation
304586 
304587  These functions have been made public as part of the design, but they are suggested for internal use
304588  or by particularly knowledgable users for specialized tools or applications.
304589  */
304590  /* */
304591 
304592  // DQ (11/26/2005): Support for visitor pattern mechanims
304593  // (inferior to ROSE traversal mechanism, experimental).
304597 
304598  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
304600  virtual void accept (ROSE_VisitorPattern & visitor) override;
304601 
304602  // DQ (12/26/2005): Support for traversal based on the memory pool
304605  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
304606 
304609  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
304610 
304611  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
304612  // This traversal helps support internal tools that call static member functions.
304613  // note: this function operates on the memory pools.
304616  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
304617  /* */
304618 
304619 
304620  public:
304621  /* name Memory Allocation Functions
304622  \brief Memory allocations functions ... incomplete-documentation
304623 
304624  These functions have been made public as part of the design, but they are suggested for internal use
304625  or by particularly knowledgable users for specialized tools or applications.
304626  */
304627  /* */
304628 
304639  virtual bool isInMemoryPool() override;
304640 
304651  virtual void checkDataMemberPointersIfInMemoryPool() override;
304652 
304653  // DQ (4/30/2006): Modified to be a const function.
304668  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
304669 
304679  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
304680 
304692  virtual long getChildIndex( SgNode* childNode ) const override;
304693 
304694  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
304695  // comment here (changed to be a C style comment and not be a doxygen comment).
304696  /* \brief Constructor for use by AST File I/O Mechanism
304697 
304698  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
304699  which obtained via fast binary file I/O from disk.
304700  */
304701  // SgAsmOp( SgAsmOpStorageClass& source );
304702 
304703 
304704 
304705 
304706 
304707  // JH (10/24/2005): methods added to support the ast file IO
304708  private:
304709 
304710  /* name AST Memory Allocation Support Functions
304711  \brief Memory allocations support....
304712 
304713  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
304714  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
304715  and support the AST File I/O Mechanism.
304716  */
304717  /* */
304718 
304719  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
304720  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
304721  that I use the same type everywhere, if any changes are made. THe second one declares the type
304722  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
304723  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
304724  a correspinding one in the AST_FILE_IO class!
304725  */
304726  // DQ (9/2/2015): This typedef is no longer used, we can't define the
304727  // comment here (changed to be a C style comment and not be a doxygen comment).
304728  /* \brief Typedef used for low level memory access.
304729  */
304730  // typedef unsigned char* TestType;
304731 
304732  // DQ (9/2/2015): This typedef is no longer used, we can't define the
304733  // comment here (changed to be a C style comment and not be a doxygen comment).
304734  /* \brief Typedef used to hold memory addresses as values.
304735  */
304736  // typedef unsigned long AddressType;
304737 
304738 
304739 
304740  // necessary, to have direct access to the p_freepointer and the private methods !
304742  friend class AST_FILE_IO;
304743 
304745  friend class SgAsmOpStorageClass;
304746 
304748  friend class AstSpecificDataManagingClass;
304749 
304751  friend class AstSpecificDataManagingClassStorageClass;
304752 
304753  public:
304755  SgAsmOp( const SgAsmOpStorageClass& source );
304756 
304757  // private: // JJW hack
304758  /*
304759  name AST Memory Allocation Support Variables
304760  Memory allocations support variables
304761 
304762  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
304763  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
304764  and support the AST File I/O Mechanism.
304765  */
304766  /* */
304767 
304768  public:
304769 
304770  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
304771  // to current node (so that it will work cleanly with build functions to specify patterns).
304772  // virtual SgNode* addRegExpAttribute();
304778  SgAsmOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
304779 
304780 // *** COMMON CODE SECTION ENDS HERE ***
304781 
304782 
304783 // End of memberFunctionString
304784 // Start of memberFunctionString
304785 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
304786 
304787  // the generated cast function
304788  // friend ROSE_DLL_API SgAsmOp* isSgAsmOp ( SgNode* s );
304789 
304790  typedef SgExpression base_node_type;
304791 
304792 
304793 // End of memberFunctionString
304794 // Start of memberFunctionString
304795 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
304796 
304797  SgType* get_type() const override;
304798 
304799 
304800 // End of memberFunctionString
304801 // Start of memberFunctionString
304802 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
304803 
304804  void post_construction_initialization() override;
304805 
304806 
304807 // End of memberFunctionString
304808 
304809  public:
304810  SgAsmOp::asm_operand_constraint_enum get_constraint() const;
304811  void set_constraint(SgAsmOp::asm_operand_constraint_enum constraint);
304812 
304813  public:
304814  SgAsmOp::asm_operand_modifier_enum get_modifiers() const;
304815  void set_modifiers(SgAsmOp::asm_operand_modifier_enum modifiers);
304816 
304817  public:
304818  SgExpression* get_expression() const;
304819  void set_expression(SgExpression* expression);
304820 
304821  public:
304822  bool get_recordRawAsmOperandDescriptions() const;
304823  void set_recordRawAsmOperandDescriptions(bool recordRawAsmOperandDescriptions);
304824 
304825  public:
304826  bool get_isOutputOperand() const;
304827  void set_isOutputOperand(bool isOutputOperand);
304828 
304829  public:
304830  std::string get_constraintString() const;
304831  void set_constraintString(std::string constraintString);
304832 
304833  public:
304834  std::string get_name() const /* (getDataAccessFunctionPrototypeString) */;
304835  void set_name(std::string name) /* (getDataAccessFunctionPrototypeString) */;
304836 
304837 
304838  public:
304839  virtual ~SgAsmOp();
304840 
304841 
304842  public:
304843  SgAsmOp(Sg_File_Info* startOfConstruct , SgAsmOp::asm_operand_constraint_enum constraint = SgAsmOp::e_invalid, SgAsmOp::asm_operand_modifier_enum modifiers = SgAsmOp::e_unknown, SgExpression* expression = NULL);
304845 
304846  protected:
304847 // Start of memberFunctionString
304848 SgAsmOp::asm_operand_constraint_enum p_constraint;
304849 
304850 // End of memberFunctionString
304851 // Start of memberFunctionString
304852 SgAsmOp::asm_operand_modifier_enum p_modifiers;
304853 
304854 // End of memberFunctionString
304855 // Start of memberFunctionString
304856 SgExpression* p_expression;
304857 
304858 // End of memberFunctionString
304859 // Start of memberFunctionString
304860 bool p_recordRawAsmOperandDescriptions;
304861 
304862 // End of memberFunctionString
304863 // Start of memberFunctionString
304864 bool p_isOutputOperand;
304865 
304866 // End of memberFunctionString
304867 // Start of memberFunctionString
304868 std::string p_constraintString;
304869 
304870 // End of memberFunctionString
304871 // Start of memberFunctionString
304872 std::string p_name;
304873 
304874 // End of memberFunctionString
304875 
304876 
304877 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
304878 
304879 
304880  };
304881 #endif
304882 
304883 // postdeclarations for SgAsmOp
304884 
304885 /* #line 304886 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
304886 
304887 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
304888 
304889 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
304890 
304891 
304892 /* #line 304893 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
304893 
304894 
304895 
304896 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
304897 
304898 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
304899 // This code is automatically generated for each
304900 // terminal and non-terminal within the defined
304901 // grammar. There is a simple way to change the
304902 // code to fix bugs etc. See the ROSE README file
304903 // for directions.
304904 
304905 // tps: (02/22/2010): Adding DLL export requirements
304906 #include "rosedll.h"
304907 
304908 // predeclarations for SgLabelRefExp
304909 
304910 /* #line 304911 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
304911 
304912 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
304913 
304914 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
304915 
304916 #if 1
304917 // Class Definition for SgLabelRefExp
304918 class ROSE_DLL_API SgLabelRefExp : public SgExpression
304919  {
304920  public:
304921 
304922 
304923 /* #line 304924 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
304924 
304925  virtual SgNode* copy ( SgCopyHelp& help) const override;
304926 // Start of memberFunctionString
304927 /* #line 361 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
304928 
304929 
304930 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
304931  virtual unsigned int cfgIndexForEnd() const override;
304932  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
304933  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
304934 #endif
304935 
304936  SgName get_name() const;
304937  // const SgName & get_name() const;
304938 
304939  int get_numeric_label_value() const;
304940 
304941  // DQ (12/30/2007): I don't think there is any control flow through this sorts of variables, but this
304942  // should be discussed (might apply to assigned goto).
304943  // virtual unsigned int cfgIndexForEnd() const;
304944  // virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index);
304945  // virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index);
304946 
304947  // DQ (2/2/2011): This is support for Fortran alternative return type arguments.
304949  bool isFunctionCallArgumentForAlternativeReturnType() const;
304950 
304951 
304952 
304953 // End of memberFunctionString
304954 // Start of memberFunctionString
304955 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
304956 
304957 // *** COMMON CODE SECTION BEGINS HERE ***
304958 
304959  public:
304960 
304961  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
304962  // and not required which is required to match the other aspects of the copy mechanism code generation.
304963  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
304964  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
304965  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
304966  // virtual SgNode* copy ( const SgCopyHelp & help) const;
304967 
304969  virtual std::string class_name() const override;
304970 
304972  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
304973 
304975  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
304976  // static const VariantT static_variant = V_SgLabelRefExp;
304977  enum { static_variant = V_SgLabelRefExp };
304978 
304979  /* the generated cast function */
304981  ROSE_DLL_API friend SgLabelRefExp* isSgLabelRefExp( SgNode * s );
304982 
304984  ROSE_DLL_API friend const SgLabelRefExp* isSgLabelRefExp( const SgNode * s );
304985 
304986  // ******************************************
304987  // * Memory Pool / New / Delete
304988  // ******************************************
304989 
304990  public:
304992  static const unsigned pool_size; //
304994  static std::vector<unsigned char *> pools; //
304996  static SgLabelRefExp * next_node; //
304997 
304999  static unsigned long initializeStorageClassArray(SgLabelRefExpStorageClass *); //
305000 
305002  static void clearMemoryPool(); //
305003  static void deleteMemoryPool(); //
305004 
305006  static void extendMemoryPoolForFileIO(); //
305007 
305009  static SgLabelRefExp * getPointerFromGlobalIndex(unsigned long); //
305011  static SgLabelRefExp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
305012 
305014  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
305016  static void resetValidFreepointers(); //
305018  static unsigned long getNumberOfLastValidPointer(); //
305019 
305020 
305021 #if defined(INLINE_FUNCTIONS)
305022 
305023  inline void *operator new (size_t size);
305024 #else
305025 
305026  void *operator new (size_t size);
305027 #endif
305028 
305029  void operator delete (void* pointer, size_t size);
305030 
305031  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
305032  void operator delete (void* pointer)
305033  {
305034  // This is the generated delete operator...
305035  SgLabelRefExp::operator delete (pointer,sizeof(SgLabelRefExp));
305036  }
305037 
305039  static size_t numberOfNodes();
305040 
305042  static size_t memoryUsage();
305043 
305044  // End of scope which started in IR nodes specific code
305045  /* */
305046 
305047  /* name Internal Functions
305048  \brief Internal functions ... incomplete-documentation
305049 
305050  These functions have been made public as part of the design, but they are suggested for internal use
305051  or by particularly knowledgeable users for specialized tools or applications.
305052 
305053  \internal We could not make these private because they are required by user for special purposes. And
305054  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
305055 
305056  */
305057 
305058  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
305059  // overridden in every class by *generated* implementation
305061  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
305062  // MS: 06/28/02 container of names of variables or container indices
305063  // used used in the traversal to access AST successor nodes
305064  // overridden in every class by *generated* implementation
305067  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
305068 
305069  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
305070  // than all the vector copies. The implementation for these functions is generated for each class.
305072  virtual size_t get_numberOfTraversalSuccessors() override;
305074  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
305076  virtual size_t get_childIndex(SgNode *child) override;
305077 
305078 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
305079  // MS: 08/16/2002 method for generating RTI information
305081  virtual RTIReturnType roseRTI() override;
305082 #endif
305083  /* */
305084 
305085 
305086 
305087  /* name Deprecated Functions
305088  \brief Deprecated functions ... incomplete-documentation
305089 
305090  These functions have been deprecated from use.
305091  */
305092  /* */
305093 
305095  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
305096 
305097  // JJW (10/16/2008): Changed to a single function in Node.code, and put
305098  // getVariant() in #if 0 block to prevent confusing Doxygen
305099 #if 0
305100 
305101  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
305103  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
305104 #endif
305105  /* */
305106 
305107 
305108 
305109 
305110  public:
305111  /* name Traversal Support Functions
305112  \brief Traversal support functions ... incomplete-documentation
305113 
305114  These functions have been made public as part of the design, but they are suggested for internal use
305115  or by particularly knowledgable users for specialized tools or applications.
305116  */
305117  /* */
305118 
305119  // DQ (11/26/2005): Support for visitor pattern mechanims
305120  // (inferior to ROSE traversal mechanism, experimental).
305124 
305125  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
305127  virtual void accept (ROSE_VisitorPattern & visitor) override;
305128 
305129  // DQ (12/26/2005): Support for traversal based on the memory pool
305132  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
305133 
305136  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
305137 
305138  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
305139  // This traversal helps support internal tools that call static member functions.
305140  // note: this function operates on the memory pools.
305143  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
305144  /* */
305145 
305146 
305147  public:
305148  /* name Memory Allocation Functions
305149  \brief Memory allocations functions ... incomplete-documentation
305150 
305151  These functions have been made public as part of the design, but they are suggested for internal use
305152  or by particularly knowledgable users for specialized tools or applications.
305153  */
305154  /* */
305155 
305166  virtual bool isInMemoryPool() override;
305167 
305178  virtual void checkDataMemberPointersIfInMemoryPool() override;
305179 
305180  // DQ (4/30/2006): Modified to be a const function.
305195  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
305196 
305206  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
305207 
305219  virtual long getChildIndex( SgNode* childNode ) const override;
305220 
305221  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
305222  // comment here (changed to be a C style comment and not be a doxygen comment).
305223  /* \brief Constructor for use by AST File I/O Mechanism
305224 
305225  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
305226  which obtained via fast binary file I/O from disk.
305227  */
305228  // SgLabelRefExp( SgLabelRefExpStorageClass& source );
305229 
305230 
305231 
305232 
305233 
305234  // JH (10/24/2005): methods added to support the ast file IO
305235  private:
305236 
305237  /* name AST Memory Allocation Support Functions
305238  \brief Memory allocations support....
305239 
305240  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
305241  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
305242  and support the AST File I/O Mechanism.
305243  */
305244  /* */
305245 
305246  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
305247  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
305248  that I use the same type everywhere, if any changes are made. THe second one declares the type
305249  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
305250  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
305251  a correspinding one in the AST_FILE_IO class!
305252  */
305253  // DQ (9/2/2015): This typedef is no longer used, we can't define the
305254  // comment here (changed to be a C style comment and not be a doxygen comment).
305255  /* \brief Typedef used for low level memory access.
305256  */
305257  // typedef unsigned char* TestType;
305258 
305259  // DQ (9/2/2015): This typedef is no longer used, we can't define the
305260  // comment here (changed to be a C style comment and not be a doxygen comment).
305261  /* \brief Typedef used to hold memory addresses as values.
305262  */
305263  // typedef unsigned long AddressType;
305264 
305265 
305266 
305267  // necessary, to have direct access to the p_freepointer and the private methods !
305269  friend class AST_FILE_IO;
305270 
305272  friend class SgLabelRefExpStorageClass;
305273 
305275  friend class AstSpecificDataManagingClass;
305276 
305278  friend class AstSpecificDataManagingClassStorageClass;
305279 
305280  public:
305282  SgLabelRefExp( const SgLabelRefExpStorageClass& source );
305283 
305284  // private: // JJW hack
305285  /*
305286  name AST Memory Allocation Support Variables
305287  Memory allocations support variables
305288 
305289  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
305290  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
305291  and support the AST File I/O Mechanism.
305292  */
305293  /* */
305294 
305295  public:
305296 
305297  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
305298  // to current node (so that it will work cleanly with build functions to specify patterns).
305299  // virtual SgNode* addRegExpAttribute();
305305  SgLabelRefExp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
305306 
305307 // *** COMMON CODE SECTION ENDS HERE ***
305308 
305309 
305310 // End of memberFunctionString
305311 // Start of memberFunctionString
305312 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
305313 
305314  // the generated cast function
305315  // friend ROSE_DLL_API SgLabelRefExp* isSgLabelRefExp ( SgNode* s );
305316 
305317  typedef SgExpression base_node_type;
305318 
305319 
305320 // End of memberFunctionString
305321 // Start of memberFunctionString
305322 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
305323 
305324  SgType* get_type() const override;
305325 
305326 
305327 // End of memberFunctionString
305328 // Start of memberFunctionString
305329 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
305330 
305331  void post_construction_initialization() override;
305332 
305333 
305334 // End of memberFunctionString
305335 
305336  public:
305337  SgLabelSymbol* get_symbol() const;
305338  void set_symbol(SgLabelSymbol* symbol);
305339 
305340 
305341  public:
305342  virtual ~SgLabelRefExp();
305343 
305344 
305345  public:
305346  SgLabelRefExp(Sg_File_Info* startOfConstruct , SgLabelSymbol* symbol = NULL);
305347  SgLabelRefExp(SgLabelSymbol* symbol);
305348 
305349  protected:
305350 // Start of memberFunctionString
305351 SgLabelSymbol* p_symbol;
305352 
305353 // End of memberFunctionString
305354 
305355 
305356 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
305357 
305358 
305359  };
305360 #endif
305361 
305362 // postdeclarations for SgLabelRefExp
305363 
305364 /* #line 305365 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
305365 
305366 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
305367 
305368 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
305369 
305370 
305371 /* #line 305372 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
305372 
305373 
305374 
305375 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
305376 
305377 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
305378 // This code is automatically generated for each
305379 // terminal and non-terminal within the defined
305380 // grammar. There is a simple way to change the
305381 // code to fix bugs etc. See the ROSE README file
305382 // for directions.
305383 
305384 // tps: (02/22/2010): Adding DLL export requirements
305385 #include "rosedll.h"
305386 
305387 // predeclarations for SgActualArgumentExpression
305388 
305389 /* #line 305390 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
305390 
305391 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
305392 
305393 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
305394 
305395 #if 1
305396 // Class Definition for SgActualArgumentExpression
305397 class ROSE_DLL_API SgActualArgumentExpression : public SgExpression
305398  {
305399  public:
305400 
305401 
305402 /* #line 305403 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
305403 
305404  virtual SgNode* copy ( SgCopyHelp& help) const override;
305405 // Start of memberFunctionString
305406 /* #line 1815 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
305407 
305408 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
305409  virtual unsigned int cfgIndexForEnd() const override;
305410  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
305411  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
305412 #endif
305413 
305414 
305415 
305416 // End of memberFunctionString
305417 // Start of memberFunctionString
305418 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
305419 
305420 // *** COMMON CODE SECTION BEGINS HERE ***
305421 
305422  public:
305423 
305424  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
305425  // and not required which is required to match the other aspects of the copy mechanism code generation.
305426  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
305427  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
305428  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
305429  // virtual SgNode* copy ( const SgCopyHelp & help) const;
305430 
305432  virtual std::string class_name() const override;
305433 
305435  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
305436 
305438  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
305439  // static const VariantT static_variant = V_SgActualArgumentExpression;
305440  enum { static_variant = V_SgActualArgumentExpression };
305441 
305442  /* the generated cast function */
305444  ROSE_DLL_API friend SgActualArgumentExpression* isSgActualArgumentExpression( SgNode * s );
305445 
305447  ROSE_DLL_API friend const SgActualArgumentExpression* isSgActualArgumentExpression( const SgNode * s );
305448 
305449  // ******************************************
305450  // * Memory Pool / New / Delete
305451  // ******************************************
305452 
305453  public:
305455  static const unsigned pool_size; //
305457  static std::vector<unsigned char *> pools; //
305459  static SgActualArgumentExpression * next_node; //
305460 
305462  static unsigned long initializeStorageClassArray(SgActualArgumentExpressionStorageClass *); //
305463 
305465  static void clearMemoryPool(); //
305466  static void deleteMemoryPool(); //
305467 
305469  static void extendMemoryPoolForFileIO(); //
305470 
305472  static SgActualArgumentExpression * getPointerFromGlobalIndex(unsigned long); //
305474  static SgActualArgumentExpression * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
305475 
305477  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
305479  static void resetValidFreepointers(); //
305481  static unsigned long getNumberOfLastValidPointer(); //
305482 
305483 
305484 #if defined(INLINE_FUNCTIONS)
305485 
305486  inline void *operator new (size_t size);
305487 #else
305488 
305489  void *operator new (size_t size);
305490 #endif
305491 
305492  void operator delete (void* pointer, size_t size);
305493 
305494  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
305495  void operator delete (void* pointer)
305496  {
305497  // This is the generated delete operator...
305498  SgActualArgumentExpression::operator delete (pointer,sizeof(SgActualArgumentExpression));
305499  }
305500 
305502  static size_t numberOfNodes();
305503 
305505  static size_t memoryUsage();
305506 
305507  // End of scope which started in IR nodes specific code
305508  /* */
305509 
305510  /* name Internal Functions
305511  \brief Internal functions ... incomplete-documentation
305512 
305513  These functions have been made public as part of the design, but they are suggested for internal use
305514  or by particularly knowledgeable users for specialized tools or applications.
305515 
305516  \internal We could not make these private because they are required by user for special purposes. And
305517  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
305518 
305519  */
305520 
305521  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
305522  // overridden in every class by *generated* implementation
305524  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
305525  // MS: 06/28/02 container of names of variables or container indices
305526  // used used in the traversal to access AST successor nodes
305527  // overridden in every class by *generated* implementation
305530  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
305531 
305532  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
305533  // than all the vector copies. The implementation for these functions is generated for each class.
305535  virtual size_t get_numberOfTraversalSuccessors() override;
305537  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
305539  virtual size_t get_childIndex(SgNode *child) override;
305540 
305541 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
305542  // MS: 08/16/2002 method for generating RTI information
305544  virtual RTIReturnType roseRTI() override;
305545 #endif
305546  /* */
305547 
305548 
305549 
305550  /* name Deprecated Functions
305551  \brief Deprecated functions ... incomplete-documentation
305552 
305553  These functions have been deprecated from use.
305554  */
305555  /* */
305556 
305558  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
305559 
305560  // JJW (10/16/2008): Changed to a single function in Node.code, and put
305561  // getVariant() in #if 0 block to prevent confusing Doxygen
305562 #if 0
305563 
305564  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
305566  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
305567 #endif
305568  /* */
305569 
305570 
305571 
305572 
305573  public:
305574  /* name Traversal Support Functions
305575  \brief Traversal support functions ... incomplete-documentation
305576 
305577  These functions have been made public as part of the design, but they are suggested for internal use
305578  or by particularly knowledgable users for specialized tools or applications.
305579  */
305580  /* */
305581 
305582  // DQ (11/26/2005): Support for visitor pattern mechanims
305583  // (inferior to ROSE traversal mechanism, experimental).
305587 
305588  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
305590  virtual void accept (ROSE_VisitorPattern & visitor) override;
305591 
305592  // DQ (12/26/2005): Support for traversal based on the memory pool
305595  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
305596 
305599  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
305600 
305601  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
305602  // This traversal helps support internal tools that call static member functions.
305603  // note: this function operates on the memory pools.
305606  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
305607  /* */
305608 
305609 
305610  public:
305611  /* name Memory Allocation Functions
305612  \brief Memory allocations functions ... incomplete-documentation
305613 
305614  These functions have been made public as part of the design, but they are suggested for internal use
305615  or by particularly knowledgable users for specialized tools or applications.
305616  */
305617  /* */
305618 
305629  virtual bool isInMemoryPool() override;
305630 
305641  virtual void checkDataMemberPointersIfInMemoryPool() override;
305642 
305643  // DQ (4/30/2006): Modified to be a const function.
305658  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
305659 
305669  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
305670 
305682  virtual long getChildIndex( SgNode* childNode ) const override;
305683 
305684  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
305685  // comment here (changed to be a C style comment and not be a doxygen comment).
305686  /* \brief Constructor for use by AST File I/O Mechanism
305687 
305688  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
305689  which obtained via fast binary file I/O from disk.
305690  */
305691  // SgActualArgumentExpression( SgActualArgumentExpressionStorageClass& source );
305692 
305693 
305694 
305695 
305696 
305697  // JH (10/24/2005): methods added to support the ast file IO
305698  private:
305699 
305700  /* name AST Memory Allocation Support Functions
305701  \brief Memory allocations support....
305702 
305703  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
305704  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
305705  and support the AST File I/O Mechanism.
305706  */
305707  /* */
305708 
305709  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
305710  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
305711  that I use the same type everywhere, if any changes are made. THe second one declares the type
305712  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
305713  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
305714  a correspinding one in the AST_FILE_IO class!
305715  */
305716  // DQ (9/2/2015): This typedef is no longer used, we can't define the
305717  // comment here (changed to be a C style comment and not be a doxygen comment).
305718  /* \brief Typedef used for low level memory access.
305719  */
305720  // typedef unsigned char* TestType;
305721 
305722  // DQ (9/2/2015): This typedef is no longer used, we can't define the
305723  // comment here (changed to be a C style comment and not be a doxygen comment).
305724  /* \brief Typedef used to hold memory addresses as values.
305725  */
305726  // typedef unsigned long AddressType;
305727 
305728 
305729 
305730  // necessary, to have direct access to the p_freepointer and the private methods !
305732  friend class AST_FILE_IO;
305733 
305735  friend class SgActualArgumentExpressionStorageClass;
305736 
305738  friend class AstSpecificDataManagingClass;
305739 
305741  friend class AstSpecificDataManagingClassStorageClass;
305742 
305743  public:
305745  SgActualArgumentExpression( const SgActualArgumentExpressionStorageClass& source );
305746 
305747  // private: // JJW hack
305748  /*
305749  name AST Memory Allocation Support Variables
305750  Memory allocations support variables
305751 
305752  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
305753  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
305754  and support the AST File I/O Mechanism.
305755  */
305756  /* */
305757 
305758  public:
305759 
305760  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
305761  // to current node (so that it will work cleanly with build functions to specify patterns).
305762  // virtual SgNode* addRegExpAttribute();
305769 
305770 // *** COMMON CODE SECTION ENDS HERE ***
305771 
305772 
305773 // End of memberFunctionString
305774 // Start of memberFunctionString
305775 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
305776 
305777  // the generated cast function
305778  // friend ROSE_DLL_API SgActualArgumentExpression* isSgActualArgumentExpression ( SgNode* s );
305779 
305780  typedef SgExpression base_node_type;
305781 
305782 
305783 // End of memberFunctionString
305784 // Start of memberFunctionString
305785 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
305786 
305787  SgType* get_type() const override;
305788 
305789 
305790 // End of memberFunctionString
305791 // Start of memberFunctionString
305792 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
305793 
305794  void post_construction_initialization() override;
305795 
305796 
305797 // End of memberFunctionString
305798 
305799  public:
305800  SgName get_argument_name() const;
305801  void set_argument_name(SgName argument_name);
305802 
305803  public:
305804  SgExpression* get_expression() const;
305805  void set_expression(SgExpression* expression);
305806 
305807 
305808  public:
305809  virtual ~SgActualArgumentExpression();
305810 
305811 
305812  public:
305813  SgActualArgumentExpression(Sg_File_Info* startOfConstruct , SgName argument_name = "", SgExpression* expression = NULL);
305814  SgActualArgumentExpression(SgName argument_name, SgExpression* expression);
305815 
305816  protected:
305817 // Start of memberFunctionString
305818 SgName p_argument_name;
305819 
305820 // End of memberFunctionString
305821 // Start of memberFunctionString
305822 SgExpression* p_expression;
305823 
305824 // End of memberFunctionString
305825 
305826 
305827 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
305828 
305829 
305830  };
305831 #endif
305832 
305833 // postdeclarations for SgActualArgumentExpression
305834 
305835 /* #line 305836 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
305836 
305837 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
305838 
305839 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
305840 
305841 
305842 /* #line 305843 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
305843 
305844 
305845 
305846 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
305847 
305848 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
305849 // This code is automatically generated for each
305850 // terminal and non-terminal within the defined
305851 // grammar. There is a simple way to change the
305852 // code to fix bugs etc. See the ROSE README file
305853 // for directions.
305854 
305855 // tps: (02/22/2010): Adding DLL export requirements
305856 #include "rosedll.h"
305857 
305858 // predeclarations for SgUnknownArrayOrFunctionReference
305859 
305860 /* #line 305861 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
305861 
305862 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
305863 
305864 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
305865 
305866 #if 1
305867 // Class Definition for SgUnknownArrayOrFunctionReference
305869  {
305870  public:
305871 
305872 
305873 /* #line 305874 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
305874 
305875  virtual SgNode* copy ( SgCopyHelp& help) const override;
305876 // Start of memberFunctionString
305877 /* #line 1812 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
305878 
305879 
305880 
305881 // End of memberFunctionString
305882 // Start of memberFunctionString
305883 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
305884 
305885 // *** COMMON CODE SECTION BEGINS HERE ***
305886 
305887  public:
305888 
305889  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
305890  // and not required which is required to match the other aspects of the copy mechanism code generation.
305891  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
305892  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
305893  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
305894  // virtual SgNode* copy ( const SgCopyHelp & help) const;
305895 
305897  virtual std::string class_name() const override;
305898 
305900  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
305901 
305903  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
305904  // static const VariantT static_variant = V_SgUnknownArrayOrFunctionReference;
305905  enum { static_variant = V_SgUnknownArrayOrFunctionReference };
305906 
305907  /* the generated cast function */
305909  ROSE_DLL_API friend SgUnknownArrayOrFunctionReference* isSgUnknownArrayOrFunctionReference( SgNode * s );
305910 
305912  ROSE_DLL_API friend const SgUnknownArrayOrFunctionReference* isSgUnknownArrayOrFunctionReference( const SgNode * s );
305913 
305914  // ******************************************
305915  // * Memory Pool / New / Delete
305916  // ******************************************
305917 
305918  public:
305920  static const unsigned pool_size; //
305922  static std::vector<unsigned char *> pools; //
305924  static SgUnknownArrayOrFunctionReference * next_node; //
305925 
305927  static unsigned long initializeStorageClassArray(SgUnknownArrayOrFunctionReferenceStorageClass *); //
305928 
305930  static void clearMemoryPool(); //
305931  static void deleteMemoryPool(); //
305932 
305934  static void extendMemoryPoolForFileIO(); //
305935 
305937  static SgUnknownArrayOrFunctionReference * getPointerFromGlobalIndex(unsigned long); //
305939  static SgUnknownArrayOrFunctionReference * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
305940 
305942  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
305944  static void resetValidFreepointers(); //
305946  static unsigned long getNumberOfLastValidPointer(); //
305947 
305948 
305949 #if defined(INLINE_FUNCTIONS)
305950 
305951  inline void *operator new (size_t size);
305952 #else
305953 
305954  void *operator new (size_t size);
305955 #endif
305956 
305957  void operator delete (void* pointer, size_t size);
305958 
305959  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
305960  void operator delete (void* pointer)
305961  {
305962  // This is the generated delete operator...
305963  SgUnknownArrayOrFunctionReference::operator delete (pointer,sizeof(SgUnknownArrayOrFunctionReference));
305964  }
305965 
305967  static size_t numberOfNodes();
305968 
305970  static size_t memoryUsage();
305971 
305972  // End of scope which started in IR nodes specific code
305973  /* */
305974 
305975  /* name Internal Functions
305976  \brief Internal functions ... incomplete-documentation
305977 
305978  These functions have been made public as part of the design, but they are suggested for internal use
305979  or by particularly knowledgeable users for specialized tools or applications.
305980 
305981  \internal We could not make these private because they are required by user for special purposes. And
305982  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
305983 
305984  */
305985 
305986  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
305987  // overridden in every class by *generated* implementation
305989  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
305990  // MS: 06/28/02 container of names of variables or container indices
305991  // used used in the traversal to access AST successor nodes
305992  // overridden in every class by *generated* implementation
305995  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
305996 
305997  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
305998  // than all the vector copies. The implementation for these functions is generated for each class.
306000  virtual size_t get_numberOfTraversalSuccessors() override;
306002  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
306004  virtual size_t get_childIndex(SgNode *child) override;
306005 
306006 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
306007  // MS: 08/16/2002 method for generating RTI information
306009  virtual RTIReturnType roseRTI() override;
306010 #endif
306011  /* */
306012 
306013 
306014 
306015  /* name Deprecated Functions
306016  \brief Deprecated functions ... incomplete-documentation
306017 
306018  These functions have been deprecated from use.
306019  */
306020  /* */
306021 
306023  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
306024 
306025  // JJW (10/16/2008): Changed to a single function in Node.code, and put
306026  // getVariant() in #if 0 block to prevent confusing Doxygen
306027 #if 0
306028 
306029  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
306031  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
306032 #endif
306033  /* */
306034 
306035 
306036 
306037 
306038  public:
306039  /* name Traversal Support Functions
306040  \brief Traversal support functions ... incomplete-documentation
306041 
306042  These functions have been made public as part of the design, but they are suggested for internal use
306043  or by particularly knowledgable users for specialized tools or applications.
306044  */
306045  /* */
306046 
306047  // DQ (11/26/2005): Support for visitor pattern mechanims
306048  // (inferior to ROSE traversal mechanism, experimental).
306052 
306053  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
306055  virtual void accept (ROSE_VisitorPattern & visitor) override;
306056 
306057  // DQ (12/26/2005): Support for traversal based on the memory pool
306060  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
306061 
306064  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
306065 
306066  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
306067  // This traversal helps support internal tools that call static member functions.
306068  // note: this function operates on the memory pools.
306071  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
306072  /* */
306073 
306074 
306075  public:
306076  /* name Memory Allocation Functions
306077  \brief Memory allocations functions ... incomplete-documentation
306078 
306079  These functions have been made public as part of the design, but they are suggested for internal use
306080  or by particularly knowledgable users for specialized tools or applications.
306081  */
306082  /* */
306083 
306094  virtual bool isInMemoryPool() override;
306095 
306106  virtual void checkDataMemberPointersIfInMemoryPool() override;
306107 
306108  // DQ (4/30/2006): Modified to be a const function.
306123  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
306124 
306134  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
306135 
306147  virtual long getChildIndex( SgNode* childNode ) const override;
306148 
306149  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
306150  // comment here (changed to be a C style comment and not be a doxygen comment).
306151  /* \brief Constructor for use by AST File I/O Mechanism
306152 
306153  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
306154  which obtained via fast binary file I/O from disk.
306155  */
306156  // SgUnknownArrayOrFunctionReference( SgUnknownArrayOrFunctionReferenceStorageClass& source );
306157 
306158 
306159 
306160 
306161 
306162  // JH (10/24/2005): methods added to support the ast file IO
306163  private:
306164 
306165  /* name AST Memory Allocation Support Functions
306166  \brief Memory allocations support....
306167 
306168  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
306169  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
306170  and support the AST File I/O Mechanism.
306171  */
306172  /* */
306173 
306174  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
306175  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
306176  that I use the same type everywhere, if any changes are made. THe second one declares the type
306177  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
306178  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
306179  a correspinding one in the AST_FILE_IO class!
306180  */
306181  // DQ (9/2/2015): This typedef is no longer used, we can't define the
306182  // comment here (changed to be a C style comment and not be a doxygen comment).
306183  /* \brief Typedef used for low level memory access.
306184  */
306185  // typedef unsigned char* TestType;
306186 
306187  // DQ (9/2/2015): This typedef is no longer used, we can't define the
306188  // comment here (changed to be a C style comment and not be a doxygen comment).
306189  /* \brief Typedef used to hold memory addresses as values.
306190  */
306191  // typedef unsigned long AddressType;
306192 
306193 
306194 
306195  // necessary, to have direct access to the p_freepointer and the private methods !
306197  friend class AST_FILE_IO;
306198 
306200  friend class SgUnknownArrayOrFunctionReferenceStorageClass;
306201 
306203  friend class AstSpecificDataManagingClass;
306204 
306206  friend class AstSpecificDataManagingClassStorageClass;
306207 
306208  public:
306210  SgUnknownArrayOrFunctionReference( const SgUnknownArrayOrFunctionReferenceStorageClass& source );
306211 
306212  // private: // JJW hack
306213  /*
306214  name AST Memory Allocation Support Variables
306215  Memory allocations support variables
306216 
306217  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
306218  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
306219  and support the AST File I/O Mechanism.
306220  */
306221  /* */
306222 
306223  public:
306224 
306225  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
306226  // to current node (so that it will work cleanly with build functions to specify patterns).
306227  // virtual SgNode* addRegExpAttribute();
306234 
306235 // *** COMMON CODE SECTION ENDS HERE ***
306236 
306237 
306238 // End of memberFunctionString
306239 // Start of memberFunctionString
306240 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
306241 
306242  // the generated cast function
306243  // friend ROSE_DLL_API SgUnknownArrayOrFunctionReference* isSgUnknownArrayOrFunctionReference ( SgNode* s );
306244 
306245  typedef SgExpression base_node_type;
306246 
306247 
306248 // End of memberFunctionString
306249 // Start of memberFunctionString
306250 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
306251 
306252  SgType* get_type() const override;
306253 
306254 
306255 // End of memberFunctionString
306256 // Start of memberFunctionString
306257 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
306258 
306259  void post_construction_initialization() override;
306260 
306261 
306262 // End of memberFunctionString
306263 
306264  public:
306265  std::string get_name() const /* (getDataAccessFunctionPrototypeString) */;
306266  void set_name(std::string name) /* (getDataAccessFunctionPrototypeString) */;
306267 
306268  public:
306269  SgExpression* get_named_reference() const;
306270  void set_named_reference(SgExpression* named_reference);
306271 
306272  public:
306273  SgExprListExp* get_expression_list() const;
306274  void set_expression_list(SgExprListExp* expression_list);
306275 
306276 
306277  public:
306279 
306280 
306281  public:
306282  SgUnknownArrayOrFunctionReference(Sg_File_Info* startOfConstruct );
306284 
306285  protected:
306286 // Start of memberFunctionString
306287 std::string p_name;
306288 
306289 // End of memberFunctionString
306290 // Start of memberFunctionString
306291 SgExpression* p_named_reference;
306292 
306293 // End of memberFunctionString
306294 // Start of memberFunctionString
306295 SgExprListExp* p_expression_list;
306296 
306297 // End of memberFunctionString
306298 
306299 
306300 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
306301 
306302 
306303  };
306304 #endif
306305 
306306 // postdeclarations for SgUnknownArrayOrFunctionReference
306307 
306308 /* #line 306309 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
306309 
306310 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
306311 
306312 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
306313 
306314 
306315 /* #line 306316 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
306316 
306317 
306318 
306319 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
306320 
306321 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
306322 // This code is automatically generated for each
306323 // terminal and non-terminal within the defined
306324 // grammar. There is a simple way to change the
306325 // code to fix bugs etc. See the ROSE README file
306326 // for directions.
306327 
306328 // tps: (02/22/2010): Adding DLL export requirements
306329 #include "rosedll.h"
306330 
306331 // predeclarations for SgPseudoDestructorRefExp
306332 
306333 /* #line 306334 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
306334 
306335 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
306336 
306337 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
306338 
306339 #if 1
306340 // Class Definition for SgPseudoDestructorRefExp
306341 class ROSE_DLL_API SgPseudoDestructorRefExp : public SgExpression
306342  {
306343  public:
306344 
306345 
306346 /* #line 306347 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
306347 
306348  virtual SgNode* copy ( SgCopyHelp& help) const override;
306349 // Start of memberFunctionString
306350 /* #line 1859 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
306351 
306352 
306353  // DQ (1/18/2020): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
306354  int get_name_qualification_length() const override;
306355  void set_name_qualification_length(int name_qualification_length) override;
306356 
306357  // DQ (1/18/2020): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
306358  bool get_type_elaboration_required() const override;
306359  void set_type_elaboration_required(bool type_elaboration_required) override;
306360 
306361  // DQ (1/18/2020): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
306362  bool get_global_qualification_required() const override;
306363  void set_global_qualification_required(bool global_qualification_required) override;
306364 
306365 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
306366  virtual unsigned int cfgIndexForEnd() const override;
306367  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
306368  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
306369 #endif
306370 
306371 
306372 
306373 // End of memberFunctionString
306374 // Start of memberFunctionString
306375 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
306376 
306377 // *** COMMON CODE SECTION BEGINS HERE ***
306378 
306379  public:
306380 
306381  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
306382  // and not required which is required to match the other aspects of the copy mechanism code generation.
306383  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
306384  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
306385  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
306386  // virtual SgNode* copy ( const SgCopyHelp & help) const;
306387 
306389  virtual std::string class_name() const override;
306390 
306392  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
306393 
306395  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
306396  // static const VariantT static_variant = V_SgPseudoDestructorRefExp;
306397  enum { static_variant = V_SgPseudoDestructorRefExp };
306398 
306399  /* the generated cast function */
306401  ROSE_DLL_API friend SgPseudoDestructorRefExp* isSgPseudoDestructorRefExp( SgNode * s );
306402 
306404  ROSE_DLL_API friend const SgPseudoDestructorRefExp* isSgPseudoDestructorRefExp( const SgNode * s );
306405 
306406  // ******************************************
306407  // * Memory Pool / New / Delete
306408  // ******************************************
306409 
306410  public:
306412  static const unsigned pool_size; //
306414  static std::vector<unsigned char *> pools; //
306416  static SgPseudoDestructorRefExp * next_node; //
306417 
306419  static unsigned long initializeStorageClassArray(SgPseudoDestructorRefExpStorageClass *); //
306420 
306422  static void clearMemoryPool(); //
306423  static void deleteMemoryPool(); //
306424 
306426  static void extendMemoryPoolForFileIO(); //
306427 
306429  static SgPseudoDestructorRefExp * getPointerFromGlobalIndex(unsigned long); //
306431  static SgPseudoDestructorRefExp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
306432 
306434  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
306436  static void resetValidFreepointers(); //
306438  static unsigned long getNumberOfLastValidPointer(); //
306439 
306440 
306441 #if defined(INLINE_FUNCTIONS)
306442 
306443  inline void *operator new (size_t size);
306444 #else
306445 
306446  void *operator new (size_t size);
306447 #endif
306448 
306449  void operator delete (void* pointer, size_t size);
306450 
306451  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
306452  void operator delete (void* pointer)
306453  {
306454  // This is the generated delete operator...
306455  SgPseudoDestructorRefExp::operator delete (pointer,sizeof(SgPseudoDestructorRefExp));
306456  }
306457 
306459  static size_t numberOfNodes();
306460 
306462  static size_t memoryUsage();
306463 
306464  // End of scope which started in IR nodes specific code
306465  /* */
306466 
306467  /* name Internal Functions
306468  \brief Internal functions ... incomplete-documentation
306469 
306470  These functions have been made public as part of the design, but they are suggested for internal use
306471  or by particularly knowledgeable users for specialized tools or applications.
306472 
306473  \internal We could not make these private because they are required by user for special purposes. And
306474  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
306475 
306476  */
306477 
306478  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
306479  // overridden in every class by *generated* implementation
306481  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
306482  // MS: 06/28/02 container of names of variables or container indices
306483  // used used in the traversal to access AST successor nodes
306484  // overridden in every class by *generated* implementation
306487  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
306488 
306489  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
306490  // than all the vector copies. The implementation for these functions is generated for each class.
306492  virtual size_t get_numberOfTraversalSuccessors() override;
306494  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
306496  virtual size_t get_childIndex(SgNode *child) override;
306497 
306498 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
306499  // MS: 08/16/2002 method for generating RTI information
306501  virtual RTIReturnType roseRTI() override;
306502 #endif
306503  /* */
306504 
306505 
306506 
306507  /* name Deprecated Functions
306508  \brief Deprecated functions ... incomplete-documentation
306509 
306510  These functions have been deprecated from use.
306511  */
306512  /* */
306513 
306515  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
306516 
306517  // JJW (10/16/2008): Changed to a single function in Node.code, and put
306518  // getVariant() in #if 0 block to prevent confusing Doxygen
306519 #if 0
306520 
306521  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
306523  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
306524 #endif
306525  /* */
306526 
306527 
306528 
306529 
306530  public:
306531  /* name Traversal Support Functions
306532  \brief Traversal support functions ... incomplete-documentation
306533 
306534  These functions have been made public as part of the design, but they are suggested for internal use
306535  or by particularly knowledgable users for specialized tools or applications.
306536  */
306537  /* */
306538 
306539  // DQ (11/26/2005): Support for visitor pattern mechanims
306540  // (inferior to ROSE traversal mechanism, experimental).
306544 
306545  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
306547  virtual void accept (ROSE_VisitorPattern & visitor) override;
306548 
306549  // DQ (12/26/2005): Support for traversal based on the memory pool
306552  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
306553 
306556  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
306557 
306558  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
306559  // This traversal helps support internal tools that call static member functions.
306560  // note: this function operates on the memory pools.
306563  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
306564  /* */
306565 
306566 
306567  public:
306568  /* name Memory Allocation Functions
306569  \brief Memory allocations functions ... incomplete-documentation
306570 
306571  These functions have been made public as part of the design, but they are suggested for internal use
306572  or by particularly knowledgable users for specialized tools or applications.
306573  */
306574  /* */
306575 
306586  virtual bool isInMemoryPool() override;
306587 
306598  virtual void checkDataMemberPointersIfInMemoryPool() override;
306599 
306600  // DQ (4/30/2006): Modified to be a const function.
306615  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
306616 
306626  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
306627 
306639  virtual long getChildIndex( SgNode* childNode ) const override;
306640 
306641  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
306642  // comment here (changed to be a C style comment and not be a doxygen comment).
306643  /* \brief Constructor for use by AST File I/O Mechanism
306644 
306645  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
306646  which obtained via fast binary file I/O from disk.
306647  */
306648  // SgPseudoDestructorRefExp( SgPseudoDestructorRefExpStorageClass& source );
306649 
306650 
306651 
306652 
306653 
306654  // JH (10/24/2005): methods added to support the ast file IO
306655  private:
306656 
306657  /* name AST Memory Allocation Support Functions
306658  \brief Memory allocations support....
306659 
306660  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
306661  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
306662  and support the AST File I/O Mechanism.
306663  */
306664  /* */
306665 
306666  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
306667  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
306668  that I use the same type everywhere, if any changes are made. THe second one declares the type
306669  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
306670  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
306671  a correspinding one in the AST_FILE_IO class!
306672  */
306673  // DQ (9/2/2015): This typedef is no longer used, we can't define the
306674  // comment here (changed to be a C style comment and not be a doxygen comment).
306675  /* \brief Typedef used for low level memory access.
306676  */
306677  // typedef unsigned char* TestType;
306678 
306679  // DQ (9/2/2015): This typedef is no longer used, we can't define the
306680  // comment here (changed to be a C style comment and not be a doxygen comment).
306681  /* \brief Typedef used to hold memory addresses as values.
306682  */
306683  // typedef unsigned long AddressType;
306684 
306685 
306686 
306687  // necessary, to have direct access to the p_freepointer and the private methods !
306689  friend class AST_FILE_IO;
306690 
306692  friend class SgPseudoDestructorRefExpStorageClass;
306693 
306695  friend class AstSpecificDataManagingClass;
306696 
306698  friend class AstSpecificDataManagingClassStorageClass;
306699 
306700  public:
306702  SgPseudoDestructorRefExp( const SgPseudoDestructorRefExpStorageClass& source );
306703 
306704  // private: // JJW hack
306705  /*
306706  name AST Memory Allocation Support Variables
306707  Memory allocations support variables
306708 
306709  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
306710  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
306711  and support the AST File I/O Mechanism.
306712  */
306713  /* */
306714 
306715  public:
306716 
306717  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
306718  // to current node (so that it will work cleanly with build functions to specify patterns).
306719  // virtual SgNode* addRegExpAttribute();
306726 
306727 // *** COMMON CODE SECTION ENDS HERE ***
306728 
306729 
306730 // End of memberFunctionString
306731 // Start of memberFunctionString
306732 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
306733 
306734  // the generated cast function
306735  // friend ROSE_DLL_API SgPseudoDestructorRefExp* isSgPseudoDestructorRefExp ( SgNode* s );
306736 
306737  typedef SgExpression base_node_type;
306738 
306739 
306740 // End of memberFunctionString
306741 // Start of memberFunctionString
306742 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
306743 
306744  SgType* get_type() const override;
306745 
306746 
306747 // End of memberFunctionString
306748 // Start of memberFunctionString
306749 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
306750 
306751  void post_construction_initialization() override;
306752 
306753 
306754 // End of memberFunctionString
306755 
306756  public:
306757  SgType* get_object_type() const;
306758  void set_object_type(SgType* object_type);
306759 
306760  public:
306761  SgType* get_expression_type() const;
306762  void set_expression_type(SgType* expression_type);
306763 
306764 
306765 
306766 
306767 
306768  public:
306769  virtual ~SgPseudoDestructorRefExp();
306770 
306771 
306772  public:
306773  SgPseudoDestructorRefExp(Sg_File_Info* startOfConstruct , SgType* object_type = NULL);
306774  SgPseudoDestructorRefExp(SgType* object_type);
306775 
306776  protected:
306777 // Start of memberFunctionString
306778 SgType* p_object_type;
306779 
306780 // End of memberFunctionString
306781 // Start of memberFunctionString
306782 SgType* p_expression_type;
306783 
306784 // End of memberFunctionString
306785 // Start of memberFunctionString
306786 int p_name_qualification_length;
306787 
306788 // End of memberFunctionString
306789 // Start of memberFunctionString
306790 bool p_type_elaboration_required;
306791 
306792 // End of memberFunctionString
306793 // Start of memberFunctionString
306794 bool p_global_qualification_required;
306795 
306796 // End of memberFunctionString
306797 
306798 
306799 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
306800 
306801 
306802  };
306803 #endif
306804 
306805 // postdeclarations for SgPseudoDestructorRefExp
306806 
306807 /* #line 306808 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
306808 
306809 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
306810 
306811 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
306812 
306813 
306814 /* #line 306815 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
306815 
306816 
306817 
306818 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
306819 
306820 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
306821 // This code is automatically generated for each
306822 // terminal and non-terminal within the defined
306823 // grammar. There is a simple way to change the
306824 // code to fix bugs etc. See the ROSE README file
306825 // for directions.
306826 
306827 // tps: (02/22/2010): Adding DLL export requirements
306828 #include "rosedll.h"
306829 
306830 // predeclarations for SgCAFCoExpression
306831 
306832 /* #line 306833 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
306833 
306834 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
306835 
306836 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
306837 
306838 #if 1
306839 // Class Definition for SgCAFCoExpression
306840 class ROSE_DLL_API SgCAFCoExpression : public SgExpression
306841  {
306842  public:
306843 
306844 
306845 /* #line 306846 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
306846 
306847  virtual SgNode* copy ( SgCopyHelp& help) const override;
306848 // Start of memberFunctionString
306849 /* #line 1882 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
306850 
306851 
306852 
306853 
306854 // End of memberFunctionString
306855 // Start of memberFunctionString
306856 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
306857 
306858 // *** COMMON CODE SECTION BEGINS HERE ***
306859 
306860  public:
306861 
306862  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
306863  // and not required which is required to match the other aspects of the copy mechanism code generation.
306864  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
306865  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
306866  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
306867  // virtual SgNode* copy ( const SgCopyHelp & help) const;
306868 
306870  virtual std::string class_name() const override;
306871 
306873  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
306874 
306876  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
306877  // static const VariantT static_variant = V_SgCAFCoExpression;
306878  enum { static_variant = V_SgCAFCoExpression };
306879 
306880  /* the generated cast function */
306882  ROSE_DLL_API friend SgCAFCoExpression* isSgCAFCoExpression( SgNode * s );
306883 
306885  ROSE_DLL_API friend const SgCAFCoExpression* isSgCAFCoExpression( const SgNode * s );
306886 
306887  // ******************************************
306888  // * Memory Pool / New / Delete
306889  // ******************************************
306890 
306891  public:
306893  static const unsigned pool_size; //
306895  static std::vector<unsigned char *> pools; //
306897  static SgCAFCoExpression * next_node; //
306898 
306900  static unsigned long initializeStorageClassArray(SgCAFCoExpressionStorageClass *); //
306901 
306903  static void clearMemoryPool(); //
306904  static void deleteMemoryPool(); //
306905 
306907  static void extendMemoryPoolForFileIO(); //
306908 
306910  static SgCAFCoExpression * getPointerFromGlobalIndex(unsigned long); //
306912  static SgCAFCoExpression * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
306913 
306915  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
306917  static void resetValidFreepointers(); //
306919  static unsigned long getNumberOfLastValidPointer(); //
306920 
306921 
306922 #if defined(INLINE_FUNCTIONS)
306923 
306924  inline void *operator new (size_t size);
306925 #else
306926 
306927  void *operator new (size_t size);
306928 #endif
306929 
306930  void operator delete (void* pointer, size_t size);
306931 
306932  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
306933  void operator delete (void* pointer)
306934  {
306935  // This is the generated delete operator...
306936  SgCAFCoExpression::operator delete (pointer,sizeof(SgCAFCoExpression));
306937  }
306938 
306940  static size_t numberOfNodes();
306941 
306943  static size_t memoryUsage();
306944 
306945  // End of scope which started in IR nodes specific code
306946  /* */
306947 
306948  /* name Internal Functions
306949  \brief Internal functions ... incomplete-documentation
306950 
306951  These functions have been made public as part of the design, but they are suggested for internal use
306952  or by particularly knowledgeable users for specialized tools or applications.
306953 
306954  \internal We could not make these private because they are required by user for special purposes. And
306955  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
306956 
306957  */
306958 
306959  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
306960  // overridden in every class by *generated* implementation
306962  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
306963  // MS: 06/28/02 container of names of variables or container indices
306964  // used used in the traversal to access AST successor nodes
306965  // overridden in every class by *generated* implementation
306968  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
306969 
306970  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
306971  // than all the vector copies. The implementation for these functions is generated for each class.
306973  virtual size_t get_numberOfTraversalSuccessors() override;
306975  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
306977  virtual size_t get_childIndex(SgNode *child) override;
306978 
306979 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
306980  // MS: 08/16/2002 method for generating RTI information
306982  virtual RTIReturnType roseRTI() override;
306983 #endif
306984  /* */
306985 
306986 
306987 
306988  /* name Deprecated Functions
306989  \brief Deprecated functions ... incomplete-documentation
306990 
306991  These functions have been deprecated from use.
306992  */
306993  /* */
306994 
306996  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
306997 
306998  // JJW (10/16/2008): Changed to a single function in Node.code, and put
306999  // getVariant() in #if 0 block to prevent confusing Doxygen
307000 #if 0
307001 
307002  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
307004  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
307005 #endif
307006  /* */
307007 
307008 
307009 
307010 
307011  public:
307012  /* name Traversal Support Functions
307013  \brief Traversal support functions ... incomplete-documentation
307014 
307015  These functions have been made public as part of the design, but they are suggested for internal use
307016  or by particularly knowledgable users for specialized tools or applications.
307017  */
307018  /* */
307019 
307020  // DQ (11/26/2005): Support for visitor pattern mechanims
307021  // (inferior to ROSE traversal mechanism, experimental).
307025 
307026  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
307028  virtual void accept (ROSE_VisitorPattern & visitor) override;
307029 
307030  // DQ (12/26/2005): Support for traversal based on the memory pool
307033  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
307034 
307037  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
307038 
307039  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
307040  // This traversal helps support internal tools that call static member functions.
307041  // note: this function operates on the memory pools.
307044  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
307045  /* */
307046 
307047 
307048  public:
307049  /* name Memory Allocation Functions
307050  \brief Memory allocations functions ... incomplete-documentation
307051 
307052  These functions have been made public as part of the design, but they are suggested for internal use
307053  or by particularly knowledgable users for specialized tools or applications.
307054  */
307055  /* */
307056 
307067  virtual bool isInMemoryPool() override;
307068 
307079  virtual void checkDataMemberPointersIfInMemoryPool() override;
307080 
307081  // DQ (4/30/2006): Modified to be a const function.
307096  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
307097 
307107  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
307108 
307120  virtual long getChildIndex( SgNode* childNode ) const override;
307121 
307122  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
307123  // comment here (changed to be a C style comment and not be a doxygen comment).
307124  /* \brief Constructor for use by AST File I/O Mechanism
307125 
307126  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
307127  which obtained via fast binary file I/O from disk.
307128  */
307129  // SgCAFCoExpression( SgCAFCoExpressionStorageClass& source );
307130 
307131 
307132 
307133 
307134 
307135  // JH (10/24/2005): methods added to support the ast file IO
307136  private:
307137 
307138  /* name AST Memory Allocation Support Functions
307139  \brief Memory allocations support....
307140 
307141  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
307142  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
307143  and support the AST File I/O Mechanism.
307144  */
307145  /* */
307146 
307147  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
307148  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
307149  that I use the same type everywhere, if any changes are made. THe second one declares the type
307150  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
307151  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
307152  a correspinding one in the AST_FILE_IO class!
307153  */
307154  // DQ (9/2/2015): This typedef is no longer used, we can't define the
307155  // comment here (changed to be a C style comment and not be a doxygen comment).
307156  /* \brief Typedef used for low level memory access.
307157  */
307158  // typedef unsigned char* TestType;
307159 
307160  // DQ (9/2/2015): This typedef is no longer used, we can't define the
307161  // comment here (changed to be a C style comment and not be a doxygen comment).
307162  /* \brief Typedef used to hold memory addresses as values.
307163  */
307164  // typedef unsigned long AddressType;
307165 
307166 
307167 
307168  // necessary, to have direct access to the p_freepointer and the private methods !
307170  friend class AST_FILE_IO;
307171 
307173  friend class SgCAFCoExpressionStorageClass;
307174 
307176  friend class AstSpecificDataManagingClass;
307177 
307179  friend class AstSpecificDataManagingClassStorageClass;
307180 
307181  public:
307183  SgCAFCoExpression( const SgCAFCoExpressionStorageClass& source );
307184 
307185  // private: // JJW hack
307186  /*
307187  name AST Memory Allocation Support Variables
307188  Memory allocations support variables
307189 
307190  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
307191  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
307192  and support the AST File I/O Mechanism.
307193  */
307194  /* */
307195 
307196  public:
307197 
307198  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
307199  // to current node (so that it will work cleanly with build functions to specify patterns).
307200  // virtual SgNode* addRegExpAttribute();
307207 
307208 // *** COMMON CODE SECTION ENDS HERE ***
307209 
307210 
307211 // End of memberFunctionString
307212 // Start of memberFunctionString
307213 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
307214 
307215  // the generated cast function
307216  // friend ROSE_DLL_API SgCAFCoExpression* isSgCAFCoExpression ( SgNode* s );
307217 
307218  typedef SgExpression base_node_type;
307219 
307220 
307221 // End of memberFunctionString
307222 // Start of memberFunctionString
307223 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
307224 
307225  SgType* get_type() const override;
307226 
307227 
307228 // End of memberFunctionString
307229 // Start of memberFunctionString
307230 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
307231 
307232  void post_construction_initialization() override;
307233 
307234 
307235 // End of memberFunctionString
307236 
307237  public:
307238  SgVarRefExp* get_teamId() const;
307239  void set_teamId(SgVarRefExp* teamId);
307240 
307241  public:
307242  SgExpression* get_teamRank() const;
307243  void set_teamRank(SgExpression* teamRank);
307244 
307245  public:
307246  SgExpression* get_referData() const;
307247  void set_referData(SgExpression* referData);
307248 
307249 
307250  public:
307251  virtual ~SgCAFCoExpression();
307252 
307253 
307254  public:
307255  SgCAFCoExpression(Sg_File_Info* startOfConstruct , SgVarRefExp* teamId = NULL, SgExpression* teamRank = NULL, SgExpression* referData = NULL);
307256  SgCAFCoExpression(SgVarRefExp* teamId, SgExpression* teamRank, SgExpression* referData);
307257 
307258  protected:
307259 // Start of memberFunctionString
307260 SgVarRefExp* p_teamId;
307261 
307262 // End of memberFunctionString
307263 // Start of memberFunctionString
307264 SgExpression* p_teamRank;
307265 
307266 // End of memberFunctionString
307267 // Start of memberFunctionString
307268 SgExpression* p_referData;
307269 
307270 // End of memberFunctionString
307271 
307272 
307273 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
307274 
307275 
307276  };
307277 #endif
307278 
307279 // postdeclarations for SgCAFCoExpression
307280 
307281 /* #line 307282 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
307282 
307283 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
307284 
307285 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
307286 
307287 
307288 /* #line 307289 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
307289 
307290 
307291 
307292 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
307293 
307294 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
307295 // This code is automatically generated for each
307296 // terminal and non-terminal within the defined
307297 // grammar. There is a simple way to change the
307298 // code to fix bugs etc. See the ROSE README file
307299 // for directions.
307300 
307301 // tps: (02/22/2010): Adding DLL export requirements
307302 #include "rosedll.h"
307303 
307304 // predeclarations for SgCudaKernelExecConfig
307305 
307306 /* #line 307307 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
307307 
307308 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
307309 
307310 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
307311 
307312 #if 1
307313 // Class Definition for SgCudaKernelExecConfig
307314 class ROSE_DLL_API SgCudaKernelExecConfig : public SgExpression
307315  {
307316  public:
307317 
307318 
307319 /* #line 307320 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
307320 
307321  virtual SgNode* copy ( SgCopyHelp& help) const override;
307322 // Start of memberFunctionString
307323 /* #line 1893 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
307324 
307325 
307326 
307327 // End of memberFunctionString
307328 // Start of memberFunctionString
307329 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
307330 
307331 // *** COMMON CODE SECTION BEGINS HERE ***
307332 
307333  public:
307334 
307335  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
307336  // and not required which is required to match the other aspects of the copy mechanism code generation.
307337  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
307338  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
307339  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
307340  // virtual SgNode* copy ( const SgCopyHelp & help) const;
307341 
307343  virtual std::string class_name() const override;
307344 
307346  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
307347 
307349  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
307350  // static const VariantT static_variant = V_SgCudaKernelExecConfig;
307351  enum { static_variant = V_SgCudaKernelExecConfig };
307352 
307353  /* the generated cast function */
307355  ROSE_DLL_API friend SgCudaKernelExecConfig* isSgCudaKernelExecConfig( SgNode * s );
307356 
307358  ROSE_DLL_API friend const SgCudaKernelExecConfig* isSgCudaKernelExecConfig( const SgNode * s );
307359 
307360  // ******************************************
307361  // * Memory Pool / New / Delete
307362  // ******************************************
307363 
307364  public:
307366  static const unsigned pool_size; //
307368  static std::vector<unsigned char *> pools; //
307370  static SgCudaKernelExecConfig * next_node; //
307371 
307373  static unsigned long initializeStorageClassArray(SgCudaKernelExecConfigStorageClass *); //
307374 
307376  static void clearMemoryPool(); //
307377  static void deleteMemoryPool(); //
307378 
307380  static void extendMemoryPoolForFileIO(); //
307381 
307383  static SgCudaKernelExecConfig * getPointerFromGlobalIndex(unsigned long); //
307385  static SgCudaKernelExecConfig * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
307386 
307388  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
307390  static void resetValidFreepointers(); //
307392  static unsigned long getNumberOfLastValidPointer(); //
307393 
307394 
307395 #if defined(INLINE_FUNCTIONS)
307396 
307397  inline void *operator new (size_t size);
307398 #else
307399 
307400  void *operator new (size_t size);
307401 #endif
307402 
307403  void operator delete (void* pointer, size_t size);
307404 
307405  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
307406  void operator delete (void* pointer)
307407  {
307408  // This is the generated delete operator...
307409  SgCudaKernelExecConfig::operator delete (pointer,sizeof(SgCudaKernelExecConfig));
307410  }
307411 
307413  static size_t numberOfNodes();
307414 
307416  static size_t memoryUsage();
307417 
307418  // End of scope which started in IR nodes specific code
307419  /* */
307420 
307421  /* name Internal Functions
307422  \brief Internal functions ... incomplete-documentation
307423 
307424  These functions have been made public as part of the design, but they are suggested for internal use
307425  or by particularly knowledgeable users for specialized tools or applications.
307426 
307427  \internal We could not make these private because they are required by user for special purposes. And
307428  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
307429 
307430  */
307431 
307432  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
307433  // overridden in every class by *generated* implementation
307435  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
307436  // MS: 06/28/02 container of names of variables or container indices
307437  // used used in the traversal to access AST successor nodes
307438  // overridden in every class by *generated* implementation
307441  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
307442 
307443  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
307444  // than all the vector copies. The implementation for these functions is generated for each class.
307446  virtual size_t get_numberOfTraversalSuccessors() override;
307448  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
307450  virtual size_t get_childIndex(SgNode *child) override;
307451 
307452 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
307453  // MS: 08/16/2002 method for generating RTI information
307455  virtual RTIReturnType roseRTI() override;
307456 #endif
307457  /* */
307458 
307459 
307460 
307461  /* name Deprecated Functions
307462  \brief Deprecated functions ... incomplete-documentation
307463 
307464  These functions have been deprecated from use.
307465  */
307466  /* */
307467 
307469  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
307470 
307471  // JJW (10/16/2008): Changed to a single function in Node.code, and put
307472  // getVariant() in #if 0 block to prevent confusing Doxygen
307473 #if 0
307474 
307475  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
307477  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
307478 #endif
307479  /* */
307480 
307481 
307482 
307483 
307484  public:
307485  /* name Traversal Support Functions
307486  \brief Traversal support functions ... incomplete-documentation
307487 
307488  These functions have been made public as part of the design, but they are suggested for internal use
307489  or by particularly knowledgable users for specialized tools or applications.
307490  */
307491  /* */
307492 
307493  // DQ (11/26/2005): Support for visitor pattern mechanims
307494  // (inferior to ROSE traversal mechanism, experimental).
307498 
307499  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
307501  virtual void accept (ROSE_VisitorPattern & visitor) override;
307502 
307503  // DQ (12/26/2005): Support for traversal based on the memory pool
307506  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
307507 
307510  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
307511 
307512  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
307513  // This traversal helps support internal tools that call static member functions.
307514  // note: this function operates on the memory pools.
307517  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
307518  /* */
307519 
307520 
307521  public:
307522  /* name Memory Allocation Functions
307523  \brief Memory allocations functions ... incomplete-documentation
307524 
307525  These functions have been made public as part of the design, but they are suggested for internal use
307526  or by particularly knowledgable users for specialized tools or applications.
307527  */
307528  /* */
307529 
307540  virtual bool isInMemoryPool() override;
307541 
307552  virtual void checkDataMemberPointersIfInMemoryPool() override;
307553 
307554  // DQ (4/30/2006): Modified to be a const function.
307569  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
307570 
307580  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
307581 
307593  virtual long getChildIndex( SgNode* childNode ) const override;
307594 
307595  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
307596  // comment here (changed to be a C style comment and not be a doxygen comment).
307597  /* \brief Constructor for use by AST File I/O Mechanism
307598 
307599  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
307600  which obtained via fast binary file I/O from disk.
307601  */
307602  // SgCudaKernelExecConfig( SgCudaKernelExecConfigStorageClass& source );
307603 
307604 
307605 
307606 
307607 
307608  // JH (10/24/2005): methods added to support the ast file IO
307609  private:
307610 
307611  /* name AST Memory Allocation Support Functions
307612  \brief Memory allocations support....
307613 
307614  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
307615  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
307616  and support the AST File I/O Mechanism.
307617  */
307618  /* */
307619 
307620  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
307621  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
307622  that I use the same type everywhere, if any changes are made. THe second one declares the type
307623  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
307624  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
307625  a correspinding one in the AST_FILE_IO class!
307626  */
307627  // DQ (9/2/2015): This typedef is no longer used, we can't define the
307628  // comment here (changed to be a C style comment and not be a doxygen comment).
307629  /* \brief Typedef used for low level memory access.
307630  */
307631  // typedef unsigned char* TestType;
307632 
307633  // DQ (9/2/2015): This typedef is no longer used, we can't define the
307634  // comment here (changed to be a C style comment and not be a doxygen comment).
307635  /* \brief Typedef used to hold memory addresses as values.
307636  */
307637  // typedef unsigned long AddressType;
307638 
307639 
307640 
307641  // necessary, to have direct access to the p_freepointer and the private methods !
307643  friend class AST_FILE_IO;
307644 
307646  friend class SgCudaKernelExecConfigStorageClass;
307647 
307649  friend class AstSpecificDataManagingClass;
307650 
307652  friend class AstSpecificDataManagingClassStorageClass;
307653 
307654  public:
307656  SgCudaKernelExecConfig( const SgCudaKernelExecConfigStorageClass& source );
307657 
307658  // private: // JJW hack
307659  /*
307660  name AST Memory Allocation Support Variables
307661  Memory allocations support variables
307662 
307663  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
307664  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
307665  and support the AST File I/O Mechanism.
307666  */
307667  /* */
307668 
307669  public:
307670 
307671  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
307672  // to current node (so that it will work cleanly with build functions to specify patterns).
307673  // virtual SgNode* addRegExpAttribute();
307680 
307681 // *** COMMON CODE SECTION ENDS HERE ***
307682 
307683 
307684 // End of memberFunctionString
307685 // Start of memberFunctionString
307686 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
307687 
307688  // the generated cast function
307689  // friend ROSE_DLL_API SgCudaKernelExecConfig* isSgCudaKernelExecConfig ( SgNode* s );
307690 
307691  typedef SgExpression base_node_type;
307692 
307693 
307694 // End of memberFunctionString
307695 // Start of memberFunctionString
307696 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
307697 
307698  SgType* get_type() const override;
307699 
307700 
307701 // End of memberFunctionString
307702 // Start of memberFunctionString
307703 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
307704 
307705  void post_construction_initialization() override;
307706 
307707 
307708 // End of memberFunctionString
307709 
307710  public:
307711  SgExpression* get_grid() const;
307712  void set_grid(SgExpression* grid);
307713 
307714  public:
307715  SgExpression* get_blocks() const;
307716  void set_blocks(SgExpression* blocks);
307717 
307718  public:
307719  SgExpression* get_shared() const;
307720  void set_shared(SgExpression* shared);
307721 
307722  public:
307723  SgExpression* get_stream() const;
307724  void set_stream(SgExpression* stream);
307725 
307726 
307727  public:
307728  virtual ~SgCudaKernelExecConfig();
307729 
307730 
307731  public:
307732  SgCudaKernelExecConfig(Sg_File_Info* startOfConstruct , SgExpression* grid = NULL, SgExpression* blocks = NULL, SgExpression* shared = NULL, SgExpression* stream = NULL);
307733  SgCudaKernelExecConfig(SgExpression* grid, SgExpression* blocks, SgExpression* shared, SgExpression* stream);
307734 
307735  protected:
307736 // Start of memberFunctionString
307737 SgExpression* p_grid;
307738 
307739 // End of memberFunctionString
307740 // Start of memberFunctionString
307741 SgExpression* p_blocks;
307742 
307743 // End of memberFunctionString
307744 // Start of memberFunctionString
307745 SgExpression* p_shared;
307746 
307747 // End of memberFunctionString
307748 // Start of memberFunctionString
307749 SgExpression* p_stream;
307750 
307751 // End of memberFunctionString
307752 
307753 
307754 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
307755 
307756 
307757  };
307758 #endif
307759 
307760 // postdeclarations for SgCudaKernelExecConfig
307761 
307762 /* #line 307763 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
307763 
307764 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
307765 
307766 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
307767 
307768 
307769 /* #line 307770 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
307770 
307771 
307772 
307773 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
307774 
307775 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
307776 // This code is automatically generated for each
307777 // terminal and non-terminal within the defined
307778 // grammar. There is a simple way to change the
307779 // code to fix bugs etc. See the ROSE README file
307780 // for directions.
307781 
307782 // tps: (02/22/2010): Adding DLL export requirements
307783 #include "rosedll.h"
307784 
307785 // predeclarations for SgLambdaRefExp
307786 
307787 /* #line 307788 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
307788 
307789 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
307790 
307791 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
307792 
307793 #if 1
307794 // Class Definition for SgLambdaRefExp
307795 class ROSE_DLL_API SgLambdaRefExp : public SgExpression
307796  {
307797  public:
307798 
307799 
307800 /* #line 307801 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
307801 
307802  virtual SgNode* copy ( SgCopyHelp& help) const override;
307803 // Start of memberFunctionString
307804 /* #line 1886 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
307805 
307806 
307807  SgFunctionParameterList* get_parameterList();
307808  SgStatement* get_body();
307809 
307810 
307811 
307812 // End of memberFunctionString
307813 // Start of memberFunctionString
307814 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
307815 
307816 // *** COMMON CODE SECTION BEGINS HERE ***
307817 
307818  public:
307819 
307820  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
307821  // and not required which is required to match the other aspects of the copy mechanism code generation.
307822  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
307823  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
307824  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
307825  // virtual SgNode* copy ( const SgCopyHelp & help) const;
307826 
307828  virtual std::string class_name() const override;
307829 
307831  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
307832 
307834  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
307835  // static const VariantT static_variant = V_SgLambdaRefExp;
307836  enum { static_variant = V_SgLambdaRefExp };
307837 
307838  /* the generated cast function */
307840  ROSE_DLL_API friend SgLambdaRefExp* isSgLambdaRefExp( SgNode * s );
307841 
307843  ROSE_DLL_API friend const SgLambdaRefExp* isSgLambdaRefExp( const SgNode * s );
307844 
307845  // ******************************************
307846  // * Memory Pool / New / Delete
307847  // ******************************************
307848 
307849  public:
307851  static const unsigned pool_size; //
307853  static std::vector<unsigned char *> pools; //
307855  static SgLambdaRefExp * next_node; //
307856 
307858  static unsigned long initializeStorageClassArray(SgLambdaRefExpStorageClass *); //
307859 
307861  static void clearMemoryPool(); //
307862  static void deleteMemoryPool(); //
307863 
307865  static void extendMemoryPoolForFileIO(); //
307866 
307868  static SgLambdaRefExp * getPointerFromGlobalIndex(unsigned long); //
307870  static SgLambdaRefExp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
307871 
307873  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
307875  static void resetValidFreepointers(); //
307877  static unsigned long getNumberOfLastValidPointer(); //
307878 
307879 
307880 #if defined(INLINE_FUNCTIONS)
307881 
307882  inline void *operator new (size_t size);
307883 #else
307884 
307885  void *operator new (size_t size);
307886 #endif
307887 
307888  void operator delete (void* pointer, size_t size);
307889 
307890  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
307891  void operator delete (void* pointer)
307892  {
307893  // This is the generated delete operator...
307894  SgLambdaRefExp::operator delete (pointer,sizeof(SgLambdaRefExp));
307895  }
307896 
307898  static size_t numberOfNodes();
307899 
307901  static size_t memoryUsage();
307902 
307903  // End of scope which started in IR nodes specific code
307904  /* */
307905 
307906  /* name Internal Functions
307907  \brief Internal functions ... incomplete-documentation
307908 
307909  These functions have been made public as part of the design, but they are suggested for internal use
307910  or by particularly knowledgeable users for specialized tools or applications.
307911 
307912  \internal We could not make these private because they are required by user for special purposes. And
307913  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
307914 
307915  */
307916 
307917  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
307918  // overridden in every class by *generated* implementation
307920  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
307921  // MS: 06/28/02 container of names of variables or container indices
307922  // used used in the traversal to access AST successor nodes
307923  // overridden in every class by *generated* implementation
307926  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
307927 
307928  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
307929  // than all the vector copies. The implementation for these functions is generated for each class.
307931  virtual size_t get_numberOfTraversalSuccessors() override;
307933  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
307935  virtual size_t get_childIndex(SgNode *child) override;
307936 
307937 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
307938  // MS: 08/16/2002 method for generating RTI information
307940  virtual RTIReturnType roseRTI() override;
307941 #endif
307942  /* */
307943 
307944 
307945 
307946  /* name Deprecated Functions
307947  \brief Deprecated functions ... incomplete-documentation
307948 
307949  These functions have been deprecated from use.
307950  */
307951  /* */
307952 
307954  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
307955 
307956  // JJW (10/16/2008): Changed to a single function in Node.code, and put
307957  // getVariant() in #if 0 block to prevent confusing Doxygen
307958 #if 0
307959 
307960  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
307962  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
307963 #endif
307964  /* */
307965 
307966 
307967 
307968 
307969  public:
307970  /* name Traversal Support Functions
307971  \brief Traversal support functions ... incomplete-documentation
307972 
307973  These functions have been made public as part of the design, but they are suggested for internal use
307974  or by particularly knowledgable users for specialized tools or applications.
307975  */
307976  /* */
307977 
307978  // DQ (11/26/2005): Support for visitor pattern mechanims
307979  // (inferior to ROSE traversal mechanism, experimental).
307983 
307984  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
307986  virtual void accept (ROSE_VisitorPattern & visitor) override;
307987 
307988  // DQ (12/26/2005): Support for traversal based on the memory pool
307991  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
307992 
307995  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
307996 
307997  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
307998  // This traversal helps support internal tools that call static member functions.
307999  // note: this function operates on the memory pools.
308002  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
308003  /* */
308004 
308005 
308006  public:
308007  /* name Memory Allocation Functions
308008  \brief Memory allocations functions ... incomplete-documentation
308009 
308010  These functions have been made public as part of the design, but they are suggested for internal use
308011  or by particularly knowledgable users for specialized tools or applications.
308012  */
308013  /* */
308014 
308025  virtual bool isInMemoryPool() override;
308026 
308037  virtual void checkDataMemberPointersIfInMemoryPool() override;
308038 
308039  // DQ (4/30/2006): Modified to be a const function.
308054  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
308055 
308065  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
308066 
308078  virtual long getChildIndex( SgNode* childNode ) const override;
308079 
308080  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
308081  // comment here (changed to be a C style comment and not be a doxygen comment).
308082  /* \brief Constructor for use by AST File I/O Mechanism
308083 
308084  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
308085  which obtained via fast binary file I/O from disk.
308086  */
308087  // SgLambdaRefExp( SgLambdaRefExpStorageClass& source );
308088 
308089 
308090 
308091 
308092 
308093  // JH (10/24/2005): methods added to support the ast file IO
308094  private:
308095 
308096  /* name AST Memory Allocation Support Functions
308097  \brief Memory allocations support....
308098 
308099  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
308100  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
308101  and support the AST File I/O Mechanism.
308102  */
308103  /* */
308104 
308105  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
308106  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
308107  that I use the same type everywhere, if any changes are made. THe second one declares the type
308108  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
308109  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
308110  a correspinding one in the AST_FILE_IO class!
308111  */
308112  // DQ (9/2/2015): This typedef is no longer used, we can't define the
308113  // comment here (changed to be a C style comment and not be a doxygen comment).
308114  /* \brief Typedef used for low level memory access.
308115  */
308116  // typedef unsigned char* TestType;
308117 
308118  // DQ (9/2/2015): This typedef is no longer used, we can't define the
308119  // comment here (changed to be a C style comment and not be a doxygen comment).
308120  /* \brief Typedef used to hold memory addresses as values.
308121  */
308122  // typedef unsigned long AddressType;
308123 
308124 
308125 
308126  // necessary, to have direct access to the p_freepointer and the private methods !
308128  friend class AST_FILE_IO;
308129 
308131  friend class SgLambdaRefExpStorageClass;
308132 
308134  friend class AstSpecificDataManagingClass;
308135 
308137  friend class AstSpecificDataManagingClassStorageClass;
308138 
308139  public:
308141  SgLambdaRefExp( const SgLambdaRefExpStorageClass& source );
308142 
308143  // private: // JJW hack
308144  /*
308145  name AST Memory Allocation Support Variables
308146  Memory allocations support variables
308147 
308148  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
308149  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
308150  and support the AST File I/O Mechanism.
308151  */
308152  /* */
308153 
308154  public:
308155 
308156  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
308157  // to current node (so that it will work cleanly with build functions to specify patterns).
308158  // virtual SgNode* addRegExpAttribute();
308165 
308166 // *** COMMON CODE SECTION ENDS HERE ***
308167 
308168 
308169 // End of memberFunctionString
308170 // Start of memberFunctionString
308171 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
308172 
308173  // the generated cast function
308174  // friend ROSE_DLL_API SgLambdaRefExp* isSgLambdaRefExp ( SgNode* s );
308175 
308176  typedef SgExpression base_node_type;
308177 
308178 
308179 // End of memberFunctionString
308180 // Start of memberFunctionString
308181 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
308182 
308183  SgType* get_type() const override;
308184 
308185 
308186 // End of memberFunctionString
308187 // Start of memberFunctionString
308188 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
308189 
308190  void post_construction_initialization() override;
308191 
308192 
308193 // End of memberFunctionString
308194 
308195  public:
308196  SgFunctionDeclaration* get_functionDeclaration() const;
308197  void set_functionDeclaration(SgFunctionDeclaration* functionDeclaration);
308198 
308199 
308200  public:
308201  virtual ~SgLambdaRefExp();
308202 
308203 
308204  public:
308205  SgLambdaRefExp(Sg_File_Info* startOfConstruct , SgFunctionDeclaration* functionDeclaration = NULL);
308206  SgLambdaRefExp(SgFunctionDeclaration* functionDeclaration);
308207 
308208  protected:
308209 // Start of memberFunctionString
308211 
308212 // End of memberFunctionString
308213 
308214 
308215 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
308216 
308217 
308218  };
308219 #endif
308220 
308221 // postdeclarations for SgLambdaRefExp
308222 
308223 /* #line 308224 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
308224 
308225 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
308226 
308227 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
308228 
308229 
308230 /* #line 308231 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
308231 
308232 
308233 
308234 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
308235 
308236 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
308237 // This code is automatically generated for each
308238 // terminal and non-terminal within the defined
308239 // grammar. There is a simple way to change the
308240 // code to fix bugs etc. See the ROSE README file
308241 // for directions.
308242 
308243 // tps: (02/22/2010): Adding DLL export requirements
308244 #include "rosedll.h"
308245 
308246 // predeclarations for SgDictionaryExp
308247 
308248 /* #line 308249 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
308249 
308250 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
308251 
308252 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
308253 
308254 #if 1
308255 // Class Definition for SgDictionaryExp
308256 class ROSE_DLL_API SgDictionaryExp : public SgExpression
308257  {
308258  public:
308259 
308260 
308261 /* #line 308262 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
308262 
308263  virtual SgNode* copy ( SgCopyHelp& help) const override;
308264 // Start of memberFunctionString
308265 /* #line 1388 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
308266 
308267 SgKeyDatumPairPtrList& get_key_datum_pairs();
308268 const SgKeyDatumPairPtrList& get_key_datum_pairs() const;
308269 void append_pair(SgKeyDatumPair *what);
308270 
308271 
308272 // End of memberFunctionString
308273 // Start of memberFunctionString
308274 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
308275 
308276 // *** COMMON CODE SECTION BEGINS HERE ***
308277 
308278  public:
308279 
308280  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
308281  // and not required which is required to match the other aspects of the copy mechanism code generation.
308282  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
308283  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
308284  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
308285  // virtual SgNode* copy ( const SgCopyHelp & help) const;
308286 
308288  virtual std::string class_name() const override;
308289 
308291  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
308292 
308294  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
308295  // static const VariantT static_variant = V_SgDictionaryExp;
308296  enum { static_variant = V_SgDictionaryExp };
308297 
308298  /* the generated cast function */
308300  ROSE_DLL_API friend SgDictionaryExp* isSgDictionaryExp( SgNode * s );
308301 
308303  ROSE_DLL_API friend const SgDictionaryExp* isSgDictionaryExp( const SgNode * s );
308304 
308305  // ******************************************
308306  // * Memory Pool / New / Delete
308307  // ******************************************
308308 
308309  public:
308311  static const unsigned pool_size; //
308313  static std::vector<unsigned char *> pools; //
308315  static SgDictionaryExp * next_node; //
308316 
308318  static unsigned long initializeStorageClassArray(SgDictionaryExpStorageClass *); //
308319 
308321  static void clearMemoryPool(); //
308322  static void deleteMemoryPool(); //
308323 
308325  static void extendMemoryPoolForFileIO(); //
308326 
308328  static SgDictionaryExp * getPointerFromGlobalIndex(unsigned long); //
308330  static SgDictionaryExp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
308331 
308333  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
308335  static void resetValidFreepointers(); //
308337  static unsigned long getNumberOfLastValidPointer(); //
308338 
308339 
308340 #if defined(INLINE_FUNCTIONS)
308341 
308342  inline void *operator new (size_t size);
308343 #else
308344 
308345  void *operator new (size_t size);
308346 #endif
308347 
308348  void operator delete (void* pointer, size_t size);
308349 
308350  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
308351  void operator delete (void* pointer)
308352  {
308353  // This is the generated delete operator...
308354  SgDictionaryExp::operator delete (pointer,sizeof(SgDictionaryExp));
308355  }
308356 
308358  static size_t numberOfNodes();
308359 
308361  static size_t memoryUsage();
308362 
308363  // End of scope which started in IR nodes specific code
308364  /* */
308365 
308366  /* name Internal Functions
308367  \brief Internal functions ... incomplete-documentation
308368 
308369  These functions have been made public as part of the design, but they are suggested for internal use
308370  or by particularly knowledgeable users for specialized tools or applications.
308371 
308372  \internal We could not make these private because they are required by user for special purposes. And
308373  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
308374 
308375  */
308376 
308377  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
308378  // overridden in every class by *generated* implementation
308380  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
308381  // MS: 06/28/02 container of names of variables or container indices
308382  // used used in the traversal to access AST successor nodes
308383  // overridden in every class by *generated* implementation
308386  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
308387 
308388  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
308389  // than all the vector copies. The implementation for these functions is generated for each class.
308391  virtual size_t get_numberOfTraversalSuccessors() override;
308393  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
308395  virtual size_t get_childIndex(SgNode *child) override;
308396 
308397 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
308398  // MS: 08/16/2002 method for generating RTI information
308400  virtual RTIReturnType roseRTI() override;
308401 #endif
308402  /* */
308403 
308404 
308405 
308406  /* name Deprecated Functions
308407  \brief Deprecated functions ... incomplete-documentation
308408 
308409  These functions have been deprecated from use.
308410  */
308411  /* */
308412 
308414  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
308415 
308416  // JJW (10/16/2008): Changed to a single function in Node.code, and put
308417  // getVariant() in #if 0 block to prevent confusing Doxygen
308418 #if 0
308419 
308420  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
308422  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
308423 #endif
308424  /* */
308425 
308426 
308427 
308428 
308429  public:
308430  /* name Traversal Support Functions
308431  \brief Traversal support functions ... incomplete-documentation
308432 
308433  These functions have been made public as part of the design, but they are suggested for internal use
308434  or by particularly knowledgable users for specialized tools or applications.
308435  */
308436  /* */
308437 
308438  // DQ (11/26/2005): Support for visitor pattern mechanims
308439  // (inferior to ROSE traversal mechanism, experimental).
308443 
308444  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
308446  virtual void accept (ROSE_VisitorPattern & visitor) override;
308447 
308448  // DQ (12/26/2005): Support for traversal based on the memory pool
308451  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
308452 
308455  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
308456 
308457  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
308458  // This traversal helps support internal tools that call static member functions.
308459  // note: this function operates on the memory pools.
308462  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
308463  /* */
308464 
308465 
308466  public:
308467  /* name Memory Allocation Functions
308468  \brief Memory allocations functions ... incomplete-documentation
308469 
308470  These functions have been made public as part of the design, but they are suggested for internal use
308471  or by particularly knowledgable users for specialized tools or applications.
308472  */
308473  /* */
308474 
308485  virtual bool isInMemoryPool() override;
308486 
308497  virtual void checkDataMemberPointersIfInMemoryPool() override;
308498 
308499  // DQ (4/30/2006): Modified to be a const function.
308514  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
308515 
308525  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
308526 
308538  virtual long getChildIndex( SgNode* childNode ) const override;
308539 
308540  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
308541  // comment here (changed to be a C style comment and not be a doxygen comment).
308542  /* \brief Constructor for use by AST File I/O Mechanism
308543 
308544  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
308545  which obtained via fast binary file I/O from disk.
308546  */
308547  // SgDictionaryExp( SgDictionaryExpStorageClass& source );
308548 
308549 
308550 
308551 
308552 
308553  // JH (10/24/2005): methods added to support the ast file IO
308554  private:
308555 
308556  /* name AST Memory Allocation Support Functions
308557  \brief Memory allocations support....
308558 
308559  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
308560  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
308561  and support the AST File I/O Mechanism.
308562  */
308563  /* */
308564 
308565  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
308566  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
308567  that I use the same type everywhere, if any changes are made. THe second one declares the type
308568  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
308569  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
308570  a correspinding one in the AST_FILE_IO class!
308571  */
308572  // DQ (9/2/2015): This typedef is no longer used, we can't define the
308573  // comment here (changed to be a C style comment and not be a doxygen comment).
308574  /* \brief Typedef used for low level memory access.
308575  */
308576  // typedef unsigned char* TestType;
308577 
308578  // DQ (9/2/2015): This typedef is no longer used, we can't define the
308579  // comment here (changed to be a C style comment and not be a doxygen comment).
308580  /* \brief Typedef used to hold memory addresses as values.
308581  */
308582  // typedef unsigned long AddressType;
308583 
308584 
308585 
308586  // necessary, to have direct access to the p_freepointer and the private methods !
308588  friend class AST_FILE_IO;
308589 
308591  friend class SgDictionaryExpStorageClass;
308592 
308594  friend class AstSpecificDataManagingClass;
308595 
308597  friend class AstSpecificDataManagingClassStorageClass;
308598 
308599  public:
308601  SgDictionaryExp( const SgDictionaryExpStorageClass& source );
308602 
308603  // private: // JJW hack
308604  /*
308605  name AST Memory Allocation Support Variables
308606  Memory allocations support variables
308607 
308608  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
308609  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
308610  and support the AST File I/O Mechanism.
308611  */
308612  /* */
308613 
308614  public:
308615 
308616  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
308617  // to current node (so that it will work cleanly with build functions to specify patterns).
308618  // virtual SgNode* addRegExpAttribute();
308625 
308626 // *** COMMON CODE SECTION ENDS HERE ***
308627 
308628 
308629 // End of memberFunctionString
308630 // Start of memberFunctionString
308631 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
308632 
308633  // the generated cast function
308634  // friend ROSE_DLL_API SgDictionaryExp* isSgDictionaryExp ( SgNode* s );
308635 
308636  typedef SgExpression base_node_type;
308637 
308638 
308639 // End of memberFunctionString
308640 // Start of memberFunctionString
308641 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
308642 
308643  SgType* get_type() const override;
308644 
308645 
308646 // End of memberFunctionString
308647 // Start of memberFunctionString
308648 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
308649 
308650  void post_construction_initialization() override;
308651 
308652 
308653 // End of memberFunctionString
308654 
308655 
308656 
308657  public:
308658  virtual ~SgDictionaryExp();
308659 
308660 
308661  public:
308662  SgDictionaryExp(Sg_File_Info* startOfConstruct );
308663  SgDictionaryExp();
308664 
308665  protected:
308666 // Start of memberFunctionString
308667 SgKeyDatumPairPtrList p_key_datum_pairs;
308668 
308669 // End of memberFunctionString
308670 
308671 
308672 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
308673 
308674 
308675  };
308676 #endif
308677 
308678 // postdeclarations for SgDictionaryExp
308679 
308680 /* #line 308681 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
308681 
308682 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
308683 
308684 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
308685 
308686 
308687 /* #line 308688 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
308688 
308689 
308690 
308691 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
308692 
308693 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
308694 // This code is automatically generated for each
308695 // terminal and non-terminal within the defined
308696 // grammar. There is a simple way to change the
308697 // code to fix bugs etc. See the ROSE README file
308698 // for directions.
308699 
308700 // tps: (02/22/2010): Adding DLL export requirements
308701 #include "rosedll.h"
308702 
308703 // predeclarations for SgKeyDatumPair
308704 
308705 /* #line 308706 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
308706 
308707 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
308708 
308709 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
308710 
308711 #if 1
308712 // Class Definition for SgKeyDatumPair
308713 class ROSE_DLL_API SgKeyDatumPair : public SgExpression
308714  {
308715  public:
308716 
308717 
308718 /* #line 308719 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
308719 
308720  virtual SgNode* copy ( SgCopyHelp& help) const override;
308721 // Start of memberFunctionString
308722 /* #line 1394 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
308723 
308724 
308725 
308726 // End of memberFunctionString
308727 // Start of memberFunctionString
308728 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
308729 
308730 // *** COMMON CODE SECTION BEGINS HERE ***
308731 
308732  public:
308733 
308734  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
308735  // and not required which is required to match the other aspects of the copy mechanism code generation.
308736  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
308737  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
308738  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
308739  // virtual SgNode* copy ( const SgCopyHelp & help) const;
308740 
308742  virtual std::string class_name() const override;
308743 
308745  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
308746 
308748  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
308749  // static const VariantT static_variant = V_SgKeyDatumPair;
308750  enum { static_variant = V_SgKeyDatumPair };
308751 
308752  /* the generated cast function */
308754  ROSE_DLL_API friend SgKeyDatumPair* isSgKeyDatumPair( SgNode * s );
308755 
308757  ROSE_DLL_API friend const SgKeyDatumPair* isSgKeyDatumPair( const SgNode * s );
308758 
308759  // ******************************************
308760  // * Memory Pool / New / Delete
308761  // ******************************************
308762 
308763  public:
308765  static const unsigned pool_size; //
308767  static std::vector<unsigned char *> pools; //
308769  static SgKeyDatumPair * next_node; //
308770 
308772  static unsigned long initializeStorageClassArray(SgKeyDatumPairStorageClass *); //
308773 
308775  static void clearMemoryPool(); //
308776  static void deleteMemoryPool(); //
308777 
308779  static void extendMemoryPoolForFileIO(); //
308780 
308782  static SgKeyDatumPair * getPointerFromGlobalIndex(unsigned long); //
308784  static SgKeyDatumPair * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
308785 
308787  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
308789  static void resetValidFreepointers(); //
308791  static unsigned long getNumberOfLastValidPointer(); //
308792 
308793 
308794 #if defined(INLINE_FUNCTIONS)
308795 
308796  inline void *operator new (size_t size);
308797 #else
308798 
308799  void *operator new (size_t size);
308800 #endif
308801 
308802  void operator delete (void* pointer, size_t size);
308803 
308804  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
308805  void operator delete (void* pointer)
308806  {
308807  // This is the generated delete operator...
308808  SgKeyDatumPair::operator delete (pointer,sizeof(SgKeyDatumPair));
308809  }
308810 
308812  static size_t numberOfNodes();
308813 
308815  static size_t memoryUsage();
308816 
308817  // End of scope which started in IR nodes specific code
308818  /* */
308819 
308820  /* name Internal Functions
308821  \brief Internal functions ... incomplete-documentation
308822 
308823  These functions have been made public as part of the design, but they are suggested for internal use
308824  or by particularly knowledgeable users for specialized tools or applications.
308825 
308826  \internal We could not make these private because they are required by user for special purposes. And
308827  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
308828 
308829  */
308830 
308831  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
308832  // overridden in every class by *generated* implementation
308834  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
308835  // MS: 06/28/02 container of names of variables or container indices
308836  // used used in the traversal to access AST successor nodes
308837  // overridden in every class by *generated* implementation
308840  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
308841 
308842  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
308843  // than all the vector copies. The implementation for these functions is generated for each class.
308845  virtual size_t get_numberOfTraversalSuccessors() override;
308847  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
308849  virtual size_t get_childIndex(SgNode *child) override;
308850 
308851 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
308852  // MS: 08/16/2002 method for generating RTI information
308854  virtual RTIReturnType roseRTI() override;
308855 #endif
308856  /* */
308857 
308858 
308859 
308860  /* name Deprecated Functions
308861  \brief Deprecated functions ... incomplete-documentation
308862 
308863  These functions have been deprecated from use.
308864  */
308865  /* */
308866 
308868  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
308869 
308870  // JJW (10/16/2008): Changed to a single function in Node.code, and put
308871  // getVariant() in #if 0 block to prevent confusing Doxygen
308872 #if 0
308873 
308874  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
308876  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
308877 #endif
308878  /* */
308879 
308880 
308881 
308882 
308883  public:
308884  /* name Traversal Support Functions
308885  \brief Traversal support functions ... incomplete-documentation
308886 
308887  These functions have been made public as part of the design, but they are suggested for internal use
308888  or by particularly knowledgable users for specialized tools or applications.
308889  */
308890  /* */
308891 
308892  // DQ (11/26/2005): Support for visitor pattern mechanims
308893  // (inferior to ROSE traversal mechanism, experimental).
308897 
308898  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
308900  virtual void accept (ROSE_VisitorPattern & visitor) override;
308901 
308902  // DQ (12/26/2005): Support for traversal based on the memory pool
308905  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
308906 
308909  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
308910 
308911  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
308912  // This traversal helps support internal tools that call static member functions.
308913  // note: this function operates on the memory pools.
308916  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
308917  /* */
308918 
308919 
308920  public:
308921  /* name Memory Allocation Functions
308922  \brief Memory allocations functions ... incomplete-documentation
308923 
308924  These functions have been made public as part of the design, but they are suggested for internal use
308925  or by particularly knowledgable users for specialized tools or applications.
308926  */
308927  /* */
308928 
308939  virtual bool isInMemoryPool() override;
308940 
308951  virtual void checkDataMemberPointersIfInMemoryPool() override;
308952 
308953  // DQ (4/30/2006): Modified to be a const function.
308968  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
308969 
308979  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
308980 
308992  virtual long getChildIndex( SgNode* childNode ) const override;
308993 
308994  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
308995  // comment here (changed to be a C style comment and not be a doxygen comment).
308996  /* \brief Constructor for use by AST File I/O Mechanism
308997 
308998  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
308999  which obtained via fast binary file I/O from disk.
309000  */
309001  // SgKeyDatumPair( SgKeyDatumPairStorageClass& source );
309002 
309003 
309004 
309005 
309006 
309007  // JH (10/24/2005): methods added to support the ast file IO
309008  private:
309009 
309010  /* name AST Memory Allocation Support Functions
309011  \brief Memory allocations support....
309012 
309013  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
309014  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
309015  and support the AST File I/O Mechanism.
309016  */
309017  /* */
309018 
309019  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
309020  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
309021  that I use the same type everywhere, if any changes are made. THe second one declares the type
309022  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
309023  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
309024  a correspinding one in the AST_FILE_IO class!
309025  */
309026  // DQ (9/2/2015): This typedef is no longer used, we can't define the
309027  // comment here (changed to be a C style comment and not be a doxygen comment).
309028  /* \brief Typedef used for low level memory access.
309029  */
309030  // typedef unsigned char* TestType;
309031 
309032  // DQ (9/2/2015): This typedef is no longer used, we can't define the
309033  // comment here (changed to be a C style comment and not be a doxygen comment).
309034  /* \brief Typedef used to hold memory addresses as values.
309035  */
309036  // typedef unsigned long AddressType;
309037 
309038 
309039 
309040  // necessary, to have direct access to the p_freepointer and the private methods !
309042  friend class AST_FILE_IO;
309043 
309045  friend class SgKeyDatumPairStorageClass;
309046 
309048  friend class AstSpecificDataManagingClass;
309049 
309051  friend class AstSpecificDataManagingClassStorageClass;
309052 
309053  public:
309055  SgKeyDatumPair( const SgKeyDatumPairStorageClass& source );
309056 
309057  // private: // JJW hack
309058  /*
309059  name AST Memory Allocation Support Variables
309060  Memory allocations support variables
309061 
309062  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
309063  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
309064  and support the AST File I/O Mechanism.
309065  */
309066  /* */
309067 
309068  public:
309069 
309070  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
309071  // to current node (so that it will work cleanly with build functions to specify patterns).
309072  // virtual SgNode* addRegExpAttribute();
309079 
309080 // *** COMMON CODE SECTION ENDS HERE ***
309081 
309082 
309083 // End of memberFunctionString
309084 // Start of memberFunctionString
309085 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
309086 
309087  // the generated cast function
309088  // friend ROSE_DLL_API SgKeyDatumPair* isSgKeyDatumPair ( SgNode* s );
309089 
309090  typedef SgExpression base_node_type;
309091 
309092 
309093 // End of memberFunctionString
309094 // Start of memberFunctionString
309095 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
309096 
309097  SgType* get_type() const override;
309098 
309099 
309100 // End of memberFunctionString
309101 // Start of memberFunctionString
309102 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
309103 
309104  void post_construction_initialization() override;
309105 
309106 
309107 // End of memberFunctionString
309108 
309109  public:
309110  SgExpression* get_key() const;
309111  void set_key(SgExpression* key);
309112 
309113  public:
309114  SgExpression* get_datum() const;
309115  void set_datum(SgExpression* datum);
309116 
309117 
309118  public:
309119  virtual ~SgKeyDatumPair();
309120 
309121 
309122  public:
309123  SgKeyDatumPair(Sg_File_Info* startOfConstruct , SgExpression* key = NULL, SgExpression* datum = NULL);
309124  SgKeyDatumPair(SgExpression* key, SgExpression* datum);
309125 
309126  protected:
309127 // Start of memberFunctionString
309128 SgExpression* p_key;
309129 
309130 // End of memberFunctionString
309131 // Start of memberFunctionString
309132 SgExpression* p_datum;
309133 
309134 // End of memberFunctionString
309135 
309136 
309137 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
309138 
309139 
309140  };
309141 #endif
309142 
309143 // postdeclarations for SgKeyDatumPair
309144 
309145 /* #line 309146 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
309146 
309147 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
309148 
309149 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
309150 
309151 
309152 /* #line 309153 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
309153 
309154 
309155 
309156 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
309157 
309158 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
309159 // This code is automatically generated for each
309160 // terminal and non-terminal within the defined
309161 // grammar. There is a simple way to change the
309162 // code to fix bugs etc. See the ROSE README file
309163 // for directions.
309164 
309165 // tps: (02/22/2010): Adding DLL export requirements
309166 #include "rosedll.h"
309167 
309168 // predeclarations for SgComprehension
309169 
309170 /* #line 309171 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
309171 
309172 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
309173 
309174 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
309175 
309176 #if 1
309177 // Class Definition for SgComprehension
309178 class ROSE_DLL_API SgComprehension : public SgExpression
309179  {
309180  public:
309181 
309182 
309183 /* #line 309184 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
309184 
309185  virtual SgNode* copy ( SgCopyHelp& help) const override;
309186 // Start of memberFunctionString
309187 /* #line 1376 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
309188 
309189 
309190 
309191 // End of memberFunctionString
309192 // Start of memberFunctionString
309193 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
309194 
309195 // *** COMMON CODE SECTION BEGINS HERE ***
309196 
309197  public:
309198 
309199  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
309200  // and not required which is required to match the other aspects of the copy mechanism code generation.
309201  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
309202  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
309203  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
309204  // virtual SgNode* copy ( const SgCopyHelp & help) const;
309205 
309207  virtual std::string class_name() const override;
309208 
309210  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
309211 
309213  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
309214  // static const VariantT static_variant = V_SgComprehension;
309215  enum { static_variant = V_SgComprehension };
309216 
309217  /* the generated cast function */
309219  ROSE_DLL_API friend SgComprehension* isSgComprehension( SgNode * s );
309220 
309222  ROSE_DLL_API friend const SgComprehension* isSgComprehension( const SgNode * s );
309223 
309224  // ******************************************
309225  // * Memory Pool / New / Delete
309226  // ******************************************
309227 
309228  public:
309230  static const unsigned pool_size; //
309232  static std::vector<unsigned char *> pools; //
309234  static SgComprehension * next_node; //
309235 
309237  static unsigned long initializeStorageClassArray(SgComprehensionStorageClass *); //
309238 
309240  static void clearMemoryPool(); //
309241  static void deleteMemoryPool(); //
309242 
309244  static void extendMemoryPoolForFileIO(); //
309245 
309247  static SgComprehension * getPointerFromGlobalIndex(unsigned long); //
309249  static SgComprehension * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
309250 
309252  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
309254  static void resetValidFreepointers(); //
309256  static unsigned long getNumberOfLastValidPointer(); //
309257 
309258 
309259 #if defined(INLINE_FUNCTIONS)
309260 
309261  inline void *operator new (size_t size);
309262 #else
309263 
309264  void *operator new (size_t size);
309265 #endif
309266 
309267  void operator delete (void* pointer, size_t size);
309268 
309269  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
309270  void operator delete (void* pointer)
309271  {
309272  // This is the generated delete operator...
309273  SgComprehension::operator delete (pointer,sizeof(SgComprehension));
309274  }
309275 
309277  static size_t numberOfNodes();
309278 
309280  static size_t memoryUsage();
309281 
309282  // End of scope which started in IR nodes specific code
309283  /* */
309284 
309285  /* name Internal Functions
309286  \brief Internal functions ... incomplete-documentation
309287 
309288  These functions have been made public as part of the design, but they are suggested for internal use
309289  or by particularly knowledgeable users for specialized tools or applications.
309290 
309291  \internal We could not make these private because they are required by user for special purposes. And
309292  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
309293 
309294  */
309295 
309296  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
309297  // overridden in every class by *generated* implementation
309299  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
309300  // MS: 06/28/02 container of names of variables or container indices
309301  // used used in the traversal to access AST successor nodes
309302  // overridden in every class by *generated* implementation
309305  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
309306 
309307  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
309308  // than all the vector copies. The implementation for these functions is generated for each class.
309310  virtual size_t get_numberOfTraversalSuccessors() override;
309312  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
309314  virtual size_t get_childIndex(SgNode *child) override;
309315 
309316 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
309317  // MS: 08/16/2002 method for generating RTI information
309319  virtual RTIReturnType roseRTI() override;
309320 #endif
309321  /* */
309322 
309323 
309324 
309325  /* name Deprecated Functions
309326  \brief Deprecated functions ... incomplete-documentation
309327 
309328  These functions have been deprecated from use.
309329  */
309330  /* */
309331 
309333  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
309334 
309335  // JJW (10/16/2008): Changed to a single function in Node.code, and put
309336  // getVariant() in #if 0 block to prevent confusing Doxygen
309337 #if 0
309338 
309339  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
309341  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
309342 #endif
309343  /* */
309344 
309345 
309346 
309347 
309348  public:
309349  /* name Traversal Support Functions
309350  \brief Traversal support functions ... incomplete-documentation
309351 
309352  These functions have been made public as part of the design, but they are suggested for internal use
309353  or by particularly knowledgable users for specialized tools or applications.
309354  */
309355  /* */
309356 
309357  // DQ (11/26/2005): Support for visitor pattern mechanims
309358  // (inferior to ROSE traversal mechanism, experimental).
309362 
309363  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
309365  virtual void accept (ROSE_VisitorPattern & visitor) override;
309366 
309367  // DQ (12/26/2005): Support for traversal based on the memory pool
309370  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
309371 
309374  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
309375 
309376  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
309377  // This traversal helps support internal tools that call static member functions.
309378  // note: this function operates on the memory pools.
309381  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
309382  /* */
309383 
309384 
309385  public:
309386  /* name Memory Allocation Functions
309387  \brief Memory allocations functions ... incomplete-documentation
309388 
309389  These functions have been made public as part of the design, but they are suggested for internal use
309390  or by particularly knowledgable users for specialized tools or applications.
309391  */
309392  /* */
309393 
309404  virtual bool isInMemoryPool() override;
309405 
309416  virtual void checkDataMemberPointersIfInMemoryPool() override;
309417 
309418  // DQ (4/30/2006): Modified to be a const function.
309433  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
309434 
309444  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
309445 
309457  virtual long getChildIndex( SgNode* childNode ) const override;
309458 
309459  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
309460  // comment here (changed to be a C style comment and not be a doxygen comment).
309461  /* \brief Constructor for use by AST File I/O Mechanism
309462 
309463  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
309464  which obtained via fast binary file I/O from disk.
309465  */
309466  // SgComprehension( SgComprehensionStorageClass& source );
309467 
309468 
309469 
309470 
309471 
309472  // JH (10/24/2005): methods added to support the ast file IO
309473  private:
309474 
309475  /* name AST Memory Allocation Support Functions
309476  \brief Memory allocations support....
309477 
309478  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
309479  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
309480  and support the AST File I/O Mechanism.
309481  */
309482  /* */
309483 
309484  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
309485  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
309486  that I use the same type everywhere, if any changes are made. THe second one declares the type
309487  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
309488  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
309489  a correspinding one in the AST_FILE_IO class!
309490  */
309491  // DQ (9/2/2015): This typedef is no longer used, we can't define the
309492  // comment here (changed to be a C style comment and not be a doxygen comment).
309493  /* \brief Typedef used for low level memory access.
309494  */
309495  // typedef unsigned char* TestType;
309496 
309497  // DQ (9/2/2015): This typedef is no longer used, we can't define the
309498  // comment here (changed to be a C style comment and not be a doxygen comment).
309499  /* \brief Typedef used to hold memory addresses as values.
309500  */
309501  // typedef unsigned long AddressType;
309502 
309503 
309504 
309505  // necessary, to have direct access to the p_freepointer and the private methods !
309507  friend class AST_FILE_IO;
309508 
309510  friend class SgComprehensionStorageClass;
309511 
309513  friend class AstSpecificDataManagingClass;
309514 
309516  friend class AstSpecificDataManagingClassStorageClass;
309517 
309518  public:
309520  SgComprehension( const SgComprehensionStorageClass& source );
309521 
309522  // private: // JJW hack
309523  /*
309524  name AST Memory Allocation Support Variables
309525  Memory allocations support variables
309526 
309527  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
309528  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
309529  and support the AST File I/O Mechanism.
309530  */
309531  /* */
309532 
309533  public:
309534 
309535  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
309536  // to current node (so that it will work cleanly with build functions to specify patterns).
309537  // virtual SgNode* addRegExpAttribute();
309544 
309545 // *** COMMON CODE SECTION ENDS HERE ***
309546 
309547 
309548 // End of memberFunctionString
309549 // Start of memberFunctionString
309550 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
309551 
309552  // the generated cast function
309553  // friend ROSE_DLL_API SgComprehension* isSgComprehension ( SgNode* s );
309554 
309555  typedef SgExpression base_node_type;
309556 
309557 
309558 // End of memberFunctionString
309559 // Start of memberFunctionString
309560 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
309561 
309562  SgType* get_type() const override;
309563 
309564 
309565 // End of memberFunctionString
309566 // Start of memberFunctionString
309567 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
309568 
309569  void post_construction_initialization() override;
309570 
309571 
309572 // End of memberFunctionString
309573 
309574  public:
309575  SgExpression* get_target() const;
309576  void set_target(SgExpression* target);
309577 
309578  public:
309579  SgExpression* get_iter() const;
309580  void set_iter(SgExpression* iter);
309581 
309582  public:
309583  SgExprListExp* get_filters() const;
309584  void set_filters(SgExprListExp* filters);
309585 
309586 
309587  public:
309588  virtual ~SgComprehension();
309589 
309590 
309591  public:
309592  SgComprehension(Sg_File_Info* startOfConstruct , SgExpression* target = NULL, SgExpression* iter = NULL, SgExprListExp* filters = NULL);
309593  SgComprehension(SgExpression* target, SgExpression* iter, SgExprListExp* filters);
309594 
309595  protected:
309596 // Start of memberFunctionString
309597 SgExpression* p_target;
309598 
309599 // End of memberFunctionString
309600 // Start of memberFunctionString
309601 SgExpression* p_iter;
309602 
309603 // End of memberFunctionString
309604 // Start of memberFunctionString
309605 SgExprListExp* p_filters;
309606 
309607 // End of memberFunctionString
309608 
309609 
309610 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
309611 
309612 
309613  };
309614 #endif
309615 
309616 // postdeclarations for SgComprehension
309617 
309618 /* #line 309619 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
309619 
309620 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
309621 
309622 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
309623 
309624 
309625 /* #line 309626 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
309626 
309627 
309628 
309629 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
309630 
309631 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
309632 // This code is automatically generated for each
309633 // terminal and non-terminal within the defined
309634 // grammar. There is a simple way to change the
309635 // code to fix bugs etc. See the ROSE README file
309636 // for directions.
309637 
309638 // tps: (02/22/2010): Adding DLL export requirements
309639 #include "rosedll.h"
309640 
309641 // predeclarations for SgListComprehension
309642 
309643 /* #line 309644 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
309644 
309645 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
309646 
309647 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
309648 
309649 #if 1
309650 // Class Definition for SgListComprehension
309651 class ROSE_DLL_API SgListComprehension : public SgExpression
309652  {
309653  public:
309654 
309655 
309656 /* #line 309657 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
309657 
309658  virtual SgNode* copy ( SgCopyHelp& help) const override;
309659 // Start of memberFunctionString
309660 /* #line 1379 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
309661 
309662 
309663 
309664 // End of memberFunctionString
309665 // Start of memberFunctionString
309666 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
309667 
309668 // *** COMMON CODE SECTION BEGINS HERE ***
309669 
309670  public:
309671 
309672  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
309673  // and not required which is required to match the other aspects of the copy mechanism code generation.
309674  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
309675  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
309676  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
309677  // virtual SgNode* copy ( const SgCopyHelp & help) const;
309678 
309680  virtual std::string class_name() const override;
309681 
309683  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
309684 
309686  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
309687  // static const VariantT static_variant = V_SgListComprehension;
309688  enum { static_variant = V_SgListComprehension };
309689 
309690  /* the generated cast function */
309692  ROSE_DLL_API friend SgListComprehension* isSgListComprehension( SgNode * s );
309693 
309695  ROSE_DLL_API friend const SgListComprehension* isSgListComprehension( const SgNode * s );
309696 
309697  // ******************************************
309698  // * Memory Pool / New / Delete
309699  // ******************************************
309700 
309701  public:
309703  static const unsigned pool_size; //
309705  static std::vector<unsigned char *> pools; //
309707  static SgListComprehension * next_node; //
309708 
309710  static unsigned long initializeStorageClassArray(SgListComprehensionStorageClass *); //
309711 
309713  static void clearMemoryPool(); //
309714  static void deleteMemoryPool(); //
309715 
309717  static void extendMemoryPoolForFileIO(); //
309718 
309720  static SgListComprehension * getPointerFromGlobalIndex(unsigned long); //
309722  static SgListComprehension * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
309723 
309725  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
309727  static void resetValidFreepointers(); //
309729  static unsigned long getNumberOfLastValidPointer(); //
309730 
309731 
309732 #if defined(INLINE_FUNCTIONS)
309733 
309734  inline void *operator new (size_t size);
309735 #else
309736 
309737  void *operator new (size_t size);
309738 #endif
309739 
309740  void operator delete (void* pointer, size_t size);
309741 
309742  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
309743  void operator delete (void* pointer)
309744  {
309745  // This is the generated delete operator...
309746  SgListComprehension::operator delete (pointer,sizeof(SgListComprehension));
309747  }
309748 
309750  static size_t numberOfNodes();
309751 
309753  static size_t memoryUsage();
309754 
309755  // End of scope which started in IR nodes specific code
309756  /* */
309757 
309758  /* name Internal Functions
309759  \brief Internal functions ... incomplete-documentation
309760 
309761  These functions have been made public as part of the design, but they are suggested for internal use
309762  or by particularly knowledgeable users for specialized tools or applications.
309763 
309764  \internal We could not make these private because they are required by user for special purposes. And
309765  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
309766 
309767  */
309768 
309769  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
309770  // overridden in every class by *generated* implementation
309772  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
309773  // MS: 06/28/02 container of names of variables or container indices
309774  // used used in the traversal to access AST successor nodes
309775  // overridden in every class by *generated* implementation
309778  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
309779 
309780  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
309781  // than all the vector copies. The implementation for these functions is generated for each class.
309783  virtual size_t get_numberOfTraversalSuccessors() override;
309785  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
309787  virtual size_t get_childIndex(SgNode *child) override;
309788 
309789 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
309790  // MS: 08/16/2002 method for generating RTI information
309792  virtual RTIReturnType roseRTI() override;
309793 #endif
309794  /* */
309795 
309796 
309797 
309798  /* name Deprecated Functions
309799  \brief Deprecated functions ... incomplete-documentation
309800 
309801  These functions have been deprecated from use.
309802  */
309803  /* */
309804 
309806  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
309807 
309808  // JJW (10/16/2008): Changed to a single function in Node.code, and put
309809  // getVariant() in #if 0 block to prevent confusing Doxygen
309810 #if 0
309811 
309812  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
309814  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
309815 #endif
309816  /* */
309817 
309818 
309819 
309820 
309821  public:
309822  /* name Traversal Support Functions
309823  \brief Traversal support functions ... incomplete-documentation
309824 
309825  These functions have been made public as part of the design, but they are suggested for internal use
309826  or by particularly knowledgable users for specialized tools or applications.
309827  */
309828  /* */
309829 
309830  // DQ (11/26/2005): Support for visitor pattern mechanims
309831  // (inferior to ROSE traversal mechanism, experimental).
309835 
309836  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
309838  virtual void accept (ROSE_VisitorPattern & visitor) override;
309839 
309840  // DQ (12/26/2005): Support for traversal based on the memory pool
309843  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
309844 
309847  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
309848 
309849  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
309850  // This traversal helps support internal tools that call static member functions.
309851  // note: this function operates on the memory pools.
309854  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
309855  /* */
309856 
309857 
309858  public:
309859  /* name Memory Allocation Functions
309860  \brief Memory allocations functions ... incomplete-documentation
309861 
309862  These functions have been made public as part of the design, but they are suggested for internal use
309863  or by particularly knowledgable users for specialized tools or applications.
309864  */
309865  /* */
309866 
309877  virtual bool isInMemoryPool() override;
309878 
309889  virtual void checkDataMemberPointersIfInMemoryPool() override;
309890 
309891  // DQ (4/30/2006): Modified to be a const function.
309906  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
309907 
309917  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
309918 
309930  virtual long getChildIndex( SgNode* childNode ) const override;
309931 
309932  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
309933  // comment here (changed to be a C style comment and not be a doxygen comment).
309934  /* \brief Constructor for use by AST File I/O Mechanism
309935 
309936  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
309937  which obtained via fast binary file I/O from disk.
309938  */
309939  // SgListComprehension( SgListComprehensionStorageClass& source );
309940 
309941 
309942 
309943 
309944 
309945  // JH (10/24/2005): methods added to support the ast file IO
309946  private:
309947 
309948  /* name AST Memory Allocation Support Functions
309949  \brief Memory allocations support....
309950 
309951  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
309952  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
309953  and support the AST File I/O Mechanism.
309954  */
309955  /* */
309956 
309957  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
309958  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
309959  that I use the same type everywhere, if any changes are made. THe second one declares the type
309960  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
309961  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
309962  a correspinding one in the AST_FILE_IO class!
309963  */
309964  // DQ (9/2/2015): This typedef is no longer used, we can't define the
309965  // comment here (changed to be a C style comment and not be a doxygen comment).
309966  /* \brief Typedef used for low level memory access.
309967  */
309968  // typedef unsigned char* TestType;
309969 
309970  // DQ (9/2/2015): This typedef is no longer used, we can't define the
309971  // comment here (changed to be a C style comment and not be a doxygen comment).
309972  /* \brief Typedef used to hold memory addresses as values.
309973  */
309974  // typedef unsigned long AddressType;
309975 
309976 
309977 
309978  // necessary, to have direct access to the p_freepointer and the private methods !
309980  friend class AST_FILE_IO;
309981 
309983  friend class SgListComprehensionStorageClass;
309984 
309986  friend class AstSpecificDataManagingClass;
309987 
309989  friend class AstSpecificDataManagingClassStorageClass;
309990 
309991  public:
309993  SgListComprehension( const SgListComprehensionStorageClass& source );
309994 
309995  // private: // JJW hack
309996  /*
309997  name AST Memory Allocation Support Variables
309998  Memory allocations support variables
309999 
310000  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
310001  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
310002  and support the AST File I/O Mechanism.
310003  */
310004  /* */
310005 
310006  public:
310007 
310008  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
310009  // to current node (so that it will work cleanly with build functions to specify patterns).
310010  // virtual SgNode* addRegExpAttribute();
310017 
310018 // *** COMMON CODE SECTION ENDS HERE ***
310019 
310020 
310021 // End of memberFunctionString
310022 // Start of memberFunctionString
310023 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
310024 
310025  // the generated cast function
310026  // friend ROSE_DLL_API SgListComprehension* isSgListComprehension ( SgNode* s );
310027 
310028  typedef SgExpression base_node_type;
310029 
310030 
310031 // End of memberFunctionString
310032 // Start of memberFunctionString
310033 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
310034 
310035  SgType* get_type() const override;
310036 
310037 
310038 // End of memberFunctionString
310039 // Start of memberFunctionString
310040 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
310041 
310042  void post_construction_initialization() override;
310043 
310044 
310045 // End of memberFunctionString
310046 
310047  public:
310048  SgExpression* get_element() const;
310049  void set_element(SgExpression* element);
310050 
310051  public:
310052  SgExprListExp* get_generators() const;
310053  void set_generators(SgExprListExp* generators);
310054 
310055 
310056  public:
310057  virtual ~SgListComprehension();
310058 
310059 
310060  public:
310061  SgListComprehension(Sg_File_Info* startOfConstruct , SgExpression* element = NULL, SgExprListExp* generators = NULL);
310062  SgListComprehension(SgExpression* element, SgExprListExp* generators);
310063 
310064  protected:
310065 // Start of memberFunctionString
310066 SgExpression* p_element;
310067 
310068 // End of memberFunctionString
310069 // Start of memberFunctionString
310070 SgExprListExp* p_generators;
310071 
310072 // End of memberFunctionString
310073 
310074 
310075 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
310076 
310077 
310078  };
310079 #endif
310080 
310081 // postdeclarations for SgListComprehension
310082 
310083 /* #line 310084 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
310084 
310085 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
310086 
310087 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
310088 
310089 
310090 /* #line 310091 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
310091 
310092 
310093 
310094 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
310095 
310096 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
310097 // This code is automatically generated for each
310098 // terminal and non-terminal within the defined
310099 // grammar. There is a simple way to change the
310100 // code to fix bugs etc. See the ROSE README file
310101 // for directions.
310102 
310103 // tps: (02/22/2010): Adding DLL export requirements
310104 #include "rosedll.h"
310105 
310106 // predeclarations for SgSetComprehension
310107 
310108 /* #line 310109 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
310109 
310110 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
310111 
310112 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
310113 
310114 #if 1
310115 // Class Definition for SgSetComprehension
310116 class ROSE_DLL_API SgSetComprehension : public SgExpression
310117  {
310118  public:
310119 
310120 
310121 /* #line 310122 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
310122 
310123  virtual SgNode* copy ( SgCopyHelp& help) const override;
310124 // Start of memberFunctionString
310125 /* #line 1382 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
310126 
310127 
310128 
310129 // End of memberFunctionString
310130 // Start of memberFunctionString
310131 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
310132 
310133 // *** COMMON CODE SECTION BEGINS HERE ***
310134 
310135  public:
310136 
310137  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
310138  // and not required which is required to match the other aspects of the copy mechanism code generation.
310139  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
310140  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
310141  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
310142  // virtual SgNode* copy ( const SgCopyHelp & help) const;
310143 
310145  virtual std::string class_name() const override;
310146 
310148  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
310149 
310151  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
310152  // static const VariantT static_variant = V_SgSetComprehension;
310153  enum { static_variant = V_SgSetComprehension };
310154 
310155  /* the generated cast function */
310157  ROSE_DLL_API friend SgSetComprehension* isSgSetComprehension( SgNode * s );
310158 
310160  ROSE_DLL_API friend const SgSetComprehension* isSgSetComprehension( const SgNode * s );
310161 
310162  // ******************************************
310163  // * Memory Pool / New / Delete
310164  // ******************************************
310165 
310166  public:
310168  static const unsigned pool_size; //
310170  static std::vector<unsigned char *> pools; //
310172  static SgSetComprehension * next_node; //
310173 
310175  static unsigned long initializeStorageClassArray(SgSetComprehensionStorageClass *); //
310176 
310178  static void clearMemoryPool(); //
310179  static void deleteMemoryPool(); //
310180 
310182  static void extendMemoryPoolForFileIO(); //
310183 
310185  static SgSetComprehension * getPointerFromGlobalIndex(unsigned long); //
310187  static SgSetComprehension * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
310188 
310190  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
310192  static void resetValidFreepointers(); //
310194  static unsigned long getNumberOfLastValidPointer(); //
310195 
310196 
310197 #if defined(INLINE_FUNCTIONS)
310198 
310199  inline void *operator new (size_t size);
310200 #else
310201 
310202  void *operator new (size_t size);
310203 #endif
310204 
310205  void operator delete (void* pointer, size_t size);
310206 
310207  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
310208  void operator delete (void* pointer)
310209  {
310210  // This is the generated delete operator...
310211  SgSetComprehension::operator delete (pointer,sizeof(SgSetComprehension));
310212  }
310213 
310215  static size_t numberOfNodes();
310216 
310218  static size_t memoryUsage();
310219 
310220  // End of scope which started in IR nodes specific code
310221  /* */
310222 
310223  /* name Internal Functions
310224  \brief Internal functions ... incomplete-documentation
310225 
310226  These functions have been made public as part of the design, but they are suggested for internal use
310227  or by particularly knowledgeable users for specialized tools or applications.
310228 
310229  \internal We could not make these private because they are required by user for special purposes. And
310230  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
310231 
310232  */
310233 
310234  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
310235  // overridden in every class by *generated* implementation
310237  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
310238  // MS: 06/28/02 container of names of variables or container indices
310239  // used used in the traversal to access AST successor nodes
310240  // overridden in every class by *generated* implementation
310243  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
310244 
310245  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
310246  // than all the vector copies. The implementation for these functions is generated for each class.
310248  virtual size_t get_numberOfTraversalSuccessors() override;
310250  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
310252  virtual size_t get_childIndex(SgNode *child) override;
310253 
310254 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
310255  // MS: 08/16/2002 method for generating RTI information
310257  virtual RTIReturnType roseRTI() override;
310258 #endif
310259  /* */
310260 
310261 
310262 
310263  /* name Deprecated Functions
310264  \brief Deprecated functions ... incomplete-documentation
310265 
310266  These functions have been deprecated from use.
310267  */
310268  /* */
310269 
310271  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
310272 
310273  // JJW (10/16/2008): Changed to a single function in Node.code, and put
310274  // getVariant() in #if 0 block to prevent confusing Doxygen
310275 #if 0
310276 
310277  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
310279  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
310280 #endif
310281  /* */
310282 
310283 
310284 
310285 
310286  public:
310287  /* name Traversal Support Functions
310288  \brief Traversal support functions ... incomplete-documentation
310289 
310290  These functions have been made public as part of the design, but they are suggested for internal use
310291  or by particularly knowledgable users for specialized tools or applications.
310292  */
310293  /* */
310294 
310295  // DQ (11/26/2005): Support for visitor pattern mechanims
310296  // (inferior to ROSE traversal mechanism, experimental).
310300 
310301  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
310303  virtual void accept (ROSE_VisitorPattern & visitor) override;
310304 
310305  // DQ (12/26/2005): Support for traversal based on the memory pool
310308  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
310309 
310312  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
310313 
310314  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
310315  // This traversal helps support internal tools that call static member functions.
310316  // note: this function operates on the memory pools.
310319  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
310320  /* */
310321 
310322 
310323  public:
310324  /* name Memory Allocation Functions
310325  \brief Memory allocations functions ... incomplete-documentation
310326 
310327  These functions have been made public as part of the design, but they are suggested for internal use
310328  or by particularly knowledgable users for specialized tools or applications.
310329  */
310330  /* */
310331 
310342  virtual bool isInMemoryPool() override;
310343 
310354  virtual void checkDataMemberPointersIfInMemoryPool() override;
310355 
310356  // DQ (4/30/2006): Modified to be a const function.
310371  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
310372 
310382  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
310383 
310395  virtual long getChildIndex( SgNode* childNode ) const override;
310396 
310397  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
310398  // comment here (changed to be a C style comment and not be a doxygen comment).
310399  /* \brief Constructor for use by AST File I/O Mechanism
310400 
310401  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
310402  which obtained via fast binary file I/O from disk.
310403  */
310404  // SgSetComprehension( SgSetComprehensionStorageClass& source );
310405 
310406 
310407 
310408 
310409 
310410  // JH (10/24/2005): methods added to support the ast file IO
310411  private:
310412 
310413  /* name AST Memory Allocation Support Functions
310414  \brief Memory allocations support....
310415 
310416  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
310417  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
310418  and support the AST File I/O Mechanism.
310419  */
310420  /* */
310421 
310422  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
310423  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
310424  that I use the same type everywhere, if any changes are made. THe second one declares the type
310425  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
310426  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
310427  a correspinding one in the AST_FILE_IO class!
310428  */
310429  // DQ (9/2/2015): This typedef is no longer used, we can't define the
310430  // comment here (changed to be a C style comment and not be a doxygen comment).
310431  /* \brief Typedef used for low level memory access.
310432  */
310433  // typedef unsigned char* TestType;
310434 
310435  // DQ (9/2/2015): This typedef is no longer used, we can't define the
310436  // comment here (changed to be a C style comment and not be a doxygen comment).
310437  /* \brief Typedef used to hold memory addresses as values.
310438  */
310439  // typedef unsigned long AddressType;
310440 
310441 
310442 
310443  // necessary, to have direct access to the p_freepointer and the private methods !
310445  friend class AST_FILE_IO;
310446 
310448  friend class SgSetComprehensionStorageClass;
310449 
310451  friend class AstSpecificDataManagingClass;
310452 
310454  friend class AstSpecificDataManagingClassStorageClass;
310455 
310456  public:
310458  SgSetComprehension( const SgSetComprehensionStorageClass& source );
310459 
310460  // private: // JJW hack
310461  /*
310462  name AST Memory Allocation Support Variables
310463  Memory allocations support variables
310464 
310465  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
310466  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
310467  and support the AST File I/O Mechanism.
310468  */
310469  /* */
310470 
310471  public:
310472 
310473  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
310474  // to current node (so that it will work cleanly with build functions to specify patterns).
310475  // virtual SgNode* addRegExpAttribute();
310482 
310483 // *** COMMON CODE SECTION ENDS HERE ***
310484 
310485 
310486 // End of memberFunctionString
310487 // Start of memberFunctionString
310488 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
310489 
310490  // the generated cast function
310491  // friend ROSE_DLL_API SgSetComprehension* isSgSetComprehension ( SgNode* s );
310492 
310493  typedef SgExpression base_node_type;
310494 
310495 
310496 // End of memberFunctionString
310497 // Start of memberFunctionString
310498 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
310499 
310500  SgType* get_type() const override;
310501 
310502 
310503 // End of memberFunctionString
310504 // Start of memberFunctionString
310505 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
310506 
310507  void post_construction_initialization() override;
310508 
310509 
310510 // End of memberFunctionString
310511 
310512  public:
310513  SgExpression* get_element() const;
310514  void set_element(SgExpression* element);
310515 
310516  public:
310517  SgExprListExp* get_generators() const;
310518  void set_generators(SgExprListExp* generators);
310519 
310520 
310521  public:
310522  virtual ~SgSetComprehension();
310523 
310524 
310525  public:
310526  SgSetComprehension(Sg_File_Info* startOfConstruct , SgExpression* element = NULL, SgExprListExp* generators = NULL);
310527  SgSetComprehension(SgExpression* element, SgExprListExp* generators);
310528 
310529  protected:
310530 // Start of memberFunctionString
310531 SgExpression* p_element;
310532 
310533 // End of memberFunctionString
310534 // Start of memberFunctionString
310535 SgExprListExp* p_generators;
310536 
310537 // End of memberFunctionString
310538 
310539 
310540 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
310541 
310542 
310543  };
310544 #endif
310545 
310546 // postdeclarations for SgSetComprehension
310547 
310548 /* #line 310549 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
310549 
310550 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
310551 
310552 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
310553 
310554 
310555 /* #line 310556 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
310556 
310557 
310558 
310559 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
310560 
310561 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
310562 // This code is automatically generated for each
310563 // terminal and non-terminal within the defined
310564 // grammar. There is a simple way to change the
310565 // code to fix bugs etc. See the ROSE README file
310566 // for directions.
310567 
310568 // tps: (02/22/2010): Adding DLL export requirements
310569 #include "rosedll.h"
310570 
310571 // predeclarations for SgDictionaryComprehension
310572 
310573 /* #line 310574 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
310574 
310575 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
310576 
310577 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
310578 
310579 #if 1
310580 // Class Definition for SgDictionaryComprehension
310581 class ROSE_DLL_API SgDictionaryComprehension : public SgExpression
310582  {
310583  public:
310584 
310585 
310586 /* #line 310587 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
310587 
310588  virtual SgNode* copy ( SgCopyHelp& help) const override;
310589 // Start of memberFunctionString
310590 /* #line 1385 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
310591 
310592 
310593 
310594 // End of memberFunctionString
310595 // Start of memberFunctionString
310596 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
310597 
310598 // *** COMMON CODE SECTION BEGINS HERE ***
310599 
310600  public:
310601 
310602  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
310603  // and not required which is required to match the other aspects of the copy mechanism code generation.
310604  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
310605  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
310606  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
310607  // virtual SgNode* copy ( const SgCopyHelp & help) const;
310608 
310610  virtual std::string class_name() const override;
310611 
310613  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
310614 
310616  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
310617  // static const VariantT static_variant = V_SgDictionaryComprehension;
310618  enum { static_variant = V_SgDictionaryComprehension };
310619 
310620  /* the generated cast function */
310622  ROSE_DLL_API friend SgDictionaryComprehension* isSgDictionaryComprehension( SgNode * s );
310623 
310625  ROSE_DLL_API friend const SgDictionaryComprehension* isSgDictionaryComprehension( const SgNode * s );
310626 
310627  // ******************************************
310628  // * Memory Pool / New / Delete
310629  // ******************************************
310630 
310631  public:
310633  static const unsigned pool_size; //
310635  static std::vector<unsigned char *> pools; //
310637  static SgDictionaryComprehension * next_node; //
310638 
310640  static unsigned long initializeStorageClassArray(SgDictionaryComprehensionStorageClass *); //
310641 
310643  static void clearMemoryPool(); //
310644  static void deleteMemoryPool(); //
310645 
310647  static void extendMemoryPoolForFileIO(); //
310648 
310650  static SgDictionaryComprehension * getPointerFromGlobalIndex(unsigned long); //
310652  static SgDictionaryComprehension * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
310653 
310655  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
310657  static void resetValidFreepointers(); //
310659  static unsigned long getNumberOfLastValidPointer(); //
310660 
310661 
310662 #if defined(INLINE_FUNCTIONS)
310663 
310664  inline void *operator new (size_t size);
310665 #else
310666 
310667  void *operator new (size_t size);
310668 #endif
310669 
310670  void operator delete (void* pointer, size_t size);
310671 
310672  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
310673  void operator delete (void* pointer)
310674  {
310675  // This is the generated delete operator...
310676  SgDictionaryComprehension::operator delete (pointer,sizeof(SgDictionaryComprehension));
310677  }
310678 
310680  static size_t numberOfNodes();
310681 
310683  static size_t memoryUsage();
310684 
310685  // End of scope which started in IR nodes specific code
310686  /* */
310687 
310688  /* name Internal Functions
310689  \brief Internal functions ... incomplete-documentation
310690 
310691  These functions have been made public as part of the design, but they are suggested for internal use
310692  or by particularly knowledgeable users for specialized tools or applications.
310693 
310694  \internal We could not make these private because they are required by user for special purposes. And
310695  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
310696 
310697  */
310698 
310699  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
310700  // overridden in every class by *generated* implementation
310702  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
310703  // MS: 06/28/02 container of names of variables or container indices
310704  // used used in the traversal to access AST successor nodes
310705  // overridden in every class by *generated* implementation
310708  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
310709 
310710  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
310711  // than all the vector copies. The implementation for these functions is generated for each class.
310713  virtual size_t get_numberOfTraversalSuccessors() override;
310715  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
310717  virtual size_t get_childIndex(SgNode *child) override;
310718 
310719 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
310720  // MS: 08/16/2002 method for generating RTI information
310722  virtual RTIReturnType roseRTI() override;
310723 #endif
310724  /* */
310725 
310726 
310727 
310728  /* name Deprecated Functions
310729  \brief Deprecated functions ... incomplete-documentation
310730 
310731  These functions have been deprecated from use.
310732  */
310733  /* */
310734 
310736  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
310737 
310738  // JJW (10/16/2008): Changed to a single function in Node.code, and put
310739  // getVariant() in #if 0 block to prevent confusing Doxygen
310740 #if 0
310741 
310742  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
310744  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
310745 #endif
310746  /* */
310747 
310748 
310749 
310750 
310751  public:
310752  /* name Traversal Support Functions
310753  \brief Traversal support functions ... incomplete-documentation
310754 
310755  These functions have been made public as part of the design, but they are suggested for internal use
310756  or by particularly knowledgable users for specialized tools or applications.
310757  */
310758  /* */
310759 
310760  // DQ (11/26/2005): Support for visitor pattern mechanims
310761  // (inferior to ROSE traversal mechanism, experimental).
310765 
310766  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
310768  virtual void accept (ROSE_VisitorPattern & visitor) override;
310769 
310770  // DQ (12/26/2005): Support for traversal based on the memory pool
310773  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
310774 
310777  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
310778 
310779  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
310780  // This traversal helps support internal tools that call static member functions.
310781  // note: this function operates on the memory pools.
310784  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
310785  /* */
310786 
310787 
310788  public:
310789  /* name Memory Allocation Functions
310790  \brief Memory allocations functions ... incomplete-documentation
310791 
310792  These functions have been made public as part of the design, but they are suggested for internal use
310793  or by particularly knowledgable users for specialized tools or applications.
310794  */
310795  /* */
310796 
310807  virtual bool isInMemoryPool() override;
310808 
310819  virtual void checkDataMemberPointersIfInMemoryPool() override;
310820 
310821  // DQ (4/30/2006): Modified to be a const function.
310836  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
310837 
310847  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
310848 
310860  virtual long getChildIndex( SgNode* childNode ) const override;
310861 
310862  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
310863  // comment here (changed to be a C style comment and not be a doxygen comment).
310864  /* \brief Constructor for use by AST File I/O Mechanism
310865 
310866  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
310867  which obtained via fast binary file I/O from disk.
310868  */
310869  // SgDictionaryComprehension( SgDictionaryComprehensionStorageClass& source );
310870 
310871 
310872 
310873 
310874 
310875  // JH (10/24/2005): methods added to support the ast file IO
310876  private:
310877 
310878  /* name AST Memory Allocation Support Functions
310879  \brief Memory allocations support....
310880 
310881  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
310882  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
310883  and support the AST File I/O Mechanism.
310884  */
310885  /* */
310886 
310887  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
310888  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
310889  that I use the same type everywhere, if any changes are made. THe second one declares the type
310890  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
310891  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
310892  a correspinding one in the AST_FILE_IO class!
310893  */
310894  // DQ (9/2/2015): This typedef is no longer used, we can't define the
310895  // comment here (changed to be a C style comment and not be a doxygen comment).
310896  /* \brief Typedef used for low level memory access.
310897  */
310898  // typedef unsigned char* TestType;
310899 
310900  // DQ (9/2/2015): This typedef is no longer used, we can't define the
310901  // comment here (changed to be a C style comment and not be a doxygen comment).
310902  /* \brief Typedef used to hold memory addresses as values.
310903  */
310904  // typedef unsigned long AddressType;
310905 
310906 
310907 
310908  // necessary, to have direct access to the p_freepointer and the private methods !
310910  friend class AST_FILE_IO;
310911 
310913  friend class SgDictionaryComprehensionStorageClass;
310914 
310916  friend class AstSpecificDataManagingClass;
310917 
310919  friend class AstSpecificDataManagingClassStorageClass;
310920 
310921  public:
310923  SgDictionaryComprehension( const SgDictionaryComprehensionStorageClass& source );
310924 
310925  // private: // JJW hack
310926  /*
310927  name AST Memory Allocation Support Variables
310928  Memory allocations support variables
310929 
310930  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
310931  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
310932  and support the AST File I/O Mechanism.
310933  */
310934  /* */
310935 
310936  public:
310937 
310938  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
310939  // to current node (so that it will work cleanly with build functions to specify patterns).
310940  // virtual SgNode* addRegExpAttribute();
310947 
310948 // *** COMMON CODE SECTION ENDS HERE ***
310949 
310950 
310951 // End of memberFunctionString
310952 // Start of memberFunctionString
310953 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
310954 
310955  // the generated cast function
310956  // friend ROSE_DLL_API SgDictionaryComprehension* isSgDictionaryComprehension ( SgNode* s );
310957 
310958  typedef SgExpression base_node_type;
310959 
310960 
310961 // End of memberFunctionString
310962 // Start of memberFunctionString
310963 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
310964 
310965  SgType* get_type() const override;
310966 
310967 
310968 // End of memberFunctionString
310969 // Start of memberFunctionString
310970 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
310971 
310972  void post_construction_initialization() override;
310973 
310974 
310975 // End of memberFunctionString
310976 
310977  public:
310978  SgKeyDatumPair* get_element() const;
310979  void set_element(SgKeyDatumPair* element);
310980 
310981  public:
310982  SgExprListExp* get_generators() const;
310983  void set_generators(SgExprListExp* generators);
310984 
310985 
310986  public:
310987  virtual ~SgDictionaryComprehension();
310988 
310989 
310990  public:
310991  SgDictionaryComprehension(Sg_File_Info* startOfConstruct , SgKeyDatumPair* element = NULL, SgExprListExp* generators = NULL);
310992  SgDictionaryComprehension(SgKeyDatumPair* element, SgExprListExp* generators);
310993 
310994  protected:
310995 // Start of memberFunctionString
310996 SgKeyDatumPair* p_element;
310997 
310998 // End of memberFunctionString
310999 // Start of memberFunctionString
311000 SgExprListExp* p_generators;
311001 
311002 // End of memberFunctionString
311003 
311004 
311005 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
311006 
311007 
311008  };
311009 #endif
311010 
311011 // postdeclarations for SgDictionaryComprehension
311012 
311013 /* #line 311014 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
311014 
311015 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
311016 
311017 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
311018 
311019 
311020 /* #line 311021 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
311021 
311022 
311023 
311024 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
311025 
311026 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
311027 // This code is automatically generated for each
311028 // terminal and non-terminal within the defined
311029 // grammar. There is a simple way to change the
311030 // code to fix bugs etc. See the ROSE README file
311031 // for directions.
311032 
311033 // tps: (02/22/2010): Adding DLL export requirements
311034 #include "rosedll.h"
311035 
311036 // predeclarations for SgNaryOp
311037 
311038 /* #line 311039 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
311039 
311040 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
311041 
311042 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
311043 
311044 #if 1
311045 // Class Definition for SgNaryOp
311046 class ROSE_DLL_API SgNaryOp : public SgExpression
311047  {
311048  public:
311049 
311050 
311051 /* #line 311052 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
311052 
311053  virtual SgNode* copy ( SgCopyHelp& help) const override;
311054 // Start of memberFunctionString
311055 /* #line 190 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
311056 
311057  int length() const ROSE_DEPRECATED_FUNCTION;
311058  bool empty() const ROSE_DEPRECATED_FUNCTION;
311059  // void operator_unparse( const char *, Unparse_Info &, ostream & );
311060 
311061 
311062 // End of memberFunctionString
311063 // Start of memberFunctionString
311064 /* #line 184 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
311065 
311066  SgExpression *get_next( int& n) const ROSE_DEPRECATED_FUNCTION;
311067  int replace_expression( SgExpression *, SgExpression *) override ROSE_DEPRECATED_FUNCTION;
311068 
311069 
311070 // End of memberFunctionString
311071 // Start of memberFunctionString
311072 /* #line 890 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
311073 
311074 
311075  SgExpressionPtrList& get_operands();
311076  const SgExpressionPtrList& get_operands() const;
311077 
311078  VariantTList& get_operators();
311079  const VariantTList& get_operators() const;
311080 
311081  virtual void append_operation(VariantT sg_operator, SgExpression* operand);
311082 
311083 
311084 
311085 // End of memberFunctionString
311086 // Start of memberFunctionString
311087 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
311088 
311089 // *** COMMON CODE SECTION BEGINS HERE ***
311090 
311091  public:
311092 
311093  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
311094  // and not required which is required to match the other aspects of the copy mechanism code generation.
311095  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
311096  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
311097  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
311098  // virtual SgNode* copy ( const SgCopyHelp & help) const;
311099 
311101  virtual std::string class_name() const override;
311102 
311104  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
311105 
311107  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
311108  // static const VariantT static_variant = V_SgNaryOp;
311109  enum { static_variant = V_SgNaryOp };
311110 
311111  /* the generated cast function */
311113  ROSE_DLL_API friend SgNaryOp* isSgNaryOp( SgNode * s );
311114 
311116  ROSE_DLL_API friend const SgNaryOp* isSgNaryOp( const SgNode * s );
311117 
311118  // ******************************************
311119  // * Memory Pool / New / Delete
311120  // ******************************************
311121 
311122  public:
311124  static const unsigned pool_size; //
311126  static std::vector<unsigned char *> pools; //
311128  static SgNaryOp * next_node; //
311129 
311131  static unsigned long initializeStorageClassArray(SgNaryOpStorageClass *); //
311132 
311134  static void clearMemoryPool(); //
311135  static void deleteMemoryPool(); //
311136 
311138  static void extendMemoryPoolForFileIO(); //
311139 
311141  static SgNaryOp * getPointerFromGlobalIndex(unsigned long); //
311143  static SgNaryOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
311144 
311146  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
311148  static void resetValidFreepointers(); //
311150  static unsigned long getNumberOfLastValidPointer(); //
311151 
311152 
311153 #if defined(INLINE_FUNCTIONS)
311154 
311155  inline void *operator new (size_t size);
311156 #else
311157 
311158  void *operator new (size_t size);
311159 #endif
311160 
311161  void operator delete (void* pointer, size_t size);
311162 
311163  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
311164  void operator delete (void* pointer)
311165  {
311166  // This is the generated delete operator...
311167  SgNaryOp::operator delete (pointer,sizeof(SgNaryOp));
311168  }
311169 
311171  static size_t numberOfNodes();
311172 
311174  static size_t memoryUsage();
311175 
311176  // End of scope which started in IR nodes specific code
311177  /* */
311178 
311179  /* name Internal Functions
311180  \brief Internal functions ... incomplete-documentation
311181 
311182  These functions have been made public as part of the design, but they are suggested for internal use
311183  or by particularly knowledgeable users for specialized tools or applications.
311184 
311185  \internal We could not make these private because they are required by user for special purposes. And
311186  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
311187 
311188  */
311189 
311190  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
311191  // overridden in every class by *generated* implementation
311193  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
311194  // MS: 06/28/02 container of names of variables or container indices
311195  // used used in the traversal to access AST successor nodes
311196  // overridden in every class by *generated* implementation
311199  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
311200 
311201  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
311202  // than all the vector copies. The implementation for these functions is generated for each class.
311204  virtual size_t get_numberOfTraversalSuccessors() override;
311206  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
311208  virtual size_t get_childIndex(SgNode *child) override;
311209 
311210 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
311211  // MS: 08/16/2002 method for generating RTI information
311213  virtual RTIReturnType roseRTI() override;
311214 #endif
311215  /* */
311216 
311217 
311218 
311219  /* name Deprecated Functions
311220  \brief Deprecated functions ... incomplete-documentation
311221 
311222  These functions have been deprecated from use.
311223  */
311224  /* */
311225 
311227  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
311228 
311229  // JJW (10/16/2008): Changed to a single function in Node.code, and put
311230  // getVariant() in #if 0 block to prevent confusing Doxygen
311231 #if 0
311232 
311233  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
311235  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
311236 #endif
311237  /* */
311238 
311239 
311240 
311241 
311242  public:
311243  /* name Traversal Support Functions
311244  \brief Traversal support functions ... incomplete-documentation
311245 
311246  These functions have been made public as part of the design, but they are suggested for internal use
311247  or by particularly knowledgable users for specialized tools or applications.
311248  */
311249  /* */
311250 
311251  // DQ (11/26/2005): Support for visitor pattern mechanims
311252  // (inferior to ROSE traversal mechanism, experimental).
311256 
311257  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
311259  virtual void accept (ROSE_VisitorPattern & visitor) override;
311260 
311261  // DQ (12/26/2005): Support for traversal based on the memory pool
311264  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
311265 
311268  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
311269 
311270  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
311271  // This traversal helps support internal tools that call static member functions.
311272  // note: this function operates on the memory pools.
311275  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
311276  /* */
311277 
311278 
311279  public:
311280  /* name Memory Allocation Functions
311281  \brief Memory allocations functions ... incomplete-documentation
311282 
311283  These functions have been made public as part of the design, but they are suggested for internal use
311284  or by particularly knowledgable users for specialized tools or applications.
311285  */
311286  /* */
311287 
311298  virtual bool isInMemoryPool() override;
311299 
311310  virtual void checkDataMemberPointersIfInMemoryPool() override;
311311 
311312  // DQ (4/30/2006): Modified to be a const function.
311327  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
311328 
311338  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
311339 
311351  virtual long getChildIndex( SgNode* childNode ) const override;
311352 
311353  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
311354  // comment here (changed to be a C style comment and not be a doxygen comment).
311355  /* \brief Constructor for use by AST File I/O Mechanism
311356 
311357  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
311358  which obtained via fast binary file I/O from disk.
311359  */
311360  // SgNaryOp( SgNaryOpStorageClass& source );
311361 
311362 
311363 
311364 
311365 
311366  // JH (10/24/2005): methods added to support the ast file IO
311367  private:
311368 
311369  /* name AST Memory Allocation Support Functions
311370  \brief Memory allocations support....
311371 
311372  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
311373  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
311374  and support the AST File I/O Mechanism.
311375  */
311376  /* */
311377 
311378  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
311379  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
311380  that I use the same type everywhere, if any changes are made. THe second one declares the type
311381  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
311382  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
311383  a correspinding one in the AST_FILE_IO class!
311384  */
311385  // DQ (9/2/2015): This typedef is no longer used, we can't define the
311386  // comment here (changed to be a C style comment and not be a doxygen comment).
311387  /* \brief Typedef used for low level memory access.
311388  */
311389  // typedef unsigned char* TestType;
311390 
311391  // DQ (9/2/2015): This typedef is no longer used, we can't define the
311392  // comment here (changed to be a C style comment and not be a doxygen comment).
311393  /* \brief Typedef used to hold memory addresses as values.
311394  */
311395  // typedef unsigned long AddressType;
311396 
311397 
311398 
311399  // necessary, to have direct access to the p_freepointer and the private methods !
311401  friend class AST_FILE_IO;
311402 
311404  friend class SgNaryOpStorageClass;
311405 
311407  friend class AstSpecificDataManagingClass;
311408 
311410  friend class AstSpecificDataManagingClassStorageClass;
311411 
311412  public:
311414  SgNaryOp( const SgNaryOpStorageClass& source );
311415 
311416  // private: // JJW hack
311417  /*
311418  name AST Memory Allocation Support Variables
311419  Memory allocations support variables
311420 
311421  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
311422  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
311423  and support the AST File I/O Mechanism.
311424  */
311425  /* */
311426 
311427  public:
311428 
311429  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
311430  // to current node (so that it will work cleanly with build functions to specify patterns).
311431  // virtual SgNode* addRegExpAttribute();
311437  SgNaryOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
311438 
311439 // *** COMMON CODE SECTION ENDS HERE ***
311440 
311441 
311442 // End of memberFunctionString
311443 // Start of memberFunctionString
311444 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
311445 
311446  // the generated cast function
311447  // friend ROSE_DLL_API SgNaryOp* isSgNaryOp ( SgNode* s );
311448 
311449  typedef SgExpression base_node_type;
311450 
311451 
311452 // End of memberFunctionString
311453 // Start of memberFunctionString
311454 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
311455 
311456  void post_construction_initialization() override;
311457 
311458 
311459 // End of memberFunctionString
311460 
311461 
311462 
311463 
311464  public:
311465  virtual ~SgNaryOp();
311466 
311467 
311468  public:
311469  SgNaryOp(Sg_File_Info* startOfConstruct );
311470  SgNaryOp();
311471 
311472  protected:
311473 // Start of memberFunctionString
311474 SgExpressionPtrList p_operands;
311475 
311476 // End of memberFunctionString
311477 // Start of memberFunctionString
311478 VariantTList p_operators;
311479 
311480 // End of memberFunctionString
311481 
311482 
311483 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
311484 
311485 
311486  };
311487 #endif
311488 
311489 // postdeclarations for SgNaryOp
311490 
311491 /* #line 311492 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
311492 
311493 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
311494 
311495 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
311496 
311497 
311498 /* #line 311499 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
311499 
311500 
311501 
311502 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
311503 
311504 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
311505 // This code is automatically generated for each
311506 // terminal and non-terminal within the defined
311507 // grammar. There is a simple way to change the
311508 // code to fix bugs etc. See the ROSE README file
311509 // for directions.
311510 
311511 // tps: (02/22/2010): Adding DLL export requirements
311512 #include "rosedll.h"
311513 
311514 // predeclarations for SgNaryBooleanOp
311515 
311516 /* #line 311517 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
311517 
311518 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
311519 
311520 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
311521 
311522 #if 1
311523 // Class Definition for SgNaryBooleanOp
311524 class ROSE_DLL_API SgNaryBooleanOp : public SgNaryOp
311525  {
311526  public:
311527 
311528 
311529 /* #line 311530 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
311530 
311531  virtual SgNode* copy ( SgCopyHelp& help) const override;
311532 // Start of memberFunctionString
311533 /* #line 906 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
311534 
311535  virtual SgType* get_type() const override;
311536 
311537 
311538 // End of memberFunctionString
311539 // Start of memberFunctionString
311540 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
311541 
311542 // *** COMMON CODE SECTION BEGINS HERE ***
311543 
311544  public:
311545 
311546  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
311547  // and not required which is required to match the other aspects of the copy mechanism code generation.
311548  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
311549  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
311550  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
311551  // virtual SgNode* copy ( const SgCopyHelp & help) const;
311552 
311554  virtual std::string class_name() const override;
311555 
311557  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
311558 
311560  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
311561  // static const VariantT static_variant = V_SgNaryBooleanOp;
311562  enum { static_variant = V_SgNaryBooleanOp };
311563 
311564  /* the generated cast function */
311566  ROSE_DLL_API friend SgNaryBooleanOp* isSgNaryBooleanOp( SgNode * s );
311567 
311569  ROSE_DLL_API friend const SgNaryBooleanOp* isSgNaryBooleanOp( const SgNode * s );
311570 
311571  // ******************************************
311572  // * Memory Pool / New / Delete
311573  // ******************************************
311574 
311575  public:
311577  static const unsigned pool_size; //
311579  static std::vector<unsigned char *> pools; //
311581  static SgNaryBooleanOp * next_node; //
311582 
311584  static unsigned long initializeStorageClassArray(SgNaryBooleanOpStorageClass *); //
311585 
311587  static void clearMemoryPool(); //
311588  static void deleteMemoryPool(); //
311589 
311591  static void extendMemoryPoolForFileIO(); //
311592 
311594  static SgNaryBooleanOp * getPointerFromGlobalIndex(unsigned long); //
311596  static SgNaryBooleanOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
311597 
311599  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
311601  static void resetValidFreepointers(); //
311603  static unsigned long getNumberOfLastValidPointer(); //
311604 
311605 
311606 #if defined(INLINE_FUNCTIONS)
311607 
311608  inline void *operator new (size_t size);
311609 #else
311610 
311611  void *operator new (size_t size);
311612 #endif
311613 
311614  void operator delete (void* pointer, size_t size);
311615 
311616  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
311617  void operator delete (void* pointer)
311618  {
311619  // This is the generated delete operator...
311620  SgNaryBooleanOp::operator delete (pointer,sizeof(SgNaryBooleanOp));
311621  }
311622 
311624  static size_t numberOfNodes();
311625 
311627  static size_t memoryUsage();
311628 
311629  // End of scope which started in IR nodes specific code
311630  /* */
311631 
311632  /* name Internal Functions
311633  \brief Internal functions ... incomplete-documentation
311634 
311635  These functions have been made public as part of the design, but they are suggested for internal use
311636  or by particularly knowledgeable users for specialized tools or applications.
311637 
311638  \internal We could not make these private because they are required by user for special purposes. And
311639  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
311640 
311641  */
311642 
311643  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
311644  // overridden in every class by *generated* implementation
311646  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
311647  // MS: 06/28/02 container of names of variables or container indices
311648  // used used in the traversal to access AST successor nodes
311649  // overridden in every class by *generated* implementation
311652  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
311653 
311654  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
311655  // than all the vector copies. The implementation for these functions is generated for each class.
311657  virtual size_t get_numberOfTraversalSuccessors() override;
311659  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
311661  virtual size_t get_childIndex(SgNode *child) override;
311662 
311663 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
311664  // MS: 08/16/2002 method for generating RTI information
311666  virtual RTIReturnType roseRTI() override;
311667 #endif
311668  /* */
311669 
311670 
311671 
311672  /* name Deprecated Functions
311673  \brief Deprecated functions ... incomplete-documentation
311674 
311675  These functions have been deprecated from use.
311676  */
311677  /* */
311678 
311680  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
311681 
311682  // JJW (10/16/2008): Changed to a single function in Node.code, and put
311683  // getVariant() in #if 0 block to prevent confusing Doxygen
311684 #if 0
311685 
311686  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
311688  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
311689 #endif
311690  /* */
311691 
311692 
311693 
311694 
311695  public:
311696  /* name Traversal Support Functions
311697  \brief Traversal support functions ... incomplete-documentation
311698 
311699  These functions have been made public as part of the design, but they are suggested for internal use
311700  or by particularly knowledgable users for specialized tools or applications.
311701  */
311702  /* */
311703 
311704  // DQ (11/26/2005): Support for visitor pattern mechanims
311705  // (inferior to ROSE traversal mechanism, experimental).
311709 
311710  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
311712  virtual void accept (ROSE_VisitorPattern & visitor) override;
311713 
311714  // DQ (12/26/2005): Support for traversal based on the memory pool
311717  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
311718 
311721  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
311722 
311723  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
311724  // This traversal helps support internal tools that call static member functions.
311725  // note: this function operates on the memory pools.
311728  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
311729  /* */
311730 
311731 
311732  public:
311733  /* name Memory Allocation Functions
311734  \brief Memory allocations functions ... incomplete-documentation
311735 
311736  These functions have been made public as part of the design, but they are suggested for internal use
311737  or by particularly knowledgable users for specialized tools or applications.
311738  */
311739  /* */
311740 
311751  virtual bool isInMemoryPool() override;
311752 
311763  virtual void checkDataMemberPointersIfInMemoryPool() override;
311764 
311765  // DQ (4/30/2006): Modified to be a const function.
311780  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
311781 
311791  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
311792 
311804  virtual long getChildIndex( SgNode* childNode ) const override;
311805 
311806  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
311807  // comment here (changed to be a C style comment and not be a doxygen comment).
311808  /* \brief Constructor for use by AST File I/O Mechanism
311809 
311810  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
311811  which obtained via fast binary file I/O from disk.
311812  */
311813  // SgNaryBooleanOp( SgNaryBooleanOpStorageClass& source );
311814 
311815 
311816 
311817 
311818 
311819  // JH (10/24/2005): methods added to support the ast file IO
311820  private:
311821 
311822  /* name AST Memory Allocation Support Functions
311823  \brief Memory allocations support....
311824 
311825  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
311826  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
311827  and support the AST File I/O Mechanism.
311828  */
311829  /* */
311830 
311831  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
311832  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
311833  that I use the same type everywhere, if any changes are made. THe second one declares the type
311834  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
311835  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
311836  a correspinding one in the AST_FILE_IO class!
311837  */
311838  // DQ (9/2/2015): This typedef is no longer used, we can't define the
311839  // comment here (changed to be a C style comment and not be a doxygen comment).
311840  /* \brief Typedef used for low level memory access.
311841  */
311842  // typedef unsigned char* TestType;
311843 
311844  // DQ (9/2/2015): This typedef is no longer used, we can't define the
311845  // comment here (changed to be a C style comment and not be a doxygen comment).
311846  /* \brief Typedef used to hold memory addresses as values.
311847  */
311848  // typedef unsigned long AddressType;
311849 
311850 
311851 
311852  // necessary, to have direct access to the p_freepointer and the private methods !
311854  friend class AST_FILE_IO;
311855 
311857  friend class SgNaryBooleanOpStorageClass;
311858 
311860  friend class AstSpecificDataManagingClass;
311861 
311863  friend class AstSpecificDataManagingClassStorageClass;
311864 
311865  public:
311867  SgNaryBooleanOp( const SgNaryBooleanOpStorageClass& source );
311868 
311869  // private: // JJW hack
311870  /*
311871  name AST Memory Allocation Support Variables
311872  Memory allocations support variables
311873 
311874  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
311875  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
311876  and support the AST File I/O Mechanism.
311877  */
311878  /* */
311879 
311880  public:
311881 
311882  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
311883  // to current node (so that it will work cleanly with build functions to specify patterns).
311884  // virtual SgNode* addRegExpAttribute();
311891 
311892 // *** COMMON CODE SECTION ENDS HERE ***
311893 
311894 
311895 // End of memberFunctionString
311896 // Start of memberFunctionString
311897 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
311898 
311899  // the generated cast function
311900  // friend ROSE_DLL_API SgNaryBooleanOp* isSgNaryBooleanOp ( SgNode* s );
311901 
311902  typedef SgNaryOp base_node_type;
311903 
311904 
311905 // End of memberFunctionString
311906 // Start of memberFunctionString
311907 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
311908 
311909  void post_construction_initialization() override;
311910 
311911 
311912 // End of memberFunctionString
311913 // Start of memberFunctionString
311914 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
311915 
311916  int precedence() const override { return 13; }
311917 
311918 
311919 // End of memberFunctionString
311920 
311921 
311922  public:
311923  virtual ~SgNaryBooleanOp();
311924 
311925 
311926  public:
311927  SgNaryBooleanOp(Sg_File_Info* startOfConstruct );
311928  SgNaryBooleanOp();
311929 
311930  protected:
311931 
311932 
311933 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
311934 
311935 
311936  };
311937 #endif
311938 
311939 // postdeclarations for SgNaryBooleanOp
311940 
311941 /* #line 311942 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
311942 
311943 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
311944 
311945 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
311946 
311947 
311948 /* #line 311949 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
311949 
311950 
311951 
311952 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
311953 
311954 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
311955 // This code is automatically generated for each
311956 // terminal and non-terminal within the defined
311957 // grammar. There is a simple way to change the
311958 // code to fix bugs etc. See the ROSE README file
311959 // for directions.
311960 
311961 // tps: (02/22/2010): Adding DLL export requirements
311962 #include "rosedll.h"
311963 
311964 // predeclarations for SgNaryComparisonOp
311965 
311966 /* #line 311967 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
311967 
311968 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
311969 
311970 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
311971 
311972 #if 1
311973 // Class Definition for SgNaryComparisonOp
311974 class ROSE_DLL_API SgNaryComparisonOp : public SgNaryOp
311975  {
311976  public:
311977 
311978 
311979 /* #line 311980 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
311980 
311981  virtual SgNode* copy ( SgCopyHelp& help) const override;
311982 // Start of memberFunctionString
311983 /* #line 902 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
311984 
311985  virtual SgType* get_type() const override;
311986 
311987 
311988 // End of memberFunctionString
311989 // Start of memberFunctionString
311990 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
311991 
311992 // *** COMMON CODE SECTION BEGINS HERE ***
311993 
311994  public:
311995 
311996  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
311997  // and not required which is required to match the other aspects of the copy mechanism code generation.
311998  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
311999  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
312000  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
312001  // virtual SgNode* copy ( const SgCopyHelp & help) const;
312002 
312004  virtual std::string class_name() const override;
312005 
312007  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
312008 
312010  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
312011  // static const VariantT static_variant = V_SgNaryComparisonOp;
312012  enum { static_variant = V_SgNaryComparisonOp };
312013 
312014  /* the generated cast function */
312016  ROSE_DLL_API friend SgNaryComparisonOp* isSgNaryComparisonOp( SgNode * s );
312017 
312019  ROSE_DLL_API friend const SgNaryComparisonOp* isSgNaryComparisonOp( const SgNode * s );
312020 
312021  // ******************************************
312022  // * Memory Pool / New / Delete
312023  // ******************************************
312024 
312025  public:
312027  static const unsigned pool_size; //
312029  static std::vector<unsigned char *> pools; //
312031  static SgNaryComparisonOp * next_node; //
312032 
312034  static unsigned long initializeStorageClassArray(SgNaryComparisonOpStorageClass *); //
312035 
312037  static void clearMemoryPool(); //
312038  static void deleteMemoryPool(); //
312039 
312041  static void extendMemoryPoolForFileIO(); //
312042 
312044  static SgNaryComparisonOp * getPointerFromGlobalIndex(unsigned long); //
312046  static SgNaryComparisonOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
312047 
312049  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
312051  static void resetValidFreepointers(); //
312053  static unsigned long getNumberOfLastValidPointer(); //
312054 
312055 
312056 #if defined(INLINE_FUNCTIONS)
312057 
312058  inline void *operator new (size_t size);
312059 #else
312060 
312061  void *operator new (size_t size);
312062 #endif
312063 
312064  void operator delete (void* pointer, size_t size);
312065 
312066  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
312067  void operator delete (void* pointer)
312068  {
312069  // This is the generated delete operator...
312070  SgNaryComparisonOp::operator delete (pointer,sizeof(SgNaryComparisonOp));
312071  }
312072 
312074  static size_t numberOfNodes();
312075 
312077  static size_t memoryUsage();
312078 
312079  // End of scope which started in IR nodes specific code
312080  /* */
312081 
312082  /* name Internal Functions
312083  \brief Internal functions ... incomplete-documentation
312084 
312085  These functions have been made public as part of the design, but they are suggested for internal use
312086  or by particularly knowledgeable users for specialized tools or applications.
312087 
312088  \internal We could not make these private because they are required by user for special purposes. And
312089  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
312090 
312091  */
312092 
312093  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
312094  // overridden in every class by *generated* implementation
312096  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
312097  // MS: 06/28/02 container of names of variables or container indices
312098  // used used in the traversal to access AST successor nodes
312099  // overridden in every class by *generated* implementation
312102  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
312103 
312104  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
312105  // than all the vector copies. The implementation for these functions is generated for each class.
312107  virtual size_t get_numberOfTraversalSuccessors() override;
312109  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
312111  virtual size_t get_childIndex(SgNode *child) override;
312112 
312113 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
312114  // MS: 08/16/2002 method for generating RTI information
312116  virtual RTIReturnType roseRTI() override;
312117 #endif
312118  /* */
312119 
312120 
312121 
312122  /* name Deprecated Functions
312123  \brief Deprecated functions ... incomplete-documentation
312124 
312125  These functions have been deprecated from use.
312126  */
312127  /* */
312128 
312130  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
312131 
312132  // JJW (10/16/2008): Changed to a single function in Node.code, and put
312133  // getVariant() in #if 0 block to prevent confusing Doxygen
312134 #if 0
312135 
312136  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
312138  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
312139 #endif
312140  /* */
312141 
312142 
312143 
312144 
312145  public:
312146  /* name Traversal Support Functions
312147  \brief Traversal support functions ... incomplete-documentation
312148 
312149  These functions have been made public as part of the design, but they are suggested for internal use
312150  or by particularly knowledgable users for specialized tools or applications.
312151  */
312152  /* */
312153 
312154  // DQ (11/26/2005): Support for visitor pattern mechanims
312155  // (inferior to ROSE traversal mechanism, experimental).
312159 
312160  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
312162  virtual void accept (ROSE_VisitorPattern & visitor) override;
312163 
312164  // DQ (12/26/2005): Support for traversal based on the memory pool
312167  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
312168 
312171  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
312172 
312173  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
312174  // This traversal helps support internal tools that call static member functions.
312175  // note: this function operates on the memory pools.
312178  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
312179  /* */
312180 
312181 
312182  public:
312183  /* name Memory Allocation Functions
312184  \brief Memory allocations functions ... incomplete-documentation
312185 
312186  These functions have been made public as part of the design, but they are suggested for internal use
312187  or by particularly knowledgable users for specialized tools or applications.
312188  */
312189  /* */
312190 
312201  virtual bool isInMemoryPool() override;
312202 
312213  virtual void checkDataMemberPointersIfInMemoryPool() override;
312214 
312215  // DQ (4/30/2006): Modified to be a const function.
312230  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
312231 
312241  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
312242 
312254  virtual long getChildIndex( SgNode* childNode ) const override;
312255 
312256  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
312257  // comment here (changed to be a C style comment and not be a doxygen comment).
312258  /* \brief Constructor for use by AST File I/O Mechanism
312259 
312260  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
312261  which obtained via fast binary file I/O from disk.
312262  */
312263  // SgNaryComparisonOp( SgNaryComparisonOpStorageClass& source );
312264 
312265 
312266 
312267 
312268 
312269  // JH (10/24/2005): methods added to support the ast file IO
312270  private:
312271 
312272  /* name AST Memory Allocation Support Functions
312273  \brief Memory allocations support....
312274 
312275  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
312276  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
312277  and support the AST File I/O Mechanism.
312278  */
312279  /* */
312280 
312281  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
312282  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
312283  that I use the same type everywhere, if any changes are made. THe second one declares the type
312284  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
312285  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
312286  a correspinding one in the AST_FILE_IO class!
312287  */
312288  // DQ (9/2/2015): This typedef is no longer used, we can't define the
312289  // comment here (changed to be a C style comment and not be a doxygen comment).
312290  /* \brief Typedef used for low level memory access.
312291  */
312292  // typedef unsigned char* TestType;
312293 
312294  // DQ (9/2/2015): This typedef is no longer used, we can't define the
312295  // comment here (changed to be a C style comment and not be a doxygen comment).
312296  /* \brief Typedef used to hold memory addresses as values.
312297  */
312298  // typedef unsigned long AddressType;
312299 
312300 
312301 
312302  // necessary, to have direct access to the p_freepointer and the private methods !
312304  friend class AST_FILE_IO;
312305 
312307  friend class SgNaryComparisonOpStorageClass;
312308 
312310  friend class AstSpecificDataManagingClass;
312311 
312313  friend class AstSpecificDataManagingClassStorageClass;
312314 
312315  public:
312317  SgNaryComparisonOp( const SgNaryComparisonOpStorageClass& source );
312318 
312319  // private: // JJW hack
312320  /*
312321  name AST Memory Allocation Support Variables
312322  Memory allocations support variables
312323 
312324  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
312325  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
312326  and support the AST File I/O Mechanism.
312327  */
312328  /* */
312329 
312330  public:
312331 
312332  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
312333  // to current node (so that it will work cleanly with build functions to specify patterns).
312334  // virtual SgNode* addRegExpAttribute();
312341 
312342 // *** COMMON CODE SECTION ENDS HERE ***
312343 
312344 
312345 // End of memberFunctionString
312346 // Start of memberFunctionString
312347 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
312348 
312349  // the generated cast function
312350  // friend ROSE_DLL_API SgNaryComparisonOp* isSgNaryComparisonOp ( SgNode* s );
312351 
312352  typedef SgNaryOp base_node_type;
312353 
312354 
312355 // End of memberFunctionString
312356 // Start of memberFunctionString
312357 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
312358 
312359  void post_construction_initialization() override;
312360 
312361 
312362 // End of memberFunctionString
312363 // Start of memberFunctionString
312364 /* #line 179 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
312365 
312366  int precedence() const override { return 13; }
312367 
312368 
312369 // End of memberFunctionString
312370 
312371 
312372  public:
312373  virtual ~SgNaryComparisonOp();
312374 
312375 
312376  public:
312377  SgNaryComparisonOp(Sg_File_Info* startOfConstruct );
312378  SgNaryComparisonOp();
312379 
312380  protected:
312381 
312382 
312383 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
312384 
312385 
312386  };
312387 #endif
312388 
312389 // postdeclarations for SgNaryComparisonOp
312390 
312391 /* #line 312392 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
312392 
312393 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
312394 
312395 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
312396 
312397 
312398 /* #line 312399 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
312399 
312400 
312401 
312402 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
312403 
312404 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
312405 // This code is automatically generated for each
312406 // terminal and non-terminal within the defined
312407 // grammar. There is a simple way to change the
312408 // code to fix bugs etc. See the ROSE README file
312409 // for directions.
312410 
312411 // tps: (02/22/2010): Adding DLL export requirements
312412 #include "rosedll.h"
312413 
312414 // predeclarations for SgStringConversion
312415 
312416 /* #line 312417 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
312417 
312418 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
312419 
312420 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
312421 
312422 #if 1
312423 // Class Definition for SgStringConversion
312424 class ROSE_DLL_API SgStringConversion : public SgExpression
312425  {
312426  public:
312427 
312428 
312429 /* #line 312430 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
312430 
312431  virtual SgNode* copy ( SgCopyHelp& help) const override;
312432 // Start of memberFunctionString
312433 /* #line 1397 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
312434 
312435 
312436 
312437 // End of memberFunctionString
312438 // Start of memberFunctionString
312439 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
312440 
312441 // *** COMMON CODE SECTION BEGINS HERE ***
312442 
312443  public:
312444 
312445  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
312446  // and not required which is required to match the other aspects of the copy mechanism code generation.
312447  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
312448  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
312449  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
312450  // virtual SgNode* copy ( const SgCopyHelp & help) const;
312451 
312453  virtual std::string class_name() const override;
312454 
312456  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
312457 
312459  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
312460  // static const VariantT static_variant = V_SgStringConversion;
312461  enum { static_variant = V_SgStringConversion };
312462 
312463  /* the generated cast function */
312465  ROSE_DLL_API friend SgStringConversion* isSgStringConversion( SgNode * s );
312466 
312468  ROSE_DLL_API friend const SgStringConversion* isSgStringConversion( const SgNode * s );
312469 
312470  // ******************************************
312471  // * Memory Pool / New / Delete
312472  // ******************************************
312473 
312474  public:
312476  static const unsigned pool_size; //
312478  static std::vector<unsigned char *> pools; //
312480  static SgStringConversion * next_node; //
312481 
312483  static unsigned long initializeStorageClassArray(SgStringConversionStorageClass *); //
312484 
312486  static void clearMemoryPool(); //
312487  static void deleteMemoryPool(); //
312488 
312490  static void extendMemoryPoolForFileIO(); //
312491 
312493  static SgStringConversion * getPointerFromGlobalIndex(unsigned long); //
312495  static SgStringConversion * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
312496 
312498  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
312500  static void resetValidFreepointers(); //
312502  static unsigned long getNumberOfLastValidPointer(); //
312503 
312504 
312505 #if defined(INLINE_FUNCTIONS)
312506 
312507  inline void *operator new (size_t size);
312508 #else
312509 
312510  void *operator new (size_t size);
312511 #endif
312512 
312513  void operator delete (void* pointer, size_t size);
312514 
312515  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
312516  void operator delete (void* pointer)
312517  {
312518  // This is the generated delete operator...
312519  SgStringConversion::operator delete (pointer,sizeof(SgStringConversion));
312520  }
312521 
312523  static size_t numberOfNodes();
312524 
312526  static size_t memoryUsage();
312527 
312528  // End of scope which started in IR nodes specific code
312529  /* */
312530 
312531  /* name Internal Functions
312532  \brief Internal functions ... incomplete-documentation
312533 
312534  These functions have been made public as part of the design, but they are suggested for internal use
312535  or by particularly knowledgeable users for specialized tools or applications.
312536 
312537  \internal We could not make these private because they are required by user for special purposes. And
312538  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
312539 
312540  */
312541 
312542  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
312543  // overridden in every class by *generated* implementation
312545  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
312546  // MS: 06/28/02 container of names of variables or container indices
312547  // used used in the traversal to access AST successor nodes
312548  // overridden in every class by *generated* implementation
312551  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
312552 
312553  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
312554  // than all the vector copies. The implementation for these functions is generated for each class.
312556  virtual size_t get_numberOfTraversalSuccessors() override;
312558  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
312560  virtual size_t get_childIndex(SgNode *child) override;
312561 
312562 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
312563  // MS: 08/16/2002 method for generating RTI information
312565  virtual RTIReturnType roseRTI() override;
312566 #endif
312567  /* */
312568 
312569 
312570 
312571  /* name Deprecated Functions
312572  \brief Deprecated functions ... incomplete-documentation
312573 
312574  These functions have been deprecated from use.
312575  */
312576  /* */
312577 
312579  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
312580 
312581  // JJW (10/16/2008): Changed to a single function in Node.code, and put
312582  // getVariant() in #if 0 block to prevent confusing Doxygen
312583 #if 0
312584 
312585  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
312587  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
312588 #endif
312589  /* */
312590 
312591 
312592 
312593 
312594  public:
312595  /* name Traversal Support Functions
312596  \brief Traversal support functions ... incomplete-documentation
312597 
312598  These functions have been made public as part of the design, but they are suggested for internal use
312599  or by particularly knowledgable users for specialized tools or applications.
312600  */
312601  /* */
312602 
312603  // DQ (11/26/2005): Support for visitor pattern mechanims
312604  // (inferior to ROSE traversal mechanism, experimental).
312608 
312609  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
312611  virtual void accept (ROSE_VisitorPattern & visitor) override;
312612 
312613  // DQ (12/26/2005): Support for traversal based on the memory pool
312616  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
312617 
312620  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
312621 
312622  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
312623  // This traversal helps support internal tools that call static member functions.
312624  // note: this function operates on the memory pools.
312627  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
312628  /* */
312629 
312630 
312631  public:
312632  /* name Memory Allocation Functions
312633  \brief Memory allocations functions ... incomplete-documentation
312634 
312635  These functions have been made public as part of the design, but they are suggested for internal use
312636  or by particularly knowledgable users for specialized tools or applications.
312637  */
312638  /* */
312639 
312650  virtual bool isInMemoryPool() override;
312651 
312662  virtual void checkDataMemberPointersIfInMemoryPool() override;
312663 
312664  // DQ (4/30/2006): Modified to be a const function.
312679  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
312680 
312690  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
312691 
312703  virtual long getChildIndex( SgNode* childNode ) const override;
312704 
312705  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
312706  // comment here (changed to be a C style comment and not be a doxygen comment).
312707  /* \brief Constructor for use by AST File I/O Mechanism
312708 
312709  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
312710  which obtained via fast binary file I/O from disk.
312711  */
312712  // SgStringConversion( SgStringConversionStorageClass& source );
312713 
312714 
312715 
312716 
312717 
312718  // JH (10/24/2005): methods added to support the ast file IO
312719  private:
312720 
312721  /* name AST Memory Allocation Support Functions
312722  \brief Memory allocations support....
312723 
312724  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
312725  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
312726  and support the AST File I/O Mechanism.
312727  */
312728  /* */
312729 
312730  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
312731  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
312732  that I use the same type everywhere, if any changes are made. THe second one declares the type
312733  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
312734  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
312735  a correspinding one in the AST_FILE_IO class!
312736  */
312737  // DQ (9/2/2015): This typedef is no longer used, we can't define the
312738  // comment here (changed to be a C style comment and not be a doxygen comment).
312739  /* \brief Typedef used for low level memory access.
312740  */
312741  // typedef unsigned char* TestType;
312742 
312743  // DQ (9/2/2015): This typedef is no longer used, we can't define the
312744  // comment here (changed to be a C style comment and not be a doxygen comment).
312745  /* \brief Typedef used to hold memory addresses as values.
312746  */
312747  // typedef unsigned long AddressType;
312748 
312749 
312750 
312751  // necessary, to have direct access to the p_freepointer and the private methods !
312753  friend class AST_FILE_IO;
312754 
312756  friend class SgStringConversionStorageClass;
312757 
312759  friend class AstSpecificDataManagingClass;
312760 
312762  friend class AstSpecificDataManagingClassStorageClass;
312763 
312764  public:
312766  SgStringConversion( const SgStringConversionStorageClass& source );
312767 
312768  // private: // JJW hack
312769  /*
312770  name AST Memory Allocation Support Variables
312771  Memory allocations support variables
312772 
312773  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
312774  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
312775  and support the AST File I/O Mechanism.
312776  */
312777  /* */
312778 
312779  public:
312780 
312781  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
312782  // to current node (so that it will work cleanly with build functions to specify patterns).
312783  // virtual SgNode* addRegExpAttribute();
312790 
312791 // *** COMMON CODE SECTION ENDS HERE ***
312792 
312793 
312794 // End of memberFunctionString
312795 // Start of memberFunctionString
312796 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
312797 
312798  // the generated cast function
312799  // friend ROSE_DLL_API SgStringConversion* isSgStringConversion ( SgNode* s );
312800 
312801  typedef SgExpression base_node_type;
312802 
312803 
312804 // End of memberFunctionString
312805 // Start of memberFunctionString
312806 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
312807 
312808  SgType* get_type() const override;
312809 
312810 
312811 // End of memberFunctionString
312812 // Start of memberFunctionString
312813 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
312814 
312815  void post_construction_initialization() override;
312816 
312817 
312818 // End of memberFunctionString
312819 
312820  public:
312821  SgExpression* get_expression() const;
312822  void set_expression(SgExpression* expression);
312823 
312824 
312825  public:
312826  virtual ~SgStringConversion();
312827 
312828 
312829  public:
312830  SgStringConversion(Sg_File_Info* startOfConstruct , SgExpression* expression = NULL);
312831  SgStringConversion(SgExpression* expression);
312832 
312833  protected:
312834 // Start of memberFunctionString
312836 
312837 // End of memberFunctionString
312838 
312839 
312840 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
312841 
312842 
312843  };
312844 #endif
312845 
312846 // postdeclarations for SgStringConversion
312847 
312848 /* #line 312849 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
312849 
312850 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
312851 
312852 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
312853 
312854 
312855 /* #line 312856 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
312856 
312857 
312858 
312859 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
312860 
312861 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
312862 // This code is automatically generated for each
312863 // terminal and non-terminal within the defined
312864 // grammar. There is a simple way to change the
312865 // code to fix bugs etc. See the ROSE README file
312866 // for directions.
312867 
312868 // tps: (02/22/2010): Adding DLL export requirements
312869 #include "rosedll.h"
312870 
312871 // predeclarations for SgYieldExpression
312872 
312873 /* #line 312874 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
312874 
312875 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
312876 
312877 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
312878 
312879 #if 1
312880 // Class Definition for SgYieldExpression
312881 class ROSE_DLL_API SgYieldExpression : public SgExpression
312882  {
312883  public:
312884 
312885 
312886 /* #line 312887 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
312887 
312888  virtual SgNode* copy ( SgCopyHelp& help) const override;
312889 // Start of memberFunctionString
312890 /* #line 711 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
312891 
312892 
312893 
312894 // End of memberFunctionString
312895 // Start of memberFunctionString
312896 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
312897 
312898 // *** COMMON CODE SECTION BEGINS HERE ***
312899 
312900  public:
312901 
312902  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
312903  // and not required which is required to match the other aspects of the copy mechanism code generation.
312904  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
312905  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
312906  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
312907  // virtual SgNode* copy ( const SgCopyHelp & help) const;
312908 
312910  virtual std::string class_name() const override;
312911 
312913  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
312914 
312916  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
312917  // static const VariantT static_variant = V_SgYieldExpression;
312918  enum { static_variant = V_SgYieldExpression };
312919 
312920  /* the generated cast function */
312922  ROSE_DLL_API friend SgYieldExpression* isSgYieldExpression( SgNode * s );
312923 
312925  ROSE_DLL_API friend const SgYieldExpression* isSgYieldExpression( const SgNode * s );
312926 
312927  // ******************************************
312928  // * Memory Pool / New / Delete
312929  // ******************************************
312930 
312931  public:
312933  static const unsigned pool_size; //
312935  static std::vector<unsigned char *> pools; //
312937  static SgYieldExpression * next_node; //
312938 
312940  static unsigned long initializeStorageClassArray(SgYieldExpressionStorageClass *); //
312941 
312943  static void clearMemoryPool(); //
312944  static void deleteMemoryPool(); //
312945 
312947  static void extendMemoryPoolForFileIO(); //
312948 
312950  static SgYieldExpression * getPointerFromGlobalIndex(unsigned long); //
312952  static SgYieldExpression * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
312953 
312955  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
312957  static void resetValidFreepointers(); //
312959  static unsigned long getNumberOfLastValidPointer(); //
312960 
312961 
312962 #if defined(INLINE_FUNCTIONS)
312963 
312964  inline void *operator new (size_t size);
312965 #else
312966 
312967  void *operator new (size_t size);
312968 #endif
312969 
312970  void operator delete (void* pointer, size_t size);
312971 
312972  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
312973  void operator delete (void* pointer)
312974  {
312975  // This is the generated delete operator...
312976  SgYieldExpression::operator delete (pointer,sizeof(SgYieldExpression));
312977  }
312978 
312980  static size_t numberOfNodes();
312981 
312983  static size_t memoryUsage();
312984 
312985  // End of scope which started in IR nodes specific code
312986  /* */
312987 
312988  /* name Internal Functions
312989  \brief Internal functions ... incomplete-documentation
312990 
312991  These functions have been made public as part of the design, but they are suggested for internal use
312992  or by particularly knowledgeable users for specialized tools or applications.
312993 
312994  \internal We could not make these private because they are required by user for special purposes. And
312995  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
312996 
312997  */
312998 
312999  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
313000  // overridden in every class by *generated* implementation
313002  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
313003  // MS: 06/28/02 container of names of variables or container indices
313004  // used used in the traversal to access AST successor nodes
313005  // overridden in every class by *generated* implementation
313008  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
313009 
313010  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
313011  // than all the vector copies. The implementation for these functions is generated for each class.
313013  virtual size_t get_numberOfTraversalSuccessors() override;
313015  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
313017  virtual size_t get_childIndex(SgNode *child) override;
313018 
313019 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
313020  // MS: 08/16/2002 method for generating RTI information
313022  virtual RTIReturnType roseRTI() override;
313023 #endif
313024  /* */
313025 
313026 
313027 
313028  /* name Deprecated Functions
313029  \brief Deprecated functions ... incomplete-documentation
313030 
313031  These functions have been deprecated from use.
313032  */
313033  /* */
313034 
313036  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
313037 
313038  // JJW (10/16/2008): Changed to a single function in Node.code, and put
313039  // getVariant() in #if 0 block to prevent confusing Doxygen
313040 #if 0
313041 
313042  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
313044  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
313045 #endif
313046  /* */
313047 
313048 
313049 
313050 
313051  public:
313052  /* name Traversal Support Functions
313053  \brief Traversal support functions ... incomplete-documentation
313054 
313055  These functions have been made public as part of the design, but they are suggested for internal use
313056  or by particularly knowledgable users for specialized tools or applications.
313057  */
313058  /* */
313059 
313060  // DQ (11/26/2005): Support for visitor pattern mechanims
313061  // (inferior to ROSE traversal mechanism, experimental).
313065 
313066  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
313068  virtual void accept (ROSE_VisitorPattern & visitor) override;
313069 
313070  // DQ (12/26/2005): Support for traversal based on the memory pool
313073  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
313074 
313077  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
313078 
313079  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
313080  // This traversal helps support internal tools that call static member functions.
313081  // note: this function operates on the memory pools.
313084  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
313085  /* */
313086 
313087 
313088  public:
313089  /* name Memory Allocation Functions
313090  \brief Memory allocations functions ... incomplete-documentation
313091 
313092  These functions have been made public as part of the design, but they are suggested for internal use
313093  or by particularly knowledgable users for specialized tools or applications.
313094  */
313095  /* */
313096 
313107  virtual bool isInMemoryPool() override;
313108 
313119  virtual void checkDataMemberPointersIfInMemoryPool() override;
313120 
313121  // DQ (4/30/2006): Modified to be a const function.
313136  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
313137 
313147  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
313148 
313160  virtual long getChildIndex( SgNode* childNode ) const override;
313161 
313162  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
313163  // comment here (changed to be a C style comment and not be a doxygen comment).
313164  /* \brief Constructor for use by AST File I/O Mechanism
313165 
313166  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
313167  which obtained via fast binary file I/O from disk.
313168  */
313169  // SgYieldExpression( SgYieldExpressionStorageClass& source );
313170 
313171 
313172 
313173 
313174 
313175  // JH (10/24/2005): methods added to support the ast file IO
313176  private:
313177 
313178  /* name AST Memory Allocation Support Functions
313179  \brief Memory allocations support....
313180 
313181  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
313182  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
313183  and support the AST File I/O Mechanism.
313184  */
313185  /* */
313186 
313187  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
313188  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
313189  that I use the same type everywhere, if any changes are made. THe second one declares the type
313190  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
313191  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
313192  a correspinding one in the AST_FILE_IO class!
313193  */
313194  // DQ (9/2/2015): This typedef is no longer used, we can't define the
313195  // comment here (changed to be a C style comment and not be a doxygen comment).
313196  /* \brief Typedef used for low level memory access.
313197  */
313198  // typedef unsigned char* TestType;
313199 
313200  // DQ (9/2/2015): This typedef is no longer used, we can't define the
313201  // comment here (changed to be a C style comment and not be a doxygen comment).
313202  /* \brief Typedef used to hold memory addresses as values.
313203  */
313204  // typedef unsigned long AddressType;
313205 
313206 
313207 
313208  // necessary, to have direct access to the p_freepointer and the private methods !
313210  friend class AST_FILE_IO;
313211 
313213  friend class SgYieldExpressionStorageClass;
313214 
313216  friend class AstSpecificDataManagingClass;
313217 
313219  friend class AstSpecificDataManagingClassStorageClass;
313220 
313221  public:
313223  SgYieldExpression( const SgYieldExpressionStorageClass& source );
313224 
313225  // private: // JJW hack
313226  /*
313227  name AST Memory Allocation Support Variables
313228  Memory allocations support variables
313229 
313230  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
313231  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
313232  and support the AST File I/O Mechanism.
313233  */
313234  /* */
313235 
313236  public:
313237 
313238  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
313239  // to current node (so that it will work cleanly with build functions to specify patterns).
313240  // virtual SgNode* addRegExpAttribute();
313247 
313248 // *** COMMON CODE SECTION ENDS HERE ***
313249 
313250 
313251 // End of memberFunctionString
313252 // Start of memberFunctionString
313253 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
313254 
313255  // the generated cast function
313256  // friend ROSE_DLL_API SgYieldExpression* isSgYieldExpression ( SgNode* s );
313257 
313258  typedef SgExpression base_node_type;
313259 
313260 
313261 // End of memberFunctionString
313262 // Start of memberFunctionString
313263 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
313264 
313265  SgType* get_type() const override;
313266 
313267 
313268 // End of memberFunctionString
313269 // Start of memberFunctionString
313270 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
313271 
313272  void post_construction_initialization() override;
313273 
313274 
313275 // End of memberFunctionString
313276 
313277  public:
313278  SgExpression* get_value() const;
313279  void set_value(SgExpression* value);
313280 
313281 
313282  public:
313283  virtual ~SgYieldExpression();
313284 
313285 
313286  public:
313287  SgYieldExpression(Sg_File_Info* startOfConstruct , SgExpression* value = NULL);
313288  SgYieldExpression(SgExpression* value);
313289 
313290  protected:
313291 // Start of memberFunctionString
313292 SgExpression* p_value;
313293 
313294 // End of memberFunctionString
313295 
313296 
313297 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
313298 
313299 
313300  };
313301 #endif
313302 
313303 // postdeclarations for SgYieldExpression
313304 
313305 /* #line 313306 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
313306 
313307 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
313308 
313309 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
313310 
313311 
313312 /* #line 313313 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
313313 
313314 
313315 
313316 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
313317 
313318 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
313319 // This code is automatically generated for each
313320 // terminal and non-terminal within the defined
313321 // grammar. There is a simple way to change the
313322 // code to fix bugs etc. See the ROSE README file
313323 // for directions.
313324 
313325 // tps: (02/22/2010): Adding DLL export requirements
313326 #include "rosedll.h"
313327 
313328 // predeclarations for SgTemplateFunctionRefExp
313329 
313330 /* #line 313331 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
313331 
313332 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
313333 
313334 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
313335 
313336 #if 1
313337 // Class Definition for SgTemplateFunctionRefExp
313338 class ROSE_DLL_API SgTemplateFunctionRefExp : public SgExpression
313339  {
313340  public:
313341 
313342 
313343 /* #line 313344 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
313344 
313345  virtual SgNode* copy ( SgCopyHelp& help) const override;
313346 // Start of memberFunctionString
313347 /* #line 464 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
313348 
313349  // SgTemplateSymbol* get_symbol() const;
313350  // void set_symbol(SgTemplateSymbol * symbol);
313351  SgTemplateFunctionSymbol* get_symbol() const;
313352  void set_symbol(SgTemplateFunctionSymbol * symbol);
313353 
313354 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
313355  virtual unsigned int cfgIndexForEnd() const override;
313356  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
313357  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
313358 #endif
313359 
313364  SgTemplateFunctionDeclaration* getAssociatedFunctionDeclaration() const;
313365 
313366 // // get lvalue
313367 // virtual bool isLValue() const;
313368 // virtual bool isChildUsedAsLValue(const SgExpression* child) const; // INTERNAL Recursively call up the chain to answer the child
313369 
313370  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
313371  int get_name_qualification_length() const override;
313372  void set_name_qualification_length(int name_qualification_length) override;
313373 
313374  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
313375  bool get_type_elaboration_required() const override;
313376  void set_type_elaboration_required(bool type_elaboration_required) override;
313377 
313378  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
313379  bool get_global_qualification_required() const override;
313380  void set_global_qualification_required(bool global_qualification_required) override;
313381 
313382 
313383 
313384 // End of memberFunctionString
313385 // Start of memberFunctionString
313386 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
313387 
313388 // *** COMMON CODE SECTION BEGINS HERE ***
313389 
313390  public:
313391 
313392  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
313393  // and not required which is required to match the other aspects of the copy mechanism code generation.
313394  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
313395  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
313396  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
313397  // virtual SgNode* copy ( const SgCopyHelp & help) const;
313398 
313400  virtual std::string class_name() const override;
313401 
313403  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
313404 
313406  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
313407  // static const VariantT static_variant = V_SgTemplateFunctionRefExp;
313408  enum { static_variant = V_SgTemplateFunctionRefExp };
313409 
313410  /* the generated cast function */
313412  ROSE_DLL_API friend SgTemplateFunctionRefExp* isSgTemplateFunctionRefExp( SgNode * s );
313413 
313415  ROSE_DLL_API friend const SgTemplateFunctionRefExp* isSgTemplateFunctionRefExp( const SgNode * s );
313416 
313417  // ******************************************
313418  // * Memory Pool / New / Delete
313419  // ******************************************
313420 
313421  public:
313423  static const unsigned pool_size; //
313425  static std::vector<unsigned char *> pools; //
313427  static SgTemplateFunctionRefExp * next_node; //
313428 
313430  static unsigned long initializeStorageClassArray(SgTemplateFunctionRefExpStorageClass *); //
313431 
313433  static void clearMemoryPool(); //
313434  static void deleteMemoryPool(); //
313435 
313437  static void extendMemoryPoolForFileIO(); //
313438 
313440  static SgTemplateFunctionRefExp * getPointerFromGlobalIndex(unsigned long); //
313442  static SgTemplateFunctionRefExp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
313443 
313445  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
313447  static void resetValidFreepointers(); //
313449  static unsigned long getNumberOfLastValidPointer(); //
313450 
313451 
313452 #if defined(INLINE_FUNCTIONS)
313453 
313454  inline void *operator new (size_t size);
313455 #else
313456 
313457  void *operator new (size_t size);
313458 #endif
313459 
313460  void operator delete (void* pointer, size_t size);
313461 
313462  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
313463  void operator delete (void* pointer)
313464  {
313465  // This is the generated delete operator...
313466  SgTemplateFunctionRefExp::operator delete (pointer,sizeof(SgTemplateFunctionRefExp));
313467  }
313468 
313470  static size_t numberOfNodes();
313471 
313473  static size_t memoryUsage();
313474 
313475  // End of scope which started in IR nodes specific code
313476  /* */
313477 
313478  /* name Internal Functions
313479  \brief Internal functions ... incomplete-documentation
313480 
313481  These functions have been made public as part of the design, but they are suggested for internal use
313482  or by particularly knowledgeable users for specialized tools or applications.
313483 
313484  \internal We could not make these private because they are required by user for special purposes. And
313485  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
313486 
313487  */
313488 
313489  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
313490  // overridden in every class by *generated* implementation
313492  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
313493  // MS: 06/28/02 container of names of variables or container indices
313494  // used used in the traversal to access AST successor nodes
313495  // overridden in every class by *generated* implementation
313498  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
313499 
313500  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
313501  // than all the vector copies. The implementation for these functions is generated for each class.
313503  virtual size_t get_numberOfTraversalSuccessors() override;
313505  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
313507  virtual size_t get_childIndex(SgNode *child) override;
313508 
313509 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
313510  // MS: 08/16/2002 method for generating RTI information
313512  virtual RTIReturnType roseRTI() override;
313513 #endif
313514  /* */
313515 
313516 
313517 
313518  /* name Deprecated Functions
313519  \brief Deprecated functions ... incomplete-documentation
313520 
313521  These functions have been deprecated from use.
313522  */
313523  /* */
313524 
313526  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
313527 
313528  // JJW (10/16/2008): Changed to a single function in Node.code, and put
313529  // getVariant() in #if 0 block to prevent confusing Doxygen
313530 #if 0
313531 
313532  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
313534  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
313535 #endif
313536  /* */
313537 
313538 
313539 
313540 
313541  public:
313542  /* name Traversal Support Functions
313543  \brief Traversal support functions ... incomplete-documentation
313544 
313545  These functions have been made public as part of the design, but they are suggested for internal use
313546  or by particularly knowledgable users for specialized tools or applications.
313547  */
313548  /* */
313549 
313550  // DQ (11/26/2005): Support for visitor pattern mechanims
313551  // (inferior to ROSE traversal mechanism, experimental).
313555 
313556  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
313558  virtual void accept (ROSE_VisitorPattern & visitor) override;
313559 
313560  // DQ (12/26/2005): Support for traversal based on the memory pool
313563  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
313564 
313567  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
313568 
313569  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
313570  // This traversal helps support internal tools that call static member functions.
313571  // note: this function operates on the memory pools.
313574  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
313575  /* */
313576 
313577 
313578  public:
313579  /* name Memory Allocation Functions
313580  \brief Memory allocations functions ... incomplete-documentation
313581 
313582  These functions have been made public as part of the design, but they are suggested for internal use
313583  or by particularly knowledgable users for specialized tools or applications.
313584  */
313585  /* */
313586 
313597  virtual bool isInMemoryPool() override;
313598 
313609  virtual void checkDataMemberPointersIfInMemoryPool() override;
313610 
313611  // DQ (4/30/2006): Modified to be a const function.
313626  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
313627 
313637  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
313638 
313650  virtual long getChildIndex( SgNode* childNode ) const override;
313651 
313652  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
313653  // comment here (changed to be a C style comment and not be a doxygen comment).
313654  /* \brief Constructor for use by AST File I/O Mechanism
313655 
313656  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
313657  which obtained via fast binary file I/O from disk.
313658  */
313659  // SgTemplateFunctionRefExp( SgTemplateFunctionRefExpStorageClass& source );
313660 
313661 
313662 
313663 
313664 
313665  // JH (10/24/2005): methods added to support the ast file IO
313666  private:
313667 
313668  /* name AST Memory Allocation Support Functions
313669  \brief Memory allocations support....
313670 
313671  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
313672  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
313673  and support the AST File I/O Mechanism.
313674  */
313675  /* */
313676 
313677  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
313678  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
313679  that I use the same type everywhere, if any changes are made. THe second one declares the type
313680  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
313681  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
313682  a correspinding one in the AST_FILE_IO class!
313683  */
313684  // DQ (9/2/2015): This typedef is no longer used, we can't define the
313685  // comment here (changed to be a C style comment and not be a doxygen comment).
313686  /* \brief Typedef used for low level memory access.
313687  */
313688  // typedef unsigned char* TestType;
313689 
313690  // DQ (9/2/2015): This typedef is no longer used, we can't define the
313691  // comment here (changed to be a C style comment and not be a doxygen comment).
313692  /* \brief Typedef used to hold memory addresses as values.
313693  */
313694  // typedef unsigned long AddressType;
313695 
313696 
313697 
313698  // necessary, to have direct access to the p_freepointer and the private methods !
313700  friend class AST_FILE_IO;
313701 
313703  friend class SgTemplateFunctionRefExpStorageClass;
313704 
313706  friend class AstSpecificDataManagingClass;
313707 
313709  friend class AstSpecificDataManagingClassStorageClass;
313710 
313711  public:
313713  SgTemplateFunctionRefExp( const SgTemplateFunctionRefExpStorageClass& source );
313714 
313715  // private: // JJW hack
313716  /*
313717  name AST Memory Allocation Support Variables
313718  Memory allocations support variables
313719 
313720  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
313721  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
313722  and support the AST File I/O Mechanism.
313723  */
313724  /* */
313725 
313726  public:
313727 
313728  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
313729  // to current node (so that it will work cleanly with build functions to specify patterns).
313730  // virtual SgNode* addRegExpAttribute();
313737 
313738 // *** COMMON CODE SECTION ENDS HERE ***
313739 
313740 
313741 // End of memberFunctionString
313742 // Start of memberFunctionString
313743 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
313744 
313745  // the generated cast function
313746  // friend ROSE_DLL_API SgTemplateFunctionRefExp* isSgTemplateFunctionRefExp ( SgNode* s );
313747 
313748  typedef SgExpression base_node_type;
313749 
313750 
313751 // End of memberFunctionString
313752 // Start of memberFunctionString
313753 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
313754 
313755  SgType* get_type() const override;
313756 
313757 
313758 // End of memberFunctionString
313759 // Start of memberFunctionString
313760 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
313761 
313762  void post_construction_initialization() override;
313763 
313764 
313765 // End of memberFunctionString
313766 
313767  public:
313768  SgTemplateFunctionSymbol* get_symbol_i() const;
313769  void set_symbol_i(SgTemplateFunctionSymbol* symbol_i);
313770 
313771 
313772 
313773 
313774 
313775  public:
313776  virtual ~SgTemplateFunctionRefExp();
313777 
313778 
313779  public:
313780  SgTemplateFunctionRefExp(Sg_File_Info* startOfConstruct , SgTemplateFunctionSymbol* symbol_i = NULL);
313782 
313783  protected:
313784 // Start of memberFunctionString
313785 SgTemplateFunctionSymbol* p_symbol_i;
313786 
313787 // End of memberFunctionString
313788 // Start of memberFunctionString
313789 int p_name_qualification_length;
313790 
313791 // End of memberFunctionString
313792 // Start of memberFunctionString
313793 bool p_type_elaboration_required;
313794 
313795 // End of memberFunctionString
313796 // Start of memberFunctionString
313797 bool p_global_qualification_required;
313798 
313799 // End of memberFunctionString
313800 
313801 
313802 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
313803 
313804 
313805  };
313806 #endif
313807 
313808 // postdeclarations for SgTemplateFunctionRefExp
313809 
313810 /* #line 313811 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
313811 
313812 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
313813 
313814 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
313815 
313816 
313817 /* #line 313818 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
313818 
313819 
313820 
313821 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
313822 
313823 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
313824 // This code is automatically generated for each
313825 // terminal and non-terminal within the defined
313826 // grammar. There is a simple way to change the
313827 // code to fix bugs etc. See the ROSE README file
313828 // for directions.
313829 
313830 // tps: (02/22/2010): Adding DLL export requirements
313831 #include "rosedll.h"
313832 
313833 // predeclarations for SgTemplateMemberFunctionRefExp
313834 
313835 /* #line 313836 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
313836 
313837 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
313838 
313839 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
313840 
313841 #if 1
313842 // Class Definition for SgTemplateMemberFunctionRefExp
313844  {
313845  public:
313846 
313847 
313848 /* #line 313849 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
313849 
313850  virtual SgNode* copy ( SgCopyHelp& help) const override;
313851 // Start of memberFunctionString
313852 /* #line 501 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
313853 
313854  // SgTemplateSymbol* get_symbol() const;
313855  // void set_symbol(SgTemplateSymbol * symbol);
313856  SgTemplateMemberFunctionSymbol* get_symbol() const;
313857  void set_symbol(SgTemplateMemberFunctionSymbol * symbol);
313858 
313859 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
313860  virtual unsigned int cfgIndexForEnd() const override;
313861  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
313862  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
313863 #endif
313864 
313868  SgTemplateMemberFunctionDeclaration* getAssociatedMemberFunctionDeclaration() const;
313869 
313870  // DQ (12/15/2011): We might require this...
313871  // get lvalue
313872  // virtual bool isLValue() const;
313873  // virtual bool isChildUsedAsLValue(const SgExpression* child) const; // INTERNAL Recursively call up the chain to answer the child
313874 
313875  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
313876  int get_name_qualification_length() const override;
313877  void set_name_qualification_length(int name_qualification_length) override;
313878 
313879  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
313880  bool get_type_elaboration_required() const override;
313881  void set_type_elaboration_required(bool type_elaboration_required) override;
313882 
313883  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
313884  bool get_global_qualification_required() const override;
313885  void set_global_qualification_required(bool global_qualification_required) override;
313886 
313887 
313888 
313889 // End of memberFunctionString
313890 // Start of memberFunctionString
313891 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
313892 
313893 // *** COMMON CODE SECTION BEGINS HERE ***
313894 
313895  public:
313896 
313897  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
313898  // and not required which is required to match the other aspects of the copy mechanism code generation.
313899  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
313900  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
313901  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
313902  // virtual SgNode* copy ( const SgCopyHelp & help) const;
313903 
313905  virtual std::string class_name() const override;
313906 
313908  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
313909 
313911  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
313912  // static const VariantT static_variant = V_SgTemplateMemberFunctionRefExp;
313913  enum { static_variant = V_SgTemplateMemberFunctionRefExp };
313914 
313915  /* the generated cast function */
313917  ROSE_DLL_API friend SgTemplateMemberFunctionRefExp* isSgTemplateMemberFunctionRefExp( SgNode * s );
313918 
313920  ROSE_DLL_API friend const SgTemplateMemberFunctionRefExp* isSgTemplateMemberFunctionRefExp( const SgNode * s );
313921 
313922  // ******************************************
313923  // * Memory Pool / New / Delete
313924  // ******************************************
313925 
313926  public:
313928  static const unsigned pool_size; //
313930  static std::vector<unsigned char *> pools; //
313932  static SgTemplateMemberFunctionRefExp * next_node; //
313933 
313935  static unsigned long initializeStorageClassArray(SgTemplateMemberFunctionRefExpStorageClass *); //
313936 
313938  static void clearMemoryPool(); //
313939  static void deleteMemoryPool(); //
313940 
313942  static void extendMemoryPoolForFileIO(); //
313943 
313945  static SgTemplateMemberFunctionRefExp * getPointerFromGlobalIndex(unsigned long); //
313947  static SgTemplateMemberFunctionRefExp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
313948 
313950  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
313952  static void resetValidFreepointers(); //
313954  static unsigned long getNumberOfLastValidPointer(); //
313955 
313956 
313957 #if defined(INLINE_FUNCTIONS)
313958 
313959  inline void *operator new (size_t size);
313960 #else
313961 
313962  void *operator new (size_t size);
313963 #endif
313964 
313965  void operator delete (void* pointer, size_t size);
313966 
313967  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
313968  void operator delete (void* pointer)
313969  {
313970  // This is the generated delete operator...
313971  SgTemplateMemberFunctionRefExp::operator delete (pointer,sizeof(SgTemplateMemberFunctionRefExp));
313972  }
313973 
313975  static size_t numberOfNodes();
313976 
313978  static size_t memoryUsage();
313979 
313980  // End of scope which started in IR nodes specific code
313981  /* */
313982 
313983  /* name Internal Functions
313984  \brief Internal functions ... incomplete-documentation
313985 
313986  These functions have been made public as part of the design, but they are suggested for internal use
313987  or by particularly knowledgeable users for specialized tools or applications.
313988 
313989  \internal We could not make these private because they are required by user for special purposes. And
313990  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
313991 
313992  */
313993 
313994  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
313995  // overridden in every class by *generated* implementation
313997  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
313998  // MS: 06/28/02 container of names of variables or container indices
313999  // used used in the traversal to access AST successor nodes
314000  // overridden in every class by *generated* implementation
314003  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
314004 
314005  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
314006  // than all the vector copies. The implementation for these functions is generated for each class.
314008  virtual size_t get_numberOfTraversalSuccessors() override;
314010  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
314012  virtual size_t get_childIndex(SgNode *child) override;
314013 
314014 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
314015  // MS: 08/16/2002 method for generating RTI information
314017  virtual RTIReturnType roseRTI() override;
314018 #endif
314019  /* */
314020 
314021 
314022 
314023  /* name Deprecated Functions
314024  \brief Deprecated functions ... incomplete-documentation
314025 
314026  These functions have been deprecated from use.
314027  */
314028  /* */
314029 
314031  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
314032 
314033  // JJW (10/16/2008): Changed to a single function in Node.code, and put
314034  // getVariant() in #if 0 block to prevent confusing Doxygen
314035 #if 0
314036 
314037  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
314039  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
314040 #endif
314041  /* */
314042 
314043 
314044 
314045 
314046  public:
314047  /* name Traversal Support Functions
314048  \brief Traversal support functions ... incomplete-documentation
314049 
314050  These functions have been made public as part of the design, but they are suggested for internal use
314051  or by particularly knowledgable users for specialized tools or applications.
314052  */
314053  /* */
314054 
314055  // DQ (11/26/2005): Support for visitor pattern mechanims
314056  // (inferior to ROSE traversal mechanism, experimental).
314060 
314061  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
314063  virtual void accept (ROSE_VisitorPattern & visitor) override;
314064 
314065  // DQ (12/26/2005): Support for traversal based on the memory pool
314068  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
314069 
314072  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
314073 
314074  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
314075  // This traversal helps support internal tools that call static member functions.
314076  // note: this function operates on the memory pools.
314079  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
314080  /* */
314081 
314082 
314083  public:
314084  /* name Memory Allocation Functions
314085  \brief Memory allocations functions ... incomplete-documentation
314086 
314087  These functions have been made public as part of the design, but they are suggested for internal use
314088  or by particularly knowledgable users for specialized tools or applications.
314089  */
314090  /* */
314091 
314102  virtual bool isInMemoryPool() override;
314103 
314114  virtual void checkDataMemberPointersIfInMemoryPool() override;
314115 
314116  // DQ (4/30/2006): Modified to be a const function.
314131  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
314132 
314142  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
314143 
314155  virtual long getChildIndex( SgNode* childNode ) const override;
314156 
314157  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
314158  // comment here (changed to be a C style comment and not be a doxygen comment).
314159  /* \brief Constructor for use by AST File I/O Mechanism
314160 
314161  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
314162  which obtained via fast binary file I/O from disk.
314163  */
314164  // SgTemplateMemberFunctionRefExp( SgTemplateMemberFunctionRefExpStorageClass& source );
314165 
314166 
314167 
314168 
314169 
314170  // JH (10/24/2005): methods added to support the ast file IO
314171  private:
314172 
314173  /* name AST Memory Allocation Support Functions
314174  \brief Memory allocations support....
314175 
314176  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
314177  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
314178  and support the AST File I/O Mechanism.
314179  */
314180  /* */
314181 
314182  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
314183  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
314184  that I use the same type everywhere, if any changes are made. THe second one declares the type
314185  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
314186  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
314187  a correspinding one in the AST_FILE_IO class!
314188  */
314189  // DQ (9/2/2015): This typedef is no longer used, we can't define the
314190  // comment here (changed to be a C style comment and not be a doxygen comment).
314191  /* \brief Typedef used for low level memory access.
314192  */
314193  // typedef unsigned char* TestType;
314194 
314195  // DQ (9/2/2015): This typedef is no longer used, we can't define the
314196  // comment here (changed to be a C style comment and not be a doxygen comment).
314197  /* \brief Typedef used to hold memory addresses as values.
314198  */
314199  // typedef unsigned long AddressType;
314200 
314201 
314202 
314203  // necessary, to have direct access to the p_freepointer and the private methods !
314205  friend class AST_FILE_IO;
314206 
314208  friend class SgTemplateMemberFunctionRefExpStorageClass;
314209 
314211  friend class AstSpecificDataManagingClass;
314212 
314214  friend class AstSpecificDataManagingClassStorageClass;
314215 
314216  public:
314218  SgTemplateMemberFunctionRefExp( const SgTemplateMemberFunctionRefExpStorageClass& source );
314219 
314220  // private: // JJW hack
314221  /*
314222  name AST Memory Allocation Support Variables
314223  Memory allocations support variables
314224 
314225  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
314226  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
314227  and support the AST File I/O Mechanism.
314228  */
314229  /* */
314230 
314231  public:
314232 
314233  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
314234  // to current node (so that it will work cleanly with build functions to specify patterns).
314235  // virtual SgNode* addRegExpAttribute();
314242 
314243 // *** COMMON CODE SECTION ENDS HERE ***
314244 
314245 
314246 // End of memberFunctionString
314247 // Start of memberFunctionString
314248 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
314249 
314250  // the generated cast function
314251  // friend ROSE_DLL_API SgTemplateMemberFunctionRefExp* isSgTemplateMemberFunctionRefExp ( SgNode* s );
314252 
314253  typedef SgExpression base_node_type;
314254 
314255 
314256 // End of memberFunctionString
314257 // Start of memberFunctionString
314258 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
314259 
314260  SgType* get_type() const override;
314261 
314262 
314263 // End of memberFunctionString
314264 // Start of memberFunctionString
314265 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
314266 
314267  void post_construction_initialization() override;
314268 
314269 
314270 // End of memberFunctionString
314271 
314272  public:
314273  SgTemplateMemberFunctionSymbol* get_symbol_i() const;
314274  void set_symbol_i(SgTemplateMemberFunctionSymbol* symbol_i);
314275 
314276  public:
314277  int get_virtual_call() const;
314278  void set_virtual_call(int virtual_call);
314279 
314280  public:
314281  int get_need_qualifier() const;
314282  void set_need_qualifier(int need_qualifier);
314283 
314284 
314285 
314286 
314287 
314288  public:
314289  virtual ~SgTemplateMemberFunctionRefExp();
314290 
314291 
314292  public:
314293  SgTemplateMemberFunctionRefExp(Sg_File_Info* startOfConstruct , SgTemplateMemberFunctionSymbol* symbol_i = NULL, int virtual_call = 0, int need_qualifier = true);
314294  SgTemplateMemberFunctionRefExp(SgTemplateMemberFunctionSymbol* symbol_i, int virtual_call, int need_qualifier);
314295 
314296  protected:
314297 // Start of memberFunctionString
314298 SgTemplateMemberFunctionSymbol* p_symbol_i;
314299 
314300 // End of memberFunctionString
314301 // Start of memberFunctionString
314302 int p_virtual_call;
314303 
314304 // End of memberFunctionString
314305 // Start of memberFunctionString
314306 int p_need_qualifier;
314307 
314308 // End of memberFunctionString
314309 // Start of memberFunctionString
314310 int p_name_qualification_length;
314311 
314312 // End of memberFunctionString
314313 // Start of memberFunctionString
314314 bool p_type_elaboration_required;
314315 
314316 // End of memberFunctionString
314317 // Start of memberFunctionString
314318 bool p_global_qualification_required;
314319 
314320 // End of memberFunctionString
314321 
314322 
314323 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
314324 
314325 
314326  };
314327 #endif
314328 
314329 // postdeclarations for SgTemplateMemberFunctionRefExp
314330 
314331 /* #line 314332 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
314332 
314333 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
314334 
314335 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
314336 
314337 
314338 /* #line 314339 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
314339 
314340 
314341 
314342 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
314343 
314344 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
314345 // This code is automatically generated for each
314346 // terminal and non-terminal within the defined
314347 // grammar. There is a simple way to change the
314348 // code to fix bugs etc. See the ROSE README file
314349 // for directions.
314350 
314351 // tps: (02/22/2010): Adding DLL export requirements
314352 #include "rosedll.h"
314353 
314354 // predeclarations for SgAlignOfOp
314355 
314356 /* #line 314357 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
314357 
314358 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
314359 
314360 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
314361 
314362 #if 1
314363 // Class Definition for SgAlignOfOp
314364 class ROSE_DLL_API SgAlignOfOp : public SgExpression
314365  {
314366  public:
314367 
314368 
314369 /* #line 314370 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
314370 
314371  virtual SgNode* copy ( SgCopyHelp& help) const override;
314372 // Start of memberFunctionString
314373 /* #line 1015 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
314374 
314375  int replace_expression(SgExpression*, SgExpression*) override ROSE_DEPRECATED_FUNCTION;
314376 
314377 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
314378  virtual unsigned int cfgIndexForEnd() const override;
314379  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
314380  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
314381 #endif
314382 
314383  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
314384  int get_name_qualification_length() const override;
314385  void set_name_qualification_length(int name_qualification_length) override;
314386 
314387  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
314388  bool get_type_elaboration_required() const override;
314389  void set_type_elaboration_required(bool type_elaboration_required) override;
314390 
314391  // DQ (6/11/2015): Added support for none ROSETTA generated access functions to avoid isModified flag setting semantics.
314392  bool get_global_qualification_required() const override;
314393  void set_global_qualification_required(bool global_qualification_required) override;
314394 
314395 
314396 
314397 // End of memberFunctionString
314398 // Start of memberFunctionString
314399 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
314400 
314401 // *** COMMON CODE SECTION BEGINS HERE ***
314402 
314403  public:
314404 
314405  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
314406  // and not required which is required to match the other aspects of the copy mechanism code generation.
314407  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
314408  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
314409  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
314410  // virtual SgNode* copy ( const SgCopyHelp & help) const;
314411 
314413  virtual std::string class_name() const override;
314414 
314416  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
314417 
314419  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
314420  // static const VariantT static_variant = V_SgAlignOfOp;
314421  enum { static_variant = V_SgAlignOfOp };
314422 
314423  /* the generated cast function */
314425  ROSE_DLL_API friend SgAlignOfOp* isSgAlignOfOp( SgNode * s );
314426 
314428  ROSE_DLL_API friend const SgAlignOfOp* isSgAlignOfOp( const SgNode * s );
314429 
314430  // ******************************************
314431  // * Memory Pool / New / Delete
314432  // ******************************************
314433 
314434  public:
314436  static const unsigned pool_size; //
314438  static std::vector<unsigned char *> pools; //
314440  static SgAlignOfOp * next_node; //
314441 
314443  static unsigned long initializeStorageClassArray(SgAlignOfOpStorageClass *); //
314444 
314446  static void clearMemoryPool(); //
314447  static void deleteMemoryPool(); //
314448 
314450  static void extendMemoryPoolForFileIO(); //
314451 
314453  static SgAlignOfOp * getPointerFromGlobalIndex(unsigned long); //
314455  static SgAlignOfOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
314456 
314458  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
314460  static void resetValidFreepointers(); //
314462  static unsigned long getNumberOfLastValidPointer(); //
314463 
314464 
314465 #if defined(INLINE_FUNCTIONS)
314466 
314467  inline void *operator new (size_t size);
314468 #else
314469 
314470  void *operator new (size_t size);
314471 #endif
314472 
314473  void operator delete (void* pointer, size_t size);
314474 
314475  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
314476  void operator delete (void* pointer)
314477  {
314478  // This is the generated delete operator...
314479  SgAlignOfOp::operator delete (pointer,sizeof(SgAlignOfOp));
314480  }
314481 
314483  static size_t numberOfNodes();
314484 
314486  static size_t memoryUsage();
314487 
314488  // End of scope which started in IR nodes specific code
314489  /* */
314490 
314491  /* name Internal Functions
314492  \brief Internal functions ... incomplete-documentation
314493 
314494  These functions have been made public as part of the design, but they are suggested for internal use
314495  or by particularly knowledgeable users for specialized tools or applications.
314496 
314497  \internal We could not make these private because they are required by user for special purposes. And
314498  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
314499 
314500  */
314501 
314502  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
314503  // overridden in every class by *generated* implementation
314505  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
314506  // MS: 06/28/02 container of names of variables or container indices
314507  // used used in the traversal to access AST successor nodes
314508  // overridden in every class by *generated* implementation
314511  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
314512 
314513  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
314514  // than all the vector copies. The implementation for these functions is generated for each class.
314516  virtual size_t get_numberOfTraversalSuccessors() override;
314518  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
314520  virtual size_t get_childIndex(SgNode *child) override;
314521 
314522 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
314523  // MS: 08/16/2002 method for generating RTI information
314525  virtual RTIReturnType roseRTI() override;
314526 #endif
314527  /* */
314528 
314529 
314530 
314531  /* name Deprecated Functions
314532  \brief Deprecated functions ... incomplete-documentation
314533 
314534  These functions have been deprecated from use.
314535  */
314536  /* */
314537 
314539  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
314540 
314541  // JJW (10/16/2008): Changed to a single function in Node.code, and put
314542  // getVariant() in #if 0 block to prevent confusing Doxygen
314543 #if 0
314544 
314545  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
314547  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
314548 #endif
314549  /* */
314550 
314551 
314552 
314553 
314554  public:
314555  /* name Traversal Support Functions
314556  \brief Traversal support functions ... incomplete-documentation
314557 
314558  These functions have been made public as part of the design, but they are suggested for internal use
314559  or by particularly knowledgable users for specialized tools or applications.
314560  */
314561  /* */
314562 
314563  // DQ (11/26/2005): Support for visitor pattern mechanims
314564  // (inferior to ROSE traversal mechanism, experimental).
314568 
314569  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
314571  virtual void accept (ROSE_VisitorPattern & visitor) override;
314572 
314573  // DQ (12/26/2005): Support for traversal based on the memory pool
314576  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
314577 
314580  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
314581 
314582  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
314583  // This traversal helps support internal tools that call static member functions.
314584  // note: this function operates on the memory pools.
314587  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
314588  /* */
314589 
314590 
314591  public:
314592  /* name Memory Allocation Functions
314593  \brief Memory allocations functions ... incomplete-documentation
314594 
314595  These functions have been made public as part of the design, but they are suggested for internal use
314596  or by particularly knowledgable users for specialized tools or applications.
314597  */
314598  /* */
314599 
314610  virtual bool isInMemoryPool() override;
314611 
314622  virtual void checkDataMemberPointersIfInMemoryPool() override;
314623 
314624  // DQ (4/30/2006): Modified to be a const function.
314639  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
314640 
314650  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
314651 
314663  virtual long getChildIndex( SgNode* childNode ) const override;
314664 
314665  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
314666  // comment here (changed to be a C style comment and not be a doxygen comment).
314667  /* \brief Constructor for use by AST File I/O Mechanism
314668 
314669  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
314670  which obtained via fast binary file I/O from disk.
314671  */
314672  // SgAlignOfOp( SgAlignOfOpStorageClass& source );
314673 
314674 
314675 
314676 
314677 
314678  // JH (10/24/2005): methods added to support the ast file IO
314679  private:
314680 
314681  /* name AST Memory Allocation Support Functions
314682  \brief Memory allocations support....
314683 
314684  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
314685  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
314686  and support the AST File I/O Mechanism.
314687  */
314688  /* */
314689 
314690  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
314691  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
314692  that I use the same type everywhere, if any changes are made. THe second one declares the type
314693  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
314694  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
314695  a correspinding one in the AST_FILE_IO class!
314696  */
314697  // DQ (9/2/2015): This typedef is no longer used, we can't define the
314698  // comment here (changed to be a C style comment and not be a doxygen comment).
314699  /* \brief Typedef used for low level memory access.
314700  */
314701  // typedef unsigned char* TestType;
314702 
314703  // DQ (9/2/2015): This typedef is no longer used, we can't define the
314704  // comment here (changed to be a C style comment and not be a doxygen comment).
314705  /* \brief Typedef used to hold memory addresses as values.
314706  */
314707  // typedef unsigned long AddressType;
314708 
314709 
314710 
314711  // necessary, to have direct access to the p_freepointer and the private methods !
314713  friend class AST_FILE_IO;
314714 
314716  friend class SgAlignOfOpStorageClass;
314717 
314719  friend class AstSpecificDataManagingClass;
314720 
314722  friend class AstSpecificDataManagingClassStorageClass;
314723 
314724  public:
314726  SgAlignOfOp( const SgAlignOfOpStorageClass& source );
314727 
314728  // private: // JJW hack
314729  /*
314730  name AST Memory Allocation Support Variables
314731  Memory allocations support variables
314732 
314733  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
314734  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
314735  and support the AST File I/O Mechanism.
314736  */
314737  /* */
314738 
314739  public:
314740 
314741  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
314742  // to current node (so that it will work cleanly with build functions to specify patterns).
314743  // virtual SgNode* addRegExpAttribute();
314749  SgAlignOfOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
314750 
314751 // *** COMMON CODE SECTION ENDS HERE ***
314752 
314753 
314754 // End of memberFunctionString
314755 // Start of memberFunctionString
314756 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
314757 
314758  // the generated cast function
314759  // friend ROSE_DLL_API SgAlignOfOp* isSgAlignOfOp ( SgNode* s );
314760 
314761  typedef SgExpression base_node_type;
314762 
314763 
314764 // End of memberFunctionString
314765 // Start of memberFunctionString
314766 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
314767 
314768  SgType* get_type() const override;
314769 
314770 
314771 // End of memberFunctionString
314772 // Start of memberFunctionString
314773 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
314774 
314775  void post_construction_initialization() override;
314776 
314777 
314778 // End of memberFunctionString
314779 
314780  public:
314781  SgExpression* get_operand_expr() const;
314782  void set_operand_expr(SgExpression* operand_expr);
314783 
314784  public:
314785  SgType* get_operand_type() const;
314786  void set_operand_type(SgType* operand_type);
314787 
314788 
314789 
314790 
314791 
314792  public:
314793  bool get_alignOfContainsBaseTypeDefiningDeclaration() const;
314794  void set_alignOfContainsBaseTypeDefiningDeclaration(bool alignOfContainsBaseTypeDefiningDeclaration);
314795 
314796 
314797  public:
314798  virtual ~SgAlignOfOp();
314799 
314800 
314801  public:
314802  SgAlignOfOp(Sg_File_Info* startOfConstruct , SgExpression* operand_expr = NULL, SgType* operand_type = NULL, SgType* expression_type = NULL);
314803  SgAlignOfOp(SgExpression* operand_expr, SgType* operand_type, SgType* expression_type);
314804 
314805  protected:
314806 // Start of memberFunctionString
314807 SgExpression* p_operand_expr;
314808 
314809 // End of memberFunctionString
314810 // Start of memberFunctionString
314811 SgType* p_operand_type;
314812 
314813 // End of memberFunctionString
314814 // Start of memberFunctionString
314815 SgType* p_expression_type;
314816 
314817 // End of memberFunctionString
314818 // Start of memberFunctionString
314819 int p_name_qualification_length;
314820 
314821 // End of memberFunctionString
314822 // Start of memberFunctionString
314823 bool p_type_elaboration_required;
314824 
314825 // End of memberFunctionString
314826 // Start of memberFunctionString
314827 bool p_global_qualification_required;
314828 
314829 // End of memberFunctionString
314830 // Start of memberFunctionString
314831 bool p_alignOfContainsBaseTypeDefiningDeclaration;
314832 
314833 // End of memberFunctionString
314834 
314835 
314836 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
314837 
314838 
314839  };
314840 #endif
314841 
314842 // postdeclarations for SgAlignOfOp
314843 
314844 /* #line 314845 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
314845 
314846 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
314847 
314848 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
314849 
314850 
314851 /* #line 314852 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
314852 
314853 
314854 
314855 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
314856 
314857 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
314858 // This code is automatically generated for each
314859 // terminal and non-terminal within the defined
314860 // grammar. There is a simple way to change the
314861 // code to fix bugs etc. See the ROSE README file
314862 // for directions.
314863 
314864 // tps: (02/22/2010): Adding DLL export requirements
314865 #include "rosedll.h"
314866 
314867 // predeclarations for SgRangeExp
314868 
314869 /* #line 314870 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
314870 
314871 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
314872 
314873 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
314874 
314875 #if 1
314876 // Class Definition for SgRangeExp
314877 class ROSE_DLL_API SgRangeExp : public SgExpression
314878  {
314879  public:
314880 
314881 
314882 /* #line 314883 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
314883 
314884  virtual SgNode* copy ( SgCopyHelp& help) const override;
314885 // Start of memberFunctionString
314886 /* #line 295 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
314887 
314888 //Append an expression to the range
314889 SgRangeExp* append(SgExpression *exp);
314890 
314891 
314892 // End of memberFunctionString
314893 // Start of memberFunctionString
314894 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
314895 
314896 // *** COMMON CODE SECTION BEGINS HERE ***
314897 
314898  public:
314899 
314900  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
314901  // and not required which is required to match the other aspects of the copy mechanism code generation.
314902  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
314903  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
314904  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
314905  // virtual SgNode* copy ( const SgCopyHelp & help) const;
314906 
314908  virtual std::string class_name() const override;
314909 
314911  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
314912 
314914  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
314915  // static const VariantT static_variant = V_SgRangeExp;
314916  enum { static_variant = V_SgRangeExp };
314917 
314918  /* the generated cast function */
314920  ROSE_DLL_API friend SgRangeExp* isSgRangeExp( SgNode * s );
314921 
314923  ROSE_DLL_API friend const SgRangeExp* isSgRangeExp( const SgNode * s );
314924 
314925  // ******************************************
314926  // * Memory Pool / New / Delete
314927  // ******************************************
314928 
314929  public:
314931  static const unsigned pool_size; //
314933  static std::vector<unsigned char *> pools; //
314935  static SgRangeExp * next_node; //
314936 
314938  static unsigned long initializeStorageClassArray(SgRangeExpStorageClass *); //
314939 
314941  static void clearMemoryPool(); //
314942  static void deleteMemoryPool(); //
314943 
314945  static void extendMemoryPoolForFileIO(); //
314946 
314948  static SgRangeExp * getPointerFromGlobalIndex(unsigned long); //
314950  static SgRangeExp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
314951 
314953  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
314955  static void resetValidFreepointers(); //
314957  static unsigned long getNumberOfLastValidPointer(); //
314958 
314959 
314960 #if defined(INLINE_FUNCTIONS)
314961 
314962  inline void *operator new (size_t size);
314963 #else
314964 
314965  void *operator new (size_t size);
314966 #endif
314967 
314968  void operator delete (void* pointer, size_t size);
314969 
314970  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
314971  void operator delete (void* pointer)
314972  {
314973  // This is the generated delete operator...
314974  SgRangeExp::operator delete (pointer,sizeof(SgRangeExp));
314975  }
314976 
314978  static size_t numberOfNodes();
314979 
314981  static size_t memoryUsage();
314982 
314983  // End of scope which started in IR nodes specific code
314984  /* */
314985 
314986  /* name Internal Functions
314987  \brief Internal functions ... incomplete-documentation
314988 
314989  These functions have been made public as part of the design, but they are suggested for internal use
314990  or by particularly knowledgeable users for specialized tools or applications.
314991 
314992  \internal We could not make these private because they are required by user for special purposes. And
314993  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
314994 
314995  */
314996 
314997  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
314998  // overridden in every class by *generated* implementation
315000  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
315001  // MS: 06/28/02 container of names of variables or container indices
315002  // used used in the traversal to access AST successor nodes
315003  // overridden in every class by *generated* implementation
315006  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
315007 
315008  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
315009  // than all the vector copies. The implementation for these functions is generated for each class.
315011  virtual size_t get_numberOfTraversalSuccessors() override;
315013  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
315015  virtual size_t get_childIndex(SgNode *child) override;
315016 
315017 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
315018  // MS: 08/16/2002 method for generating RTI information
315020  virtual RTIReturnType roseRTI() override;
315021 #endif
315022  /* */
315023 
315024 
315025 
315026  /* name Deprecated Functions
315027  \brief Deprecated functions ... incomplete-documentation
315028 
315029  These functions have been deprecated from use.
315030  */
315031  /* */
315032 
315034  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
315035 
315036  // JJW (10/16/2008): Changed to a single function in Node.code, and put
315037  // getVariant() in #if 0 block to prevent confusing Doxygen
315038 #if 0
315039 
315040  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
315042  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
315043 #endif
315044  /* */
315045 
315046 
315047 
315048 
315049  public:
315050  /* name Traversal Support Functions
315051  \brief Traversal support functions ... incomplete-documentation
315052 
315053  These functions have been made public as part of the design, but they are suggested for internal use
315054  or by particularly knowledgable users for specialized tools or applications.
315055  */
315056  /* */
315057 
315058  // DQ (11/26/2005): Support for visitor pattern mechanims
315059  // (inferior to ROSE traversal mechanism, experimental).
315063 
315064  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
315066  virtual void accept (ROSE_VisitorPattern & visitor) override;
315067 
315068  // DQ (12/26/2005): Support for traversal based on the memory pool
315071  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
315072 
315075  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
315076 
315077  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
315078  // This traversal helps support internal tools that call static member functions.
315079  // note: this function operates on the memory pools.
315082  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
315083  /* */
315084 
315085 
315086  public:
315087  /* name Memory Allocation Functions
315088  \brief Memory allocations functions ... incomplete-documentation
315089 
315090  These functions have been made public as part of the design, but they are suggested for internal use
315091  or by particularly knowledgable users for specialized tools or applications.
315092  */
315093  /* */
315094 
315105  virtual bool isInMemoryPool() override;
315106 
315117  virtual void checkDataMemberPointersIfInMemoryPool() override;
315118 
315119  // DQ (4/30/2006): Modified to be a const function.
315134  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
315135 
315145  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
315146 
315158  virtual long getChildIndex( SgNode* childNode ) const override;
315159 
315160  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
315161  // comment here (changed to be a C style comment and not be a doxygen comment).
315162  /* \brief Constructor for use by AST File I/O Mechanism
315163 
315164  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
315165  which obtained via fast binary file I/O from disk.
315166  */
315167  // SgRangeExp( SgRangeExpStorageClass& source );
315168 
315169 
315170 
315171 
315172 
315173  // JH (10/24/2005): methods added to support the ast file IO
315174  private:
315175 
315176  /* name AST Memory Allocation Support Functions
315177  \brief Memory allocations support....
315178 
315179  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
315180  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
315181  and support the AST File I/O Mechanism.
315182  */
315183  /* */
315184 
315185  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
315186  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
315187  that I use the same type everywhere, if any changes are made. THe second one declares the type
315188  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
315189  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
315190  a correspinding one in the AST_FILE_IO class!
315191  */
315192  // DQ (9/2/2015): This typedef is no longer used, we can't define the
315193  // comment here (changed to be a C style comment and not be a doxygen comment).
315194  /* \brief Typedef used for low level memory access.
315195  */
315196  // typedef unsigned char* TestType;
315197 
315198  // DQ (9/2/2015): This typedef is no longer used, we can't define the
315199  // comment here (changed to be a C style comment and not be a doxygen comment).
315200  /* \brief Typedef used to hold memory addresses as values.
315201  */
315202  // typedef unsigned long AddressType;
315203 
315204 
315205 
315206  // necessary, to have direct access to the p_freepointer and the private methods !
315208  friend class AST_FILE_IO;
315209 
315211  friend class SgRangeExpStorageClass;
315212 
315214  friend class AstSpecificDataManagingClass;
315215 
315217  friend class AstSpecificDataManagingClassStorageClass;
315218 
315219  public:
315221  SgRangeExp( const SgRangeExpStorageClass& source );
315222 
315223  // private: // JJW hack
315224  /*
315225  name AST Memory Allocation Support Variables
315226  Memory allocations support variables
315227 
315228  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
315229  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
315230  and support the AST File I/O Mechanism.
315231  */
315232  /* */
315233 
315234  public:
315235 
315236  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
315237  // to current node (so that it will work cleanly with build functions to specify patterns).
315238  // virtual SgNode* addRegExpAttribute();
315244  SgRangeExp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
315245 
315246 // *** COMMON CODE SECTION ENDS HERE ***
315247 
315248 
315249 // End of memberFunctionString
315250 // Start of memberFunctionString
315251 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
315252 
315253  // the generated cast function
315254  // friend ROSE_DLL_API SgRangeExp* isSgRangeExp ( SgNode* s );
315255 
315256  typedef SgExpression base_node_type;
315257 
315258 
315259 // End of memberFunctionString
315260 // Start of memberFunctionString
315261 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
315262 
315263  SgType* get_type() const override;
315264 
315265 
315266 // End of memberFunctionString
315267 // Start of memberFunctionString
315268 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
315269 
315270  void post_construction_initialization() override;
315271 
315272 
315273 // End of memberFunctionString
315274 
315275  public:
315276  SgExpression* get_start() const;
315277  void set_start(SgExpression* start);
315278 
315279  public:
315280  SgExpression* get_end() const;
315281  void set_end(SgExpression* end);
315282 
315283  public:
315284  SgExpression* get_stride() const;
315285  void set_stride(SgExpression* stride);
315286 
315287 
315288  public:
315289  virtual ~SgRangeExp();
315290 
315291 
315292  public:
315293  SgRangeExp(Sg_File_Info* startOfConstruct );
315294  SgRangeExp();
315295 
315296  protected:
315297 // Start of memberFunctionString
315298 SgExpression* p_start;
315299 
315300 // End of memberFunctionString
315301 // Start of memberFunctionString
315302 SgExpression* p_end;
315303 
315304 // End of memberFunctionString
315305 // Start of memberFunctionString
315306 SgExpression* p_stride;
315307 
315308 // End of memberFunctionString
315309 
315310 
315311 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
315312 
315313 
315314  };
315315 #endif
315316 
315317 // postdeclarations for SgRangeExp
315318 
315319 /* #line 315320 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
315320 
315321 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
315322 
315323 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
315324 
315325 
315326 /* #line 315327 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
315327 
315328 
315329 
315330 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
315331 
315332 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
315333 // This code is automatically generated for each
315334 // terminal and non-terminal within the defined
315335 // grammar. There is a simple way to change the
315336 // code to fix bugs etc. See the ROSE README file
315337 // for directions.
315338 
315339 // tps: (02/22/2010): Adding DLL export requirements
315340 #include "rosedll.h"
315341 
315342 // predeclarations for SgMagicColonExp
315343 
315344 /* #line 315345 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
315345 
315346 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
315347 
315348 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
315349 
315350 #if 1
315351 // Class Definition for SgMagicColonExp
315352 class ROSE_DLL_API SgMagicColonExp : public SgExpression
315353  {
315354  public:
315355 
315356 
315357 /* #line 315358 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
315358 
315359  virtual SgNode* copy ( SgCopyHelp& help) const override;
315360 // Start of memberFunctionString
315361 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
315362 
315363 // *** COMMON CODE SECTION BEGINS HERE ***
315364 
315365  public:
315366 
315367  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
315368  // and not required which is required to match the other aspects of the copy mechanism code generation.
315369  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
315370  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
315371  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
315372  // virtual SgNode* copy ( const SgCopyHelp & help) const;
315373 
315375  virtual std::string class_name() const override;
315376 
315378  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
315379 
315381  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
315382  // static const VariantT static_variant = V_SgMagicColonExp;
315383  enum { static_variant = V_SgMagicColonExp };
315384 
315385  /* the generated cast function */
315387  ROSE_DLL_API friend SgMagicColonExp* isSgMagicColonExp( SgNode * s );
315388 
315390  ROSE_DLL_API friend const SgMagicColonExp* isSgMagicColonExp( const SgNode * s );
315391 
315392  // ******************************************
315393  // * Memory Pool / New / Delete
315394  // ******************************************
315395 
315396  public:
315398  static const unsigned pool_size; //
315400  static std::vector<unsigned char *> pools; //
315402  static SgMagicColonExp * next_node; //
315403 
315405  static unsigned long initializeStorageClassArray(SgMagicColonExpStorageClass *); //
315406 
315408  static void clearMemoryPool(); //
315409  static void deleteMemoryPool(); //
315410 
315412  static void extendMemoryPoolForFileIO(); //
315413 
315415  static SgMagicColonExp * getPointerFromGlobalIndex(unsigned long); //
315417  static SgMagicColonExp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
315418 
315420  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
315422  static void resetValidFreepointers(); //
315424  static unsigned long getNumberOfLastValidPointer(); //
315425 
315426 
315427 #if defined(INLINE_FUNCTIONS)
315428 
315429  inline void *operator new (size_t size);
315430 #else
315431 
315432  void *operator new (size_t size);
315433 #endif
315434 
315435  void operator delete (void* pointer, size_t size);
315436 
315437  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
315438  void operator delete (void* pointer)
315439  {
315440  // This is the generated delete operator...
315441  SgMagicColonExp::operator delete (pointer,sizeof(SgMagicColonExp));
315442  }
315443 
315445  static size_t numberOfNodes();
315446 
315448  static size_t memoryUsage();
315449 
315450  // End of scope which started in IR nodes specific code
315451  /* */
315452 
315453  /* name Internal Functions
315454  \brief Internal functions ... incomplete-documentation
315455 
315456  These functions have been made public as part of the design, but they are suggested for internal use
315457  or by particularly knowledgeable users for specialized tools or applications.
315458 
315459  \internal We could not make these private because they are required by user for special purposes. And
315460  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
315461 
315462  */
315463 
315464  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
315465  // overridden in every class by *generated* implementation
315467  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
315468  // MS: 06/28/02 container of names of variables or container indices
315469  // used used in the traversal to access AST successor nodes
315470  // overridden in every class by *generated* implementation
315473  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
315474 
315475  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
315476  // than all the vector copies. The implementation for these functions is generated for each class.
315478  virtual size_t get_numberOfTraversalSuccessors() override;
315480  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
315482  virtual size_t get_childIndex(SgNode *child) override;
315483 
315484 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
315485  // MS: 08/16/2002 method for generating RTI information
315487  virtual RTIReturnType roseRTI() override;
315488 #endif
315489  /* */
315490 
315491 
315492 
315493  /* name Deprecated Functions
315494  \brief Deprecated functions ... incomplete-documentation
315495 
315496  These functions have been deprecated from use.
315497  */
315498  /* */
315499 
315501  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
315502 
315503  // JJW (10/16/2008): Changed to a single function in Node.code, and put
315504  // getVariant() in #if 0 block to prevent confusing Doxygen
315505 #if 0
315506 
315507  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
315509  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
315510 #endif
315511  /* */
315512 
315513 
315514 
315515 
315516  public:
315517  /* name Traversal Support Functions
315518  \brief Traversal support functions ... incomplete-documentation
315519 
315520  These functions have been made public as part of the design, but they are suggested for internal use
315521  or by particularly knowledgable users for specialized tools or applications.
315522  */
315523  /* */
315524 
315525  // DQ (11/26/2005): Support for visitor pattern mechanims
315526  // (inferior to ROSE traversal mechanism, experimental).
315530 
315531  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
315533  virtual void accept (ROSE_VisitorPattern & visitor) override;
315534 
315535  // DQ (12/26/2005): Support for traversal based on the memory pool
315538  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
315539 
315542  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
315543 
315544  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
315545  // This traversal helps support internal tools that call static member functions.
315546  // note: this function operates on the memory pools.
315549  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
315550  /* */
315551 
315552 
315553  public:
315554  /* name Memory Allocation Functions
315555  \brief Memory allocations functions ... incomplete-documentation
315556 
315557  These functions have been made public as part of the design, but they are suggested for internal use
315558  or by particularly knowledgable users for specialized tools or applications.
315559  */
315560  /* */
315561 
315572  virtual bool isInMemoryPool() override;
315573 
315584  virtual void checkDataMemberPointersIfInMemoryPool() override;
315585 
315586  // DQ (4/30/2006): Modified to be a const function.
315601  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
315602 
315612  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
315613 
315625  virtual long getChildIndex( SgNode* childNode ) const override;
315626 
315627  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
315628  // comment here (changed to be a C style comment and not be a doxygen comment).
315629  /* \brief Constructor for use by AST File I/O Mechanism
315630 
315631  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
315632  which obtained via fast binary file I/O from disk.
315633  */
315634  // SgMagicColonExp( SgMagicColonExpStorageClass& source );
315635 
315636 
315637 
315638 
315639 
315640  // JH (10/24/2005): methods added to support the ast file IO
315641  private:
315642 
315643  /* name AST Memory Allocation Support Functions
315644  \brief Memory allocations support....
315645 
315646  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
315647  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
315648  and support the AST File I/O Mechanism.
315649  */
315650  /* */
315651 
315652  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
315653  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
315654  that I use the same type everywhere, if any changes are made. THe second one declares the type
315655  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
315656  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
315657  a correspinding one in the AST_FILE_IO class!
315658  */
315659  // DQ (9/2/2015): This typedef is no longer used, we can't define the
315660  // comment here (changed to be a C style comment and not be a doxygen comment).
315661  /* \brief Typedef used for low level memory access.
315662  */
315663  // typedef unsigned char* TestType;
315664 
315665  // DQ (9/2/2015): This typedef is no longer used, we can't define the
315666  // comment here (changed to be a C style comment and not be a doxygen comment).
315667  /* \brief Typedef used to hold memory addresses as values.
315668  */
315669  // typedef unsigned long AddressType;
315670 
315671 
315672 
315673  // necessary, to have direct access to the p_freepointer and the private methods !
315675  friend class AST_FILE_IO;
315676 
315678  friend class SgMagicColonExpStorageClass;
315679 
315681  friend class AstSpecificDataManagingClass;
315682 
315684  friend class AstSpecificDataManagingClassStorageClass;
315685 
315686  public:
315688  SgMagicColonExp( const SgMagicColonExpStorageClass& source );
315689 
315690  // private: // JJW hack
315691  /*
315692  name AST Memory Allocation Support Variables
315693  Memory allocations support variables
315694 
315695  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
315696  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
315697  and support the AST File I/O Mechanism.
315698  */
315699  /* */
315700 
315701  public:
315702 
315703  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
315704  // to current node (so that it will work cleanly with build functions to specify patterns).
315705  // virtual SgNode* addRegExpAttribute();
315712 
315713 // *** COMMON CODE SECTION ENDS HERE ***
315714 
315715 
315716 // End of memberFunctionString
315717 // Start of memberFunctionString
315718 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
315719 
315720  // the generated cast function
315721  // friend ROSE_DLL_API SgMagicColonExp* isSgMagicColonExp ( SgNode* s );
315722 
315723  typedef SgExpression base_node_type;
315724 
315725 
315726 // End of memberFunctionString
315727 // Start of memberFunctionString
315728 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
315729 
315730  SgType* get_type() const override;
315731 
315732 
315733 // End of memberFunctionString
315734 // Start of memberFunctionString
315735 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
315736 
315737  void post_construction_initialization() override;
315738 
315739 
315740 // End of memberFunctionString
315741 
315742 
315743  public:
315744  virtual ~SgMagicColonExp();
315745 
315746 
315747  public:
315748  SgMagicColonExp(Sg_File_Info* startOfConstruct );
315749  SgMagicColonExp();
315750 
315751  protected:
315752 
315753 
315754 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
315755 
315756 
315757  };
315758 #endif
315759 
315760 // postdeclarations for SgMagicColonExp
315761 
315762 /* #line 315763 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
315763 
315764 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
315765 
315766 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
315767 
315768 
315769 /* #line 315770 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
315770 
315771 
315772 
315773 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
315774 
315775 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
315776 // This code is automatically generated for each
315777 // terminal and non-terminal within the defined
315778 // grammar. There is a simple way to change the
315779 // code to fix bugs etc. See the ROSE README file
315780 // for directions.
315781 
315782 // tps: (02/22/2010): Adding DLL export requirements
315783 #include "rosedll.h"
315784 
315785 // predeclarations for SgTypeTraitBuiltinOperator
315786 
315787 /* #line 315788 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
315788 
315789 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
315790 
315791 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
315792 
315793 #if 1
315794 // Class Definition for SgTypeTraitBuiltinOperator
315795 class ROSE_DLL_API SgTypeTraitBuiltinOperator : public SgExpression
315796  {
315797  public:
315798 
315799 
315800 /* #line 315801 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
315801 
315802  virtual SgNode* copy ( SgCopyHelp& help) const override;
315803 // Start of memberFunctionString
315804 /* #line 761 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
315805 
315806 
315807  // DQ (7/13/2013): I have verified that we need implementations of these functions for the CFG support.
315808  // DQ (7/12/2013): Not clear if we need these functions since the buildin functions are all pure and lack definitions.
315809 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
315810  virtual unsigned int cfgIndexForEnd() const override;
315811  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
315812  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
315813 #endif
315814 
315815  // DQ (7/12/2013): Not clear if we need these functions since the buildin functions are all pure.
315816  // get lvalue
315817  // virtual bool isLValue() const;
315818  // virtual bool isChildUsedAsLValue(const SgExpression* child) const; // INTERNAL Recursively call up the chain to answer the child
315819 
315820 
315821 
315822 // End of memberFunctionString
315823 // Start of memberFunctionString
315824 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
315825 
315826 // *** COMMON CODE SECTION BEGINS HERE ***
315827 
315828  public:
315829 
315830  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
315831  // and not required which is required to match the other aspects of the copy mechanism code generation.
315832  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
315833  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
315834  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
315835  // virtual SgNode* copy ( const SgCopyHelp & help) const;
315836 
315838  virtual std::string class_name() const override;
315839 
315841  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
315842 
315844  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
315845  // static const VariantT static_variant = V_SgTypeTraitBuiltinOperator;
315846  enum { static_variant = V_SgTypeTraitBuiltinOperator };
315847 
315848  /* the generated cast function */
315850  ROSE_DLL_API friend SgTypeTraitBuiltinOperator* isSgTypeTraitBuiltinOperator( SgNode * s );
315851 
315853  ROSE_DLL_API friend const SgTypeTraitBuiltinOperator* isSgTypeTraitBuiltinOperator( const SgNode * s );
315854 
315855  // ******************************************
315856  // * Memory Pool / New / Delete
315857  // ******************************************
315858 
315859  public:
315861  static const unsigned pool_size; //
315863  static std::vector<unsigned char *> pools; //
315865  static SgTypeTraitBuiltinOperator * next_node; //
315866 
315868  static unsigned long initializeStorageClassArray(SgTypeTraitBuiltinOperatorStorageClass *); //
315869 
315871  static void clearMemoryPool(); //
315872  static void deleteMemoryPool(); //
315873 
315875  static void extendMemoryPoolForFileIO(); //
315876 
315878  static SgTypeTraitBuiltinOperator * getPointerFromGlobalIndex(unsigned long); //
315880  static SgTypeTraitBuiltinOperator * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
315881 
315883  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
315885  static void resetValidFreepointers(); //
315887  static unsigned long getNumberOfLastValidPointer(); //
315888 
315889 
315890 #if defined(INLINE_FUNCTIONS)
315891 
315892  inline void *operator new (size_t size);
315893 #else
315894 
315895  void *operator new (size_t size);
315896 #endif
315897 
315898  void operator delete (void* pointer, size_t size);
315899 
315900  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
315901  void operator delete (void* pointer)
315902  {
315903  // This is the generated delete operator...
315904  SgTypeTraitBuiltinOperator::operator delete (pointer,sizeof(SgTypeTraitBuiltinOperator));
315905  }
315906 
315908  static size_t numberOfNodes();
315909 
315911  static size_t memoryUsage();
315912 
315913  // End of scope which started in IR nodes specific code
315914  /* */
315915 
315916  /* name Internal Functions
315917  \brief Internal functions ... incomplete-documentation
315918 
315919  These functions have been made public as part of the design, but they are suggested for internal use
315920  or by particularly knowledgeable users for specialized tools or applications.
315921 
315922  \internal We could not make these private because they are required by user for special purposes. And
315923  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
315924 
315925  */
315926 
315927  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
315928  // overridden in every class by *generated* implementation
315930  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
315931  // MS: 06/28/02 container of names of variables or container indices
315932  // used used in the traversal to access AST successor nodes
315933  // overridden in every class by *generated* implementation
315936  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
315937 
315938  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
315939  // than all the vector copies. The implementation for these functions is generated for each class.
315941  virtual size_t get_numberOfTraversalSuccessors() override;
315943  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
315945  virtual size_t get_childIndex(SgNode *child) override;
315946 
315947 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
315948  // MS: 08/16/2002 method for generating RTI information
315950  virtual RTIReturnType roseRTI() override;
315951 #endif
315952  /* */
315953 
315954 
315955 
315956  /* name Deprecated Functions
315957  \brief Deprecated functions ... incomplete-documentation
315958 
315959  These functions have been deprecated from use.
315960  */
315961  /* */
315962 
315964  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
315965 
315966  // JJW (10/16/2008): Changed to a single function in Node.code, and put
315967  // getVariant() in #if 0 block to prevent confusing Doxygen
315968 #if 0
315969 
315970  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
315972  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
315973 #endif
315974  /* */
315975 
315976 
315977 
315978 
315979  public:
315980  /* name Traversal Support Functions
315981  \brief Traversal support functions ... incomplete-documentation
315982 
315983  These functions have been made public as part of the design, but they are suggested for internal use
315984  or by particularly knowledgable users for specialized tools or applications.
315985  */
315986  /* */
315987 
315988  // DQ (11/26/2005): Support for visitor pattern mechanims
315989  // (inferior to ROSE traversal mechanism, experimental).
315993 
315994  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
315996  virtual void accept (ROSE_VisitorPattern & visitor) override;
315997 
315998  // DQ (12/26/2005): Support for traversal based on the memory pool
316001  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
316002 
316005  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
316006 
316007  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
316008  // This traversal helps support internal tools that call static member functions.
316009  // note: this function operates on the memory pools.
316012  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
316013  /* */
316014 
316015 
316016  public:
316017  /* name Memory Allocation Functions
316018  \brief Memory allocations functions ... incomplete-documentation
316019 
316020  These functions have been made public as part of the design, but they are suggested for internal use
316021  or by particularly knowledgable users for specialized tools or applications.
316022  */
316023  /* */
316024 
316035  virtual bool isInMemoryPool() override;
316036 
316047  virtual void checkDataMemberPointersIfInMemoryPool() override;
316048 
316049  // DQ (4/30/2006): Modified to be a const function.
316064  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
316065 
316075  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
316076 
316088  virtual long getChildIndex( SgNode* childNode ) const override;
316089 
316090  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
316091  // comment here (changed to be a C style comment and not be a doxygen comment).
316092  /* \brief Constructor for use by AST File I/O Mechanism
316093 
316094  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
316095  which obtained via fast binary file I/O from disk.
316096  */
316097  // SgTypeTraitBuiltinOperator( SgTypeTraitBuiltinOperatorStorageClass& source );
316098 
316099 
316100 
316101 
316102 
316103  // JH (10/24/2005): methods added to support the ast file IO
316104  private:
316105 
316106  /* name AST Memory Allocation Support Functions
316107  \brief Memory allocations support....
316108 
316109  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
316110  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
316111  and support the AST File I/O Mechanism.
316112  */
316113  /* */
316114 
316115  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
316116  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
316117  that I use the same type everywhere, if any changes are made. THe second one declares the type
316118  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
316119  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
316120  a correspinding one in the AST_FILE_IO class!
316121  */
316122  // DQ (9/2/2015): This typedef is no longer used, we can't define the
316123  // comment here (changed to be a C style comment and not be a doxygen comment).
316124  /* \brief Typedef used for low level memory access.
316125  */
316126  // typedef unsigned char* TestType;
316127 
316128  // DQ (9/2/2015): This typedef is no longer used, we can't define the
316129  // comment here (changed to be a C style comment and not be a doxygen comment).
316130  /* \brief Typedef used to hold memory addresses as values.
316131  */
316132  // typedef unsigned long AddressType;
316133 
316134 
316135 
316136  // necessary, to have direct access to the p_freepointer and the private methods !
316138  friend class AST_FILE_IO;
316139 
316141  friend class SgTypeTraitBuiltinOperatorStorageClass;
316142 
316144  friend class AstSpecificDataManagingClass;
316145 
316147  friend class AstSpecificDataManagingClassStorageClass;
316148 
316149  public:
316151  SgTypeTraitBuiltinOperator( const SgTypeTraitBuiltinOperatorStorageClass& source );
316152 
316153  // private: // JJW hack
316154  /*
316155  name AST Memory Allocation Support Variables
316156  Memory allocations support variables
316157 
316158  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
316159  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
316160  and support the AST File I/O Mechanism.
316161  */
316162  /* */
316163 
316164  public:
316165 
316166  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
316167  // to current node (so that it will work cleanly with build functions to specify patterns).
316168  // virtual SgNode* addRegExpAttribute();
316175 
316176 // *** COMMON CODE SECTION ENDS HERE ***
316177 
316178 
316179 // End of memberFunctionString
316180 // Start of memberFunctionString
316181 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
316182 
316183  // the generated cast function
316184  // friend ROSE_DLL_API SgTypeTraitBuiltinOperator* isSgTypeTraitBuiltinOperator ( SgNode* s );
316185 
316186  typedef SgExpression base_node_type;
316187 
316188 
316189 // End of memberFunctionString
316190 // Start of memberFunctionString
316191 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
316192 
316193  SgType* get_type() const override;
316194 
316195 
316196 // End of memberFunctionString
316197 // Start of memberFunctionString
316198 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
316199 
316200  void post_construction_initialization() override;
316201 
316202 
316203 // End of memberFunctionString
316204 
316205  public:
316206  SgName get_name() const /* (getDataAccessFunctionPrototypeString) */;
316207  void set_name(SgName name) /* (getDataAccessFunctionPrototypeString) */;
316208 
316209  public:
316210  const SgNodePtrList& get_args() const;
316211  SgNodePtrList& get_args();
316212 
316213 
316214  public:
316215  virtual ~SgTypeTraitBuiltinOperator();
316216 
316217 
316218  public:
316219  SgTypeTraitBuiltinOperator(Sg_File_Info* startOfConstruct , SgName name = "");
316221 
316222  protected:
316223 // Start of memberFunctionString
316224 SgName p_name;
316225 
316226 // End of memberFunctionString
316227 // Start of memberFunctionString
316228 SgNodePtrList p_args;
316229 
316230 // End of memberFunctionString
316231 
316232 
316233 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
316234 
316235 
316236  };
316237 #endif
316238 
316239 // postdeclarations for SgTypeTraitBuiltinOperator
316240 
316241 /* #line 316242 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
316242 
316243 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
316244 
316245 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
316246 
316247 
316248 /* #line 316249 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
316249 
316250 
316251 
316252 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
316253 
316254 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
316255 // This code is automatically generated for each
316256 // terminal and non-terminal within the defined
316257 // grammar. There is a simple way to change the
316258 // code to fix bugs etc. See the ROSE README file
316259 // for directions.
316260 
316261 // tps: (02/22/2010): Adding DLL export requirements
316262 #include "rosedll.h"
316263 
316264 // predeclarations for SgCompoundLiteralExp
316265 
316266 /* #line 316267 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
316267 
316268 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
316269 
316270 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
316271 
316272 #if 1
316273 // Class Definition for SgCompoundLiteralExp
316274 class ROSE_DLL_API SgCompoundLiteralExp : public SgExpression
316275  {
316276  public:
316277 
316278 
316279 /* #line 316280 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
316280 
316281  virtual SgNode* copy ( SgCopyHelp& help) const override;
316282 // Start of memberFunctionString
316283 /* #line 347 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
316284 
316285 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
316286  virtual unsigned int cfgIndexForEnd() const override;
316287  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
316288  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
316289 #endif
316290 
316291  // get lvalue
316292  virtual bool isDefinable() const override;
316293  virtual bool isLValue() const override;
316294  virtual bool isChildUsedAsLValue(const SgExpression* child) const override; // INTERNAL Recursively call up the chain to answer the child
316295 
316296 
316297 // End of memberFunctionString
316298 // Start of memberFunctionString
316299 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
316300 
316301 // *** COMMON CODE SECTION BEGINS HERE ***
316302 
316303  public:
316304 
316305  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
316306  // and not required which is required to match the other aspects of the copy mechanism code generation.
316307  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
316308  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
316309  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
316310  // virtual SgNode* copy ( const SgCopyHelp & help) const;
316311 
316313  virtual std::string class_name() const override;
316314 
316316  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
316317 
316319  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
316320  // static const VariantT static_variant = V_SgCompoundLiteralExp;
316321  enum { static_variant = V_SgCompoundLiteralExp };
316322 
316323  /* the generated cast function */
316325  ROSE_DLL_API friend SgCompoundLiteralExp* isSgCompoundLiteralExp( SgNode * s );
316326 
316328  ROSE_DLL_API friend const SgCompoundLiteralExp* isSgCompoundLiteralExp( const SgNode * s );
316329 
316330  // ******************************************
316331  // * Memory Pool / New / Delete
316332  // ******************************************
316333 
316334  public:
316336  static const unsigned pool_size; //
316338  static std::vector<unsigned char *> pools; //
316340  static SgCompoundLiteralExp * next_node; //
316341 
316343  static unsigned long initializeStorageClassArray(SgCompoundLiteralExpStorageClass *); //
316344 
316346  static void clearMemoryPool(); //
316347  static void deleteMemoryPool(); //
316348 
316350  static void extendMemoryPoolForFileIO(); //
316351 
316353  static SgCompoundLiteralExp * getPointerFromGlobalIndex(unsigned long); //
316355  static SgCompoundLiteralExp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
316356 
316358  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
316360  static void resetValidFreepointers(); //
316362  static unsigned long getNumberOfLastValidPointer(); //
316363 
316364 
316365 #if defined(INLINE_FUNCTIONS)
316366 
316367  inline void *operator new (size_t size);
316368 #else
316369 
316370  void *operator new (size_t size);
316371 #endif
316372 
316373  void operator delete (void* pointer, size_t size);
316374 
316375  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
316376  void operator delete (void* pointer)
316377  {
316378  // This is the generated delete operator...
316379  SgCompoundLiteralExp::operator delete (pointer,sizeof(SgCompoundLiteralExp));
316380  }
316381 
316383  static size_t numberOfNodes();
316384 
316386  static size_t memoryUsage();
316387 
316388  // End of scope which started in IR nodes specific code
316389  /* */
316390 
316391  /* name Internal Functions
316392  \brief Internal functions ... incomplete-documentation
316393 
316394  These functions have been made public as part of the design, but they are suggested for internal use
316395  or by particularly knowledgeable users for specialized tools or applications.
316396 
316397  \internal We could not make these private because they are required by user for special purposes. And
316398  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
316399 
316400  */
316401 
316402  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
316403  // overridden in every class by *generated* implementation
316405  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
316406  // MS: 06/28/02 container of names of variables or container indices
316407  // used used in the traversal to access AST successor nodes
316408  // overridden in every class by *generated* implementation
316411  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
316412 
316413  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
316414  // than all the vector copies. The implementation for these functions is generated for each class.
316416  virtual size_t get_numberOfTraversalSuccessors() override;
316418  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
316420  virtual size_t get_childIndex(SgNode *child) override;
316421 
316422 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
316423  // MS: 08/16/2002 method for generating RTI information
316425  virtual RTIReturnType roseRTI() override;
316426 #endif
316427  /* */
316428 
316429 
316430 
316431  /* name Deprecated Functions
316432  \brief Deprecated functions ... incomplete-documentation
316433 
316434  These functions have been deprecated from use.
316435  */
316436  /* */
316437 
316439  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
316440 
316441  // JJW (10/16/2008): Changed to a single function in Node.code, and put
316442  // getVariant() in #if 0 block to prevent confusing Doxygen
316443 #if 0
316444 
316445  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
316447  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
316448 #endif
316449  /* */
316450 
316451 
316452 
316453 
316454  public:
316455  /* name Traversal Support Functions
316456  \brief Traversal support functions ... incomplete-documentation
316457 
316458  These functions have been made public as part of the design, but they are suggested for internal use
316459  or by particularly knowledgable users for specialized tools or applications.
316460  */
316461  /* */
316462 
316463  // DQ (11/26/2005): Support for visitor pattern mechanims
316464  // (inferior to ROSE traversal mechanism, experimental).
316468 
316469  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
316471  virtual void accept (ROSE_VisitorPattern & visitor) override;
316472 
316473  // DQ (12/26/2005): Support for traversal based on the memory pool
316476  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
316477 
316480  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
316481 
316482  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
316483  // This traversal helps support internal tools that call static member functions.
316484  // note: this function operates on the memory pools.
316487  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
316488  /* */
316489 
316490 
316491  public:
316492  /* name Memory Allocation Functions
316493  \brief Memory allocations functions ... incomplete-documentation
316494 
316495  These functions have been made public as part of the design, but they are suggested for internal use
316496  or by particularly knowledgable users for specialized tools or applications.
316497  */
316498  /* */
316499 
316510  virtual bool isInMemoryPool() override;
316511 
316522  virtual void checkDataMemberPointersIfInMemoryPool() override;
316523 
316524  // DQ (4/30/2006): Modified to be a const function.
316539  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
316540 
316550  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
316551 
316563  virtual long getChildIndex( SgNode* childNode ) const override;
316564 
316565  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
316566  // comment here (changed to be a C style comment and not be a doxygen comment).
316567  /* \brief Constructor for use by AST File I/O Mechanism
316568 
316569  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
316570  which obtained via fast binary file I/O from disk.
316571  */
316572  // SgCompoundLiteralExp( SgCompoundLiteralExpStorageClass& source );
316573 
316574 
316575 
316576 
316577 
316578  // JH (10/24/2005): methods added to support the ast file IO
316579  private:
316580 
316581  /* name AST Memory Allocation Support Functions
316582  \brief Memory allocations support....
316583 
316584  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
316585  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
316586  and support the AST File I/O Mechanism.
316587  */
316588  /* */
316589 
316590  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
316591  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
316592  that I use the same type everywhere, if any changes are made. THe second one declares the type
316593  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
316594  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
316595  a correspinding one in the AST_FILE_IO class!
316596  */
316597  // DQ (9/2/2015): This typedef is no longer used, we can't define the
316598  // comment here (changed to be a C style comment and not be a doxygen comment).
316599  /* \brief Typedef used for low level memory access.
316600  */
316601  // typedef unsigned char* TestType;
316602 
316603  // DQ (9/2/2015): This typedef is no longer used, we can't define the
316604  // comment here (changed to be a C style comment and not be a doxygen comment).
316605  /* \brief Typedef used to hold memory addresses as values.
316606  */
316607  // typedef unsigned long AddressType;
316608 
316609 
316610 
316611  // necessary, to have direct access to the p_freepointer and the private methods !
316613  friend class AST_FILE_IO;
316614 
316616  friend class SgCompoundLiteralExpStorageClass;
316617 
316619  friend class AstSpecificDataManagingClass;
316620 
316622  friend class AstSpecificDataManagingClassStorageClass;
316623 
316624  public:
316626  SgCompoundLiteralExp( const SgCompoundLiteralExpStorageClass& source );
316627 
316628  // private: // JJW hack
316629  /*
316630  name AST Memory Allocation Support Variables
316631  Memory allocations support variables
316632 
316633  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
316634  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
316635  and support the AST File I/O Mechanism.
316636  */
316637  /* */
316638 
316639  public:
316640 
316641  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
316642  // to current node (so that it will work cleanly with build functions to specify patterns).
316643  // virtual SgNode* addRegExpAttribute();
316650 
316651 // *** COMMON CODE SECTION ENDS HERE ***
316652 
316653 
316654 // End of memberFunctionString
316655 // Start of memberFunctionString
316656 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
316657 
316658  // the generated cast function
316659  // friend ROSE_DLL_API SgCompoundLiteralExp* isSgCompoundLiteralExp ( SgNode* s );
316660 
316661  typedef SgExpression base_node_type;
316662 
316663 
316664 // End of memberFunctionString
316665 // Start of memberFunctionString
316666 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
316667 
316668  SgType* get_type() const override;
316669 
316670 
316671 // End of memberFunctionString
316672 // Start of memberFunctionString
316673 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
316674 
316675  void post_construction_initialization() override;
316676 
316677 
316678 // End of memberFunctionString
316679 
316680  public:
316681  SgVariableSymbol* get_symbol() const;
316682  void set_symbol(SgVariableSymbol* symbol);
316683 
316684 
316685  public:
316686  virtual ~SgCompoundLiteralExp();
316687 
316688 
316689  public:
316690  SgCompoundLiteralExp(Sg_File_Info* startOfConstruct , SgVariableSymbol* symbol = NULL);
316692 
316693  protected:
316694 // Start of memberFunctionString
316695 SgVariableSymbol* p_symbol;
316696 
316697 // End of memberFunctionString
316698 
316699 
316700 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
316701 
316702 
316703  };
316704 #endif
316705 
316706 // postdeclarations for SgCompoundLiteralExp
316707 
316708 /* #line 316709 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
316709 
316710 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
316711 
316712 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
316713 
316714 
316715 /* #line 316716 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
316716 
316717 
316718 
316719 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
316720 
316721 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
316722 // This code is automatically generated for each
316723 // terminal and non-terminal within the defined
316724 // grammar. There is a simple way to change the
316725 // code to fix bugs etc. See the ROSE README file
316726 // for directions.
316727 
316728 // tps: (02/22/2010): Adding DLL export requirements
316729 #include "rosedll.h"
316730 
316731 // predeclarations for SgTypeExpression
316732 
316733 /* #line 316734 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
316734 
316735 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
316736 
316737 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
316738 
316739 #if 1
316740 // Class Definition for SgTypeExpression
316741 class ROSE_DLL_API SgTypeExpression : public SgExpression
316742  {
316743  public:
316744 
316745 
316746 /* #line 316747 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
316747 
316748  virtual SgNode* copy ( SgCopyHelp& help) const override;
316749 // Start of memberFunctionString
316750 /* #line 1899 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
316751 
316752 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
316753  virtual unsigned int cfgIndexForEnd() const override;
316754  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
316755  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
316756 #endif
316757 
316758 
316759 
316760 // End of memberFunctionString
316761 // Start of memberFunctionString
316762 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
316763 
316764 // *** COMMON CODE SECTION BEGINS HERE ***
316765 
316766  public:
316767 
316768  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
316769  // and not required which is required to match the other aspects of the copy mechanism code generation.
316770  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
316771  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
316772  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
316773  // virtual SgNode* copy ( const SgCopyHelp & help) const;
316774 
316776  virtual std::string class_name() const override;
316777 
316779  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
316780 
316782  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
316783  // static const VariantT static_variant = V_SgTypeExpression;
316784  enum { static_variant = V_SgTypeExpression };
316785 
316786  /* the generated cast function */
316788  ROSE_DLL_API friend SgTypeExpression* isSgTypeExpression( SgNode * s );
316789 
316791  ROSE_DLL_API friend const SgTypeExpression* isSgTypeExpression( const SgNode * s );
316792 
316793  // ******************************************
316794  // * Memory Pool / New / Delete
316795  // ******************************************
316796 
316797  public:
316799  static const unsigned pool_size; //
316801  static std::vector<unsigned char *> pools; //
316803  static SgTypeExpression * next_node; //
316804 
316806  static unsigned long initializeStorageClassArray(SgTypeExpressionStorageClass *); //
316807 
316809  static void clearMemoryPool(); //
316810  static void deleteMemoryPool(); //
316811 
316813  static void extendMemoryPoolForFileIO(); //
316814 
316816  static SgTypeExpression * getPointerFromGlobalIndex(unsigned long); //
316818  static SgTypeExpression * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
316819 
316821  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
316823  static void resetValidFreepointers(); //
316825  static unsigned long getNumberOfLastValidPointer(); //
316826 
316827 
316828 #if defined(INLINE_FUNCTIONS)
316829 
316830  inline void *operator new (size_t size);
316831 #else
316832 
316833  void *operator new (size_t size);
316834 #endif
316835 
316836  void operator delete (void* pointer, size_t size);
316837 
316838  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
316839  void operator delete (void* pointer)
316840  {
316841  // This is the generated delete operator...
316842  SgTypeExpression::operator delete (pointer,sizeof(SgTypeExpression));
316843  }
316844 
316846  static size_t numberOfNodes();
316847 
316849  static size_t memoryUsage();
316850 
316851  // End of scope which started in IR nodes specific code
316852  /* */
316853 
316854  /* name Internal Functions
316855  \brief Internal functions ... incomplete-documentation
316856 
316857  These functions have been made public as part of the design, but they are suggested for internal use
316858  or by particularly knowledgeable users for specialized tools or applications.
316859 
316860  \internal We could not make these private because they are required by user for special purposes. And
316861  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
316862 
316863  */
316864 
316865  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
316866  // overridden in every class by *generated* implementation
316868  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
316869  // MS: 06/28/02 container of names of variables or container indices
316870  // used used in the traversal to access AST successor nodes
316871  // overridden in every class by *generated* implementation
316874  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
316875 
316876  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
316877  // than all the vector copies. The implementation for these functions is generated for each class.
316879  virtual size_t get_numberOfTraversalSuccessors() override;
316881  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
316883  virtual size_t get_childIndex(SgNode *child) override;
316884 
316885 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
316886  // MS: 08/16/2002 method for generating RTI information
316888  virtual RTIReturnType roseRTI() override;
316889 #endif
316890  /* */
316891 
316892 
316893 
316894  /* name Deprecated Functions
316895  \brief Deprecated functions ... incomplete-documentation
316896 
316897  These functions have been deprecated from use.
316898  */
316899  /* */
316900 
316902  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
316903 
316904  // JJW (10/16/2008): Changed to a single function in Node.code, and put
316905  // getVariant() in #if 0 block to prevent confusing Doxygen
316906 #if 0
316907 
316908  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
316910  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
316911 #endif
316912  /* */
316913 
316914 
316915 
316916 
316917  public:
316918  /* name Traversal Support Functions
316919  \brief Traversal support functions ... incomplete-documentation
316920 
316921  These functions have been made public as part of the design, but they are suggested for internal use
316922  or by particularly knowledgable users for specialized tools or applications.
316923  */
316924  /* */
316925 
316926  // DQ (11/26/2005): Support for visitor pattern mechanims
316927  // (inferior to ROSE traversal mechanism, experimental).
316931 
316932  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
316934  virtual void accept (ROSE_VisitorPattern & visitor) override;
316935 
316936  // DQ (12/26/2005): Support for traversal based on the memory pool
316939  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
316940 
316943  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
316944 
316945  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
316946  // This traversal helps support internal tools that call static member functions.
316947  // note: this function operates on the memory pools.
316950  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
316951  /* */
316952 
316953 
316954  public:
316955  /* name Memory Allocation Functions
316956  \brief Memory allocations functions ... incomplete-documentation
316957 
316958  These functions have been made public as part of the design, but they are suggested for internal use
316959  or by particularly knowledgable users for specialized tools or applications.
316960  */
316961  /* */
316962 
316973  virtual bool isInMemoryPool() override;
316974 
316985  virtual void checkDataMemberPointersIfInMemoryPool() override;
316986 
316987  // DQ (4/30/2006): Modified to be a const function.
317002  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
317003 
317013  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
317014 
317026  virtual long getChildIndex( SgNode* childNode ) const override;
317027 
317028  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
317029  // comment here (changed to be a C style comment and not be a doxygen comment).
317030  /* \brief Constructor for use by AST File I/O Mechanism
317031 
317032  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
317033  which obtained via fast binary file I/O from disk.
317034  */
317035  // SgTypeExpression( SgTypeExpressionStorageClass& source );
317036 
317037 
317038 
317039 
317040 
317041  // JH (10/24/2005): methods added to support the ast file IO
317042  private:
317043 
317044  /* name AST Memory Allocation Support Functions
317045  \brief Memory allocations support....
317046 
317047  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
317048  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
317049  and support the AST File I/O Mechanism.
317050  */
317051  /* */
317052 
317053  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
317054  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
317055  that I use the same type everywhere, if any changes are made. THe second one declares the type
317056  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
317057  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
317058  a correspinding one in the AST_FILE_IO class!
317059  */
317060  // DQ (9/2/2015): This typedef is no longer used, we can't define the
317061  // comment here (changed to be a C style comment and not be a doxygen comment).
317062  /* \brief Typedef used for low level memory access.
317063  */
317064  // typedef unsigned char* TestType;
317065 
317066  // DQ (9/2/2015): This typedef is no longer used, we can't define the
317067  // comment here (changed to be a C style comment and not be a doxygen comment).
317068  /* \brief Typedef used to hold memory addresses as values.
317069  */
317070  // typedef unsigned long AddressType;
317071 
317072 
317073 
317074  // necessary, to have direct access to the p_freepointer and the private methods !
317076  friend class AST_FILE_IO;
317077 
317079  friend class SgTypeExpressionStorageClass;
317080 
317082  friend class AstSpecificDataManagingClass;
317083 
317085  friend class AstSpecificDataManagingClassStorageClass;
317086 
317087  public:
317089  SgTypeExpression( const SgTypeExpressionStorageClass& source );
317090 
317091  // private: // JJW hack
317092  /*
317093  name AST Memory Allocation Support Variables
317094  Memory allocations support variables
317095 
317096  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
317097  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
317098  and support the AST File I/O Mechanism.
317099  */
317100  /* */
317101 
317102  public:
317103 
317104  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
317105  // to current node (so that it will work cleanly with build functions to specify patterns).
317106  // virtual SgNode* addRegExpAttribute();
317113 
317114 // *** COMMON CODE SECTION ENDS HERE ***
317115 
317116 
317117 // End of memberFunctionString
317118 // Start of memberFunctionString
317119 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
317120 
317121  // the generated cast function
317122  // friend ROSE_DLL_API SgTypeExpression* isSgTypeExpression ( SgNode* s );
317123 
317124  typedef SgExpression base_node_type;
317125 
317126 
317127 // End of memberFunctionString
317128 // Start of memberFunctionString
317129 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
317130 
317131  void post_construction_initialization() override;
317132 
317133 
317134 // End of memberFunctionString
317135 
317136  public:
317137  SgType* get_type() const override /* (getDataAccessFunctionPrototypeString) */;
317138  void set_type(SgType* type) /* (getDataAccessFunctionPrototypeString) */;
317139 
317140 
317141  public:
317142  virtual ~SgTypeExpression();
317143 
317144 
317145  public:
317146  SgTypeExpression(Sg_File_Info* startOfConstruct , SgType* type = NULL);
317147  SgTypeExpression(SgType* type);
317148 
317149  protected:
317150 // Start of memberFunctionString
317151 SgType* p_type;
317152 
317153 // End of memberFunctionString
317154 
317155 
317156 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
317157 
317158 
317159  };
317160 #endif
317161 
317162 // postdeclarations for SgTypeExpression
317163 
317164 /* #line 317165 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
317165 
317166 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
317167 
317168 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
317169 
317170 
317171 /* #line 317172 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
317172 
317173 
317174 
317175 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
317176 
317177 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
317178 // This code is automatically generated for each
317179 // terminal and non-terminal within the defined
317180 // grammar. There is a simple way to change the
317181 // code to fix bugs etc. See the ROSE README file
317182 // for directions.
317183 
317184 // tps: (02/22/2010): Adding DLL export requirements
317185 #include "rosedll.h"
317186 
317187 // predeclarations for SgClassExp
317188 
317189 /* #line 317190 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
317190 
317191 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
317192 
317193 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
317194 
317195 #if 1
317196 // Class Definition for SgClassExp
317197 class ROSE_DLL_API SgClassExp : public SgExpression
317198  {
317199  public:
317200 
317201 
317202 /* #line 317203 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
317203 
317204  virtual SgNode* copy ( SgCopyHelp& help) const override;
317205 // Start of memberFunctionString
317206 /* #line 1361 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
317207 
317208 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
317209  virtual unsigned int cfgIndexForEnd() const override;
317210  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
317211  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
317212 #endif
317213 
317214 
317215 
317216 // End of memberFunctionString
317217 // Start of memberFunctionString
317218 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
317219 
317220 // *** COMMON CODE SECTION BEGINS HERE ***
317221 
317222  public:
317223 
317224  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
317225  // and not required which is required to match the other aspects of the copy mechanism code generation.
317226  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
317227  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
317228  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
317229  // virtual SgNode* copy ( const SgCopyHelp & help) const;
317230 
317232  virtual std::string class_name() const override;
317233 
317235  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
317236 
317238  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
317239  // static const VariantT static_variant = V_SgClassExp;
317240  enum { static_variant = V_SgClassExp };
317241 
317242  /* the generated cast function */
317244  ROSE_DLL_API friend SgClassExp* isSgClassExp( SgNode * s );
317245 
317247  ROSE_DLL_API friend const SgClassExp* isSgClassExp( const SgNode * s );
317248 
317249  // ******************************************
317250  // * Memory Pool / New / Delete
317251  // ******************************************
317252 
317253  public:
317255  static const unsigned pool_size; //
317257  static std::vector<unsigned char *> pools; //
317259  static SgClassExp * next_node; //
317260 
317262  static unsigned long initializeStorageClassArray(SgClassExpStorageClass *); //
317263 
317265  static void clearMemoryPool(); //
317266  static void deleteMemoryPool(); //
317267 
317269  static void extendMemoryPoolForFileIO(); //
317270 
317272  static SgClassExp * getPointerFromGlobalIndex(unsigned long); //
317274  static SgClassExp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
317275 
317277  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
317279  static void resetValidFreepointers(); //
317281  static unsigned long getNumberOfLastValidPointer(); //
317282 
317283 
317284 #if defined(INLINE_FUNCTIONS)
317285 
317286  inline void *operator new (size_t size);
317287 #else
317288 
317289  void *operator new (size_t size);
317290 #endif
317291 
317292  void operator delete (void* pointer, size_t size);
317293 
317294  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
317295  void operator delete (void* pointer)
317296  {
317297  // This is the generated delete operator...
317298  SgClassExp::operator delete (pointer,sizeof(SgClassExp));
317299  }
317300 
317302  static size_t numberOfNodes();
317303 
317305  static size_t memoryUsage();
317306 
317307  // End of scope which started in IR nodes specific code
317308  /* */
317309 
317310  /* name Internal Functions
317311  \brief Internal functions ... incomplete-documentation
317312 
317313  These functions have been made public as part of the design, but they are suggested for internal use
317314  or by particularly knowledgeable users for specialized tools or applications.
317315 
317316  \internal We could not make these private because they are required by user for special purposes. And
317317  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
317318 
317319  */
317320 
317321  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
317322  // overridden in every class by *generated* implementation
317324  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
317325  // MS: 06/28/02 container of names of variables or container indices
317326  // used used in the traversal to access AST successor nodes
317327  // overridden in every class by *generated* implementation
317330  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
317331 
317332  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
317333  // than all the vector copies. The implementation for these functions is generated for each class.
317335  virtual size_t get_numberOfTraversalSuccessors() override;
317337  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
317339  virtual size_t get_childIndex(SgNode *child) override;
317340 
317341 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
317342  // MS: 08/16/2002 method for generating RTI information
317344  virtual RTIReturnType roseRTI() override;
317345 #endif
317346  /* */
317347 
317348 
317349 
317350  /* name Deprecated Functions
317351  \brief Deprecated functions ... incomplete-documentation
317352 
317353  These functions have been deprecated from use.
317354  */
317355  /* */
317356 
317358  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
317359 
317360  // JJW (10/16/2008): Changed to a single function in Node.code, and put
317361  // getVariant() in #if 0 block to prevent confusing Doxygen
317362 #if 0
317363 
317364  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
317366  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
317367 #endif
317368  /* */
317369 
317370 
317371 
317372 
317373  public:
317374  /* name Traversal Support Functions
317375  \brief Traversal support functions ... incomplete-documentation
317376 
317377  These functions have been made public as part of the design, but they are suggested for internal use
317378  or by particularly knowledgable users for specialized tools or applications.
317379  */
317380  /* */
317381 
317382  // DQ (11/26/2005): Support for visitor pattern mechanims
317383  // (inferior to ROSE traversal mechanism, experimental).
317387 
317388  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
317390  virtual void accept (ROSE_VisitorPattern & visitor) override;
317391 
317392  // DQ (12/26/2005): Support for traversal based on the memory pool
317395  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
317396 
317399  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
317400 
317401  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
317402  // This traversal helps support internal tools that call static member functions.
317403  // note: this function operates on the memory pools.
317406  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
317407  /* */
317408 
317409 
317410  public:
317411  /* name Memory Allocation Functions
317412  \brief Memory allocations functions ... incomplete-documentation
317413 
317414  These functions have been made public as part of the design, but they are suggested for internal use
317415  or by particularly knowledgable users for specialized tools or applications.
317416  */
317417  /* */
317418 
317429  virtual bool isInMemoryPool() override;
317430 
317441  virtual void checkDataMemberPointersIfInMemoryPool() override;
317442 
317443  // DQ (4/30/2006): Modified to be a const function.
317458  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
317459 
317469  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
317470 
317482  virtual long getChildIndex( SgNode* childNode ) const override;
317483 
317484  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
317485  // comment here (changed to be a C style comment and not be a doxygen comment).
317486  /* \brief Constructor for use by AST File I/O Mechanism
317487 
317488  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
317489  which obtained via fast binary file I/O from disk.
317490  */
317491  // SgClassExp( SgClassExpStorageClass& source );
317492 
317493 
317494 
317495 
317496 
317497  // JH (10/24/2005): methods added to support the ast file IO
317498  private:
317499 
317500  /* name AST Memory Allocation Support Functions
317501  \brief Memory allocations support....
317502 
317503  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
317504  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
317505  and support the AST File I/O Mechanism.
317506  */
317507  /* */
317508 
317509  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
317510  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
317511  that I use the same type everywhere, if any changes are made. THe second one declares the type
317512  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
317513  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
317514  a correspinding one in the AST_FILE_IO class!
317515  */
317516  // DQ (9/2/2015): This typedef is no longer used, we can't define the
317517  // comment here (changed to be a C style comment and not be a doxygen comment).
317518  /* \brief Typedef used for low level memory access.
317519  */
317520  // typedef unsigned char* TestType;
317521 
317522  // DQ (9/2/2015): This typedef is no longer used, we can't define the
317523  // comment here (changed to be a C style comment and not be a doxygen comment).
317524  /* \brief Typedef used to hold memory addresses as values.
317525  */
317526  // typedef unsigned long AddressType;
317527 
317528 
317529 
317530  // necessary, to have direct access to the p_freepointer and the private methods !
317532  friend class AST_FILE_IO;
317533 
317535  friend class SgClassExpStorageClass;
317536 
317538  friend class AstSpecificDataManagingClass;
317539 
317541  friend class AstSpecificDataManagingClassStorageClass;
317542 
317543  public:
317545  SgClassExp( const SgClassExpStorageClass& source );
317546 
317547  // private: // JJW hack
317548  /*
317549  name AST Memory Allocation Support Variables
317550  Memory allocations support variables
317551 
317552  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
317553  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
317554  and support the AST File I/O Mechanism.
317555  */
317556  /* */
317557 
317558  public:
317559 
317560  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
317561  // to current node (so that it will work cleanly with build functions to specify patterns).
317562  // virtual SgNode* addRegExpAttribute();
317568  SgClassExp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
317569 
317570 // *** COMMON CODE SECTION ENDS HERE ***
317571 
317572 
317573 // End of memberFunctionString
317574 // Start of memberFunctionString
317575 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
317576 
317577  // the generated cast function
317578  // friend ROSE_DLL_API SgClassExp* isSgClassExp ( SgNode* s );
317579 
317580  typedef SgExpression base_node_type;
317581 
317582 
317583 // End of memberFunctionString
317584 // Start of memberFunctionString
317585 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
317586 
317587  SgType* get_type() const override;
317588 
317589 
317590 // End of memberFunctionString
317591 // Start of memberFunctionString
317592 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
317593 
317594  void post_construction_initialization() override;
317595 
317596 
317597 // End of memberFunctionString
317598 
317599  public:
317600  SgClassSymbol* get_class_symbol() const;
317601  void set_class_symbol(SgClassSymbol* class_symbol);
317602 
317603  public:
317604  int get_pobj_class() const;
317605  void set_pobj_class(int pobj_class);
317606 
317607 
317608  public:
317609  virtual ~SgClassExp();
317610 
317611 
317612  public:
317613  SgClassExp(Sg_File_Info* startOfConstruct , SgClassSymbol* class_symbol = NULL, int pobj_class = 0);
317614  SgClassExp(SgClassSymbol* class_symbol, int pobj_class);
317615 
317616  protected:
317617 // Start of memberFunctionString
317618 SgClassSymbol* p_class_symbol;
317619 
317620 // End of memberFunctionString
317621 // Start of memberFunctionString
317622 int p_pobj_class;
317623 
317624 // End of memberFunctionString
317625 
317626 
317627 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
317628 
317629 
317630  };
317631 #endif
317632 
317633 // postdeclarations for SgClassExp
317634 
317635 /* #line 317636 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
317636 
317637 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
317638 
317639 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
317640 
317641 
317642 /* #line 317643 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
317643 
317644 
317645 
317646 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
317647 
317648 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
317649 // This code is automatically generated for each
317650 // terminal and non-terminal within the defined
317651 // grammar. There is a simple way to change the
317652 // code to fix bugs etc. See the ROSE README file
317653 // for directions.
317654 
317655 // tps: (02/22/2010): Adding DLL export requirements
317656 #include "rosedll.h"
317657 
317658 // predeclarations for SgFunctionParameterRefExp
317659 
317660 /* #line 317661 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
317661 
317662 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
317663 
317664 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
317665 
317666 #if 1
317667 // Class Definition for SgFunctionParameterRefExp
317668 class ROSE_DLL_API SgFunctionParameterRefExp : public SgExpression
317669  {
317670  public:
317671 
317672 
317673 /* #line 317674 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
317674 
317675  virtual SgNode* copy ( SgCopyHelp& help) const override;
317676 // Start of memberFunctionString
317677 /* #line 1909 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
317678 
317679 
317680  // DQ (8/11/2014): Added support for C++11 decltype used in new function return syntax.
317681 #if 0
317682  virtual unsigned int cfgIndexForEnd() const override;
317683  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
317684  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
317685 #endif
317686  // SgType* get_type() const;
317687 
317688 
317689 
317690 // End of memberFunctionString
317691 // Start of memberFunctionString
317692 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
317693 
317694 // *** COMMON CODE SECTION BEGINS HERE ***
317695 
317696  public:
317697 
317698  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
317699  // and not required which is required to match the other aspects of the copy mechanism code generation.
317700  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
317701  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
317702  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
317703  // virtual SgNode* copy ( const SgCopyHelp & help) const;
317704 
317706  virtual std::string class_name() const override;
317707 
317709  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
317710 
317712  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
317713  // static const VariantT static_variant = V_SgFunctionParameterRefExp;
317714  enum { static_variant = V_SgFunctionParameterRefExp };
317715 
317716  /* the generated cast function */
317718  ROSE_DLL_API friend SgFunctionParameterRefExp* isSgFunctionParameterRefExp( SgNode * s );
317719 
317721  ROSE_DLL_API friend const SgFunctionParameterRefExp* isSgFunctionParameterRefExp( const SgNode * s );
317722 
317723  // ******************************************
317724  // * Memory Pool / New / Delete
317725  // ******************************************
317726 
317727  public:
317729  static const unsigned pool_size; //
317731  static std::vector<unsigned char *> pools; //
317733  static SgFunctionParameterRefExp * next_node; //
317734 
317736  static unsigned long initializeStorageClassArray(SgFunctionParameterRefExpStorageClass *); //
317737 
317739  static void clearMemoryPool(); //
317740  static void deleteMemoryPool(); //
317741 
317743  static void extendMemoryPoolForFileIO(); //
317744 
317746  static SgFunctionParameterRefExp * getPointerFromGlobalIndex(unsigned long); //
317748  static SgFunctionParameterRefExp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
317749 
317751  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
317753  static void resetValidFreepointers(); //
317755  static unsigned long getNumberOfLastValidPointer(); //
317756 
317757 
317758 #if defined(INLINE_FUNCTIONS)
317759 
317760  inline void *operator new (size_t size);
317761 #else
317762 
317763  void *operator new (size_t size);
317764 #endif
317765 
317766  void operator delete (void* pointer, size_t size);
317767 
317768  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
317769  void operator delete (void* pointer)
317770  {
317771  // This is the generated delete operator...
317772  SgFunctionParameterRefExp::operator delete (pointer,sizeof(SgFunctionParameterRefExp));
317773  }
317774 
317776  static size_t numberOfNodes();
317777 
317779  static size_t memoryUsage();
317780 
317781  // End of scope which started in IR nodes specific code
317782  /* */
317783 
317784  /* name Internal Functions
317785  \brief Internal functions ... incomplete-documentation
317786 
317787  These functions have been made public as part of the design, but they are suggested for internal use
317788  or by particularly knowledgeable users for specialized tools or applications.
317789 
317790  \internal We could not make these private because they are required by user for special purposes. And
317791  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
317792 
317793  */
317794 
317795  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
317796  // overridden in every class by *generated* implementation
317798  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
317799  // MS: 06/28/02 container of names of variables or container indices
317800  // used used in the traversal to access AST successor nodes
317801  // overridden in every class by *generated* implementation
317804  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
317805 
317806  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
317807  // than all the vector copies. The implementation for these functions is generated for each class.
317809  virtual size_t get_numberOfTraversalSuccessors() override;
317811  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
317813  virtual size_t get_childIndex(SgNode *child) override;
317814 
317815 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
317816  // MS: 08/16/2002 method for generating RTI information
317818  virtual RTIReturnType roseRTI() override;
317819 #endif
317820  /* */
317821 
317822 
317823 
317824  /* name Deprecated Functions
317825  \brief Deprecated functions ... incomplete-documentation
317826 
317827  These functions have been deprecated from use.
317828  */
317829  /* */
317830 
317832  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
317833 
317834  // JJW (10/16/2008): Changed to a single function in Node.code, and put
317835  // getVariant() in #if 0 block to prevent confusing Doxygen
317836 #if 0
317837 
317838  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
317840  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
317841 #endif
317842  /* */
317843 
317844 
317845 
317846 
317847  public:
317848  /* name Traversal Support Functions
317849  \brief Traversal support functions ... incomplete-documentation
317850 
317851  These functions have been made public as part of the design, but they are suggested for internal use
317852  or by particularly knowledgable users for specialized tools or applications.
317853  */
317854  /* */
317855 
317856  // DQ (11/26/2005): Support for visitor pattern mechanims
317857  // (inferior to ROSE traversal mechanism, experimental).
317861 
317862  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
317864  virtual void accept (ROSE_VisitorPattern & visitor) override;
317865 
317866  // DQ (12/26/2005): Support for traversal based on the memory pool
317869  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
317870 
317873  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
317874 
317875  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
317876  // This traversal helps support internal tools that call static member functions.
317877  // note: this function operates on the memory pools.
317880  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
317881  /* */
317882 
317883 
317884  public:
317885  /* name Memory Allocation Functions
317886  \brief Memory allocations functions ... incomplete-documentation
317887 
317888  These functions have been made public as part of the design, but they are suggested for internal use
317889  or by particularly knowledgable users for specialized tools or applications.
317890  */
317891  /* */
317892 
317903  virtual bool isInMemoryPool() override;
317904 
317915  virtual void checkDataMemberPointersIfInMemoryPool() override;
317916 
317917  // DQ (4/30/2006): Modified to be a const function.
317932  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
317933 
317943  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
317944 
317956  virtual long getChildIndex( SgNode* childNode ) const override;
317957 
317958  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
317959  // comment here (changed to be a C style comment and not be a doxygen comment).
317960  /* \brief Constructor for use by AST File I/O Mechanism
317961 
317962  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
317963  which obtained via fast binary file I/O from disk.
317964  */
317965  // SgFunctionParameterRefExp( SgFunctionParameterRefExpStorageClass& source );
317966 
317967 
317968 
317969 
317970 
317971  // JH (10/24/2005): methods added to support the ast file IO
317972  private:
317973 
317974  /* name AST Memory Allocation Support Functions
317975  \brief Memory allocations support....
317976 
317977  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
317978  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
317979  and support the AST File I/O Mechanism.
317980  */
317981  /* */
317982 
317983  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
317984  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
317985  that I use the same type everywhere, if any changes are made. THe second one declares the type
317986  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
317987  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
317988  a correspinding one in the AST_FILE_IO class!
317989  */
317990  // DQ (9/2/2015): This typedef is no longer used, we can't define the
317991  // comment here (changed to be a C style comment and not be a doxygen comment).
317992  /* \brief Typedef used for low level memory access.
317993  */
317994  // typedef unsigned char* TestType;
317995 
317996  // DQ (9/2/2015): This typedef is no longer used, we can't define the
317997  // comment here (changed to be a C style comment and not be a doxygen comment).
317998  /* \brief Typedef used to hold memory addresses as values.
317999  */
318000  // typedef unsigned long AddressType;
318001 
318002 
318003 
318004  // necessary, to have direct access to the p_freepointer and the private methods !
318006  friend class AST_FILE_IO;
318007 
318009  friend class SgFunctionParameterRefExpStorageClass;
318010 
318012  friend class AstSpecificDataManagingClass;
318013 
318015  friend class AstSpecificDataManagingClassStorageClass;
318016 
318017  public:
318019  SgFunctionParameterRefExp( const SgFunctionParameterRefExpStorageClass& source );
318020 
318021  // private: // JJW hack
318022  /*
318023  name AST Memory Allocation Support Variables
318024  Memory allocations support variables
318025 
318026  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
318027  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
318028  and support the AST File I/O Mechanism.
318029  */
318030  /* */
318031 
318032  public:
318033 
318034  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
318035  // to current node (so that it will work cleanly with build functions to specify patterns).
318036  // virtual SgNode* addRegExpAttribute();
318043 
318044 // *** COMMON CODE SECTION ENDS HERE ***
318045 
318046 
318047 // End of memberFunctionString
318048 // Start of memberFunctionString
318049 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
318050 
318051  // the generated cast function
318052  // friend ROSE_DLL_API SgFunctionParameterRefExp* isSgFunctionParameterRefExp ( SgNode* s );
318053 
318054  typedef SgExpression base_node_type;
318055 
318056 
318057 // End of memberFunctionString
318058 // Start of memberFunctionString
318059 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
318060 
318061  SgType* get_type() const override;
318062 
318063 
318064 // End of memberFunctionString
318065 // Start of memberFunctionString
318066 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
318067 
318068  void post_construction_initialization() override;
318069 
318070 
318071 // End of memberFunctionString
318072 
318073  public:
318074  int get_parameter_number() const;
318075  void set_parameter_number(int parameter_number);
318076 
318077  public:
318078  int get_parameter_levels_up() const;
318079  void set_parameter_levels_up(int parameter_levels_up);
318080 
318081  public:
318082  SgExpression* get_parameter_expression() const;
318083  void set_parameter_expression(SgExpression* parameter_expression);
318084 
318085  public:
318086  SgType* get_parameter_type() const;
318087  void set_parameter_type(SgType* parameter_type);
318088 
318089 
318090  public:
318091  virtual ~SgFunctionParameterRefExp();
318092 
318093 
318094  public:
318095  SgFunctionParameterRefExp(Sg_File_Info* startOfConstruct , int parameter_number = -1, int parameter_levels_up = -1);
318096  SgFunctionParameterRefExp(int parameter_number, int parameter_levels_up);
318097 
318098  protected:
318099 // Start of memberFunctionString
318100 int p_parameter_number;
318101 
318102 // End of memberFunctionString
318103 // Start of memberFunctionString
318104 int p_parameter_levels_up;
318105 
318106 // End of memberFunctionString
318107 // Start of memberFunctionString
318108 SgExpression* p_parameter_expression;
318109 
318110 // End of memberFunctionString
318111 // Start of memberFunctionString
318112 SgType* p_parameter_type;
318113 
318114 // End of memberFunctionString
318115 
318116 
318117 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
318118 
318119 
318120  };
318121 #endif
318122 
318123 // postdeclarations for SgFunctionParameterRefExp
318124 
318125 /* #line 318126 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
318126 
318127 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
318128 
318129 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
318130 
318131 
318132 /* #line 318133 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
318133 
318134 
318135 
318136 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
318137 
318138 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
318139 // This code is automatically generated for each
318140 // terminal and non-terminal within the defined
318141 // grammar. There is a simple way to change the
318142 // code to fix bugs etc. See the ROSE README file
318143 // for directions.
318144 
318145 // tps: (02/22/2010): Adding DLL export requirements
318146 #include "rosedll.h"
318147 
318148 // predeclarations for SgLambdaExp
318149 
318150 /* #line 318151 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
318151 
318152 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
318153 
318154 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
318155 
318156 #if 1
318157 // Class Definition for SgLambdaExp
318158 class ROSE_DLL_API SgLambdaExp : public SgExpression
318159  {
318160  public:
318161 
318162 
318163 /* #line 318164 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
318164 
318165  virtual SgNode* copy ( SgCopyHelp& help) const override;
318166 // Start of memberFunctionString
318167 /* #line 387 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
318168 
318169 
318170 
318171 // End of memberFunctionString
318172 // Start of memberFunctionString
318173 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
318174 
318175 // *** COMMON CODE SECTION BEGINS HERE ***
318176 
318177  public:
318178 
318179  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
318180  // and not required which is required to match the other aspects of the copy mechanism code generation.
318181  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
318182  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
318183  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
318184  // virtual SgNode* copy ( const SgCopyHelp & help) const;
318185 
318187  virtual std::string class_name() const override;
318188 
318190  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
318191 
318193  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
318194  // static const VariantT static_variant = V_SgLambdaExp;
318195  enum { static_variant = V_SgLambdaExp };
318196 
318197  /* the generated cast function */
318199  ROSE_DLL_API friend SgLambdaExp* isSgLambdaExp( SgNode * s );
318200 
318202  ROSE_DLL_API friend const SgLambdaExp* isSgLambdaExp( const SgNode * s );
318203 
318204  // ******************************************
318205  // * Memory Pool / New / Delete
318206  // ******************************************
318207 
318208  public:
318210  static const unsigned pool_size; //
318212  static std::vector<unsigned char *> pools; //
318214  static SgLambdaExp * next_node; //
318215 
318217  static unsigned long initializeStorageClassArray(SgLambdaExpStorageClass *); //
318218 
318220  static void clearMemoryPool(); //
318221  static void deleteMemoryPool(); //
318222 
318224  static void extendMemoryPoolForFileIO(); //
318225 
318227  static SgLambdaExp * getPointerFromGlobalIndex(unsigned long); //
318229  static SgLambdaExp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
318230 
318232  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
318234  static void resetValidFreepointers(); //
318236  static unsigned long getNumberOfLastValidPointer(); //
318237 
318238 
318239 #if defined(INLINE_FUNCTIONS)
318240 
318241  inline void *operator new (size_t size);
318242 #else
318243 
318244  void *operator new (size_t size);
318245 #endif
318246 
318247  void operator delete (void* pointer, size_t size);
318248 
318249  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
318250  void operator delete (void* pointer)
318251  {
318252  // This is the generated delete operator...
318253  SgLambdaExp::operator delete (pointer,sizeof(SgLambdaExp));
318254  }
318255 
318257  static size_t numberOfNodes();
318258 
318260  static size_t memoryUsage();
318261 
318262  // End of scope which started in IR nodes specific code
318263  /* */
318264 
318265  /* name Internal Functions
318266  \brief Internal functions ... incomplete-documentation
318267 
318268  These functions have been made public as part of the design, but they are suggested for internal use
318269  or by particularly knowledgeable users for specialized tools or applications.
318270 
318271  \internal We could not make these private because they are required by user for special purposes. And
318272  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
318273 
318274  */
318275 
318276  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
318277  // overridden in every class by *generated* implementation
318279  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
318280  // MS: 06/28/02 container of names of variables or container indices
318281  // used used in the traversal to access AST successor nodes
318282  // overridden in every class by *generated* implementation
318285  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
318286 
318287  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
318288  // than all the vector copies. The implementation for these functions is generated for each class.
318290  virtual size_t get_numberOfTraversalSuccessors() override;
318292  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
318294  virtual size_t get_childIndex(SgNode *child) override;
318295 
318296 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
318297  // MS: 08/16/2002 method for generating RTI information
318299  virtual RTIReturnType roseRTI() override;
318300 #endif
318301  /* */
318302 
318303 
318304 
318305  /* name Deprecated Functions
318306  \brief Deprecated functions ... incomplete-documentation
318307 
318308  These functions have been deprecated from use.
318309  */
318310  /* */
318311 
318313  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
318314 
318315  // JJW (10/16/2008): Changed to a single function in Node.code, and put
318316  // getVariant() in #if 0 block to prevent confusing Doxygen
318317 #if 0
318318 
318319  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
318321  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
318322 #endif
318323  /* */
318324 
318325 
318326 
318327 
318328  public:
318329  /* name Traversal Support Functions
318330  \brief Traversal support functions ... incomplete-documentation
318331 
318332  These functions have been made public as part of the design, but they are suggested for internal use
318333  or by particularly knowledgable users for specialized tools or applications.
318334  */
318335  /* */
318336 
318337  // DQ (11/26/2005): Support for visitor pattern mechanims
318338  // (inferior to ROSE traversal mechanism, experimental).
318342 
318343  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
318345  virtual void accept (ROSE_VisitorPattern & visitor) override;
318346 
318347  // DQ (12/26/2005): Support for traversal based on the memory pool
318350  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
318351 
318354  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
318355 
318356  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
318357  // This traversal helps support internal tools that call static member functions.
318358  // note: this function operates on the memory pools.
318361  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
318362  /* */
318363 
318364 
318365  public:
318366  /* name Memory Allocation Functions
318367  \brief Memory allocations functions ... incomplete-documentation
318368 
318369  These functions have been made public as part of the design, but they are suggested for internal use
318370  or by particularly knowledgable users for specialized tools or applications.
318371  */
318372  /* */
318373 
318384  virtual bool isInMemoryPool() override;
318385 
318396  virtual void checkDataMemberPointersIfInMemoryPool() override;
318397 
318398  // DQ (4/30/2006): Modified to be a const function.
318413  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
318414 
318424  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
318425 
318437  virtual long getChildIndex( SgNode* childNode ) const override;
318438 
318439  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
318440  // comment here (changed to be a C style comment and not be a doxygen comment).
318441  /* \brief Constructor for use by AST File I/O Mechanism
318442 
318443  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
318444  which obtained via fast binary file I/O from disk.
318445  */
318446  // SgLambdaExp( SgLambdaExpStorageClass& source );
318447 
318448 
318449 
318450 
318451 
318452  // JH (10/24/2005): methods added to support the ast file IO
318453  private:
318454 
318455  /* name AST Memory Allocation Support Functions
318456  \brief Memory allocations support....
318457 
318458  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
318459  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
318460  and support the AST File I/O Mechanism.
318461  */
318462  /* */
318463 
318464  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
318465  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
318466  that I use the same type everywhere, if any changes are made. THe second one declares the type
318467  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
318468  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
318469  a correspinding one in the AST_FILE_IO class!
318470  */
318471  // DQ (9/2/2015): This typedef is no longer used, we can't define the
318472  // comment here (changed to be a C style comment and not be a doxygen comment).
318473  /* \brief Typedef used for low level memory access.
318474  */
318475  // typedef unsigned char* TestType;
318476 
318477  // DQ (9/2/2015): This typedef is no longer used, we can't define the
318478  // comment here (changed to be a C style comment and not be a doxygen comment).
318479  /* \brief Typedef used to hold memory addresses as values.
318480  */
318481  // typedef unsigned long AddressType;
318482 
318483 
318484 
318485  // necessary, to have direct access to the p_freepointer and the private methods !
318487  friend class AST_FILE_IO;
318488 
318490  friend class SgLambdaExpStorageClass;
318491 
318493  friend class AstSpecificDataManagingClass;
318494 
318496  friend class AstSpecificDataManagingClassStorageClass;
318497 
318498  public:
318500  SgLambdaExp( const SgLambdaExpStorageClass& source );
318501 
318502  // private: // JJW hack
318503  /*
318504  name AST Memory Allocation Support Variables
318505  Memory allocations support variables
318506 
318507  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
318508  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
318509  and support the AST File I/O Mechanism.
318510  */
318511  /* */
318512 
318513  public:
318514 
318515  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
318516  // to current node (so that it will work cleanly with build functions to specify patterns).
318517  // virtual SgNode* addRegExpAttribute();
318523  SgLambdaExp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
318524 
318525 // *** COMMON CODE SECTION ENDS HERE ***
318526 
318527 
318528 // End of memberFunctionString
318529 // Start of memberFunctionString
318530 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
318531 
318532  // the generated cast function
318533  // friend ROSE_DLL_API SgLambdaExp* isSgLambdaExp ( SgNode* s );
318534 
318535  typedef SgExpression base_node_type;
318536 
318537 
318538 // End of memberFunctionString
318539 // Start of memberFunctionString
318540 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
318541 
318542  SgType* get_type() const override;
318543 
318544 
318545 // End of memberFunctionString
318546 // Start of memberFunctionString
318547 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
318548 
318549  void post_construction_initialization() override;
318550 
318551 
318552 // End of memberFunctionString
318553 
318554  public:
318555  SgLambdaCaptureList* get_lambda_capture_list() const;
318556  void set_lambda_capture_list(SgLambdaCaptureList* lambda_capture_list);
318557 
318558  public:
318559  SgClassDeclaration* get_lambda_closure_class() const;
318560  void set_lambda_closure_class(SgClassDeclaration* lambda_closure_class);
318561 
318562  public:
318563  SgFunctionDeclaration* get_lambda_function() const;
318564  void set_lambda_function(SgFunctionDeclaration* lambda_function);
318565 
318566  public:
318567  bool get_is_mutable() const;
318568  void set_is_mutable(bool is_mutable);
318569 
318570  public:
318571  bool get_capture_default() const;
318572  void set_capture_default(bool capture_default);
318573 
318574  public:
318575  bool get_default_is_by_reference() const;
318576  void set_default_is_by_reference(bool default_is_by_reference);
318577 
318578  public:
318579  bool get_explicit_return_type() const;
318580  void set_explicit_return_type(bool explicit_return_type);
318581 
318582  public:
318583  bool get_has_parameter_decl() const;
318584  void set_has_parameter_decl(bool has_parameter_decl);
318585 
318586  public:
318587  bool get_is_device() const;
318588  void set_is_device(bool is_device);
318589 
318590 
318591  public:
318592  virtual ~SgLambdaExp();
318593 
318594 
318595  public:
318596  SgLambdaExp(Sg_File_Info* startOfConstruct , SgLambdaCaptureList* lambda_capture_list = NULL, SgClassDeclaration* lambda_closure_class = NULL, SgFunctionDeclaration* lambda_function = NULL);
318597  SgLambdaExp(SgLambdaCaptureList* lambda_capture_list, SgClassDeclaration* lambda_closure_class, SgFunctionDeclaration* lambda_function);
318598 
318599  protected:
318600 // Start of memberFunctionString
318601 SgLambdaCaptureList* p_lambda_capture_list;
318602 
318603 // End of memberFunctionString
318604 // Start of memberFunctionString
318605 SgClassDeclaration* p_lambda_closure_class;
318606 
318607 // End of memberFunctionString
318608 // Start of memberFunctionString
318609 SgFunctionDeclaration* p_lambda_function;
318610 
318611 // End of memberFunctionString
318612 // Start of memberFunctionString
318613 bool p_is_mutable;
318614 
318615 // End of memberFunctionString
318616 // Start of memberFunctionString
318617 bool p_capture_default;
318618 
318619 // End of memberFunctionString
318620 // Start of memberFunctionString
318621 bool p_default_is_by_reference;
318622 
318623 // End of memberFunctionString
318624 // Start of memberFunctionString
318625 bool p_explicit_return_type;
318626 
318627 // End of memberFunctionString
318628 // Start of memberFunctionString
318629 bool p_has_parameter_decl;
318630 
318631 // End of memberFunctionString
318632 // Start of memberFunctionString
318633 bool p_is_device;
318634 
318635 // End of memberFunctionString
318636 
318637 
318638 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
318639 
318640 
318641  };
318642 #endif
318643 
318644 // postdeclarations for SgLambdaExp
318645 
318646 /* #line 318647 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
318647 
318648 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
318649 
318650 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
318651 
318652 
318653 /* #line 318654 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
318654 
318655 
318656 
318657 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
318658 
318659 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
318660 // This code is automatically generated for each
318661 // terminal and non-terminal within the defined
318662 // grammar. There is a simple way to change the
318663 // code to fix bugs etc. See the ROSE README file
318664 // for directions.
318665 
318666 // tps: (02/22/2010): Adding DLL export requirements
318667 #include "rosedll.h"
318668 
318669 // predeclarations for SgNoexceptOp
318670 
318671 /* #line 318672 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
318672 
318673 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
318674 
318675 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
318676 
318677 #if 1
318678 // Class Definition for SgNoexceptOp
318679 class ROSE_DLL_API SgNoexceptOp : public SgExpression
318680  {
318681  public:
318682 
318683 
318684 /* #line 318685 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
318685 
318686  virtual SgNode* copy ( SgCopyHelp& help) const override;
318687 // Start of memberFunctionString
318688 /* #line 1039 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
318689 
318690  // DQ (2/4/2015): Let's not build this if we don't need it.
318691  // int replace_expression(SgExpression*, SgExpression*) ROSE_DEPRECATED_FUNCTION;
318692 
318693 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
318694  virtual unsigned int cfgIndexForEnd() const override;
318695  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
318696  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
318697 #endif
318698 
318699 
318700 
318701 // End of memberFunctionString
318702 // Start of memberFunctionString
318703 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
318704 
318705 // *** COMMON CODE SECTION BEGINS HERE ***
318706 
318707  public:
318708 
318709  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
318710  // and not required which is required to match the other aspects of the copy mechanism code generation.
318711  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
318712  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
318713  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
318714  // virtual SgNode* copy ( const SgCopyHelp & help) const;
318715 
318717  virtual std::string class_name() const override;
318718 
318720  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
318721 
318723  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
318724  // static const VariantT static_variant = V_SgNoexceptOp;
318725  enum { static_variant = V_SgNoexceptOp };
318726 
318727  /* the generated cast function */
318729  ROSE_DLL_API friend SgNoexceptOp* isSgNoexceptOp( SgNode * s );
318730 
318732  ROSE_DLL_API friend const SgNoexceptOp* isSgNoexceptOp( const SgNode * s );
318733 
318734  // ******************************************
318735  // * Memory Pool / New / Delete
318736  // ******************************************
318737 
318738  public:
318740  static const unsigned pool_size; //
318742  static std::vector<unsigned char *> pools; //
318744  static SgNoexceptOp * next_node; //
318745 
318747  static unsigned long initializeStorageClassArray(SgNoexceptOpStorageClass *); //
318748 
318750  static void clearMemoryPool(); //
318751  static void deleteMemoryPool(); //
318752 
318754  static void extendMemoryPoolForFileIO(); //
318755 
318757  static SgNoexceptOp * getPointerFromGlobalIndex(unsigned long); //
318759  static SgNoexceptOp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
318760 
318762  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
318764  static void resetValidFreepointers(); //
318766  static unsigned long getNumberOfLastValidPointer(); //
318767 
318768 
318769 #if defined(INLINE_FUNCTIONS)
318770 
318771  inline void *operator new (size_t size);
318772 #else
318773 
318774  void *operator new (size_t size);
318775 #endif
318776 
318777  void operator delete (void* pointer, size_t size);
318778 
318779  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
318780  void operator delete (void* pointer)
318781  {
318782  // This is the generated delete operator...
318783  SgNoexceptOp::operator delete (pointer,sizeof(SgNoexceptOp));
318784  }
318785 
318787  static size_t numberOfNodes();
318788 
318790  static size_t memoryUsage();
318791 
318792  // End of scope which started in IR nodes specific code
318793  /* */
318794 
318795  /* name Internal Functions
318796  \brief Internal functions ... incomplete-documentation
318797 
318798  These functions have been made public as part of the design, but they are suggested for internal use
318799  or by particularly knowledgeable users for specialized tools or applications.
318800 
318801  \internal We could not make these private because they are required by user for special purposes. And
318802  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
318803 
318804  */
318805 
318806  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
318807  // overridden in every class by *generated* implementation
318809  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
318810  // MS: 06/28/02 container of names of variables or container indices
318811  // used used in the traversal to access AST successor nodes
318812  // overridden in every class by *generated* implementation
318815  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
318816 
318817  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
318818  // than all the vector copies. The implementation for these functions is generated for each class.
318820  virtual size_t get_numberOfTraversalSuccessors() override;
318822  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
318824  virtual size_t get_childIndex(SgNode *child) override;
318825 
318826 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
318827  // MS: 08/16/2002 method for generating RTI information
318829  virtual RTIReturnType roseRTI() override;
318830 #endif
318831  /* */
318832 
318833 
318834 
318835  /* name Deprecated Functions
318836  \brief Deprecated functions ... incomplete-documentation
318837 
318838  These functions have been deprecated from use.
318839  */
318840  /* */
318841 
318843  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
318844 
318845  // JJW (10/16/2008): Changed to a single function in Node.code, and put
318846  // getVariant() in #if 0 block to prevent confusing Doxygen
318847 #if 0
318848 
318849  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
318851  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
318852 #endif
318853  /* */
318854 
318855 
318856 
318857 
318858  public:
318859  /* name Traversal Support Functions
318860  \brief Traversal support functions ... incomplete-documentation
318861 
318862  These functions have been made public as part of the design, but they are suggested for internal use
318863  or by particularly knowledgable users for specialized tools or applications.
318864  */
318865  /* */
318866 
318867  // DQ (11/26/2005): Support for visitor pattern mechanims
318868  // (inferior to ROSE traversal mechanism, experimental).
318872 
318873  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
318875  virtual void accept (ROSE_VisitorPattern & visitor) override;
318876 
318877  // DQ (12/26/2005): Support for traversal based on the memory pool
318880  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
318881 
318884  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
318885 
318886  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
318887  // This traversal helps support internal tools that call static member functions.
318888  // note: this function operates on the memory pools.
318891  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
318892  /* */
318893 
318894 
318895  public:
318896  /* name Memory Allocation Functions
318897  \brief Memory allocations functions ... incomplete-documentation
318898 
318899  These functions have been made public as part of the design, but they are suggested for internal use
318900  or by particularly knowledgable users for specialized tools or applications.
318901  */
318902  /* */
318903 
318914  virtual bool isInMemoryPool() override;
318915 
318926  virtual void checkDataMemberPointersIfInMemoryPool() override;
318927 
318928  // DQ (4/30/2006): Modified to be a const function.
318943  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
318944 
318954  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
318955 
318967  virtual long getChildIndex( SgNode* childNode ) const override;
318968 
318969  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
318970  // comment here (changed to be a C style comment and not be a doxygen comment).
318971  /* \brief Constructor for use by AST File I/O Mechanism
318972 
318973  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
318974  which obtained via fast binary file I/O from disk.
318975  */
318976  // SgNoexceptOp( SgNoexceptOpStorageClass& source );
318977 
318978 
318979 
318980 
318981 
318982  // JH (10/24/2005): methods added to support the ast file IO
318983  private:
318984 
318985  /* name AST Memory Allocation Support Functions
318986  \brief Memory allocations support....
318987 
318988  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
318989  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
318990  and support the AST File I/O Mechanism.
318991  */
318992  /* */
318993 
318994  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
318995  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
318996  that I use the same type everywhere, if any changes are made. THe second one declares the type
318997  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
318998  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
318999  a correspinding one in the AST_FILE_IO class!
319000  */
319001  // DQ (9/2/2015): This typedef is no longer used, we can't define the
319002  // comment here (changed to be a C style comment and not be a doxygen comment).
319003  /* \brief Typedef used for low level memory access.
319004  */
319005  // typedef unsigned char* TestType;
319006 
319007  // DQ (9/2/2015): This typedef is no longer used, we can't define the
319008  // comment here (changed to be a C style comment and not be a doxygen comment).
319009  /* \brief Typedef used to hold memory addresses as values.
319010  */
319011  // typedef unsigned long AddressType;
319012 
319013 
319014 
319015  // necessary, to have direct access to the p_freepointer and the private methods !
319017  friend class AST_FILE_IO;
319018 
319020  friend class SgNoexceptOpStorageClass;
319021 
319023  friend class AstSpecificDataManagingClass;
319024 
319026  friend class AstSpecificDataManagingClassStorageClass;
319027 
319028  public:
319030  SgNoexceptOp( const SgNoexceptOpStorageClass& source );
319031 
319032  // private: // JJW hack
319033  /*
319034  name AST Memory Allocation Support Variables
319035  Memory allocations support variables
319036 
319037  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
319038  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
319039  and support the AST File I/O Mechanism.
319040  */
319041  /* */
319042 
319043  public:
319044 
319045  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
319046  // to current node (so that it will work cleanly with build functions to specify patterns).
319047  // virtual SgNode* addRegExpAttribute();
319053  SgNoexceptOp* addRegExpAttribute(std::string s, AstRegExAttribute* a);
319054 
319055 // *** COMMON CODE SECTION ENDS HERE ***
319056 
319057 
319058 // End of memberFunctionString
319059 // Start of memberFunctionString
319060 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
319061 
319062  // the generated cast function
319063  // friend ROSE_DLL_API SgNoexceptOp* isSgNoexceptOp ( SgNode* s );
319064 
319065  typedef SgExpression base_node_type;
319066 
319067 
319068 // End of memberFunctionString
319069 // Start of memberFunctionString
319070 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
319071 
319072  SgType* get_type() const override;
319073 
319074 
319075 // End of memberFunctionString
319076 // Start of memberFunctionString
319077 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
319078 
319079  void post_construction_initialization() override;
319080 
319081 
319082 // End of memberFunctionString
319083 
319084  public:
319085  SgExpression* get_operand_expr() const;
319086  void set_operand_expr(SgExpression* operand_expr);
319087 
319088 
319089  public:
319090  virtual ~SgNoexceptOp();
319091 
319092 
319093  public:
319094  SgNoexceptOp(Sg_File_Info* startOfConstruct , SgExpression* operand_expr = NULL);
319095  SgNoexceptOp(SgExpression* operand_expr);
319096 
319097  protected:
319098 // Start of memberFunctionString
319099 SgExpression* p_operand_expr;
319100 
319101 // End of memberFunctionString
319102 
319103 
319104 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
319105 
319106 
319107  };
319108 #endif
319109 
319110 // postdeclarations for SgNoexceptOp
319111 
319112 /* #line 319113 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
319113 
319114 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
319115 
319116 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
319117 
319118 
319119 /* #line 319120 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
319120 
319121 
319122 
319123 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
319124 
319125 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
319126 // This code is automatically generated for each
319127 // terminal and non-terminal within the defined
319128 // grammar. There is a simple way to change the
319129 // code to fix bugs etc. See the ROSE README file
319130 // for directions.
319131 
319132 // tps: (02/22/2010): Adding DLL export requirements
319133 #include "rosedll.h"
319134 
319135 // predeclarations for SgNonrealRefExp
319136 
319137 /* #line 319138 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
319138 
319139 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
319140 
319141 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
319142 
319143 #if 1
319144 // Class Definition for SgNonrealRefExp
319145 class ROSE_DLL_API SgNonrealRefExp : public SgExpression
319146  {
319147  public:
319148 
319149 
319150 /* #line 319151 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
319151 
319152  virtual SgNode* copy ( SgCopyHelp& help) const override;
319153 // Start of memberFunctionString
319154 /* #line 330 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
319155 
319156 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
319157  virtual unsigned int cfgIndexForEnd() const override;
319158  virtual std::vector<VirtualCFG::CFGEdge> cfgOutEdges(unsigned int index) override;
319159  virtual std::vector<VirtualCFG::CFGEdge> cfgInEdges(unsigned int index) override;
319160 #endif
319161 
319162  int get_name_qualification_length() const override;
319163  void set_name_qualification_length(int name_qualification_length) override;
319164 
319165  bool get_type_elaboration_required() const override;
319166  void set_type_elaboration_required(bool type_elaboration_required) override;
319167 
319168  bool get_global_qualification_required() const override;
319169  void set_global_qualification_required(bool global_qualification_required) override;
319170 
319171 
319172 // End of memberFunctionString
319173 // Start of memberFunctionString
319174 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
319175 
319176 // *** COMMON CODE SECTION BEGINS HERE ***
319177 
319178  public:
319179 
319180  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
319181  // and not required which is required to match the other aspects of the copy mechanism code generation.
319182  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
319183  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
319184  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
319185  // virtual SgNode* copy ( const SgCopyHelp & help) const;
319186 
319188  virtual std::string class_name() const override;
319189 
319191  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
319192 
319194  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
319195  // static const VariantT static_variant = V_SgNonrealRefExp;
319196  enum { static_variant = V_SgNonrealRefExp };
319197 
319198  /* the generated cast function */
319200  ROSE_DLL_API friend SgNonrealRefExp* isSgNonrealRefExp( SgNode * s );
319201 
319203  ROSE_DLL_API friend const SgNonrealRefExp* isSgNonrealRefExp( const SgNode * s );
319204 
319205  // ******************************************
319206  // * Memory Pool / New / Delete
319207  // ******************************************
319208 
319209  public:
319211  static const unsigned pool_size; //
319213  static std::vector<unsigned char *> pools; //
319215  static SgNonrealRefExp * next_node; //
319216 
319218  static unsigned long initializeStorageClassArray(SgNonrealRefExpStorageClass *); //
319219 
319221  static void clearMemoryPool(); //
319222  static void deleteMemoryPool(); //
319223 
319225  static void extendMemoryPoolForFileIO(); //
319226 
319228  static SgNonrealRefExp * getPointerFromGlobalIndex(unsigned long); //
319230  static SgNonrealRefExp * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
319231 
319233  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
319235  static void resetValidFreepointers(); //
319237  static unsigned long getNumberOfLastValidPointer(); //
319238 
319239 
319240 #if defined(INLINE_FUNCTIONS)
319241 
319242  inline void *operator new (size_t size);
319243 #else
319244 
319245  void *operator new (size_t size);
319246 #endif
319247 
319248  void operator delete (void* pointer, size_t size);
319249 
319250  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
319251  void operator delete (void* pointer)
319252  {
319253  // This is the generated delete operator...
319254  SgNonrealRefExp::operator delete (pointer,sizeof(SgNonrealRefExp));
319255  }
319256 
319258  static size_t numberOfNodes();
319259 
319261  static size_t memoryUsage();
319262 
319263  // End of scope which started in IR nodes specific code
319264  /* */
319265 
319266  /* name Internal Functions
319267  \brief Internal functions ... incomplete-documentation
319268 
319269  These functions have been made public as part of the design, but they are suggested for internal use
319270  or by particularly knowledgeable users for specialized tools or applications.
319271 
319272  \internal We could not make these private because they are required by user for special purposes. And
319273  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
319274 
319275  */
319276 
319277  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
319278  // overridden in every class by *generated* implementation
319280  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
319281  // MS: 06/28/02 container of names of variables or container indices
319282  // used used in the traversal to access AST successor nodes
319283  // overridden in every class by *generated* implementation
319286  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
319287 
319288  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
319289  // than all the vector copies. The implementation for these functions is generated for each class.
319291  virtual size_t get_numberOfTraversalSuccessors() override;
319293  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
319295  virtual size_t get_childIndex(SgNode *child) override;
319296 
319297 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
319298  // MS: 08/16/2002 method for generating RTI information
319300  virtual RTIReturnType roseRTI() override;
319301 #endif
319302  /* */
319303 
319304 
319305 
319306  /* name Deprecated Functions
319307  \brief Deprecated functions ... incomplete-documentation
319308 
319309  These functions have been deprecated from use.
319310  */
319311  /* */
319312 
319314  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
319315 
319316  // JJW (10/16/2008): Changed to a single function in Node.code, and put
319317  // getVariant() in #if 0 block to prevent confusing Doxygen
319318 #if 0
319319 
319320  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
319322  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
319323 #endif
319324  /* */
319325 
319326 
319327 
319328 
319329  public:
319330  /* name Traversal Support Functions
319331  \brief Traversal support functions ... incomplete-documentation
319332 
319333  These functions have been made public as part of the design, but they are suggested for internal use
319334  or by particularly knowledgable users for specialized tools or applications.
319335  */
319336  /* */
319337 
319338  // DQ (11/26/2005): Support for visitor pattern mechanims
319339  // (inferior to ROSE traversal mechanism, experimental).
319343 
319344  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
319346  virtual void accept (ROSE_VisitorPattern & visitor) override;
319347 
319348  // DQ (12/26/2005): Support for traversal based on the memory pool
319351  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
319352 
319355  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
319356 
319357  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
319358  // This traversal helps support internal tools that call static member functions.
319359  // note: this function operates on the memory pools.
319362  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
319363  /* */
319364 
319365 
319366  public:
319367  /* name Memory Allocation Functions
319368  \brief Memory allocations functions ... incomplete-documentation
319369 
319370  These functions have been made public as part of the design, but they are suggested for internal use
319371  or by particularly knowledgable users for specialized tools or applications.
319372  */
319373  /* */
319374 
319385  virtual bool isInMemoryPool() override;
319386 
319397  virtual void checkDataMemberPointersIfInMemoryPool() override;
319398 
319399  // DQ (4/30/2006): Modified to be a const function.
319414  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
319415 
319425  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
319426 
319438  virtual long getChildIndex( SgNode* childNode ) const override;
319439 
319440  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
319441  // comment here (changed to be a C style comment and not be a doxygen comment).
319442  /* \brief Constructor for use by AST File I/O Mechanism
319443 
319444  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
319445  which obtained via fast binary file I/O from disk.
319446  */
319447  // SgNonrealRefExp( SgNonrealRefExpStorageClass& source );
319448 
319449 
319450 
319451 
319452 
319453  // JH (10/24/2005): methods added to support the ast file IO
319454  private:
319455 
319456  /* name AST Memory Allocation Support Functions
319457  \brief Memory allocations support....
319458 
319459  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
319460  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
319461  and support the AST File I/O Mechanism.
319462  */
319463  /* */
319464 
319465  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
319466  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
319467  that I use the same type everywhere, if any changes are made. THe second one declares the type
319468  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
319469  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
319470  a correspinding one in the AST_FILE_IO class!
319471  */
319472  // DQ (9/2/2015): This typedef is no longer used, we can't define the
319473  // comment here (changed to be a C style comment and not be a doxygen comment).
319474  /* \brief Typedef used for low level memory access.
319475  */
319476  // typedef unsigned char* TestType;
319477 
319478  // DQ (9/2/2015): This typedef is no longer used, we can't define the
319479  // comment here (changed to be a C style comment and not be a doxygen comment).
319480  /* \brief Typedef used to hold memory addresses as values.
319481  */
319482  // typedef unsigned long AddressType;
319483 
319484 
319485 
319486  // necessary, to have direct access to the p_freepointer and the private methods !
319488  friend class AST_FILE_IO;
319489 
319491  friend class SgNonrealRefExpStorageClass;
319492 
319494  friend class AstSpecificDataManagingClass;
319495 
319497  friend class AstSpecificDataManagingClassStorageClass;
319498 
319499  public:
319501  SgNonrealRefExp( const SgNonrealRefExpStorageClass& source );
319502 
319503  // private: // JJW hack
319504  /*
319505  name AST Memory Allocation Support Variables
319506  Memory allocations support variables
319507 
319508  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
319509  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
319510  and support the AST File I/O Mechanism.
319511  */
319512  /* */
319513 
319514  public:
319515 
319516  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
319517  // to current node (so that it will work cleanly with build functions to specify patterns).
319518  // virtual SgNode* addRegExpAttribute();
319525 
319526 // *** COMMON CODE SECTION ENDS HERE ***
319527 
319528 
319529 // End of memberFunctionString
319530 // Start of memberFunctionString
319531 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
319532 
319533  // the generated cast function
319534  // friend ROSE_DLL_API SgNonrealRefExp* isSgNonrealRefExp ( SgNode* s );
319535 
319536  typedef SgExpression base_node_type;
319537 
319538 
319539 // End of memberFunctionString
319540 // Start of memberFunctionString
319541 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
319542 
319543  SgType* get_type() const override;
319544 
319545 
319546 // End of memberFunctionString
319547 // Start of memberFunctionString
319548 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
319549 
319550  void post_construction_initialization() override;
319551 
319552 
319553 // End of memberFunctionString
319554 
319555  public:
319556  SgNonrealSymbol* get_symbol() const;
319557  void set_symbol(SgNonrealSymbol* symbol);
319558 
319559 
319560 
319561 
319562 
319563  public:
319564  virtual ~SgNonrealRefExp();
319565 
319566 
319567  public:
319568  SgNonrealRefExp(Sg_File_Info* startOfConstruct , SgNonrealSymbol* symbol = NULL);
319569  SgNonrealRefExp(SgNonrealSymbol* symbol);
319570 
319571  protected:
319572 // Start of memberFunctionString
319573 SgNonrealSymbol* p_symbol;
319574 
319575 // End of memberFunctionString
319576 // Start of memberFunctionString
319577 int p_name_qualification_length;
319578 
319579 // End of memberFunctionString
319580 // Start of memberFunctionString
319581 bool p_type_elaboration_required;
319582 
319583 // End of memberFunctionString
319584 // Start of memberFunctionString
319585 bool p_global_qualification_required;
319586 
319587 // End of memberFunctionString
319588 
319589 
319590 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
319591 
319592 
319593  };
319594 #endif
319595 
319596 // postdeclarations for SgNonrealRefExp
319597 
319598 /* #line 319599 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
319599 
319600 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
319601 
319602 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
319603 
319604 
319605 /* #line 319606 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
319606 
319607 
319608 
319609 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
319610 
319611 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
319612 // This code is automatically generated for each
319613 // terminal and non-terminal within the defined
319614 // grammar. There is a simple way to change the
319615 // code to fix bugs etc. See the ROSE README file
319616 // for directions.
319617 
319618 // tps: (02/22/2010): Adding DLL export requirements
319619 #include "rosedll.h"
319620 
319621 // predeclarations for SgFoldExpression
319622 
319623 /* #line 319624 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
319624 
319625 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
319626 
319627 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
319628 
319629 #if 1
319630 // Class Definition for SgFoldExpression
319631 class ROSE_DLL_API SgFoldExpression : public SgExpression
319632  {
319633  public:
319634 
319635 
319636 /* #line 319637 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
319637 
319638  virtual SgNode* copy ( SgCopyHelp& help) const override;
319639 // Start of memberFunctionString
319640 /* #line 719 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
319641 
319642 
319643 
319644 // End of memberFunctionString
319645 // Start of memberFunctionString
319646 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
319647 
319648 // *** COMMON CODE SECTION BEGINS HERE ***
319649 
319650  public:
319651 
319652  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
319653  // and not required which is required to match the other aspects of the copy mechanism code generation.
319654  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
319655  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
319656  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
319657  // virtual SgNode* copy ( const SgCopyHelp & help) const;
319658 
319660  virtual std::string class_name() const override;
319661 
319663  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
319664 
319666  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
319667  // static const VariantT static_variant = V_SgFoldExpression;
319668  enum { static_variant = V_SgFoldExpression };
319669 
319670  /* the generated cast function */
319672  ROSE_DLL_API friend SgFoldExpression* isSgFoldExpression( SgNode * s );
319673 
319675  ROSE_DLL_API friend const SgFoldExpression* isSgFoldExpression( const SgNode * s );
319676 
319677  // ******************************************
319678  // * Memory Pool / New / Delete
319679  // ******************************************
319680 
319681  public:
319683  static const unsigned pool_size; //
319685  static std::vector<unsigned char *> pools; //
319687  static SgFoldExpression * next_node; //
319688 
319690  static unsigned long initializeStorageClassArray(SgFoldExpressionStorageClass *); //
319691 
319693  static void clearMemoryPool(); //
319694  static void deleteMemoryPool(); //
319695 
319697  static void extendMemoryPoolForFileIO(); //
319698 
319700  static SgFoldExpression * getPointerFromGlobalIndex(unsigned long); //
319702  static SgFoldExpression * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
319703 
319705  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
319707  static void resetValidFreepointers(); //
319709  static unsigned long getNumberOfLastValidPointer(); //
319710 
319711 
319712 #if defined(INLINE_FUNCTIONS)
319713 
319714  inline void *operator new (size_t size);
319715 #else
319716 
319717  void *operator new (size_t size);
319718 #endif
319719 
319720  void operator delete (void* pointer, size_t size);
319721 
319722  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
319723  void operator delete (void* pointer)
319724  {
319725  // This is the generated delete operator...
319726  SgFoldExpression::operator delete (pointer,sizeof(SgFoldExpression));
319727  }
319728 
319730  static size_t numberOfNodes();
319731 
319733  static size_t memoryUsage();
319734 
319735  // End of scope which started in IR nodes specific code
319736  /* */
319737 
319738  /* name Internal Functions
319739  \brief Internal functions ... incomplete-documentation
319740 
319741  These functions have been made public as part of the design, but they are suggested for internal use
319742  or by particularly knowledgeable users for specialized tools or applications.
319743 
319744  \internal We could not make these private because they are required by user for special purposes. And
319745  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
319746 
319747  */
319748 
319749  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
319750  // overridden in every class by *generated* implementation
319752  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
319753  // MS: 06/28/02 container of names of variables or container indices
319754  // used used in the traversal to access AST successor nodes
319755  // overridden in every class by *generated* implementation
319758  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
319759 
319760  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
319761  // than all the vector copies. The implementation for these functions is generated for each class.
319763  virtual size_t get_numberOfTraversalSuccessors() override;
319765  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
319767  virtual size_t get_childIndex(SgNode *child) override;
319768 
319769 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
319770  // MS: 08/16/2002 method for generating RTI information
319772  virtual RTIReturnType roseRTI() override;
319773 #endif
319774  /* */
319775 
319776 
319777 
319778  /* name Deprecated Functions
319779  \brief Deprecated functions ... incomplete-documentation
319780 
319781  These functions have been deprecated from use.
319782  */
319783  /* */
319784 
319786  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
319787 
319788  // JJW (10/16/2008): Changed to a single function in Node.code, and put
319789  // getVariant() in #if 0 block to prevent confusing Doxygen
319790 #if 0
319791 
319792  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
319794  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
319795 #endif
319796  /* */
319797 
319798 
319799 
319800 
319801  public:
319802  /* name Traversal Support Functions
319803  \brief Traversal support functions ... incomplete-documentation
319804 
319805  These functions have been made public as part of the design, but they are suggested for internal use
319806  or by particularly knowledgable users for specialized tools or applications.
319807  */
319808  /* */
319809 
319810  // DQ (11/26/2005): Support for visitor pattern mechanims
319811  // (inferior to ROSE traversal mechanism, experimental).
319815 
319816  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
319818  virtual void accept (ROSE_VisitorPattern & visitor) override;
319819 
319820  // DQ (12/26/2005): Support for traversal based on the memory pool
319823  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
319824 
319827  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
319828 
319829  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
319830  // This traversal helps support internal tools that call static member functions.
319831  // note: this function operates on the memory pools.
319834  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
319835  /* */
319836 
319837 
319838  public:
319839  /* name Memory Allocation Functions
319840  \brief Memory allocations functions ... incomplete-documentation
319841 
319842  These functions have been made public as part of the design, but they are suggested for internal use
319843  or by particularly knowledgable users for specialized tools or applications.
319844  */
319845  /* */
319846 
319857  virtual bool isInMemoryPool() override;
319858 
319869  virtual void checkDataMemberPointersIfInMemoryPool() override;
319870 
319871  // DQ (4/30/2006): Modified to be a const function.
319886  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
319887 
319897  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
319898 
319910  virtual long getChildIndex( SgNode* childNode ) const override;
319911 
319912  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
319913  // comment here (changed to be a C style comment and not be a doxygen comment).
319914  /* \brief Constructor for use by AST File I/O Mechanism
319915 
319916  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
319917  which obtained via fast binary file I/O from disk.
319918  */
319919  // SgFoldExpression( SgFoldExpressionStorageClass& source );
319920 
319921 
319922 
319923 
319924 
319925  // JH (10/24/2005): methods added to support the ast file IO
319926  private:
319927 
319928  /* name AST Memory Allocation Support Functions
319929  \brief Memory allocations support....
319930 
319931  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
319932  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
319933  and support the AST File I/O Mechanism.
319934  */
319935  /* */
319936 
319937  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
319938  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
319939  that I use the same type everywhere, if any changes are made. THe second one declares the type
319940  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
319941  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
319942  a correspinding one in the AST_FILE_IO class!
319943  */
319944  // DQ (9/2/2015): This typedef is no longer used, we can't define the
319945  // comment here (changed to be a C style comment and not be a doxygen comment).
319946  /* \brief Typedef used for low level memory access.
319947  */
319948  // typedef unsigned char* TestType;
319949 
319950  // DQ (9/2/2015): This typedef is no longer used, we can't define the
319951  // comment here (changed to be a C style comment and not be a doxygen comment).
319952  /* \brief Typedef used to hold memory addresses as values.
319953  */
319954  // typedef unsigned long AddressType;
319955 
319956 
319957 
319958  // necessary, to have direct access to the p_freepointer and the private methods !
319960  friend class AST_FILE_IO;
319961 
319963  friend class SgFoldExpressionStorageClass;
319964 
319966  friend class AstSpecificDataManagingClass;
319967 
319969  friend class AstSpecificDataManagingClassStorageClass;
319970 
319971  public:
319973  SgFoldExpression( const SgFoldExpressionStorageClass& source );
319974 
319975  // private: // JJW hack
319976  /*
319977  name AST Memory Allocation Support Variables
319978  Memory allocations support variables
319979 
319980  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
319981  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
319982  and support the AST File I/O Mechanism.
319983  */
319984  /* */
319985 
319986  public:
319987 
319988  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
319989  // to current node (so that it will work cleanly with build functions to specify patterns).
319990  // virtual SgNode* addRegExpAttribute();
319997 
319998 // *** COMMON CODE SECTION ENDS HERE ***
319999 
320000 
320001 // End of memberFunctionString
320002 // Start of memberFunctionString
320003 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
320004 
320005  // the generated cast function
320006  // friend ROSE_DLL_API SgFoldExpression* isSgFoldExpression ( SgNode* s );
320007 
320008  typedef SgExpression base_node_type;
320009 
320010 
320011 // End of memberFunctionString
320012 // Start of memberFunctionString
320013 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
320014 
320015  SgType* get_type() const override;
320016 
320017 
320018 // End of memberFunctionString
320019 // Start of memberFunctionString
320020 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
320021 
320022  void post_construction_initialization() override;
320023 
320024 
320025 // End of memberFunctionString
320026 
320027  public:
320028  SgExpression* get_operands() const;
320029  void set_operands(SgExpression* operands);
320030 
320031  public:
320032  std::string get_operator_token() const;
320033  void set_operator_token(std::string operator_token);
320034 
320035  public:
320036  bool get_is_left_associative() const;
320037  void set_is_left_associative(bool is_left_associative);
320038 
320039 
320040  public:
320041  virtual ~SgFoldExpression();
320042 
320043 
320044  public:
320045  SgFoldExpression(Sg_File_Info* startOfConstruct , SgExpression* operands = NULL, std::string operator_token = "", bool is_left_associative = false);
320046  SgFoldExpression(SgExpression* operands, std::string operator_token, bool is_left_associative);
320047 
320048  protected:
320049 // Start of memberFunctionString
320050 SgExpression* p_operands;
320051 
320052 // End of memberFunctionString
320053 // Start of memberFunctionString
320054 std::string p_operator_token;
320055 
320056 // End of memberFunctionString
320057 // Start of memberFunctionString
320058 bool p_is_left_associative;
320059 
320060 // End of memberFunctionString
320061 
320062 
320063 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
320064 
320065 
320066  };
320067 #endif
320068 
320069 // postdeclarations for SgFoldExpression
320070 
320071 /* #line 320072 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
320072 
320073 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
320074 
320075 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
320076 
320077 
320078 /* #line 320079 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
320079 
320080 
320081 
320082 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
320083 
320084 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
320085 // This code is automatically generated for each
320086 // terminal and non-terminal within the defined
320087 // grammar. There is a simple way to change the
320088 // code to fix bugs etc. See the ROSE README file
320089 // for directions.
320090 
320091 // tps: (02/22/2010): Adding DLL export requirements
320092 #include "rosedll.h"
320093 
320094 // predeclarations for SgAwaitExpression
320095 
320096 /* #line 320097 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
320097 
320098 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
320099 
320100 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
320101 
320102 #if 1
320103 // Class Definition for SgAwaitExpression
320104 class ROSE_DLL_API SgAwaitExpression : public SgExpression
320105  {
320106  public:
320107 
320108 
320109 /* #line 320110 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
320110 
320111  virtual SgNode* copy ( SgCopyHelp& help) const override;
320112 // Start of memberFunctionString
320113 /* #line 715 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
320114 
320115 
320116 
320117 // End of memberFunctionString
320118 // Start of memberFunctionString
320119 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
320120 
320121 // *** COMMON CODE SECTION BEGINS HERE ***
320122 
320123  public:
320124 
320125  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
320126  // and not required which is required to match the other aspects of the copy mechanism code generation.
320127  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
320128  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
320129  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
320130  // virtual SgNode* copy ( const SgCopyHelp & help) const;
320131 
320133  virtual std::string class_name() const override;
320134 
320136  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
320137 
320139  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
320140  // static const VariantT static_variant = V_SgAwaitExpression;
320141  enum { static_variant = V_SgAwaitExpression };
320142 
320143  /* the generated cast function */
320145  ROSE_DLL_API friend SgAwaitExpression* isSgAwaitExpression( SgNode * s );
320146 
320148  ROSE_DLL_API friend const SgAwaitExpression* isSgAwaitExpression( const SgNode * s );
320149 
320150  // ******************************************
320151  // * Memory Pool / New / Delete
320152  // ******************************************
320153 
320154  public:
320156  static const unsigned pool_size; //
320158  static std::vector<unsigned char *> pools; //
320160  static SgAwaitExpression * next_node; //
320161 
320163  static unsigned long initializeStorageClassArray(SgAwaitExpressionStorageClass *); //
320164 
320166  static void clearMemoryPool(); //
320167  static void deleteMemoryPool(); //
320168 
320170  static void extendMemoryPoolForFileIO(); //
320171 
320173  static SgAwaitExpression * getPointerFromGlobalIndex(unsigned long); //
320175  static SgAwaitExpression * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
320176 
320178  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
320180  static void resetValidFreepointers(); //
320182  static unsigned long getNumberOfLastValidPointer(); //
320183 
320184 
320185 #if defined(INLINE_FUNCTIONS)
320186 
320187  inline void *operator new (size_t size);
320188 #else
320189 
320190  void *operator new (size_t size);
320191 #endif
320192 
320193  void operator delete (void* pointer, size_t size);
320194 
320195  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
320196  void operator delete (void* pointer)
320197  {
320198  // This is the generated delete operator...
320199  SgAwaitExpression::operator delete (pointer,sizeof(SgAwaitExpression));
320200  }
320201 
320203  static size_t numberOfNodes();
320204 
320206  static size_t memoryUsage();
320207 
320208  // End of scope which started in IR nodes specific code
320209  /* */
320210 
320211  /* name Internal Functions
320212  \brief Internal functions ... incomplete-documentation
320213 
320214  These functions have been made public as part of the design, but they are suggested for internal use
320215  or by particularly knowledgeable users for specialized tools or applications.
320216 
320217  \internal We could not make these private because they are required by user for special purposes. And
320218  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
320219 
320220  */
320221 
320222  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
320223  // overridden in every class by *generated* implementation
320225  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
320226  // MS: 06/28/02 container of names of variables or container indices
320227  // used used in the traversal to access AST successor nodes
320228  // overridden in every class by *generated* implementation
320231  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
320232 
320233  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
320234  // than all the vector copies. The implementation for these functions is generated for each class.
320236  virtual size_t get_numberOfTraversalSuccessors() override;
320238  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
320240  virtual size_t get_childIndex(SgNode *child) override;
320241 
320242 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
320243  // MS: 08/16/2002 method for generating RTI information
320245  virtual RTIReturnType roseRTI() override;
320246 #endif
320247  /* */
320248 
320249 
320250 
320251  /* name Deprecated Functions
320252  \brief Deprecated functions ... incomplete-documentation
320253 
320254  These functions have been deprecated from use.
320255  */
320256  /* */
320257 
320259  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
320260 
320261  // JJW (10/16/2008): Changed to a single function in Node.code, and put
320262  // getVariant() in #if 0 block to prevent confusing Doxygen
320263 #if 0
320264 
320265  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
320267  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
320268 #endif
320269  /* */
320270 
320271 
320272 
320273 
320274  public:
320275  /* name Traversal Support Functions
320276  \brief Traversal support functions ... incomplete-documentation
320277 
320278  These functions have been made public as part of the design, but they are suggested for internal use
320279  or by particularly knowledgable users for specialized tools or applications.
320280  */
320281  /* */
320282 
320283  // DQ (11/26/2005): Support for visitor pattern mechanims
320284  // (inferior to ROSE traversal mechanism, experimental).
320288 
320289  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
320291  virtual void accept (ROSE_VisitorPattern & visitor) override;
320292 
320293  // DQ (12/26/2005): Support for traversal based on the memory pool
320296  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
320297 
320300  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
320301 
320302  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
320303  // This traversal helps support internal tools that call static member functions.
320304  // note: this function operates on the memory pools.
320307  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
320308  /* */
320309 
320310 
320311  public:
320312  /* name Memory Allocation Functions
320313  \brief Memory allocations functions ... incomplete-documentation
320314 
320315  These functions have been made public as part of the design, but they are suggested for internal use
320316  or by particularly knowledgable users for specialized tools or applications.
320317  */
320318  /* */
320319 
320330  virtual bool isInMemoryPool() override;
320331 
320342  virtual void checkDataMemberPointersIfInMemoryPool() override;
320343 
320344  // DQ (4/30/2006): Modified to be a const function.
320359  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
320360 
320370  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
320371 
320383  virtual long getChildIndex( SgNode* childNode ) const override;
320384 
320385  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
320386  // comment here (changed to be a C style comment and not be a doxygen comment).
320387  /* \brief Constructor for use by AST File I/O Mechanism
320388 
320389  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
320390  which obtained via fast binary file I/O from disk.
320391  */
320392  // SgAwaitExpression( SgAwaitExpressionStorageClass& source );
320393 
320394 
320395 
320396 
320397 
320398  // JH (10/24/2005): methods added to support the ast file IO
320399  private:
320400 
320401  /* name AST Memory Allocation Support Functions
320402  \brief Memory allocations support....
320403 
320404  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
320405  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
320406  and support the AST File I/O Mechanism.
320407  */
320408  /* */
320409 
320410  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
320411  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
320412  that I use the same type everywhere, if any changes are made. THe second one declares the type
320413  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
320414  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
320415  a correspinding one in the AST_FILE_IO class!
320416  */
320417  // DQ (9/2/2015): This typedef is no longer used, we can't define the
320418  // comment here (changed to be a C style comment and not be a doxygen comment).
320419  /* \brief Typedef used for low level memory access.
320420  */
320421  // typedef unsigned char* TestType;
320422 
320423  // DQ (9/2/2015): This typedef is no longer used, we can't define the
320424  // comment here (changed to be a C style comment and not be a doxygen comment).
320425  /* \brief Typedef used to hold memory addresses as values.
320426  */
320427  // typedef unsigned long AddressType;
320428 
320429 
320430 
320431  // necessary, to have direct access to the p_freepointer and the private methods !
320433  friend class AST_FILE_IO;
320434 
320436  friend class SgAwaitExpressionStorageClass;
320437 
320439  friend class AstSpecificDataManagingClass;
320440 
320442  friend class AstSpecificDataManagingClassStorageClass;
320443 
320444  public:
320446  SgAwaitExpression( const SgAwaitExpressionStorageClass& source );
320447 
320448  // private: // JJW hack
320449  /*
320450  name AST Memory Allocation Support Variables
320451  Memory allocations support variables
320452 
320453  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
320454  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
320455  and support the AST File I/O Mechanism.
320456  */
320457  /* */
320458 
320459  public:
320460 
320461  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
320462  // to current node (so that it will work cleanly with build functions to specify patterns).
320463  // virtual SgNode* addRegExpAttribute();
320470 
320471 // *** COMMON CODE SECTION ENDS HERE ***
320472 
320473 
320474 // End of memberFunctionString
320475 // Start of memberFunctionString
320476 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
320477 
320478  // the generated cast function
320479  // friend ROSE_DLL_API SgAwaitExpression* isSgAwaitExpression ( SgNode* s );
320480 
320481  typedef SgExpression base_node_type;
320482 
320483 
320484 // End of memberFunctionString
320485 // Start of memberFunctionString
320486 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
320487 
320488  SgType* get_type() const override;
320489 
320490 
320491 // End of memberFunctionString
320492 // Start of memberFunctionString
320493 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
320494 
320495  void post_construction_initialization() override;
320496 
320497 
320498 // End of memberFunctionString
320499 
320500  public:
320501  SgExpression* get_value() const;
320502  void set_value(SgExpression* value);
320503 
320504 
320505  public:
320506  virtual ~SgAwaitExpression();
320507 
320508 
320509  public:
320510  SgAwaitExpression(Sg_File_Info* startOfConstruct , SgExpression* value = NULL);
320511  SgAwaitExpression(SgExpression* value);
320512 
320513  protected:
320514 // Start of memberFunctionString
320515 SgExpression* p_value;
320516 
320517 // End of memberFunctionString
320518 
320519 
320520 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
320521 
320522 
320523  };
320524 #endif
320525 
320526 // postdeclarations for SgAwaitExpression
320527 
320528 /* #line 320529 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
320529 
320530 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
320531 
320532 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
320533 
320534 
320535 /* #line 320536 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
320536 
320537 
320538 
320539 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
320540 
320541 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
320542 // This code is automatically generated for each
320543 // terminal and non-terminal within the defined
320544 // grammar. There is a simple way to change the
320545 // code to fix bugs etc. See the ROSE README file
320546 // for directions.
320547 
320548 // tps: (02/22/2010): Adding DLL export requirements
320549 #include "rosedll.h"
320550 
320551 // predeclarations for SgChooseExpression
320552 
320553 /* #line 320554 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
320554 
320555 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
320556 
320557 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
320558 
320559 #if 1
320560 // Class Definition for SgChooseExpression
320561 class ROSE_DLL_API SgChooseExpression : public SgExpression
320562  {
320563  public:
320564 
320565 
320566 /* #line 320567 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
320567 
320568  virtual SgNode* copy ( SgCopyHelp& help) const override;
320569 // Start of memberFunctionString
320570 /* #line 723 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
320571 
320572 
320573 
320574 // End of memberFunctionString
320575 // Start of memberFunctionString
320576 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
320577 
320578 // *** COMMON CODE SECTION BEGINS HERE ***
320579 
320580  public:
320581 
320582  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
320583  // and not required which is required to match the other aspects of the copy mechanism code generation.
320584  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
320585  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
320586  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
320587  // virtual SgNode* copy ( const SgCopyHelp & help) const;
320588 
320590  virtual std::string class_name() const override;
320591 
320593  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
320594 
320596  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
320597  // static const VariantT static_variant = V_SgChooseExpression;
320598  enum { static_variant = V_SgChooseExpression };
320599 
320600  /* the generated cast function */
320602  ROSE_DLL_API friend SgChooseExpression* isSgChooseExpression( SgNode * s );
320603 
320605  ROSE_DLL_API friend const SgChooseExpression* isSgChooseExpression( const SgNode * s );
320606 
320607  // ******************************************
320608  // * Memory Pool / New / Delete
320609  // ******************************************
320610 
320611  public:
320613  static const unsigned pool_size; //
320615  static std::vector<unsigned char *> pools; //
320617  static SgChooseExpression * next_node; //
320618 
320620  static unsigned long initializeStorageClassArray(SgChooseExpressionStorageClass *); //
320621 
320623  static void clearMemoryPool(); //
320624  static void deleteMemoryPool(); //
320625 
320627  static void extendMemoryPoolForFileIO(); //
320628 
320630  static SgChooseExpression * getPointerFromGlobalIndex(unsigned long); //
320632  static SgChooseExpression * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
320633 
320635  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
320637  static void resetValidFreepointers(); //
320639  static unsigned long getNumberOfLastValidPointer(); //
320640 
320641 
320642 #if defined(INLINE_FUNCTIONS)
320643 
320644  inline void *operator new (size_t size);
320645 #else
320646 
320647  void *operator new (size_t size);
320648 #endif
320649 
320650  void operator delete (void* pointer, size_t size);
320651 
320652  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
320653  void operator delete (void* pointer)
320654  {
320655  // This is the generated delete operator...
320656  SgChooseExpression::operator delete (pointer,sizeof(SgChooseExpression));
320657  }
320658 
320660  static size_t numberOfNodes();
320661 
320663  static size_t memoryUsage();
320664 
320665  // End of scope which started in IR nodes specific code
320666  /* */
320667 
320668  /* name Internal Functions
320669  \brief Internal functions ... incomplete-documentation
320670 
320671  These functions have been made public as part of the design, but they are suggested for internal use
320672  or by particularly knowledgeable users for specialized tools or applications.
320673 
320674  \internal We could not make these private because they are required by user for special purposes. And
320675  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
320676 
320677  */
320678 
320679  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
320680  // overridden in every class by *generated* implementation
320682  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
320683  // MS: 06/28/02 container of names of variables or container indices
320684  // used used in the traversal to access AST successor nodes
320685  // overridden in every class by *generated* implementation
320688  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
320689 
320690  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
320691  // than all the vector copies. The implementation for these functions is generated for each class.
320693  virtual size_t get_numberOfTraversalSuccessors() override;
320695  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
320697  virtual size_t get_childIndex(SgNode *child) override;
320698 
320699 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
320700  // MS: 08/16/2002 method for generating RTI information
320702  virtual RTIReturnType roseRTI() override;
320703 #endif
320704  /* */
320705 
320706 
320707 
320708  /* name Deprecated Functions
320709  \brief Deprecated functions ... incomplete-documentation
320710 
320711  These functions have been deprecated from use.
320712  */
320713  /* */
320714 
320716  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
320717 
320718  // JJW (10/16/2008): Changed to a single function in Node.code, and put
320719  // getVariant() in #if 0 block to prevent confusing Doxygen
320720 #if 0
320721 
320722  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
320724  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
320725 #endif
320726  /* */
320727 
320728 
320729 
320730 
320731  public:
320732  /* name Traversal Support Functions
320733  \brief Traversal support functions ... incomplete-documentation
320734 
320735  These functions have been made public as part of the design, but they are suggested for internal use
320736  or by particularly knowledgable users for specialized tools or applications.
320737  */
320738  /* */
320739 
320740  // DQ (11/26/2005): Support for visitor pattern mechanims
320741  // (inferior to ROSE traversal mechanism, experimental).
320745 
320746  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
320748  virtual void accept (ROSE_VisitorPattern & visitor) override;
320749 
320750  // DQ (12/26/2005): Support for traversal based on the memory pool
320753  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
320754 
320757  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
320758 
320759  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
320760  // This traversal helps support internal tools that call static member functions.
320761  // note: this function operates on the memory pools.
320764  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
320765  /* */
320766 
320767 
320768  public:
320769  /* name Memory Allocation Functions
320770  \brief Memory allocations functions ... incomplete-documentation
320771 
320772  These functions have been made public as part of the design, but they are suggested for internal use
320773  or by particularly knowledgable users for specialized tools or applications.
320774  */
320775  /* */
320776 
320787  virtual bool isInMemoryPool() override;
320788 
320799  virtual void checkDataMemberPointersIfInMemoryPool() override;
320800 
320801  // DQ (4/30/2006): Modified to be a const function.
320816  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
320817 
320827  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
320828 
320840  virtual long getChildIndex( SgNode* childNode ) const override;
320841 
320842  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
320843  // comment here (changed to be a C style comment and not be a doxygen comment).
320844  /* \brief Constructor for use by AST File I/O Mechanism
320845 
320846  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
320847  which obtained via fast binary file I/O from disk.
320848  */
320849  // SgChooseExpression( SgChooseExpressionStorageClass& source );
320850 
320851 
320852 
320853 
320854 
320855  // JH (10/24/2005): methods added to support the ast file IO
320856  private:
320857 
320858  /* name AST Memory Allocation Support Functions
320859  \brief Memory allocations support....
320860 
320861  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
320862  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
320863  and support the AST File I/O Mechanism.
320864  */
320865  /* */
320866 
320867  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
320868  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
320869  that I use the same type everywhere, if any changes are made. THe second one declares the type
320870  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
320871  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
320872  a correspinding one in the AST_FILE_IO class!
320873  */
320874  // DQ (9/2/2015): This typedef is no longer used, we can't define the
320875  // comment here (changed to be a C style comment and not be a doxygen comment).
320876  /* \brief Typedef used for low level memory access.
320877  */
320878  // typedef unsigned char* TestType;
320879 
320880  // DQ (9/2/2015): This typedef is no longer used, we can't define the
320881  // comment here (changed to be a C style comment and not be a doxygen comment).
320882  /* \brief Typedef used to hold memory addresses as values.
320883  */
320884  // typedef unsigned long AddressType;
320885 
320886 
320887 
320888  // necessary, to have direct access to the p_freepointer and the private methods !
320890  friend class AST_FILE_IO;
320891 
320893  friend class SgChooseExpressionStorageClass;
320894 
320896  friend class AstSpecificDataManagingClass;
320897 
320899  friend class AstSpecificDataManagingClassStorageClass;
320900 
320901  public:
320903  SgChooseExpression( const SgChooseExpressionStorageClass& source );
320904 
320905  // private: // JJW hack
320906  /*
320907  name AST Memory Allocation Support Variables
320908  Memory allocations support variables
320909 
320910  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
320911  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
320912  and support the AST File I/O Mechanism.
320913  */
320914  /* */
320915 
320916  public:
320917 
320918  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
320919  // to current node (so that it will work cleanly with build functions to specify patterns).
320920  // virtual SgNode* addRegExpAttribute();
320927 
320928 // *** COMMON CODE SECTION ENDS HERE ***
320929 
320930 
320931 // End of memberFunctionString
320932 // Start of memberFunctionString
320933 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
320934 
320935  // the generated cast function
320936  // friend ROSE_DLL_API SgChooseExpression* isSgChooseExpression ( SgNode* s );
320937 
320938  typedef SgExpression base_node_type;
320939 
320940 
320941 // End of memberFunctionString
320942 // Start of memberFunctionString
320943 /* #line 159 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
320944 
320945  SgType* get_type() const override;
320946 
320947 
320948 // End of memberFunctionString
320949 // Start of memberFunctionString
320950 /* #line 174 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Expression.code" */
320951 
320952  void post_construction_initialization() override;
320953 
320954 
320955 // End of memberFunctionString
320956 
320957  public:
320958  SgExpression* get_value() const;
320959  void set_value(SgExpression* value);
320960 
320961 
320962  public:
320963  virtual ~SgChooseExpression();
320964 
320965 
320966  public:
320967  SgChooseExpression(Sg_File_Info* startOfConstruct , SgExpression* value = NULL);
320968  SgChooseExpression(SgExpression* value);
320969 
320970  protected:
320971 // Start of memberFunctionString
320972 SgExpression* p_value;
320973 
320974 // End of memberFunctionString
320975 
320976 
320977 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
320978 
320979 
320980  };
320981 #endif
320982 
320983 // postdeclarations for SgChooseExpression
320984 
320985 /* #line 320986 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
320986 
320987 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
320988 
320989 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
320990 
320991 
320992 /* #line 320993 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
320993 
320994 
320995 
320996 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
320997 
320998 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
320999 // This code is automatically generated for each
321000 // terminal and non-terminal within the defined
321001 // grammar. There is a simple way to change the
321002 // code to fix bugs etc. See the ROSE README file
321003 // for directions.
321004 
321005 // tps: (02/22/2010): Adding DLL export requirements
321006 #include "rosedll.h"
321007 
321008 // predeclarations for SgSymbol
321009 
321010 /* #line 321011 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
321011 
321012 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
321013 
321014 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
321015 
321016 #if 1
321017 // Class Definition for SgSymbol
321018 class ROSE_DLL_API SgSymbol : public SgNode
321019  {
321020  public:
321021 
321022 
321023 /* #line 321024 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
321024 
321025  // copy functions omitted for SgSymbol
321026 // Start of memberFunctionString
321027 /* #line 7 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Symbol.code" */
321028 
321029  virtual SgName get_name() const = 0;
321030  virtual SgType* get_type() const = 0;
321031  virtual SgNode* get_symbol_basis() const; // from HEADER
321032 
321033  // DQ (6/10/007): supports test of symbol declaration scope against symbol table's associated scope
321034  virtual SgScopeStatement* get_scope() const;
321035 
321036  // DQ (12/3/2011): refactoring support for symbol tables and symbols.
321037  SgName get_mangled_name() const;
321038 
321039 #if 0
321040  // PP (4/29/22): removed to eliminate confusion
321041  // DQ (8/21/2013): Added function so that templated lower-level symbol table support will compile.
321042  // Note that this function can not be called and returns an appropriate error message.
321043  // Note also that we have to return a declaration for which get_type exists as well
321044  // (selected SgFunctionDeclaration). The return value of this function is always NULL
321045  // plus it is a runtime error to call this function.
321046  // SgFunctionDeclaration* get_declaration() const;
321047  SgDeclarationStatement* get_declaration() const;
321048 #endif /* 0 */
321049 
321050 
321051 
321052 // End of memberFunctionString
321053 // Start of memberFunctionString
321054 /* #line 2317 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Support.code" */
321055 
321056 
321057  /* name Persistant Attribute Mechanism
321058 
321059  This is the persistant attribute mechanism for attaching attributes to IR nodes across
321060  multiple passes. Note that these attributes are persistant in that they are preserved
321061  if the AST is written out to a file and read in from a file. However, virtual function
321062  in the user-defined class derived from the AstAttribute must be defined for the attribute
321063  to be defined across the boundary of File I/O (simple pack and unpack functions). More
321064  sophisticated mechanisms are available within the AstAttributeMechanism object
321065  (e.g iterating though attributes, etc; get_attributeMechanism() is available if direct
321066  access is required, however mostly only internal tools use this lower level support).
321067 
321068  \internal This used to be a public data member, but has been changed to be a protected
321069  pointer instead. The functional interface of the AstAttributeMechanism is presevered
321070  but some of the names and the syntax for calling the interface have changed. The
321071  pointer to the AstAttributeMechanism is now generated by ROSETTA.
321072  */
321073  /* */
321075  virtual void addNewAttribute(std::string s,AstAttribute* a) override;
321077  virtual AstAttribute* getAttribute(std::string s) const override;
321079  virtual void updateAttribute(std::string s,AstAttribute* a) override; // formerly called: replace in AstAttributeMechanism
321084  virtual void setAttribute(std::string s,AstAttribute* a) override;
321086  virtual void removeAttribute(std::string s) override;
321088  virtual bool attributeExists(std::string s) const override;
321090  virtual int numberOfAttributes() const override;
321091 
321106  /* */
321107 
321108 
321109 
321110 
321111 // End of memberFunctionString
321112 // Start of memberFunctionString
321113 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
321114 
321115 // *** COMMON CODE SECTION BEGINS HERE ***
321116 
321117  public:
321118 
321119  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
321120  // and not required which is required to match the other aspects of the copy mechanism code generation.
321121  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
321122  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
321123  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
321124  // virtual SgNode* copy ( const SgCopyHelp & help) const;
321125 
321127  virtual std::string class_name() const override;
321128 
321130  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
321131 
321133  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
321134  // static const VariantT static_variant = V_SgSymbol;
321135  enum { static_variant = V_SgSymbol };
321136 
321137  /* the generated cast function */
321139  ROSE_DLL_API friend SgSymbol* isSgSymbol( SgNode * s );
321140 
321142  ROSE_DLL_API friend const SgSymbol* isSgSymbol( const SgNode * s );
321143 
321144  // ******************************************
321145  // * Memory Pool / New / Delete
321146  // ******************************************
321147 
321148  public:
321150  static const unsigned pool_size; //
321152  static std::vector<unsigned char *> pools; //
321154  static SgSymbol * next_node; //
321155 
321157  static unsigned long initializeStorageClassArray(SgSymbolStorageClass *); //
321158 
321160  static void clearMemoryPool(); //
321161  static void deleteMemoryPool(); //
321162 
321164  static void extendMemoryPoolForFileIO(); //
321165 
321167  static SgSymbol * getPointerFromGlobalIndex(unsigned long); //
321169  static SgSymbol * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
321170 
321172  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
321174  static void resetValidFreepointers(); //
321176  static unsigned long getNumberOfLastValidPointer(); //
321177 
321178 
321179 #if defined(INLINE_FUNCTIONS)
321180 
321181  inline void *operator new (size_t size);
321182 #else
321183 
321184  void *operator new (size_t size);
321185 #endif
321186 
321187  void operator delete (void* pointer, size_t size);
321188 
321189  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
321190  void operator delete (void* pointer)
321191  {
321192  // This is the generated delete operator...
321193  SgSymbol::operator delete (pointer,sizeof(SgSymbol));
321194  }
321195 
321197  static size_t numberOfNodes();
321198 
321200  static size_t memoryUsage();
321201 
321202  // End of scope which started in IR nodes specific code
321203  /* */
321204 
321205  /* name Internal Functions
321206  \brief Internal functions ... incomplete-documentation
321207 
321208  These functions have been made public as part of the design, but they are suggested for internal use
321209  or by particularly knowledgeable users for specialized tools or applications.
321210 
321211  \internal We could not make these private because they are required by user for special purposes. And
321212  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
321213 
321214  */
321215 
321216  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
321217  // overridden in every class by *generated* implementation
321219  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
321220  // MS: 06/28/02 container of names of variables or container indices
321221  // used used in the traversal to access AST successor nodes
321222  // overridden in every class by *generated* implementation
321225  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
321226 
321227  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
321228  // than all the vector copies. The implementation for these functions is generated for each class.
321230  virtual size_t get_numberOfTraversalSuccessors() override;
321232  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
321234  virtual size_t get_childIndex(SgNode *child) override;
321235 
321236 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
321237  // MS: 08/16/2002 method for generating RTI information
321239  virtual RTIReturnType roseRTI() override;
321240 #endif
321241  /* */
321242 
321243 
321244 
321245  /* name Deprecated Functions
321246  \brief Deprecated functions ... incomplete-documentation
321247 
321248  These functions have been deprecated from use.
321249  */
321250  /* */
321251 
321253  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
321254 
321255  // JJW (10/16/2008): Changed to a single function in Node.code, and put
321256  // getVariant() in #if 0 block to prevent confusing Doxygen
321257 #if 0
321258 
321259  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
321261  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
321262 #endif
321263  /* */
321264 
321265 
321266 
321267 
321268  public:
321269  /* name Traversal Support Functions
321270  \brief Traversal support functions ... incomplete-documentation
321271 
321272  These functions have been made public as part of the design, but they are suggested for internal use
321273  or by particularly knowledgable users for specialized tools or applications.
321274  */
321275  /* */
321276 
321277  // DQ (11/26/2005): Support for visitor pattern mechanims
321278  // (inferior to ROSE traversal mechanism, experimental).
321282 
321283  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
321285  virtual void accept (ROSE_VisitorPattern & visitor) override;
321286 
321287  // DQ (12/26/2005): Support for traversal based on the memory pool
321290  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
321291 
321294  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
321295 
321296  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
321297  // This traversal helps support internal tools that call static member functions.
321298  // note: this function operates on the memory pools.
321301  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
321302  /* */
321303 
321304 
321305  public:
321306  /* name Memory Allocation Functions
321307  \brief Memory allocations functions ... incomplete-documentation
321308 
321309  These functions have been made public as part of the design, but they are suggested for internal use
321310  or by particularly knowledgable users for specialized tools or applications.
321311  */
321312  /* */
321313 
321324  virtual bool isInMemoryPool() override;
321325 
321336  virtual void checkDataMemberPointersIfInMemoryPool() override;
321337 
321338  // DQ (4/30/2006): Modified to be a const function.
321353  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
321354 
321364  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
321365 
321377  virtual long getChildIndex( SgNode* childNode ) const override;
321378 
321379  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
321380  // comment here (changed to be a C style comment and not be a doxygen comment).
321381  /* \brief Constructor for use by AST File I/O Mechanism
321382 
321383  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
321384  which obtained via fast binary file I/O from disk.
321385  */
321386  // SgSymbol( SgSymbolStorageClass& source );
321387 
321388 
321389 
321390 
321391 
321392  // JH (10/24/2005): methods added to support the ast file IO
321393  private:
321394 
321395  /* name AST Memory Allocation Support Functions
321396  \brief Memory allocations support....
321397 
321398  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
321399  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
321400  and support the AST File I/O Mechanism.
321401  */
321402  /* */
321403 
321404  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
321405  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
321406  that I use the same type everywhere, if any changes are made. THe second one declares the type
321407  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
321408  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
321409  a correspinding one in the AST_FILE_IO class!
321410  */
321411  // DQ (9/2/2015): This typedef is no longer used, we can't define the
321412  // comment here (changed to be a C style comment and not be a doxygen comment).
321413  /* \brief Typedef used for low level memory access.
321414  */
321415  // typedef unsigned char* TestType;
321416 
321417  // DQ (9/2/2015): This typedef is no longer used, we can't define the
321418  // comment here (changed to be a C style comment and not be a doxygen comment).
321419  /* \brief Typedef used to hold memory addresses as values.
321420  */
321421  // typedef unsigned long AddressType;
321422 
321423 
321424 
321425  // necessary, to have direct access to the p_freepointer and the private methods !
321427  friend class AST_FILE_IO;
321428 
321430  friend class SgSymbolStorageClass;
321431 
321433  friend class AstSpecificDataManagingClass;
321434 
321436  friend class AstSpecificDataManagingClassStorageClass;
321437 
321438  public:
321440  SgSymbol( const SgSymbolStorageClass& source );
321441 
321442  // private: // JJW hack
321443  /*
321444  name AST Memory Allocation Support Variables
321445  Memory allocations support variables
321446 
321447  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
321448  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
321449  and support the AST File I/O Mechanism.
321450  */
321451  /* */
321452 
321453  public:
321454 
321455  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
321456  // to current node (so that it will work cleanly with build functions to specify patterns).
321457  // virtual SgNode* addRegExpAttribute();
321463  SgSymbol* addRegExpAttribute(std::string s, AstRegExAttribute* a);
321464 
321465 // *** COMMON CODE SECTION ENDS HERE ***
321466 
321467 
321468 // End of memberFunctionString
321469 // Start of memberFunctionString
321470 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
321471 
321472  // the generated cast function
321473  // friend ROSE_DLL_API SgSymbol* isSgSymbol ( SgNode* s );
321474 
321475  typedef SgNode base_node_type;
321476 
321477 
321478 // End of memberFunctionString
321479 
321480  public:
321481  AstAttributeMechanism* get_attributeMechanism() const override /* (getDataAccessFunctionPrototypeString) */;
321482  void set_attributeMechanism(AstAttributeMechanism* attributeMechanism) override /* (getDataAccessFunctionPrototypeString) */;
321483 
321484 
321485  public:
321486  virtual ~SgSymbol();
321487 
321488 
321489  public:
321490  SgSymbol();
321491 
321492  protected:
321493 // Start of memberFunctionString
321494 AstAttributeMechanism* p_attributeMechanism;
321495 
321496 // End of memberFunctionString
321497 
321498 
321499 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
321500 
321501 
321502  };
321503 #endif
321504 
321505 // postdeclarations for SgSymbol
321506 
321507 /* #line 321508 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
321508 
321509 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
321510 
321511 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
321512 
321513 
321514 /* #line 321515 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
321515 
321516 
321517 
321518 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
321519 
321520 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
321521 // This code is automatically generated for each
321522 // terminal and non-terminal within the defined
321523 // grammar. There is a simple way to change the
321524 // code to fix bugs etc. See the ROSE README file
321525 // for directions.
321526 
321527 // tps: (02/22/2010): Adding DLL export requirements
321528 #include "rosedll.h"
321529 
321530 // predeclarations for SgVariableSymbol
321531 
321532 /* #line 321533 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
321533 
321534 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
321535 
321536 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
321537 
321538 #if 1
321539 // Class Definition for SgVariableSymbol
321540 class ROSE_DLL_API SgVariableSymbol : public SgSymbol
321541  {
321542  public:
321543 
321544 
321545 /* #line 321546 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
321546 
321547  virtual SgNode* copy ( SgCopyHelp& help) const override;
321548 // Start of memberFunctionString
321549 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
321550 
321551 // *** COMMON CODE SECTION BEGINS HERE ***
321552 
321553  public:
321554 
321555  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
321556  // and not required which is required to match the other aspects of the copy mechanism code generation.
321557  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
321558  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
321559  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
321560  // virtual SgNode* copy ( const SgCopyHelp & help) const;
321561 
321563  virtual std::string class_name() const override;
321564 
321566  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
321567 
321569  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
321570  // static const VariantT static_variant = V_SgVariableSymbol;
321571  enum { static_variant = V_SgVariableSymbol };
321572 
321573  /* the generated cast function */
321575  ROSE_DLL_API friend SgVariableSymbol* isSgVariableSymbol( SgNode * s );
321576 
321578  ROSE_DLL_API friend const SgVariableSymbol* isSgVariableSymbol( const SgNode * s );
321579 
321580  // ******************************************
321581  // * Memory Pool / New / Delete
321582  // ******************************************
321583 
321584  public:
321586  static const unsigned pool_size; //
321588  static std::vector<unsigned char *> pools; //
321590  static SgVariableSymbol * next_node; //
321591 
321593  static unsigned long initializeStorageClassArray(SgVariableSymbolStorageClass *); //
321594 
321596  static void clearMemoryPool(); //
321597  static void deleteMemoryPool(); //
321598 
321600  static void extendMemoryPoolForFileIO(); //
321601 
321603  static SgVariableSymbol * getPointerFromGlobalIndex(unsigned long); //
321605  static SgVariableSymbol * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
321606 
321608  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
321610  static void resetValidFreepointers(); //
321612  static unsigned long getNumberOfLastValidPointer(); //
321613 
321614 
321615 #if defined(INLINE_FUNCTIONS)
321616 
321617  inline void *operator new (size_t size);
321618 #else
321619 
321620  void *operator new (size_t size);
321621 #endif
321622 
321623  void operator delete (void* pointer, size_t size);
321624 
321625  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
321626  void operator delete (void* pointer)
321627  {
321628  // This is the generated delete operator...
321629  SgVariableSymbol::operator delete (pointer,sizeof(SgVariableSymbol));
321630  }
321631 
321633  static size_t numberOfNodes();
321634 
321636  static size_t memoryUsage();
321637 
321638  // End of scope which started in IR nodes specific code
321639  /* */
321640 
321641  /* name Internal Functions
321642  \brief Internal functions ... incomplete-documentation
321643 
321644  These functions have been made public as part of the design, but they are suggested for internal use
321645  or by particularly knowledgeable users for specialized tools or applications.
321646 
321647  \internal We could not make these private because they are required by user for special purposes. And
321648  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
321649 
321650  */
321651 
321652  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
321653  // overridden in every class by *generated* implementation
321655  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
321656  // MS: 06/28/02 container of names of variables or container indices
321657  // used used in the traversal to access AST successor nodes
321658  // overridden in every class by *generated* implementation
321661  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
321662 
321663  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
321664  // than all the vector copies. The implementation for these functions is generated for each class.
321666  virtual size_t get_numberOfTraversalSuccessors() override;
321668  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
321670  virtual size_t get_childIndex(SgNode *child) override;
321671 
321672 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
321673  // MS: 08/16/2002 method for generating RTI information
321675  virtual RTIReturnType roseRTI() override;
321676 #endif
321677  /* */
321678 
321679 
321680 
321681  /* name Deprecated Functions
321682  \brief Deprecated functions ... incomplete-documentation
321683 
321684  These functions have been deprecated from use.
321685  */
321686  /* */
321687 
321689  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
321690 
321691  // JJW (10/16/2008): Changed to a single function in Node.code, and put
321692  // getVariant() in #if 0 block to prevent confusing Doxygen
321693 #if 0
321694 
321695  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
321697  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
321698 #endif
321699  /* */
321700 
321701 
321702 
321703 
321704  public:
321705  /* name Traversal Support Functions
321706  \brief Traversal support functions ... incomplete-documentation
321707 
321708  These functions have been made public as part of the design, but they are suggested for internal use
321709  or by particularly knowledgable users for specialized tools or applications.
321710  */
321711  /* */
321712 
321713  // DQ (11/26/2005): Support for visitor pattern mechanims
321714  // (inferior to ROSE traversal mechanism, experimental).
321718 
321719  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
321721  virtual void accept (ROSE_VisitorPattern & visitor) override;
321722 
321723  // DQ (12/26/2005): Support for traversal based on the memory pool
321726  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
321727 
321730  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
321731 
321732  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
321733  // This traversal helps support internal tools that call static member functions.
321734  // note: this function operates on the memory pools.
321737  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
321738  /* */
321739 
321740 
321741  public:
321742  /* name Memory Allocation Functions
321743  \brief Memory allocations functions ... incomplete-documentation
321744 
321745  These functions have been made public as part of the design, but they are suggested for internal use
321746  or by particularly knowledgable users for specialized tools or applications.
321747  */
321748  /* */
321749 
321760  virtual bool isInMemoryPool() override;
321761 
321772  virtual void checkDataMemberPointersIfInMemoryPool() override;
321773 
321774  // DQ (4/30/2006): Modified to be a const function.
321789  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
321790 
321800  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
321801 
321813  virtual long getChildIndex( SgNode* childNode ) const override;
321814 
321815  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
321816  // comment here (changed to be a C style comment and not be a doxygen comment).
321817  /* \brief Constructor for use by AST File I/O Mechanism
321818 
321819  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
321820  which obtained via fast binary file I/O from disk.
321821  */
321822  // SgVariableSymbol( SgVariableSymbolStorageClass& source );
321823 
321824 
321825 
321826 
321827 
321828  // JH (10/24/2005): methods added to support the ast file IO
321829  private:
321830 
321831  /* name AST Memory Allocation Support Functions
321832  \brief Memory allocations support....
321833 
321834  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
321835  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
321836  and support the AST File I/O Mechanism.
321837  */
321838  /* */
321839 
321840  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
321841  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
321842  that I use the same type everywhere, if any changes are made. THe second one declares the type
321843  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
321844  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
321845  a correspinding one in the AST_FILE_IO class!
321846  */
321847  // DQ (9/2/2015): This typedef is no longer used, we can't define the
321848  // comment here (changed to be a C style comment and not be a doxygen comment).
321849  /* \brief Typedef used for low level memory access.
321850  */
321851  // typedef unsigned char* TestType;
321852 
321853  // DQ (9/2/2015): This typedef is no longer used, we can't define the
321854  // comment here (changed to be a C style comment and not be a doxygen comment).
321855  /* \brief Typedef used to hold memory addresses as values.
321856  */
321857  // typedef unsigned long AddressType;
321858 
321859 
321860 
321861  // necessary, to have direct access to the p_freepointer and the private methods !
321863  friend class AST_FILE_IO;
321864 
321866  friend class SgVariableSymbolStorageClass;
321867 
321869  friend class AstSpecificDataManagingClass;
321870 
321872  friend class AstSpecificDataManagingClassStorageClass;
321873 
321874  public:
321876  SgVariableSymbol( const SgVariableSymbolStorageClass& source );
321877 
321878  // private: // JJW hack
321879  /*
321880  name AST Memory Allocation Support Variables
321881  Memory allocations support variables
321882 
321883  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
321884  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
321885  and support the AST File I/O Mechanism.
321886  */
321887  /* */
321888 
321889  public:
321890 
321891  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
321892  // to current node (so that it will work cleanly with build functions to specify patterns).
321893  // virtual SgNode* addRegExpAttribute();
321900 
321901 // *** COMMON CODE SECTION ENDS HERE ***
321902 
321903 
321904 // End of memberFunctionString
321905 // Start of memberFunctionString
321906 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
321907 
321908  // the generated cast function
321909  // friend ROSE_DLL_API SgVariableSymbol* isSgVariableSymbol ( SgNode* s );
321910 
321911  typedef SgSymbol base_node_type;
321912 
321913 
321914 // End of memberFunctionString
321915 // Start of memberFunctionString
321916 /* #line 47 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Symbol.code" */
321917 
321918  SgName get_name() const override;
321919  SgNode* get_symbol_basis() const override; // from GET_NAME
321920 
321921 
321922 // End of memberFunctionString
321923 // Start of memberFunctionString
321924 /* #line 41 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Symbol.code" */
321925 
321926  // DQ (3/23/2017): ROSETTA macro expansion
321927  SgType* get_type() const override;
321928  // SgNode* get_symbol_basis() const; // from GET_TYPE
321929 
321930 
321931 // End of memberFunctionString
321932 
321933  public:
321934  SgInitializedName* get_declaration() const;
321935  void set_declaration(SgInitializedName* declaration);
321936 
321937 
321938  public:
321939  virtual ~SgVariableSymbol();
321940 
321941 
321942  public:
321943  SgVariableSymbol(SgInitializedName* declaration = NULL);
321944 
321945  protected:
321946 // Start of memberFunctionString
321947 SgInitializedName* p_declaration;
321948 
321949 // End of memberFunctionString
321950 
321951 
321952 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
321953 
321954 
321955  };
321956 #endif
321957 
321958 // postdeclarations for SgVariableSymbol
321959 
321960 /* #line 321961 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
321961 
321962 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
321963 
321964 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
321965 
321966 
321967 /* #line 321968 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
321968 
321969 
321970 
321971 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
321972 
321973 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
321974 // This code is automatically generated for each
321975 // terminal and non-terminal within the defined
321976 // grammar. There is a simple way to change the
321977 // code to fix bugs etc. See the ROSE README file
321978 // for directions.
321979 
321980 // tps: (02/22/2010): Adding DLL export requirements
321981 #include "rosedll.h"
321982 
321983 // predeclarations for SgTemplateVariableSymbol
321984 
321985 /* #line 321986 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
321986 
321987 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
321988 
321989 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
321990 
321991 #if 1
321992 // Class Definition for SgTemplateVariableSymbol
321993 class ROSE_DLL_API SgTemplateVariableSymbol : public SgVariableSymbol
321994  {
321995  public:
321996 
321997 
321998 /* #line 321999 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
321999 
322000  virtual SgNode* copy ( SgCopyHelp& help) const override;
322001 // Start of memberFunctionString
322002 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
322003 
322004 // *** COMMON CODE SECTION BEGINS HERE ***
322005 
322006  public:
322007 
322008  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
322009  // and not required which is required to match the other aspects of the copy mechanism code generation.
322010  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
322011  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
322012  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
322013  // virtual SgNode* copy ( const SgCopyHelp & help) const;
322014 
322016  virtual std::string class_name() const override;
322017 
322019  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
322020 
322022  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
322023  // static const VariantT static_variant = V_SgTemplateVariableSymbol;
322024  enum { static_variant = V_SgTemplateVariableSymbol };
322025 
322026  /* the generated cast function */
322028  ROSE_DLL_API friend SgTemplateVariableSymbol* isSgTemplateVariableSymbol( SgNode * s );
322029 
322031  ROSE_DLL_API friend const SgTemplateVariableSymbol* isSgTemplateVariableSymbol( const SgNode * s );
322032 
322033  // ******************************************
322034  // * Memory Pool / New / Delete
322035  // ******************************************
322036 
322037  public:
322039  static const unsigned pool_size; //
322041  static std::vector<unsigned char *> pools; //
322043  static SgTemplateVariableSymbol * next_node; //
322044 
322046  static unsigned long initializeStorageClassArray(SgTemplateVariableSymbolStorageClass *); //
322047 
322049  static void clearMemoryPool(); //
322050  static void deleteMemoryPool(); //
322051 
322053  static void extendMemoryPoolForFileIO(); //
322054 
322056  static SgTemplateVariableSymbol * getPointerFromGlobalIndex(unsigned long); //
322058  static SgTemplateVariableSymbol * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
322059 
322061  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
322063  static void resetValidFreepointers(); //
322065  static unsigned long getNumberOfLastValidPointer(); //
322066 
322067 
322068 #if defined(INLINE_FUNCTIONS)
322069 
322070  inline void *operator new (size_t size);
322071 #else
322072 
322073  void *operator new (size_t size);
322074 #endif
322075 
322076  void operator delete (void* pointer, size_t size);
322077 
322078  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
322079  void operator delete (void* pointer)
322080  {
322081  // This is the generated delete operator...
322082  SgTemplateVariableSymbol::operator delete (pointer,sizeof(SgTemplateVariableSymbol));
322083  }
322084 
322086  static size_t numberOfNodes();
322087 
322089  static size_t memoryUsage();
322090 
322091  // End of scope which started in IR nodes specific code
322092  /* */
322093 
322094  /* name Internal Functions
322095  \brief Internal functions ... incomplete-documentation
322096 
322097  These functions have been made public as part of the design, but they are suggested for internal use
322098  or by particularly knowledgeable users for specialized tools or applications.
322099 
322100  \internal We could not make these private because they are required by user for special purposes. And
322101  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
322102 
322103  */
322104 
322105  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
322106  // overridden in every class by *generated* implementation
322108  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
322109  // MS: 06/28/02 container of names of variables or container indices
322110  // used used in the traversal to access AST successor nodes
322111  // overridden in every class by *generated* implementation
322114  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
322115 
322116  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
322117  // than all the vector copies. The implementation for these functions is generated for each class.
322119  virtual size_t get_numberOfTraversalSuccessors() override;
322121  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
322123  virtual size_t get_childIndex(SgNode *child) override;
322124 
322125 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
322126  // MS: 08/16/2002 method for generating RTI information
322128  virtual RTIReturnType roseRTI() override;
322129 #endif
322130  /* */
322131 
322132 
322133 
322134  /* name Deprecated Functions
322135  \brief Deprecated functions ... incomplete-documentation
322136 
322137  These functions have been deprecated from use.
322138  */
322139  /* */
322140 
322142  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
322143 
322144  // JJW (10/16/2008): Changed to a single function in Node.code, and put
322145  // getVariant() in #if 0 block to prevent confusing Doxygen
322146 #if 0
322147 
322148  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
322150  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
322151 #endif
322152  /* */
322153 
322154 
322155 
322156 
322157  public:
322158  /* name Traversal Support Functions
322159  \brief Traversal support functions ... incomplete-documentation
322160 
322161  These functions have been made public as part of the design, but they are suggested for internal use
322162  or by particularly knowledgable users for specialized tools or applications.
322163  */
322164  /* */
322165 
322166  // DQ (11/26/2005): Support for visitor pattern mechanims
322167  // (inferior to ROSE traversal mechanism, experimental).
322171 
322172  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
322174  virtual void accept (ROSE_VisitorPattern & visitor) override;
322175 
322176  // DQ (12/26/2005): Support for traversal based on the memory pool
322179  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
322180 
322183  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
322184 
322185  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
322186  // This traversal helps support internal tools that call static member functions.
322187  // note: this function operates on the memory pools.
322190  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
322191  /* */
322192 
322193 
322194  public:
322195  /* name Memory Allocation Functions
322196  \brief Memory allocations functions ... incomplete-documentation
322197 
322198  These functions have been made public as part of the design, but they are suggested for internal use
322199  or by particularly knowledgable users for specialized tools or applications.
322200  */
322201  /* */
322202 
322213  virtual bool isInMemoryPool() override;
322214 
322225  virtual void checkDataMemberPointersIfInMemoryPool() override;
322226 
322227  // DQ (4/30/2006): Modified to be a const function.
322242  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
322243 
322253  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
322254 
322266  virtual long getChildIndex( SgNode* childNode ) const override;
322267 
322268  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
322269  // comment here (changed to be a C style comment and not be a doxygen comment).
322270  /* \brief Constructor for use by AST File I/O Mechanism
322271 
322272  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
322273  which obtained via fast binary file I/O from disk.
322274  */
322275  // SgTemplateVariableSymbol( SgTemplateVariableSymbolStorageClass& source );
322276 
322277 
322278 
322279 
322280 
322281  // JH (10/24/2005): methods added to support the ast file IO
322282  private:
322283 
322284  /* name AST Memory Allocation Support Functions
322285  \brief Memory allocations support....
322286 
322287  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
322288  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
322289  and support the AST File I/O Mechanism.
322290  */
322291  /* */
322292 
322293  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
322294  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
322295  that I use the same type everywhere, if any changes are made. THe second one declares the type
322296  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
322297  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
322298  a correspinding one in the AST_FILE_IO class!
322299  */
322300  // DQ (9/2/2015): This typedef is no longer used, we can't define the
322301  // comment here (changed to be a C style comment and not be a doxygen comment).
322302  /* \brief Typedef used for low level memory access.
322303  */
322304  // typedef unsigned char* TestType;
322305 
322306  // DQ (9/2/2015): This typedef is no longer used, we can't define the
322307  // comment here (changed to be a C style comment and not be a doxygen comment).
322308  /* \brief Typedef used to hold memory addresses as values.
322309  */
322310  // typedef unsigned long AddressType;
322311 
322312 
322313 
322314  // necessary, to have direct access to the p_freepointer and the private methods !
322316  friend class AST_FILE_IO;
322317 
322319  friend class SgTemplateVariableSymbolStorageClass;
322320 
322322  friend class AstSpecificDataManagingClass;
322323 
322325  friend class AstSpecificDataManagingClassStorageClass;
322326 
322327  public:
322329  SgTemplateVariableSymbol( const SgTemplateVariableSymbolStorageClass& source );
322330 
322331  // private: // JJW hack
322332  /*
322333  name AST Memory Allocation Support Variables
322334  Memory allocations support variables
322335 
322336  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
322337  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
322338  and support the AST File I/O Mechanism.
322339  */
322340  /* */
322341 
322342  public:
322343 
322344  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
322345  // to current node (so that it will work cleanly with build functions to specify patterns).
322346  // virtual SgNode* addRegExpAttribute();
322353 
322354 // *** COMMON CODE SECTION ENDS HERE ***
322355 
322356 
322357 // End of memberFunctionString
322358 // Start of memberFunctionString
322359 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
322360 
322361  // the generated cast function
322362  // friend ROSE_DLL_API SgTemplateVariableSymbol* isSgTemplateVariableSymbol ( SgNode* s );
322363 
322365 
322366 
322367 // End of memberFunctionString
322368 // Start of memberFunctionString
322369 /* #line 47 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Symbol.code" */
322370 
322371  SgName get_name() const override;
322372  SgNode* get_symbol_basis() const override; // from GET_NAME
322373 
322374 
322375 // End of memberFunctionString
322376 // Start of memberFunctionString
322377 /* #line 41 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Symbol.code" */
322378 
322379  // DQ (3/23/2017): ROSETTA macro expansion
322380  SgType* get_type() const override;
322381  // SgNode* get_symbol_basis() const; // from GET_TYPE
322382 
322383 
322384 // End of memberFunctionString
322385 
322386 
322387  public:
322388  virtual ~SgTemplateVariableSymbol();
322389 
322390 
322391  public:
322392  SgTemplateVariableSymbol(SgInitializedName* declaration = NULL);
322393 
322394  protected:
322395 
322396 
322397 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
322398 
322399 
322400  };
322401 #endif
322402 
322403 // postdeclarations for SgTemplateVariableSymbol
322404 
322405 /* #line 322406 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
322406 
322407 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
322408 
322409 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
322410 
322411 
322412 /* #line 322413 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
322413 
322414 
322415 
322416 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
322417 
322418 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
322419 // This code is automatically generated for each
322420 // terminal and non-terminal within the defined
322421 // grammar. There is a simple way to change the
322422 // code to fix bugs etc. See the ROSE README file
322423 // for directions.
322424 
322425 // tps: (02/22/2010): Adding DLL export requirements
322426 #include "rosedll.h"
322427 
322428 // predeclarations for SgNonrealSymbol
322429 
322430 /* #line 322431 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
322431 
322432 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
322433 
322434 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
322435 
322436 #if 1
322437 // Class Definition for SgNonrealSymbol
322438 class ROSE_DLL_API SgNonrealSymbol : public SgSymbol
322439  {
322440  public:
322441 
322442 
322443 /* #line 322444 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
322444 
322445  virtual SgNode* copy ( SgCopyHelp& help) const override;
322446 // Start of memberFunctionString
322447 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
322448 
322449 // *** COMMON CODE SECTION BEGINS HERE ***
322450 
322451  public:
322452 
322453  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
322454  // and not required which is required to match the other aspects of the copy mechanism code generation.
322455  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
322456  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
322457  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
322458  // virtual SgNode* copy ( const SgCopyHelp & help) const;
322459 
322461  virtual std::string class_name() const override;
322462 
322464  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
322465 
322467  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
322468  // static const VariantT static_variant = V_SgNonrealSymbol;
322469  enum { static_variant = V_SgNonrealSymbol };
322470 
322471  /* the generated cast function */
322473  ROSE_DLL_API friend SgNonrealSymbol* isSgNonrealSymbol( SgNode * s );
322474 
322476  ROSE_DLL_API friend const SgNonrealSymbol* isSgNonrealSymbol( const SgNode * s );
322477 
322478  // ******************************************
322479  // * Memory Pool / New / Delete
322480  // ******************************************
322481 
322482  public:
322484  static const unsigned pool_size; //
322486  static std::vector<unsigned char *> pools; //
322488  static SgNonrealSymbol * next_node; //
322489 
322491  static unsigned long initializeStorageClassArray(SgNonrealSymbolStorageClass *); //
322492 
322494  static void clearMemoryPool(); //
322495  static void deleteMemoryPool(); //
322496 
322498  static void extendMemoryPoolForFileIO(); //
322499 
322501  static SgNonrealSymbol * getPointerFromGlobalIndex(unsigned long); //
322503  static SgNonrealSymbol * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
322504 
322506  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
322508  static void resetValidFreepointers(); //
322510  static unsigned long getNumberOfLastValidPointer(); //
322511 
322512 
322513 #if defined(INLINE_FUNCTIONS)
322514 
322515  inline void *operator new (size_t size);
322516 #else
322517 
322518  void *operator new (size_t size);
322519 #endif
322520 
322521  void operator delete (void* pointer, size_t size);
322522 
322523  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
322524  void operator delete (void* pointer)
322525  {
322526  // This is the generated delete operator...
322527  SgNonrealSymbol::operator delete (pointer,sizeof(SgNonrealSymbol));
322528  }
322529 
322531  static size_t numberOfNodes();
322532 
322534  static size_t memoryUsage();
322535 
322536  // End of scope which started in IR nodes specific code
322537  /* */
322538 
322539  /* name Internal Functions
322540  \brief Internal functions ... incomplete-documentation
322541 
322542  These functions have been made public as part of the design, but they are suggested for internal use
322543  or by particularly knowledgeable users for specialized tools or applications.
322544 
322545  \internal We could not make these private because they are required by user for special purposes. And
322546  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
322547 
322548  */
322549 
322550  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
322551  // overridden in every class by *generated* implementation
322553  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
322554  // MS: 06/28/02 container of names of variables or container indices
322555  // used used in the traversal to access AST successor nodes
322556  // overridden in every class by *generated* implementation
322559  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
322560 
322561  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
322562  // than all the vector copies. The implementation for these functions is generated for each class.
322564  virtual size_t get_numberOfTraversalSuccessors() override;
322566  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
322568  virtual size_t get_childIndex(SgNode *child) override;
322569 
322570 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
322571  // MS: 08/16/2002 method for generating RTI information
322573  virtual RTIReturnType roseRTI() override;
322574 #endif
322575  /* */
322576 
322577 
322578 
322579  /* name Deprecated Functions
322580  \brief Deprecated functions ... incomplete-documentation
322581 
322582  These functions have been deprecated from use.
322583  */
322584  /* */
322585 
322587  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
322588 
322589  // JJW (10/16/2008): Changed to a single function in Node.code, and put
322590  // getVariant() in #if 0 block to prevent confusing Doxygen
322591 #if 0
322592 
322593  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
322595  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
322596 #endif
322597  /* */
322598 
322599 
322600 
322601 
322602  public:
322603  /* name Traversal Support Functions
322604  \brief Traversal support functions ... incomplete-documentation
322605 
322606  These functions have been made public as part of the design, but they are suggested for internal use
322607  or by particularly knowledgable users for specialized tools or applications.
322608  */
322609  /* */
322610 
322611  // DQ (11/26/2005): Support for visitor pattern mechanims
322612  // (inferior to ROSE traversal mechanism, experimental).
322616 
322617  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
322619  virtual void accept (ROSE_VisitorPattern & visitor) override;
322620 
322621  // DQ (12/26/2005): Support for traversal based on the memory pool
322624  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
322625 
322628  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
322629 
322630  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
322631  // This traversal helps support internal tools that call static member functions.
322632  // note: this function operates on the memory pools.
322635  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
322636  /* */
322637 
322638 
322639  public:
322640  /* name Memory Allocation Functions
322641  \brief Memory allocations functions ... incomplete-documentation
322642 
322643  These functions have been made public as part of the design, but they are suggested for internal use
322644  or by particularly knowledgable users for specialized tools or applications.
322645  */
322646  /* */
322647 
322658  virtual bool isInMemoryPool() override;
322659 
322670  virtual void checkDataMemberPointersIfInMemoryPool() override;
322671 
322672  // DQ (4/30/2006): Modified to be a const function.
322687  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
322688 
322698  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
322699 
322711  virtual long getChildIndex( SgNode* childNode ) const override;
322712 
322713  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
322714  // comment here (changed to be a C style comment and not be a doxygen comment).
322715  /* \brief Constructor for use by AST File I/O Mechanism
322716 
322717  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
322718  which obtained via fast binary file I/O from disk.
322719  */
322720  // SgNonrealSymbol( SgNonrealSymbolStorageClass& source );
322721 
322722 
322723 
322724 
322725 
322726  // JH (10/24/2005): methods added to support the ast file IO
322727  private:
322728 
322729  /* name AST Memory Allocation Support Functions
322730  \brief Memory allocations support....
322731 
322732  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
322733  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
322734  and support the AST File I/O Mechanism.
322735  */
322736  /* */
322737 
322738  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
322739  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
322740  that I use the same type everywhere, if any changes are made. THe second one declares the type
322741  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
322742  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
322743  a correspinding one in the AST_FILE_IO class!
322744  */
322745  // DQ (9/2/2015): This typedef is no longer used, we can't define the
322746  // comment here (changed to be a C style comment and not be a doxygen comment).
322747  /* \brief Typedef used for low level memory access.
322748  */
322749  // typedef unsigned char* TestType;
322750 
322751  // DQ (9/2/2015): This typedef is no longer used, we can't define the
322752  // comment here (changed to be a C style comment and not be a doxygen comment).
322753  /* \brief Typedef used to hold memory addresses as values.
322754  */
322755  // typedef unsigned long AddressType;
322756 
322757 
322758 
322759  // necessary, to have direct access to the p_freepointer and the private methods !
322761  friend class AST_FILE_IO;
322762 
322764  friend class SgNonrealSymbolStorageClass;
322765 
322767  friend class AstSpecificDataManagingClass;
322768 
322770  friend class AstSpecificDataManagingClassStorageClass;
322771 
322772  public:
322774  SgNonrealSymbol( const SgNonrealSymbolStorageClass& source );
322775 
322776  // private: // JJW hack
322777  /*
322778  name AST Memory Allocation Support Variables
322779  Memory allocations support variables
322780 
322781  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
322782  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
322783  and support the AST File I/O Mechanism.
322784  */
322785  /* */
322786 
322787  public:
322788 
322789  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
322790  // to current node (so that it will work cleanly with build functions to specify patterns).
322791  // virtual SgNode* addRegExpAttribute();
322798 
322799 // *** COMMON CODE SECTION ENDS HERE ***
322800 
322801 
322802 // End of memberFunctionString
322803 // Start of memberFunctionString
322804 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
322805 
322806  // the generated cast function
322807  // friend ROSE_DLL_API SgNonrealSymbol* isSgNonrealSymbol ( SgNode* s );
322808 
322809  typedef SgSymbol base_node_type;
322810 
322811 
322812 // End of memberFunctionString
322813 // Start of memberFunctionString
322814 /* #line 47 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Symbol.code" */
322815 
322816  SgName get_name() const override;
322817  SgNode* get_symbol_basis() const override; // from GET_NAME
322818 
322819 
322820 // End of memberFunctionString
322821 // Start of memberFunctionString
322822 /* #line 41 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Symbol.code" */
322823 
322824  // DQ (3/23/2017): ROSETTA macro expansion
322825  SgType* get_type() const override;
322826  // SgNode* get_symbol_basis() const; // from GET_TYPE
322827 
322828 
322829 // End of memberFunctionString
322830 
322831  public:
322832  SgNonrealDecl* get_declaration() const;
322833  void set_declaration(SgNonrealDecl* declaration);
322834 
322835 
322836  public:
322837  virtual ~SgNonrealSymbol();
322838 
322839 
322840  public:
322841  SgNonrealSymbol(SgNonrealDecl* declaration = NULL);
322842 
322843  protected:
322844 // Start of memberFunctionString
322845 SgNonrealDecl* p_declaration;
322846 
322847 // End of memberFunctionString
322848 
322849 
322850 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
322851 
322852 
322853  };
322854 #endif
322855 
322856 // postdeclarations for SgNonrealSymbol
322857 
322858 /* #line 322859 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
322859 
322860 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
322861 
322862 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
322863 
322864 
322865 /* #line 322866 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
322866 
322867 
322868 
322869 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
322870 
322871 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
322872 // This code is automatically generated for each
322873 // terminal and non-terminal within the defined
322874 // grammar. There is a simple way to change the
322875 // code to fix bugs etc. See the ROSE README file
322876 // for directions.
322877 
322878 // tps: (02/22/2010): Adding DLL export requirements
322879 #include "rosedll.h"
322880 
322881 // predeclarations for SgFunctionSymbol
322882 
322883 /* #line 322884 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
322884 
322885 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
322886 
322887 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
322888 
322889 #if 1
322890 // Class Definition for SgFunctionSymbol
322891 class ROSE_DLL_API SgFunctionSymbol : public SgSymbol
322892  {
322893  public:
322894 
322895 
322896 /* #line 322897 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
322897 
322898  virtual SgNode* copy ( SgCopyHelp& help) const override;
322899 // Start of memberFunctionString
322900 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
322901 
322902 // *** COMMON CODE SECTION BEGINS HERE ***
322903 
322904  public:
322905 
322906  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
322907  // and not required which is required to match the other aspects of the copy mechanism code generation.
322908  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
322909  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
322910  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
322911  // virtual SgNode* copy ( const SgCopyHelp & help) const;
322912 
322914  virtual std::string class_name() const override;
322915 
322917  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
322918 
322920  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
322921  // static const VariantT static_variant = V_SgFunctionSymbol;
322922  enum { static_variant = V_SgFunctionSymbol };
322923 
322924  /* the generated cast function */
322926  ROSE_DLL_API friend SgFunctionSymbol* isSgFunctionSymbol( SgNode * s );
322927 
322929  ROSE_DLL_API friend const SgFunctionSymbol* isSgFunctionSymbol( const SgNode * s );
322930 
322931  // ******************************************
322932  // * Memory Pool / New / Delete
322933  // ******************************************
322934 
322935  public:
322937  static const unsigned pool_size; //
322939  static std::vector<unsigned char *> pools; //
322941  static SgFunctionSymbol * next_node; //
322942 
322944  static unsigned long initializeStorageClassArray(SgFunctionSymbolStorageClass *); //
322945 
322947  static void clearMemoryPool(); //
322948  static void deleteMemoryPool(); //
322949 
322951  static void extendMemoryPoolForFileIO(); //
322952 
322954  static SgFunctionSymbol * getPointerFromGlobalIndex(unsigned long); //
322956  static SgFunctionSymbol * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
322957 
322959  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
322961  static void resetValidFreepointers(); //
322963  static unsigned long getNumberOfLastValidPointer(); //
322964 
322965 
322966 #if defined(INLINE_FUNCTIONS)
322967 
322968  inline void *operator new (size_t size);
322969 #else
322970 
322971  void *operator new (size_t size);
322972 #endif
322973 
322974  void operator delete (void* pointer, size_t size);
322975 
322976  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
322977  void operator delete (void* pointer)
322978  {
322979  // This is the generated delete operator...
322980  SgFunctionSymbol::operator delete (pointer,sizeof(SgFunctionSymbol));
322981  }
322982 
322984  static size_t numberOfNodes();
322985 
322987  static size_t memoryUsage();
322988 
322989  // End of scope which started in IR nodes specific code
322990  /* */
322991 
322992  /* name Internal Functions
322993  \brief Internal functions ... incomplete-documentation
322994 
322995  These functions have been made public as part of the design, but they are suggested for internal use
322996  or by particularly knowledgeable users for specialized tools or applications.
322997 
322998  \internal We could not make these private because they are required by user for special purposes. And
322999  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
323000 
323001  */
323002 
323003  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
323004  // overridden in every class by *generated* implementation
323006  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
323007  // MS: 06/28/02 container of names of variables or container indices
323008  // used used in the traversal to access AST successor nodes
323009  // overridden in every class by *generated* implementation
323012  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
323013 
323014  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
323015  // than all the vector copies. The implementation for these functions is generated for each class.
323017  virtual size_t get_numberOfTraversalSuccessors() override;
323019  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
323021  virtual size_t get_childIndex(SgNode *child) override;
323022 
323023 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
323024  // MS: 08/16/2002 method for generating RTI information
323026  virtual RTIReturnType roseRTI() override;
323027 #endif
323028  /* */
323029 
323030 
323031 
323032  /* name Deprecated Functions
323033  \brief Deprecated functions ... incomplete-documentation
323034 
323035  These functions have been deprecated from use.
323036  */
323037  /* */
323038 
323040  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
323041 
323042  // JJW (10/16/2008): Changed to a single function in Node.code, and put
323043  // getVariant() in #if 0 block to prevent confusing Doxygen
323044 #if 0
323045 
323046  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
323048  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
323049 #endif
323050  /* */
323051 
323052 
323053 
323054 
323055  public:
323056  /* name Traversal Support Functions
323057  \brief Traversal support functions ... incomplete-documentation
323058 
323059  These functions have been made public as part of the design, but they are suggested for internal use
323060  or by particularly knowledgable users for specialized tools or applications.
323061  */
323062  /* */
323063 
323064  // DQ (11/26/2005): Support for visitor pattern mechanims
323065  // (inferior to ROSE traversal mechanism, experimental).
323069 
323070  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
323072  virtual void accept (ROSE_VisitorPattern & visitor) override;
323073 
323074  // DQ (12/26/2005): Support for traversal based on the memory pool
323077  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
323078 
323081  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
323082 
323083  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
323084  // This traversal helps support internal tools that call static member functions.
323085  // note: this function operates on the memory pools.
323088  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
323089  /* */
323090 
323091 
323092  public:
323093  /* name Memory Allocation Functions
323094  \brief Memory allocations functions ... incomplete-documentation
323095 
323096  These functions have been made public as part of the design, but they are suggested for internal use
323097  or by particularly knowledgable users for specialized tools or applications.
323098  */
323099  /* */
323100 
323111  virtual bool isInMemoryPool() override;
323112 
323123  virtual void checkDataMemberPointersIfInMemoryPool() override;
323124 
323125  // DQ (4/30/2006): Modified to be a const function.
323140  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
323141 
323151  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
323152 
323164  virtual long getChildIndex( SgNode* childNode ) const override;
323165 
323166  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
323167  // comment here (changed to be a C style comment and not be a doxygen comment).
323168  /* \brief Constructor for use by AST File I/O Mechanism
323169 
323170  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
323171  which obtained via fast binary file I/O from disk.
323172  */
323173  // SgFunctionSymbol( SgFunctionSymbolStorageClass& source );
323174 
323175 
323176 
323177 
323178 
323179  // JH (10/24/2005): methods added to support the ast file IO
323180  private:
323181 
323182  /* name AST Memory Allocation Support Functions
323183  \brief Memory allocations support....
323184 
323185  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
323186  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
323187  and support the AST File I/O Mechanism.
323188  */
323189  /* */
323190 
323191  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
323192  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
323193  that I use the same type everywhere, if any changes are made. THe second one declares the type
323194  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
323195  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
323196  a correspinding one in the AST_FILE_IO class!
323197  */
323198  // DQ (9/2/2015): This typedef is no longer used, we can't define the
323199  // comment here (changed to be a C style comment and not be a doxygen comment).
323200  /* \brief Typedef used for low level memory access.
323201  */
323202  // typedef unsigned char* TestType;
323203 
323204  // DQ (9/2/2015): This typedef is no longer used, we can't define the
323205  // comment here (changed to be a C style comment and not be a doxygen comment).
323206  /* \brief Typedef used to hold memory addresses as values.
323207  */
323208  // typedef unsigned long AddressType;
323209 
323210 
323211 
323212  // necessary, to have direct access to the p_freepointer and the private methods !
323214  friend class AST_FILE_IO;
323215 
323217  friend class SgFunctionSymbolStorageClass;
323218 
323220  friend class AstSpecificDataManagingClass;
323221 
323223  friend class AstSpecificDataManagingClassStorageClass;
323224 
323225  public:
323227  SgFunctionSymbol( const SgFunctionSymbolStorageClass& source );
323228 
323229  // private: // JJW hack
323230  /*
323231  name AST Memory Allocation Support Variables
323232  Memory allocations support variables
323233 
323234  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
323235  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
323236  and support the AST File I/O Mechanism.
323237  */
323238  /* */
323239 
323240  public:
323241 
323242  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
323243  // to current node (so that it will work cleanly with build functions to specify patterns).
323244  // virtual SgNode* addRegExpAttribute();
323251 
323252 // *** COMMON CODE SECTION ENDS HERE ***
323253 
323254 
323255 // End of memberFunctionString
323256 // Start of memberFunctionString
323257 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
323258 
323259  // the generated cast function
323260  // friend ROSE_DLL_API SgFunctionSymbol* isSgFunctionSymbol ( SgNode* s );
323261 
323262  typedef SgSymbol base_node_type;
323263 
323264 
323265 // End of memberFunctionString
323266 // Start of memberFunctionString
323267 /* #line 47 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Symbol.code" */
323268 
323269  SgName get_name() const override;
323270  SgNode* get_symbol_basis() const override; // from GET_NAME
323271 
323272 
323273 // End of memberFunctionString
323274 // Start of memberFunctionString
323275 /* #line 41 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Symbol.code" */
323276 
323277  // DQ (3/23/2017): ROSETTA macro expansion
323278  SgType* get_type() const override;
323279  // SgNode* get_symbol_basis() const; // from GET_TYPE
323280 
323281 
323282 // End of memberFunctionString
323283 
323284  public:
323285  SgFunctionDeclaration* get_declaration() const;
323286  void set_declaration(SgFunctionDeclaration* declaration);
323287 
323288 
323289  public:
323290  virtual ~SgFunctionSymbol();
323291 
323292 
323293  public:
323294  SgFunctionSymbol(SgFunctionDeclaration* declaration = NULL);
323295 
323296  protected:
323297 // Start of memberFunctionString
323298 SgFunctionDeclaration* p_declaration;
323299 
323300 // End of memberFunctionString
323301 
323302 
323303 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
323304 
323305 
323306  };
323307 #endif
323308 
323309 // postdeclarations for SgFunctionSymbol
323310 
323311 /* #line 323312 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
323312 
323313 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
323314 
323315 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
323316 
323317 
323318 /* #line 323319 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
323319 
323320 
323321 
323322 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
323323 
323324 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
323325 // This code is automatically generated for each
323326 // terminal and non-terminal within the defined
323327 // grammar. There is a simple way to change the
323328 // code to fix bugs etc. See the ROSE README file
323329 // for directions.
323330 
323331 // tps: (02/22/2010): Adding DLL export requirements
323332 #include "rosedll.h"
323333 
323334 // predeclarations for SgMemberFunctionSymbol
323335 
323336 /* #line 323337 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
323337 
323338 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
323339 
323340 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
323341 
323342 #if 1
323343 // Class Definition for SgMemberFunctionSymbol
323344 class ROSE_DLL_API SgMemberFunctionSymbol : public SgFunctionSymbol
323345  {
323346  public:
323347 
323348 
323349 /* #line 323350 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
323350 
323351  virtual SgNode* copy ( SgCopyHelp& help) const override;
323352 // Start of memberFunctionString
323353 /* #line 53 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Symbol.code" */
323354 
323355  SgMemberFunctionDeclaration* get_declaration() const;
323356 
323357  // DQ (6/10/2007): This is now depricated in favor of a more uniform implementation for all symbols.
323358  SgClassDefinition *get_scope() const override ROSE_DEPRECATED_FUNCTION;
323359 
323360  // SgNode* get_symbol_basis() const; // from DECLARATION
323361 
323362 
323363 // End of memberFunctionString
323364 // Start of memberFunctionString
323365 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
323366 
323367 // *** COMMON CODE SECTION BEGINS HERE ***
323368 
323369  public:
323370 
323371  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
323372  // and not required which is required to match the other aspects of the copy mechanism code generation.
323373  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
323374  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
323375  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
323376  // virtual SgNode* copy ( const SgCopyHelp & help) const;
323377 
323379  virtual std::string class_name() const override;
323380 
323382  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
323383 
323385  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
323386  // static const VariantT static_variant = V_SgMemberFunctionSymbol;
323387  enum { static_variant = V_SgMemberFunctionSymbol };
323388 
323389  /* the generated cast function */
323391  ROSE_DLL_API friend SgMemberFunctionSymbol* isSgMemberFunctionSymbol( SgNode * s );
323392 
323394  ROSE_DLL_API friend const SgMemberFunctionSymbol* isSgMemberFunctionSymbol( const SgNode * s );
323395 
323396  // ******************************************
323397  // * Memory Pool / New / Delete
323398  // ******************************************
323399 
323400  public:
323402  static const unsigned pool_size; //
323404  static std::vector<unsigned char *> pools; //
323406  static SgMemberFunctionSymbol * next_node; //
323407 
323409  static unsigned long initializeStorageClassArray(SgMemberFunctionSymbolStorageClass *); //
323410 
323412  static void clearMemoryPool(); //
323413  static void deleteMemoryPool(); //
323414 
323416  static void extendMemoryPoolForFileIO(); //
323417 
323419  static SgMemberFunctionSymbol * getPointerFromGlobalIndex(unsigned long); //
323421  static SgMemberFunctionSymbol * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
323422 
323424  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
323426  static void resetValidFreepointers(); //
323428  static unsigned long getNumberOfLastValidPointer(); //
323429 
323430 
323431 #if defined(INLINE_FUNCTIONS)
323432 
323433  inline void *operator new (size_t size);
323434 #else
323435 
323436  void *operator new (size_t size);
323437 #endif
323438 
323439  void operator delete (void* pointer, size_t size);
323440 
323441  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
323442  void operator delete (void* pointer)
323443  {
323444  // This is the generated delete operator...
323445  SgMemberFunctionSymbol::operator delete (pointer,sizeof(SgMemberFunctionSymbol));
323446  }
323447 
323449  static size_t numberOfNodes();
323450 
323452  static size_t memoryUsage();
323453 
323454  // End of scope which started in IR nodes specific code
323455  /* */
323456 
323457  /* name Internal Functions
323458  \brief Internal functions ... incomplete-documentation
323459 
323460  These functions have been made public as part of the design, but they are suggested for internal use
323461  or by particularly knowledgeable users for specialized tools or applications.
323462 
323463  \internal We could not make these private because they are required by user for special purposes. And
323464  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
323465 
323466  */
323467 
323468  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
323469  // overridden in every class by *generated* implementation
323471  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
323472  // MS: 06/28/02 container of names of variables or container indices
323473  // used used in the traversal to access AST successor nodes
323474  // overridden in every class by *generated* implementation
323477  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
323478 
323479  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
323480  // than all the vector copies. The implementation for these functions is generated for each class.
323482  virtual size_t get_numberOfTraversalSuccessors() override;
323484  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
323486  virtual size_t get_childIndex(SgNode *child) override;
323487 
323488 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
323489  // MS: 08/16/2002 method for generating RTI information
323491  virtual RTIReturnType roseRTI() override;
323492 #endif
323493  /* */
323494 
323495 
323496 
323497  /* name Deprecated Functions
323498  \brief Deprecated functions ... incomplete-documentation
323499 
323500  These functions have been deprecated from use.
323501  */
323502  /* */
323503 
323505  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
323506 
323507  // JJW (10/16/2008): Changed to a single function in Node.code, and put
323508  // getVariant() in #if 0 block to prevent confusing Doxygen
323509 #if 0
323510 
323511  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
323513  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
323514 #endif
323515  /* */
323516 
323517 
323518 
323519 
323520  public:
323521  /* name Traversal Support Functions
323522  \brief Traversal support functions ... incomplete-documentation
323523 
323524  These functions have been made public as part of the design, but they are suggested for internal use
323525  or by particularly knowledgable users for specialized tools or applications.
323526  */
323527  /* */
323528 
323529  // DQ (11/26/2005): Support for visitor pattern mechanims
323530  // (inferior to ROSE traversal mechanism, experimental).
323534 
323535  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
323537  virtual void accept (ROSE_VisitorPattern & visitor) override;
323538 
323539  // DQ (12/26/2005): Support for traversal based on the memory pool
323542  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
323543 
323546  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
323547 
323548  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
323549  // This traversal helps support internal tools that call static member functions.
323550  // note: this function operates on the memory pools.
323553  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
323554  /* */
323555 
323556 
323557  public:
323558  /* name Memory Allocation Functions
323559  \brief Memory allocations functions ... incomplete-documentation
323560 
323561  These functions have been made public as part of the design, but they are suggested for internal use
323562  or by particularly knowledgable users for specialized tools or applications.
323563  */
323564  /* */
323565 
323576  virtual bool isInMemoryPool() override;
323577 
323588  virtual void checkDataMemberPointersIfInMemoryPool() override;
323589 
323590  // DQ (4/30/2006): Modified to be a const function.
323605  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
323606 
323616  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
323617 
323629  virtual long getChildIndex( SgNode* childNode ) const override;
323630 
323631  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
323632  // comment here (changed to be a C style comment and not be a doxygen comment).
323633  /* \brief Constructor for use by AST File I/O Mechanism
323634 
323635  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
323636  which obtained via fast binary file I/O from disk.
323637  */
323638  // SgMemberFunctionSymbol( SgMemberFunctionSymbolStorageClass& source );
323639 
323640 
323641 
323642 
323643 
323644  // JH (10/24/2005): methods added to support the ast file IO
323645  private:
323646 
323647  /* name AST Memory Allocation Support Functions
323648  \brief Memory allocations support....
323649 
323650  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
323651  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
323652  and support the AST File I/O Mechanism.
323653  */
323654  /* */
323655 
323656  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
323657  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
323658  that I use the same type everywhere, if any changes are made. THe second one declares the type
323659  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
323660  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
323661  a correspinding one in the AST_FILE_IO class!
323662  */
323663  // DQ (9/2/2015): This typedef is no longer used, we can't define the
323664  // comment here (changed to be a C style comment and not be a doxygen comment).
323665  /* \brief Typedef used for low level memory access.
323666  */
323667  // typedef unsigned char* TestType;
323668 
323669  // DQ (9/2/2015): This typedef is no longer used, we can't define the
323670  // comment here (changed to be a C style comment and not be a doxygen comment).
323671  /* \brief Typedef used to hold memory addresses as values.
323672  */
323673  // typedef unsigned long AddressType;
323674 
323675 
323676 
323677  // necessary, to have direct access to the p_freepointer and the private methods !
323679  friend class AST_FILE_IO;
323680 
323682  friend class SgMemberFunctionSymbolStorageClass;
323683 
323685  friend class AstSpecificDataManagingClass;
323686 
323688  friend class AstSpecificDataManagingClassStorageClass;
323689 
323690  public:
323692  SgMemberFunctionSymbol( const SgMemberFunctionSymbolStorageClass& source );
323693 
323694  // private: // JJW hack
323695  /*
323696  name AST Memory Allocation Support Variables
323697  Memory allocations support variables
323698 
323699  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
323700  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
323701  and support the AST File I/O Mechanism.
323702  */
323703  /* */
323704 
323705  public:
323706 
323707  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
323708  // to current node (so that it will work cleanly with build functions to specify patterns).
323709  // virtual SgNode* addRegExpAttribute();
323716 
323717 // *** COMMON CODE SECTION ENDS HERE ***
323718 
323719 
323720 // End of memberFunctionString
323721 // Start of memberFunctionString
323722 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
323723 
323724  // the generated cast function
323725  // friend ROSE_DLL_API SgMemberFunctionSymbol* isSgMemberFunctionSymbol ( SgNode* s );
323726 
323728 
323729 
323730 // End of memberFunctionString
323731 // Start of memberFunctionString
323732 /* #line 47 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Symbol.code" */
323733 
323734  SgName get_name() const override;
323735  SgNode* get_symbol_basis() const override; // from GET_NAME
323736 
323737 
323738 // End of memberFunctionString
323739 // Start of memberFunctionString
323740 /* #line 41 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Symbol.code" */
323741 
323742  // DQ (3/23/2017): ROSETTA macro expansion
323743  SgType* get_type() const override;
323744  // SgNode* get_symbol_basis() const; // from GET_TYPE
323745 
323746 
323747 // End of memberFunctionString
323748 
323749 
323750  public:
323751  virtual ~SgMemberFunctionSymbol();
323752 
323753 
323754  public:
323755  SgMemberFunctionSymbol(SgFunctionDeclaration* declaration = NULL);
323756 
323757  protected:
323758 
323759 
323760 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
323761 
323762 
323763  };
323764 #endif
323765 
323766 // postdeclarations for SgMemberFunctionSymbol
323767 
323768 /* #line 323769 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
323769 
323770 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
323771 
323772 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
323773 
323774 
323775 /* #line 323776 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
323776 
323777 
323778 
323779 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
323780 
323781 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
323782 // This code is automatically generated for each
323783 // terminal and non-terminal within the defined
323784 // grammar. There is a simple way to change the
323785 // code to fix bugs etc. See the ROSE README file
323786 // for directions.
323787 
323788 // tps: (02/22/2010): Adding DLL export requirements
323789 #include "rosedll.h"
323790 
323791 // predeclarations for SgTemplateMemberFunctionSymbol
323792 
323793 /* #line 323794 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
323794 
323795 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
323796 
323797 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
323798 
323799 #if 1
323800 // Class Definition for SgTemplateMemberFunctionSymbol
323802  {
323803  public:
323804 
323805 
323806 /* #line 323807 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
323807 
323808  virtual SgNode* copy ( SgCopyHelp& help) const override;
323809 // Start of memberFunctionString
323810 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
323811 
323812 // *** COMMON CODE SECTION BEGINS HERE ***
323813 
323814  public:
323815 
323816  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
323817  // and not required which is required to match the other aspects of the copy mechanism code generation.
323818  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
323819  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
323820  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
323821  // virtual SgNode* copy ( const SgCopyHelp & help) const;
323822 
323824  virtual std::string class_name() const override;
323825 
323827  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
323828 
323830  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
323831  // static const VariantT static_variant = V_SgTemplateMemberFunctionSymbol;
323832  enum { static_variant = V_SgTemplateMemberFunctionSymbol };
323833 
323834  /* the generated cast function */
323836  ROSE_DLL_API friend SgTemplateMemberFunctionSymbol* isSgTemplateMemberFunctionSymbol( SgNode * s );
323837 
323839  ROSE_DLL_API friend const SgTemplateMemberFunctionSymbol* isSgTemplateMemberFunctionSymbol( const SgNode * s );
323840 
323841  // ******************************************
323842  // * Memory Pool / New / Delete
323843  // ******************************************
323844 
323845  public:
323847  static const unsigned pool_size; //
323849  static std::vector<unsigned char *> pools; //
323851  static SgTemplateMemberFunctionSymbol * next_node; //
323852 
323854  static unsigned long initializeStorageClassArray(SgTemplateMemberFunctionSymbolStorageClass *); //
323855 
323857  static void clearMemoryPool(); //
323858  static void deleteMemoryPool(); //
323859 
323861  static void extendMemoryPoolForFileIO(); //
323862 
323864  static SgTemplateMemberFunctionSymbol * getPointerFromGlobalIndex(unsigned long); //
323866  static SgTemplateMemberFunctionSymbol * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
323867 
323869  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
323871  static void resetValidFreepointers(); //
323873  static unsigned long getNumberOfLastValidPointer(); //
323874 
323875 
323876 #if defined(INLINE_FUNCTIONS)
323877 
323878  inline void *operator new (size_t size);
323879 #else
323880 
323881  void *operator new (size_t size);
323882 #endif
323883 
323884  void operator delete (void* pointer, size_t size);
323885 
323886  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
323887  void operator delete (void* pointer)
323888  {
323889  // This is the generated delete operator...
323890  SgTemplateMemberFunctionSymbol::operator delete (pointer,sizeof(SgTemplateMemberFunctionSymbol));
323891  }
323892 
323894  static size_t numberOfNodes();
323895 
323897  static size_t memoryUsage();
323898 
323899  // End of scope which started in IR nodes specific code
323900  /* */
323901 
323902  /* name Internal Functions
323903  \brief Internal functions ... incomplete-documentation
323904 
323905  These functions have been made public as part of the design, but they are suggested for internal use
323906  or by particularly knowledgeable users for specialized tools or applications.
323907 
323908  \internal We could not make these private because they are required by user for special purposes. And
323909  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
323910 
323911  */
323912 
323913  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
323914  // overridden in every class by *generated* implementation
323916  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
323917  // MS: 06/28/02 container of names of variables or container indices
323918  // used used in the traversal to access AST successor nodes
323919  // overridden in every class by *generated* implementation
323922  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
323923 
323924  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
323925  // than all the vector copies. The implementation for these functions is generated for each class.
323927  virtual size_t get_numberOfTraversalSuccessors() override;
323929  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
323931  virtual size_t get_childIndex(SgNode *child) override;
323932 
323933 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
323934  // MS: 08/16/2002 method for generating RTI information
323936  virtual RTIReturnType roseRTI() override;
323937 #endif
323938  /* */
323939 
323940 
323941 
323942  /* name Deprecated Functions
323943  \brief Deprecated functions ... incomplete-documentation
323944 
323945  These functions have been deprecated from use.
323946  */
323947  /* */
323948 
323950  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
323951 
323952  // JJW (10/16/2008): Changed to a single function in Node.code, and put
323953  // getVariant() in #if 0 block to prevent confusing Doxygen
323954 #if 0
323955 
323956  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
323958  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
323959 #endif
323960  /* */
323961 
323962 
323963 
323964 
323965  public:
323966  /* name Traversal Support Functions
323967  \brief Traversal support functions ... incomplete-documentation
323968 
323969  These functions have been made public as part of the design, but they are suggested for internal use
323970  or by particularly knowledgable users for specialized tools or applications.
323971  */
323972  /* */
323973 
323974  // DQ (11/26/2005): Support for visitor pattern mechanims
323975  // (inferior to ROSE traversal mechanism, experimental).
323979 
323980  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
323982  virtual void accept (ROSE_VisitorPattern & visitor) override;
323983 
323984  // DQ (12/26/2005): Support for traversal based on the memory pool
323987  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
323988 
323991  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
323992 
323993  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
323994  // This traversal helps support internal tools that call static member functions.
323995  // note: this function operates on the memory pools.
323998  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
323999  /* */
324000 
324001 
324002  public:
324003  /* name Memory Allocation Functions
324004  \brief Memory allocations functions ... incomplete-documentation
324005 
324006  These functions have been made public as part of the design, but they are suggested for internal use
324007  or by particularly knowledgable users for specialized tools or applications.
324008  */
324009  /* */
324010 
324021  virtual bool isInMemoryPool() override;
324022 
324033  virtual void checkDataMemberPointersIfInMemoryPool() override;
324034 
324035  // DQ (4/30/2006): Modified to be a const function.
324050  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
324051 
324061  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
324062 
324074  virtual long getChildIndex( SgNode* childNode ) const override;
324075 
324076  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
324077  // comment here (changed to be a C style comment and not be a doxygen comment).
324078  /* \brief Constructor for use by AST File I/O Mechanism
324079 
324080  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
324081  which obtained via fast binary file I/O from disk.
324082  */
324083  // SgTemplateMemberFunctionSymbol( SgTemplateMemberFunctionSymbolStorageClass& source );
324084 
324085 
324086 
324087 
324088 
324089  // JH (10/24/2005): methods added to support the ast file IO
324090  private:
324091 
324092  /* name AST Memory Allocation Support Functions
324093  \brief Memory allocations support....
324094 
324095  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
324096  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
324097  and support the AST File I/O Mechanism.
324098  */
324099  /* */
324100 
324101  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
324102  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
324103  that I use the same type everywhere, if any changes are made. THe second one declares the type
324104  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
324105  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
324106  a correspinding one in the AST_FILE_IO class!
324107  */
324108  // DQ (9/2/2015): This typedef is no longer used, we can't define the
324109  // comment here (changed to be a C style comment and not be a doxygen comment).
324110  /* \brief Typedef used for low level memory access.
324111  */
324112  // typedef unsigned char* TestType;
324113 
324114  // DQ (9/2/2015): This typedef is no longer used, we can't define the
324115  // comment here (changed to be a C style comment and not be a doxygen comment).
324116  /* \brief Typedef used to hold memory addresses as values.
324117  */
324118  // typedef unsigned long AddressType;
324119 
324120 
324121 
324122  // necessary, to have direct access to the p_freepointer and the private methods !
324124  friend class AST_FILE_IO;
324125 
324127  friend class SgTemplateMemberFunctionSymbolStorageClass;
324128 
324130  friend class AstSpecificDataManagingClass;
324131 
324133  friend class AstSpecificDataManagingClassStorageClass;
324134 
324135  public:
324137  SgTemplateMemberFunctionSymbol( const SgTemplateMemberFunctionSymbolStorageClass& source );
324138 
324139  // private: // JJW hack
324140  /*
324141  name AST Memory Allocation Support Variables
324142  Memory allocations support variables
324143 
324144  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
324145  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
324146  and support the AST File I/O Mechanism.
324147  */
324148  /* */
324149 
324150  public:
324151 
324152  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
324153  // to current node (so that it will work cleanly with build functions to specify patterns).
324154  // virtual SgNode* addRegExpAttribute();
324161 
324162 // *** COMMON CODE SECTION ENDS HERE ***
324163 
324164 
324165 // End of memberFunctionString
324166 // Start of memberFunctionString
324167 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
324168 
324169  // the generated cast function
324170  // friend ROSE_DLL_API SgTemplateMemberFunctionSymbol* isSgTemplateMemberFunctionSymbol ( SgNode* s );
324171 
324173 
324174 
324175 // End of memberFunctionString
324176 // Start of memberFunctionString
324177 /* #line 47 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Symbol.code" */
324178 
324179  SgName get_name() const override;
324180  SgNode* get_symbol_basis() const override; // from GET_NAME
324181 
324182 
324183 // End of memberFunctionString
324184 // Start of memberFunctionString
324185 /* #line 41 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Symbol.code" */
324186 
324187  // DQ (3/23/2017): ROSETTA macro expansion
324188  SgType* get_type() const override;
324189  // SgNode* get_symbol_basis() const; // from GET_TYPE
324190 
324191 
324192 // End of memberFunctionString
324193 
324194 
324195  public:
324196  virtual ~SgTemplateMemberFunctionSymbol();
324197 
324198 
324199  public:
324201 
324202  protected:
324203 
324204 
324205 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
324206 
324207 
324208  };
324209 #endif
324210 
324211 // postdeclarations for SgTemplateMemberFunctionSymbol
324212 
324213 /* #line 324214 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
324214 
324215 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
324216 
324217 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
324218 
324219 
324220 /* #line 324221 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
324221 
324222 
324223 
324224 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
324225 
324226 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
324227 // This code is automatically generated for each
324228 // terminal and non-terminal within the defined
324229 // grammar. There is a simple way to change the
324230 // code to fix bugs etc. See the ROSE README file
324231 // for directions.
324232 
324233 // tps: (02/22/2010): Adding DLL export requirements
324234 #include "rosedll.h"
324235 
324236 // predeclarations for SgTemplateFunctionSymbol
324237 
324238 /* #line 324239 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
324239 
324240 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
324241 
324242 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
324243 
324244 #if 1
324245 // Class Definition for SgTemplateFunctionSymbol
324246 class ROSE_DLL_API SgTemplateFunctionSymbol : public SgFunctionSymbol
324247  {
324248  public:
324249 
324250 
324251 /* #line 324252 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
324252 
324253  virtual SgNode* copy ( SgCopyHelp& help) const override;
324254 // Start of memberFunctionString
324255 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
324256 
324257 // *** COMMON CODE SECTION BEGINS HERE ***
324258 
324259  public:
324260 
324261  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
324262  // and not required which is required to match the other aspects of the copy mechanism code generation.
324263  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
324264  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
324265  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
324266  // virtual SgNode* copy ( const SgCopyHelp & help) const;
324267 
324269  virtual std::string class_name() const override;
324270 
324272  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
324273 
324275  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
324276  // static const VariantT static_variant = V_SgTemplateFunctionSymbol;
324277  enum { static_variant = V_SgTemplateFunctionSymbol };
324278 
324279  /* the generated cast function */
324281  ROSE_DLL_API friend SgTemplateFunctionSymbol* isSgTemplateFunctionSymbol( SgNode * s );
324282 
324284  ROSE_DLL_API friend const SgTemplateFunctionSymbol* isSgTemplateFunctionSymbol( const SgNode * s );
324285 
324286  // ******************************************
324287  // * Memory Pool / New / Delete
324288  // ******************************************
324289 
324290  public:
324292  static const unsigned pool_size; //
324294  static std::vector<unsigned char *> pools; //
324296  static SgTemplateFunctionSymbol * next_node; //
324297 
324299  static unsigned long initializeStorageClassArray(SgTemplateFunctionSymbolStorageClass *); //
324300 
324302  static void clearMemoryPool(); //
324303  static void deleteMemoryPool(); //
324304 
324306  static void extendMemoryPoolForFileIO(); //
324307 
324309  static SgTemplateFunctionSymbol * getPointerFromGlobalIndex(unsigned long); //
324311  static SgTemplateFunctionSymbol * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
324312 
324314  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
324316  static void resetValidFreepointers(); //
324318  static unsigned long getNumberOfLastValidPointer(); //
324319 
324320 
324321 #if defined(INLINE_FUNCTIONS)
324322 
324323  inline void *operator new (size_t size);
324324 #else
324325 
324326  void *operator new (size_t size);
324327 #endif
324328 
324329  void operator delete (void* pointer, size_t size);
324330 
324331  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
324332  void operator delete (void* pointer)
324333  {
324334  // This is the generated delete operator...
324335  SgTemplateFunctionSymbol::operator delete (pointer,sizeof(SgTemplateFunctionSymbol));
324336  }
324337 
324339  static size_t numberOfNodes();
324340 
324342  static size_t memoryUsage();
324343 
324344  // End of scope which started in IR nodes specific code
324345  /* */
324346 
324347  /* name Internal Functions
324348  \brief Internal functions ... incomplete-documentation
324349 
324350  These functions have been made public as part of the design, but they are suggested for internal use
324351  or by particularly knowledgeable users for specialized tools or applications.
324352 
324353  \internal We could not make these private because they are required by user for special purposes. And
324354  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
324355 
324356  */
324357 
324358  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
324359  // overridden in every class by *generated* implementation
324361  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
324362  // MS: 06/28/02 container of names of variables or container indices
324363  // used used in the traversal to access AST successor nodes
324364  // overridden in every class by *generated* implementation
324367  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
324368 
324369  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
324370  // than all the vector copies. The implementation for these functions is generated for each class.
324372  virtual size_t get_numberOfTraversalSuccessors() override;
324374  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
324376  virtual size_t get_childIndex(SgNode *child) override;
324377 
324378 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
324379  // MS: 08/16/2002 method for generating RTI information
324381  virtual RTIReturnType roseRTI() override;
324382 #endif
324383  /* */
324384 
324385 
324386 
324387  /* name Deprecated Functions
324388  \brief Deprecated functions ... incomplete-documentation
324389 
324390  These functions have been deprecated from use.
324391  */
324392  /* */
324393 
324395  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
324396 
324397  // JJW (10/16/2008): Changed to a single function in Node.code, and put
324398  // getVariant() in #if 0 block to prevent confusing Doxygen
324399 #if 0
324400 
324401  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
324403  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
324404 #endif
324405  /* */
324406 
324407 
324408 
324409 
324410  public:
324411  /* name Traversal Support Functions
324412  \brief Traversal support functions ... incomplete-documentation
324413 
324414  These functions have been made public as part of the design, but they are suggested for internal use
324415  or by particularly knowledgable users for specialized tools or applications.
324416  */
324417  /* */
324418 
324419  // DQ (11/26/2005): Support for visitor pattern mechanims
324420  // (inferior to ROSE traversal mechanism, experimental).
324424 
324425  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
324427  virtual void accept (ROSE_VisitorPattern & visitor) override;
324428 
324429  // DQ (12/26/2005): Support for traversal based on the memory pool
324432  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
324433 
324436  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
324437 
324438  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
324439  // This traversal helps support internal tools that call static member functions.
324440  // note: this function operates on the memory pools.
324443  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
324444  /* */
324445 
324446 
324447  public:
324448  /* name Memory Allocation Functions
324449  \brief Memory allocations functions ... incomplete-documentation
324450 
324451  These functions have been made public as part of the design, but they are suggested for internal use
324452  or by particularly knowledgable users for specialized tools or applications.
324453  */
324454  /* */
324455 
324466  virtual bool isInMemoryPool() override;
324467 
324478  virtual void checkDataMemberPointersIfInMemoryPool() override;
324479 
324480  // DQ (4/30/2006): Modified to be a const function.
324495  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
324496 
324506  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
324507 
324519  virtual long getChildIndex( SgNode* childNode ) const override;
324520 
324521  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
324522  // comment here (changed to be a C style comment and not be a doxygen comment).
324523  /* \brief Constructor for use by AST File I/O Mechanism
324524 
324525  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
324526  which obtained via fast binary file I/O from disk.
324527  */
324528  // SgTemplateFunctionSymbol( SgTemplateFunctionSymbolStorageClass& source );
324529 
324530 
324531 
324532 
324533 
324534  // JH (10/24/2005): methods added to support the ast file IO
324535  private:
324536 
324537  /* name AST Memory Allocation Support Functions
324538  \brief Memory allocations support....
324539 
324540  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
324541  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
324542  and support the AST File I/O Mechanism.
324543  */
324544  /* */
324545 
324546  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
324547  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
324548  that I use the same type everywhere, if any changes are made. THe second one declares the type
324549  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
324550  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
324551  a correspinding one in the AST_FILE_IO class!
324552  */
324553  // DQ (9/2/2015): This typedef is no longer used, we can't define the
324554  // comment here (changed to be a C style comment and not be a doxygen comment).
324555  /* \brief Typedef used for low level memory access.
324556  */
324557  // typedef unsigned char* TestType;
324558 
324559  // DQ (9/2/2015): This typedef is no longer used, we can't define the
324560  // comment here (changed to be a C style comment and not be a doxygen comment).
324561  /* \brief Typedef used to hold memory addresses as values.
324562  */
324563  // typedef unsigned long AddressType;
324564 
324565 
324566 
324567  // necessary, to have direct access to the p_freepointer and the private methods !
324569  friend class AST_FILE_IO;
324570 
324572  friend class SgTemplateFunctionSymbolStorageClass;
324573 
324575  friend class AstSpecificDataManagingClass;
324576 
324578  friend class AstSpecificDataManagingClassStorageClass;
324579 
324580  public:
324582  SgTemplateFunctionSymbol( const SgTemplateFunctionSymbolStorageClass& source );
324583 
324584  // private: // JJW hack
324585  /*
324586  name AST Memory Allocation Support Variables
324587  Memory allocations support variables
324588 
324589  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
324590  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
324591  and support the AST File I/O Mechanism.
324592  */
324593  /* */
324594 
324595  public:
324596 
324597  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
324598  // to current node (so that it will work cleanly with build functions to specify patterns).
324599  // virtual SgNode* addRegExpAttribute();
324606 
324607 // *** COMMON CODE SECTION ENDS HERE ***
324608 
324609 
324610 // End of memberFunctionString
324611 // Start of memberFunctionString
324612 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
324613 
324614  // the generated cast function
324615  // friend ROSE_DLL_API SgTemplateFunctionSymbol* isSgTemplateFunctionSymbol ( SgNode* s );
324616 
324618 
324619 
324620 // End of memberFunctionString
324621 // Start of memberFunctionString
324622 /* #line 47 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Symbol.code" */
324623 
324624  SgName get_name() const override;
324625  SgNode* get_symbol_basis() const override; // from GET_NAME
324626 
324627 
324628 // End of memberFunctionString
324629 // Start of memberFunctionString
324630 /* #line 41 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Symbol.code" */
324631 
324632  // DQ (3/23/2017): ROSETTA macro expansion
324633  SgType* get_type() const override;
324634  // SgNode* get_symbol_basis() const; // from GET_TYPE
324635 
324636 
324637 // End of memberFunctionString
324638 
324639 
324640  public:
324641  virtual ~SgTemplateFunctionSymbol();
324642 
324643 
324644  public:
324645  SgTemplateFunctionSymbol(SgFunctionDeclaration* declaration = NULL);
324646 
324647  protected:
324648 
324649 
324650 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
324651 
324652 
324653  };
324654 #endif
324655 
324656 // postdeclarations for SgTemplateFunctionSymbol
324657 
324658 /* #line 324659 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
324659 
324660 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
324661 
324662 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
324663 
324664 
324665 /* #line 324666 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
324666 
324667 
324668 
324669 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
324670 
324671 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
324672 // This code is automatically generated for each
324673 // terminal and non-terminal within the defined
324674 // grammar. There is a simple way to change the
324675 // code to fix bugs etc. See the ROSE README file
324676 // for directions.
324677 
324678 // tps: (02/22/2010): Adding DLL export requirements
324679 #include "rosedll.h"
324680 
324681 // predeclarations for SgRenameSymbol
324682 
324683 /* #line 324684 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
324684 
324685 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
324686 
324687 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
324688 
324689 #if 1
324690 // Class Definition for SgRenameSymbol
324691 class ROSE_DLL_API SgRenameSymbol : public SgFunctionSymbol
324692  {
324693  public:
324694 
324695 
324696 /* #line 324697 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
324697 
324698  virtual SgNode* copy ( SgCopyHelp& help) const override;
324699 // Start of memberFunctionString
324700 /* #line 108 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Symbol.code" */
324701 
324702 
324705  // SgSymbol* get_base() const;
324706 
324707 
324708 
324709 // End of memberFunctionString
324710 // Start of memberFunctionString
324711 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
324712 
324713 // *** COMMON CODE SECTION BEGINS HERE ***
324714 
324715  public:
324716 
324717  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
324718  // and not required which is required to match the other aspects of the copy mechanism code generation.
324719  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
324720  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
324721  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
324722  // virtual SgNode* copy ( const SgCopyHelp & help) const;
324723 
324725  virtual std::string class_name() const override;
324726 
324728  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
324729 
324731  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
324732  // static const VariantT static_variant = V_SgRenameSymbol;
324733  enum { static_variant = V_SgRenameSymbol };
324734 
324735  /* the generated cast function */
324737  ROSE_DLL_API friend SgRenameSymbol* isSgRenameSymbol( SgNode * s );
324738 
324740  ROSE_DLL_API friend const SgRenameSymbol* isSgRenameSymbol( const SgNode * s );
324741 
324742  // ******************************************
324743  // * Memory Pool / New / Delete
324744  // ******************************************
324745 
324746  public:
324748  static const unsigned pool_size; //
324750  static std::vector<unsigned char *> pools; //
324752  static SgRenameSymbol * next_node; //
324753 
324755  static unsigned long initializeStorageClassArray(SgRenameSymbolStorageClass *); //
324756 
324758  static void clearMemoryPool(); //
324759  static void deleteMemoryPool(); //
324760 
324762  static void extendMemoryPoolForFileIO(); //
324763 
324765  static SgRenameSymbol * getPointerFromGlobalIndex(unsigned long); //
324767  static SgRenameSymbol * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
324768 
324770  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
324772  static void resetValidFreepointers(); //
324774  static unsigned long getNumberOfLastValidPointer(); //
324775 
324776 
324777 #if defined(INLINE_FUNCTIONS)
324778 
324779  inline void *operator new (size_t size);
324780 #else
324781 
324782  void *operator new (size_t size);
324783 #endif
324784 
324785  void operator delete (void* pointer, size_t size);
324786 
324787  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
324788  void operator delete (void* pointer)
324789  {
324790  // This is the generated delete operator...
324791  SgRenameSymbol::operator delete (pointer,sizeof(SgRenameSymbol));
324792  }
324793 
324795  static size_t numberOfNodes();
324796 
324798  static size_t memoryUsage();
324799 
324800  // End of scope which started in IR nodes specific code
324801  /* */
324802 
324803  /* name Internal Functions
324804  \brief Internal functions ... incomplete-documentation
324805 
324806  These functions have been made public as part of the design, but they are suggested for internal use
324807  or by particularly knowledgeable users for specialized tools or applications.
324808 
324809  \internal We could not make these private because they are required by user for special purposes. And
324810  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
324811 
324812  */
324813 
324814  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
324815  // overridden in every class by *generated* implementation
324817  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
324818  // MS: 06/28/02 container of names of variables or container indices
324819  // used used in the traversal to access AST successor nodes
324820  // overridden in every class by *generated* implementation
324823  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
324824 
324825  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
324826  // than all the vector copies. The implementation for these functions is generated for each class.
324828  virtual size_t get_numberOfTraversalSuccessors() override;
324830  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
324832  virtual size_t get_childIndex(SgNode *child) override;
324833 
324834 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
324835  // MS: 08/16/2002 method for generating RTI information
324837  virtual RTIReturnType roseRTI() override;
324838 #endif
324839  /* */
324840 
324841 
324842 
324843  /* name Deprecated Functions
324844  \brief Deprecated functions ... incomplete-documentation
324845 
324846  These functions have been deprecated from use.
324847  */
324848  /* */
324849 
324851  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
324852 
324853  // JJW (10/16/2008): Changed to a single function in Node.code, and put
324854  // getVariant() in #if 0 block to prevent confusing Doxygen
324855 #if 0
324856 
324857  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
324859  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
324860 #endif
324861  /* */
324862 
324863 
324864 
324865 
324866  public:
324867  /* name Traversal Support Functions
324868  \brief Traversal support functions ... incomplete-documentation
324869 
324870  These functions have been made public as part of the design, but they are suggested for internal use
324871  or by particularly knowledgable users for specialized tools or applications.
324872  */
324873  /* */
324874 
324875  // DQ (11/26/2005): Support for visitor pattern mechanims
324876  // (inferior to ROSE traversal mechanism, experimental).
324880 
324881  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
324883  virtual void accept (ROSE_VisitorPattern & visitor) override;
324884 
324885  // DQ (12/26/2005): Support for traversal based on the memory pool
324888  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
324889 
324892  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
324893 
324894  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
324895  // This traversal helps support internal tools that call static member functions.
324896  // note: this function operates on the memory pools.
324899  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
324900  /* */
324901 
324902 
324903  public:
324904  /* name Memory Allocation Functions
324905  \brief Memory allocations functions ... incomplete-documentation
324906 
324907  These functions have been made public as part of the design, but they are suggested for internal use
324908  or by particularly knowledgable users for specialized tools or applications.
324909  */
324910  /* */
324911 
324922  virtual bool isInMemoryPool() override;
324923 
324934  virtual void checkDataMemberPointersIfInMemoryPool() override;
324935 
324936  // DQ (4/30/2006): Modified to be a const function.
324951  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
324952 
324962  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
324963 
324975  virtual long getChildIndex( SgNode* childNode ) const override;
324976 
324977  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
324978  // comment here (changed to be a C style comment and not be a doxygen comment).
324979  /* \brief Constructor for use by AST File I/O Mechanism
324980 
324981  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
324982  which obtained via fast binary file I/O from disk.
324983  */
324984  // SgRenameSymbol( SgRenameSymbolStorageClass& source );
324985 
324986 
324987 
324988 
324989 
324990  // JH (10/24/2005): methods added to support the ast file IO
324991  private:
324992 
324993  /* name AST Memory Allocation Support Functions
324994  \brief Memory allocations support....
324995 
324996  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
324997  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
324998  and support the AST File I/O Mechanism.
324999  */
325000  /* */
325001 
325002  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
325003  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
325004  that I use the same type everywhere, if any changes are made. THe second one declares the type
325005  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
325006  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
325007  a correspinding one in the AST_FILE_IO class!
325008  */
325009  // DQ (9/2/2015): This typedef is no longer used, we can't define the
325010  // comment here (changed to be a C style comment and not be a doxygen comment).
325011  /* \brief Typedef used for low level memory access.
325012  */
325013  // typedef unsigned char* TestType;
325014 
325015  // DQ (9/2/2015): This typedef is no longer used, we can't define the
325016  // comment here (changed to be a C style comment and not be a doxygen comment).
325017  /* \brief Typedef used to hold memory addresses as values.
325018  */
325019  // typedef unsigned long AddressType;
325020 
325021 
325022 
325023  // necessary, to have direct access to the p_freepointer and the private methods !
325025  friend class AST_FILE_IO;
325026 
325028  friend class SgRenameSymbolStorageClass;
325029 
325031  friend class AstSpecificDataManagingClass;
325032 
325034  friend class AstSpecificDataManagingClassStorageClass;
325035 
325036  public:
325038  SgRenameSymbol( const SgRenameSymbolStorageClass& source );
325039 
325040  // private: // JJW hack
325041  /*
325042  name AST Memory Allocation Support Variables
325043  Memory allocations support variables
325044 
325045  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
325046  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
325047  and support the AST File I/O Mechanism.
325048  */
325049  /* */
325050 
325051  public:
325052 
325053  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
325054  // to current node (so that it will work cleanly with build functions to specify patterns).
325055  // virtual SgNode* addRegExpAttribute();
325062 
325063 // *** COMMON CODE SECTION ENDS HERE ***
325064 
325065 
325066 // End of memberFunctionString
325067 // Start of memberFunctionString
325068 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
325069 
325070  // the generated cast function
325071  // friend ROSE_DLL_API SgRenameSymbol* isSgRenameSymbol ( SgNode* s );
325072 
325074 
325075 
325076 // End of memberFunctionString
325077 // Start of memberFunctionString
325078 /* #line 47 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Symbol.code" */
325079 
325080  SgName get_name() const override;
325081  SgNode* get_symbol_basis() const override; // from GET_NAME
325082 
325083 
325084 // End of memberFunctionString
325085 // Start of memberFunctionString
325086 /* #line 41 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Symbol.code" */
325087 
325088  // DQ (3/23/2017): ROSETTA macro expansion
325089  SgType* get_type() const override;
325090  // SgNode* get_symbol_basis() const; // from GET_TYPE
325091 
325092 
325093 // End of memberFunctionString
325094 
325095  public:
325096  SgSymbol* get_original_symbol() const;
325097  void set_original_symbol(SgSymbol* original_symbol);
325098 
325099  public:
325100  SgName get_new_name() const;
325101  void set_new_name(SgName new_name);
325102 
325103 
325104  public:
325105  virtual ~SgRenameSymbol();
325106 
325107 
325108  public:
325109  SgRenameSymbol(SgFunctionDeclaration* declaration = NULL, SgSymbol* original_symbol = NULL, SgName new_name = "");
325110 
325111  protected:
325112 // Start of memberFunctionString
325113 SgSymbol* p_original_symbol;
325114 
325115 // End of memberFunctionString
325116 // Start of memberFunctionString
325117 SgName p_new_name;
325118 
325119 // End of memberFunctionString
325120 
325121 
325122 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
325123 
325124 
325125  };
325126 #endif
325127 
325128 // postdeclarations for SgRenameSymbol
325129 
325130 /* #line 325131 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
325131 
325132 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
325133 
325134 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
325135 
325136 
325137 /* #line 325138 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
325138 
325139 
325140 
325141 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
325142 
325143 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
325144 // This code is automatically generated for each
325145 // terminal and non-terminal within the defined
325146 // grammar. There is a simple way to change the
325147 // code to fix bugs etc. See the ROSE README file
325148 // for directions.
325149 
325150 // tps: (02/22/2010): Adding DLL export requirements
325151 #include "rosedll.h"
325152 
325153 // predeclarations for SgFunctionTypeSymbol
325154 
325155 /* #line 325156 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
325156 
325157 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
325158 
325159 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
325160 
325161 #if 1
325162 // Class Definition for SgFunctionTypeSymbol
325163 class ROSE_DLL_API SgFunctionTypeSymbol : public SgSymbol
325164  {
325165  public:
325166 
325167 
325168 /* #line 325169 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
325169 
325170  virtual SgNode* copy ( SgCopyHelp& help) const override;
325171 // Start of memberFunctionString
325172 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
325173 
325174 // *** COMMON CODE SECTION BEGINS HERE ***
325175 
325176  public:
325177 
325178  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
325179  // and not required which is required to match the other aspects of the copy mechanism code generation.
325180  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
325181  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
325182  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
325183  // virtual SgNode* copy ( const SgCopyHelp & help) const;
325184 
325186  virtual std::string class_name() const override;
325187 
325189  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
325190 
325192  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
325193  // static const VariantT static_variant = V_SgFunctionTypeSymbol;
325194  enum { static_variant = V_SgFunctionTypeSymbol };
325195 
325196  /* the generated cast function */
325198  ROSE_DLL_API friend SgFunctionTypeSymbol* isSgFunctionTypeSymbol( SgNode * s );
325199 
325201  ROSE_DLL_API friend const SgFunctionTypeSymbol* isSgFunctionTypeSymbol( const SgNode * s );
325202 
325203  // ******************************************
325204  // * Memory Pool / New / Delete
325205  // ******************************************
325206 
325207  public:
325209  static const unsigned pool_size; //
325211  static std::vector<unsigned char *> pools; //
325213  static SgFunctionTypeSymbol * next_node; //
325214 
325216  static unsigned long initializeStorageClassArray(SgFunctionTypeSymbolStorageClass *); //
325217 
325219  static void clearMemoryPool(); //
325220  static void deleteMemoryPool(); //
325221 
325223  static void extendMemoryPoolForFileIO(); //
325224 
325226  static SgFunctionTypeSymbol * getPointerFromGlobalIndex(unsigned long); //
325228  static SgFunctionTypeSymbol * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
325229 
325231  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
325233  static void resetValidFreepointers(); //
325235  static unsigned long getNumberOfLastValidPointer(); //
325236 
325237 
325238 #if defined(INLINE_FUNCTIONS)
325239 
325240  inline void *operator new (size_t size);
325241 #else
325242 
325243  void *operator new (size_t size);
325244 #endif
325245 
325246  void operator delete (void* pointer, size_t size);
325247 
325248  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
325249  void operator delete (void* pointer)
325250  {
325251  // This is the generated delete operator...
325252  SgFunctionTypeSymbol::operator delete (pointer,sizeof(SgFunctionTypeSymbol));
325253  }
325254 
325256  static size_t numberOfNodes();
325257 
325259  static size_t memoryUsage();
325260 
325261  // End of scope which started in IR nodes specific code
325262  /* */
325263 
325264  /* name Internal Functions
325265  \brief Internal functions ... incomplete-documentation
325266 
325267  These functions have been made public as part of the design, but they are suggested for internal use
325268  or by particularly knowledgeable users for specialized tools or applications.
325269 
325270  \internal We could not make these private because they are required by user for special purposes. And
325271  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
325272 
325273  */
325274 
325275  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
325276  // overridden in every class by *generated* implementation
325278  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
325279  // MS: 06/28/02 container of names of variables or container indices
325280  // used used in the traversal to access AST successor nodes
325281  // overridden in every class by *generated* implementation
325284  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
325285 
325286  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
325287  // than all the vector copies. The implementation for these functions is generated for each class.
325289  virtual size_t get_numberOfTraversalSuccessors() override;
325291  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
325293  virtual size_t get_childIndex(SgNode *child) override;
325294 
325295 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
325296  // MS: 08/16/2002 method for generating RTI information
325298  virtual RTIReturnType roseRTI() override;
325299 #endif
325300  /* */
325301 
325302 
325303 
325304  /* name Deprecated Functions
325305  \brief Deprecated functions ... incomplete-documentation
325306 
325307  These functions have been deprecated from use.
325308  */
325309  /* */
325310 
325312  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
325313 
325314  // JJW (10/16/2008): Changed to a single function in Node.code, and put
325315  // getVariant() in #if 0 block to prevent confusing Doxygen
325316 #if 0
325317 
325318  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
325320  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
325321 #endif
325322  /* */
325323 
325324 
325325 
325326 
325327  public:
325328  /* name Traversal Support Functions
325329  \brief Traversal support functions ... incomplete-documentation
325330 
325331  These functions have been made public as part of the design, but they are suggested for internal use
325332  or by particularly knowledgable users for specialized tools or applications.
325333  */
325334  /* */
325335 
325336  // DQ (11/26/2005): Support for visitor pattern mechanims
325337  // (inferior to ROSE traversal mechanism, experimental).
325341 
325342  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
325344  virtual void accept (ROSE_VisitorPattern & visitor) override;
325345 
325346  // DQ (12/26/2005): Support for traversal based on the memory pool
325349  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
325350 
325353  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
325354 
325355  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
325356  // This traversal helps support internal tools that call static member functions.
325357  // note: this function operates on the memory pools.
325360  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
325361  /* */
325362 
325363 
325364  public:
325365  /* name Memory Allocation Functions
325366  \brief Memory allocations functions ... incomplete-documentation
325367 
325368  These functions have been made public as part of the design, but they are suggested for internal use
325369  or by particularly knowledgable users for specialized tools or applications.
325370  */
325371  /* */
325372 
325383  virtual bool isInMemoryPool() override;
325384 
325395  virtual void checkDataMemberPointersIfInMemoryPool() override;
325396 
325397  // DQ (4/30/2006): Modified to be a const function.
325412  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
325413 
325423  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
325424 
325436  virtual long getChildIndex( SgNode* childNode ) const override;
325437 
325438  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
325439  // comment here (changed to be a C style comment and not be a doxygen comment).
325440  /* \brief Constructor for use by AST File I/O Mechanism
325441 
325442  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
325443  which obtained via fast binary file I/O from disk.
325444  */
325445  // SgFunctionTypeSymbol( SgFunctionTypeSymbolStorageClass& source );
325446 
325447 
325448 
325449 
325450 
325451  // JH (10/24/2005): methods added to support the ast file IO
325452  private:
325453 
325454  /* name AST Memory Allocation Support Functions
325455  \brief Memory allocations support....
325456 
325457  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
325458  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
325459  and support the AST File I/O Mechanism.
325460  */
325461  /* */
325462 
325463  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
325464  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
325465  that I use the same type everywhere, if any changes are made. THe second one declares the type
325466  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
325467  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
325468  a correspinding one in the AST_FILE_IO class!
325469  */
325470  // DQ (9/2/2015): This typedef is no longer used, we can't define the
325471  // comment here (changed to be a C style comment and not be a doxygen comment).
325472  /* \brief Typedef used for low level memory access.
325473  */
325474  // typedef unsigned char* TestType;
325475 
325476  // DQ (9/2/2015): This typedef is no longer used, we can't define the
325477  // comment here (changed to be a C style comment and not be a doxygen comment).
325478  /* \brief Typedef used to hold memory addresses as values.
325479  */
325480  // typedef unsigned long AddressType;
325481 
325482 
325483 
325484  // necessary, to have direct access to the p_freepointer and the private methods !
325486  friend class AST_FILE_IO;
325487 
325489  friend class SgFunctionTypeSymbolStorageClass;
325490 
325492  friend class AstSpecificDataManagingClass;
325493 
325495  friend class AstSpecificDataManagingClassStorageClass;
325496 
325497  public:
325499  SgFunctionTypeSymbol( const SgFunctionTypeSymbolStorageClass& source );
325500 
325501  // private: // JJW hack
325502  /*
325503  name AST Memory Allocation Support Variables
325504  Memory allocations support variables
325505 
325506  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
325507  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
325508  and support the AST File I/O Mechanism.
325509  */
325510  /* */
325511 
325512  public:
325513 
325514  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
325515  // to current node (so that it will work cleanly with build functions to specify patterns).
325516  // virtual SgNode* addRegExpAttribute();
325523 
325524 // *** COMMON CODE SECTION ENDS HERE ***
325525 
325526 
325527 // End of memberFunctionString
325528 // Start of memberFunctionString
325529 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
325530 
325531  // the generated cast function
325532  // friend ROSE_DLL_API SgFunctionTypeSymbol* isSgFunctionTypeSymbol ( SgNode* s );
325533 
325534  typedef SgSymbol base_node_type;
325535 
325536 
325537 // End of memberFunctionString
325538 
325539  public:
325540  SgName get_name() const override /* (getDataAccessFunctionPrototypeString) */;
325541  void set_name(SgName name) /* (getDataAccessFunctionPrototypeString) */;
325542 
325543  public:
325544  SgType* get_type() const override /* (getDataAccessFunctionPrototypeString) */;
325545  void set_type(SgType* type) /* (getDataAccessFunctionPrototypeString) */;
325546 
325547 
325548  public:
325549  virtual ~SgFunctionTypeSymbol();
325550 
325551 
325552  public:
325553  SgFunctionTypeSymbol(SgName name = "", SgType* type = NULL);
325554 
325555  protected:
325556 // Start of memberFunctionString
325557 SgName p_name;
325558 
325559 // End of memberFunctionString
325560 // Start of memberFunctionString
325561 SgType* p_type;
325562 
325563 // End of memberFunctionString
325564 
325565 
325566 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
325567 
325568 
325569  };
325570 #endif
325571 
325572 // postdeclarations for SgFunctionTypeSymbol
325573 
325574 /* #line 325575 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
325575 
325576 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
325577 
325578 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
325579 
325580 
325581 /* #line 325582 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
325582 
325583 
325584 
325585 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
325586 
325587 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
325588 // This code is automatically generated for each
325589 // terminal and non-terminal within the defined
325590 // grammar. There is a simple way to change the
325591 // code to fix bugs etc. See the ROSE README file
325592 // for directions.
325593 
325594 // tps: (02/22/2010): Adding DLL export requirements
325595 #include "rosedll.h"
325596 
325597 // predeclarations for SgClassSymbol
325598 
325599 /* #line 325600 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
325600 
325601 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
325602 
325603 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
325604 
325605 #if 1
325606 // Class Definition for SgClassSymbol
325607 class ROSE_DLL_API SgClassSymbol : public SgSymbol
325608  {
325609  public:
325610 
325611 
325612 /* #line 325613 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
325613 
325614  virtual SgNode* copy ( SgCopyHelp& help) const override;
325615 // Start of memberFunctionString
325616 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
325617 
325618 // *** COMMON CODE SECTION BEGINS HERE ***
325619 
325620  public:
325621 
325622  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
325623  // and not required which is required to match the other aspects of the copy mechanism code generation.
325624  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
325625  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
325626  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
325627  // virtual SgNode* copy ( const SgCopyHelp & help) const;
325628 
325630  virtual std::string class_name() const override;
325631 
325633  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
325634 
325636  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
325637  // static const VariantT static_variant = V_SgClassSymbol;
325638  enum { static_variant = V_SgClassSymbol };
325639 
325640  /* the generated cast function */
325642  ROSE_DLL_API friend SgClassSymbol* isSgClassSymbol( SgNode * s );
325643 
325645  ROSE_DLL_API friend const SgClassSymbol* isSgClassSymbol( const SgNode * s );
325646 
325647  // ******************************************
325648  // * Memory Pool / New / Delete
325649  // ******************************************
325650 
325651  public:
325653  static const unsigned pool_size; //
325655  static std::vector<unsigned char *> pools; //
325657  static SgClassSymbol * next_node; //
325658 
325660  static unsigned long initializeStorageClassArray(SgClassSymbolStorageClass *); //
325661 
325663  static void clearMemoryPool(); //
325664  static void deleteMemoryPool(); //
325665 
325667  static void extendMemoryPoolForFileIO(); //
325668 
325670  static SgClassSymbol * getPointerFromGlobalIndex(unsigned long); //
325672  static SgClassSymbol * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
325673 
325675  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
325677  static void resetValidFreepointers(); //
325679  static unsigned long getNumberOfLastValidPointer(); //
325680 
325681 
325682 #if defined(INLINE_FUNCTIONS)
325683 
325684  inline void *operator new (size_t size);
325685 #else
325686 
325687  void *operator new (size_t size);
325688 #endif
325689 
325690  void operator delete (void* pointer, size_t size);
325691 
325692  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
325693  void operator delete (void* pointer)
325694  {
325695  // This is the generated delete operator...
325696  SgClassSymbol::operator delete (pointer,sizeof(SgClassSymbol));
325697  }
325698 
325700  static size_t numberOfNodes();
325701 
325703  static size_t memoryUsage();
325704 
325705  // End of scope which started in IR nodes specific code
325706  /* */
325707 
325708  /* name Internal Functions
325709  \brief Internal functions ... incomplete-documentation
325710 
325711  These functions have been made public as part of the design, but they are suggested for internal use
325712  or by particularly knowledgeable users for specialized tools or applications.
325713 
325714  \internal We could not make these private because they are required by user for special purposes. And
325715  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
325716 
325717  */
325718 
325719  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
325720  // overridden in every class by *generated* implementation
325722  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
325723  // MS: 06/28/02 container of names of variables or container indices
325724  // used used in the traversal to access AST successor nodes
325725  // overridden in every class by *generated* implementation
325728  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
325729 
325730  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
325731  // than all the vector copies. The implementation for these functions is generated for each class.
325733  virtual size_t get_numberOfTraversalSuccessors() override;
325735  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
325737  virtual size_t get_childIndex(SgNode *child) override;
325738 
325739 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
325740  // MS: 08/16/2002 method for generating RTI information
325742  virtual RTIReturnType roseRTI() override;
325743 #endif
325744  /* */
325745 
325746 
325747 
325748  /* name Deprecated Functions
325749  \brief Deprecated functions ... incomplete-documentation
325750 
325751  These functions have been deprecated from use.
325752  */
325753  /* */
325754 
325756  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
325757 
325758  // JJW (10/16/2008): Changed to a single function in Node.code, and put
325759  // getVariant() in #if 0 block to prevent confusing Doxygen
325760 #if 0
325761 
325762  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
325764  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
325765 #endif
325766  /* */
325767 
325768 
325769 
325770 
325771  public:
325772  /* name Traversal Support Functions
325773  \brief Traversal support functions ... incomplete-documentation
325774 
325775  These functions have been made public as part of the design, but they are suggested for internal use
325776  or by particularly knowledgable users for specialized tools or applications.
325777  */
325778  /* */
325779 
325780  // DQ (11/26/2005): Support for visitor pattern mechanims
325781  // (inferior to ROSE traversal mechanism, experimental).
325785 
325786  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
325788  virtual void accept (ROSE_VisitorPattern & visitor) override;
325789 
325790  // DQ (12/26/2005): Support for traversal based on the memory pool
325793  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
325794 
325797  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
325798 
325799  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
325800  // This traversal helps support internal tools that call static member functions.
325801  // note: this function operates on the memory pools.
325804  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
325805  /* */
325806 
325807 
325808  public:
325809  /* name Memory Allocation Functions
325810  \brief Memory allocations functions ... incomplete-documentation
325811 
325812  These functions have been made public as part of the design, but they are suggested for internal use
325813  or by particularly knowledgable users for specialized tools or applications.
325814  */
325815  /* */
325816 
325827  virtual bool isInMemoryPool() override;
325828 
325839  virtual void checkDataMemberPointersIfInMemoryPool() override;
325840 
325841  // DQ (4/30/2006): Modified to be a const function.
325856  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
325857 
325867  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
325868 
325880  virtual long getChildIndex( SgNode* childNode ) const override;
325881 
325882  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
325883  // comment here (changed to be a C style comment and not be a doxygen comment).
325884  /* \brief Constructor for use by AST File I/O Mechanism
325885 
325886  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
325887  which obtained via fast binary file I/O from disk.
325888  */
325889  // SgClassSymbol( SgClassSymbolStorageClass& source );
325890 
325891 
325892 
325893 
325894 
325895  // JH (10/24/2005): methods added to support the ast file IO
325896  private:
325897 
325898  /* name AST Memory Allocation Support Functions
325899  \brief Memory allocations support....
325900 
325901  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
325902  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
325903  and support the AST File I/O Mechanism.
325904  */
325905  /* */
325906 
325907  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
325908  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
325909  that I use the same type everywhere, if any changes are made. THe second one declares the type
325910  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
325911  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
325912  a correspinding one in the AST_FILE_IO class!
325913  */
325914  // DQ (9/2/2015): This typedef is no longer used, we can't define the
325915  // comment here (changed to be a C style comment and not be a doxygen comment).
325916  /* \brief Typedef used for low level memory access.
325917  */
325918  // typedef unsigned char* TestType;
325919 
325920  // DQ (9/2/2015): This typedef is no longer used, we can't define the
325921  // comment here (changed to be a C style comment and not be a doxygen comment).
325922  /* \brief Typedef used to hold memory addresses as values.
325923  */
325924  // typedef unsigned long AddressType;
325925 
325926 
325927 
325928  // necessary, to have direct access to the p_freepointer and the private methods !
325930  friend class AST_FILE_IO;
325931 
325933  friend class SgClassSymbolStorageClass;
325934 
325936  friend class AstSpecificDataManagingClass;
325937 
325939  friend class AstSpecificDataManagingClassStorageClass;
325940 
325941  public:
325943  SgClassSymbol( const SgClassSymbolStorageClass& source );
325944 
325945  // private: // JJW hack
325946  /*
325947  name AST Memory Allocation Support Variables
325948  Memory allocations support variables
325949 
325950  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
325951  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
325952  and support the AST File I/O Mechanism.
325953  */
325954  /* */
325955 
325956  public:
325957 
325958  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
325959  // to current node (so that it will work cleanly with build functions to specify patterns).
325960  // virtual SgNode* addRegExpAttribute();
325966  SgClassSymbol* addRegExpAttribute(std::string s, AstRegExAttribute* a);
325967 
325968 // *** COMMON CODE SECTION ENDS HERE ***
325969 
325970 
325971 // End of memberFunctionString
325972 // Start of memberFunctionString
325973 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
325974 
325975  // the generated cast function
325976  // friend ROSE_DLL_API SgClassSymbol* isSgClassSymbol ( SgNode* s );
325977 
325978  typedef SgSymbol base_node_type;
325979 
325980 
325981 // End of memberFunctionString
325982 // Start of memberFunctionString
325983 /* #line 47 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Symbol.code" */
325984 
325985  SgName get_name() const override;
325986  SgNode* get_symbol_basis() const override; // from GET_NAME
325987 
325988 
325989 // End of memberFunctionString
325990 // Start of memberFunctionString
325991 /* #line 41 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Symbol.code" */
325992 
325993  // DQ (3/23/2017): ROSETTA macro expansion
325994  SgType* get_type() const override;
325995  // SgNode* get_symbol_basis() const; // from GET_TYPE
325996 
325997 
325998 // End of memberFunctionString
325999 
326000  public:
326001  SgClassDeclaration* get_declaration() const;
326002  void set_declaration(SgClassDeclaration* declaration);
326003 
326004 
326005  public:
326006  virtual ~SgClassSymbol();
326007 
326008 
326009  public:
326010  SgClassSymbol(SgClassDeclaration* declaration = NULL);
326011 
326012  protected:
326013 // Start of memberFunctionString
326014 SgClassDeclaration* p_declaration;
326015 
326016 // End of memberFunctionString
326017 
326018 
326019 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
326020 
326021 
326022  };
326023 #endif
326024 
326025 // postdeclarations for SgClassSymbol
326026 
326027 /* #line 326028 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
326028 
326029 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
326030 
326031 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
326032 
326033 
326034 /* #line 326035 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
326035 
326036 
326037 
326038 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
326039 
326040 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
326041 // This code is automatically generated for each
326042 // terminal and non-terminal within the defined
326043 // grammar. There is a simple way to change the
326044 // code to fix bugs etc. See the ROSE README file
326045 // for directions.
326046 
326047 // tps: (02/22/2010): Adding DLL export requirements
326048 #include "rosedll.h"
326049 
326050 // predeclarations for SgTemplateClassSymbol
326051 
326052 /* #line 326053 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
326053 
326054 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
326055 
326056 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
326057 
326058 #if 1
326059 // Class Definition for SgTemplateClassSymbol
326060 class ROSE_DLL_API SgTemplateClassSymbol : public SgClassSymbol
326061  {
326062  public:
326063 
326064 
326065 /* #line 326066 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
326066 
326067  virtual SgNode* copy ( SgCopyHelp& help) const override;
326068 // Start of memberFunctionString
326069 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
326070 
326071 // *** COMMON CODE SECTION BEGINS HERE ***
326072 
326073  public:
326074 
326075  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
326076  // and not required which is required to match the other aspects of the copy mechanism code generation.
326077  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
326078  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
326079  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
326080  // virtual SgNode* copy ( const SgCopyHelp & help) const;
326081 
326083  virtual std::string class_name() const override;
326084 
326086  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
326087 
326089  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
326090  // static const VariantT static_variant = V_SgTemplateClassSymbol;
326091  enum { static_variant = V_SgTemplateClassSymbol };
326092 
326093  /* the generated cast function */
326095  ROSE_DLL_API friend SgTemplateClassSymbol* isSgTemplateClassSymbol( SgNode * s );
326096 
326098  ROSE_DLL_API friend const SgTemplateClassSymbol* isSgTemplateClassSymbol( const SgNode * s );
326099 
326100  // ******************************************
326101  // * Memory Pool / New / Delete
326102  // ******************************************
326103 
326104  public:
326106  static const unsigned pool_size; //
326108  static std::vector<unsigned char *> pools; //
326110  static SgTemplateClassSymbol * next_node; //
326111 
326113  static unsigned long initializeStorageClassArray(SgTemplateClassSymbolStorageClass *); //
326114 
326116  static void clearMemoryPool(); //
326117  static void deleteMemoryPool(); //
326118 
326120  static void extendMemoryPoolForFileIO(); //
326121 
326123  static SgTemplateClassSymbol * getPointerFromGlobalIndex(unsigned long); //
326125  static SgTemplateClassSymbol * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
326126 
326128  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
326130  static void resetValidFreepointers(); //
326132  static unsigned long getNumberOfLastValidPointer(); //
326133 
326134 
326135 #if defined(INLINE_FUNCTIONS)
326136 
326137  inline void *operator new (size_t size);
326138 #else
326139 
326140  void *operator new (size_t size);
326141 #endif
326142 
326143  void operator delete (void* pointer, size_t size);
326144 
326145  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
326146  void operator delete (void* pointer)
326147  {
326148  // This is the generated delete operator...
326149  SgTemplateClassSymbol::operator delete (pointer,sizeof(SgTemplateClassSymbol));
326150  }
326151 
326153  static size_t numberOfNodes();
326154 
326156  static size_t memoryUsage();
326157 
326158  // End of scope which started in IR nodes specific code
326159  /* */
326160 
326161  /* name Internal Functions
326162  \brief Internal functions ... incomplete-documentation
326163 
326164  These functions have been made public as part of the design, but they are suggested for internal use
326165  or by particularly knowledgeable users for specialized tools or applications.
326166 
326167  \internal We could not make these private because they are required by user for special purposes. And
326168  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
326169 
326170  */
326171 
326172  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
326173  // overridden in every class by *generated* implementation
326175  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
326176  // MS: 06/28/02 container of names of variables or container indices
326177  // used used in the traversal to access AST successor nodes
326178  // overridden in every class by *generated* implementation
326181  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
326182 
326183  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
326184  // than all the vector copies. The implementation for these functions is generated for each class.
326186  virtual size_t get_numberOfTraversalSuccessors() override;
326188  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
326190  virtual size_t get_childIndex(SgNode *child) override;
326191 
326192 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
326193  // MS: 08/16/2002 method for generating RTI information
326195  virtual RTIReturnType roseRTI() override;
326196 #endif
326197  /* */
326198 
326199 
326200 
326201  /* name Deprecated Functions
326202  \brief Deprecated functions ... incomplete-documentation
326203 
326204  These functions have been deprecated from use.
326205  */
326206  /* */
326207 
326209  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
326210 
326211  // JJW (10/16/2008): Changed to a single function in Node.code, and put
326212  // getVariant() in #if 0 block to prevent confusing Doxygen
326213 #if 0
326214 
326215  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
326217  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
326218 #endif
326219  /* */
326220 
326221 
326222 
326223 
326224  public:
326225  /* name Traversal Support Functions
326226  \brief Traversal support functions ... incomplete-documentation
326227 
326228  These functions have been made public as part of the design, but they are suggested for internal use
326229  or by particularly knowledgable users for specialized tools or applications.
326230  */
326231  /* */
326232 
326233  // DQ (11/26/2005): Support for visitor pattern mechanims
326234  // (inferior to ROSE traversal mechanism, experimental).
326238 
326239  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
326241  virtual void accept (ROSE_VisitorPattern & visitor) override;
326242 
326243  // DQ (12/26/2005): Support for traversal based on the memory pool
326246  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
326247 
326250  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
326251 
326252  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
326253  // This traversal helps support internal tools that call static member functions.
326254  // note: this function operates on the memory pools.
326257  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
326258  /* */
326259 
326260 
326261  public:
326262  /* name Memory Allocation Functions
326263  \brief Memory allocations functions ... incomplete-documentation
326264 
326265  These functions have been made public as part of the design, but they are suggested for internal use
326266  or by particularly knowledgable users for specialized tools or applications.
326267  */
326268  /* */
326269 
326280  virtual bool isInMemoryPool() override;
326281 
326292  virtual void checkDataMemberPointersIfInMemoryPool() override;
326293 
326294  // DQ (4/30/2006): Modified to be a const function.
326309  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
326310 
326320  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
326321 
326333  virtual long getChildIndex( SgNode* childNode ) const override;
326334 
326335  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
326336  // comment here (changed to be a C style comment and not be a doxygen comment).
326337  /* \brief Constructor for use by AST File I/O Mechanism
326338 
326339  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
326340  which obtained via fast binary file I/O from disk.
326341  */
326342  // SgTemplateClassSymbol( SgTemplateClassSymbolStorageClass& source );
326343 
326344 
326345 
326346 
326347 
326348  // JH (10/24/2005): methods added to support the ast file IO
326349  private:
326350 
326351  /* name AST Memory Allocation Support Functions
326352  \brief Memory allocations support....
326353 
326354  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
326355  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
326356  and support the AST File I/O Mechanism.
326357  */
326358  /* */
326359 
326360  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
326361  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
326362  that I use the same type everywhere, if any changes are made. THe second one declares the type
326363  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
326364  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
326365  a correspinding one in the AST_FILE_IO class!
326366  */
326367  // DQ (9/2/2015): This typedef is no longer used, we can't define the
326368  // comment here (changed to be a C style comment and not be a doxygen comment).
326369  /* \brief Typedef used for low level memory access.
326370  */
326371  // typedef unsigned char* TestType;
326372 
326373  // DQ (9/2/2015): This typedef is no longer used, we can't define the
326374  // comment here (changed to be a C style comment and not be a doxygen comment).
326375  /* \brief Typedef used to hold memory addresses as values.
326376  */
326377  // typedef unsigned long AddressType;
326378 
326379 
326380 
326381  // necessary, to have direct access to the p_freepointer and the private methods !
326383  friend class AST_FILE_IO;
326384 
326386  friend class SgTemplateClassSymbolStorageClass;
326387 
326389  friend class AstSpecificDataManagingClass;
326390 
326392  friend class AstSpecificDataManagingClassStorageClass;
326393 
326394  public:
326396  SgTemplateClassSymbol( const SgTemplateClassSymbolStorageClass& source );
326397 
326398  // private: // JJW hack
326399  /*
326400  name AST Memory Allocation Support Variables
326401  Memory allocations support variables
326402 
326403  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
326404  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
326405  and support the AST File I/O Mechanism.
326406  */
326407  /* */
326408 
326409  public:
326410 
326411  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
326412  // to current node (so that it will work cleanly with build functions to specify patterns).
326413  // virtual SgNode* addRegExpAttribute();
326420 
326421 // *** COMMON CODE SECTION ENDS HERE ***
326422 
326423 
326424 // End of memberFunctionString
326425 // Start of memberFunctionString
326426 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
326427 
326428  // the generated cast function
326429  // friend ROSE_DLL_API SgTemplateClassSymbol* isSgTemplateClassSymbol ( SgNode* s );
326430 
326431  typedef SgClassSymbol base_node_type;
326432 
326433 
326434 // End of memberFunctionString
326435 // Start of memberFunctionString
326436 /* #line 47 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Symbol.code" */
326437 
326438  SgName get_name() const override;
326439  SgNode* get_symbol_basis() const override; // from GET_NAME
326440 
326441 
326442 // End of memberFunctionString
326443 // Start of memberFunctionString
326444 /* #line 41 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Symbol.code" */
326445 
326446  // DQ (3/23/2017): ROSETTA macro expansion
326447  SgType* get_type() const override;
326448  // SgNode* get_symbol_basis() const; // from GET_TYPE
326449 
326450 
326451 // End of memberFunctionString
326452 
326453 
326454  public:
326455  virtual ~SgTemplateClassSymbol();
326456 
326457 
326458  public:
326459  SgTemplateClassSymbol(SgClassDeclaration* declaration = NULL);
326460 
326461  protected:
326462 
326463 
326464 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
326465 
326466 
326467  };
326468 #endif
326469 
326470 // postdeclarations for SgTemplateClassSymbol
326471 
326472 /* #line 326473 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
326473 
326474 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
326475 
326476 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
326477 
326478 
326479 /* #line 326480 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
326480 
326481 
326482 
326483 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
326484 
326485 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
326486 // This code is automatically generated for each
326487 // terminal and non-terminal within the defined
326488 // grammar. There is a simple way to change the
326489 // code to fix bugs etc. See the ROSE README file
326490 // for directions.
326491 
326492 // tps: (02/22/2010): Adding DLL export requirements
326493 #include "rosedll.h"
326494 
326495 // predeclarations for SgTemplateSymbol
326496 
326497 /* #line 326498 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
326498 
326499 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
326500 
326501 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
326502 
326503 #if 1
326504 // Class Definition for SgTemplateSymbol
326505 class ROSE_DLL_API SgTemplateSymbol : public SgSymbol
326506  {
326507  public:
326508 
326509 
326510 /* #line 326511 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
326511 
326512  virtual SgNode* copy ( SgCopyHelp& help) const override;
326513 // Start of memberFunctionString
326514 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
326515 
326516 // *** COMMON CODE SECTION BEGINS HERE ***
326517 
326518  public:
326519 
326520  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
326521  // and not required which is required to match the other aspects of the copy mechanism code generation.
326522  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
326523  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
326524  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
326525  // virtual SgNode* copy ( const SgCopyHelp & help) const;
326526 
326528  virtual std::string class_name() const override;
326529 
326531  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
326532 
326534  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
326535  // static const VariantT static_variant = V_SgTemplateSymbol;
326536  enum { static_variant = V_SgTemplateSymbol };
326537 
326538  /* the generated cast function */
326540  ROSE_DLL_API friend SgTemplateSymbol* isSgTemplateSymbol( SgNode * s );
326541 
326543  ROSE_DLL_API friend const SgTemplateSymbol* isSgTemplateSymbol( const SgNode * s );
326544 
326545  // ******************************************
326546  // * Memory Pool / New / Delete
326547  // ******************************************
326548 
326549  public:
326551  static const unsigned pool_size; //
326553  static std::vector<unsigned char *> pools; //
326555  static SgTemplateSymbol * next_node; //
326556 
326558  static unsigned long initializeStorageClassArray(SgTemplateSymbolStorageClass *); //
326559 
326561  static void clearMemoryPool(); //
326562  static void deleteMemoryPool(); //
326563 
326565  static void extendMemoryPoolForFileIO(); //
326566 
326568  static SgTemplateSymbol * getPointerFromGlobalIndex(unsigned long); //
326570  static SgTemplateSymbol * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
326571 
326573  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
326575  static void resetValidFreepointers(); //
326577  static unsigned long getNumberOfLastValidPointer(); //
326578 
326579 
326580 #if defined(INLINE_FUNCTIONS)
326581 
326582  inline void *operator new (size_t size);
326583 #else
326584 
326585  void *operator new (size_t size);
326586 #endif
326587 
326588  void operator delete (void* pointer, size_t size);
326589 
326590  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
326591  void operator delete (void* pointer)
326592  {
326593  // This is the generated delete operator...
326594  SgTemplateSymbol::operator delete (pointer,sizeof(SgTemplateSymbol));
326595  }
326596 
326598  static size_t numberOfNodes();
326599 
326601  static size_t memoryUsage();
326602 
326603  // End of scope which started in IR nodes specific code
326604  /* */
326605 
326606  /* name Internal Functions
326607  \brief Internal functions ... incomplete-documentation
326608 
326609  These functions have been made public as part of the design, but they are suggested for internal use
326610  or by particularly knowledgeable users for specialized tools or applications.
326611 
326612  \internal We could not make these private because they are required by user for special purposes. And
326613  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
326614 
326615  */
326616 
326617  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
326618  // overridden in every class by *generated* implementation
326620  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
326621  // MS: 06/28/02 container of names of variables or container indices
326622  // used used in the traversal to access AST successor nodes
326623  // overridden in every class by *generated* implementation
326626  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
326627 
326628  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
326629  // than all the vector copies. The implementation for these functions is generated for each class.
326631  virtual size_t get_numberOfTraversalSuccessors() override;
326633  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
326635  virtual size_t get_childIndex(SgNode *child) override;
326636 
326637 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
326638  // MS: 08/16/2002 method for generating RTI information
326640  virtual RTIReturnType roseRTI() override;
326641 #endif
326642  /* */
326643 
326644 
326645 
326646  /* name Deprecated Functions
326647  \brief Deprecated functions ... incomplete-documentation
326648 
326649  These functions have been deprecated from use.
326650  */
326651  /* */
326652 
326654  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
326655 
326656  // JJW (10/16/2008): Changed to a single function in Node.code, and put
326657  // getVariant() in #if 0 block to prevent confusing Doxygen
326658 #if 0
326659 
326660  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
326662  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
326663 #endif
326664  /* */
326665 
326666 
326667 
326668 
326669  public:
326670  /* name Traversal Support Functions
326671  \brief Traversal support functions ... incomplete-documentation
326672 
326673  These functions have been made public as part of the design, but they are suggested for internal use
326674  or by particularly knowledgable users for specialized tools or applications.
326675  */
326676  /* */
326677 
326678  // DQ (11/26/2005): Support for visitor pattern mechanims
326679  // (inferior to ROSE traversal mechanism, experimental).
326683 
326684  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
326686  virtual void accept (ROSE_VisitorPattern & visitor) override;
326687 
326688  // DQ (12/26/2005): Support for traversal based on the memory pool
326691  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
326692 
326695  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
326696 
326697  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
326698  // This traversal helps support internal tools that call static member functions.
326699  // note: this function operates on the memory pools.
326702  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
326703  /* */
326704 
326705 
326706  public:
326707  /* name Memory Allocation Functions
326708  \brief Memory allocations functions ... incomplete-documentation
326709 
326710  These functions have been made public as part of the design, but they are suggested for internal use
326711  or by particularly knowledgable users for specialized tools or applications.
326712  */
326713  /* */
326714 
326725  virtual bool isInMemoryPool() override;
326726 
326737  virtual void checkDataMemberPointersIfInMemoryPool() override;
326738 
326739  // DQ (4/30/2006): Modified to be a const function.
326754  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
326755 
326765  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
326766 
326778  virtual long getChildIndex( SgNode* childNode ) const override;
326779 
326780  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
326781  // comment here (changed to be a C style comment and not be a doxygen comment).
326782  /* \brief Constructor for use by AST File I/O Mechanism
326783 
326784  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
326785  which obtained via fast binary file I/O from disk.
326786  */
326787  // SgTemplateSymbol( SgTemplateSymbolStorageClass& source );
326788 
326789 
326790 
326791 
326792 
326793  // JH (10/24/2005): methods added to support the ast file IO
326794  private:
326795 
326796  /* name AST Memory Allocation Support Functions
326797  \brief Memory allocations support....
326798 
326799  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
326800  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
326801  and support the AST File I/O Mechanism.
326802  */
326803  /* */
326804 
326805  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
326806  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
326807  that I use the same type everywhere, if any changes are made. THe second one declares the type
326808  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
326809  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
326810  a correspinding one in the AST_FILE_IO class!
326811  */
326812  // DQ (9/2/2015): This typedef is no longer used, we can't define the
326813  // comment here (changed to be a C style comment and not be a doxygen comment).
326814  /* \brief Typedef used for low level memory access.
326815  */
326816  // typedef unsigned char* TestType;
326817 
326818  // DQ (9/2/2015): This typedef is no longer used, we can't define the
326819  // comment here (changed to be a C style comment and not be a doxygen comment).
326820  /* \brief Typedef used to hold memory addresses as values.
326821  */
326822  // typedef unsigned long AddressType;
326823 
326824 
326825 
326826  // necessary, to have direct access to the p_freepointer and the private methods !
326828  friend class AST_FILE_IO;
326829 
326831  friend class SgTemplateSymbolStorageClass;
326832 
326834  friend class AstSpecificDataManagingClass;
326835 
326837  friend class AstSpecificDataManagingClassStorageClass;
326838 
326839  public:
326841  SgTemplateSymbol( const SgTemplateSymbolStorageClass& source );
326842 
326843  // private: // JJW hack
326844  /*
326845  name AST Memory Allocation Support Variables
326846  Memory allocations support variables
326847 
326848  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
326849  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
326850  and support the AST File I/O Mechanism.
326851  */
326852  /* */
326853 
326854  public:
326855 
326856  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
326857  // to current node (so that it will work cleanly with build functions to specify patterns).
326858  // virtual SgNode* addRegExpAttribute();
326865 
326866 // *** COMMON CODE SECTION ENDS HERE ***
326867 
326868 
326869 // End of memberFunctionString
326870 // Start of memberFunctionString
326871 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
326872 
326873  // the generated cast function
326874  // friend ROSE_DLL_API SgTemplateSymbol* isSgTemplateSymbol ( SgNode* s );
326875 
326876  typedef SgSymbol base_node_type;
326877 
326878 
326879 // End of memberFunctionString
326880 // Start of memberFunctionString
326881 /* #line 47 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Symbol.code" */
326882 
326883  SgName get_name() const override;
326884  SgNode* get_symbol_basis() const override; // from GET_NAME
326885 
326886 
326887 // End of memberFunctionString
326888 // Start of memberFunctionString
326889 /* #line 41 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Symbol.code" */
326890 
326891  // DQ (3/23/2017): ROSETTA macro expansion
326892  SgType* get_type() const override;
326893  // SgNode* get_symbol_basis() const; // from GET_TYPE
326894 
326895 
326896 // End of memberFunctionString
326897 
326898  public:
326899  SgTemplateDeclaration* get_declaration() const;
326900  void set_declaration(SgTemplateDeclaration* declaration);
326901 
326902 
326903  public:
326904  virtual ~SgTemplateSymbol();
326905 
326906 
326907  public:
326908  SgTemplateSymbol(SgTemplateDeclaration* declaration = NULL);
326909 
326910  protected:
326911 // Start of memberFunctionString
326912 SgTemplateDeclaration* p_declaration;
326913 
326914 // End of memberFunctionString
326915 
326916 
326917 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
326918 
326919 
326920  };
326921 #endif
326922 
326923 // postdeclarations for SgTemplateSymbol
326924 
326925 /* #line 326926 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
326926 
326927 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
326928 
326929 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
326930 
326931 
326932 /* #line 326933 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
326933 
326934 
326935 
326936 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
326937 
326938 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
326939 // This code is automatically generated for each
326940 // terminal and non-terminal within the defined
326941 // grammar. There is a simple way to change the
326942 // code to fix bugs etc. See the ROSE README file
326943 // for directions.
326944 
326945 // tps: (02/22/2010): Adding DLL export requirements
326946 #include "rosedll.h"
326947 
326948 // predeclarations for SgEnumSymbol
326949 
326950 /* #line 326951 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
326951 
326952 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
326953 
326954 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
326955 
326956 #if 1
326957 // Class Definition for SgEnumSymbol
326958 class ROSE_DLL_API SgEnumSymbol : public SgSymbol
326959  {
326960  public:
326961 
326962 
326963 /* #line 326964 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
326964 
326965  virtual SgNode* copy ( SgCopyHelp& help) const override;
326966 // Start of memberFunctionString
326967 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
326968 
326969 // *** COMMON CODE SECTION BEGINS HERE ***
326970 
326971  public:
326972 
326973  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
326974  // and not required which is required to match the other aspects of the copy mechanism code generation.
326975  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
326976  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
326977  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
326978  // virtual SgNode* copy ( const SgCopyHelp & help) const;
326979 
326981  virtual std::string class_name() const override;
326982 
326984  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
326985 
326987  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
326988  // static const VariantT static_variant = V_SgEnumSymbol;
326989  enum { static_variant = V_SgEnumSymbol };
326990 
326991  /* the generated cast function */
326993  ROSE_DLL_API friend SgEnumSymbol* isSgEnumSymbol( SgNode * s );
326994 
326996  ROSE_DLL_API friend const SgEnumSymbol* isSgEnumSymbol( const SgNode * s );
326997 
326998  // ******************************************
326999  // * Memory Pool / New / Delete
327000  // ******************************************
327001 
327002  public:
327004  static const unsigned pool_size; //
327006  static std::vector<unsigned char *> pools; //
327008  static SgEnumSymbol * next_node; //
327009 
327011  static unsigned long initializeStorageClassArray(SgEnumSymbolStorageClass *); //
327012 
327014  static void clearMemoryPool(); //
327015  static void deleteMemoryPool(); //
327016 
327018  static void extendMemoryPoolForFileIO(); //
327019 
327021  static SgEnumSymbol * getPointerFromGlobalIndex(unsigned long); //
327023  static SgEnumSymbol * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
327024 
327026  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
327028  static void resetValidFreepointers(); //
327030  static unsigned long getNumberOfLastValidPointer(); //
327031 
327032 
327033 #if defined(INLINE_FUNCTIONS)
327034 
327035  inline void *operator new (size_t size);
327036 #else
327037 
327038  void *operator new (size_t size);
327039 #endif
327040 
327041  void operator delete (void* pointer, size_t size);
327042 
327043  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
327044  void operator delete (void* pointer)
327045  {
327046  // This is the generated delete operator...
327047  SgEnumSymbol::operator delete (pointer,sizeof(SgEnumSymbol));
327048  }
327049 
327051  static size_t numberOfNodes();
327052 
327054  static size_t memoryUsage();
327055 
327056  // End of scope which started in IR nodes specific code
327057  /* */
327058 
327059  /* name Internal Functions
327060  \brief Internal functions ... incomplete-documentation
327061 
327062  These functions have been made public as part of the design, but they are suggested for internal use
327063  or by particularly knowledgeable users for specialized tools or applications.
327064 
327065  \internal We could not make these private because they are required by user for special purposes. And
327066  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
327067 
327068  */
327069 
327070  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
327071  // overridden in every class by *generated* implementation
327073  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
327074  // MS: 06/28/02 container of names of variables or container indices
327075  // used used in the traversal to access AST successor nodes
327076  // overridden in every class by *generated* implementation
327079  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
327080 
327081  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
327082  // than all the vector copies. The implementation for these functions is generated for each class.
327084  virtual size_t get_numberOfTraversalSuccessors() override;
327086  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
327088  virtual size_t get_childIndex(SgNode *child) override;
327089 
327090 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
327091  // MS: 08/16/2002 method for generating RTI information
327093  virtual RTIReturnType roseRTI() override;
327094 #endif
327095  /* */
327096 
327097 
327098 
327099  /* name Deprecated Functions
327100  \brief Deprecated functions ... incomplete-documentation
327101 
327102  These functions have been deprecated from use.
327103  */
327104  /* */
327105 
327107  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
327108 
327109  // JJW (10/16/2008): Changed to a single function in Node.code, and put
327110  // getVariant() in #if 0 block to prevent confusing Doxygen
327111 #if 0
327112 
327113  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
327115  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
327116 #endif
327117  /* */
327118 
327119 
327120 
327121 
327122  public:
327123  /* name Traversal Support Functions
327124  \brief Traversal support functions ... incomplete-documentation
327125 
327126  These functions have been made public as part of the design, but they are suggested for internal use
327127  or by particularly knowledgable users for specialized tools or applications.
327128  */
327129  /* */
327130 
327131  // DQ (11/26/2005): Support for visitor pattern mechanims
327132  // (inferior to ROSE traversal mechanism, experimental).
327136 
327137  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
327139  virtual void accept (ROSE_VisitorPattern & visitor) override;
327140 
327141  // DQ (12/26/2005): Support for traversal based on the memory pool
327144  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
327145 
327148  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
327149 
327150  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
327151  // This traversal helps support internal tools that call static member functions.
327152  // note: this function operates on the memory pools.
327155  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
327156  /* */
327157 
327158 
327159  public:
327160  /* name Memory Allocation Functions
327161  \brief Memory allocations functions ... incomplete-documentation
327162 
327163  These functions have been made public as part of the design, but they are suggested for internal use
327164  or by particularly knowledgable users for specialized tools or applications.
327165  */
327166  /* */
327167 
327178  virtual bool isInMemoryPool() override;
327179 
327190  virtual void checkDataMemberPointersIfInMemoryPool() override;
327191 
327192  // DQ (4/30/2006): Modified to be a const function.
327207  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
327208 
327218  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
327219 
327231  virtual long getChildIndex( SgNode* childNode ) const override;
327232 
327233  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
327234  // comment here (changed to be a C style comment and not be a doxygen comment).
327235  /* \brief Constructor for use by AST File I/O Mechanism
327236 
327237  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
327238  which obtained via fast binary file I/O from disk.
327239  */
327240  // SgEnumSymbol( SgEnumSymbolStorageClass& source );
327241 
327242 
327243 
327244 
327245 
327246  // JH (10/24/2005): methods added to support the ast file IO
327247  private:
327248 
327249  /* name AST Memory Allocation Support Functions
327250  \brief Memory allocations support....
327251 
327252  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
327253  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
327254  and support the AST File I/O Mechanism.
327255  */
327256  /* */
327257 
327258  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
327259  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
327260  that I use the same type everywhere, if any changes are made. THe second one declares the type
327261  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
327262  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
327263  a correspinding one in the AST_FILE_IO class!
327264  */
327265  // DQ (9/2/2015): This typedef is no longer used, we can't define the
327266  // comment here (changed to be a C style comment and not be a doxygen comment).
327267  /* \brief Typedef used for low level memory access.
327268  */
327269  // typedef unsigned char* TestType;
327270 
327271  // DQ (9/2/2015): This typedef is no longer used, we can't define the
327272  // comment here (changed to be a C style comment and not be a doxygen comment).
327273  /* \brief Typedef used to hold memory addresses as values.
327274  */
327275  // typedef unsigned long AddressType;
327276 
327277 
327278 
327279  // necessary, to have direct access to the p_freepointer and the private methods !
327281  friend class AST_FILE_IO;
327282 
327284  friend class SgEnumSymbolStorageClass;
327285 
327287  friend class AstSpecificDataManagingClass;
327288 
327290  friend class AstSpecificDataManagingClassStorageClass;
327291 
327292  public:
327294  SgEnumSymbol( const SgEnumSymbolStorageClass& source );
327295 
327296  // private: // JJW hack
327297  /*
327298  name AST Memory Allocation Support Variables
327299  Memory allocations support variables
327300 
327301  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
327302  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
327303  and support the AST File I/O Mechanism.
327304  */
327305  /* */
327306 
327307  public:
327308 
327309  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
327310  // to current node (so that it will work cleanly with build functions to specify patterns).
327311  // virtual SgNode* addRegExpAttribute();
327317  SgEnumSymbol* addRegExpAttribute(std::string s, AstRegExAttribute* a);
327318 
327319 // *** COMMON CODE SECTION ENDS HERE ***
327320 
327321 
327322 // End of memberFunctionString
327323 // Start of memberFunctionString
327324 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
327325 
327326  // the generated cast function
327327  // friend ROSE_DLL_API SgEnumSymbol* isSgEnumSymbol ( SgNode* s );
327328 
327329  typedef SgSymbol base_node_type;
327330 
327331 
327332 // End of memberFunctionString
327333 // Start of memberFunctionString
327334 /* #line 47 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Symbol.code" */
327335 
327336  SgName get_name() const override;
327337  SgNode* get_symbol_basis() const override; // from GET_NAME
327338 
327339 
327340 // End of memberFunctionString
327341 // Start of memberFunctionString
327342 /* #line 41 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Symbol.code" */
327343 
327344  // DQ (3/23/2017): ROSETTA macro expansion
327345  SgType* get_type() const override;
327346  // SgNode* get_symbol_basis() const; // from GET_TYPE
327347 
327348 
327349 // End of memberFunctionString
327350 
327351  public:
327352  SgEnumDeclaration* get_declaration() const;
327353  void set_declaration(SgEnumDeclaration* declaration);
327354 
327355 
327356  public:
327357  virtual ~SgEnumSymbol();
327358 
327359 
327360  public:
327361  SgEnumSymbol(SgEnumDeclaration* declaration = NULL);
327362 
327363  protected:
327364 // Start of memberFunctionString
327365 SgEnumDeclaration* p_declaration;
327366 
327367 // End of memberFunctionString
327368 
327369 
327370 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
327371 
327372 
327373  };
327374 #endif
327375 
327376 // postdeclarations for SgEnumSymbol
327377 
327378 /* #line 327379 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
327379 
327380 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
327381 
327382 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
327383 
327384 
327385 /* #line 327386 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
327386 
327387 
327388 
327389 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
327390 
327391 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
327392 // This code is automatically generated for each
327393 // terminal and non-terminal within the defined
327394 // grammar. There is a simple way to change the
327395 // code to fix bugs etc. See the ROSE README file
327396 // for directions.
327397 
327398 // tps: (02/22/2010): Adding DLL export requirements
327399 #include "rosedll.h"
327400 
327401 // predeclarations for SgEnumFieldSymbol
327402 
327403 /* #line 327404 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
327404 
327405 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
327406 
327407 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
327408 
327409 #if 1
327410 // Class Definition for SgEnumFieldSymbol
327411 class ROSE_DLL_API SgEnumFieldSymbol : public SgSymbol
327412  {
327413  public:
327414 
327415 
327416 /* #line 327417 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
327417 
327418  virtual SgNode* copy ( SgCopyHelp& help) const override;
327419 // Start of memberFunctionString
327420 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
327421 
327422 // *** COMMON CODE SECTION BEGINS HERE ***
327423 
327424  public:
327425 
327426  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
327427  // and not required which is required to match the other aspects of the copy mechanism code generation.
327428  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
327429  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
327430  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
327431  // virtual SgNode* copy ( const SgCopyHelp & help) const;
327432 
327434  virtual std::string class_name() const override;
327435 
327437  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
327438 
327440  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
327441  // static const VariantT static_variant = V_SgEnumFieldSymbol;
327442  enum { static_variant = V_SgEnumFieldSymbol };
327443 
327444  /* the generated cast function */
327446  ROSE_DLL_API friend SgEnumFieldSymbol* isSgEnumFieldSymbol( SgNode * s );
327447 
327449  ROSE_DLL_API friend const SgEnumFieldSymbol* isSgEnumFieldSymbol( const SgNode * s );
327450 
327451  // ******************************************
327452  // * Memory Pool / New / Delete
327453  // ******************************************
327454 
327455  public:
327457  static const unsigned pool_size; //
327459  static std::vector<unsigned char *> pools; //
327461  static SgEnumFieldSymbol * next_node; //
327462 
327464  static unsigned long initializeStorageClassArray(SgEnumFieldSymbolStorageClass *); //
327465 
327467  static void clearMemoryPool(); //
327468  static void deleteMemoryPool(); //
327469 
327471  static void extendMemoryPoolForFileIO(); //
327472 
327474  static SgEnumFieldSymbol * getPointerFromGlobalIndex(unsigned long); //
327476  static SgEnumFieldSymbol * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
327477 
327479  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
327481  static void resetValidFreepointers(); //
327483  static unsigned long getNumberOfLastValidPointer(); //
327484 
327485 
327486 #if defined(INLINE_FUNCTIONS)
327487 
327488  inline void *operator new (size_t size);
327489 #else
327490 
327491  void *operator new (size_t size);
327492 #endif
327493 
327494  void operator delete (void* pointer, size_t size);
327495 
327496  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
327497  void operator delete (void* pointer)
327498  {
327499  // This is the generated delete operator...
327500  SgEnumFieldSymbol::operator delete (pointer,sizeof(SgEnumFieldSymbol));
327501  }
327502 
327504  static size_t numberOfNodes();
327505 
327507  static size_t memoryUsage();
327508 
327509  // End of scope which started in IR nodes specific code
327510  /* */
327511 
327512  /* name Internal Functions
327513  \brief Internal functions ... incomplete-documentation
327514 
327515  These functions have been made public as part of the design, but they are suggested for internal use
327516  or by particularly knowledgeable users for specialized tools or applications.
327517 
327518  \internal We could not make these private because they are required by user for special purposes. And
327519  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
327520 
327521  */
327522 
327523  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
327524  // overridden in every class by *generated* implementation
327526  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
327527  // MS: 06/28/02 container of names of variables or container indices
327528  // used used in the traversal to access AST successor nodes
327529  // overridden in every class by *generated* implementation
327532  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
327533 
327534  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
327535  // than all the vector copies. The implementation for these functions is generated for each class.
327537  virtual size_t get_numberOfTraversalSuccessors() override;
327539  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
327541  virtual size_t get_childIndex(SgNode *child) override;
327542 
327543 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
327544  // MS: 08/16/2002 method for generating RTI information
327546  virtual RTIReturnType roseRTI() override;
327547 #endif
327548  /* */
327549 
327550 
327551 
327552  /* name Deprecated Functions
327553  \brief Deprecated functions ... incomplete-documentation
327554 
327555  These functions have been deprecated from use.
327556  */
327557  /* */
327558 
327560  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
327561 
327562  // JJW (10/16/2008): Changed to a single function in Node.code, and put
327563  // getVariant() in #if 0 block to prevent confusing Doxygen
327564 #if 0
327565 
327566  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
327568  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
327569 #endif
327570  /* */
327571 
327572 
327573 
327574 
327575  public:
327576  /* name Traversal Support Functions
327577  \brief Traversal support functions ... incomplete-documentation
327578 
327579  These functions have been made public as part of the design, but they are suggested for internal use
327580  or by particularly knowledgable users for specialized tools or applications.
327581  */
327582  /* */
327583 
327584  // DQ (11/26/2005): Support for visitor pattern mechanims
327585  // (inferior to ROSE traversal mechanism, experimental).
327589 
327590  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
327592  virtual void accept (ROSE_VisitorPattern & visitor) override;
327593 
327594  // DQ (12/26/2005): Support for traversal based on the memory pool
327597  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
327598 
327601  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
327602 
327603  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
327604  // This traversal helps support internal tools that call static member functions.
327605  // note: this function operates on the memory pools.
327608  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
327609  /* */
327610 
327611 
327612  public:
327613  /* name Memory Allocation Functions
327614  \brief Memory allocations functions ... incomplete-documentation
327615 
327616  These functions have been made public as part of the design, but they are suggested for internal use
327617  or by particularly knowledgable users for specialized tools or applications.
327618  */
327619  /* */
327620 
327631  virtual bool isInMemoryPool() override;
327632 
327643  virtual void checkDataMemberPointersIfInMemoryPool() override;
327644 
327645  // DQ (4/30/2006): Modified to be a const function.
327660  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
327661 
327671  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
327672 
327684  virtual long getChildIndex( SgNode* childNode ) const override;
327685 
327686  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
327687  // comment here (changed to be a C style comment and not be a doxygen comment).
327688  /* \brief Constructor for use by AST File I/O Mechanism
327689 
327690  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
327691  which obtained via fast binary file I/O from disk.
327692  */
327693  // SgEnumFieldSymbol( SgEnumFieldSymbolStorageClass& source );
327694 
327695 
327696 
327697 
327698 
327699  // JH (10/24/2005): methods added to support the ast file IO
327700  private:
327701 
327702  /* name AST Memory Allocation Support Functions
327703  \brief Memory allocations support....
327704 
327705  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
327706  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
327707  and support the AST File I/O Mechanism.
327708  */
327709  /* */
327710 
327711  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
327712  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
327713  that I use the same type everywhere, if any changes are made. THe second one declares the type
327714  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
327715  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
327716  a correspinding one in the AST_FILE_IO class!
327717  */
327718  // DQ (9/2/2015): This typedef is no longer used, we can't define the
327719  // comment here (changed to be a C style comment and not be a doxygen comment).
327720  /* \brief Typedef used for low level memory access.
327721  */
327722  // typedef unsigned char* TestType;
327723 
327724  // DQ (9/2/2015): This typedef is no longer used, we can't define the
327725  // comment here (changed to be a C style comment and not be a doxygen comment).
327726  /* \brief Typedef used to hold memory addresses as values.
327727  */
327728  // typedef unsigned long AddressType;
327729 
327730 
327731 
327732  // necessary, to have direct access to the p_freepointer and the private methods !
327734  friend class AST_FILE_IO;
327735 
327737  friend class SgEnumFieldSymbolStorageClass;
327738 
327740  friend class AstSpecificDataManagingClass;
327741 
327743  friend class AstSpecificDataManagingClassStorageClass;
327744 
327745  public:
327747  SgEnumFieldSymbol( const SgEnumFieldSymbolStorageClass& source );
327748 
327749  // private: // JJW hack
327750  /*
327751  name AST Memory Allocation Support Variables
327752  Memory allocations support variables
327753 
327754  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
327755  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
327756  and support the AST File I/O Mechanism.
327757  */
327758  /* */
327759 
327760  public:
327761 
327762  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
327763  // to current node (so that it will work cleanly with build functions to specify patterns).
327764  // virtual SgNode* addRegExpAttribute();
327771 
327772 // *** COMMON CODE SECTION ENDS HERE ***
327773 
327774 
327775 // End of memberFunctionString
327776 // Start of memberFunctionString
327777 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
327778 
327779  // the generated cast function
327780  // friend ROSE_DLL_API SgEnumFieldSymbol* isSgEnumFieldSymbol ( SgNode* s );
327781 
327782  typedef SgSymbol base_node_type;
327783 
327784 
327785 // End of memberFunctionString
327786 // Start of memberFunctionString
327787 /* #line 47 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Symbol.code" */
327788 
327789  SgName get_name() const override;
327790  SgNode* get_symbol_basis() const override; // from GET_NAME
327791 
327792 
327793 // End of memberFunctionString
327794 // Start of memberFunctionString
327795 /* #line 41 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Symbol.code" */
327796 
327797  // DQ (3/23/2017): ROSETTA macro expansion
327798  SgType* get_type() const override;
327799  // SgNode* get_symbol_basis() const; // from GET_TYPE
327800 
327801 
327802 // End of memberFunctionString
327803 
327804  public:
327805  SgInitializedName* get_declaration() const;
327806  void set_declaration(SgInitializedName* declaration);
327807 
327808 
327809  public:
327810  virtual ~SgEnumFieldSymbol();
327811 
327812 
327813  public:
327814  SgEnumFieldSymbol(SgInitializedName* declaration = NULL);
327815 
327816  protected:
327817 // Start of memberFunctionString
327818 SgInitializedName* p_declaration;
327819 
327820 // End of memberFunctionString
327821 
327822 
327823 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
327824 
327825 
327826  };
327827 #endif
327828 
327829 // postdeclarations for SgEnumFieldSymbol
327830 
327831 /* #line 327832 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
327832 
327833 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
327834 
327835 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
327836 
327837 
327838 /* #line 327839 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
327839 
327840 
327841 
327842 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
327843 
327844 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
327845 // This code is automatically generated for each
327846 // terminal and non-terminal within the defined
327847 // grammar. There is a simple way to change the
327848 // code to fix bugs etc. See the ROSE README file
327849 // for directions.
327850 
327851 // tps: (02/22/2010): Adding DLL export requirements
327852 #include "rosedll.h"
327853 
327854 // predeclarations for SgTypedefSymbol
327855 
327856 /* #line 327857 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
327857 
327858 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
327859 
327860 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
327861 
327862 #if 1
327863 // Class Definition for SgTypedefSymbol
327864 class ROSE_DLL_API SgTypedefSymbol : public SgSymbol
327865  {
327866  public:
327867 
327868 
327869 /* #line 327870 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
327870 
327871  virtual SgNode* copy ( SgCopyHelp& help) const override;
327872 // Start of memberFunctionString
327873 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
327874 
327875 // *** COMMON CODE SECTION BEGINS HERE ***
327876 
327877  public:
327878 
327879  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
327880  // and not required which is required to match the other aspects of the copy mechanism code generation.
327881  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
327882  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
327883  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
327884  // virtual SgNode* copy ( const SgCopyHelp & help) const;
327885 
327887  virtual std::string class_name() const override;
327888 
327890  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
327891 
327893  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
327894  // static const VariantT static_variant = V_SgTypedefSymbol;
327895  enum { static_variant = V_SgTypedefSymbol };
327896 
327897  /* the generated cast function */
327899  ROSE_DLL_API friend SgTypedefSymbol* isSgTypedefSymbol( SgNode * s );
327900 
327902  ROSE_DLL_API friend const SgTypedefSymbol* isSgTypedefSymbol( const SgNode * s );
327903 
327904  // ******************************************
327905  // * Memory Pool / New / Delete
327906  // ******************************************
327907 
327908  public:
327910  static const unsigned pool_size; //
327912  static std::vector<unsigned char *> pools; //
327914  static SgTypedefSymbol * next_node; //
327915 
327917  static unsigned long initializeStorageClassArray(SgTypedefSymbolStorageClass *); //
327918 
327920  static void clearMemoryPool(); //
327921  static void deleteMemoryPool(); //
327922 
327924  static void extendMemoryPoolForFileIO(); //
327925 
327927  static SgTypedefSymbol * getPointerFromGlobalIndex(unsigned long); //
327929  static SgTypedefSymbol * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
327930 
327932  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
327934  static void resetValidFreepointers(); //
327936  static unsigned long getNumberOfLastValidPointer(); //
327937 
327938 
327939 #if defined(INLINE_FUNCTIONS)
327940 
327941  inline void *operator new (size_t size);
327942 #else
327943 
327944  void *operator new (size_t size);
327945 #endif
327946 
327947  void operator delete (void* pointer, size_t size);
327948 
327949  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
327950  void operator delete (void* pointer)
327951  {
327952  // This is the generated delete operator...
327953  SgTypedefSymbol::operator delete (pointer,sizeof(SgTypedefSymbol));
327954  }
327955 
327957  static size_t numberOfNodes();
327958 
327960  static size_t memoryUsage();
327961 
327962  // End of scope which started in IR nodes specific code
327963  /* */
327964 
327965  /* name Internal Functions
327966  \brief Internal functions ... incomplete-documentation
327967 
327968  These functions have been made public as part of the design, but they are suggested for internal use
327969  or by particularly knowledgeable users for specialized tools or applications.
327970 
327971  \internal We could not make these private because they are required by user for special purposes. And
327972  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
327973 
327974  */
327975 
327976  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
327977  // overridden in every class by *generated* implementation
327979  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
327980  // MS: 06/28/02 container of names of variables or container indices
327981  // used used in the traversal to access AST successor nodes
327982  // overridden in every class by *generated* implementation
327985  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
327986 
327987  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
327988  // than all the vector copies. The implementation for these functions is generated for each class.
327990  virtual size_t get_numberOfTraversalSuccessors() override;
327992  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
327994  virtual size_t get_childIndex(SgNode *child) override;
327995 
327996 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
327997  // MS: 08/16/2002 method for generating RTI information
327999  virtual RTIReturnType roseRTI() override;
328000 #endif
328001  /* */
328002 
328003 
328004 
328005  /* name Deprecated Functions
328006  \brief Deprecated functions ... incomplete-documentation
328007 
328008  These functions have been deprecated from use.
328009  */
328010  /* */
328011 
328013  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
328014 
328015  // JJW (10/16/2008): Changed to a single function in Node.code, and put
328016  // getVariant() in #if 0 block to prevent confusing Doxygen
328017 #if 0
328018 
328019  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
328021  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
328022 #endif
328023  /* */
328024 
328025 
328026 
328027 
328028  public:
328029  /* name Traversal Support Functions
328030  \brief Traversal support functions ... incomplete-documentation
328031 
328032  These functions have been made public as part of the design, but they are suggested for internal use
328033  or by particularly knowledgable users for specialized tools or applications.
328034  */
328035  /* */
328036 
328037  // DQ (11/26/2005): Support for visitor pattern mechanims
328038  // (inferior to ROSE traversal mechanism, experimental).
328042 
328043  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
328045  virtual void accept (ROSE_VisitorPattern & visitor) override;
328046 
328047  // DQ (12/26/2005): Support for traversal based on the memory pool
328050  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
328051 
328054  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
328055 
328056  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
328057  // This traversal helps support internal tools that call static member functions.
328058  // note: this function operates on the memory pools.
328061  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
328062  /* */
328063 
328064 
328065  public:
328066  /* name Memory Allocation Functions
328067  \brief Memory allocations functions ... incomplete-documentation
328068 
328069  These functions have been made public as part of the design, but they are suggested for internal use
328070  or by particularly knowledgable users for specialized tools or applications.
328071  */
328072  /* */
328073 
328084  virtual bool isInMemoryPool() override;
328085 
328096  virtual void checkDataMemberPointersIfInMemoryPool() override;
328097 
328098  // DQ (4/30/2006): Modified to be a const function.
328113  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
328114 
328124  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
328125 
328137  virtual long getChildIndex( SgNode* childNode ) const override;
328138 
328139  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
328140  // comment here (changed to be a C style comment and not be a doxygen comment).
328141  /* \brief Constructor for use by AST File I/O Mechanism
328142 
328143  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
328144  which obtained via fast binary file I/O from disk.
328145  */
328146  // SgTypedefSymbol( SgTypedefSymbolStorageClass& source );
328147 
328148 
328149 
328150 
328151 
328152  // JH (10/24/2005): methods added to support the ast file IO
328153  private:
328154 
328155  /* name AST Memory Allocation Support Functions
328156  \brief Memory allocations support....
328157 
328158  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
328159  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
328160  and support the AST File I/O Mechanism.
328161  */
328162  /* */
328163 
328164  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
328165  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
328166  that I use the same type everywhere, if any changes are made. THe second one declares the type
328167  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
328168  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
328169  a correspinding one in the AST_FILE_IO class!
328170  */
328171  // DQ (9/2/2015): This typedef is no longer used, we can't define the
328172  // comment here (changed to be a C style comment and not be a doxygen comment).
328173  /* \brief Typedef used for low level memory access.
328174  */
328175  // typedef unsigned char* TestType;
328176 
328177  // DQ (9/2/2015): This typedef is no longer used, we can't define the
328178  // comment here (changed to be a C style comment and not be a doxygen comment).
328179  /* \brief Typedef used to hold memory addresses as values.
328180  */
328181  // typedef unsigned long AddressType;
328182 
328183 
328184 
328185  // necessary, to have direct access to the p_freepointer and the private methods !
328187  friend class AST_FILE_IO;
328188 
328190  friend class SgTypedefSymbolStorageClass;
328191 
328193  friend class AstSpecificDataManagingClass;
328194 
328196  friend class AstSpecificDataManagingClassStorageClass;
328197 
328198  public:
328200  SgTypedefSymbol( const SgTypedefSymbolStorageClass& source );
328201 
328202  // private: // JJW hack
328203  /*
328204  name AST Memory Allocation Support Variables
328205  Memory allocations support variables
328206 
328207  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
328208  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
328209  and support the AST File I/O Mechanism.
328210  */
328211  /* */
328212 
328213  public:
328214 
328215  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
328216  // to current node (so that it will work cleanly with build functions to specify patterns).
328217  // virtual SgNode* addRegExpAttribute();
328224 
328225 // *** COMMON CODE SECTION ENDS HERE ***
328226 
328227 
328228 // End of memberFunctionString
328229 // Start of memberFunctionString
328230 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
328231 
328232  // the generated cast function
328233  // friend ROSE_DLL_API SgTypedefSymbol* isSgTypedefSymbol ( SgNode* s );
328234 
328235  typedef SgSymbol base_node_type;
328236 
328237 
328238 // End of memberFunctionString
328239 // Start of memberFunctionString
328240 /* #line 47 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Symbol.code" */
328241 
328242  SgName get_name() const override;
328243  SgNode* get_symbol_basis() const override; // from GET_NAME
328244 
328245 
328246 // End of memberFunctionString
328247 // Start of memberFunctionString
328248 /* #line 41 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Symbol.code" */
328249 
328250  // DQ (3/23/2017): ROSETTA macro expansion
328251  SgType* get_type() const override;
328252  // SgNode* get_symbol_basis() const; // from GET_TYPE
328253 
328254 
328255 // End of memberFunctionString
328256 
328257  public:
328258  SgTypedefDeclaration* get_declaration() const;
328259  void set_declaration(SgTypedefDeclaration* declaration);
328260 
328261 
328262  public:
328263  virtual ~SgTypedefSymbol();
328264 
328265 
328266  public:
328267  SgTypedefSymbol(SgTypedefDeclaration* declaration = NULL);
328268 
328269  protected:
328270 // Start of memberFunctionString
328271 SgTypedefDeclaration* p_declaration;
328272 
328273 // End of memberFunctionString
328274 
328275 
328276 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
328277 
328278 
328279  };
328280 #endif
328281 
328282 // postdeclarations for SgTypedefSymbol
328283 
328284 /* #line 328285 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
328285 
328286 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
328287 
328288 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
328289 
328290 
328291 /* #line 328292 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
328292 
328293 
328294 
328295 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
328296 
328297 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
328298 // This code is automatically generated for each
328299 // terminal and non-terminal within the defined
328300 // grammar. There is a simple way to change the
328301 // code to fix bugs etc. See the ROSE README file
328302 // for directions.
328303 
328304 // tps: (02/22/2010): Adding DLL export requirements
328305 #include "rosedll.h"
328306 
328307 // predeclarations for SgTemplateTypedefSymbol
328308 
328309 /* #line 328310 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
328310 
328311 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
328312 
328313 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
328314 
328315 #if 1
328316 // Class Definition for SgTemplateTypedefSymbol
328317 class ROSE_DLL_API SgTemplateTypedefSymbol : public SgTypedefSymbol
328318  {
328319  public:
328320 
328321 
328322 /* #line 328323 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
328323 
328324  virtual SgNode* copy ( SgCopyHelp& help) const override;
328325 // Start of memberFunctionString
328326 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
328327 
328328 // *** COMMON CODE SECTION BEGINS HERE ***
328329 
328330  public:
328331 
328332  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
328333  // and not required which is required to match the other aspects of the copy mechanism code generation.
328334  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
328335  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
328336  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
328337  // virtual SgNode* copy ( const SgCopyHelp & help) const;
328338 
328340  virtual std::string class_name() const override;
328341 
328343  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
328344 
328346  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
328347  // static const VariantT static_variant = V_SgTemplateTypedefSymbol;
328348  enum { static_variant = V_SgTemplateTypedefSymbol };
328349 
328350  /* the generated cast function */
328352  ROSE_DLL_API friend SgTemplateTypedefSymbol* isSgTemplateTypedefSymbol( SgNode * s );
328353 
328355  ROSE_DLL_API friend const SgTemplateTypedefSymbol* isSgTemplateTypedefSymbol( const SgNode * s );
328356 
328357  // ******************************************
328358  // * Memory Pool / New / Delete
328359  // ******************************************
328360 
328361  public:
328363  static const unsigned pool_size; //
328365  static std::vector<unsigned char *> pools; //
328367  static SgTemplateTypedefSymbol * next_node; //
328368 
328370  static unsigned long initializeStorageClassArray(SgTemplateTypedefSymbolStorageClass *); //
328371 
328373  static void clearMemoryPool(); //
328374  static void deleteMemoryPool(); //
328375 
328377  static void extendMemoryPoolForFileIO(); //
328378 
328380  static SgTemplateTypedefSymbol * getPointerFromGlobalIndex(unsigned long); //
328382  static SgTemplateTypedefSymbol * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
328383 
328385  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
328387  static void resetValidFreepointers(); //
328389  static unsigned long getNumberOfLastValidPointer(); //
328390 
328391 
328392 #if defined(INLINE_FUNCTIONS)
328393 
328394  inline void *operator new (size_t size);
328395 #else
328396 
328397  void *operator new (size_t size);
328398 #endif
328399 
328400  void operator delete (void* pointer, size_t size);
328401 
328402  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
328403  void operator delete (void* pointer)
328404  {
328405  // This is the generated delete operator...
328406  SgTemplateTypedefSymbol::operator delete (pointer,sizeof(SgTemplateTypedefSymbol));
328407  }
328408 
328410  static size_t numberOfNodes();
328411 
328413  static size_t memoryUsage();
328414 
328415  // End of scope which started in IR nodes specific code
328416  /* */
328417 
328418  /* name Internal Functions
328419  \brief Internal functions ... incomplete-documentation
328420 
328421  These functions have been made public as part of the design, but they are suggested for internal use
328422  or by particularly knowledgeable users for specialized tools or applications.
328423 
328424  \internal We could not make these private because they are required by user for special purposes. And
328425  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
328426 
328427  */
328428 
328429  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
328430  // overridden in every class by *generated* implementation
328432  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
328433  // MS: 06/28/02 container of names of variables or container indices
328434  // used used in the traversal to access AST successor nodes
328435  // overridden in every class by *generated* implementation
328438  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
328439 
328440  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
328441  // than all the vector copies. The implementation for these functions is generated for each class.
328443  virtual size_t get_numberOfTraversalSuccessors() override;
328445  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
328447  virtual size_t get_childIndex(SgNode *child) override;
328448 
328449 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
328450  // MS: 08/16/2002 method for generating RTI information
328452  virtual RTIReturnType roseRTI() override;
328453 #endif
328454  /* */
328455 
328456 
328457 
328458  /* name Deprecated Functions
328459  \brief Deprecated functions ... incomplete-documentation
328460 
328461  These functions have been deprecated from use.
328462  */
328463  /* */
328464 
328466  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
328467 
328468  // JJW (10/16/2008): Changed to a single function in Node.code, and put
328469  // getVariant() in #if 0 block to prevent confusing Doxygen
328470 #if 0
328471 
328472  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
328474  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
328475 #endif
328476  /* */
328477 
328478 
328479 
328480 
328481  public:
328482  /* name Traversal Support Functions
328483  \brief Traversal support functions ... incomplete-documentation
328484 
328485  These functions have been made public as part of the design, but they are suggested for internal use
328486  or by particularly knowledgable users for specialized tools or applications.
328487  */
328488  /* */
328489 
328490  // DQ (11/26/2005): Support for visitor pattern mechanims
328491  // (inferior to ROSE traversal mechanism, experimental).
328495 
328496  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
328498  virtual void accept (ROSE_VisitorPattern & visitor) override;
328499 
328500  // DQ (12/26/2005): Support for traversal based on the memory pool
328503  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
328504 
328507  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
328508 
328509  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
328510  // This traversal helps support internal tools that call static member functions.
328511  // note: this function operates on the memory pools.
328514  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
328515  /* */
328516 
328517 
328518  public:
328519  /* name Memory Allocation Functions
328520  \brief Memory allocations functions ... incomplete-documentation
328521 
328522  These functions have been made public as part of the design, but they are suggested for internal use
328523  or by particularly knowledgable users for specialized tools or applications.
328524  */
328525  /* */
328526 
328537  virtual bool isInMemoryPool() override;
328538 
328549  virtual void checkDataMemberPointersIfInMemoryPool() override;
328550 
328551  // DQ (4/30/2006): Modified to be a const function.
328566  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
328567 
328577  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
328578 
328590  virtual long getChildIndex( SgNode* childNode ) const override;
328591 
328592  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
328593  // comment here (changed to be a C style comment and not be a doxygen comment).
328594  /* \brief Constructor for use by AST File I/O Mechanism
328595 
328596  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
328597  which obtained via fast binary file I/O from disk.
328598  */
328599  // SgTemplateTypedefSymbol( SgTemplateTypedefSymbolStorageClass& source );
328600 
328601 
328602 
328603 
328604 
328605  // JH (10/24/2005): methods added to support the ast file IO
328606  private:
328607 
328608  /* name AST Memory Allocation Support Functions
328609  \brief Memory allocations support....
328610 
328611  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
328612  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
328613  and support the AST File I/O Mechanism.
328614  */
328615  /* */
328616 
328617  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
328618  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
328619  that I use the same type everywhere, if any changes are made. THe second one declares the type
328620  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
328621  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
328622  a correspinding one in the AST_FILE_IO class!
328623  */
328624  // DQ (9/2/2015): This typedef is no longer used, we can't define the
328625  // comment here (changed to be a C style comment and not be a doxygen comment).
328626  /* \brief Typedef used for low level memory access.
328627  */
328628  // typedef unsigned char* TestType;
328629 
328630  // DQ (9/2/2015): This typedef is no longer used, we can't define the
328631  // comment here (changed to be a C style comment and not be a doxygen comment).
328632  /* \brief Typedef used to hold memory addresses as values.
328633  */
328634  // typedef unsigned long AddressType;
328635 
328636 
328637 
328638  // necessary, to have direct access to the p_freepointer and the private methods !
328640  friend class AST_FILE_IO;
328641 
328643  friend class SgTemplateTypedefSymbolStorageClass;
328644 
328646  friend class AstSpecificDataManagingClass;
328647 
328649  friend class AstSpecificDataManagingClassStorageClass;
328650 
328651  public:
328653  SgTemplateTypedefSymbol( const SgTemplateTypedefSymbolStorageClass& source );
328654 
328655  // private: // JJW hack
328656  /*
328657  name AST Memory Allocation Support Variables
328658  Memory allocations support variables
328659 
328660  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
328661  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
328662  and support the AST File I/O Mechanism.
328663  */
328664  /* */
328665 
328666  public:
328667 
328668  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
328669  // to current node (so that it will work cleanly with build functions to specify patterns).
328670  // virtual SgNode* addRegExpAttribute();
328677 
328678 // *** COMMON CODE SECTION ENDS HERE ***
328679 
328680 
328681 // End of memberFunctionString
328682 // Start of memberFunctionString
328683 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
328684 
328685  // the generated cast function
328686  // friend ROSE_DLL_API SgTemplateTypedefSymbol* isSgTemplateTypedefSymbol ( SgNode* s );
328687 
328689 
328690 
328691 // End of memberFunctionString
328692 // Start of memberFunctionString
328693 /* #line 47 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Symbol.code" */
328694 
328695  SgName get_name() const override;
328696  SgNode* get_symbol_basis() const override; // from GET_NAME
328697 
328698 
328699 // End of memberFunctionString
328700 // Start of memberFunctionString
328701 /* #line 41 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Symbol.code" */
328702 
328703  // DQ (3/23/2017): ROSETTA macro expansion
328704  SgType* get_type() const override;
328705  // SgNode* get_symbol_basis() const; // from GET_TYPE
328706 
328707 
328708 // End of memberFunctionString
328709 
328710 
328711  public:
328712  virtual ~SgTemplateTypedefSymbol();
328713 
328714 
328715  public:
328716  SgTemplateTypedefSymbol(SgTypedefDeclaration* declaration = NULL);
328717 
328718  protected:
328719 
328720 
328721 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
328722 
328723 
328724  };
328725 #endif
328726 
328727 // postdeclarations for SgTemplateTypedefSymbol
328728 
328729 /* #line 328730 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
328730 
328731 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
328732 
328733 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
328734 
328735 
328736 /* #line 328737 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
328737 
328738 
328739 
328740 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
328741 
328742 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
328743 // This code is automatically generated for each
328744 // terminal and non-terminal within the defined
328745 // grammar. There is a simple way to change the
328746 // code to fix bugs etc. See the ROSE README file
328747 // for directions.
328748 
328749 // tps: (02/22/2010): Adding DLL export requirements
328750 #include "rosedll.h"
328751 
328752 // predeclarations for SgLabelSymbol
328753 
328754 /* #line 328755 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
328755 
328756 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
328757 
328758 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
328759 
328760 #if 1
328761 // Class Definition for SgLabelSymbol
328762 class ROSE_DLL_API SgLabelSymbol : public SgSymbol
328763  {
328764  public:
328765 
328766 
328767 /* #line 328768 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
328768 
328769  virtual SgNode* copy ( SgCopyHelp& help) const override;
328770 // Start of memberFunctionString
328771 /* #line 68 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Symbol.code" */
328772 
328773 
328776  {
328777  e_unknown_label_type = 0,
328778  e_non_numeric_label_type = 1,
328779  e_start_label_type = 2,
328780  e_else_label_type = 3,
328781  e_end_label_type = 4,
328782  // DQ (2/1/2011): Added support for Fortran specific alternative return labels.
328783  e_alternative_return_type = 5,
328784  e_last_label_type = 6
328785  };
328786 
328787  // DQ (2/1/2011): Added support for named lable to handle arternative return parameters in Fortran.
328788  // SgLabelSymbol ( const SgName & name );
328789  SgLabelSymbol ( SgInitializedName* initializedName );
328790 
328791 
328792 
328793 // End of memberFunctionString
328794 // Start of memberFunctionString
328795 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
328796 
328797 // *** COMMON CODE SECTION BEGINS HERE ***
328798 
328799  public:
328800 
328801  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
328802  // and not required which is required to match the other aspects of the copy mechanism code generation.
328803  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
328804  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
328805  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
328806  // virtual SgNode* copy ( const SgCopyHelp & help) const;
328807 
328809  virtual std::string class_name() const override;
328810 
328812  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
328813 
328815  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
328816  // static const VariantT static_variant = V_SgLabelSymbol;
328817  enum { static_variant = V_SgLabelSymbol };
328818 
328819  /* the generated cast function */
328821  ROSE_DLL_API friend SgLabelSymbol* isSgLabelSymbol( SgNode * s );
328822 
328824  ROSE_DLL_API friend const SgLabelSymbol* isSgLabelSymbol( const SgNode * s );
328825 
328826  // ******************************************
328827  // * Memory Pool / New / Delete
328828  // ******************************************
328829 
328830  public:
328832  static const unsigned pool_size; //
328834  static std::vector<unsigned char *> pools; //
328836  static SgLabelSymbol * next_node; //
328837 
328839  static unsigned long initializeStorageClassArray(SgLabelSymbolStorageClass *); //
328840 
328842  static void clearMemoryPool(); //
328843  static void deleteMemoryPool(); //
328844 
328846  static void extendMemoryPoolForFileIO(); //
328847 
328849  static SgLabelSymbol * getPointerFromGlobalIndex(unsigned long); //
328851  static SgLabelSymbol * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
328852 
328854  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
328856  static void resetValidFreepointers(); //
328858  static unsigned long getNumberOfLastValidPointer(); //
328859 
328860 
328861 #if defined(INLINE_FUNCTIONS)
328862 
328863  inline void *operator new (size_t size);
328864 #else
328865 
328866  void *operator new (size_t size);
328867 #endif
328868 
328869  void operator delete (void* pointer, size_t size);
328870 
328871  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
328872  void operator delete (void* pointer)
328873  {
328874  // This is the generated delete operator...
328875  SgLabelSymbol::operator delete (pointer,sizeof(SgLabelSymbol));
328876  }
328877 
328879  static size_t numberOfNodes();
328880 
328882  static size_t memoryUsage();
328883 
328884  // End of scope which started in IR nodes specific code
328885  /* */
328886 
328887  /* name Internal Functions
328888  \brief Internal functions ... incomplete-documentation
328889 
328890  These functions have been made public as part of the design, but they are suggested for internal use
328891  or by particularly knowledgeable users for specialized tools or applications.
328892 
328893  \internal We could not make these private because they are required by user for special purposes. And
328894  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
328895 
328896  */
328897 
328898  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
328899  // overridden in every class by *generated* implementation
328901  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
328902  // MS: 06/28/02 container of names of variables or container indices
328903  // used used in the traversal to access AST successor nodes
328904  // overridden in every class by *generated* implementation
328907  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
328908 
328909  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
328910  // than all the vector copies. The implementation for these functions is generated for each class.
328912  virtual size_t get_numberOfTraversalSuccessors() override;
328914  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
328916  virtual size_t get_childIndex(SgNode *child) override;
328917 
328918 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
328919  // MS: 08/16/2002 method for generating RTI information
328921  virtual RTIReturnType roseRTI() override;
328922 #endif
328923  /* */
328924 
328925 
328926 
328927  /* name Deprecated Functions
328928  \brief Deprecated functions ... incomplete-documentation
328929 
328930  These functions have been deprecated from use.
328931  */
328932  /* */
328933 
328935  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
328936 
328937  // JJW (10/16/2008): Changed to a single function in Node.code, and put
328938  // getVariant() in #if 0 block to prevent confusing Doxygen
328939 #if 0
328940 
328941  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
328943  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
328944 #endif
328945  /* */
328946 
328947 
328948 
328949 
328950  public:
328951  /* name Traversal Support Functions
328952  \brief Traversal support functions ... incomplete-documentation
328953 
328954  These functions have been made public as part of the design, but they are suggested for internal use
328955  or by particularly knowledgable users for specialized tools or applications.
328956  */
328957  /* */
328958 
328959  // DQ (11/26/2005): Support for visitor pattern mechanims
328960  // (inferior to ROSE traversal mechanism, experimental).
328964 
328965  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
328967  virtual void accept (ROSE_VisitorPattern & visitor) override;
328968 
328969  // DQ (12/26/2005): Support for traversal based on the memory pool
328972  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
328973 
328976  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
328977 
328978  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
328979  // This traversal helps support internal tools that call static member functions.
328980  // note: this function operates on the memory pools.
328983  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
328984  /* */
328985 
328986 
328987  public:
328988  /* name Memory Allocation Functions
328989  \brief Memory allocations functions ... incomplete-documentation
328990 
328991  These functions have been made public as part of the design, but they are suggested for internal use
328992  or by particularly knowledgable users for specialized tools or applications.
328993  */
328994  /* */
328995 
329006  virtual bool isInMemoryPool() override;
329007 
329018  virtual void checkDataMemberPointersIfInMemoryPool() override;
329019 
329020  // DQ (4/30/2006): Modified to be a const function.
329035  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
329036 
329046  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
329047 
329059  virtual long getChildIndex( SgNode* childNode ) const override;
329060 
329061  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
329062  // comment here (changed to be a C style comment and not be a doxygen comment).
329063  /* \brief Constructor for use by AST File I/O Mechanism
329064 
329065  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
329066  which obtained via fast binary file I/O from disk.
329067  */
329068  // SgLabelSymbol( SgLabelSymbolStorageClass& source );
329069 
329070 
329071 
329072 
329073 
329074  // JH (10/24/2005): methods added to support the ast file IO
329075  private:
329076 
329077  /* name AST Memory Allocation Support Functions
329078  \brief Memory allocations support....
329079 
329080  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
329081  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
329082  and support the AST File I/O Mechanism.
329083  */
329084  /* */
329085 
329086  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
329087  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
329088  that I use the same type everywhere, if any changes are made. THe second one declares the type
329089  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
329090  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
329091  a correspinding one in the AST_FILE_IO class!
329092  */
329093  // DQ (9/2/2015): This typedef is no longer used, we can't define the
329094  // comment here (changed to be a C style comment and not be a doxygen comment).
329095  /* \brief Typedef used for low level memory access.
329096  */
329097  // typedef unsigned char* TestType;
329098 
329099  // DQ (9/2/2015): This typedef is no longer used, we can't define the
329100  // comment here (changed to be a C style comment and not be a doxygen comment).
329101  /* \brief Typedef used to hold memory addresses as values.
329102  */
329103  // typedef unsigned long AddressType;
329104 
329105 
329106 
329107  // necessary, to have direct access to the p_freepointer and the private methods !
329109  friend class AST_FILE_IO;
329110 
329112  friend class SgLabelSymbolStorageClass;
329113 
329115  friend class AstSpecificDataManagingClass;
329116 
329118  friend class AstSpecificDataManagingClassStorageClass;
329119 
329120  public:
329122  SgLabelSymbol( const SgLabelSymbolStorageClass& source );
329123 
329124  // private: // JJW hack
329125  /*
329126  name AST Memory Allocation Support Variables
329127  Memory allocations support variables
329128 
329129  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
329130  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
329131  and support the AST File I/O Mechanism.
329132  */
329133  /* */
329134 
329135  public:
329136 
329137  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
329138  // to current node (so that it will work cleanly with build functions to specify patterns).
329139  // virtual SgNode* addRegExpAttribute();
329145  SgLabelSymbol* addRegExpAttribute(std::string s, AstRegExAttribute* a);
329146 
329147 // *** COMMON CODE SECTION ENDS HERE ***
329148 
329149 
329150 // End of memberFunctionString
329151 // Start of memberFunctionString
329152 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
329153 
329154  // the generated cast function
329155  // friend ROSE_DLL_API SgLabelSymbol* isSgLabelSymbol ( SgNode* s );
329156 
329157  typedef SgSymbol base_node_type;
329158 
329159 
329160 // End of memberFunctionString
329161 // Start of memberFunctionString
329162 /* #line 47 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Symbol.code" */
329163 
329164  SgName get_name() const override;
329165  SgNode* get_symbol_basis() const override; // from GET_NAME
329166 
329167 
329168 // End of memberFunctionString
329169 // Start of memberFunctionString
329170 /* #line 41 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Symbol.code" */
329171 
329172  // DQ (3/23/2017): ROSETTA macro expansion
329173  SgType* get_type() const override;
329174  // SgNode* get_symbol_basis() const; // from GET_TYPE
329175 
329176 
329177 // End of memberFunctionString
329178 
329179  public:
329180  SgLabelStatement* get_declaration() const;
329181  void set_declaration(SgLabelStatement* declaration);
329182 
329183  public:
329184  SgStatement* get_fortran_statement() const;
329185  void set_fortran_statement(SgStatement* fortran_statement);
329186 
329187  public:
329188  SgInitializedName* get_fortran_alternate_return_parameter() const;
329189  void set_fortran_alternate_return_parameter(SgInitializedName* fortran_alternate_return_parameter);
329190 
329191  public:
329192  int get_numeric_label_value() const;
329193  void set_numeric_label_value(int numeric_label_value);
329194 
329195  public:
329196  SgLabelSymbol::label_type_enum get_label_type() const;
329197  void set_label_type(SgLabelSymbol::label_type_enum label_type);
329198 
329199 
329200  public:
329201  virtual ~SgLabelSymbol();
329202 
329203 
329204  public:
329205  SgLabelSymbol(SgLabelStatement* declaration = NULL);
329206 
329207  protected:
329208 // Start of memberFunctionString
329209 SgLabelStatement* p_declaration;
329210 
329211 // End of memberFunctionString
329212 // Start of memberFunctionString
329213 SgStatement* p_fortran_statement;
329214 
329215 // End of memberFunctionString
329216 // Start of memberFunctionString
329217 SgInitializedName* p_fortran_alternate_return_parameter;
329218 
329219 // End of memberFunctionString
329220 // Start of memberFunctionString
329221 int p_numeric_label_value;
329222 
329223 // End of memberFunctionString
329224 // Start of memberFunctionString
329225 SgLabelSymbol::label_type_enum p_label_type;
329226 
329227 // End of memberFunctionString
329228 
329229 
329230 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
329231 
329232 
329233  };
329234 #endif
329235 
329236 // postdeclarations for SgLabelSymbol
329237 
329238 /* #line 329239 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
329239 
329240 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
329241 
329242 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
329243 
329244 
329245 /* #line 329246 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
329246 
329247 
329248 
329249 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
329250 
329251 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
329252 // This code is automatically generated for each
329253 // terminal and non-terminal within the defined
329254 // grammar. There is a simple way to change the
329255 // code to fix bugs etc. See the ROSE README file
329256 // for directions.
329257 
329258 // tps: (02/22/2010): Adding DLL export requirements
329259 #include "rosedll.h"
329260 
329261 // predeclarations for SgDefaultSymbol
329262 
329263 /* #line 329264 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
329264 
329265 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
329266 
329267 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
329268 
329269 #if 1
329270 // Class Definition for SgDefaultSymbol
329271 class ROSE_DLL_API SgDefaultSymbol : public SgSymbol
329272  {
329273  public:
329274 
329275 
329276 /* #line 329277 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
329277 
329278  virtual SgNode* copy ( SgCopyHelp& help) const override;
329279 // Start of memberFunctionString
329280 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
329281 
329282 // *** COMMON CODE SECTION BEGINS HERE ***
329283 
329284  public:
329285 
329286  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
329287  // and not required which is required to match the other aspects of the copy mechanism code generation.
329288  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
329289  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
329290  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
329291  // virtual SgNode* copy ( const SgCopyHelp & help) const;
329292 
329294  virtual std::string class_name() const override;
329295 
329297  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
329298 
329300  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
329301  // static const VariantT static_variant = V_SgDefaultSymbol;
329302  enum { static_variant = V_SgDefaultSymbol };
329303 
329304  /* the generated cast function */
329306  ROSE_DLL_API friend SgDefaultSymbol* isSgDefaultSymbol( SgNode * s );
329307 
329309  ROSE_DLL_API friend const SgDefaultSymbol* isSgDefaultSymbol( const SgNode * s );
329310 
329311  // ******************************************
329312  // * Memory Pool / New / Delete
329313  // ******************************************
329314 
329315  public:
329317  static const unsigned pool_size; //
329319  static std::vector<unsigned char *> pools; //
329321  static SgDefaultSymbol * next_node; //
329322 
329324  static unsigned long initializeStorageClassArray(SgDefaultSymbolStorageClass *); //
329325 
329327  static void clearMemoryPool(); //
329328  static void deleteMemoryPool(); //
329329 
329331  static void extendMemoryPoolForFileIO(); //
329332 
329334  static SgDefaultSymbol * getPointerFromGlobalIndex(unsigned long); //
329336  static SgDefaultSymbol * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
329337 
329339  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
329341  static void resetValidFreepointers(); //
329343  static unsigned long getNumberOfLastValidPointer(); //
329344 
329345 
329346 #if defined(INLINE_FUNCTIONS)
329347 
329348  inline void *operator new (size_t size);
329349 #else
329350 
329351  void *operator new (size_t size);
329352 #endif
329353 
329354  void operator delete (void* pointer, size_t size);
329355 
329356  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
329357  void operator delete (void* pointer)
329358  {
329359  // This is the generated delete operator...
329360  SgDefaultSymbol::operator delete (pointer,sizeof(SgDefaultSymbol));
329361  }
329362 
329364  static size_t numberOfNodes();
329365 
329367  static size_t memoryUsage();
329368 
329369  // End of scope which started in IR nodes specific code
329370  /* */
329371 
329372  /* name Internal Functions
329373  \brief Internal functions ... incomplete-documentation
329374 
329375  These functions have been made public as part of the design, but they are suggested for internal use
329376  or by particularly knowledgeable users for specialized tools or applications.
329377 
329378  \internal We could not make these private because they are required by user for special purposes. And
329379  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
329380 
329381  */
329382 
329383  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
329384  // overridden in every class by *generated* implementation
329386  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
329387  // MS: 06/28/02 container of names of variables or container indices
329388  // used used in the traversal to access AST successor nodes
329389  // overridden in every class by *generated* implementation
329392  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
329393 
329394  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
329395  // than all the vector copies. The implementation for these functions is generated for each class.
329397  virtual size_t get_numberOfTraversalSuccessors() override;
329399  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
329401  virtual size_t get_childIndex(SgNode *child) override;
329402 
329403 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
329404  // MS: 08/16/2002 method for generating RTI information
329406  virtual RTIReturnType roseRTI() override;
329407 #endif
329408  /* */
329409 
329410 
329411 
329412  /* name Deprecated Functions
329413  \brief Deprecated functions ... incomplete-documentation
329414 
329415  These functions have been deprecated from use.
329416  */
329417  /* */
329418 
329420  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
329421 
329422  // JJW (10/16/2008): Changed to a single function in Node.code, and put
329423  // getVariant() in #if 0 block to prevent confusing Doxygen
329424 #if 0
329425 
329426  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
329428  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
329429 #endif
329430  /* */
329431 
329432 
329433 
329434 
329435  public:
329436  /* name Traversal Support Functions
329437  \brief Traversal support functions ... incomplete-documentation
329438 
329439  These functions have been made public as part of the design, but they are suggested for internal use
329440  or by particularly knowledgable users for specialized tools or applications.
329441  */
329442  /* */
329443 
329444  // DQ (11/26/2005): Support for visitor pattern mechanims
329445  // (inferior to ROSE traversal mechanism, experimental).
329449 
329450  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
329452  virtual void accept (ROSE_VisitorPattern & visitor) override;
329453 
329454  // DQ (12/26/2005): Support for traversal based on the memory pool
329457  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
329458 
329461  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
329462 
329463  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
329464  // This traversal helps support internal tools that call static member functions.
329465  // note: this function operates on the memory pools.
329468  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
329469  /* */
329470 
329471 
329472  public:
329473  /* name Memory Allocation Functions
329474  \brief Memory allocations functions ... incomplete-documentation
329475 
329476  These functions have been made public as part of the design, but they are suggested for internal use
329477  or by particularly knowledgable users for specialized tools or applications.
329478  */
329479  /* */
329480 
329491  virtual bool isInMemoryPool() override;
329492 
329503  virtual void checkDataMemberPointersIfInMemoryPool() override;
329504 
329505  // DQ (4/30/2006): Modified to be a const function.
329520  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
329521 
329531  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
329532 
329544  virtual long getChildIndex( SgNode* childNode ) const override;
329545 
329546  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
329547  // comment here (changed to be a C style comment and not be a doxygen comment).
329548  /* \brief Constructor for use by AST File I/O Mechanism
329549 
329550  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
329551  which obtained via fast binary file I/O from disk.
329552  */
329553  // SgDefaultSymbol( SgDefaultSymbolStorageClass& source );
329554 
329555 
329556 
329557 
329558 
329559  // JH (10/24/2005): methods added to support the ast file IO
329560  private:
329561 
329562  /* name AST Memory Allocation Support Functions
329563  \brief Memory allocations support....
329564 
329565  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
329566  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
329567  and support the AST File I/O Mechanism.
329568  */
329569  /* */
329570 
329571  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
329572  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
329573  that I use the same type everywhere, if any changes are made. THe second one declares the type
329574  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
329575  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
329576  a correspinding one in the AST_FILE_IO class!
329577  */
329578  // DQ (9/2/2015): This typedef is no longer used, we can't define the
329579  // comment here (changed to be a C style comment and not be a doxygen comment).
329580  /* \brief Typedef used for low level memory access.
329581  */
329582  // typedef unsigned char* TestType;
329583 
329584  // DQ (9/2/2015): This typedef is no longer used, we can't define the
329585  // comment here (changed to be a C style comment and not be a doxygen comment).
329586  /* \brief Typedef used to hold memory addresses as values.
329587  */
329588  // typedef unsigned long AddressType;
329589 
329590 
329591 
329592  // necessary, to have direct access to the p_freepointer and the private methods !
329594  friend class AST_FILE_IO;
329595 
329597  friend class SgDefaultSymbolStorageClass;
329598 
329600  friend class AstSpecificDataManagingClass;
329601 
329603  friend class AstSpecificDataManagingClassStorageClass;
329604 
329605  public:
329607  SgDefaultSymbol( const SgDefaultSymbolStorageClass& source );
329608 
329609  // private: // JJW hack
329610  /*
329611  name AST Memory Allocation Support Variables
329612  Memory allocations support variables
329613 
329614  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
329615  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
329616  and support the AST File I/O Mechanism.
329617  */
329618  /* */
329619 
329620  public:
329621 
329622  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
329623  // to current node (so that it will work cleanly with build functions to specify patterns).
329624  // virtual SgNode* addRegExpAttribute();
329631 
329632 // *** COMMON CODE SECTION ENDS HERE ***
329633 
329634 
329635 // End of memberFunctionString
329636 // Start of memberFunctionString
329637 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
329638 
329639  // the generated cast function
329640  // friend ROSE_DLL_API SgDefaultSymbol* isSgDefaultSymbol ( SgNode* s );
329641 
329642  typedef SgSymbol base_node_type;
329643 
329644 
329645 // End of memberFunctionString
329646 // Start of memberFunctionString
329647 /* #line 47 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Symbol.code" */
329648 
329649  SgName get_name() const override;
329650  SgNode* get_symbol_basis() const override; // from GET_NAME
329651 
329652 
329653 // End of memberFunctionString
329654 
329655  public:
329656  SgType* get_type() const override /* (getDataAccessFunctionPrototypeString) */;
329657  void set_type(SgType* type) /* (getDataAccessFunctionPrototypeString) */;
329658 
329659 
329660  public:
329661  virtual ~SgDefaultSymbol();
329662 
329663 
329664  public:
329665  SgDefaultSymbol(SgType* type = NULL);
329666 
329667  protected:
329668 // Start of memberFunctionString
329669 SgType* p_type;
329670 
329671 // End of memberFunctionString
329672 
329673 
329674 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
329675 
329676 
329677  };
329678 #endif
329679 
329680 // postdeclarations for SgDefaultSymbol
329681 
329682 /* #line 329683 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
329683 
329684 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
329685 
329686 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
329687 
329688 
329689 /* #line 329690 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
329690 
329691 
329692 
329693 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
329694 
329695 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
329696 // This code is automatically generated for each
329697 // terminal and non-terminal within the defined
329698 // grammar. There is a simple way to change the
329699 // code to fix bugs etc. See the ROSE README file
329700 // for directions.
329701 
329702 // tps: (02/22/2010): Adding DLL export requirements
329703 #include "rosedll.h"
329704 
329705 // predeclarations for SgNamespaceSymbol
329706 
329707 /* #line 329708 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
329708 
329709 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
329710 
329711 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
329712 
329713 #if 1
329714 // Class Definition for SgNamespaceSymbol
329715 class ROSE_DLL_API SgNamespaceSymbol : public SgSymbol
329716  {
329717  public:
329718 
329719 
329720 /* #line 329721 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
329721 
329722  virtual SgNode* copy ( SgCopyHelp& help) const override;
329723 // Start of memberFunctionString
329724 /* #line 116 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Symbol.code" */
329725 
329726  void post_construction_initialization() override;
329727 
329728 
329729 // End of memberFunctionString
329730 // Start of memberFunctionString
329731 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
329732 
329733 // *** COMMON CODE SECTION BEGINS HERE ***
329734 
329735  public:
329736 
329737  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
329738  // and not required which is required to match the other aspects of the copy mechanism code generation.
329739  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
329740  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
329741  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
329742  // virtual SgNode* copy ( const SgCopyHelp & help) const;
329743 
329745  virtual std::string class_name() const override;
329746 
329748  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
329749 
329751  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
329752  // static const VariantT static_variant = V_SgNamespaceSymbol;
329753  enum { static_variant = V_SgNamespaceSymbol };
329754 
329755  /* the generated cast function */
329757  ROSE_DLL_API friend SgNamespaceSymbol* isSgNamespaceSymbol( SgNode * s );
329758 
329760  ROSE_DLL_API friend const SgNamespaceSymbol* isSgNamespaceSymbol( const SgNode * s );
329761 
329762  // ******************************************
329763  // * Memory Pool / New / Delete
329764  // ******************************************
329765 
329766  public:
329768  static const unsigned pool_size; //
329770  static std::vector<unsigned char *> pools; //
329772  static SgNamespaceSymbol * next_node; //
329773 
329775  static unsigned long initializeStorageClassArray(SgNamespaceSymbolStorageClass *); //
329776 
329778  static void clearMemoryPool(); //
329779  static void deleteMemoryPool(); //
329780 
329782  static void extendMemoryPoolForFileIO(); //
329783 
329785  static SgNamespaceSymbol * getPointerFromGlobalIndex(unsigned long); //
329787  static SgNamespaceSymbol * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
329788 
329790  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
329792  static void resetValidFreepointers(); //
329794  static unsigned long getNumberOfLastValidPointer(); //
329795 
329796 
329797 #if defined(INLINE_FUNCTIONS)
329798 
329799  inline void *operator new (size_t size);
329800 #else
329801 
329802  void *operator new (size_t size);
329803 #endif
329804 
329805  void operator delete (void* pointer, size_t size);
329806 
329807  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
329808  void operator delete (void* pointer)
329809  {
329810  // This is the generated delete operator...
329811  SgNamespaceSymbol::operator delete (pointer,sizeof(SgNamespaceSymbol));
329812  }
329813 
329815  static size_t numberOfNodes();
329816 
329818  static size_t memoryUsage();
329819 
329820  // End of scope which started in IR nodes specific code
329821  /* */
329822 
329823  /* name Internal Functions
329824  \brief Internal functions ... incomplete-documentation
329825 
329826  These functions have been made public as part of the design, but they are suggested for internal use
329827  or by particularly knowledgeable users for specialized tools or applications.
329828 
329829  \internal We could not make these private because they are required by user for special purposes. And
329830  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
329831 
329832  */
329833 
329834  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
329835  // overridden in every class by *generated* implementation
329837  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
329838  // MS: 06/28/02 container of names of variables or container indices
329839  // used used in the traversal to access AST successor nodes
329840  // overridden in every class by *generated* implementation
329843  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
329844 
329845  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
329846  // than all the vector copies. The implementation for these functions is generated for each class.
329848  virtual size_t get_numberOfTraversalSuccessors() override;
329850  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
329852  virtual size_t get_childIndex(SgNode *child) override;
329853 
329854 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
329855  // MS: 08/16/2002 method for generating RTI information
329857  virtual RTIReturnType roseRTI() override;
329858 #endif
329859  /* */
329860 
329861 
329862 
329863  /* name Deprecated Functions
329864  \brief Deprecated functions ... incomplete-documentation
329865 
329866  These functions have been deprecated from use.
329867  */
329868  /* */
329869 
329871  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
329872 
329873  // JJW (10/16/2008): Changed to a single function in Node.code, and put
329874  // getVariant() in #if 0 block to prevent confusing Doxygen
329875 #if 0
329876 
329877  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
329879  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
329880 #endif
329881  /* */
329882 
329883 
329884 
329885 
329886  public:
329887  /* name Traversal Support Functions
329888  \brief Traversal support functions ... incomplete-documentation
329889 
329890  These functions have been made public as part of the design, but they are suggested for internal use
329891  or by particularly knowledgable users for specialized tools or applications.
329892  */
329893  /* */
329894 
329895  // DQ (11/26/2005): Support for visitor pattern mechanims
329896  // (inferior to ROSE traversal mechanism, experimental).
329900 
329901  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
329903  virtual void accept (ROSE_VisitorPattern & visitor) override;
329904 
329905  // DQ (12/26/2005): Support for traversal based on the memory pool
329908  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
329909 
329912  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
329913 
329914  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
329915  // This traversal helps support internal tools that call static member functions.
329916  // note: this function operates on the memory pools.
329919  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
329920  /* */
329921 
329922 
329923  public:
329924  /* name Memory Allocation Functions
329925  \brief Memory allocations functions ... incomplete-documentation
329926 
329927  These functions have been made public as part of the design, but they are suggested for internal use
329928  or by particularly knowledgable users for specialized tools or applications.
329929  */
329930  /* */
329931 
329942  virtual bool isInMemoryPool() override;
329943 
329954  virtual void checkDataMemberPointersIfInMemoryPool() override;
329955 
329956  // DQ (4/30/2006): Modified to be a const function.
329971  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
329972 
329982  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
329983 
329995  virtual long getChildIndex( SgNode* childNode ) const override;
329996 
329997  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
329998  // comment here (changed to be a C style comment and not be a doxygen comment).
329999  /* \brief Constructor for use by AST File I/O Mechanism
330000 
330001  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
330002  which obtained via fast binary file I/O from disk.
330003  */
330004  // SgNamespaceSymbol( SgNamespaceSymbolStorageClass& source );
330005 
330006 
330007 
330008 
330009 
330010  // JH (10/24/2005): methods added to support the ast file IO
330011  private:
330012 
330013  /* name AST Memory Allocation Support Functions
330014  \brief Memory allocations support....
330015 
330016  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
330017  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
330018  and support the AST File I/O Mechanism.
330019  */
330020  /* */
330021 
330022  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
330023  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
330024  that I use the same type everywhere, if any changes are made. THe second one declares the type
330025  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
330026  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
330027  a correspinding one in the AST_FILE_IO class!
330028  */
330029  // DQ (9/2/2015): This typedef is no longer used, we can't define the
330030  // comment here (changed to be a C style comment and not be a doxygen comment).
330031  /* \brief Typedef used for low level memory access.
330032  */
330033  // typedef unsigned char* TestType;
330034 
330035  // DQ (9/2/2015): This typedef is no longer used, we can't define the
330036  // comment here (changed to be a C style comment and not be a doxygen comment).
330037  /* \brief Typedef used to hold memory addresses as values.
330038  */
330039  // typedef unsigned long AddressType;
330040 
330041 
330042 
330043  // necessary, to have direct access to the p_freepointer and the private methods !
330045  friend class AST_FILE_IO;
330046 
330048  friend class SgNamespaceSymbolStorageClass;
330049 
330051  friend class AstSpecificDataManagingClass;
330052 
330054  friend class AstSpecificDataManagingClassStorageClass;
330055 
330056  public:
330058  SgNamespaceSymbol( const SgNamespaceSymbolStorageClass& source );
330059 
330060  // private: // JJW hack
330061  /*
330062  name AST Memory Allocation Support Variables
330063  Memory allocations support variables
330064 
330065  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
330066  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
330067  and support the AST File I/O Mechanism.
330068  */
330069  /* */
330070 
330071  public:
330072 
330073  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
330074  // to current node (so that it will work cleanly with build functions to specify patterns).
330075  // virtual SgNode* addRegExpAttribute();
330082 
330083 // *** COMMON CODE SECTION ENDS HERE ***
330084 
330085 
330086 // End of memberFunctionString
330087 // Start of memberFunctionString
330088 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
330089 
330090  // the generated cast function
330091  // friend ROSE_DLL_API SgNamespaceSymbol* isSgNamespaceSymbol ( SgNode* s );
330092 
330093  typedef SgSymbol base_node_type;
330094 
330095 
330096 // End of memberFunctionString
330097 // Start of memberFunctionString
330098 /* #line 47 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Symbol.code" */
330099 
330100  SgName get_name() const override;
330101  SgNode* get_symbol_basis() const override; // from GET_NAME
330102 
330103 
330104 // End of memberFunctionString
330105 // Start of memberFunctionString
330106 /* #line 41 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Symbol.code" */
330107 
330108  // DQ (3/23/2017): ROSETTA macro expansion
330109  SgType* get_type() const override;
330110  // SgNode* get_symbol_basis() const; // from GET_TYPE
330111 
330112 
330113 // End of memberFunctionString
330114 
330115 
330116  public:
330117  SgNamespaceDeclarationStatement* get_declaration() const;
330118  void set_declaration(SgNamespaceDeclarationStatement* declaration);
330119 
330120  public:
330121  SgNamespaceAliasDeclarationStatement* get_aliasDeclaration() const;
330122  void set_aliasDeclaration(SgNamespaceAliasDeclarationStatement* aliasDeclaration);
330123 
330124  public:
330125  bool get_isAlias() const;
330126  void set_isAlias(bool isAlias);
330127 
330128 
330129  public:
330130  virtual ~SgNamespaceSymbol();
330131 
330132 
330133  public:
330134  SgNamespaceSymbol(SgName name = "", SgNamespaceDeclarationStatement* declaration = NULL, SgNamespaceAliasDeclarationStatement* aliasDeclaration = NULL, bool isAlias = false);
330135 
330136  protected:
330137 // Start of memberFunctionString
330138 SgName p_name;
330139 
330140 // End of memberFunctionString
330141 // Start of memberFunctionString
330142 SgNamespaceDeclarationStatement* p_declaration;
330143 
330144 // End of memberFunctionString
330145 // Start of memberFunctionString
330146 SgNamespaceAliasDeclarationStatement* p_aliasDeclaration;
330147 
330148 // End of memberFunctionString
330149 // Start of memberFunctionString
330150 bool p_isAlias;
330151 
330152 // End of memberFunctionString
330153 
330154 
330155 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
330156 
330157 
330158  };
330159 #endif
330160 
330161 // postdeclarations for SgNamespaceSymbol
330162 
330163 /* #line 330164 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
330164 
330165 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
330166 
330167 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
330168 
330169 
330170 /* #line 330171 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
330171 
330172 
330173 
330174 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
330175 
330176 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
330177 // This code is automatically generated for each
330178 // terminal and non-terminal within the defined
330179 // grammar. There is a simple way to change the
330180 // code to fix bugs etc. See the ROSE README file
330181 // for directions.
330182 
330183 // tps: (02/22/2010): Adding DLL export requirements
330184 #include "rosedll.h"
330185 
330186 // predeclarations for SgIntrinsicSymbol
330187 
330188 /* #line 330189 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
330189 
330190 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
330191 
330192 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
330193 
330194 #if 1
330195 // Class Definition for SgIntrinsicSymbol
330196 class ROSE_DLL_API SgIntrinsicSymbol : public SgSymbol
330197  {
330198  public:
330199 
330200 
330201 /* #line 330202 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
330202 
330203  virtual SgNode* copy ( SgCopyHelp& help) const override;
330204 // Start of memberFunctionString
330205 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
330206 
330207 // *** COMMON CODE SECTION BEGINS HERE ***
330208 
330209  public:
330210 
330211  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
330212  // and not required which is required to match the other aspects of the copy mechanism code generation.
330213  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
330214  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
330215  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
330216  // virtual SgNode* copy ( const SgCopyHelp & help) const;
330217 
330219  virtual std::string class_name() const override;
330220 
330222  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
330223 
330225  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
330226  // static const VariantT static_variant = V_SgIntrinsicSymbol;
330227  enum { static_variant = V_SgIntrinsicSymbol };
330228 
330229  /* the generated cast function */
330231  ROSE_DLL_API friend SgIntrinsicSymbol* isSgIntrinsicSymbol( SgNode * s );
330232 
330234  ROSE_DLL_API friend const SgIntrinsicSymbol* isSgIntrinsicSymbol( const SgNode * s );
330235 
330236  // ******************************************
330237  // * Memory Pool / New / Delete
330238  // ******************************************
330239 
330240  public:
330242  static const unsigned pool_size; //
330244  static std::vector<unsigned char *> pools; //
330246  static SgIntrinsicSymbol * next_node; //
330247 
330249  static unsigned long initializeStorageClassArray(SgIntrinsicSymbolStorageClass *); //
330250 
330252  static void clearMemoryPool(); //
330253  static void deleteMemoryPool(); //
330254 
330256  static void extendMemoryPoolForFileIO(); //
330257 
330259  static SgIntrinsicSymbol * getPointerFromGlobalIndex(unsigned long); //
330261  static SgIntrinsicSymbol * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
330262 
330264  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
330266  static void resetValidFreepointers(); //
330268  static unsigned long getNumberOfLastValidPointer(); //
330269 
330270 
330271 #if defined(INLINE_FUNCTIONS)
330272 
330273  inline void *operator new (size_t size);
330274 #else
330275 
330276  void *operator new (size_t size);
330277 #endif
330278 
330279  void operator delete (void* pointer, size_t size);
330280 
330281  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
330282  void operator delete (void* pointer)
330283  {
330284  // This is the generated delete operator...
330285  SgIntrinsicSymbol::operator delete (pointer,sizeof(SgIntrinsicSymbol));
330286  }
330287 
330289  static size_t numberOfNodes();
330290 
330292  static size_t memoryUsage();
330293 
330294  // End of scope which started in IR nodes specific code
330295  /* */
330296 
330297  /* name Internal Functions
330298  \brief Internal functions ... incomplete-documentation
330299 
330300  These functions have been made public as part of the design, but they are suggested for internal use
330301  or by particularly knowledgeable users for specialized tools or applications.
330302 
330303  \internal We could not make these private because they are required by user for special purposes. And
330304  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
330305 
330306  */
330307 
330308  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
330309  // overridden in every class by *generated* implementation
330311  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
330312  // MS: 06/28/02 container of names of variables or container indices
330313  // used used in the traversal to access AST successor nodes
330314  // overridden in every class by *generated* implementation
330317  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
330318 
330319  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
330320  // than all the vector copies. The implementation for these functions is generated for each class.
330322  virtual size_t get_numberOfTraversalSuccessors() override;
330324  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
330326  virtual size_t get_childIndex(SgNode *child) override;
330327 
330328 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
330329  // MS: 08/16/2002 method for generating RTI information
330331  virtual RTIReturnType roseRTI() override;
330332 #endif
330333  /* */
330334 
330335 
330336 
330337  /* name Deprecated Functions
330338  \brief Deprecated functions ... incomplete-documentation
330339 
330340  These functions have been deprecated from use.
330341  */
330342  /* */
330343 
330345  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
330346 
330347  // JJW (10/16/2008): Changed to a single function in Node.code, and put
330348  // getVariant() in #if 0 block to prevent confusing Doxygen
330349 #if 0
330350 
330351  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
330353  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
330354 #endif
330355  /* */
330356 
330357 
330358 
330359 
330360  public:
330361  /* name Traversal Support Functions
330362  \brief Traversal support functions ... incomplete-documentation
330363 
330364  These functions have been made public as part of the design, but they are suggested for internal use
330365  or by particularly knowledgable users for specialized tools or applications.
330366  */
330367  /* */
330368 
330369  // DQ (11/26/2005): Support for visitor pattern mechanims
330370  // (inferior to ROSE traversal mechanism, experimental).
330374 
330375  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
330377  virtual void accept (ROSE_VisitorPattern & visitor) override;
330378 
330379  // DQ (12/26/2005): Support for traversal based on the memory pool
330382  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
330383 
330386  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
330387 
330388  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
330389  // This traversal helps support internal tools that call static member functions.
330390  // note: this function operates on the memory pools.
330393  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
330394  /* */
330395 
330396 
330397  public:
330398  /* name Memory Allocation Functions
330399  \brief Memory allocations functions ... incomplete-documentation
330400 
330401  These functions have been made public as part of the design, but they are suggested for internal use
330402  or by particularly knowledgable users for specialized tools or applications.
330403  */
330404  /* */
330405 
330416  virtual bool isInMemoryPool() override;
330417 
330428  virtual void checkDataMemberPointersIfInMemoryPool() override;
330429 
330430  // DQ (4/30/2006): Modified to be a const function.
330445  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
330446 
330456  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
330457 
330469  virtual long getChildIndex( SgNode* childNode ) const override;
330470 
330471  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
330472  // comment here (changed to be a C style comment and not be a doxygen comment).
330473  /* \brief Constructor for use by AST File I/O Mechanism
330474 
330475  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
330476  which obtained via fast binary file I/O from disk.
330477  */
330478  // SgIntrinsicSymbol( SgIntrinsicSymbolStorageClass& source );
330479 
330480 
330481 
330482 
330483 
330484  // JH (10/24/2005): methods added to support the ast file IO
330485  private:
330486 
330487  /* name AST Memory Allocation Support Functions
330488  \brief Memory allocations support....
330489 
330490  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
330491  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
330492  and support the AST File I/O Mechanism.
330493  */
330494  /* */
330495 
330496  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
330497  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
330498  that I use the same type everywhere, if any changes are made. THe second one declares the type
330499  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
330500  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
330501  a correspinding one in the AST_FILE_IO class!
330502  */
330503  // DQ (9/2/2015): This typedef is no longer used, we can't define the
330504  // comment here (changed to be a C style comment and not be a doxygen comment).
330505  /* \brief Typedef used for low level memory access.
330506  */
330507  // typedef unsigned char* TestType;
330508 
330509  // DQ (9/2/2015): This typedef is no longer used, we can't define the
330510  // comment here (changed to be a C style comment and not be a doxygen comment).
330511  /* \brief Typedef used to hold memory addresses as values.
330512  */
330513  // typedef unsigned long AddressType;
330514 
330515 
330516 
330517  // necessary, to have direct access to the p_freepointer and the private methods !
330519  friend class AST_FILE_IO;
330520 
330522  friend class SgIntrinsicSymbolStorageClass;
330523 
330525  friend class AstSpecificDataManagingClass;
330526 
330528  friend class AstSpecificDataManagingClassStorageClass;
330529 
330530  public:
330532  SgIntrinsicSymbol( const SgIntrinsicSymbolStorageClass& source );
330533 
330534  // private: // JJW hack
330535  /*
330536  name AST Memory Allocation Support Variables
330537  Memory allocations support variables
330538 
330539  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
330540  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
330541  and support the AST File I/O Mechanism.
330542  */
330543  /* */
330544 
330545  public:
330546 
330547  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
330548  // to current node (so that it will work cleanly with build functions to specify patterns).
330549  // virtual SgNode* addRegExpAttribute();
330556 
330557 // *** COMMON CODE SECTION ENDS HERE ***
330558 
330559 
330560 // End of memberFunctionString
330561 // Start of memberFunctionString
330562 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
330563 
330564  // the generated cast function
330565  // friend ROSE_DLL_API SgIntrinsicSymbol* isSgIntrinsicSymbol ( SgNode* s );
330566 
330567  typedef SgSymbol base_node_type;
330568 
330569 
330570 // End of memberFunctionString
330571 // Start of memberFunctionString
330572 /* #line 47 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Symbol.code" */
330573 
330574  SgName get_name() const override;
330575  SgNode* get_symbol_basis() const override; // from GET_NAME
330576 
330577 
330578 // End of memberFunctionString
330579 // Start of memberFunctionString
330580 /* #line 41 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Symbol.code" */
330581 
330582  // DQ (3/23/2017): ROSETTA macro expansion
330583  SgType* get_type() const override;
330584  // SgNode* get_symbol_basis() const; // from GET_TYPE
330585 
330586 
330587 // End of memberFunctionString
330588 
330589  public:
330590  SgInitializedName* get_declaration() const;
330591  void set_declaration(SgInitializedName* declaration);
330592 
330593 
330594  public:
330595  virtual ~SgIntrinsicSymbol();
330596 
330597 
330598  public:
330599  SgIntrinsicSymbol(SgInitializedName* declaration = NULL);
330600 
330601  protected:
330602 // Start of memberFunctionString
330603 SgInitializedName* p_declaration;
330604 
330605 // End of memberFunctionString
330606 
330607 
330608 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
330609 
330610 
330611  };
330612 #endif
330613 
330614 // postdeclarations for SgIntrinsicSymbol
330615 
330616 /* #line 330617 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
330617 
330618 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
330619 
330620 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
330621 
330622 
330623 /* #line 330624 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
330624 
330625 
330626 
330627 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
330628 
330629 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
330630 // This code is automatically generated for each
330631 // terminal and non-terminal within the defined
330632 // grammar. There is a simple way to change the
330633 // code to fix bugs etc. See the ROSE README file
330634 // for directions.
330635 
330636 // tps: (02/22/2010): Adding DLL export requirements
330637 #include "rosedll.h"
330638 
330639 // predeclarations for SgModuleSymbol
330640 
330641 /* #line 330642 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
330642 
330643 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
330644 
330645 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
330646 
330647 #if 1
330648 // Class Definition for SgModuleSymbol
330649 class ROSE_DLL_API SgModuleSymbol : public SgSymbol
330650  {
330651  public:
330652 
330653 
330654 /* #line 330655 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
330655 
330656  virtual SgNode* copy ( SgCopyHelp& help) const override;
330657 // Start of memberFunctionString
330658 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
330659 
330660 // *** COMMON CODE SECTION BEGINS HERE ***
330661 
330662  public:
330663 
330664  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
330665  // and not required which is required to match the other aspects of the copy mechanism code generation.
330666  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
330667  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
330668  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
330669  // virtual SgNode* copy ( const SgCopyHelp & help) const;
330670 
330672  virtual std::string class_name() const override;
330673 
330675  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
330676 
330678  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
330679  // static const VariantT static_variant = V_SgModuleSymbol;
330680  enum { static_variant = V_SgModuleSymbol };
330681 
330682  /* the generated cast function */
330684  ROSE_DLL_API friend SgModuleSymbol* isSgModuleSymbol( SgNode * s );
330685 
330687  ROSE_DLL_API friend const SgModuleSymbol* isSgModuleSymbol( const SgNode * s );
330688 
330689  // ******************************************
330690  // * Memory Pool / New / Delete
330691  // ******************************************
330692 
330693  public:
330695  static const unsigned pool_size; //
330697  static std::vector<unsigned char *> pools; //
330699  static SgModuleSymbol * next_node; //
330700 
330702  static unsigned long initializeStorageClassArray(SgModuleSymbolStorageClass *); //
330703 
330705  static void clearMemoryPool(); //
330706  static void deleteMemoryPool(); //
330707 
330709  static void extendMemoryPoolForFileIO(); //
330710 
330712  static SgModuleSymbol * getPointerFromGlobalIndex(unsigned long); //
330714  static SgModuleSymbol * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
330715 
330717  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
330719  static void resetValidFreepointers(); //
330721  static unsigned long getNumberOfLastValidPointer(); //
330722 
330723 
330724 #if defined(INLINE_FUNCTIONS)
330725 
330726  inline void *operator new (size_t size);
330727 #else
330728 
330729  void *operator new (size_t size);
330730 #endif
330731 
330732  void operator delete (void* pointer, size_t size);
330733 
330734  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
330735  void operator delete (void* pointer)
330736  {
330737  // This is the generated delete operator...
330738  SgModuleSymbol::operator delete (pointer,sizeof(SgModuleSymbol));
330739  }
330740 
330742  static size_t numberOfNodes();
330743 
330745  static size_t memoryUsage();
330746 
330747  // End of scope which started in IR nodes specific code
330748  /* */
330749 
330750  /* name Internal Functions
330751  \brief Internal functions ... incomplete-documentation
330752 
330753  These functions have been made public as part of the design, but they are suggested for internal use
330754  or by particularly knowledgeable users for specialized tools or applications.
330755 
330756  \internal We could not make these private because they are required by user for special purposes. And
330757  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
330758 
330759  */
330760 
330761  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
330762  // overridden in every class by *generated* implementation
330764  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
330765  // MS: 06/28/02 container of names of variables or container indices
330766  // used used in the traversal to access AST successor nodes
330767  // overridden in every class by *generated* implementation
330770  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
330771 
330772  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
330773  // than all the vector copies. The implementation for these functions is generated for each class.
330775  virtual size_t get_numberOfTraversalSuccessors() override;
330777  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
330779  virtual size_t get_childIndex(SgNode *child) override;
330780 
330781 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
330782  // MS: 08/16/2002 method for generating RTI information
330784  virtual RTIReturnType roseRTI() override;
330785 #endif
330786  /* */
330787 
330788 
330789 
330790  /* name Deprecated Functions
330791  \brief Deprecated functions ... incomplete-documentation
330792 
330793  These functions have been deprecated from use.
330794  */
330795  /* */
330796 
330798  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
330799 
330800  // JJW (10/16/2008): Changed to a single function in Node.code, and put
330801  // getVariant() in #if 0 block to prevent confusing Doxygen
330802 #if 0
330803 
330804  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
330806  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
330807 #endif
330808  /* */
330809 
330810 
330811 
330812 
330813  public:
330814  /* name Traversal Support Functions
330815  \brief Traversal support functions ... incomplete-documentation
330816 
330817  These functions have been made public as part of the design, but they are suggested for internal use
330818  or by particularly knowledgable users for specialized tools or applications.
330819  */
330820  /* */
330821 
330822  // DQ (11/26/2005): Support for visitor pattern mechanims
330823  // (inferior to ROSE traversal mechanism, experimental).
330827 
330828  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
330830  virtual void accept (ROSE_VisitorPattern & visitor) override;
330831 
330832  // DQ (12/26/2005): Support for traversal based on the memory pool
330835  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
330836 
330839  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
330840 
330841  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
330842  // This traversal helps support internal tools that call static member functions.
330843  // note: this function operates on the memory pools.
330846  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
330847  /* */
330848 
330849 
330850  public:
330851  /* name Memory Allocation Functions
330852  \brief Memory allocations functions ... incomplete-documentation
330853 
330854  These functions have been made public as part of the design, but they are suggested for internal use
330855  or by particularly knowledgable users for specialized tools or applications.
330856  */
330857  /* */
330858 
330869  virtual bool isInMemoryPool() override;
330870 
330881  virtual void checkDataMemberPointersIfInMemoryPool() override;
330882 
330883  // DQ (4/30/2006): Modified to be a const function.
330898  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
330899 
330909  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
330910 
330922  virtual long getChildIndex( SgNode* childNode ) const override;
330923 
330924  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
330925  // comment here (changed to be a C style comment and not be a doxygen comment).
330926  /* \brief Constructor for use by AST File I/O Mechanism
330927 
330928  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
330929  which obtained via fast binary file I/O from disk.
330930  */
330931  // SgModuleSymbol( SgModuleSymbolStorageClass& source );
330932 
330933 
330934 
330935 
330936 
330937  // JH (10/24/2005): methods added to support the ast file IO
330938  private:
330939 
330940  /* name AST Memory Allocation Support Functions
330941  \brief Memory allocations support....
330942 
330943  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
330944  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
330945  and support the AST File I/O Mechanism.
330946  */
330947  /* */
330948 
330949  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
330950  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
330951  that I use the same type everywhere, if any changes are made. THe second one declares the type
330952  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
330953  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
330954  a correspinding one in the AST_FILE_IO class!
330955  */
330956  // DQ (9/2/2015): This typedef is no longer used, we can't define the
330957  // comment here (changed to be a C style comment and not be a doxygen comment).
330958  /* \brief Typedef used for low level memory access.
330959  */
330960  // typedef unsigned char* TestType;
330961 
330962  // DQ (9/2/2015): This typedef is no longer used, we can't define the
330963  // comment here (changed to be a C style comment and not be a doxygen comment).
330964  /* \brief Typedef used to hold memory addresses as values.
330965  */
330966  // typedef unsigned long AddressType;
330967 
330968 
330969 
330970  // necessary, to have direct access to the p_freepointer and the private methods !
330972  friend class AST_FILE_IO;
330973 
330975  friend class SgModuleSymbolStorageClass;
330976 
330978  friend class AstSpecificDataManagingClass;
330979 
330981  friend class AstSpecificDataManagingClassStorageClass;
330982 
330983  public:
330985  SgModuleSymbol( const SgModuleSymbolStorageClass& source );
330986 
330987  // private: // JJW hack
330988  /*
330989  name AST Memory Allocation Support Variables
330990  Memory allocations support variables
330991 
330992  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
330993  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
330994  and support the AST File I/O Mechanism.
330995  */
330996  /* */
330997 
330998  public:
330999 
331000  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
331001  // to current node (so that it will work cleanly with build functions to specify patterns).
331002  // virtual SgNode* addRegExpAttribute();
331009 
331010 // *** COMMON CODE SECTION ENDS HERE ***
331011 
331012 
331013 // End of memberFunctionString
331014 // Start of memberFunctionString
331015 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
331016 
331017  // the generated cast function
331018  // friend ROSE_DLL_API SgModuleSymbol* isSgModuleSymbol ( SgNode* s );
331019 
331020  typedef SgSymbol base_node_type;
331021 
331022 
331023 // End of memberFunctionString
331024 // Start of memberFunctionString
331025 /* #line 47 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Symbol.code" */
331026 
331027  SgName get_name() const override;
331028  SgNode* get_symbol_basis() const override; // from GET_NAME
331029 
331030 
331031 // End of memberFunctionString
331032 // Start of memberFunctionString
331033 /* #line 41 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Symbol.code" */
331034 
331035  // DQ (3/23/2017): ROSETTA macro expansion
331036  SgType* get_type() const override;
331037  // SgNode* get_symbol_basis() const; // from GET_TYPE
331038 
331039 
331040 // End of memberFunctionString
331041 
331042  public:
331043  SgModuleStatement* get_declaration() const;
331044  void set_declaration(SgModuleStatement* declaration);
331045 
331046 
331047  public:
331048  virtual ~SgModuleSymbol();
331049 
331050 
331051  public:
331052  SgModuleSymbol(SgModuleStatement* declaration = NULL);
331053 
331054  protected:
331055 // Start of memberFunctionString
331056 SgModuleStatement* p_declaration;
331057 
331058 // End of memberFunctionString
331059 
331060 
331061 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
331062 
331063 
331064  };
331065 #endif
331066 
331067 // postdeclarations for SgModuleSymbol
331068 
331069 /* #line 331070 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
331070 
331071 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
331072 
331073 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
331074 
331075 
331076 /* #line 331077 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
331077 
331078 
331079 
331080 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
331081 
331082 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
331083 // This code is automatically generated for each
331084 // terminal and non-terminal within the defined
331085 // grammar. There is a simple way to change the
331086 // code to fix bugs etc. See the ROSE README file
331087 // for directions.
331088 
331089 // tps: (02/22/2010): Adding DLL export requirements
331090 #include "rosedll.h"
331091 
331092 // predeclarations for SgInterfaceSymbol
331093 
331094 /* #line 331095 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
331095 
331096 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
331097 
331098 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
331099 
331100 #if 1
331101 // Class Definition for SgInterfaceSymbol
331102 class ROSE_DLL_API SgInterfaceSymbol : public SgSymbol
331103  {
331104  public:
331105 
331106 
331107 /* #line 331108 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
331108 
331109  virtual SgNode* copy ( SgCopyHelp& help) const override;
331110 // Start of memberFunctionString
331111 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
331112 
331113 // *** COMMON CODE SECTION BEGINS HERE ***
331114 
331115  public:
331116 
331117  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
331118  // and not required which is required to match the other aspects of the copy mechanism code generation.
331119  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
331120  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
331121  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
331122  // virtual SgNode* copy ( const SgCopyHelp & help) const;
331123 
331125  virtual std::string class_name() const override;
331126 
331128  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
331129 
331131  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
331132  // static const VariantT static_variant = V_SgInterfaceSymbol;
331133  enum { static_variant = V_SgInterfaceSymbol };
331134 
331135  /* the generated cast function */
331137  ROSE_DLL_API friend SgInterfaceSymbol* isSgInterfaceSymbol( SgNode * s );
331138 
331140  ROSE_DLL_API friend const SgInterfaceSymbol* isSgInterfaceSymbol( const SgNode * s );
331141 
331142  // ******************************************
331143  // * Memory Pool / New / Delete
331144  // ******************************************
331145 
331146  public:
331148  static const unsigned pool_size; //
331150  static std::vector<unsigned char *> pools; //
331152  static SgInterfaceSymbol * next_node; //
331153 
331155  static unsigned long initializeStorageClassArray(SgInterfaceSymbolStorageClass *); //
331156 
331158  static void clearMemoryPool(); //
331159  static void deleteMemoryPool(); //
331160 
331162  static void extendMemoryPoolForFileIO(); //
331163 
331165  static SgInterfaceSymbol * getPointerFromGlobalIndex(unsigned long); //
331167  static SgInterfaceSymbol * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
331168 
331170  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
331172  static void resetValidFreepointers(); //
331174  static unsigned long getNumberOfLastValidPointer(); //
331175 
331176 
331177 #if defined(INLINE_FUNCTIONS)
331178 
331179  inline void *operator new (size_t size);
331180 #else
331181 
331182  void *operator new (size_t size);
331183 #endif
331184 
331185  void operator delete (void* pointer, size_t size);
331186 
331187  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
331188  void operator delete (void* pointer)
331189  {
331190  // This is the generated delete operator...
331191  SgInterfaceSymbol::operator delete (pointer,sizeof(SgInterfaceSymbol));
331192  }
331193 
331195  static size_t numberOfNodes();
331196 
331198  static size_t memoryUsage();
331199 
331200  // End of scope which started in IR nodes specific code
331201  /* */
331202 
331203  /* name Internal Functions
331204  \brief Internal functions ... incomplete-documentation
331205 
331206  These functions have been made public as part of the design, but they are suggested for internal use
331207  or by particularly knowledgeable users for specialized tools or applications.
331208 
331209  \internal We could not make these private because they are required by user for special purposes. And
331210  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
331211 
331212  */
331213 
331214  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
331215  // overridden in every class by *generated* implementation
331217  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
331218  // MS: 06/28/02 container of names of variables or container indices
331219  // used used in the traversal to access AST successor nodes
331220  // overridden in every class by *generated* implementation
331223  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
331224 
331225  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
331226  // than all the vector copies. The implementation for these functions is generated for each class.
331228  virtual size_t get_numberOfTraversalSuccessors() override;
331230  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
331232  virtual size_t get_childIndex(SgNode *child) override;
331233 
331234 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
331235  // MS: 08/16/2002 method for generating RTI information
331237  virtual RTIReturnType roseRTI() override;
331238 #endif
331239  /* */
331240 
331241 
331242 
331243  /* name Deprecated Functions
331244  \brief Deprecated functions ... incomplete-documentation
331245 
331246  These functions have been deprecated from use.
331247  */
331248  /* */
331249 
331251  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
331252 
331253  // JJW (10/16/2008): Changed to a single function in Node.code, and put
331254  // getVariant() in #if 0 block to prevent confusing Doxygen
331255 #if 0
331256 
331257  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
331259  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
331260 #endif
331261  /* */
331262 
331263 
331264 
331265 
331266  public:
331267  /* name Traversal Support Functions
331268  \brief Traversal support functions ... incomplete-documentation
331269 
331270  These functions have been made public as part of the design, but they are suggested for internal use
331271  or by particularly knowledgable users for specialized tools or applications.
331272  */
331273  /* */
331274 
331275  // DQ (11/26/2005): Support for visitor pattern mechanims
331276  // (inferior to ROSE traversal mechanism, experimental).
331280 
331281  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
331283  virtual void accept (ROSE_VisitorPattern & visitor) override;
331284 
331285  // DQ (12/26/2005): Support for traversal based on the memory pool
331288  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
331289 
331292  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
331293 
331294  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
331295  // This traversal helps support internal tools that call static member functions.
331296  // note: this function operates on the memory pools.
331299  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
331300  /* */
331301 
331302 
331303  public:
331304  /* name Memory Allocation Functions
331305  \brief Memory allocations functions ... incomplete-documentation
331306 
331307  These functions have been made public as part of the design, but they are suggested for internal use
331308  or by particularly knowledgable users for specialized tools or applications.
331309  */
331310  /* */
331311 
331322  virtual bool isInMemoryPool() override;
331323 
331334  virtual void checkDataMemberPointersIfInMemoryPool() override;
331335 
331336  // DQ (4/30/2006): Modified to be a const function.
331351  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
331352 
331362  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
331363 
331375  virtual long getChildIndex( SgNode* childNode ) const override;
331376 
331377  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
331378  // comment here (changed to be a C style comment and not be a doxygen comment).
331379  /* \brief Constructor for use by AST File I/O Mechanism
331380 
331381  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
331382  which obtained via fast binary file I/O from disk.
331383  */
331384  // SgInterfaceSymbol( SgInterfaceSymbolStorageClass& source );
331385 
331386 
331387 
331388 
331389 
331390  // JH (10/24/2005): methods added to support the ast file IO
331391  private:
331392 
331393  /* name AST Memory Allocation Support Functions
331394  \brief Memory allocations support....
331395 
331396  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
331397  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
331398  and support the AST File I/O Mechanism.
331399  */
331400  /* */
331401 
331402  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
331403  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
331404  that I use the same type everywhere, if any changes are made. THe second one declares the type
331405  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
331406  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
331407  a correspinding one in the AST_FILE_IO class!
331408  */
331409  // DQ (9/2/2015): This typedef is no longer used, we can't define the
331410  // comment here (changed to be a C style comment and not be a doxygen comment).
331411  /* \brief Typedef used for low level memory access.
331412  */
331413  // typedef unsigned char* TestType;
331414 
331415  // DQ (9/2/2015): This typedef is no longer used, we can't define the
331416  // comment here (changed to be a C style comment and not be a doxygen comment).
331417  /* \brief Typedef used to hold memory addresses as values.
331418  */
331419  // typedef unsigned long AddressType;
331420 
331421 
331422 
331423  // necessary, to have direct access to the p_freepointer and the private methods !
331425  friend class AST_FILE_IO;
331426 
331428  friend class SgInterfaceSymbolStorageClass;
331429 
331431  friend class AstSpecificDataManagingClass;
331432 
331434  friend class AstSpecificDataManagingClassStorageClass;
331435 
331436  public:
331438  SgInterfaceSymbol( const SgInterfaceSymbolStorageClass& source );
331439 
331440  // private: // JJW hack
331441  /*
331442  name AST Memory Allocation Support Variables
331443  Memory allocations support variables
331444 
331445  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
331446  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
331447  and support the AST File I/O Mechanism.
331448  */
331449  /* */
331450 
331451  public:
331452 
331453  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
331454  // to current node (so that it will work cleanly with build functions to specify patterns).
331455  // virtual SgNode* addRegExpAttribute();
331462 
331463 // *** COMMON CODE SECTION ENDS HERE ***
331464 
331465 
331466 // End of memberFunctionString
331467 // Start of memberFunctionString
331468 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
331469 
331470  // the generated cast function
331471  // friend ROSE_DLL_API SgInterfaceSymbol* isSgInterfaceSymbol ( SgNode* s );
331472 
331473  typedef SgSymbol base_node_type;
331474 
331475 
331476 // End of memberFunctionString
331477 // Start of memberFunctionString
331478 /* #line 47 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Symbol.code" */
331479 
331480  SgName get_name() const override;
331481  SgNode* get_symbol_basis() const override; // from GET_NAME
331482 
331483 
331484 // End of memberFunctionString
331485 // Start of memberFunctionString
331486 /* #line 41 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Symbol.code" */
331487 
331488  // DQ (3/23/2017): ROSETTA macro expansion
331489  SgType* get_type() const override;
331490  // SgNode* get_symbol_basis() const; // from GET_TYPE
331491 
331492 
331493 // End of memberFunctionString
331494 
331495  public:
331496  SgInterfaceStatement* get_declaration() const;
331497  void set_declaration(SgInterfaceStatement* declaration);
331498 
331499 
331500  public:
331501  virtual ~SgInterfaceSymbol();
331502 
331503 
331504  public:
331505  SgInterfaceSymbol(SgInterfaceStatement* declaration = NULL);
331506 
331507  protected:
331508 // Start of memberFunctionString
331509 SgInterfaceStatement* p_declaration;
331510 
331511 // End of memberFunctionString
331512 
331513 
331514 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
331515 
331516 
331517  };
331518 #endif
331519 
331520 // postdeclarations for SgInterfaceSymbol
331521 
331522 /* #line 331523 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
331523 
331524 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
331525 
331526 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
331527 
331528 
331529 /* #line 331530 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
331530 
331531 
331532 
331533 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
331534 
331535 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
331536 // This code is automatically generated for each
331537 // terminal and non-terminal within the defined
331538 // grammar. There is a simple way to change the
331539 // code to fix bugs etc. See the ROSE README file
331540 // for directions.
331541 
331542 // tps: (02/22/2010): Adding DLL export requirements
331543 #include "rosedll.h"
331544 
331545 // predeclarations for SgCommonSymbol
331546 
331547 /* #line 331548 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
331548 
331549 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
331550 
331551 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
331552 
331553 #if 1
331554 // Class Definition for SgCommonSymbol
331555 class ROSE_DLL_API SgCommonSymbol : public SgSymbol
331556  {
331557  public:
331558 
331559 
331560 /* #line 331561 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
331561 
331562  virtual SgNode* copy ( SgCopyHelp& help) const override;
331563 // Start of memberFunctionString
331564 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
331565 
331566 // *** COMMON CODE SECTION BEGINS HERE ***
331567 
331568  public:
331569 
331570  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
331571  // and not required which is required to match the other aspects of the copy mechanism code generation.
331572  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
331573  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
331574  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
331575  // virtual SgNode* copy ( const SgCopyHelp & help) const;
331576 
331578  virtual std::string class_name() const override;
331579 
331581  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
331582 
331584  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
331585  // static const VariantT static_variant = V_SgCommonSymbol;
331586  enum { static_variant = V_SgCommonSymbol };
331587 
331588  /* the generated cast function */
331590  ROSE_DLL_API friend SgCommonSymbol* isSgCommonSymbol( SgNode * s );
331591 
331593  ROSE_DLL_API friend const SgCommonSymbol* isSgCommonSymbol( const SgNode * s );
331594 
331595  // ******************************************
331596  // * Memory Pool / New / Delete
331597  // ******************************************
331598 
331599  public:
331601  static const unsigned pool_size; //
331603  static std::vector<unsigned char *> pools; //
331605  static SgCommonSymbol * next_node; //
331606 
331608  static unsigned long initializeStorageClassArray(SgCommonSymbolStorageClass *); //
331609 
331611  static void clearMemoryPool(); //
331612  static void deleteMemoryPool(); //
331613 
331615  static void extendMemoryPoolForFileIO(); //
331616 
331618  static SgCommonSymbol * getPointerFromGlobalIndex(unsigned long); //
331620  static SgCommonSymbol * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
331621 
331623  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
331625  static void resetValidFreepointers(); //
331627  static unsigned long getNumberOfLastValidPointer(); //
331628 
331629 
331630 #if defined(INLINE_FUNCTIONS)
331631 
331632  inline void *operator new (size_t size);
331633 #else
331634 
331635  void *operator new (size_t size);
331636 #endif
331637 
331638  void operator delete (void* pointer, size_t size);
331639 
331640  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
331641  void operator delete (void* pointer)
331642  {
331643  // This is the generated delete operator...
331644  SgCommonSymbol::operator delete (pointer,sizeof(SgCommonSymbol));
331645  }
331646 
331648  static size_t numberOfNodes();
331649 
331651  static size_t memoryUsage();
331652 
331653  // End of scope which started in IR nodes specific code
331654  /* */
331655 
331656  /* name Internal Functions
331657  \brief Internal functions ... incomplete-documentation
331658 
331659  These functions have been made public as part of the design, but they are suggested for internal use
331660  or by particularly knowledgeable users for specialized tools or applications.
331661 
331662  \internal We could not make these private because they are required by user for special purposes. And
331663  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
331664 
331665  */
331666 
331667  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
331668  // overridden in every class by *generated* implementation
331670  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
331671  // MS: 06/28/02 container of names of variables or container indices
331672  // used used in the traversal to access AST successor nodes
331673  // overridden in every class by *generated* implementation
331676  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
331677 
331678  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
331679  // than all the vector copies. The implementation for these functions is generated for each class.
331681  virtual size_t get_numberOfTraversalSuccessors() override;
331683  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
331685  virtual size_t get_childIndex(SgNode *child) override;
331686 
331687 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
331688  // MS: 08/16/2002 method for generating RTI information
331690  virtual RTIReturnType roseRTI() override;
331691 #endif
331692  /* */
331693 
331694 
331695 
331696  /* name Deprecated Functions
331697  \brief Deprecated functions ... incomplete-documentation
331698 
331699  These functions have been deprecated from use.
331700  */
331701  /* */
331702 
331704  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
331705 
331706  // JJW (10/16/2008): Changed to a single function in Node.code, and put
331707  // getVariant() in #if 0 block to prevent confusing Doxygen
331708 #if 0
331709 
331710  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
331712  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
331713 #endif
331714  /* */
331715 
331716 
331717 
331718 
331719  public:
331720  /* name Traversal Support Functions
331721  \brief Traversal support functions ... incomplete-documentation
331722 
331723  These functions have been made public as part of the design, but they are suggested for internal use
331724  or by particularly knowledgable users for specialized tools or applications.
331725  */
331726  /* */
331727 
331728  // DQ (11/26/2005): Support for visitor pattern mechanims
331729  // (inferior to ROSE traversal mechanism, experimental).
331733 
331734  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
331736  virtual void accept (ROSE_VisitorPattern & visitor) override;
331737 
331738  // DQ (12/26/2005): Support for traversal based on the memory pool
331741  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
331742 
331745  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
331746 
331747  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
331748  // This traversal helps support internal tools that call static member functions.
331749  // note: this function operates on the memory pools.
331752  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
331753  /* */
331754 
331755 
331756  public:
331757  /* name Memory Allocation Functions
331758  \brief Memory allocations functions ... incomplete-documentation
331759 
331760  These functions have been made public as part of the design, but they are suggested for internal use
331761  or by particularly knowledgable users for specialized tools or applications.
331762  */
331763  /* */
331764 
331775  virtual bool isInMemoryPool() override;
331776 
331787  virtual void checkDataMemberPointersIfInMemoryPool() override;
331788 
331789  // DQ (4/30/2006): Modified to be a const function.
331804  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
331805 
331815  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
331816 
331828  virtual long getChildIndex( SgNode* childNode ) const override;
331829 
331830  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
331831  // comment here (changed to be a C style comment and not be a doxygen comment).
331832  /* \brief Constructor for use by AST File I/O Mechanism
331833 
331834  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
331835  which obtained via fast binary file I/O from disk.
331836  */
331837  // SgCommonSymbol( SgCommonSymbolStorageClass& source );
331838 
331839 
331840 
331841 
331842 
331843  // JH (10/24/2005): methods added to support the ast file IO
331844  private:
331845 
331846  /* name AST Memory Allocation Support Functions
331847  \brief Memory allocations support....
331848 
331849  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
331850  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
331851  and support the AST File I/O Mechanism.
331852  */
331853  /* */
331854 
331855  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
331856  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
331857  that I use the same type everywhere, if any changes are made. THe second one declares the type
331858  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
331859  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
331860  a correspinding one in the AST_FILE_IO class!
331861  */
331862  // DQ (9/2/2015): This typedef is no longer used, we can't define the
331863  // comment here (changed to be a C style comment and not be a doxygen comment).
331864  /* \brief Typedef used for low level memory access.
331865  */
331866  // typedef unsigned char* TestType;
331867 
331868  // DQ (9/2/2015): This typedef is no longer used, we can't define the
331869  // comment here (changed to be a C style comment and not be a doxygen comment).
331870  /* \brief Typedef used to hold memory addresses as values.
331871  */
331872  // typedef unsigned long AddressType;
331873 
331874 
331875 
331876  // necessary, to have direct access to the p_freepointer and the private methods !
331878  friend class AST_FILE_IO;
331879 
331881  friend class SgCommonSymbolStorageClass;
331882 
331884  friend class AstSpecificDataManagingClass;
331885 
331887  friend class AstSpecificDataManagingClassStorageClass;
331888 
331889  public:
331891  SgCommonSymbol( const SgCommonSymbolStorageClass& source );
331892 
331893  // private: // JJW hack
331894  /*
331895  name AST Memory Allocation Support Variables
331896  Memory allocations support variables
331897 
331898  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
331899  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
331900  and support the AST File I/O Mechanism.
331901  */
331902  /* */
331903 
331904  public:
331905 
331906  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
331907  // to current node (so that it will work cleanly with build functions to specify patterns).
331908  // virtual SgNode* addRegExpAttribute();
331915 
331916 // *** COMMON CODE SECTION ENDS HERE ***
331917 
331918 
331919 // End of memberFunctionString
331920 // Start of memberFunctionString
331921 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
331922 
331923  // the generated cast function
331924  // friend ROSE_DLL_API SgCommonSymbol* isSgCommonSymbol ( SgNode* s );
331925 
331926  typedef SgSymbol base_node_type;
331927 
331928 
331929 // End of memberFunctionString
331930 // Start of memberFunctionString
331931 /* #line 47 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Symbol.code" */
331932 
331933  SgName get_name() const override;
331934  SgNode* get_symbol_basis() const override; // from GET_NAME
331935 
331936 
331937 // End of memberFunctionString
331938 // Start of memberFunctionString
331939 /* #line 41 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Symbol.code" */
331940 
331941  // DQ (3/23/2017): ROSETTA macro expansion
331942  SgType* get_type() const override;
331943  // SgNode* get_symbol_basis() const; // from GET_TYPE
331944 
331945 
331946 // End of memberFunctionString
331947 
331948  public:
331949  SgInitializedName* get_declaration() const;
331950  void set_declaration(SgInitializedName* declaration);
331951 
331952 
331953  public:
331954  virtual ~SgCommonSymbol();
331955 
331956 
331957  public:
331958  SgCommonSymbol(SgInitializedName* declaration = NULL);
331959 
331960  protected:
331961 // Start of memberFunctionString
331962 SgInitializedName* p_declaration;
331963 
331964 // End of memberFunctionString
331965 
331966 
331967 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
331968 
331969 
331970  };
331971 #endif
331972 
331973 // postdeclarations for SgCommonSymbol
331974 
331975 /* #line 331976 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
331976 
331977 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
331978 
331979 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
331980 
331981 
331982 /* #line 331983 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
331983 
331984 
331985 
331986 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
331987 
331988 // WARNING -- GENERATED CODE -- DO NOT MODIFY THIS CODE -- WARNING!
331989 // This code is automatically generated for each
331990 // terminal and non-terminal within the defined
331991 // grammar. There is a simple way to change the
331992 // code to fix bugs etc. See the ROSE README file
331993 // for directions.
331994 
331995 // tps: (02/22/2010): Adding DLL export requirements
331996 #include "rosedll.h"
331997 
331998 // predeclarations for SgAliasSymbol
331999 
332000 /* #line 332001 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
332001 
332002 /* #line 13 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $PREDECLARATIONS" */
332003 
332004 /* #line 14 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
332005 
332006 #if 1
332007 // Class Definition for SgAliasSymbol
332008 class ROSE_DLL_API SgAliasSymbol : public SgSymbol
332009  {
332010  public:
332011 
332012 
332013 /* #line 332014 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
332014 
332015  virtual SgNode* copy ( SgCopyHelp& help) const override;
332016 // Start of memberFunctionString
332017 /* #line 90 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Symbol.code" */
332018 
332019  // SgName get_name() const;
332020  // SgType* get_type() const;
332021  // SgNode* get_symbol_basis() const;
332022 
332023  // DQ (2/28/2015): Added copy constructor to make sure that the causal_nodes is preserved across copies.
332024  SgAliasSymbol( const SgAliasSymbol & X );
332025 
332026  // DQ (2/28/2015): Add this function so that we can check and for alias of SgAliasSymbol.
332027  void post_construction_initialization() override;
332028 
332030  SgSymbol* get_base() const;
332031 
332033  SgDeclarationStatement* get_declaration() const;
332034 
332035 
332036 // End of memberFunctionString
332037 // Start of memberFunctionString
332038 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Common.code" */
332039 
332040 // *** COMMON CODE SECTION BEGINS HERE ***
332041 
332042  public:
332043 
332044  // DQ (3/25/3006): I put this back in because it had the logic for where the copy function required
332045  // and not required which is required to match the other aspects of the copy mechanism code generation.
332046  // Specifically it is a problem to declare the copy function everywhere because it is not implemented
332047  // for the SgSymbol IR nodes. I'm not clear why it is not implemented for these IR nodes.
332048  /* \brief Copies AST (whole subtree, depending on the SgCopyHelp class */
332049  // virtual SgNode* copy ( const SgCopyHelp & help) const;
332050 
332052  virtual std::string class_name() const override;
332053 
332055  virtual VariantT variantT() const override; // MS: new variant used in tree traversal
332056 
332058  // King84 (2010.08.16): Moved this to an enum to save space, since it's only used at compiler-time anyway.
332059  // static const VariantT static_variant = V_SgAliasSymbol;
332060  enum { static_variant = V_SgAliasSymbol };
332061 
332062  /* the generated cast function */
332064  ROSE_DLL_API friend SgAliasSymbol* isSgAliasSymbol( SgNode * s );
332065 
332067  ROSE_DLL_API friend const SgAliasSymbol* isSgAliasSymbol( const SgNode * s );
332068 
332069  // ******************************************
332070  // * Memory Pool / New / Delete
332071  // ******************************************
332072 
332073  public:
332075  static const unsigned pool_size; //
332077  static std::vector<unsigned char *> pools; //
332079  static SgAliasSymbol * next_node; //
332080 
332082  static unsigned long initializeStorageClassArray(SgAliasSymbolStorageClass *); //
332083 
332085  static void clearMemoryPool(); //
332086  static void deleteMemoryPool(); //
332087 
332089  static void extendMemoryPoolForFileIO(); //
332090 
332092  static SgAliasSymbol * getPointerFromGlobalIndex(unsigned long); //
332094  static SgAliasSymbol * getPointerFromGlobalIndex(AstSpecificDataManagingClass *, unsigned long); //
332095 
332097  static unsigned long getNumberOfValidNodesAndSetGlobalIndexInFreepointer(unsigned long); //
332099  static void resetValidFreepointers(); //
332101  static unsigned long getNumberOfLastValidPointer(); //
332102 
332103 
332104 #if defined(INLINE_FUNCTIONS)
332105 
332106  inline void *operator new (size_t size);
332107 #else
332108 
332109  void *operator new (size_t size);
332110 #endif
332111 
332112  void operator delete (void* pointer, size_t size);
332113 
332114  // DQ (4/5/2007): This is not the correct operator that we want, but appears to be required to compile ROSE with ROSE.
332115  void operator delete (void* pointer)
332116  {
332117  // This is the generated delete operator...
332118  SgAliasSymbol::operator delete (pointer,sizeof(SgAliasSymbol));
332119  }
332120 
332122  static size_t numberOfNodes();
332123 
332125  static size_t memoryUsage();
332126 
332127  // End of scope which started in IR nodes specific code
332128  /* */
332129 
332130  /* name Internal Functions
332131  \brief Internal functions ... incomplete-documentation
332132 
332133  These functions have been made public as part of the design, but they are suggested for internal use
332134  or by particularly knowledgeable users for specialized tools or applications.
332135 
332136  \internal We could not make these private because they are required by user for special purposes. And
332137  it would be unwieldy to have many of the internal classes in ROSE be explicitly defined as friends.
332138 
332139  */
332140 
332141  // MS: 02/12/02 container of pointers to AST successor nodes used in the traversal
332142  // overridden in every class by *generated* implementation
332144  virtual std::vector<SgNode*> get_traversalSuccessorContainer() override;
332145  // MS: 06/28/02 container of names of variables or container indices
332146  // used used in the traversal to access AST successor nodes
332147  // overridden in every class by *generated* implementation
332150  virtual std::vector<std::string> get_traversalSuccessorNamesContainer() override;
332151 
332152  // GB (09/25/2007): Functions for index-based access to traversal successors; these are hopefully a lot faster
332153  // than all the vector copies. The implementation for these functions is generated for each class.
332155  virtual size_t get_numberOfTraversalSuccessors() override;
332157  virtual SgNode *get_traversalSuccessorByIndex(size_t idx) override;
332159  virtual size_t get_childIndex(SgNode *child) override;
332160 
332161 #ifndef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
332162  // MS: 08/16/2002 method for generating RTI information
332164  virtual RTIReturnType roseRTI() override;
332165 #endif
332166  /* */
332167 
332168 
332169 
332170  /* name Deprecated Functions
332171  \brief Deprecated functions ... incomplete-documentation
332172 
332173  These functions have been deprecated from use.
332174  */
332175  /* */
332176 
332178  virtual const char* sage_class_name() const override ROSE_DEPRECATED_FUNCTION;
332179 
332180  // JJW (10/16/2008): Changed to a single function in Node.code, and put
332181  // getVariant() in #if 0 block to prevent confusing Doxygen
332182 #if 0
332183 
332184  virtual int variant() const ROSE_DEPRECATED_FUNCTION;
332186  // virtual int getVariant() const ROSE_DEPRECATED_FUNCTION;
332187 #endif
332188  /* */
332189 
332190 
332191 
332192 
332193  public:
332194  /* name Traversal Support Functions
332195  \brief Traversal support functions ... incomplete-documentation
332196 
332197  These functions have been made public as part of the design, but they are suggested for internal use
332198  or by particularly knowledgable users for specialized tools or applications.
332199  */
332200  /* */
332201 
332202  // DQ (11/26/2005): Support for visitor pattern mechanims
332203  // (inferior to ROSE traversal mechanism, experimental).
332207 
332208  /* DXN (08/09/2010): support for the classic visitor pattern done in GoF */
332210  virtual void accept (ROSE_VisitorPattern & visitor) override;
332211 
332212  // DQ (12/26/2005): Support for traversal based on the memory pool
332215  static void traverseMemoryPoolNodes(ROSE_VisitTraversal & visit);
332216 
332219  static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern & visitor);
332220 
332221  // DQ (2/9/2006): Added to support traversal over single representative of each IR node
332222  // This traversal helps support internal tools that call static member functions.
332223  // note: this function operates on the memory pools.
332226  static void visitRepresentativeNode (ROSE_VisitTraversal & visit);
332227  /* */
332228 
332229 
332230  public:
332231  /* name Memory Allocation Functions
332232  \brief Memory allocations functions ... incomplete-documentation
332233 
332234  These functions have been made public as part of the design, but they are suggested for internal use
332235  or by particularly knowledgable users for specialized tools or applications.
332236  */
332237  /* */
332238 
332249  virtual bool isInMemoryPool() override;
332250 
332261  virtual void checkDataMemberPointersIfInMemoryPool() override;
332262 
332263  // DQ (4/30/2006): Modified to be a const function.
332278  virtual std::vector<std::pair<SgNode*,std::string> > returnDataMemberPointers() const override;
332279 
332289  virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler*) override;
332290 
332302  virtual long getChildIndex( SgNode* childNode ) const override;
332303 
332304  // DQ (9/2/2015): Since this function is generated by ROSETTA, we can't define the
332305  // comment here (changed to be a C style comment and not be a doxygen comment).
332306  /* \brief Constructor for use by AST File I/O Mechanism
332307 
332308  This constructor permits the IR node to be rebuilt from the contiguously arranged data in memory
332309  which obtained via fast binary file I/O from disk.
332310  */
332311  // SgAliasSymbol( SgAliasSymbolStorageClass& source );
332312 
332313 
332314 
332315 
332316 
332317  // JH (10/24/2005): methods added to support the ast file IO
332318  private:
332319 
332320  /* name AST Memory Allocation Support Functions
332321  \brief Memory allocations support....
332322 
332323  These functions handle the low leve support of the memory allocation scheme which permits IR nodes to be allocated
332324  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
332325  and support the AST File I/O Mechanism.
332326  */
332327  /* */
332328 
332329  /* JH (10/24/2005): Two typedefs. The TestType notes the type every pointer is cast to before
332330  we compare them. Since I had several problems with this, I decided to make a typdef to ensure
332331  that I use the same type everywhere, if any changes are made. THe second one declares the type
332332  (actually unsigned long) where teh pointer address gets converted to. On 64 bit platforms this
332333  might got changed, but unfortunatly, the return types are still unsigned longs. There exists
332334  a correspinding one in the AST_FILE_IO class!
332335  */
332336  // DQ (9/2/2015): This typedef is no longer used, we can't define the
332337  // comment here (changed to be a C style comment and not be a doxygen comment).
332338  /* \brief Typedef used for low level memory access.
332339  */
332340  // typedef unsigned char* TestType;
332341 
332342  // DQ (9/2/2015): This typedef is no longer used, we can't define the
332343  // comment here (changed to be a C style comment and not be a doxygen comment).
332344  /* \brief Typedef used to hold memory addresses as values.
332345  */
332346  // typedef unsigned long AddressType;
332347 
332348 
332349 
332350  // necessary, to have direct access to the p_freepointer and the private methods !
332352  friend class AST_FILE_IO;
332353 
332355  friend class SgAliasSymbolStorageClass;
332356 
332358  friend class AstSpecificDataManagingClass;
332359 
332361  friend class AstSpecificDataManagingClassStorageClass;
332362 
332363  public:
332365  SgAliasSymbol( const SgAliasSymbolStorageClass& source );
332366 
332367  // private: // JJW hack
332368  /*
332369  name AST Memory Allocation Support Variables
332370  Memory allocations support variables
332371 
332372  These variables handle the low level support of the memory allocation scheme which permits IR nodes to be allocated
332373  in large contiguous blocks to reduce memory fragmentation, improve performance, support specialized access (AST traversals),
332374  and support the AST File I/O Mechanism.
332375  */
332376  /* */
332377 
332378  public:
332379 
332380  // DQ (11/21/2009): Added function to add new Regular Expression attributes and return pointer
332381  // to current node (so that it will work cleanly with build functions to specify patterns).
332382  // virtual SgNode* addRegExpAttribute();
332388  SgAliasSymbol* addRegExpAttribute(std::string s, AstRegExAttribute* a);
332389 
332390 // *** COMMON CODE SECTION ENDS HERE ***
332391 
332392 
332393 // End of memberFunctionString
332394 // Start of memberFunctionString
332395 /* #line 1649 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Node.code" */
332396 
332397  // the generated cast function
332398  // friend ROSE_DLL_API SgAliasSymbol* isSgAliasSymbol ( SgNode* s );
332399 
332400  typedef SgSymbol base_node_type;
332401 
332402 
332403 // End of memberFunctionString
332404 // Start of memberFunctionString
332405 /* #line 47 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Symbol.code" */
332406 
332407  SgName get_name() const override;
332408  SgNode* get_symbol_basis() const override; // from GET_NAME
332409 
332410 
332411 // End of memberFunctionString
332412 // Start of memberFunctionString
332413 /* #line 41 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Symbol.code" */
332414 
332415  // DQ (3/23/2017): ROSETTA macro expansion
332416  SgType* get_type() const override;
332417  // SgNode* get_symbol_basis() const; // from GET_TYPE
332418 
332419 
332420 // End of memberFunctionString
332421 
332422  public:
332423  SgSymbol* get_alias() const;
332424  void set_alias(SgSymbol* alias);
332425 
332426  public:
332427  bool get_isRenamed() const;
332428  void set_isRenamed(bool isRenamed);
332429 
332430  public:
332431  SgName get_new_name() const;
332432  void set_new_name(SgName new_name);
332433 
332434  public:
332435  const SgNodePtrList& get_causal_nodes() const;
332436  SgNodePtrList& get_causal_nodes();
332437 
332438 
332439  public:
332440  virtual ~SgAliasSymbol();
332441 
332442 
332443  public:
332444  SgAliasSymbol(SgSymbol* alias = NULL, bool isRenamed = false, SgName new_name = "");
332445 
332446  protected:
332447 // Start of memberFunctionString
332448 SgSymbol* p_alias;
332449 
332450 // End of memberFunctionString
332451 // Start of memberFunctionString
332452 bool p_isRenamed;
332453 
332454 // End of memberFunctionString
332455 // Start of memberFunctionString
332456 SgName p_new_name;
332457 
332458 // End of memberFunctionString
332459 // Start of memberFunctionString
332460 SgNodePtrList p_causal_nodes;
332461 
332462 // End of memberFunctionString
332463 
332464 
332465 /* #line 21 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
332466 
332467 
332468  };
332469 #endif
332470 
332471 // postdeclarations for SgAliasSymbol
332472 
332473 /* #line 332474 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
332474 
332475 /* #line 27 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro after subst for $POSTDECLARATIONS" */
332476 
332477 /* #line 28 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/grammarClassDeclarationMacros.macro" */
332478 
332479 
332480 /* #line 332481 "../../../src/frontend/SageIII//Cxx_Grammar.h" */
332481 
332482 
332483 #endif // endif for ifdef ROSE_USING_SMALL_GENERATED_HEADER_FILES
332484 #ifndef SWIG
332485 
332487 public:
332488  virtual ~ROSE_VisitorPattern() {};
332489  virtual void visit(SgName *variable_SgName) { visitDefault(variable_SgName); }
332490  virtual void visit(SgSymbolTable *variable_SgSymbolTable) { visitDefault(variable_SgSymbolTable); }
332491  virtual void visit(SgPragma *variable_SgPragma) { visitDefault(variable_SgPragma); }
332492  virtual void visit(SgModifierNodes *variable_SgModifierNodes) { visitDefault(variable_SgModifierNodes); }
332493  virtual void visit(SgConstVolatileModifier *variable_SgConstVolatileModifier) { visitDefault(variable_SgConstVolatileModifier); }
332494  virtual void visit(SgStorageModifier *variable_SgStorageModifier) { visitDefault(variable_SgStorageModifier); }
332495  virtual void visit(SgAccessModifier *variable_SgAccessModifier) { visitDefault(variable_SgAccessModifier); }
332496  virtual void visit(SgFunctionModifier *variable_SgFunctionModifier) { visitDefault(variable_SgFunctionModifier); }
332497  virtual void visit(SgUPC_AccessModifier *variable_SgUPC_AccessModifier) { visitDefault(variable_SgUPC_AccessModifier); }
332498  virtual void visit(SgLinkageModifier *variable_SgLinkageModifier) { visitDefault(variable_SgLinkageModifier); }
332499  virtual void visit(SgSpecialFunctionModifier *variable_SgSpecialFunctionModifier) { visitDefault(variable_SgSpecialFunctionModifier); }
332500  virtual void visit(SgTypeModifier *variable_SgTypeModifier) { visitDefault(variable_SgTypeModifier); }
332501  virtual void visit(SgElaboratedTypeModifier *variable_SgElaboratedTypeModifier) { visitDefault(variable_SgElaboratedTypeModifier); }
332502  virtual void visit(SgBaseClassModifier *variable_SgBaseClassModifier) { visitDefault(variable_SgBaseClassModifier); }
332503  virtual void visit(SgDeclarationModifier *variable_SgDeclarationModifier) { visitDefault(variable_SgDeclarationModifier); }
332504  virtual void visit(SgStructureModifier *variable_SgStructureModifier) { visitDefault(variable_SgStructureModifier); }
332505  virtual void visit(SgOpenclAccessModeModifier *variable_SgOpenclAccessModeModifier) { visitDefault(variable_SgOpenclAccessModeModifier); }
332506  virtual void visit(SgModifier *variable_SgModifier) { visitDefault(variable_SgModifier); }
332507  virtual void visit(Sg_File_Info *variable_Sg_File_Info) { visitDefault(variable_Sg_File_Info); }
332508  virtual void visit(SgSourceFile *variable_SgSourceFile) { visitDefault(variable_SgSourceFile); }
332509  virtual void visit(SgUnknownFile *variable_SgUnknownFile) { visitDefault(variable_SgUnknownFile); }
332510  virtual void visit(SgFile *variable_SgFile) { visitDefault(variable_SgFile); }
332511  virtual void visit(SgFileList *variable_SgFileList) { visitDefault(variable_SgFileList); }
332512  virtual void visit(SgDirectory *variable_SgDirectory) { visitDefault(variable_SgDirectory); }
332513  virtual void visit(SgDirectoryList *variable_SgDirectoryList) { visitDefault(variable_SgDirectoryList); }
332514  virtual void visit(SgProject *variable_SgProject) { visitDefault(variable_SgProject); }
332515  virtual void visit(SgOptions *variable_SgOptions) { visitDefault(variable_SgOptions); }
332516  virtual void visit(SgUnparse_Info *variable_SgUnparse_Info) { visitDefault(variable_SgUnparse_Info); }
332517  virtual void visit(SgIncludeFile *variable_SgIncludeFile) { visitDefault(variable_SgIncludeFile); }
332518  virtual void visit(SgFuncDecl_attr *variable_SgFuncDecl_attr) { visitDefault(variable_SgFuncDecl_attr); }
332519  virtual void visit(SgClassDecl_attr *variable_SgClassDecl_attr) { visitDefault(variable_SgClassDecl_attr); }
332520  virtual void visit(SgTypedefSeq *variable_SgTypedefSeq) { visitDefault(variable_SgTypedefSeq); }
332521  virtual void visit(SgFunctionParameterTypeList *variable_SgFunctionParameterTypeList) { visitDefault(variable_SgFunctionParameterTypeList); }
332522  virtual void visit(SgTemplateParameter *variable_SgTemplateParameter) { visitDefault(variable_SgTemplateParameter); }
332523  virtual void visit(SgTemplateArgument *variable_SgTemplateArgument) { visitDefault(variable_SgTemplateArgument); }
332524  virtual void visit(SgTemplateParameterList *variable_SgTemplateParameterList) { visitDefault(variable_SgTemplateParameterList); }
332525  virtual void visit(SgTemplateArgumentList *variable_SgTemplateArgumentList) { visitDefault(variable_SgTemplateArgumentList); }
332526  virtual void visit(SgBitAttribute *variable_SgBitAttribute) { visitDefault(variable_SgBitAttribute); }
332527  virtual void visit(SgAttribute *variable_SgAttribute) { visitDefault(variable_SgAttribute); }
332528  virtual void visit(SgExpBaseClass *variable_SgExpBaseClass) { visitDefault(variable_SgExpBaseClass); }
332529  virtual void visit(SgNonrealBaseClass *variable_SgNonrealBaseClass) { visitDefault(variable_SgNonrealBaseClass); }
332530  virtual void visit(SgBaseClass *variable_SgBaseClass) { visitDefault(variable_SgBaseClass); }
332531  virtual void visit(SgUndirectedGraphEdge *variable_SgUndirectedGraphEdge) { visitDefault(variable_SgUndirectedGraphEdge); }
332532  virtual void visit(SgDirectedGraphEdge *variable_SgDirectedGraphEdge) { visitDefault(variable_SgDirectedGraphEdge); }
332533  virtual void visit(SgGraphNode *variable_SgGraphNode) { visitDefault(variable_SgGraphNode); }
332534  virtual void visit(SgGraphEdge *variable_SgGraphEdge) { visitDefault(variable_SgGraphEdge); }
332535  virtual void visit(SgStringKeyedBidirectionalGraph *variable_SgStringKeyedBidirectionalGraph) { visitDefault(variable_SgStringKeyedBidirectionalGraph); }
332536  virtual void visit(SgIntKeyedBidirectionalGraph *variable_SgIntKeyedBidirectionalGraph) { visitDefault(variable_SgIntKeyedBidirectionalGraph); }
332537  virtual void visit(SgBidirectionalGraph *variable_SgBidirectionalGraph) { visitDefault(variable_SgBidirectionalGraph); }
332538  virtual void visit(SgIncidenceDirectedGraph *variable_SgIncidenceDirectedGraph) { visitDefault(variable_SgIncidenceDirectedGraph); }
332539  virtual void visit(SgIncidenceUndirectedGraph *variable_SgIncidenceUndirectedGraph) { visitDefault(variable_SgIncidenceUndirectedGraph); }
332540  virtual void visit(SgGraph *variable_SgGraph) { visitDefault(variable_SgGraph); }
332541  virtual void visit(SgGraphNodeList *variable_SgGraphNodeList) { visitDefault(variable_SgGraphNodeList); }
332542  virtual void visit(SgGraphEdgeList *variable_SgGraphEdgeList) { visitDefault(variable_SgGraphEdgeList); }
332543  virtual void visit(SgQualifiedName *variable_SgQualifiedName) { visitDefault(variable_SgQualifiedName); }
332544  virtual void visit(SgNameGroup *variable_SgNameGroup) { visitDefault(variable_SgNameGroup); }
332545  virtual void visit(SgDimensionObject *variable_SgDimensionObject) { visitDefault(variable_SgDimensionObject); }
332546  virtual void visit(SgDataStatementGroup *variable_SgDataStatementGroup) { visitDefault(variable_SgDataStatementGroup); }
332547  virtual void visit(SgDataStatementObject *variable_SgDataStatementObject) { visitDefault(variable_SgDataStatementObject); }
332548  virtual void visit(SgDataStatementValue *variable_SgDataStatementValue) { visitDefault(variable_SgDataStatementValue); }
332549  virtual void visit(SgFormatItem *variable_SgFormatItem) { visitDefault(variable_SgFormatItem); }
332550  virtual void visit(SgFormatItemList *variable_SgFormatItemList) { visitDefault(variable_SgFormatItemList); }
332551  virtual void visit(SgTypeTable *variable_SgTypeTable) { visitDefault(variable_SgTypeTable); }
332552  virtual void visit(SgHeaderFileReport *variable_SgHeaderFileReport) { visitDefault(variable_SgHeaderFileReport); }
332553  virtual void visit(SgSupport *variable_SgSupport) { visitDefault(variable_SgSupport); }
332554  virtual void visit(SgTypeUnknown *variable_SgTypeUnknown) { visitDefault(variable_SgTypeUnknown); }
332555  virtual void visit(SgTypeChar *variable_SgTypeChar) { visitDefault(variable_SgTypeChar); }
332556  virtual void visit(SgTypeSignedChar *variable_SgTypeSignedChar) { visitDefault(variable_SgTypeSignedChar); }
332557  virtual void visit(SgTypeUnsignedChar *variable_SgTypeUnsignedChar) { visitDefault(variable_SgTypeUnsignedChar); }
332558  virtual void visit(SgTypeShort *variable_SgTypeShort) { visitDefault(variable_SgTypeShort); }
332559  virtual void visit(SgTypeSignedShort *variable_SgTypeSignedShort) { visitDefault(variable_SgTypeSignedShort); }
332560  virtual void visit(SgTypeUnsignedShort *variable_SgTypeUnsignedShort) { visitDefault(variable_SgTypeUnsignedShort); }
332561  virtual void visit(SgTypeInt *variable_SgTypeInt) { visitDefault(variable_SgTypeInt); }
332562  virtual void visit(SgTypeSignedInt *variable_SgTypeSignedInt) { visitDefault(variable_SgTypeSignedInt); }
332563  virtual void visit(SgTypeUnsignedInt *variable_SgTypeUnsignedInt) { visitDefault(variable_SgTypeUnsignedInt); }
332564  virtual void visit(SgTypeLong *variable_SgTypeLong) { visitDefault(variable_SgTypeLong); }
332565  virtual void visit(SgTypeSignedLong *variable_SgTypeSignedLong) { visitDefault(variable_SgTypeSignedLong); }
332566  virtual void visit(SgTypeUnsignedLong *variable_SgTypeUnsignedLong) { visitDefault(variable_SgTypeUnsignedLong); }
332567  virtual void visit(SgTypeVoid *variable_SgTypeVoid) { visitDefault(variable_SgTypeVoid); }
332568  virtual void visit(SgTypeGlobalVoid *variable_SgTypeGlobalVoid) { visitDefault(variable_SgTypeGlobalVoid); }
332569  virtual void visit(SgTypeWchar *variable_SgTypeWchar) { visitDefault(variable_SgTypeWchar); }
332570  virtual void visit(SgTypeFloat *variable_SgTypeFloat) { visitDefault(variable_SgTypeFloat); }
332571  virtual void visit(SgTypeDouble *variable_SgTypeDouble) { visitDefault(variable_SgTypeDouble); }
332572  virtual void visit(SgTypeLongLong *variable_SgTypeLongLong) { visitDefault(variable_SgTypeLongLong); }
332573  virtual void visit(SgTypeSignedLongLong *variable_SgTypeSignedLongLong) { visitDefault(variable_SgTypeSignedLongLong); }
332574  virtual void visit(SgTypeUnsignedLongLong *variable_SgTypeUnsignedLongLong) { visitDefault(variable_SgTypeUnsignedLongLong); }
332575  virtual void visit(SgTypeLongDouble *variable_SgTypeLongDouble) { visitDefault(variable_SgTypeLongDouble); }
332576  virtual void visit(SgTypeFloat80 *variable_SgTypeFloat80) { visitDefault(variable_SgTypeFloat80); }
332577  virtual void visit(SgTypeFloat128 *variable_SgTypeFloat128) { visitDefault(variable_SgTypeFloat128); }
332578  virtual void visit(SgTypeString *variable_SgTypeString) { visitDefault(variable_SgTypeString); }
332579  virtual void visit(SgTypeBool *variable_SgTypeBool) { visitDefault(variable_SgTypeBool); }
332580  virtual void visit(SgTypeFixed *variable_SgTypeFixed) { visitDefault(variable_SgTypeFixed); }
332581  virtual void visit(SgTypeMatrix *variable_SgTypeMatrix) { visitDefault(variable_SgTypeMatrix); }
332582  virtual void visit(SgTypeTuple *variable_SgTypeTuple) { visitDefault(variable_SgTypeTuple); }
332583  virtual void visit(SgTypeNullptr *variable_SgTypeNullptr) { visitDefault(variable_SgTypeNullptr); }
332584  virtual void visit(SgTypeComplex *variable_SgTypeComplex) { visitDefault(variable_SgTypeComplex); }
332585  virtual void visit(SgTypeImaginary *variable_SgTypeImaginary) { visitDefault(variable_SgTypeImaginary); }
332586  virtual void visit(SgTypeDefault *variable_SgTypeDefault) { visitDefault(variable_SgTypeDefault); }
332587  virtual void visit(SgPointerMemberType *variable_SgPointerMemberType) { visitDefault(variable_SgPointerMemberType); }
332588  virtual void visit(SgReferenceType *variable_SgReferenceType) { visitDefault(variable_SgReferenceType); }
332589  virtual void visit(SgRvalueReferenceType *variable_SgRvalueReferenceType) { visitDefault(variable_SgRvalueReferenceType); }
332590  virtual void visit(SgDeclType *variable_SgDeclType) { visitDefault(variable_SgDeclType); }
332591  virtual void visit(SgTypeOfType *variable_SgTypeOfType) { visitDefault(variable_SgTypeOfType); }
332592  virtual void visit(SgTypeCAFTeam *variable_SgTypeCAFTeam) { visitDefault(variable_SgTypeCAFTeam); }
332593  virtual void visit(SgTypeUnsigned128bitInteger *variable_SgTypeUnsigned128bitInteger) { visitDefault(variable_SgTypeUnsigned128bitInteger); }
332594  virtual void visit(SgTypeSigned128bitInteger *variable_SgTypeSigned128bitInteger) { visitDefault(variable_SgTypeSigned128bitInteger); }
332595  virtual void visit(SgTypeLabel *variable_SgTypeLabel) { visitDefault(variable_SgTypeLabel); }
332596  virtual void visit(SgTemplateType *variable_SgTemplateType) { visitDefault(variable_SgTemplateType); }
332597  virtual void visit(SgEnumType *variable_SgEnumType) { visitDefault(variable_SgEnumType); }
332598  virtual void visit(SgTypedefType *variable_SgTypedefType) { visitDefault(variable_SgTypedefType); }
332599  virtual void visit(SgNonrealType *variable_SgNonrealType) { visitDefault(variable_SgNonrealType); }
332600  virtual void visit(SgAutoType *variable_SgAutoType) { visitDefault(variable_SgAutoType); }
332601  virtual void visit(SgModifierType *variable_SgModifierType) { visitDefault(variable_SgModifierType); }
332602  virtual void visit(SgPartialFunctionModifierType *variable_SgPartialFunctionModifierType) { visitDefault(variable_SgPartialFunctionModifierType); }
332603  virtual void visit(SgArrayType *variable_SgArrayType) { visitDefault(variable_SgArrayType); }
332604  virtual void visit(SgTypeEllipse *variable_SgTypeEllipse) { visitDefault(variable_SgTypeEllipse); }
332605  virtual void visit(SgTypeCrayPointer *variable_SgTypeCrayPointer) { visitDefault(variable_SgTypeCrayPointer); }
332606  virtual void visit(SgPartialFunctionType *variable_SgPartialFunctionType) { visitDefault(variable_SgPartialFunctionType); }
332607  virtual void visit(SgMemberFunctionType *variable_SgMemberFunctionType) { visitDefault(variable_SgMemberFunctionType); }
332608  virtual void visit(SgFunctionType *variable_SgFunctionType) { visitDefault(variable_SgFunctionType); }
332609  virtual void visit(SgPointerType *variable_SgPointerType) { visitDefault(variable_SgPointerType); }
332610  virtual void visit(SgClassType *variable_SgClassType) { visitDefault(variable_SgClassType); }
332611  virtual void visit(SgNamedType *variable_SgNamedType) { visitDefault(variable_SgNamedType); }
332612  virtual void visit(SgQualifiedNameType *variable_SgQualifiedNameType) { visitDefault(variable_SgQualifiedNameType); }
332613  virtual void visit(SgTypeChar16 *variable_SgTypeChar16) { visitDefault(variable_SgTypeChar16); }
332614  virtual void visit(SgTypeChar32 *variable_SgTypeChar32) { visitDefault(variable_SgTypeChar32); }
332615  virtual void visit(SgType *variable_SgType) { visitDefault(variable_SgType); }
332616  virtual void visit(SgForStatement *variable_SgForStatement) { visitDefault(variable_SgForStatement); }
332617  virtual void visit(SgForInitStatement *variable_SgForInitStatement) { visitDefault(variable_SgForInitStatement); }
332618  virtual void visit(SgRangeBasedForStatement *variable_SgRangeBasedForStatement) { visitDefault(variable_SgRangeBasedForStatement); }
332619  virtual void visit(SgCatchStatementSeq *variable_SgCatchStatementSeq) { visitDefault(variable_SgCatchStatementSeq); }
332620  virtual void visit(SgFunctionParameterList *variable_SgFunctionParameterList) { visitDefault(variable_SgFunctionParameterList); }
332621  virtual void visit(SgCtorInitializerList *variable_SgCtorInitializerList) { visitDefault(variable_SgCtorInitializerList); }
332622  virtual void visit(SgBasicBlock *variable_SgBasicBlock) { visitDefault(variable_SgBasicBlock); }
332623  virtual void visit(SgGlobal *variable_SgGlobal) { visitDefault(variable_SgGlobal); }
332624  virtual void visit(SgIfStmt *variable_SgIfStmt) { visitDefault(variable_SgIfStmt); }
332625  virtual void visit(SgWhileStmt *variable_SgWhileStmt) { visitDefault(variable_SgWhileStmt); }
332626  virtual void visit(SgDoWhileStmt *variable_SgDoWhileStmt) { visitDefault(variable_SgDoWhileStmt); }
332627  virtual void visit(SgSwitchStatement *variable_SgSwitchStatement) { visitDefault(variable_SgSwitchStatement); }
332628  virtual void visit(SgCatchOptionStmt *variable_SgCatchOptionStmt) { visitDefault(variable_SgCatchOptionStmt); }
332629  virtual void visit(SgFunctionParameterScope *variable_SgFunctionParameterScope) { visitDefault(variable_SgFunctionParameterScope); }
332630  virtual void visit(SgDeclarationScope *variable_SgDeclarationScope) { visitDefault(variable_SgDeclarationScope); }
332631  virtual void visit(SgVariableDefinition *variable_SgVariableDefinition) { visitDefault(variable_SgVariableDefinition); }
332632  virtual void visit(SgStmtDeclarationStatement *variable_SgStmtDeclarationStatement) { visitDefault(variable_SgStmtDeclarationStatement); }
332633  virtual void visit(SgEnumDeclaration *variable_SgEnumDeclaration) { visitDefault(variable_SgEnumDeclaration); }
332634  virtual void visit(SgAsmStmt *variable_SgAsmStmt) { visitDefault(variable_SgAsmStmt); }
332635  virtual void visit(SgFunctionTypeTable *variable_SgFunctionTypeTable) { visitDefault(variable_SgFunctionTypeTable); }
332636  virtual void visit(SgExprStatement *variable_SgExprStatement) { visitDefault(variable_SgExprStatement); }
332637  virtual void visit(SgLabelStatement *variable_SgLabelStatement) { visitDefault(variable_SgLabelStatement); }
332638  virtual void visit(SgCaseOptionStmt *variable_SgCaseOptionStmt) { visitDefault(variable_SgCaseOptionStmt); }
332639  virtual void visit(SgTryStmt *variable_SgTryStmt) { visitDefault(variable_SgTryStmt); }
332640  virtual void visit(SgDefaultOptionStmt *variable_SgDefaultOptionStmt) { visitDefault(variable_SgDefaultOptionStmt); }
332641  virtual void visit(SgBreakStmt *variable_SgBreakStmt) { visitDefault(variable_SgBreakStmt); }
332642  virtual void visit(SgContinueStmt *variable_SgContinueStmt) { visitDefault(variable_SgContinueStmt); }
332643  virtual void visit(SgReturnStmt *variable_SgReturnStmt) { visitDefault(variable_SgReturnStmt); }
332644  virtual void visit(SgGotoStatement *variable_SgGotoStatement) { visitDefault(variable_SgGotoStatement); }
332645  virtual void visit(SgSpawnStmt *variable_SgSpawnStmt) { visitDefault(variable_SgSpawnStmt); }
332646  virtual void visit(SgTemplateTypedefDeclaration *variable_SgTemplateTypedefDeclaration) { visitDefault(variable_SgTemplateTypedefDeclaration); }
332647  virtual void visit(SgTemplateInstantiationTypedefDeclaration *variable_SgTemplateInstantiationTypedefDeclaration) { visitDefault(variable_SgTemplateInstantiationTypedefDeclaration); }
332648  virtual void visit(SgTypedefDeclaration *variable_SgTypedefDeclaration) { visitDefault(variable_SgTypedefDeclaration); }
332649  virtual void visit(SgNullStatement *variable_SgNullStatement) { visitDefault(variable_SgNullStatement); }
332650  virtual void visit(SgVariantStatement *variable_SgVariantStatement) { visitDefault(variable_SgVariantStatement); }
332651  virtual void visit(SgPragmaDeclaration *variable_SgPragmaDeclaration) { visitDefault(variable_SgPragmaDeclaration); }
332652  virtual void visit(SgTemplateClassDeclaration *variable_SgTemplateClassDeclaration) { visitDefault(variable_SgTemplateClassDeclaration); }
332653  virtual void visit(SgTemplateMemberFunctionDeclaration *variable_SgTemplateMemberFunctionDeclaration) { visitDefault(variable_SgTemplateMemberFunctionDeclaration); }
332654  virtual void visit(SgTemplateFunctionDeclaration *variable_SgTemplateFunctionDeclaration) { visitDefault(variable_SgTemplateFunctionDeclaration); }
332655  virtual void visit(SgTemplateVariableDeclaration *variable_SgTemplateVariableDeclaration) { visitDefault(variable_SgTemplateVariableDeclaration); }
332656  virtual void visit(SgTemplateDeclaration *variable_SgTemplateDeclaration) { visitDefault(variable_SgTemplateDeclaration); }
332657  virtual void visit(SgVariableDeclaration *variable_SgVariableDeclaration) { visitDefault(variable_SgVariableDeclaration); }
332658  virtual void visit(SgTemplateInstantiationDecl *variable_SgTemplateInstantiationDecl) { visitDefault(variable_SgTemplateInstantiationDecl); }
332659  virtual void visit(SgTemplateInstantiationDefn *variable_SgTemplateInstantiationDefn) { visitDefault(variable_SgTemplateInstantiationDefn); }
332660  virtual void visit(SgTemplateInstantiationFunctionDecl *variable_SgTemplateInstantiationFunctionDecl) { visitDefault(variable_SgTemplateInstantiationFunctionDecl); }
332661  virtual void visit(SgTemplateInstantiationMemberFunctionDecl *variable_SgTemplateInstantiationMemberFunctionDecl) { visitDefault(variable_SgTemplateInstantiationMemberFunctionDecl); }
332662  virtual void visit(SgNonrealDecl *variable_SgNonrealDecl) { visitDefault(variable_SgNonrealDecl); }
332663  virtual void visit(SgWithStatement *variable_SgWithStatement) { visitDefault(variable_SgWithStatement); }
332664  virtual void visit(SgPassStatement *variable_SgPassStatement) { visitDefault(variable_SgPassStatement); }
332665  virtual void visit(SgAssertStmt *variable_SgAssertStmt) { visitDefault(variable_SgAssertStmt); }
332666  virtual void visit(SgExecStatement *variable_SgExecStatement) { visitDefault(variable_SgExecStatement); }
332667  virtual void visit(SgProgramHeaderStatement *variable_SgProgramHeaderStatement) { visitDefault(variable_SgProgramHeaderStatement); }
332668  virtual void visit(SgProcedureHeaderStatement *variable_SgProcedureHeaderStatement) { visitDefault(variable_SgProcedureHeaderStatement); }
332669  virtual void visit(SgEntryStatement *variable_SgEntryStatement) { visitDefault(variable_SgEntryStatement); }
332670  virtual void visit(SgFortranNonblockedDo *variable_SgFortranNonblockedDo) { visitDefault(variable_SgFortranNonblockedDo); }
332671  virtual void visit(SgInterfaceStatement *variable_SgInterfaceStatement) { visitDefault(variable_SgInterfaceStatement); }
332672  virtual void visit(SgParameterStatement *variable_SgParameterStatement) { visitDefault(variable_SgParameterStatement); }
332673  virtual void visit(SgCommonBlock *variable_SgCommonBlock) { visitDefault(variable_SgCommonBlock); }
332674  virtual void visit(SgModuleStatement *variable_SgModuleStatement) { visitDefault(variable_SgModuleStatement); }
332675  virtual void visit(SgUseStatement *variable_SgUseStatement) { visitDefault(variable_SgUseStatement); }
332676  virtual void visit(SgProcessControlStatement *variable_SgProcessControlStatement) { visitDefault(variable_SgProcessControlStatement); }
332677  virtual void visit(SgPrintStatement *variable_SgPrintStatement) { visitDefault(variable_SgPrintStatement); }
332678  virtual void visit(SgReadStatement *variable_SgReadStatement) { visitDefault(variable_SgReadStatement); }
332679  virtual void visit(SgWriteStatement *variable_SgWriteStatement) { visitDefault(variable_SgWriteStatement); }
332680  virtual void visit(SgOpenStatement *variable_SgOpenStatement) { visitDefault(variable_SgOpenStatement); }
332681  virtual void visit(SgCloseStatement *variable_SgCloseStatement) { visitDefault(variable_SgCloseStatement); }
332682  virtual void visit(SgInquireStatement *variable_SgInquireStatement) { visitDefault(variable_SgInquireStatement); }
332683  virtual void visit(SgFlushStatement *variable_SgFlushStatement) { visitDefault(variable_SgFlushStatement); }
332684  virtual void visit(SgBackspaceStatement *variable_SgBackspaceStatement) { visitDefault(variable_SgBackspaceStatement); }
332685  virtual void visit(SgRewindStatement *variable_SgRewindStatement) { visitDefault(variable_SgRewindStatement); }
332686  virtual void visit(SgEndfileStatement *variable_SgEndfileStatement) { visitDefault(variable_SgEndfileStatement); }
332687  virtual void visit(SgWaitStatement *variable_SgWaitStatement) { visitDefault(variable_SgWaitStatement); }
332688  virtual void visit(SgCAFWithTeamStatement *variable_SgCAFWithTeamStatement) { visitDefault(variable_SgCAFWithTeamStatement); }
332689  virtual void visit(SgFormatStatement *variable_SgFormatStatement) { visitDefault(variable_SgFormatStatement); }
332690  virtual void visit(SgFortranDo *variable_SgFortranDo) { visitDefault(variable_SgFortranDo); }
332691  virtual void visit(SgForAllStatement *variable_SgForAllStatement) { visitDefault(variable_SgForAllStatement); }
332692  virtual void visit(SgIOStatement *variable_SgIOStatement) { visitDefault(variable_SgIOStatement); }
332693  virtual void visit(SgSyncAllStatement *variable_SgSyncAllStatement) { visitDefault(variable_SgSyncAllStatement); }
332694  virtual void visit(SgSyncImagesStatement *variable_SgSyncImagesStatement) { visitDefault(variable_SgSyncImagesStatement); }
332695  virtual void visit(SgSyncMemoryStatement *variable_SgSyncMemoryStatement) { visitDefault(variable_SgSyncMemoryStatement); }
332696  virtual void visit(SgSyncTeamStatement *variable_SgSyncTeamStatement) { visitDefault(variable_SgSyncTeamStatement); }
332697  virtual void visit(SgLockStatement *variable_SgLockStatement) { visitDefault(variable_SgLockStatement); }
332698  virtual void visit(SgUnlockStatement *variable_SgUnlockStatement) { visitDefault(variable_SgUnlockStatement); }
332699  virtual void visit(SgImageControlStatement *variable_SgImageControlStatement) { visitDefault(variable_SgImageControlStatement); }
332700  virtual void visit(SgUpcNotifyStatement *variable_SgUpcNotifyStatement) { visitDefault(variable_SgUpcNotifyStatement); }
332701  virtual void visit(SgUpcWaitStatement *variable_SgUpcWaitStatement) { visitDefault(variable_SgUpcWaitStatement); }
332702  virtual void visit(SgUpcBarrierStatement *variable_SgUpcBarrierStatement) { visitDefault(variable_SgUpcBarrierStatement); }
332703  virtual void visit(SgUpcFenceStatement *variable_SgUpcFenceStatement) { visitDefault(variable_SgUpcFenceStatement); }
332704  virtual void visit(SgUpcForAllStatement *variable_SgUpcForAllStatement) { visitDefault(variable_SgUpcForAllStatement); }
332705  virtual void visit(SgUpirSpmdStatement *variable_SgUpirSpmdStatement) { visitDefault(variable_SgUpirSpmdStatement); }
332706  virtual void visit(SgOmpLoopStatement *variable_SgOmpLoopStatement) { visitDefault(variable_SgOmpLoopStatement); }
332707  virtual void visit(SgOmpScanStatement *variable_SgOmpScanStatement) { visitDefault(variable_SgOmpScanStatement); }
332708  virtual void visit(SgOmpTaskloopStatement *variable_SgOmpTaskloopStatement) { visitDefault(variable_SgOmpTaskloopStatement); }
332709  virtual void visit(SgOmpTaskgroupStatement *variable_SgOmpTaskgroupStatement) { visitDefault(variable_SgOmpTaskgroupStatement); }
332710  virtual void visit(SgOmpDepobjStatement *variable_SgOmpDepobjStatement) { visitDefault(variable_SgOmpDepobjStatement); }
332711  virtual void visit(SgOmpTeamsStatement *variable_SgOmpTeamsStatement) { visitDefault(variable_SgOmpTeamsStatement); }
332712  virtual void visit(SgOmpCancellationPointStatement *variable_SgOmpCancellationPointStatement) { visitDefault(variable_SgOmpCancellationPointStatement); }
332713  virtual void visit(SgOmpDeclareMapperStatement *variable_SgOmpDeclareMapperStatement) { visitDefault(variable_SgOmpDeclareMapperStatement); }
332714  virtual void visit(SgOmpCancelStatement *variable_SgOmpCancelStatement) { visitDefault(variable_SgOmpCancelStatement); }
332715  virtual void visit(SgOmpDistributeStatement *variable_SgOmpDistributeStatement) { visitDefault(variable_SgOmpDistributeStatement); }
332716  virtual void visit(SgOmpMetadirectiveStatement *variable_SgOmpMetadirectiveStatement) { visitDefault(variable_SgOmpMetadirectiveStatement); }
332717  virtual void visit(SgOmpSingleStatement *variable_SgOmpSingleStatement) { visitDefault(variable_SgOmpSingleStatement); }
332718  virtual void visit(SgOmpTaskStatement *variable_SgOmpTaskStatement) { visitDefault(variable_SgOmpTaskStatement); }
332719  virtual void visit(SgOmpTargetEnterDataStatement *variable_SgOmpTargetEnterDataStatement) { visitDefault(variable_SgOmpTargetEnterDataStatement); }
332720  virtual void visit(SgOmpTargetExitDataStatement *variable_SgOmpTargetExitDataStatement) { visitDefault(variable_SgOmpTargetExitDataStatement); }
332721  virtual void visit(SgUpirWorksharingStatement *variable_SgUpirWorksharingStatement) { visitDefault(variable_SgUpirWorksharingStatement); }
332722  virtual void visit(SgOmpForSimdStatement *variable_SgOmpForSimdStatement) { visitDefault(variable_SgOmpForSimdStatement); }
332723  virtual void visit(SgOmpDoStatement *variable_SgOmpDoStatement) { visitDefault(variable_SgOmpDoStatement); }
332724  virtual void visit(SgOmpSectionsStatement *variable_SgOmpSectionsStatement) { visitDefault(variable_SgOmpSectionsStatement); }
332725  virtual void visit(SgOmpAtomicStatement *variable_SgOmpAtomicStatement) { visitDefault(variable_SgOmpAtomicStatement); }
332726  virtual void visit(SgUpirTaskStatement *variable_SgUpirTaskStatement) { visitDefault(variable_SgUpirTaskStatement); }
332727  virtual void visit(SgOmpTargetDataStatement *variable_SgOmpTargetDataStatement) { visitDefault(variable_SgOmpTargetDataStatement); }
332728  virtual void visit(SgOmpTargetParallelForStatement *variable_SgOmpTargetParallelForStatement) { visitDefault(variable_SgOmpTargetParallelForStatement); }
332729  virtual void visit(SgOmpTargetParallelStatement *variable_SgOmpTargetParallelStatement) { visitDefault(variable_SgOmpTargetParallelStatement); }
332730  virtual void visit(SgOmpDistributeSimdStatement *variable_SgOmpDistributeSimdStatement) { visitDefault(variable_SgOmpDistributeSimdStatement); }
332731  virtual void visit(SgOmpDistributeParallelForStatement *variable_SgOmpDistributeParallelForStatement) { visitDefault(variable_SgOmpDistributeParallelForStatement); }
332732  virtual void visit(SgOmpDistributeParallelForSimdStatement *variable_SgOmpDistributeParallelForSimdStatement) { visitDefault(variable_SgOmpDistributeParallelForSimdStatement); }
332733  virtual void visit(SgOmpTaskloopSimdStatement *variable_SgOmpTaskloopSimdStatement) { visitDefault(variable_SgOmpTaskloopSimdStatement); }
332734  virtual void visit(SgOmpTargetUpdateStatement *variable_SgOmpTargetUpdateStatement) { visitDefault(variable_SgOmpTargetUpdateStatement); }
332735  virtual void visit(SgOmpTargetParallelForSimdStatement *variable_SgOmpTargetParallelForSimdStatement) { visitDefault(variable_SgOmpTargetParallelForSimdStatement); }
332736  virtual void visit(SgOmpTargetParallelLoopStatement *variable_SgOmpTargetParallelLoopStatement) { visitDefault(variable_SgOmpTargetParallelLoopStatement); }
332737  virtual void visit(SgOmpTargetSimdStatement *variable_SgOmpTargetSimdStatement) { visitDefault(variable_SgOmpTargetSimdStatement); }
332738  virtual void visit(SgOmpTargetTeamsStatement *variable_SgOmpTargetTeamsStatement) { visitDefault(variable_SgOmpTargetTeamsStatement); }
332739  virtual void visit(SgOmpTargetTeamsDistributeStatement *variable_SgOmpTargetTeamsDistributeStatement) { visitDefault(variable_SgOmpTargetTeamsDistributeStatement); }
332740  virtual void visit(SgOmpTargetTeamsDistributeSimdStatement *variable_SgOmpTargetTeamsDistributeSimdStatement) { visitDefault(variable_SgOmpTargetTeamsDistributeSimdStatement); }
332741  virtual void visit(SgOmpTargetTeamsLoopStatement *variable_SgOmpTargetTeamsLoopStatement) { visitDefault(variable_SgOmpTargetTeamsLoopStatement); }
332742  virtual void visit(SgOmpTargetTeamsDistributeParallelForStatement *variable_SgOmpTargetTeamsDistributeParallelForStatement) { visitDefault(variable_SgOmpTargetTeamsDistributeParallelForStatement); }
332743  virtual void visit(SgOmpTargetTeamsDistributeParallelForSimdStatement *variable_SgOmpTargetTeamsDistributeParallelForSimdStatement) { visitDefault(variable_SgOmpTargetTeamsDistributeParallelForSimdStatement); }
332744  virtual void visit(SgOmpMasterTaskloopSimdStatement *variable_SgOmpMasterTaskloopSimdStatement) { visitDefault(variable_SgOmpMasterTaskloopSimdStatement); }
332745  virtual void visit(SgOmpParallelMasterTaskloopStatement *variable_SgOmpParallelMasterTaskloopStatement) { visitDefault(variable_SgOmpParallelMasterTaskloopStatement); }
332746  virtual void visit(SgOmpParallelMasterTaskloopSimdStatement *variable_SgOmpParallelMasterTaskloopSimdStatement) { visitDefault(variable_SgOmpParallelMasterTaskloopSimdStatement); }
332747  virtual void visit(SgOmpTeamsDistributeStatement *variable_SgOmpTeamsDistributeStatement) { visitDefault(variable_SgOmpTeamsDistributeStatement); }
332748  virtual void visit(SgOmpTeamsDistributeSimdStatement *variable_SgOmpTeamsDistributeSimdStatement) { visitDefault(variable_SgOmpTeamsDistributeSimdStatement); }
332749  virtual void visit(SgOmpTeamsDistributeParallelForStatement *variable_SgOmpTeamsDistributeParallelForStatement) { visitDefault(variable_SgOmpTeamsDistributeParallelForStatement); }
332750  virtual void visit(SgOmpTeamsDistributeParallelForSimdStatement *variable_SgOmpTeamsDistributeParallelForSimdStatement) { visitDefault(variable_SgOmpTeamsDistributeParallelForSimdStatement); }
332751  virtual void visit(SgOmpTeamsLoopStatement *variable_SgOmpTeamsLoopStatement) { visitDefault(variable_SgOmpTeamsLoopStatement); }
332752  virtual void visit(SgOmpParallelMasterStatement *variable_SgOmpParallelMasterStatement) { visitDefault(variable_SgOmpParallelMasterStatement); }
332753  virtual void visit(SgOmpMasterTaskloopStatement *variable_SgOmpMasterTaskloopStatement) { visitDefault(variable_SgOmpMasterTaskloopStatement); }
332754  virtual void visit(SgOmpParallelLoopStatement *variable_SgOmpParallelLoopStatement) { visitDefault(variable_SgOmpParallelLoopStatement); }
332755  virtual void visit(SgOmpUnrollStatement *variable_SgOmpUnrollStatement) { visitDefault(variable_SgOmpUnrollStatement); }
332756  virtual void visit(SgOmpTileStatement *variable_SgOmpTileStatement) { visitDefault(variable_SgOmpTileStatement); }
332757  virtual void visit(SgUpirSimdStatement *variable_SgUpirSimdStatement) { visitDefault(variable_SgUpirSimdStatement); }
332758  virtual void visit(SgOmpCriticalStatement *variable_SgOmpCriticalStatement) { visitDefault(variable_SgOmpCriticalStatement); }
332759  virtual void visit(SgOmpOrderedStatement *variable_SgOmpOrderedStatement) { visitDefault(variable_SgOmpOrderedStatement); }
332760  virtual void visit(SgUpirLoopStatement *variable_SgUpirLoopStatement) { visitDefault(variable_SgUpirLoopStatement); }
332761  virtual void visit(SgUpirLoopParallelStatement *variable_SgUpirLoopParallelStatement) { visitDefault(variable_SgUpirLoopParallelStatement); }
332762  virtual void visit(SgUpirSyncStatement *variable_SgUpirSyncStatement) { visitDefault(variable_SgUpirSyncStatement); }
332763  virtual void visit(SgUpirFieldBodyStatement *variable_SgUpirFieldBodyStatement) { visitDefault(variable_SgUpirFieldBodyStatement); }
332764  virtual void visit(SgOmpMasterStatement *variable_SgOmpMasterStatement) { visitDefault(variable_SgOmpMasterStatement); }
332765  virtual void visit(SgOmpSectionStatement *variable_SgOmpSectionStatement) { visitDefault(variable_SgOmpSectionStatement); }
332766  virtual void visit(SgOmpWorkshareStatement *variable_SgOmpWorkshareStatement) { visitDefault(variable_SgOmpWorkshareStatement); }
332767  virtual void visit(SgOmpFlushStatement *variable_SgOmpFlushStatement) { visitDefault(variable_SgOmpFlushStatement); }
332768  virtual void visit(SgOmpAllocateStatement *variable_SgOmpAllocateStatement) { visitDefault(variable_SgOmpAllocateStatement); }
332769  virtual void visit(SgOmpOrderedDependStatement *variable_SgOmpOrderedDependStatement) { visitDefault(variable_SgOmpOrderedDependStatement); }
332770  virtual void visit(SgUpirBodyStatement *variable_SgUpirBodyStatement) { visitDefault(variable_SgUpirBodyStatement); }
332771  virtual void visit(SgUpirFieldStatement *variable_SgUpirFieldStatement) { visitDefault(variable_SgUpirFieldStatement); }
332772  virtual void visit(SgBlockDataStatement *variable_SgBlockDataStatement) { visitDefault(variable_SgBlockDataStatement); }
332773  virtual void visit(SgImplicitStatement *variable_SgImplicitStatement) { visitDefault(variable_SgImplicitStatement); }
332774  virtual void visit(SgStatementFunctionStatement *variable_SgStatementFunctionStatement) { visitDefault(variable_SgStatementFunctionStatement); }
332775  virtual void visit(SgWhereStatement *variable_SgWhereStatement) { visitDefault(variable_SgWhereStatement); }
332776  virtual void visit(SgNullifyStatement *variable_SgNullifyStatement) { visitDefault(variable_SgNullifyStatement); }
332777  virtual void visit(SgEquivalenceStatement *variable_SgEquivalenceStatement) { visitDefault(variable_SgEquivalenceStatement); }
332778  virtual void visit(SgDerivedTypeStatement *variable_SgDerivedTypeStatement) { visitDefault(variable_SgDerivedTypeStatement); }
332779  virtual void visit(SgAttributeSpecificationStatement *variable_SgAttributeSpecificationStatement) { visitDefault(variable_SgAttributeSpecificationStatement); }
332780  virtual void visit(SgAllocateStatement *variable_SgAllocateStatement) { visitDefault(variable_SgAllocateStatement); }
332781  virtual void visit(SgDeallocateStatement *variable_SgDeallocateStatement) { visitDefault(variable_SgDeallocateStatement); }
332782  virtual void visit(SgContainsStatement *variable_SgContainsStatement) { visitDefault(variable_SgContainsStatement); }
332783  virtual void visit(SgSequenceStatement *variable_SgSequenceStatement) { visitDefault(variable_SgSequenceStatement); }
332784  virtual void visit(SgElseWhereStatement *variable_SgElseWhereStatement) { visitDefault(variable_SgElseWhereStatement); }
332785  virtual void visit(SgArithmeticIfStatement *variable_SgArithmeticIfStatement) { visitDefault(variable_SgArithmeticIfStatement); }
332786  virtual void visit(SgAssignStatement *variable_SgAssignStatement) { visitDefault(variable_SgAssignStatement); }
332787  virtual void visit(SgComputedGotoStatement *variable_SgComputedGotoStatement) { visitDefault(variable_SgComputedGotoStatement); }
332788  virtual void visit(SgAssignedGotoStatement *variable_SgAssignedGotoStatement) { visitDefault(variable_SgAssignedGotoStatement); }
332789  virtual void visit(SgNamelistStatement *variable_SgNamelistStatement) { visitDefault(variable_SgNamelistStatement); }
332790  virtual void visit(SgImportStatement *variable_SgImportStatement) { visitDefault(variable_SgImportStatement); }
332791  virtual void visit(SgAssociateStatement *variable_SgAssociateStatement) { visitDefault(variable_SgAssociateStatement); }
332792  virtual void visit(SgFortranIncludeLine *variable_SgFortranIncludeLine) { visitDefault(variable_SgFortranIncludeLine); }
332793  virtual void visit(SgNamespaceDeclarationStatement *variable_SgNamespaceDeclarationStatement) { visitDefault(variable_SgNamespaceDeclarationStatement); }
332794  virtual void visit(SgNamespaceAliasDeclarationStatement *variable_SgNamespaceAliasDeclarationStatement) { visitDefault(variable_SgNamespaceAliasDeclarationStatement); }
332795  virtual void visit(SgNamespaceDefinitionStatement *variable_SgNamespaceDefinitionStatement) { visitDefault(variable_SgNamespaceDefinitionStatement); }
332796  virtual void visit(SgUsingDeclarationStatement *variable_SgUsingDeclarationStatement) { visitDefault(variable_SgUsingDeclarationStatement); }
332797  virtual void visit(SgUsingDirectiveStatement *variable_SgUsingDirectiveStatement) { visitDefault(variable_SgUsingDirectiveStatement); }
332798  virtual void visit(SgTemplateInstantiationDirectiveStatement *variable_SgTemplateInstantiationDirectiveStatement) { visitDefault(variable_SgTemplateInstantiationDirectiveStatement); }
332799  virtual void visit(SgStaticAssertionDeclaration *variable_SgStaticAssertionDeclaration) { visitDefault(variable_SgStaticAssertionDeclaration); }
332800  virtual void visit(SgTemplateClassDefinition *variable_SgTemplateClassDefinition) { visitDefault(variable_SgTemplateClassDefinition); }
332801  virtual void visit(SgTemplateFunctionDefinition *variable_SgTemplateFunctionDefinition) { visitDefault(variable_SgTemplateFunctionDefinition); }
332802  virtual void visit(SgClassDeclaration *variable_SgClassDeclaration) { visitDefault(variable_SgClassDeclaration); }
332803  virtual void visit(SgClassDefinition *variable_SgClassDefinition) { visitDefault(variable_SgClassDefinition); }
332804  virtual void visit(SgFunctionDefinition *variable_SgFunctionDefinition) { visitDefault(variable_SgFunctionDefinition); }
332805  virtual void visit(SgScopeStatement *variable_SgScopeStatement) { visitDefault(variable_SgScopeStatement); }
332806  virtual void visit(SgMemberFunctionDeclaration *variable_SgMemberFunctionDeclaration) { visitDefault(variable_SgMemberFunctionDeclaration); }
332807  virtual void visit(SgFunctionDeclaration *variable_SgFunctionDeclaration) { visitDefault(variable_SgFunctionDeclaration); }
332808  virtual void visit(SgIncludeDirectiveStatement *variable_SgIncludeDirectiveStatement) { visitDefault(variable_SgIncludeDirectiveStatement); }
332809  virtual void visit(SgDefineDirectiveStatement *variable_SgDefineDirectiveStatement) { visitDefault(variable_SgDefineDirectiveStatement); }
332810  virtual void visit(SgUndefDirectiveStatement *variable_SgUndefDirectiveStatement) { visitDefault(variable_SgUndefDirectiveStatement); }
332811  virtual void visit(SgIfdefDirectiveStatement *variable_SgIfdefDirectiveStatement) { visitDefault(variable_SgIfdefDirectiveStatement); }
332812  virtual void visit(SgIfndefDirectiveStatement *variable_SgIfndefDirectiveStatement) { visitDefault(variable_SgIfndefDirectiveStatement); }
332813  virtual void visit(SgIfDirectiveStatement *variable_SgIfDirectiveStatement) { visitDefault(variable_SgIfDirectiveStatement); }
332814  virtual void visit(SgDeadIfDirectiveStatement *variable_SgDeadIfDirectiveStatement) { visitDefault(variable_SgDeadIfDirectiveStatement); }
332815  virtual void visit(SgElseDirectiveStatement *variable_SgElseDirectiveStatement) { visitDefault(variable_SgElseDirectiveStatement); }
332816  virtual void visit(SgElseifDirectiveStatement *variable_SgElseifDirectiveStatement) { visitDefault(variable_SgElseifDirectiveStatement); }
332817  virtual void visit(SgEndifDirectiveStatement *variable_SgEndifDirectiveStatement) { visitDefault(variable_SgEndifDirectiveStatement); }
332818  virtual void visit(SgLineDirectiveStatement *variable_SgLineDirectiveStatement) { visitDefault(variable_SgLineDirectiveStatement); }
332819  virtual void visit(SgWarningDirectiveStatement *variable_SgWarningDirectiveStatement) { visitDefault(variable_SgWarningDirectiveStatement); }
332820  virtual void visit(SgErrorDirectiveStatement *variable_SgErrorDirectiveStatement) { visitDefault(variable_SgErrorDirectiveStatement); }
332821  virtual void visit(SgEmptyDirectiveStatement *variable_SgEmptyDirectiveStatement) { visitDefault(variable_SgEmptyDirectiveStatement); }
332822  virtual void visit(SgIncludeNextDirectiveStatement *variable_SgIncludeNextDirectiveStatement) { visitDefault(variable_SgIncludeNextDirectiveStatement); }
332823  virtual void visit(SgIdentDirectiveStatement *variable_SgIdentDirectiveStatement) { visitDefault(variable_SgIdentDirectiveStatement); }
332824  virtual void visit(SgLinemarkerDirectiveStatement *variable_SgLinemarkerDirectiveStatement) { visitDefault(variable_SgLinemarkerDirectiveStatement); }
332825  virtual void visit(SgC_PreprocessorDirectiveStatement *variable_SgC_PreprocessorDirectiveStatement) { visitDefault(variable_SgC_PreprocessorDirectiveStatement); }
332826  virtual void visit(SgClinkageStartStatement *variable_SgClinkageStartStatement) { visitDefault(variable_SgClinkageStartStatement); }
332827  virtual void visit(SgClinkageEndStatement *variable_SgClinkageEndStatement) { visitDefault(variable_SgClinkageEndStatement); }
332828  virtual void visit(SgClinkageDeclarationStatement *variable_SgClinkageDeclarationStatement) { visitDefault(variable_SgClinkageDeclarationStatement); }
332829  virtual void visit(SgOmpDeclareSimdStatement *variable_SgOmpDeclareSimdStatement) { visitDefault(variable_SgOmpDeclareSimdStatement); }
332830  virtual void visit(SgOmpBarrierStatement *variable_SgOmpBarrierStatement) { visitDefault(variable_SgOmpBarrierStatement); }
332831  virtual void visit(SgOmpTaskyieldStatement *variable_SgOmpTaskyieldStatement) { visitDefault(variable_SgOmpTaskyieldStatement); }
332832  virtual void visit(SgOmpRequiresStatement *variable_SgOmpRequiresStatement) { visitDefault(variable_SgOmpRequiresStatement); }
332833  virtual void visit(SgOmpTaskwaitStatement *variable_SgOmpTaskwaitStatement) { visitDefault(variable_SgOmpTaskwaitStatement); }
332834  virtual void visit(SgOmpThreadprivateStatement *variable_SgOmpThreadprivateStatement) { visitDefault(variable_SgOmpThreadprivateStatement); }
332835  virtual void visit(SgMicrosoftAttributeDeclaration *variable_SgMicrosoftAttributeDeclaration) { visitDefault(variable_SgMicrosoftAttributeDeclaration); }
332836  virtual void visit(SgEmptyDeclaration *variable_SgEmptyDeclaration) { visitDefault(variable_SgEmptyDeclaration); }
332837  virtual void visit(SgDeclarationStatement *variable_SgDeclarationStatement) { visitDefault(variable_SgDeclarationStatement); }
332838  virtual void visit(SgUpirBaseStatement *variable_SgUpirBaseStatement) { visitDefault(variable_SgUpirBaseStatement); }
332839  virtual void visit(SgStatement *variable_SgStatement) { visitDefault(variable_SgStatement); }
332840  virtual void visit(SgVarRefExp *variable_SgVarRefExp) { visitDefault(variable_SgVarRefExp); }
332841  virtual void visit(SgNonrealRefExp *variable_SgNonrealRefExp) { visitDefault(variable_SgNonrealRefExp); }
332842  virtual void visit(SgCompoundLiteralExp *variable_SgCompoundLiteralExp) { visitDefault(variable_SgCompoundLiteralExp); }
332843  virtual void visit(SgLabelRefExp *variable_SgLabelRefExp) { visitDefault(variable_SgLabelRefExp); }
332844  virtual void visit(SgClassNameRefExp *variable_SgClassNameRefExp) { visitDefault(variable_SgClassNameRefExp); }
332845  virtual void visit(SgFunctionRefExp *variable_SgFunctionRefExp) { visitDefault(variable_SgFunctionRefExp); }
332846  virtual void visit(SgMemberFunctionRefExp *variable_SgMemberFunctionRefExp) { visitDefault(variable_SgMemberFunctionRefExp); }
332847  virtual void visit(SgTemplateFunctionRefExp *variable_SgTemplateFunctionRefExp) { visitDefault(variable_SgTemplateFunctionRefExp); }
332848  virtual void visit(SgTemplateMemberFunctionRefExp *variable_SgTemplateMemberFunctionRefExp) { visitDefault(variable_SgTemplateMemberFunctionRefExp); }
332849  virtual void visit(SgSizeOfOp *variable_SgSizeOfOp) { visitDefault(variable_SgSizeOfOp); }
332850  virtual void visit(SgAlignOfOp *variable_SgAlignOfOp) { visitDefault(variable_SgAlignOfOp); }
332851  virtual void visit(SgNoexceptOp *variable_SgNoexceptOp) { visitDefault(variable_SgNoexceptOp); }
332852  virtual void visit(SgTypeExpression *variable_SgTypeExpression) { visitDefault(variable_SgTypeExpression); }
332853  virtual void visit(SgLambdaExp *variable_SgLambdaExp) { visitDefault(variable_SgLambdaExp); }
332854  virtual void visit(SgUpcLocalsizeofExpression *variable_SgUpcLocalsizeofExpression) { visitDefault(variable_SgUpcLocalsizeofExpression); }
332855  virtual void visit(SgUpcBlocksizeofExpression *variable_SgUpcBlocksizeofExpression) { visitDefault(variable_SgUpcBlocksizeofExpression); }
332856  virtual void visit(SgUpcElemsizeofExpression *variable_SgUpcElemsizeofExpression) { visitDefault(variable_SgUpcElemsizeofExpression); }
332857  virtual void visit(SgVarArgStartOp *variable_SgVarArgStartOp) { visitDefault(variable_SgVarArgStartOp); }
332858  virtual void visit(SgVarArgStartOneOperandOp *variable_SgVarArgStartOneOperandOp) { visitDefault(variable_SgVarArgStartOneOperandOp); }
332859  virtual void visit(SgVarArgOp *variable_SgVarArgOp) { visitDefault(variable_SgVarArgOp); }
332860  virtual void visit(SgVarArgEndOp *variable_SgVarArgEndOp) { visitDefault(variable_SgVarArgEndOp); }
332861  virtual void visit(SgVarArgCopyOp *variable_SgVarArgCopyOp) { visitDefault(variable_SgVarArgCopyOp); }
332862  virtual void visit(SgTypeIdOp *variable_SgTypeIdOp) { visitDefault(variable_SgTypeIdOp); }
332863  virtual void visit(SgConditionalExp *variable_SgConditionalExp) { visitDefault(variable_SgConditionalExp); }
332864  virtual void visit(SgNewExp *variable_SgNewExp) { visitDefault(variable_SgNewExp); }
332865  virtual void visit(SgDeleteExp *variable_SgDeleteExp) { visitDefault(variable_SgDeleteExp); }
332866  virtual void visit(SgThisExp *variable_SgThisExp) { visitDefault(variable_SgThisExp); }
332867  virtual void visit(SgSuperExp *variable_SgSuperExp) { visitDefault(variable_SgSuperExp); }
332868  virtual void visit(SgClassExp *variable_SgClassExp) { visitDefault(variable_SgClassExp); }
332869  virtual void visit(SgRefExp *variable_SgRefExp) { visitDefault(variable_SgRefExp); }
332870  virtual void visit(SgAggregateInitializer *variable_SgAggregateInitializer) { visitDefault(variable_SgAggregateInitializer); }
332871  virtual void visit(SgCompoundInitializer *variable_SgCompoundInitializer) { visitDefault(variable_SgCompoundInitializer); }
332872  virtual void visit(SgConstructorInitializer *variable_SgConstructorInitializer) { visitDefault(variable_SgConstructorInitializer); }
332873  virtual void visit(SgAssignInitializer *variable_SgAssignInitializer) { visitDefault(variable_SgAssignInitializer); }
332874  virtual void visit(SgBracedInitializer *variable_SgBracedInitializer) { visitDefault(variable_SgBracedInitializer); }
332875  virtual void visit(SgExpressionRoot *variable_SgExpressionRoot) { visitDefault(variable_SgExpressionRoot); }
332876  virtual void visit(SgMinusOp *variable_SgMinusOp) { visitDefault(variable_SgMinusOp); }
332877  virtual void visit(SgUnaryAddOp *variable_SgUnaryAddOp) { visitDefault(variable_SgUnaryAddOp); }
332878  virtual void visit(SgNotOp *variable_SgNotOp) { visitDefault(variable_SgNotOp); }
332879  virtual void visit(SgPointerDerefExp *variable_SgPointerDerefExp) { visitDefault(variable_SgPointerDerefExp); }
332880  virtual void visit(SgAddressOfOp *variable_SgAddressOfOp) { visitDefault(variable_SgAddressOfOp); }
332881  virtual void visit(SgMinusMinusOp *variable_SgMinusMinusOp) { visitDefault(variable_SgMinusMinusOp); }
332882  virtual void visit(SgPlusPlusOp *variable_SgPlusPlusOp) { visitDefault(variable_SgPlusPlusOp); }
332883  virtual void visit(SgBitComplementOp *variable_SgBitComplementOp) { visitDefault(variable_SgBitComplementOp); }
332884  virtual void visit(SgRealPartOp *variable_SgRealPartOp) { visitDefault(variable_SgRealPartOp); }
332885  virtual void visit(SgImagPartOp *variable_SgImagPartOp) { visitDefault(variable_SgImagPartOp); }
332886  virtual void visit(SgConjugateOp *variable_SgConjugateOp) { visitDefault(variable_SgConjugateOp); }
332887  virtual void visit(SgCastExp *variable_SgCastExp) { visitDefault(variable_SgCastExp); }
332888  virtual void visit(SgThrowOp *variable_SgThrowOp) { visitDefault(variable_SgThrowOp); }
332889  virtual void visit(SgArrowExp *variable_SgArrowExp) { visitDefault(variable_SgArrowExp); }
332890  virtual void visit(SgDotExp *variable_SgDotExp) { visitDefault(variable_SgDotExp); }
332891  virtual void visit(SgDotStarOp *variable_SgDotStarOp) { visitDefault(variable_SgDotStarOp); }
332892  virtual void visit(SgArrowStarOp *variable_SgArrowStarOp) { visitDefault(variable_SgArrowStarOp); }
332893  virtual void visit(SgEqualityOp *variable_SgEqualityOp) { visitDefault(variable_SgEqualityOp); }
332894  virtual void visit(SgLessThanOp *variable_SgLessThanOp) { visitDefault(variable_SgLessThanOp); }
332895  virtual void visit(SgGreaterThanOp *variable_SgGreaterThanOp) { visitDefault(variable_SgGreaterThanOp); }
332896  virtual void visit(SgNotEqualOp *variable_SgNotEqualOp) { visitDefault(variable_SgNotEqualOp); }
332897  virtual void visit(SgLessOrEqualOp *variable_SgLessOrEqualOp) { visitDefault(variable_SgLessOrEqualOp); }
332898  virtual void visit(SgGreaterOrEqualOp *variable_SgGreaterOrEqualOp) { visitDefault(variable_SgGreaterOrEqualOp); }
332899  virtual void visit(SgAddOp *variable_SgAddOp) { visitDefault(variable_SgAddOp); }
332900  virtual void visit(SgSubtractOp *variable_SgSubtractOp) { visitDefault(variable_SgSubtractOp); }
332901  virtual void visit(SgMultiplyOp *variable_SgMultiplyOp) { visitDefault(variable_SgMultiplyOp); }
332902  virtual void visit(SgDivideOp *variable_SgDivideOp) { visitDefault(variable_SgDivideOp); }
332903  virtual void visit(SgIntegerDivideOp *variable_SgIntegerDivideOp) { visitDefault(variable_SgIntegerDivideOp); }
332904  virtual void visit(SgModOp *variable_SgModOp) { visitDefault(variable_SgModOp); }
332905  virtual void visit(SgAndOp *variable_SgAndOp) { visitDefault(variable_SgAndOp); }
332906  virtual void visit(SgOrOp *variable_SgOrOp) { visitDefault(variable_SgOrOp); }
332907  virtual void visit(SgBitXorOp *variable_SgBitXorOp) { visitDefault(variable_SgBitXorOp); }
332908  virtual void visit(SgBitAndOp *variable_SgBitAndOp) { visitDefault(variable_SgBitAndOp); }
332909  virtual void visit(SgBitOrOp *variable_SgBitOrOp) { visitDefault(variable_SgBitOrOp); }
332910  virtual void visit(SgBitEqvOp *variable_SgBitEqvOp) { visitDefault(variable_SgBitEqvOp); }
332911  virtual void visit(SgCommaOpExp *variable_SgCommaOpExp) { visitDefault(variable_SgCommaOpExp); }
332912  virtual void visit(SgLshiftOp *variable_SgLshiftOp) { visitDefault(variable_SgLshiftOp); }
332913  virtual void visit(SgRshiftOp *variable_SgRshiftOp) { visitDefault(variable_SgRshiftOp); }
332914  virtual void visit(SgPntrArrRefExp *variable_SgPntrArrRefExp) { visitDefault(variable_SgPntrArrRefExp); }
332915  virtual void visit(SgScopeOp *variable_SgScopeOp) { visitDefault(variable_SgScopeOp); }
332916  virtual void visit(SgAssignOp *variable_SgAssignOp) { visitDefault(variable_SgAssignOp); }
332917  virtual void visit(SgPlusAssignOp *variable_SgPlusAssignOp) { visitDefault(variable_SgPlusAssignOp); }
332918  virtual void visit(SgMinusAssignOp *variable_SgMinusAssignOp) { visitDefault(variable_SgMinusAssignOp); }
332919  virtual void visit(SgAndAssignOp *variable_SgAndAssignOp) { visitDefault(variable_SgAndAssignOp); }
332920  virtual void visit(SgIorAssignOp *variable_SgIorAssignOp) { visitDefault(variable_SgIorAssignOp); }
332921  virtual void visit(SgMultAssignOp *variable_SgMultAssignOp) { visitDefault(variable_SgMultAssignOp); }
332922  virtual void visit(SgDivAssignOp *variable_SgDivAssignOp) { visitDefault(variable_SgDivAssignOp); }
332923  virtual void visit(SgModAssignOp *variable_SgModAssignOp) { visitDefault(variable_SgModAssignOp); }
332924  virtual void visit(SgXorAssignOp *variable_SgXorAssignOp) { visitDefault(variable_SgXorAssignOp); }
332925  virtual void visit(SgLshiftAssignOp *variable_SgLshiftAssignOp) { visitDefault(variable_SgLshiftAssignOp); }
332926  virtual void visit(SgRshiftAssignOp *variable_SgRshiftAssignOp) { visitDefault(variable_SgRshiftAssignOp); }
332927  virtual void visit(SgIntegerDivideAssignOp *variable_SgIntegerDivideAssignOp) { visitDefault(variable_SgIntegerDivideAssignOp); }
332928  virtual void visit(SgExponentiationAssignOp *variable_SgExponentiationAssignOp) { visitDefault(variable_SgExponentiationAssignOp); }
332929  virtual void visit(SgConcatenationOp *variable_SgConcatenationOp) { visitDefault(variable_SgConcatenationOp); }
332930  virtual void visit(SgNaryComparisonOp *variable_SgNaryComparisonOp) { visitDefault(variable_SgNaryComparisonOp); }
332931  virtual void visit(SgNaryBooleanOp *variable_SgNaryBooleanOp) { visitDefault(variable_SgNaryBooleanOp); }
332932  virtual void visit(SgBoolValExp *variable_SgBoolValExp) { visitDefault(variable_SgBoolValExp); }
332933  virtual void visit(SgStringVal *variable_SgStringVal) { visitDefault(variable_SgStringVal); }
332934  virtual void visit(SgShortVal *variable_SgShortVal) { visitDefault(variable_SgShortVal); }
332935  virtual void visit(SgCharVal *variable_SgCharVal) { visitDefault(variable_SgCharVal); }
332936  virtual void visit(SgUnsignedCharVal *variable_SgUnsignedCharVal) { visitDefault(variable_SgUnsignedCharVal); }
332937  virtual void visit(SgWcharVal *variable_SgWcharVal) { visitDefault(variable_SgWcharVal); }
332938  virtual void visit(SgChar16Val *variable_SgChar16Val) { visitDefault(variable_SgChar16Val); }
332939  virtual void visit(SgChar32Val *variable_SgChar32Val) { visitDefault(variable_SgChar32Val); }
332940  virtual void visit(SgUnsignedShortVal *variable_SgUnsignedShortVal) { visitDefault(variable_SgUnsignedShortVal); }
332941  virtual void visit(SgIntVal *variable_SgIntVal) { visitDefault(variable_SgIntVal); }
332942  virtual void visit(SgEnumVal *variable_SgEnumVal) { visitDefault(variable_SgEnumVal); }
332943  virtual void visit(SgUnsignedIntVal *variable_SgUnsignedIntVal) { visitDefault(variable_SgUnsignedIntVal); }
332944  virtual void visit(SgLongIntVal *variable_SgLongIntVal) { visitDefault(variable_SgLongIntVal); }
332945  virtual void visit(SgLongLongIntVal *variable_SgLongLongIntVal) { visitDefault(variable_SgLongLongIntVal); }
332946  virtual void visit(SgUnsignedLongLongIntVal *variable_SgUnsignedLongLongIntVal) { visitDefault(variable_SgUnsignedLongLongIntVal); }
332947  virtual void visit(SgUnsignedLongVal *variable_SgUnsignedLongVal) { visitDefault(variable_SgUnsignedLongVal); }
332948  virtual void visit(SgFloatVal *variable_SgFloatVal) { visitDefault(variable_SgFloatVal); }
332949  virtual void visit(SgDoubleVal *variable_SgDoubleVal) { visitDefault(variable_SgDoubleVal); }
332950  virtual void visit(SgLongDoubleVal *variable_SgLongDoubleVal) { visitDefault(variable_SgLongDoubleVal); }
332951  virtual void visit(SgFloat80Val *variable_SgFloat80Val) { visitDefault(variable_SgFloat80Val); }
332952  virtual void visit(SgFloat128Val *variable_SgFloat128Val) { visitDefault(variable_SgFloat128Val); }
332953  virtual void visit(SgNullptrValExp *variable_SgNullptrValExp) { visitDefault(variable_SgNullptrValExp); }
332954  virtual void visit(SgVoidVal *variable_SgVoidVal) { visitDefault(variable_SgVoidVal); }
332955  virtual void visit(SgFunctionParameterRefExp *variable_SgFunctionParameterRefExp) { visitDefault(variable_SgFunctionParameterRefExp); }
332956  virtual void visit(SgTemplateParameterVal *variable_SgTemplateParameterVal) { visitDefault(variable_SgTemplateParameterVal); }
332957  virtual void visit(SgUpcThreads *variable_SgUpcThreads) { visitDefault(variable_SgUpcThreads); }
332958  virtual void visit(SgUpcMythread *variable_SgUpcMythread) { visitDefault(variable_SgUpcMythread); }
332959  virtual void visit(SgComplexVal *variable_SgComplexVal) { visitDefault(variable_SgComplexVal); }
332960  virtual void visit(SgNullExpression *variable_SgNullExpression) { visitDefault(variable_SgNullExpression); }
332961  virtual void visit(SgVariantExpression *variable_SgVariantExpression) { visitDefault(variable_SgVariantExpression); }
332962  virtual void visit(SgStatementExpression *variable_SgStatementExpression) { visitDefault(variable_SgStatementExpression); }
332963  virtual void visit(SgAsmOp *variable_SgAsmOp) { visitDefault(variable_SgAsmOp); }
332964  virtual void visit(SgCudaKernelExecConfig *variable_SgCudaKernelExecConfig) { visitDefault(variable_SgCudaKernelExecConfig); }
332965  virtual void visit(SgCudaKernelCallExp *variable_SgCudaKernelCallExp) { visitDefault(variable_SgCudaKernelCallExp); }
332966  virtual void visit(SgLambdaRefExp *variable_SgLambdaRefExp) { visitDefault(variable_SgLambdaRefExp); }
332967  virtual void visit(SgTupleExp *variable_SgTupleExp) { visitDefault(variable_SgTupleExp); }
332968  virtual void visit(SgListExp *variable_SgListExp) { visitDefault(variable_SgListExp); }
332969  virtual void visit(SgDictionaryExp *variable_SgDictionaryExp) { visitDefault(variable_SgDictionaryExp); }
332970  virtual void visit(SgKeyDatumPair *variable_SgKeyDatumPair) { visitDefault(variable_SgKeyDatumPair); }
332971  virtual void visit(SgComprehension *variable_SgComprehension) { visitDefault(variable_SgComprehension); }
332972  virtual void visit(SgListComprehension *variable_SgListComprehension) { visitDefault(variable_SgListComprehension); }
332973  virtual void visit(SgSetComprehension *variable_SgSetComprehension) { visitDefault(variable_SgSetComprehension); }
332974  virtual void visit(SgDictionaryComprehension *variable_SgDictionaryComprehension) { visitDefault(variable_SgDictionaryComprehension); }
332975  virtual void visit(SgMembershipOp *variable_SgMembershipOp) { visitDefault(variable_SgMembershipOp); }
332976  virtual void visit(SgNonMembershipOp *variable_SgNonMembershipOp) { visitDefault(variable_SgNonMembershipOp); }
332977  virtual void visit(SgIsOp *variable_SgIsOp) { visitDefault(variable_SgIsOp); }
332978  virtual void visit(SgIsNotOp *variable_SgIsNotOp) { visitDefault(variable_SgIsNotOp); }
332979  virtual void visit(SgStringConversion *variable_SgStringConversion) { visitDefault(variable_SgStringConversion); }
332980  virtual void visit(SgYieldExpression *variable_SgYieldExpression) { visitDefault(variable_SgYieldExpression); }
332981  virtual void visit(SgFoldExpression *variable_SgFoldExpression) { visitDefault(variable_SgFoldExpression); }
332982  virtual void visit(SgChooseExpression *variable_SgChooseExpression) { visitDefault(variable_SgChooseExpression); }
332983  virtual void visit(SgAwaitExpression *variable_SgAwaitExpression) { visitDefault(variable_SgAwaitExpression); }
332984  virtual void visit(SgSpaceshipOp *variable_SgSpaceshipOp) { visitDefault(variable_SgSpaceshipOp); }
332985  virtual void visit(SgSubscriptExpression *variable_SgSubscriptExpression) { visitDefault(variable_SgSubscriptExpression); }
332986  virtual void visit(SgColonShapeExp *variable_SgColonShapeExp) { visitDefault(variable_SgColonShapeExp); }
332987  virtual void visit(SgAsteriskShapeExp *variable_SgAsteriskShapeExp) { visitDefault(variable_SgAsteriskShapeExp); }
332988  virtual void visit(SgIOItemExpression *variable_SgIOItemExpression) { visitDefault(variable_SgIOItemExpression); }
332989  virtual void visit(SgImpliedDo *variable_SgImpliedDo) { visitDefault(variable_SgImpliedDo); }
332990  virtual void visit(SgExponentiationOp *variable_SgExponentiationOp) { visitDefault(variable_SgExponentiationOp); }
332991  virtual void visit(SgUnknownArrayOrFunctionReference *variable_SgUnknownArrayOrFunctionReference) { visitDefault(variable_SgUnknownArrayOrFunctionReference); }
332992  virtual void visit(SgActualArgumentExpression *variable_SgActualArgumentExpression) { visitDefault(variable_SgActualArgumentExpression); }
332993  virtual void visit(SgUserDefinedBinaryOp *variable_SgUserDefinedBinaryOp) { visitDefault(variable_SgUserDefinedBinaryOp); }
332994  virtual void visit(SgPointerAssignOp *variable_SgPointerAssignOp) { visitDefault(variable_SgPointerAssignOp); }
332995  virtual void visit(SgCAFCoExpression *variable_SgCAFCoExpression) { visitDefault(variable_SgCAFCoExpression); }
332996  virtual void visit(SgDesignatedInitializer *variable_SgDesignatedInitializer) { visitDefault(variable_SgDesignatedInitializer); }
332997  virtual void visit(SgMatrixExp *variable_SgMatrixExp) { visitDefault(variable_SgMatrixExp); }
332998  virtual void visit(SgRangeExp *variable_SgRangeExp) { visitDefault(variable_SgRangeExp); }
332999  virtual void visit(SgMagicColonExp *variable_SgMagicColonExp) { visitDefault(variable_SgMagicColonExp); }
333000  virtual void visit(SgElementwiseMultiplyOp *variable_SgElementwiseMultiplyOp) { visitDefault(variable_SgElementwiseMultiplyOp); }
333001  virtual void visit(SgPowerOp *variable_SgPowerOp) { visitDefault(variable_SgPowerOp); }
333002  virtual void visit(SgElementwisePowerOp *variable_SgElementwisePowerOp) { visitDefault(variable_SgElementwisePowerOp); }
333003  virtual void visit(SgElementwiseDivideOp *variable_SgElementwiseDivideOp) { visitDefault(variable_SgElementwiseDivideOp); }
333004  virtual void visit(SgLeftDivideOp *variable_SgLeftDivideOp) { visitDefault(variable_SgLeftDivideOp); }
333005  virtual void visit(SgElementwiseLeftDivideOp *variable_SgElementwiseLeftDivideOp) { visitDefault(variable_SgElementwiseLeftDivideOp); }
333006  virtual void visit(SgElementwiseAddOp *variable_SgElementwiseAddOp) { visitDefault(variable_SgElementwiseAddOp); }
333007  virtual void visit(SgElementwiseSubtractOp *variable_SgElementwiseSubtractOp) { visitDefault(variable_SgElementwiseSubtractOp); }
333008  virtual void visit(SgMatrixTransposeOp *variable_SgMatrixTransposeOp) { visitDefault(variable_SgMatrixTransposeOp); }
333009  virtual void visit(SgElementwiseOp *variable_SgElementwiseOp) { visitDefault(variable_SgElementwiseOp); }
333010  virtual void visit(SgInitializer *variable_SgInitializer) { visitDefault(variable_SgInitializer); }
333011  virtual void visit(SgSIMDLoad *variable_SgSIMDLoad) { visitDefault(variable_SgSIMDLoad); }
333012  virtual void visit(SgSIMDBroadcast *variable_SgSIMDBroadcast) { visitDefault(variable_SgSIMDBroadcast); }
333013  virtual void visit(SgSIMDStore *variable_SgSIMDStore) { visitDefault(variable_SgSIMDStore); }
333014  virtual void visit(SgSIMDPartialStore *variable_SgSIMDPartialStore) { visitDefault(variable_SgSIMDPartialStore); }
333015  virtual void visit(SgSIMDScalarStore *variable_SgSIMDScalarStore) { visitDefault(variable_SgSIMDScalarStore); }
333016  virtual void visit(SgSIMDGather *variable_SgSIMDGather) { visitDefault(variable_SgSIMDGather); }
333017  virtual void visit(SgSIMDExplicitGather *variable_SgSIMDExplicitGather) { visitDefault(variable_SgSIMDExplicitGather); }
333018  virtual void visit(SgSIMDScatter *variable_SgSIMDScatter) { visitDefault(variable_SgSIMDScatter); }
333019  virtual void visit(SgSIMDAddOp *variable_SgSIMDAddOp) { visitDefault(variable_SgSIMDAddOp); }
333020  virtual void visit(SgSIMDSubOp *variable_SgSIMDSubOp) { visitDefault(variable_SgSIMDSubOp); }
333021  virtual void visit(SgSIMDMulOp *variable_SgSIMDMulOp) { visitDefault(variable_SgSIMDMulOp); }
333022  virtual void visit(SgSIMDDivOp *variable_SgSIMDDivOp) { visitDefault(variable_SgSIMDDivOp); }
333023  virtual void visit(SgSIMDFmaOp *variable_SgSIMDFmaOp) { visitDefault(variable_SgSIMDFmaOp); }
333024  virtual void visit(SgSIMDBinaryOp *variable_SgSIMDBinaryOp) { visitDefault(variable_SgSIMDBinaryOp); }
333025  virtual void visit(SgUserDefinedUnaryOp *variable_SgUserDefinedUnaryOp) { visitDefault(variable_SgUserDefinedUnaryOp); }
333026  virtual void visit(SgPseudoDestructorRefExp *variable_SgPseudoDestructorRefExp) { visitDefault(variable_SgPseudoDestructorRefExp); }
333027  virtual void visit(SgUnaryOp *variable_SgUnaryOp) { visitDefault(variable_SgUnaryOp); }
333028  virtual void visit(SgCompoundAssignOp *variable_SgCompoundAssignOp) { visitDefault(variable_SgCompoundAssignOp); }
333029  virtual void visit(SgBinaryOp *variable_SgBinaryOp) { visitDefault(variable_SgBinaryOp); }
333030  virtual void visit(SgNaryOp *variable_SgNaryOp) { visitDefault(variable_SgNaryOp); }
333031  virtual void visit(SgValueExp *variable_SgValueExp) { visitDefault(variable_SgValueExp); }
333032  virtual void visit(SgExprListExp *variable_SgExprListExp) { visitDefault(variable_SgExprListExp); }
333033  virtual void visit(SgFunctionCallExp *variable_SgFunctionCallExp) { visitDefault(variable_SgFunctionCallExp); }
333034  virtual void visit(SgCallExpression *variable_SgCallExpression) { visitDefault(variable_SgCallExpression); }
333035  virtual void visit(SgTypeTraitBuiltinOperator *variable_SgTypeTraitBuiltinOperator) { visitDefault(variable_SgTypeTraitBuiltinOperator); }
333036  virtual void visit(SgExpression *variable_SgExpression) { visitDefault(variable_SgExpression); }
333037  virtual void visit(SgTemplateVariableSymbol *variable_SgTemplateVariableSymbol) { visitDefault(variable_SgTemplateVariableSymbol); }
333038  virtual void visit(SgVariableSymbol *variable_SgVariableSymbol) { visitDefault(variable_SgVariableSymbol); }
333039  virtual void visit(SgFunctionTypeSymbol *variable_SgFunctionTypeSymbol) { visitDefault(variable_SgFunctionTypeSymbol); }
333040  virtual void visit(SgTemplateClassSymbol *variable_SgTemplateClassSymbol) { visitDefault(variable_SgTemplateClassSymbol); }
333041  virtual void visit(SgClassSymbol *variable_SgClassSymbol) { visitDefault(variable_SgClassSymbol); }
333042  virtual void visit(SgTemplateSymbol *variable_SgTemplateSymbol) { visitDefault(variable_SgTemplateSymbol); }
333043  virtual void visit(SgEnumSymbol *variable_SgEnumSymbol) { visitDefault(variable_SgEnumSymbol); }
333044  virtual void visit(SgEnumFieldSymbol *variable_SgEnumFieldSymbol) { visitDefault(variable_SgEnumFieldSymbol); }
333045  virtual void visit(SgTemplateTypedefSymbol *variable_SgTemplateTypedefSymbol) { visitDefault(variable_SgTemplateTypedefSymbol); }
333046  virtual void visit(SgTypedefSymbol *variable_SgTypedefSymbol) { visitDefault(variable_SgTypedefSymbol); }
333047  virtual void visit(SgTemplateFunctionSymbol *variable_SgTemplateFunctionSymbol) { visitDefault(variable_SgTemplateFunctionSymbol); }
333048  virtual void visit(SgTemplateMemberFunctionSymbol *variable_SgTemplateMemberFunctionSymbol) { visitDefault(variable_SgTemplateMemberFunctionSymbol); }
333049  virtual void visit(SgLabelSymbol *variable_SgLabelSymbol) { visitDefault(variable_SgLabelSymbol); }
333050  virtual void visit(SgDefaultSymbol *variable_SgDefaultSymbol) { visitDefault(variable_SgDefaultSymbol); }
333051  virtual void visit(SgNamespaceSymbol *variable_SgNamespaceSymbol) { visitDefault(variable_SgNamespaceSymbol); }
333052  virtual void visit(SgIntrinsicSymbol *variable_SgIntrinsicSymbol) { visitDefault(variable_SgIntrinsicSymbol); }
333053  virtual void visit(SgModuleSymbol *variable_SgModuleSymbol) { visitDefault(variable_SgModuleSymbol); }
333054  virtual void visit(SgInterfaceSymbol *variable_SgInterfaceSymbol) { visitDefault(variable_SgInterfaceSymbol); }
333055  virtual void visit(SgCommonSymbol *variable_SgCommonSymbol) { visitDefault(variable_SgCommonSymbol); }
333056  virtual void visit(SgRenameSymbol *variable_SgRenameSymbol) { visitDefault(variable_SgRenameSymbol); }
333057  virtual void visit(SgMemberFunctionSymbol *variable_SgMemberFunctionSymbol) { visitDefault(variable_SgMemberFunctionSymbol); }
333058  virtual void visit(SgFunctionSymbol *variable_SgFunctionSymbol) { visitDefault(variable_SgFunctionSymbol); }
333059  virtual void visit(SgAliasSymbol *variable_SgAliasSymbol) { visitDefault(variable_SgAliasSymbol); }
333060  virtual void visit(SgNonrealSymbol *variable_SgNonrealSymbol) { visitDefault(variable_SgNonrealSymbol); }
333061  virtual void visit(SgSymbol *variable_SgSymbol) { visitDefault(variable_SgSymbol); }
333062  virtual void visit(SgCommonBlockObject *variable_SgCommonBlockObject) { visitDefault(variable_SgCommonBlockObject); }
333063  virtual void visit(SgInitializedName *variable_SgInitializedName) { visitDefault(variable_SgInitializedName); }
333064  virtual void visit(SgLambdaCapture *variable_SgLambdaCapture) { visitDefault(variable_SgLambdaCapture); }
333065  virtual void visit(SgLambdaCaptureList *variable_SgLambdaCaptureList) { visitDefault(variable_SgLambdaCaptureList); }
333066  virtual void visit(SgOmpOrderedClause *variable_SgOmpOrderedClause) { visitDefault(variable_SgOmpOrderedClause); }
333067  virtual void visit(SgOmpNowaitClause *variable_SgOmpNowaitClause) { visitDefault(variable_SgOmpNowaitClause); }
333068  virtual void visit(SgOmpNogroupClause *variable_SgOmpNogroupClause) { visitDefault(variable_SgOmpNogroupClause); }
333069  virtual void visit(SgOmpReadClause *variable_SgOmpReadClause) { visitDefault(variable_SgOmpReadClause); }
333070  virtual void visit(SgOmpThreadsClause *variable_SgOmpThreadsClause) { visitDefault(variable_SgOmpThreadsClause); }
333071  virtual void visit(SgOmpSimdClause *variable_SgOmpSimdClause) { visitDefault(variable_SgOmpSimdClause); }
333072  virtual void visit(SgOmpReverseOffloadClause *variable_SgOmpReverseOffloadClause) { visitDefault(variable_SgOmpReverseOffloadClause); }
333073  virtual void visit(SgOmpExtImplementationDefinedRequirementClause *variable_SgOmpExtImplementationDefinedRequirementClause) { visitDefault(variable_SgOmpExtImplementationDefinedRequirementClause); }
333074  virtual void visit(SgOmpUnifiedAddressClause *variable_SgOmpUnifiedAddressClause) { visitDefault(variable_SgOmpUnifiedAddressClause); }
333075  virtual void visit(SgOmpUnifiedSharedMemoryClause *variable_SgOmpUnifiedSharedMemoryClause) { visitDefault(variable_SgOmpUnifiedSharedMemoryClause); }
333076  virtual void visit(SgOmpDynamicAllocatorsClause *variable_SgOmpDynamicAllocatorsClause) { visitDefault(variable_SgOmpDynamicAllocatorsClause); }
333077  virtual void visit(SgOmpAtomicDefaultMemOrderClause *variable_SgOmpAtomicDefaultMemOrderClause) { visitDefault(variable_SgOmpAtomicDefaultMemOrderClause); }
333078  virtual void visit(SgOmpWriteClause *variable_SgOmpWriteClause) { visitDefault(variable_SgOmpWriteClause); }
333079  virtual void visit(SgOmpUpdateClause *variable_SgOmpUpdateClause) { visitDefault(variable_SgOmpUpdateClause); }
333080  virtual void visit(SgOmpDepobjUpdateClause *variable_SgOmpDepobjUpdateClause) { visitDefault(variable_SgOmpDepobjUpdateClause); }
333081  virtual void visit(SgOmpDestroyClause *variable_SgOmpDestroyClause) { visitDefault(variable_SgOmpDestroyClause); }
333082  virtual void visit(SgOmpCaptureClause *variable_SgOmpCaptureClause) { visitDefault(variable_SgOmpCaptureClause); }
333083  virtual void visit(SgOmpSeqCstClause *variable_SgOmpSeqCstClause) { visitDefault(variable_SgOmpSeqCstClause); }
333084  virtual void visit(SgOmpAcqRelClause *variable_SgOmpAcqRelClause) { visitDefault(variable_SgOmpAcqRelClause); }
333085  virtual void visit(SgOmpReleaseClause *variable_SgOmpReleaseClause) { visitDefault(variable_SgOmpReleaseClause); }
333086  virtual void visit(SgOmpAcquireClause *variable_SgOmpAcquireClause) { visitDefault(variable_SgOmpAcquireClause); }
333087  virtual void visit(SgOmpRelaxedClause *variable_SgOmpRelaxedClause) { visitDefault(variable_SgOmpRelaxedClause); }
333088  virtual void visit(SgOmpParallelClause *variable_SgOmpParallelClause) { visitDefault(variable_SgOmpParallelClause); }
333089  virtual void visit(SgOmpSectionsClause *variable_SgOmpSectionsClause) { visitDefault(variable_SgOmpSectionsClause); }
333090  virtual void visit(SgOmpForClause *variable_SgOmpForClause) { visitDefault(variable_SgOmpForClause); }
333091  virtual void visit(SgOmpTaskgroupClause *variable_SgOmpTaskgroupClause) { visitDefault(variable_SgOmpTaskgroupClause); }
333092  virtual void visit(SgOmpBeginClause *variable_SgOmpBeginClause) { visitDefault(variable_SgOmpBeginClause); }
333093  virtual void visit(SgOmpEndClause *variable_SgOmpEndClause) { visitDefault(variable_SgOmpEndClause); }
333094  virtual void visit(SgOmpUntiedClause *variable_SgOmpUntiedClause) { visitDefault(variable_SgOmpUntiedClause); }
333095  virtual void visit(SgOmpMergeableClause *variable_SgOmpMergeableClause) { visitDefault(variable_SgOmpMergeableClause); }
333096  virtual void visit(SgOmpDefaultClause *variable_SgOmpDefaultClause) { visitDefault(variable_SgOmpDefaultClause); }
333097  virtual void visit(SgOmpAtomicClause *variable_SgOmpAtomicClause) { visitDefault(variable_SgOmpAtomicClause); }
333098  virtual void visit(SgOmpProcBindClause *variable_SgOmpProcBindClause) { visitDefault(variable_SgOmpProcBindClause); }
333099  virtual void visit(SgOmpOrderClause *variable_SgOmpOrderClause) { visitDefault(variable_SgOmpOrderClause); }
333100  virtual void visit(SgOmpBindClause *variable_SgOmpBindClause) { visitDefault(variable_SgOmpBindClause); }
333101  virtual void visit(SgOmpInbranchClause *variable_SgOmpInbranchClause) { visitDefault(variable_SgOmpInbranchClause); }
333102  virtual void visit(SgOmpNotinbranchClause *variable_SgOmpNotinbranchClause) { visitDefault(variable_SgOmpNotinbranchClause); }
333103  virtual void visit(SgOmpCollapseClause *variable_SgOmpCollapseClause) { visitDefault(variable_SgOmpCollapseClause); }
333104  virtual void visit(SgOmpIfClause *variable_SgOmpIfClause) { visitDefault(variable_SgOmpIfClause); }
333105  virtual void visit(SgOmpFinalClause *variable_SgOmpFinalClause) { visitDefault(variable_SgOmpFinalClause); }
333106  virtual void visit(SgOmpPriorityClause *variable_SgOmpPriorityClause) { visitDefault(variable_SgOmpPriorityClause); }
333107  virtual void visit(SgUpirNumUnitsField *variable_SgUpirNumUnitsField) { visitDefault(variable_SgUpirNumUnitsField); }
333108  virtual void visit(SgOmpNumTeamsClause *variable_SgOmpNumTeamsClause) { visitDefault(variable_SgOmpNumTeamsClause); }
333109  virtual void visit(SgOmpGrainsizeClause *variable_SgOmpGrainsizeClause) { visitDefault(variable_SgOmpGrainsizeClause); }
333110  virtual void visit(SgOmpDetachClause *variable_SgOmpDetachClause) { visitDefault(variable_SgOmpDetachClause); }
333111  virtual void visit(SgOmpNumTasksClause *variable_SgOmpNumTasksClause) { visitDefault(variable_SgOmpNumTasksClause); }
333112  virtual void visit(SgOmpHintClause *variable_SgOmpHintClause) { visitDefault(variable_SgOmpHintClause); }
333113  virtual void visit(SgOmpThreadLimitClause *variable_SgOmpThreadLimitClause) { visitDefault(variable_SgOmpThreadLimitClause); }
333114  virtual void visit(SgOmpNontemporalClause *variable_SgOmpNontemporalClause) { visitDefault(variable_SgOmpNontemporalClause); }
333115  virtual void visit(SgOmpInclusiveClause *variable_SgOmpInclusiveClause) { visitDefault(variable_SgOmpInclusiveClause); }
333116  virtual void visit(SgOmpExclusiveClause *variable_SgOmpExclusiveClause) { visitDefault(variable_SgOmpExclusiveClause); }
333117  virtual void visit(SgOmpIsDevicePtrClause *variable_SgOmpIsDevicePtrClause) { visitDefault(variable_SgOmpIsDevicePtrClause); }
333118  virtual void visit(SgOmpUseDevicePtrClause *variable_SgOmpUseDevicePtrClause) { visitDefault(variable_SgOmpUseDevicePtrClause); }
333119  virtual void visit(SgOmpUseDeviceAddrClause *variable_SgOmpUseDeviceAddrClause) { visitDefault(variable_SgOmpUseDeviceAddrClause); }
333120  virtual void visit(SgOmpDeviceClause *variable_SgOmpDeviceClause) { visitDefault(variable_SgOmpDeviceClause); }
333121  virtual void visit(SgOmpSafelenClause *variable_SgOmpSafelenClause) { visitDefault(variable_SgOmpSafelenClause); }
333122  virtual void visit(SgOmpSimdlenClause *variable_SgOmpSimdlenClause) { visitDefault(variable_SgOmpSimdlenClause); }
333123  virtual void visit(SgOmpPartialClause *variable_SgOmpPartialClause) { visitDefault(variable_SgOmpPartialClause); }
333124  virtual void visit(SgOmpFullClause *variable_SgOmpFullClause) { visitDefault(variable_SgOmpFullClause); }
333125  virtual void visit(SgOmpSizesClause *variable_SgOmpSizesClause) { visitDefault(variable_SgOmpSizesClause); }
333126  virtual void visit(SgUpirBranchField *variable_SgUpirBranchField) { visitDefault(variable_SgUpirBranchField); }
333127  virtual void visit(SgUpirNestedLevelField *variable_SgUpirNestedLevelField) { visitDefault(variable_SgUpirNestedLevelField); }
333128  virtual void visit(SgUpirNestedParentField *variable_SgUpirNestedParentField) { visitDefault(variable_SgUpirNestedParentField); }
333129  virtual void visit(SgUpirNestedChildField *variable_SgUpirNestedChildField) { visitDefault(variable_SgUpirNestedChildField); }
333130  virtual void visit(SgUpirSyncField *variable_SgUpirSyncField) { visitDefault(variable_SgUpirSyncField); }
333131  virtual void visit(SgUpirDataField *variable_SgUpirDataField) { visitDefault(variable_SgUpirDataField); }
333132  virtual void visit(SgUpirTargetField *variable_SgUpirTargetField) { visitDefault(variable_SgUpirTargetField); }
333133  virtual void visit(SgUpirDataItemField *variable_SgUpirDataItemField) { visitDefault(variable_SgUpirDataItemField); }
333134  virtual void visit(SgOmpExpressionClause *variable_SgOmpExpressionClause) { visitDefault(variable_SgOmpExpressionClause); }
333135  virtual void visit(SgOmpCopyprivateClause *variable_SgOmpCopyprivateClause) { visitDefault(variable_SgOmpCopyprivateClause); }
333136  virtual void visit(SgOmpPrivateClause *variable_SgOmpPrivateClause) { visitDefault(variable_SgOmpPrivateClause); }
333137  virtual void visit(SgOmpFirstprivateClause *variable_SgOmpFirstprivateClause) { visitDefault(variable_SgOmpFirstprivateClause); }
333138  virtual void visit(SgOmpSharedClause *variable_SgOmpSharedClause) { visitDefault(variable_SgOmpSharedClause); }
333139  virtual void visit(SgOmpCopyinClause *variable_SgOmpCopyinClause) { visitDefault(variable_SgOmpCopyinClause); }
333140  virtual void visit(SgOmpLastprivateClause *variable_SgOmpLastprivateClause) { visitDefault(variable_SgOmpLastprivateClause); }
333141  virtual void visit(SgOmpReductionClause *variable_SgOmpReductionClause) { visitDefault(variable_SgOmpReductionClause); }
333142  virtual void visit(SgOmpInReductionClause *variable_SgOmpInReductionClause) { visitDefault(variable_SgOmpInReductionClause); }
333143  virtual void visit(SgOmpTaskReductionClause *variable_SgOmpTaskReductionClause) { visitDefault(variable_SgOmpTaskReductionClause); }
333144  virtual void visit(SgOmpAllocateClause *variable_SgOmpAllocateClause) { visitDefault(variable_SgOmpAllocateClause); }
333145  virtual void visit(SgOmpDependClause *variable_SgOmpDependClause) { visitDefault(variable_SgOmpDependClause); }
333146  virtual void visit(SgOmpToClause *variable_SgOmpToClause) { visitDefault(variable_SgOmpToClause); }
333147  virtual void visit(SgOmpUsesAllocatorsClause *variable_SgOmpUsesAllocatorsClause) { visitDefault(variable_SgOmpUsesAllocatorsClause); }
333148  virtual void visit(SgOmpFromClause *variable_SgOmpFromClause) { visitDefault(variable_SgOmpFromClause); }
333149  virtual void visit(SgOmpAffinityClause *variable_SgOmpAffinityClause) { visitDefault(variable_SgOmpAffinityClause); }
333150  virtual void visit(SgOmpMapClause *variable_SgOmpMapClause) { visitDefault(variable_SgOmpMapClause); }
333151  virtual void visit(SgOmpLinearClause *variable_SgOmpLinearClause) { visitDefault(variable_SgOmpLinearClause); }
333152  virtual void visit(SgOmpUniformClause *variable_SgOmpUniformClause) { visitDefault(variable_SgOmpUniformClause); }
333153  virtual void visit(SgOmpAlignedClause *variable_SgOmpAlignedClause) { visitDefault(variable_SgOmpAlignedClause); }
333154  virtual void visit(SgOmpVariablesClause *variable_SgOmpVariablesClause) { visitDefault(variable_SgOmpVariablesClause); }
333155  virtual void visit(SgOmpScheduleClause *variable_SgOmpScheduleClause) { visitDefault(variable_SgOmpScheduleClause); }
333156  virtual void visit(SgOmpWhenClause *variable_SgOmpWhenClause) { visitDefault(variable_SgOmpWhenClause); }
333157  virtual void visit(SgOmpDistScheduleClause *variable_SgOmpDistScheduleClause) { visitDefault(variable_SgOmpDistScheduleClause); }
333158  virtual void visit(SgOmpDefaultmapClause *variable_SgOmpDefaultmapClause) { visitDefault(variable_SgOmpDefaultmapClause); }
333159  virtual void visit(SgOmpAllocatorClause *variable_SgOmpAllocatorClause) { visitDefault(variable_SgOmpAllocatorClause); }
333160  virtual void visit(SgOmpUsesAllocatorsDefination *variable_SgOmpUsesAllocatorsDefination) { visitDefault(variable_SgOmpUsesAllocatorsDefination); }
333161  virtual void visit(SgOmpClause *variable_SgOmpClause) { visitDefault(variable_SgOmpClause); }
333162  virtual void visit(SgRenamePair *variable_SgRenamePair) { visitDefault(variable_SgRenamePair); }
333163  virtual void visit(SgInterfaceBody *variable_SgInterfaceBody) { visitDefault(variable_SgInterfaceBody); }
333164  virtual void visit(SgHeaderFileBody *variable_SgHeaderFileBody) { visitDefault(variable_SgHeaderFileBody); }
333165  virtual void visit(SgLocatedNodeSupport *variable_SgLocatedNodeSupport) { visitDefault(variable_SgLocatedNodeSupport); }
333166  virtual void visit(SgToken *variable_SgToken) { visitDefault(variable_SgToken); }
333167  virtual void visit(SgLocatedNode *variable_SgLocatedNode) { visitDefault(variable_SgLocatedNode); }
333168  virtual void visit(SgNode *variable_SgNode) { visitDefault(variable_SgNode); }
333169  virtual void visitDefault(SgNode*) {}
333170 };
333171 
333173 public:
333174  void visit(SgName *variable_SgName) { visit(static_cast<SgName::base_node_type *>(variable_SgName)); }
333175  void visit(SgSymbolTable *variable_SgSymbolTable) { visit(static_cast<SgSymbolTable::base_node_type *>(variable_SgSymbolTable)); }
333176  void visit(SgPragma *variable_SgPragma) { visit(static_cast<SgPragma::base_node_type *>(variable_SgPragma)); }
333177  void visit(SgModifierNodes *variable_SgModifierNodes) { visit(static_cast<SgModifierNodes::base_node_type *>(variable_SgModifierNodes)); }
333178  void visit(SgConstVolatileModifier *variable_SgConstVolatileModifier) { visit(static_cast<SgConstVolatileModifier::base_node_type *>(variable_SgConstVolatileModifier)); }
333179  void visit(SgStorageModifier *variable_SgStorageModifier) { visit(static_cast<SgStorageModifier::base_node_type *>(variable_SgStorageModifier)); }
333180  void visit(SgAccessModifier *variable_SgAccessModifier) { visit(static_cast<SgAccessModifier::base_node_type *>(variable_SgAccessModifier)); }
333181  void visit(SgFunctionModifier *variable_SgFunctionModifier) { visit(static_cast<SgFunctionModifier::base_node_type *>(variable_SgFunctionModifier)); }
333182  void visit(SgUPC_AccessModifier *variable_SgUPC_AccessModifier) { visit(static_cast<SgUPC_AccessModifier::base_node_type *>(variable_SgUPC_AccessModifier)); }
333183  void visit(SgLinkageModifier *variable_SgLinkageModifier) { visit(static_cast<SgLinkageModifier::base_node_type *>(variable_SgLinkageModifier)); }
333184  void visit(SgSpecialFunctionModifier *variable_SgSpecialFunctionModifier) { visit(static_cast<SgSpecialFunctionModifier::base_node_type *>(variable_SgSpecialFunctionModifier)); }
333185  void visit(SgTypeModifier *variable_SgTypeModifier) { visit(static_cast<SgTypeModifier::base_node_type *>(variable_SgTypeModifier)); }
333186  void visit(SgElaboratedTypeModifier *variable_SgElaboratedTypeModifier) { visit(static_cast<SgElaboratedTypeModifier::base_node_type *>(variable_SgElaboratedTypeModifier)); }
333187  void visit(SgBaseClassModifier *variable_SgBaseClassModifier) { visit(static_cast<SgBaseClassModifier::base_node_type *>(variable_SgBaseClassModifier)); }
333188  void visit(SgDeclarationModifier *variable_SgDeclarationModifier) { visit(static_cast<SgDeclarationModifier::base_node_type *>(variable_SgDeclarationModifier)); }
333189  void visit(SgStructureModifier *variable_SgStructureModifier) { visit(static_cast<SgStructureModifier::base_node_type *>(variable_SgStructureModifier)); }
333190  void visit(SgOpenclAccessModeModifier *variable_SgOpenclAccessModeModifier) { visit(static_cast<SgOpenclAccessModeModifier::base_node_type *>(variable_SgOpenclAccessModeModifier)); }
333191  void visit(SgModifier *variable_SgModifier) { visit(static_cast<SgModifier::base_node_type *>(variable_SgModifier)); }
333192  void visit(Sg_File_Info *variable_Sg_File_Info) { visit(static_cast<Sg_File_Info::base_node_type *>(variable_Sg_File_Info)); }
333193  void visit(SgSourceFile *variable_SgSourceFile) { visit(static_cast<SgSourceFile::base_node_type *>(variable_SgSourceFile)); }
333194  void visit(SgUnknownFile *variable_SgUnknownFile) { visit(static_cast<SgUnknownFile::base_node_type *>(variable_SgUnknownFile)); }
333195  void visit(SgFile *variable_SgFile) { visit(static_cast<SgFile::base_node_type *>(variable_SgFile)); }
333196  void visit(SgFileList *variable_SgFileList) { visit(static_cast<SgFileList::base_node_type *>(variable_SgFileList)); }
333197  void visit(SgDirectory *variable_SgDirectory) { visit(static_cast<SgDirectory::base_node_type *>(variable_SgDirectory)); }
333198  void visit(SgDirectoryList *variable_SgDirectoryList) { visit(static_cast<SgDirectoryList::base_node_type *>(variable_SgDirectoryList)); }
333199  void visit(SgProject *variable_SgProject) { visit(static_cast<SgProject::base_node_type *>(variable_SgProject)); }
333200  void visit(SgOptions *variable_SgOptions) { visit(static_cast<SgOptions::base_node_type *>(variable_SgOptions)); }
333201  void visit(SgUnparse_Info *variable_SgUnparse_Info) { visit(static_cast<SgUnparse_Info::base_node_type *>(variable_SgUnparse_Info)); }
333202  void visit(SgIncludeFile *variable_SgIncludeFile) { visit(static_cast<SgIncludeFile::base_node_type *>(variable_SgIncludeFile)); }
333203  void visit(SgFuncDecl_attr *variable_SgFuncDecl_attr) { visit(static_cast<SgFuncDecl_attr::base_node_type *>(variable_SgFuncDecl_attr)); }
333204  void visit(SgClassDecl_attr *variable_SgClassDecl_attr) { visit(static_cast<SgClassDecl_attr::base_node_type *>(variable_SgClassDecl_attr)); }
333205  void visit(SgTypedefSeq *variable_SgTypedefSeq) { visit(static_cast<SgTypedefSeq::base_node_type *>(variable_SgTypedefSeq)); }
333206  void visit(SgFunctionParameterTypeList *variable_SgFunctionParameterTypeList) { visit(static_cast<SgFunctionParameterTypeList::base_node_type *>(variable_SgFunctionParameterTypeList)); }
333207  void visit(SgTemplateParameter *variable_SgTemplateParameter) { visit(static_cast<SgTemplateParameter::base_node_type *>(variable_SgTemplateParameter)); }
333208  void visit(SgTemplateArgument *variable_SgTemplateArgument) { visit(static_cast<SgTemplateArgument::base_node_type *>(variable_SgTemplateArgument)); }
333209  void visit(SgTemplateParameterList *variable_SgTemplateParameterList) { visit(static_cast<SgTemplateParameterList::base_node_type *>(variable_SgTemplateParameterList)); }
333210  void visit(SgTemplateArgumentList *variable_SgTemplateArgumentList) { visit(static_cast<SgTemplateArgumentList::base_node_type *>(variable_SgTemplateArgumentList)); }
333211  void visit(SgBitAttribute *variable_SgBitAttribute) { visit(static_cast<SgBitAttribute::base_node_type *>(variable_SgBitAttribute)); }
333212  void visit(SgAttribute *variable_SgAttribute) { visit(static_cast<SgAttribute::base_node_type *>(variable_SgAttribute)); }
333213  void visit(SgExpBaseClass *variable_SgExpBaseClass) { visit(static_cast<SgExpBaseClass::base_node_type *>(variable_SgExpBaseClass)); }
333214  void visit(SgNonrealBaseClass *variable_SgNonrealBaseClass) { visit(static_cast<SgNonrealBaseClass::base_node_type *>(variable_SgNonrealBaseClass)); }
333215  void visit(SgBaseClass *variable_SgBaseClass) { visit(static_cast<SgBaseClass::base_node_type *>(variable_SgBaseClass)); }
333216  void visit(SgUndirectedGraphEdge *variable_SgUndirectedGraphEdge) { visit(static_cast<SgUndirectedGraphEdge::base_node_type *>(variable_SgUndirectedGraphEdge)); }
333217  void visit(SgDirectedGraphEdge *variable_SgDirectedGraphEdge) { visit(static_cast<SgDirectedGraphEdge::base_node_type *>(variable_SgDirectedGraphEdge)); }
333218  void visit(SgGraphNode *variable_SgGraphNode) { visit(static_cast<SgGraphNode::base_node_type *>(variable_SgGraphNode)); }
333219  void visit(SgGraphEdge *variable_SgGraphEdge) { visit(static_cast<SgGraphEdge::base_node_type *>(variable_SgGraphEdge)); }
333220  void visit(SgStringKeyedBidirectionalGraph *variable_SgStringKeyedBidirectionalGraph) { visit(static_cast<SgStringKeyedBidirectionalGraph::base_node_type *>(variable_SgStringKeyedBidirectionalGraph)); }
333221  void visit(SgIntKeyedBidirectionalGraph *variable_SgIntKeyedBidirectionalGraph) { visit(static_cast<SgIntKeyedBidirectionalGraph::base_node_type *>(variable_SgIntKeyedBidirectionalGraph)); }
333222  void visit(SgBidirectionalGraph *variable_SgBidirectionalGraph) { visit(static_cast<SgBidirectionalGraph::base_node_type *>(variable_SgBidirectionalGraph)); }
333223  void visit(SgIncidenceDirectedGraph *variable_SgIncidenceDirectedGraph) { visit(static_cast<SgIncidenceDirectedGraph::base_node_type *>(variable_SgIncidenceDirectedGraph)); }
333224  void visit(SgIncidenceUndirectedGraph *variable_SgIncidenceUndirectedGraph) { visit(static_cast<SgIncidenceUndirectedGraph::base_node_type *>(variable_SgIncidenceUndirectedGraph)); }
333225  void visit(SgGraph *variable_SgGraph) { visit(static_cast<SgGraph::base_node_type *>(variable_SgGraph)); }
333226  void visit(SgGraphNodeList *variable_SgGraphNodeList) { visit(static_cast<SgGraphNodeList::base_node_type *>(variable_SgGraphNodeList)); }
333227  void visit(SgGraphEdgeList *variable_SgGraphEdgeList) { visit(static_cast<SgGraphEdgeList::base_node_type *>(variable_SgGraphEdgeList)); }
333228  void visit(SgQualifiedName *variable_SgQualifiedName) { visit(static_cast<SgQualifiedName::base_node_type *>(variable_SgQualifiedName)); }
333229  void visit(SgNameGroup *variable_SgNameGroup) { visit(static_cast<SgNameGroup::base_node_type *>(variable_SgNameGroup)); }
333230  void visit(SgDimensionObject *variable_SgDimensionObject) { visit(static_cast<SgDimensionObject::base_node_type *>(variable_SgDimensionObject)); }
333231  void visit(SgDataStatementGroup *variable_SgDataStatementGroup) { visit(static_cast<SgDataStatementGroup::base_node_type *>(variable_SgDataStatementGroup)); }
333232  void visit(SgDataStatementObject *variable_SgDataStatementObject) { visit(static_cast<SgDataStatementObject::base_node_type *>(variable_SgDataStatementObject)); }
333233  void visit(SgDataStatementValue *variable_SgDataStatementValue) { visit(static_cast<SgDataStatementValue::base_node_type *>(variable_SgDataStatementValue)); }
333234  void visit(SgFormatItem *variable_SgFormatItem) { visit(static_cast<SgFormatItem::base_node_type *>(variable_SgFormatItem)); }
333235  void visit(SgFormatItemList *variable_SgFormatItemList) { visit(static_cast<SgFormatItemList::base_node_type *>(variable_SgFormatItemList)); }
333236  void visit(SgTypeTable *variable_SgTypeTable) { visit(static_cast<SgTypeTable::base_node_type *>(variable_SgTypeTable)); }
333237  void visit(SgHeaderFileReport *variable_SgHeaderFileReport) { visit(static_cast<SgHeaderFileReport::base_node_type *>(variable_SgHeaderFileReport)); }
333238  void visit(SgSupport *variable_SgSupport) { visit(static_cast<SgSupport::base_node_type *>(variable_SgSupport)); }
333239  void visit(SgTypeUnknown *variable_SgTypeUnknown) { visit(static_cast<SgTypeUnknown::base_node_type *>(variable_SgTypeUnknown)); }
333240  void visit(SgTypeChar *variable_SgTypeChar) { visit(static_cast<SgTypeChar::base_node_type *>(variable_SgTypeChar)); }
333241  void visit(SgTypeSignedChar *variable_SgTypeSignedChar) { visit(static_cast<SgTypeSignedChar::base_node_type *>(variable_SgTypeSignedChar)); }
333242  void visit(SgTypeUnsignedChar *variable_SgTypeUnsignedChar) { visit(static_cast<SgTypeUnsignedChar::base_node_type *>(variable_SgTypeUnsignedChar)); }
333243  void visit(SgTypeShort *variable_SgTypeShort) { visit(static_cast<SgTypeShort::base_node_type *>(variable_SgTypeShort)); }
333244  void visit(SgTypeSignedShort *variable_SgTypeSignedShort) { visit(static_cast<SgTypeSignedShort::base_node_type *>(variable_SgTypeSignedShort)); }
333245  void visit(SgTypeUnsignedShort *variable_SgTypeUnsignedShort) { visit(static_cast<SgTypeUnsignedShort::base_node_type *>(variable_SgTypeUnsignedShort)); }
333246  void visit(SgTypeInt *variable_SgTypeInt) { visit(static_cast<SgTypeInt::base_node_type *>(variable_SgTypeInt)); }
333247  void visit(SgTypeSignedInt *variable_SgTypeSignedInt) { visit(static_cast<SgTypeSignedInt::base_node_type *>(variable_SgTypeSignedInt)); }
333248  void visit(SgTypeUnsignedInt *variable_SgTypeUnsignedInt) { visit(static_cast<SgTypeUnsignedInt::base_node_type *>(variable_SgTypeUnsignedInt)); }
333249  void visit(SgTypeLong *variable_SgTypeLong) { visit(static_cast<SgTypeLong::base_node_type *>(variable_SgTypeLong)); }
333250  void visit(SgTypeSignedLong *variable_SgTypeSignedLong) { visit(static_cast<SgTypeSignedLong::base_node_type *>(variable_SgTypeSignedLong)); }
333251  void visit(SgTypeUnsignedLong *variable_SgTypeUnsignedLong) { visit(static_cast<SgTypeUnsignedLong::base_node_type *>(variable_SgTypeUnsignedLong)); }
333252  void visit(SgTypeVoid *variable_SgTypeVoid) { visit(static_cast<SgTypeVoid::base_node_type *>(variable_SgTypeVoid)); }
333253  void visit(SgTypeGlobalVoid *variable_SgTypeGlobalVoid) { visit(static_cast<SgTypeGlobalVoid::base_node_type *>(variable_SgTypeGlobalVoid)); }
333254  void visit(SgTypeWchar *variable_SgTypeWchar) { visit(static_cast<SgTypeWchar::base_node_type *>(variable_SgTypeWchar)); }
333255  void visit(SgTypeFloat *variable_SgTypeFloat) { visit(static_cast<SgTypeFloat::base_node_type *>(variable_SgTypeFloat)); }
333256  void visit(SgTypeDouble *variable_SgTypeDouble) { visit(static_cast<SgTypeDouble::base_node_type *>(variable_SgTypeDouble)); }
333257  void visit(SgTypeLongLong *variable_SgTypeLongLong) { visit(static_cast<SgTypeLongLong::base_node_type *>(variable_SgTypeLongLong)); }
333258  void visit(SgTypeSignedLongLong *variable_SgTypeSignedLongLong) { visit(static_cast<SgTypeSignedLongLong::base_node_type *>(variable_SgTypeSignedLongLong)); }
333259  void visit(SgTypeUnsignedLongLong *variable_SgTypeUnsignedLongLong) { visit(static_cast<SgTypeUnsignedLongLong::base_node_type *>(variable_SgTypeUnsignedLongLong)); }
333260  void visit(SgTypeLongDouble *variable_SgTypeLongDouble) { visit(static_cast<SgTypeLongDouble::base_node_type *>(variable_SgTypeLongDouble)); }
333261  void visit(SgTypeFloat80 *variable_SgTypeFloat80) { visit(static_cast<SgTypeFloat80::base_node_type *>(variable_SgTypeFloat80)); }
333262  void visit(SgTypeFloat128 *variable_SgTypeFloat128) { visit(static_cast<SgTypeFloat128::base_node_type *>(variable_SgTypeFloat128)); }
333263  void visit(SgTypeString *variable_SgTypeString) { visit(static_cast<SgTypeString::base_node_type *>(variable_SgTypeString)); }
333264  void visit(SgTypeBool *variable_SgTypeBool) { visit(static_cast<SgTypeBool::base_node_type *>(variable_SgTypeBool)); }
333265  void visit(SgTypeFixed *variable_SgTypeFixed) { visit(static_cast<SgTypeFixed::base_node_type *>(variable_SgTypeFixed)); }
333266  void visit(SgTypeMatrix *variable_SgTypeMatrix) { visit(static_cast<SgTypeMatrix::base_node_type *>(variable_SgTypeMatrix)); }
333267  void visit(SgTypeTuple *variable_SgTypeTuple) { visit(static_cast<SgTypeTuple::base_node_type *>(variable_SgTypeTuple)); }
333268  void visit(SgTypeNullptr *variable_SgTypeNullptr) { visit(static_cast<SgTypeNullptr::base_node_type *>(variable_SgTypeNullptr)); }
333269  void visit(SgTypeComplex *variable_SgTypeComplex) { visit(static_cast<SgTypeComplex::base_node_type *>(variable_SgTypeComplex)); }
333270  void visit(SgTypeImaginary *variable_SgTypeImaginary) { visit(static_cast<SgTypeImaginary::base_node_type *>(variable_SgTypeImaginary)); }
333271  void visit(SgTypeDefault *variable_SgTypeDefault) { visit(static_cast<SgTypeDefault::base_node_type *>(variable_SgTypeDefault)); }
333272  void visit(SgPointerMemberType *variable_SgPointerMemberType) { visit(static_cast<SgPointerMemberType::base_node_type *>(variable_SgPointerMemberType)); }
333273  void visit(SgReferenceType *variable_SgReferenceType) { visit(static_cast<SgReferenceType::base_node_type *>(variable_SgReferenceType)); }
333274  void visit(SgRvalueReferenceType *variable_SgRvalueReferenceType) { visit(static_cast<SgRvalueReferenceType::base_node_type *>(variable_SgRvalueReferenceType)); }
333275  void visit(SgDeclType *variable_SgDeclType) { visit(static_cast<SgDeclType::base_node_type *>(variable_SgDeclType)); }
333276  void visit(SgTypeOfType *variable_SgTypeOfType) { visit(static_cast<SgTypeOfType::base_node_type *>(variable_SgTypeOfType)); }
333277  void visit(SgTypeCAFTeam *variable_SgTypeCAFTeam) { visit(static_cast<SgTypeCAFTeam::base_node_type *>(variable_SgTypeCAFTeam)); }
333278  void visit(SgTypeUnsigned128bitInteger *variable_SgTypeUnsigned128bitInteger) { visit(static_cast<SgTypeUnsigned128bitInteger::base_node_type *>(variable_SgTypeUnsigned128bitInteger)); }
333279  void visit(SgTypeSigned128bitInteger *variable_SgTypeSigned128bitInteger) { visit(static_cast<SgTypeSigned128bitInteger::base_node_type *>(variable_SgTypeSigned128bitInteger)); }
333280  void visit(SgTypeLabel *variable_SgTypeLabel) { visit(static_cast<SgTypeLabel::base_node_type *>(variable_SgTypeLabel)); }
333281  void visit(SgTemplateType *variable_SgTemplateType) { visit(static_cast<SgTemplateType::base_node_type *>(variable_SgTemplateType)); }
333282  void visit(SgEnumType *variable_SgEnumType) { visit(static_cast<SgEnumType::base_node_type *>(variable_SgEnumType)); }
333283  void visit(SgTypedefType *variable_SgTypedefType) { visit(static_cast<SgTypedefType::base_node_type *>(variable_SgTypedefType)); }
333284  void visit(SgNonrealType *variable_SgNonrealType) { visit(static_cast<SgNonrealType::base_node_type *>(variable_SgNonrealType)); }
333285  void visit(SgAutoType *variable_SgAutoType) { visit(static_cast<SgAutoType::base_node_type *>(variable_SgAutoType)); }
333286  void visit(SgModifierType *variable_SgModifierType) { visit(static_cast<SgModifierType::base_node_type *>(variable_SgModifierType)); }
333287  void visit(SgPartialFunctionModifierType *variable_SgPartialFunctionModifierType) { visit(static_cast<SgPartialFunctionModifierType::base_node_type *>(variable_SgPartialFunctionModifierType)); }
333288  void visit(SgArrayType *variable_SgArrayType) { visit(static_cast<SgArrayType::base_node_type *>(variable_SgArrayType)); }
333289  void visit(SgTypeEllipse *variable_SgTypeEllipse) { visit(static_cast<SgTypeEllipse::base_node_type *>(variable_SgTypeEllipse)); }
333290  void visit(SgTypeCrayPointer *variable_SgTypeCrayPointer) { visit(static_cast<SgTypeCrayPointer::base_node_type *>(variable_SgTypeCrayPointer)); }
333291  void visit(SgPartialFunctionType *variable_SgPartialFunctionType) { visit(static_cast<SgPartialFunctionType::base_node_type *>(variable_SgPartialFunctionType)); }
333292  void visit(SgMemberFunctionType *variable_SgMemberFunctionType) { visit(static_cast<SgMemberFunctionType::base_node_type *>(variable_SgMemberFunctionType)); }
333293  void visit(SgFunctionType *variable_SgFunctionType) { visit(static_cast<SgFunctionType::base_node_type *>(variable_SgFunctionType)); }
333294  void visit(SgPointerType *variable_SgPointerType) { visit(static_cast<SgPointerType::base_node_type *>(variable_SgPointerType)); }
333295  void visit(SgClassType *variable_SgClassType) { visit(static_cast<SgClassType::base_node_type *>(variable_SgClassType)); }
333296  void visit(SgNamedType *variable_SgNamedType) { visit(static_cast<SgNamedType::base_node_type *>(variable_SgNamedType)); }
333297  void visit(SgQualifiedNameType *variable_SgQualifiedNameType) { visit(static_cast<SgQualifiedNameType::base_node_type *>(variable_SgQualifiedNameType)); }
333298  void visit(SgTypeChar16 *variable_SgTypeChar16) { visit(static_cast<SgTypeChar16::base_node_type *>(variable_SgTypeChar16)); }
333299  void visit(SgTypeChar32 *variable_SgTypeChar32) { visit(static_cast<SgTypeChar32::base_node_type *>(variable_SgTypeChar32)); }
333300  void visit(SgType *variable_SgType) { visit(static_cast<SgType::base_node_type *>(variable_SgType)); }
333301  void visit(SgForStatement *variable_SgForStatement) { visit(static_cast<SgForStatement::base_node_type *>(variable_SgForStatement)); }
333302  void visit(SgForInitStatement *variable_SgForInitStatement) { visit(static_cast<SgForInitStatement::base_node_type *>(variable_SgForInitStatement)); }
333303  void visit(SgRangeBasedForStatement *variable_SgRangeBasedForStatement) { visit(static_cast<SgRangeBasedForStatement::base_node_type *>(variable_SgRangeBasedForStatement)); }
333304  void visit(SgCatchStatementSeq *variable_SgCatchStatementSeq) { visit(static_cast<SgCatchStatementSeq::base_node_type *>(variable_SgCatchStatementSeq)); }
333305  void visit(SgFunctionParameterList *variable_SgFunctionParameterList) { visit(static_cast<SgFunctionParameterList::base_node_type *>(variable_SgFunctionParameterList)); }
333306  void visit(SgCtorInitializerList *variable_SgCtorInitializerList) { visit(static_cast<SgCtorInitializerList::base_node_type *>(variable_SgCtorInitializerList)); }
333307  void visit(SgBasicBlock *variable_SgBasicBlock) { visit(static_cast<SgBasicBlock::base_node_type *>(variable_SgBasicBlock)); }
333308  void visit(SgGlobal *variable_SgGlobal) { visit(static_cast<SgGlobal::base_node_type *>(variable_SgGlobal)); }
333309  void visit(SgIfStmt *variable_SgIfStmt) { visit(static_cast<SgIfStmt::base_node_type *>(variable_SgIfStmt)); }
333310  void visit(SgWhileStmt *variable_SgWhileStmt) { visit(static_cast<SgWhileStmt::base_node_type *>(variable_SgWhileStmt)); }
333311  void visit(SgDoWhileStmt *variable_SgDoWhileStmt) { visit(static_cast<SgDoWhileStmt::base_node_type *>(variable_SgDoWhileStmt)); }
333312  void visit(SgSwitchStatement *variable_SgSwitchStatement) { visit(static_cast<SgSwitchStatement::base_node_type *>(variable_SgSwitchStatement)); }
333313  void visit(SgCatchOptionStmt *variable_SgCatchOptionStmt) { visit(static_cast<SgCatchOptionStmt::base_node_type *>(variable_SgCatchOptionStmt)); }
333314  void visit(SgFunctionParameterScope *variable_SgFunctionParameterScope) { visit(static_cast<SgFunctionParameterScope::base_node_type *>(variable_SgFunctionParameterScope)); }
333315  void visit(SgDeclarationScope *variable_SgDeclarationScope) { visit(static_cast<SgDeclarationScope::base_node_type *>(variable_SgDeclarationScope)); }
333316  void visit(SgVariableDefinition *variable_SgVariableDefinition) { visit(static_cast<SgVariableDefinition::base_node_type *>(variable_SgVariableDefinition)); }
333317  void visit(SgStmtDeclarationStatement *variable_SgStmtDeclarationStatement) { visit(static_cast<SgStmtDeclarationStatement::base_node_type *>(variable_SgStmtDeclarationStatement)); }
333318  void visit(SgEnumDeclaration *variable_SgEnumDeclaration) { visit(static_cast<SgEnumDeclaration::base_node_type *>(variable_SgEnumDeclaration)); }
333319  void visit(SgAsmStmt *variable_SgAsmStmt) { visit(static_cast<SgAsmStmt::base_node_type *>(variable_SgAsmStmt)); }
333320  void visit(SgFunctionTypeTable *variable_SgFunctionTypeTable) { visit(static_cast<SgFunctionTypeTable::base_node_type *>(variable_SgFunctionTypeTable)); }
333321  void visit(SgExprStatement *variable_SgExprStatement) { visit(static_cast<SgExprStatement::base_node_type *>(variable_SgExprStatement)); }
333322  void visit(SgLabelStatement *variable_SgLabelStatement) { visit(static_cast<SgLabelStatement::base_node_type *>(variable_SgLabelStatement)); }
333323  void visit(SgCaseOptionStmt *variable_SgCaseOptionStmt) { visit(static_cast<SgCaseOptionStmt::base_node_type *>(variable_SgCaseOptionStmt)); }
333324  void visit(SgTryStmt *variable_SgTryStmt) { visit(static_cast<SgTryStmt::base_node_type *>(variable_SgTryStmt)); }
333325  void visit(SgDefaultOptionStmt *variable_SgDefaultOptionStmt) { visit(static_cast<SgDefaultOptionStmt::base_node_type *>(variable_SgDefaultOptionStmt)); }
333326  void visit(SgBreakStmt *variable_SgBreakStmt) { visit(static_cast<SgBreakStmt::base_node_type *>(variable_SgBreakStmt)); }
333327  void visit(SgContinueStmt *variable_SgContinueStmt) { visit(static_cast<SgContinueStmt::base_node_type *>(variable_SgContinueStmt)); }
333328  void visit(SgReturnStmt *variable_SgReturnStmt) { visit(static_cast<SgReturnStmt::base_node_type *>(variable_SgReturnStmt)); }
333329  void visit(SgGotoStatement *variable_SgGotoStatement) { visit(static_cast<SgGotoStatement::base_node_type *>(variable_SgGotoStatement)); }
333330  void visit(SgSpawnStmt *variable_SgSpawnStmt) { visit(static_cast<SgSpawnStmt::base_node_type *>(variable_SgSpawnStmt)); }
333331  void visit(SgTemplateTypedefDeclaration *variable_SgTemplateTypedefDeclaration) { visit(static_cast<SgTemplateTypedefDeclaration::base_node_type *>(variable_SgTemplateTypedefDeclaration)); }
333332  void visit(SgTemplateInstantiationTypedefDeclaration *variable_SgTemplateInstantiationTypedefDeclaration) { visit(static_cast<SgTemplateInstantiationTypedefDeclaration::base_node_type *>(variable_SgTemplateInstantiationTypedefDeclaration)); }
333333  void visit(SgTypedefDeclaration *variable_SgTypedefDeclaration) { visit(static_cast<SgTypedefDeclaration::base_node_type *>(variable_SgTypedefDeclaration)); }
333334  void visit(SgNullStatement *variable_SgNullStatement) { visit(static_cast<SgNullStatement::base_node_type *>(variable_SgNullStatement)); }
333335  void visit(SgVariantStatement *variable_SgVariantStatement) { visit(static_cast<SgVariantStatement::base_node_type *>(variable_SgVariantStatement)); }
333336  void visit(SgPragmaDeclaration *variable_SgPragmaDeclaration) { visit(static_cast<SgPragmaDeclaration::base_node_type *>(variable_SgPragmaDeclaration)); }
333337  void visit(SgTemplateClassDeclaration *variable_SgTemplateClassDeclaration) { visit(static_cast<SgTemplateClassDeclaration::base_node_type *>(variable_SgTemplateClassDeclaration)); }
333338  void visit(SgTemplateMemberFunctionDeclaration *variable_SgTemplateMemberFunctionDeclaration) { visit(static_cast<SgTemplateMemberFunctionDeclaration::base_node_type *>(variable_SgTemplateMemberFunctionDeclaration)); }
333339  void visit(SgTemplateFunctionDeclaration *variable_SgTemplateFunctionDeclaration) { visit(static_cast<SgTemplateFunctionDeclaration::base_node_type *>(variable_SgTemplateFunctionDeclaration)); }
333340  void visit(SgTemplateVariableDeclaration *variable_SgTemplateVariableDeclaration) { visit(static_cast<SgTemplateVariableDeclaration::base_node_type *>(variable_SgTemplateVariableDeclaration)); }
333341  void visit(SgTemplateDeclaration *variable_SgTemplateDeclaration) { visit(static_cast<SgTemplateDeclaration::base_node_type *>(variable_SgTemplateDeclaration)); }
333342  void visit(SgVariableDeclaration *variable_SgVariableDeclaration) { visit(static_cast<SgVariableDeclaration::base_node_type *>(variable_SgVariableDeclaration)); }
333343  void visit(SgTemplateInstantiationDecl *variable_SgTemplateInstantiationDecl) { visit(static_cast<SgTemplateInstantiationDecl::base_node_type *>(variable_SgTemplateInstantiationDecl)); }
333344  void visit(SgTemplateInstantiationDefn *variable_SgTemplateInstantiationDefn) { visit(static_cast<SgTemplateInstantiationDefn::base_node_type *>(variable_SgTemplateInstantiationDefn)); }
333345  void visit(SgTemplateInstantiationFunctionDecl *variable_SgTemplateInstantiationFunctionDecl) { visit(static_cast<SgTemplateInstantiationFunctionDecl::base_node_type *>(variable_SgTemplateInstantiationFunctionDecl)); }
333346  void visit(SgTemplateInstantiationMemberFunctionDecl *variable_SgTemplateInstantiationMemberFunctionDecl) { visit(static_cast<SgTemplateInstantiationMemberFunctionDecl::base_node_type *>(variable_SgTemplateInstantiationMemberFunctionDecl)); }
333347  void visit(SgNonrealDecl *variable_SgNonrealDecl) { visit(static_cast<SgNonrealDecl::base_node_type *>(variable_SgNonrealDecl)); }
333348  void visit(SgWithStatement *variable_SgWithStatement) { visit(static_cast<SgWithStatement::base_node_type *>(variable_SgWithStatement)); }
333349  void visit(SgPassStatement *variable_SgPassStatement) { visit(static_cast<SgPassStatement::base_node_type *>(variable_SgPassStatement)); }
333350  void visit(SgAssertStmt *variable_SgAssertStmt) { visit(static_cast<SgAssertStmt::base_node_type *>(variable_SgAssertStmt)); }
333351  void visit(SgExecStatement *variable_SgExecStatement) { visit(static_cast<SgExecStatement::base_node_type *>(variable_SgExecStatement)); }
333352  void visit(SgProgramHeaderStatement *variable_SgProgramHeaderStatement) { visit(static_cast<SgProgramHeaderStatement::base_node_type *>(variable_SgProgramHeaderStatement)); }
333353  void visit(SgProcedureHeaderStatement *variable_SgProcedureHeaderStatement) { visit(static_cast<SgProcedureHeaderStatement::base_node_type *>(variable_SgProcedureHeaderStatement)); }
333354  void visit(SgEntryStatement *variable_SgEntryStatement) { visit(static_cast<SgEntryStatement::base_node_type *>(variable_SgEntryStatement)); }
333355  void visit(SgFortranNonblockedDo *variable_SgFortranNonblockedDo) { visit(static_cast<SgFortranNonblockedDo::base_node_type *>(variable_SgFortranNonblockedDo)); }
333356  void visit(SgInterfaceStatement *variable_SgInterfaceStatement) { visit(static_cast<SgInterfaceStatement::base_node_type *>(variable_SgInterfaceStatement)); }
333357  void visit(SgParameterStatement *variable_SgParameterStatement) { visit(static_cast<SgParameterStatement::base_node_type *>(variable_SgParameterStatement)); }
333358  void visit(SgCommonBlock *variable_SgCommonBlock) { visit(static_cast<SgCommonBlock::base_node_type *>(variable_SgCommonBlock)); }
333359  void visit(SgModuleStatement *variable_SgModuleStatement) { visit(static_cast<SgModuleStatement::base_node_type *>(variable_SgModuleStatement)); }
333360  void visit(SgUseStatement *variable_SgUseStatement) { visit(static_cast<SgUseStatement::base_node_type *>(variable_SgUseStatement)); }
333361  void visit(SgProcessControlStatement *variable_SgProcessControlStatement) { visit(static_cast<SgProcessControlStatement::base_node_type *>(variable_SgProcessControlStatement)); }
333362  void visit(SgPrintStatement *variable_SgPrintStatement) { visit(static_cast<SgPrintStatement::base_node_type *>(variable_SgPrintStatement)); }
333363  void visit(SgReadStatement *variable_SgReadStatement) { visit(static_cast<SgReadStatement::base_node_type *>(variable_SgReadStatement)); }
333364  void visit(SgWriteStatement *variable_SgWriteStatement) { visit(static_cast<SgWriteStatement::base_node_type *>(variable_SgWriteStatement)); }
333365  void visit(SgOpenStatement *variable_SgOpenStatement) { visit(static_cast<SgOpenStatement::base_node_type *>(variable_SgOpenStatement)); }
333366  void visit(SgCloseStatement *variable_SgCloseStatement) { visit(static_cast<SgCloseStatement::base_node_type *>(variable_SgCloseStatement)); }
333367  void visit(SgInquireStatement *variable_SgInquireStatement) { visit(static_cast<SgInquireStatement::base_node_type *>(variable_SgInquireStatement)); }
333368  void visit(SgFlushStatement *variable_SgFlushStatement) { visit(static_cast<SgFlushStatement::base_node_type *>(variable_SgFlushStatement)); }
333369  void visit(SgBackspaceStatement *variable_SgBackspaceStatement) { visit(static_cast<SgBackspaceStatement::base_node_type *>(variable_SgBackspaceStatement)); }
333370  void visit(SgRewindStatement *variable_SgRewindStatement) { visit(static_cast<SgRewindStatement::base_node_type *>(variable_SgRewindStatement)); }
333371  void visit(SgEndfileStatement *variable_SgEndfileStatement) { visit(static_cast<SgEndfileStatement::base_node_type *>(variable_SgEndfileStatement)); }
333372  void visit(SgWaitStatement *variable_SgWaitStatement) { visit(static_cast<SgWaitStatement::base_node_type *>(variable_SgWaitStatement)); }
333373  void visit(SgCAFWithTeamStatement *variable_SgCAFWithTeamStatement) { visit(static_cast<SgCAFWithTeamStatement::base_node_type *>(variable_SgCAFWithTeamStatement)); }
333374  void visit(SgFormatStatement *variable_SgFormatStatement) { visit(static_cast<SgFormatStatement::base_node_type *>(variable_SgFormatStatement)); }
333375  void visit(SgFortranDo *variable_SgFortranDo) { visit(static_cast<SgFortranDo::base_node_type *>(variable_SgFortranDo)); }
333376  void visit(SgForAllStatement *variable_SgForAllStatement) { visit(static_cast<SgForAllStatement::base_node_type *>(variable_SgForAllStatement)); }
333377  void visit(SgIOStatement *variable_SgIOStatement) { visit(static_cast<SgIOStatement::base_node_type *>(variable_SgIOStatement)); }
333378  void visit(SgSyncAllStatement *variable_SgSyncAllStatement) { visit(static_cast<SgSyncAllStatement::base_node_type *>(variable_SgSyncAllStatement)); }
333379  void visit(SgSyncImagesStatement *variable_SgSyncImagesStatement) { visit(static_cast<SgSyncImagesStatement::base_node_type *>(variable_SgSyncImagesStatement)); }
333380  void visit(SgSyncMemoryStatement *variable_SgSyncMemoryStatement) { visit(static_cast<SgSyncMemoryStatement::base_node_type *>(variable_SgSyncMemoryStatement)); }
333381  void visit(SgSyncTeamStatement *variable_SgSyncTeamStatement) { visit(static_cast<SgSyncTeamStatement::base_node_type *>(variable_SgSyncTeamStatement)); }
333382  void visit(SgLockStatement *variable_SgLockStatement) { visit(static_cast<SgLockStatement::base_node_type *>(variable_SgLockStatement)); }
333383  void visit(SgUnlockStatement *variable_SgUnlockStatement) { visit(static_cast<SgUnlockStatement::base_node_type *>(variable_SgUnlockStatement)); }
333384  void visit(SgImageControlStatement *variable_SgImageControlStatement) { visit(static_cast<SgImageControlStatement::base_node_type *>(variable_SgImageControlStatement)); }
333385  void visit(SgUpcNotifyStatement *variable_SgUpcNotifyStatement) { visit(static_cast<SgUpcNotifyStatement::base_node_type *>(variable_SgUpcNotifyStatement)); }
333386  void visit(SgUpcWaitStatement *variable_SgUpcWaitStatement) { visit(static_cast<SgUpcWaitStatement::base_node_type *>(variable_SgUpcWaitStatement)); }
333387  void visit(SgUpcBarrierStatement *variable_SgUpcBarrierStatement) { visit(static_cast<SgUpcBarrierStatement::base_node_type *>(variable_SgUpcBarrierStatement)); }
333388  void visit(SgUpcFenceStatement *variable_SgUpcFenceStatement) { visit(static_cast<SgUpcFenceStatement::base_node_type *>(variable_SgUpcFenceStatement)); }
333389  void visit(SgUpcForAllStatement *variable_SgUpcForAllStatement) { visit(static_cast<SgUpcForAllStatement::base_node_type *>(variable_SgUpcForAllStatement)); }
333390  void visit(SgUpirSpmdStatement *variable_SgUpirSpmdStatement) { visit(static_cast<SgUpirSpmdStatement::base_node_type *>(variable_SgUpirSpmdStatement)); }
333391  void visit(SgOmpLoopStatement *variable_SgOmpLoopStatement) { visit(static_cast<SgOmpLoopStatement::base_node_type *>(variable_SgOmpLoopStatement)); }
333392  void visit(SgOmpScanStatement *variable_SgOmpScanStatement) { visit(static_cast<SgOmpScanStatement::base_node_type *>(variable_SgOmpScanStatement)); }
333393  void visit(SgOmpTaskloopStatement *variable_SgOmpTaskloopStatement) { visit(static_cast<SgOmpTaskloopStatement::base_node_type *>(variable_SgOmpTaskloopStatement)); }
333394  void visit(SgOmpTaskgroupStatement *variable_SgOmpTaskgroupStatement) { visit(static_cast<SgOmpTaskgroupStatement::base_node_type *>(variable_SgOmpTaskgroupStatement)); }
333395  void visit(SgOmpDepobjStatement *variable_SgOmpDepobjStatement) { visit(static_cast<SgOmpDepobjStatement::base_node_type *>(variable_SgOmpDepobjStatement)); }
333396  void visit(SgOmpTeamsStatement *variable_SgOmpTeamsStatement) { visit(static_cast<SgOmpTeamsStatement::base_node_type *>(variable_SgOmpTeamsStatement)); }
333397  void visit(SgOmpCancellationPointStatement *variable_SgOmpCancellationPointStatement) { visit(static_cast<SgOmpCancellationPointStatement::base_node_type *>(variable_SgOmpCancellationPointStatement)); }
333398  void visit(SgOmpDeclareMapperStatement *variable_SgOmpDeclareMapperStatement) { visit(static_cast<SgOmpDeclareMapperStatement::base_node_type *>(variable_SgOmpDeclareMapperStatement)); }
333399  void visit(SgOmpCancelStatement *variable_SgOmpCancelStatement) { visit(static_cast<SgOmpCancelStatement::base_node_type *>(variable_SgOmpCancelStatement)); }
333400  void visit(SgOmpDistributeStatement *variable_SgOmpDistributeStatement) { visit(static_cast<SgOmpDistributeStatement::base_node_type *>(variable_SgOmpDistributeStatement)); }
333401  void visit(SgOmpMetadirectiveStatement *variable_SgOmpMetadirectiveStatement) { visit(static_cast<SgOmpMetadirectiveStatement::base_node_type *>(variable_SgOmpMetadirectiveStatement)); }
333402  void visit(SgOmpSingleStatement *variable_SgOmpSingleStatement) { visit(static_cast<SgOmpSingleStatement::base_node_type *>(variable_SgOmpSingleStatement)); }
333403  void visit(SgOmpTaskStatement *variable_SgOmpTaskStatement) { visit(static_cast<SgOmpTaskStatement::base_node_type *>(variable_SgOmpTaskStatement)); }
333404  void visit(SgOmpTargetEnterDataStatement *variable_SgOmpTargetEnterDataStatement) { visit(static_cast<SgOmpTargetEnterDataStatement::base_node_type *>(variable_SgOmpTargetEnterDataStatement)); }
333405  void visit(SgOmpTargetExitDataStatement *variable_SgOmpTargetExitDataStatement) { visit(static_cast<SgOmpTargetExitDataStatement::base_node_type *>(variable_SgOmpTargetExitDataStatement)); }
333406  void visit(SgUpirWorksharingStatement *variable_SgUpirWorksharingStatement) { visit(static_cast<SgUpirWorksharingStatement::base_node_type *>(variable_SgUpirWorksharingStatement)); }
333407  void visit(SgOmpForSimdStatement *variable_SgOmpForSimdStatement) { visit(static_cast<SgOmpForSimdStatement::base_node_type *>(variable_SgOmpForSimdStatement)); }
333408  void visit(SgOmpDoStatement *variable_SgOmpDoStatement) { visit(static_cast<SgOmpDoStatement::base_node_type *>(variable_SgOmpDoStatement)); }
333409  void visit(SgOmpSectionsStatement *variable_SgOmpSectionsStatement) { visit(static_cast<SgOmpSectionsStatement::base_node_type *>(variable_SgOmpSectionsStatement)); }
333410  void visit(SgOmpAtomicStatement *variable_SgOmpAtomicStatement) { visit(static_cast<SgOmpAtomicStatement::base_node_type *>(variable_SgOmpAtomicStatement)); }
333411  void visit(SgUpirTaskStatement *variable_SgUpirTaskStatement) { visit(static_cast<SgUpirTaskStatement::base_node_type *>(variable_SgUpirTaskStatement)); }
333412  void visit(SgOmpTargetDataStatement *variable_SgOmpTargetDataStatement) { visit(static_cast<SgOmpTargetDataStatement::base_node_type *>(variable_SgOmpTargetDataStatement)); }
333413  void visit(SgOmpTargetParallelForStatement *variable_SgOmpTargetParallelForStatement) { visit(static_cast<SgOmpTargetParallelForStatement::base_node_type *>(variable_SgOmpTargetParallelForStatement)); }
333414  void visit(SgOmpTargetParallelStatement *variable_SgOmpTargetParallelStatement) { visit(static_cast<SgOmpTargetParallelStatement::base_node_type *>(variable_SgOmpTargetParallelStatement)); }
333415  void visit(SgOmpDistributeSimdStatement *variable_SgOmpDistributeSimdStatement) { visit(static_cast<SgOmpDistributeSimdStatement::base_node_type *>(variable_SgOmpDistributeSimdStatement)); }
333416  void visit(SgOmpDistributeParallelForStatement *variable_SgOmpDistributeParallelForStatement) { visit(static_cast<SgOmpDistributeParallelForStatement::base_node_type *>(variable_SgOmpDistributeParallelForStatement)); }
333417  void visit(SgOmpDistributeParallelForSimdStatement *variable_SgOmpDistributeParallelForSimdStatement) { visit(static_cast<SgOmpDistributeParallelForSimdStatement::base_node_type *>(variable_SgOmpDistributeParallelForSimdStatement)); }
333418  void visit(SgOmpTaskloopSimdStatement *variable_SgOmpTaskloopSimdStatement) { visit(static_cast<SgOmpTaskloopSimdStatement::base_node_type *>(variable_SgOmpTaskloopSimdStatement)); }
333419  void visit(SgOmpTargetUpdateStatement *variable_SgOmpTargetUpdateStatement) { visit(static_cast<SgOmpTargetUpdateStatement::base_node_type *>(variable_SgOmpTargetUpdateStatement)); }
333420  void visit(SgOmpTargetParallelForSimdStatement *variable_SgOmpTargetParallelForSimdStatement) { visit(static_cast<SgOmpTargetParallelForSimdStatement::base_node_type *>(variable_SgOmpTargetParallelForSimdStatement)); }
333421  void visit(SgOmpTargetParallelLoopStatement *variable_SgOmpTargetParallelLoopStatement) { visit(static_cast<SgOmpTargetParallelLoopStatement::base_node_type *>(variable_SgOmpTargetParallelLoopStatement)); }
333422  void visit(SgOmpTargetSimdStatement *variable_SgOmpTargetSimdStatement) { visit(static_cast<SgOmpTargetSimdStatement::base_node_type *>(variable_SgOmpTargetSimdStatement)); }
333423  void visit(SgOmpTargetTeamsStatement *variable_SgOmpTargetTeamsStatement) { visit(static_cast<SgOmpTargetTeamsStatement::base_node_type *>(variable_SgOmpTargetTeamsStatement)); }
333424  void visit(SgOmpTargetTeamsDistributeStatement *variable_SgOmpTargetTeamsDistributeStatement) { visit(static_cast<SgOmpTargetTeamsDistributeStatement::base_node_type *>(variable_SgOmpTargetTeamsDistributeStatement)); }
333425  void visit(SgOmpTargetTeamsDistributeSimdStatement *variable_SgOmpTargetTeamsDistributeSimdStatement) { visit(static_cast<SgOmpTargetTeamsDistributeSimdStatement::base_node_type *>(variable_SgOmpTargetTeamsDistributeSimdStatement)); }
333426  void visit(SgOmpTargetTeamsLoopStatement *variable_SgOmpTargetTeamsLoopStatement) { visit(static_cast<SgOmpTargetTeamsLoopStatement::base_node_type *>(variable_SgOmpTargetTeamsLoopStatement)); }
333427  void visit(SgOmpTargetTeamsDistributeParallelForStatement *variable_SgOmpTargetTeamsDistributeParallelForStatement) { visit(static_cast<SgOmpTargetTeamsDistributeParallelForStatement::base_node_type *>(variable_SgOmpTargetTeamsDistributeParallelForStatement)); }
333428  void visit(SgOmpTargetTeamsDistributeParallelForSimdStatement *variable_SgOmpTargetTeamsDistributeParallelForSimdStatement) { visit(static_cast<SgOmpTargetTeamsDistributeParallelForSimdStatement::base_node_type *>(variable_SgOmpTargetTeamsDistributeParallelForSimdStatement)); }
333429  void visit(SgOmpMasterTaskloopSimdStatement *variable_SgOmpMasterTaskloopSimdStatement) { visit(static_cast<SgOmpMasterTaskloopSimdStatement::base_node_type *>(variable_SgOmpMasterTaskloopSimdStatement)); }
333430  void visit(SgOmpParallelMasterTaskloopStatement *variable_SgOmpParallelMasterTaskloopStatement) { visit(static_cast<SgOmpParallelMasterTaskloopStatement::base_node_type *>(variable_SgOmpParallelMasterTaskloopStatement)); }
333431  void visit(SgOmpParallelMasterTaskloopSimdStatement *variable_SgOmpParallelMasterTaskloopSimdStatement) { visit(static_cast<SgOmpParallelMasterTaskloopSimdStatement::base_node_type *>(variable_SgOmpParallelMasterTaskloopSimdStatement)); }
333432  void visit(SgOmpTeamsDistributeStatement *variable_SgOmpTeamsDistributeStatement) { visit(static_cast<SgOmpTeamsDistributeStatement::base_node_type *>(variable_SgOmpTeamsDistributeStatement)); }
333433  void visit(SgOmpTeamsDistributeSimdStatement *variable_SgOmpTeamsDistributeSimdStatement) { visit(static_cast<SgOmpTeamsDistributeSimdStatement::base_node_type *>(variable_SgOmpTeamsDistributeSimdStatement)); }
333434  void visit(SgOmpTeamsDistributeParallelForStatement *variable_SgOmpTeamsDistributeParallelForStatement) { visit(static_cast<SgOmpTeamsDistributeParallelForStatement::base_node_type *>(variable_SgOmpTeamsDistributeParallelForStatement)); }
333435  void visit(SgOmpTeamsDistributeParallelForSimdStatement *variable_SgOmpTeamsDistributeParallelForSimdStatement) { visit(static_cast<SgOmpTeamsDistributeParallelForSimdStatement::base_node_type *>(variable_SgOmpTeamsDistributeParallelForSimdStatement)); }
333436  void visit(SgOmpTeamsLoopStatement *variable_SgOmpTeamsLoopStatement) { visit(static_cast<SgOmpTeamsLoopStatement::base_node_type *>(variable_SgOmpTeamsLoopStatement)); }
333437  void visit(SgOmpParallelMasterStatement *variable_SgOmpParallelMasterStatement) { visit(static_cast<SgOmpParallelMasterStatement::base_node_type *>(variable_SgOmpParallelMasterStatement)); }
333438  void visit(SgOmpMasterTaskloopStatement *variable_SgOmpMasterTaskloopStatement) { visit(static_cast<SgOmpMasterTaskloopStatement::base_node_type *>(variable_SgOmpMasterTaskloopStatement)); }
333439  void visit(SgOmpParallelLoopStatement *variable_SgOmpParallelLoopStatement) { visit(static_cast<SgOmpParallelLoopStatement::base_node_type *>(variable_SgOmpParallelLoopStatement)); }
333440  void visit(SgOmpUnrollStatement *variable_SgOmpUnrollStatement) { visit(static_cast<SgOmpUnrollStatement::base_node_type *>(variable_SgOmpUnrollStatement)); }
333441  void visit(SgOmpTileStatement *variable_SgOmpTileStatement) { visit(static_cast<SgOmpTileStatement::base_node_type *>(variable_SgOmpTileStatement)); }
333442  void visit(SgUpirSimdStatement *variable_SgUpirSimdStatement) { visit(static_cast<SgUpirSimdStatement::base_node_type *>(variable_SgUpirSimdStatement)); }
333443  void visit(SgOmpCriticalStatement *variable_SgOmpCriticalStatement) { visit(static_cast<SgOmpCriticalStatement::base_node_type *>(variable_SgOmpCriticalStatement)); }
333444  void visit(SgOmpOrderedStatement *variable_SgOmpOrderedStatement) { visit(static_cast<SgOmpOrderedStatement::base_node_type *>(variable_SgOmpOrderedStatement)); }
333445  void visit(SgUpirLoopStatement *variable_SgUpirLoopStatement) { visit(static_cast<SgUpirLoopStatement::base_node_type *>(variable_SgUpirLoopStatement)); }
333446  void visit(SgUpirLoopParallelStatement *variable_SgUpirLoopParallelStatement) { visit(static_cast<SgUpirLoopParallelStatement::base_node_type *>(variable_SgUpirLoopParallelStatement)); }
333447  void visit(SgUpirSyncStatement *variable_SgUpirSyncStatement) { visit(static_cast<SgUpirSyncStatement::base_node_type *>(variable_SgUpirSyncStatement)); }
333448  void visit(SgUpirFieldBodyStatement *variable_SgUpirFieldBodyStatement) { visit(static_cast<SgUpirFieldBodyStatement::base_node_type *>(variable_SgUpirFieldBodyStatement)); }
333449  void visit(SgOmpMasterStatement *variable_SgOmpMasterStatement) { visit(static_cast<SgOmpMasterStatement::base_node_type *>(variable_SgOmpMasterStatement)); }
333450  void visit(SgOmpSectionStatement *variable_SgOmpSectionStatement) { visit(static_cast<SgOmpSectionStatement::base_node_type *>(variable_SgOmpSectionStatement)); }
333451  void visit(SgOmpWorkshareStatement *variable_SgOmpWorkshareStatement) { visit(static_cast<SgOmpWorkshareStatement::base_node_type *>(variable_SgOmpWorkshareStatement)); }
333452  void visit(SgOmpFlushStatement *variable_SgOmpFlushStatement) { visit(static_cast<SgOmpFlushStatement::base_node_type *>(variable_SgOmpFlushStatement)); }
333453  void visit(SgOmpAllocateStatement *variable_SgOmpAllocateStatement) { visit(static_cast<SgOmpAllocateStatement::base_node_type *>(variable_SgOmpAllocateStatement)); }
333454  void visit(SgOmpOrderedDependStatement *variable_SgOmpOrderedDependStatement) { visit(static_cast<SgOmpOrderedDependStatement::base_node_type *>(variable_SgOmpOrderedDependStatement)); }
333455  void visit(SgUpirBodyStatement *variable_SgUpirBodyStatement) { visit(static_cast<SgUpirBodyStatement::base_node_type *>(variable_SgUpirBodyStatement)); }
333456  void visit(SgUpirFieldStatement *variable_SgUpirFieldStatement) { visit(static_cast<SgUpirFieldStatement::base_node_type *>(variable_SgUpirFieldStatement)); }
333457  void visit(SgBlockDataStatement *variable_SgBlockDataStatement) { visit(static_cast<SgBlockDataStatement::base_node_type *>(variable_SgBlockDataStatement)); }
333458  void visit(SgImplicitStatement *variable_SgImplicitStatement) { visit(static_cast<SgImplicitStatement::base_node_type *>(variable_SgImplicitStatement)); }
333459  void visit(SgStatementFunctionStatement *variable_SgStatementFunctionStatement) { visit(static_cast<SgStatementFunctionStatement::base_node_type *>(variable_SgStatementFunctionStatement)); }
333460  void visit(SgWhereStatement *variable_SgWhereStatement) { visit(static_cast<SgWhereStatement::base_node_type *>(variable_SgWhereStatement)); }
333461  void visit(SgNullifyStatement *variable_SgNullifyStatement) { visit(static_cast<SgNullifyStatement::base_node_type *>(variable_SgNullifyStatement)); }
333462  void visit(SgEquivalenceStatement *variable_SgEquivalenceStatement) { visit(static_cast<SgEquivalenceStatement::base_node_type *>(variable_SgEquivalenceStatement)); }
333463  void visit(SgDerivedTypeStatement *variable_SgDerivedTypeStatement) { visit(static_cast<SgDerivedTypeStatement::base_node_type *>(variable_SgDerivedTypeStatement)); }
333464  void visit(SgAttributeSpecificationStatement *variable_SgAttributeSpecificationStatement) { visit(static_cast<SgAttributeSpecificationStatement::base_node_type *>(variable_SgAttributeSpecificationStatement)); }
333465  void visit(SgAllocateStatement *variable_SgAllocateStatement) { visit(static_cast<SgAllocateStatement::base_node_type *>(variable_SgAllocateStatement)); }
333466  void visit(SgDeallocateStatement *variable_SgDeallocateStatement) { visit(static_cast<SgDeallocateStatement::base_node_type *>(variable_SgDeallocateStatement)); }
333467  void visit(SgContainsStatement *variable_SgContainsStatement) { visit(static_cast<SgContainsStatement::base_node_type *>(variable_SgContainsStatement)); }
333468  void visit(SgSequenceStatement *variable_SgSequenceStatement) { visit(static_cast<SgSequenceStatement::base_node_type *>(variable_SgSequenceStatement)); }
333469  void visit(SgElseWhereStatement *variable_SgElseWhereStatement) { visit(static_cast<SgElseWhereStatement::base_node_type *>(variable_SgElseWhereStatement)); }
333470  void visit(SgArithmeticIfStatement *variable_SgArithmeticIfStatement) { visit(static_cast<SgArithmeticIfStatement::base_node_type *>(variable_SgArithmeticIfStatement)); }
333471  void visit(SgAssignStatement *variable_SgAssignStatement) { visit(static_cast<SgAssignStatement::base_node_type *>(variable_SgAssignStatement)); }
333472  void visit(SgComputedGotoStatement *variable_SgComputedGotoStatement) { visit(static_cast<SgComputedGotoStatement::base_node_type *>(variable_SgComputedGotoStatement)); }
333473  void visit(SgAssignedGotoStatement *variable_SgAssignedGotoStatement) { visit(static_cast<SgAssignedGotoStatement::base_node_type *>(variable_SgAssignedGotoStatement)); }
333474  void visit(SgNamelistStatement *variable_SgNamelistStatement) { visit(static_cast<SgNamelistStatement::base_node_type *>(variable_SgNamelistStatement)); }
333475  void visit(SgImportStatement *variable_SgImportStatement) { visit(static_cast<SgImportStatement::base_node_type *>(variable_SgImportStatement)); }
333476  void visit(SgAssociateStatement *variable_SgAssociateStatement) { visit(static_cast<SgAssociateStatement::base_node_type *>(variable_SgAssociateStatement)); }
333477  void visit(SgFortranIncludeLine *variable_SgFortranIncludeLine) { visit(static_cast<SgFortranIncludeLine::base_node_type *>(variable_SgFortranIncludeLine)); }
333478  void visit(SgNamespaceDeclarationStatement *variable_SgNamespaceDeclarationStatement) { visit(static_cast<SgNamespaceDeclarationStatement::base_node_type *>(variable_SgNamespaceDeclarationStatement)); }
333479  void visit(SgNamespaceAliasDeclarationStatement *variable_SgNamespaceAliasDeclarationStatement) { visit(static_cast<SgNamespaceAliasDeclarationStatement::base_node_type *>(variable_SgNamespaceAliasDeclarationStatement)); }
333480  void visit(SgNamespaceDefinitionStatement *variable_SgNamespaceDefinitionStatement) { visit(static_cast<SgNamespaceDefinitionStatement::base_node_type *>(variable_SgNamespaceDefinitionStatement)); }
333481  void visit(SgUsingDeclarationStatement *variable_SgUsingDeclarationStatement) { visit(static_cast<SgUsingDeclarationStatement::base_node_type *>(variable_SgUsingDeclarationStatement)); }
333482  void visit(SgUsingDirectiveStatement *variable_SgUsingDirectiveStatement) { visit(static_cast<SgUsingDirectiveStatement::base_node_type *>(variable_SgUsingDirectiveStatement)); }
333483  void visit(SgTemplateInstantiationDirectiveStatement *variable_SgTemplateInstantiationDirectiveStatement) { visit(static_cast<SgTemplateInstantiationDirectiveStatement::base_node_type *>(variable_SgTemplateInstantiationDirectiveStatement)); }
333484  void visit(SgStaticAssertionDeclaration *variable_SgStaticAssertionDeclaration) { visit(static_cast<SgStaticAssertionDeclaration::base_node_type *>(variable_SgStaticAssertionDeclaration)); }
333485  void visit(SgTemplateClassDefinition *variable_SgTemplateClassDefinition) { visit(static_cast<SgTemplateClassDefinition::base_node_type *>(variable_SgTemplateClassDefinition)); }
333486  void visit(SgTemplateFunctionDefinition *variable_SgTemplateFunctionDefinition) { visit(static_cast<SgTemplateFunctionDefinition::base_node_type *>(variable_SgTemplateFunctionDefinition)); }
333487  void visit(SgClassDeclaration *variable_SgClassDeclaration) { visit(static_cast<SgClassDeclaration::base_node_type *>(variable_SgClassDeclaration)); }
333488  void visit(SgClassDefinition *variable_SgClassDefinition) { visit(static_cast<SgClassDefinition::base_node_type *>(variable_SgClassDefinition)); }
333489  void visit(SgFunctionDefinition *variable_SgFunctionDefinition) { visit(static_cast<SgFunctionDefinition::base_node_type *>(variable_SgFunctionDefinition)); }
333490  void visit(SgScopeStatement *variable_SgScopeStatement) { visit(static_cast<SgScopeStatement::base_node_type *>(variable_SgScopeStatement)); }
333491  void visit(SgMemberFunctionDeclaration *variable_SgMemberFunctionDeclaration) { visit(static_cast<SgMemberFunctionDeclaration::base_node_type *>(variable_SgMemberFunctionDeclaration)); }
333492  void visit(SgFunctionDeclaration *variable_SgFunctionDeclaration) { visit(static_cast<SgFunctionDeclaration::base_node_type *>(variable_SgFunctionDeclaration)); }
333493  void visit(SgIncludeDirectiveStatement *variable_SgIncludeDirectiveStatement) { visit(static_cast<SgIncludeDirectiveStatement::base_node_type *>(variable_SgIncludeDirectiveStatement)); }
333494  void visit(SgDefineDirectiveStatement *variable_SgDefineDirectiveStatement) { visit(static_cast<SgDefineDirectiveStatement::base_node_type *>(variable_SgDefineDirectiveStatement)); }
333495  void visit(SgUndefDirectiveStatement *variable_SgUndefDirectiveStatement) { visit(static_cast<SgUndefDirectiveStatement::base_node_type *>(variable_SgUndefDirectiveStatement)); }
333496  void visit(SgIfdefDirectiveStatement *variable_SgIfdefDirectiveStatement) { visit(static_cast<SgIfdefDirectiveStatement::base_node_type *>(variable_SgIfdefDirectiveStatement)); }
333497  void visit(SgIfndefDirectiveStatement *variable_SgIfndefDirectiveStatement) { visit(static_cast<SgIfndefDirectiveStatement::base_node_type *>(variable_SgIfndefDirectiveStatement)); }
333498  void visit(SgIfDirectiveStatement *variable_SgIfDirectiveStatement) { visit(static_cast<SgIfDirectiveStatement::base_node_type *>(variable_SgIfDirectiveStatement)); }
333499  void visit(SgDeadIfDirectiveStatement *variable_SgDeadIfDirectiveStatement) { visit(static_cast<SgDeadIfDirectiveStatement::base_node_type *>(variable_SgDeadIfDirectiveStatement)); }
333500  void visit(SgElseDirectiveStatement *variable_SgElseDirectiveStatement) { visit(static_cast<SgElseDirectiveStatement::base_node_type *>(variable_SgElseDirectiveStatement)); }
333501  void visit(SgElseifDirectiveStatement *variable_SgElseifDirectiveStatement) { visit(static_cast<SgElseifDirectiveStatement::base_node_type *>(variable_SgElseifDirectiveStatement)); }
333502  void visit(SgEndifDirectiveStatement *variable_SgEndifDirectiveStatement) { visit(static_cast<SgEndifDirectiveStatement::base_node_type *>(variable_SgEndifDirectiveStatement)); }
333503  void visit(SgLineDirectiveStatement *variable_SgLineDirectiveStatement) { visit(static_cast<SgLineDirectiveStatement::base_node_type *>(variable_SgLineDirectiveStatement)); }
333504  void visit(SgWarningDirectiveStatement *variable_SgWarningDirectiveStatement) { visit(static_cast<SgWarningDirectiveStatement::base_node_type *>(variable_SgWarningDirectiveStatement)); }
333505  void visit(SgErrorDirectiveStatement *variable_SgErrorDirectiveStatement) { visit(static_cast<SgErrorDirectiveStatement::base_node_type *>(variable_SgErrorDirectiveStatement)); }
333506  void visit(SgEmptyDirectiveStatement *variable_SgEmptyDirectiveStatement) { visit(static_cast<SgEmptyDirectiveStatement::base_node_type *>(variable_SgEmptyDirectiveStatement)); }
333507  void visit(SgIncludeNextDirectiveStatement *variable_SgIncludeNextDirectiveStatement) { visit(static_cast<SgIncludeNextDirectiveStatement::base_node_type *>(variable_SgIncludeNextDirectiveStatement)); }
333508  void visit(SgIdentDirectiveStatement *variable_SgIdentDirectiveStatement) { visit(static_cast<SgIdentDirectiveStatement::base_node_type *>(variable_SgIdentDirectiveStatement)); }
333509  void visit(SgLinemarkerDirectiveStatement *variable_SgLinemarkerDirectiveStatement) { visit(static_cast<SgLinemarkerDirectiveStatement::base_node_type *>(variable_SgLinemarkerDirectiveStatement)); }
333510  void visit(SgC_PreprocessorDirectiveStatement *variable_SgC_PreprocessorDirectiveStatement) { visit(static_cast<SgC_PreprocessorDirectiveStatement::base_node_type *>(variable_SgC_PreprocessorDirectiveStatement)); }
333511  void visit(SgClinkageStartStatement *variable_SgClinkageStartStatement) { visit(static_cast<SgClinkageStartStatement::base_node_type *>(variable_SgClinkageStartStatement)); }
333512  void visit(SgClinkageEndStatement *variable_SgClinkageEndStatement) { visit(static_cast<SgClinkageEndStatement::base_node_type *>(variable_SgClinkageEndStatement)); }
333513  void visit(SgClinkageDeclarationStatement *variable_SgClinkageDeclarationStatement) { visit(static_cast<SgClinkageDeclarationStatement::base_node_type *>(variable_SgClinkageDeclarationStatement)); }
333514  void visit(SgOmpDeclareSimdStatement *variable_SgOmpDeclareSimdStatement) { visit(static_cast<SgOmpDeclareSimdStatement::base_node_type *>(variable_SgOmpDeclareSimdStatement)); }
333515  void visit(SgOmpBarrierStatement *variable_SgOmpBarrierStatement) { visit(static_cast<SgOmpBarrierStatement::base_node_type *>(variable_SgOmpBarrierStatement)); }
333516  void visit(SgOmpTaskyieldStatement *variable_SgOmpTaskyieldStatement) { visit(static_cast<SgOmpTaskyieldStatement::base_node_type *>(variable_SgOmpTaskyieldStatement)); }
333517  void visit(SgOmpRequiresStatement *variable_SgOmpRequiresStatement) { visit(static_cast<SgOmpRequiresStatement::base_node_type *>(variable_SgOmpRequiresStatement)); }
333518  void visit(SgOmpTaskwaitStatement *variable_SgOmpTaskwaitStatement) { visit(static_cast<SgOmpTaskwaitStatement::base_node_type *>(variable_SgOmpTaskwaitStatement)); }
333519  void visit(SgOmpThreadprivateStatement *variable_SgOmpThreadprivateStatement) { visit(static_cast<SgOmpThreadprivateStatement::base_node_type *>(variable_SgOmpThreadprivateStatement)); }
333520  void visit(SgMicrosoftAttributeDeclaration *variable_SgMicrosoftAttributeDeclaration) { visit(static_cast<SgMicrosoftAttributeDeclaration::base_node_type *>(variable_SgMicrosoftAttributeDeclaration)); }
333521  void visit(SgEmptyDeclaration *variable_SgEmptyDeclaration) { visit(static_cast<SgEmptyDeclaration::base_node_type *>(variable_SgEmptyDeclaration)); }
333522  void visit(SgDeclarationStatement *variable_SgDeclarationStatement) { visit(static_cast<SgDeclarationStatement::base_node_type *>(variable_SgDeclarationStatement)); }
333523  void visit(SgUpirBaseStatement *variable_SgUpirBaseStatement) { visit(static_cast<SgUpirBaseStatement::base_node_type *>(variable_SgUpirBaseStatement)); }
333524  void visit(SgStatement *variable_SgStatement) { visit(static_cast<SgStatement::base_node_type *>(variable_SgStatement)); }
333525  void visit(SgVarRefExp *variable_SgVarRefExp) { visit(static_cast<SgVarRefExp::base_node_type *>(variable_SgVarRefExp)); }
333526  void visit(SgNonrealRefExp *variable_SgNonrealRefExp) { visit(static_cast<SgNonrealRefExp::base_node_type *>(variable_SgNonrealRefExp)); }
333527  void visit(SgCompoundLiteralExp *variable_SgCompoundLiteralExp) { visit(static_cast<SgCompoundLiteralExp::base_node_type *>(variable_SgCompoundLiteralExp)); }
333528  void visit(SgLabelRefExp *variable_SgLabelRefExp) { visit(static_cast<SgLabelRefExp::base_node_type *>(variable_SgLabelRefExp)); }
333529  void visit(SgClassNameRefExp *variable_SgClassNameRefExp) { visit(static_cast<SgClassNameRefExp::base_node_type *>(variable_SgClassNameRefExp)); }
333530  void visit(SgFunctionRefExp *variable_SgFunctionRefExp) { visit(static_cast<SgFunctionRefExp::base_node_type *>(variable_SgFunctionRefExp)); }
333531  void visit(SgMemberFunctionRefExp *variable_SgMemberFunctionRefExp) { visit(static_cast<SgMemberFunctionRefExp::base_node_type *>(variable_SgMemberFunctionRefExp)); }
333532  void visit(SgTemplateFunctionRefExp *variable_SgTemplateFunctionRefExp) { visit(static_cast<SgTemplateFunctionRefExp::base_node_type *>(variable_SgTemplateFunctionRefExp)); }
333533  void visit(SgTemplateMemberFunctionRefExp *variable_SgTemplateMemberFunctionRefExp) { visit(static_cast<SgTemplateMemberFunctionRefExp::base_node_type *>(variable_SgTemplateMemberFunctionRefExp)); }
333534  void visit(SgSizeOfOp *variable_SgSizeOfOp) { visit(static_cast<SgSizeOfOp::base_node_type *>(variable_SgSizeOfOp)); }
333535  void visit(SgAlignOfOp *variable_SgAlignOfOp) { visit(static_cast<SgAlignOfOp::base_node_type *>(variable_SgAlignOfOp)); }
333536  void visit(SgNoexceptOp *variable_SgNoexceptOp) { visit(static_cast<SgNoexceptOp::base_node_type *>(variable_SgNoexceptOp)); }
333537  void visit(SgTypeExpression *variable_SgTypeExpression) { visit(static_cast<SgTypeExpression::base_node_type *>(variable_SgTypeExpression)); }
333538  void visit(SgLambdaExp *variable_SgLambdaExp) { visit(static_cast<SgLambdaExp::base_node_type *>(variable_SgLambdaExp)); }
333539  void visit(SgUpcLocalsizeofExpression *variable_SgUpcLocalsizeofExpression) { visit(static_cast<SgUpcLocalsizeofExpression::base_node_type *>(variable_SgUpcLocalsizeofExpression)); }
333540  void visit(SgUpcBlocksizeofExpression *variable_SgUpcBlocksizeofExpression) { visit(static_cast<SgUpcBlocksizeofExpression::base_node_type *>(variable_SgUpcBlocksizeofExpression)); }
333541  void visit(SgUpcElemsizeofExpression *variable_SgUpcElemsizeofExpression) { visit(static_cast<SgUpcElemsizeofExpression::base_node_type *>(variable_SgUpcElemsizeofExpression)); }
333542  void visit(SgVarArgStartOp *variable_SgVarArgStartOp) { visit(static_cast<SgVarArgStartOp::base_node_type *>(variable_SgVarArgStartOp)); }
333543  void visit(SgVarArgStartOneOperandOp *variable_SgVarArgStartOneOperandOp) { visit(static_cast<SgVarArgStartOneOperandOp::base_node_type *>(variable_SgVarArgStartOneOperandOp)); }
333544  void visit(SgVarArgOp *variable_SgVarArgOp) { visit(static_cast<SgVarArgOp::base_node_type *>(variable_SgVarArgOp)); }
333545  void visit(SgVarArgEndOp *variable_SgVarArgEndOp) { visit(static_cast<SgVarArgEndOp::base_node_type *>(variable_SgVarArgEndOp)); }
333546  void visit(SgVarArgCopyOp *variable_SgVarArgCopyOp) { visit(static_cast<SgVarArgCopyOp::base_node_type *>(variable_SgVarArgCopyOp)); }
333547  void visit(SgTypeIdOp *variable_SgTypeIdOp) { visit(static_cast<SgTypeIdOp::base_node_type *>(variable_SgTypeIdOp)); }
333548  void visit(SgConditionalExp *variable_SgConditionalExp) { visit(static_cast<SgConditionalExp::base_node_type *>(variable_SgConditionalExp)); }
333549  void visit(SgNewExp *variable_SgNewExp) { visit(static_cast<SgNewExp::base_node_type *>(variable_SgNewExp)); }
333550  void visit(SgDeleteExp *variable_SgDeleteExp) { visit(static_cast<SgDeleteExp::base_node_type *>(variable_SgDeleteExp)); }
333551  void visit(SgThisExp *variable_SgThisExp) { visit(static_cast<SgThisExp::base_node_type *>(variable_SgThisExp)); }
333552  void visit(SgSuperExp *variable_SgSuperExp) { visit(static_cast<SgSuperExp::base_node_type *>(variable_SgSuperExp)); }
333553  void visit(SgClassExp *variable_SgClassExp) { visit(static_cast<SgClassExp::base_node_type *>(variable_SgClassExp)); }
333554  void visit(SgRefExp *variable_SgRefExp) { visit(static_cast<SgRefExp::base_node_type *>(variable_SgRefExp)); }
333555  void visit(SgAggregateInitializer *variable_SgAggregateInitializer) { visit(static_cast<SgAggregateInitializer::base_node_type *>(variable_SgAggregateInitializer)); }
333556  void visit(SgCompoundInitializer *variable_SgCompoundInitializer) { visit(static_cast<SgCompoundInitializer::base_node_type *>(variable_SgCompoundInitializer)); }
333557  void visit(SgConstructorInitializer *variable_SgConstructorInitializer) { visit(static_cast<SgConstructorInitializer::base_node_type *>(variable_SgConstructorInitializer)); }
333558  void visit(SgAssignInitializer *variable_SgAssignInitializer) { visit(static_cast<SgAssignInitializer::base_node_type *>(variable_SgAssignInitializer)); }
333559  void visit(SgBracedInitializer *variable_SgBracedInitializer) { visit(static_cast<SgBracedInitializer::base_node_type *>(variable_SgBracedInitializer)); }
333560  void visit(SgExpressionRoot *variable_SgExpressionRoot) { visit(static_cast<SgExpressionRoot::base_node_type *>(variable_SgExpressionRoot)); }
333561  void visit(SgMinusOp *variable_SgMinusOp) { visit(static_cast<SgMinusOp::base_node_type *>(variable_SgMinusOp)); }
333562  void visit(SgUnaryAddOp *variable_SgUnaryAddOp) { visit(static_cast<SgUnaryAddOp::base_node_type *>(variable_SgUnaryAddOp)); }
333563  void visit(SgNotOp *variable_SgNotOp) { visit(static_cast<SgNotOp::base_node_type *>(variable_SgNotOp)); }
333564  void visit(SgPointerDerefExp *variable_SgPointerDerefExp) { visit(static_cast<SgPointerDerefExp::base_node_type *>(variable_SgPointerDerefExp)); }
333565  void visit(SgAddressOfOp *variable_SgAddressOfOp) { visit(static_cast<SgAddressOfOp::base_node_type *>(variable_SgAddressOfOp)); }
333566  void visit(SgMinusMinusOp *variable_SgMinusMinusOp) { visit(static_cast<SgMinusMinusOp::base_node_type *>(variable_SgMinusMinusOp)); }
333567  void visit(SgPlusPlusOp *variable_SgPlusPlusOp) { visit(static_cast<SgPlusPlusOp::base_node_type *>(variable_SgPlusPlusOp)); }
333568  void visit(SgBitComplementOp *variable_SgBitComplementOp) { visit(static_cast<SgBitComplementOp::base_node_type *>(variable_SgBitComplementOp)); }
333569  void visit(SgRealPartOp *variable_SgRealPartOp) { visit(static_cast<SgRealPartOp::base_node_type *>(variable_SgRealPartOp)); }
333570  void visit(SgImagPartOp *variable_SgImagPartOp) { visit(static_cast<SgImagPartOp::base_node_type *>(variable_SgImagPartOp)); }
333571  void visit(SgConjugateOp *variable_SgConjugateOp) { visit(static_cast<SgConjugateOp::base_node_type *>(variable_SgConjugateOp)); }
333572  void visit(SgCastExp *variable_SgCastExp) { visit(static_cast<SgCastExp::base_node_type *>(variable_SgCastExp)); }
333573  void visit(SgThrowOp *variable_SgThrowOp) { visit(static_cast<SgThrowOp::base_node_type *>(variable_SgThrowOp)); }
333574  void visit(SgArrowExp *variable_SgArrowExp) { visit(static_cast<SgArrowExp::base_node_type *>(variable_SgArrowExp)); }
333575  void visit(SgDotExp *variable_SgDotExp) { visit(static_cast<SgDotExp::base_node_type *>(variable_SgDotExp)); }
333576  void visit(SgDotStarOp *variable_SgDotStarOp) { visit(static_cast<SgDotStarOp::base_node_type *>(variable_SgDotStarOp)); }
333577  void visit(SgArrowStarOp *variable_SgArrowStarOp) { visit(static_cast<SgArrowStarOp::base_node_type *>(variable_SgArrowStarOp)); }
333578  void visit(SgEqualityOp *variable_SgEqualityOp) { visit(static_cast<SgEqualityOp::base_node_type *>(variable_SgEqualityOp)); }
333579  void visit(SgLessThanOp *variable_SgLessThanOp) { visit(static_cast<SgLessThanOp::base_node_type *>(variable_SgLessThanOp)); }
333580  void visit(SgGreaterThanOp *variable_SgGreaterThanOp) { visit(static_cast<SgGreaterThanOp::base_node_type *>(variable_SgGreaterThanOp)); }
333581  void visit(SgNotEqualOp *variable_SgNotEqualOp) { visit(static_cast<SgNotEqualOp::base_node_type *>(variable_SgNotEqualOp)); }
333582  void visit(SgLessOrEqualOp *variable_SgLessOrEqualOp) { visit(static_cast<SgLessOrEqualOp::base_node_type *>(variable_SgLessOrEqualOp)); }
333583  void visit(SgGreaterOrEqualOp *variable_SgGreaterOrEqualOp) { visit(static_cast<SgGreaterOrEqualOp::base_node_type *>(variable_SgGreaterOrEqualOp)); }
333584  void visit(SgAddOp *variable_SgAddOp) { visit(static_cast<SgAddOp::base_node_type *>(variable_SgAddOp)); }
333585  void visit(SgSubtractOp *variable_SgSubtractOp) { visit(static_cast<SgSubtractOp::base_node_type *>(variable_SgSubtractOp)); }
333586  void visit(SgMultiplyOp *variable_SgMultiplyOp) { visit(static_cast<SgMultiplyOp::base_node_type *>(variable_SgMultiplyOp)); }
333587  void visit(SgDivideOp *variable_SgDivideOp) { visit(static_cast<SgDivideOp::base_node_type *>(variable_SgDivideOp)); }
333588  void visit(SgIntegerDivideOp *variable_SgIntegerDivideOp) { visit(static_cast<SgIntegerDivideOp::base_node_type *>(variable_SgIntegerDivideOp)); }
333589  void visit(SgModOp *variable_SgModOp) { visit(static_cast<SgModOp::base_node_type *>(variable_SgModOp)); }
333590  void visit(SgAndOp *variable_SgAndOp) { visit(static_cast<SgAndOp::base_node_type *>(variable_SgAndOp)); }
333591  void visit(SgOrOp *variable_SgOrOp) { visit(static_cast<SgOrOp::base_node_type *>(variable_SgOrOp)); }
333592  void visit(SgBitXorOp *variable_SgBitXorOp) { visit(static_cast<SgBitXorOp::base_node_type *>(variable_SgBitXorOp)); }
333593  void visit(SgBitAndOp *variable_SgBitAndOp) { visit(static_cast<SgBitAndOp::base_node_type *>(variable_SgBitAndOp)); }
333594  void visit(SgBitOrOp *variable_SgBitOrOp) { visit(static_cast<SgBitOrOp::base_node_type *>(variable_SgBitOrOp)); }
333595  void visit(SgBitEqvOp *variable_SgBitEqvOp) { visit(static_cast<SgBitEqvOp::base_node_type *>(variable_SgBitEqvOp)); }
333596  void visit(SgCommaOpExp *variable_SgCommaOpExp) { visit(static_cast<SgCommaOpExp::base_node_type *>(variable_SgCommaOpExp)); }
333597  void visit(SgLshiftOp *variable_SgLshiftOp) { visit(static_cast<SgLshiftOp::base_node_type *>(variable_SgLshiftOp)); }
333598  void visit(SgRshiftOp *variable_SgRshiftOp) { visit(static_cast<SgRshiftOp::base_node_type *>(variable_SgRshiftOp)); }
333599  void visit(SgPntrArrRefExp *variable_SgPntrArrRefExp) { visit(static_cast<SgPntrArrRefExp::base_node_type *>(variable_SgPntrArrRefExp)); }
333600  void visit(SgScopeOp *variable_SgScopeOp) { visit(static_cast<SgScopeOp::base_node_type *>(variable_SgScopeOp)); }
333601  void visit(SgAssignOp *variable_SgAssignOp) { visit(static_cast<SgAssignOp::base_node_type *>(variable_SgAssignOp)); }
333602  void visit(SgPlusAssignOp *variable_SgPlusAssignOp) { visit(static_cast<SgPlusAssignOp::base_node_type *>(variable_SgPlusAssignOp)); }
333603  void visit(SgMinusAssignOp *variable_SgMinusAssignOp) { visit(static_cast<SgMinusAssignOp::base_node_type *>(variable_SgMinusAssignOp)); }
333604  void visit(SgAndAssignOp *variable_SgAndAssignOp) { visit(static_cast<SgAndAssignOp::base_node_type *>(variable_SgAndAssignOp)); }
333605  void visit(SgIorAssignOp *variable_SgIorAssignOp) { visit(static_cast<SgIorAssignOp::base_node_type *>(variable_SgIorAssignOp)); }
333606  void visit(SgMultAssignOp *variable_SgMultAssignOp) { visit(static_cast<SgMultAssignOp::base_node_type *>(variable_SgMultAssignOp)); }
333607  void visit(SgDivAssignOp *variable_SgDivAssignOp) { visit(static_cast<SgDivAssignOp::base_node_type *>(variable_SgDivAssignOp)); }
333608  void visit(SgModAssignOp *variable_SgModAssignOp) { visit(static_cast<SgModAssignOp::base_node_type *>(variable_SgModAssignOp)); }
333609  void visit(SgXorAssignOp *variable_SgXorAssignOp) { visit(static_cast<SgXorAssignOp::base_node_type *>(variable_SgXorAssignOp)); }
333610  void visit(SgLshiftAssignOp *variable_SgLshiftAssignOp) { visit(static_cast<SgLshiftAssignOp::base_node_type *>(variable_SgLshiftAssignOp)); }
333611  void visit(SgRshiftAssignOp *variable_SgRshiftAssignOp) { visit(static_cast<SgRshiftAssignOp::base_node_type *>(variable_SgRshiftAssignOp)); }
333612  void visit(SgIntegerDivideAssignOp *variable_SgIntegerDivideAssignOp) { visit(static_cast<SgIntegerDivideAssignOp::base_node_type *>(variable_SgIntegerDivideAssignOp)); }
333613  void visit(SgExponentiationAssignOp *variable_SgExponentiationAssignOp) { visit(static_cast<SgExponentiationAssignOp::base_node_type *>(variable_SgExponentiationAssignOp)); }
333614  void visit(SgConcatenationOp *variable_SgConcatenationOp) { visit(static_cast<SgConcatenationOp::base_node_type *>(variable_SgConcatenationOp)); }
333615  void visit(SgNaryComparisonOp *variable_SgNaryComparisonOp) { visit(static_cast<SgNaryComparisonOp::base_node_type *>(variable_SgNaryComparisonOp)); }
333616  void visit(SgNaryBooleanOp *variable_SgNaryBooleanOp) { visit(static_cast<SgNaryBooleanOp::base_node_type *>(variable_SgNaryBooleanOp)); }
333617  void visit(SgBoolValExp *variable_SgBoolValExp) { visit(static_cast<SgBoolValExp::base_node_type *>(variable_SgBoolValExp)); }
333618  void visit(SgStringVal *variable_SgStringVal) { visit(static_cast<SgStringVal::base_node_type *>(variable_SgStringVal)); }
333619  void visit(SgShortVal *variable_SgShortVal) { visit(static_cast<SgShortVal::base_node_type *>(variable_SgShortVal)); }
333620  void visit(SgCharVal *variable_SgCharVal) { visit(static_cast<SgCharVal::base_node_type *>(variable_SgCharVal)); }
333621  void visit(SgUnsignedCharVal *variable_SgUnsignedCharVal) { visit(static_cast<SgUnsignedCharVal::base_node_type *>(variable_SgUnsignedCharVal)); }
333622  void visit(SgWcharVal *variable_SgWcharVal) { visit(static_cast<SgWcharVal::base_node_type *>(variable_SgWcharVal)); }
333623  void visit(SgChar16Val *variable_SgChar16Val) { visit(static_cast<SgChar16Val::base_node_type *>(variable_SgChar16Val)); }
333624  void visit(SgChar32Val *variable_SgChar32Val) { visit(static_cast<SgChar32Val::base_node_type *>(variable_SgChar32Val)); }
333625  void visit(SgUnsignedShortVal *variable_SgUnsignedShortVal) { visit(static_cast<SgUnsignedShortVal::base_node_type *>(variable_SgUnsignedShortVal)); }
333626  void visit(SgIntVal *variable_SgIntVal) { visit(static_cast<SgIntVal::base_node_type *>(variable_SgIntVal)); }
333627  void visit(SgEnumVal *variable_SgEnumVal) { visit(static_cast<SgEnumVal::base_node_type *>(variable_SgEnumVal)); }
333628  void visit(SgUnsignedIntVal *variable_SgUnsignedIntVal) { visit(static_cast<SgUnsignedIntVal::base_node_type *>(variable_SgUnsignedIntVal)); }
333629  void visit(SgLongIntVal *variable_SgLongIntVal) { visit(static_cast<SgLongIntVal::base_node_type *>(variable_SgLongIntVal)); }
333630  void visit(SgLongLongIntVal *variable_SgLongLongIntVal) { visit(static_cast<SgLongLongIntVal::base_node_type *>(variable_SgLongLongIntVal)); }
333631  void visit(SgUnsignedLongLongIntVal *variable_SgUnsignedLongLongIntVal) { visit(static_cast<SgUnsignedLongLongIntVal::base_node_type *>(variable_SgUnsignedLongLongIntVal)); }
333632  void visit(SgUnsignedLongVal *variable_SgUnsignedLongVal) { visit(static_cast<SgUnsignedLongVal::base_node_type *>(variable_SgUnsignedLongVal)); }
333633  void visit(SgFloatVal *variable_SgFloatVal) { visit(static_cast<SgFloatVal::base_node_type *>(variable_SgFloatVal)); }
333634  void visit(SgDoubleVal *variable_SgDoubleVal) { visit(static_cast<SgDoubleVal::base_node_type *>(variable_SgDoubleVal)); }
333635  void visit(SgLongDoubleVal *variable_SgLongDoubleVal) { visit(static_cast<SgLongDoubleVal::base_node_type *>(variable_SgLongDoubleVal)); }
333636  void visit(SgFloat80Val *variable_SgFloat80Val) { visit(static_cast<SgFloat80Val::base_node_type *>(variable_SgFloat80Val)); }
333637  void visit(SgFloat128Val *variable_SgFloat128Val) { visit(static_cast<SgFloat128Val::base_node_type *>(variable_SgFloat128Val)); }
333638  void visit(SgNullptrValExp *variable_SgNullptrValExp) { visit(static_cast<SgNullptrValExp::base_node_type *>(variable_SgNullptrValExp)); }
333639  void visit(SgVoidVal *variable_SgVoidVal) { visit(static_cast<SgVoidVal::base_node_type *>(variable_SgVoidVal)); }
333640  void visit(SgFunctionParameterRefExp *variable_SgFunctionParameterRefExp) { visit(static_cast<SgFunctionParameterRefExp::base_node_type *>(variable_SgFunctionParameterRefExp)); }
333641  void visit(SgTemplateParameterVal *variable_SgTemplateParameterVal) { visit(static_cast<SgTemplateParameterVal::base_node_type *>(variable_SgTemplateParameterVal)); }
333642  void visit(SgUpcThreads *variable_SgUpcThreads) { visit(static_cast<SgUpcThreads::base_node_type *>(variable_SgUpcThreads)); }
333643  void visit(SgUpcMythread *variable_SgUpcMythread) { visit(static_cast<SgUpcMythread::base_node_type *>(variable_SgUpcMythread)); }
333644  void visit(SgComplexVal *variable_SgComplexVal) { visit(static_cast<SgComplexVal::base_node_type *>(variable_SgComplexVal)); }
333645  void visit(SgNullExpression *variable_SgNullExpression) { visit(static_cast<SgNullExpression::base_node_type *>(variable_SgNullExpression)); }
333646  void visit(SgVariantExpression *variable_SgVariantExpression) { visit(static_cast<SgVariantExpression::base_node_type *>(variable_SgVariantExpression)); }
333647  void visit(SgStatementExpression *variable_SgStatementExpression) { visit(static_cast<SgStatementExpression::base_node_type *>(variable_SgStatementExpression)); }
333648  void visit(SgAsmOp *variable_SgAsmOp) { visit(static_cast<SgAsmOp::base_node_type *>(variable_SgAsmOp)); }
333649  void visit(SgCudaKernelExecConfig *variable_SgCudaKernelExecConfig) { visit(static_cast<SgCudaKernelExecConfig::base_node_type *>(variable_SgCudaKernelExecConfig)); }
333650  void visit(SgCudaKernelCallExp *variable_SgCudaKernelCallExp) { visit(static_cast<SgCudaKernelCallExp::base_node_type *>(variable_SgCudaKernelCallExp)); }
333651  void visit(SgLambdaRefExp *variable_SgLambdaRefExp) { visit(static_cast<SgLambdaRefExp::base_node_type *>(variable_SgLambdaRefExp)); }
333652  void visit(SgTupleExp *variable_SgTupleExp) { visit(static_cast<SgTupleExp::base_node_type *>(variable_SgTupleExp)); }
333653  void visit(SgListExp *variable_SgListExp) { visit(static_cast<SgListExp::base_node_type *>(variable_SgListExp)); }
333654  void visit(SgDictionaryExp *variable_SgDictionaryExp) { visit(static_cast<SgDictionaryExp::base_node_type *>(variable_SgDictionaryExp)); }
333655  void visit(SgKeyDatumPair *variable_SgKeyDatumPair) { visit(static_cast<SgKeyDatumPair::base_node_type *>(variable_SgKeyDatumPair)); }
333656  void visit(SgComprehension *variable_SgComprehension) { visit(static_cast<SgComprehension::base_node_type *>(variable_SgComprehension)); }
333657  void visit(SgListComprehension *variable_SgListComprehension) { visit(static_cast<SgListComprehension::base_node_type *>(variable_SgListComprehension)); }
333658  void visit(SgSetComprehension *variable_SgSetComprehension) { visit(static_cast<SgSetComprehension::base_node_type *>(variable_SgSetComprehension)); }
333659  void visit(SgDictionaryComprehension *variable_SgDictionaryComprehension) { visit(static_cast<SgDictionaryComprehension::base_node_type *>(variable_SgDictionaryComprehension)); }
333660  void visit(SgMembershipOp *variable_SgMembershipOp) { visit(static_cast<SgMembershipOp::base_node_type *>(variable_SgMembershipOp)); }
333661  void visit(SgNonMembershipOp *variable_SgNonMembershipOp) { visit(static_cast<SgNonMembershipOp::base_node_type *>(variable_SgNonMembershipOp)); }
333662  void visit(SgIsOp *variable_SgIsOp) { visit(static_cast<SgIsOp::base_node_type *>(variable_SgIsOp)); }
333663  void visit(SgIsNotOp *variable_SgIsNotOp) { visit(static_cast<SgIsNotOp::base_node_type *>(variable_SgIsNotOp)); }
333664  void visit(SgStringConversion *variable_SgStringConversion) { visit(static_cast<SgStringConversion::base_node_type *>(variable_SgStringConversion)); }
333665  void visit(SgYieldExpression *variable_SgYieldExpression) { visit(static_cast<SgYieldExpression::base_node_type *>(variable_SgYieldExpression)); }
333666  void visit(SgFoldExpression *variable_SgFoldExpression) { visit(static_cast<SgFoldExpression::base_node_type *>(variable_SgFoldExpression)); }
333667  void visit(SgChooseExpression *variable_SgChooseExpression) { visit(static_cast<SgChooseExpression::base_node_type *>(variable_SgChooseExpression)); }
333668  void visit(SgAwaitExpression *variable_SgAwaitExpression) { visit(static_cast<SgAwaitExpression::base_node_type *>(variable_SgAwaitExpression)); }
333669  void visit(SgSpaceshipOp *variable_SgSpaceshipOp) { visit(static_cast<SgSpaceshipOp::base_node_type *>(variable_SgSpaceshipOp)); }
333670  void visit(SgSubscriptExpression *variable_SgSubscriptExpression) { visit(static_cast<SgSubscriptExpression::base_node_type *>(variable_SgSubscriptExpression)); }
333671  void visit(SgColonShapeExp *variable_SgColonShapeExp) { visit(static_cast<SgColonShapeExp::base_node_type *>(variable_SgColonShapeExp)); }
333672  void visit(SgAsteriskShapeExp *variable_SgAsteriskShapeExp) { visit(static_cast<SgAsteriskShapeExp::base_node_type *>(variable_SgAsteriskShapeExp)); }
333673  void visit(SgIOItemExpression *variable_SgIOItemExpression) { visit(static_cast<SgIOItemExpression::base_node_type *>(variable_SgIOItemExpression)); }
333674  void visit(SgImpliedDo *variable_SgImpliedDo) { visit(static_cast<SgImpliedDo::base_node_type *>(variable_SgImpliedDo)); }
333675  void visit(SgExponentiationOp *variable_SgExponentiationOp) { visit(static_cast<SgExponentiationOp::base_node_type *>(variable_SgExponentiationOp)); }
333676  void visit(SgUnknownArrayOrFunctionReference *variable_SgUnknownArrayOrFunctionReference) { visit(static_cast<SgUnknownArrayOrFunctionReference::base_node_type *>(variable_SgUnknownArrayOrFunctionReference)); }
333677  void visit(SgActualArgumentExpression *variable_SgActualArgumentExpression) { visit(static_cast<SgActualArgumentExpression::base_node_type *>(variable_SgActualArgumentExpression)); }
333678  void visit(SgUserDefinedBinaryOp *variable_SgUserDefinedBinaryOp) { visit(static_cast<SgUserDefinedBinaryOp::base_node_type *>(variable_SgUserDefinedBinaryOp)); }
333679  void visit(SgPointerAssignOp *variable_SgPointerAssignOp) { visit(static_cast<SgPointerAssignOp::base_node_type *>(variable_SgPointerAssignOp)); }
333680  void visit(SgCAFCoExpression *variable_SgCAFCoExpression) { visit(static_cast<SgCAFCoExpression::base_node_type *>(variable_SgCAFCoExpression)); }
333681  void visit(SgDesignatedInitializer *variable_SgDesignatedInitializer) { visit(static_cast<SgDesignatedInitializer::base_node_type *>(variable_SgDesignatedInitializer)); }
333682  void visit(SgMatrixExp *variable_SgMatrixExp) { visit(static_cast<SgMatrixExp::base_node_type *>(variable_SgMatrixExp)); }
333683  void visit(SgRangeExp *variable_SgRangeExp) { visit(static_cast<SgRangeExp::base_node_type *>(variable_SgRangeExp)); }
333684  void visit(SgMagicColonExp *variable_SgMagicColonExp) { visit(static_cast<SgMagicColonExp::base_node_type *>(variable_SgMagicColonExp)); }
333685  void visit(SgElementwiseMultiplyOp *variable_SgElementwiseMultiplyOp) { visit(static_cast<SgElementwiseMultiplyOp::base_node_type *>(variable_SgElementwiseMultiplyOp)); }
333686  void visit(SgPowerOp *variable_SgPowerOp) { visit(static_cast<SgPowerOp::base_node_type *>(variable_SgPowerOp)); }
333687  void visit(SgElementwisePowerOp *variable_SgElementwisePowerOp) { visit(static_cast<SgElementwisePowerOp::base_node_type *>(variable_SgElementwisePowerOp)); }
333688  void visit(SgElementwiseDivideOp *variable_SgElementwiseDivideOp) { visit(static_cast<SgElementwiseDivideOp::base_node_type *>(variable_SgElementwiseDivideOp)); }
333689  void visit(SgLeftDivideOp *variable_SgLeftDivideOp) { visit(static_cast<SgLeftDivideOp::base_node_type *>(variable_SgLeftDivideOp)); }
333690  void visit(SgElementwiseLeftDivideOp *variable_SgElementwiseLeftDivideOp) { visit(static_cast<SgElementwiseLeftDivideOp::base_node_type *>(variable_SgElementwiseLeftDivideOp)); }
333691  void visit(SgElementwiseAddOp *variable_SgElementwiseAddOp) { visit(static_cast<SgElementwiseAddOp::base_node_type *>(variable_SgElementwiseAddOp)); }
333692  void visit(SgElementwiseSubtractOp *variable_SgElementwiseSubtractOp) { visit(static_cast<SgElementwiseSubtractOp::base_node_type *>(variable_SgElementwiseSubtractOp)); }
333693  void visit(SgMatrixTransposeOp *variable_SgMatrixTransposeOp) { visit(static_cast<SgMatrixTransposeOp::base_node_type *>(variable_SgMatrixTransposeOp)); }
333694  void visit(SgElementwiseOp *variable_SgElementwiseOp) { visit(static_cast<SgElementwiseOp::base_node_type *>(variable_SgElementwiseOp)); }
333695  void visit(SgInitializer *variable_SgInitializer) { visit(static_cast<SgInitializer::base_node_type *>(variable_SgInitializer)); }
333696  void visit(SgSIMDLoad *variable_SgSIMDLoad) { visit(static_cast<SgSIMDLoad::base_node_type *>(variable_SgSIMDLoad)); }
333697  void visit(SgSIMDBroadcast *variable_SgSIMDBroadcast) { visit(static_cast<SgSIMDBroadcast::base_node_type *>(variable_SgSIMDBroadcast)); }
333698  void visit(SgSIMDStore *variable_SgSIMDStore) { visit(static_cast<SgSIMDStore::base_node_type *>(variable_SgSIMDStore)); }
333699  void visit(SgSIMDPartialStore *variable_SgSIMDPartialStore) { visit(static_cast<SgSIMDPartialStore::base_node_type *>(variable_SgSIMDPartialStore)); }
333700  void visit(SgSIMDScalarStore *variable_SgSIMDScalarStore) { visit(static_cast<SgSIMDScalarStore::base_node_type *>(variable_SgSIMDScalarStore)); }
333701  void visit(SgSIMDGather *variable_SgSIMDGather) { visit(static_cast<SgSIMDGather::base_node_type *>(variable_SgSIMDGather)); }
333702  void visit(SgSIMDExplicitGather *variable_SgSIMDExplicitGather) { visit(static_cast<SgSIMDExplicitGather::base_node_type *>(variable_SgSIMDExplicitGather)); }
333703  void visit(SgSIMDScatter *variable_SgSIMDScatter) { visit(static_cast<SgSIMDScatter::base_node_type *>(variable_SgSIMDScatter)); }
333704  void visit(SgSIMDAddOp *variable_SgSIMDAddOp) { visit(static_cast<SgSIMDAddOp::base_node_type *>(variable_SgSIMDAddOp)); }
333705  void visit(SgSIMDSubOp *variable_SgSIMDSubOp) { visit(static_cast<SgSIMDSubOp::base_node_type *>(variable_SgSIMDSubOp)); }
333706  void visit(SgSIMDMulOp *variable_SgSIMDMulOp) { visit(static_cast<SgSIMDMulOp::base_node_type *>(variable_SgSIMDMulOp)); }
333707  void visit(SgSIMDDivOp *variable_SgSIMDDivOp) { visit(static_cast<SgSIMDDivOp::base_node_type *>(variable_SgSIMDDivOp)); }
333708  void visit(SgSIMDFmaOp *variable_SgSIMDFmaOp) { visit(static_cast<SgSIMDFmaOp::base_node_type *>(variable_SgSIMDFmaOp)); }
333709  void visit(SgSIMDBinaryOp *variable_SgSIMDBinaryOp) { visit(static_cast<SgSIMDBinaryOp::base_node_type *>(variable_SgSIMDBinaryOp)); }
333710  void visit(SgUserDefinedUnaryOp *variable_SgUserDefinedUnaryOp) { visit(static_cast<SgUserDefinedUnaryOp::base_node_type *>(variable_SgUserDefinedUnaryOp)); }
333711  void visit(SgPseudoDestructorRefExp *variable_SgPseudoDestructorRefExp) { visit(static_cast<SgPseudoDestructorRefExp::base_node_type *>(variable_SgPseudoDestructorRefExp)); }
333712  void visit(SgUnaryOp *variable_SgUnaryOp) { visit(static_cast<SgUnaryOp::base_node_type *>(variable_SgUnaryOp)); }
333713  void visit(SgCompoundAssignOp *variable_SgCompoundAssignOp) { visit(static_cast<SgCompoundAssignOp::base_node_type *>(variable_SgCompoundAssignOp)); }
333714  void visit(SgBinaryOp *variable_SgBinaryOp) { visit(static_cast<SgBinaryOp::base_node_type *>(variable_SgBinaryOp)); }
333715  void visit(SgNaryOp *variable_SgNaryOp) { visit(static_cast<SgNaryOp::base_node_type *>(variable_SgNaryOp)); }
333716  void visit(SgValueExp *variable_SgValueExp) { visit(static_cast<SgValueExp::base_node_type *>(variable_SgValueExp)); }
333717  void visit(SgExprListExp *variable_SgExprListExp) { visit(static_cast<SgExprListExp::base_node_type *>(variable_SgExprListExp)); }
333718  void visit(SgFunctionCallExp *variable_SgFunctionCallExp) { visit(static_cast<SgFunctionCallExp::base_node_type *>(variable_SgFunctionCallExp)); }
333719  void visit(SgCallExpression *variable_SgCallExpression) { visit(static_cast<SgCallExpression::base_node_type *>(variable_SgCallExpression)); }
333720  void visit(SgTypeTraitBuiltinOperator *variable_SgTypeTraitBuiltinOperator) { visit(static_cast<SgTypeTraitBuiltinOperator::base_node_type *>(variable_SgTypeTraitBuiltinOperator)); }
333721  void visit(SgExpression *variable_SgExpression) { visit(static_cast<SgExpression::base_node_type *>(variable_SgExpression)); }
333722  void visit(SgTemplateVariableSymbol *variable_SgTemplateVariableSymbol) { visit(static_cast<SgTemplateVariableSymbol::base_node_type *>(variable_SgTemplateVariableSymbol)); }
333723  void visit(SgVariableSymbol *variable_SgVariableSymbol) { visit(static_cast<SgVariableSymbol::base_node_type *>(variable_SgVariableSymbol)); }
333724  void visit(SgFunctionTypeSymbol *variable_SgFunctionTypeSymbol) { visit(static_cast<SgFunctionTypeSymbol::base_node_type *>(variable_SgFunctionTypeSymbol)); }
333725  void visit(SgTemplateClassSymbol *variable_SgTemplateClassSymbol) { visit(static_cast<SgTemplateClassSymbol::base_node_type *>(variable_SgTemplateClassSymbol)); }
333726  void visit(SgClassSymbol *variable_SgClassSymbol) { visit(static_cast<SgClassSymbol::base_node_type *>(variable_SgClassSymbol)); }
333727  void visit(SgTemplateSymbol *variable_SgTemplateSymbol) { visit(static_cast<SgTemplateSymbol::base_node_type *>(variable_SgTemplateSymbol)); }
333728  void visit(SgEnumSymbol *variable_SgEnumSymbol) { visit(static_cast<SgEnumSymbol::base_node_type *>(variable_SgEnumSymbol)); }
333729  void visit(SgEnumFieldSymbol *variable_SgEnumFieldSymbol) { visit(static_cast<SgEnumFieldSymbol::base_node_type *>(variable_SgEnumFieldSymbol)); }
333730  void visit(SgTemplateTypedefSymbol *variable_SgTemplateTypedefSymbol) { visit(static_cast<SgTemplateTypedefSymbol::base_node_type *>(variable_SgTemplateTypedefSymbol)); }
333731  void visit(SgTypedefSymbol *variable_SgTypedefSymbol) { visit(static_cast<SgTypedefSymbol::base_node_type *>(variable_SgTypedefSymbol)); }
333732  void visit(SgTemplateFunctionSymbol *variable_SgTemplateFunctionSymbol) { visit(static_cast<SgTemplateFunctionSymbol::base_node_type *>(variable_SgTemplateFunctionSymbol)); }
333733  void visit(SgTemplateMemberFunctionSymbol *variable_SgTemplateMemberFunctionSymbol) { visit(static_cast<SgTemplateMemberFunctionSymbol::base_node_type *>(variable_SgTemplateMemberFunctionSymbol)); }
333734  void visit(SgLabelSymbol *variable_SgLabelSymbol) { visit(static_cast<SgLabelSymbol::base_node_type *>(variable_SgLabelSymbol)); }
333735  void visit(SgDefaultSymbol *variable_SgDefaultSymbol) { visit(static_cast<SgDefaultSymbol::base_node_type *>(variable_SgDefaultSymbol)); }
333736  void visit(SgNamespaceSymbol *variable_SgNamespaceSymbol) { visit(static_cast<SgNamespaceSymbol::base_node_type *>(variable_SgNamespaceSymbol)); }
333737  void visit(SgIntrinsicSymbol *variable_SgIntrinsicSymbol) { visit(static_cast<SgIntrinsicSymbol::base_node_type *>(variable_SgIntrinsicSymbol)); }
333738  void visit(SgModuleSymbol *variable_SgModuleSymbol) { visit(static_cast<SgModuleSymbol::base_node_type *>(variable_SgModuleSymbol)); }
333739  void visit(SgInterfaceSymbol *variable_SgInterfaceSymbol) { visit(static_cast<SgInterfaceSymbol::base_node_type *>(variable_SgInterfaceSymbol)); }
333740  void visit(SgCommonSymbol *variable_SgCommonSymbol) { visit(static_cast<SgCommonSymbol::base_node_type *>(variable_SgCommonSymbol)); }
333741  void visit(SgRenameSymbol *variable_SgRenameSymbol) { visit(static_cast<SgRenameSymbol::base_node_type *>(variable_SgRenameSymbol)); }
333742  void visit(SgMemberFunctionSymbol *variable_SgMemberFunctionSymbol) { visit(static_cast<SgMemberFunctionSymbol::base_node_type *>(variable_SgMemberFunctionSymbol)); }
333743  void visit(SgFunctionSymbol *variable_SgFunctionSymbol) { visit(static_cast<SgFunctionSymbol::base_node_type *>(variable_SgFunctionSymbol)); }
333744  void visit(SgAliasSymbol *variable_SgAliasSymbol) { visit(static_cast<SgAliasSymbol::base_node_type *>(variable_SgAliasSymbol)); }
333745  void visit(SgNonrealSymbol *variable_SgNonrealSymbol) { visit(static_cast<SgNonrealSymbol::base_node_type *>(variable_SgNonrealSymbol)); }
333746  void visit(SgSymbol *variable_SgSymbol) { visit(static_cast<SgSymbol::base_node_type *>(variable_SgSymbol)); }
333747  void visit(SgCommonBlockObject *variable_SgCommonBlockObject) { visit(static_cast<SgCommonBlockObject::base_node_type *>(variable_SgCommonBlockObject)); }
333748  void visit(SgInitializedName *variable_SgInitializedName) { visit(static_cast<SgInitializedName::base_node_type *>(variable_SgInitializedName)); }
333749  void visit(SgLambdaCapture *variable_SgLambdaCapture) { visit(static_cast<SgLambdaCapture::base_node_type *>(variable_SgLambdaCapture)); }
333750  void visit(SgLambdaCaptureList *variable_SgLambdaCaptureList) { visit(static_cast<SgLambdaCaptureList::base_node_type *>(variable_SgLambdaCaptureList)); }
333751  void visit(SgOmpOrderedClause *variable_SgOmpOrderedClause) { visit(static_cast<SgOmpOrderedClause::base_node_type *>(variable_SgOmpOrderedClause)); }
333752  void visit(SgOmpNowaitClause *variable_SgOmpNowaitClause) { visit(static_cast<SgOmpNowaitClause::base_node_type *>(variable_SgOmpNowaitClause)); }
333753  void visit(SgOmpNogroupClause *variable_SgOmpNogroupClause) { visit(static_cast<SgOmpNogroupClause::base_node_type *>(variable_SgOmpNogroupClause)); }
333754  void visit(SgOmpReadClause *variable_SgOmpReadClause) { visit(static_cast<SgOmpReadClause::base_node_type *>(variable_SgOmpReadClause)); }
333755  void visit(SgOmpThreadsClause *variable_SgOmpThreadsClause) { visit(static_cast<SgOmpThreadsClause::base_node_type *>(variable_SgOmpThreadsClause)); }
333756  void visit(SgOmpSimdClause *variable_SgOmpSimdClause) { visit(static_cast<SgOmpSimdClause::base_node_type *>(variable_SgOmpSimdClause)); }
333757  void visit(SgOmpReverseOffloadClause *variable_SgOmpReverseOffloadClause) { visit(static_cast<SgOmpReverseOffloadClause::base_node_type *>(variable_SgOmpReverseOffloadClause)); }
333758  void visit(SgOmpExtImplementationDefinedRequirementClause *variable_SgOmpExtImplementationDefinedRequirementClause) { visit(static_cast<SgOmpExtImplementationDefinedRequirementClause::base_node_type *>(variable_SgOmpExtImplementationDefinedRequirementClause)); }
333759  void visit(SgOmpUnifiedAddressClause *variable_SgOmpUnifiedAddressClause) { visit(static_cast<SgOmpUnifiedAddressClause::base_node_type *>(variable_SgOmpUnifiedAddressClause)); }
333760  void visit(SgOmpUnifiedSharedMemoryClause *variable_SgOmpUnifiedSharedMemoryClause) { visit(static_cast<SgOmpUnifiedSharedMemoryClause::base_node_type *>(variable_SgOmpUnifiedSharedMemoryClause)); }
333761  void visit(SgOmpDynamicAllocatorsClause *variable_SgOmpDynamicAllocatorsClause) { visit(static_cast<SgOmpDynamicAllocatorsClause::base_node_type *>(variable_SgOmpDynamicAllocatorsClause)); }
333762  void visit(SgOmpAtomicDefaultMemOrderClause *variable_SgOmpAtomicDefaultMemOrderClause) { visit(static_cast<SgOmpAtomicDefaultMemOrderClause::base_node_type *>(variable_SgOmpAtomicDefaultMemOrderClause)); }
333763  void visit(SgOmpWriteClause *variable_SgOmpWriteClause) { visit(static_cast<SgOmpWriteClause::base_node_type *>(variable_SgOmpWriteClause)); }
333764  void visit(SgOmpUpdateClause *variable_SgOmpUpdateClause) { visit(static_cast<SgOmpUpdateClause::base_node_type *>(variable_SgOmpUpdateClause)); }
333765  void visit(SgOmpDepobjUpdateClause *variable_SgOmpDepobjUpdateClause) { visit(static_cast<SgOmpDepobjUpdateClause::base_node_type *>(variable_SgOmpDepobjUpdateClause)); }
333766  void visit(SgOmpDestroyClause *variable_SgOmpDestroyClause) { visit(static_cast<SgOmpDestroyClause::base_node_type *>(variable_SgOmpDestroyClause)); }
333767  void visit(SgOmpCaptureClause *variable_SgOmpCaptureClause) { visit(static_cast<SgOmpCaptureClause::base_node_type *>(variable_SgOmpCaptureClause)); }
333768  void visit(SgOmpSeqCstClause *variable_SgOmpSeqCstClause) { visit(static_cast<SgOmpSeqCstClause::base_node_type *>(variable_SgOmpSeqCstClause)); }
333769  void visit(SgOmpAcqRelClause *variable_SgOmpAcqRelClause) { visit(static_cast<SgOmpAcqRelClause::base_node_type *>(variable_SgOmpAcqRelClause)); }
333770  void visit(SgOmpReleaseClause *variable_SgOmpReleaseClause) { visit(static_cast<SgOmpReleaseClause::base_node_type *>(variable_SgOmpReleaseClause)); }
333771  void visit(SgOmpAcquireClause *variable_SgOmpAcquireClause) { visit(static_cast<SgOmpAcquireClause::base_node_type *>(variable_SgOmpAcquireClause)); }
333772  void visit(SgOmpRelaxedClause *variable_SgOmpRelaxedClause) { visit(static_cast<SgOmpRelaxedClause::base_node_type *>(variable_SgOmpRelaxedClause)); }
333773  void visit(SgOmpParallelClause *variable_SgOmpParallelClause) { visit(static_cast<SgOmpParallelClause::base_node_type *>(variable_SgOmpParallelClause)); }
333774  void visit(SgOmpSectionsClause *variable_SgOmpSectionsClause) { visit(static_cast<SgOmpSectionsClause::base_node_type *>(variable_SgOmpSectionsClause)); }
333775  void visit(SgOmpForClause *variable_SgOmpForClause) { visit(static_cast<SgOmpForClause::base_node_type *>(variable_SgOmpForClause)); }
333776  void visit(SgOmpTaskgroupClause *variable_SgOmpTaskgroupClause) { visit(static_cast<SgOmpTaskgroupClause::base_node_type *>(variable_SgOmpTaskgroupClause)); }
333777  void visit(SgOmpBeginClause *variable_SgOmpBeginClause) { visit(static_cast<SgOmpBeginClause::base_node_type *>(variable_SgOmpBeginClause)); }
333778  void visit(SgOmpEndClause *variable_SgOmpEndClause) { visit(static_cast<SgOmpEndClause::base_node_type *>(variable_SgOmpEndClause)); }
333779  void visit(SgOmpUntiedClause *variable_SgOmpUntiedClause) { visit(static_cast<SgOmpUntiedClause::base_node_type *>(variable_SgOmpUntiedClause)); }
333780  void visit(SgOmpMergeableClause *variable_SgOmpMergeableClause) { visit(static_cast<SgOmpMergeableClause::base_node_type *>(variable_SgOmpMergeableClause)); }
333781  void visit(SgOmpDefaultClause *variable_SgOmpDefaultClause) { visit(static_cast<SgOmpDefaultClause::base_node_type *>(variable_SgOmpDefaultClause)); }
333782  void visit(SgOmpAtomicClause *variable_SgOmpAtomicClause) { visit(static_cast<SgOmpAtomicClause::base_node_type *>(variable_SgOmpAtomicClause)); }
333783  void visit(SgOmpProcBindClause *variable_SgOmpProcBindClause) { visit(static_cast<SgOmpProcBindClause::base_node_type *>(variable_SgOmpProcBindClause)); }
333784  void visit(SgOmpOrderClause *variable_SgOmpOrderClause) { visit(static_cast<SgOmpOrderClause::base_node_type *>(variable_SgOmpOrderClause)); }
333785  void visit(SgOmpBindClause *variable_SgOmpBindClause) { visit(static_cast<SgOmpBindClause::base_node_type *>(variable_SgOmpBindClause)); }
333786  void visit(SgOmpInbranchClause *variable_SgOmpInbranchClause) { visit(static_cast<SgOmpInbranchClause::base_node_type *>(variable_SgOmpInbranchClause)); }
333787  void visit(SgOmpNotinbranchClause *variable_SgOmpNotinbranchClause) { visit(static_cast<SgOmpNotinbranchClause::base_node_type *>(variable_SgOmpNotinbranchClause)); }
333788  void visit(SgOmpCollapseClause *variable_SgOmpCollapseClause) { visit(static_cast<SgOmpCollapseClause::base_node_type *>(variable_SgOmpCollapseClause)); }
333789  void visit(SgOmpIfClause *variable_SgOmpIfClause) { visit(static_cast<SgOmpIfClause::base_node_type *>(variable_SgOmpIfClause)); }
333790  void visit(SgOmpFinalClause *variable_SgOmpFinalClause) { visit(static_cast<SgOmpFinalClause::base_node_type *>(variable_SgOmpFinalClause)); }
333791  void visit(SgOmpPriorityClause *variable_SgOmpPriorityClause) { visit(static_cast<SgOmpPriorityClause::base_node_type *>(variable_SgOmpPriorityClause)); }
333792  void visit(SgUpirNumUnitsField *variable_SgUpirNumUnitsField) { visit(static_cast<SgUpirNumUnitsField::base_node_type *>(variable_SgUpirNumUnitsField)); }
333793  void visit(SgOmpNumTeamsClause *variable_SgOmpNumTeamsClause) { visit(static_cast<SgOmpNumTeamsClause::base_node_type *>(variable_SgOmpNumTeamsClause)); }
333794  void visit(SgOmpGrainsizeClause *variable_SgOmpGrainsizeClause) { visit(static_cast<SgOmpGrainsizeClause::base_node_type *>(variable_SgOmpGrainsizeClause)); }
333795  void visit(SgOmpDetachClause *variable_SgOmpDetachClause) { visit(static_cast<SgOmpDetachClause::base_node_type *>(variable_SgOmpDetachClause)); }
333796  void visit(SgOmpNumTasksClause *variable_SgOmpNumTasksClause) { visit(static_cast<SgOmpNumTasksClause::base_node_type *>(variable_SgOmpNumTasksClause)); }
333797  void visit(SgOmpHintClause *variable_SgOmpHintClause) { visit(static_cast<SgOmpHintClause::base_node_type *>(variable_SgOmpHintClause)); }
333798  void visit(SgOmpThreadLimitClause *variable_SgOmpThreadLimitClause) { visit(static_cast<SgOmpThreadLimitClause::base_node_type *>(variable_SgOmpThreadLimitClause)); }
333799  void visit(SgOmpNontemporalClause *variable_SgOmpNontemporalClause) { visit(static_cast<SgOmpNontemporalClause::base_node_type *>(variable_SgOmpNontemporalClause)); }
333800  void visit(SgOmpInclusiveClause *variable_SgOmpInclusiveClause) { visit(static_cast<SgOmpInclusiveClause::base_node_type *>(variable_SgOmpInclusiveClause)); }
333801  void visit(SgOmpExclusiveClause *variable_SgOmpExclusiveClause) { visit(static_cast<SgOmpExclusiveClause::base_node_type *>(variable_SgOmpExclusiveClause)); }
333802  void visit(SgOmpIsDevicePtrClause *variable_SgOmpIsDevicePtrClause) { visit(static_cast<SgOmpIsDevicePtrClause::base_node_type *>(variable_SgOmpIsDevicePtrClause)); }
333803  void visit(SgOmpUseDevicePtrClause *variable_SgOmpUseDevicePtrClause) { visit(static_cast<SgOmpUseDevicePtrClause::base_node_type *>(variable_SgOmpUseDevicePtrClause)); }
333804  void visit(SgOmpUseDeviceAddrClause *variable_SgOmpUseDeviceAddrClause) { visit(static_cast<SgOmpUseDeviceAddrClause::base_node_type *>(variable_SgOmpUseDeviceAddrClause)); }
333805  void visit(SgOmpDeviceClause *variable_SgOmpDeviceClause) { visit(static_cast<SgOmpDeviceClause::base_node_type *>(variable_SgOmpDeviceClause)); }
333806  void visit(SgOmpSafelenClause *variable_SgOmpSafelenClause) { visit(static_cast<SgOmpSafelenClause::base_node_type *>(variable_SgOmpSafelenClause)); }
333807  void visit(SgOmpSimdlenClause *variable_SgOmpSimdlenClause) { visit(static_cast<SgOmpSimdlenClause::base_node_type *>(variable_SgOmpSimdlenClause)); }
333808  void visit(SgOmpPartialClause *variable_SgOmpPartialClause) { visit(static_cast<SgOmpPartialClause::base_node_type *>(variable_SgOmpPartialClause)); }
333809  void visit(SgOmpFullClause *variable_SgOmpFullClause) { visit(static_cast<SgOmpFullClause::base_node_type *>(variable_SgOmpFullClause)); }
333810  void visit(SgOmpSizesClause *variable_SgOmpSizesClause) { visit(static_cast<SgOmpSizesClause::base_node_type *>(variable_SgOmpSizesClause)); }
333811  void visit(SgUpirBranchField *variable_SgUpirBranchField) { visit(static_cast<SgUpirBranchField::base_node_type *>(variable_SgUpirBranchField)); }
333812  void visit(SgUpirNestedLevelField *variable_SgUpirNestedLevelField) { visit(static_cast<SgUpirNestedLevelField::base_node_type *>(variable_SgUpirNestedLevelField)); }
333813  void visit(SgUpirNestedParentField *variable_SgUpirNestedParentField) { visit(static_cast<SgUpirNestedParentField::base_node_type *>(variable_SgUpirNestedParentField)); }
333814  void visit(SgUpirNestedChildField *variable_SgUpirNestedChildField) { visit(static_cast<SgUpirNestedChildField::base_node_type *>(variable_SgUpirNestedChildField)); }
333815  void visit(SgUpirSyncField *variable_SgUpirSyncField) { visit(static_cast<SgUpirSyncField::base_node_type *>(variable_SgUpirSyncField)); }
333816  void visit(SgUpirDataField *variable_SgUpirDataField) { visit(static_cast<SgUpirDataField::base_node_type *>(variable_SgUpirDataField)); }
333817  void visit(SgUpirTargetField *variable_SgUpirTargetField) { visit(static_cast<SgUpirTargetField::base_node_type *>(variable_SgUpirTargetField)); }
333818  void visit(SgUpirDataItemField *variable_SgUpirDataItemField) { visit(static_cast<SgUpirDataItemField::base_node_type *>(variable_SgUpirDataItemField)); }
333819  void visit(SgOmpExpressionClause *variable_SgOmpExpressionClause) { visit(static_cast<SgOmpExpressionClause::base_node_type *>(variable_SgOmpExpressionClause)); }
333820  void visit(SgOmpCopyprivateClause *variable_SgOmpCopyprivateClause) { visit(static_cast<SgOmpCopyprivateClause::base_node_type *>(variable_SgOmpCopyprivateClause)); }
333821  void visit(SgOmpPrivateClause *variable_SgOmpPrivateClause) { visit(static_cast<SgOmpPrivateClause::base_node_type *>(variable_SgOmpPrivateClause)); }
333822  void visit(SgOmpFirstprivateClause *variable_SgOmpFirstprivateClause) { visit(static_cast<SgOmpFirstprivateClause::base_node_type *>(variable_SgOmpFirstprivateClause)); }
333823  void visit(SgOmpSharedClause *variable_SgOmpSharedClause) { visit(static_cast<SgOmpSharedClause::base_node_type *>(variable_SgOmpSharedClause)); }
333824  void visit(SgOmpCopyinClause *variable_SgOmpCopyinClause) { visit(static_cast<SgOmpCopyinClause::base_node_type *>(variable_SgOmpCopyinClause)); }
333825  void visit(SgOmpLastprivateClause *variable_SgOmpLastprivateClause) { visit(static_cast<SgOmpLastprivateClause::base_node_type *>(variable_SgOmpLastprivateClause)); }
333826  void visit(SgOmpReductionClause *variable_SgOmpReductionClause) { visit(static_cast<SgOmpReductionClause::base_node_type *>(variable_SgOmpReductionClause)); }
333827  void visit(SgOmpInReductionClause *variable_SgOmpInReductionClause) { visit(static_cast<SgOmpInReductionClause::base_node_type *>(variable_SgOmpInReductionClause)); }
333828  void visit(SgOmpTaskReductionClause *variable_SgOmpTaskReductionClause) { visit(static_cast<SgOmpTaskReductionClause::base_node_type *>(variable_SgOmpTaskReductionClause)); }
333829  void visit(SgOmpAllocateClause *variable_SgOmpAllocateClause) { visit(static_cast<SgOmpAllocateClause::base_node_type *>(variable_SgOmpAllocateClause)); }
333830  void visit(SgOmpDependClause *variable_SgOmpDependClause) { visit(static_cast<SgOmpDependClause::base_node_type *>(variable_SgOmpDependClause)); }
333831  void visit(SgOmpToClause *variable_SgOmpToClause) { visit(static_cast<SgOmpToClause::base_node_type *>(variable_SgOmpToClause)); }
333832  void visit(SgOmpUsesAllocatorsClause *variable_SgOmpUsesAllocatorsClause) { visit(static_cast<SgOmpUsesAllocatorsClause::base_node_type *>(variable_SgOmpUsesAllocatorsClause)); }
333833  void visit(SgOmpFromClause *variable_SgOmpFromClause) { visit(static_cast<SgOmpFromClause::base_node_type *>(variable_SgOmpFromClause)); }
333834  void visit(SgOmpAffinityClause *variable_SgOmpAffinityClause) { visit(static_cast<SgOmpAffinityClause::base_node_type *>(variable_SgOmpAffinityClause)); }
333835  void visit(SgOmpMapClause *variable_SgOmpMapClause) { visit(static_cast<SgOmpMapClause::base_node_type *>(variable_SgOmpMapClause)); }
333836  void visit(SgOmpLinearClause *variable_SgOmpLinearClause) { visit(static_cast<SgOmpLinearClause::base_node_type *>(variable_SgOmpLinearClause)); }
333837  void visit(SgOmpUniformClause *variable_SgOmpUniformClause) { visit(static_cast<SgOmpUniformClause::base_node_type *>(variable_SgOmpUniformClause)); }
333838  void visit(SgOmpAlignedClause *variable_SgOmpAlignedClause) { visit(static_cast<SgOmpAlignedClause::base_node_type *>(variable_SgOmpAlignedClause)); }
333839  void visit(SgOmpVariablesClause *variable_SgOmpVariablesClause) { visit(static_cast<SgOmpVariablesClause::base_node_type *>(variable_SgOmpVariablesClause)); }
333840  void visit(SgOmpScheduleClause *variable_SgOmpScheduleClause) { visit(static_cast<SgOmpScheduleClause::base_node_type *>(variable_SgOmpScheduleClause)); }
333841  void visit(SgOmpWhenClause *variable_SgOmpWhenClause) { visit(static_cast<SgOmpWhenClause::base_node_type *>(variable_SgOmpWhenClause)); }
333842  void visit(SgOmpDistScheduleClause *variable_SgOmpDistScheduleClause) { visit(static_cast<SgOmpDistScheduleClause::base_node_type *>(variable_SgOmpDistScheduleClause)); }
333843  void visit(SgOmpDefaultmapClause *variable_SgOmpDefaultmapClause) { visit(static_cast<SgOmpDefaultmapClause::base_node_type *>(variable_SgOmpDefaultmapClause)); }
333844  void visit(SgOmpAllocatorClause *variable_SgOmpAllocatorClause) { visit(static_cast<SgOmpAllocatorClause::base_node_type *>(variable_SgOmpAllocatorClause)); }
333845  void visit(SgOmpUsesAllocatorsDefination *variable_SgOmpUsesAllocatorsDefination) { visit(static_cast<SgOmpUsesAllocatorsDefination::base_node_type *>(variable_SgOmpUsesAllocatorsDefination)); }
333846  void visit(SgOmpClause *variable_SgOmpClause) { visit(static_cast<SgOmpClause::base_node_type *>(variable_SgOmpClause)); }
333847  void visit(SgRenamePair *variable_SgRenamePair) { visit(static_cast<SgRenamePair::base_node_type *>(variable_SgRenamePair)); }
333848  void visit(SgInterfaceBody *variable_SgInterfaceBody) { visit(static_cast<SgInterfaceBody::base_node_type *>(variable_SgInterfaceBody)); }
333849  void visit(SgHeaderFileBody *variable_SgHeaderFileBody) { visit(static_cast<SgHeaderFileBody::base_node_type *>(variable_SgHeaderFileBody)); }
333850  void visit(SgLocatedNodeSupport *variable_SgLocatedNodeSupport) { visit(static_cast<SgLocatedNodeSupport::base_node_type *>(variable_SgLocatedNodeSupport)); }
333851  void visit(SgToken *variable_SgToken) { visit(static_cast<SgToken::base_node_type *>(variable_SgToken)); }
333852  void visit(SgLocatedNode *variable_SgLocatedNode) { visit(static_cast<SgLocatedNode::base_node_type *>(variable_SgLocatedNode)); }
333853  virtual void visit(SgNode *variable_SgNode) { visitDefault(variable_SgNode); }
333854 };
333855 
333856 template <class R> class Visitor_R: public ROSE_VisitorPattern {
333857  protected:
333861 public:
333862  virtual ~Visitor_R() {}
333865  virtual R& getResult() { return _result; }
333868  virtual const R& getResult() const { return _result; }
333869 };
333870 
333877 template <class R> class ContextVis_R: public Visitor_R<R> {
333878 protected:
333881  ROSE_VisitorPattern* _strategy; // not owned by this context.
333882  public:
333883  virtual ~ContextVis_R() {_strategy = NULL; }
333887  void setStrategy(ROSE_VisitorPattern* strategy) {_strategy = strategy; }
333888 
333889  virtual void visit(SgName *variable_SgName) { _strategy->visit(variable_SgName); }
333890  virtual void visit(SgSymbolTable *variable_SgSymbolTable) { _strategy->visit(variable_SgSymbolTable); }
333891  virtual void visit(SgPragma *variable_SgPragma) { _strategy->visit(variable_SgPragma); }
333892  virtual void visit(SgModifierNodes *variable_SgModifierNodes) { _strategy->visit(variable_SgModifierNodes); }
333893  virtual void visit(SgConstVolatileModifier *variable_SgConstVolatileModifier) { _strategy->visit(variable_SgConstVolatileModifier); }
333894  virtual void visit(SgStorageModifier *variable_SgStorageModifier) { _strategy->visit(variable_SgStorageModifier); }
333895  virtual void visit(SgAccessModifier *variable_SgAccessModifier) { _strategy->visit(variable_SgAccessModifier); }
333896  virtual void visit(SgFunctionModifier *variable_SgFunctionModifier) { _strategy->visit(variable_SgFunctionModifier); }
333897  virtual void visit(SgUPC_AccessModifier *variable_SgUPC_AccessModifier) { _strategy->visit(variable_SgUPC_AccessModifier); }
333898  virtual void visit(SgLinkageModifier *variable_SgLinkageModifier) { _strategy->visit(variable_SgLinkageModifier); }
333899  virtual void visit(SgSpecialFunctionModifier *variable_SgSpecialFunctionModifier) { _strategy->visit(variable_SgSpecialFunctionModifier); }
333900  virtual void visit(SgTypeModifier *variable_SgTypeModifier) { _strategy->visit(variable_SgTypeModifier); }
333901  virtual void visit(SgElaboratedTypeModifier *variable_SgElaboratedTypeModifier) { _strategy->visit(variable_SgElaboratedTypeModifier); }
333902  virtual void visit(SgBaseClassModifier *variable_SgBaseClassModifier) { _strategy->visit(variable_SgBaseClassModifier); }
333903  virtual void visit(SgDeclarationModifier *variable_SgDeclarationModifier) { _strategy->visit(variable_SgDeclarationModifier); }
333904  virtual void visit(SgStructureModifier *variable_SgStructureModifier) { _strategy->visit(variable_SgStructureModifier); }
333905  virtual void visit(SgOpenclAccessModeModifier *variable_SgOpenclAccessModeModifier) { _strategy->visit(variable_SgOpenclAccessModeModifier); }
333906  virtual void visit(SgModifier *variable_SgModifier) { _strategy->visit(variable_SgModifier); }
333907  virtual void visit(Sg_File_Info *variable_Sg_File_Info) { _strategy->visit(variable_Sg_File_Info); }
333908  virtual void visit(SgSourceFile *variable_SgSourceFile) { _strategy->visit(variable_SgSourceFile); }
333909  virtual void visit(SgUnknownFile *variable_SgUnknownFile) { _strategy->visit(variable_SgUnknownFile); }
333910  virtual void visit(SgFile *variable_SgFile) { _strategy->visit(variable_SgFile); }
333911  virtual void visit(SgFileList *variable_SgFileList) { _strategy->visit(variable_SgFileList); }
333912  virtual void visit(SgDirectory *variable_SgDirectory) { _strategy->visit(variable_SgDirectory); }
333913  virtual void visit(SgDirectoryList *variable_SgDirectoryList) { _strategy->visit(variable_SgDirectoryList); }
333914  virtual void visit(SgProject *variable_SgProject) { _strategy->visit(variable_SgProject); }
333915  virtual void visit(SgOptions *variable_SgOptions) { _strategy->visit(variable_SgOptions); }
333916  virtual void visit(SgUnparse_Info *variable_SgUnparse_Info) { _strategy->visit(variable_SgUnparse_Info); }
333917  virtual void visit(SgIncludeFile *variable_SgIncludeFile) { _strategy->visit(variable_SgIncludeFile); }
333918  virtual void visit(SgFuncDecl_attr *variable_SgFuncDecl_attr) { _strategy->visit(variable_SgFuncDecl_attr); }
333919  virtual void visit(SgClassDecl_attr *variable_SgClassDecl_attr) { _strategy->visit(variable_SgClassDecl_attr); }
333920  virtual void visit(SgTypedefSeq *variable_SgTypedefSeq) { _strategy->visit(variable_SgTypedefSeq); }
333921  virtual void visit(SgFunctionParameterTypeList *variable_SgFunctionParameterTypeList) { _strategy->visit(variable_SgFunctionParameterTypeList); }
333922  virtual void visit(SgTemplateParameter *variable_SgTemplateParameter) { _strategy->visit(variable_SgTemplateParameter); }
333923  virtual void visit(SgTemplateArgument *variable_SgTemplateArgument) { _strategy->visit(variable_SgTemplateArgument); }
333924  virtual void visit(SgTemplateParameterList *variable_SgTemplateParameterList) { _strategy->visit(variable_SgTemplateParameterList); }
333925  virtual void visit(SgTemplateArgumentList *variable_SgTemplateArgumentList) { _strategy->visit(variable_SgTemplateArgumentList); }
333926  virtual void visit(SgBitAttribute *variable_SgBitAttribute) { _strategy->visit(variable_SgBitAttribute); }
333927  virtual void visit(SgAttribute *variable_SgAttribute) { _strategy->visit(variable_SgAttribute); }
333928  virtual void visit(SgExpBaseClass *variable_SgExpBaseClass) { _strategy->visit(variable_SgExpBaseClass); }
333929  virtual void visit(SgNonrealBaseClass *variable_SgNonrealBaseClass) { _strategy->visit(variable_SgNonrealBaseClass); }
333930  virtual void visit(SgBaseClass *variable_SgBaseClass) { _strategy->visit(variable_SgBaseClass); }
333931  virtual void visit(SgUndirectedGraphEdge *variable_SgUndirectedGraphEdge) { _strategy->visit(variable_SgUndirectedGraphEdge); }
333932  virtual void visit(SgDirectedGraphEdge *variable_SgDirectedGraphEdge) { _strategy->visit(variable_SgDirectedGraphEdge); }
333933  virtual void visit(SgGraphNode *variable_SgGraphNode) { _strategy->visit(variable_SgGraphNode); }
333934  virtual void visit(SgGraphEdge *variable_SgGraphEdge) { _strategy->visit(variable_SgGraphEdge); }
333935  virtual void visit(SgStringKeyedBidirectionalGraph *variable_SgStringKeyedBidirectionalGraph) { _strategy->visit(variable_SgStringKeyedBidirectionalGraph); }
333936  virtual void visit(SgIntKeyedBidirectionalGraph *variable_SgIntKeyedBidirectionalGraph) { _strategy->visit(variable_SgIntKeyedBidirectionalGraph); }
333937  virtual void visit(SgBidirectionalGraph *variable_SgBidirectionalGraph) { _strategy->visit(variable_SgBidirectionalGraph); }
333938  virtual void visit(SgIncidenceDirectedGraph *variable_SgIncidenceDirectedGraph) { _strategy->visit(variable_SgIncidenceDirectedGraph); }
333939  virtual void visit(SgIncidenceUndirectedGraph *variable_SgIncidenceUndirectedGraph) { _strategy->visit(variable_SgIncidenceUndirectedGraph); }
333940  virtual void visit(SgGraph *variable_SgGraph) { _strategy->visit(variable_SgGraph); }
333941  virtual void visit(SgGraphNodeList *variable_SgGraphNodeList) { _strategy->visit(variable_SgGraphNodeList); }
333942  virtual void visit(SgGraphEdgeList *variable_SgGraphEdgeList) { _strategy->visit(variable_SgGraphEdgeList); }
333943  virtual void visit(SgQualifiedName *variable_SgQualifiedName) { _strategy->visit(variable_SgQualifiedName); }
333944  virtual void visit(SgNameGroup *variable_SgNameGroup) { _strategy->visit(variable_SgNameGroup); }
333945  virtual void visit(SgDimensionObject *variable_SgDimensionObject) { _strategy->visit(variable_SgDimensionObject); }
333946  virtual void visit(SgDataStatementGroup *variable_SgDataStatementGroup) { _strategy->visit(variable_SgDataStatementGroup); }
333947  virtual void visit(SgDataStatementObject *variable_SgDataStatementObject) { _strategy->visit(variable_SgDataStatementObject); }
333948  virtual void visit(SgDataStatementValue *variable_SgDataStatementValue) { _strategy->visit(variable_SgDataStatementValue); }
333949  virtual void visit(SgFormatItem *variable_SgFormatItem) { _strategy->visit(variable_SgFormatItem); }
333950  virtual void visit(SgFormatItemList *variable_SgFormatItemList) { _strategy->visit(variable_SgFormatItemList); }
333951  virtual void visit(SgTypeTable *variable_SgTypeTable) { _strategy->visit(variable_SgTypeTable); }
333952  virtual void visit(SgHeaderFileReport *variable_SgHeaderFileReport) { _strategy->visit(variable_SgHeaderFileReport); }
333953  virtual void visit(SgSupport *variable_SgSupport) { _strategy->visit(variable_SgSupport); }
333954  virtual void visit(SgTypeUnknown *variable_SgTypeUnknown) { _strategy->visit(variable_SgTypeUnknown); }
333955  virtual void visit(SgTypeChar *variable_SgTypeChar) { _strategy->visit(variable_SgTypeChar); }
333956  virtual void visit(SgTypeSignedChar *variable_SgTypeSignedChar) { _strategy->visit(variable_SgTypeSignedChar); }
333957  virtual void visit(SgTypeUnsignedChar *variable_SgTypeUnsignedChar) { _strategy->visit(variable_SgTypeUnsignedChar); }
333958  virtual void visit(SgTypeShort *variable_SgTypeShort) { _strategy->visit(variable_SgTypeShort); }
333959  virtual void visit(SgTypeSignedShort *variable_SgTypeSignedShort) { _strategy->visit(variable_SgTypeSignedShort); }
333960  virtual void visit(SgTypeUnsignedShort *variable_SgTypeUnsignedShort) { _strategy->visit(variable_SgTypeUnsignedShort); }
333961  virtual void visit(SgTypeInt *variable_SgTypeInt) { _strategy->visit(variable_SgTypeInt); }
333962  virtual void visit(SgTypeSignedInt *variable_SgTypeSignedInt) { _strategy->visit(variable_SgTypeSignedInt); }
333963  virtual void visit(SgTypeUnsignedInt *variable_SgTypeUnsignedInt) { _strategy->visit(variable_SgTypeUnsignedInt); }
333964  virtual void visit(SgTypeLong *variable_SgTypeLong) { _strategy->visit(variable_SgTypeLong); }
333965  virtual void visit(SgTypeSignedLong *variable_SgTypeSignedLong) { _strategy->visit(variable_SgTypeSignedLong); }
333966  virtual void visit(SgTypeUnsignedLong *variable_SgTypeUnsignedLong) { _strategy->visit(variable_SgTypeUnsignedLong); }
333967  virtual void visit(SgTypeVoid *variable_SgTypeVoid) { _strategy->visit(variable_SgTypeVoid); }
333968  virtual void visit(SgTypeGlobalVoid *variable_SgTypeGlobalVoid) { _strategy->visit(variable_SgTypeGlobalVoid); }
333969  virtual void visit(SgTypeWchar *variable_SgTypeWchar) { _strategy->visit(variable_SgTypeWchar); }
333970  virtual void visit(SgTypeFloat *variable_SgTypeFloat) { _strategy->visit(variable_SgTypeFloat); }
333971  virtual void visit(SgTypeDouble *variable_SgTypeDouble) { _strategy->visit(variable_SgTypeDouble); }
333972  virtual void visit(SgTypeLongLong *variable_SgTypeLongLong) { _strategy->visit(variable_SgTypeLongLong); }
333973  virtual void visit(SgTypeSignedLongLong *variable_SgTypeSignedLongLong) { _strategy->visit(variable_SgTypeSignedLongLong); }
333974  virtual void visit(SgTypeUnsignedLongLong *variable_SgTypeUnsignedLongLong) { _strategy->visit(variable_SgTypeUnsignedLongLong); }
333975  virtual void visit(SgTypeLongDouble *variable_SgTypeLongDouble) { _strategy->visit(variable_SgTypeLongDouble); }
333976  virtual void visit(SgTypeFloat80 *variable_SgTypeFloat80) { _strategy->visit(variable_SgTypeFloat80); }
333977  virtual void visit(SgTypeFloat128 *variable_SgTypeFloat128) { _strategy->visit(variable_SgTypeFloat128); }
333978  virtual void visit(SgTypeString *variable_SgTypeString) { _strategy->visit(variable_SgTypeString); }
333979  virtual void visit(SgTypeBool *variable_SgTypeBool) { _strategy->visit(variable_SgTypeBool); }
333980  virtual void visit(SgTypeFixed *variable_SgTypeFixed) { _strategy->visit(variable_SgTypeFixed); }
333981  virtual void visit(SgTypeMatrix *variable_SgTypeMatrix) { _strategy->visit(variable_SgTypeMatrix); }
333982  virtual void visit(SgTypeTuple *variable_SgTypeTuple) { _strategy->visit(variable_SgTypeTuple); }
333983  virtual void visit(SgTypeNullptr *variable_SgTypeNullptr) { _strategy->visit(variable_SgTypeNullptr); }
333984  virtual void visit(SgTypeComplex *variable_SgTypeComplex) { _strategy->visit(variable_SgTypeComplex); }
333985  virtual void visit(SgTypeImaginary *variable_SgTypeImaginary) { _strategy->visit(variable_SgTypeImaginary); }
333986  virtual void visit(SgTypeDefault *variable_SgTypeDefault) { _strategy->visit(variable_SgTypeDefault); }
333987  virtual void visit(SgPointerMemberType *variable_SgPointerMemberType) { _strategy->visit(variable_SgPointerMemberType); }
333988  virtual void visit(SgReferenceType *variable_SgReferenceType) { _strategy->visit(variable_SgReferenceType); }
333989  virtual void visit(SgRvalueReferenceType *variable_SgRvalueReferenceType) { _strategy->visit(variable_SgRvalueReferenceType); }
333990  virtual void visit(SgDeclType *variable_SgDeclType) { _strategy->visit(variable_SgDeclType); }
333991  virtual void visit(SgTypeOfType *variable_SgTypeOfType) { _strategy->visit(variable_SgTypeOfType); }
333992  virtual void visit(SgTypeCAFTeam *variable_SgTypeCAFTeam) { _strategy->visit(variable_SgTypeCAFTeam); }
333993  virtual void visit(SgTypeUnsigned128bitInteger *variable_SgTypeUnsigned128bitInteger) { _strategy->visit(variable_SgTypeUnsigned128bitInteger); }
333994  virtual void visit(SgTypeSigned128bitInteger *variable_SgTypeSigned128bitInteger) { _strategy->visit(variable_SgTypeSigned128bitInteger); }
333995  virtual void visit(SgTypeLabel *variable_SgTypeLabel) { _strategy->visit(variable_SgTypeLabel); }
333996  virtual void visit(SgTemplateType *variable_SgTemplateType) { _strategy->visit(variable_SgTemplateType); }
333997  virtual void visit(SgEnumType *variable_SgEnumType) { _strategy->visit(variable_SgEnumType); }
333998  virtual void visit(SgTypedefType *variable_SgTypedefType) { _strategy->visit(variable_SgTypedefType); }
333999  virtual void visit(SgNonrealType *variable_SgNonrealType) { _strategy->visit(variable_SgNonrealType); }
334000  virtual void visit(SgAutoType *variable_SgAutoType) { _strategy->visit(variable_SgAutoType); }
334001  virtual void visit(SgModifierType *variable_SgModifierType) { _strategy->visit(variable_SgModifierType); }
334002  virtual void visit(SgPartialFunctionModifierType *variable_SgPartialFunctionModifierType) { _strategy->visit(variable_SgPartialFunctionModifierType); }
334003  virtual void visit(SgArrayType *variable_SgArrayType) { _strategy->visit(variable_SgArrayType); }
334004  virtual void visit(SgTypeEllipse *variable_SgTypeEllipse) { _strategy->visit(variable_SgTypeEllipse); }
334005  virtual void visit(SgTypeCrayPointer *variable_SgTypeCrayPointer) { _strategy->visit(variable_SgTypeCrayPointer); }
334006  virtual void visit(SgPartialFunctionType *variable_SgPartialFunctionType) { _strategy->visit(variable_SgPartialFunctionType); }
334007  virtual void visit(SgMemberFunctionType *variable_SgMemberFunctionType) { _strategy->visit(variable_SgMemberFunctionType); }
334008  virtual void visit(SgFunctionType *variable_SgFunctionType) { _strategy->visit(variable_SgFunctionType); }
334009  virtual void visit(SgPointerType *variable_SgPointerType) { _strategy->visit(variable_SgPointerType); }
334010  virtual void visit(SgClassType *variable_SgClassType) { _strategy->visit(variable_SgClassType); }
334011  virtual void visit(SgNamedType *variable_SgNamedType) { _strategy->visit(variable_SgNamedType); }
334012  virtual void visit(SgQualifiedNameType *variable_SgQualifiedNameType) { _strategy->visit(variable_SgQualifiedNameType); }
334013  virtual void visit(SgTypeChar16 *variable_SgTypeChar16) { _strategy->visit(variable_SgTypeChar16); }
334014  virtual void visit(SgTypeChar32 *variable_SgTypeChar32) { _strategy->visit(variable_SgTypeChar32); }
334015  virtual void visit(SgType *variable_SgType) { _strategy->visit(variable_SgType); }
334016  virtual void visit(SgForStatement *variable_SgForStatement) { _strategy->visit(variable_SgForStatement); }
334017  virtual void visit(SgForInitStatement *variable_SgForInitStatement) { _strategy->visit(variable_SgForInitStatement); }
334018  virtual void visit(SgRangeBasedForStatement *variable_SgRangeBasedForStatement) { _strategy->visit(variable_SgRangeBasedForStatement); }
334019  virtual void visit(SgCatchStatementSeq *variable_SgCatchStatementSeq) { _strategy->visit(variable_SgCatchStatementSeq); }
334020  virtual void visit(SgFunctionParameterList *variable_SgFunctionParameterList) { _strategy->visit(variable_SgFunctionParameterList); }
334021  virtual void visit(SgCtorInitializerList *variable_SgCtorInitializerList) { _strategy->visit(variable_SgCtorInitializerList); }
334022  virtual void visit(SgBasicBlock *variable_SgBasicBlock) { _strategy->visit(variable_SgBasicBlock); }
334023  virtual void visit(SgGlobal *variable_SgGlobal) { _strategy->visit(variable_SgGlobal); }
334024  virtual void visit(SgIfStmt *variable_SgIfStmt) { _strategy->visit(variable_SgIfStmt); }
334025  virtual void visit(SgWhileStmt *variable_SgWhileStmt) { _strategy->visit(variable_SgWhileStmt); }
334026  virtual void visit(SgDoWhileStmt *variable_SgDoWhileStmt) { _strategy->visit(variable_SgDoWhileStmt); }
334027  virtual void visit(SgSwitchStatement *variable_SgSwitchStatement) { _strategy->visit(variable_SgSwitchStatement); }
334028  virtual void visit(SgCatchOptionStmt *variable_SgCatchOptionStmt) { _strategy->visit(variable_SgCatchOptionStmt); }
334029  virtual void visit(SgFunctionParameterScope *variable_SgFunctionParameterScope) { _strategy->visit(variable_SgFunctionParameterScope); }
334030  virtual void visit(SgDeclarationScope *variable_SgDeclarationScope) { _strategy->visit(variable_SgDeclarationScope); }
334031  virtual void visit(SgVariableDefinition *variable_SgVariableDefinition) { _strategy->visit(variable_SgVariableDefinition); }
334032  virtual void visit(SgStmtDeclarationStatement *variable_SgStmtDeclarationStatement) { _strategy->visit(variable_SgStmtDeclarationStatement); }
334033  virtual void visit(SgEnumDeclaration *variable_SgEnumDeclaration) { _strategy->visit(variable_SgEnumDeclaration); }
334034  virtual void visit(SgAsmStmt *variable_SgAsmStmt) { _strategy->visit(variable_SgAsmStmt); }
334035  virtual void visit(SgFunctionTypeTable *variable_SgFunctionTypeTable) { _strategy->visit(variable_SgFunctionTypeTable); }
334036  virtual void visit(SgExprStatement *variable_SgExprStatement) { _strategy->visit(variable_SgExprStatement); }
334037  virtual void visit(SgLabelStatement *variable_SgLabelStatement) { _strategy->visit(variable_SgLabelStatement); }
334038  virtual void visit(SgCaseOptionStmt *variable_SgCaseOptionStmt) { _strategy->visit(variable_SgCaseOptionStmt); }
334039  virtual void visit(SgTryStmt *variable_SgTryStmt) { _strategy->visit(variable_SgTryStmt); }
334040  virtual void visit(SgDefaultOptionStmt *variable_SgDefaultOptionStmt) { _strategy->visit(variable_SgDefaultOptionStmt); }
334041  virtual void visit(SgBreakStmt *variable_SgBreakStmt) { _strategy->visit(variable_SgBreakStmt); }
334042  virtual void visit(SgContinueStmt *variable_SgContinueStmt) { _strategy->visit(variable_SgContinueStmt); }
334043  virtual void visit(SgReturnStmt *variable_SgReturnStmt) { _strategy->visit(variable_SgReturnStmt); }
334044  virtual void visit(SgGotoStatement *variable_SgGotoStatement) { _strategy->visit(variable_SgGotoStatement); }
334045  virtual void visit(SgSpawnStmt *variable_SgSpawnStmt) { _strategy->visit(variable_SgSpawnStmt); }
334046  virtual void visit(SgTemplateTypedefDeclaration *variable_SgTemplateTypedefDeclaration) { _strategy->visit(variable_SgTemplateTypedefDeclaration); }
334047  virtual void visit(SgTemplateInstantiationTypedefDeclaration *variable_SgTemplateInstantiationTypedefDeclaration) { _strategy->visit(variable_SgTemplateInstantiationTypedefDeclaration); }
334048  virtual void visit(SgTypedefDeclaration *variable_SgTypedefDeclaration) { _strategy->visit(variable_SgTypedefDeclaration); }
334049  virtual void visit(SgNullStatement *variable_SgNullStatement) { _strategy->visit(variable_SgNullStatement); }
334050  virtual void visit(SgVariantStatement *variable_SgVariantStatement) { _strategy->visit(variable_SgVariantStatement); }
334051  virtual void visit(SgPragmaDeclaration *variable_SgPragmaDeclaration) { _strategy->visit(variable_SgPragmaDeclaration); }
334052  virtual void visit(SgTemplateClassDeclaration *variable_SgTemplateClassDeclaration) { _strategy->visit(variable_SgTemplateClassDeclaration); }
334053  virtual void visit(SgTemplateMemberFunctionDeclaration *variable_SgTemplateMemberFunctionDeclaration) { _strategy->visit(variable_SgTemplateMemberFunctionDeclaration); }
334054  virtual void visit(SgTemplateFunctionDeclaration *variable_SgTemplateFunctionDeclaration) { _strategy->visit(variable_SgTemplateFunctionDeclaration); }
334055  virtual void visit(SgTemplateVariableDeclaration *variable_SgTemplateVariableDeclaration) { _strategy->visit(variable_SgTemplateVariableDeclaration); }
334056  virtual void visit(SgTemplateDeclaration *variable_SgTemplateDeclaration) { _strategy->visit(variable_SgTemplateDeclaration); }
334057  virtual void visit(SgVariableDeclaration *variable_SgVariableDeclaration) { _strategy->visit(variable_SgVariableDeclaration); }
334058  virtual void visit(SgTemplateInstantiationDecl *variable_SgTemplateInstantiationDecl) { _strategy->visit(variable_SgTemplateInstantiationDecl); }
334059  virtual void visit(SgTemplateInstantiationDefn *variable_SgTemplateInstantiationDefn) { _strategy->visit(variable_SgTemplateInstantiationDefn); }
334060  virtual void visit(SgTemplateInstantiationFunctionDecl *variable_SgTemplateInstantiationFunctionDecl) { _strategy->visit(variable_SgTemplateInstantiationFunctionDecl); }
334061  virtual void visit(SgTemplateInstantiationMemberFunctionDecl *variable_SgTemplateInstantiationMemberFunctionDecl) { _strategy->visit(variable_SgTemplateInstantiationMemberFunctionDecl); }
334062  virtual void visit(SgNonrealDecl *variable_SgNonrealDecl) { _strategy->visit(variable_SgNonrealDecl); }
334063  virtual void visit(SgWithStatement *variable_SgWithStatement) { _strategy->visit(variable_SgWithStatement); }
334064  virtual void visit(SgPassStatement *variable_SgPassStatement) { _strategy->visit(variable_SgPassStatement); }
334065  virtual void visit(SgAssertStmt *variable_SgAssertStmt) { _strategy->visit(variable_SgAssertStmt); }
334066  virtual void visit(SgExecStatement *variable_SgExecStatement) { _strategy->visit(variable_SgExecStatement); }
334067  virtual void visit(SgProgramHeaderStatement *variable_SgProgramHeaderStatement) { _strategy->visit(variable_SgProgramHeaderStatement); }
334068  virtual void visit(SgProcedureHeaderStatement *variable_SgProcedureHeaderStatement) { _strategy->visit(variable_SgProcedureHeaderStatement); }
334069  virtual void visit(SgEntryStatement *variable_SgEntryStatement) { _strategy->visit(variable_SgEntryStatement); }
334070  virtual void visit(SgFortranNonblockedDo *variable_SgFortranNonblockedDo) { _strategy->visit(variable_SgFortranNonblockedDo); }
334071  virtual void visit(SgInterfaceStatement *variable_SgInterfaceStatement) { _strategy->visit(variable_SgInterfaceStatement); }
334072  virtual void visit(SgParameterStatement *variable_SgParameterStatement) { _strategy->visit(variable_SgParameterStatement); }
334073  virtual void visit(SgCommonBlock *variable_SgCommonBlock) { _strategy->visit(variable_SgCommonBlock); }
334074  virtual void visit(SgModuleStatement *variable_SgModuleStatement) { _strategy->visit(variable_SgModuleStatement); }
334075  virtual void visit(SgUseStatement *variable_SgUseStatement) { _strategy->visit(variable_SgUseStatement); }
334076  virtual void visit(SgProcessControlStatement *variable_SgProcessControlStatement) { _strategy->visit(variable_SgProcessControlStatement); }
334077  virtual void visit(SgPrintStatement *variable_SgPrintStatement) { _strategy->visit(variable_SgPrintStatement); }
334078  virtual void visit(SgReadStatement *variable_SgReadStatement) { _strategy->visit(variable_SgReadStatement); }
334079  virtual void visit(SgWriteStatement *variable_SgWriteStatement) { _strategy->visit(variable_SgWriteStatement); }
334080  virtual void visit(SgOpenStatement *variable_SgOpenStatement) { _strategy->visit(variable_SgOpenStatement); }
334081  virtual void visit(SgCloseStatement *variable_SgCloseStatement) { _strategy->visit(variable_SgCloseStatement); }
334082  virtual void visit(SgInquireStatement *variable_SgInquireStatement) { _strategy->visit(variable_SgInquireStatement); }
334083  virtual void visit(SgFlushStatement *variable_SgFlushStatement) { _strategy->visit(variable_SgFlushStatement); }
334084  virtual void visit(SgBackspaceStatement *variable_SgBackspaceStatement) { _strategy->visit(variable_SgBackspaceStatement); }
334085  virtual void visit(SgRewindStatement *variable_SgRewindStatement) { _strategy->visit(variable_SgRewindStatement); }
334086  virtual void visit(SgEndfileStatement *variable_SgEndfileStatement) { _strategy->visit(variable_SgEndfileStatement); }
334087  virtual void visit(SgWaitStatement *variable_SgWaitStatement) { _strategy->visit(variable_SgWaitStatement); }
334088  virtual void visit(SgCAFWithTeamStatement *variable_SgCAFWithTeamStatement) { _strategy->visit(variable_SgCAFWithTeamStatement); }
334089  virtual void visit(SgFormatStatement *variable_SgFormatStatement) { _strategy->visit(variable_SgFormatStatement); }
334090  virtual void visit(SgFortranDo *variable_SgFortranDo) { _strategy->visit(variable_SgFortranDo); }
334091  virtual void visit(SgForAllStatement *variable_SgForAllStatement) { _strategy->visit(variable_SgForAllStatement); }
334092  virtual void visit(SgIOStatement *variable_SgIOStatement) { _strategy->visit(variable_SgIOStatement); }
334093  virtual void visit(SgSyncAllStatement *variable_SgSyncAllStatement) { _strategy->visit(variable_SgSyncAllStatement); }
334094  virtual void visit(SgSyncImagesStatement *variable_SgSyncImagesStatement) { _strategy->visit(variable_SgSyncImagesStatement); }
334095  virtual void visit(SgSyncMemoryStatement *variable_SgSyncMemoryStatement) { _strategy->visit(variable_SgSyncMemoryStatement); }
334096  virtual void visit(SgSyncTeamStatement *variable_SgSyncTeamStatement) { _strategy->visit(variable_SgSyncTeamStatement); }
334097  virtual void visit(SgLockStatement *variable_SgLockStatement) { _strategy->visit(variable_SgLockStatement); }
334098  virtual void visit(SgUnlockStatement *variable_SgUnlockStatement) { _strategy->visit(variable_SgUnlockStatement); }
334099  virtual void visit(SgImageControlStatement *variable_SgImageControlStatement) { _strategy->visit(variable_SgImageControlStatement); }
334100  virtual void visit(SgUpcNotifyStatement *variable_SgUpcNotifyStatement) { _strategy->visit(variable_SgUpcNotifyStatement); }
334101  virtual void visit(SgUpcWaitStatement *variable_SgUpcWaitStatement) { _strategy->visit(variable_SgUpcWaitStatement); }
334102  virtual void visit(SgUpcBarrierStatement *variable_SgUpcBarrierStatement) { _strategy->visit(variable_SgUpcBarrierStatement); }
334103  virtual void visit(SgUpcFenceStatement *variable_SgUpcFenceStatement) { _strategy->visit(variable_SgUpcFenceStatement); }
334104  virtual void visit(SgUpcForAllStatement *variable_SgUpcForAllStatement) { _strategy->visit(variable_SgUpcForAllStatement); }
334105  virtual void visit(SgUpirSpmdStatement *variable_SgUpirSpmdStatement) { _strategy->visit(variable_SgUpirSpmdStatement); }
334106  virtual void visit(SgOmpLoopStatement *variable_SgOmpLoopStatement) { _strategy->visit(variable_SgOmpLoopStatement); }
334107  virtual void visit(SgOmpScanStatement *variable_SgOmpScanStatement) { _strategy->visit(variable_SgOmpScanStatement); }
334108  virtual void visit(SgOmpTaskloopStatement *variable_SgOmpTaskloopStatement) { _strategy->visit(variable_SgOmpTaskloopStatement); }
334109  virtual void visit(SgOmpTaskgroupStatement *variable_SgOmpTaskgroupStatement) { _strategy->visit(variable_SgOmpTaskgroupStatement); }
334110  virtual void visit(SgOmpDepobjStatement *variable_SgOmpDepobjStatement) { _strategy->visit(variable_SgOmpDepobjStatement); }
334111  virtual void visit(SgOmpTeamsStatement *variable_SgOmpTeamsStatement) { _strategy->visit(variable_SgOmpTeamsStatement); }
334112  virtual void visit(SgOmpCancellationPointStatement *variable_SgOmpCancellationPointStatement) { _strategy->visit(variable_SgOmpCancellationPointStatement); }
334113  virtual void visit(SgOmpDeclareMapperStatement *variable_SgOmpDeclareMapperStatement) { _strategy->visit(variable_SgOmpDeclareMapperStatement); }
334114  virtual void visit(SgOmpCancelStatement *variable_SgOmpCancelStatement) { _strategy->visit(variable_SgOmpCancelStatement); }
334115  virtual void visit(SgOmpDistributeStatement *variable_SgOmpDistributeStatement) { _strategy->visit(variable_SgOmpDistributeStatement); }
334116  virtual void visit(SgOmpMetadirectiveStatement *variable_SgOmpMetadirectiveStatement) { _strategy->visit(variable_SgOmpMetadirectiveStatement); }
334117  virtual void visit(SgOmpSingleStatement *variable_SgOmpSingleStatement) { _strategy->visit(variable_SgOmpSingleStatement); }
334118  virtual void visit(SgOmpTaskStatement *variable_SgOmpTaskStatement) { _strategy->visit(variable_SgOmpTaskStatement); }
334119  virtual void visit(SgOmpTargetEnterDataStatement *variable_SgOmpTargetEnterDataStatement) { _strategy->visit(variable_SgOmpTargetEnterDataStatement); }
334120  virtual void visit(SgOmpTargetExitDataStatement *variable_SgOmpTargetExitDataStatement) { _strategy->visit(variable_SgOmpTargetExitDataStatement); }
334121  virtual void visit(SgUpirWorksharingStatement *variable_SgUpirWorksharingStatement) { _strategy->visit(variable_SgUpirWorksharingStatement); }
334122  virtual void visit(SgOmpForSimdStatement *variable_SgOmpForSimdStatement) { _strategy->visit(variable_SgOmpForSimdStatement); }
334123  virtual void visit(SgOmpDoStatement *variable_SgOmpDoStatement) { _strategy->visit(variable_SgOmpDoStatement); }
334124  virtual void visit(SgOmpSectionsStatement *variable_SgOmpSectionsStatement) { _strategy->visit(variable_SgOmpSectionsStatement); }
334125  virtual void visit(SgOmpAtomicStatement *variable_SgOmpAtomicStatement) { _strategy->visit(variable_SgOmpAtomicStatement); }
334126  virtual void visit(SgUpirTaskStatement *variable_SgUpirTaskStatement) { _strategy->visit(variable_SgUpirTaskStatement); }
334127  virtual void visit(SgOmpTargetDataStatement *variable_SgOmpTargetDataStatement) { _strategy->visit(variable_SgOmpTargetDataStatement); }
334128  virtual void visit(SgOmpTargetParallelForStatement *variable_SgOmpTargetParallelForStatement) { _strategy->visit(variable_SgOmpTargetParallelForStatement); }
334129  virtual void visit(SgOmpTargetParallelStatement *variable_SgOmpTargetParallelStatement) { _strategy->visit(variable_SgOmpTargetParallelStatement); }
334130  virtual void visit(SgOmpDistributeSimdStatement *variable_SgOmpDistributeSimdStatement) { _strategy->visit(variable_SgOmpDistributeSimdStatement); }
334131  virtual void visit(SgOmpDistributeParallelForStatement *variable_SgOmpDistributeParallelForStatement) { _strategy->visit(variable_SgOmpDistributeParallelForStatement); }
334132  virtual void visit(SgOmpDistributeParallelForSimdStatement *variable_SgOmpDistributeParallelForSimdStatement) { _strategy->visit(variable_SgOmpDistributeParallelForSimdStatement); }
334133  virtual void visit(SgOmpTaskloopSimdStatement *variable_SgOmpTaskloopSimdStatement) { _strategy->visit(variable_SgOmpTaskloopSimdStatement); }
334134  virtual void visit(SgOmpTargetUpdateStatement *variable_SgOmpTargetUpdateStatement) { _strategy->visit(variable_SgOmpTargetUpdateStatement); }
334135  virtual void visit(SgOmpTargetParallelForSimdStatement *variable_SgOmpTargetParallelForSimdStatement) { _strategy->visit(variable_SgOmpTargetParallelForSimdStatement); }
334136  virtual void visit(SgOmpTargetParallelLoopStatement *variable_SgOmpTargetParallelLoopStatement) { _strategy->visit(variable_SgOmpTargetParallelLoopStatement); }
334137  virtual void visit(SgOmpTargetSimdStatement *variable_SgOmpTargetSimdStatement) { _strategy->visit(variable_SgOmpTargetSimdStatement); }
334138  virtual void visit(SgOmpTargetTeamsStatement *variable_SgOmpTargetTeamsStatement) { _strategy->visit(variable_SgOmpTargetTeamsStatement); }
334139  virtual void visit(SgOmpTargetTeamsDistributeStatement *variable_SgOmpTargetTeamsDistributeStatement) { _strategy->visit(variable_SgOmpTargetTeamsDistributeStatement); }
334140  virtual void visit(SgOmpTargetTeamsDistributeSimdStatement *variable_SgOmpTargetTeamsDistributeSimdStatement) { _strategy->visit(variable_SgOmpTargetTeamsDistributeSimdStatement); }
334141  virtual void visit(SgOmpTargetTeamsLoopStatement *variable_SgOmpTargetTeamsLoopStatement) { _strategy->visit(variable_SgOmpTargetTeamsLoopStatement); }
334142  virtual void visit(SgOmpTargetTeamsDistributeParallelForStatement *variable_SgOmpTargetTeamsDistributeParallelForStatement) { _strategy->visit(variable_SgOmpTargetTeamsDistributeParallelForStatement); }
334143  virtual void visit(SgOmpTargetTeamsDistributeParallelForSimdStatement *variable_SgOmpTargetTeamsDistributeParallelForSimdStatement) { _strategy->visit(variable_SgOmpTargetTeamsDistributeParallelForSimdStatement); }
334144  virtual void visit(SgOmpMasterTaskloopSimdStatement *variable_SgOmpMasterTaskloopSimdStatement) { _strategy->visit(variable_SgOmpMasterTaskloopSimdStatement); }
334145  virtual void visit(SgOmpParallelMasterTaskloopStatement *variable_SgOmpParallelMasterTaskloopStatement) { _strategy->visit(variable_SgOmpParallelMasterTaskloopStatement); }
334146  virtual void visit(SgOmpParallelMasterTaskloopSimdStatement *variable_SgOmpParallelMasterTaskloopSimdStatement) { _strategy->visit(variable_SgOmpParallelMasterTaskloopSimdStatement); }
334147  virtual void visit(SgOmpTeamsDistributeStatement *variable_SgOmpTeamsDistributeStatement) { _strategy->visit(variable_SgOmpTeamsDistributeStatement); }
334148  virtual void visit(SgOmpTeamsDistributeSimdStatement *variable_SgOmpTeamsDistributeSimdStatement) { _strategy->visit(variable_SgOmpTeamsDistributeSimdStatement); }
334149  virtual void visit(SgOmpTeamsDistributeParallelForStatement *variable_SgOmpTeamsDistributeParallelForStatement) { _strategy->visit(variable_SgOmpTeamsDistributeParallelForStatement); }
334150  virtual void visit(SgOmpTeamsDistributeParallelForSimdStatement *variable_SgOmpTeamsDistributeParallelForSimdStatement) { _strategy->visit(variable_SgOmpTeamsDistributeParallelForSimdStatement); }
334151  virtual void visit(SgOmpTeamsLoopStatement *variable_SgOmpTeamsLoopStatement) { _strategy->visit(variable_SgOmpTeamsLoopStatement); }
334152  virtual void visit(SgOmpParallelMasterStatement *variable_SgOmpParallelMasterStatement) { _strategy->visit(variable_SgOmpParallelMasterStatement); }
334153  virtual void visit(SgOmpMasterTaskloopStatement *variable_SgOmpMasterTaskloopStatement) { _strategy->visit(variable_SgOmpMasterTaskloopStatement); }
334154  virtual void visit(SgOmpParallelLoopStatement *variable_SgOmpParallelLoopStatement) { _strategy->visit(variable_SgOmpParallelLoopStatement); }
334155  virtual void visit(SgOmpUnrollStatement *variable_SgOmpUnrollStatement) { _strategy->visit(variable_SgOmpUnrollStatement); }
334156  virtual void visit(SgOmpTileStatement *variable_SgOmpTileStatement) { _strategy->visit(variable_SgOmpTileStatement); }
334157  virtual void visit(SgUpirSimdStatement *variable_SgUpirSimdStatement) { _strategy->visit(variable_SgUpirSimdStatement); }
334158  virtual void visit(SgOmpCriticalStatement *variable_SgOmpCriticalStatement) { _strategy->visit(variable_SgOmpCriticalStatement); }
334159  virtual void visit(SgOmpOrderedStatement *variable_SgOmpOrderedStatement) { _strategy->visit(variable_SgOmpOrderedStatement); }
334160  virtual void visit(SgUpirLoopStatement *variable_SgUpirLoopStatement) { _strategy->visit(variable_SgUpirLoopStatement); }
334161  virtual void visit(SgUpirLoopParallelStatement *variable_SgUpirLoopParallelStatement) { _strategy->visit(variable_SgUpirLoopParallelStatement); }
334162  virtual void visit(SgUpirSyncStatement *variable_SgUpirSyncStatement) { _strategy->visit(variable_SgUpirSyncStatement); }
334163  virtual void visit(SgUpirFieldBodyStatement *variable_SgUpirFieldBodyStatement) { _strategy->visit(variable_SgUpirFieldBodyStatement); }
334164  virtual void visit(SgOmpMasterStatement *variable_SgOmpMasterStatement) { _strategy->visit(variable_SgOmpMasterStatement); }
334165  virtual void visit(SgOmpSectionStatement *variable_SgOmpSectionStatement) { _strategy->visit(variable_SgOmpSectionStatement); }
334166  virtual void visit(SgOmpWorkshareStatement *variable_SgOmpWorkshareStatement) { _strategy->visit(variable_SgOmpWorkshareStatement); }
334167  virtual void visit(SgOmpFlushStatement *variable_SgOmpFlushStatement) { _strategy->visit(variable_SgOmpFlushStatement); }
334168  virtual void visit(SgOmpAllocateStatement *variable_SgOmpAllocateStatement) { _strategy->visit(variable_SgOmpAllocateStatement); }
334169  virtual void visit(SgOmpOrderedDependStatement *variable_SgOmpOrderedDependStatement) { _strategy->visit(variable_SgOmpOrderedDependStatement); }
334170  virtual void visit(SgUpirBodyStatement *variable_SgUpirBodyStatement) { _strategy->visit(variable_SgUpirBodyStatement); }
334171  virtual void visit(SgUpirFieldStatement *variable_SgUpirFieldStatement) { _strategy->visit(variable_SgUpirFieldStatement); }
334172  virtual void visit(SgBlockDataStatement *variable_SgBlockDataStatement) { _strategy->visit(variable_SgBlockDataStatement); }
334173  virtual void visit(SgImplicitStatement *variable_SgImplicitStatement) { _strategy->visit(variable_SgImplicitStatement); }
334174  virtual void visit(SgStatementFunctionStatement *variable_SgStatementFunctionStatement) { _strategy->visit(variable_SgStatementFunctionStatement); }
334175  virtual void visit(SgWhereStatement *variable_SgWhereStatement) { _strategy->visit(variable_SgWhereStatement); }
334176  virtual void visit(SgNullifyStatement *variable_SgNullifyStatement) { _strategy->visit(variable_SgNullifyStatement); }
334177  virtual void visit(SgEquivalenceStatement *variable_SgEquivalenceStatement) { _strategy->visit(variable_SgEquivalenceStatement); }
334178  virtual void visit(SgDerivedTypeStatement *variable_SgDerivedTypeStatement) { _strategy->visit(variable_SgDerivedTypeStatement); }
334179  virtual void visit(SgAttributeSpecificationStatement *variable_SgAttributeSpecificationStatement) { _strategy->visit(variable_SgAttributeSpecificationStatement); }
334180  virtual void visit(SgAllocateStatement *variable_SgAllocateStatement) { _strategy->visit(variable_SgAllocateStatement); }
334181  virtual void visit(SgDeallocateStatement *variable_SgDeallocateStatement) { _strategy->visit(variable_SgDeallocateStatement); }
334182  virtual void visit(SgContainsStatement *variable_SgContainsStatement) { _strategy->visit(variable_SgContainsStatement); }
334183  virtual void visit(SgSequenceStatement *variable_SgSequenceStatement) { _strategy->visit(variable_SgSequenceStatement); }
334184  virtual void visit(SgElseWhereStatement *variable_SgElseWhereStatement) { _strategy->visit(variable_SgElseWhereStatement); }
334185  virtual void visit(SgArithmeticIfStatement *variable_SgArithmeticIfStatement) { _strategy->visit(variable_SgArithmeticIfStatement); }
334186  virtual void visit(SgAssignStatement *variable_SgAssignStatement) { _strategy->visit(variable_SgAssignStatement); }
334187  virtual void visit(SgComputedGotoStatement *variable_SgComputedGotoStatement) { _strategy->visit(variable_SgComputedGotoStatement); }
334188  virtual void visit(SgAssignedGotoStatement *variable_SgAssignedGotoStatement) { _strategy->visit(variable_SgAssignedGotoStatement); }
334189  virtual void visit(SgNamelistStatement *variable_SgNamelistStatement) { _strategy->visit(variable_SgNamelistStatement); }
334190  virtual void visit(SgImportStatement *variable_SgImportStatement) { _strategy->visit(variable_SgImportStatement); }
334191  virtual void visit(SgAssociateStatement *variable_SgAssociateStatement) { _strategy->visit(variable_SgAssociateStatement); }
334192  virtual void visit(SgFortranIncludeLine *variable_SgFortranIncludeLine) { _strategy->visit(variable_SgFortranIncludeLine); }
334193  virtual void visit(SgNamespaceDeclarationStatement *variable_SgNamespaceDeclarationStatement) { _strategy->visit(variable_SgNamespaceDeclarationStatement); }
334194  virtual void visit(SgNamespaceAliasDeclarationStatement *variable_SgNamespaceAliasDeclarationStatement) { _strategy->visit(variable_SgNamespaceAliasDeclarationStatement); }
334195  virtual void visit(SgNamespaceDefinitionStatement *variable_SgNamespaceDefinitionStatement) { _strategy->visit(variable_SgNamespaceDefinitionStatement); }
334196  virtual void visit(SgUsingDeclarationStatement *variable_SgUsingDeclarationStatement) { _strategy->visit(variable_SgUsingDeclarationStatement); }
334197  virtual void visit(SgUsingDirectiveStatement *variable_SgUsingDirectiveStatement) { _strategy->visit(variable_SgUsingDirectiveStatement); }
334198  virtual void visit(SgTemplateInstantiationDirectiveStatement *variable_SgTemplateInstantiationDirectiveStatement) { _strategy->visit(variable_SgTemplateInstantiationDirectiveStatement); }
334199  virtual void visit(SgStaticAssertionDeclaration *variable_SgStaticAssertionDeclaration) { _strategy->visit(variable_SgStaticAssertionDeclaration); }
334200  virtual void visit(SgTemplateClassDefinition *variable_SgTemplateClassDefinition) { _strategy->visit(variable_SgTemplateClassDefinition); }
334201  virtual void visit(SgTemplateFunctionDefinition *variable_SgTemplateFunctionDefinition) { _strategy->visit(variable_SgTemplateFunctionDefinition); }
334202  virtual void visit(SgClassDeclaration *variable_SgClassDeclaration) { _strategy->visit(variable_SgClassDeclaration); }
334203  virtual void visit(SgClassDefinition *variable_SgClassDefinition) { _strategy->visit(variable_SgClassDefinition); }
334204  virtual void visit(SgFunctionDefinition *variable_SgFunctionDefinition) { _strategy->visit(variable_SgFunctionDefinition); }
334205  virtual void visit(SgScopeStatement *variable_SgScopeStatement) { _strategy->visit(variable_SgScopeStatement); }
334206  virtual void visit(SgMemberFunctionDeclaration *variable_SgMemberFunctionDeclaration) { _strategy->visit(variable_SgMemberFunctionDeclaration); }
334207  virtual void visit(SgFunctionDeclaration *variable_SgFunctionDeclaration) { _strategy->visit(variable_SgFunctionDeclaration); }
334208  virtual void visit(SgIncludeDirectiveStatement *variable_SgIncludeDirectiveStatement) { _strategy->visit(variable_SgIncludeDirectiveStatement); }
334209  virtual void visit(SgDefineDirectiveStatement *variable_SgDefineDirectiveStatement) { _strategy->visit(variable_SgDefineDirectiveStatement); }
334210  virtual void visit(SgUndefDirectiveStatement *variable_SgUndefDirectiveStatement) { _strategy->visit(variable_SgUndefDirectiveStatement); }
334211  virtual void visit(SgIfdefDirectiveStatement *variable_SgIfdefDirectiveStatement) { _strategy->visit(variable_SgIfdefDirectiveStatement); }
334212  virtual void visit(SgIfndefDirectiveStatement *variable_SgIfndefDirectiveStatement) { _strategy->visit(variable_SgIfndefDirectiveStatement); }
334213  virtual void visit(SgIfDirectiveStatement *variable_SgIfDirectiveStatement) { _strategy->visit(variable_SgIfDirectiveStatement); }
334214  virtual void visit(SgDeadIfDirectiveStatement *variable_SgDeadIfDirectiveStatement) { _strategy->visit(variable_SgDeadIfDirectiveStatement); }
334215  virtual void visit(SgElseDirectiveStatement *variable_SgElseDirectiveStatement) { _strategy->visit(variable_SgElseDirectiveStatement); }
334216  virtual void visit(SgElseifDirectiveStatement *variable_SgElseifDirectiveStatement) { _strategy->visit(variable_SgElseifDirectiveStatement); }
334217  virtual void visit(SgEndifDirectiveStatement *variable_SgEndifDirectiveStatement) { _strategy->visit(variable_SgEndifDirectiveStatement); }
334218  virtual void visit(SgLineDirectiveStatement *variable_SgLineDirectiveStatement) { _strategy->visit(variable_SgLineDirectiveStatement); }
334219  virtual void visit(SgWarningDirectiveStatement *variable_SgWarningDirectiveStatement) { _strategy->visit(variable_SgWarningDirectiveStatement); }
334220  virtual void visit(SgErrorDirectiveStatement *variable_SgErrorDirectiveStatement) { _strategy->visit(variable_SgErrorDirectiveStatement); }
334221  virtual void visit(SgEmptyDirectiveStatement *variable_SgEmptyDirectiveStatement) { _strategy->visit(variable_SgEmptyDirectiveStatement); }
334222  virtual void visit(SgIncludeNextDirectiveStatement *variable_SgIncludeNextDirectiveStatement) { _strategy->visit(variable_SgIncludeNextDirectiveStatement); }
334223  virtual void visit(SgIdentDirectiveStatement *variable_SgIdentDirectiveStatement) { _strategy->visit(variable_SgIdentDirectiveStatement); }
334224  virtual void visit(SgLinemarkerDirectiveStatement *variable_SgLinemarkerDirectiveStatement) { _strategy->visit(variable_SgLinemarkerDirectiveStatement); }
334225  virtual void visit(SgC_PreprocessorDirectiveStatement *variable_SgC_PreprocessorDirectiveStatement) { _strategy->visit(variable_SgC_PreprocessorDirectiveStatement); }
334226  virtual void visit(SgClinkageStartStatement *variable_SgClinkageStartStatement) { _strategy->visit(variable_SgClinkageStartStatement); }
334227  virtual void visit(SgClinkageEndStatement *variable_SgClinkageEndStatement) { _strategy->visit(variable_SgClinkageEndStatement); }
334228  virtual void visit(SgClinkageDeclarationStatement *variable_SgClinkageDeclarationStatement) { _strategy->visit(variable_SgClinkageDeclarationStatement); }
334229  virtual void visit(SgOmpDeclareSimdStatement *variable_SgOmpDeclareSimdStatement) { _strategy->visit(variable_SgOmpDeclareSimdStatement); }
334230  virtual void visit(SgOmpBarrierStatement *variable_SgOmpBarrierStatement) { _strategy->visit(variable_SgOmpBarrierStatement); }
334231  virtual void visit(SgOmpTaskyieldStatement *variable_SgOmpTaskyieldStatement) { _strategy->visit(variable_SgOmpTaskyieldStatement); }
334232  virtual void visit(SgOmpRequiresStatement *variable_SgOmpRequiresStatement) { _strategy->visit(variable_SgOmpRequiresStatement); }
334233  virtual void visit(SgOmpTaskwaitStatement *variable_SgOmpTaskwaitStatement) { _strategy->visit(variable_SgOmpTaskwaitStatement); }
334234  virtual void visit(SgOmpThreadprivateStatement *variable_SgOmpThreadprivateStatement) { _strategy->visit(variable_SgOmpThreadprivateStatement); }
334235  virtual void visit(SgMicrosoftAttributeDeclaration *variable_SgMicrosoftAttributeDeclaration) { _strategy->visit(variable_SgMicrosoftAttributeDeclaration); }
334236  virtual void visit(SgEmptyDeclaration *variable_SgEmptyDeclaration) { _strategy->visit(variable_SgEmptyDeclaration); }
334237  virtual void visit(SgDeclarationStatement *variable_SgDeclarationStatement) { _strategy->visit(variable_SgDeclarationStatement); }
334238  virtual void visit(SgUpirBaseStatement *variable_SgUpirBaseStatement) { _strategy->visit(variable_SgUpirBaseStatement); }
334239  virtual void visit(SgStatement *variable_SgStatement) { _strategy->visit(variable_SgStatement); }
334240  virtual void visit(SgVarRefExp *variable_SgVarRefExp) { _strategy->visit(variable_SgVarRefExp); }
334241  virtual void visit(SgNonrealRefExp *variable_SgNonrealRefExp) { _strategy->visit(variable_SgNonrealRefExp); }
334242  virtual void visit(SgCompoundLiteralExp *variable_SgCompoundLiteralExp) { _strategy->visit(variable_SgCompoundLiteralExp); }
334243  virtual void visit(SgLabelRefExp *variable_SgLabelRefExp) { _strategy->visit(variable_SgLabelRefExp); }
334244  virtual void visit(SgClassNameRefExp *variable_SgClassNameRefExp) { _strategy->visit(variable_SgClassNameRefExp); }
334245  virtual void visit(SgFunctionRefExp *variable_SgFunctionRefExp) { _strategy->visit(variable_SgFunctionRefExp); }
334246  virtual void visit(SgMemberFunctionRefExp *variable_SgMemberFunctionRefExp) { _strategy->visit(variable_SgMemberFunctionRefExp); }
334247  virtual void visit(SgTemplateFunctionRefExp *variable_SgTemplateFunctionRefExp) { _strategy->visit(variable_SgTemplateFunctionRefExp); }
334248  virtual void visit(SgTemplateMemberFunctionRefExp *variable_SgTemplateMemberFunctionRefExp) { _strategy->visit(variable_SgTemplateMemberFunctionRefExp); }
334249  virtual void visit(SgSizeOfOp *variable_SgSizeOfOp) { _strategy->visit(variable_SgSizeOfOp); }
334250  virtual void visit(SgAlignOfOp *variable_SgAlignOfOp) { _strategy->visit(variable_SgAlignOfOp); }
334251  virtual void visit(SgNoexceptOp *variable_SgNoexceptOp) { _strategy->visit(variable_SgNoexceptOp); }
334252  virtual void visit(SgTypeExpression *variable_SgTypeExpression) { _strategy->visit(variable_SgTypeExpression); }
334253  virtual void visit(SgLambdaExp *variable_SgLambdaExp) { _strategy->visit(variable_SgLambdaExp); }
334254  virtual void visit(SgUpcLocalsizeofExpression *variable_SgUpcLocalsizeofExpression) { _strategy->visit(variable_SgUpcLocalsizeofExpression); }
334255  virtual void visit(SgUpcBlocksizeofExpression *variable_SgUpcBlocksizeofExpression) { _strategy->visit(variable_SgUpcBlocksizeofExpression); }
334256  virtual void visit(SgUpcElemsizeofExpression *variable_SgUpcElemsizeofExpression) { _strategy->visit(variable_SgUpcElemsizeofExpression); }
334257  virtual void visit(SgVarArgStartOp *variable_SgVarArgStartOp) { _strategy->visit(variable_SgVarArgStartOp); }
334258  virtual void visit(SgVarArgStartOneOperandOp *variable_SgVarArgStartOneOperandOp) { _strategy->visit(variable_SgVarArgStartOneOperandOp); }
334259  virtual void visit(SgVarArgOp *variable_SgVarArgOp) { _strategy->visit(variable_SgVarArgOp); }
334260  virtual void visit(SgVarArgEndOp *variable_SgVarArgEndOp) { _strategy->visit(variable_SgVarArgEndOp); }
334261  virtual void visit(SgVarArgCopyOp *variable_SgVarArgCopyOp) { _strategy->visit(variable_SgVarArgCopyOp); }
334262  virtual void visit(SgTypeIdOp *variable_SgTypeIdOp) { _strategy->visit(variable_SgTypeIdOp); }
334263  virtual void visit(SgConditionalExp *variable_SgConditionalExp) { _strategy->visit(variable_SgConditionalExp); }
334264  virtual void visit(SgNewExp *variable_SgNewExp) { _strategy->visit(variable_SgNewExp); }
334265  virtual void visit(SgDeleteExp *variable_SgDeleteExp) { _strategy->visit(variable_SgDeleteExp); }
334266  virtual void visit(SgThisExp *variable_SgThisExp) { _strategy->visit(variable_SgThisExp); }
334267  virtual void visit(SgSuperExp *variable_SgSuperExp) { _strategy->visit(variable_SgSuperExp); }
334268  virtual void visit(SgClassExp *variable_SgClassExp) { _strategy->visit(variable_SgClassExp); }
334269  virtual void visit(SgRefExp *variable_SgRefExp) { _strategy->visit(variable_SgRefExp); }
334270  virtual void visit(SgAggregateInitializer *variable_SgAggregateInitializer) { _strategy->visit(variable_SgAggregateInitializer); }
334271  virtual void visit(SgCompoundInitializer *variable_SgCompoundInitializer) { _strategy->visit(variable_SgCompoundInitializer); }
334272  virtual void visit(SgConstructorInitializer *variable_SgConstructorInitializer) { _strategy->visit(variable_SgConstructorInitializer); }
334273  virtual void visit(SgAssignInitializer *variable_SgAssignInitializer) { _strategy->visit(variable_SgAssignInitializer); }
334274  virtual void visit(SgBracedInitializer *variable_SgBracedInitializer) { _strategy->visit(variable_SgBracedInitializer); }
334275  virtual void visit(SgExpressionRoot *variable_SgExpressionRoot) { _strategy->visit(variable_SgExpressionRoot); }
334276  virtual void visit(SgMinusOp *variable_SgMinusOp) { _strategy->visit(variable_SgMinusOp); }
334277  virtual void visit(SgUnaryAddOp *variable_SgUnaryAddOp) { _strategy->visit(variable_SgUnaryAddOp); }
334278  virtual void visit(SgNotOp *variable_SgNotOp) { _strategy->visit(variable_SgNotOp); }
334279  virtual void visit(SgPointerDerefExp *variable_SgPointerDerefExp) { _strategy->visit(variable_SgPointerDerefExp); }
334280  virtual void visit(SgAddressOfOp *variable_SgAddressOfOp) { _strategy->visit(variable_SgAddressOfOp); }
334281  virtual void visit(SgMinusMinusOp *variable_SgMinusMinusOp) { _strategy->visit(variable_SgMinusMinusOp); }
334282  virtual void visit(SgPlusPlusOp *variable_SgPlusPlusOp) { _strategy->visit(variable_SgPlusPlusOp); }
334283  virtual void visit(SgBitComplementOp *variable_SgBitComplementOp) { _strategy->visit(variable_SgBitComplementOp); }
334284  virtual void visit(SgRealPartOp *variable_SgRealPartOp) { _strategy->visit(variable_SgRealPartOp); }
334285  virtual void visit(SgImagPartOp *variable_SgImagPartOp) { _strategy->visit(variable_SgImagPartOp); }
334286  virtual void visit(SgConjugateOp *variable_SgConjugateOp) { _strategy->visit(variable_SgConjugateOp); }
334287  virtual void visit(SgCastExp *variable_SgCastExp) { _strategy->visit(variable_SgCastExp); }
334288  virtual void visit(SgThrowOp *variable_SgThrowOp) { _strategy->visit(variable_SgThrowOp); }
334289  virtual void visit(SgArrowExp *variable_SgArrowExp) { _strategy->visit(variable_SgArrowExp); }
334290  virtual void visit(SgDotExp *variable_SgDotExp) { _strategy->visit(variable_SgDotExp); }
334291  virtual void visit(SgDotStarOp *variable_SgDotStarOp) { _strategy->visit(variable_SgDotStarOp); }
334292  virtual void visit(SgArrowStarOp *variable_SgArrowStarOp) { _strategy->visit(variable_SgArrowStarOp); }
334293  virtual void visit(SgEqualityOp *variable_SgEqualityOp) { _strategy->visit(variable_SgEqualityOp); }
334294  virtual void visit(SgLessThanOp *variable_SgLessThanOp) { _strategy->visit(variable_SgLessThanOp); }
334295  virtual void visit(SgGreaterThanOp *variable_SgGreaterThanOp) { _strategy->visit(variable_SgGreaterThanOp); }
334296  virtual void visit(SgNotEqualOp *variable_SgNotEqualOp) { _strategy->visit(variable_SgNotEqualOp); }
334297  virtual void visit(SgLessOrEqualOp *variable_SgLessOrEqualOp) { _strategy->visit(variable_SgLessOrEqualOp); }
334298  virtual void visit(SgGreaterOrEqualOp *variable_SgGreaterOrEqualOp) { _strategy->visit(variable_SgGreaterOrEqualOp); }
334299  virtual void visit(SgAddOp *variable_SgAddOp) { _strategy->visit(variable_SgAddOp); }
334300  virtual void visit(SgSubtractOp *variable_SgSubtractOp) { _strategy->visit(variable_SgSubtractOp); }
334301  virtual void visit(SgMultiplyOp *variable_SgMultiplyOp) { _strategy->visit(variable_SgMultiplyOp); }
334302  virtual void visit(SgDivideOp *variable_SgDivideOp) { _strategy->visit(variable_SgDivideOp); }
334303  virtual void visit(SgIntegerDivideOp *variable_SgIntegerDivideOp) { _strategy->visit(variable_SgIntegerDivideOp); }
334304  virtual void visit(SgModOp *variable_SgModOp) { _strategy->visit(variable_SgModOp); }
334305  virtual void visit(SgAndOp *variable_SgAndOp) { _strategy->visit(variable_SgAndOp); }
334306  virtual void visit(SgOrOp *variable_SgOrOp) { _strategy->visit(variable_SgOrOp); }
334307  virtual void visit(SgBitXorOp *variable_SgBitXorOp) { _strategy->visit(variable_SgBitXorOp); }
334308  virtual void visit(SgBitAndOp *variable_SgBitAndOp) { _strategy->visit(variable_SgBitAndOp); }
334309  virtual void visit(SgBitOrOp *variable_SgBitOrOp) { _strategy->visit(variable_SgBitOrOp); }
334310  virtual void visit(SgBitEqvOp *variable_SgBitEqvOp) { _strategy->visit(variable_SgBitEqvOp); }
334311  virtual void visit(SgCommaOpExp *variable_SgCommaOpExp) { _strategy->visit(variable_SgCommaOpExp); }
334312  virtual void visit(SgLshiftOp *variable_SgLshiftOp) { _strategy->visit(variable_SgLshiftOp); }
334313  virtual void visit(SgRshiftOp *variable_SgRshiftOp) { _strategy->visit(variable_SgRshiftOp); }
334314  virtual void visit(SgPntrArrRefExp *variable_SgPntrArrRefExp) { _strategy->visit(variable_SgPntrArrRefExp); }
334315  virtual void visit(SgScopeOp *variable_SgScopeOp) { _strategy->visit(variable_SgScopeOp); }
334316  virtual void visit(SgAssignOp *variable_SgAssignOp) { _strategy->visit(variable_SgAssignOp); }
334317  virtual void visit(SgPlusAssignOp *variable_SgPlusAssignOp) { _strategy->visit(variable_SgPlusAssignOp); }
334318  virtual void visit(SgMinusAssignOp *variable_SgMinusAssignOp) { _strategy->visit(variable_SgMinusAssignOp); }
334319  virtual void visit(SgAndAssignOp *variable_SgAndAssignOp) { _strategy->visit(variable_SgAndAssignOp); }
334320  virtual void visit(SgIorAssignOp *variable_SgIorAssignOp) { _strategy->visit(variable_SgIorAssignOp); }
334321  virtual void visit(SgMultAssignOp *variable_SgMultAssignOp) { _strategy->visit(variable_SgMultAssignOp); }
334322  virtual void visit(SgDivAssignOp *variable_SgDivAssignOp) { _strategy->visit(variable_SgDivAssignOp); }
334323  virtual void visit(SgModAssignOp *variable_SgModAssignOp) { _strategy->visit(variable_SgModAssignOp); }
334324  virtual void visit(SgXorAssignOp *variable_SgXorAssignOp) { _strategy->visit(variable_SgXorAssignOp); }
334325  virtual void visit(SgLshiftAssignOp *variable_SgLshiftAssignOp) { _strategy->visit(variable_SgLshiftAssignOp); }
334326  virtual void visit(SgRshiftAssignOp *variable_SgRshiftAssignOp) { _strategy->visit(variable_SgRshiftAssignOp); }
334327  virtual void visit(SgIntegerDivideAssignOp *variable_SgIntegerDivideAssignOp) { _strategy->visit(variable_SgIntegerDivideAssignOp); }
334328  virtual void visit(SgExponentiationAssignOp *variable_SgExponentiationAssignOp) { _strategy->visit(variable_SgExponentiationAssignOp); }
334329  virtual void visit(SgConcatenationOp *variable_SgConcatenationOp) { _strategy->visit(variable_SgConcatenationOp); }
334330  virtual void visit(SgNaryComparisonOp *variable_SgNaryComparisonOp) { _strategy->visit(variable_SgNaryComparisonOp); }
334331  virtual void visit(SgNaryBooleanOp *variable_SgNaryBooleanOp) { _strategy->visit(variable_SgNaryBooleanOp); }
334332  virtual void visit(SgBoolValExp *variable_SgBoolValExp) { _strategy->visit(variable_SgBoolValExp); }
334333  virtual void visit(SgStringVal *variable_SgStringVal) { _strategy->visit(variable_SgStringVal); }
334334  virtual void visit(SgShortVal *variable_SgShortVal) { _strategy->visit(variable_SgShortVal); }
334335  virtual void visit(SgCharVal *variable_SgCharVal) { _strategy->visit(variable_SgCharVal); }
334336  virtual void visit(SgUnsignedCharVal *variable_SgUnsignedCharVal) { _strategy->visit(variable_SgUnsignedCharVal); }
334337  virtual void visit(SgWcharVal *variable_SgWcharVal) { _strategy->visit(variable_SgWcharVal); }
334338  virtual void visit(SgChar16Val *variable_SgChar16Val) { _strategy->visit(variable_SgChar16Val); }
334339  virtual void visit(SgChar32Val *variable_SgChar32Val) { _strategy->visit(variable_SgChar32Val); }
334340  virtual void visit(SgUnsignedShortVal *variable_SgUnsignedShortVal) { _strategy->visit(variable_SgUnsignedShortVal); }
334341  virtual void visit(SgIntVal *variable_SgIntVal) { _strategy->visit(variable_SgIntVal); }
334342  virtual void visit(SgEnumVal *variable_SgEnumVal) { _strategy->visit(variable_SgEnumVal); }
334343  virtual void visit(SgUnsignedIntVal *variable_SgUnsignedIntVal) { _strategy->visit(variable_SgUnsignedIntVal); }
334344  virtual void visit(SgLongIntVal *variable_SgLongIntVal) { _strategy->visit(variable_SgLongIntVal); }
334345  virtual void visit(SgLongLongIntVal *variable_SgLongLongIntVal) { _strategy->visit(variable_SgLongLongIntVal); }
334346  virtual void visit(SgUnsignedLongLongIntVal *variable_SgUnsignedLongLongIntVal) { _strategy->visit(variable_SgUnsignedLongLongIntVal); }
334347  virtual void visit(SgUnsignedLongVal *variable_SgUnsignedLongVal) { _strategy->visit(variable_SgUnsignedLongVal); }
334348  virtual void visit(SgFloatVal *variable_SgFloatVal) { _strategy->visit(variable_SgFloatVal); }
334349  virtual void visit(SgDoubleVal *variable_SgDoubleVal) { _strategy->visit(variable_SgDoubleVal); }
334350  virtual void visit(SgLongDoubleVal *variable_SgLongDoubleVal) { _strategy->visit(variable_SgLongDoubleVal); }
334351  virtual void visit(SgFloat80Val *variable_SgFloat80Val) { _strategy->visit(variable_SgFloat80Val); }
334352  virtual void visit(SgFloat128Val *variable_SgFloat128Val) { _strategy->visit(variable_SgFloat128Val); }
334353  virtual void visit(SgNullptrValExp *variable_SgNullptrValExp) { _strategy->visit(variable_SgNullptrValExp); }
334354  virtual void visit(SgVoidVal *variable_SgVoidVal) { _strategy->visit(variable_SgVoidVal); }
334355  virtual void visit(SgFunctionParameterRefExp *variable_SgFunctionParameterRefExp) { _strategy->visit(variable_SgFunctionParameterRefExp); }
334356  virtual void visit(SgTemplateParameterVal *variable_SgTemplateParameterVal) { _strategy->visit(variable_SgTemplateParameterVal); }
334357  virtual void visit(SgUpcThreads *variable_SgUpcThreads) { _strategy->visit(variable_SgUpcThreads); }
334358  virtual void visit(SgUpcMythread *variable_SgUpcMythread) { _strategy->visit(variable_SgUpcMythread); }
334359  virtual void visit(SgComplexVal *variable_SgComplexVal) { _strategy->visit(variable_SgComplexVal); }
334360  virtual void visit(SgNullExpression *variable_SgNullExpression) { _strategy->visit(variable_SgNullExpression); }
334361  virtual void visit(SgVariantExpression *variable_SgVariantExpression) { _strategy->visit(variable_SgVariantExpression); }
334362  virtual void visit(SgStatementExpression *variable_SgStatementExpression) { _strategy->visit(variable_SgStatementExpression); }
334363  virtual void visit(SgAsmOp *variable_SgAsmOp) { _strategy->visit(variable_SgAsmOp); }
334364  virtual void visit(SgCudaKernelExecConfig *variable_SgCudaKernelExecConfig) { _strategy->visit(variable_SgCudaKernelExecConfig); }
334365  virtual void visit(SgCudaKernelCallExp *variable_SgCudaKernelCallExp) { _strategy->visit(variable_SgCudaKernelCallExp); }
334366  virtual void visit(SgLambdaRefExp *variable_SgLambdaRefExp) { _strategy->visit(variable_SgLambdaRefExp); }
334367  virtual void visit(SgTupleExp *variable_SgTupleExp) { _strategy->visit(variable_SgTupleExp); }
334368  virtual void visit(SgListExp *variable_SgListExp) { _strategy->visit(variable_SgListExp); }
334369  virtual void visit(SgDictionaryExp *variable_SgDictionaryExp) { _strategy->visit(variable_SgDictionaryExp); }
334370  virtual void visit(SgKeyDatumPair *variable_SgKeyDatumPair) { _strategy->visit(variable_SgKeyDatumPair); }
334371  virtual void visit(SgComprehension *variable_SgComprehension) { _strategy->visit(variable_SgComprehension); }
334372  virtual void visit(SgListComprehension *variable_SgListComprehension) { _strategy->visit(variable_SgListComprehension); }
334373  virtual void visit(SgSetComprehension *variable_SgSetComprehension) { _strategy->visit(variable_SgSetComprehension); }
334374  virtual void visit(SgDictionaryComprehension *variable_SgDictionaryComprehension) { _strategy->visit(variable_SgDictionaryComprehension); }
334375  virtual void visit(SgMembershipOp *variable_SgMembershipOp) { _strategy->visit(variable_SgMembershipOp); }
334376  virtual void visit(SgNonMembershipOp *variable_SgNonMembershipOp) { _strategy->visit(variable_SgNonMembershipOp); }
334377  virtual void visit(SgIsOp *variable_SgIsOp) { _strategy->visit(variable_SgIsOp); }
334378  virtual void visit(SgIsNotOp *variable_SgIsNotOp) { _strategy->visit(variable_SgIsNotOp); }
334379  virtual void visit(SgStringConversion *variable_SgStringConversion) { _strategy->visit(variable_SgStringConversion); }
334380  virtual void visit(SgYieldExpression *variable_SgYieldExpression) { _strategy->visit(variable_SgYieldExpression); }
334381  virtual void visit(SgFoldExpression *variable_SgFoldExpression) { _strategy->visit(variable_SgFoldExpression); }
334382  virtual void visit(SgChooseExpression *variable_SgChooseExpression) { _strategy->visit(variable_SgChooseExpression); }
334383  virtual void visit(SgAwaitExpression *variable_SgAwaitExpression) { _strategy->visit(variable_SgAwaitExpression); }
334384  virtual void visit(SgSpaceshipOp *variable_SgSpaceshipOp) { _strategy->visit(variable_SgSpaceshipOp); }
334385  virtual void visit(SgSubscriptExpression *variable_SgSubscriptExpression) { _strategy->visit(variable_SgSubscriptExpression); }
334386  virtual void visit(SgColonShapeExp *variable_SgColonShapeExp) { _strategy->visit(variable_SgColonShapeExp); }
334387  virtual void visit(SgAsteriskShapeExp *variable_SgAsteriskShapeExp) { _strategy->visit(variable_SgAsteriskShapeExp); }
334388  virtual void visit(SgIOItemExpression *variable_SgIOItemExpression) { _strategy->visit(variable_SgIOItemExpression); }
334389  virtual void visit(SgImpliedDo *variable_SgImpliedDo) { _strategy->visit(variable_SgImpliedDo); }
334390  virtual void visit(SgExponentiationOp *variable_SgExponentiationOp) { _strategy->visit(variable_SgExponentiationOp); }
334391  virtual void visit(SgUnknownArrayOrFunctionReference *variable_SgUnknownArrayOrFunctionReference) { _strategy->visit(variable_SgUnknownArrayOrFunctionReference); }
334392  virtual void visit(SgActualArgumentExpression *variable_SgActualArgumentExpression) { _strategy->visit(variable_SgActualArgumentExpression); }
334393  virtual void visit(SgUserDefinedBinaryOp *variable_SgUserDefinedBinaryOp) { _strategy->visit(variable_SgUserDefinedBinaryOp); }
334394  virtual void visit(SgPointerAssignOp *variable_SgPointerAssignOp) { _strategy->visit(variable_SgPointerAssignOp); }
334395  virtual void visit(SgCAFCoExpression *variable_SgCAFCoExpression) { _strategy->visit(variable_SgCAFCoExpression); }
334396  virtual void visit(SgDesignatedInitializer *variable_SgDesignatedInitializer) { _strategy->visit(variable_SgDesignatedInitializer); }
334397  virtual void visit(SgMatrixExp *variable_SgMatrixExp) { _strategy->visit(variable_SgMatrixExp); }
334398  virtual void visit(SgRangeExp *variable_SgRangeExp) { _strategy->visit(variable_SgRangeExp); }
334399  virtual void visit(SgMagicColonExp *variable_SgMagicColonExp) { _strategy->visit(variable_SgMagicColonExp); }
334400  virtual void visit(SgElementwiseMultiplyOp *variable_SgElementwiseMultiplyOp) { _strategy->visit(variable_SgElementwiseMultiplyOp); }
334401  virtual void visit(SgPowerOp *variable_SgPowerOp) { _strategy->visit(variable_SgPowerOp); }
334402  virtual void visit(SgElementwisePowerOp *variable_SgElementwisePowerOp) { _strategy->visit(variable_SgElementwisePowerOp); }
334403  virtual void visit(SgElementwiseDivideOp *variable_SgElementwiseDivideOp) { _strategy->visit(variable_SgElementwiseDivideOp); }
334404  virtual void visit(SgLeftDivideOp *variable_SgLeftDivideOp) { _strategy->visit(variable_SgLeftDivideOp); }
334405  virtual void visit(SgElementwiseLeftDivideOp *variable_SgElementwiseLeftDivideOp) { _strategy->visit(variable_SgElementwiseLeftDivideOp); }
334406  virtual void visit(SgElementwiseAddOp *variable_SgElementwiseAddOp) { _strategy->visit(variable_SgElementwiseAddOp); }
334407  virtual void visit(SgElementwiseSubtractOp *variable_SgElementwiseSubtractOp) { _strategy->visit(variable_SgElementwiseSubtractOp); }
334408  virtual void visit(SgMatrixTransposeOp *variable_SgMatrixTransposeOp) { _strategy->visit(variable_SgMatrixTransposeOp); }
334409  virtual void visit(SgElementwiseOp *variable_SgElementwiseOp) { _strategy->visit(variable_SgElementwiseOp); }
334410  virtual void visit(SgInitializer *variable_SgInitializer) { _strategy->visit(variable_SgInitializer); }
334411  virtual void visit(SgSIMDLoad *variable_SgSIMDLoad) { _strategy->visit(variable_SgSIMDLoad); }
334412  virtual void visit(SgSIMDBroadcast *variable_SgSIMDBroadcast) { _strategy->visit(variable_SgSIMDBroadcast); }
334413  virtual void visit(SgSIMDStore *variable_SgSIMDStore) { _strategy->visit(variable_SgSIMDStore); }
334414  virtual void visit(SgSIMDPartialStore *variable_SgSIMDPartialStore) { _strategy->visit(variable_SgSIMDPartialStore); }
334415  virtual void visit(SgSIMDScalarStore *variable_SgSIMDScalarStore) { _strategy->visit(variable_SgSIMDScalarStore); }
334416  virtual void visit(SgSIMDGather *variable_SgSIMDGather) { _strategy->visit(variable_SgSIMDGather); }
334417  virtual void visit(SgSIMDExplicitGather *variable_SgSIMDExplicitGather) { _strategy->visit(variable_SgSIMDExplicitGather); }
334418  virtual void visit(SgSIMDScatter *variable_SgSIMDScatter) { _strategy->visit(variable_SgSIMDScatter); }
334419  virtual void visit(SgSIMDAddOp *variable_SgSIMDAddOp) { _strategy->visit(variable_SgSIMDAddOp); }
334420  virtual void visit(SgSIMDSubOp *variable_SgSIMDSubOp) { _strategy->visit(variable_SgSIMDSubOp); }
334421  virtual void visit(SgSIMDMulOp *variable_SgSIMDMulOp) { _strategy->visit(variable_SgSIMDMulOp); }
334422  virtual void visit(SgSIMDDivOp *variable_SgSIMDDivOp) { _strategy->visit(variable_SgSIMDDivOp); }
334423  virtual void visit(SgSIMDFmaOp *variable_SgSIMDFmaOp) { _strategy->visit(variable_SgSIMDFmaOp); }
334424  virtual void visit(SgSIMDBinaryOp *variable_SgSIMDBinaryOp) { _strategy->visit(variable_SgSIMDBinaryOp); }
334425  virtual void visit(SgUserDefinedUnaryOp *variable_SgUserDefinedUnaryOp) { _strategy->visit(variable_SgUserDefinedUnaryOp); }
334426  virtual void visit(SgPseudoDestructorRefExp *variable_SgPseudoDestructorRefExp) { _strategy->visit(variable_SgPseudoDestructorRefExp); }
334427  virtual void visit(SgUnaryOp *variable_SgUnaryOp) { _strategy->visit(variable_SgUnaryOp); }
334428  virtual void visit(SgCompoundAssignOp *variable_SgCompoundAssignOp) { _strategy->visit(variable_SgCompoundAssignOp); }
334429  virtual void visit(SgBinaryOp *variable_SgBinaryOp) { _strategy->visit(variable_SgBinaryOp); }
334430  virtual void visit(SgNaryOp *variable_SgNaryOp) { _strategy->visit(variable_SgNaryOp); }
334431  virtual void visit(SgValueExp *variable_SgValueExp) { _strategy->visit(variable_SgValueExp); }
334432  virtual void visit(SgExprListExp *variable_SgExprListExp) { _strategy->visit(variable_SgExprListExp); }
334433  virtual void visit(SgFunctionCallExp *variable_SgFunctionCallExp) { _strategy->visit(variable_SgFunctionCallExp); }
334434  virtual void visit(SgCallExpression *variable_SgCallExpression) { _strategy->visit(variable_SgCallExpression); }
334435  virtual void visit(SgTypeTraitBuiltinOperator *variable_SgTypeTraitBuiltinOperator) { _strategy->visit(variable_SgTypeTraitBuiltinOperator); }
334436  virtual void visit(SgExpression *variable_SgExpression) { _strategy->visit(variable_SgExpression); }
334437  virtual void visit(SgTemplateVariableSymbol *variable_SgTemplateVariableSymbol) { _strategy->visit(variable_SgTemplateVariableSymbol); }
334438  virtual void visit(SgVariableSymbol *variable_SgVariableSymbol) { _strategy->visit(variable_SgVariableSymbol); }
334439  virtual void visit(SgFunctionTypeSymbol *variable_SgFunctionTypeSymbol) { _strategy->visit(variable_SgFunctionTypeSymbol); }
334440  virtual void visit(SgTemplateClassSymbol *variable_SgTemplateClassSymbol) { _strategy->visit(variable_SgTemplateClassSymbol); }
334441  virtual void visit(SgClassSymbol *variable_SgClassSymbol) { _strategy->visit(variable_SgClassSymbol); }
334442  virtual void visit(SgTemplateSymbol *variable_SgTemplateSymbol) { _strategy->visit(variable_SgTemplateSymbol); }
334443  virtual void visit(SgEnumSymbol *variable_SgEnumSymbol) { _strategy->visit(variable_SgEnumSymbol); }
334444  virtual void visit(SgEnumFieldSymbol *variable_SgEnumFieldSymbol) { _strategy->visit(variable_SgEnumFieldSymbol); }
334445  virtual void visit(SgTemplateTypedefSymbol *variable_SgTemplateTypedefSymbol) { _strategy->visit(variable_SgTemplateTypedefSymbol); }
334446  virtual void visit(SgTypedefSymbol *variable_SgTypedefSymbol) { _strategy->visit(variable_SgTypedefSymbol); }
334447  virtual void visit(SgTemplateFunctionSymbol *variable_SgTemplateFunctionSymbol) { _strategy->visit(variable_SgTemplateFunctionSymbol); }
334448  virtual void visit(SgTemplateMemberFunctionSymbol *variable_SgTemplateMemberFunctionSymbol) { _strategy->visit(variable_SgTemplateMemberFunctionSymbol); }
334449  virtual void visit(SgLabelSymbol *variable_SgLabelSymbol) { _strategy->visit(variable_SgLabelSymbol); }
334450  virtual void visit(SgDefaultSymbol *variable_SgDefaultSymbol) { _strategy->visit(variable_SgDefaultSymbol); }
334451  virtual void visit(SgNamespaceSymbol *variable_SgNamespaceSymbol) { _strategy->visit(variable_SgNamespaceSymbol); }
334452  virtual void visit(SgIntrinsicSymbol *variable_SgIntrinsicSymbol) { _strategy->visit(variable_SgIntrinsicSymbol); }
334453  virtual void visit(SgModuleSymbol *variable_SgModuleSymbol) { _strategy->visit(variable_SgModuleSymbol); }
334454  virtual void visit(SgInterfaceSymbol *variable_SgInterfaceSymbol) { _strategy->visit(variable_SgInterfaceSymbol); }
334455  virtual void visit(SgCommonSymbol *variable_SgCommonSymbol) { _strategy->visit(variable_SgCommonSymbol); }
334456  virtual void visit(SgRenameSymbol *variable_SgRenameSymbol) { _strategy->visit(variable_SgRenameSymbol); }
334457  virtual void visit(SgMemberFunctionSymbol *variable_SgMemberFunctionSymbol) { _strategy->visit(variable_SgMemberFunctionSymbol); }
334458  virtual void visit(SgFunctionSymbol *variable_SgFunctionSymbol) { _strategy->visit(variable_SgFunctionSymbol); }
334459  virtual void visit(SgAliasSymbol *variable_SgAliasSymbol) { _strategy->visit(variable_SgAliasSymbol); }
334460  virtual void visit(SgNonrealSymbol *variable_SgNonrealSymbol) { _strategy->visit(variable_SgNonrealSymbol); }
334461  virtual void visit(SgSymbol *variable_SgSymbol) { _strategy->visit(variable_SgSymbol); }
334462  virtual void visit(SgCommonBlockObject *variable_SgCommonBlockObject) { _strategy->visit(variable_SgCommonBlockObject); }
334463  virtual void visit(SgInitializedName *variable_SgInitializedName) { _strategy->visit(variable_SgInitializedName); }
334464  virtual void visit(SgLambdaCapture *variable_SgLambdaCapture) { _strategy->visit(variable_SgLambdaCapture); }
334465  virtual void visit(SgLambdaCaptureList *variable_SgLambdaCaptureList) { _strategy->visit(variable_SgLambdaCaptureList); }
334466  virtual void visit(SgOmpOrderedClause *variable_SgOmpOrderedClause) { _strategy->visit(variable_SgOmpOrderedClause); }
334467  virtual void visit(SgOmpNowaitClause *variable_SgOmpNowaitClause) { _strategy->visit(variable_SgOmpNowaitClause); }
334468  virtual void visit(SgOmpNogroupClause *variable_SgOmpNogroupClause) { _strategy->visit(variable_SgOmpNogroupClause); }
334469  virtual void visit(SgOmpReadClause *variable_SgOmpReadClause) { _strategy->visit(variable_SgOmpReadClause); }
334470  virtual void visit(SgOmpThreadsClause *variable_SgOmpThreadsClause) { _strategy->visit(variable_SgOmpThreadsClause); }
334471  virtual void visit(SgOmpSimdClause *variable_SgOmpSimdClause) { _strategy->visit(variable_SgOmpSimdClause); }
334472  virtual void visit(SgOmpReverseOffloadClause *variable_SgOmpReverseOffloadClause) { _strategy->visit(variable_SgOmpReverseOffloadClause); }
334473  virtual void visit(SgOmpExtImplementationDefinedRequirementClause *variable_SgOmpExtImplementationDefinedRequirementClause) { _strategy->visit(variable_SgOmpExtImplementationDefinedRequirementClause); }
334474  virtual void visit(SgOmpUnifiedAddressClause *variable_SgOmpUnifiedAddressClause) { _strategy->visit(variable_SgOmpUnifiedAddressClause); }
334475  virtual void visit(SgOmpUnifiedSharedMemoryClause *variable_SgOmpUnifiedSharedMemoryClause) { _strategy->visit(variable_SgOmpUnifiedSharedMemoryClause); }
334476  virtual void visit(SgOmpDynamicAllocatorsClause *variable_SgOmpDynamicAllocatorsClause) { _strategy->visit(variable_SgOmpDynamicAllocatorsClause); }
334477  virtual void visit(SgOmpAtomicDefaultMemOrderClause *variable_SgOmpAtomicDefaultMemOrderClause) { _strategy->visit(variable_SgOmpAtomicDefaultMemOrderClause); }
334478  virtual void visit(SgOmpWriteClause *variable_SgOmpWriteClause) { _strategy->visit(variable_SgOmpWriteClause); }
334479  virtual void visit(SgOmpUpdateClause *variable_SgOmpUpdateClause) { _strategy->visit(variable_SgOmpUpdateClause); }
334480  virtual void visit(SgOmpDepobjUpdateClause *variable_SgOmpDepobjUpdateClause) { _strategy->visit(variable_SgOmpDepobjUpdateClause); }
334481  virtual void visit(SgOmpDestroyClause *variable_SgOmpDestroyClause) { _strategy->visit(variable_SgOmpDestroyClause); }
334482  virtual void visit(SgOmpCaptureClause *variable_SgOmpCaptureClause) { _strategy->visit(variable_SgOmpCaptureClause); }
334483  virtual void visit(SgOmpSeqCstClause *variable_SgOmpSeqCstClause) { _strategy->visit(variable_SgOmpSeqCstClause); }
334484  virtual void visit(SgOmpAcqRelClause *variable_SgOmpAcqRelClause) { _strategy->visit(variable_SgOmpAcqRelClause); }
334485  virtual void visit(SgOmpReleaseClause *variable_SgOmpReleaseClause) { _strategy->visit(variable_SgOmpReleaseClause); }
334486  virtual void visit(SgOmpAcquireClause *variable_SgOmpAcquireClause) { _strategy->visit(variable_SgOmpAcquireClause); }
334487  virtual void visit(SgOmpRelaxedClause *variable_SgOmpRelaxedClause) { _strategy->visit(variable_SgOmpRelaxedClause); }
334488  virtual void visit(SgOmpParallelClause *variable_SgOmpParallelClause) { _strategy->visit(variable_SgOmpParallelClause); }
334489  virtual void visit(SgOmpSectionsClause *variable_SgOmpSectionsClause) { _strategy->visit(variable_SgOmpSectionsClause); }
334490  virtual void visit(SgOmpForClause *variable_SgOmpForClause) { _strategy->visit(variable_SgOmpForClause); }
334491  virtual void visit(SgOmpTaskgroupClause *variable_SgOmpTaskgroupClause) { _strategy->visit(variable_SgOmpTaskgroupClause); }
334492  virtual void visit(SgOmpBeginClause *variable_SgOmpBeginClause) { _strategy->visit(variable_SgOmpBeginClause); }
334493  virtual void visit(SgOmpEndClause *variable_SgOmpEndClause) { _strategy->visit(variable_SgOmpEndClause); }
334494  virtual void visit(SgOmpUntiedClause *variable_SgOmpUntiedClause) { _strategy->visit(variable_SgOmpUntiedClause); }
334495  virtual void visit(SgOmpMergeableClause *variable_SgOmpMergeableClause) { _strategy->visit(variable_SgOmpMergeableClause); }
334496  virtual void visit(SgOmpDefaultClause *variable_SgOmpDefaultClause) { _strategy->visit(variable_SgOmpDefaultClause); }
334497  virtual void visit(SgOmpAtomicClause *variable_SgOmpAtomicClause) { _strategy->visit(variable_SgOmpAtomicClause); }
334498  virtual void visit(SgOmpProcBindClause *variable_SgOmpProcBindClause) { _strategy->visit(variable_SgOmpProcBindClause); }
334499  virtual void visit(SgOmpOrderClause *variable_SgOmpOrderClause) { _strategy->visit(variable_SgOmpOrderClause); }
334500  virtual void visit(SgOmpBindClause *variable_SgOmpBindClause) { _strategy->visit(variable_SgOmpBindClause); }
334501  virtual void visit(SgOmpInbranchClause *variable_SgOmpInbranchClause) { _strategy->visit(variable_SgOmpInbranchClause); }
334502  virtual void visit(SgOmpNotinbranchClause *variable_SgOmpNotinbranchClause) { _strategy->visit(variable_SgOmpNotinbranchClause); }
334503  virtual void visit(SgOmpCollapseClause *variable_SgOmpCollapseClause) { _strategy->visit(variable_SgOmpCollapseClause); }
334504  virtual void visit(SgOmpIfClause *variable_SgOmpIfClause) { _strategy->visit(variable_SgOmpIfClause); }
334505  virtual void visit(SgOmpFinalClause *variable_SgOmpFinalClause) { _strategy->visit(variable_SgOmpFinalClause); }
334506  virtual void visit(SgOmpPriorityClause *variable_SgOmpPriorityClause) { _strategy->visit(variable_SgOmpPriorityClause); }
334507  virtual void visit(SgUpirNumUnitsField *variable_SgUpirNumUnitsField) { _strategy->visit(variable_SgUpirNumUnitsField); }
334508  virtual void visit(SgOmpNumTeamsClause *variable_SgOmpNumTeamsClause) { _strategy->visit(variable_SgOmpNumTeamsClause); }
334509  virtual void visit(SgOmpGrainsizeClause *variable_SgOmpGrainsizeClause) { _strategy->visit(variable_SgOmpGrainsizeClause); }
334510  virtual void visit(SgOmpDetachClause *variable_SgOmpDetachClause) { _strategy->visit(variable_SgOmpDetachClause); }
334511  virtual void visit(SgOmpNumTasksClause *variable_SgOmpNumTasksClause) { _strategy->visit(variable_SgOmpNumTasksClause); }
334512  virtual void visit(SgOmpHintClause *variable_SgOmpHintClause) { _strategy->visit(variable_SgOmpHintClause); }
334513  virtual void visit(SgOmpThreadLimitClause *variable_SgOmpThreadLimitClause) { _strategy->visit(variable_SgOmpThreadLimitClause); }
334514  virtual void visit(SgOmpNontemporalClause *variable_SgOmpNontemporalClause) { _strategy->visit(variable_SgOmpNontemporalClause); }
334515  virtual void visit(SgOmpInclusiveClause *variable_SgOmpInclusiveClause) { _strategy->visit(variable_SgOmpInclusiveClause); }
334516  virtual void visit(SgOmpExclusiveClause *variable_SgOmpExclusiveClause) { _strategy->visit(variable_SgOmpExclusiveClause); }
334517  virtual void visit(SgOmpIsDevicePtrClause *variable_SgOmpIsDevicePtrClause) { _strategy->visit(variable_SgOmpIsDevicePtrClause); }
334518  virtual void visit(SgOmpUseDevicePtrClause *variable_SgOmpUseDevicePtrClause) { _strategy->visit(variable_SgOmpUseDevicePtrClause); }
334519  virtual void visit(SgOmpUseDeviceAddrClause *variable_SgOmpUseDeviceAddrClause) { _strategy->visit(variable_SgOmpUseDeviceAddrClause); }
334520  virtual void visit(SgOmpDeviceClause *variable_SgOmpDeviceClause) { _strategy->visit(variable_SgOmpDeviceClause); }
334521  virtual void visit(SgOmpSafelenClause *variable_SgOmpSafelenClause) { _strategy->visit(variable_SgOmpSafelenClause); }
334522  virtual void visit(SgOmpSimdlenClause *variable_SgOmpSimdlenClause) { _strategy->visit(variable_SgOmpSimdlenClause); }
334523  virtual void visit(SgOmpPartialClause *variable_SgOmpPartialClause) { _strategy->visit(variable_SgOmpPartialClause); }
334524  virtual void visit(SgOmpFullClause *variable_SgOmpFullClause) { _strategy->visit(variable_SgOmpFullClause); }
334525  virtual void visit(SgOmpSizesClause *variable_SgOmpSizesClause) { _strategy->visit(variable_SgOmpSizesClause); }
334526  virtual void visit(SgUpirBranchField *variable_SgUpirBranchField) { _strategy->visit(variable_SgUpirBranchField); }
334527  virtual void visit(SgUpirNestedLevelField *variable_SgUpirNestedLevelField) { _strategy->visit(variable_SgUpirNestedLevelField); }
334528  virtual void visit(SgUpirNestedParentField *variable_SgUpirNestedParentField) { _strategy->visit(variable_SgUpirNestedParentField); }
334529  virtual void visit(SgUpirNestedChildField *variable_SgUpirNestedChildField) { _strategy->visit(variable_SgUpirNestedChildField); }
334530  virtual void visit(SgUpirSyncField *variable_SgUpirSyncField) { _strategy->visit(variable_SgUpirSyncField); }
334531  virtual void visit(SgUpirDataField *variable_SgUpirDataField) { _strategy->visit(variable_SgUpirDataField); }
334532  virtual void visit(SgUpirTargetField *variable_SgUpirTargetField) { _strategy->visit(variable_SgUpirTargetField); }
334533  virtual void visit(SgUpirDataItemField *variable_SgUpirDataItemField) { _strategy->visit(variable_SgUpirDataItemField); }
334534  virtual void visit(SgOmpExpressionClause *variable_SgOmpExpressionClause) { _strategy->visit(variable_SgOmpExpressionClause); }
334535  virtual void visit(SgOmpCopyprivateClause *variable_SgOmpCopyprivateClause) { _strategy->visit(variable_SgOmpCopyprivateClause); }
334536  virtual void visit(SgOmpPrivateClause *variable_SgOmpPrivateClause) { _strategy->visit(variable_SgOmpPrivateClause); }
334537  virtual void visit(SgOmpFirstprivateClause *variable_SgOmpFirstprivateClause) { _strategy->visit(variable_SgOmpFirstprivateClause); }
334538  virtual void visit(SgOmpSharedClause *variable_SgOmpSharedClause) { _strategy->visit(variable_SgOmpSharedClause); }
334539  virtual void visit(SgOmpCopyinClause *variable_SgOmpCopyinClause) { _strategy->visit(variable_SgOmpCopyinClause); }
334540  virtual void visit(SgOmpLastprivateClause *variable_SgOmpLastprivateClause) { _strategy->visit(variable_SgOmpLastprivateClause); }
334541  virtual void visit(SgOmpReductionClause *variable_SgOmpReductionClause) { _strategy->visit(variable_SgOmpReductionClause); }
334542  virtual void visit(SgOmpInReductionClause *variable_SgOmpInReductionClause) { _strategy->visit(variable_SgOmpInReductionClause); }
334543  virtual void visit(SgOmpTaskReductionClause *variable_SgOmpTaskReductionClause) { _strategy->visit(variable_SgOmpTaskReductionClause); }
334544  virtual void visit(SgOmpAllocateClause *variable_SgOmpAllocateClause) { _strategy->visit(variable_SgOmpAllocateClause); }
334545  virtual void visit(SgOmpDependClause *variable_SgOmpDependClause) { _strategy->visit(variable_SgOmpDependClause); }
334546  virtual void visit(SgOmpToClause *variable_SgOmpToClause) { _strategy->visit(variable_SgOmpToClause); }
334547  virtual void visit(SgOmpUsesAllocatorsClause *variable_SgOmpUsesAllocatorsClause) { _strategy->visit(variable_SgOmpUsesAllocatorsClause); }
334548  virtual void visit(SgOmpFromClause *variable_SgOmpFromClause) { _strategy->visit(variable_SgOmpFromClause); }
334549  virtual void visit(SgOmpAffinityClause *variable_SgOmpAffinityClause) { _strategy->visit(variable_SgOmpAffinityClause); }
334550  virtual void visit(SgOmpMapClause *variable_SgOmpMapClause) { _strategy->visit(variable_SgOmpMapClause); }
334551  virtual void visit(SgOmpLinearClause *variable_SgOmpLinearClause) { _strategy->visit(variable_SgOmpLinearClause); }
334552  virtual void visit(SgOmpUniformClause *variable_SgOmpUniformClause) { _strategy->visit(variable_SgOmpUniformClause); }
334553  virtual void visit(SgOmpAlignedClause *variable_SgOmpAlignedClause) { _strategy->visit(variable_SgOmpAlignedClause); }
334554  virtual void visit(SgOmpVariablesClause *variable_SgOmpVariablesClause) { _strategy->visit(variable_SgOmpVariablesClause); }
334555  virtual void visit(SgOmpScheduleClause *variable_SgOmpScheduleClause) { _strategy->visit(variable_SgOmpScheduleClause); }
334556  virtual void visit(SgOmpWhenClause *variable_SgOmpWhenClause) { _strategy->visit(variable_SgOmpWhenClause); }
334557  virtual void visit(SgOmpDistScheduleClause *variable_SgOmpDistScheduleClause) { _strategy->visit(variable_SgOmpDistScheduleClause); }
334558  virtual void visit(SgOmpDefaultmapClause *variable_SgOmpDefaultmapClause) { _strategy->visit(variable_SgOmpDefaultmapClause); }
334559  virtual void visit(SgOmpAllocatorClause *variable_SgOmpAllocatorClause) { _strategy->visit(variable_SgOmpAllocatorClause); }
334560  virtual void visit(SgOmpUsesAllocatorsDefination *variable_SgOmpUsesAllocatorsDefination) { _strategy->visit(variable_SgOmpUsesAllocatorsDefination); }
334561  virtual void visit(SgOmpClause *variable_SgOmpClause) { _strategy->visit(variable_SgOmpClause); }
334562  virtual void visit(SgRenamePair *variable_SgRenamePair) { _strategy->visit(variable_SgRenamePair); }
334563  virtual void visit(SgInterfaceBody *variable_SgInterfaceBody) { _strategy->visit(variable_SgInterfaceBody); }
334564  virtual void visit(SgHeaderFileBody *variable_SgHeaderFileBody) { _strategy->visit(variable_SgHeaderFileBody); }
334565  virtual void visit(SgLocatedNodeSupport *variable_SgLocatedNodeSupport) { _strategy->visit(variable_SgLocatedNodeSupport); }
334566  virtual void visit(SgToken *variable_SgToken) { _strategy->visit(variable_SgToken); }
334567  virtual void visit(SgLocatedNode *variable_SgLocatedNode) { _strategy->visit(variable_SgLocatedNode); }
334568  virtual void visit(SgNode *variable_SgNode) { _strategy->visit(variable_SgNode); }
334569  virtual void visitDefault(SgNode* n) { _strategy->visitDefault(n); }
334570 };
334571 #endif // endif for ifndef SWIG
334572 
334573 
334574 
334575 
334576 
334577 #endif // ifndef IFDEF_MARKER_H
334578 
334579 
334580 #ifndef SWIG
334581 
334582 #ifndef REFERENCETOPOINTERHANDLER_DEFINED
334583 #define REFERENCETOPOINTERHANDLER_DEFINED
334584 
334585 struct ReferenceToPointerHandler
334586  {
334587  virtual void apply(SgName *&r, const SgName &n, bool traverse) = 0;
334588  virtual void apply(SgSymbolTable *&r, const SgName &n, bool traverse) = 0;
334589  virtual void apply(SgPragma *&r, const SgName &n, bool traverse) = 0;
334590  virtual void apply(SgModifierNodes *&r, const SgName &n, bool traverse) = 0;
334591  virtual void apply(SgConstVolatileModifier *&r, const SgName &n, bool traverse) = 0;
334592  virtual void apply(SgStorageModifier *&r, const SgName &n, bool traverse) = 0;
334593  virtual void apply(SgAccessModifier *&r, const SgName &n, bool traverse) = 0;
334594  virtual void apply(SgFunctionModifier *&r, const SgName &n, bool traverse) = 0;
334595  virtual void apply(SgUPC_AccessModifier *&r, const SgName &n, bool traverse) = 0;
334596  virtual void apply(SgLinkageModifier *&r, const SgName &n, bool traverse) = 0;
334597  virtual void apply(SgSpecialFunctionModifier *&r, const SgName &n, bool traverse) = 0;
334598  virtual void apply(SgTypeModifier *&r, const SgName &n, bool traverse) = 0;
334599  virtual void apply(SgElaboratedTypeModifier *&r, const SgName &n, bool traverse) = 0;
334600  virtual void apply(SgBaseClassModifier *&r, const SgName &n, bool traverse) = 0;
334601  virtual void apply(SgDeclarationModifier *&r, const SgName &n, bool traverse) = 0;
334602  virtual void apply(SgStructureModifier *&r, const SgName &n, bool traverse) = 0;
334603  virtual void apply(SgOpenclAccessModeModifier *&r, const SgName &n, bool traverse) = 0;
334604  virtual void apply(SgModifier *&r, const SgName &n, bool traverse) = 0;
334605  virtual void apply(Sg_File_Info *&r, const SgName &n, bool traverse) = 0;
334606  virtual void apply(SgSourceFile *&r, const SgName &n, bool traverse) = 0;
334607  virtual void apply(SgUnknownFile *&r, const SgName &n, bool traverse) = 0;
334608  virtual void apply(SgFile *&r, const SgName &n, bool traverse) = 0;
334609  virtual void apply(SgFileList *&r, const SgName &n, bool traverse) = 0;
334610  virtual void apply(SgDirectory *&r, const SgName &n, bool traverse) = 0;
334611  virtual void apply(SgDirectoryList *&r, const SgName &n, bool traverse) = 0;
334612  virtual void apply(SgProject *&r, const SgName &n, bool traverse) = 0;
334613  virtual void apply(SgOptions *&r, const SgName &n, bool traverse) = 0;
334614  virtual void apply(SgUnparse_Info *&r, const SgName &n, bool traverse) = 0;
334615  virtual void apply(SgIncludeFile *&r, const SgName &n, bool traverse) = 0;
334616  virtual void apply(SgFuncDecl_attr *&r, const SgName &n, bool traverse) = 0;
334617  virtual void apply(SgClassDecl_attr *&r, const SgName &n, bool traverse) = 0;
334618  virtual void apply(SgTypedefSeq *&r, const SgName &n, bool traverse) = 0;
334619  virtual void apply(SgFunctionParameterTypeList *&r, const SgName &n, bool traverse) = 0;
334620  virtual void apply(SgTemplateParameter *&r, const SgName &n, bool traverse) = 0;
334621  virtual void apply(SgTemplateArgument *&r, const SgName &n, bool traverse) = 0;
334622  virtual void apply(SgTemplateParameterList *&r, const SgName &n, bool traverse) = 0;
334623  virtual void apply(SgTemplateArgumentList *&r, const SgName &n, bool traverse) = 0;
334624  virtual void apply(SgBitAttribute *&r, const SgName &n, bool traverse) = 0;
334625  virtual void apply(SgAttribute *&r, const SgName &n, bool traverse) = 0;
334626  virtual void apply(SgExpBaseClass *&r, const SgName &n, bool traverse) = 0;
334627  virtual void apply(SgNonrealBaseClass *&r, const SgName &n, bool traverse) = 0;
334628  virtual void apply(SgBaseClass *&r, const SgName &n, bool traverse) = 0;
334629  virtual void apply(SgUndirectedGraphEdge *&r, const SgName &n, bool traverse) = 0;
334630  virtual void apply(SgDirectedGraphEdge *&r, const SgName &n, bool traverse) = 0;
334631  virtual void apply(SgGraphNode *&r, const SgName &n, bool traverse) = 0;
334632  virtual void apply(SgGraphEdge *&r, const SgName &n, bool traverse) = 0;
334633  virtual void apply(SgStringKeyedBidirectionalGraph *&r, const SgName &n, bool traverse) = 0;
334634  virtual void apply(SgIntKeyedBidirectionalGraph *&r, const SgName &n, bool traverse) = 0;
334635  virtual void apply(SgBidirectionalGraph *&r, const SgName &n, bool traverse) = 0;
334636  virtual void apply(SgIncidenceDirectedGraph *&r, const SgName &n, bool traverse) = 0;
334637  virtual void apply(SgIncidenceUndirectedGraph *&r, const SgName &n, bool traverse) = 0;
334638  virtual void apply(SgGraph *&r, const SgName &n, bool traverse) = 0;
334639  virtual void apply(SgGraphNodeList *&r, const SgName &n, bool traverse) = 0;
334640  virtual void apply(SgGraphEdgeList *&r, const SgName &n, bool traverse) = 0;
334641  virtual void apply(SgQualifiedName *&r, const SgName &n, bool traverse) = 0;
334642  virtual void apply(SgNameGroup *&r, const SgName &n, bool traverse) = 0;
334643  virtual void apply(SgDimensionObject *&r, const SgName &n, bool traverse) = 0;
334644  virtual void apply(SgDataStatementGroup *&r, const SgName &n, bool traverse) = 0;
334645  virtual void apply(SgDataStatementObject *&r, const SgName &n, bool traverse) = 0;
334646  virtual void apply(SgDataStatementValue *&r, const SgName &n, bool traverse) = 0;
334647  virtual void apply(SgFormatItem *&r, const SgName &n, bool traverse) = 0;
334648  virtual void apply(SgFormatItemList *&r, const SgName &n, bool traverse) = 0;
334649  virtual void apply(SgTypeTable *&r, const SgName &n, bool traverse) = 0;
334650  virtual void apply(SgHeaderFileReport *&r, const SgName &n, bool traverse) = 0;
334651  virtual void apply(SgSupport *&r, const SgName &n, bool traverse) = 0;
334652  virtual void apply(SgTypeUnknown *&r, const SgName &n, bool traverse) = 0;
334653  virtual void apply(SgTypeChar *&r, const SgName &n, bool traverse) = 0;
334654  virtual void apply(SgTypeSignedChar *&r, const SgName &n, bool traverse) = 0;
334655  virtual void apply(SgTypeUnsignedChar *&r, const SgName &n, bool traverse) = 0;
334656  virtual void apply(SgTypeShort *&r, const SgName &n, bool traverse) = 0;
334657  virtual void apply(SgTypeSignedShort *&r, const SgName &n, bool traverse) = 0;
334658  virtual void apply(SgTypeUnsignedShort *&r, const SgName &n, bool traverse) = 0;
334659  virtual void apply(SgTypeInt *&r, const SgName &n, bool traverse) = 0;
334660  virtual void apply(SgTypeSignedInt *&r, const SgName &n, bool traverse) = 0;
334661  virtual void apply(SgTypeUnsignedInt *&r, const SgName &n, bool traverse) = 0;
334662  virtual void apply(SgTypeLong *&r, const SgName &n, bool traverse) = 0;
334663  virtual void apply(SgTypeSignedLong *&r, const SgName &n, bool traverse) = 0;
334664  virtual void apply(SgTypeUnsignedLong *&r, const SgName &n, bool traverse) = 0;
334665  virtual void apply(SgTypeVoid *&r, const SgName &n, bool traverse) = 0;
334666  virtual void apply(SgTypeGlobalVoid *&r, const SgName &n, bool traverse) = 0;
334667  virtual void apply(SgTypeWchar *&r, const SgName &n, bool traverse) = 0;
334668  virtual void apply(SgTypeFloat *&r, const SgName &n, bool traverse) = 0;
334669  virtual void apply(SgTypeDouble *&r, const SgName &n, bool traverse) = 0;
334670  virtual void apply(SgTypeLongLong *&r, const SgName &n, bool traverse) = 0;
334671  virtual void apply(SgTypeSignedLongLong *&r, const SgName &n, bool traverse) = 0;
334672  virtual void apply(SgTypeUnsignedLongLong *&r, const SgName &n, bool traverse) = 0;
334673  virtual void apply(SgTypeLongDouble *&r, const SgName &n, bool traverse) = 0;
334674  virtual void apply(SgTypeFloat80 *&r, const SgName &n, bool traverse) = 0;
334675  virtual void apply(SgTypeFloat128 *&r, const SgName &n, bool traverse) = 0;
334676  virtual void apply(SgTypeString *&r, const SgName &n, bool traverse) = 0;
334677  virtual void apply(SgTypeBool *&r, const SgName &n, bool traverse) = 0;
334678  virtual void apply(SgTypeFixed *&r, const SgName &n, bool traverse) = 0;
334679  virtual void apply(SgTypeMatrix *&r, const SgName &n, bool traverse) = 0;
334680  virtual void apply(SgTypeTuple *&r, const SgName &n, bool traverse) = 0;
334681  virtual void apply(SgTypeNullptr *&r, const SgName &n, bool traverse) = 0;
334682  virtual void apply(SgTypeComplex *&r, const SgName &n, bool traverse) = 0;
334683  virtual void apply(SgTypeImaginary *&r, const SgName &n, bool traverse) = 0;
334684  virtual void apply(SgTypeDefault *&r, const SgName &n, bool traverse) = 0;
334685  virtual void apply(SgPointerMemberType *&r, const SgName &n, bool traverse) = 0;
334686  virtual void apply(SgReferenceType *&r, const SgName &n, bool traverse) = 0;
334687  virtual void apply(SgRvalueReferenceType *&r, const SgName &n, bool traverse) = 0;
334688  virtual void apply(SgDeclType *&r, const SgName &n, bool traverse) = 0;
334689  virtual void apply(SgTypeOfType *&r, const SgName &n, bool traverse) = 0;
334690  virtual void apply(SgTypeCAFTeam *&r, const SgName &n, bool traverse) = 0;
334691  virtual void apply(SgTypeUnsigned128bitInteger *&r, const SgName &n, bool traverse) = 0;
334692  virtual void apply(SgTypeSigned128bitInteger *&r, const SgName &n, bool traverse) = 0;
334693  virtual void apply(SgTypeLabel *&r, const SgName &n, bool traverse) = 0;
334694  virtual void apply(SgTemplateType *&r, const SgName &n, bool traverse) = 0;
334695  virtual void apply(SgEnumType *&r, const SgName &n, bool traverse) = 0;
334696  virtual void apply(SgTypedefType *&r, const SgName &n, bool traverse) = 0;
334697  virtual void apply(SgNonrealType *&r, const SgName &n, bool traverse) = 0;
334698  virtual void apply(SgAutoType *&r, const SgName &n, bool traverse) = 0;
334699  virtual void apply(SgModifierType *&r, const SgName &n, bool traverse) = 0;
334700  virtual void apply(SgPartialFunctionModifierType *&r, const SgName &n, bool traverse) = 0;
334701  virtual void apply(SgArrayType *&r, const SgName &n, bool traverse) = 0;
334702  virtual void apply(SgTypeEllipse *&r, const SgName &n, bool traverse) = 0;
334703  virtual void apply(SgTypeCrayPointer *&r, const SgName &n, bool traverse) = 0;
334704  virtual void apply(SgPartialFunctionType *&r, const SgName &n, bool traverse) = 0;
334705  virtual void apply(SgMemberFunctionType *&r, const SgName &n, bool traverse) = 0;
334706  virtual void apply(SgFunctionType *&r, const SgName &n, bool traverse) = 0;
334707  virtual void apply(SgPointerType *&r, const SgName &n, bool traverse) = 0;
334708  virtual void apply(SgClassType *&r, const SgName &n, bool traverse) = 0;
334709  virtual void apply(SgNamedType *&r, const SgName &n, bool traverse) = 0;
334710  virtual void apply(SgQualifiedNameType *&r, const SgName &n, bool traverse) = 0;
334711  virtual void apply(SgTypeChar16 *&r, const SgName &n, bool traverse) = 0;
334712  virtual void apply(SgTypeChar32 *&r, const SgName &n, bool traverse) = 0;
334713  virtual void apply(SgType *&r, const SgName &n, bool traverse) = 0;
334714  virtual void apply(SgForStatement *&r, const SgName &n, bool traverse) = 0;
334715  virtual void apply(SgForInitStatement *&r, const SgName &n, bool traverse) = 0;
334716  virtual void apply(SgRangeBasedForStatement *&r, const SgName &n, bool traverse) = 0;
334717  virtual void apply(SgCatchStatementSeq *&r, const SgName &n, bool traverse) = 0;
334718  virtual void apply(SgFunctionParameterList *&r, const SgName &n, bool traverse) = 0;
334719  virtual void apply(SgCtorInitializerList *&r, const SgName &n, bool traverse) = 0;
334720  virtual void apply(SgBasicBlock *&r, const SgName &n, bool traverse) = 0;
334721  virtual void apply(SgGlobal *&r, const SgName &n, bool traverse) = 0;
334722  virtual void apply(SgIfStmt *&r, const SgName &n, bool traverse) = 0;
334723  virtual void apply(SgWhileStmt *&r, const SgName &n, bool traverse) = 0;
334724  virtual void apply(SgDoWhileStmt *&r, const SgName &n, bool traverse) = 0;
334725  virtual void apply(SgSwitchStatement *&r, const SgName &n, bool traverse) = 0;
334726  virtual void apply(SgCatchOptionStmt *&r, const SgName &n, bool traverse) = 0;
334727  virtual void apply(SgFunctionParameterScope *&r, const SgName &n, bool traverse) = 0;
334728  virtual void apply(SgDeclarationScope *&r, const SgName &n, bool traverse) = 0;
334729  virtual void apply(SgVariableDefinition *&r, const SgName &n, bool traverse) = 0;
334730  virtual void apply(SgStmtDeclarationStatement *&r, const SgName &n, bool traverse) = 0;
334731  virtual void apply(SgEnumDeclaration *&r, const SgName &n, bool traverse) = 0;
334732  virtual void apply(SgAsmStmt *&r, const SgName &n, bool traverse) = 0;
334733  virtual void apply(SgFunctionTypeTable *&r, const SgName &n, bool traverse) = 0;
334734  virtual void apply(SgExprStatement *&r, const SgName &n, bool traverse) = 0;
334735  virtual void apply(SgLabelStatement *&r, const SgName &n, bool traverse) = 0;
334736  virtual void apply(SgCaseOptionStmt *&r, const SgName &n, bool traverse) = 0;
334737  virtual void apply(SgTryStmt *&r, const SgName &n, bool traverse) = 0;
334738  virtual void apply(SgDefaultOptionStmt *&r, const SgName &n, bool traverse) = 0;
334739  virtual void apply(SgBreakStmt *&r, const SgName &n, bool traverse) = 0;
334740  virtual void apply(SgContinueStmt *&r, const SgName &n, bool traverse) = 0;
334741  virtual void apply(SgReturnStmt *&r, const SgName &n, bool traverse) = 0;
334742  virtual void apply(SgGotoStatement *&r, const SgName &n, bool traverse) = 0;
334743  virtual void apply(SgSpawnStmt *&r, const SgName &n, bool traverse) = 0;
334744  virtual void apply(SgTemplateTypedefDeclaration *&r, const SgName &n, bool traverse) = 0;
334745  virtual void apply(SgTemplateInstantiationTypedefDeclaration *&r, const SgName &n, bool traverse) = 0;
334746  virtual void apply(SgTypedefDeclaration *&r, const SgName &n, bool traverse) = 0;
334747  virtual void apply(SgNullStatement *&r, const SgName &n, bool traverse) = 0;
334748  virtual void apply(SgVariantStatement *&r, const SgName &n, bool traverse) = 0;
334749  virtual void apply(SgPragmaDeclaration *&r, const SgName &n, bool traverse) = 0;
334750  virtual void apply(SgTemplateClassDeclaration *&r, const SgName &n, bool traverse) = 0;
334751  virtual void apply(SgTemplateMemberFunctionDeclaration *&r, const SgName &n, bool traverse) = 0;
334752  virtual void apply(SgTemplateFunctionDeclaration *&r, const SgName &n, bool traverse) = 0;
334753  virtual void apply(SgTemplateVariableDeclaration *&r, const SgName &n, bool traverse) = 0;
334754  virtual void apply(SgTemplateDeclaration *&r, const SgName &n, bool traverse) = 0;
334755  virtual void apply(SgVariableDeclaration *&r, const SgName &n, bool traverse) = 0;
334756  virtual void apply(SgTemplateInstantiationDecl *&r, const SgName &n, bool traverse) = 0;
334757  virtual void apply(SgTemplateInstantiationDefn *&r, const SgName &n, bool traverse) = 0;
334758  virtual void apply(SgTemplateInstantiationFunctionDecl *&r, const SgName &n, bool traverse) = 0;
334759  virtual void apply(SgTemplateInstantiationMemberFunctionDecl *&r, const SgName &n, bool traverse) = 0;
334760  virtual void apply(SgNonrealDecl *&r, const SgName &n, bool traverse) = 0;
334761  virtual void apply(SgWithStatement *&r, const SgName &n, bool traverse) = 0;
334762  virtual void apply(SgPassStatement *&r, const SgName &n, bool traverse) = 0;
334763  virtual void apply(SgAssertStmt *&r, const SgName &n, bool traverse) = 0;
334764  virtual void apply(SgExecStatement *&r, const SgName &n, bool traverse) = 0;
334765  virtual void apply(SgProgramHeaderStatement *&r, const SgName &n, bool traverse) = 0;
334766  virtual void apply(SgProcedureHeaderStatement *&r, const SgName &n, bool traverse) = 0;
334767  virtual void apply(SgEntryStatement *&r, const SgName &n, bool traverse) = 0;
334768  virtual void apply(SgFortranNonblockedDo *&r, const SgName &n, bool traverse) = 0;
334769  virtual void apply(SgInterfaceStatement *&r, const SgName &n, bool traverse) = 0;
334770  virtual void apply(SgParameterStatement *&r, const SgName &n, bool traverse) = 0;
334771  virtual void apply(SgCommonBlock *&r, const SgName &n, bool traverse) = 0;
334772  virtual void apply(SgModuleStatement *&r, const SgName &n, bool traverse) = 0;
334773  virtual void apply(SgUseStatement *&r, const SgName &n, bool traverse) = 0;
334774  virtual void apply(SgProcessControlStatement *&r, const SgName &n, bool traverse) = 0;
334775  virtual void apply(SgPrintStatement *&r, const SgName &n, bool traverse) = 0;
334776  virtual void apply(SgReadStatement *&r, const SgName &n, bool traverse) = 0;
334777  virtual void apply(SgWriteStatement *&r, const SgName &n, bool traverse) = 0;
334778  virtual void apply(SgOpenStatement *&r, const SgName &n, bool traverse) = 0;
334779  virtual void apply(SgCloseStatement *&r, const SgName &n, bool traverse) = 0;
334780  virtual void apply(SgInquireStatement *&r, const SgName &n, bool traverse) = 0;
334781  virtual void apply(SgFlushStatement *&r, const SgName &n, bool traverse) = 0;
334782  virtual void apply(SgBackspaceStatement *&r, const SgName &n, bool traverse) = 0;
334783  virtual void apply(SgRewindStatement *&r, const SgName &n, bool traverse) = 0;
334784  virtual void apply(SgEndfileStatement *&r, const SgName &n, bool traverse) = 0;
334785  virtual void apply(SgWaitStatement *&r, const SgName &n, bool traverse) = 0;
334786  virtual void apply(SgCAFWithTeamStatement *&r, const SgName &n, bool traverse) = 0;
334787  virtual void apply(SgFormatStatement *&r, const SgName &n, bool traverse) = 0;
334788  virtual void apply(SgFortranDo *&r, const SgName &n, bool traverse) = 0;
334789  virtual void apply(SgForAllStatement *&r, const SgName &n, bool traverse) = 0;
334790  virtual void apply(SgIOStatement *&r, const SgName &n, bool traverse) = 0;
334791  virtual void apply(SgSyncAllStatement *&r, const SgName &n, bool traverse) = 0;
334792  virtual void apply(SgSyncImagesStatement *&r, const SgName &n, bool traverse) = 0;
334793  virtual void apply(SgSyncMemoryStatement *&r, const SgName &n, bool traverse) = 0;
334794  virtual void apply(SgSyncTeamStatement *&r, const SgName &n, bool traverse) = 0;
334795  virtual void apply(SgLockStatement *&r, const SgName &n, bool traverse) = 0;
334796  virtual void apply(SgUnlockStatement *&r, const SgName &n, bool traverse) = 0;
334797  virtual void apply(SgImageControlStatement *&r, const SgName &n, bool traverse) = 0;
334798  virtual void apply(SgUpcNotifyStatement *&r, const SgName &n, bool traverse) = 0;
334799  virtual void apply(SgUpcWaitStatement *&r, const SgName &n, bool traverse) = 0;
334800  virtual void apply(SgUpcBarrierStatement *&r, const SgName &n, bool traverse) = 0;
334801  virtual void apply(SgUpcFenceStatement *&r, const SgName &n, bool traverse) = 0;
334802  virtual void apply(SgUpcForAllStatement *&r, const SgName &n, bool traverse) = 0;
334803  virtual void apply(SgUpirSpmdStatement *&r, const SgName &n, bool traverse) = 0;
334804  virtual void apply(SgOmpLoopStatement *&r, const SgName &n, bool traverse) = 0;
334805  virtual void apply(SgOmpScanStatement *&r, const SgName &n, bool traverse) = 0;
334806  virtual void apply(SgOmpTaskloopStatement *&r, const SgName &n, bool traverse) = 0;
334807  virtual void apply(SgOmpTaskgroupStatement *&r, const SgName &n, bool traverse) = 0;
334808  virtual void apply(SgOmpDepobjStatement *&r, const SgName &n, bool traverse) = 0;
334809  virtual void apply(SgOmpTeamsStatement *&r, const SgName &n, bool traverse) = 0;
334810  virtual void apply(SgOmpCancellationPointStatement *&r, const SgName &n, bool traverse) = 0;
334811  virtual void apply(SgOmpDeclareMapperStatement *&r, const SgName &n, bool traverse) = 0;
334812  virtual void apply(SgOmpCancelStatement *&r, const SgName &n, bool traverse) = 0;
334813  virtual void apply(SgOmpDistributeStatement *&r, const SgName &n, bool traverse) = 0;
334814  virtual void apply(SgOmpMetadirectiveStatement *&r, const SgName &n, bool traverse) = 0;
334815  virtual void apply(SgOmpSingleStatement *&r, const SgName &n, bool traverse) = 0;
334816  virtual void apply(SgOmpTaskStatement *&r, const SgName &n, bool traverse) = 0;
334817  virtual void apply(SgOmpTargetEnterDataStatement *&r, const SgName &n, bool traverse) = 0;
334818  virtual void apply(SgOmpTargetExitDataStatement *&r, const SgName &n, bool traverse) = 0;
334819  virtual void apply(SgUpirWorksharingStatement *&r, const SgName &n, bool traverse) = 0;
334820  virtual void apply(SgOmpForSimdStatement *&r, const SgName &n, bool traverse) = 0;
334821  virtual void apply(SgOmpDoStatement *&r, const SgName &n, bool traverse) = 0;
334822  virtual void apply(SgOmpSectionsStatement *&r, const SgName &n, bool traverse) = 0;
334823  virtual void apply(SgOmpAtomicStatement *&r, const SgName &n, bool traverse) = 0;
334824  virtual void apply(SgUpirTaskStatement *&r, const SgName &n, bool traverse) = 0;
334825  virtual void apply(SgOmpTargetDataStatement *&r, const SgName &n, bool traverse) = 0;
334826  virtual void apply(SgOmpTargetParallelForStatement *&r, const SgName &n, bool traverse) = 0;
334827  virtual void apply(SgOmpTargetParallelStatement *&r, const SgName &n, bool traverse) = 0;
334828  virtual void apply(SgOmpDistributeSimdStatement *&r, const SgName &n, bool traverse) = 0;
334829  virtual void apply(SgOmpDistributeParallelForStatement *&r, const SgName &n, bool traverse) = 0;
334830  virtual void apply(SgOmpDistributeParallelForSimdStatement *&r, const SgName &n, bool traverse) = 0;
334831  virtual void apply(SgOmpTaskloopSimdStatement *&r, const SgName &n, bool traverse) = 0;
334832  virtual void apply(SgOmpTargetUpdateStatement *&r, const SgName &n, bool traverse) = 0;
334833  virtual void apply(SgOmpTargetParallelForSimdStatement *&r, const SgName &n, bool traverse) = 0;
334834  virtual void apply(SgOmpTargetParallelLoopStatement *&r, const SgName &n, bool traverse) = 0;
334835  virtual void apply(SgOmpTargetSimdStatement *&r, const SgName &n, bool traverse) = 0;
334836  virtual void apply(SgOmpTargetTeamsStatement *&r, const SgName &n, bool traverse) = 0;
334837  virtual void apply(SgOmpTargetTeamsDistributeStatement *&r, const SgName &n, bool traverse) = 0;
334838  virtual void apply(SgOmpTargetTeamsDistributeSimdStatement *&r, const SgName &n, bool traverse) = 0;
334839  virtual void apply(SgOmpTargetTeamsLoopStatement *&r, const SgName &n, bool traverse) = 0;
334840  virtual void apply(SgOmpTargetTeamsDistributeParallelForStatement *&r, const SgName &n, bool traverse) = 0;
334841  virtual void apply(SgOmpTargetTeamsDistributeParallelForSimdStatement *&r, const SgName &n, bool traverse) = 0;
334842  virtual void apply(SgOmpMasterTaskloopSimdStatement *&r, const SgName &n, bool traverse) = 0;
334843  virtual void apply(SgOmpParallelMasterTaskloopStatement *&r, const SgName &n, bool traverse) = 0;
334844  virtual void apply(SgOmpParallelMasterTaskloopSimdStatement *&r, const SgName &n, bool traverse) = 0;
334845  virtual void apply(SgOmpTeamsDistributeStatement *&r, const SgName &n, bool traverse) = 0;
334846  virtual void apply(SgOmpTeamsDistributeSimdStatement *&r, const SgName &n, bool traverse) = 0;
334847  virtual void apply(SgOmpTeamsDistributeParallelForStatement *&r, const SgName &n, bool traverse) = 0;
334848  virtual void apply(SgOmpTeamsDistributeParallelForSimdStatement *&r, const SgName &n, bool traverse) = 0;
334849  virtual void apply(SgOmpTeamsLoopStatement *&r, const SgName &n, bool traverse) = 0;
334850  virtual void apply(SgOmpParallelMasterStatement *&r, const SgName &n, bool traverse) = 0;
334851  virtual void apply(SgOmpMasterTaskloopStatement *&r, const SgName &n, bool traverse) = 0;
334852  virtual void apply(SgOmpParallelLoopStatement *&r, const SgName &n, bool traverse) = 0;
334853  virtual void apply(SgOmpUnrollStatement *&r, const SgName &n, bool traverse) = 0;
334854  virtual void apply(SgOmpTileStatement *&r, const SgName &n, bool traverse) = 0;
334855  virtual void apply(SgUpirSimdStatement *&r, const SgName &n, bool traverse) = 0;
334856  virtual void apply(SgOmpCriticalStatement *&r, const SgName &n, bool traverse) = 0;
334857  virtual void apply(SgOmpOrderedStatement *&r, const SgName &n, bool traverse) = 0;
334858  virtual void apply(SgUpirLoopStatement *&r, const SgName &n, bool traverse) = 0;
334859  virtual void apply(SgUpirLoopParallelStatement *&r, const SgName &n, bool traverse) = 0;
334860  virtual void apply(SgUpirSyncStatement *&r, const SgName &n, bool traverse) = 0;
334861  virtual void apply(SgUpirFieldBodyStatement *&r, const SgName &n, bool traverse) = 0;
334862  virtual void apply(SgOmpMasterStatement *&r, const SgName &n, bool traverse) = 0;
334863  virtual void apply(SgOmpSectionStatement *&r, const SgName &n, bool traverse) = 0;
334864  virtual void apply(SgOmpWorkshareStatement *&r, const SgName &n, bool traverse) = 0;
334865  virtual void apply(SgOmpFlushStatement *&r, const SgName &n, bool traverse) = 0;
334866  virtual void apply(SgOmpAllocateStatement *&r, const SgName &n, bool traverse) = 0;
334867  virtual void apply(SgOmpOrderedDependStatement *&r, const SgName &n, bool traverse) = 0;
334868  virtual void apply(SgUpirBodyStatement *&r, const SgName &n, bool traverse) = 0;
334869  virtual void apply(SgUpirFieldStatement *&r, const SgName &n, bool traverse) = 0;
334870  virtual void apply(SgBlockDataStatement *&r, const SgName &n, bool traverse) = 0;
334871  virtual void apply(SgImplicitStatement *&r, const SgName &n, bool traverse) = 0;
334872  virtual void apply(SgStatementFunctionStatement *&r, const SgName &n, bool traverse) = 0;
334873  virtual void apply(SgWhereStatement *&r, const SgName &n, bool traverse) = 0;
334874  virtual void apply(SgNullifyStatement *&r, const SgName &n, bool traverse) = 0;
334875  virtual void apply(SgEquivalenceStatement *&r, const SgName &n, bool traverse) = 0;
334876  virtual void apply(SgDerivedTypeStatement *&r, const SgName &n, bool traverse) = 0;
334877  virtual void apply(SgAttributeSpecificationStatement *&r, const SgName &n, bool traverse) = 0;
334878  virtual void apply(SgAllocateStatement *&r, const SgName &n, bool traverse) = 0;
334879  virtual void apply(SgDeallocateStatement *&r, const SgName &n, bool traverse) = 0;
334880  virtual void apply(SgContainsStatement *&r, const SgName &n, bool traverse) = 0;
334881  virtual void apply(SgSequenceStatement *&r, const SgName &n, bool traverse) = 0;
334882  virtual void apply(SgElseWhereStatement *&r, const SgName &n, bool traverse) = 0;
334883  virtual void apply(SgArithmeticIfStatement *&r, const SgName &n, bool traverse) = 0;
334884  virtual void apply(SgAssignStatement *&r, const SgName &n, bool traverse) = 0;
334885  virtual void apply(SgComputedGotoStatement *&r, const SgName &n, bool traverse) = 0;
334886  virtual void apply(SgAssignedGotoStatement *&r, const SgName &n, bool traverse) = 0;
334887  virtual void apply(SgNamelistStatement *&r, const SgName &n, bool traverse) = 0;
334888  virtual void apply(SgImportStatement *&r, const SgName &n, bool traverse) = 0;
334889  virtual void apply(SgAssociateStatement *&r, const SgName &n, bool traverse) = 0;
334890  virtual void apply(SgFortranIncludeLine *&r, const SgName &n, bool traverse) = 0;
334891  virtual void apply(SgNamespaceDeclarationStatement *&r, const SgName &n, bool traverse) = 0;
334892  virtual void apply(SgNamespaceAliasDeclarationStatement *&r, const SgName &n, bool traverse) = 0;
334893  virtual void apply(SgNamespaceDefinitionStatement *&r, const SgName &n, bool traverse) = 0;
334894  virtual void apply(SgUsingDeclarationStatement *&r, const SgName &n, bool traverse) = 0;
334895  virtual void apply(SgUsingDirectiveStatement *&r, const SgName &n, bool traverse) = 0;
334896  virtual void apply(SgTemplateInstantiationDirectiveStatement *&r, const SgName &n, bool traverse) = 0;
334897  virtual void apply(SgStaticAssertionDeclaration *&r, const SgName &n, bool traverse) = 0;
334898  virtual void apply(SgTemplateClassDefinition *&r, const SgName &n, bool traverse) = 0;
334899  virtual void apply(SgTemplateFunctionDefinition *&r, const SgName &n, bool traverse) = 0;
334900  virtual void apply(SgClassDeclaration *&r, const SgName &n, bool traverse) = 0;
334901  virtual void apply(SgClassDefinition *&r, const SgName &n, bool traverse) = 0;
334902  virtual void apply(SgFunctionDefinition *&r, const SgName &n, bool traverse) = 0;
334903  virtual void apply(SgScopeStatement *&r, const SgName &n, bool traverse) = 0;
334904  virtual void apply(SgMemberFunctionDeclaration *&r, const SgName &n, bool traverse) = 0;
334905  virtual void apply(SgFunctionDeclaration *&r, const SgName &n, bool traverse) = 0;
334906  virtual void apply(SgIncludeDirectiveStatement *&r, const SgName &n, bool traverse) = 0;
334907  virtual void apply(SgDefineDirectiveStatement *&r, const SgName &n, bool traverse) = 0;
334908  virtual void apply(SgUndefDirectiveStatement *&r, const SgName &n, bool traverse) = 0;
334909  virtual void apply(SgIfdefDirectiveStatement *&r, const SgName &n, bool traverse) = 0;
334910  virtual void apply(SgIfndefDirectiveStatement *&r, const SgName &n, bool traverse) = 0;
334911  virtual void apply(SgIfDirectiveStatement *&r, const SgName &n, bool traverse) = 0;
334912  virtual void apply(SgDeadIfDirectiveStatement *&r, const SgName &n, bool traverse) = 0;
334913  virtual void apply(SgElseDirectiveStatement *&r, const SgName &n, bool traverse) = 0;
334914  virtual void apply(SgElseifDirectiveStatement *&r, const SgName &n, bool traverse) = 0;
334915  virtual void apply(SgEndifDirectiveStatement *&r, const SgName &n, bool traverse) = 0;
334916  virtual void apply(SgLineDirectiveStatement *&r, const SgName &n, bool traverse) = 0;
334917  virtual void apply(SgWarningDirectiveStatement *&r, const SgName &n, bool traverse) = 0;
334918  virtual void apply(SgErrorDirectiveStatement *&r, const SgName &n, bool traverse) = 0;
334919  virtual void apply(SgEmptyDirectiveStatement *&r, const SgName &n, bool traverse) = 0;
334920  virtual void apply(SgIncludeNextDirectiveStatement *&r, const SgName &n, bool traverse) = 0;
334921  virtual void apply(SgIdentDirectiveStatement *&r, const SgName &n, bool traverse) = 0;
334922  virtual void apply(SgLinemarkerDirectiveStatement *&r, const SgName &n, bool traverse) = 0;
334923  virtual void apply(SgC_PreprocessorDirectiveStatement *&r, const SgName &n, bool traverse) = 0;
334924  virtual void apply(SgClinkageStartStatement *&r, const SgName &n, bool traverse) = 0;
334925  virtual void apply(SgClinkageEndStatement *&r, const SgName &n, bool traverse) = 0;
334926  virtual void apply(SgClinkageDeclarationStatement *&r, const SgName &n, bool traverse) = 0;
334927  virtual void apply(SgOmpDeclareSimdStatement *&r, const SgName &n, bool traverse) = 0;
334928  virtual void apply(SgOmpBarrierStatement *&r, const SgName &n, bool traverse) = 0;
334929  virtual void apply(SgOmpTaskyieldStatement *&r, const SgName &n, bool traverse) = 0;
334930  virtual void apply(SgOmpRequiresStatement *&r, const SgName &n, bool traverse) = 0;
334931  virtual void apply(SgOmpTaskwaitStatement *&r, const SgName &n, bool traverse) = 0;
334932  virtual void apply(SgOmpThreadprivateStatement *&r, const SgName &n, bool traverse) = 0;
334933  virtual void apply(SgMicrosoftAttributeDeclaration *&r, const SgName &n, bool traverse) = 0;
334934  virtual void apply(SgEmptyDeclaration *&r, const SgName &n, bool traverse) = 0;
334935  virtual void apply(SgDeclarationStatement *&r, const SgName &n, bool traverse) = 0;
334936  virtual void apply(SgUpirBaseStatement *&r, const SgName &n, bool traverse) = 0;
334937  virtual void apply(SgStatement *&r, const SgName &n, bool traverse) = 0;
334938  virtual void apply(SgVarRefExp *&r, const SgName &n, bool traverse) = 0;
334939  virtual void apply(SgNonrealRefExp *&r, const SgName &n, bool traverse) = 0;
334940  virtual void apply(SgCompoundLiteralExp *&r, const SgName &n, bool traverse) = 0;
334941  virtual void apply(SgLabelRefExp *&r, const SgName &n, bool traverse) = 0;
334942  virtual void apply(SgClassNameRefExp *&r, const SgName &n, bool traverse) = 0;
334943  virtual void apply(SgFunctionRefExp *&r, const SgName &n, bool traverse) = 0;
334944  virtual void apply(SgMemberFunctionRefExp *&r, const SgName &n, bool traverse) = 0;
334945  virtual void apply(SgTemplateFunctionRefExp *&r, const SgName &n, bool traverse) = 0;
334946  virtual void apply(SgTemplateMemberFunctionRefExp *&r, const SgName &n, bool traverse) = 0;
334947  virtual void apply(SgSizeOfOp *&r, const SgName &n, bool traverse) = 0;
334948  virtual void apply(SgAlignOfOp *&r, const SgName &n, bool traverse) = 0;
334949  virtual void apply(SgNoexceptOp *&r, const SgName &n, bool traverse) = 0;
334950  virtual void apply(SgTypeExpression *&r, const SgName &n, bool traverse) = 0;
334951  virtual void apply(SgLambdaExp *&r, const SgName &n, bool traverse) = 0;
334952  virtual void apply(SgUpcLocalsizeofExpression *&r, const SgName &n, bool traverse) = 0;
334953  virtual void apply(SgUpcBlocksizeofExpression *&r, const SgName &n, bool traverse) = 0;
334954  virtual void apply(SgUpcElemsizeofExpression *&r, const SgName &n, bool traverse) = 0;
334955  virtual void apply(SgVarArgStartOp *&r, const SgName &n, bool traverse) = 0;
334956  virtual void apply(SgVarArgStartOneOperandOp *&r, const SgName &n, bool traverse) = 0;
334957  virtual void apply(SgVarArgOp *&r, const SgName &n, bool traverse) = 0;
334958  virtual void apply(SgVarArgEndOp *&r, const SgName &n, bool traverse) = 0;
334959  virtual void apply(SgVarArgCopyOp *&r, const SgName &n, bool traverse) = 0;
334960  virtual void apply(SgTypeIdOp *&r, const SgName &n, bool traverse) = 0;
334961  virtual void apply(SgConditionalExp *&r, const SgName &n, bool traverse) = 0;
334962  virtual void apply(SgNewExp *&r, const SgName &n, bool traverse) = 0;
334963  virtual void apply(SgDeleteExp *&r, const SgName &n, bool traverse) = 0;
334964  virtual void apply(SgThisExp *&r, const SgName &n, bool traverse) = 0;
334965  virtual void apply(SgSuperExp *&r, const SgName &n, bool traverse) = 0;
334966  virtual void apply(SgClassExp *&r, const SgName &n, bool traverse) = 0;
334967  virtual void apply(SgRefExp *&r, const SgName &n, bool traverse) = 0;
334968  virtual void apply(SgAggregateInitializer *&r, const SgName &n, bool traverse) = 0;
334969  virtual void apply(SgCompoundInitializer *&r, const SgName &n, bool traverse) = 0;
334970  virtual void apply(SgConstructorInitializer *&r, const SgName &n, bool traverse) = 0;
334971  virtual void apply(SgAssignInitializer *&r, const SgName &n, bool traverse) = 0;
334972  virtual void apply(SgBracedInitializer *&r, const SgName &n, bool traverse) = 0;
334973  virtual void apply(SgExpressionRoot *&r, const SgName &n, bool traverse) = 0;
334974  virtual void apply(SgMinusOp *&r, const SgName &n, bool traverse) = 0;
334975  virtual void apply(SgUnaryAddOp *&r, const SgName &n, bool traverse) = 0;
334976  virtual void apply(SgNotOp *&r, const SgName &n, bool traverse) = 0;
334977  virtual void apply(SgPointerDerefExp *&r, const SgName &n, bool traverse) = 0;
334978  virtual void apply(SgAddressOfOp *&r, const SgName &n, bool traverse) = 0;
334979  virtual void apply(SgMinusMinusOp *&r, const SgName &n, bool traverse) = 0;
334980  virtual void apply(SgPlusPlusOp *&r, const SgName &n, bool traverse) = 0;
334981  virtual void apply(SgBitComplementOp *&r, const SgName &n, bool traverse) = 0;
334982  virtual void apply(SgRealPartOp *&r, const SgName &n, bool traverse) = 0;
334983  virtual void apply(SgImagPartOp *&r, const SgName &n, bool traverse) = 0;
334984  virtual void apply(SgConjugateOp *&r, const SgName &n, bool traverse) = 0;
334985  virtual void apply(SgCastExp *&r, const SgName &n, bool traverse) = 0;
334986  virtual void apply(SgThrowOp *&r, const SgName &n, bool traverse) = 0;
334987  virtual void apply(SgArrowExp *&r, const SgName &n, bool traverse) = 0;
334988  virtual void apply(SgDotExp *&r, const SgName &n, bool traverse) = 0;
334989  virtual void apply(SgDotStarOp *&r, const SgName &n, bool traverse) = 0;
334990  virtual void apply(SgArrowStarOp *&r, const SgName &n, bool traverse) = 0;
334991  virtual void apply(SgEqualityOp *&r, const SgName &n, bool traverse) = 0;
334992  virtual void apply(SgLessThanOp *&r, const SgName &n, bool traverse) = 0;
334993  virtual void apply(SgGreaterThanOp *&r, const SgName &n, bool traverse) = 0;
334994  virtual void apply(SgNotEqualOp *&r, const SgName &n, bool traverse) = 0;
334995  virtual void apply(SgLessOrEqualOp *&r, const SgName &n, bool traverse) = 0;
334996  virtual void apply(SgGreaterOrEqualOp *&r, const SgName &n, bool traverse) = 0;
334997  virtual void apply(SgAddOp *&r, const SgName &n, bool traverse) = 0;
334998  virtual void apply(SgSubtractOp *&r, const SgName &n, bool traverse) = 0;
334999  virtual void apply(SgMultiplyOp *&r, const SgName &n, bool traverse) = 0;
335000  virtual void apply(SgDivideOp *&r, const SgName &n, bool traverse) = 0;
335001  virtual void apply(SgIntegerDivideOp *&r, const SgName &n, bool traverse) = 0;
335002  virtual void apply(SgModOp *&r, const SgName &n, bool traverse) = 0;
335003  virtual void apply(SgAndOp *&r, const SgName &n, bool traverse) = 0;
335004  virtual void apply(SgOrOp *&r, const SgName &n, bool traverse) = 0;
335005  virtual void apply(SgBitXorOp *&r, const SgName &n, bool traverse) = 0;
335006  virtual void apply(SgBitAndOp *&r, const SgName &n, bool traverse) = 0;
335007  virtual void apply(SgBitOrOp *&r, const SgName &n, bool traverse) = 0;
335008  virtual void apply(SgBitEqvOp *&r, const SgName &n, bool traverse) = 0;
335009  virtual void apply(SgCommaOpExp *&r, const SgName &n, bool traverse) = 0;
335010  virtual void apply(SgLshiftOp *&r, const SgName &n, bool traverse) = 0;
335011  virtual void apply(SgRshiftOp *&r, const SgName &n, bool traverse) = 0;
335012  virtual void apply(SgPntrArrRefExp *&r, const SgName &n, bool traverse) = 0;
335013  virtual void apply(SgScopeOp *&r, const SgName &n, bool traverse) = 0;
335014  virtual void apply(SgAssignOp *&r, const SgName &n, bool traverse) = 0;
335015  virtual void apply(SgPlusAssignOp *&r, const SgName &n, bool traverse) = 0;
335016  virtual void apply(SgMinusAssignOp *&r, const SgName &n, bool traverse) = 0;
335017  virtual void apply(SgAndAssignOp *&r, const SgName &n, bool traverse) = 0;
335018  virtual void apply(SgIorAssignOp *&r, const SgName &n, bool traverse) = 0;
335019  virtual void apply(SgMultAssignOp *&r, const SgName &n, bool traverse) = 0;
335020  virtual void apply(SgDivAssignOp *&r, const SgName &n, bool traverse) = 0;
335021  virtual void apply(SgModAssignOp *&r, const SgName &n, bool traverse) = 0;
335022  virtual void apply(SgXorAssignOp *&r, const SgName &n, bool traverse) = 0;
335023  virtual void apply(SgLshiftAssignOp *&r, const SgName &n, bool traverse) = 0;
335024  virtual void apply(SgRshiftAssignOp *&r, const SgName &n, bool traverse) = 0;
335025  virtual void apply(SgIntegerDivideAssignOp *&r, const SgName &n, bool traverse) = 0;
335026  virtual void apply(SgExponentiationAssignOp *&r, const SgName &n, bool traverse) = 0;
335027  virtual void apply(SgConcatenationOp *&r, const SgName &n, bool traverse) = 0;
335028  virtual void apply(SgNaryComparisonOp *&r, const SgName &n, bool traverse) = 0;
335029  virtual void apply(SgNaryBooleanOp *&r, const SgName &n, bool traverse) = 0;
335030  virtual void apply(SgBoolValExp *&r, const SgName &n, bool traverse) = 0;
335031  virtual void apply(SgStringVal *&r, const SgName &n, bool traverse) = 0;
335032  virtual void apply(SgShortVal *&r, const SgName &n, bool traverse) = 0;
335033  virtual void apply(SgCharVal *&r, const SgName &n, bool traverse) = 0;
335034  virtual void apply(SgUnsignedCharVal *&r, const SgName &n, bool traverse) = 0;
335035  virtual void apply(SgWcharVal *&r, const SgName &n, bool traverse) = 0;
335036  virtual void apply(SgChar16Val *&r, const SgName &n, bool traverse) = 0;
335037  virtual void apply(SgChar32Val *&r, const SgName &n, bool traverse) = 0;
335038  virtual void apply(SgUnsignedShortVal *&r, const SgName &n, bool traverse) = 0;
335039  virtual void apply(SgIntVal *&r, const SgName &n, bool traverse) = 0;
335040  virtual void apply(SgEnumVal *&r, const SgName &n, bool traverse) = 0;
335041  virtual void apply(SgUnsignedIntVal *&r, const SgName &n, bool traverse) = 0;
335042  virtual void apply(SgLongIntVal *&r, const SgName &n, bool traverse) = 0;
335043  virtual void apply(SgLongLongIntVal *&r, const SgName &n, bool traverse) = 0;
335044  virtual void apply(SgUnsignedLongLongIntVal *&r, const SgName &n, bool traverse) = 0;
335045  virtual void apply(SgUnsignedLongVal *&r, const SgName &n, bool traverse) = 0;
335046  virtual void apply(SgFloatVal *&r, const SgName &n, bool traverse) = 0;
335047  virtual void apply(SgDoubleVal *&r, const SgName &n, bool traverse) = 0;
335048  virtual void apply(SgLongDoubleVal *&r, const SgName &n, bool traverse) = 0;
335049  virtual void apply(SgFloat80Val *&r, const SgName &n, bool traverse) = 0;
335050  virtual void apply(SgFloat128Val *&r, const SgName &n, bool traverse) = 0;
335051  virtual void apply(SgNullptrValExp *&r, const SgName &n, bool traverse) = 0;
335052  virtual void apply(SgVoidVal *&r, const SgName &n, bool traverse) = 0;
335053  virtual void apply(SgFunctionParameterRefExp *&r, const SgName &n, bool traverse) = 0;
335054  virtual void apply(SgTemplateParameterVal *&r, const SgName &n, bool traverse) = 0;
335055  virtual void apply(SgUpcThreads *&r, const SgName &n, bool traverse) = 0;
335056  virtual void apply(SgUpcMythread *&r, const SgName &n, bool traverse) = 0;
335057  virtual void apply(SgComplexVal *&r, const SgName &n, bool traverse) = 0;
335058  virtual void apply(SgNullExpression *&r, const SgName &n, bool traverse) = 0;
335059  virtual void apply(SgVariantExpression *&r, const SgName &n, bool traverse) = 0;
335060  virtual void apply(SgStatementExpression *&r, const SgName &n, bool traverse) = 0;
335061  virtual void apply(SgAsmOp *&r, const SgName &n, bool traverse) = 0;
335062  virtual void apply(SgCudaKernelExecConfig *&r, const SgName &n, bool traverse) = 0;
335063  virtual void apply(SgCudaKernelCallExp *&r, const SgName &n, bool traverse) = 0;
335064  virtual void apply(SgLambdaRefExp *&r, const SgName &n, bool traverse) = 0;
335065  virtual void apply(SgTupleExp *&r, const SgName &n, bool traverse) = 0;
335066  virtual void apply(SgListExp *&r, const SgName &n, bool traverse) = 0;
335067  virtual void apply(SgDictionaryExp *&r, const SgName &n, bool traverse) = 0;
335068  virtual void apply(SgKeyDatumPair *&r, const SgName &n, bool traverse) = 0;
335069  virtual void apply(SgComprehension *&r, const SgName &n, bool traverse) = 0;
335070  virtual void apply(SgListComprehension *&r, const SgName &n, bool traverse) = 0;
335071  virtual void apply(SgSetComprehension *&r, const SgName &n, bool traverse) = 0;
335072  virtual void apply(SgDictionaryComprehension *&r, const SgName &n, bool traverse) = 0;
335073  virtual void apply(SgMembershipOp *&r, const SgName &n, bool traverse) = 0;
335074  virtual void apply(SgNonMembershipOp *&r, const SgName &n, bool traverse) = 0;
335075  virtual void apply(SgIsOp *&r, const SgName &n, bool traverse) = 0;
335076  virtual void apply(SgIsNotOp *&r, const SgName &n, bool traverse) = 0;
335077  virtual void apply(SgStringConversion *&r, const SgName &n, bool traverse) = 0;
335078  virtual void apply(SgYieldExpression *&r, const SgName &n, bool traverse) = 0;
335079  virtual void apply(SgFoldExpression *&r, const SgName &n, bool traverse) = 0;
335080  virtual void apply(SgChooseExpression *&r, const SgName &n, bool traverse) = 0;
335081  virtual void apply(SgAwaitExpression *&r, const SgName &n, bool traverse) = 0;
335082  virtual void apply(SgSpaceshipOp *&r, const SgName &n, bool traverse) = 0;
335083  virtual void apply(SgSubscriptExpression *&r, const SgName &n, bool traverse) = 0;
335084  virtual void apply(SgColonShapeExp *&r, const SgName &n, bool traverse) = 0;
335085  virtual void apply(SgAsteriskShapeExp *&r, const SgName &n, bool traverse) = 0;
335086  virtual void apply(SgIOItemExpression *&r, const SgName &n, bool traverse) = 0;
335087  virtual void apply(SgImpliedDo *&r, const SgName &n, bool traverse) = 0;
335088  virtual void apply(SgExponentiationOp *&r, const SgName &n, bool traverse) = 0;
335089  virtual void apply(SgUnknownArrayOrFunctionReference *&r, const SgName &n, bool traverse) = 0;
335090  virtual void apply(SgActualArgumentExpression *&r, const SgName &n, bool traverse) = 0;
335091  virtual void apply(SgUserDefinedBinaryOp *&r, const SgName &n, bool traverse) = 0;
335092  virtual void apply(SgPointerAssignOp *&r, const SgName &n, bool traverse) = 0;
335093  virtual void apply(SgCAFCoExpression *&r, const SgName &n, bool traverse) = 0;
335094  virtual void apply(SgDesignatedInitializer *&r, const SgName &n, bool traverse) = 0;
335095  virtual void apply(SgMatrixExp *&r, const SgName &n, bool traverse) = 0;
335096  virtual void apply(SgRangeExp *&r, const SgName &n, bool traverse) = 0;
335097  virtual void apply(SgMagicColonExp *&r, const SgName &n, bool traverse) = 0;
335098  virtual void apply(SgElementwiseMultiplyOp *&r, const SgName &n, bool traverse) = 0;
335099  virtual void apply(SgPowerOp *&r, const SgName &n, bool traverse) = 0;
335100  virtual void apply(SgElementwisePowerOp *&r, const SgName &n, bool traverse) = 0;
335101  virtual void apply(SgElementwiseDivideOp *&r, const SgName &n, bool traverse) = 0;
335102  virtual void apply(SgLeftDivideOp *&r, const SgName &n, bool traverse) = 0;
335103  virtual void apply(SgElementwiseLeftDivideOp *&r, const SgName &n, bool traverse) = 0;
335104  virtual void apply(SgElementwiseAddOp *&r, const SgName &n, bool traverse) = 0;
335105  virtual void apply(SgElementwiseSubtractOp *&r, const SgName &n, bool traverse) = 0;
335106  virtual void apply(SgMatrixTransposeOp *&r, const SgName &n, bool traverse) = 0;
335107  virtual void apply(SgElementwiseOp *&r, const SgName &n, bool traverse) = 0;
335108  virtual void apply(SgInitializer *&r, const SgName &n, bool traverse) = 0;
335109  virtual void apply(SgSIMDLoad *&r, const SgName &n, bool traverse) = 0;
335110  virtual void apply(SgSIMDBroadcast *&r, const SgName &n, bool traverse) = 0;
335111  virtual void apply(SgSIMDStore *&r, const SgName &n, bool traverse) = 0;
335112  virtual void apply(SgSIMDPartialStore *&r, const SgName &n, bool traverse) = 0;
335113  virtual void apply(SgSIMDScalarStore *&r, const SgName &n, bool traverse) = 0;
335114  virtual void apply(SgSIMDGather *&r, const SgName &n, bool traverse) = 0;
335115  virtual void apply(SgSIMDExplicitGather *&r, const SgName &n, bool traverse) = 0;
335116  virtual void apply(SgSIMDScatter *&r, const SgName &n, bool traverse) = 0;
335117  virtual void apply(SgSIMDAddOp *&r, const SgName &n, bool traverse) = 0;
335118  virtual void apply(SgSIMDSubOp *&r, const SgName &n, bool traverse) = 0;
335119  virtual void apply(SgSIMDMulOp *&r, const SgName &n, bool traverse) = 0;
335120  virtual void apply(SgSIMDDivOp *&r, const SgName &n, bool traverse) = 0;
335121  virtual void apply(SgSIMDFmaOp *&r, const SgName &n, bool traverse) = 0;
335122  virtual void apply(SgSIMDBinaryOp *&r, const SgName &n, bool traverse) = 0;
335123  virtual void apply(SgUserDefinedUnaryOp *&r, const SgName &n, bool traverse) = 0;
335124  virtual void apply(SgPseudoDestructorRefExp *&r, const SgName &n, bool traverse) = 0;
335125  virtual void apply(SgUnaryOp *&r, const SgName &n, bool traverse) = 0;
335126  virtual void apply(SgCompoundAssignOp *&r, const SgName &n, bool traverse) = 0;
335127  virtual void apply(SgBinaryOp *&r, const SgName &n, bool traverse) = 0;
335128  virtual void apply(SgNaryOp *&r, const SgName &n, bool traverse) = 0;
335129  virtual void apply(SgValueExp *&r, const SgName &n, bool traverse) = 0;
335130  virtual void apply(SgExprListExp *&r, const SgName &n, bool traverse) = 0;
335131  virtual void apply(SgFunctionCallExp *&r, const SgName &n, bool traverse) = 0;
335132  virtual void apply(SgCallExpression *&r, const SgName &n, bool traverse) = 0;
335133  virtual void apply(SgTypeTraitBuiltinOperator *&r, const SgName &n, bool traverse) = 0;
335134  virtual void apply(SgExpression *&r, const SgName &n, bool traverse) = 0;
335135  virtual void apply(SgTemplateVariableSymbol *&r, const SgName &n, bool traverse) = 0;
335136  virtual void apply(SgVariableSymbol *&r, const SgName &n, bool traverse) = 0;
335137  virtual void apply(SgFunctionTypeSymbol *&r, const SgName &n, bool traverse) = 0;
335138  virtual void apply(SgTemplateClassSymbol *&r, const SgName &n, bool traverse) = 0;
335139  virtual void apply(SgClassSymbol *&r, const SgName &n, bool traverse) = 0;
335140  virtual void apply(SgTemplateSymbol *&r, const SgName &n, bool traverse) = 0;
335141  virtual void apply(SgEnumSymbol *&r, const SgName &n, bool traverse) = 0;
335142  virtual void apply(SgEnumFieldSymbol *&r, const SgName &n, bool traverse) = 0;
335143  virtual void apply(SgTemplateTypedefSymbol *&r, const SgName &n, bool traverse) = 0;
335144  virtual void apply(SgTypedefSymbol *&r, const SgName &n, bool traverse) = 0;
335145  virtual void apply(SgTemplateFunctionSymbol *&r, const SgName &n, bool traverse) = 0;
335146  virtual void apply(SgTemplateMemberFunctionSymbol *&r, const SgName &n, bool traverse) = 0;
335147  virtual void apply(SgLabelSymbol *&r, const SgName &n, bool traverse) = 0;
335148  virtual void apply(SgDefaultSymbol *&r, const SgName &n, bool traverse) = 0;
335149  virtual void apply(SgNamespaceSymbol *&r, const SgName &n, bool traverse) = 0;
335150  virtual void apply(SgIntrinsicSymbol *&r, const SgName &n, bool traverse) = 0;
335151  virtual void apply(SgModuleSymbol *&r, const SgName &n, bool traverse) = 0;
335152  virtual void apply(SgInterfaceSymbol *&r, const SgName &n, bool traverse) = 0;
335153  virtual void apply(SgCommonSymbol *&r, const SgName &n, bool traverse) = 0;
335154  virtual void apply(SgRenameSymbol *&r, const SgName &n, bool traverse) = 0;
335155  virtual void apply(SgMemberFunctionSymbol *&r, const SgName &n, bool traverse) = 0;
335156  virtual void apply(SgFunctionSymbol *&r, const SgName &n, bool traverse) = 0;
335157  virtual void apply(SgAliasSymbol *&r, const SgName &n, bool traverse) = 0;
335158  virtual void apply(SgNonrealSymbol *&r, const SgName &n, bool traverse) = 0;
335159  virtual void apply(SgSymbol *&r, const SgName &n, bool traverse) = 0;
335160  virtual void apply(SgCommonBlockObject *&r, const SgName &n, bool traverse) = 0;
335161  virtual void apply(SgInitializedName *&r, const SgName &n, bool traverse) = 0;
335162  virtual void apply(SgLambdaCapture *&r, const SgName &n, bool traverse) = 0;
335163  virtual void apply(SgLambdaCaptureList *&r, const SgName &n, bool traverse) = 0;
335164  virtual void apply(SgOmpOrderedClause *&r, const SgName &n, bool traverse) = 0;
335165  virtual void apply(SgOmpNowaitClause *&r, const SgName &n, bool traverse) = 0;
335166  virtual void apply(SgOmpNogroupClause *&r, const SgName &n, bool traverse) = 0;
335167  virtual void apply(SgOmpReadClause *&r, const SgName &n, bool traverse) = 0;
335168  virtual void apply(SgOmpThreadsClause *&r, const SgName &n, bool traverse) = 0;
335169  virtual void apply(SgOmpSimdClause *&r, const SgName &n, bool traverse) = 0;
335170  virtual void apply(SgOmpReverseOffloadClause *&r, const SgName &n, bool traverse) = 0;
335171  virtual void apply(SgOmpExtImplementationDefinedRequirementClause *&r, const SgName &n, bool traverse) = 0;
335172  virtual void apply(SgOmpUnifiedAddressClause *&r, const SgName &n, bool traverse) = 0;
335173  virtual void apply(SgOmpUnifiedSharedMemoryClause *&r, const SgName &n, bool traverse) = 0;
335174  virtual void apply(SgOmpDynamicAllocatorsClause *&r, const SgName &n, bool traverse) = 0;
335175  virtual void apply(SgOmpAtomicDefaultMemOrderClause *&r, const SgName &n, bool traverse) = 0;
335176  virtual void apply(SgOmpWriteClause *&r, const SgName &n, bool traverse) = 0;
335177  virtual void apply(SgOmpUpdateClause *&r, const SgName &n, bool traverse) = 0;
335178  virtual void apply(SgOmpDepobjUpdateClause *&r, const SgName &n, bool traverse) = 0;
335179  virtual void apply(SgOmpDestroyClause *&r, const SgName &n, bool traverse) = 0;
335180  virtual void apply(SgOmpCaptureClause *&r, const SgName &n, bool traverse) = 0;
335181  virtual void apply(SgOmpSeqCstClause *&r, const SgName &n, bool traverse) = 0;
335182  virtual void apply(SgOmpAcqRelClause *&r, const SgName &n, bool traverse) = 0;
335183  virtual void apply(SgOmpReleaseClause *&r, const SgName &n, bool traverse) = 0;
335184  virtual void apply(SgOmpAcquireClause *&r, const SgName &n, bool traverse) = 0;
335185  virtual void apply(SgOmpRelaxedClause *&r, const SgName &n, bool traverse) = 0;
335186  virtual void apply(SgOmpParallelClause *&r, const SgName &n, bool traverse) = 0;
335187  virtual void apply(SgOmpSectionsClause *&r, const SgName &n, bool traverse) = 0;
335188  virtual void apply(SgOmpForClause *&r, const SgName &n, bool traverse) = 0;
335189  virtual void apply(SgOmpTaskgroupClause *&r, const SgName &n, bool traverse) = 0;
335190  virtual void apply(SgOmpBeginClause *&r, const SgName &n, bool traverse) = 0;
335191  virtual void apply(SgOmpEndClause *&r, const SgName &n, bool traverse) = 0;
335192  virtual void apply(SgOmpUntiedClause *&r, const SgName &n, bool traverse) = 0;
335193  virtual void apply(SgOmpMergeableClause *&r, const SgName &n, bool traverse) = 0;
335194  virtual void apply(SgOmpDefaultClause *&r, const SgName &n, bool traverse) = 0;
335195  virtual void apply(SgOmpAtomicClause *&r, const SgName &n, bool traverse) = 0;
335196  virtual void apply(SgOmpProcBindClause *&r, const SgName &n, bool traverse) = 0;
335197  virtual void apply(SgOmpOrderClause *&r, const SgName &n, bool traverse) = 0;
335198  virtual void apply(SgOmpBindClause *&r, const SgName &n, bool traverse) = 0;
335199  virtual void apply(SgOmpInbranchClause *&r, const SgName &n, bool traverse) = 0;
335200  virtual void apply(SgOmpNotinbranchClause *&r, const SgName &n, bool traverse) = 0;
335201  virtual void apply(SgOmpCollapseClause *&r, const SgName &n, bool traverse) = 0;
335202  virtual void apply(SgOmpIfClause *&r, const SgName &n, bool traverse) = 0;
335203  virtual void apply(SgOmpFinalClause *&r, const SgName &n, bool traverse) = 0;
335204  virtual void apply(SgOmpPriorityClause *&r, const SgName &n, bool traverse) = 0;
335205  virtual void apply(SgUpirNumUnitsField *&r, const SgName &n, bool traverse) = 0;
335206  virtual void apply(SgOmpNumTeamsClause *&r, const SgName &n, bool traverse) = 0;
335207  virtual void apply(SgOmpGrainsizeClause *&r, const SgName &n, bool traverse) = 0;
335208  virtual void apply(SgOmpDetachClause *&r, const SgName &n, bool traverse) = 0;
335209  virtual void apply(SgOmpNumTasksClause *&r, const SgName &n, bool traverse) = 0;
335210  virtual void apply(SgOmpHintClause *&r, const SgName &n, bool traverse) = 0;
335211  virtual void apply(SgOmpThreadLimitClause *&r, const SgName &n, bool traverse) = 0;
335212  virtual void apply(SgOmpNontemporalClause *&r, const SgName &n, bool traverse) = 0;
335213  virtual void apply(SgOmpInclusiveClause *&r, const SgName &n, bool traverse) = 0;
335214  virtual void apply(SgOmpExclusiveClause *&r, const SgName &n, bool traverse) = 0;
335215  virtual void apply(SgOmpIsDevicePtrClause *&r, const SgName &n, bool traverse) = 0;
335216  virtual void apply(SgOmpUseDevicePtrClause *&r, const SgName &n, bool traverse) = 0;
335217  virtual void apply(SgOmpUseDeviceAddrClause *&r, const SgName &n, bool traverse) = 0;
335218  virtual void apply(SgOmpDeviceClause *&r, const SgName &n, bool traverse) = 0;
335219  virtual void apply(SgOmpSafelenClause *&r, const SgName &n, bool traverse) = 0;
335220  virtual void apply(SgOmpSimdlenClause *&r, const SgName &n, bool traverse) = 0;
335221  virtual void apply(SgOmpPartialClause *&r, const SgName &n, bool traverse) = 0;
335222  virtual void apply(SgOmpFullClause *&r, const SgName &n, bool traverse) = 0;
335223  virtual void apply(SgOmpSizesClause *&r, const SgName &n, bool traverse) = 0;
335224  virtual void apply(SgUpirBranchField *&r, const SgName &n, bool traverse) = 0;
335225  virtual void apply(SgUpirNestedLevelField *&r, const SgName &n, bool traverse) = 0;
335226  virtual void apply(SgUpirNestedParentField *&r, const SgName &n, bool traverse) = 0;
335227  virtual void apply(SgUpirNestedChildField *&r, const SgName &n, bool traverse) = 0;
335228  virtual void apply(SgUpirSyncField *&r, const SgName &n, bool traverse) = 0;
335229  virtual void apply(SgUpirDataField *&r, const SgName &n, bool traverse) = 0;
335230  virtual void apply(SgUpirTargetField *&r, const SgName &n, bool traverse) = 0;
335231  virtual void apply(SgUpirDataItemField *&r, const SgName &n, bool traverse) = 0;
335232  virtual void apply(SgOmpExpressionClause *&r, const SgName &n, bool traverse) = 0;
335233  virtual void apply(SgOmpCopyprivateClause *&r, const SgName &n, bool traverse) = 0;
335234  virtual void apply(SgOmpPrivateClause *&r, const SgName &n, bool traverse) = 0;
335235  virtual void apply(SgOmpFirstprivateClause *&r, const SgName &n, bool traverse) = 0;
335236  virtual void apply(SgOmpSharedClause *&r, const SgName &n, bool traverse) = 0;
335237  virtual void apply(SgOmpCopyinClause *&r, const SgName &n, bool traverse) = 0;
335238  virtual void apply(SgOmpLastprivateClause *&r, const SgName &n, bool traverse) = 0;
335239  virtual void apply(SgOmpReductionClause *&r, const SgName &n, bool traverse) = 0;
335240  virtual void apply(SgOmpInReductionClause *&r, const SgName &n, bool traverse) = 0;
335241  virtual void apply(SgOmpTaskReductionClause *&r, const SgName &n, bool traverse) = 0;
335242  virtual void apply(SgOmpAllocateClause *&r, const SgName &n, bool traverse) = 0;
335243  virtual void apply(SgOmpDependClause *&r, const SgName &n, bool traverse) = 0;
335244  virtual void apply(SgOmpToClause *&r, const SgName &n, bool traverse) = 0;
335245  virtual void apply(SgOmpUsesAllocatorsClause *&r, const SgName &n, bool traverse) = 0;
335246  virtual void apply(SgOmpFromClause *&r, const SgName &n, bool traverse) = 0;
335247  virtual void apply(SgOmpAffinityClause *&r, const SgName &n, bool traverse) = 0;
335248  virtual void apply(SgOmpMapClause *&r, const SgName &n, bool traverse) = 0;
335249  virtual void apply(SgOmpLinearClause *&r, const SgName &n, bool traverse) = 0;
335250  virtual void apply(SgOmpUniformClause *&r, const SgName &n, bool traverse) = 0;
335251  virtual void apply(SgOmpAlignedClause *&r, const SgName &n, bool traverse) = 0;
335252  virtual void apply(SgOmpVariablesClause *&r, const SgName &n, bool traverse) = 0;
335253  virtual void apply(SgOmpScheduleClause *&r, const SgName &n, bool traverse) = 0;
335254  virtual void apply(SgOmpWhenClause *&r, const SgName &n, bool traverse) = 0;
335255  virtual void apply(SgOmpDistScheduleClause *&r, const SgName &n, bool traverse) = 0;
335256  virtual void apply(SgOmpDefaultmapClause *&r, const SgName &n, bool traverse) = 0;
335257  virtual void apply(SgOmpAllocatorClause *&r, const SgName &n, bool traverse) = 0;
335258  virtual void apply(SgOmpUsesAllocatorsDefination *&r, const SgName &n, bool traverse) = 0;
335259  virtual void apply(SgOmpClause *&r, const SgName &n, bool traverse) = 0;
335260  virtual void apply(SgRenamePair *&r, const SgName &n, bool traverse) = 0;
335261  virtual void apply(SgInterfaceBody *&r, const SgName &n, bool traverse) = 0;
335262  virtual void apply(SgHeaderFileBody *&r, const SgName &n, bool traverse) = 0;
335263  virtual void apply(SgLocatedNodeSupport *&r, const SgName &n, bool traverse) = 0;
335264  virtual void apply(SgToken *&r, const SgName &n, bool traverse) = 0;
335265  virtual void apply(SgLocatedNode *&r, const SgName &n, bool traverse) = 0;
335266  virtual void apply(SgNode *&r, const SgName &n, bool traverse) = 0;
335267 
335268  virtual ~ReferenceToPointerHandler() {}
335269  };
335270 
335271 template <class ImplClass>
335272 struct ReferenceToPointerHandlerImpl : ReferenceToPointerHandler
335273  {
335274  void apply(SgName *&r, const SgName &n, bool traverse)
335275  {
335276  ROSE_ASSERT(this != NULL);
335277  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335278  }
335279 
335280  void apply(SgSymbolTable *&r, const SgName &n, bool traverse)
335281  {
335282  ROSE_ASSERT(this != NULL);
335283  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335284  }
335285 
335286  void apply(SgPragma *&r, const SgName &n, bool traverse)
335287  {
335288  ROSE_ASSERT(this != NULL);
335289  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335290  }
335291 
335292  void apply(SgModifierNodes *&r, const SgName &n, bool traverse)
335293  {
335294  ROSE_ASSERT(this != NULL);
335295  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335296  }
335297 
335298  void apply(SgConstVolatileModifier *&r, const SgName &n, bool traverse)
335299  {
335300  ROSE_ASSERT(this != NULL);
335301  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335302  }
335303 
335304  void apply(SgStorageModifier *&r, const SgName &n, bool traverse)
335305  {
335306  ROSE_ASSERT(this != NULL);
335307  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335308  }
335309 
335310  void apply(SgAccessModifier *&r, const SgName &n, bool traverse)
335311  {
335312  ROSE_ASSERT(this != NULL);
335313  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335314  }
335315 
335316  void apply(SgFunctionModifier *&r, const SgName &n, bool traverse)
335317  {
335318  ROSE_ASSERT(this != NULL);
335319  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335320  }
335321 
335322  void apply(SgUPC_AccessModifier *&r, const SgName &n, bool traverse)
335323  {
335324  ROSE_ASSERT(this != NULL);
335325  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335326  }
335327 
335328  void apply(SgLinkageModifier *&r, const SgName &n, bool traverse)
335329  {
335330  ROSE_ASSERT(this != NULL);
335331  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335332  }
335333 
335334  void apply(SgSpecialFunctionModifier *&r, const SgName &n, bool traverse)
335335  {
335336  ROSE_ASSERT(this != NULL);
335337  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335338  }
335339 
335340  void apply(SgTypeModifier *&r, const SgName &n, bool traverse)
335341  {
335342  ROSE_ASSERT(this != NULL);
335343  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335344  }
335345 
335346  void apply(SgElaboratedTypeModifier *&r, const SgName &n, bool traverse)
335347  {
335348  ROSE_ASSERT(this != NULL);
335349  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335350  }
335351 
335352  void apply(SgBaseClassModifier *&r, const SgName &n, bool traverse)
335353  {
335354  ROSE_ASSERT(this != NULL);
335355  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335356  }
335357 
335358  void apply(SgDeclarationModifier *&r, const SgName &n, bool traverse)
335359  {
335360  ROSE_ASSERT(this != NULL);
335361  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335362  }
335363 
335364  void apply(SgStructureModifier *&r, const SgName &n, bool traverse)
335365  {
335366  ROSE_ASSERT(this != NULL);
335367  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335368  }
335369 
335370  void apply(SgOpenclAccessModeModifier *&r, const SgName &n, bool traverse)
335371  {
335372  ROSE_ASSERT(this != NULL);
335373  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335374  }
335375 
335376  void apply(SgModifier *&r, const SgName &n, bool traverse)
335377  {
335378  ROSE_ASSERT(this != NULL);
335379  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335380  }
335381 
335382  void apply(Sg_File_Info *&r, const SgName &n, bool traverse)
335383  {
335384  ROSE_ASSERT(this != NULL);
335385  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335386  }
335387 
335388  void apply(SgSourceFile *&r, const SgName &n, bool traverse)
335389  {
335390  ROSE_ASSERT(this != NULL);
335391  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335392  }
335393 
335394  void apply(SgUnknownFile *&r, const SgName &n, bool traverse)
335395  {
335396  ROSE_ASSERT(this != NULL);
335397  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335398  }
335399 
335400  void apply(SgFile *&r, const SgName &n, bool traverse)
335401  {
335402  ROSE_ASSERT(this != NULL);
335403  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335404  }
335405 
335406  void apply(SgFileList *&r, const SgName &n, bool traverse)
335407  {
335408  ROSE_ASSERT(this != NULL);
335409  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335410  }
335411 
335412  void apply(SgDirectory *&r, const SgName &n, bool traverse)
335413  {
335414  ROSE_ASSERT(this != NULL);
335415  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335416  }
335417 
335418  void apply(SgDirectoryList *&r, const SgName &n, bool traverse)
335419  {
335420  ROSE_ASSERT(this != NULL);
335421  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335422  }
335423 
335424  void apply(SgProject *&r, const SgName &n, bool traverse)
335425  {
335426  ROSE_ASSERT(this != NULL);
335427  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335428  }
335429 
335430  void apply(SgOptions *&r, const SgName &n, bool traverse)
335431  {
335432  ROSE_ASSERT(this != NULL);
335433  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335434  }
335435 
335436  void apply(SgUnparse_Info *&r, const SgName &n, bool traverse)
335437  {
335438  ROSE_ASSERT(this != NULL);
335439  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335440  }
335441 
335442  void apply(SgIncludeFile *&r, const SgName &n, bool traverse)
335443  {
335444  ROSE_ASSERT(this != NULL);
335445  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335446  }
335447 
335448  void apply(SgFuncDecl_attr *&r, const SgName &n, bool traverse)
335449  {
335450  ROSE_ASSERT(this != NULL);
335451  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335452  }
335453 
335454  void apply(SgClassDecl_attr *&r, const SgName &n, bool traverse)
335455  {
335456  ROSE_ASSERT(this != NULL);
335457  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335458  }
335459 
335460  void apply(SgTypedefSeq *&r, const SgName &n, bool traverse)
335461  {
335462  ROSE_ASSERT(this != NULL);
335463  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335464  }
335465 
335466  void apply(SgFunctionParameterTypeList *&r, const SgName &n, bool traverse)
335467  {
335468  ROSE_ASSERT(this != NULL);
335469  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335470  }
335471 
335472  void apply(SgTemplateParameter *&r, const SgName &n, bool traverse)
335473  {
335474  ROSE_ASSERT(this != NULL);
335475  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335476  }
335477 
335478  void apply(SgTemplateArgument *&r, const SgName &n, bool traverse)
335479  {
335480  ROSE_ASSERT(this != NULL);
335481  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335482  }
335483 
335484  void apply(SgTemplateParameterList *&r, const SgName &n, bool traverse)
335485  {
335486  ROSE_ASSERT(this != NULL);
335487  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335488  }
335489 
335490  void apply(SgTemplateArgumentList *&r, const SgName &n, bool traverse)
335491  {
335492  ROSE_ASSERT(this != NULL);
335493  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335494  }
335495 
335496  void apply(SgBitAttribute *&r, const SgName &n, bool traverse)
335497  {
335498  ROSE_ASSERT(this != NULL);
335499  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335500  }
335501 
335502  void apply(SgAttribute *&r, const SgName &n, bool traverse)
335503  {
335504  ROSE_ASSERT(this != NULL);
335505  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335506  }
335507 
335508  void apply(SgExpBaseClass *&r, const SgName &n, bool traverse)
335509  {
335510  ROSE_ASSERT(this != NULL);
335511  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335512  }
335513 
335514  void apply(SgNonrealBaseClass *&r, const SgName &n, bool traverse)
335515  {
335516  ROSE_ASSERT(this != NULL);
335517  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335518  }
335519 
335520  void apply(SgBaseClass *&r, const SgName &n, bool traverse)
335521  {
335522  ROSE_ASSERT(this != NULL);
335523  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335524  }
335525 
335526  void apply(SgUndirectedGraphEdge *&r, const SgName &n, bool traverse)
335527  {
335528  ROSE_ASSERT(this != NULL);
335529  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335530  }
335531 
335532  void apply(SgDirectedGraphEdge *&r, const SgName &n, bool traverse)
335533  {
335534  ROSE_ASSERT(this != NULL);
335535  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335536  }
335537 
335538  void apply(SgGraphNode *&r, const SgName &n, bool traverse)
335539  {
335540  ROSE_ASSERT(this != NULL);
335541  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335542  }
335543 
335544  void apply(SgGraphEdge *&r, const SgName &n, bool traverse)
335545  {
335546  ROSE_ASSERT(this != NULL);
335547  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335548  }
335549 
335550  void apply(SgStringKeyedBidirectionalGraph *&r, const SgName &n, bool traverse)
335551  {
335552  ROSE_ASSERT(this != NULL);
335553  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335554  }
335555 
335556  void apply(SgIntKeyedBidirectionalGraph *&r, const SgName &n, bool traverse)
335557  {
335558  ROSE_ASSERT(this != NULL);
335559  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335560  }
335561 
335562  void apply(SgBidirectionalGraph *&r, const SgName &n, bool traverse)
335563  {
335564  ROSE_ASSERT(this != NULL);
335565  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335566  }
335567 
335568  void apply(SgIncidenceDirectedGraph *&r, const SgName &n, bool traverse)
335569  {
335570  ROSE_ASSERT(this != NULL);
335571  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335572  }
335573 
335574  void apply(SgIncidenceUndirectedGraph *&r, const SgName &n, bool traverse)
335575  {
335576  ROSE_ASSERT(this != NULL);
335577  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335578  }
335579 
335580  void apply(SgGraph *&r, const SgName &n, bool traverse)
335581  {
335582  ROSE_ASSERT(this != NULL);
335583  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335584  }
335585 
335586  void apply(SgGraphNodeList *&r, const SgName &n, bool traverse)
335587  {
335588  ROSE_ASSERT(this != NULL);
335589  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335590  }
335591 
335592  void apply(SgGraphEdgeList *&r, const SgName &n, bool traverse)
335593  {
335594  ROSE_ASSERT(this != NULL);
335595  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335596  }
335597 
335598  void apply(SgQualifiedName *&r, const SgName &n, bool traverse)
335599  {
335600  ROSE_ASSERT(this != NULL);
335601  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335602  }
335603 
335604  void apply(SgNameGroup *&r, const SgName &n, bool traverse)
335605  {
335606  ROSE_ASSERT(this != NULL);
335607  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335608  }
335609 
335610  void apply(SgDimensionObject *&r, const SgName &n, bool traverse)
335611  {
335612  ROSE_ASSERT(this != NULL);
335613  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335614  }
335615 
335616  void apply(SgDataStatementGroup *&r, const SgName &n, bool traverse)
335617  {
335618  ROSE_ASSERT(this != NULL);
335619  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335620  }
335621 
335622  void apply(SgDataStatementObject *&r, const SgName &n, bool traverse)
335623  {
335624  ROSE_ASSERT(this != NULL);
335625  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335626  }
335627 
335628  void apply(SgDataStatementValue *&r, const SgName &n, bool traverse)
335629  {
335630  ROSE_ASSERT(this != NULL);
335631  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335632  }
335633 
335634  void apply(SgFormatItem *&r, const SgName &n, bool traverse)
335635  {
335636  ROSE_ASSERT(this != NULL);
335637  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335638  }
335639 
335640  void apply(SgFormatItemList *&r, const SgName &n, bool traverse)
335641  {
335642  ROSE_ASSERT(this != NULL);
335643  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335644  }
335645 
335646  void apply(SgTypeTable *&r, const SgName &n, bool traverse)
335647  {
335648  ROSE_ASSERT(this != NULL);
335649  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335650  }
335651 
335652  void apply(SgHeaderFileReport *&r, const SgName &n, bool traverse)
335653  {
335654  ROSE_ASSERT(this != NULL);
335655  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335656  }
335657 
335658  void apply(SgSupport *&r, const SgName &n, bool traverse)
335659  {
335660  ROSE_ASSERT(this != NULL);
335661  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335662  }
335663 
335664  void apply(SgTypeUnknown *&r, const SgName &n, bool traverse)
335665  {
335666  ROSE_ASSERT(this != NULL);
335667  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335668  }
335669 
335670  void apply(SgTypeChar *&r, const SgName &n, bool traverse)
335671  {
335672  ROSE_ASSERT(this != NULL);
335673  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335674  }
335675 
335676  void apply(SgTypeSignedChar *&r, const SgName &n, bool traverse)
335677  {
335678  ROSE_ASSERT(this != NULL);
335679  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335680  }
335681 
335682  void apply(SgTypeUnsignedChar *&r, const SgName &n, bool traverse)
335683  {
335684  ROSE_ASSERT(this != NULL);
335685  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335686  }
335687 
335688  void apply(SgTypeShort *&r, const SgName &n, bool traverse)
335689  {
335690  ROSE_ASSERT(this != NULL);
335691  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335692  }
335693 
335694  void apply(SgTypeSignedShort *&r, const SgName &n, bool traverse)
335695  {
335696  ROSE_ASSERT(this != NULL);
335697  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335698  }
335699 
335700  void apply(SgTypeUnsignedShort *&r, const SgName &n, bool traverse)
335701  {
335702  ROSE_ASSERT(this != NULL);
335703  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335704  }
335705 
335706  void apply(SgTypeInt *&r, const SgName &n, bool traverse)
335707  {
335708  ROSE_ASSERT(this != NULL);
335709  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335710  }
335711 
335712  void apply(SgTypeSignedInt *&r, const SgName &n, bool traverse)
335713  {
335714  ROSE_ASSERT(this != NULL);
335715  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335716  }
335717 
335718  void apply(SgTypeUnsignedInt *&r, const SgName &n, bool traverse)
335719  {
335720  ROSE_ASSERT(this != NULL);
335721  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335722  }
335723 
335724  void apply(SgTypeLong *&r, const SgName &n, bool traverse)
335725  {
335726  ROSE_ASSERT(this != NULL);
335727  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335728  }
335729 
335730  void apply(SgTypeSignedLong *&r, const SgName &n, bool traverse)
335731  {
335732  ROSE_ASSERT(this != NULL);
335733  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335734  }
335735 
335736  void apply(SgTypeUnsignedLong *&r, const SgName &n, bool traverse)
335737  {
335738  ROSE_ASSERT(this != NULL);
335739  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335740  }
335741 
335742  void apply(SgTypeVoid *&r, const SgName &n, bool traverse)
335743  {
335744  ROSE_ASSERT(this != NULL);
335745  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335746  }
335747 
335748  void apply(SgTypeGlobalVoid *&r, const SgName &n, bool traverse)
335749  {
335750  ROSE_ASSERT(this != NULL);
335751  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335752  }
335753 
335754  void apply(SgTypeWchar *&r, const SgName &n, bool traverse)
335755  {
335756  ROSE_ASSERT(this != NULL);
335757  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335758  }
335759 
335760  void apply(SgTypeFloat *&r, const SgName &n, bool traverse)
335761  {
335762  ROSE_ASSERT(this != NULL);
335763  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335764  }
335765 
335766  void apply(SgTypeDouble *&r, const SgName &n, bool traverse)
335767  {
335768  ROSE_ASSERT(this != NULL);
335769  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335770  }
335771 
335772  void apply(SgTypeLongLong *&r, const SgName &n, bool traverse)
335773  {
335774  ROSE_ASSERT(this != NULL);
335775  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335776  }
335777 
335778  void apply(SgTypeSignedLongLong *&r, const SgName &n, bool traverse)
335779  {
335780  ROSE_ASSERT(this != NULL);
335781  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335782  }
335783 
335784  void apply(SgTypeUnsignedLongLong *&r, const SgName &n, bool traverse)
335785  {
335786  ROSE_ASSERT(this != NULL);
335787  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335788  }
335789 
335790  void apply(SgTypeLongDouble *&r, const SgName &n, bool traverse)
335791  {
335792  ROSE_ASSERT(this != NULL);
335793  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335794  }
335795 
335796  void apply(SgTypeFloat80 *&r, const SgName &n, bool traverse)
335797  {
335798  ROSE_ASSERT(this != NULL);
335799  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335800  }
335801 
335802  void apply(SgTypeFloat128 *&r, const SgName &n, bool traverse)
335803  {
335804  ROSE_ASSERT(this != NULL);
335805  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335806  }
335807 
335808  void apply(SgTypeString *&r, const SgName &n, bool traverse)
335809  {
335810  ROSE_ASSERT(this != NULL);
335811  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335812  }
335813 
335814  void apply(SgTypeBool *&r, const SgName &n, bool traverse)
335815  {
335816  ROSE_ASSERT(this != NULL);
335817  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335818  }
335819 
335820  void apply(SgTypeFixed *&r, const SgName &n, bool traverse)
335821  {
335822  ROSE_ASSERT(this != NULL);
335823  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335824  }
335825 
335826  void apply(SgTypeMatrix *&r, const SgName &n, bool traverse)
335827  {
335828  ROSE_ASSERT(this != NULL);
335829  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335830  }
335831 
335832  void apply(SgTypeTuple *&r, const SgName &n, bool traverse)
335833  {
335834  ROSE_ASSERT(this != NULL);
335835  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335836  }
335837 
335838  void apply(SgTypeNullptr *&r, const SgName &n, bool traverse)
335839  {
335840  ROSE_ASSERT(this != NULL);
335841  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335842  }
335843 
335844  void apply(SgTypeComplex *&r, const SgName &n, bool traverse)
335845  {
335846  ROSE_ASSERT(this != NULL);
335847  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335848  }
335849 
335850  void apply(SgTypeImaginary *&r, const SgName &n, bool traverse)
335851  {
335852  ROSE_ASSERT(this != NULL);
335853  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335854  }
335855 
335856  void apply(SgTypeDefault *&r, const SgName &n, bool traverse)
335857  {
335858  ROSE_ASSERT(this != NULL);
335859  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335860  }
335861 
335862  void apply(SgPointerMemberType *&r, const SgName &n, bool traverse)
335863  {
335864  ROSE_ASSERT(this != NULL);
335865  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335866  }
335867 
335868  void apply(SgReferenceType *&r, const SgName &n, bool traverse)
335869  {
335870  ROSE_ASSERT(this != NULL);
335871  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335872  }
335873 
335874  void apply(SgRvalueReferenceType *&r, const SgName &n, bool traverse)
335875  {
335876  ROSE_ASSERT(this != NULL);
335877  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335878  }
335879 
335880  void apply(SgDeclType *&r, const SgName &n, bool traverse)
335881  {
335882  ROSE_ASSERT(this != NULL);
335883  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335884  }
335885 
335886  void apply(SgTypeOfType *&r, const SgName &n, bool traverse)
335887  {
335888  ROSE_ASSERT(this != NULL);
335889  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335890  }
335891 
335892  void apply(SgTypeCAFTeam *&r, const SgName &n, bool traverse)
335893  {
335894  ROSE_ASSERT(this != NULL);
335895  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335896  }
335897 
335898  void apply(SgTypeUnsigned128bitInteger *&r, const SgName &n, bool traverse)
335899  {
335900  ROSE_ASSERT(this != NULL);
335901  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335902  }
335903 
335904  void apply(SgTypeSigned128bitInteger *&r, const SgName &n, bool traverse)
335905  {
335906  ROSE_ASSERT(this != NULL);
335907  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335908  }
335909 
335910  void apply(SgTypeLabel *&r, const SgName &n, bool traverse)
335911  {
335912  ROSE_ASSERT(this != NULL);
335913  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335914  }
335915 
335916  void apply(SgTemplateType *&r, const SgName &n, bool traverse)
335917  {
335918  ROSE_ASSERT(this != NULL);
335919  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335920  }
335921 
335922  void apply(SgEnumType *&r, const SgName &n, bool traverse)
335923  {
335924  ROSE_ASSERT(this != NULL);
335925  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335926  }
335927 
335928  void apply(SgTypedefType *&r, const SgName &n, bool traverse)
335929  {
335930  ROSE_ASSERT(this != NULL);
335931  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335932  }
335933 
335934  void apply(SgNonrealType *&r, const SgName &n, bool traverse)
335935  {
335936  ROSE_ASSERT(this != NULL);
335937  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335938  }
335939 
335940  void apply(SgAutoType *&r, const SgName &n, bool traverse)
335941  {
335942  ROSE_ASSERT(this != NULL);
335943  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335944  }
335945 
335946  void apply(SgModifierType *&r, const SgName &n, bool traverse)
335947  {
335948  ROSE_ASSERT(this != NULL);
335949  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335950  }
335951 
335952  void apply(SgPartialFunctionModifierType *&r, const SgName &n, bool traverse)
335953  {
335954  ROSE_ASSERT(this != NULL);
335955  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335956  }
335957 
335958  void apply(SgArrayType *&r, const SgName &n, bool traverse)
335959  {
335960  ROSE_ASSERT(this != NULL);
335961  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335962  }
335963 
335964  void apply(SgTypeEllipse *&r, const SgName &n, bool traverse)
335965  {
335966  ROSE_ASSERT(this != NULL);
335967  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335968  }
335969 
335970  void apply(SgTypeCrayPointer *&r, const SgName &n, bool traverse)
335971  {
335972  ROSE_ASSERT(this != NULL);
335973  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335974  }
335975 
335976  void apply(SgPartialFunctionType *&r, const SgName &n, bool traverse)
335977  {
335978  ROSE_ASSERT(this != NULL);
335979  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335980  }
335981 
335982  void apply(SgMemberFunctionType *&r, const SgName &n, bool traverse)
335983  {
335984  ROSE_ASSERT(this != NULL);
335985  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335986  }
335987 
335988  void apply(SgFunctionType *&r, const SgName &n, bool traverse)
335989  {
335990  ROSE_ASSERT(this != NULL);
335991  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335992  }
335993 
335994  void apply(SgPointerType *&r, const SgName &n, bool traverse)
335995  {
335996  ROSE_ASSERT(this != NULL);
335997  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
335998  }
335999 
336000  void apply(SgClassType *&r, const SgName &n, bool traverse)
336001  {
336002  ROSE_ASSERT(this != NULL);
336003  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336004  }
336005 
336006  void apply(SgNamedType *&r, const SgName &n, bool traverse)
336007  {
336008  ROSE_ASSERT(this != NULL);
336009  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336010  }
336011 
336012  void apply(SgQualifiedNameType *&r, const SgName &n, bool traverse)
336013  {
336014  ROSE_ASSERT(this != NULL);
336015  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336016  }
336017 
336018  void apply(SgTypeChar16 *&r, const SgName &n, bool traverse)
336019  {
336020  ROSE_ASSERT(this != NULL);
336021  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336022  }
336023 
336024  void apply(SgTypeChar32 *&r, const SgName &n, bool traverse)
336025  {
336026  ROSE_ASSERT(this != NULL);
336027  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336028  }
336029 
336030  void apply(SgType *&r, const SgName &n, bool traverse)
336031  {
336032  ROSE_ASSERT(this != NULL);
336033  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336034  }
336035 
336036  void apply(SgForStatement *&r, const SgName &n, bool traverse)
336037  {
336038  ROSE_ASSERT(this != NULL);
336039  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336040  }
336041 
336042  void apply(SgForInitStatement *&r, const SgName &n, bool traverse)
336043  {
336044  ROSE_ASSERT(this != NULL);
336045  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336046  }
336047 
336048  void apply(SgRangeBasedForStatement *&r, const SgName &n, bool traverse)
336049  {
336050  ROSE_ASSERT(this != NULL);
336051  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336052  }
336053 
336054  void apply(SgCatchStatementSeq *&r, const SgName &n, bool traverse)
336055  {
336056  ROSE_ASSERT(this != NULL);
336057  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336058  }
336059 
336060  void apply(SgFunctionParameterList *&r, const SgName &n, bool traverse)
336061  {
336062  ROSE_ASSERT(this != NULL);
336063  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336064  }
336065 
336066  void apply(SgCtorInitializerList *&r, const SgName &n, bool traverse)
336067  {
336068  ROSE_ASSERT(this != NULL);
336069  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336070  }
336071 
336072  void apply(SgBasicBlock *&r, const SgName &n, bool traverse)
336073  {
336074  ROSE_ASSERT(this != NULL);
336075  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336076  }
336077 
336078  void apply(SgGlobal *&r, const SgName &n, bool traverse)
336079  {
336080  ROSE_ASSERT(this != NULL);
336081  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336082  }
336083 
336084  void apply(SgIfStmt *&r, const SgName &n, bool traverse)
336085  {
336086  ROSE_ASSERT(this != NULL);
336087  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336088  }
336089 
336090  void apply(SgWhileStmt *&r, const SgName &n, bool traverse)
336091  {
336092  ROSE_ASSERT(this != NULL);
336093  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336094  }
336095 
336096  void apply(SgDoWhileStmt *&r, const SgName &n, bool traverse)
336097  {
336098  ROSE_ASSERT(this != NULL);
336099  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336100  }
336101 
336102  void apply(SgSwitchStatement *&r, const SgName &n, bool traverse)
336103  {
336104  ROSE_ASSERT(this != NULL);
336105  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336106  }
336107 
336108  void apply(SgCatchOptionStmt *&r, const SgName &n, bool traverse)
336109  {
336110  ROSE_ASSERT(this != NULL);
336111  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336112  }
336113 
336114  void apply(SgFunctionParameterScope *&r, const SgName &n, bool traverse)
336115  {
336116  ROSE_ASSERT(this != NULL);
336117  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336118  }
336119 
336120  void apply(SgDeclarationScope *&r, const SgName &n, bool traverse)
336121  {
336122  ROSE_ASSERT(this != NULL);
336123  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336124  }
336125 
336126  void apply(SgVariableDefinition *&r, const SgName &n, bool traverse)
336127  {
336128  ROSE_ASSERT(this != NULL);
336129  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336130  }
336131 
336132  void apply(SgStmtDeclarationStatement *&r, const SgName &n, bool traverse)
336133  {
336134  ROSE_ASSERT(this != NULL);
336135  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336136  }
336137 
336138  void apply(SgEnumDeclaration *&r, const SgName &n, bool traverse)
336139  {
336140  ROSE_ASSERT(this != NULL);
336141  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336142  }
336143 
336144  void apply(SgAsmStmt *&r, const SgName &n, bool traverse)
336145  {
336146  ROSE_ASSERT(this != NULL);
336147  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336148  }
336149 
336150  void apply(SgFunctionTypeTable *&r, const SgName &n, bool traverse)
336151  {
336152  ROSE_ASSERT(this != NULL);
336153  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336154  }
336155 
336156  void apply(SgExprStatement *&r, const SgName &n, bool traverse)
336157  {
336158  ROSE_ASSERT(this != NULL);
336159  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336160  }
336161 
336162  void apply(SgLabelStatement *&r, const SgName &n, bool traverse)
336163  {
336164  ROSE_ASSERT(this != NULL);
336165  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336166  }
336167 
336168  void apply(SgCaseOptionStmt *&r, const SgName &n, bool traverse)
336169  {
336170  ROSE_ASSERT(this != NULL);
336171  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336172  }
336173 
336174  void apply(SgTryStmt *&r, const SgName &n, bool traverse)
336175  {
336176  ROSE_ASSERT(this != NULL);
336177  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336178  }
336179 
336180  void apply(SgDefaultOptionStmt *&r, const SgName &n, bool traverse)
336181  {
336182  ROSE_ASSERT(this != NULL);
336183  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336184  }
336185 
336186  void apply(SgBreakStmt *&r, const SgName &n, bool traverse)
336187  {
336188  ROSE_ASSERT(this != NULL);
336189  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336190  }
336191 
336192  void apply(SgContinueStmt *&r, const SgName &n, bool traverse)
336193  {
336194  ROSE_ASSERT(this != NULL);
336195  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336196  }
336197 
336198  void apply(SgReturnStmt *&r, const SgName &n, bool traverse)
336199  {
336200  ROSE_ASSERT(this != NULL);
336201  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336202  }
336203 
336204  void apply(SgGotoStatement *&r, const SgName &n, bool traverse)
336205  {
336206  ROSE_ASSERT(this != NULL);
336207  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336208  }
336209 
336210  void apply(SgSpawnStmt *&r, const SgName &n, bool traverse)
336211  {
336212  ROSE_ASSERT(this != NULL);
336213  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336214  }
336215 
336216  void apply(SgTemplateTypedefDeclaration *&r, const SgName &n, bool traverse)
336217  {
336218  ROSE_ASSERT(this != NULL);
336219  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336220  }
336221 
336222  void apply(SgTemplateInstantiationTypedefDeclaration *&r, const SgName &n, bool traverse)
336223  {
336224  ROSE_ASSERT(this != NULL);
336225  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336226  }
336227 
336228  void apply(SgTypedefDeclaration *&r, const SgName &n, bool traverse)
336229  {
336230  ROSE_ASSERT(this != NULL);
336231  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336232  }
336233 
336234  void apply(SgNullStatement *&r, const SgName &n, bool traverse)
336235  {
336236  ROSE_ASSERT(this != NULL);
336237  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336238  }
336239 
336240  void apply(SgVariantStatement *&r, const SgName &n, bool traverse)
336241  {
336242  ROSE_ASSERT(this != NULL);
336243  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336244  }
336245 
336246  void apply(SgPragmaDeclaration *&r, const SgName &n, bool traverse)
336247  {
336248  ROSE_ASSERT(this != NULL);
336249  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336250  }
336251 
336252  void apply(SgTemplateClassDeclaration *&r, const SgName &n, bool traverse)
336253  {
336254  ROSE_ASSERT(this != NULL);
336255  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336256  }
336257 
336258  void apply(SgTemplateMemberFunctionDeclaration *&r, const SgName &n, bool traverse)
336259  {
336260  ROSE_ASSERT(this != NULL);
336261  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336262  }
336263 
336264  void apply(SgTemplateFunctionDeclaration *&r, const SgName &n, bool traverse)
336265  {
336266  ROSE_ASSERT(this != NULL);
336267  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336268  }
336269 
336270  void apply(SgTemplateVariableDeclaration *&r, const SgName &n, bool traverse)
336271  {
336272  ROSE_ASSERT(this != NULL);
336273  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336274  }
336275 
336276  void apply(SgTemplateDeclaration *&r, const SgName &n, bool traverse)
336277  {
336278  ROSE_ASSERT(this != NULL);
336279  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336280  }
336281 
336282  void apply(SgVariableDeclaration *&r, const SgName &n, bool traverse)
336283  {
336284  ROSE_ASSERT(this != NULL);
336285  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336286  }
336287 
336288  void apply(SgTemplateInstantiationDecl *&r, const SgName &n, bool traverse)
336289  {
336290  ROSE_ASSERT(this != NULL);
336291  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336292  }
336293 
336294  void apply(SgTemplateInstantiationDefn *&r, const SgName &n, bool traverse)
336295  {
336296  ROSE_ASSERT(this != NULL);
336297  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336298  }
336299 
336300  void apply(SgTemplateInstantiationFunctionDecl *&r, const SgName &n, bool traverse)
336301  {
336302  ROSE_ASSERT(this != NULL);
336303  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336304  }
336305 
336306  void apply(SgTemplateInstantiationMemberFunctionDecl *&r, const SgName &n, bool traverse)
336307  {
336308  ROSE_ASSERT(this != NULL);
336309  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336310  }
336311 
336312  void apply(SgNonrealDecl *&r, const SgName &n, bool traverse)
336313  {
336314  ROSE_ASSERT(this != NULL);
336315  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336316  }
336317 
336318  void apply(SgWithStatement *&r, const SgName &n, bool traverse)
336319  {
336320  ROSE_ASSERT(this != NULL);
336321  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336322  }
336323 
336324  void apply(SgPassStatement *&r, const SgName &n, bool traverse)
336325  {
336326  ROSE_ASSERT(this != NULL);
336327  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336328  }
336329 
336330  void apply(SgAssertStmt *&r, const SgName &n, bool traverse)
336331  {
336332  ROSE_ASSERT(this != NULL);
336333  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336334  }
336335 
336336  void apply(SgExecStatement *&r, const SgName &n, bool traverse)
336337  {
336338  ROSE_ASSERT(this != NULL);
336339  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336340  }
336341 
336342  void apply(SgProgramHeaderStatement *&r, const SgName &n, bool traverse)
336343  {
336344  ROSE_ASSERT(this != NULL);
336345  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336346  }
336347 
336348  void apply(SgProcedureHeaderStatement *&r, const SgName &n, bool traverse)
336349  {
336350  ROSE_ASSERT(this != NULL);
336351  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336352  }
336353 
336354  void apply(SgEntryStatement *&r, const SgName &n, bool traverse)
336355  {
336356  ROSE_ASSERT(this != NULL);
336357  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336358  }
336359 
336360  void apply(SgFortranNonblockedDo *&r, const SgName &n, bool traverse)
336361  {
336362  ROSE_ASSERT(this != NULL);
336363  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336364  }
336365 
336366  void apply(SgInterfaceStatement *&r, const SgName &n, bool traverse)
336367  {
336368  ROSE_ASSERT(this != NULL);
336369  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336370  }
336371 
336372  void apply(SgParameterStatement *&r, const SgName &n, bool traverse)
336373  {
336374  ROSE_ASSERT(this != NULL);
336375  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336376  }
336377 
336378  void apply(SgCommonBlock *&r, const SgName &n, bool traverse)
336379  {
336380  ROSE_ASSERT(this != NULL);
336381  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336382  }
336383 
336384  void apply(SgModuleStatement *&r, const SgName &n, bool traverse)
336385  {
336386  ROSE_ASSERT(this != NULL);
336387  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336388  }
336389 
336390  void apply(SgUseStatement *&r, const SgName &n, bool traverse)
336391  {
336392  ROSE_ASSERT(this != NULL);
336393  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336394  }
336395 
336396  void apply(SgProcessControlStatement *&r, const SgName &n, bool traverse)
336397  {
336398  ROSE_ASSERT(this != NULL);
336399  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336400  }
336401 
336402  void apply(SgPrintStatement *&r, const SgName &n, bool traverse)
336403  {
336404  ROSE_ASSERT(this != NULL);
336405  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336406  }
336407 
336408  void apply(SgReadStatement *&r, const SgName &n, bool traverse)
336409  {
336410  ROSE_ASSERT(this != NULL);
336411  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336412  }
336413 
336414  void apply(SgWriteStatement *&r, const SgName &n, bool traverse)
336415  {
336416  ROSE_ASSERT(this != NULL);
336417  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336418  }
336419 
336420  void apply(SgOpenStatement *&r, const SgName &n, bool traverse)
336421  {
336422  ROSE_ASSERT(this != NULL);
336423  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336424  }
336425 
336426  void apply(SgCloseStatement *&r, const SgName &n, bool traverse)
336427  {
336428  ROSE_ASSERT(this != NULL);
336429  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336430  }
336431 
336432  void apply(SgInquireStatement *&r, const SgName &n, bool traverse)
336433  {
336434  ROSE_ASSERT(this != NULL);
336435  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336436  }
336437 
336438  void apply(SgFlushStatement *&r, const SgName &n, bool traverse)
336439  {
336440  ROSE_ASSERT(this != NULL);
336441  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336442  }
336443 
336444  void apply(SgBackspaceStatement *&r, const SgName &n, bool traverse)
336445  {
336446  ROSE_ASSERT(this != NULL);
336447  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336448  }
336449 
336450  void apply(SgRewindStatement *&r, const SgName &n, bool traverse)
336451  {
336452  ROSE_ASSERT(this != NULL);
336453  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336454  }
336455 
336456  void apply(SgEndfileStatement *&r, const SgName &n, bool traverse)
336457  {
336458  ROSE_ASSERT(this != NULL);
336459  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336460  }
336461 
336462  void apply(SgWaitStatement *&r, const SgName &n, bool traverse)
336463  {
336464  ROSE_ASSERT(this != NULL);
336465  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336466  }
336467 
336468  void apply(SgCAFWithTeamStatement *&r, const SgName &n, bool traverse)
336469  {
336470  ROSE_ASSERT(this != NULL);
336471  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336472  }
336473 
336474  void apply(SgFormatStatement *&r, const SgName &n, bool traverse)
336475  {
336476  ROSE_ASSERT(this != NULL);
336477  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336478  }
336479 
336480  void apply(SgFortranDo *&r, const SgName &n, bool traverse)
336481  {
336482  ROSE_ASSERT(this != NULL);
336483  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336484  }
336485 
336486  void apply(SgForAllStatement *&r, const SgName &n, bool traverse)
336487  {
336488  ROSE_ASSERT(this != NULL);
336489  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336490  }
336491 
336492  void apply(SgIOStatement *&r, const SgName &n, bool traverse)
336493  {
336494  ROSE_ASSERT(this != NULL);
336495  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336496  }
336497 
336498  void apply(SgSyncAllStatement *&r, const SgName &n, bool traverse)
336499  {
336500  ROSE_ASSERT(this != NULL);
336501  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336502  }
336503 
336504  void apply(SgSyncImagesStatement *&r, const SgName &n, bool traverse)
336505  {
336506  ROSE_ASSERT(this != NULL);
336507  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336508  }
336509 
336510  void apply(SgSyncMemoryStatement *&r, const SgName &n, bool traverse)
336511  {
336512  ROSE_ASSERT(this != NULL);
336513  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336514  }
336515 
336516  void apply(SgSyncTeamStatement *&r, const SgName &n, bool traverse)
336517  {
336518  ROSE_ASSERT(this != NULL);
336519  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336520  }
336521 
336522  void apply(SgLockStatement *&r, const SgName &n, bool traverse)
336523  {
336524  ROSE_ASSERT(this != NULL);
336525  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336526  }
336527 
336528  void apply(SgUnlockStatement *&r, const SgName &n, bool traverse)
336529  {
336530  ROSE_ASSERT(this != NULL);
336531  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336532  }
336533 
336534  void apply(SgImageControlStatement *&r, const SgName &n, bool traverse)
336535  {
336536  ROSE_ASSERT(this != NULL);
336537  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336538  }
336539 
336540  void apply(SgUpcNotifyStatement *&r, const SgName &n, bool traverse)
336541  {
336542  ROSE_ASSERT(this != NULL);
336543  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336544  }
336545 
336546  void apply(SgUpcWaitStatement *&r, const SgName &n, bool traverse)
336547  {
336548  ROSE_ASSERT(this != NULL);
336549  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336550  }
336551 
336552  void apply(SgUpcBarrierStatement *&r, const SgName &n, bool traverse)
336553  {
336554  ROSE_ASSERT(this != NULL);
336555  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336556  }
336557 
336558  void apply(SgUpcFenceStatement *&r, const SgName &n, bool traverse)
336559  {
336560  ROSE_ASSERT(this != NULL);
336561  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336562  }
336563 
336564  void apply(SgUpcForAllStatement *&r, const SgName &n, bool traverse)
336565  {
336566  ROSE_ASSERT(this != NULL);
336567  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336568  }
336569 
336570  void apply(SgUpirSpmdStatement *&r, const SgName &n, bool traverse)
336571  {
336572  ROSE_ASSERT(this != NULL);
336573  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336574  }
336575 
336576  void apply(SgOmpLoopStatement *&r, const SgName &n, bool traverse)
336577  {
336578  ROSE_ASSERT(this != NULL);
336579  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336580  }
336581 
336582  void apply(SgOmpScanStatement *&r, const SgName &n, bool traverse)
336583  {
336584  ROSE_ASSERT(this != NULL);
336585  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336586  }
336587 
336588  void apply(SgOmpTaskloopStatement *&r, const SgName &n, bool traverse)
336589  {
336590  ROSE_ASSERT(this != NULL);
336591  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336592  }
336593 
336594  void apply(SgOmpTaskgroupStatement *&r, const SgName &n, bool traverse)
336595  {
336596  ROSE_ASSERT(this != NULL);
336597  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336598  }
336599 
336600  void apply(SgOmpDepobjStatement *&r, const SgName &n, bool traverse)
336601  {
336602  ROSE_ASSERT(this != NULL);
336603  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336604  }
336605 
336606  void apply(SgOmpTeamsStatement *&r, const SgName &n, bool traverse)
336607  {
336608  ROSE_ASSERT(this != NULL);
336609  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336610  }
336611 
336612  void apply(SgOmpCancellationPointStatement *&r, const SgName &n, bool traverse)
336613  {
336614  ROSE_ASSERT(this != NULL);
336615  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336616  }
336617 
336618  void apply(SgOmpDeclareMapperStatement *&r, const SgName &n, bool traverse)
336619  {
336620  ROSE_ASSERT(this != NULL);
336621  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336622  }
336623 
336624  void apply(SgOmpCancelStatement *&r, const SgName &n, bool traverse)
336625  {
336626  ROSE_ASSERT(this != NULL);
336627  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336628  }
336629 
336630  void apply(SgOmpDistributeStatement *&r, const SgName &n, bool traverse)
336631  {
336632  ROSE_ASSERT(this != NULL);
336633  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336634  }
336635 
336636  void apply(SgOmpMetadirectiveStatement *&r, const SgName &n, bool traverse)
336637  {
336638  ROSE_ASSERT(this != NULL);
336639  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336640  }
336641 
336642  void apply(SgOmpSingleStatement *&r, const SgName &n, bool traverse)
336643  {
336644  ROSE_ASSERT(this != NULL);
336645  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336646  }
336647 
336648  void apply(SgOmpTaskStatement *&r, const SgName &n, bool traverse)
336649  {
336650  ROSE_ASSERT(this != NULL);
336651  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336652  }
336653 
336654  void apply(SgOmpTargetEnterDataStatement *&r, const SgName &n, bool traverse)
336655  {
336656  ROSE_ASSERT(this != NULL);
336657  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336658  }
336659 
336660  void apply(SgOmpTargetExitDataStatement *&r, const SgName &n, bool traverse)
336661  {
336662  ROSE_ASSERT(this != NULL);
336663  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336664  }
336665 
336666  void apply(SgUpirWorksharingStatement *&r, const SgName &n, bool traverse)
336667  {
336668  ROSE_ASSERT(this != NULL);
336669  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336670  }
336671 
336672  void apply(SgOmpForSimdStatement *&r, const SgName &n, bool traverse)
336673  {
336674  ROSE_ASSERT(this != NULL);
336675  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336676  }
336677 
336678  void apply(SgOmpDoStatement *&r, const SgName &n, bool traverse)
336679  {
336680  ROSE_ASSERT(this != NULL);
336681  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336682  }
336683 
336684  void apply(SgOmpSectionsStatement *&r, const SgName &n, bool traverse)
336685  {
336686  ROSE_ASSERT(this != NULL);
336687  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336688  }
336689 
336690  void apply(SgOmpAtomicStatement *&r, const SgName &n, bool traverse)
336691  {
336692  ROSE_ASSERT(this != NULL);
336693  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336694  }
336695 
336696  void apply(SgUpirTaskStatement *&r, const SgName &n, bool traverse)
336697  {
336698  ROSE_ASSERT(this != NULL);
336699  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336700  }
336701 
336702  void apply(SgOmpTargetDataStatement *&r, const SgName &n, bool traverse)
336703  {
336704  ROSE_ASSERT(this != NULL);
336705  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336706  }
336707 
336708  void apply(SgOmpTargetParallelForStatement *&r, const SgName &n, bool traverse)
336709  {
336710  ROSE_ASSERT(this != NULL);
336711  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336712  }
336713 
336714  void apply(SgOmpTargetParallelStatement *&r, const SgName &n, bool traverse)
336715  {
336716  ROSE_ASSERT(this != NULL);
336717  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336718  }
336719 
336720  void apply(SgOmpDistributeSimdStatement *&r, const SgName &n, bool traverse)
336721  {
336722  ROSE_ASSERT(this != NULL);
336723  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336724  }
336725 
336726  void apply(SgOmpDistributeParallelForStatement *&r, const SgName &n, bool traverse)
336727  {
336728  ROSE_ASSERT(this != NULL);
336729  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336730  }
336731 
336732  void apply(SgOmpDistributeParallelForSimdStatement *&r, const SgName &n, bool traverse)
336733  {
336734  ROSE_ASSERT(this != NULL);
336735  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336736  }
336737 
336738  void apply(SgOmpTaskloopSimdStatement *&r, const SgName &n, bool traverse)
336739  {
336740  ROSE_ASSERT(this != NULL);
336741  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336742  }
336743 
336744  void apply(SgOmpTargetUpdateStatement *&r, const SgName &n, bool traverse)
336745  {
336746  ROSE_ASSERT(this != NULL);
336747  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336748  }
336749 
336750  void apply(SgOmpTargetParallelForSimdStatement *&r, const SgName &n, bool traverse)
336751  {
336752  ROSE_ASSERT(this != NULL);
336753  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336754  }
336755 
336756  void apply(SgOmpTargetParallelLoopStatement *&r, const SgName &n, bool traverse)
336757  {
336758  ROSE_ASSERT(this != NULL);
336759  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336760  }
336761 
336762  void apply(SgOmpTargetSimdStatement *&r, const SgName &n, bool traverse)
336763  {
336764  ROSE_ASSERT(this != NULL);
336765  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336766  }
336767 
336768  void apply(SgOmpTargetTeamsStatement *&r, const SgName &n, bool traverse)
336769  {
336770  ROSE_ASSERT(this != NULL);
336771  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336772  }
336773 
336774  void apply(SgOmpTargetTeamsDistributeStatement *&r, const SgName &n, bool traverse)
336775  {
336776  ROSE_ASSERT(this != NULL);
336777  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336778  }
336779 
336780  void apply(SgOmpTargetTeamsDistributeSimdStatement *&r, const SgName &n, bool traverse)
336781  {
336782  ROSE_ASSERT(this != NULL);
336783  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336784  }
336785 
336786  void apply(SgOmpTargetTeamsLoopStatement *&r, const SgName &n, bool traverse)
336787  {
336788  ROSE_ASSERT(this != NULL);
336789  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336790  }
336791 
336792  void apply(SgOmpTargetTeamsDistributeParallelForStatement *&r, const SgName &n, bool traverse)
336793  {
336794  ROSE_ASSERT(this != NULL);
336795  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336796  }
336797 
336798  void apply(SgOmpTargetTeamsDistributeParallelForSimdStatement *&r, const SgName &n, bool traverse)
336799  {
336800  ROSE_ASSERT(this != NULL);
336801  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336802  }
336803 
336804  void apply(SgOmpMasterTaskloopSimdStatement *&r, const SgName &n, bool traverse)
336805  {
336806  ROSE_ASSERT(this != NULL);
336807  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336808  }
336809 
336810  void apply(SgOmpParallelMasterTaskloopStatement *&r, const SgName &n, bool traverse)
336811  {
336812  ROSE_ASSERT(this != NULL);
336813  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336814  }
336815 
336816  void apply(SgOmpParallelMasterTaskloopSimdStatement *&r, const SgName &n, bool traverse)
336817  {
336818  ROSE_ASSERT(this != NULL);
336819  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336820  }
336821 
336822  void apply(SgOmpTeamsDistributeStatement *&r, const SgName &n, bool traverse)
336823  {
336824  ROSE_ASSERT(this != NULL);
336825  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336826  }
336827 
336828  void apply(SgOmpTeamsDistributeSimdStatement *&r, const SgName &n, bool traverse)
336829  {
336830  ROSE_ASSERT(this != NULL);
336831  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336832  }
336833 
336834  void apply(SgOmpTeamsDistributeParallelForStatement *&r, const SgName &n, bool traverse)
336835  {
336836  ROSE_ASSERT(this != NULL);
336837  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336838  }
336839 
336840  void apply(SgOmpTeamsDistributeParallelForSimdStatement *&r, const SgName &n, bool traverse)
336841  {
336842  ROSE_ASSERT(this != NULL);
336843  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336844  }
336845 
336846  void apply(SgOmpTeamsLoopStatement *&r, const SgName &n, bool traverse)
336847  {
336848  ROSE_ASSERT(this != NULL);
336849  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336850  }
336851 
336852  void apply(SgOmpParallelMasterStatement *&r, const SgName &n, bool traverse)
336853  {
336854  ROSE_ASSERT(this != NULL);
336855  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336856  }
336857 
336858  void apply(SgOmpMasterTaskloopStatement *&r, const SgName &n, bool traverse)
336859  {
336860  ROSE_ASSERT(this != NULL);
336861  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336862  }
336863 
336864  void apply(SgOmpParallelLoopStatement *&r, const SgName &n, bool traverse)
336865  {
336866  ROSE_ASSERT(this != NULL);
336867  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336868  }
336869 
336870  void apply(SgOmpUnrollStatement *&r, const SgName &n, bool traverse)
336871  {
336872  ROSE_ASSERT(this != NULL);
336873  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336874  }
336875 
336876  void apply(SgOmpTileStatement *&r, const SgName &n, bool traverse)
336877  {
336878  ROSE_ASSERT(this != NULL);
336879  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336880  }
336881 
336882  void apply(SgUpirSimdStatement *&r, const SgName &n, bool traverse)
336883  {
336884  ROSE_ASSERT(this != NULL);
336885  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336886  }
336887 
336888  void apply(SgOmpCriticalStatement *&r, const SgName &n, bool traverse)
336889  {
336890  ROSE_ASSERT(this != NULL);
336891  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336892  }
336893 
336894  void apply(SgOmpOrderedStatement *&r, const SgName &n, bool traverse)
336895  {
336896  ROSE_ASSERT(this != NULL);
336897  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336898  }
336899 
336900  void apply(SgUpirLoopStatement *&r, const SgName &n, bool traverse)
336901  {
336902  ROSE_ASSERT(this != NULL);
336903  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336904  }
336905 
336906  void apply(SgUpirLoopParallelStatement *&r, const SgName &n, bool traverse)
336907  {
336908  ROSE_ASSERT(this != NULL);
336909  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336910  }
336911 
336912  void apply(SgUpirSyncStatement *&r, const SgName &n, bool traverse)
336913  {
336914  ROSE_ASSERT(this != NULL);
336915  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336916  }
336917 
336918  void apply(SgUpirFieldBodyStatement *&r, const SgName &n, bool traverse)
336919  {
336920  ROSE_ASSERT(this != NULL);
336921  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336922  }
336923 
336924  void apply(SgOmpMasterStatement *&r, const SgName &n, bool traverse)
336925  {
336926  ROSE_ASSERT(this != NULL);
336927  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336928  }
336929 
336930  void apply(SgOmpSectionStatement *&r, const SgName &n, bool traverse)
336931  {
336932  ROSE_ASSERT(this != NULL);
336933  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336934  }
336935 
336936  void apply(SgOmpWorkshareStatement *&r, const SgName &n, bool traverse)
336937  {
336938  ROSE_ASSERT(this != NULL);
336939  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336940  }
336941 
336942  void apply(SgOmpFlushStatement *&r, const SgName &n, bool traverse)
336943  {
336944  ROSE_ASSERT(this != NULL);
336945  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336946  }
336947 
336948  void apply(SgOmpAllocateStatement *&r, const SgName &n, bool traverse)
336949  {
336950  ROSE_ASSERT(this != NULL);
336951  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336952  }
336953 
336954  void apply(SgOmpOrderedDependStatement *&r, const SgName &n, bool traverse)
336955  {
336956  ROSE_ASSERT(this != NULL);
336957  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336958  }
336959 
336960  void apply(SgUpirBodyStatement *&r, const SgName &n, bool traverse)
336961  {
336962  ROSE_ASSERT(this != NULL);
336963  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336964  }
336965 
336966  void apply(SgUpirFieldStatement *&r, const SgName &n, bool traverse)
336967  {
336968  ROSE_ASSERT(this != NULL);
336969  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336970  }
336971 
336972  void apply(SgBlockDataStatement *&r, const SgName &n, bool traverse)
336973  {
336974  ROSE_ASSERT(this != NULL);
336975  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336976  }
336977 
336978  void apply(SgImplicitStatement *&r, const SgName &n, bool traverse)
336979  {
336980  ROSE_ASSERT(this != NULL);
336981  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336982  }
336983 
336984  void apply(SgStatementFunctionStatement *&r, const SgName &n, bool traverse)
336985  {
336986  ROSE_ASSERT(this != NULL);
336987  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336988  }
336989 
336990  void apply(SgWhereStatement *&r, const SgName &n, bool traverse)
336991  {
336992  ROSE_ASSERT(this != NULL);
336993  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
336994  }
336995 
336996  void apply(SgNullifyStatement *&r, const SgName &n, bool traverse)
336997  {
336998  ROSE_ASSERT(this != NULL);
336999  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337000  }
337001 
337002  void apply(SgEquivalenceStatement *&r, const SgName &n, bool traverse)
337003  {
337004  ROSE_ASSERT(this != NULL);
337005  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337006  }
337007 
337008  void apply(SgDerivedTypeStatement *&r, const SgName &n, bool traverse)
337009  {
337010  ROSE_ASSERT(this != NULL);
337011  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337012  }
337013 
337014  void apply(SgAttributeSpecificationStatement *&r, const SgName &n, bool traverse)
337015  {
337016  ROSE_ASSERT(this != NULL);
337017  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337018  }
337019 
337020  void apply(SgAllocateStatement *&r, const SgName &n, bool traverse)
337021  {
337022  ROSE_ASSERT(this != NULL);
337023  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337024  }
337025 
337026  void apply(SgDeallocateStatement *&r, const SgName &n, bool traverse)
337027  {
337028  ROSE_ASSERT(this != NULL);
337029  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337030  }
337031 
337032  void apply(SgContainsStatement *&r, const SgName &n, bool traverse)
337033  {
337034  ROSE_ASSERT(this != NULL);
337035  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337036  }
337037 
337038  void apply(SgSequenceStatement *&r, const SgName &n, bool traverse)
337039  {
337040  ROSE_ASSERT(this != NULL);
337041  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337042  }
337043 
337044  void apply(SgElseWhereStatement *&r, const SgName &n, bool traverse)
337045  {
337046  ROSE_ASSERT(this != NULL);
337047  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337048  }
337049 
337050  void apply(SgArithmeticIfStatement *&r, const SgName &n, bool traverse)
337051  {
337052  ROSE_ASSERT(this != NULL);
337053  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337054  }
337055 
337056  void apply(SgAssignStatement *&r, const SgName &n, bool traverse)
337057  {
337058  ROSE_ASSERT(this != NULL);
337059  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337060  }
337061 
337062  void apply(SgComputedGotoStatement *&r, const SgName &n, bool traverse)
337063  {
337064  ROSE_ASSERT(this != NULL);
337065  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337066  }
337067 
337068  void apply(SgAssignedGotoStatement *&r, const SgName &n, bool traverse)
337069  {
337070  ROSE_ASSERT(this != NULL);
337071  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337072  }
337073 
337074  void apply(SgNamelistStatement *&r, const SgName &n, bool traverse)
337075  {
337076  ROSE_ASSERT(this != NULL);
337077  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337078  }
337079 
337080  void apply(SgImportStatement *&r, const SgName &n, bool traverse)
337081  {
337082  ROSE_ASSERT(this != NULL);
337083  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337084  }
337085 
337086  void apply(SgAssociateStatement *&r, const SgName &n, bool traverse)
337087  {
337088  ROSE_ASSERT(this != NULL);
337089  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337090  }
337091 
337092  void apply(SgFortranIncludeLine *&r, const SgName &n, bool traverse)
337093  {
337094  ROSE_ASSERT(this != NULL);
337095  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337096  }
337097 
337098  void apply(SgNamespaceDeclarationStatement *&r, const SgName &n, bool traverse)
337099  {
337100  ROSE_ASSERT(this != NULL);
337101  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337102  }
337103 
337104  void apply(SgNamespaceAliasDeclarationStatement *&r, const SgName &n, bool traverse)
337105  {
337106  ROSE_ASSERT(this != NULL);
337107  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337108  }
337109 
337110  void apply(SgNamespaceDefinitionStatement *&r, const SgName &n, bool traverse)
337111  {
337112  ROSE_ASSERT(this != NULL);
337113  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337114  }
337115 
337116  void apply(SgUsingDeclarationStatement *&r, const SgName &n, bool traverse)
337117  {
337118  ROSE_ASSERT(this != NULL);
337119  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337120  }
337121 
337122  void apply(SgUsingDirectiveStatement *&r, const SgName &n, bool traverse)
337123  {
337124  ROSE_ASSERT(this != NULL);
337125  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337126  }
337127 
337128  void apply(SgTemplateInstantiationDirectiveStatement *&r, const SgName &n, bool traverse)
337129  {
337130  ROSE_ASSERT(this != NULL);
337131  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337132  }
337133 
337134  void apply(SgStaticAssertionDeclaration *&r, const SgName &n, bool traverse)
337135  {
337136  ROSE_ASSERT(this != NULL);
337137  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337138  }
337139 
337140  void apply(SgTemplateClassDefinition *&r, const SgName &n, bool traverse)
337141  {
337142  ROSE_ASSERT(this != NULL);
337143  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337144  }
337145 
337146  void apply(SgTemplateFunctionDefinition *&r, const SgName &n, bool traverse)
337147  {
337148  ROSE_ASSERT(this != NULL);
337149  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337150  }
337151 
337152  void apply(SgClassDeclaration *&r, const SgName &n, bool traverse)
337153  {
337154  ROSE_ASSERT(this != NULL);
337155  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337156  }
337157 
337158  void apply(SgClassDefinition *&r, const SgName &n, bool traverse)
337159  {
337160  ROSE_ASSERT(this != NULL);
337161  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337162  }
337163 
337164  void apply(SgFunctionDefinition *&r, const SgName &n, bool traverse)
337165  {
337166  ROSE_ASSERT(this != NULL);
337167  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337168  }
337169 
337170  void apply(SgScopeStatement *&r, const SgName &n, bool traverse)
337171  {
337172  ROSE_ASSERT(this != NULL);
337173  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337174  }
337175 
337176  void apply(SgMemberFunctionDeclaration *&r, const SgName &n, bool traverse)
337177  {
337178  ROSE_ASSERT(this != NULL);
337179  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337180  }
337181 
337182  void apply(SgFunctionDeclaration *&r, const SgName &n, bool traverse)
337183  {
337184  ROSE_ASSERT(this != NULL);
337185  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337186  }
337187 
337188  void apply(SgIncludeDirectiveStatement *&r, const SgName &n, bool traverse)
337189  {
337190  ROSE_ASSERT(this != NULL);
337191  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337192  }
337193 
337194  void apply(SgDefineDirectiveStatement *&r, const SgName &n, bool traverse)
337195  {
337196  ROSE_ASSERT(this != NULL);
337197  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337198  }
337199 
337200  void apply(SgUndefDirectiveStatement *&r, const SgName &n, bool traverse)
337201  {
337202  ROSE_ASSERT(this != NULL);
337203  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337204  }
337205 
337206  void apply(SgIfdefDirectiveStatement *&r, const SgName &n, bool traverse)
337207  {
337208  ROSE_ASSERT(this != NULL);
337209  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337210  }
337211 
337212  void apply(SgIfndefDirectiveStatement *&r, const SgName &n, bool traverse)
337213  {
337214  ROSE_ASSERT(this != NULL);
337215  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337216  }
337217 
337218  void apply(SgIfDirectiveStatement *&r, const SgName &n, bool traverse)
337219  {
337220  ROSE_ASSERT(this != NULL);
337221  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337222  }
337223 
337224  void apply(SgDeadIfDirectiveStatement *&r, const SgName &n, bool traverse)
337225  {
337226  ROSE_ASSERT(this != NULL);
337227  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337228  }
337229 
337230  void apply(SgElseDirectiveStatement *&r, const SgName &n, bool traverse)
337231  {
337232  ROSE_ASSERT(this != NULL);
337233  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337234  }
337235 
337236  void apply(SgElseifDirectiveStatement *&r, const SgName &n, bool traverse)
337237  {
337238  ROSE_ASSERT(this != NULL);
337239  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337240  }
337241 
337242  void apply(SgEndifDirectiveStatement *&r, const SgName &n, bool traverse)
337243  {
337244  ROSE_ASSERT(this != NULL);
337245  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337246  }
337247 
337248  void apply(SgLineDirectiveStatement *&r, const SgName &n, bool traverse)
337249  {
337250  ROSE_ASSERT(this != NULL);
337251  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337252  }
337253 
337254  void apply(SgWarningDirectiveStatement *&r, const SgName &n, bool traverse)
337255  {
337256  ROSE_ASSERT(this != NULL);
337257  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337258  }
337259 
337260  void apply(SgErrorDirectiveStatement *&r, const SgName &n, bool traverse)
337261  {
337262  ROSE_ASSERT(this != NULL);
337263  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337264  }
337265 
337266  void apply(SgEmptyDirectiveStatement *&r, const SgName &n, bool traverse)
337267  {
337268  ROSE_ASSERT(this != NULL);
337269  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337270  }
337271 
337272  void apply(SgIncludeNextDirectiveStatement *&r, const SgName &n, bool traverse)
337273  {
337274  ROSE_ASSERT(this != NULL);
337275  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337276  }
337277 
337278  void apply(SgIdentDirectiveStatement *&r, const SgName &n, bool traverse)
337279  {
337280  ROSE_ASSERT(this != NULL);
337281  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337282  }
337283 
337284  void apply(SgLinemarkerDirectiveStatement *&r, const SgName &n, bool traverse)
337285  {
337286  ROSE_ASSERT(this != NULL);
337287  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337288  }
337289 
337290  void apply(SgC_PreprocessorDirectiveStatement *&r, const SgName &n, bool traverse)
337291  {
337292  ROSE_ASSERT(this != NULL);
337293  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337294  }
337295 
337296  void apply(SgClinkageStartStatement *&r, const SgName &n, bool traverse)
337297  {
337298  ROSE_ASSERT(this != NULL);
337299  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337300  }
337301 
337302  void apply(SgClinkageEndStatement *&r, const SgName &n, bool traverse)
337303  {
337304  ROSE_ASSERT(this != NULL);
337305  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337306  }
337307 
337308  void apply(SgClinkageDeclarationStatement *&r, const SgName &n, bool traverse)
337309  {
337310  ROSE_ASSERT(this != NULL);
337311  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337312  }
337313 
337314  void apply(SgOmpDeclareSimdStatement *&r, const SgName &n, bool traverse)
337315  {
337316  ROSE_ASSERT(this != NULL);
337317  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337318  }
337319 
337320  void apply(SgOmpBarrierStatement *&r, const SgName &n, bool traverse)
337321  {
337322  ROSE_ASSERT(this != NULL);
337323  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337324  }
337325 
337326  void apply(SgOmpTaskyieldStatement *&r, const SgName &n, bool traverse)
337327  {
337328  ROSE_ASSERT(this != NULL);
337329  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337330  }
337331 
337332  void apply(SgOmpRequiresStatement *&r, const SgName &n, bool traverse)
337333  {
337334  ROSE_ASSERT(this != NULL);
337335  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337336  }
337337 
337338  void apply(SgOmpTaskwaitStatement *&r, const SgName &n, bool traverse)
337339  {
337340  ROSE_ASSERT(this != NULL);
337341  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337342  }
337343 
337344  void apply(SgOmpThreadprivateStatement *&r, const SgName &n, bool traverse)
337345  {
337346  ROSE_ASSERT(this != NULL);
337347  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337348  }
337349 
337350  void apply(SgMicrosoftAttributeDeclaration *&r, const SgName &n, bool traverse)
337351  {
337352  ROSE_ASSERT(this != NULL);
337353  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337354  }
337355 
337356  void apply(SgEmptyDeclaration *&r, const SgName &n, bool traverse)
337357  {
337358  ROSE_ASSERT(this != NULL);
337359  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337360  }
337361 
337362  void apply(SgDeclarationStatement *&r, const SgName &n, bool traverse)
337363  {
337364  ROSE_ASSERT(this != NULL);
337365  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337366  }
337367 
337368  void apply(SgUpirBaseStatement *&r, const SgName &n, bool traverse)
337369  {
337370  ROSE_ASSERT(this != NULL);
337371  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337372  }
337373 
337374  void apply(SgStatement *&r, const SgName &n, bool traverse)
337375  {
337376  ROSE_ASSERT(this != NULL);
337377  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337378  }
337379 
337380  void apply(SgVarRefExp *&r, const SgName &n, bool traverse)
337381  {
337382  ROSE_ASSERT(this != NULL);
337383  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337384  }
337385 
337386  void apply(SgNonrealRefExp *&r, const SgName &n, bool traverse)
337387  {
337388  ROSE_ASSERT(this != NULL);
337389  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337390  }
337391 
337392  void apply(SgCompoundLiteralExp *&r, const SgName &n, bool traverse)
337393  {
337394  ROSE_ASSERT(this != NULL);
337395  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337396  }
337397 
337398  void apply(SgLabelRefExp *&r, const SgName &n, bool traverse)
337399  {
337400  ROSE_ASSERT(this != NULL);
337401  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337402  }
337403 
337404  void apply(SgClassNameRefExp *&r, const SgName &n, bool traverse)
337405  {
337406  ROSE_ASSERT(this != NULL);
337407  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337408  }
337409 
337410  void apply(SgFunctionRefExp *&r, const SgName &n, bool traverse)
337411  {
337412  ROSE_ASSERT(this != NULL);
337413  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337414  }
337415 
337416  void apply(SgMemberFunctionRefExp *&r, const SgName &n, bool traverse)
337417  {
337418  ROSE_ASSERT(this != NULL);
337419  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337420  }
337421 
337422  void apply(SgTemplateFunctionRefExp *&r, const SgName &n, bool traverse)
337423  {
337424  ROSE_ASSERT(this != NULL);
337425  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337426  }
337427 
337428  void apply(SgTemplateMemberFunctionRefExp *&r, const SgName &n, bool traverse)
337429  {
337430  ROSE_ASSERT(this != NULL);
337431  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337432  }
337433 
337434  void apply(SgSizeOfOp *&r, const SgName &n, bool traverse)
337435  {
337436  ROSE_ASSERT(this != NULL);
337437  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337438  }
337439 
337440  void apply(SgAlignOfOp *&r, const SgName &n, bool traverse)
337441  {
337442  ROSE_ASSERT(this != NULL);
337443  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337444  }
337445 
337446  void apply(SgNoexceptOp *&r, const SgName &n, bool traverse)
337447  {
337448  ROSE_ASSERT(this != NULL);
337449  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337450  }
337451 
337452  void apply(SgTypeExpression *&r, const SgName &n, bool traverse)
337453  {
337454  ROSE_ASSERT(this != NULL);
337455  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337456  }
337457 
337458  void apply(SgLambdaExp *&r, const SgName &n, bool traverse)
337459  {
337460  ROSE_ASSERT(this != NULL);
337461  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337462  }
337463 
337464  void apply(SgUpcLocalsizeofExpression *&r, const SgName &n, bool traverse)
337465  {
337466  ROSE_ASSERT(this != NULL);
337467  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337468  }
337469 
337470  void apply(SgUpcBlocksizeofExpression *&r, const SgName &n, bool traverse)
337471  {
337472  ROSE_ASSERT(this != NULL);
337473  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337474  }
337475 
337476  void apply(SgUpcElemsizeofExpression *&r, const SgName &n, bool traverse)
337477  {
337478  ROSE_ASSERT(this != NULL);
337479  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337480  }
337481 
337482  void apply(SgVarArgStartOp *&r, const SgName &n, bool traverse)
337483  {
337484  ROSE_ASSERT(this != NULL);
337485  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337486  }
337487 
337488  void apply(SgVarArgStartOneOperandOp *&r, const SgName &n, bool traverse)
337489  {
337490  ROSE_ASSERT(this != NULL);
337491  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337492  }
337493 
337494  void apply(SgVarArgOp *&r, const SgName &n, bool traverse)
337495  {
337496  ROSE_ASSERT(this != NULL);
337497  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337498  }
337499 
337500  void apply(SgVarArgEndOp *&r, const SgName &n, bool traverse)
337501  {
337502  ROSE_ASSERT(this != NULL);
337503  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337504  }
337505 
337506  void apply(SgVarArgCopyOp *&r, const SgName &n, bool traverse)
337507  {
337508  ROSE_ASSERT(this != NULL);
337509  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337510  }
337511 
337512  void apply(SgTypeIdOp *&r, const SgName &n, bool traverse)
337513  {
337514  ROSE_ASSERT(this != NULL);
337515  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337516  }
337517 
337518  void apply(SgConditionalExp *&r, const SgName &n, bool traverse)
337519  {
337520  ROSE_ASSERT(this != NULL);
337521  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337522  }
337523 
337524  void apply(SgNewExp *&r, const SgName &n, bool traverse)
337525  {
337526  ROSE_ASSERT(this != NULL);
337527  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337528  }
337529 
337530  void apply(SgDeleteExp *&r, const SgName &n, bool traverse)
337531  {
337532  ROSE_ASSERT(this != NULL);
337533  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337534  }
337535 
337536  void apply(SgThisExp *&r, const SgName &n, bool traverse)
337537  {
337538  ROSE_ASSERT(this != NULL);
337539  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337540  }
337541 
337542  void apply(SgSuperExp *&r, const SgName &n, bool traverse)
337543  {
337544  ROSE_ASSERT(this != NULL);
337545  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337546  }
337547 
337548  void apply(SgClassExp *&r, const SgName &n, bool traverse)
337549  {
337550  ROSE_ASSERT(this != NULL);
337551  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337552  }
337553 
337554  void apply(SgRefExp *&r, const SgName &n, bool traverse)
337555  {
337556  ROSE_ASSERT(this != NULL);
337557  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337558  }
337559 
337560  void apply(SgAggregateInitializer *&r, const SgName &n, bool traverse)
337561  {
337562  ROSE_ASSERT(this != NULL);
337563  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337564  }
337565 
337566  void apply(SgCompoundInitializer *&r, const SgName &n, bool traverse)
337567  {
337568  ROSE_ASSERT(this != NULL);
337569  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337570  }
337571 
337572  void apply(SgConstructorInitializer *&r, const SgName &n, bool traverse)
337573  {
337574  ROSE_ASSERT(this != NULL);
337575  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337576  }
337577 
337578  void apply(SgAssignInitializer *&r, const SgName &n, bool traverse)
337579  {
337580  ROSE_ASSERT(this != NULL);
337581  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337582  }
337583 
337584  void apply(SgBracedInitializer *&r, const SgName &n, bool traverse)
337585  {
337586  ROSE_ASSERT(this != NULL);
337587  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337588  }
337589 
337590  void apply(SgExpressionRoot *&r, const SgName &n, bool traverse)
337591  {
337592  ROSE_ASSERT(this != NULL);
337593  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337594  }
337595 
337596  void apply(SgMinusOp *&r, const SgName &n, bool traverse)
337597  {
337598  ROSE_ASSERT(this != NULL);
337599  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337600  }
337601 
337602  void apply(SgUnaryAddOp *&r, const SgName &n, bool traverse)
337603  {
337604  ROSE_ASSERT(this != NULL);
337605  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337606  }
337607 
337608  void apply(SgNotOp *&r, const SgName &n, bool traverse)
337609  {
337610  ROSE_ASSERT(this != NULL);
337611  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337612  }
337613 
337614  void apply(SgPointerDerefExp *&r, const SgName &n, bool traverse)
337615  {
337616  ROSE_ASSERT(this != NULL);
337617  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337618  }
337619 
337620  void apply(SgAddressOfOp *&r, const SgName &n, bool traverse)
337621  {
337622  ROSE_ASSERT(this != NULL);
337623  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337624  }
337625 
337626  void apply(SgMinusMinusOp *&r, const SgName &n, bool traverse)
337627  {
337628  ROSE_ASSERT(this != NULL);
337629  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337630  }
337631 
337632  void apply(SgPlusPlusOp *&r, const SgName &n, bool traverse)
337633  {
337634  ROSE_ASSERT(this != NULL);
337635  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337636  }
337637 
337638  void apply(SgBitComplementOp *&r, const SgName &n, bool traverse)
337639  {
337640  ROSE_ASSERT(this != NULL);
337641  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337642  }
337643 
337644  void apply(SgRealPartOp *&r, const SgName &n, bool traverse)
337645  {
337646  ROSE_ASSERT(this != NULL);
337647  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337648  }
337649 
337650  void apply(SgImagPartOp *&r, const SgName &n, bool traverse)
337651  {
337652  ROSE_ASSERT(this != NULL);
337653  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337654  }
337655 
337656  void apply(SgConjugateOp *&r, const SgName &n, bool traverse)
337657  {
337658  ROSE_ASSERT(this != NULL);
337659  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337660  }
337661 
337662  void apply(SgCastExp *&r, const SgName &n, bool traverse)
337663  {
337664  ROSE_ASSERT(this != NULL);
337665  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337666  }
337667 
337668  void apply(SgThrowOp *&r, const SgName &n, bool traverse)
337669  {
337670  ROSE_ASSERT(this != NULL);
337671  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337672  }
337673 
337674  void apply(SgArrowExp *&r, const SgName &n, bool traverse)
337675  {
337676  ROSE_ASSERT(this != NULL);
337677  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337678  }
337679 
337680  void apply(SgDotExp *&r, const SgName &n, bool traverse)
337681  {
337682  ROSE_ASSERT(this != NULL);
337683  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337684  }
337685 
337686  void apply(SgDotStarOp *&r, const SgName &n, bool traverse)
337687  {
337688  ROSE_ASSERT(this != NULL);
337689  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337690  }
337691 
337692  void apply(SgArrowStarOp *&r, const SgName &n, bool traverse)
337693  {
337694  ROSE_ASSERT(this != NULL);
337695  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337696  }
337697 
337698  void apply(SgEqualityOp *&r, const SgName &n, bool traverse)
337699  {
337700  ROSE_ASSERT(this != NULL);
337701  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337702  }
337703 
337704  void apply(SgLessThanOp *&r, const SgName &n, bool traverse)
337705  {
337706  ROSE_ASSERT(this != NULL);
337707  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337708  }
337709 
337710  void apply(SgGreaterThanOp *&r, const SgName &n, bool traverse)
337711  {
337712  ROSE_ASSERT(this != NULL);
337713  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337714  }
337715 
337716  void apply(SgNotEqualOp *&r, const SgName &n, bool traverse)
337717  {
337718  ROSE_ASSERT(this != NULL);
337719  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337720  }
337721 
337722  void apply(SgLessOrEqualOp *&r, const SgName &n, bool traverse)
337723  {
337724  ROSE_ASSERT(this != NULL);
337725  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337726  }
337727 
337728  void apply(SgGreaterOrEqualOp *&r, const SgName &n, bool traverse)
337729  {
337730  ROSE_ASSERT(this != NULL);
337731  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337732  }
337733 
337734  void apply(SgAddOp *&r, const SgName &n, bool traverse)
337735  {
337736  ROSE_ASSERT(this != NULL);
337737  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337738  }
337739 
337740  void apply(SgSubtractOp *&r, const SgName &n, bool traverse)
337741  {
337742  ROSE_ASSERT(this != NULL);
337743  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337744  }
337745 
337746  void apply(SgMultiplyOp *&r, const SgName &n, bool traverse)
337747  {
337748  ROSE_ASSERT(this != NULL);
337749  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337750  }
337751 
337752  void apply(SgDivideOp *&r, const SgName &n, bool traverse)
337753  {
337754  ROSE_ASSERT(this != NULL);
337755  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337756  }
337757 
337758  void apply(SgIntegerDivideOp *&r, const SgName &n, bool traverse)
337759  {
337760  ROSE_ASSERT(this != NULL);
337761  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337762  }
337763 
337764  void apply(SgModOp *&r, const SgName &n, bool traverse)
337765  {
337766  ROSE_ASSERT(this != NULL);
337767  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337768  }
337769 
337770  void apply(SgAndOp *&r, const SgName &n, bool traverse)
337771  {
337772  ROSE_ASSERT(this != NULL);
337773  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337774  }
337775 
337776  void apply(SgOrOp *&r, const SgName &n, bool traverse)
337777  {
337778  ROSE_ASSERT(this != NULL);
337779  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337780  }
337781 
337782  void apply(SgBitXorOp *&r, const SgName &n, bool traverse)
337783  {
337784  ROSE_ASSERT(this != NULL);
337785  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337786  }
337787 
337788  void apply(SgBitAndOp *&r, const SgName &n, bool traverse)
337789  {
337790  ROSE_ASSERT(this != NULL);
337791  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337792  }
337793 
337794  void apply(SgBitOrOp *&r, const SgName &n, bool traverse)
337795  {
337796  ROSE_ASSERT(this != NULL);
337797  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337798  }
337799 
337800  void apply(SgBitEqvOp *&r, const SgName &n, bool traverse)
337801  {
337802  ROSE_ASSERT(this != NULL);
337803  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337804  }
337805 
337806  void apply(SgCommaOpExp *&r, const SgName &n, bool traverse)
337807  {
337808  ROSE_ASSERT(this != NULL);
337809  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337810  }
337811 
337812  void apply(SgLshiftOp *&r, const SgName &n, bool traverse)
337813  {
337814  ROSE_ASSERT(this != NULL);
337815  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337816  }
337817 
337818  void apply(SgRshiftOp *&r, const SgName &n, bool traverse)
337819  {
337820  ROSE_ASSERT(this != NULL);
337821  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337822  }
337823 
337824  void apply(SgPntrArrRefExp *&r, const SgName &n, bool traverse)
337825  {
337826  ROSE_ASSERT(this != NULL);
337827  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337828  }
337829 
337830  void apply(SgScopeOp *&r, const SgName &n, bool traverse)
337831  {
337832  ROSE_ASSERT(this != NULL);
337833  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337834  }
337835 
337836  void apply(SgAssignOp *&r, const SgName &n, bool traverse)
337837  {
337838  ROSE_ASSERT(this != NULL);
337839  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337840  }
337841 
337842  void apply(SgPlusAssignOp *&r, const SgName &n, bool traverse)
337843  {
337844  ROSE_ASSERT(this != NULL);
337845  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337846  }
337847 
337848  void apply(SgMinusAssignOp *&r, const SgName &n, bool traverse)
337849  {
337850  ROSE_ASSERT(this != NULL);
337851  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337852  }
337853 
337854  void apply(SgAndAssignOp *&r, const SgName &n, bool traverse)
337855  {
337856  ROSE_ASSERT(this != NULL);
337857  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337858  }
337859 
337860  void apply(SgIorAssignOp *&r, const SgName &n, bool traverse)
337861  {
337862  ROSE_ASSERT(this != NULL);
337863  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337864  }
337865 
337866  void apply(SgMultAssignOp *&r, const SgName &n, bool traverse)
337867  {
337868  ROSE_ASSERT(this != NULL);
337869  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337870  }
337871 
337872  void apply(SgDivAssignOp *&r, const SgName &n, bool traverse)
337873  {
337874  ROSE_ASSERT(this != NULL);
337875  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337876  }
337877 
337878  void apply(SgModAssignOp *&r, const SgName &n, bool traverse)
337879  {
337880  ROSE_ASSERT(this != NULL);
337881  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337882  }
337883 
337884  void apply(SgXorAssignOp *&r, const SgName &n, bool traverse)
337885  {
337886  ROSE_ASSERT(this != NULL);
337887  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337888  }
337889 
337890  void apply(SgLshiftAssignOp *&r, const SgName &n, bool traverse)
337891  {
337892  ROSE_ASSERT(this != NULL);
337893  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337894  }
337895 
337896  void apply(SgRshiftAssignOp *&r, const SgName &n, bool traverse)
337897  {
337898  ROSE_ASSERT(this != NULL);
337899  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337900  }
337901 
337902  void apply(SgIntegerDivideAssignOp *&r, const SgName &n, bool traverse)
337903  {
337904  ROSE_ASSERT(this != NULL);
337905  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337906  }
337907 
337908  void apply(SgExponentiationAssignOp *&r, const SgName &n, bool traverse)
337909  {
337910  ROSE_ASSERT(this != NULL);
337911  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337912  }
337913 
337914  void apply(SgConcatenationOp *&r, const SgName &n, bool traverse)
337915  {
337916  ROSE_ASSERT(this != NULL);
337917  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337918  }
337919 
337920  void apply(SgNaryComparisonOp *&r, const SgName &n, bool traverse)
337921  {
337922  ROSE_ASSERT(this != NULL);
337923  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337924  }
337925 
337926  void apply(SgNaryBooleanOp *&r, const SgName &n, bool traverse)
337927  {
337928  ROSE_ASSERT(this != NULL);
337929  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337930  }
337931 
337932  void apply(SgBoolValExp *&r, const SgName &n, bool traverse)
337933  {
337934  ROSE_ASSERT(this != NULL);
337935  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337936  }
337937 
337938  void apply(SgStringVal *&r, const SgName &n, bool traverse)
337939  {
337940  ROSE_ASSERT(this != NULL);
337941  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337942  }
337943 
337944  void apply(SgShortVal *&r, const SgName &n, bool traverse)
337945  {
337946  ROSE_ASSERT(this != NULL);
337947  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337948  }
337949 
337950  void apply(SgCharVal *&r, const SgName &n, bool traverse)
337951  {
337952  ROSE_ASSERT(this != NULL);
337953  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337954  }
337955 
337956  void apply(SgUnsignedCharVal *&r, const SgName &n, bool traverse)
337957  {
337958  ROSE_ASSERT(this != NULL);
337959  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337960  }
337961 
337962  void apply(SgWcharVal *&r, const SgName &n, bool traverse)
337963  {
337964  ROSE_ASSERT(this != NULL);
337965  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337966  }
337967 
337968  void apply(SgChar16Val *&r, const SgName &n, bool traverse)
337969  {
337970  ROSE_ASSERT(this != NULL);
337971  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337972  }
337973 
337974  void apply(SgChar32Val *&r, const SgName &n, bool traverse)
337975  {
337976  ROSE_ASSERT(this != NULL);
337977  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337978  }
337979 
337980  void apply(SgUnsignedShortVal *&r, const SgName &n, bool traverse)
337981  {
337982  ROSE_ASSERT(this != NULL);
337983  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337984  }
337985 
337986  void apply(SgIntVal *&r, const SgName &n, bool traverse)
337987  {
337988  ROSE_ASSERT(this != NULL);
337989  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337990  }
337991 
337992  void apply(SgEnumVal *&r, const SgName &n, bool traverse)
337993  {
337994  ROSE_ASSERT(this != NULL);
337995  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
337996  }
337997 
337998  void apply(SgUnsignedIntVal *&r, const SgName &n, bool traverse)
337999  {
338000  ROSE_ASSERT(this != NULL);
338001  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338002  }
338003 
338004  void apply(SgLongIntVal *&r, const SgName &n, bool traverse)
338005  {
338006  ROSE_ASSERT(this != NULL);
338007  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338008  }
338009 
338010  void apply(SgLongLongIntVal *&r, const SgName &n, bool traverse)
338011  {
338012  ROSE_ASSERT(this != NULL);
338013  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338014  }
338015 
338016  void apply(SgUnsignedLongLongIntVal *&r, const SgName &n, bool traverse)
338017  {
338018  ROSE_ASSERT(this != NULL);
338019  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338020  }
338021 
338022  void apply(SgUnsignedLongVal *&r, const SgName &n, bool traverse)
338023  {
338024  ROSE_ASSERT(this != NULL);
338025  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338026  }
338027 
338028  void apply(SgFloatVal *&r, const SgName &n, bool traverse)
338029  {
338030  ROSE_ASSERT(this != NULL);
338031  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338032  }
338033 
338034  void apply(SgDoubleVal *&r, const SgName &n, bool traverse)
338035  {
338036  ROSE_ASSERT(this != NULL);
338037  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338038  }
338039 
338040  void apply(SgLongDoubleVal *&r, const SgName &n, bool traverse)
338041  {
338042  ROSE_ASSERT(this != NULL);
338043  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338044  }
338045 
338046  void apply(SgFloat80Val *&r, const SgName &n, bool traverse)
338047  {
338048  ROSE_ASSERT(this != NULL);
338049  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338050  }
338051 
338052  void apply(SgFloat128Val *&r, const SgName &n, bool traverse)
338053  {
338054  ROSE_ASSERT(this != NULL);
338055  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338056  }
338057 
338058  void apply(SgNullptrValExp *&r, const SgName &n, bool traverse)
338059  {
338060  ROSE_ASSERT(this != NULL);
338061  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338062  }
338063 
338064  void apply(SgVoidVal *&r, const SgName &n, bool traverse)
338065  {
338066  ROSE_ASSERT(this != NULL);
338067  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338068  }
338069 
338070  void apply(SgFunctionParameterRefExp *&r, const SgName &n, bool traverse)
338071  {
338072  ROSE_ASSERT(this != NULL);
338073  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338074  }
338075 
338076  void apply(SgTemplateParameterVal *&r, const SgName &n, bool traverse)
338077  {
338078  ROSE_ASSERT(this != NULL);
338079  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338080  }
338081 
338082  void apply(SgUpcThreads *&r, const SgName &n, bool traverse)
338083  {
338084  ROSE_ASSERT(this != NULL);
338085  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338086  }
338087 
338088  void apply(SgUpcMythread *&r, const SgName &n, bool traverse)
338089  {
338090  ROSE_ASSERT(this != NULL);
338091  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338092  }
338093 
338094  void apply(SgComplexVal *&r, const SgName &n, bool traverse)
338095  {
338096  ROSE_ASSERT(this != NULL);
338097  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338098  }
338099 
338100  void apply(SgNullExpression *&r, const SgName &n, bool traverse)
338101  {
338102  ROSE_ASSERT(this != NULL);
338103  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338104  }
338105 
338106  void apply(SgVariantExpression *&r, const SgName &n, bool traverse)
338107  {
338108  ROSE_ASSERT(this != NULL);
338109  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338110  }
338111 
338112  void apply(SgStatementExpression *&r, const SgName &n, bool traverse)
338113  {
338114  ROSE_ASSERT(this != NULL);
338115  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338116  }
338117 
338118  void apply(SgAsmOp *&r, const SgName &n, bool traverse)
338119  {
338120  ROSE_ASSERT(this != NULL);
338121  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338122  }
338123 
338124  void apply(SgCudaKernelExecConfig *&r, const SgName &n, bool traverse)
338125  {
338126  ROSE_ASSERT(this != NULL);
338127  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338128  }
338129 
338130  void apply(SgCudaKernelCallExp *&r, const SgName &n, bool traverse)
338131  {
338132  ROSE_ASSERT(this != NULL);
338133  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338134  }
338135 
338136  void apply(SgLambdaRefExp *&r, const SgName &n, bool traverse)
338137  {
338138  ROSE_ASSERT(this != NULL);
338139  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338140  }
338141 
338142  void apply(SgTupleExp *&r, const SgName &n, bool traverse)
338143  {
338144  ROSE_ASSERT(this != NULL);
338145  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338146  }
338147 
338148  void apply(SgListExp *&r, const SgName &n, bool traverse)
338149  {
338150  ROSE_ASSERT(this != NULL);
338151  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338152  }
338153 
338154  void apply(SgDictionaryExp *&r, const SgName &n, bool traverse)
338155  {
338156  ROSE_ASSERT(this != NULL);
338157  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338158  }
338159 
338160  void apply(SgKeyDatumPair *&r, const SgName &n, bool traverse)
338161  {
338162  ROSE_ASSERT(this != NULL);
338163  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338164  }
338165 
338166  void apply(SgComprehension *&r, const SgName &n, bool traverse)
338167  {
338168  ROSE_ASSERT(this != NULL);
338169  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338170  }
338171 
338172  void apply(SgListComprehension *&r, const SgName &n, bool traverse)
338173  {
338174  ROSE_ASSERT(this != NULL);
338175  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338176  }
338177 
338178  void apply(SgSetComprehension *&r, const SgName &n, bool traverse)
338179  {
338180  ROSE_ASSERT(this != NULL);
338181  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338182  }
338183 
338184  void apply(SgDictionaryComprehension *&r, const SgName &n, bool traverse)
338185  {
338186  ROSE_ASSERT(this != NULL);
338187  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338188  }
338189 
338190  void apply(SgMembershipOp *&r, const SgName &n, bool traverse)
338191  {
338192  ROSE_ASSERT(this != NULL);
338193  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338194  }
338195 
338196  void apply(SgNonMembershipOp *&r, const SgName &n, bool traverse)
338197  {
338198  ROSE_ASSERT(this != NULL);
338199  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338200  }
338201 
338202  void apply(SgIsOp *&r, const SgName &n, bool traverse)
338203  {
338204  ROSE_ASSERT(this != NULL);
338205  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338206  }
338207 
338208  void apply(SgIsNotOp *&r, const SgName &n, bool traverse)
338209  {
338210  ROSE_ASSERT(this != NULL);
338211  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338212  }
338213 
338214  void apply(SgStringConversion *&r, const SgName &n, bool traverse)
338215  {
338216  ROSE_ASSERT(this != NULL);
338217  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338218  }
338219 
338220  void apply(SgYieldExpression *&r, const SgName &n, bool traverse)
338221  {
338222  ROSE_ASSERT(this != NULL);
338223  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338224  }
338225 
338226  void apply(SgFoldExpression *&r, const SgName &n, bool traverse)
338227  {
338228  ROSE_ASSERT(this != NULL);
338229  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338230  }
338231 
338232  void apply(SgChooseExpression *&r, const SgName &n, bool traverse)
338233  {
338234  ROSE_ASSERT(this != NULL);
338235  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338236  }
338237 
338238  void apply(SgAwaitExpression *&r, const SgName &n, bool traverse)
338239  {
338240  ROSE_ASSERT(this != NULL);
338241  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338242  }
338243 
338244  void apply(SgSpaceshipOp *&r, const SgName &n, bool traverse)
338245  {
338246  ROSE_ASSERT(this != NULL);
338247  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338248  }
338249 
338250  void apply(SgSubscriptExpression *&r, const SgName &n, bool traverse)
338251  {
338252  ROSE_ASSERT(this != NULL);
338253  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338254  }
338255 
338256  void apply(SgColonShapeExp *&r, const SgName &n, bool traverse)
338257  {
338258  ROSE_ASSERT(this != NULL);
338259  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338260  }
338261 
338262  void apply(SgAsteriskShapeExp *&r, const SgName &n, bool traverse)
338263  {
338264  ROSE_ASSERT(this != NULL);
338265  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338266  }
338267 
338268  void apply(SgIOItemExpression *&r, const SgName &n, bool traverse)
338269  {
338270  ROSE_ASSERT(this != NULL);
338271  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338272  }
338273 
338274  void apply(SgImpliedDo *&r, const SgName &n, bool traverse)
338275  {
338276  ROSE_ASSERT(this != NULL);
338277  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338278  }
338279 
338280  void apply(SgExponentiationOp *&r, const SgName &n, bool traverse)
338281  {
338282  ROSE_ASSERT(this != NULL);
338283  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338284  }
338285 
338286  void apply(SgUnknownArrayOrFunctionReference *&r, const SgName &n, bool traverse)
338287  {
338288  ROSE_ASSERT(this != NULL);
338289  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338290  }
338291 
338292  void apply(SgActualArgumentExpression *&r, const SgName &n, bool traverse)
338293  {
338294  ROSE_ASSERT(this != NULL);
338295  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338296  }
338297 
338298  void apply(SgUserDefinedBinaryOp *&r, const SgName &n, bool traverse)
338299  {
338300  ROSE_ASSERT(this != NULL);
338301  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338302  }
338303 
338304  void apply(SgPointerAssignOp *&r, const SgName &n, bool traverse)
338305  {
338306  ROSE_ASSERT(this != NULL);
338307  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338308  }
338309 
338310  void apply(SgCAFCoExpression *&r, const SgName &n, bool traverse)
338311  {
338312  ROSE_ASSERT(this != NULL);
338313  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338314  }
338315 
338316  void apply(SgDesignatedInitializer *&r, const SgName &n, bool traverse)
338317  {
338318  ROSE_ASSERT(this != NULL);
338319  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338320  }
338321 
338322  void apply(SgMatrixExp *&r, const SgName &n, bool traverse)
338323  {
338324  ROSE_ASSERT(this != NULL);
338325  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338326  }
338327 
338328  void apply(SgRangeExp *&r, const SgName &n, bool traverse)
338329  {
338330  ROSE_ASSERT(this != NULL);
338331  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338332  }
338333 
338334  void apply(SgMagicColonExp *&r, const SgName &n, bool traverse)
338335  {
338336  ROSE_ASSERT(this != NULL);
338337  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338338  }
338339 
338340  void apply(SgElementwiseMultiplyOp *&r, const SgName &n, bool traverse)
338341  {
338342  ROSE_ASSERT(this != NULL);
338343  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338344  }
338345 
338346  void apply(SgPowerOp *&r, const SgName &n, bool traverse)
338347  {
338348  ROSE_ASSERT(this != NULL);
338349  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338350  }
338351 
338352  void apply(SgElementwisePowerOp *&r, const SgName &n, bool traverse)
338353  {
338354  ROSE_ASSERT(this != NULL);
338355  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338356  }
338357 
338358  void apply(SgElementwiseDivideOp *&r, const SgName &n, bool traverse)
338359  {
338360  ROSE_ASSERT(this != NULL);
338361  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338362  }
338363 
338364  void apply(SgLeftDivideOp *&r, const SgName &n, bool traverse)
338365  {
338366  ROSE_ASSERT(this != NULL);
338367  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338368  }
338369 
338370  void apply(SgElementwiseLeftDivideOp *&r, const SgName &n, bool traverse)
338371  {
338372  ROSE_ASSERT(this != NULL);
338373  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338374  }
338375 
338376  void apply(SgElementwiseAddOp *&r, const SgName &n, bool traverse)
338377  {
338378  ROSE_ASSERT(this != NULL);
338379  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338380  }
338381 
338382  void apply(SgElementwiseSubtractOp *&r, const SgName &n, bool traverse)
338383  {
338384  ROSE_ASSERT(this != NULL);
338385  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338386  }
338387 
338388  void apply(SgMatrixTransposeOp *&r, const SgName &n, bool traverse)
338389  {
338390  ROSE_ASSERT(this != NULL);
338391  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338392  }
338393 
338394  void apply(SgElementwiseOp *&r, const SgName &n, bool traverse)
338395  {
338396  ROSE_ASSERT(this != NULL);
338397  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338398  }
338399 
338400  void apply(SgInitializer *&r, const SgName &n, bool traverse)
338401  {
338402  ROSE_ASSERT(this != NULL);
338403  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338404  }
338405 
338406  void apply(SgSIMDLoad *&r, const SgName &n, bool traverse)
338407  {
338408  ROSE_ASSERT(this != NULL);
338409  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338410  }
338411 
338412  void apply(SgSIMDBroadcast *&r, const SgName &n, bool traverse)
338413  {
338414  ROSE_ASSERT(this != NULL);
338415  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338416  }
338417 
338418  void apply(SgSIMDStore *&r, const SgName &n, bool traverse)
338419  {
338420  ROSE_ASSERT(this != NULL);
338421  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338422  }
338423 
338424  void apply(SgSIMDPartialStore *&r, const SgName &n, bool traverse)
338425  {
338426  ROSE_ASSERT(this != NULL);
338427  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338428  }
338429 
338430  void apply(SgSIMDScalarStore *&r, const SgName &n, bool traverse)
338431  {
338432  ROSE_ASSERT(this != NULL);
338433  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338434  }
338435 
338436  void apply(SgSIMDGather *&r, const SgName &n, bool traverse)
338437  {
338438  ROSE_ASSERT(this != NULL);
338439  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338440  }
338441 
338442  void apply(SgSIMDExplicitGather *&r, const SgName &n, bool traverse)
338443  {
338444  ROSE_ASSERT(this != NULL);
338445  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338446  }
338447 
338448  void apply(SgSIMDScatter *&r, const SgName &n, bool traverse)
338449  {
338450  ROSE_ASSERT(this != NULL);
338451  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338452  }
338453 
338454  void apply(SgSIMDAddOp *&r, const SgName &n, bool traverse)
338455  {
338456  ROSE_ASSERT(this != NULL);
338457  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338458  }
338459 
338460  void apply(SgSIMDSubOp *&r, const SgName &n, bool traverse)
338461  {
338462  ROSE_ASSERT(this != NULL);
338463  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338464  }
338465 
338466  void apply(SgSIMDMulOp *&r, const SgName &n, bool traverse)
338467  {
338468  ROSE_ASSERT(this != NULL);
338469  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338470  }
338471 
338472  void apply(SgSIMDDivOp *&r, const SgName &n, bool traverse)
338473  {
338474  ROSE_ASSERT(this != NULL);
338475  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338476  }
338477 
338478  void apply(SgSIMDFmaOp *&r, const SgName &n, bool traverse)
338479  {
338480  ROSE_ASSERT(this != NULL);
338481  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338482  }
338483 
338484  void apply(SgSIMDBinaryOp *&r, const SgName &n, bool traverse)
338485  {
338486  ROSE_ASSERT(this != NULL);
338487  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338488  }
338489 
338490  void apply(SgUserDefinedUnaryOp *&r, const SgName &n, bool traverse)
338491  {
338492  ROSE_ASSERT(this != NULL);
338493  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338494  }
338495 
338496  void apply(SgPseudoDestructorRefExp *&r, const SgName &n, bool traverse)
338497  {
338498  ROSE_ASSERT(this != NULL);
338499  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338500  }
338501 
338502  void apply(SgUnaryOp *&r, const SgName &n, bool traverse)
338503  {
338504  ROSE_ASSERT(this != NULL);
338505  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338506  }
338507 
338508  void apply(SgCompoundAssignOp *&r, const SgName &n, bool traverse)
338509  {
338510  ROSE_ASSERT(this != NULL);
338511  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338512  }
338513 
338514  void apply(SgBinaryOp *&r, const SgName &n, bool traverse)
338515  {
338516  ROSE_ASSERT(this != NULL);
338517  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338518  }
338519 
338520  void apply(SgNaryOp *&r, const SgName &n, bool traverse)
338521  {
338522  ROSE_ASSERT(this != NULL);
338523  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338524  }
338525 
338526  void apply(SgValueExp *&r, const SgName &n, bool traverse)
338527  {
338528  ROSE_ASSERT(this != NULL);
338529  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338530  }
338531 
338532  void apply(SgExprListExp *&r, const SgName &n, bool traverse)
338533  {
338534  ROSE_ASSERT(this != NULL);
338535  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338536  }
338537 
338538  void apply(SgFunctionCallExp *&r, const SgName &n, bool traverse)
338539  {
338540  ROSE_ASSERT(this != NULL);
338541  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338542  }
338543 
338544  void apply(SgCallExpression *&r, const SgName &n, bool traverse)
338545  {
338546  ROSE_ASSERT(this != NULL);
338547  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338548  }
338549 
338550  void apply(SgTypeTraitBuiltinOperator *&r, const SgName &n, bool traverse)
338551  {
338552  ROSE_ASSERT(this != NULL);
338553  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338554  }
338555 
338556  void apply(SgExpression *&r, const SgName &n, bool traverse)
338557  {
338558  ROSE_ASSERT(this != NULL);
338559  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338560  }
338561 
338562  void apply(SgTemplateVariableSymbol *&r, const SgName &n, bool traverse)
338563  {
338564  ROSE_ASSERT(this != NULL);
338565  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338566  }
338567 
338568  void apply(SgVariableSymbol *&r, const SgName &n, bool traverse)
338569  {
338570  ROSE_ASSERT(this != NULL);
338571  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338572  }
338573 
338574  void apply(SgFunctionTypeSymbol *&r, const SgName &n, bool traverse)
338575  {
338576  ROSE_ASSERT(this != NULL);
338577  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338578  }
338579 
338580  void apply(SgTemplateClassSymbol *&r, const SgName &n, bool traverse)
338581  {
338582  ROSE_ASSERT(this != NULL);
338583  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338584  }
338585 
338586  void apply(SgClassSymbol *&r, const SgName &n, bool traverse)
338587  {
338588  ROSE_ASSERT(this != NULL);
338589  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338590  }
338591 
338592  void apply(SgTemplateSymbol *&r, const SgName &n, bool traverse)
338593  {
338594  ROSE_ASSERT(this != NULL);
338595  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338596  }
338597 
338598  void apply(SgEnumSymbol *&r, const SgName &n, bool traverse)
338599  {
338600  ROSE_ASSERT(this != NULL);
338601  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338602  }
338603 
338604  void apply(SgEnumFieldSymbol *&r, const SgName &n, bool traverse)
338605  {
338606  ROSE_ASSERT(this != NULL);
338607  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338608  }
338609 
338610  void apply(SgTemplateTypedefSymbol *&r, const SgName &n, bool traverse)
338611  {
338612  ROSE_ASSERT(this != NULL);
338613  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338614  }
338615 
338616  void apply(SgTypedefSymbol *&r, const SgName &n, bool traverse)
338617  {
338618  ROSE_ASSERT(this != NULL);
338619  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338620  }
338621 
338622  void apply(SgTemplateFunctionSymbol *&r, const SgName &n, bool traverse)
338623  {
338624  ROSE_ASSERT(this != NULL);
338625  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338626  }
338627 
338628  void apply(SgTemplateMemberFunctionSymbol *&r, const SgName &n, bool traverse)
338629  {
338630  ROSE_ASSERT(this != NULL);
338631  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338632  }
338633 
338634  void apply(SgLabelSymbol *&r, const SgName &n, bool traverse)
338635  {
338636  ROSE_ASSERT(this != NULL);
338637  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338638  }
338639 
338640  void apply(SgDefaultSymbol *&r, const SgName &n, bool traverse)
338641  {
338642  ROSE_ASSERT(this != NULL);
338643  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338644  }
338645 
338646  void apply(SgNamespaceSymbol *&r, const SgName &n, bool traverse)
338647  {
338648  ROSE_ASSERT(this != NULL);
338649  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338650  }
338651 
338652  void apply(SgIntrinsicSymbol *&r, const SgName &n, bool traverse)
338653  {
338654  ROSE_ASSERT(this != NULL);
338655  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338656  }
338657 
338658  void apply(SgModuleSymbol *&r, const SgName &n, bool traverse)
338659  {
338660  ROSE_ASSERT(this != NULL);
338661  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338662  }
338663 
338664  void apply(SgInterfaceSymbol *&r, const SgName &n, bool traverse)
338665  {
338666  ROSE_ASSERT(this != NULL);
338667  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338668  }
338669 
338670  void apply(SgCommonSymbol *&r, const SgName &n, bool traverse)
338671  {
338672  ROSE_ASSERT(this != NULL);
338673  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338674  }
338675 
338676  void apply(SgRenameSymbol *&r, const SgName &n, bool traverse)
338677  {
338678  ROSE_ASSERT(this != NULL);
338679  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338680  }
338681 
338682  void apply(SgMemberFunctionSymbol *&r, const SgName &n, bool traverse)
338683  {
338684  ROSE_ASSERT(this != NULL);
338685  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338686  }
338687 
338688  void apply(SgFunctionSymbol *&r, const SgName &n, bool traverse)
338689  {
338690  ROSE_ASSERT(this != NULL);
338691  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338692  }
338693 
338694  void apply(SgAliasSymbol *&r, const SgName &n, bool traverse)
338695  {
338696  ROSE_ASSERT(this != NULL);
338697  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338698  }
338699 
338700  void apply(SgNonrealSymbol *&r, const SgName &n, bool traverse)
338701  {
338702  ROSE_ASSERT(this != NULL);
338703  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338704  }
338705 
338706  void apply(SgSymbol *&r, const SgName &n, bool traverse)
338707  {
338708  ROSE_ASSERT(this != NULL);
338709  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338710  }
338711 
338712  void apply(SgCommonBlockObject *&r, const SgName &n, bool traverse)
338713  {
338714  ROSE_ASSERT(this != NULL);
338715  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338716  }
338717 
338718  void apply(SgInitializedName *&r, const SgName &n, bool traverse)
338719  {
338720  ROSE_ASSERT(this != NULL);
338721  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338722  }
338723 
338724  void apply(SgLambdaCapture *&r, const SgName &n, bool traverse)
338725  {
338726  ROSE_ASSERT(this != NULL);
338727  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338728  }
338729 
338730  void apply(SgLambdaCaptureList *&r, const SgName &n, bool traverse)
338731  {
338732  ROSE_ASSERT(this != NULL);
338733  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338734  }
338735 
338736  void apply(SgOmpOrderedClause *&r, const SgName &n, bool traverse)
338737  {
338738  ROSE_ASSERT(this != NULL);
338739  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338740  }
338741 
338742  void apply(SgOmpNowaitClause *&r, const SgName &n, bool traverse)
338743  {
338744  ROSE_ASSERT(this != NULL);
338745  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338746  }
338747 
338748  void apply(SgOmpNogroupClause *&r, const SgName &n, bool traverse)
338749  {
338750  ROSE_ASSERT(this != NULL);
338751  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338752  }
338753 
338754  void apply(SgOmpReadClause *&r, const SgName &n, bool traverse)
338755  {
338756  ROSE_ASSERT(this != NULL);
338757  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338758  }
338759 
338760  void apply(SgOmpThreadsClause *&r, const SgName &n, bool traverse)
338761  {
338762  ROSE_ASSERT(this != NULL);
338763  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338764  }
338765 
338766  void apply(SgOmpSimdClause *&r, const SgName &n, bool traverse)
338767  {
338768  ROSE_ASSERT(this != NULL);
338769  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338770  }
338771 
338772  void apply(SgOmpReverseOffloadClause *&r, const SgName &n, bool traverse)
338773  {
338774  ROSE_ASSERT(this != NULL);
338775  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338776  }
338777 
338778  void apply(SgOmpExtImplementationDefinedRequirementClause *&r, const SgName &n, bool traverse)
338779  {
338780  ROSE_ASSERT(this != NULL);
338781  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338782  }
338783 
338784  void apply(SgOmpUnifiedAddressClause *&r, const SgName &n, bool traverse)
338785  {
338786  ROSE_ASSERT(this != NULL);
338787  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338788  }
338789 
338790  void apply(SgOmpUnifiedSharedMemoryClause *&r, const SgName &n, bool traverse)
338791  {
338792  ROSE_ASSERT(this != NULL);
338793  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338794  }
338795 
338796  void apply(SgOmpDynamicAllocatorsClause *&r, const SgName &n, bool traverse)
338797  {
338798  ROSE_ASSERT(this != NULL);
338799  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338800  }
338801 
338802  void apply(SgOmpAtomicDefaultMemOrderClause *&r, const SgName &n, bool traverse)
338803  {
338804  ROSE_ASSERT(this != NULL);
338805  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338806  }
338807 
338808  void apply(SgOmpWriteClause *&r, const SgName &n, bool traverse)
338809  {
338810  ROSE_ASSERT(this != NULL);
338811  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338812  }
338813 
338814  void apply(SgOmpUpdateClause *&r, const SgName &n, bool traverse)
338815  {
338816  ROSE_ASSERT(this != NULL);
338817  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338818  }
338819 
338820  void apply(SgOmpDepobjUpdateClause *&r, const SgName &n, bool traverse)
338821  {
338822  ROSE_ASSERT(this != NULL);
338823  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338824  }
338825 
338826  void apply(SgOmpDestroyClause *&r, const SgName &n, bool traverse)
338827  {
338828  ROSE_ASSERT(this != NULL);
338829  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338830  }
338831 
338832  void apply(SgOmpCaptureClause *&r, const SgName &n, bool traverse)
338833  {
338834  ROSE_ASSERT(this != NULL);
338835  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338836  }
338837 
338838  void apply(SgOmpSeqCstClause *&r, const SgName &n, bool traverse)
338839  {
338840  ROSE_ASSERT(this != NULL);
338841  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338842  }
338843 
338844  void apply(SgOmpAcqRelClause *&r, const SgName &n, bool traverse)
338845  {
338846  ROSE_ASSERT(this != NULL);
338847  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338848  }
338849 
338850  void apply(SgOmpReleaseClause *&r, const SgName &n, bool traverse)
338851  {
338852  ROSE_ASSERT(this != NULL);
338853  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338854  }
338855 
338856  void apply(SgOmpAcquireClause *&r, const SgName &n, bool traverse)
338857  {
338858  ROSE_ASSERT(this != NULL);
338859  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338860  }
338861 
338862  void apply(SgOmpRelaxedClause *&r, const SgName &n, bool traverse)
338863  {
338864  ROSE_ASSERT(this != NULL);
338865  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338866  }
338867 
338868  void apply(SgOmpParallelClause *&r, const SgName &n, bool traverse)
338869  {
338870  ROSE_ASSERT(this != NULL);
338871  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338872  }
338873 
338874  void apply(SgOmpSectionsClause *&r, const SgName &n, bool traverse)
338875  {
338876  ROSE_ASSERT(this != NULL);
338877  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338878  }
338879 
338880  void apply(SgOmpForClause *&r, const SgName &n, bool traverse)
338881  {
338882  ROSE_ASSERT(this != NULL);
338883  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338884  }
338885 
338886  void apply(SgOmpTaskgroupClause *&r, const SgName &n, bool traverse)
338887  {
338888  ROSE_ASSERT(this != NULL);
338889  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338890  }
338891 
338892  void apply(SgOmpBeginClause *&r, const SgName &n, bool traverse)
338893  {
338894  ROSE_ASSERT(this != NULL);
338895  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338896  }
338897 
338898  void apply(SgOmpEndClause *&r, const SgName &n, bool traverse)
338899  {
338900  ROSE_ASSERT(this != NULL);
338901  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338902  }
338903 
338904  void apply(SgOmpUntiedClause *&r, const SgName &n, bool traverse)
338905  {
338906  ROSE_ASSERT(this != NULL);
338907  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338908  }
338909 
338910  void apply(SgOmpMergeableClause *&r, const SgName &n, bool traverse)
338911  {
338912  ROSE_ASSERT(this != NULL);
338913  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338914  }
338915 
338916  void apply(SgOmpDefaultClause *&r, const SgName &n, bool traverse)
338917  {
338918  ROSE_ASSERT(this != NULL);
338919  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338920  }
338921 
338922  void apply(SgOmpAtomicClause *&r, const SgName &n, bool traverse)
338923  {
338924  ROSE_ASSERT(this != NULL);
338925  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338926  }
338927 
338928  void apply(SgOmpProcBindClause *&r, const SgName &n, bool traverse)
338929  {
338930  ROSE_ASSERT(this != NULL);
338931  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338932  }
338933 
338934  void apply(SgOmpOrderClause *&r, const SgName &n, bool traverse)
338935  {
338936  ROSE_ASSERT(this != NULL);
338937  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338938  }
338939 
338940  void apply(SgOmpBindClause *&r, const SgName &n, bool traverse)
338941  {
338942  ROSE_ASSERT(this != NULL);
338943  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338944  }
338945 
338946  void apply(SgOmpInbranchClause *&r, const SgName &n, bool traverse)
338947  {
338948  ROSE_ASSERT(this != NULL);
338949  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338950  }
338951 
338952  void apply(SgOmpNotinbranchClause *&r, const SgName &n, bool traverse)
338953  {
338954  ROSE_ASSERT(this != NULL);
338955  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338956  }
338957 
338958  void apply(SgOmpCollapseClause *&r, const SgName &n, bool traverse)
338959  {
338960  ROSE_ASSERT(this != NULL);
338961  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338962  }
338963 
338964  void apply(SgOmpIfClause *&r, const SgName &n, bool traverse)
338965  {
338966  ROSE_ASSERT(this != NULL);
338967  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338968  }
338969 
338970  void apply(SgOmpFinalClause *&r, const SgName &n, bool traverse)
338971  {
338972  ROSE_ASSERT(this != NULL);
338973  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338974  }
338975 
338976  void apply(SgOmpPriorityClause *&r, const SgName &n, bool traverse)
338977  {
338978  ROSE_ASSERT(this != NULL);
338979  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338980  }
338981 
338982  void apply(SgUpirNumUnitsField *&r, const SgName &n, bool traverse)
338983  {
338984  ROSE_ASSERT(this != NULL);
338985  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338986  }
338987 
338988  void apply(SgOmpNumTeamsClause *&r, const SgName &n, bool traverse)
338989  {
338990  ROSE_ASSERT(this != NULL);
338991  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338992  }
338993 
338994  void apply(SgOmpGrainsizeClause *&r, const SgName &n, bool traverse)
338995  {
338996  ROSE_ASSERT(this != NULL);
338997  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
338998  }
338999 
339000  void apply(SgOmpDetachClause *&r, const SgName &n, bool traverse)
339001  {
339002  ROSE_ASSERT(this != NULL);
339003  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339004  }
339005 
339006  void apply(SgOmpNumTasksClause *&r, const SgName &n, bool traverse)
339007  {
339008  ROSE_ASSERT(this != NULL);
339009  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339010  }
339011 
339012  void apply(SgOmpHintClause *&r, const SgName &n, bool traverse)
339013  {
339014  ROSE_ASSERT(this != NULL);
339015  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339016  }
339017 
339018  void apply(SgOmpThreadLimitClause *&r, const SgName &n, bool traverse)
339019  {
339020  ROSE_ASSERT(this != NULL);
339021  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339022  }
339023 
339024  void apply(SgOmpNontemporalClause *&r, const SgName &n, bool traverse)
339025  {
339026  ROSE_ASSERT(this != NULL);
339027  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339028  }
339029 
339030  void apply(SgOmpInclusiveClause *&r, const SgName &n, bool traverse)
339031  {
339032  ROSE_ASSERT(this != NULL);
339033  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339034  }
339035 
339036  void apply(SgOmpExclusiveClause *&r, const SgName &n, bool traverse)
339037  {
339038  ROSE_ASSERT(this != NULL);
339039  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339040  }
339041 
339042  void apply(SgOmpIsDevicePtrClause *&r, const SgName &n, bool traverse)
339043  {
339044  ROSE_ASSERT(this != NULL);
339045  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339046  }
339047 
339048  void apply(SgOmpUseDevicePtrClause *&r, const SgName &n, bool traverse)
339049  {
339050  ROSE_ASSERT(this != NULL);
339051  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339052  }
339053 
339054  void apply(SgOmpUseDeviceAddrClause *&r, const SgName &n, bool traverse)
339055  {
339056  ROSE_ASSERT(this != NULL);
339057  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339058  }
339059 
339060  void apply(SgOmpDeviceClause *&r, const SgName &n, bool traverse)
339061  {
339062  ROSE_ASSERT(this != NULL);
339063  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339064  }
339065 
339066  void apply(SgOmpSafelenClause *&r, const SgName &n, bool traverse)
339067  {
339068  ROSE_ASSERT(this != NULL);
339069  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339070  }
339071 
339072  void apply(SgOmpSimdlenClause *&r, const SgName &n, bool traverse)
339073  {
339074  ROSE_ASSERT(this != NULL);
339075  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339076  }
339077 
339078  void apply(SgOmpPartialClause *&r, const SgName &n, bool traverse)
339079  {
339080  ROSE_ASSERT(this != NULL);
339081  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339082  }
339083 
339084  void apply(SgOmpFullClause *&r, const SgName &n, bool traverse)
339085  {
339086  ROSE_ASSERT(this != NULL);
339087  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339088  }
339089 
339090  void apply(SgOmpSizesClause *&r, const SgName &n, bool traverse)
339091  {
339092  ROSE_ASSERT(this != NULL);
339093  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339094  }
339095 
339096  void apply(SgUpirBranchField *&r, const SgName &n, bool traverse)
339097  {
339098  ROSE_ASSERT(this != NULL);
339099  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339100  }
339101 
339102  void apply(SgUpirNestedLevelField *&r, const SgName &n, bool traverse)
339103  {
339104  ROSE_ASSERT(this != NULL);
339105  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339106  }
339107 
339108  void apply(SgUpirNestedParentField *&r, const SgName &n, bool traverse)
339109  {
339110  ROSE_ASSERT(this != NULL);
339111  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339112  }
339113 
339114  void apply(SgUpirNestedChildField *&r, const SgName &n, bool traverse)
339115  {
339116  ROSE_ASSERT(this != NULL);
339117  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339118  }
339119 
339120  void apply(SgUpirSyncField *&r, const SgName &n, bool traverse)
339121  {
339122  ROSE_ASSERT(this != NULL);
339123  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339124  }
339125 
339126  void apply(SgUpirDataField *&r, const SgName &n, bool traverse)
339127  {
339128  ROSE_ASSERT(this != NULL);
339129  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339130  }
339131 
339132  void apply(SgUpirTargetField *&r, const SgName &n, bool traverse)
339133  {
339134  ROSE_ASSERT(this != NULL);
339135  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339136  }
339137 
339138  void apply(SgUpirDataItemField *&r, const SgName &n, bool traverse)
339139  {
339140  ROSE_ASSERT(this != NULL);
339141  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339142  }
339143 
339144  void apply(SgOmpExpressionClause *&r, const SgName &n, bool traverse)
339145  {
339146  ROSE_ASSERT(this != NULL);
339147  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339148  }
339149 
339150  void apply(SgOmpCopyprivateClause *&r, const SgName &n, bool traverse)
339151  {
339152  ROSE_ASSERT(this != NULL);
339153  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339154  }
339155 
339156  void apply(SgOmpPrivateClause *&r, const SgName &n, bool traverse)
339157  {
339158  ROSE_ASSERT(this != NULL);
339159  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339160  }
339161 
339162  void apply(SgOmpFirstprivateClause *&r, const SgName &n, bool traverse)
339163  {
339164  ROSE_ASSERT(this != NULL);
339165  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339166  }
339167 
339168  void apply(SgOmpSharedClause *&r, const SgName &n, bool traverse)
339169  {
339170  ROSE_ASSERT(this != NULL);
339171  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339172  }
339173 
339174  void apply(SgOmpCopyinClause *&r, const SgName &n, bool traverse)
339175  {
339176  ROSE_ASSERT(this != NULL);
339177  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339178  }
339179 
339180  void apply(SgOmpLastprivateClause *&r, const SgName &n, bool traverse)
339181  {
339182  ROSE_ASSERT(this != NULL);
339183  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339184  }
339185 
339186  void apply(SgOmpReductionClause *&r, const SgName &n, bool traverse)
339187  {
339188  ROSE_ASSERT(this != NULL);
339189  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339190  }
339191 
339192  void apply(SgOmpInReductionClause *&r, const SgName &n, bool traverse)
339193  {
339194  ROSE_ASSERT(this != NULL);
339195  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339196  }
339197 
339198  void apply(SgOmpTaskReductionClause *&r, const SgName &n, bool traverse)
339199  {
339200  ROSE_ASSERT(this != NULL);
339201  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339202  }
339203 
339204  void apply(SgOmpAllocateClause *&r, const SgName &n, bool traverse)
339205  {
339206  ROSE_ASSERT(this != NULL);
339207  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339208  }
339209 
339210  void apply(SgOmpDependClause *&r, const SgName &n, bool traverse)
339211  {
339212  ROSE_ASSERT(this != NULL);
339213  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339214  }
339215 
339216  void apply(SgOmpToClause *&r, const SgName &n, bool traverse)
339217  {
339218  ROSE_ASSERT(this != NULL);
339219  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339220  }
339221 
339222  void apply(SgOmpUsesAllocatorsClause *&r, const SgName &n, bool traverse)
339223  {
339224  ROSE_ASSERT(this != NULL);
339225  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339226  }
339227 
339228  void apply(SgOmpFromClause *&r, const SgName &n, bool traverse)
339229  {
339230  ROSE_ASSERT(this != NULL);
339231  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339232  }
339233 
339234  void apply(SgOmpAffinityClause *&r, const SgName &n, bool traverse)
339235  {
339236  ROSE_ASSERT(this != NULL);
339237  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339238  }
339239 
339240  void apply(SgOmpMapClause *&r, const SgName &n, bool traverse)
339241  {
339242  ROSE_ASSERT(this != NULL);
339243  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339244  }
339245 
339246  void apply(SgOmpLinearClause *&r, const SgName &n, bool traverse)
339247  {
339248  ROSE_ASSERT(this != NULL);
339249  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339250  }
339251 
339252  void apply(SgOmpUniformClause *&r, const SgName &n, bool traverse)
339253  {
339254  ROSE_ASSERT(this != NULL);
339255  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339256  }
339257 
339258  void apply(SgOmpAlignedClause *&r, const SgName &n, bool traverse)
339259  {
339260  ROSE_ASSERT(this != NULL);
339261  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339262  }
339263 
339264  void apply(SgOmpVariablesClause *&r, const SgName &n, bool traverse)
339265  {
339266  ROSE_ASSERT(this != NULL);
339267  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339268  }
339269 
339270  void apply(SgOmpScheduleClause *&r, const SgName &n, bool traverse)
339271  {
339272  ROSE_ASSERT(this != NULL);
339273  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339274  }
339275 
339276  void apply(SgOmpWhenClause *&r, const SgName &n, bool traverse)
339277  {
339278  ROSE_ASSERT(this != NULL);
339279  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339280  }
339281 
339282  void apply(SgOmpDistScheduleClause *&r, const SgName &n, bool traverse)
339283  {
339284  ROSE_ASSERT(this != NULL);
339285  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339286  }
339287 
339288  void apply(SgOmpDefaultmapClause *&r, const SgName &n, bool traverse)
339289  {
339290  ROSE_ASSERT(this != NULL);
339291  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339292  }
339293 
339294  void apply(SgOmpAllocatorClause *&r, const SgName &n, bool traverse)
339295  {
339296  ROSE_ASSERT(this != NULL);
339297  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339298  }
339299 
339300  void apply(SgOmpUsesAllocatorsDefination *&r, const SgName &n, bool traverse)
339301  {
339302  ROSE_ASSERT(this != NULL);
339303  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339304  }
339305 
339306  void apply(SgOmpClause *&r, const SgName &n, bool traverse)
339307  {
339308  ROSE_ASSERT(this != NULL);
339309  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339310  }
339311 
339312  void apply(SgRenamePair *&r, const SgName &n, bool traverse)
339313  {
339314  ROSE_ASSERT(this != NULL);
339315  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339316  }
339317 
339318  void apply(SgInterfaceBody *&r, const SgName &n, bool traverse)
339319  {
339320  ROSE_ASSERT(this != NULL);
339321  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339322  }
339323 
339324  void apply(SgHeaderFileBody *&r, const SgName &n, bool traverse)
339325  {
339326  ROSE_ASSERT(this != NULL);
339327  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339328  }
339329 
339330  void apply(SgLocatedNodeSupport *&r, const SgName &n, bool traverse)
339331  {
339332  ROSE_ASSERT(this != NULL);
339333  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339334  }
339335 
339336  void apply(SgToken *&r, const SgName &n, bool traverse)
339337  {
339338  ROSE_ASSERT(this != NULL);
339339  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339340  }
339341 
339342  void apply(SgLocatedNode *&r, const SgName &n, bool traverse)
339343  {
339344  ROSE_ASSERT(this != NULL);
339345  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339346  }
339347 
339348  void apply(SgNode *&r, const SgName &n, bool traverse)
339349  {
339350  ROSE_ASSERT(this != NULL);
339351  static_cast<ImplClass *>(this)->genericApply(r, n, traverse);
339352  }
339353 
339354 };
339355 
339356 struct SimpleReferenceToPointerHandler : ReferenceToPointerHandlerImpl<SimpleReferenceToPointerHandler>
339357  {
339358  template <typename NodeSubclass>
339359  void genericApply(NodeSubclass*& r, const SgName& n, bool traverse)
339360  {
339361  SgNode* sgn = r;
339362  (*this)(sgn, n, traverse);
339363 
339364  // DQ (9/7/2016): Make this more specific.
339365  // ROSE_ASSERT (sgn == NULL || dynamic_cast<NodeSubclass*>(sgn));
339366  if (r != NULL)
339367  {
339368  r = dynamic_cast<NodeSubclass*>(sgn);
339369  }
339370  }
339371 
339372  virtual void operator()(SgNode*&, const SgName&, bool) = 0;
339373  };
339374 
339375 #endif // REFERENCETOPOINTERHANDLER_DEFINED
339376 
339377 #endif // endif for ifndef SWIG
339378 
339379 
339380 /* #line 1 "/home/yyan7/compiler/rexompiler/src/ROSETTA/Grammar/Cxx_GlobalDeclarations.macro" */
339381 // Preprocessor definitions
339382 
339383 // #include <string.h>
339384 
339385 // Global Declarations
339386 
339387 // DQ (10/19/2010): Moved the body of this function to src/frontend/SageIII/sage_support/sage_support.cpp.
339388 void preventConstructionOnStack(SgNode* n);
339389 
339390 // JH (11/28/2005): This turns on/off many asserts concerimng the manipulation and remanipulation of the
339391 // data inside the memory pools.
339392 #define FILE_IO_EXTRA_CHECK 1
339393 
339394 /* JH (01/18/2006): To improve the memory check (traversing the memory pools, and checking the data member
339395  pointers to other IR nodes) we have this macro, that manages if a deleted IR node can be returned by the
339396  new operator again.
339397  ATTENTION: For huge applications, this might be set to 0, otherwise, we can run out of space easily ....
339398 */
339399 #define DISABLE_REALLOCATION_OF_DELETED_POINTERS 1
339400 
339401 #define FILE_IO_MEMORY_POOL_CHECK 0
339402 
339403 
SgUpirBaseStatement::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgOmpNogroupClause
Definition: Cxx_Grammar.h:91013
SgPowerOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:264081
SgSIMDLoad::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:267670
SgFunctionSymbol::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgWhereStatement
Definition: Cxx_Grammar.h:186844
SgTemplateFunctionDeclaration
Definition: Cxx_Grammar.h:156666
SgMemberFunctionDeclaration::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgFunctionDeclaration::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgSupport::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgClassDefinition::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgTemplateType
Definition: Cxx_Grammar.h:65255
SgType::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgGraph::e_type_error
@ e_type_error
Definition: Cxx_Grammar.h:33450
SgMemberFunctionDeclaration::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgBaseClass::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgOmpSeqCstClause
Definition: Cxx_Grammar.h:85436
SgExpression::replace_expression
virtual int replace_expression(SgExpression *oldChild, SgExpression *newChild)
This class represents the base class of all the expressions within this grammar.
SgMemberFunctionDeclaration::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgExpression::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgIncidenceDirectedGraph::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgIntegerDivideOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:244801
SgC_PreprocessorDirectiveStatement::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgNode::copy
virtual SgNode * copy(SgCopyHelp &help) const
This function clones the current IR node object recursively or not, depending on the argument.
SgStatement::post_construction_initialization
void post_construction_initialization() override
Final initialization for constructors This function is called at the end of generated constructors to...
SgClassDefinition::get_mangled_qualified_name
SgName get_mangled_qualified_name(int &i)
Returns SgName (a string) representing the mangled name of the current scope.
SgCudaKernelExecConfig
Definition: Cxx_Grammar.h:307314
SgMemberFunctionType::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgNaryOp::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgGraph::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgBinaryOp::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgTypeVoid
Definition: Cxx_Grammar.h:50944
ROSE_VisitorPattern
Definition: Cxx_Grammar.h:332486
SgLocatedNode
This class represents the notion of an expression or statement which has a position within the source...
Definition: Cxx_Grammar.h:74391
SgIncidenceDirectedGraph::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgCommaOpExp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:248417
SgForStatement::p_else_body
SgStatement * p_else_body
Holds the statements in the else body of the loop. Currently, only Python supports for loops with els...
Definition: Cxx_Grammar.h:126499
SgClassSymbol::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgElementwiseOp::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgC_PreprocessorDirectiveStatement::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgValueExp::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgLocatedNodeSupport::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgTemplateTypedefDeclaration
Definition: Cxx_Grammar.h:148453
SgDeclarationStatement::addRegExpAttribute
SgDeclarationStatement * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgUpirFieldStatement::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgExprListExp::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgIncidenceDirectedGraph::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgNamespaceDefinitionStatement::p_namespaceDeclaration
SgNamespaceDeclarationStatement * p_namespaceDeclaration
This is a pointer to the SgNamespaceDeclarationStatement.
Definition: Cxx_Grammar.h:131471
SgAttributeSpecificationStatement::attribute_spec_enum
attribute_spec_enum
Fortran specific classification of attribute statements (each corresponds to a declaration attribute)...
Definition: Cxx_Grammar.h:142484
SgUpirFieldStatement::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgBoolValExp
This class represents a boolean value (expression value).
Definition: Cxx_Grammar.h:275163
SgPartialFunctionType::createType
static SgPartialFunctionType * createType(SgType *type=NULL, SgExpression *optional_fortran_type_kind=NULL)
more sophisticated version for more complex types like SgPartialFunctionType (types whose constructor...
SgUPC_AccessModifier::e_upc_relaxed
@ e_upc_relaxed
Definition: Cxx_Grammar.h:11407
SgPartialFunctionType::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgType::addRegExpAttribute
SgType * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgBaseClass::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgExpression::cfgFindChildIndex
virtual unsigned int cfgFindChildIndex(SgNode *n) override
Find the index of n in this node's CFG children.
SgElementwiseOp::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
stringify::SgOmpClause::omp_allocate_modifier_enum
const char * omp_allocate_modifier_enum(int64_t)
Convert SgOmpClause::omp_allocate_modifier_enum enum constant to a string.
SgFile::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgPointerType::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgOmpCaptureClause
Definition: Cxx_Grammar.h:83720
SgSIMDBinaryOp::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgC_PreprocessorDirectiveStatement::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgSupport::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgGraph::regs
@ regs
Definition: Cxx_Grammar.h:33472
SgValueExp::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgSyncImagesStatement
Definition: Cxx_Grammar.h:226778
SgTemplateInstantiationDecl::p_nameResetFromMangledForm
bool p_nameResetFromMangledForm
This bool value is set to false at construction and later reset to true within post-processing as eac...
Definition: Cxx_Grammar.h:152956
SgUsingDirectiveStatement::p_namespaceDeclaration
SgNamespaceDeclarationStatement * p_namespaceDeclaration
This pointer points to namespace declaration being used.
Definition: Cxx_Grammar.h:151261
SgVariableSymbol::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgEnumSymbol
Definition: Cxx_Grammar.h:326958
SgFortranDo::copy
virtual SgNode * copy(SgCopyHelp &help) const override
Makes a copy (deap of shallow depending on SgCopyHelp).
SgInitializer::post_construction_initialization
void post_construction_initialization() override
Final initialization for constructors This function is called at the end of generated constructors to...
SgClassDeclaration::class_types
class_types
Definition: Cxx_Grammar.h:151332
SgClassDefinition::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgFunctionCallExp::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgOmpTeamsDistributeStatement
Definition: Cxx_Grammar.h:213419
SgIOStatement::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgModifier
This class represents the base class of a number of IR nodes define modifiers within the C++ grammar.
Definition: Cxx_Grammar.h:8141
SgNamedType::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgNaryOp::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgTypeFloat128
Definition: Cxx_Grammar.h:72966
SgVariableDeclaration::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgOmpEndClause
Definition: Cxx_Grammar.h:84578
SgNaryOp::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgClassDeclaration::e_template_parameter
@ e_template_parameter
Definition: Cxx_Grammar.h:151337
SgOmpMapClause
Definition: Cxx_Grammar.h:111837
SgOmpPrivateClause
Definition: Cxx_Grammar.h:105767
SgOmpSimdlenClause
Definition: Cxx_Grammar.h:100126
SgCompoundAssignOp::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgUpirFieldStatement::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgExprListExp::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgFunctionCallExp::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
rose_hash::hash_integer
Hash name support for symbol tables within ROSE.
Definition: Cxx_Grammar.h:5926
SgSymbol::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgBitAndOp
Definition: Cxx_Grammar.h:246671
SgOmpClause::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgConditionalExp::p_true_exp
SgExpression * p_true_exp
This pointer points to a SgExpression object.
Definition: Cxx_Grammar.h:292653
SgOmpThreadLimitClause
Definition: Cxx_Grammar.h:97115
SgPartialFunctionType::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgMemberFunctionDeclaration::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgNode::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *)
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgFunctionSymbol::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
Sg_File_Info::p_file_id
int p_file_id
This is a key that maps integers to file names, it prevents redundent storage of filename strings.
Definition: Cxx_Grammar.h:21067
SgTypeWchar
Definition: Cxx_Grammar.h:51886
SgFortranDo::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgGraphEdge::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgAsmOp::e_reg_legacy
@ e_reg_legacy
Definition: Cxx_Grammar.h:304393
SgLocatedNode::attributeExists
virtual bool attributeExists(std::string s) const override
Tests if attribute of name 's' is present.
SgSymbol::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgUnaryOp::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgStatement::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgVariableDeclaration::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgUpirBaseStatement::post_construction_initialization
void post_construction_initialization() override
Final initialization for constructors This function is called at the end of generated constructors to...
SgClassDefinition::get_declaration
SgClassDeclaration * get_declaration() const
returns the class declaration associated with this class decinition.
SgUnaryOp::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgNotOp
Definition: Cxx_Grammar.h:231509
SgExprListExp::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgOmpExpressionClause::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgType::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgCatchStatementSeq
This class represents the concept of a C++ sequence of catch statements.
Definition: Cxx_Grammar.h:179846
SgBitAttribute::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgMemberFunctionType
Definition: Cxx_Grammar.h:62756
SgSIMDMulOp
Definition: Cxx_Grammar.h:265932
SgOmpScheduleClause
Definition: Cxx_Grammar.h:115874
SgUnaryOp::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgIncidenceDirectedGraph::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
rose_hash_multimap
Hash table support for symbol tables within ROSE.
Definition: Cxx_Grammar.h:17043
SgGraph::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgPointerAssignOp
This class represents a Fortran pointer assignment. It is not some weird compound assignment operator...
Definition: Cxx_Grammar.h:251628
SgUpcWaitStatement
Definition: Cxx_Grammar.h:191515
SgStmtDeclarationStatement
This class is intended to be a wrapper around SgStatements, allowing them to exist in scopes that onl...
Definition: Cxx_Grammar.h:170824
SgSIMDStore
Definition: Cxx_Grammar.h:268177
SgNode::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgLocatedNodeSupport::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgInitializer::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgCaseOptionStmt::p_body
SgStatement * p_body
This pointer points to a SgBasicBlock object.
Definition: Cxx_Grammar.h:175090
SgClassSymbol::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgIncidenceDirectedGraph::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgCompoundAssignOp::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgInitializer::addRegExpAttribute
SgInitializer * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgCallExpression::addRegExpAttribute
SgCallExpression * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
ROSE_VisitorPatternDefaultBase
Definition: Cxx_Grammar.h:333172
SgOmpVariablesClause::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgOmpTaskloopStatement
Definition: Cxx_Grammar.h:200331
SgSIMDScalarStore::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:269466
SgBaseClass::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgDataStatementGroup
Definition: Cxx_Grammar.h:41478
SgUnaryOp::p_operand_i
SgExpression * p_operand_i
This is the operand associated with the unary operator.
Definition: Cxx_Grammar.h:230108
SgVariableDeclaration::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgPointerType::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgClassSymbol::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgConstructorInitializer::p_declaration
SgMemberFunctionDeclaration * p_declaration
This points to the associated member function declaration (a constructor).
Definition: Cxx_Grammar.h:296694
SgUpirNestedChildField
Definition: Cxx_Grammar.h:119450
SgScopeOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:250224
SgInitializer::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgUpirBranchField
Definition: Cxx_Grammar.h:118139
SgClassDeclaration::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgFunctionModifier::opencl_work_group_size_t
Definition: Cxx_Grammar.h:10725
SgCallExpression::p_expression_type
SgType * p_expression_type
This is the type of the return value of the function.
Definition: Cxx_Grammar.h:288258
SgType::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgImageControlStatement::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgStatement::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgNode::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgTemplateClassDeclaration::e_union
@ e_union
Definition: Cxx_Grammar.h:152004
SgTypedefDeclaration::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgTypedefDeclaration::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgVarArgStartOp
Definition: Cxx_Grammar.h:298243
SgCompoundAssignOp::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgTemplateTypedefSymbol
Definition: Cxx_Grammar.h:328317
SgOmpExpressionClause::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgLineDirectiveStatement
Definition: Cxx_Grammar.h:165929
SgLocatedNode::addRegExpAttribute
SgLocatedNode * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgTypeString
This class represents a string type used for SgStringVal IR node.
Definition: Cxx_Grammar.h:56596
SgLocatedNode::updateAttribute
virtual void updateAttribute(std::string s, AstAttribute *a) override
Replace existing attribute of name 's' with new AstAttribute.
SgDeclarationStatement::p_nameOnly
bool p_nameOnly
I think this is somewhat redundant with the purpose of specifying a forward declaration....
Definition: Cxx_Grammar.h:137475
SgInitializedName::e_register_r11
@ e_register_r11
Definition: Cxx_Grammar.h:76901
SgOmpDynamicAllocatorsClause
Definition: Cxx_Grammar.h:88868
SgSIMDBinaryOp::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgCaseOptionStmt::p_key_range_end
SgExpression * p_key_range_end
This pointer points to the last constant in the range when a gnu range case label is used.
Definition: Cxx_Grammar.h:175094
SgTypedefDeclaration::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgMemberFunctionDeclaration::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgCompoundAssignOp::post_construction_initialization
void post_construction_initialization() override
Final initialization for constructors This function is called at the end of generated constructors to...
SgClassDecl_attr
Definition: Cxx_Grammar.h:19890
SgCallExpression::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgLeftDivideOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:264524
SgUpirFieldBodyStatement::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgValueExp::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgOmpClause
Definition: Cxx_Grammar.h:79404
SgMemberFunctionType::mfunc_specifier_enum
mfunc_specifier_enum
Enum for const and volatile function modifiers.
Definition: Cxx_Grammar.h:62796
SgNameGroup
Definition: Cxx_Grammar.h:39677
SgFunctionType::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgPointerType::get_mangled
virtual SgName get_mangled(void) const override
Mangled name support for unparser support.
SgIfndefDirectiveStatement
Definition: Cxx_Grammar.h:163313
SgClassDeclaration::e_class
@ e_class
Definition: Cxx_Grammar.h:151334
SgDivideOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:244352
SgWcharVal
Definition: Cxx_Grammar.h:277535
SgFunctionCallExp::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgOmpExpressionClause::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgSIMDAddOp
Definition: Cxx_Grammar.h:265034
SgScopeStatement::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgVarArgOp
Definition: Cxx_Grammar.h:298722
SgFunctionDefinition::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgTemplateParameter::template_parameter_enum
template_parameter_enum
Definition: Cxx_Grammar.h:28970
SgBinaryOp::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
stringify::SgOmpClause::upir_target_type_enum
const char * upir_target_type_enum(int64_t)
Convert SgOmpClause::upir_target_type_enum enum constant to a string.
SgOmpExpressionClause::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgElementwiseOp::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgMinusMinusOp
Definition: Cxx_Grammar.h:232882
SgTypedefDeclaration
This class represents the notion of a typedef declaration.
Definition: Cxx_Grammar.h:147816
SgType::getInternalTypes
Rose_STL_Container< SgType * > getInternalTypes() const
Generate a container of types hidden in the input type.
SgModOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:245250
SgUpirFieldBodyStatement::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgStatementExpression
This class represents the GNU extension "statement expression" (thus is non-standard C and C++).
Definition: Cxx_Grammar.h:303843
SgVariableSymbol
This class represents the concept of a variable name within the compiler (a shared container for the ...
Definition: Cxx_Grammar.h:321540
SgAccessModifier::access_modifier_enum
access_modifier_enum
Access Modifiers (only one value can be specified)
Definition: Cxx_Grammar.h:10164
SgUpcBlocksizeofExpression
Definition: Cxx_Grammar.h:290263
SgAsmOp::e_imm_int
@ e_imm_int
Definition: Cxx_Grammar.h:304380
SgFunctionDefinition::copy
virtual SgNode * copy(SgCopyHelp &help) const override
Makes a copy (deap of shallow depending on SgCopyHelp).
SgThrowOp
This class represents the C++ throw expression (handled as a unary operator).
Definition: Cxx_Grammar.h:234820
SgPointerMemberType
Definition: Cxx_Grammar.h:57997
SgClassDefinition::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgNode::get_file_info
virtual Sg_File_Info * get_file_info(void) const
File information containing filename, line number, column number, and if the SgNode is a part of a ne...
Definition: Cxx_Grammar.h:7417
SgElementwiseOp::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgDeclarationStatement::p_definingDeclaration
SgDeclarationStatement * p_definingDeclaration
This pointer is valid only if a defining declaration exists, and stores the defining declaration wher...
Definition: Cxx_Grammar.h:137491
SgLocatedNode::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgOmpCriticalStatement
Definition: Cxx_Grammar.h:216035
SageInterface::fixupReferencesToSymbols
void fixupReferencesToSymbols(const SgScopeStatement *this_scope, SgScopeStatement *copy_scope, SgCopyHelp &help)
All the symbol table references in the copied AST need to be reset after rebuilding the copied scope'...
SgFunctionType::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgBaseClass::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgModifier::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgFortranDo
Definition: Cxx_Grammar.h:132466
SgOmpDeviceClause
Definition: Cxx_Grammar.h:97544
SgType::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgNullifyStatement
Definition: Cxx_Grammar.h:187812
SgOmpMasterTaskloopSimdStatement
Definition: Cxx_Grammar.h:212111
SgNode::cfgInEdges
virtual std::vector< VirtualCFG::CFGEdge > cfgInEdges(unsigned int index=false)
Find the in edges of a CFG node – internal version.
SgTypedefSymbol::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgType::isSgType
ROSE_DLL_API friend SgType * isSgType(SgNode *s)
Casts pointer from base class to derived class.
rose_hash::eqstr_graph_node
Definition: Cxx_Grammar.h:5958
SgUpirFieldBodyStatement::post_construction_initialization
void post_construction_initialization() override
Final initialization for constructors This function is called at the end of generated constructors to...
SgFunctionType::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgDeclarationStatement::p_externBrace
bool p_externBrace
This marks that the declaration appeared with "extern".
Definition: Cxx_Grammar.h:137483
SgExpressionRoot
Definition: Cxx_Grammar.h:230162
SgTemplateFunctionRefExp
Definition: Cxx_Grammar.h:313338
SgFortranDo::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgAllocateStatement
Definition: Cxx_Grammar.h:190125
SgOmpTeamsLoopStatement
Definition: Cxx_Grammar.h:215163
SgMemberFunctionDeclaration::p_CtorInitializerList
SgCtorInitializerList * p_CtorInitializerList
This is the constructor preinitialization list (used only for the constructor definitions).
Definition: Cxx_Grammar.h:157632
SgImageControlStatement::addRegExpAttribute
SgImageControlStatement * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgNamedType::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgRenameSymbol
Definition: Cxx_Grammar.h:324691
SgClassDeclaration::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgLocatedNode::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgOmpDepobjUpdateClause
Definition: Cxx_Grammar.h:82854
SgStatementFunctionStatement
Definition: Cxx_Grammar.h:149434
SgAttribute::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgFunctionSymbol::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgExpression::get_type
virtual SgType * get_type() const
unparsing support for pragmas
SgNaryOp::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgLambdaRefExp
This class represents a lambda expression.
Definition: Cxx_Grammar.h:307795
SgCommaOpExp
Definition: Cxx_Grammar.h:248018
SgMultAssignOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:255151
SgFunctionDeclaration::post_construction_initialization
void post_construction_initialization() override
Final initialization for constructors This function is called at the end of generated constructors to...
SgTypedefDeclaration::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgStatement::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgClinkageEndStatement
Definition: Cxx_Grammar.h:140935
SgAsmStmt::p_operands
SgExpressionPtrList p_operands
List of expressions.
Definition: Cxx_Grammar.h:142410
SgElseifDirectiveStatement
Definition: Cxx_Grammar.h:165057
SgNaryOp::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgNaryOp::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgOmpDetachClause
Definition: Cxx_Grammar.h:99268
SgElementwiseOp::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
RTIMemberData
Access to C++ Run Time Information (RTI)
Definition: Cxx_Grammar.h:6451
SgUnaryOp::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgType::SgTypedefType
friend class SgTypedefType
provide access to private data
Definition: Cxx_Grammar.h:43989
SgAsmOp::e_reg_a
@ e_reg_a
Definition: Cxx_Grammar.h:304387
SgExprListExp::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgFunctionSymbol::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgClassNameRefExp
This class represents the concept of a C++ expression built from a class name.
Definition: Cxx_Grammar.h:273213
SgTypeIdOp
Definition: Cxx_Grammar.h:291680
SgCloseStatement
Definition: Cxx_Grammar.h:183483
SgVariableDeclaration::post_construction_initialization
void post_construction_initialization() override
Final initialization for constructors This function is called at the end of generated constructors to...
SgNamedType::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgLongDoubleVal
This class represents the notion of an value (expression value).
Definition: Cxx_Grammar.h:282701
SgBaseClass::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgElementwiseOp::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgIsNotOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:260533
SgTypedefDeclaration::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgValueExp::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgLocatedNodeSupport::addRegExpAttribute
SgLocatedNodeSupport * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgLocatedNodeSupport::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgType::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgClassDeclaration::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgUpirBaseStatement::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgFortranDo::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgVariableSymbol::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgTypeDouble
Definition: Cxx_Grammar.h:52828
SgFile::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgNamespaceDeclarationStatement
This class represents the concept of a C++ namespace declaration.
Definition: Cxx_Grammar.h:145393
SgMemberFunctionSymbol::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgUpirFieldStatement::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgOmpExpressionClause::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgSupport::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgPartialFunctionModifierType
Definition: Cxx_Grammar.h:63784
SgModifier::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgUpirFieldBodyStatement::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgFunctionType
This class represents a type for all functions.
Definition: Cxx_Grammar.h:62210
SgMemberFunctionType::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgMultiplyOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:243903
SgElementwiseOp::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgBinaryOp::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgFunctionDefinition::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgOmpSectionStatement
Definition: Cxx_Grammar.h:195077
SgStatement::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgMemberFunctionDeclaration::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgClassSymbol::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgBaseClass
Definition: Cxx_Grammar.h:27083
SgFloatVal
This class represents the notion of an value (expression value).
Definition: Cxx_Grammar.h:281771
SgStatement::replace_child
virtual bool replace_child(SgStatement *target, SgStatement *newStmt, bool extractListFromBasicBlock=false)
Private supporting function for low level SageIII rewrite interface.
SgOmpClause::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
stringify::SgOmpClause::omp_atomic_clause_enum
const char * omp_atomic_clause_enum(int64_t)
Convert SgOmpClause::omp_atomic_clause_enum enum constant to a string.
SgRefExp
This class represents the "&" operator (applied to any lvalue).
Definition: Cxx_Grammar.h:294251
SgAndOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:245707
SgDefaultOptionStmt::p_body
SgStatement * p_body
This pointer points to SgBasicBlock holding the statements executed for the default case of a switch ...
Definition: Cxx_Grammar.h:176101
SgLocatedNode::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgNaryOp::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgCaseOptionStmt
This class represents the concept of a C and C++ case option (used within a switch statement).
Definition: Cxx_Grammar.h:174649
SgBaseClass::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgOmpDependClause
Definition: Cxx_Grammar.h:114046
Visitor_R::_result
R _result
Result of a visit method.
Definition: Cxx_Grammar.h:333860
SgCompoundAssignOp::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgFunctionCallExp::addRegExpAttribute
SgFunctionCallExp * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgSIMDBinaryOp::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgValueExp::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgAsteriskShapeExp
Definition: Cxx_Grammar.h:302428
SgIOStatement::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgPrintStatement
Definition: Cxx_Grammar.h:181327
SgUnaryOp::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgOmpClause::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgModifier::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgBaseClass::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgC_PreprocessorDirectiveStatement::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgAsmOp::e_general
@ e_general
Definition: Cxx_Grammar.h:304363
ROSEAttributesList
Definition: rose_attributes_list.h:495
SgScopeStatement::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgChar32Val
Definition: Cxx_Grammar.h:285969
SgUpirBaseStatement::addRegExpAttribute
SgUpirBaseStatement * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgLocatedNodeSupport::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgUnaryOp::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgFile::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgScopeStatement::get_qualified_name
virtual SgName get_qualified_name() const
Returns SgName (a string) representing the name of the current scope.
SgExpression::p_need_paren
bool p_need_paren
This boolean value marks the current expression as requiring parenthises.
Definition: Cxx_Grammar.h:229596
SgSIMDBinaryOp::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgAsmOp::e_imm_signed8
@ e_imm_signed8
Definition: Cxx_Grammar.h:304407
SgType::SgReferenceType
friend class SgReferenceType
provide access to private data
Definition: Cxx_Grammar.h:43986
SgPointerType::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgExponentiationOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:251121
SgSpaceshipOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:259168
SgFile::e_error_language
@ e_error_language
Definition: Cxx_Grammar.h:21208
SgBidirectionalGraph::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgOmpClause::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgUpirFieldBodyStatement::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgSIMDBinaryOp::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgTemplateClassDeclaration::e_struct
@ e_struct
Definition: Cxx_Grammar.h:152003
SgIncidenceDirectedGraph::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgUpirDataItemField
Definition: Cxx_Grammar.h:121270
SgNode::get_childIndex
virtual size_t get_childIndex(SgNode *child)
index-based access to traversal successors by child node
SgThrowOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:235230
SgOmpTeamsStatement
Definition: Cxx_Grammar.h:196843
SgConstructorInitializer::p_need_name
bool p_need_name
This bool value controls the output of the class name.
Definition: Cxx_Grammar.h:296706
SgIfStmt
This class represents the concept of an "if" construct.
Definition: Cxx_Grammar.h:125431
SgNaryBooleanOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:311916
SgUpirFieldStatement::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgGraph::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgUpirFieldBodyStatement::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgNode::cfgFindNextChildIndex
virtual unsigned int cfgFindNextChildIndex(SgNode *n)
Find the index just after n in this node's CFG children.
SgStatementExpression::p_statement
SgStatement * p_statement
This a pointer to the SgStatement (usually a SgBasicBlock).
Definition: Cxx_Grammar.h:304260
SgAlignOfOp
Definition: Cxx_Grammar.h:314364
SgNaryOp::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgOmpVariablesClause::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgIncidenceDirectedGraph::addRegExpAttribute
SgIncidenceDirectedGraph * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgValueExp::addRegExpAttribute
SgValueExp * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgPartialFunctionType::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgExecStatement
This class represents the concept of the dynamic execution of a string, file, or code object....
Definition: Cxx_Grammar.h:225373
stringify::ROSE_Fortran_Operators
const char * ROSE_Fortran_Operators(int64_t)
Convert ROSE_Fortran_Operators enum constant to a string.
SgPointerType::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgNotEqualOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:241646
SgMemberFunctionSymbol
Definition: Cxx_Grammar.h:323344
SgDotStarOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:239371
SgElementwiseOp::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgClinkageDeclarationStatement::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgWriteStatement
Definition: Cxx_Grammar.h:182357
SgGraph::BoostEdgeType
std::pair< int, int > BoostEdgeType
Simple edge type used to input data to Boost algorithms.
Definition: Cxx_Grammar.h:33504
SgFunctionModifier
Definition: Cxx_Grammar.h:10648
SgClassDeclaration::cfgInEdges
virtual std::vector< VirtualCFG::CFGEdge > cfgInEdges(unsigned int index) override
Find the in edges of a CFG node – internal version.
SgAttribute::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgEnumVal
Definition: Cxx_Grammar.h:278933
SgUpirBaseStatement::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgClassDeclaration::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgRealPartOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:235687
SgLocatedNodeSupport::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgNode::variant
int variant() const ROSE_DEPRECATED_FUNCTION
Older version function returns enum value "NODE".
Definition: Cxx_Grammar.h:7176
SgExprListExp::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgTypeFloat
Definition: Cxx_Grammar.h:52357
SgMemberFunctionType::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgTypeUnsignedInt
Definition: Cxx_Grammar.h:49060
SgSpecialFunctionModifier
Definition: Cxx_Grammar.h:11889
SgFunctionDefinition::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgConstVolatileModifier::e_const_volatile
@ e_const_volatile
Definition: Cxx_Grammar.h:9066
SgPartialFunctionType::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgScopeStatement::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgThrowOp::e_throw_kind
e_throw_kind
Throw IR node can be used in three different ways.
Definition: Cxx_Grammar.h:234833
SgClassDefinition
This class represents the concept of a class definition in C++.
Definition: Cxx_Grammar.h:127505
SgGraphEdge::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgComprehension
Definition: Cxx_Grammar.h:309178
SgForInitStatement::p_init_stmt
SgStatementPtrList p_init_stmt
This pointer points to list of initializers in a SgForStatement.
Definition: Cxx_Grammar.h:179800
SgAttribute::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgOmpTargetTeamsDistributeStatement
Definition: Cxx_Grammar.h:208187
SgProgramHeaderStatement
Definition: Cxx_Grammar.h:159192
SgValueExp::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgVarArgStartOneOperandOp
Definition: Cxx_Grammar.h:300137
SgSymbol::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgUpirLoopStatement
Definition: Cxx_Grammar.h:217787
SgConditionalExp
This class represents the concept of a C trinary conditional expression (e.g. "test ?...
Definition: Cxx_Grammar.h:292209
SgNode::addNewAttribute
virtual void addNewAttribute(std::string s, AstAttribute *a)
Add a new attribute represented by the named string.
SgSIMDExplicitGather
Definition: Cxx_Grammar.h:269973
SgMemberFunctionType::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgBinaryOp::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgSequenceStatement
Definition: Cxx_Grammar.h:223566
SgPartialFunctionType::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgTypedefSymbol::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgPointerType::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgAsmOp::e_imm_long_shift
@ e_imm_long_shift
Definition: Cxx_Grammar.h:304405
SgValueExp::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgLocatedNode::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgSubtractOp
Definition: Cxx_Grammar.h:243063
SgBitAttribute::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgFile::e_C_language
@ e_C_language
Definition: Cxx_Grammar.h:21210
SgDefaultOptionStmt
This class represents the concept of a C or C++ default case within a switch statement.
Definition: Cxx_Grammar.h:175666
SgImageControlStatement::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgUpcThreads
Definition: Cxx_Grammar.h:283647
SgClinkageDeclarationStatement::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgProcedureHeaderStatement::subprogram_kind_enum
subprogram_kind_enum
Classification for different types of Fortran subprograms.
Definition: Cxx_Grammar.h:159702
SgUnparse_Info
Definition: Cxx_Grammar.h:25840
SgFortranDo::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgLocatedNodeSupport::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgAsmOp::e_reg_float_second
@ e_reg_float_second
Definition: Cxx_Grammar.h:304399
SgExprListExp::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgThisExp
This class represents the "this" operator (can be applied to any member data).
Definition: Cxx_Grammar.h:293772
SgNewExp::p_constructor_args
SgConstructorInitializer * p_constructor_args
This is a pointer to the constructor initializer (which holds its constructor arguments) for the new ...
Definition: Cxx_Grammar.h:293195
SgUpirFieldStatement::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgSIMDAddOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:265425
SgGlobal
This class represents the concept of a namespace definition.
Definition: Cxx_Grammar.h:124392
SgUnaryOp::p_expression_type
SgType * p_expression_type
This SgType is the type of the operator (function type).
Definition: Cxx_Grammar.h:230112
SgFunctionType::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgForAllStatement::forall_statement_kind_enum
forall_statement_kind_enum
This class represents forall statements and the Fortran do concurrent construct.
Definition: Cxx_Grammar.h:133448
SgPointerType::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgBidirectionalGraph::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgDoWhileStmt
This class represents the concept of a do-while statement.
Definition: Cxx_Grammar.h:129505
SgUnaryOp::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgTypedefSymbol::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgLocatedNode::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgFile::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgImageControlStatement::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgUpirBaseStatement::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgIncidenceDirectedGraph::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgVariableDeclaration::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgModOp
Definition: Cxx_Grammar.h:244859
SgGraph::dfa_conditional_def
@ dfa_conditional_def
Definition: Cxx_Grammar.h:33478
SgNode::p_shortMangledNameCache
static std::map< std::string, int > p_shortMangledNameCache
STL map used as a cache to shorten generated mangled names. This is mostly a space optimization ofr m...
Definition: Cxx_Grammar.h:7624
SgClassDefinition::addRegExpAttribute
SgClassDefinition * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgUpirBodyStatement::cfgInEdges
virtual std::vector< VirtualCFG::CFGEdge > cfgInEdges(unsigned int index) override
Find the in edges of a CFG node – internal version.
SgGraph::nodest_jmp
@ nodest_jmp
Definition: Cxx_Grammar.h:33467
stringify::SgOmpClause::omp_reduction_modifier_enum
const char * omp_reduction_modifier_enum(int64_t)
Convert SgOmpClause::omp_reduction_modifier_enum enum constant to a string.
SgImageControlStatement::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgFunctionDefinition::p_body
SgBasicBlock * p_body
This pointer is always valid and points to a SgBasicBlock holding all the statements in the function.
Definition: Cxx_Grammar.h:127003
SgOmpPriorityClause
Definition: Cxx_Grammar.h:100984
SgCompoundLiteralExp
Definition: Cxx_Grammar.h:316274
SgExprListExp::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgModifier::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgUpirBodyStatement
Definition: Cxx_Grammar.h:194181
SgOmpParallelMasterTaskloopSimdStatement
Definition: Cxx_Grammar.h:212983
SgOmpClause::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgOmpVariablesClause
Definition: Cxx_Grammar.h:104901
SgOmpWriteClause
Definition: Cxx_Grammar.h:81996
SgColonShapeExp
Definition: Cxx_Grammar.h:301979
SgConstVolatileModifier::e_volatile
@ e_volatile
Definition: Cxx_Grammar.h:9065
SgTypeUnsignedShort
Definition: Cxx_Grammar.h:47616
SgUnparse_Info::unparse_type_num
unparse_type_num
Options available for unparsing the AST to generate source code.
Definition: Cxx_Grammar.h:25887
SgSupport::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgClassDeclaration
This class represents the concept of a class declaration statement. It includes the concept of an ins...
Definition: Cxx_Grammar.h:151319
stringify::SgOmpClause::omp_if_modifier_enum
const char * omp_if_modifier_enum(int64_t)
Convert SgOmpClause::omp_if_modifier_enum enum constant to a string.
SgScopeStatement::append_statement
void append_statement(SgStatement *stmt)
Higher level function to handle statements and declarations is scopes.
SgC_PreprocessorDirectiveStatement::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgGraph::GraphProperties
GraphProperties
Graph Properties.
Definition: Cxx_Grammar.h:33461
SgForStatement
This class represents the concept of a for loop.
Definition: Cxx_Grammar.h:125996
rose_hash::hash_graph_node
Definition: Cxx_Grammar.h:5974
SgBinaryOp::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
stringify::SgOmpClause::upir_data_mapping_enum
const char * upir_data_mapping_enum(int64_t)
Convert SgOmpClause::upir_data_mapping_enum enum constant to a string.
SgNonrealSymbol
Definition: Cxx_Grammar.h:322438
SgFunctionSymbol::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgUpirFieldBodyStatement::addRegExpAttribute
SgUpirFieldBodyStatement * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgUpirFieldStatement::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgCallExpression::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgOmpUnifiedSharedMemoryClause
Definition: Cxx_Grammar.h:88439
SgGraphEdge::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgLocatedNode::get_file_info
virtual Sg_File_Info * get_file_info() const override
Interface function to implement original SAGE interface to SgFile_Info objects.
SgSymbol::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgRewindStatement
Definition: Cxx_Grammar.h:185503
SgMemberFunctionType::post_construction_initialization
void post_construction_initialization() override
Performs final initialization of data members (called by constructors)
SgUnaryOp
This class represents the notion of a unary operator. It is derived from a SgExpression because opera...
Definition: Cxx_Grammar.h:229654
SgElementwiseOp::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgSIMDBinaryOp::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgIOStatement::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgFunctionDeclaration::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgDotExp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:238916
SgBidirectionalGraph::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgBidirectionalGraph::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgTemplateInstantiationFunctionDecl::p_templateName
SgName p_templateName
This is the name of the templated class (in the form "name<args>")
Definition: Cxx_Grammar.h:159130
SgDivAssignOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:255594
stringify::SgOmpClause::omp_allocator_modifier_enum
const char * omp_allocator_modifier_enum(int64_t)
Convert SgOmpClause::omp_allocator_modifier_enum enum constant to a string.
SgVariableDefinition
This class represents the definition (initialization) of a variable.
Definition: Cxx_Grammar.h:139585
SgUpirFieldStatement::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgUpirBodyStatement::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgUPC_AccessModifier::e_unknown
@ e_unknown
Definition: Cxx_Grammar.h:11402
SgBaseClassModifier::baseclass_modifier_enum
baseclass_modifier_enum
Baseclass Modifiers (only one value can be specified)
Definition: Cxx_Grammar.h:13421
SgOmpTeamsDistributeParallelForSimdStatement
Definition: Cxx_Grammar.h:214727
SgMemberFunctionSymbol::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgDeclarationStatement::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgMemberFunctionSymbol::addRegExpAttribute
SgMemberFunctionSymbol * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgCallExpression
This class represents the concept of a generic call expression.
Definition: Cxx_Grammar.h:287819
SgAttribute::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgFile::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgTemplateMemberFunctionRefExp
Definition: Cxx_Grammar.h:313843
SgBitAttribute::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgAsmOp::e_imm_unsigned8
@ e_imm_unsigned8
Definition: Cxx_Grammar.h:304408
SgOmpExpressionClause::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgPointerType::addRegExpAttribute
SgPointerType * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
ROSE_VisitTraversal
Definition: Cxx_Grammar.h:6673
SgLocatedNode::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgClassSymbol::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgNode::setAttribute
virtual void setAttribute(std::string s, AstAttribute *a)
This is a wrapper function with the following semantics: if no attribute of name 's' exists then addN...
AstAttribute
Base class for all IR node attribute values.
Definition: AstAttributeMechanism.h:35
SgTemplateDeclaration::template_type_enum
template_type_enum
Definition: Cxx_Grammar.h:143478
SgCommonBlock
Definition: Cxx_Grammar.h:147363
SgSupport::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
Visitor_R
Definition: Cxx_Grammar.h:333856
SgBinaryOp::post_construction_initialization
void post_construction_initialization() override
Final initialization for constructors This function is called at the end of generated constructors to...
SgOmpOrderClause
Definition: Cxx_Grammar.h:93643
SgExpression::class_name
virtual std::string class_name() const override
returns a string representing the class name
stringify::SgOmpClause::omp_task_reduction_identifier_enum
const char * omp_task_reduction_identifier_enum(int64_t)
Convert SgOmpClause::omp_task_reduction_identifier_enum enum constant to a string.
eqstr
Name equality operator support for symbol tables within ROSE.
Definition: Cxx_Grammar.h:16993
SgGraphEdge::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgFunctionDeclaration::cfgInEdges
virtual std::vector< VirtualCFG::CFGEdge > cfgInEdges(unsigned int index) override
Find the in edges of a CFG node – internal version.
SgTypedefSymbol::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgTemplateInstantiationFunctionDecl::p_templateArguments
SgTemplateArgumentPtrList p_templateArguments
This is a pointer to a list of pointers to SgTemplateArgument objects (used with the SgTemplateDeclar...
Definition: Cxx_Grammar.h:159138
SgElementwiseOp::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgFunctionSymbol::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgOmpLinearClause
Definition: Cxx_Grammar.h:113601
SgMemberFunctionType::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgOmpClause::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgStatement::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgBitAttribute::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
stringify::SgOmpClause::upir_data_allocator_enum
const char * upir_data_allocator_enum(int64_t)
Convert SgOmpClause::upir_data_allocator_enum enum constant to a string.
SgInitializedName::e_register_sp
@ e_register_sp
Definition: Cxx_Grammar.h:76897
SgBidirectionalGraph::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgUnaryOp::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgStructureModifier::e_table_structure_tight
@ e_table_structure_tight
Definition: Cxx_Grammar.h:13919
SgConcatenationOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:251570
SgFunctionSymbol::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgVarRefExp
This class represents the variable refernece in expressions.
Definition: Cxx_Grammar.h:272706
SgUnparse_Info::access_attr_enum
access_attr_enum
Definition: Cxx_Grammar.h:26064
SgOmpDefaultmapClause
Definition: Cxx_Grammar.h:103129
SgIOStatement::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgDeclarationStatement::template_specialization_enum
template_specialization_enum
Template Specialization Support.
Definition: Cxx_Grammar.h:136878
SgAssignInitializer
This class represents the rhs of a variable declaration which includes an optional assignment (e....
Definition: Cxx_Grammar.h:296780
SgDeallocateStatement
Definition: Cxx_Grammar.h:190599
SgNode::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer()
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgExprListExp
This class represents the concept of a C and C++ expression list.
Definition: Cxx_Grammar.h:270871
SgExprListExp::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgShortVal
Definition: Cxx_Grammar.h:276140
SgUPC_AccessModifier
Definition: Cxx_Grammar.h:11379
SgLocatedNode::post_construction_initialization
void post_construction_initialization() override
Final initialization for constructors This function is called at the end of generated constructors to...
SgTypeShort
Definition: Cxx_Grammar.h:46674
SgUnaryOp::Sgop_mode
Sgop_mode
Enum value defines operators as prefix or postfix, as appropriate, e.g. operator++().
Definition: Cxx_Grammar.h:229698
SgNode::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgNewExp::p_builtin_args
SgExpression * p_builtin_args
This is a pointer to the builtin arguments for the new operator (typically the "this" pointer where s...
Definition: Cxx_Grammar.h:293199
Sg_File_Info::p_fileidtoname_map
static std::map< int, std::string > p_fileidtoname_map
This is a static STL map of file id (integers) to file names (strings).
Definition: Cxx_Grammar.h:21103
SgTemplateParameterList
Definition: Cxx_Grammar.h:32974
SgUnsignedCharVal
Definition: Cxx_Grammar.h:277070
SgOmpExclusiveClause
Definition: Cxx_Grammar.h:107483
SgTypedefSymbol::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgBitAttribute::addRegExpAttribute
SgBitAttribute * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgScopeStatement::p_symbol_table
SgSymbolTable * p_symbol_table
This pointer is always valid and stores the symbl table.
Definition: Cxx_Grammar.h:124326
SgOpenclAccessModeModifier::access_mode_modifier_enum
access_mode_modifier_enum
Definition: Cxx_Grammar.h:16007
SgFoldExpression
Definition: Cxx_Grammar.h:319631
SgOmpClause::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgConditionalExp::p_false_exp
SgExpression * p_false_exp
This pointer points to a SgExpression object.
Definition: Cxx_Grammar.h:292657
SgFunctionType::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgBinaryOp::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgBinaryOp::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgClassDeclaration::e_struct
@ e_struct
Definition: Cxx_Grammar.h:151335
SgDeadIfDirectiveStatement
Definition: Cxx_Grammar.h:164185
SgCompoundAssignOp::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgUpirFieldStatement::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgMemberFunctionType::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgOmpMasterStatement
Definition: Cxx_Grammar.h:194641
SgOmpSectionsStatement
Definition: Cxx_Grammar.h:203827
SgOmpTargetTeamsLoopStatement
Definition: Cxx_Grammar.h:209059
SgCompoundAssignOp::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgVariableDeclaration::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgImageControlStatement::post_construction_initialization
void post_construction_initialization() override
Final initialization for constructors This function is called at the end of generated constructors to...
SgMemberFunctionType::get_mangled
virtual SgName get_mangled(void) const override
Mangled name support for unparser support.
SgOmpSizesClause
Definition: Cxx_Grammar.h:101842
SgNamespaceSymbol
This class represents the concept of a namespace name within the compiler.
Definition: Cxx_Grammar.h:329715
SgFile::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgFile::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgElementwiseAddOp
Definition: Cxx_Grammar.h:262810
SgFunctionCallExp::post_construction_initialization
void post_construction_initialization() override
Final initialization for constructors This function is called at the end of generated constructors to...
SgElementwiseOp::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgFunctionType::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgFortranDo::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgAsmOp::e_reg_c
@ e_reg_c
Definition: Cxx_Grammar.h:304389
SgOmpFlushStatement
Definition: Cxx_Grammar.h:220021
SgTemplateFunctionDefinition
Definition: Cxx_Grammar.h:127053
SgOmpDistScheduleClause
Definition: Cxx_Grammar.h:94080
SgLeftDivideOp
Definition: Cxx_Grammar.h:264139
SgTypeCAFTeam
Definition: Cxx_Grammar.h:67699
SgFile
This class represents a source file for a project (which may contian many source files and or directo...
Definition: Cxx_Grammar.h:21163
SgGraphEdgeList
Definition: Cxx_Grammar.h:38801
SgRangeExp
Definition: Cxx_Grammar.h:314877
SgUpirBodyStatement::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgOmpToClause
Definition: Cxx_Grammar.h:114968
SgBitXorOp
Definition: Cxx_Grammar.h:246222
SgAssignedGotoStatement
Definition: Cxx_Grammar.h:189675
SgUpirFieldBodyStatement::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgUpirFieldBodyStatement::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgCallExpression::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgExprListExp::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgFunctionDefinition::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
stringify::SgOmpClause::omp_defaultmap_behavior_enum
const char * omp_defaultmap_behavior_enum(int64_t)
Convert SgOmpClause::omp_defaultmap_behavior_enum enum constant to a string.
SgType::reset_base_type
void reset_base_type(SgType *baseType)
Reset the base type. This function resets the base type. It is an error to call it for types where co...
SgClinkageDeclarationStatement::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgLocatedNodeSupport::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgOmpAffinityClause
Definition: Cxx_Grammar.h:114515
SgUpcNotifyStatement
Definition: Cxx_Grammar.h:191065
SgEndfileStatement
Definition: Cxx_Grammar.h:185950
SgFunctionDeclaration::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgExpression::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgBinaryOp::get_type
SgType * get_type() const override
unparsing support for pragmas
SgGraph
Definition: Cxx_Grammar.h:33431
SgExpression::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgExpression::cfgOutEdges
virtual std::vector< VirtualCFG::CFGEdge > cfgOutEdges(unsigned int index) override
Find the out edges of a CFG node – internal version.
SgNode::roseRTI
virtual RTIReturnType roseRTI()
return C++ Runtime-Time-Information
SgCopyHelp
Supporting class from copy mechanism within ROSE.
Definition: Cxx_Grammar.h:6496
SgEndifDirectiveStatement
Definition: Cxx_Grammar.h:165493
SgGraphEdge::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgIncidenceDirectedGraph::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgMemberFunctionType::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgNonrealType
Definition: Cxx_Grammar.h:60929
SgUpirSimdStatement
Definition: Cxx_Grammar.h:222694
SgExpression::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgDefaultSymbol
Definition: Cxx_Grammar.h:329271
SgFunctionDefinition::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgTypedefDeclaration::addRegExpAttribute
SgTypedefDeclaration * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgOmpVariablesClause::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgNonMembershipOp
Definition: Cxx_Grammar.h:259226
SgNode::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer()
container of names of variables or container indices used used in the traversal to access AST success...
SgStatement::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgTypeChar
Definition: Cxx_Grammar.h:45261
SgPointerType::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgNonrealDecl
Definition: Cxx_Grammar.h:172654
SgBaseClass::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgUnaryOp::cfgIndexForEnd
virtual unsigned int cfgIndexForEnd() const override
Determine the CFG index for the end of this construct.
SgOmpNumTeamsClause
Definition: Cxx_Grammar.h:96686
SgRvalueReferenceType
Definition: Cxx_Grammar.h:69133
stringify::SgOmpClause::omp_dependence_type_enum
const char * omp_dependence_type_enum(int64_t)
Convert SgOmpClause::omp_dependence_type_enum enum constant to a string.
SgBracedInitializer
Definition: Cxx_Grammar.h:297741
SgFunctionCallExp::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgType::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgTypedefSeq::p_typedefs
SgTypePtrList p_typedefs
This holds the STL list of pointers to SgTypes.
Definition: Cxx_Grammar.h:28906
SgProcessControlStatement
Definition: Cxx_Grammar.h:180330
SgDeclarationStatement::get_definingDeclaration
SgDeclarationStatement * get_definingDeclaration() const
This is an access function for the SgDeclarationStatement::p_definingDeclaration data member (see tha...
SgInquireStatement
Definition: Cxx_Grammar.h:183938
SgClassDeclaration::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgConjugateOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:236585
SgNode::get_startOfConstruct
virtual Sg_File_Info * get_startOfConstruct(void) const
New function interface for Sg_File_Info data stores starting location of contruct (typically the open...
Definition: Cxx_Grammar.h:7422
SgFuncDecl_attr
Definition: Cxx_Grammar.h:19444
SgDeleteExp::p_is_array
short p_is_array
This bool value is true only if the delete operator is called on an array (array delete).
Definition: Cxx_Grammar.h:293718
SgFunctionCallExp::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgValueExp::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgElementwiseOp::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgScopeStatement::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgDeclarationStatement::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgScopeStatement::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgOpenclAccessModeModifier
Definition: Cxx_Grammar.h:15993
SgUpcElemsizeofExpression
Definition: Cxx_Grammar.h:290736
SgImageControlStatement::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgUpirBodyStatement::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgExpression::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgUpirBodyStatement::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgFunctionCallExp::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgClinkageDeclarationStatement::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgUpirTaskStatement
Definition: Cxx_Grammar.h:204263
SgSymbol::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgStructureModifier::e_table_structure_parallel
@ e_table_structure_parallel
Definition: Cxx_Grammar.h:13918
SgGraph::cfg
@ cfg
Definition: Cxx_Grammar.h:33452
SgOmpTargetEnterDataStatement
Definition: Cxx_Grammar.h:201211
SgVariableSymbol::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgLocatedNodeSupport
Definition: Cxx_Grammar.h:75965
SgGraph::name
@ name
Definition: Cxx_Grammar.h:33465
SgBitAttribute::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgStatement::cfgFindChildIndex
virtual unsigned int cfgFindChildIndex(SgNode *n) override
Find the index of n in this node's CFG children.
SgBackspaceStatement
Definition: Cxx_Grammar.h:185056
SgFile::e_Fortran_language
@ e_Fortran_language
Definition: Cxx_Grammar.h:21212
SgScopeStatement::addRegExpAttribute
SgScopeStatement * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgNaryOp::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgArrowExp
Definition: Cxx_Grammar.h:238060
SgFortranDo::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgGreaterOrEqualOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:242556
SgStatement::addRegExpAttribute
SgStatement * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgAddressOfOp
Definition: Cxx_Grammar.h:232415
SgExecStatement::p_globals
SgExpression * p_globals
The global execution environment.
Definition: Cxx_Grammar.h:225783
SgOmpSectionsClause
Definition: Cxx_Grammar.h:89726
SgDeclarationStatement::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgBidirectionalGraph::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgExpression::p_lvalue
bool p_lvalue
This boolean variable marks the current expression as a left hand side value (lvalue).
Definition: Cxx_Grammar.h:229600
SgOmpExpressionClause::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgTemplateClassDeclaration
Definition: Cxx_Grammar.h:151985
SgEnumType
Definition: Cxx_Grammar.h:59949
SgAsmOp::e_mem_nonoffset
@ e_mem_nonoffset
Definition: Cxx_Grammar.h:304376
stringify::SgOmpClause::upir_data_distribution_pattern_enum
const char * upir_data_distribution_pattern_enum(int64_t)
Convert SgOmpClause::upir_data_distribution_pattern_enum enum constant to a string.
SgClassSymbol::get_name
SgName get_name() const override
Access function for getting name from declarations or types internally.
SgNamespaceDefinitionStatement::p_declarations
SgDeclarationStatementPtrList p_declarations
This is an STL list of SgDeclarationStatement objects.
Definition: Cxx_Grammar.h:131467
SgOmpReverseOffloadClause
Definition: Cxx_Grammar.h:87581
SgScopeStatement::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgPointerType::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
Sawyer::Container::BitVectorSupport::traverse
void traverse(Processor &processor, Word *words, const BitRange &range, LowToHigh)
Traverses a range of bits.
Definition: BitVectorSupport.h:214
SgVariableDeclaration::p_baseTypeDefiningDeclaration
SgDeclarationStatement * p_baseTypeDefiningDeclaration
This is used to traverse type definitions within variable declarations.
Definition: Cxx_Grammar.h:138983
SgOmpExpressionClause::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgFunctionSymbol::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgType::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgFunctionCallExp::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgMatrixTransposeOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:237494
SgExpression::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgIOStatement::addRegExpAttribute
SgIOStatement * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgOmpClause::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgClassDeclaration::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgSIMDBinaryOp::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgCompoundAssignOp::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgTemplateInstantiationDirectiveStatement::p_declaration
SgDeclarationStatement * p_declaration
This pointer points to associated template instantiation declaration meant to be explicitly instantia...
Definition: Cxx_Grammar.h:144418
SgNamedType::get_name
virtual SgName get_name() const
Gets name of the type (useful for debugging, unparsing, etc.)
SgType::findBaseType
SgType * findBaseType() const
Return the base type of the associated type. The base type is important when dealing with pointers,...
SgType::SgRvalueReferenceType
friend class SgRvalueReferenceType
provide access to private data
Definition: Cxx_Grammar.h:43987
SgType
This class represents the base class for all types.
Definition: Cxx_Grammar.h:43961
SgAttribute::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgTypedefSymbol::get_type
SgType * get_type() const override
This function returns the type associated with the named entity.
SgGreaterThanOp
Definition: Cxx_Grammar.h:240794
SgPragma
Definition: Cxx_Grammar.h:18449
SgIncludeFile
Definition: Cxx_Grammar.h:42371
SgImagPartOp
Definition: Cxx_Grammar.h:235745
AST_FileIO::TO_BE_COPIED_POINTER
SgNode * TO_BE_COPIED_POINTER()
Similar value as above function for reprentation of subsets of the AST.
SgUpirLoopParallelStatement
Definition: Cxx_Grammar.h:221781
SgCompoundAssignOp::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgC_PreprocessorDirectiveStatement::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgFunctionDeclaration::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
stringify::SgOmpClause::omp_defaultmap_category_enum
const char * omp_defaultmap_category_enum(int64_t)
Convert SgOmpClause::omp_defaultmap_category_enum enum constant to a string.
SgFortranDo::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgUnsignedShortVal
Definition: Cxx_Grammar.h:278003
SageInterface::replaceExpressionWithStatement
ROSE_DLL_API void replaceExpressionWithStatement(SgExpression *from, SageInterface::StatementGenerator *to)
Replace a given expression with a list of statements produced by a generator.
SgGraphEdge::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgLocatedNodeSupport::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgFunctionCallExp
This class represents the concept of a C++ function call (which is an expression).
Definition: Cxx_Grammar.h:288304
SgUpirBodyStatement::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgAssignOp
Definition: Cxx_Grammar.h:250282
SgSymbol::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgUpirBaseStatement::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgUpirBaseStatement::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgOmpHintClause
Definition: Cxx_Grammar.h:97981
SgCallExpression::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgClassDeclaration::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgClassDefinition::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgSupport::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgOmpExpressionClause::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgTypedefSymbol::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgFunctionDefinition::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgMemberFunctionType::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgWhileStmt
This class represents the concept of a do-while statement.
Definition: Cxx_Grammar.h:128984
SgAttribute::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgC_PreprocessorDirectiveStatement::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgSyncMemoryStatement
Definition: Cxx_Grammar.h:227233
SgVariableDeclaration::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgSupport
This class represents the base class of a numbr of IR nodes that don't otherwise fit into the existin...
Definition: Cxx_Grammar.h:7690
SgVariableSymbol::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgParameterStatement
Definition: Cxx_Grammar.h:144957
SgLocatedNodeSupport::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgMemberFunctionDeclaration::get_symbol_from_symbol_table
virtual SgSymbol * get_symbol_from_symbol_table() const override
FOR INTERNAL USE Get the associated symbol from the symbol table in the stored scope....
SgSIMDGather
Definition: Cxx_Grammar.h:269524
SgNewExp
This class represents the concept of a C++ call to the new operator.
Definition: Cxx_Grammar.h:292707
SgProject::template_instantiation_enum
template_instantiation_enum
Definition: Cxx_Grammar.h:24074
SgTypeLongDouble
Definition: Cxx_Grammar.h:56125
SgModifier::addRegExpAttribute
SgModifier * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgEnumFieldSymbol
Definition: Cxx_Grammar.h:327411
SgPartialFunctionType::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgBitComplementOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:234185
SgVariableSymbol::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgNamedType::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgLessThanOp
Definition: Cxx_Grammar.h:240339
SgTypedefSymbol::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgFunctionDefinition::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgFunctionSymbol::addRegExpAttribute
SgFunctionSymbol * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgDoWhileStmt::p_body
SgStatement * p_body
This pointer a SgBasicBlock, and holds the statements in the body of the loop.
Definition: Cxx_Grammar.h:129937
SgUnlockStatement
Definition: Cxx_Grammar.h:228590
SgMemberFunctionDeclaration::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgMemberFunctionRefExp
This class represents the member function being called and must be assembled in the SgFunctionCall wi...
Definition: Cxx_Grammar.h:274179
SgBitAttribute::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgLambdaCaptureList
Definition: Cxx_Grammar.h:122303
SgUpirBodyStatement::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgFunctionType::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgElementwisePowerOp
Definition: Cxx_Grammar.h:261481
SgOmpUniformClause
Definition: Cxx_Grammar.h:112735
SgCatchOptionStmt::p_body
SgStatement * p_body
This pointer to a SgBasicBlock used to hold the statements to be executed when the exception is caugh...
Definition: Cxx_Grammar.h:130939
SgScopeStatement::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgClassDefinition::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgUserDefinedBinaryOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:252473
SgVariableSymbol::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgGraphEdge::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgPartialFunctionType::addRegExpAttribute
SgPartialFunctionType * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgModifier::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgStatement::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgFunctionSymbol::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgValueExp::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgAsmOp
Definition: Cxx_Grammar.h:304306
SgSymbol::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgFunctionCallExp::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
token_element
Definition: general_token_defs.h:188
SgSwitchStatement
This class represents the concept of a switch.
Definition: Cxx_Grammar.h:129987
SgOmpCancellationPointStatement
Definition: Cxx_Grammar.h:219149
SgModifier::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgInitializedName::e_memory_register
@ e_memory_register
Definition: Cxx_Grammar.h:76889
SgC_PreprocessorDirectiveStatement::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgIncidenceUndirectedGraph
Definition: Cxx_Grammar.h:35973
Sg_File_Info::p_fileflags
p_fileflags
Enum to hold previously common default values for filename used by the default and static SgNULL_File...
Definition: Cxx_Grammar.h:20639
SgStatement::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgFile::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgVariableDeclaration::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgTypedefDeclaration::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgMemberFunctionType::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgTypedefSymbol::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgOmpParallelClause
Definition: Cxx_Grammar.h:89297
SgDeclarationStatement::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgExprListExp::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgContinueStmt
This class represents the concept of a C or C++ continue statement.
Definition: Cxx_Grammar.h:176607
stringify::ROSE_Fortran_Additional_Info
const char * ROSE_Fortran_Additional_Info(int64_t)
Convert ROSE_Fortran_Additional_Info enum constant to a string.
SgMemberFunctionDeclaration::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgBasicBlock::get_statements
const SgStatementPtrList & get_statements() const
Returns a const STL list by reference.
SgOmpInbranchClause
Definition: Cxx_Grammar.h:102271
SgNode::numberOfAttributes
virtual int numberOfAttributes() const
Returns the number of attributes on this IR node.
SgUpirFieldBodyStatement::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgFunctionDeclaration::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgInitializedName::e_unrecognized_register
@ e_unrecognized_register
Definition: Cxx_Grammar.h:76946
SgClassSymbol::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgGraph::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgFile::addRegExpAttribute
SgFile * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgVariableDeclaration::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgLocatedNodeSupport::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgCompoundAssignOp::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgBitAttribute::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgClassSymbol::get_type
SgType * get_type() const override
This function returns the type associated with the named entity.
SgUpirFieldBodyStatement::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgGraphEdge::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgLshiftOp
Definition: Cxx_Grammar.h:248475
SgBinaryOp::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgPointerType::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgTemplateInstantiationDecl::p_templateArguments
SgTemplateArgumentPtrList p_templateArguments
This is a pointer to a list of pointers to SgTemplateArgument objects (used with the SgTemplateDeclar...
Definition: Cxx_Grammar.h:152952
stringify::SgOmpClause::omp_from_kind_enum
const char * omp_from_kind_enum(int64_t)
Convert SgOmpClause::omp_from_kind_enum enum constant to a string.
SgStatement::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgElementwiseOp::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgNode::class_name
virtual std::string class_name() const
returns a string representing the class name
SgTypedefDeclaration::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgVariableDeclaration::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgCtorInitializerList::p_ctors
SgInitializedNamePtrList p_ctors
This is an STL list of pointers to SgInitializedName objects.
Definition: Cxx_Grammar.h:150326
SgNode::accept
virtual void accept(ROSE_VisitorPattern &visitor)
support for the classic visitor pattern done in GoF
SgGlobal::p_declarations
SgDeclarationStatementPtrList p_declarations
This is an STL list of SgDeclarationStatement objects.
Definition: Cxx_Grammar.h:124858
SgSIMDBinaryOp::addRegExpAttribute
SgSIMDBinaryOp * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgUpirFieldBodyStatement::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgUpirBodyStatement::cfgOutEdges
virtual std::vector< VirtualCFG::CFGEdge > cfgOutEdges(unsigned int index) override
Find the out edges of a CFG node – internal version.
SgLocatedNodeSupport::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgBaseClassModifier
Definition: Cxx_Grammar.h:13401
SgFunctionDeclaration::addRegExpAttribute
SgFunctionDeclaration * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgMemberFunctionType::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgSymbol::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgOmpBeginClause
Definition: Cxx_Grammar.h:84149
SgSupport::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgClassSymbol::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgAddOp
Definition: Cxx_Grammar.h:242614
SgMemberFunctionType::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgMemberFunctionSymbol::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgTypeInt::maxBitLength
static const int maxBitLength
builtin_type variable specific to the SgArrayType object (for maxBitLength=32 bit integers)
Definition: Cxx_Grammar.h:48134
SgTemplateVariableSymbol
Definition: Cxx_Grammar.h:321993
SgSymbol::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgFunctionType::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgTypedefSymbol::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgClassDefinition::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgGraph::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgLockStatement
Definition: Cxx_Grammar.h:228135
SgConcatenationOp
Definition: Cxx_Grammar.h:251179
SgExecStatement::p_locals
SgExpression * p_locals
The local execution environment.
Definition: Cxx_Grammar.h:225787
SgType::mangledNameSupport
SgName mangledNameSupport(SgName &fname, SgUnparse_Info &info)
SgClinkageDeclarationStatement::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgClassSymbol::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgStatement::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgFunctionRefExp
This class represents the function being called and must be assembled in the SgFunctionCall with the ...
Definition: Cxx_Grammar.h:273663
SgBidirectionalGraph::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgValueExp::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgC_PreprocessorDirectiveStatement::post_construction_initialization
void post_construction_initialization() override
Final initialization for constructors This function is called at the end of generated constructors to...
SgAliasSymbol
Definition: Cxx_Grammar.h:332008
SgImageControlStatement::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgIncludeDirectiveStatement
Definition: Cxx_Grammar.h:161545
SgFunctionType::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgSIMDScalarStore
Definition: Cxx_Grammar.h:269075
SgValueExp::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgMemberFunctionType::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgTypeModifier
Definition: Cxx_Grammar.h:14390
SgC_PreprocessorDirectiveStatement::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgStatement::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgOmpNontemporalClause
Definition: Cxx_Grammar.h:106625
SgUpirBodyStatement::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SageInterface::moveStatementsBetweenBlocks
ROSE_DLL_API void moveStatementsBetweenBlocks(SgBasicBlock *sourceBlock, SgBasicBlock *targetBlock)
Move statements in first block to the second block (preserves order and rebuilds the symbol table).
SgAsmOp::e_reg_integer
@ e_reg_integer
Definition: Cxx_Grammar.h:304368
SgClinkageDeclarationStatement::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgTypeTable
Definition: Cxx_Grammar.h:39229
SgElementwiseDivideOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:262752
SgUnaryAddOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:231451
SgSIMDScatter
Definition: Cxx_Grammar.h:270422
SgOmpTargetTeamsDistributeSimdStatement
Definition: Cxx_Grammar.h:208623
SgUpirBaseStatement::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgSIMDBinaryOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:264976
SgElementwiseOp::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgOmpTeamsDistributeSimdStatement
Definition: Cxx_Grammar.h:213855
SgCallExpression::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgExpression::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgUpirFieldStatement::addRegExpAttribute
SgUpirFieldStatement * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgCudaKernelCallExp
Definition: Cxx_Grammar.h:288784
Rose::Yaml::parse
void parse(Node &root, const boost::filesystem::path &)
Parse YAML from file into node.
SgTypeUnsignedLong
Definition: Cxx_Grammar.h:50473
SgNode::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx)
index-based access to traversal successors by index number
SgCompoundAssignOp::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgImageControlStatement::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgVariableSymbol::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgWithStatement
Definition: Cxx_Grammar.h:224008
stringify::SgOmpClause::omp_map_dist_data_enum
const char * omp_map_dist_data_enum(int64_t)
Convert SgOmpClause::omp_map_dist_data_enum enum constant to a string.
SgBitAttribute::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgNaryOp::addRegExpAttribute
SgNaryOp * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgToken::token_element
Definition: Cxx_Grammar.h:75154
SgFormatItem
Definition: Cxx_Grammar.h:40576
SgOmpExpressionClause::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgExpression::cfgIndexForEnd
virtual unsigned int cfgIndexForEnd() const override
Determine the CFG index for the end of this construct.
SgDeleteExp::p_need_global_specifier
short p_need_global_specifier
This delete operator needs to be output with "::".
Definition: Cxx_Grammar.h:293722
SgNode::p_parent
SgNode * p_parent
This is the pointer to the parent IR node in the AST.
Definition: Cxx_Grammar.h:7596
SgBaseClass::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgCallExpression::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgFunctionType::addRegExpAttribute
SgFunctionType * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgLambdaCapture
Definition: Cxx_Grammar.h:121819
SgImageControlStatement::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgMemberFunctionType::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgCallExpression::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgClassDeclaration::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgBasicBlock
This class represents the concept of a block (not a basic block from control flow analysis).
Definition: Cxx_Grammar.h:124904
SgStatement::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgPointerType::createType
static SgPointerType * createType(SgType *type=NULL, SgExpression *optional_fortran_type_kind=NULL)
more sophisticated version for more complex types like SgPointerType (types whose constructors take p...
SgPowerOp
Definition: Cxx_Grammar.h:263696
SgMemberFunctionRefExp::p_virtual_call
int p_virtual_call
This boolean value marks if the function reference is a virtual function.
Definition: Cxx_Grammar.h:274636
SgTypedefSymbol::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgNullptrValExp
Definition: Cxx_Grammar.h:285049
SgOmpVariablesClause::addRegExpAttribute
SgOmpVariablesClause * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgFunctionCallExp::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgCompoundAssignOp::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgVariableDeclaration::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgUpirBaseStatement::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgFortranDo::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgLshiftOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:248866
SageInterface::set_name
ROSE_DLL_API int set_name(SgInitializedName *initializedNameNode, SgName new_name)
set_name of symbol in symbol table.
SgIOStatement::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgAttribute::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgOmpClause::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgDirectedGraphEdge
Definition: Cxx_Grammar.h:37497
SgGraph::interrupt
@ interrupt
Definition: Cxx_Grammar.h:33470
SgInitializer::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgIfDirectiveStatement
Definition: Cxx_Grammar.h:163749
SgFile::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgClassSymbol::addRegExpAttribute
SgClassSymbol * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgScopeStatement::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgDeclarationModifier::p_modifierVector
SgBitVector p_modifierVector
Bit vector permitting specification of flags for friend, typedef, export, throw.
Definition: Cxx_Grammar.h:15915
SgOmpReductionClause
Definition: Cxx_Grammar.h:110494
SgStatement::cfgFindNextChildIndex
virtual unsigned int cfgFindNextChildIndex(SgNode *n) override
Find the index just after n in this node's CFG children.
SgMemberFunctionSymbol::get_type
SgType * get_type() const override
This function returns the type associated with the named entity.
SgClassDefinition::p_inheritances
SgBaseClassPtrList p_inheritances
This the list of base classes specificed in the class definition.
Definition: Cxx_Grammar.h:128002
SgNewExp::p_need_global_specifier
short p_need_global_specifier
This new operator needs to be output with "::".
Definition: Cxx_Grammar.h:293203
SgBidirectionalGraph
Definition: Cxx_Grammar.h:34683
SgElementwiseDivideOp
Definition: Cxx_Grammar.h:262367
SgLocatedNode::get_startOfConstruct
Sg_File_Info * get_startOfConstruct() const override
New function interface for Sg_File_Info data stores starting location of contruct (typically the open...
SgIncidenceDirectedGraph::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgOmpVariablesClause::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgFile::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgIntegerDivideAssignOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:257815
SgClinkageDeclarationStatement::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgUnaryOp::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgNamedType::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgIntKeyedBidirectionalGraph
Definition: Cxx_Grammar.h:35545
stringify::SgOmpClause::omp_reduction_identifier_enum
const char * omp_reduction_identifier_enum(int64_t)
Convert SgOmpClause::omp_reduction_identifier_enum enum constant to a string.
SgAsmOp::e_mod_ignore
@ e_mod_ignore
Definition: Cxx_Grammar.h:304354
SgUnaryOp::get_type
SgType * get_type() const override
unparsing support for pragmas
SgFunctionSymbol::get_name
SgName get_name() const override
Access function for getting name from declarations or types internally.
SgTypedefSymbol::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgType::SgTypeStorageClass
friend class SgTypeStorageClass
friend class declaration to support AST File I/O
Definition: Cxx_Grammar.h:44591
SgTemplateFunctionSymbol
Definition: Cxx_Grammar.h:324246
SgBinaryOp::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgSymbol::get_name
virtual SgName get_name() const =0
Access function for getting name from declarations or types internally.
SgTypeFloat80
Definition: Cxx_Grammar.h:55654
SgNonrealBaseClass
Definition: Cxx_Grammar.h:28055
SgNaryOp::p_operands
SgExpressionPtrList p_operands
This is the list of operands associated with this n-ary operator.
Definition: Cxx_Grammar.h:311474
SgSymbol::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgSupport::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgOmpSingleStatement
Definition: Cxx_Grammar.h:197279
SgUnaryOp::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgStatement::insert_child
virtual bool insert_child(SgStatement *, SgStatement *, bool inFront=true, bool extractListFromBasicBlock=false)
Private supporting function for low level SageIII rewrite interface.
SgSIMDBinaryOp::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgOmpVariablesClause::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgCatchOptionStmt::p_trystmt
SgTryStmt * p_trystmt
This pointer to a SgTryStmt (a declaration) that is associated with this catch option.
Definition: Cxx_Grammar.h:130943
SgModifier::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgSIMDBinaryOp::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgNaryBooleanOp
This class represents the notion of an n-ary boolean operation. This node is intended for use with Py...
Definition: Cxx_Grammar.h:311524
SgFunctionDeclaration::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgUpirFieldBodyStatement::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgIsOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:260078
SgUpirFieldBodyStatement::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgFunctionDeclaration::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgOmpExpressionClause::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgDoubleVal::p_value
double p_value
This value holds the double represented in the source code.
Definition: Cxx_Grammar.h:282651
SgExprListExp::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgBinaryOp::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgGraph::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgUnaryOp::addRegExpAttribute
SgUnaryOp * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgBidirectionalGraph::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgPointerType::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgImplicitStatement::implicit_spec_enum
implicit_spec_enum
Definition: Cxx_Grammar.h:153933
SgBinaryOp::cfgInEdges
virtual std::vector< VirtualCFG::CFGEdge > cfgInEdges(unsigned int index) override
Find the in edges of a CFG node – internal version.
SgDeclarationStatement::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgLocatedNodeSupport::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
rose_hash::hash_integer_pair
Definition: Cxx_Grammar.h:5936
SgGraphEdge::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgBinaryOp::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgUndirectedGraphEdge
Definition: Cxx_Grammar.h:37937
SgClassDefinition::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgOmpExtImplementationDefinedRequirementClause
Definition: Cxx_Grammar.h:104011
SgUserDefinedUnaryOp
Definition: Cxx_Grammar.h:236643
VirtualCFG::CFGNode
A node in the control flow graph.
Definition: virtualCFG.h:70
Sg_File_Info::p_col
int p_col
This is the column number of the location of the source code for this IR node.
Definition: Cxx_Grammar.h:21075
SgSupport::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgGreaterThanOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:241191
SgUpirFieldStatement::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgOmpTargetUpdateStatement
Definition: Cxx_Grammar.h:219585
SgCommonBlockObject
Definition: Cxx_Grammar.h:76400
SgTypedefSymbol::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgFunctionTypeTable
This class represents the function type table (stores all function types so that they can be shared i...
Definition: Cxx_Grammar.h:136400
SgC_PreprocessorDirectiveStatement::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgClassSymbol::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgMemberFunctionDeclaration::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgIntVal
Definition: Cxx_Grammar.h:278468
SgClassDeclaration::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgYieldExpression
Definition: Cxx_Grammar.h:312881
SgSizeOfOp::p_operand_expr
SgExpression * p_operand_expr
This a pointer to the expression given to the sizeof operator.
Definition: Cxx_Grammar.h:289704
SgGraph::visitedCounter
@ visitedCounter
Definition: Cxx_Grammar.h:33480
SgOmpPartialClause
Definition: Cxx_Grammar.h:101413
SgImageControlStatement::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgIncidenceDirectedGraph::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgModAssignOp
Definition: Cxx_Grammar.h:255652
SgImpliedDo
Definition: Cxx_Grammar.h:302883
SgUpirBaseStatement::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgExprListExp::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
TerminalNamesType
Definition: Cxx_Grammar.h:1386
SgMemberFunctionRefExp::p_function_type
SgFunctionType * p_function_type
This is a pointer to the SgFunctionType associated with this member function reference.
Definition: Cxx_Grammar.h:274640
SgFunctionDeclaration::cfgIndexForEnd
virtual unsigned int cfgIndexForEnd() const override
Determine the CFG index for the end of this construct.
SgUpirSpmdStatement
Definition: Cxx_Grammar.h:196407
SgUpirFieldStatement::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgIOStatement::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgOmpCancelStatement
Definition: Cxx_Grammar.h:218713
SgLocatedNode::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgOmpScanStatement
Definition: Cxx_Grammar.h:198151
SgFunctionTypeSymbol
This class represents the concept of a name and a type. It may be renamed in the future to SgTypeSymb...
Definition: Cxx_Grammar.h:325163
SgClinkageDeclarationStatement::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgFunctionDefinition::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgFunctionParameterTypeList
Definition: Cxx_Grammar.h:31632
SgMemberFunctionDeclaration
This class represents the concept of a member function declaration statement.
Definition: Cxx_Grammar.h:157151
SgNullExpression
Definition: Cxx_Grammar.h:300596
SgC_PreprocessorDirectiveStatement::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgOmpDefaultClause
Definition: Cxx_Grammar.h:91442
SgInitializer::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgElementwisePowerOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:261866
SgImageControlStatement::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgSyncAllStatement
Definition: Cxx_Grammar.h:226331
SgShallowCopy
Supporting class for "Shallow" copies of the AST.
Definition: Cxx_Grammar.h:6549
SgDictionaryExp
Definition: Cxx_Grammar.h:308256
SgC_PreprocessorDirectiveStatement::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SageInterface::StatementGenerator
Interface for creating a statement whose computation writes its answer into a given variable.
Definition: sageInterface.h:575
SgTypeMatrix
Definition: Cxx_Grammar.h:71057
SgTemplateInstantiationMemberFunctionDecl::p_templateArguments
SgTemplateArgumentPtrList p_templateArguments
This is a pointer to a list of pointers to SgTemplateArgument objects (used with the SgTemplateDeclar...
Definition: Cxx_Grammar.h:158626
SgOmpWorkshareStatement
Definition: Cxx_Grammar.h:195513
SgStatement::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgScopeStatement::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgGraph::e_property_error
@ e_property_error
Definition: Cxx_Grammar.h:33464
SgFunctionDeclaration
This class represents the concept of a function declaration statement.
Definition: Cxx_Grammar.h:155826
SgBidirectionalGraph::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgAndAssignOp
Definition: Cxx_Grammar.h:253880
SgFunctionDeclaration::replace_child
virtual bool replace_child(SgStatement *, SgStatement *, bool extractListFromBasicBlock=false) override
Private supporting function for low level SageIII rewrite interface.
SgUseStatement
Definition: Cxx_Grammar.h:144468
SgOmpVariablesClause::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgExprListExp::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgTypeNullptr
Definition: Cxx_Grammar.h:69602
SgOmpTileStatement
Definition: Cxx_Grammar.h:217351
SgStatement::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgExpression::isDefinable
virtual bool isDefinable() const
For Fortran. When called from a node of any other language, behavior is undefined (see SageInterface:...
SgEqualityOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:240281
SgDeclType
Definition: Cxx_Grammar.h:70073
SgValueExp::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgGraphEdge::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgAttribute::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgValueExp::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgAsmOp::e_imm_zext32
@ e_imm_zext32
Definition: Cxx_Grammar.h:304413
SgOmpAtomicStatement
Definition: Cxx_Grammar.h:197715
SgBinaryOp::empty
bool empty() const ROSE_DEPRECATED_FUNCTION
Returns true if number of operands is zero, else false.
SgTypeSignedShort
Definition: Cxx_Grammar.h:47145
SgBitAttribute::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgBidirectionalGraph::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgBaseClass::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgIOStatement::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgStatement::cfgInEdges
virtual std::vector< VirtualCFG::CFGEdge > cfgInEdges(unsigned int index) override
Find the in edges of a CFG node – internal version.
SgTypedefDeclaration::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgSymbol::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgAddOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:243005
SgAttribute::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgOmpVariablesClause::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgSIMDBinaryOp
Definition: Cxx_Grammar.h:264582
SgTemplateArgument::template_argument_enum
template_argument_enum
Definition: Cxx_Grammar.h:29498
SgOmpProcBindClause
Definition: Cxx_Grammar.h:92769
SgAsmOp::e_imm_80387
@ e_imm_80387
Definition: Cxx_Grammar.h:304410
SgCompoundAssignOp::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgOmpVariablesClause::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgUnknownFile
Definition: Cxx_Grammar.h:23612
SgType::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgIncidenceDirectedGraph::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgOmpClause::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgOmpExpressionClause::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgNamedType::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgFortranDo::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgNamedType::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgNaryOp::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgOmpTaskwaitStatement
Definition: Cxx_Grammar.h:170372
SgTypeEllipse
Definition: Cxx_Grammar.h:64784
SgUpirFieldBodyStatement::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgOmpExpressionClause::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
ContextVis_R
Strategy pattern applied to visitors: serves as a context to a strategy, which itself is a visitor; d...
Definition: Cxx_Grammar.h:333877
SgNonrealRefExp
Definition: Cxx_Grammar.h:319145
SgImageControlStatement::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgStatement::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgLocatedNode::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgBitEqvOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:247960
SgLessThanOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:240736
SgAssignOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:250678
SgScopeStatement::post_construction_initialization
void post_construction_initialization() override
Final initialization for constructors This function is called at the end of generated constructors to...
SgTypedefSymbol
Definition: Cxx_Grammar.h:327864
SgStatement::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgBaseClass::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgClassSymbol::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
Rose::getSourceDirectory
ROSE_DLL_API std::string getSourceDirectory(std::string fileNameWithPath)
get the current directory
SgOmpOrderedStatement
Definition: Cxx_Grammar.h:199459
SgUnaryOp::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgFunctionParameterRefExp
Definition: Cxx_Grammar.h:317668
SgDataStatementValue
Definition: Cxx_Grammar.h:43021
SgAddressOfOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:232816
SgAttribute::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgVariableSymbol::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgFunctionType::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgTypeModifier::type_modifier_enum
type_modifier_enum
Type Modifiers (multiple values can be specified at one time)
Definition: Cxx_Grammar.h:14414
SgOmpAlignedClause
Definition: Cxx_Grammar.h:113164
SgUpirFieldBodyStatement
Definition: Cxx_Grammar.h:195949
SgType::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgTypeSigned128bitInteger
Definition: Cxx_Grammar.h:54712
SgLocatedNode::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgBinaryOp::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgType::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgSymbol::get_type
virtual SgType * get_type() const =0
This function returns the type associated with the named entity.
SgTypedefDeclaration::get_symbol_from_symbol_table
virtual SgSymbol * get_symbol_from_symbol_table() const override
FOR INTERNAL USE Get the associated symbol from the symbol table in the stored scope....
SgIdentDirectiveStatement
Definition: Cxx_Grammar.h:168109
SgUnaryOp::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgTypedefDeclaration::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgLocatedNode::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgLinkageModifier::linkage_modifier_enum
linkage_modifier_enum
Linkage Modifiers (only one value can be specified)
Definition: Cxx_Grammar.h:12928
SgTypeBool
Definition: Cxx_Grammar.h:57057
SgFunctionDefinition::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgContainsStatement
Definition: Cxx_Grammar.h:160637
SgMemberFunctionDeclaration::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgMemberFunctionDeclaration::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgConstVolatileModifier::e_const
@ e_const
Definition: Cxx_Grammar.h:9064
SgArithmeticIfStatement
Definition: Cxx_Grammar.h:188262
SgSIMDBinaryOp::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgDeclarationStatement::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgOmpTargetParallelLoopStatement
Definition: Cxx_Grammar.h:206879
SgDeclarationStatement::p_decl_attributes
unsigned int p_decl_attributes
This is old and used to be used to hold modifiers.
Definition: Cxx_Grammar.h:137463
SgStringConversion::p_expression
SgExpression * p_expression
The expression to be converted to a string.
Definition: Cxx_Grammar.h:312835
SgScopeStatement::copy
virtual SgNode * copy(SgCopyHelp &help) const override
Makes a copy (deap of shallow depending on SgCopyHelp).
SgFunctionCallExp::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgType::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgBoolValExp::p_value
int p_value
This boolean variable marks the current expression as a left hand side value (lvalue).
Definition: Cxx_Grammar.h:275574
SgOmpReleaseClause
Definition: Cxx_Grammar.h:86294
SgOmpVariablesClause::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgAttribute::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgSpawnStmt
This class is part of the older CC++ concept. It is not a part of C or C++ (this IR node is not used ...
Definition: Cxx_Grammar.h:178013
SgPassStatement
Definition: Cxx_Grammar.h:224466
SgBaseClass::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgIOStatement::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgPlusAssignOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:253379
SgUPC_AccessModifier::e_upc_strict
@ e_upc_strict
Definition: Cxx_Grammar.h:11406
SgOmpVariablesClause::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgEquivalenceStatement
Definition: Cxx_Grammar.h:145904
SgType::isFloatType
bool isFloatType() const
There are several sorts of float types (this queries an arbitrary type).
SgDeleteExp
This class represents the concept of a C++ call to the delete operator.
Definition: Cxx_Grammar.h:293277
SgOmpMetadirectiveStatement
Definition: Cxx_Grammar.h:198587
SgOmpExpressionClause::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgOmpNotinbranchClause
Definition: Cxx_Grammar.h:102700
SgImplicitStatement::e_none_type
@ e_none_type
Definition: Cxx_Grammar.h:153939
SgGraphEdge::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgIncidenceDirectedGraph::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgDirectory
This class represents a directory within a projects file structure of files and directories.
Definition: Cxx_Grammar.h:30143
SgFortranDo::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
AST_FileIO
This Namespace supports the file I/O for the AST.
Definition: Cxx_Grammar.h:6653
SgSupport::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgSyncTeamStatement
Definition: Cxx_Grammar.h:227680
SgClassDefinition::get_qualified_name
virtual SgName get_qualified_name() const override
Returns SgName (a string) representing the name of the current scope.
SgClinkageDeclarationStatement::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgFunctionDefinition::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgAttribute::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgPartialFunctionType::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgClassDefinition::post_construction_initialization
void post_construction_initialization() override
Final initialization for constructors This function is called at the end of generated constructors to...
SgTemplateArgumentList
Definition: Cxx_Grammar.h:32527
SgFunctionCallExp::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgOrOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:246164
SgDeclarationScope
Definition: Cxx_Grammar.h:135417
SgStaticAssertionDeclaration
Definition: Cxx_Grammar.h:171275
rose_graph_node_edge_hash_multimap
Definition: Cxx_Grammar.h:6064
SgNode::p_freepointer
SgNode * p_freepointer
This is the pointer to the chain of previously freed objects.
Definition: Cxx_Grammar.h:7608
SgFunctionDeclaration::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgSIMDPartialStore
Definition: Cxx_Grammar.h:268626
stringify::SgToken::ROSE_C_CXX_Operators
const char * ROSE_C_CXX_Operators(int64_t)
Convert SgToken::ROSE_C_CXX_Operators enum constant to a string.
SgDataStatementValue::e_unknown
@ e_unknown
Definition: Cxx_Grammar.h:43036
SgUpirBodyStatement::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgClassDefinition::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgVariableDefinition::p_bitfield
SgExpression * p_bitfield
This a pointer to a value specifies the bitwidth of the variable (used to control memory layout/paddi...
Definition: Cxx_Grammar.h:140012
SgGotoStatement::p_label
SgLabelStatement * p_label
This pointer points to the SgLabelStatement where control flow will be transfered during execution.
Definition: Cxx_Grammar.h:177959
SgNamedType::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgVariableSymbol::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgGraphEdge::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgFunctionDefinition::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgAsmOp::e_imm_sext32
@ e_imm_sext32
Definition: Cxx_Grammar.h:304412
stringify::SgOmpClause::omp_bind_binding_enum
const char * omp_bind_binding_enum(int64_t)
Convert SgOmpClause::omp_bind_binding_enum enum constant to a string.
SgEmptyDeclaration
Definition: Cxx_Grammar.h:173206
SgTypedefDeclaration::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgOmpExpressionClause::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgUpirFieldBodyStatement::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgNode::removeAttribute
virtual void removeAttribute(std::string s)
Remove attribute of name 's' if present.
SgVariableSymbol::get_name
SgName get_name() const override
Access function for getting name from declarations or types internally.
SgMemberFunctionSymbol::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgTemplateParameter
Definition: Cxx_Grammar.h:28952
SgPartialFunctionType::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgClassDefinition::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgSymbol::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgBitOrOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:247511
SgTypedefSymbol::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgProject::p_unparseHeaderFilesDebug
static int p_unparseHeaderFilesDebug
global concept of verbose level which controls useful output from the unparse headers feature (values...
Definition: Cxx_Grammar.h:24195
SgCompoundAssignOp::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgTypedefSymbol::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgSupport::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgRenamePair
Definition: Cxx_Grammar.h:78950
SgTemplateInstantiationFunctionDecl::p_nameResetFromMangledForm
bool p_nameResetFromMangledForm
This bool value is set to false at construction and later reset to true within post-processing as eac...
Definition: Cxx_Grammar.h:159142
SgTryStmt::p_finally_body
SgStatement * p_finally_body
This pointer points to a SgBasicBlock containing the statements to be executed when an unhandled exce...
Definition: Cxx_Grammar.h:175620
SgElementwiseOp::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
rose_graph_integerpair_edge_hash_multimap
Definition: Cxx_Grammar.h:6301
SgOmpClause::addRegExpAttribute
SgOmpClause * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgType::SgType
SgType()
This is the constructor.
SgPointerDerefExp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:232357
SgImplicitStatement::e_none_external
@ e_none_external
Definition: Cxx_Grammar.h:153938
SgGraph::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgType::dereference
SgType * dereference()
Returns type hidden behind pointer of reference.
SgPartialFunctionType::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgErrorDirectiveStatement
Definition: Cxx_Grammar.h:166801
SgBaseClass::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgFile::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgOmpTaskgroupStatement
Definition: Cxx_Grammar.h:199895
SgScopeStatement::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgUpirSyncStatement
Definition: Cxx_Grammar.h:221345
SgNamedType::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgSymbol::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgOmpVariablesClause::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgIOStatement::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgDeclarationModifier::declaration_modifier_enum
declaration_modifier_enum
Declaration Modifiers (only one value can be specified)
Definition: Cxx_Grammar.h:15283
SgVariableDeclaration::p_variables
SgInitializedNamePtrList p_variables
This is an STL list of pointers to SgInitializedName objects.
Definition: Cxx_Grammar.h:138987
SgIfdefDirectiveStatement
Definition: Cxx_Grammar.h:162877
SgFunctionType::post_construction_initialization
void post_construction_initialization() override
Performs final initialization of data members (called by constructors)
stringify::SgOmpClause::omp_atomic_default_mem_order_kind_enum
const char * omp_atomic_default_mem_order_kind_enum(int64_t)
Convert SgOmpClause::omp_atomic_default_mem_order_kind_enum enum constant to a string.
Sg_File_Info::p_classificationBitField
unsigned int p_classificationBitField
This is mechanism for classification of the IR node.
Definition: Cxx_Grammar.h:21079
SgUpirBaseStatement::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgNode::addRegExpAttribute
SgNode * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgClassDefinition::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgUpirBaseStatement::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgBinaryOp::length
int length() const ROSE_DEPRECATED_FUNCTION
Returns number of operands (virtual function)
SgModifierNodes
This class is not used in ROSE, but is intended to represent a list of SgModifierTypes (similar to th...
Definition: Cxx_Grammar.h:8583
SgPointerAssignOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:252023
SgType::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgStatement::get_symbol_from_symbol_table
virtual SgSymbol * get_symbol_from_symbol_table() const
Get the associated symbol from the symbol table in the stored scope.
SgTypeTraitBuiltinOperator
Definition: Cxx_Grammar.h:315795
SgValueExp::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgDeclarationStatement::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgRefExp::p_type_name
SgType * p_type_name
This a SgType, but I forget its significance.
Definition: Cxx_Grammar.h:294655
SgC_PreprocessorDirectiveStatement::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgElementwiseLeftDivideOp
Definition: Cxx_Grammar.h:261924
SgValueExp::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgExponentiationOp
Definition: Cxx_Grammar.h:250736
SgClassSymbol::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
ROSEAttributesListContainer
Definition: rose_attributes_list.h:624
SgClinkageDeclarationStatement::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgFunctionCallExp::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgFunctionDefinition::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgInitializer::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgDeclarationStatement::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgOmpThreadsClause
Definition: Cxx_Grammar.h:81138
SgUPC_AccessModifier::e_default
@ e_default
Definition: Cxx_Grammar.h:11403
SgOmpDoStatement
Definition: Cxx_Grammar.h:203391
SgFormatStatement
Definition: Cxx_Grammar.h:143002
SgStructureModifier::jovial_structure_modifier_enum
jovial_structure_modifier_enum
Jovial Structure Modifier/Specifier (tight implies serial)
Definition: Cxx_Grammar.h:13914
SgC_PreprocessorDirectiveStatement::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgOmpTargetParallelStatement
Definition: Cxx_Grammar.h:206007
SgModifier::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgNode::getAttribute
virtual AstAttribute * getAttribute(std::string s) const
Returns attribute of name 's'.
SgScopeStatement::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgOmpClause::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgNode::cfgOutEdges
virtual std::vector< VirtualCFG::CFGEdge > cfgOutEdges(unsigned int index=false)
Find the out edges of a CFG node – internal version.
SgTypeChar32
Definition: Cxx_Grammar.h:72495
SgBitAttribute::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgRshiftAssignOp
Definition: Cxx_Grammar.h:256981
stringify::SgOmpClause::upir_data_access_enum
const char * upir_data_access_enum(int64_t)
Convert SgOmpClause::upir_data_access_enum enum constant to a string.
SgTemplateInstantiationDecl::p_templateName
SgName p_templateName
This is the name of the templated class (excludes template arguments)
Definition: Cxx_Grammar.h:152940
SgSupport::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgExprListExp::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgUsingDeclarationStatement
This class represents the concept of a C++ using declaration.
Definition: Cxx_Grammar.h:154406
SgNamedType::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgBitAttribute::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgOmpUnifiedAddressClause
Definition: Cxx_Grammar.h:88010
SgMemberFunctionSymbol::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgElaboratedTypeModifier
Definition: Cxx_Grammar.h:12406
SgSymbol::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgTypeImaginary
This class represents a C99 complex type.
Definition: Cxx_Grammar.h:66746
SgInitializer::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgLocatedNode::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgCallExpression::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgFile::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgUnaryOp::cfgInEdges
virtual std::vector< VirtualCFG::CFGEdge > cfgInEdges(unsigned int index) override
Find the in edges of a CFG node – internal version.
stringify::SgOmpClause::omp_uses_allocators_allocator_enum
const char * omp_uses_allocators_allocator_enum(int64_t)
Convert SgOmpClause::omp_uses_allocators_allocator_enum enum constant to a string.
SgFunctionType::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgUndefDirectiveStatement
Definition: Cxx_Grammar.h:162441
SgIOStatement::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgFortranDo::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgPlusAssignOp
Definition: Cxx_Grammar.h:252994
SgIOStatement::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgExpression
This class represents the notion of an expression. Expressions are derived from SgLocatedNodes,...
Definition: Cxx_Grammar.h:229045
SgStringKeyedBidirectionalGraph
Definition: Cxx_Grammar.h:35117
SgImageControlStatement::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgOmpGrainsizeClause
Definition: Cxx_Grammar.h:98410
SgVariantStatement
Definition: Cxx_Grammar.h:178913
SgTypedefSymbol::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgMinusOp
This class represents the numeric negation of a value. Not to be confused with SgSubtractOp.
Definition: Cxx_Grammar.h:230611
SgBaseClass::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgSIMDBinaryOp::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgMinusAssignOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:253822
SgLocatedNode::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgFunctionDefinition::post_construction_initialization
void post_construction_initialization() override
Final initialization for constructors This function is called at the end of generated constructors to...
SgCallExpression::p_args
SgExprListExp * p_args
This is a pointer to a SgExprListExp (list of function arguments)
Definition: Cxx_Grammar.h:288254
SgFunctionType::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgUpirFieldBodyStatement::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgStructureModifier::e_default
@ e_default
Definition: Cxx_Grammar.h:13917
SgStorageModifier::storage_modifier_enum
storage_modifier_enum
Storage Modifiers (only one value can be specified)
Definition: Cxx_Grammar.h:9564
SgNode::p_globalFunctionTypeTable
static SgFunctionTypeTable * p_globalFunctionTypeTable
Pointer to symbol table specific to function types.
Definition: Cxx_Grammar.h:7612
SgLocatedNodeSupport::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgOmpAllocatorClause
Definition: Cxx_Grammar.h:91887
SgOmpClause::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgEnumDeclaration
This class represents the concept of an enum declaration.
Definition: Cxx_Grammar.h:141371
SgNoexceptOp
Definition: Cxx_Grammar.h:318679
SgMemberFunctionSymbol::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgFloatVal::p_value
float p_value
This value holds the float represented in the source code.
Definition: Cxx_Grammar.h:282186
SgOmpAllocateClause
Definition: Cxx_Grammar.h:112290
SgRshiftOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:249315
SgTypeInt
Definition: Cxx_Grammar.h:48087
SgInitializer::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgAssertStmt
Definition: Cxx_Grammar.h:224908
SgSIMDBinaryOp::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgVariableDeclaration::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
PreprocessingInfo::RelativePositionType
RelativePositionType
MK: Enum type to store if the directive goes before or after the corresponding line of source code.
Definition: rose_attributes_list.h:133
SgIncludeNextDirectiveStatement
Definition: Cxx_Grammar.h:167673
SgAsmOp::e_mem_autoinc
@ e_mem_autoinc
Definition: Cxx_Grammar.h:304377
SgMemberFunctionType::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgIsNotOp
This class represents the physical disequality (often called pointer disequality) operator for langua...
Definition: Cxx_Grammar.h:260136
SgMemberFunctionDeclaration::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgToken
Definition: Cxx_Grammar.h:75138
SgNaryComparisonOp
This class represents the notion of an n-ary comparison operation. This node is intended for use with...
Definition: Cxx_Grammar.h:311974
SgForStatement::p_for_init_stmt
SgForInitStatement * p_for_init_stmt
This pointer a SgForInitStatement (a list of pointers to statements (SgStatement objects) ).
Definition: Cxx_Grammar.h:126483
SgOmpVariablesClause::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgSupport::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgExpression::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgClassSymbol::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgIOStatement::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgInitializer::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgProcedureHeaderStatement::e_function_subprogram_kind
@ e_function_subprogram_kind
Definition: Cxx_Grammar.h:159705
SgAsmOp::e_reg_di
@ e_reg_di
Definition: Cxx_Grammar.h:304392
SgPointerType::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgType::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgIOStatement::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgBitAttribute::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
stringify::SgOmpClause::upir_property_visibility_enum
const char * upir_property_visibility_enum(int64_t)
Convert SgOmpClause::upir_property_visibility_enum enum constant to a string.
SgAsmOp::e_imm_number
@ e_imm_number
Definition: Cxx_Grammar.h:304381
SgOmpClause::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgImageControlStatement::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgOmpUntiedClause
Definition: Cxx_Grammar.h:85007
SgVariableSymbol::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgTemplateInstantiationMemberFunctionDecl
This class represents the concept of an instantiation of member function template or a member functio...
Definition: Cxx_Grammar.h:158167
SgLocatedNode::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgOmpIfClause
Definition: Cxx_Grammar.h:95820
Sg_File_Info::p_fileIDsToUnparse
SgFileIdList p_fileIDsToUnparse
This set contains a list of all file ids for which the accompanying IR node should be unparsed.
Definition: Cxx_Grammar.h:21095
SgFunctionModifier::function_modifier_enum
function_modifier_enum
Function Modifiers (bitvector implementation permits multiple values to be specified)
Definition: Cxx_Grammar.h:10666
SgFunctionSymbol::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgOmpVariablesClause::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgScopeStatement::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgBinaryOp::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgTypedefSymbol::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgVariableDeclaration::p_variableDeclarationContainsBaseTypeDefiningDeclaration
bool p_variableDeclarationContainsBaseTypeDefiningDeclaration
This bool records if the variable declaration has the explicit defining declaration associated with i...
Definition: Cxx_Grammar.h:138991
SgDeclarationStatement::post_construction_initialization
void post_construction_initialization() override
Final initialization for constructors This function is called at the end of generated constructors to...
SgUnsignedLongVal
Definition: Cxx_Grammar.h:281306
SgBidirectionalGraph::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgBidirectionalGraph::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgOmpOrderedClause
Definition: Cxx_Grammar.h:94962
SgUpirBaseStatement::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgUpirFieldBodyStatement::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgMultAssignOp
Definition: Cxx_Grammar.h:254766
SgHeaderFileBody
Definition: Cxx_Grammar.h:78506
SgPointerDerefExp
Definition: Cxx_Grammar.h:231960
SgNaryOp::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgAsmOp::e_mem_autodec
@ e_mem_autodec
Definition: Cxx_Grammar.h:304378
SgDeclarationStatement::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgBinaryOp::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgUnaryOp::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgIncidenceDirectedGraph::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgNaryOp::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgClassDefinition::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgFunctionDeclaration::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgStatement::cfgOutEdges
virtual std::vector< VirtualCFG::CFGEdge > cfgOutEdges(unsigned int index) override
Find the out edges of a CFG node – internal version.
SgValueExp::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgFunctionSymbol::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgNaryOp::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgCompoundAssignOp
Definition: Cxx_Grammar.h:252547
SgGraph::dfa_bufferoverflow
@ dfa_bufferoverflow
Definition: Cxx_Grammar.h:33482
SageInterface
Functions that are useful when operating on the AST.
Definition: sageBuilder.h:25
SgBinaryOp::cfgOutEdges
virtual std::vector< VirtualCFG::CFGEdge > cfgOutEdges(unsigned int index) override
Find the out edges of a CFG node – internal version.
SgUpirBaseStatement::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgType::arithmetic_conversions
static SgType * arithmetic_conversions(SgType *, SgType *)
performs simple conversions
SgVariableSymbol::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgCapturingCopy
Supporting template class for "capturing" copies of the AST.
Definition: Cxx_Grammar.h:6619
SgBaseClass::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgClassDefinition::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgFloat128Val
Definition: Cxx_Grammar.h:286905
SgOmpExpressionClause::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgCallExpression::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgSIMDBinaryOp::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgGraphEdge::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgFunctionParameterList::p_args
SgInitializedNamePtrList p_args
STL list of pointers to SgInitializedName object (used for function parameter declarations).
Definition: Cxx_Grammar.h:138228
SgCharVal
Definition: Cxx_Grammar.h:276605
SgImagPartOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:236136
SgExpression::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgGraph::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgSymbol::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgFunctionParameterList
This class represents the concept of a declaration list.
Definition: Cxx_Grammar.h:137786
SgFunctionDeclaration::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgMemberFunctionType::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgBaseClass::post_construction_initialization
void post_construction_initialization() override
Final initialization for constructors This function is called at the end of generated constructors to...
SgMicrosoftAttributeDeclaration
Definition: Cxx_Grammar.h:172198
SgTryStmt::p_catch_statement_seq_root
SgCatchStatementSeq * p_catch_statement_seq_root
This pointer points to a SgCatchStatementSeq and connects the try statement to the sequence of catch ...
Definition: Cxx_Grammar.h:175612
SgIncidenceDirectedGraph::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgGraph::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgSIMDBinaryOp::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgExpression::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgTemplateArgument
This class represents template argument within the use of a template to build an instantiation.
Definition: Cxx_Grammar.h:29484
SgOmpTaskyieldStatement
Definition: Cxx_Grammar.h:193309
SgC_PreprocessorDirectiveStatement
Definition: Cxx_Grammar.h:161086
SgSupport::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgInitializer::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgCallExpression::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgMemberFunctionDeclaration::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
stringify::SgOmpClause::omp_map_operator_enum
const char * omp_map_operator_enum(int64_t)
Convert SgOmpClause::omp_map_operator_enum enum constant to a string.
SgTypeDefault
This class represents a default type used for some IR nodes (see below).
Definition: Cxx_Grammar.h:67207
rose_graph_integer_edge_hash_map
Definition: Cxx_Grammar.h:6189
SgOmpExpressionClause::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgDeclarationModifier::p_typeModifier
SgTypeModifier p_typeModifier
Modifier for type information.
Definition: Cxx_Grammar.h:15919
SgVariableSymbol::get_type
SgType * get_type() const override
This function returns the type associated with the named entity.
SgExpression::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgFunctionDefinition::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgMatrixTransposeOp
Definition: Cxx_Grammar.h:237109
SgConjugateOp
Definition: Cxx_Grammar.h:236194
SgFormatItemList
Definition: Cxx_Grammar.h:41034
SgBitAttribute::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgBidirectionalGraph::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgType::stripType
SgType * stripType(unsigned char bit_array=STRIP_MODIFIER_TYPE|STRIP_REFERENCE_TYPE|STRIP_RVALUE_REFERENCE_TYPE|STRIP_POINTER_TYPE|STRIP_ARRAY_TYPE|STRIP_TYPEDEF_TYPE|STRIP_POINTER_MEMBER_TYPE) const
Returns hidden type beneath layers of typedefs, pointers, references, modifiers, array representation...
SgMemberFunctionSymbol::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgModifier::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgOmpAcqRelClause
Definition: Cxx_Grammar.h:85865
SgClinkageDeclarationStatement::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
stringify::SgOmpClause::omp_device_modifier_enum
const char * omp_device_modifier_enum(int64_t)
Convert SgOmpClause::omp_device_modifier_enum enum constant to a string.
SgGraph::nodest_call
@ nodest_call
Definition: Cxx_Grammar.h:33469
SgIntegerDivideOp
Definition: Cxx_Grammar.h:244410
AST_FileIO::IS_VALID_POINTER
SgNode * IS_VALID_POINTER()
This function returns a static pointer used with SgNode::p_freepointer.
SgIntegerDivideAssignOp
Definition: Cxx_Grammar.h:257424
SgTypeSignedInt
Definition: Cxx_Grammar.h:48589
SgOmpMergeableClause
Definition: Cxx_Grammar.h:116335
SgUpirDataField
Definition: Cxx_Grammar.h:120324
SgBlockDataStatement
Definition: Cxx_Grammar.h:131533
SgTypedefDeclaration::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgAwaitExpression
Definition: Cxx_Grammar.h:320104
SgBitXorOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:246613
SgScopeStatement::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgAsmOp::e_any
@ e_any
Definition: Cxx_Grammar.h:304362
SgUpirFieldStatement::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
rose_hash::eqstr_integer_pair
Definition: Cxx_Grammar.h:5950
SgDeclarationStatement::get_firstNondefiningDeclaration
SgDeclarationStatement * get_firstNondefiningDeclaration() const
This is an access function for the SgDeclarationStatement::p_firstNondefiningDeclaration data member ...
SgTemplateInstantiationDecl::p_templateHeader
SgName p_templateHeader
This data field is not used (or is used internally).
Definition: Cxx_Grammar.h:152944
SgMultiplyOp
Definition: Cxx_Grammar.h:243512
SgOmpDepobjStatement
Definition: Cxx_Grammar.h:200767
SgNamedType::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
stringify::SgOmpClause::omp_when_context_kind_enum
const char * omp_when_context_kind_enum(int64_t)
Convert SgOmpClause::omp_when_context_kind_enum enum constant to a string.
SgArrowExp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:238461
SgBinaryOp::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgClinkageDeclarationStatement::post_construction_initialization
void post_construction_initialization() override
Final initialization for constructors This function is called at the end of generated constructors to...
SgOmpLastprivateClause
Definition: Cxx_Grammar.h:110057
SgPntrArrRefExp
Definition: Cxx_Grammar.h:249373
SgUnaryOp::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgTypedefSymbol::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgFunctionDeclaration::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgExprListExp::class_name
virtual std::string class_name() const override
returns a string representing the class name
stringify::SgOmpClause::omp_depend_modifier_enum
const char * omp_depend_modifier_enum(int64_t)
Convert SgOmpClause::omp_depend_modifier_enum enum constant to a string.
SgVariableDeclaration::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgDeleteExp::p_variable
SgExpression * p_variable
This pointer points to the variable being deleted.
Definition: Cxx_Grammar.h:293714
SgUpirBodyStatement::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgCallExpression::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SageBuilder::display
ROSE_DLL_API std::string display(SourcePositionClassification &scp)
display function for debugging
SgTemplateClassSymbol
Definition: Cxx_Grammar.h:326060
SgScopeStatement::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgFunctionCallExp::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgFortranDo::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgSupport::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgCompoundAssignOp::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgOmpAtomicClause
Definition: Cxx_Grammar.h:92332
SgMinusAssignOp
Definition: Cxx_Grammar.h:253437
SgExprListExp::get_type
SgType * get_type() const override
unparsing support for pragmas
SgFortranDo::addRegExpAttribute
SgFortranDo * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgOmpAllocateStatement
Definition: Cxx_Grammar.h:220465
SgValueExp::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgStatement::cfgIndexForEnd
virtual unsigned int cfgIndexForEnd() const override
Determine the CFG index for the end of this construct.
SgOmpCollapseClause
Definition: Cxx_Grammar.h:95391
SgTypeGlobalVoid
Definition: Cxx_Grammar.h:51415
SgLambdaRefExp::p_functionDeclaration
SgFunctionDeclaration * p_functionDeclaration
The implicit function referred to by this lambda.
Definition: Cxx_Grammar.h:308210
SgElementwiseOp::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgBaseClass::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgSIMDPartialStore::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:269017
SgIOStatement::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgNaryOp::post_construction_initialization
void post_construction_initialization() override
Final initialization for constructors This function is called at the end of generated constructors to...
SgName
This class represents strings within the IR nodes.
Definition: Cxx_Grammar.h:16476
SgClinkageDeclarationStatement::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgLocatedNode::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgUpcForAllStatement
Definition: Cxx_Grammar.h:133943
SgIorAssignOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:254708
SgDeclarationModifier::gnu_declaration_visability_enum
gnu_declaration_visability_enum
GNU attribute for visability (only one value can be specified)
Definition: Cxx_Grammar.h:15327
SgProcedureHeaderStatement::e_subroutine_subprogram_kind
@ e_subroutine_subprogram_kind
Definition: Cxx_Grammar.h:159706
SgPartialFunctionType::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgElementwiseAddOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:263195
SgLocatedNode::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgMemberFunctionSymbol::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgVariableDeclaration::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgSupport::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgSIMDSubOp
Definition: Cxx_Grammar.h:265483
SgUpcLocalsizeofExpression
Definition: Cxx_Grammar.h:289790
SgNamelistStatement
Definition: Cxx_Grammar.h:154912
SgClassDeclaration::get_symbol_from_symbol_table
virtual SgSymbol * get_symbol_from_symbol_table() const override
FOR INTERNAL USE Get the associated symbol from the symbol table in the stored scope....
SgOmpLoopStatement
Definition: Cxx_Grammar.h:199023
stringify::SgOmpClause::omp_to_kind_enum
const char * omp_to_kind_enum(int64_t)
Convert SgOmpClause::omp_to_kind_enum enum constant to a string.
SgOmpVariablesClause::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgVariableDeclaration::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgBitAttribute::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgOpenStatement
Definition: Cxx_Grammar.h:182932
SgOmpTaskStatement
Definition: Cxx_Grammar.h:202955
SgFunctionCallExp::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgTypeOfType
Definition: Cxx_Grammar.h:70564
SgDoWhileStmt::p_condition
SgStatement * p_condition
This pointer a SgStatement, the conditional expression in the loop construct.
Definition: Cxx_Grammar.h:129941
SgScopeStatement::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgBinaryOp::addRegExpAttribute
SgBinaryOp * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgUpirFieldStatement::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgOmpDistributeParallelForSimdStatement
Definition: Cxx_Grammar.h:211239
SgVariableSymbol::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgMemberFunctionRefExp::p_need_qualifier
int p_need_qualifier
This boolean value marks if name qualification is required.
Definition: Cxx_Grammar.h:274644
SgFunctionType::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgConstructorInitializer::p_need_qualifier
bool p_need_qualifier
This bool value controls the output of the class names qualifier.
Definition: Cxx_Grammar.h:296710
SgNamedType::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgClassDefinition::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgVariableSymbol::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgSupport::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgFile::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgPlusPlusOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:233736
SgBaseClass::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgMemberFunctionType::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgValueExp::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgGraphEdge::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgPointerType::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgDeclarationStatement
This class represents the concept of a declaration statement.
Definition: Cxx_Grammar.h:136861
SgTypedefDeclaration::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgBinaryOp::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgExprListExp::addRegExpAttribute
SgExprListExp * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgType::float_promotion
static SgType * float_promotion(SgType *, SgType *)
handles promotion to float
SgUpirBodyStatement::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgFunctionSymbol::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgLongIntVal
Definition: Cxx_Grammar.h:279911
SgTypedefDeclaration::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgTypeUnsignedLongLong
Definition: Cxx_Grammar.h:54241
SgLocatedNode::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgLabelSymbol::label_type_enum
label_type_enum
Type of label used (fortran only)
Definition: Cxx_Grammar.h:328775
SgMemberFunctionSymbol::get_name
SgName get_name() const override
Access function for getting name from declarations or types internally.
SgDeclarationStatement::get_symbol_from_symbol_table
virtual SgSymbol * get_symbol_from_symbol_table() const override
FOR INTERNAL USE Get the associated symbol from the symbol table in the stored scope....
SgFile::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgElementwiseOp::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgRshiftOp
Definition: Cxx_Grammar.h:248924
stringify::SgOmpClause::upir_data_sharing_enum
const char * upir_data_sharing_enum(int64_t)
Convert SgOmpClause::upir_data_sharing_enum enum constant to a string.
SgFunctionCallExp::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgRshiftAssignOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:257366
SgInitializedName::e_register_f11
@ e_register_f11
Definition: Cxx_Grammar.h:76933
SgVariableDeclaration::p_specialization
SgDeclarationStatement::template_specialization_enum p_specialization
This is part of template support (variables of templated types).
Definition: Cxx_Grammar.h:138995
SgUpirNestedParentField
Definition: Cxx_Grammar.h:119013
SgIOItemExpression
Definition: Cxx_Grammar.h:303378
SgExpression::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgSIMDExplicitGather::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:270364
SgBaseClass::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgBaseClass::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgTryStmt::p_else_body
SgStatement * p_else_body
This pointer points to a SgBasicBlock containing the statements to be executed when control flows off...
Definition: Cxx_Grammar.h:175616
SgDeclarationStatement::p_declarationModifier
SgDeclarationModifier p_declarationModifier
This is the mechanism to handle declaration modifiers.
Definition: Cxx_Grammar.h:137471
SgOmpUseDeviceAddrClause
Definition: Cxx_Grammar.h:108770
SgCallExpression::p_function
SgExpression * p_function
This pointer points to the expression being assembled with argments for be a function call.
Definition: Cxx_Grammar.h:288250
SgVarArgEndOp
Definition: Cxx_Grammar.h:299197
Sg_File_Info::p_line
int p_line
This is the line number of the location of the source code for this IR node.
Definition: Cxx_Grammar.h:21071
SgComplexVal
Definition: Cxx_Grammar.h:283166
SgUpirBaseStatement::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgClassDefinition::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgMemberFunctionSymbol::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgIsOp
This class represents the physical equality (often called pointer equality) operator for languages th...
Definition: Cxx_Grammar.h:259681
SgOmpExpressionClause::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgNamedType::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgClinkageDeclarationStatement::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgCompoundAssignOp::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgType::get_mangled
virtual SgName get_mangled(void) const
SgUpirBaseStatement::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgNaryOp::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgTemplateInstantiationMemberFunctionDecl::p_templateDeclaration
SgTemplateMemberFunctionDeclaration * p_templateDeclaration
This is the template declarations (SgTemplateDeclaration) from which this template instantiation is c...
Definition: Cxx_Grammar.h:158622
SgModifier::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgClassSymbol::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgFortranDo::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgClinkageDeclarationStatement::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgIncidenceDirectedGraph::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgInitializedName::e_register_mm3
@ e_register_mm3
Definition: Cxx_Grammar.h:76917
SgVariableDeclaration::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
rose_graph_string_node_hash_multimap
Definition: Cxx_Grammar.h:5995
SgTypeLong
Definition: Cxx_Grammar.h:49531
SgFunctionSymbol::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgOmpExpressionClause
Definition: Cxx_Grammar.h:94525
SgOmpClause::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgInterfaceBody
Definition: Cxx_Grammar.h:78046
SgMemberFunctionRefExp::p_symbol_i
SgMemberFunctionSymbol * p_symbol_i
This is the SgMemberFunctionSymbol.
Definition: Cxx_Grammar.h:274632
SgPartialFunctionType::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgAsmOp::e_imm_lea_shift
@ e_imm_lea_shift
Definition: Cxx_Grammar.h:304406
SgReadStatement
Definition: Cxx_Grammar.h:181782
SgStatement::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgLocatedNode::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgModuleSymbol
Definition: Cxx_Grammar.h:330649
SgFunctionDeclaration::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgInitializer::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgOmpTaskloopSimdStatement
Definition: Cxx_Grammar.h:211675
SgClinkageDeclarationStatement::addRegExpAttribute
SgClinkageDeclarationStatement * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgMemberFunctionType::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
Sg_File_Info
This class represents the location of the code associated with the IR node in the original source cod...
Definition: Cxx_Grammar.h:20337
SgStructureModifier
Definition: Cxx_Grammar.h:13894
SgModifier::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgNode::p_globalMangledNameMap
static std::map< SgNode *, std::string > p_globalMangledNameMap
Cache of mangled names to avoid regeneration of previously build mangled names or parts of mangled na...
Definition: Cxx_Grammar.h:7620
SgCatchStatementSeq::p_catch_statement_seq
SgStatementPtrList p_catch_statement_seq
This is an STL list of pointers to SgStatement objects.
Definition: Cxx_Grammar.h:180284
SgLessOrEqualOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:242101
SgOmpFromClause
Definition: Cxx_Grammar.h:115421
SgOmpDeclareSimdStatement
Definition: Cxx_Grammar.h:171746
SgLocatedNode::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgTypedefSymbol::addRegExpAttribute
SgTypedefSymbol * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgLocatedNodeSupport::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgBitEqvOp
Definition: Cxx_Grammar.h:247569
SgCAFCoExpression
Definition: Cxx_Grammar.h:306840
SgFunctionCallExp::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgPointerType::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgTemplateInstantiationTypedefDeclaration
Definition: Cxx_Grammar.h:148943
SgModifier::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgSupport::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgClassSymbol::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgFile::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgUpirBodyStatement::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgType::isIntegerType
bool isIntegerType() const
There are many sorts of integer types (this queries an arbitrary type).
SgDefineDirectiveStatement
Definition: Cxx_Grammar.h:162005
SgElementwiseOp::post_construction_initialization
void post_construction_initialization() override
Final initialization for constructors This function is called at the end of generated constructors to...
SgNamespaceDefinitionStatement
This class represents the concept of a namespace definition.
Definition: Cxx_Grammar.h:130989
SgQualifiedNameType
This class represents a OLD concept of the structure require for qualified names when they were in th...
Definition: Cxx_Grammar.h:65794
SgNaryOp::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgFunctionType::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgRangeBasedForStatement
Definition: Cxx_Grammar.h:135866
SgClassSymbol::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgFortranDo::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgTypeSignedLong
Definition: Cxx_Grammar.h:50002
SgMemberFunctionType::createType
static SgMemberFunctionType * createType(SgPartialFunctionType *type=NULL, SgExpression *optional_fortran_type_kind=NULL)
more sophisticated version for more complex types like SgMemberFunctionType (types whose constructors...
SgStatement::cfgIsIndexInteresting
virtual bool cfgIsIndexInteresting(unsigned int index) const override
Determine whether a particular CFG node index is "interesting" for this kind of node.
SgFunctionDeclaration::get_symbol_from_symbol_table
virtual SgSymbol * get_symbol_from_symbol_table() const override
FOR INTERNAL USE Get the associated symbol from the symbol table in the stored scope....
SgClassNameRefExp::p_symbol
SgClassSymbol * p_symbol
This pointer points to a SgClassSymbol.
Definition: Cxx_Grammar.h:273617
SgUpirNumUnitsField
Definition: Cxx_Grammar.h:96257
SgPointerType::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
ContextVis_R::setStrategy
void setStrategy(ROSE_VisitorPattern *strategy)
Allows the strategy to be set dynamically.
Definition: Cxx_Grammar.h:333887
SgFunctionDefinition::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgOmpTaskgroupClause
Definition: Cxx_Grammar.h:90584
SgAsmOp::e_reg_sse
@ e_reg_sse
Definition: Cxx_Grammar.h:304400
SgType::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgUpirFieldStatement::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgUpirFieldStatement::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgC_PreprocessorDirectiveStatement::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgAttribute::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgFunctionDeclaration::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgSIMDBroadcast::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:268119
SgDeclarationStatement::p_linkage
std::string p_linkage
This string stores the value "C", "C++", or "fortran" to define the external linkage for generating l...
Definition: Cxx_Grammar.h:137467
SgIOStatement::io_statement_enum
io_statement_enum
Fortran specific classification.
Definition: Cxx_Grammar.h:180833
SgInitializer::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgIOStatement
Definition: Cxx_Grammar.h:180817
SgBitAttribute
Definition: Cxx_Grammar.h:18992
SgBinaryOp::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgBitAttribute::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgImageControlStatement::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgClassSymbol::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgGraph::done
@ done
Definition: Cxx_Grammar.h:33473
SgCompoundAssignOp::addRegExpAttribute
SgCompoundAssignOp * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgModifier::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgMemberFunctionDeclaration::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgFortranDo::post_construction_initialization
void post_construction_initialization() override
Final initialization for constructors This function is called at the end of generated constructors to...
SgElementwiseOp::addRegExpAttribute
SgElementwiseOp * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgTemplateDeclaration
This class represents the concept of a template declaration.
Definition: Cxx_Grammar.h:143464
SgKeyDatumPair
Definition: Cxx_Grammar.h:308713
SgImageControlStatement::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgFunctionSymbol::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgIncidenceDirectedGraph::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgReturnStmt
This class represents the concept of a C Assembler statement (untested).
Definition: Cxx_Grammar.h:177063
SgOmpBarrierStatement
Definition: Cxx_Grammar.h:193745
SgMemberFunctionSymbol::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgMagicColonExp
Definition: Cxx_Grammar.h:315352
SgPointerType::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgStatement::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgSupport::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgClassSymbol::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgNotOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:231902
SgModifier::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
rose_graph_string_integer_hash_multimap
Definition: Cxx_Grammar.h:6360
SageInterface::suggestNextNumericLabel
ROSE_DLL_API int suggestNextNumericLabel(SgFunctionDefinition *func_def)
Suggest next usable (non-conflicting) numeric label value for a Fortran function definition scope.
SgOmpSimdClause
Definition: Cxx_Grammar.h:81567
SgDoubleVal
This class represents the notion of an value (expression value).
Definition: Cxx_Grammar.h:282236
SgVariableSymbol::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgPartialFunctionType::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgSIMDBinaryOp::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgGraph::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgBidirectionalGraph::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgFunctionType::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgCompoundInitializer
Definition: Cxx_Grammar.h:295730
SgElseDirectiveStatement
Definition: Cxx_Grammar.h:164621
SgLocatedNodeSupport::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgGraph::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgOmpTargetParallelForStatement
Definition: Cxx_Grammar.h:205135
SgFile::e_unknown_output_format
@ e_unknown_output_format
Definition: Cxx_Grammar.h:21193
SgUpirBaseStatement::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgClassDeclaration::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgCastExp
Definition: Cxx_Grammar.h:234243
SgOmpMasterTaskloopStatement
Definition: Cxx_Grammar.h:202519
SgCallExpression::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgListExp
This class represents a list display.
Definition: Cxx_Grammar.h:271359
SgFunctionType::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgConstructorInitializer::p_need_parenthesis_after_name
bool p_need_parenthesis_after_name
This bool value controls the output of "()" after the class name.
Definition: Cxx_Grammar.h:296714
SgUpirBaseStatement::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgInitializer::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgExpBaseClass
Definition: Cxx_Grammar.h:27611
SgOmpClause::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgAttribute::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgBinaryOp
This class represents the notion of a binary operator. It is derived from a SgExpression because oper...
Definition: Cxx_Grammar.h:237560
SgImageControlStatement::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgSpecialFunctionModifier::special_function_modifier_enum
special_function_modifier_enum
Special Function Modifiers (only one value can be specified)
Definition: Cxx_Grammar.h:11909
SgNaryOp::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgClassDefinition::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgUpirBodyStatement::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgTypeTuple
Definition: Cxx_Grammar.h:71536
SgVariableDeclaration::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgFunctionSymbol::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgLessOrEqualOp
Definition: Cxx_Grammar.h:241704
SgInitializedName::e_register_st3
@ e_register_st3
Definition: Cxx_Grammar.h:76909
SgSetComprehension
Definition: Cxx_Grammar.h:310116
SgNode
This class represents the base class for all IR nodes within Sage III.
Definition: Cxx_Grammar.h:6739
SgClassExp
Definition: Cxx_Grammar.h:317197
Rose::AST::IO::link
ROSE_DLL_API void link(SgProject *project)
Links declarations from multiple translation units.
SgExprListExp::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgTemplateMemberFunctionSymbol
Definition: Cxx_Grammar.h:323801
SgUnaryOp::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgInitializer::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgOmpDistributeSimdStatement
Definition: Cxx_Grammar.h:210367
SgMemberFunctionDeclaration::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgPntrArrRefExp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:249772
SgFunctionDefinition::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgDeclarationStatement::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgVariableDeclaration::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgAccessModifier
Definition: Cxx_Grammar.h:10143
SgExprListExp::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgOmpExpressionClause::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgMemberFunctionSymbol::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgMinusMinusOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:233280
SgTemplateVariableDeclaration
Definition: Cxx_Grammar.h:139097
SgCallExpression::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgClassDefinition::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgUnaryOp::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgBaseClass::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgFlushStatement
Definition: Cxx_Grammar.h:184609
SgLocatedNodeSupport::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgPartialFunctionType::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgClassSymbol
This class represents the concept of a class name within the compiler.
Definition: Cxx_Grammar.h:325607
SgNode::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgIOStatement::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgTypedefDeclaration::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgGraphEdge
Definition: Cxx_Grammar.h:36948
SgClassSymbol::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgUsingDeclarationStatement::p_initializedName
SgInitializedName * p_initializedName
This pointer points to a SgDeclarationStatement whose declaration(s) are available for use in the sco...
Definition: Cxx_Grammar.h:154850
SgDeclarationStatement::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgModifier::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgListComprehension
Definition: Cxx_Grammar.h:309651
SgFunctionSymbol::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgType::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgOmpFullClause
Definition: Cxx_Grammar.h:117710
SgFunctionDefinition::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgNamedType::addRegExpAttribute
SgNamedType * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgVariableSymbol::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgGraph::addRegExpAttribute
SgGraph * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgClassDeclaration::cfgOutEdges
virtual std::vector< VirtualCFG::CFGEdge > cfgOutEdges(unsigned int index) override
Find the out edges of a CFG node – internal version.
SgCastExp::cast_type_enum
cast_type_enum
Classification of Casts.
Definition: Cxx_Grammar.h:234263
SgSupport::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgClinkageDeclarationStatement::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgCatchOptionStmt::p_condition
SgVariableDeclaration * p_condition
This pointer to a SgVariableDeclaration.
Definition: Cxx_Grammar.h:130935
StaticCFG::CFG
Definition: staticCFG.h:24
SgSIMDBroadcast
Definition: Cxx_Grammar.h:267728
Visitor_R::getResult
virtual const R & getResult() const
Definition: Cxx_Grammar.h:333868
SgFortranNonblockedDo
Definition: Cxx_Grammar.h:132983
SgClassDefinition::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
stringify::SgOmpClause::omp_in_reduction_identifier_enum
const char * omp_in_reduction_identifier_enum(int64_t)
Convert SgOmpClause::omp_in_reduction_identifier_enum enum constant to a string.
SgFile::callFrontEnd
virtual int callFrontEnd()
Move this function from ROSE into the AST restructuring tool.
SgOmpUnrollStatement
Definition: Cxx_Grammar.h:216915
SgTemplateClassDeclaration::e_class
@ e_class
Definition: Cxx_Grammar.h:152002
SgTemplateInstantiationFunctionDecl
This class represents the concept of an instantiation of function template.
Definition: Cxx_Grammar.h:158680
SgClassDeclaration::post_construction_initialization
void post_construction_initialization() override
Final initialization for constructors This function is called at the end of generated constructors to...
SgTemplateInstantiationDefn
This class represents the concept of a class definition in C++.
Definition: Cxx_Grammar.h:128064
SgStatement::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgConstructorInitializer
This class represents the notion of an initializer for a variable declaration or expression in a func...
Definition: Cxx_Grammar.h:296215
SgImportStatement
Definition: Cxx_Grammar.h:155369
SgMemberFunctionDeclaration::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgClinkageDeclarationStatement::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgFunctionDefinition::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
EasyStorage
Definition: Cxx_Grammar.h:4817
SgTypedefDeclaration::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgImageControlStatement::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgBidirectionalGraph::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgIOStatement::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgAsmOp::e_reg_float
@ e_reg_float
Definition: Cxx_Grammar.h:304369
mutex
Definition: Cxx_Grammar.h:5593
SgUsingDirectiveStatement
This class represents the concept of a C++ using directive.
Definition: Cxx_Grammar.h:150832
SgEmptyDirectiveStatement
Definition: Cxx_Grammar.h:167237
SgScopeStatement::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgFunctionDeclaration::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgPartialFunctionType::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgMemberFunctionType::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgTypeExpression
Definition: Cxx_Grammar.h:316741
SgType::isPrimativeType
bool isPrimativeType() const
There are many sorts of primative types (this queries an arbitrary type).
SgClinkageDeclarationStatement::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgGraph::itself_call
@ itself_call
Definition: Cxx_Grammar.h:33468
SgFortranDo::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgGraph::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgMemberFunctionType::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgExpression::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgUpirFieldStatement
Definition: Cxx_Grammar.h:218263
SgCommonSymbol
Definition: Cxx_Grammar.h:331555
SgClinkageDeclarationStatement::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgFile::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgOmpForSimdStatement
Definition: Cxx_Grammar.h:215599
SgGraph::dfa_resolved_func
@ dfa_resolved_func
Definition: Cxx_Grammar.h:33475
SgMemberFunctionDeclaration::addRegExpAttribute
SgMemberFunctionDeclaration * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgFile::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgAsmOp::e_imm_short_shift
@ e_imm_short_shift
Definition: Cxx_Grammar.h:304404
SgSIMDBinaryOp::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgConditionalExp::p_expression_type
SgType * p_expression_type
This pointer points to a SgType object.
Definition: Cxx_Grammar.h:292661
SgPartialFunctionType::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgDotExp
Definition: Cxx_Grammar.h:238519
SgAssignInitializer::p_operand_i
SgExpression * p_operand_i
This points to the internal SgExpression (right-hand-side expression).
Definition: Cxx_Grammar.h:297212
SgEntryStatement
Definition: Cxx_Grammar.h:160184
SgFile::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgPointerType::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgFunctionDefinition::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgAttributeSpecificationStatement
Definition: Cxx_Grammar.h:142464
SgTypeFixed
Definition: Cxx_Grammar.h:73437
SgNode::updateAttribute
virtual void updateAttribute(std::string s, AstAttribute *a)
Replace existing attribute of name 's' with new AstAttribute.
SgSymbol::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgGraph::variable
@ variable
Definition: Cxx_Grammar.h:33481
SgVoidVal
Definition: Cxx_Grammar.h:287370
SgUpirSyncField
Definition: Cxx_Grammar.h:119887
SgLocatedNodeSupport::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgDeclarationStatement::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgTypeLongLong
Definition: Cxx_Grammar.h:53299
SgInterfaceStatement::generic_spec_enum
generic_spec_enum
Definition: Cxx_Grammar.h:146374
SgGraph::eval
@ eval
Definition: Cxx_Grammar.h:33471
SgOmpParallelLoopStatement
Definition: Cxx_Grammar.h:205571
SgCatchOptionStmt
This class represents the concept of a catch within a try-catch construct used in C++ exception handl...
Definition: Cxx_Grammar.h:130494
SgNaryOp::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgImplicitStatement::e_none
@ e_none
Definition: Cxx_Grammar.h:153937
SgTemplateClassDefinition
Definition: Cxx_Grammar.h:128530
stringify::SgOmpClause::omp_order_kind_enum
const char * omp_order_kind_enum(int64_t)
Convert SgOmpClause::omp_order_kind_enum enum constant to a string.
SgOmpUpdateClause
Definition: Cxx_Grammar.h:82425
SgStatement::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgGraph::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgTypedefSymbol::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgVariableDeclaration::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
AstAttributeMechanism
Stores named attributes in Sage IR nodes.
Definition: AstAttributeMechanism.h:248
SgFile::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgNaryOp
This class represents the notion of an n-ary operator. This node is intended for use with Python.
Definition: Cxx_Grammar.h:311046
SgFunctionCallExp::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgInitializer::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgTypedefDeclaration::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgInitializedName
This class represents the notion of a declared variable.
Definition: Cxx_Grammar.h:76851
SgNode::isInMemoryPool
virtual bool isInMemoryPool()
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgFile::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
variable
Definition: variables.h:40
SgSIMDBinaryOp::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgLongLongIntVal
Definition: Cxx_Grammar.h:280376
SgOmpExpressionClause::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgFunctionDeclaration::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgFunctionSymbol::get_type
SgType * get_type() const override
This function returns the type associated with the named entity.
SgUnaryOp::cfgOutEdges
virtual std::vector< VirtualCFG::CFGEdge > cfgOutEdges(unsigned int index) override
Find the out edges of a CFG node – internal version.
SgGraph::none
@ none
Definition: Cxx_Grammar.h:33451
SgOmpSharedClause
Definition: Cxx_Grammar.h:109199
SgVariableDeclaration::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgUnaryOp::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgExpression::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgConditionalExp::p_conditional_exp
SgExpression * p_conditional_exp
This pointer points to a SgExpression object.
Definition: Cxx_Grammar.h:292649
SgGraph::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgAsmOp::asm_operand_modifier_enum
asm_operand_modifier_enum
ASM Operand modifiers (multiple values can be specified)
Definition: Cxx_Grammar.h:304323
SgNode::get_attributeMechanism
virtual AstAttributeMechanism * get_attributeMechanism() const
FOR INTERNAL USE Access function; if an attribute exists then a pointer to it is returned,...
SgLabelStatement
This class represents the concept of a C or C++ label statement.
Definition: Cxx_Grammar.h:174131
SgLocatedNodeSupport::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgOmpCopyinClause
Definition: Cxx_Grammar.h:109628
SgValueExp::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgUpirFieldStatement::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgVariableSymbol::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgDivAssignOp
Definition: Cxx_Grammar.h:255209
SgTypedefSymbol::get_name
SgName get_name() const override
Access function for getting name from declarations or types internally.
SgVariableDeclaration::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgAggregateInitializer
Definition: Cxx_Grammar.h:295163
SgMemberFunctionType::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgAsmOp::e_mem_any
@ e_mem_any
Definition: Cxx_Grammar.h:304371
SgOmpDeclareMapperStatement
Definition: Cxx_Grammar.h:223130
SgSymbol::addRegExpAttribute
SgSymbol * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgPointerType::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgCallExpression::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgMemberFunctionDeclaration::post_construction_initialization
void post_construction_initialization() override
Final initialization for constructors This function is called at the end of generated constructors to...
stringify::SgOmpClause::omp_affinity_modifier_enum
const char * omp_affinity_modifier_enum(int64_t)
Convert SgOmpClause::omp_affinity_modifier_enum enum constant to a string.
SgNaryOp::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgValueExp::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgOmpSafelenClause
Definition: Cxx_Grammar.h:99697
SgSpaceshipOp
Definition: Cxx_Grammar.h:258777
SgSIMDGather::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:269915
SgClassDefinition::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgStatement::isChildUsedAsLValue
virtual bool isChildUsedAsLValue(const SgExpression *child) const
Virtual function to determine if the provided expression is used as an l-value within the cotext of t...
SgScopeStatement::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgVariableSymbol::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgClassDeclaration::cfgIndexForEnd
virtual unsigned int cfgIndexForEnd() const override
Determine the CFG index for the end of this construct.
SgPartialFunctionType::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgNamedType
Definition: Cxx_Grammar.h:58956
SgGraph::edgeLabel
@ edgeLabel
Definition: Cxx_Grammar.h:33479
SgCallExpression::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgClassDefinition::p_members
SgDeclarationStatementPtrList p_members
This the list of member declarations in the class.
Definition: Cxx_Grammar.h:127998
SgDeclarationStatement::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgFunctionType::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgScopeStatement::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgDeclarationStatement::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgLocatedNode::set_file_info
virtual void set_file_info(Sg_File_Info *X)
Access function calls set_startingConstruct(Sg_File_Info*) member function.
SgModifierType
Definition: Cxx_Grammar.h:61411
SgUpcFenceStatement
Definition: Cxx_Grammar.h:192415
SgUnaryOp::post_construction_initialization
void post_construction_initialization() override
Final initialization for constructors This function is called at the end of generated constructors to...
SgComputedGotoStatement
Definition: Cxx_Grammar.h:189200
SgSIMDFmaOp
Definition: Cxx_Grammar.h:266830
SgFile::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgCompoundAssignOp::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgGraphEdge::addRegExpAttribute
SgGraphEdge * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgFunctionSymbol::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgOmpFinalClause
Definition: Cxx_Grammar.h:100555
SgForStatement::p_loop_body
SgStatement * p_loop_body
This pointer a SgBasicBlock, and holds the statements in the body of the loop.
Definition: Cxx_Grammar.h:126495
SgSupport::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgClassDeclaration::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
stringify::SgOmpClause::omp_lastprivate_modifier_enum
const char * omp_lastprivate_modifier_enum(int64_t)
Convert SgOmpClause::omp_lastprivate_modifier_enum enum constant to a string.
SgOmpDestroyClause
Definition: Cxx_Grammar.h:83291
SgDeclarationStatement::gnu_extension_visability_attribute_enum
gnu_extension_visability_attribute_enum
GNU extension for visibility modifier (only one value can be specified)
Definition: Cxx_Grammar.h:136893
SgClassDeclaration::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgSIMDBinaryOp::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgFunctionType::get_mangled
virtual SgName get_mangled(void) const override
Mangled name support for unparser support.
SgFunctionDeclaration::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgBitOrOp
Definition: Cxx_Grammar.h:247120
SgDeclarationModifier
This class represents modifiers for SgDeclaration (declaration statements).
Definition: Cxx_Grammar.h:15263
SgPseudoDestructorRefExp
Definition: Cxx_Grammar.h:306341
SgFunctionSymbol::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgOmpDistributeParallelForStatement
Definition: Cxx_Grammar.h:210803
SgAsmOp::asm_operand_constraint_enum
asm_operand_constraint_enum
ASM operand constraints (multiple values can be specified)
Definition: Cxx_Grammar.h:304342
SgVariableSymbol::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgModAssignOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:256037
SgExpression::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgClassDeclaration::e_union
@ e_union
Definition: Cxx_Grammar.h:151336
SgMinusOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:231002
SgImplicitStatement::e_has_implicit_spec_list
@ e_has_implicit_spec_list
Definition: Cxx_Grammar.h:153936
SgModifier::operator=
SgModifier & operator=(const SgModifier &X)
This is the assignment operator.
SgArrayType
Definition: Cxx_Grammar.h:64255
SgElementwiseOp::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgModuleStatement
Definition: Cxx_Grammar.h:153453
SgPointerType::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgModifier::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgOrOp
Definition: Cxx_Grammar.h:245765
SgOmpVariablesClause::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgDeclarationStatement::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgImageControlStatement::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgDataStatementObject
Definition: Cxx_Grammar.h:41929
SgOmpNowaitClause
Definition: Cxx_Grammar.h:80280
SgNaryOp::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgProject::get_verbose
static int get_verbose(void)
DQ: Modified to accept a value on the command line (no longer a boolean variable) value of 0 means qu...
SgThisExp::p_class_symbol
SgClassSymbol * p_class_symbol
This is the symbol of the class to which the "this" operator is applied.
Definition: Cxx_Grammar.h:294197
SgBinaryOp::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgCompoundAssignOp::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgVariableDeclaration::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgOmpAtomicDefaultMemOrderClause
Definition: Cxx_Grammar.h:103574
SgLshiftAssignOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:256923
SgBitAttribute::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgDeclarationStatement::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgBinaryOp::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgOmpTargetExitDataStatement
Definition: Cxx_Grammar.h:201647
SgSIMDFmaOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:267221
SgExprListExp::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgSuperExp
Definition: Cxx_Grammar.h:291209
SgSIMDDivOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:266772
SgNewExp::p_placement_args
SgExprListExp * p_placement_args
This is a pointer to the memory allocation placement arguments for the new operator.
Definition: Cxx_Grammar.h:293191
SgClassDefinition::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgGraph::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
stringify::SgOmpClause::omp_when_context_vendor_enum
const char * omp_when_context_vendor_enum(int64_t)
Convert SgOmpClause::omp_when_context_vendor_enum enum constant to a string.
SgValueExp
This class represents the notion of an value (expression value).
Definition: Cxx_Grammar.h:274702
SgTypedefDeclaration::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgAsmOp::e_reg_si
@ e_reg_si
Definition: Cxx_Grammar.h:304391
SgOmpUsesAllocatorsDefination
Definition: Cxx_Grammar.h:104448
SgTemplateInstantiationDirectiveStatement
This class represents the concept of a C++ template instantiation directive.
Definition: Cxx_Grammar.h:143996
SgGraph::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgImplicitStatement
Definition: Cxx_Grammar.h:153920
SgAndAssignOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:254265
SgBaseClass::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgMemberFunctionSymbol::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgCallExpression::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgClinkageDeclarationStatement::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgNode::set_isModified
void set_isModified(bool isModified)
All nodes in the AST contain a isModified flag used to track changes to the AST.
SgOmpVariablesClause::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgGraph::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgFunctionDeclaration::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgC_PreprocessorDirectiveStatement::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgType::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgInitializer::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgCallExpression::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgNamedType::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgTypedefDeclaration::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgAttribute::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgBitAndOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:247062
SgDeclarationStatement::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgNode::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgTemplateInstantiationMemberFunctionDecl::p_nameResetFromMangledForm
bool p_nameResetFromMangledForm
This bool value is set to false at construction and later reset to true within post-processing as eac...
Definition: Cxx_Grammar.h:158630
SgPointerType::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgGraph::usage
@ usage
Definition: Cxx_Grammar.h:33453
SgOmpClause::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgSourceFile
Definition: Cxx_Grammar.h:22972
SgIncidenceDirectedGraph::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgUnaryOp::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SageInterface::rebuildSymbolTable
void rebuildSymbolTable(SgScopeStatement *scope)
Regenerate the symbol table.
SgNode::get_parent
SgNode * get_parent() const
Access function for parent node.
SgElseWhereStatement
Definition: Cxx_Grammar.h:187340
SgDimensionObject
Definition: Cxx_Grammar.h:40126
SgUnaryOp::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgBidirectionalGraph::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgUpirBodyStatement::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgGraph::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgFortranIncludeLine
Definition: Cxx_Grammar.h:169916
SgNullStatement
Definition: Cxx_Grammar.h:178464
SgGraphEdge::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgModifier::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgVariableDeclaration::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgCallExpression::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgOmpTargetTeamsDistributeParallelForStatement
Definition: Cxx_Grammar.h:209495
SgMemberFunctionSymbol::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgStatement::hasExplicitScope
virtual bool hasExplicitScope() const
Support for where the scope is explicitly required.
SgStmtDeclarationStatement::p_statement
SgStatement * p_statement
Holds the wrapped statement.
Definition: Cxx_Grammar.h:171229
SgScopeStatement::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgClinkageDeclarationStatement::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgSIMDBinaryOp::post_construction_initialization
void post_construction_initialization() override
Final initialization for constructors This function is called at the end of generated constructors to...
SgBidirectionalGraph::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgLocatedNode::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgTypeUnsigned128bitInteger
Definition: Cxx_Grammar.h:55183
stringify::SgOmpClause::upir_data_deallocator_enum
const char * upir_data_deallocator_enum(int64_t)
Convert SgOmpClause::upir_data_deallocator_enum enum constant to a string.
SgNode::cfgFindChildIndex
virtual unsigned int cfgFindChildIndex(SgNode *n)
Find the index of n in this node's CFG children.
SgOmpExpressionClause::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgXorAssignOp
Definition: Cxx_Grammar.h:256095
SgNode::set_parent
void set_parent(SgNode *parent)
All nodes in the AST contain a reference to a parent node.
SgFile::e_Cxx_language
@ e_Cxx_language
Definition: Cxx_Grammar.h:21211
SgIncidenceDirectedGraph
Definition: Cxx_Grammar.h:34205
SgDictionaryComprehension
Definition: Cxx_Grammar.h:310581
SgTemplateInstantiationDecl::p_templateDeclaration
SgTemplateClassDeclaration * p_templateDeclaration
This is the template declarations (SgTemplateDeclaration) from which this template instantiation is c...
Definition: Cxx_Grammar.h:152948
SgCompoundAssignOp::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgMemberFunctionDeclaration::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgNode::cfgIsIndexInteresting
virtual bool cfgIsIndexInteresting(unsigned int index) const
Determine whether a particular CFG node index is "interesting" for this kind of node.
SgBitAttribute::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgFunctionDefinition::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgUpirFieldBodyStatement::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgMemberFunctionSymbol::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgLocatedNode::setAttribute
virtual void setAttribute(std::string s, AstAttribute *a) override
This is a wrapper function with the following semantics: if no attribute of name 's' exists then addN...
SgScopeStatement::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgC_PreprocessorDirectiveStatement::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgUpirBaseStatement::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgName::p_char
std::string p_char
This pointer points to an internal C style string.
Definition: Cxx_Grammar.h:16936
SgC_PreprocessorDirectiveStatement::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgDeclarationStatement::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgBasicBlock::p_statements
SgStatementPtrList p_statements
This pointer an STL list of pointers to SgStatement objects.
Definition: Cxx_Grammar.h:125373
SgFunctionType::createType
static SgFunctionType * createType(SgPartialFunctionType *type=NULL, SgExpression *optional_fortran_type_kind=NULL)
more sophisticated version for more complex types like SgFunctionType (types whose constructors take ...
SgAssociateStatement
Definition: Cxx_Grammar.h:131983
SgBaseClass::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgUpirFieldStatement::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgType::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgFortranDo::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgGraph::GraphEdgeType
GraphEdgeType
Edge Type.
Definition: Cxx_Grammar.h:33447
SgExprListExp::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgNamedType::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgAsmOp::e_imm_symbol
@ e_imm_symbol
Definition: Cxx_Grammar.h:304382
SgIOStatement::post_construction_initialization
void post_construction_initialization() override
Final initialization for constructors This function is called at the end of generated constructors to...
SgType::SgPointerType
friend class SgPointerType
provide access to private data
Definition: Cxx_Grammar.h:43985
SgDeclarationModifier::p_storageModifier
SgStorageModifier p_storageModifier
Modified for storage information.
Definition: Cxx_Grammar.h:15927
SgProcedureHeaderStatement
Definition: Cxx_Grammar.h:159680
SgTypedefDeclaration::post_construction_initialization
void post_construction_initialization() override
Final initialization for constructors This function is called at the end of generated constructors to...
SgLocatedNode::getAttribute
virtual AstAttribute * getAttribute(std::string s) const override
Returns attribute of name 's'.
SgTypeChar16
Definition: Cxx_Grammar.h:72024
SgFile::e_default_language
@ e_default_language
Definition: Cxx_Grammar.h:21209
SgImageControlStatement::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgSIMDBinaryOp::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgOmpTargetTeamsDistributeParallelForSimdStatement
Definition: Cxx_Grammar.h:209931
SgSIMDMulOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:266323
SgNaryOp::p_operators
VariantTList p_operators
This is the list of operators associated with this n-ary operator.
Definition: Cxx_Grammar.h:311478
SgArrowStarOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:239826
SgThrowOp::p_throwKind
SgThrowOp::e_throw_kind p_throwKind
This enum value classifies the throw as either of three different kinds.
Definition: Cxx_Grammar.h:235250
SgFunctionDefinition::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgSIMDBinaryOp::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgMemberFunctionSymbol::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgGraphEdge::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgMatrixExp
Definition: Cxx_Grammar.h:272257
SgFunctionDefinition
This class represents the concept of a scope in C++ (e.g. global scope, fuction scope,...
Definition: Cxx_Grammar.h:126549
SgInitializer::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgClassDeclaration::e_fortran_module
@ e_fortran_module
Definition: Cxx_Grammar.h:151338
SgReferenceType
Definition: Cxx_Grammar.h:58487
SgTypeOfType::get_mangled
virtual SgName get_mangled(void) const override
Mangled name support for unparser support.
SgLinemarkerDirectiveStatement
Definition: Cxx_Grammar.h:168545
SgUpirBodyStatement::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgStringVal
Definition: Cxx_Grammar.h:275620
SgOmpCopyprivateClause
Definition: Cxx_Grammar.h:105338
SgSymbolTable
This class represents the symbol tables used in both SgScopeStatement and the SgFunctionTypeSymbolTab...
Definition: Cxx_Grammar.h:17148
SgInitializer::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgAttribute
Definition: Cxx_Grammar.h:17995
SgHeaderFileReport
Definition: Cxx_Grammar.h:43501
SgGraph::dfa_standard
@ dfa_standard
Definition: Cxx_Grammar.h:33474
SgType::hasExplicitType
bool hasExplicitType()
Some types store internal SgType pointers explicitly while others compute them from other data....
SgOmpTeamsDistributeParallelForStatement
Definition: Cxx_Grammar.h:214291
SgInitializer::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgConstructorInitializer::p_expression_type
SgType * p_expression_type
This points to the associated type for this constructor.
Definition: Cxx_Grammar.h:296702
SgC_PreprocessorDirectiveStatement::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgNode::isSgNode
ROSE_DLL_API friend SgNode * isSgNode(SgNode *s)
Casts pointer from base class to derived class.
SgSIMDLoad
Definition: Cxx_Grammar.h:267279
SgVariableSymbol::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgGraph::post_construction_initialization
void post_construction_initialization() override
Final initialization for constructors This function is called at the end of generated constructors to...
SgAsmOp::e_reg_b
@ e_reg_b
Definition: Cxx_Grammar.h:304388
SgConstVolatileModifier
Definition: Cxx_Grammar.h:9040
SgPointerType
Definition: Cxx_Grammar.h:57528
SgModifier::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgVariableDefinition::p_vardefn
SgInitializedName * p_vardefn
This pointer points to associated SgInitializedName object (the variable).
Definition: Cxx_Grammar.h:140008
SgPartialFunctionType::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgClassDefinition::copy
virtual SgNode * copy(SgCopyHelp &help) const override
Makes a copy (deap of shallow depending on SgCopyHelp).
SgUpirFieldBodyStatement::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgOmpReadClause
Definition: Cxx_Grammar.h:80709
SgCallExpression::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgType::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgMemberFunctionSymbol::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgBidirectionalGraph::addRegExpAttribute
SgBidirectionalGraph * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgTypedefSeq
This class represents a list of associated typedefs for the SgType IR nodes which reference this list...
Definition: Cxx_Grammar.h:28499
SgUserDefinedBinaryOp
Definition: Cxx_Grammar.h:252081
SgTypeCrayPointer
Definition: Cxx_Grammar.h:68170
SgInitializedName::asm_register_name_enum
asm_register_name_enum
Register names (x86 specific GNU names).
Definition: Cxx_Grammar.h:76886
SgPointerType::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgScopeStatement::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgNode::cfgIndexForEnd
virtual unsigned int cfgIndexForEnd() const
Determine the CFG index for the end of this construct.
SgGraph::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgBaseClass::addRegExpAttribute
SgBaseClass * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgValueExp::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgLocatedNodeSupport::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgTypeSignedLongLong
Definition: Cxx_Grammar.h:53770
SgNamedType::createType
static SgNamedType * createType(SgExpression *optional_fortran_type_kind=NULL)
example of type used where construction is particularly simple
SgIncidenceDirectedGraph::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgUpirBaseStatement::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgOmpClause::omp_default_option_enum
omp_default_option_enum
OpenMP default clause values.
Definition: Cxx_Grammar.h:79419
SgOmpClause::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgInterfaceSymbol
Definition: Cxx_Grammar.h:331102
SgTypedefSymbol::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgCallExpression::get_type
SgType * get_type() const override
The type of this call expression.
SgAsmOp::e_reg_mmx
@ e_reg_mmx
Definition: Cxx_Grammar.h:304402
SgFortranDo::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgForAllStatement
Definition: Cxx_Grammar.h:133433
SgExprListExp::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgGraphEdge::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
hash_Name
Hash name support for symbol tables within ROSE.
Definition: Cxx_Grammar.h:17009
SgExprListExp::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgFortranDo::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgTypeUnsignedChar
Definition: Cxx_Grammar.h:46203
SgImageControlStatement::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgOmpThreadprivateStatement
Definition: Cxx_Grammar.h:169012
SgCallExpression::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgUpirBodyStatement::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgOmpInReductionClause
Definition: Cxx_Grammar.h:110947
SgLocatedNode::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgXorAssignOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:256480
SgUnsignedLongLongIntVal
Definition: Cxx_Grammar.h:280841
SgAsmOp::e_reg_ad
@ e_reg_ad
Definition: Cxx_Grammar.h:304397
SgCAFWithTeamStatement
Definition: Cxx_Grammar.h:134472
SgUPC_AccessModifier::upc_access_modifier_enum
upc_access_modifier_enum
UPC Access Modifiers (only one value can be specified)
Definition: Cxx_Grammar.h:11399
SgFunctionDeclaration::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgFile::e_fixed_form_output_format
@ e_fixed_form_output_format
Definition: Cxx_Grammar.h:21194
SgLocatedNodeSupport::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgNode::attributeExists
virtual bool attributeExists(std::string s) const
Tests if attribute of name 's' is present.
SgExpression::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgActualArgumentExpression
Definition: Cxx_Grammar.h:305397
SgExpression::cfgInEdges
virtual std::vector< VirtualCFG::CFGEdge > cfgInEdges(unsigned int index) override
Find the in edges of a CFG node – internal version.
SgUpirFieldBodyStatement::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgAsmOp::e_imm_float
@ e_imm_float
Definition: Cxx_Grammar.h:304383
SgTemplateInstantiationMemberFunctionDecl::p_templateName
SgName p_templateName
This is the name of the templated class (in the form "name<args>")
Definition: Cxx_Grammar.h:158618
SgElementwiseLeftDivideOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:262309
AstRegExAttribute
Attribute containing a regex expression as a string.
Definition: AstAttributeMechanism.h:483
SgMembershipOp
Definition: Cxx_Grammar.h:258322
SgBidirectionalGraph::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgC_PreprocessorDirectiveStatement::addRegExpAttribute
SgC_PreprocessorDirectiveStatement * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgUsingDeclarationStatement::p_declaration
SgDeclarationStatement * p_declaration
This pointer points to a SgDeclarationStatement whose declaration(s) are available for use in the sco...
Definition: Cxx_Grammar.h:154846
SgTypedefSymbol::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgTypedefDeclaration::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgUpirBaseStatement
Definition: Cxx_Grammar.h:192857
SgFunctionDefinition::addRegExpAttribute
SgFunctionDefinition * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgOmpTaskReductionClause
Definition: Cxx_Grammar.h:111392
SgBidirectionalGraph::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgOmpVariablesClause::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
AST_FILE_IO
Class holding static data and functions supporting File I/O.
Definition: AST_FILE_IO.h:18
SgUpirBaseStatement::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgOmpVariablesClause::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgRealPartOp
Definition: Cxx_Grammar.h:235296
SgExpression::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgAttribute::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgIorAssignOp
Definition: Cxx_Grammar.h:254323
SgConstVolatileModifier::cv_modifier_enum
cv_modifier_enum
Const Volatile Modifier.
Definition: Cxx_Grammar.h:9060
SgStringConversion
This class represents the conversion of an arbitrary expression to a string. This node is intended fo...
Definition: Cxx_Grammar.h:312424
SgIOStatement::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgBidirectionalGraph::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgOmpVariablesClause::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgThisExp::p_pobj_this
int p_pobj_this
This is not used and is related to a flag from CC++.
Definition: Cxx_Grammar.h:294205
SgBidirectionalGraph::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgFunctionType::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgVariableDeclaration
This class represents the concept of a C or C++ variable declaration.
Definition: Cxx_Grammar.h:138274
SgType::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgInitializedName::e_register_d
@ e_register_d
Definition: Cxx_Grammar.h:76893
SgElementwiseOp::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgPartialFunctionType::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgSIMDSubOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:265874
SgType::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgOmpUsesAllocatorsClause
Definition: Cxx_Grammar.h:117273
rose_graph_integer_edge_hash_multimap
Definition: Cxx_Grammar.h:6247
SgUpcBarrierStatement
Definition: Cxx_Grammar.h:191965
SgTypeLabel
Definition: Cxx_Grammar.h:68641
SgNamedType::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgOmpRequiresStatement
Definition: Cxx_Grammar.h:169464
SgType::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgDirectoryList
Definition: Cxx_Grammar.h:31188
SgOmpClause::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgTupleExp
Definition: Cxx_Grammar.h:271808
SgSizeOfOp
This class represents the "sizeof()" operator (applied to any type).
Definition: Cxx_Grammar.h:289241
SgGraph::dfa_unresolved_func
@ dfa_unresolved_func
Definition: Cxx_Grammar.h:33476
SgCastExp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:234708
SgUpirBodyStatement::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgIncidenceDirectedGraph::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgSymbol::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgType::stripTypedefsAndModifiers
SgType * stripTypedefsAndModifiers() const
This only strips away typedefs and modifiers (specialized usage).
SgFunctionDeclaration::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgTypedefSymbol::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SageInterface::deleteAST
ROSE_DLL_API void deleteAST(SgNode *node)
Function to delete AST subtree's nodes only, users must take care of any dangling pointers,...
SgBitAttribute::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgStructureModifier::e_unknown
@ e_unknown
Definition: Cxx_Grammar.h:13916
SgNode::sage_class_name
virtual const char * sage_class_name() const ROSE_DEPRECATED_FUNCTION
generates string representing the class name: (e.g. for SgNode returns "SgNode").
SgModifier::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgAndOp
Definition: Cxx_Grammar.h:245308
SgNamespaceAliasDeclarationStatement
This class represents the concept of a C++ namespace alias declaration statement.
Definition: Cxx_Grammar.h:146855
SgNode::get_endOfConstruct
virtual Sg_File_Info * get_endOfConstruct(void) const
New function interface for Sg_File_Info data stores ending location of contruct (typically the closin...
Definition: Cxx_Grammar.h:7427
SgScopeStatement
This class represents the concept of a scope in C++ (e.g. global scope, fuction scope,...
Definition: Cxx_Grammar.h:123553
SgInitializedName::gnu_variable_attribute_enum
gnu_variable_attribute_enum
Definition: Cxx_Grammar.h:76953
SgLocatedNode::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgPartialFunctionType::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgOmpFirstprivateClause
Definition: Cxx_Grammar.h:106196
SgClassSymbol::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgElementwiseMultiplyOp
Definition: Cxx_Grammar.h:261038
SgStatement::get_scope
virtual SgScopeStatement * get_scope(void) const
Returns scope of current statement.
SgClinkageDeclarationStatement::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgExpression::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgInitializer::cfgIndexForEnd
virtual unsigned int cfgIndexForEnd() const override
Determine the CFG index for the end of this construct.
SgOmpTargetParallelForSimdStatement
Definition: Cxx_Grammar.h:206443
SgDerivedTypeStatement
Definition: Cxx_Grammar.h:153002
SgStatement::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgNode::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgGraphEdge::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgOmpClause::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgUnaryAddOp
Definition: Cxx_Grammar.h:231060
SgDeclarationStatement::p_firstNondefiningDeclaration
SgDeclarationStatement * p_firstNondefiningDeclaration
This pointer is valid if there is a non-defining declaration, and stores the first non-defining decla...
Definition: Cxx_Grammar.h:137495
SgConstructorInitializer::p_associated_class_unknown
bool p_associated_class_unknown
This bool value indicates when p_declaration should be a valid pointer.
Definition: Cxx_Grammar.h:296718
SgLabelRefExp
Definition: Cxx_Grammar.h:304918
SgExpression::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgFunctionSymbol
Definition: Cxx_Grammar.h:322891
SgExpression::isLValue
virtual bool isLValue() const
For C and C++. When called from a node of any other language, behavior is undefined (see SageInterfac...
SgSizeOfOp::p_expression_type
SgType * p_expression_type
This a SgType, the type of the expression.
Definition: Cxx_Grammar.h:289712
SgOmpIsDevicePtrClause
Definition: Cxx_Grammar.h:107912
SgClassDeclaration::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgInitializedName::e_register_dirflag
@ e_register_dirflag
Definition: Cxx_Grammar.h:76940
SgUpirBodyStatement::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgCtorInitializerList
This class represents the concept of a contructor initializer list (used in constructor (member funct...
Definition: Cxx_Grammar.h:149893
SgUpcMythread
Definition: Cxx_Grammar.h:284112
SgConstVolatileModifier::e_unknown
@ e_unknown
Definition: Cxx_Grammar.h:9062
SgIOStatement::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgClassDeclaration::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgUpirBodyStatement::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgPointerType::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgUpirBodyStatement::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgClassSymbol::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgTypeComplex
This class represents a C99 complex type.
Definition: Cxx_Grammar.h:66285
SgSIMDDivOp
Definition: Cxx_Grammar.h:266381
SgDataStatementValue::data_statement_value_enum
data_statement_value_enum
Support for Fortran data statement.
Definition: Cxx_Grammar.h:43034
SgElementwiseOp::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
stringify::SgOmpClause::omp_depobj_modifier_enum
const char * omp_depobj_modifier_enum(int64_t)
Convert SgOmpClause::omp_depobj_modifier_enum enum constant to a string.
SgPartialFunctionType::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgOmpDistributeStatement
Definition: Cxx_Grammar.h:216479
SgAsmStmt::p_clobberRegisterList
SgAsmStmt::AsmRegisterNameList p_clobberRegisterList
This is the clobber list (list of registers where side-effects happen).
Definition: Cxx_Grammar.h:142414
SgNaryComparisonOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:312366
SgBinaryOp::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgOmpBindClause
Definition: Cxx_Grammar.h:93206
SgOmpExpressionClause::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgTypeSignedChar
Definition: Cxx_Grammar.h:45732
SgFunctionDeclaration::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgIncidenceDirectedGraph::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgFunctionSymbol::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgFloat80Val
Definition: Cxx_Grammar.h:286440
SgMemberFunctionDeclaration::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgImageControlStatement::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgFile::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgClassDeclaration::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgFunctionDeclaration::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgMemberFunctionDeclaration::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgProcedureHeaderStatement::e_block_data_subprogram_kind
@ e_block_data_subprogram_kind
Definition: Cxx_Grammar.h:159707
SgIntrinsicSymbol
Definition: Cxx_Grammar.h:330196
SgGraphNodeList
Definition: Cxx_Grammar.h:38373
SgGraphEdge::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgLabelSymbol
Definition: Cxx_Grammar.h:328762
SgVariableSymbol::addRegExpAttribute
SgVariableSymbol * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgIOStatement::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgUnsignedIntVal
Definition: Cxx_Grammar.h:279446
SgUpirWorksharingStatement
Definition: Cxx_Grammar.h:222258
SgClassSymbol::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgMemberFunctionDeclaration::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
ContextVis_R::_strategy
ROSE_VisitorPattern * _strategy
Strategy to process a node, can be set dynamically.
Definition: Cxx_Grammar.h:333881
SgType::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgExpression::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgInitializer::p_is_explicit_cast
bool p_is_explicit_cast
This boolean variable marks the initializer ans part of an explicit or implicit cast....
Definition: Cxx_Grammar.h:295113
SgExpression::post_construction_initialization
void post_construction_initialization() override
Final initialization for constructors This function is called at the end of generated constructors to...
SgImageControlStatement::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgVariableSymbol::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgFortranDo::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgInitializer::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgArrowStarOp
Definition: Cxx_Grammar.h:239429
SgExponentiationAssignOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:258264
SgBitAttribute::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgSIMDScatter::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:270813
SgAsmOp::e_imm_sse
@ e_imm_sse
Definition: Cxx_Grammar.h:304411
SgLongDoubleVal::p_value
long double p_value
This value holds the double represented in the source code.
Definition: Cxx_Grammar.h:283116
SgUpirFieldStatement::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgUpirFieldBodyStatement::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgAttribute::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgElaboratedTypeModifier::elaborated_type_modifier_enum
elaborated_type_modifier_enum
Elaborated Type Modifiers (only one value can be specified)
Definition: Cxx_Grammar.h:12426
SgVariantExpression
Definition: Cxx_Grammar.h:301051
SgNode::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool()
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgAssignStatement
Definition: Cxx_Grammar.h:188742
SgElementwiseOp
Definition: Cxx_Grammar.h:260591
SgSymbol::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgOmpOrderedDependStatement
Definition: Cxx_Grammar.h:220909
SgFunctionType::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
stringify::SgOmpClause::omp_linear_modifier_enum
const char * omp_linear_modifier_enum(int64_t)
Convert SgOmpClause::omp_linear_modifier_enum enum constant to a string.
SgProject
This class represents a source project, with a list of SgFile objects and global information about th...
Definition: Cxx_Grammar.h:24060
SgOmpVariablesClause::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgInitializedName::preinitialization_enum
preinitialization_enum
Preinitialization Enum (only one value can be specified)
Definition: Cxx_Grammar.h:76871
SgStorageModifier
This class represents modifiers specific to storage.
Definition: Cxx_Grammar.h:9538
SgCallExpression::post_construction_initialization
void post_construction_initialization() override
Final initialization for constructors This function is called at the end of generated constructors to...
SgClinkageDeclarationStatement
Definition: Cxx_Grammar.h:140058
SgAsmOp::e_reg_float_tos
@ e_reg_float_tos
Definition: Cxx_Grammar.h:304398
SgNotEqualOp
Definition: Cxx_Grammar.h:241249
SgSupport::addRegExpAttribute
SgSupport * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgCallExpression::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgNode::p_isModified
bool p_isModified
Records if IR node has been modified (data members reset).
Definition: Cxx_Grammar.h:7600
SgFunctionParameterScope
Definition: Cxx_Grammar.h:134939
SgOmpParallelMasterTaskloopStatement
Definition: Cxx_Grammar.h:212547
SgElementwiseSubtractOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:263638
SgExponentiationAssignOp
Definition: Cxx_Grammar.h:257873
SgTemplateParameterVal
Definition: Cxx_Grammar.h:284577
SgAssignInitializer::p_expression_type
SgType * p_expression_type
This points to the SgType of the rhs expression.
Definition: Cxx_Grammar.h:297216
SgUnaryOp::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgFunctionTypeTable::p_function_type_table
SgSymbolTable * p_function_type_table
This pointer points to SgSymbolTable used to store function type symbols only.
Definition: Cxx_Grammar.h:136815
SgDeclarationStatement::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgStatement
This class represents the notion of a statement.
Definition: Cxx_Grammar.h:122747
SgOmpClause::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgUpirFieldStatement::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgClassDefinition::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgClinkageDeclarationStatement::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgGraph::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgUpirBodyStatement::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgUpirBodyStatement::post_construction_initialization
void post_construction_initialization() override
Final initialization for constructors This function is called at the end of generated constructors to...
SgBitAttribute::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgUnaryOp::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgNaryOp::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgExprListExp::post_construction_initialization
void post_construction_initialization() override
Final initialization for constructors This function is called at the end of generated constructors to...
Sawyer::CommandLine::SwitchGroup
A collection of related switch declarations.
Definition: util/Sawyer/CommandLine.h:2569
stringify::SgOmpClause::omp_schedule_modifier_enum
const char * omp_schedule_modifier_enum(int64_t)
Convert SgOmpClause::omp_schedule_modifier_enum enum constant to a string.
SgFile::outputFormatOption_enum
outputFormatOption_enum
Enum type used to specify output of Fortran as fixed for free format.
Definition: Cxx_Grammar.h:21191
SgFunctionCallExp::get_type
SgType * get_type() const override
The type of this call expression.
SgCallExpression::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgVariableDeclaration::gnu_extension_declaration_attributes_enum
gnu_extension_declaration_attributes_enum
GNU extension for declaration modifiers (multiple values may be specified)
Definition: Cxx_Grammar.h:138292
SgMemberFunctionSymbol::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgGraph::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgGotoStatement
This class represents the concept of a C or C++ goto statement.
Definition: Cxx_Grammar.h:177523
SgTemplateInstantiationFunctionDecl::p_templateDeclaration
SgTemplateFunctionDeclaration * p_templateDeclaration
This is the template declarations (SgTemplateDeclaration) from which this template instantiation is c...
Definition: Cxx_Grammar.h:159134
SgType::isEquivalentType
bool isEquivalentType(const SgType *other_type) const
Type equivalence is the concept of equality between types independent of access permissions (e....
SgAsmOp::e_reg_d
@ e_reg_d
Definition: Cxx_Grammar.h:304390
SgBidirectionalGraph::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgFunctionCallExp::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgIOStatement::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgDeclarationStatement::search_for_symbol_from_symbol_table
SgSymbol * search_for_symbol_from_symbol_table() const
User interface for retrieving the associated symbol from the declaration.
SgFunctionDeclaration::cfgOutEdges
virtual std::vector< VirtualCFG::CFGEdge > cfgOutEdges(unsigned int index) override
Find the out edges of a CFG node – internal version.
SgProject::p_verbose
static int p_verbose
global concept of verbose level which controls useful output from the compiler (values greater than z...
Definition: Cxx_Grammar.h:24191
SgTypedefDeclaration::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgOptions
This class represents an object used to initialize the unparsing.
Definition: Cxx_Grammar.h:25347
SgTemplateSymbol
Definition: Cxx_Grammar.h:326505
SgNode::getChildIndex
virtual long getChildIndex(SgNode *childNode) const
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgOmpInclusiveClause
Definition: Cxx_Grammar.h:107054
SgOmpForClause
Definition: Cxx_Grammar.h:90155
SgSubscriptExpression
Definition: Cxx_Grammar.h:301500
SgClassDeclaration::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
PreprocessingInfo
For preprocessing information including source comments, #include , #if, #define, etc.
Definition: rose_attributes_list.h:127
Visitor_R::getResult
virtual R & getResult()
Definition: Cxx_Grammar.h:333865
SgUpirBodyStatement::cfgIndexForEnd
virtual unsigned int cfgIndexForEnd() const override
Determine the CFG index for the end of this construct.
SgAutoType
Definition: Cxx_Grammar.h:73921
SgDesignatedInitializer
Definition: Cxx_Grammar.h:297262
SgUpirBodyStatement::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgTypedefSymbol::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgFunctionCallExp::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgNonMembershipOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:259623
SgAttribute::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgFortranDo::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgVariableSymbol::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgConstructorInitializer::p_args
SgExprListExp * p_args
This points to the argument list of the associated constructor call.
Definition: Cxx_Grammar.h:296698
SgOmpParallelMasterStatement
Definition: Cxx_Grammar.h:202083
stringify::SgOmpClause::omp_proc_bind_policy_enum
const char * omp_proc_bind_policy_enum(int64_t)
Convert SgOmpClause::omp_proc_bind_policy_enum enum constant to a string.
SgWaitStatement
Definition: Cxx_Grammar.h:186397
SgDeclarationStatement::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgFunctionCallExp::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgC_PreprocessorDirectiveStatement::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgType::isUnsignedType
bool isUnsignedType() const
Compute numerical properties of type.
SgVariableDeclaration::addRegExpAttribute
SgVariableDeclaration * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgUpirFieldBodyStatement::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgClassDeclaration::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgFunctionCallExp::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgType::SgDeclType
friend class SgDeclType
provide access to private data
Definition: Cxx_Grammar.h:43988
SgTypeModifier::gnu_extension_machine_mode_enum
gnu_extension_machine_mode_enum
GNU Extension Machine Mode type modifiers (only a single value can be specified at one time)
Definition: Cxx_Grammar.h:14506
SgAsmOp::e_imm_and_zext
@ e_imm_and_zext
Definition: Cxx_Grammar.h:304409
SgSIMDBinaryOp::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgFunctionDeclaration::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgTypeUnknown
Definition: Cxx_Grammar.h:44774
SgMemberFunctionType::addRegExpAttribute
SgMemberFunctionType * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgFunctionType::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgAttribute::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgAttribute::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgLinkageModifier
Definition: Cxx_Grammar.h:12907
SgLocatedNode::addNewAttribute
virtual void addNewAttribute(std::string s, AstAttribute *a) override
Add a new attribute represented by the named string.
SgNode::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgScopeOp
This class was part of CC++ support from a long time ago.
Definition: Cxx_Grammar.h:249830
SgMemberFunctionSymbol::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgUpirBaseStatement::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgInterfaceStatement
Definition: Cxx_Grammar.h:146362
SgProcedureHeaderStatement::e_unknown_kind
@ e_unknown_kind
Definition: Cxx_Grammar.h:159704
SgC_PreprocessorDirectiveStatement::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgSIMDStore::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:268568
SgUpirBodyStatement::addRegExpAttribute
SgUpirBodyStatement * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgUnaryOp::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgGreaterOrEqualOp
Definition: Cxx_Grammar.h:242159
SgChooseExpression
Definition: Cxx_Grammar.h:320561
SgClassSymbol::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgAttribute::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgElementwiseOp::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgInitializer
This class represents the notion of an initializer for a variable declaration or expression in a func...
Definition: Cxx_Grammar.h:294701
SgUpirBodyStatement::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgExpression::cfgIsIndexInteresting
virtual bool cfgIsIndexInteresting(unsigned int index) const override
Determine whether a particular CFG node index is "interesting" for this kind of node.
SgModifier::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgLocatedNode::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgTemplateMemberFunctionDeclaration
Definition: Cxx_Grammar.h:157682
SgExpression::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgType::integer_promotion
static SgType * integer_promotion(SgType *, SgType *)
handles promotion to integer
SgOmpAcquireClause
Definition: Cxx_Grammar.h:86723
SgCompoundAssignOp::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgGraphNode
Definition: Cxx_Grammar.h:36407
SgConstVolatileModifier::e_default
@ e_default
Definition: Cxx_Grammar.h:9063
SgEqualityOp
Definition: Cxx_Grammar.h:239884
SgUpirTargetField
Definition: Cxx_Grammar.h:120833
SgDeclarationStatement::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgNamedType::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgTypedefType
Definition: Cxx_Grammar.h:60429
SgInitializer::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgPointerType::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgInitializer::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgVariableSymbol::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgLocatedNodeSupport::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgSymbol::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgMemberFunctionSymbol::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgOmpTargetSimdStatement
Definition: Cxx_Grammar.h:207315
SgGraph::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
Sg_File_Info::p_nametofileid_map
static std::map< std::string, int > p_nametofileid_map
This is a static STL map of file names (strings) to file id (integers).
Definition: Cxx_Grammar.h:21107
SgNode::variantT
virtual VariantT variantT() const
returns new style SageIII enum values
SgStatement::replace_expression
virtual int replace_expression(SgExpression *original_expression, SgExpression *new_expression)
support general replace functions, used in statements that directly contain SgExpression IR nodes.
SgMembershipOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:258719
SgSIMDBinaryOp::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgNode::post_construction_initialization
virtual void post_construction_initialization()
Final initialization for constructors This function is called at the end of generated constructors to...
SgLocatedNode::numberOfAttributes
virtual int numberOfAttributes() const override
Returns the number of attributes on this IR node.
SgIOStatement::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgMemberFunctionDeclaration::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgClassType
Definition: Cxx_Grammar.h:59461
SgFile::languageOption_enum
languageOption_enum
Enum type used to specify output language (option used for testing unparsers).
Definition: Cxx_Grammar.h:21206
SgExprStatement
This class represents the concept of a C or C++ statement which contains a expression.
Definition: Cxx_Grammar.h:173661
SgAttribute::addRegExpAttribute
SgAttribute * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgPlusPlusOp
Definition: Cxx_Grammar.h:233338
SgNamedType::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgBitAttribute::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgUpirFieldBodyStatement::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgExpression::isChildUsedAsLValue
virtual bool isChildUsedAsLValue(const SgExpression *child) const
For C and C++. When called from a node of any other language, behavior is undefined (see SageInterfac...
SgFortranDo::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgOmpExpressionClause::addRegExpAttribute
SgOmpExpressionClause * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgSizeOfOp::p_operand_type
SgType * p_operand_type
This a pointer to the SgType given to the sizeof operator.
Definition: Cxx_Grammar.h:289708
SgLambdaExp
Definition: Cxx_Grammar.h:318158
SgBinaryOp::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgUpirFieldStatement::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgTypedefDeclaration::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgOmpVariablesClause::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgUpirFieldStatement::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgMemberFunctionDeclaration::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgBreakStmt
This class represents the notion of a break statement (typically used in a switch statment).
Definition: Cxx_Grammar.h:176151
SgAsmOp::e_mod_earlyclobber
@ e_mod_earlyclobber
Definition: Cxx_Grammar.h:304351
SgElementwiseOp::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgOmpClause::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgBitAttribute::class_name
virtual std::string class_name() const override
returns a string representing the class name
stringify::SgFile::standard_enum
const char * standard_enum(int64_t)
Convert SgFile::standard_enum enum constant to a string.
SgIncidenceDirectedGraph::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgNamedType::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgForInitStatement
This class represents the variable declaration or variable initialization withn a for loop.
Definition: Cxx_Grammar.h:179356
SgType::SgTypeOfType
friend class SgTypeOfType
provide access to private data
Definition: Cxx_Grammar.h:43990
SgExprListExp::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgCompoundAssignOp::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgUpirNestedLevelField
Definition: Cxx_Grammar.h:118576
SgVarArgCopyOp
Definition: Cxx_Grammar.h:299670
SgGraphEdge::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgMemberFunctionSymbol::numberOfNodes
static size_t numberOfNodes()
Returns the total number of IR nodes of this type.
SgClassDefinition::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgLshiftAssignOp
Definition: Cxx_Grammar.h:256538
SgFunctionCallExp::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgType::containsInternalTypes
bool containsInternalTypes()
Some types can hide other type IR nodes internally. This function is true if it can hide another type...
SgDotStarOp
Definition: Cxx_Grammar.h:238974
SgWarningDirectiveStatement
Definition: Cxx_Grammar.h:166365
SgSymbol::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgValueExp::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgUpirFieldStatement::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgUnaryOp::p_mode
SgUnaryOp::Sgop_mode p_mode
This SgType is the type of the operator (function type).
Definition: Cxx_Grammar.h:230116
SgUpirFieldStatement::post_construction_initialization
void post_construction_initialization() override
Final initialization for constructors This function is called at the end of generated constructors to...
SgElementwiseMultiplyOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:261423
SgClassDeclaration::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgMemberFunctionSymbol::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgClassDeclaration::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgUnknownArrayOrFunctionReference
Definition: Cxx_Grammar.h:305868
SgMemberFunctionType::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
rose_hash::eqstr_graph_edge
Definition: Cxx_Grammar.h:5966
SgSymbol
This class represents the concept of a name within the compiler.
Definition: Cxx_Grammar.h:321018
SgGraph::type
@ type
Definition: Cxx_Grammar.h:33466
SgClassDeclaration::addRegExpAttribute
SgClassDeclaration * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgPragmaDeclaration
This class represents the concept of a C Assembler statement (untested).
Definition: Cxx_Grammar.h:150372
SgClassDeclaration::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgIncidenceDirectedGraph::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgBitComplementOp
Definition: Cxx_Grammar.h:233794
SgNaryOp::processDataMemberReferenceToPointers
virtual void processDataMemberReferenceToPointers(ReferenceToPointerHandler *) override
FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
SgUserDefinedUnaryOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:237035
rose_hash::eqstr_string
Definition: Cxx_Grammar.h:5916
SgFunctionSymbol::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgAttribute::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgClinkageStartStatement
This class represents the concept of a C style extern "C" declaration. But such information (linkage)...
Definition: Cxx_Grammar.h:140499
SgStatement::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
stringify::SgOmpClause::omp_dist_schedule_kind_enum
const char * omp_dist_schedule_kind_enum(int64_t)
Convert SgOmpClause::omp_dist_schedule_kind_enum enum constant to a string.
SgNamedType::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgAsmOp::e_reg_sse2
@ e_reg_sse2
Definition: Cxx_Grammar.h:304401
SgOmpWhenClause
Definition: Cxx_Grammar.h:116764
SgNamedType::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgExpression::addRegExpAttribute
SgExpression * addRegExpAttribute(std::string s, AstRegExAttribute *a)
Support for AST matching using regular expression.
SgFileList
Definition: Cxx_Grammar.h:30677
SgClassDeclaration::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgNamedType::roseRTI
virtual RTIReturnType roseRTI() override
return C++ Runtime-Time-Information
SgCompoundAssignOp::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgTryStmt
This class represents the concept of try statement within the try-catch support for exception handlin...
Definition: Cxx_Grammar.h:175144
SgPartialFunctionType::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgQualifiedName
This class represents a OLD concept of the structure require for qualified names when they were in th...
Definition: Cxx_Grammar.h:32085
SgFunctionType::get_childIndex
virtual size_t get_childIndex(SgNode *child) override
index-based access to traversal successors by child node
SgImageControlStatement::image_control_statement_enum
image_control_statement_enum
Fortran specific classification for image control statements.
Definition: Cxx_Grammar.h:225849
SgSymbol::get_traversalSuccessorContainer
virtual std::vector< SgNode * > get_traversalSuccessorContainer() override
container of pointers to AST successor nodes used in the traversal overridden in every class by gener...
SgExecStatement::p_executable
SgExpression * p_executable
The object to be executed.
Definition: Cxx_Grammar.h:225779
SgInitializedName::e_register_f3
@ e_register_f3
Definition: Cxx_Grammar.h:76925
SgDivideOp
Definition: Cxx_Grammar.h:243961
SgSubtractOp::precedence
int precedence() const override
return precedence (scale of 0-10, as I recall)
Definition: Cxx_Grammar.h:243454
SgOmpVariablesClause::traverseMemoryPoolNodes
static void traverseMemoryPoolNodes(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for visitor pattern over all IR nodes by type of IR node.
SgOmpNumTasksClause
Definition: Cxx_Grammar.h:98839
SgValueExp::post_construction_initialization
void post_construction_initialization() override
Final initialization for constructors This function is called at the end of generated constructors to...
SgC_PreprocessorDirectiveStatement::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgAsmStmt
This class represents the concept of a C Assembler statement.
Definition: Cxx_Grammar.h:141968
SgLocatedNode::removeAttribute
virtual void removeAttribute(std::string s) override
Remove attribute of name 's' if present.
SgNode::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors()
return number of children in the traversal successor list
SgSupport::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgTypeOfType::AstSpecificDataManagingClass
friend class AstSpecificDataManagingClass
friend class declaration to support AST File I/O
Definition: Cxx_Grammar.h:70932
SgFunctionDefinition::accept
virtual void accept(ROSE_VisitorPattern &visitor) override
support for the classic visitor pattern done in GoF
SgIOStatement::variantT
virtual VariantT variantT() const override
returns new style SageIII enum values
SgCompoundAssignOp::visitRepresentativeNode
static void visitRepresentativeNode(ROSE_VisitTraversal &visit)
FOR INTERNAL USE Support for type-based traversal.
SgMemberFunctionSymbol::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgModifier::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgUpirBaseStatement::isInMemoryPool
virtual bool isInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgGraphEdge::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgGraph::dfa_variable
@ dfa_variable
Definition: Cxx_Grammar.h:33477
SgOmpClause::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgPartialFunctionType::class_name
virtual std::string class_name() const override
returns a string representing the class name
SgMemberFunctionType::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgDeclarationModifier::p_accessModifier
SgAccessModifier p_accessModifier
Modifier for access information (only set for declarations in class and struct definitions)
Definition: Cxx_Grammar.h:15923
SgBinaryOp::copy
virtual SgNode * copy(SgCopyHelp &help) const override
This function clones the current IR node object recursively or not, depending on the argument.
SgFunctionSymbol::sage_class_name
virtual const char * sage_class_name() const override ROSE_DEPRECATED_FUNCTION
SgTreeCopy
Supporting class for "Deep" copies of the AST.
Definition: Cxx_Grammar.h:6584
SgFunctionType::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgDeclarationStatement::p_forward
bool p_forward
This marks a declaration as being an explicit forward declaration.
Definition: Cxx_Grammar.h:137479
SgPartialFunctionType
Definition: Cxx_Grammar.h:63329
SgTypedefDeclaration::returnDataMemberPointers
virtual std::vector< std::pair< SgNode *, std::string > > returnDataMemberPointers() const override
FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
SgLocatedNodeSupport::getChildIndex
virtual long getChildIndex(SgNode *childNode) const override
FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR no...
SgOmpUseDevicePtrClause
Definition: Cxx_Grammar.h:108341
SgNaryOp::traverseMemoryPoolVisitorPattern
static void traverseMemoryPoolVisitorPattern(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
SgOmpTargetDataStatement
Definition: Cxx_Grammar.h:204699
SgTemplateInstantiationDecl
This class represents the concept of an instantiated class template.
Definition: Cxx_Grammar.h:152484
SgOmpRelaxedClause
Definition: Cxx_Grammar.h:87152
SgElementwiseSubtractOp
Definition: Cxx_Grammar.h:263253
SgModifier::get_traversalSuccessorByIndex
virtual SgNode * get_traversalSuccessorByIndex(size_t idx) override
index-based access to traversal successors by index number
SgDeclarationStatement::get_numberOfTraversalSuccessors
virtual size_t get_numberOfTraversalSuccessors() override
return number of children in the traversal successor list
SgClassDeclaration::memoryUsage
static size_t memoryUsage()
Returns the size in bytes of the total memory allocated for all IR nodes of this type.
SgGraphEdge::checkDataMemberPointersIfInMemoryPool
virtual void checkDataMemberPointersIfInMemoryPool() override
FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the he...
SgImageControlStatement
Definition: Cxx_Grammar.h:225833
SgDeclarationStatement::p_skipElaborateType
bool p_skipElaborateType
This marks "type elaboration" which is the use of the keyword "class" before variables of type class.
Definition: Cxx_Grammar.h:137487
SgInitializer::executeVisitorMemberFunction
void executeVisitorMemberFunction(ROSE_VisitorPattern &visitor)
FOR INTERNAL USE Support for visitor pattern.
rose_graph_integer_node_hash_map
Definition: Cxx_Grammar.h:6127
SgFunctionSymbol::get_traversalSuccessorNamesContainer
virtual std::vector< std::string > get_traversalSuccessorNamesContainer() override
container of names of variables or container indices used used in the traversal to access AST success...
SgChar16Val
Definition: Cxx_Grammar.h:285498
SgOmpTargetTeamsStatement
Definition: Cxx_Grammar.h:207751
SgTryStmt::p_body
SgStatement * p_body
This pointer points to a SgBasicBlock containing the statements to be execued by the try block.
Definition: Cxx_Grammar.h:175608